element-plus
Version:
A Component Library for Vue 3
1 lines • 3.62 kB
Source Map (JSON)
{"version":3,"file":"expand.mjs","sources":["../../../../../../../packages/components/table/src/store/expand.ts"],"sourcesContent":["import { ref, getCurrentInstance } from 'vue'\nimport { toggleRowStatus, getKeysMap, getRowIdentity } from '../util'\n\nimport type { Ref } from 'vue'\nimport type { WatcherPropsData } from './index'\nimport type { Table } from '../table/defaults'\n\nfunction useExpand<T>(watcherData: WatcherPropsData<T>) {\n const instance = getCurrentInstance() as Table<T>\n const defaultExpandAll = ref(false)\n const expandRows: Ref<T[]> = ref([])\n const updateExpandRows = () => {\n const data = watcherData.data.value || []\n const rowKey = watcherData.rowKey.value\n if (defaultExpandAll.value) {\n expandRows.value = data.slice()\n } else if (rowKey) {\n // TODO:这里的代码可以优化\n const expandRowsMap = getKeysMap(expandRows.value, rowKey)\n expandRows.value = data.reduce((prev: T[], row: T) => {\n const rowId = getRowIdentity(row, rowKey)\n const rowInfo = expandRowsMap[rowId]\n if (rowInfo) {\n prev.push(row)\n }\n return prev\n }, [])\n } else {\n expandRows.value = []\n }\n }\n\n const toggleRowExpansion = (row: T, expanded?: boolean) => {\n const changed = toggleRowStatus(expandRows.value, row, expanded)\n if (changed) {\n instance.emit('expand-change', row, expandRows.value.slice())\n instance.store.scheduleLayout()\n }\n }\n\n const setExpandRowKeys = (rowKeys: string[]) => {\n instance.store.assertRowKey()\n // TODO:这里的代码可以优化\n const data = watcherData.data.value || []\n const rowKey = watcherData.rowKey.value\n const keysMap = getKeysMap(data, rowKey)\n expandRows.value = rowKeys.reduce((prev: T[], cur: string) => {\n const info = keysMap[cur]\n if (info) {\n prev.push(info.row)\n }\n return prev\n }, [])\n }\n\n const isRowExpanded = (row: T): boolean => {\n const rowKey = watcherData.rowKey.value\n if (rowKey) {\n const expandMap = getKeysMap(expandRows.value, rowKey)\n return !!expandMap[getRowIdentity(row, rowKey)]\n }\n return expandRows.value.indexOf(row) !== -1\n }\n return {\n updateExpandRows,\n toggleRowExpansion,\n setExpandRowKeys,\n isRowExpanded,\n states: {\n expandRows,\n defaultExpandAll,\n },\n }\n}\n\nexport default useExpand\n"],"names":[],"mappings":";;;AAOA,mBAAsB,aAAkC;AACtD,QAAM,WAAW;AACjB,QAAM,mBAAmB,IAAI;AAC7B,QAAM,aAAuB,IAAI;AACjC,QAAM,mBAAmB,MAAM;AAC7B,UAAM,OAAO,YAAY,KAAK,SAAS;AACvC,UAAM,SAAS,YAAY,OAAO;AAClC,QAAI,iBAAiB,OAAO;AAC1B,iBAAW,QAAQ,KAAK;AAAA,eACf,QAAQ;AAEjB,YAAM,gBAAgB,WAAW,WAAW,OAAO;AACnD,iBAAW,QAAQ,KAAK,OAAO,CAAC,MAAW,QAAW;AACpD,cAAM,QAAQ,eAAe,KAAK;AAClC,cAAM,UAAU,cAAc;AAC9B,YAAI,SAAS;AACX,eAAK,KAAK;AAAA;AAEZ,eAAO;AAAA,SACN;AAAA,WACE;AACL,iBAAW,QAAQ;AAAA;AAAA;AAIvB,QAAM,qBAAqB,CAAC,KAAQ,aAAuB;AACzD,UAAM,UAAU,gBAAgB,WAAW,OAAO,KAAK;AACvD,QAAI,SAAS;AACX,eAAS,KAAK,iBAAiB,KAAK,WAAW,MAAM;AACrD,eAAS,MAAM;AAAA;AAAA;AAInB,QAAM,mBAAmB,CAAC,YAAsB;AAC9C,aAAS,MAAM;AAEf,UAAM,OAAO,YAAY,KAAK,SAAS;AACvC,UAAM,SAAS,YAAY,OAAO;AAClC,UAAM,UAAU,WAAW,MAAM;AACjC,eAAW,QAAQ,QAAQ,OAAO,CAAC,MAAW,QAAgB;AAC5D,YAAM,OAAO,QAAQ;AACrB,UAAI,MAAM;AACR,aAAK,KAAK,KAAK;AAAA;AAEjB,aAAO;AAAA,OACN;AAAA;AAGL,QAAM,gBAAgB,CAAC,QAAoB;AACzC,UAAM,SAAS,YAAY,OAAO;AAClC,QAAI,QAAQ;AACV,YAAM,YAAY,WAAW,WAAW,OAAO;AAC/C,aAAO,CAAC,CAAC,UAAU,eAAe,KAAK;AAAA;AAEzC,WAAO,WAAW,MAAM,QAAQ,SAAS;AAAA;AAE3C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,MACN;AAAA,MACA;AAAA;AAAA;AAAA;;;;"}