UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.87 kB
{"version":3,"file":"watcher-helper.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/table-column/watcher-helper.ts"],"sourcesContent":["import { getCurrentInstance, watch } from 'vue'\nimport { hasOwn, isUndefined } from '@element-plus/utils'\nimport { parseMinWidth, parseWidth } from '../util'\nimport { useGlobalConfig } from '@element-plus/components/config-provider'\n\nimport type { ComputedRef } from 'vue'\nimport type { DefaultRow } from '../table/defaults'\nimport type { TableColumn, TableColumnCtx, ValueOf } from './defaults'\n\nfunction getAllAliases(props: string[], aliases: Record<string, string>) {\n return props.reduce((prev, cur) => {\n prev[cur as keyof typeof prev] = cur\n return prev\n }, aliases)\n}\nfunction useWatcher<T extends DefaultRow>(\n owner: ComputedRef<any>,\n props_: Partial<TableColumnCtx<T>>\n) {\n const instance = getCurrentInstance() as TableColumn<T>\n const registerComplexWatchers = () => {\n const props = ['fixed']\n const aliases: Record<string, string> = {\n realWidth: 'width',\n realMinWidth: 'minWidth',\n }\n const allAliases = getAllAliases(props, aliases)\n Object.keys(allAliases).forEach((key) => {\n const columnKey = aliases[key]\n if (hasOwn(props_, columnKey)) {\n watch(\n () => props_[columnKey],\n (newVal) => {\n let value: ValueOf<TableColumnCtx<T>> = newVal\n if (columnKey === 'width' && key === 'realWidth') {\n value = parseWidth(newVal)\n }\n if (columnKey === 'minWidth' && key === 'realMinWidth') {\n value = parseMinWidth(newVal)\n }\n instance.columnConfig.value[columnKey as never] = value as never\n instance.columnConfig.value[key as never] = value as never\n const updateColumns = columnKey === 'fixed'\n owner.value.store.scheduleLayout(updateColumns)\n }\n )\n }\n })\n }\n const registerNormalWatchers = () => {\n const props = [\n 'label',\n 'filters',\n 'filterMultiple',\n 'filteredValue',\n 'sortable',\n 'index',\n 'formatter',\n 'className',\n 'labelClassName',\n 'filterClassName',\n 'showOverflowTooltip',\n 'tooltipFormatter',\n 'resizable',\n ]\n const parentProps = ['showOverflowTooltip']\n const aliases: Record<string, string> = {\n property: 'prop',\n align: 'realAlign',\n headerAlign: 'realHeaderAlign',\n }\n const allAliases = getAllAliases(props, aliases)\n Object.keys(allAliases).forEach((key) => {\n const columnKey = aliases[key]\n if (hasOwn(props_, columnKey)) {\n watch(\n () => props_[columnKey],\n (newVal) => {\n instance.columnConfig.value[key as never] = newVal\n if (key === 'filters' || key === 'filterMethod') {\n instance.columnConfig.value['filterable'] = !!(\n instance.columnConfig.value['filters'] ||\n instance.columnConfig.value['filterMethod']\n )\n }\n }\n )\n }\n })\n parentProps.forEach((key) => {\n if (hasOwn(owner.value.props, key)) {\n watch(\n () => owner.value.props[key],\n (newVal) => {\n if (instance.columnConfig.value.type === 'selection') return\n if (!isUndefined(props_[key])) return\n instance.columnConfig.value[key] = newVal as never\n }\n )\n }\n })\n\n const globalConfig = useGlobalConfig('table')\n if (\n globalConfig.value &&\n hasOwn(globalConfig.value, 'showOverflowTooltip')\n ) {\n watch(\n () => globalConfig.value?.showOverflowTooltip,\n (newVal) => {\n if (instance.columnConfig.value.type === 'selection') return\n if (\n !isUndefined(props_.showOverflowTooltip) ||\n !isUndefined(owner.value.props.showOverflowTooltip)\n )\n return\n instance.columnConfig.value.showOverflowTooltip = newVal as never\n }\n )\n }\n }\n\n return {\n registerComplexWatchers,\n registerNormalWatchers,\n }\n}\n\nexport default useWatcher\n"],"mappings":";;;;;;;AASA,SAAS,cAAc,OAAiB,SAAiC;AACvE,QAAO,MAAM,QAAQ,MAAM,QAAQ;AACjC,OAAK,OAA4B;AACjC,SAAO;IACN,QAAQ;;AAEb,SAAS,WACP,OACA,QACA;CACA,MAAM,WAAW,oBAAoB;CACrC,MAAM,gCAAgC;EACpC,MAAM,QAAQ,CAAC,QAAQ;EACvB,MAAM,UAAkC;GACtC,WAAW;GACX,cAAc;GACf;EACD,MAAM,aAAa,cAAc,OAAO,QAAQ;AAChD,SAAO,KAAK,WAAW,CAAC,SAAS,QAAQ;GACvC,MAAM,YAAY,QAAQ;AAC1B,OAAI,OAAO,QAAQ,UAAU,CAC3B,aACQ,OAAO,aACZ,WAAW;IACV,IAAI,QAAoC;AACxC,QAAI,cAAc,WAAW,QAAQ,YACnC,SAAQ,WAAW,OAAO;AAE5B,QAAI,cAAc,cAAc,QAAQ,eACtC,SAAQ,cAAc,OAAO;AAE/B,aAAS,aAAa,MAAM,aAAsB;AAClD,aAAS,aAAa,MAAM,OAAgB;IAC5C,MAAM,gBAAgB,cAAc;AACpC,UAAM,MAAM,MAAM,eAAe,cAAc;KAElD;IAEH;;CAEJ,MAAM,+BAA+B;EACnC,MAAM,QAAQ;GACZ;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACD,MAAM,cAAc,CAAC,sBAAsB;EAC3C,MAAM,UAAkC;GACtC,UAAU;GACV,OAAO;GACP,aAAa;GACd;EACD,MAAM,aAAa,cAAc,OAAO,QAAQ;AAChD,SAAO,KAAK,WAAW,CAAC,SAAS,QAAQ;GACvC,MAAM,YAAY,QAAQ;AAC1B,OAAI,OAAO,QAAQ,UAAU,CAC3B,aACQ,OAAO,aACZ,WAAW;AACV,aAAS,aAAa,MAAM,OAAgB;AAC5C,QAAI,QAAQ,aAAa,QAAQ,eAC/B,UAAS,aAAa,MAAM,gBAAgB,CAAC,EAC3C,SAAS,aAAa,MAAM,cAC5B,SAAS,aAAa,MAAM;KAInC;IAEH;AACF,cAAY,SAAS,QAAQ;AAC3B,OAAI,OAAO,MAAM,MAAM,OAAO,IAAI,CAChC,aACQ,MAAM,MAAM,MAAM,OACvB,WAAW;AACV,QAAI,SAAS,aAAa,MAAM,SAAS,YAAa;AACtD,QAAI,CAAC,YAAY,OAAO,KAAK,CAAE;AAC/B,aAAS,aAAa,MAAM,OAAO;KAEtC;IAEH;EAEF,MAAM,eAAe,gBAAgB,QAAQ;AAC7C,MACE,aAAa,SACb,OAAO,aAAa,OAAO,sBAAsB,CAEjD,aACQ,aAAa,OAAO,sBACzB,WAAW;AACV,OAAI,SAAS,aAAa,MAAM,SAAS,YAAa;AACtD,OACE,CAAC,YAAY,OAAO,oBAAoB,IACxC,CAAC,YAAY,MAAM,MAAM,MAAM,oBAAoB,CAEnD;AACF,YAAS,aAAa,MAAM,sBAAsB;IAErD;;AAIL,QAAO;EACL;EACA;EACD"}