mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
38 lines
722 B
TypeScript
38 lines
722 B
TypeScript
import type { CSSProperties } from 'vue'
|
|
import type { AnyColumns } from '../types'
|
|
|
|
export const calcColumnStyle = (
|
|
column: AnyColumns[number],
|
|
fixedColumn: boolean,
|
|
fixed: boolean
|
|
): CSSProperties => {
|
|
const flex = {
|
|
flexGrow: 0,
|
|
flexShrink: 0,
|
|
...(fixed
|
|
? {}
|
|
: {
|
|
flexGrow: column.flexGrow || 0,
|
|
flexShrink: column.flexShrink || 1,
|
|
}),
|
|
}
|
|
|
|
if (!fixed) {
|
|
flex.flexShrink = 1
|
|
}
|
|
|
|
const style = {
|
|
...(column.style ?? {}),
|
|
...flex,
|
|
flexBasis: 'auto',
|
|
width: column.width,
|
|
}
|
|
|
|
if (!fixedColumn) {
|
|
if (column.maxWidth) style.maxWidth = column.maxWidth
|
|
if (column.minWidth) style.minWidth = column.minWidth
|
|
}
|
|
|
|
return style
|
|
}
|