UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 5.64 kB
{"version":3,"file":"watcher.mjs","sources":["../../../../../../src/components/ivue-table/table-column/watcher.ts"],"sourcesContent":["import { getCurrentInstance, watch } from 'vue';\r\nimport { hasOwn } from '@vue/shared';\r\n\r\n// ts\r\nimport type { ComputedRef } from 'vue';\r\nimport type { TableColumn, TableColumnCtx } from './defaults';\r\nimport type { Table } from '../table/defaults';\r\nimport { parseWidth, parseMinWidth } from '../utils';\r\n\r\n// 获取所有别名\r\nfunction getAllAliases(props, aliases) {\r\n return props.reduce((prev, cur) => {\r\n prev[cur] = cur;\r\n return prev;\r\n }, aliases);\r\n}\r\n\r\n// useWatcher\r\nfunction useWatcher(parentDom: ComputedRef<Table>, _props: TableColumnCtx) {\r\n // vm\r\n const vm = getCurrentInstance() as TableColumn;\r\n\r\n // 注册复杂观察者\r\n const registerComplexWatchers = () => {\r\n // 固定\r\n const props = ['fixed'];\r\n\r\n // aliases\r\n const aliases = {\r\n columnWidth: 'width',\r\n columnMinWidth: 'minWidth',\r\n };\r\n\r\n // fixed | width | minWidth\r\n const allAliases = getAllAliases(props, aliases);\r\n\r\n // fixed | width | minWidth\r\n Object.keys(allAliases).forEach((key) => {\r\n // 行key\r\n const columnKey = aliases[key];\r\n\r\n // 是否有该属性\r\n if (hasOwn(_props, columnKey)) {\r\n // 注册监听者\r\n watch(\r\n () => _props[columnKey],\r\n (newVal) => {\r\n let value: string | number = newVal;\r\n\r\n // 对应列的宽度\r\n if (columnKey === 'width' && key === 'columnWidth') {\r\n value = parseWidth(newVal);\r\n }\r\n\r\n // 对应列的最小宽度\r\n if (columnKey === 'minWidth' && key === 'columnMinWidth') {\r\n value = parseMinWidth(newVal);\r\n }\r\n\r\n // 修改 width | minWidth 时触发\r\n vm.columnConfig.value[columnKey as string] = value;\r\n\r\n // 更新其他props值\r\n vm.columnConfig.value[key] = value;\r\n\r\n // 如果是固定列 更新 DOM\r\n const updateColumns = columnKey === 'fixed';\r\n parentDom.value.store.scheduleLayout(updateColumns);\r\n }\r\n );\r\n }\r\n });\r\n };\r\n\r\n // 注册watch\r\n const registerNormalWatchers = () => {\r\n // props\r\n const props = [\r\n 'label',\r\n 'filters',\r\n 'filterMultiple',\r\n 'sortable',\r\n 'index',\r\n 'formatter',\r\n 'className',\r\n 'labelClassName',\r\n 'showOverflowTooltip',\r\n ];\r\n\r\n // aliases\r\n const aliases = {\r\n property: 'prop',\r\n align: 'align',\r\n headerAlign: 'headerAlign',\r\n };\r\n\r\n // 获取所有别名\r\n const allAliases = getAllAliases(props, aliases);\r\n\r\n Object.keys(allAliases).forEach((key) => {\r\n const columnKey = aliases[key];\r\n\r\n // 是否有该属性\r\n if (hasOwn(_props, columnKey)) {\r\n // 注册监听者\r\n watch(\r\n () => _props[columnKey],\r\n (newVal) => {\r\n // 更新行的 props\r\n vm.columnConfig.value[key] = newVal;\r\n }\r\n );\r\n }\r\n });\r\n };\r\n\r\n return {\r\n registerNormalWatchers,\r\n registerComplexWatchers,\r\n };\r\n}\r\n\r\nexport default useWatcher;\r\n"],"names":[],"mappings":";;;;AAUA,SAAS,aAAA,CAAc,OAAO,OAAS,EAAA;AACrC,EAAA,OAAO,KAAM,CAAA,MAAA,CAAO,CAAC,IAAA,EAAM,GAAQ,KAAA;AACjC,IAAA,IAAA,CAAK,GAAO,CAAA,GAAA,GAAA,CAAA;AACZ,IAAO,OAAA,IAAA,CAAA;AAAA,KACN,OAAO,CAAA,CAAA;AACZ,CAAA;AAGA,SAAS,UAAA,CAAW,WAA+B,MAAwB,EAAA;AAEzE,EAAA,MAAM,KAAK,kBAAmB,EAAA,CAAA;AAG9B,EAAA,MAAM,0BAA0B,MAAM;AAEpC,IAAM,MAAA,KAAA,GAAQ,CAAC,OAAO,CAAA,CAAA;AAGtB,IAAA,MAAM,OAAU,GAAA;AAAA,MACd,WAAa,EAAA,OAAA;AAAA,MACb,cAAgB,EAAA,UAAA;AAAA,KAClB,CAAA;AAGA,IAAM,MAAA,UAAA,GAAa,aAAc,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAG/C,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AAEvC,MAAA,MAAM,YAAY,OAAQ,CAAA,GAAA,CAAA,CAAA;AAG1B,MAAI,IAAA,MAAA,CAAO,MAAQ,EAAA,SAAS,CAAG,EAAA;AAE7B,QAAA,KAAA;AAAA,UACE,MAAM,MAAO,CAAA,SAAA,CAAA;AAAA,UACb,CAAC,MAAW,KAAA;AACV,YAAA,IAAI,KAAyB,GAAA,MAAA,CAAA;AAG7B,YAAI,IAAA,SAAA,KAAc,OAAW,IAAA,GAAA,KAAQ,aAAe,EAAA;AAClD,cAAA,KAAA,GAAQ,WAAW,MAAM,CAAA,CAAA;AAAA,aAC3B;AAGA,YAAI,IAAA,SAAA,KAAc,UAAc,IAAA,GAAA,KAAQ,gBAAkB,EAAA;AACxD,cAAA,KAAA,GAAQ,cAAc,MAAM,CAAA,CAAA;AAAA,aAC9B;AAGA,YAAG,EAAA,CAAA,YAAA,CAAa,MAAM,SAAuB,CAAA,GAAA,KAAA,CAAA;AAG7C,YAAG,EAAA,CAAA,YAAA,CAAa,MAAM,GAAO,CAAA,GAAA,KAAA,CAAA;AAG7B,YAAA,MAAM,gBAAgB,SAAc,KAAA,OAAA,CAAA;AACpC,YAAU,SAAA,CAAA,KAAA,CAAM,KAAM,CAAA,cAAA,CAAe,aAAa,CAAA,CAAA;AAAA,WACpD;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAGA,EAAA,MAAM,yBAAyB,MAAM;AAEnC,IAAA,MAAM,KAAQ,GAAA;AAAA,MACZ,OAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,gBAAA;AAAA,MACA,qBAAA;AAAA,KACF,CAAA;AAGA,IAAA,MAAM,OAAU,GAAA;AAAA,MACd,QAAU,EAAA,MAAA;AAAA,MACV,KAAO,EAAA,OAAA;AAAA,MACP,WAAa,EAAA,aAAA;AAAA,KACf,CAAA;AAGA,IAAM,MAAA,UAAA,GAAa,aAAc,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAE/C,IAAA,MAAA,CAAO,IAAK,CAAA,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,GAAQ,KAAA;AACvC,MAAA,MAAM,YAAY,OAAQ,CAAA,GAAA,CAAA,CAAA;AAG1B,MAAI,IAAA,MAAA,CAAO,MAAQ,EAAA,SAAS,CAAG,EAAA;AAE7B,QAAA,KAAA;AAAA,UACE,MAAM,MAAO,CAAA,SAAA,CAAA;AAAA,UACb,CAAC,MAAW,KAAA;AAEV,YAAG,EAAA,CAAA,YAAA,CAAa,MAAM,GAAO,CAAA,GAAA,MAAA,CAAA;AAAA,WAC/B;AAAA,SACF,CAAA;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,sBAAA;AAAA,IACA,uBAAA;AAAA,GACF,CAAA;AACF;;;;"}