UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.43 kB
{"version":3,"file":"watcher-helper.mjs","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'\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\n return {\n registerComplexWatchers,\n registerNormalWatchers,\n }\n}\n\nexport default useWatcher\n"],"names":[],"mappings":";;;;;AAQA,SAAS,aAAA,CAAc,OAAiB,OAAA,EAAiC;AACvE,EAAA,OAAO,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,EAAM,GAAA,KAAQ;AACjC,IAAA,IAAA,CAAK,GAAwB,CAAA,GAAI,GAAA;AACjC,IAAA,OAAO,IAAA;AAAA,EACT,GAAG,OAAO,CAAA;AACZ;AACA,SAAS,UAAA,CACP,OACA,MAAA,EACA;AACA,EAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,EAAA,MAAM,0BAA0B,MAAM;AACpC,IAAA,MAAM,KAAA,GAAQ,CAAC,OAAO,CAAA;AACtB,IAAA,MAAM,OAAA,GAAkC;AAAA,MACtC,SAAA,EAAW,OAAA;AAAA,MACX,YAAA,EAAc;AAAA,KAChB;AACA,IAAA,MAAM,UAAA,GAAa,aAAA,CAAc,KAAA,EAAO,OAAO,CAAA;AAC/C,IAAA,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACvC,MAAA,MAAM,SAAA,GAAY,QAAQ,GAAG,CAAA;AAC7B,MAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC7B,QAAA,KAAA;AAAA,UACE,MAAM,OAAO,SAAS,CAAA;AAAA,UACtB,CAAC,MAAA,KAAW;AACV,YAAA,IAAI,KAAA,GAAoC,MAAA;AACxC,YAAA,IAAI,SAAA,KAAc,OAAA,IAAW,GAAA,KAAQ,WAAA,EAAa;AAChD,cAAA,KAAA,GAAQ,WAAW,MAAM,CAAA;AAAA,YAC3B;AACA,YAAA,IAAI,SAAA,KAAc,UAAA,IAAc,GAAA,KAAQ,cAAA,EAAgB;AACtD,cAAA,KAAA,GAAQ,cAAc,MAAM,CAAA;AAAA,YAC9B;AACA,YAAA,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,SAAkB,CAAA,GAAI,KAAA;AAClD,YAAA,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,GAAY,CAAA,GAAI,KAAA;AAC5C,YAAA,MAAM,gBAAgB,SAAA,KAAc,OAAA;AACpC,YAAA,KAAA,CAAM,KAAA,CAAM,KAAA,CAAM,cAAA,CAAe,aAAa,CAAA;AAAA,UAChD;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AACA,EAAA,MAAM,yBAAyB,MAAM;AACnC,IAAA,MAAM,KAAA,GAAQ;AAAA,MACZ,OAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,eAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,iBAAA;AAAA,MACA,qBAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,WAAA,GAAc,CAAC,qBAAqB,CAAA;AAC1C,IAAA,MAAM,OAAA,GAAkC;AAAA,MACtC,QAAA,EAAU,MAAA;AAAA,MACV,KAAA,EAAO,WAAA;AAAA,MACP,WAAA,EAAa;AAAA,KACf;AACA,IAAA,MAAM,UAAA,GAAa,aAAA,CAAc,KAAA,EAAO,OAAO,CAAA;AAC/C,IAAA,MAAA,CAAO,IAAA,CAAK,UAAU,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AACvC,MAAA,MAAM,SAAA,GAAY,QAAQ,GAAG,CAAA;AAC7B,MAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,SAAS,CAAA,EAAG;AAC7B,QAAA,KAAA;AAAA,UACE,MAAM,OAAO,SAAS,CAAA;AAAA,UACtB,CAAC,MAAA,KAAW;AACV,YAAA,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,GAAY,CAAA,GAAI,MAAA;AAC5C,YAAA,IAAI,GAAA,KAAQ,SAAA,IAAa,GAAA,KAAQ,cAAA,EAAgB;AAC/C,cAAA,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,YAAY,CAAA,GAAI,CAAC,EAC3C,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,SAAS,CAAA,IACrC,QAAA,CAAS,YAAA,CAAa,MAAM,cAAc,CAAA,CAAA;AAAA,YAE9C;AAAA,UACF;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AACD,IAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC3B,MAAA,IAAI,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA,EAAG;AAClC,QAAA,KAAA;AAAA,UACE,MAAM,KAAA,CAAM,KAAA,CAAM,KAAA,CAAM,GAAG,CAAA;AAAA,UAC3B,CAAC,MAAA,KAAW;AACV,YAAA,IAAI,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,IAAA,KAAS,WAAA,EAAa;AACtD,YAAA,IAAI,CAAC,WAAA,CAAY,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AAC/B,YAAA,QAAA,CAAS,YAAA,CAAa,KAAA,CAAM,GAAG,CAAA,GAAI,MAAA;AAAA,UACrC;AAAA,SACF;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,uBAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}