index.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.useRowStyle = exports.useColStyle = void 0;
  7. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  8. var _internal = require("../../theme/internal");
  9. // ============================== Row-Shared ==============================
  10. const genGridRowStyle = token => {
  11. const {
  12. componentCls
  13. } = token;
  14. return {
  15. // Grid system
  16. [componentCls]: {
  17. display: 'flex',
  18. flexFlow: 'row wrap',
  19. minWidth: 0,
  20. '&::before, &::after': {
  21. display: 'flex'
  22. },
  23. '&-no-wrap': {
  24. flexWrap: 'nowrap'
  25. },
  26. // The origin of the X-axis
  27. '&-start': {
  28. justifyContent: 'flex-start'
  29. },
  30. // The center of the X-axis
  31. '&-center': {
  32. justifyContent: 'center'
  33. },
  34. // The opposite of the X-axis
  35. '&-end': {
  36. justifyContent: 'flex-end'
  37. },
  38. '&-space-between': {
  39. justifyContent: 'space-between'
  40. },
  41. '&-space-around ': {
  42. justifyContent: 'space-around'
  43. },
  44. '&-space-evenly ': {
  45. justifyContent: 'space-evenly'
  46. },
  47. // Align at the top
  48. '&-top': {
  49. alignItems: 'flex-start'
  50. },
  51. // Align at the center
  52. '&-middle': {
  53. alignItems: 'center'
  54. },
  55. '&-bottom': {
  56. alignItems: 'flex-end'
  57. }
  58. }
  59. };
  60. };
  61. // ============================== Col-Shared ==============================
  62. const genGridColStyle = token => {
  63. const {
  64. componentCls
  65. } = token;
  66. return {
  67. // Grid system
  68. [componentCls]: {
  69. position: 'relative',
  70. maxWidth: '100%',
  71. // Prevent columns from collapsing when empty
  72. minHeight: 1
  73. }
  74. };
  75. };
  76. const genLoopGridColumnsStyle = (token, sizeCls) => {
  77. const {
  78. componentCls,
  79. gridColumns
  80. } = token;
  81. const gridColumnsStyle = {};
  82. for (let i = gridColumns; i >= 0; i--) {
  83. if (i === 0) {
  84. gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = {
  85. display: 'none'
  86. };
  87. gridColumnsStyle[`${componentCls}-push-${i}`] = {
  88. insetInlineStart: 'auto'
  89. };
  90. gridColumnsStyle[`${componentCls}-pull-${i}`] = {
  91. insetInlineEnd: 'auto'
  92. };
  93. gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {
  94. insetInlineStart: 'auto'
  95. };
  96. gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {
  97. insetInlineEnd: 'auto'
  98. };
  99. gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {
  100. marginInlineEnd: 0
  101. };
  102. gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {
  103. order: 0
  104. };
  105. } else {
  106. gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = {
  107. display: 'block',
  108. flex: `0 0 ${i / gridColumns * 100}%`,
  109. maxWidth: `${i / gridColumns * 100}%`
  110. };
  111. gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {
  112. insetInlineStart: `${i / gridColumns * 100}%`
  113. };
  114. gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {
  115. insetInlineEnd: `${i / gridColumns * 100}%`
  116. };
  117. gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {
  118. marginInlineStart: `${i / gridColumns * 100}%`
  119. };
  120. gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {
  121. order: i
  122. };
  123. }
  124. }
  125. return gridColumnsStyle;
  126. };
  127. const genGridStyle = (token, sizeCls) => genLoopGridColumnsStyle(token, sizeCls);
  128. const genGridMediaStyle = (token, screenSize, sizeCls) => ({
  129. [`@media (min-width: ${screenSize}px)`]: (0, _extends2.default)({}, genGridStyle(token, sizeCls))
  130. });
  131. // ============================== Export ==============================
  132. const useRowStyle = exports.useRowStyle = (0, _internal.genComponentStyleHook)('Grid', token => [genGridRowStyle(token)]);
  133. const useColStyle = exports.useColStyle = (0, _internal.genComponentStyleHook)('Grid', token => {
  134. const gridToken = (0, _internal.mergeToken)(token, {
  135. gridColumns: 24 // Row is divided into 24 parts in Grid
  136. });
  137. const gridMediaSizesMap = {
  138. '-sm': gridToken.screenSMMin,
  139. '-md': gridToken.screenMDMin,
  140. '-lg': gridToken.screenLGMin,
  141. '-xl': gridToken.screenXLMin,
  142. '-xxl': gridToken.screenXXLMin
  143. };
  144. return [genGridColStyle(gridToken), genGridStyle(gridToken, ''), genGridStyle(gridToken, '-xs'), Object.keys(gridMediaSizesMap).map(key => genGridMediaStyle(gridToken, gridMediaSizesMap[key], key)).reduce((pre, cur) => (0, _extends2.default)((0, _extends2.default)({}, pre), cur), {})];
  145. });