UNPKG

@extclp/vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 6.98 kB
{"version":3,"file":"table-column-group.mjs","sources":["../../../components/table/table-column-group.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n onBeforeUnmount,\r\n provide,\r\n reactive,\r\n renderSlot,\r\n watch,\r\n} from 'vue'\r\n\r\nimport TableColumn from './table-column'\r\nimport { useProps } from '@vexip-ui/config'\r\nimport { tableColumnGroupProps } from './props'\r\nimport { COLUMN_GROUP_ACTIONS, TABLE_ACTIONS } from './symbol'\r\n\r\nimport type { ColumnGroupWithKey, TableColumnOptions } from './symbol'\r\n\r\ntype GroupPropKey = keyof typeof tableColumnGroupProps\r\n\r\nconst propKeys = Object.keys(tableColumnGroupProps) as GroupPropKey[]\r\nconst ignoredProps: GroupPropKey[] = ['renderer', 'children']\r\nconst triggerProps: GroupPropKey[] = ['fixed', 'order']\r\n\r\nconst TableColumnGroup = defineComponent({\r\n name: 'TableColumnGroup',\r\n inheritAttrs: false,\r\n props: tableColumnGroupProps,\r\n setup(_props, { slots }) {\r\n const props = useProps('tableColumn', _props, {\r\n name: {\r\n default: '',\r\n static: true,\r\n },\r\n fixed: {\r\n default: false,\r\n static: true,\r\n },\r\n order: {\r\n default: 0,\r\n static: true,\r\n },\r\n ellipsis: null,\r\n textAlign: 'center',\r\n renderer: {\r\n default: null,\r\n isFunc: true,\r\n static: true,\r\n },\r\n children: {\r\n default: () => [],\r\n static: true,\r\n },\r\n })\r\n const tableAction = inject(TABLE_ACTIONS, null)\r\n const parentActions = inject(COLUMN_GROUP_ACTIONS, null)\r\n\r\n const columns = reactive(new Set<TableColumnOptions>())\r\n const children = computed(() => [...columns])\r\n const options = reactive({ children }) as ColumnGroupWithKey\r\n\r\n options.key = Symbol('TableColumnGroup')\r\n\r\n for (const key of propKeys) {\r\n if (ignoredProps.includes(key)) continue\r\n ;(options[key as keyof ColumnGroupWithKey] as any) = props[key]\r\n\r\n const trigger = triggerProps.includes(key)\r\n\r\n watch(\r\n () => props[key],\r\n value => {\r\n ;(options[key as keyof ColumnGroupWithKey] as any) = value\r\n trigger\r\n ? tableAction?.updateColumns()\r\n : tableAction?.setColumnProp(options.key, key, value)\r\n },\r\n )\r\n }\r\n\r\n watch(() => props.renderer, setRenderer, { immediate: true })\r\n\r\n provide(COLUMN_GROUP_ACTIONS, {\r\n increaseColumn,\r\n decreaseColumn,\r\n })\r\n\r\n if (parentActions) {\r\n parentActions.increaseColumn(options)\r\n\r\n onBeforeUnmount(() => {\r\n parentActions.decreaseColumn(options)\r\n })\r\n } else {\r\n tableAction?.increaseColumn(options)\r\n\r\n onBeforeUnmount(() => {\r\n tableAction?.decreaseColumn(options)\r\n })\r\n }\r\n\r\n function increaseColumn(column: TableColumnOptions) {\r\n columns.add(column)\r\n }\r\n\r\n function decreaseColumn(column: TableColumnOptions) {\r\n columns.delete(column)\r\n }\r\n\r\n function setRenderer() {\r\n options.renderer = () => {\r\n if (typeof slots.head === 'function') {\r\n return renderSlot(slots, 'head')\r\n }\r\n\r\n if (typeof props.renderer === 'function') {\r\n return props.renderer()\r\n }\r\n\r\n return props.name\r\n }\r\n }\r\n\r\n function renderChildren() {\r\n return props.children.map(child => {\r\n if ('children' in child) {\r\n return <TableColumnGroup {...child}></TableColumnGroup>\r\n }\r\n\r\n const { key, ...others } = child\r\n\r\n return <TableColumn {...others} id-key={key}></TableColumn>\r\n })\r\n }\r\n\r\n return () => [renderSlot(slots, 'default'), ...renderChildren()]\r\n },\r\n})\r\n\r\n// eslint-disable-next-line vue/require-direct-export\r\nexport default TableColumnGroup\r\n"],"names":["propKeys","Object","keys","tableColumnGroupProps","ignoredProps","triggerProps","TableColumnGroup","defineComponent","name","inheritAttrs","props","setup","_props","slots","useProps","default","static","fixed","order","ellipsis","textAlign","renderer","isFunc","children","tableAction","inject","TABLE_ACTIONS","parentActions","COLUMN_GROUP_ACTIONS","columns","reactive","Set","computed","options","key","Symbol","includes","trigger","watch","value","updateColumns","setColumnProp","setRenderer","immediate","provide","increaseColumn","decreaseColumn","onBeforeUnmount","column","add","delete","head","renderSlot","renderChildren","map","child","_createVNode","others","TableColumn","_mergeProps"],"mappings":"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"}