UNPKG

vexip-ui

Version:

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

1 lines 6.45 kB
{"version":3,"file":"table-column-group.cjs","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":"qJAoBMA,EAAWC,OAAOC,KAAKC,uBAAqB,EAC5CC,EAA+B,CAAC,WAAY,UAAU,EACtDC,EAA+B,CAAC,QAAS,OAAO,EAEhDC,EAAmBC,EAAAA,gBAAgB,CACvCC,KAAM,mBACNC,aAAc,GACdC,MAAOP,EAAqB,sBAC5BQ,MAAMC,EAAQ,CAAEC,MAAAA,CAAM,EAAG,CACvB,MAAMH,EAAQI,EAAAA,SAAS,cAAeF,EAAQ,CAC5CJ,KAAM,CACJO,QAAS,GACTC,OAAQ,EACT,EACDC,MAAO,CACLF,QAAS,GACTC,OAAQ,EACT,EACDE,MAAO,CACLH,QAAS,EACTC,OAAQ,EACT,EACDG,SAAU,KACVC,UAAW,SACXC,SAAU,CACRN,QAAS,KACTO,OAAQ,GACRN,OAAQ,EACT,EACDO,SAAU,CACRR,QAASA,IAAM,CAAE,EACjBC,OAAQ,EACV,CACF,CAAC,EACKQ,EAAcC,EAAAA,OAAOC,EAAa,cAAE,IAAI,EACxCC,EAAgBF,EAAAA,OAAOG,EAAoB,qBAAE,IAAI,EAEjDC,EAAUC,EAAAA,SAAS,IAAIC,GAAyB,EAChDR,EAAWS,EAAQ,SAAC,IAAM,CAAC,GAAGH,CAAO,CAAC,EACtCI,EAAUH,EAAAA,SAAS,CAAEP,SAAAA,CAAS,CAAC,EAErCU,EAAQC,IAAMC,OAAO,kBAAkB,EAEvC,UAAWD,KAAOlC,EAAU,CAC1B,GAAII,EAAagC,SAASF,CAAG,EAAG,SAC9BD,EAAQC,CAAG,EAAwCxB,EAAMwB,CAAG,EAE9D,MAAMG,EAAUhC,EAAa+B,SAASF,CAAG,EAEzCI,EAAAA,MACE,IAAM5B,EAAMwB,CAAG,EACfK,GAAS,CACLN,EAAQC,CAAG,EAAwCK,EACrDF,EACIb,GAAAA,MAAAA,EAAagB,gBACbhB,GAAAA,MAAAA,EAAaiB,cAAcR,EAAQC,IAAKA,EAAKK,EACnD,CACF,CACF,CAEAD,EAAAA,MAAM,IAAM5B,EAAMW,SAAUqB,EAAa,CAAEC,UAAW,EAAK,CAAC,EAE5DC,EAAAA,QAAQhB,EAAAA,qBAAsB,CAC5BiB,eAAAA,EACAC,eAAAA,CACF,CAAC,EAEGnB,GACFA,EAAckB,eAAeZ,CAAO,EAEpCc,EAAAA,gBAAgB,IAAM,CACpBpB,EAAcmB,eAAeb,CAAO,CACtC,CAAC,IAEDT,GAAAA,MAAAA,EAAaqB,eAAeZ,GAE5Bc,EAAAA,gBAAgB,IAAM,CACpBvB,GAAAA,MAAAA,EAAasB,eAAeb,EAC9B,CAAC,GAGH,SAASY,EAAeG,EAA4B,CAClDnB,EAAQoB,IAAID,CAAM,CACpB,CAEA,SAASF,EAAeE,EAA4B,CAClDnB,EAAQqB,OAAOF,CAAM,CACvB,CAEA,SAASN,GAAc,CACrBT,EAAQZ,SAAW,IACb,OAAOR,EAAMsC,MAAS,WACjBC,EAAU,WAACvC,EAAO,MAAM,EAG7B,OAAOH,EAAMW,UAAa,WACrBX,EAAMW,SAAU,EAGlBX,EAAMF,IAEjB,CAEA,SAAS6C,GAAiB,CACxB,OAAO3C,EAAMa,SAAS+B,IAAIC,GAAS,CACjC,GAAI,aAAcA,EAChB,OAAAC,cAAAlD,EAA6BiD,EAAK,IAAA,EAGpC,KAAM,CAAErB,IAAAA,EAAK,GAAGuB,CAAO,EAAIF,EAE3B,OAAAC,cAAAE,EAAAC,EAAA,WAAwBF,EAAM,CAAA,SAAUvB,CAAG,CAAA,EAAA,IAAA,CAC7C,CAAC,CACH,CAEA,MAAO,IAAM,CAACkB,EAAAA,WAAWvC,EAAO,SAAS,EAAG,GAAGwC,GAAgB,CACjE,CACF,CAAC"}