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