162 lines
5.2 KiB
JavaScript
162 lines
5.2 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
exports.useRowStyle = exports.useColStyle = exports.prepareRowComponentToken = exports.prepareColComponentToken = void 0;
|
||
|
var _cssinjs = require("@ant-design/cssinjs");
|
||
|
var _internal = require("../../theme/internal");
|
||
|
// ============================== Row-Shared ==============================
|
||
|
const genGridRowStyle = token => {
|
||
|
const {
|
||
|
componentCls
|
||
|
} = token;
|
||
|
return {
|
||
|
// Grid system
|
||
|
[componentCls]: {
|
||
|
display: 'flex',
|
||
|
flexFlow: 'row wrap',
|
||
|
minWidth: 0,
|
||
|
'&::before, &::after': {
|
||
|
display: 'flex'
|
||
|
},
|
||
|
'&-no-wrap': {
|
||
|
flexWrap: 'nowrap'
|
||
|
},
|
||
|
// The origin of the X-axis
|
||
|
'&-start': {
|
||
|
justifyContent: 'flex-start'
|
||
|
},
|
||
|
// The center of the X-axis
|
||
|
'&-center': {
|
||
|
justifyContent: 'center'
|
||
|
},
|
||
|
// The opposite of the X-axis
|
||
|
'&-end': {
|
||
|
justifyContent: 'flex-end'
|
||
|
},
|
||
|
'&-space-between': {
|
||
|
justifyContent: 'space-between'
|
||
|
},
|
||
|
'&-space-around': {
|
||
|
justifyContent: 'space-around'
|
||
|
},
|
||
|
'&-space-evenly': {
|
||
|
justifyContent: 'space-evenly'
|
||
|
},
|
||
|
// Align at the top
|
||
|
'&-top': {
|
||
|
alignItems: 'flex-start'
|
||
|
},
|
||
|
// Align at the center
|
||
|
'&-middle': {
|
||
|
alignItems: 'center'
|
||
|
},
|
||
|
'&-bottom': {
|
||
|
alignItems: 'flex-end'
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
// ============================== Col-Shared ==============================
|
||
|
const genGridColStyle = token => {
|
||
|
const {
|
||
|
componentCls
|
||
|
} = token;
|
||
|
return {
|
||
|
// Grid system
|
||
|
[componentCls]: {
|
||
|
position: 'relative',
|
||
|
maxWidth: '100%',
|
||
|
// Prevent columns from collapsing when empty
|
||
|
minHeight: 1
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
const genLoopGridColumnsStyle = (token, sizeCls) => {
|
||
|
const {
|
||
|
prefixCls,
|
||
|
componentCls,
|
||
|
gridColumns
|
||
|
} = token;
|
||
|
const gridColumnsStyle = {};
|
||
|
for (let i = gridColumns; i >= 0; i--) {
|
||
|
if (i === 0) {
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = {
|
||
|
display: 'none'
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}-push-${i}`] = {
|
||
|
insetInlineStart: 'auto'
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}-pull-${i}`] = {
|
||
|
insetInlineEnd: 'auto'
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {
|
||
|
insetInlineStart: 'auto'
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {
|
||
|
insetInlineEnd: 'auto'
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {
|
||
|
marginInlineStart: 0
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {
|
||
|
order: 0
|
||
|
};
|
||
|
} else {
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-${i}`] = [
|
||
|
// https://github.com/ant-design/ant-design/issues/44456
|
||
|
// Form set `display: flex` on Col which will override `display: block`.
|
||
|
// Let's get it from css variable to support override.
|
||
|
{
|
||
|
['--ant-display']: 'block',
|
||
|
// Fallback to display if variable not support
|
||
|
display: 'block'
|
||
|
}, {
|
||
|
display: 'var(--ant-display)',
|
||
|
flex: `0 0 ${i / gridColumns * 100}%`,
|
||
|
maxWidth: `${i / gridColumns * 100}%`
|
||
|
}];
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-push-${i}`] = {
|
||
|
insetInlineStart: `${i / gridColumns * 100}%`
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-pull-${i}`] = {
|
||
|
insetInlineEnd: `${i / gridColumns * 100}%`
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-offset-${i}`] = {
|
||
|
marginInlineStart: `${i / gridColumns * 100}%`
|
||
|
};
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-order-${i}`] = {
|
||
|
order: i
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
// Flex CSS Var
|
||
|
gridColumnsStyle[`${componentCls}${sizeCls}-flex`] = {
|
||
|
flex: `var(--${prefixCls}${sizeCls}-flex)`
|
||
|
};
|
||
|
return gridColumnsStyle;
|
||
|
};
|
||
|
const genGridStyle = (token, sizeCls) => genLoopGridColumnsStyle(token, sizeCls);
|
||
|
const genGridMediaStyle = (token, screenSize, sizeCls) => ({
|
||
|
[`@media (min-width: ${(0, _cssinjs.unit)(screenSize)})`]: Object.assign({}, genGridStyle(token, sizeCls))
|
||
|
});
|
||
|
const prepareRowComponentToken = () => ({});
|
||
|
exports.prepareRowComponentToken = prepareRowComponentToken;
|
||
|
const prepareColComponentToken = () => ({});
|
||
|
// ============================== Export ==============================
|
||
|
exports.prepareColComponentToken = prepareColComponentToken;
|
||
|
const useRowStyle = exports.useRowStyle = (0, _internal.genStyleHooks)('Grid', genGridRowStyle, prepareRowComponentToken);
|
||
|
const useColStyle = exports.useColStyle = (0, _internal.genStyleHooks)('Grid', token => {
|
||
|
const gridToken = (0, _internal.mergeToken)(token, {
|
||
|
gridColumns: 24 // Row is divided into 24 parts in Grid
|
||
|
});
|
||
|
const gridMediaSizesMap = {
|
||
|
'-sm': gridToken.screenSMMin,
|
||
|
'-md': gridToken.screenMDMin,
|
||
|
'-lg': gridToken.screenLGMin,
|
||
|
'-xl': gridToken.screenXLMin,
|
||
|
'-xxl': gridToken.screenXXLMin
|
||
|
};
|
||
|
return [genGridColStyle(gridToken), genGridStyle(gridToken, ''), genGridStyle(gridToken, '-xs'), Object.keys(gridMediaSizesMap).map(key => genGridMediaStyle(gridToken, gridMediaSizesMap[key], key)).reduce((pre, cur) => Object.assign(Object.assign({}, pre), cur), {})];
|
||
|
}, prepareColComponentToken);
|