@element-plus/nightly 0.0.20260425 → 0.0.20260426
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.full.js +426 -242
- package/dist/index.full.min.js +4 -4
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +3 -3
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +426 -242
- package/dist/locale/af.js +1 -1
- package/dist/locale/af.min.js +1 -1
- package/dist/locale/af.min.mjs +1 -1
- package/dist/locale/af.mjs +1 -1
- package/dist/locale/ar-eg.js +1 -1
- package/dist/locale/ar-eg.min.js +1 -1
- package/dist/locale/ar-eg.min.mjs +1 -1
- package/dist/locale/ar-eg.mjs +1 -1
- package/dist/locale/ar.js +1 -1
- package/dist/locale/ar.min.js +1 -1
- package/dist/locale/ar.min.mjs +1 -1
- package/dist/locale/ar.mjs +1 -1
- package/dist/locale/az.js +1 -1
- package/dist/locale/az.min.js +1 -1
- package/dist/locale/az.min.mjs +1 -1
- package/dist/locale/az.mjs +1 -1
- package/dist/locale/bg.js +1 -1
- package/dist/locale/bg.min.js +1 -1
- package/dist/locale/bg.min.mjs +1 -1
- package/dist/locale/bg.mjs +1 -1
- package/dist/locale/bn.js +1 -1
- package/dist/locale/bn.min.js +1 -1
- package/dist/locale/bn.min.mjs +1 -1
- package/dist/locale/bn.mjs +1 -1
- package/dist/locale/ca.js +1 -1
- package/dist/locale/ca.min.js +1 -1
- package/dist/locale/ca.min.mjs +1 -1
- package/dist/locale/ca.mjs +1 -1
- package/dist/locale/ckb.js +1 -1
- package/dist/locale/ckb.min.js +1 -1
- package/dist/locale/ckb.min.mjs +1 -1
- package/dist/locale/ckb.mjs +1 -1
- package/dist/locale/cs.js +1 -1
- package/dist/locale/cs.min.js +1 -1
- package/dist/locale/cs.min.mjs +1 -1
- package/dist/locale/cs.mjs +1 -1
- package/dist/locale/da.js +1 -1
- package/dist/locale/da.min.js +1 -1
- package/dist/locale/da.min.mjs +1 -1
- package/dist/locale/da.mjs +1 -1
- package/dist/locale/de.js +1 -1
- package/dist/locale/de.min.js +1 -1
- package/dist/locale/de.min.mjs +1 -1
- package/dist/locale/de.mjs +1 -1
- package/dist/locale/el.js +1 -1
- package/dist/locale/el.min.js +1 -1
- package/dist/locale/el.min.mjs +1 -1
- package/dist/locale/el.mjs +1 -1
- package/dist/locale/en.js +1 -1
- package/dist/locale/en.min.js +1 -1
- package/dist/locale/en.min.mjs +1 -1
- package/dist/locale/en.mjs +1 -1
- package/dist/locale/eo.js +1 -1
- package/dist/locale/eo.min.js +1 -1
- package/dist/locale/eo.min.mjs +1 -1
- package/dist/locale/eo.mjs +1 -1
- package/dist/locale/es.js +1 -1
- package/dist/locale/es.min.js +1 -1
- package/dist/locale/es.min.mjs +1 -1
- package/dist/locale/es.mjs +1 -1
- package/dist/locale/et.js +1 -1
- package/dist/locale/et.min.js +1 -1
- package/dist/locale/et.min.mjs +1 -1
- package/dist/locale/et.mjs +1 -1
- package/dist/locale/eu.js +1 -1
- package/dist/locale/eu.min.js +1 -1
- package/dist/locale/eu.min.mjs +1 -1
- package/dist/locale/eu.mjs +1 -1
- package/dist/locale/fa.js +1 -1
- package/dist/locale/fa.min.js +1 -1
- package/dist/locale/fa.min.mjs +1 -1
- package/dist/locale/fa.mjs +1 -1
- package/dist/locale/fi.js +1 -1
- package/dist/locale/fi.min.js +1 -1
- package/dist/locale/fi.min.mjs +1 -1
- package/dist/locale/fi.mjs +1 -1
- package/dist/locale/fr.js +1 -1
- package/dist/locale/fr.min.js +1 -1
- package/dist/locale/fr.min.mjs +1 -1
- package/dist/locale/fr.mjs +1 -1
- package/dist/locale/he.js +1 -1
- package/dist/locale/he.min.js +1 -1
- package/dist/locale/he.min.mjs +1 -1
- package/dist/locale/he.mjs +1 -1
- package/dist/locale/hi.js +1 -1
- package/dist/locale/hi.min.js +1 -1
- package/dist/locale/hi.min.mjs +1 -1
- package/dist/locale/hi.mjs +1 -1
- package/dist/locale/hr.js +1 -1
- package/dist/locale/hr.min.js +1 -1
- package/dist/locale/hr.min.mjs +1 -1
- package/dist/locale/hr.mjs +1 -1
- package/dist/locale/hu.js +1 -1
- package/dist/locale/hu.min.js +1 -1
- package/dist/locale/hu.min.mjs +1 -1
- package/dist/locale/hu.mjs +1 -1
- package/dist/locale/hy-am.js +1 -1
- package/dist/locale/hy-am.min.js +1 -1
- package/dist/locale/hy-am.min.mjs +1 -1
- package/dist/locale/hy-am.mjs +1 -1
- package/dist/locale/id.js +1 -1
- package/dist/locale/id.min.js +1 -1
- package/dist/locale/id.min.mjs +1 -1
- package/dist/locale/id.mjs +1 -1
- package/dist/locale/it.js +1 -1
- package/dist/locale/it.min.js +1 -1
- package/dist/locale/it.min.mjs +1 -1
- package/dist/locale/it.mjs +1 -1
- package/dist/locale/ja.js +1 -1
- package/dist/locale/ja.min.js +1 -1
- package/dist/locale/ja.min.mjs +1 -1
- package/dist/locale/ja.mjs +1 -1
- package/dist/locale/kk.js +1 -1
- package/dist/locale/kk.min.js +1 -1
- package/dist/locale/kk.min.mjs +1 -1
- package/dist/locale/kk.mjs +1 -1
- package/dist/locale/km.js +1 -1
- package/dist/locale/km.min.js +1 -1
- package/dist/locale/km.min.mjs +1 -1
- package/dist/locale/km.mjs +1 -1
- package/dist/locale/ko.js +1 -1
- package/dist/locale/ko.min.js +1 -1
- package/dist/locale/ko.min.mjs +1 -1
- package/dist/locale/ko.mjs +1 -1
- package/dist/locale/ku.js +1 -1
- package/dist/locale/ku.min.js +1 -1
- package/dist/locale/ku.min.mjs +1 -1
- package/dist/locale/ku.mjs +1 -1
- package/dist/locale/ky.js +1 -1
- package/dist/locale/ky.min.js +1 -1
- package/dist/locale/ky.min.mjs +1 -1
- package/dist/locale/ky.mjs +1 -1
- package/dist/locale/lo.js +1 -1
- package/dist/locale/lo.min.js +1 -1
- package/dist/locale/lo.min.mjs +1 -1
- package/dist/locale/lo.mjs +1 -1
- package/dist/locale/lt.js +1 -1
- package/dist/locale/lt.min.js +1 -1
- package/dist/locale/lt.min.mjs +1 -1
- package/dist/locale/lt.mjs +1 -1
- package/dist/locale/lv.js +1 -1
- package/dist/locale/lv.min.js +1 -1
- package/dist/locale/lv.min.mjs +1 -1
- package/dist/locale/lv.mjs +1 -1
- package/dist/locale/mg.js +1 -1
- package/dist/locale/mg.min.js +1 -1
- package/dist/locale/mg.min.mjs +1 -1
- package/dist/locale/mg.mjs +1 -1
- package/dist/locale/mn.js +1 -1
- package/dist/locale/mn.min.js +1 -1
- package/dist/locale/mn.min.mjs +1 -1
- package/dist/locale/mn.mjs +1 -1
- package/dist/locale/ms.js +1 -1
- package/dist/locale/ms.min.js +1 -1
- package/dist/locale/ms.min.mjs +1 -1
- package/dist/locale/ms.mjs +1 -1
- package/dist/locale/my.js +1 -1
- package/dist/locale/my.min.js +1 -1
- package/dist/locale/my.min.mjs +1 -1
- package/dist/locale/my.mjs +1 -1
- package/dist/locale/nb-no.js +1 -1
- package/dist/locale/nb-no.min.js +1 -1
- package/dist/locale/nb-no.min.mjs +1 -1
- package/dist/locale/nb-no.mjs +1 -1
- package/dist/locale/nl.js +1 -1
- package/dist/locale/nl.min.js +1 -1
- package/dist/locale/nl.min.mjs +1 -1
- package/dist/locale/nl.mjs +1 -1
- package/dist/locale/no.js +1 -1
- package/dist/locale/no.min.js +1 -1
- package/dist/locale/no.min.mjs +1 -1
- package/dist/locale/no.mjs +1 -1
- package/dist/locale/pa.js +1 -1
- package/dist/locale/pa.min.js +1 -1
- package/dist/locale/pa.min.mjs +1 -1
- package/dist/locale/pa.mjs +1 -1
- package/dist/locale/pl.js +1 -1
- package/dist/locale/pl.min.js +1 -1
- package/dist/locale/pl.min.mjs +1 -1
- package/dist/locale/pl.mjs +1 -1
- package/dist/locale/pt-br.js +1 -1
- package/dist/locale/pt-br.min.js +1 -1
- package/dist/locale/pt-br.min.mjs +1 -1
- package/dist/locale/pt-br.mjs +1 -1
- package/dist/locale/pt.js +1 -1
- package/dist/locale/pt.min.js +1 -1
- package/dist/locale/pt.min.mjs +1 -1
- package/dist/locale/pt.mjs +1 -1
- package/dist/locale/ro.js +1 -1
- package/dist/locale/ro.min.js +1 -1
- package/dist/locale/ro.min.mjs +1 -1
- package/dist/locale/ro.mjs +1 -1
- package/dist/locale/ru.js +1 -1
- package/dist/locale/ru.min.js +1 -1
- package/dist/locale/ru.min.mjs +1 -1
- package/dist/locale/ru.mjs +1 -1
- package/dist/locale/sk.js +1 -1
- package/dist/locale/sk.min.js +1 -1
- package/dist/locale/sk.min.mjs +1 -1
- package/dist/locale/sk.mjs +1 -1
- package/dist/locale/sl.js +1 -1
- package/dist/locale/sl.min.js +1 -1
- package/dist/locale/sl.min.mjs +1 -1
- package/dist/locale/sl.mjs +1 -1
- package/dist/locale/sr.js +1 -1
- package/dist/locale/sr.min.js +1 -1
- package/dist/locale/sr.min.mjs +1 -1
- package/dist/locale/sr.mjs +1 -1
- package/dist/locale/sv.js +1 -1
- package/dist/locale/sv.min.js +1 -1
- package/dist/locale/sv.min.mjs +1 -1
- package/dist/locale/sv.mjs +1 -1
- package/dist/locale/sw.js +1 -1
- package/dist/locale/sw.min.js +1 -1
- package/dist/locale/sw.min.mjs +1 -1
- package/dist/locale/sw.mjs +1 -1
- package/dist/locale/ta.js +1 -1
- package/dist/locale/ta.min.js +1 -1
- package/dist/locale/ta.min.mjs +1 -1
- package/dist/locale/ta.mjs +1 -1
- package/dist/locale/te.js +1 -1
- package/dist/locale/te.min.js +1 -1
- package/dist/locale/te.min.mjs +1 -1
- package/dist/locale/te.mjs +1 -1
- package/dist/locale/th.js +1 -1
- package/dist/locale/th.min.js +1 -1
- package/dist/locale/th.min.mjs +1 -1
- package/dist/locale/th.mjs +1 -1
- package/dist/locale/tk.js +1 -1
- package/dist/locale/tk.min.js +1 -1
- package/dist/locale/tk.min.mjs +1 -1
- package/dist/locale/tk.mjs +1 -1
- package/dist/locale/tr.js +1 -1
- package/dist/locale/tr.min.js +1 -1
- package/dist/locale/tr.min.mjs +1 -1
- package/dist/locale/tr.mjs +1 -1
- package/dist/locale/ug-cn.js +1 -1
- package/dist/locale/ug-cn.min.js +1 -1
- package/dist/locale/ug-cn.min.mjs +1 -1
- package/dist/locale/ug-cn.mjs +1 -1
- package/dist/locale/uk.js +1 -1
- package/dist/locale/uk.min.js +1 -1
- package/dist/locale/uk.min.mjs +1 -1
- package/dist/locale/uk.mjs +1 -1
- package/dist/locale/uz-uz.js +1 -1
- package/dist/locale/uz-uz.min.js +1 -1
- package/dist/locale/uz-uz.min.mjs +1 -1
- package/dist/locale/uz-uz.mjs +1 -1
- package/dist/locale/vi.js +1 -1
- package/dist/locale/vi.min.js +1 -1
- package/dist/locale/vi.min.mjs +1 -1
- package/dist/locale/vi.mjs +1 -1
- package/dist/locale/zh-cn.js +1 -1
- package/dist/locale/zh-cn.min.js +1 -1
- package/dist/locale/zh-cn.min.mjs +1 -1
- package/dist/locale/zh-cn.mjs +1 -1
- package/dist/locale/zh-hk.js +1 -1
- package/dist/locale/zh-hk.min.js +1 -1
- package/dist/locale/zh-hk.min.mjs +1 -1
- package/dist/locale/zh-hk.mjs +1 -1
- package/dist/locale/zh-mo.js +1 -1
- package/dist/locale/zh-mo.min.js +1 -1
- package/dist/locale/zh-mo.min.mjs +1 -1
- package/dist/locale/zh-mo.mjs +1 -1
- package/dist/locale/zh-tw.js +1 -1
- package/dist/locale/zh-tw.min.js +1 -1
- package/dist/locale/zh-tw.min.mjs +1 -1
- package/dist/locale/zh-tw.mjs +1 -1
- package/es/components/affix/src/affix.vue.d.ts +2 -2
- package/es/components/alert/src/alert.d.ts +1 -1
- package/es/components/anchor/src/anchor.d.ts +1 -1
- package/es/components/anchor/src/anchor.vue.d.ts +1 -1
- package/es/components/autocomplete/src/autocomplete.d.ts +4 -4
- package/es/components/autocomplete/src/autocomplete.vue.d.ts +4 -4
- package/es/components/avatar/src/avatar.d.ts +1 -1
- package/es/components/avatar/src/avatar.vue.d.ts +1 -1
- package/es/components/backtop/src/backtop.vue.d.ts +1 -1
- package/es/components/badge/src/badge.d.ts +1 -1
- package/es/components/badge/src/badge.vue.d.ts +1 -1
- package/es/components/button/src/button-group.vue.d.ts +1 -1
- package/es/components/button/src/button.d.ts +1 -1
- package/es/components/button/src/button.vue.d.ts +4 -4
- package/es/components/calendar/src/calendar.d.ts +1 -1
- package/es/components/card/src/card.vue.d.ts +1 -1
- package/es/components/carousel/src/carousel.d.ts +1 -1
- package/es/components/carousel/src/carousel.vue.d.ts +2 -2
- package/es/components/cascader/src/cascader.d.ts +3 -3
- package/es/components/cascader/src/cascader.vue.d.ts +16 -16
- package/es/components/cascader-panel/src/index.vue.d.ts +2 -2
- package/es/components/cascader-panel/src/menu.vue.d.ts +1 -1
- package/es/components/check-tag/src/check-tag.d.ts +1 -1
- package/es/components/checkbox/src/checkbox-button.vue.d.ts +4 -4
- package/es/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
- package/es/components/checkbox/src/checkbox.d.ts +8 -8
- package/es/components/checkbox/src/checkbox.vue.d.ts +4 -4
- package/es/components/col/src/col.vue.d.ts +1 -1
- package/es/components/color-picker/src/color-picker.vue.d.ts +7 -7
- package/es/components/color-picker-panel/src/color-picker-panel.vue.d.ts +1 -1
- package/es/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
- package/es/components/date-picker/src/date-picker.d.ts +14 -14
- package/es/components/date-picker/src/props.d.ts +2 -2
- package/es/components/date-picker-panel/src/date-picker-panel.d.ts +6 -6
- package/es/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
- package/es/components/descriptions/src/description-item.d.ts +14 -14
- package/es/components/descriptions/src/description.vue.d.ts +1 -1
- package/es/components/dialog/src/dialog.vue.d.ts +4 -4
- package/es/components/divider/src/divider.vue.d.ts +1 -1
- package/es/components/drawer/src/drawer.vue.d.ts +5 -5
- package/es/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
- package/es/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
- package/es/components/dropdown/src/dropdown.d.ts +4 -4
- package/es/components/dropdown/src/dropdown.vue.d.ts +69 -69
- package/es/components/form/src/form.vue.d.ts +1 -1
- package/es/components/image/src/image.vue.d.ts +5 -5
- package/es/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
- package/es/components/input/src/input.d.ts +3 -3
- package/es/components/input/src/input.vue.d.ts +16 -16
- package/es/components/input-number/src/input-number.d.ts +2 -2
- package/es/components/input-number/src/input-number.vue.d.ts +9 -9
- package/es/components/input-otp/src/input-otp.vue.d.ts +6 -6
- package/es/components/input-tag/src/input-tag.d.ts +2 -2
- package/es/components/input-tag/src/input-tag.vue.d.ts +12 -12
- package/es/components/link/src/link.d.ts +1 -1
- package/es/components/link/src/link.vue.d.ts +1 -1
- package/es/components/mention/src/mention.d.ts +3 -3
- package/es/components/mention/src/mention.vue.d.ts +4 -4
- package/es/components/menu/src/menu.d.ts +5 -5
- package/es/components/menu/src/sub-menu.d.ts +1 -1
- package/es/components/message/src/message.d.ts +1 -1
- package/es/components/message/src/message.vue.d.ts +5 -5
- package/es/components/notification/src/notification.d.ts +1 -1
- package/es/components/notification/src/notification.vue.d.ts +5 -5
- package/es/components/page-header/src/page-header.vue.d.ts +1 -1
- package/es/components/pagination/src/pagination.d.ts +4 -4
- package/es/components/popconfirm/src/popconfirm.d.ts +2 -2
- package/es/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
- package/es/components/popover/src/popover.d.ts +2 -2
- package/es/components/popover/src/popover.vue.d.ts +13 -13
- package/es/components/popper/src/composables/use-content.d.ts +1 -1
- package/es/components/popper/src/content.vue.d.ts +8 -8
- package/es/components/popper/src/popper.d.ts +2 -2
- package/es/components/progress/src/progress.d.ts +1 -1
- package/es/components/progress/src/progress.vue.d.ts +3 -3
- package/es/components/radio/src/radio-button.d.ts +3 -3
- package/es/components/radio/src/radio-button.vue.d.ts +2 -2
- package/es/components/radio/src/radio-group.vue.d.ts +4 -4
- package/es/components/radio/src/radio.d.ts +6 -6
- package/es/components/radio/src/radio.vue.d.ts +3 -3
- package/es/components/rate/src/rate.vue.d.ts +1 -1
- package/es/components/result/src/result.d.ts +1 -1
- package/es/components/row/src/row.vue.d.ts +1 -1
- package/es/components/scrollbar/src/scrollbar.vue.d.ts +4 -4
- package/es/components/segmented/index.d.ts +2 -2
- package/es/components/segmented/src/segmented.d.ts +1 -1
- package/es/components/select/src/option.d.ts +2 -2
- package/es/components/select/src/option.vue.d.ts +5 -5
- package/es/components/select/src/select.d.ts +4 -4
- package/es/components/select/src/select.vue.d.ts +82 -82
- package/es/components/select-v2/src/defaults.d.ts +2 -2
- package/es/components/select-v2/src/select.vue.d.ts +57 -57
- package/es/components/skeleton/src/skeleton-item.d.ts +1 -1
- package/es/components/skeleton/src/skeleton.vue.d.ts +1 -1
- package/es/components/slider/src/button.vue.d.ts +1 -1
- package/es/components/slider/src/slider.vue.d.ts +3 -3
- package/es/components/space/src/space.d.ts +1 -1
- package/es/components/statistic/src/statistic.vue.d.ts +2 -2
- package/es/components/steps/src/item.d.ts +1 -1
- package/es/components/steps/src/steps.d.ts +2 -2
- package/es/components/steps/src/steps.vue.d.ts +2 -2
- package/es/components/switch/src/switch.vue.d.ts +1 -1
- package/es/components/table/src/config.mjs +1 -0
- package/es/components/table/src/config.mjs.map +1 -1
- package/es/components/table/src/store/index.d.ts +32 -0
- package/es/components/table/src/store/index.mjs +1 -0
- package/es/components/table/src/store/index.mjs.map +1 -1
- package/es/components/table/src/store/tree.mjs +8 -2
- package/es/components/table/src/store/tree.mjs.map +1 -1
- package/es/components/table/src/store/watcher.mjs +187 -6
- package/es/components/table/src/store/watcher.mjs.map +1 -1
- package/es/components/table/src/table-column/index.d.ts +19 -19
- package/es/components/table/src/table-footer/index.d.ts +1 -1
- package/es/components/table/src/table-header/index.d.ts +13 -13
- package/es/components/table/src/table.vue.d.ts +63 -47
- package/es/components/table-v2/src/components/row.d.ts +1 -1
- package/es/components/table-v2/src/table-grid.d.ts +3 -3
- package/es/components/table-v2/src/table-v2.d.ts +3 -3
- package/es/components/tabs/src/tab-nav.d.ts +1 -1
- package/es/components/tabs/src/tabs.d.ts +2 -2
- package/es/components/tag/src/tag.d.ts +1 -1
- package/es/components/text/src/text.d.ts +1 -1
- package/es/components/time-picker/src/common/picker.vue.d.ts +20 -20
- package/es/components/time-picker/src/common/props.d.ts +2 -2
- package/es/components/time-picker/src/time-picker.d.ts +14 -14
- package/es/components/time-select/src/time-select.vue.d.ts +11 -11
- package/es/components/timeline/src/timeline-item.d.ts +1 -1
- package/es/components/timeline/src/timeline-item.vue.d.ts +1 -1
- package/es/components/tooltip/src/content.vue.d.ts +8 -8
- package/es/components/tooltip/src/tooltip.d.ts +2 -2
- package/es/components/tooltip/src/tooltip.vue.d.ts +9 -9
- package/es/components/tooltip/src/trigger.d.ts +1 -1
- package/es/components/tour/src/tour.vue.d.ts +2 -2
- package/es/components/tree/src/tree.vue.d.ts +25 -25
- package/es/components/tree-select/src/tree-select.vue.d.ts +43 -43
- package/es/components/tree-v2/src/tree.vue.d.ts +10 -10
- package/es/components/upload/src/upload-content.d.ts +1 -1
- package/es/components/upload/src/upload-content.vue.d.ts +2 -2
- package/es/components/upload/src/upload-list.d.ts +1 -1
- package/es/components/upload/src/upload.d.ts +2 -2
- package/es/components/upload/src/upload.vue.d.ts +3 -3
- package/es/components/virtual-list/src/builders/build-grid.d.ts +4 -4
- package/es/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -4
- package/es/components/virtual-list/src/components/dynamic-size-list.d.ts +6 -6
- package/es/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -4
- package/es/components/virtual-list/src/components/fixed-size-list.d.ts +6 -6
- package/es/hooks/use-popper/index.d.ts +1 -1
- package/es/utils/vue/size.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/affix/src/affix.vue.d.ts +2 -2
- package/lib/components/alert/src/alert.d.ts +1 -1
- package/lib/components/anchor/src/anchor.d.ts +1 -1
- package/lib/components/anchor/src/anchor.vue.d.ts +1 -1
- package/lib/components/autocomplete/src/autocomplete.d.ts +4 -4
- package/lib/components/autocomplete/src/autocomplete.vue.d.ts +4 -4
- package/lib/components/avatar/src/avatar.d.ts +1 -1
- package/lib/components/avatar/src/avatar.vue.d.ts +1 -1
- package/lib/components/backtop/src/backtop.vue.d.ts +1 -1
- package/lib/components/badge/src/badge.d.ts +1 -1
- package/lib/components/badge/src/badge.vue.d.ts +1 -1
- package/lib/components/button/src/button-group.vue.d.ts +1 -1
- package/lib/components/button/src/button.d.ts +1 -1
- package/lib/components/button/src/button.vue.d.ts +4 -4
- package/lib/components/calendar/src/calendar.d.ts +1 -1
- package/lib/components/card/src/card.vue.d.ts +1 -1
- package/lib/components/carousel/src/carousel.d.ts +1 -1
- package/lib/components/carousel/src/carousel.vue.d.ts +2 -2
- package/lib/components/cascader/src/cascader.d.ts +3 -3
- package/lib/components/cascader/src/cascader.vue.d.ts +16 -16
- package/lib/components/cascader-panel/src/index.vue.d.ts +2 -2
- package/lib/components/cascader-panel/src/menu.vue.d.ts +1 -1
- package/lib/components/check-tag/src/check-tag.d.ts +1 -1
- package/lib/components/checkbox/src/checkbox-button.vue.d.ts +4 -4
- package/lib/components/checkbox/src/checkbox-group.vue.d.ts +1 -1
- package/lib/components/checkbox/src/checkbox.d.ts +8 -8
- package/lib/components/checkbox/src/checkbox.vue.d.ts +4 -4
- package/lib/components/col/src/col.vue.d.ts +1 -1
- package/lib/components/color-picker/src/color-picker.vue.d.ts +7 -7
- package/lib/components/color-picker-panel/src/color-picker-panel.vue.d.ts +1 -1
- package/lib/components/config-provider/src/hooks/use-global-config.d.ts +1 -1
- package/lib/components/date-picker/src/date-picker.d.ts +14 -14
- package/lib/components/date-picker/src/props.d.ts +2 -2
- package/lib/components/date-picker-panel/src/date-picker-panel.d.ts +6 -6
- package/lib/components/date-picker-panel/src/props/date-picker-panel.d.ts +1 -1
- package/lib/components/descriptions/src/description-item.d.ts +14 -14
- package/lib/components/descriptions/src/description.vue.d.ts +1 -1
- package/lib/components/dialog/src/dialog.vue.d.ts +4 -4
- package/lib/components/divider/src/divider.vue.d.ts +1 -1
- package/lib/components/drawer/src/drawer.vue.d.ts +5 -5
- package/lib/components/dropdown/src/dropdown-item.vue.d.ts +3 -3
- package/lib/components/dropdown/src/dropdown-menu.vue.d.ts +1 -1
- package/lib/components/dropdown/src/dropdown.d.ts +4 -4
- package/lib/components/dropdown/src/dropdown.vue.d.ts +69 -69
- package/lib/components/form/src/form.vue.d.ts +1 -1
- package/lib/components/image/src/image.vue.d.ts +5 -5
- package/lib/components/image-viewer/src/image-viewer.vue.d.ts +1 -1
- package/lib/components/input/src/input.d.ts +3 -3
- package/lib/components/input/src/input.vue.d.ts +16 -16
- package/lib/components/input-number/src/input-number.d.ts +2 -2
- package/lib/components/input-number/src/input-number.vue.d.ts +9 -9
- package/lib/components/input-otp/src/input-otp.vue.d.ts +6 -6
- package/lib/components/input-tag/src/input-tag.d.ts +2 -2
- package/lib/components/input-tag/src/input-tag.vue.d.ts +12 -12
- package/lib/components/link/src/link.d.ts +1 -1
- package/lib/components/link/src/link.vue.d.ts +1 -1
- package/lib/components/mention/src/mention.d.ts +3 -3
- package/lib/components/mention/src/mention.vue.d.ts +4 -4
- package/lib/components/menu/src/menu.d.ts +5 -5
- package/lib/components/menu/src/sub-menu.d.ts +1 -1
- package/lib/components/message/src/message.d.ts +1 -1
- package/lib/components/message/src/message.vue.d.ts +5 -5
- package/lib/components/notification/src/notification.d.ts +1 -1
- package/lib/components/notification/src/notification.vue.d.ts +5 -5
- package/lib/components/page-header/src/page-header.vue.d.ts +1 -1
- package/lib/components/pagination/src/pagination.d.ts +4 -4
- package/lib/components/popconfirm/src/popconfirm.d.ts +2 -2
- package/lib/components/popconfirm/src/popconfirm.vue.d.ts +2 -2
- package/lib/components/popover/src/popover.d.ts +2 -2
- package/lib/components/popover/src/popover.vue.d.ts +13 -13
- package/lib/components/popper/src/composables/use-content.d.ts +1 -1
- package/lib/components/popper/src/content.vue.d.ts +8 -8
- package/lib/components/popper/src/popper.d.ts +2 -2
- package/lib/components/progress/src/progress.d.ts +1 -1
- package/lib/components/progress/src/progress.vue.d.ts +3 -3
- package/lib/components/radio/src/radio-button.d.ts +3 -3
- package/lib/components/radio/src/radio-button.vue.d.ts +2 -2
- package/lib/components/radio/src/radio-group.vue.d.ts +4 -4
- package/lib/components/radio/src/radio.d.ts +6 -6
- package/lib/components/radio/src/radio.vue.d.ts +3 -3
- package/lib/components/rate/src/rate.vue.d.ts +1 -1
- package/lib/components/result/src/result.d.ts +1 -1
- package/lib/components/row/src/row.vue.d.ts +1 -1
- package/lib/components/scrollbar/src/scrollbar.vue.d.ts +4 -4
- package/lib/components/segmented/index.d.ts +2 -2
- package/lib/components/segmented/src/segmented.d.ts +1 -1
- package/lib/components/select/src/option.d.ts +2 -2
- package/lib/components/select/src/option.vue.d.ts +5 -5
- package/lib/components/select/src/select.d.ts +4 -4
- package/lib/components/select/src/select.vue.d.ts +82 -82
- package/lib/components/select-v2/src/defaults.d.ts +2 -2
- package/lib/components/select-v2/src/select.vue.d.ts +57 -57
- package/lib/components/skeleton/src/skeleton-item.d.ts +1 -1
- package/lib/components/skeleton/src/skeleton.vue.d.ts +1 -1
- package/lib/components/slider/src/button.vue.d.ts +1 -1
- package/lib/components/slider/src/slider.vue.d.ts +3 -3
- package/lib/components/space/src/space.d.ts +1 -1
- package/lib/components/statistic/src/statistic.vue.d.ts +2 -2
- package/lib/components/steps/src/item.d.ts +1 -1
- package/lib/components/steps/src/steps.d.ts +2 -2
- package/lib/components/steps/src/steps.vue.d.ts +2 -2
- package/lib/components/switch/src/switch.vue.d.ts +1 -1
- package/lib/components/table/src/config.js +1 -0
- package/lib/components/table/src/config.js.map +1 -1
- package/lib/components/table/src/store/index.d.ts +32 -0
- package/lib/components/table/src/store/index.js +1 -0
- package/lib/components/table/src/store/index.js.map +1 -1
- package/lib/components/table/src/store/tree.js +8 -2
- package/lib/components/table/src/store/tree.js.map +1 -1
- package/lib/components/table/src/store/watcher.js +187 -6
- package/lib/components/table/src/store/watcher.js.map +1 -1
- package/lib/components/table/src/table-column/index.d.ts +19 -19
- package/lib/components/table/src/table-footer/index.d.ts +1 -1
- package/lib/components/table/src/table-header/index.d.ts +13 -13
- package/lib/components/table/src/table.vue.d.ts +63 -47
- package/lib/components/table-v2/src/components/row.d.ts +1 -1
- package/lib/components/table-v2/src/table-grid.d.ts +3 -3
- package/lib/components/table-v2/src/table-v2.d.ts +3 -3
- package/lib/components/tabs/src/tab-nav.d.ts +1 -1
- package/lib/components/tabs/src/tabs.d.ts +2 -2
- package/lib/components/tag/src/tag.d.ts +1 -1
- package/lib/components/text/src/text.d.ts +1 -1
- package/lib/components/time-picker/src/common/picker.vue.d.ts +20 -20
- package/lib/components/time-picker/src/common/props.d.ts +2 -2
- package/lib/components/time-picker/src/time-picker.d.ts +14 -14
- package/lib/components/time-select/src/time-select.vue.d.ts +11 -11
- package/lib/components/timeline/src/timeline-item.d.ts +1 -1
- package/lib/components/timeline/src/timeline-item.vue.d.ts +1 -1
- package/lib/components/tooltip/src/content.vue.d.ts +8 -8
- package/lib/components/tooltip/src/tooltip.d.ts +2 -2
- package/lib/components/tooltip/src/tooltip.vue.d.ts +9 -9
- package/lib/components/tooltip/src/trigger.d.ts +1 -1
- package/lib/components/tour/src/tour.vue.d.ts +2 -2
- package/lib/components/tree/src/tree.vue.d.ts +25 -25
- package/lib/components/tree-select/src/tree-select.vue.d.ts +43 -43
- package/lib/components/tree-v2/src/tree.vue.d.ts +10 -10
- package/lib/components/upload/src/upload-content.d.ts +1 -1
- package/lib/components/upload/src/upload-content.vue.d.ts +2 -2
- package/lib/components/upload/src/upload-list.d.ts +1 -1
- package/lib/components/upload/src/upload.d.ts +2 -2
- package/lib/components/upload/src/upload.vue.d.ts +3 -3
- package/lib/components/virtual-list/src/builders/build-grid.d.ts +4 -4
- package/lib/components/virtual-list/src/components/dynamic-size-grid.d.ts +4 -4
- package/lib/components/virtual-list/src/components/dynamic-size-list.d.ts +6 -6
- package/lib/components/virtual-list/src/components/fixed-size-grid.d.ts +4 -4
- package/lib/components/virtual-list/src/components/fixed-size-list.d.ts +6 -6
- package/lib/hooks/use-popper/index.d.ts +1 -1
- package/lib/utils/vue/size.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +5 -5
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/index.ts"],"sourcesContent":["import { getCurrentInstance, nextTick, unref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport useWatcher from './watcher'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, Filter, Sort, Table } from '../table/defaults'\n\ninterface WatcherPropsData<T extends DefaultRow> {\n data: Ref<T[]>\n rowKey: Ref<string | null>\n}\n\nfunction replaceColumn<T extends DefaultRow>(\n array: TableColumnCtx<T>[],\n column: TableColumnCtx<T>\n) {\n return array.map((item) => {\n if (item.id === column.id) {\n return column\n } else if (item.children?.length) {\n item.children = replaceColumn(item.children, column)\n }\n return item\n })\n}\n\nfunction sortColumn<T extends DefaultRow>(array: TableColumnCtx<T>[]) {\n array.forEach((item) => {\n item.no = item.getColumnIndex?.()\n if (item.children?.length) {\n sortColumn(item.children)\n }\n })\n array.sort((cur, pre) => cur.no - pre.no)\n}\n\nfunction useStore<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const watcher = useWatcher<T>()\n const ns = useNamespace('table')\n const { t } = useLocale()\n\n type StoreStates = typeof watcher.states\n const mutations = {\n setData(states: StoreStates, data: T[]) {\n const dataInstanceChanged = unref(states._data) !== data\n states.data.value = data\n states._data.value = data\n instance.store.execQuery()\n // 数据变化,更新部分数据。\n // 没有使用 computed,而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n instance.store.updateCurrentRowData()\n instance.store.updateExpandRows()\n instance.store.updateTreeData(\n instance.store.states.defaultExpandAll.value\n )\n if (unref(states.reserveSelection)) {\n instance.store.assertRowKey()\n } else {\n if (dataInstanceChanged) {\n instance.store.clearSelection()\n } else {\n instance.store.cleanSelection()\n }\n }\n instance.store.updateAllSelected()\n if (instance.$ready) {\n instance.store.scheduleLayout()\n }\n },\n\n insertColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns)\n let newColumns = []\n if (!parent) {\n array.push(column)\n newColumns = array\n } else {\n if (parent && !parent.children) {\n parent.children = []\n }\n parent.children?.push(column)\n newColumns = replaceColumn(array, parent)\n }\n sortColumn(newColumns)\n states._columns.value = newColumns\n states.updateOrderFns.push(updateColumnOrder)\n if (column.type === 'selection') {\n states.selectable.value = column.selectable\n states.reserveSelection.value = column.reserveSelection\n }\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics insert column\n instance.store.scheduleLayout()\n }\n },\n\n updateColumnOrder(states: StoreStates, column: TableColumnCtx<T>) {\n const newColumnIndex = column.getColumnIndex?.()\n if (newColumnIndex === column.no) return\n\n sortColumn(states._columns.value)\n\n if (instance.$ready) {\n instance.store.updateColumns()\n }\n },\n\n removeColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns) || []\n if (parent) {\n parent.children?.splice(\n parent.children.findIndex((item) => item.id === column.id),\n 1\n )\n // fix #10699, delete parent.children immediately will trigger again\n nextTick(() => {\n if (parent.children?.length === 0) {\n delete parent.children\n }\n })\n states._columns.value = replaceColumn(array, parent)\n } else {\n const index = array.indexOf(column)\n if (index > -1) {\n array.splice(index, 1)\n states._columns.value = array\n }\n }\n\n const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder)\n updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1)\n\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics remove column\n instance.store.scheduleLayout()\n }\n },\n\n sort(states: StoreStates, options: Sort) {\n const { prop, order, init } = options\n if (prop) {\n const column = unref(states.columns).find(\n (column) => column.property === prop\n )\n if (column) {\n column.order = order\n instance.store.updateSort(column, prop, order)\n instance.store.commit('changeSortCondition', { init })\n }\n }\n },\n\n changeSortCondition(states: StoreStates, options: Sort) {\n // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n // https://github.com/element-plus/element-plus/pull/4640\n const { sortingColumn, sortProp, sortOrder } = states\n const columnValue = unref(sortingColumn),\n propValue = unref(sortProp),\n orderValue = unref(sortOrder)\n if (isNull(orderValue)) {\n states.sortingColumn.value = null\n states.sortProp.value = null\n }\n const ignore = { filter: true }\n instance.store.execQuery(ignore)\n\n if (!options || !(options.silent || options.init)) {\n instance.emit('sort-change', {\n column: columnValue,\n prop: propValue,\n order: orderValue,\n })\n }\n\n instance.store.updateTableScrollY()\n },\n\n filterChange(_states: StoreStates, options: Filter<T>) {\n const { column, values, silent } = options\n const newFilters = instance.store.updateFilters(column, values)\n instance.store.execQuery()\n\n if (!silent) {\n instance.emit('filter-change', newFilters)\n }\n instance.store.updateTableScrollY()\n },\n\n toggleAllSelection() {\n instance.store.toggleAllSelection?.()\n },\n\n rowSelectedChanged(_states: StoreStates, row: T) {\n instance.store.toggleRowSelection(row)\n instance.store.updateAllSelected()\n },\n\n setHoverRow(states: StoreStates, row: T) {\n states.hoverRow.value = row\n },\n\n setCurrentRow(_states: StoreStates, row: T) {\n instance.store.updateCurrentRow(row)\n },\n }\n const commit = function (name: keyof typeof mutations, ...args: any[]) {\n const mutations = instance.store.mutations\n if (mutations[name]) {\n ;(mutations[name] as any).apply(instance, [\n instance.store.states,\n ...args,\n ])\n } else {\n throw new Error(`Action not found: ${name}`)\n }\n }\n const updateTableScrollY = function () {\n nextTick(() => instance.layout.updateScrollY.apply(instance.layout))\n }\n return {\n ns,\n t,\n ...watcher,\n mutations,\n commit,\n updateTableScrollY,\n }\n}\n\nexport default useStore\n\nclass HelperStore<T extends DefaultRow> {\n Return = useStore<T>()\n}\n\ntype StoreFilter = Record<string, string[]>\ntype Store<T extends DefaultRow> = HelperStore<T>['Return']\nexport type { WatcherPropsData, Store, StoreFilter }\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/index.ts"],"sourcesContent":["import { getCurrentInstance, nextTick, unref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport useWatcher from './watcher'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, Filter, Sort, Table } from '../table/defaults'\n\ninterface WatcherPropsData<T extends DefaultRow> {\n data: Ref<T[]>\n rowKey: Ref<string | null>\n}\n\nfunction replaceColumn<T extends DefaultRow>(\n array: TableColumnCtx<T>[],\n column: TableColumnCtx<T>\n) {\n return array.map((item) => {\n if (item.id === column.id) {\n return column\n } else if (item.children?.length) {\n item.children = replaceColumn(item.children, column)\n }\n return item\n })\n}\n\nfunction sortColumn<T extends DefaultRow>(array: TableColumnCtx<T>[]) {\n array.forEach((item) => {\n item.no = item.getColumnIndex?.()\n if (item.children?.length) {\n sortColumn(item.children)\n }\n })\n array.sort((cur, pre) => cur.no - pre.no)\n}\n\nfunction useStore<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const watcher = useWatcher<T>()\n const ns = useNamespace('table')\n const { t } = useLocale()\n\n type StoreStates = typeof watcher.states\n const mutations = {\n setData(states: StoreStates, data: T[]) {\n const dataInstanceChanged = unref(states._data) !== data\n states.data.value = data\n states._data.value = data\n instance.store.execQuery()\n // 数据变化,更新部分数据。\n // 没有使用 computed,而是手动更新部分数据 https://github.com/vuejs/vue/issues/6660#issuecomment-331417140\n instance.store.updateCurrentRowData()\n instance.store.updateExpandRows()\n instance.store.updateTreeData(\n instance.store.states.defaultExpandAll.value\n )\n if (unref(states.reserveSelection)) {\n instance.store.assertRowKey()\n } else {\n if (dataInstanceChanged) {\n instance.store.clearSelection()\n } else {\n instance.store.cleanSelection()\n }\n }\n instance.store.updateSelectionByChildren({ emitChange: false })\n instance.store.updateAllSelected()\n if (instance.$ready) {\n instance.store.scheduleLayout()\n }\n },\n\n insertColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns)\n let newColumns = []\n if (!parent) {\n array.push(column)\n newColumns = array\n } else {\n if (parent && !parent.children) {\n parent.children = []\n }\n parent.children?.push(column)\n newColumns = replaceColumn(array, parent)\n }\n sortColumn(newColumns)\n states._columns.value = newColumns\n states.updateOrderFns.push(updateColumnOrder)\n if (column.type === 'selection') {\n states.selectable.value = column.selectable\n states.reserveSelection.value = column.reserveSelection\n }\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics insert column\n instance.store.scheduleLayout()\n }\n },\n\n updateColumnOrder(states: StoreStates, column: TableColumnCtx<T>) {\n const newColumnIndex = column.getColumnIndex?.()\n if (newColumnIndex === column.no) return\n\n sortColumn(states._columns.value)\n\n if (instance.$ready) {\n instance.store.updateColumns()\n }\n },\n\n removeColumn(\n states: StoreStates,\n column: TableColumnCtx<T>,\n parent: TableColumnCtx<T>,\n updateColumnOrder: () => void\n ) {\n const array = unref(states._columns) || []\n if (parent) {\n parent.children?.splice(\n parent.children.findIndex((item) => item.id === column.id),\n 1\n )\n // fix #10699, delete parent.children immediately will trigger again\n nextTick(() => {\n if (parent.children?.length === 0) {\n delete parent.children\n }\n })\n states._columns.value = replaceColumn(array, parent)\n } else {\n const index = array.indexOf(column)\n if (index > -1) {\n array.splice(index, 1)\n states._columns.value = array\n }\n }\n\n const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder)\n updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1)\n\n if (instance.$ready) {\n instance.store.updateColumns() // hack for dynamics remove column\n instance.store.scheduleLayout()\n }\n },\n\n sort(states: StoreStates, options: Sort) {\n const { prop, order, init } = options\n if (prop) {\n const column = unref(states.columns).find(\n (column) => column.property === prop\n )\n if (column) {\n column.order = order\n instance.store.updateSort(column, prop, order)\n instance.store.commit('changeSortCondition', { init })\n }\n }\n },\n\n changeSortCondition(states: StoreStates, options: Sort) {\n // 修复 pr https://github.com/ElemeFE/element/pull/15012 导致的 bug\n // https://github.com/element-plus/element-plus/pull/4640\n const { sortingColumn, sortProp, sortOrder } = states\n const columnValue = unref(sortingColumn),\n propValue = unref(sortProp),\n orderValue = unref(sortOrder)\n if (isNull(orderValue)) {\n states.sortingColumn.value = null\n states.sortProp.value = null\n }\n const ignore = { filter: true }\n instance.store.execQuery(ignore)\n\n if (!options || !(options.silent || options.init)) {\n instance.emit('sort-change', {\n column: columnValue,\n prop: propValue,\n order: orderValue,\n })\n }\n\n instance.store.updateTableScrollY()\n },\n\n filterChange(_states: StoreStates, options: Filter<T>) {\n const { column, values, silent } = options\n const newFilters = instance.store.updateFilters(column, values)\n instance.store.execQuery()\n\n if (!silent) {\n instance.emit('filter-change', newFilters)\n }\n instance.store.updateTableScrollY()\n },\n\n toggleAllSelection() {\n instance.store.toggleAllSelection?.()\n },\n\n rowSelectedChanged(_states: StoreStates, row: T) {\n instance.store.toggleRowSelection(row)\n instance.store.updateAllSelected()\n },\n\n setHoverRow(states: StoreStates, row: T) {\n states.hoverRow.value = row\n },\n\n setCurrentRow(_states: StoreStates, row: T) {\n instance.store.updateCurrentRow(row)\n },\n }\n const commit = function (name: keyof typeof mutations, ...args: any[]) {\n const mutations = instance.store.mutations\n if (mutations[name]) {\n ;(mutations[name] as any).apply(instance, [\n instance.store.states,\n ...args,\n ])\n } else {\n throw new Error(`Action not found: ${name}`)\n }\n }\n const updateTableScrollY = function () {\n nextTick(() => instance.layout.updateScrollY.apply(instance.layout))\n }\n return {\n ns,\n t,\n ...watcher,\n mutations,\n commit,\n updateTableScrollY,\n }\n}\n\nexport default useStore\n\nclass HelperStore<T extends DefaultRow> {\n Return = useStore<T>()\n}\n\ntype StoreFilter = Record<string, string[]>\ntype Store<T extends DefaultRow> = HelperStore<T>['Return']\nexport type { WatcherPropsData, Store, StoreFilter }\n"],"mappings":"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"}
|
|
@@ -151,7 +151,10 @@ function useTree(watcherData) {
|
|
|
151
151
|
treeData.value[key].loading = false;
|
|
152
152
|
treeData.value[key].loaded = true;
|
|
153
153
|
treeData.value[key].expanded = true;
|
|
154
|
-
if (data.length) lazyTreeNodeMap.value
|
|
154
|
+
if (data.length) lazyTreeNodeMap.value = {
|
|
155
|
+
...lazyTreeNodeMap.value,
|
|
156
|
+
[key]: data
|
|
157
|
+
};
|
|
155
158
|
instance.emit("expand-change", row, true);
|
|
156
159
|
});
|
|
157
160
|
}
|
|
@@ -160,7 +163,10 @@ function useTree(watcherData) {
|
|
|
160
163
|
const { lazy, rowKey } = instance.props;
|
|
161
164
|
if (!lazy) return;
|
|
162
165
|
if (!rowKey) throw new Error("[Table] rowKey is required in updateKeyChild");
|
|
163
|
-
if (lazyTreeNodeMap.value[key]) lazyTreeNodeMap.value
|
|
166
|
+
if (lazyTreeNodeMap.value[key]) lazyTreeNodeMap.value = {
|
|
167
|
+
...lazyTreeNodeMap.value,
|
|
168
|
+
[key]: data
|
|
169
|
+
};
|
|
164
170
|
};
|
|
165
171
|
return {
|
|
166
172
|
loadData,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/tree.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, unref, watch } from 'vue'\nimport { isArray, isUndefined } from '@element-plus/utils'\nimport { getRowIdentity, walkTreeNode } from '../util'\n\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table, TableProps, TreeNode } from '../table/defaults'\n\nexport interface TreeData extends TreeNode {\n children?: string[]\n lazy?: boolean\n loaded?: boolean\n}\n\nfunction useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n const expandRowKeys = ref<Array<string>>([])\n const treeData = ref<Record<string, TreeData>>({})\n const indent = ref(16)\n const lazy = ref(false)\n const lazyTreeNodeMap = ref<Record<string, T[]>>({})\n const lazyColumnIdentifier = ref('hasChildren')\n const childrenColumnName = ref('children')\n const checkStrictly = ref(false)\n const instance = getCurrentInstance() as Table<T>\n const normalizedData = computed(() => {\n if (!watcherData.rowKey.value) return {}\n const data = watcherData.data.value || []\n return normalize(data)\n })\n const normalizedLazyNode = computed(() => {\n const rowKey = watcherData.rowKey.value\n const keys = Object.keys(lazyTreeNodeMap.value)\n const res: Record<string, { children: string[] }> = {}\n if (!keys.length) return res\n keys.forEach((key) => {\n if (lazyTreeNodeMap.value[key].length) {\n const item: (typeof res)[number] = { children: [] }\n lazyTreeNodeMap.value[key].forEach((row) => {\n const currentRowKey = getRowIdentity(row, rowKey)\n item.children.push(currentRowKey)\n if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] }\n }\n })\n res[key] = item\n }\n })\n return res\n })\n\n const normalize = (data: T[]) => {\n const rowKey = watcherData.rowKey.value\n const res = {} as Record<string, TreeData>\n walkTreeNode(\n data,\n (parent, children, level) => {\n const parentId = getRowIdentity(parent, rowKey)\n if (isArray(children)) {\n res[parentId] = {\n children: children.map((row) => getRowIdentity(row, rowKey)),\n level,\n }\n } else if (lazy.value) {\n // 当 children 不存在且 lazy 为 true,该节点即为懒加载的节点\n res[parentId] = {\n children: [],\n lazy: true,\n level,\n }\n }\n },\n childrenColumnName.value,\n lazyColumnIdentifier.value,\n lazy.value\n )\n return res\n }\n\n const updateTreeData = (\n ifChangeExpandRowKeys = false,\n ifExpandAll?: boolean\n ) => {\n ifExpandAll ||= instance.store?.states.defaultExpandAll.value\n const nested = normalizedData.value\n const normalizedLazyNode_ = normalizedLazyNode.value\n const keys = Object.keys(nested)\n const newTreeData: Record<string, TreeData> = {}\n if (keys.length) {\n const oldTreeData = unref(treeData)\n const rootLazyRowKeys: string[] = []\n const getExpanded = (oldValue: TreeData, key: string) => {\n if (ifChangeExpandRowKeys) {\n if (expandRowKeys.value) {\n return ifExpandAll || expandRowKeys.value.includes(key)\n } else {\n return !!(ifExpandAll || oldValue?.expanded)\n }\n } else {\n const included =\n ifExpandAll ||\n (expandRowKeys.value && expandRowKeys.value.includes(key))\n return !!(oldValue?.expanded || included)\n }\n }\n // 合并 expanded 与 display,确保数据刷新后,状态不变\n keys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const newValue = { ...nested[key] }\n newValue.expanded = getExpanded(oldValue, key)\n if (newValue.lazy) {\n const { loaded = false, loading = false } = oldValue || {}\n newValue.loaded = !!loaded\n newValue.loading = !!loading\n rootLazyRowKeys.push(key)\n }\n newTreeData[key] = newValue\n })\n // 根据懒加载数据更新 treeData\n const lazyKeys = Object.keys(normalizedLazyNode_)\n if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const lazyNodeChildren = normalizedLazyNode_[key].children\n if (rootLazyRowKeys.includes(key)) {\n // 懒加载的 root 节点,更新一下原有的数据,原来的 children 一定是空数组\n if (newTreeData[key].children?.length !== 0) {\n throw new Error('[ElTable]children must be an empty array.')\n }\n newTreeData[key].children = lazyNodeChildren\n } else {\n const { loaded = false, loading = false } = oldValue || {}\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: undefined,\n }\n }\n })\n }\n }\n treeData.value = newTreeData\n instance.store?.updateTableScrollY()\n }\n\n watch(\n () => expandRowKeys.value,\n () => {\n updateTreeData(true)\n },\n { deep: true }\n )\n\n watch(\n () => normalizedData.value,\n () => {\n updateTreeData()\n }\n )\n watch(\n () => normalizedLazyNode.value,\n () => {\n updateTreeData()\n }\n )\n\n const updateTreeExpandKeys = (value: string[]) => {\n expandRowKeys.value = value\n updateTreeData()\n }\n const isUseLazy = (data: TreeData) => {\n return lazy.value && data && 'loaded' in data && !data.loaded\n }\n const toggleTreeExpansion = (row: T, expanded?: boolean) => {\n instance.store.assertRowKey()\n\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = id && treeData.value[id]\n if (id && data && 'expanded' in data) {\n const oldExpanded = data.expanded\n expanded = isUndefined(expanded) ? !data.expanded : expanded\n treeData.value[id].expanded = expanded\n if (oldExpanded !== expanded) {\n instance.emit('expand-change', row, expanded)\n }\n expanded && isUseLazy(data) && loadData(row, id, data)\n instance.store.updateTableScrollY()\n }\n }\n\n const loadOrToggle = (row: T) => {\n instance.store.assertRowKey()\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = treeData.value[id]\n if (isUseLazy(data)) {\n loadData(row, id, data)\n } else {\n toggleTreeExpansion(row, undefined)\n }\n }\n\n const loadData = (row: T, key: string, treeNode: TreeNode) => {\n const { load } = instance.props as unknown as TableProps<T>\n if (load && !treeData.value[key].loaded) {\n treeData.value[key].loading = true\n load(row, treeNode, (data) => {\n if (!isArray(data)) {\n throw new TypeError('[ElTable] data must be an array')\n }\n treeData.value[key].loading = false\n treeData.value[key].loaded = true\n treeData.value[key].expanded = true\n if (data.length) {\n lazyTreeNodeMap.value[key] = data\n }\n instance.emit('expand-change', row, true)\n })\n }\n }\n\n const updateKeyChildren = (key: string, data: T[]) => {\n const { lazy, rowKey } = instance.props as unknown as TableProps<T>\n if (!lazy) return\n if (!rowKey) throw new Error('[Table] rowKey is required in updateKeyChild')\n\n if (lazyTreeNodeMap.value[key]) {\n lazyTreeNodeMap.value[key] = data\n }\n }\n\n return {\n loadData,\n loadOrToggle,\n toggleTreeExpansion,\n updateTreeExpandKeys,\n updateTreeData,\n updateKeyChildren,\n normalize,\n states: {\n expandRowKeys,\n treeData,\n indent,\n lazy,\n lazyTreeNodeMap,\n lazyColumnIdentifier,\n childrenColumnName,\n checkStrictly,\n },\n }\n}\n\nexport default useTree\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/tree.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, unref, watch } from 'vue'\nimport { isArray, isUndefined } from '@element-plus/utils'\nimport { getRowIdentity, walkTreeNode } from '../util'\n\nimport type { WatcherPropsData } from '.'\nimport type { DefaultRow, Table, TableProps, TreeNode } from '../table/defaults'\n\nexport interface TreeData extends TreeNode {\n children?: string[]\n lazy?: boolean\n loaded?: boolean\n}\n\nfunction useTree<T extends DefaultRow>(watcherData: WatcherPropsData<T>) {\n const expandRowKeys = ref<Array<string>>([])\n const treeData = ref<Record<string, TreeData>>({})\n const indent = ref(16)\n const lazy = ref(false)\n const lazyTreeNodeMap = ref<Record<string, T[]>>({})\n const lazyColumnIdentifier = ref('hasChildren')\n const childrenColumnName = ref('children')\n const checkStrictly = ref(false)\n const instance = getCurrentInstance() as Table<T>\n const normalizedData = computed(() => {\n if (!watcherData.rowKey.value) return {}\n const data = watcherData.data.value || []\n return normalize(data)\n })\n const normalizedLazyNode = computed(() => {\n const rowKey = watcherData.rowKey.value\n const keys = Object.keys(lazyTreeNodeMap.value)\n const res: Record<string, { children: string[] }> = {}\n if (!keys.length) return res\n keys.forEach((key) => {\n if (lazyTreeNodeMap.value[key].length) {\n const item: (typeof res)[number] = { children: [] }\n lazyTreeNodeMap.value[key].forEach((row) => {\n const currentRowKey = getRowIdentity(row, rowKey)\n item.children.push(currentRowKey)\n if (row[lazyColumnIdentifier.value] && !res[currentRowKey]) {\n res[currentRowKey] = { children: [] }\n }\n })\n res[key] = item\n }\n })\n return res\n })\n\n const normalize = (data: T[]) => {\n const rowKey = watcherData.rowKey.value\n const res = {} as Record<string, TreeData>\n walkTreeNode(\n data,\n (parent, children, level) => {\n const parentId = getRowIdentity(parent, rowKey)\n if (isArray(children)) {\n res[parentId] = {\n children: children.map((row) => getRowIdentity(row, rowKey)),\n level,\n }\n } else if (lazy.value) {\n // 当 children 不存在且 lazy 为 true,该节点即为懒加载的节点\n res[parentId] = {\n children: [],\n lazy: true,\n level,\n }\n }\n },\n childrenColumnName.value,\n lazyColumnIdentifier.value,\n lazy.value\n )\n return res\n }\n\n const updateTreeData = (\n ifChangeExpandRowKeys = false,\n ifExpandAll?: boolean\n ) => {\n ifExpandAll ||= instance.store?.states.defaultExpandAll.value\n const nested = normalizedData.value\n const normalizedLazyNode_ = normalizedLazyNode.value\n const keys = Object.keys(nested)\n const newTreeData: Record<string, TreeData> = {}\n if (keys.length) {\n const oldTreeData = unref(treeData)\n const rootLazyRowKeys: string[] = []\n const getExpanded = (oldValue: TreeData, key: string) => {\n if (ifChangeExpandRowKeys) {\n if (expandRowKeys.value) {\n return ifExpandAll || expandRowKeys.value.includes(key)\n } else {\n return !!(ifExpandAll || oldValue?.expanded)\n }\n } else {\n const included =\n ifExpandAll ||\n (expandRowKeys.value && expandRowKeys.value.includes(key))\n return !!(oldValue?.expanded || included)\n }\n }\n // 合并 expanded 与 display,确保数据刷新后,状态不变\n keys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const newValue = { ...nested[key] }\n newValue.expanded = getExpanded(oldValue, key)\n if (newValue.lazy) {\n const { loaded = false, loading = false } = oldValue || {}\n newValue.loaded = !!loaded\n newValue.loading = !!loading\n rootLazyRowKeys.push(key)\n }\n newTreeData[key] = newValue\n })\n // 根据懒加载数据更新 treeData\n const lazyKeys = Object.keys(normalizedLazyNode_)\n if (lazy.value && lazyKeys.length && rootLazyRowKeys.length) {\n lazyKeys.forEach((key) => {\n const oldValue = oldTreeData[key]\n const lazyNodeChildren = normalizedLazyNode_[key].children\n if (rootLazyRowKeys.includes(key)) {\n // 懒加载的 root 节点,更新一下原有的数据,原来的 children 一定是空数组\n if (newTreeData[key].children?.length !== 0) {\n throw new Error('[ElTable]children must be an empty array.')\n }\n newTreeData[key].children = lazyNodeChildren\n } else {\n const { loaded = false, loading = false } = oldValue || {}\n newTreeData[key] = {\n lazy: true,\n loaded: !!loaded,\n loading: !!loading,\n expanded: getExpanded(oldValue, key),\n children: lazyNodeChildren,\n level: undefined,\n }\n }\n })\n }\n }\n treeData.value = newTreeData\n instance.store?.updateTableScrollY()\n }\n\n watch(\n () => expandRowKeys.value,\n () => {\n updateTreeData(true)\n },\n { deep: true }\n )\n\n watch(\n () => normalizedData.value,\n () => {\n updateTreeData()\n }\n )\n watch(\n () => normalizedLazyNode.value,\n () => {\n updateTreeData()\n }\n )\n\n const updateTreeExpandKeys = (value: string[]) => {\n expandRowKeys.value = value\n updateTreeData()\n }\n const isUseLazy = (data: TreeData) => {\n return lazy.value && data && 'loaded' in data && !data.loaded\n }\n const toggleTreeExpansion = (row: T, expanded?: boolean) => {\n instance.store.assertRowKey()\n\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = id && treeData.value[id]\n if (id && data && 'expanded' in data) {\n const oldExpanded = data.expanded\n expanded = isUndefined(expanded) ? !data.expanded : expanded\n treeData.value[id].expanded = expanded\n if (oldExpanded !== expanded) {\n instance.emit('expand-change', row, expanded)\n }\n expanded && isUseLazy(data) && loadData(row, id, data)\n instance.store.updateTableScrollY()\n }\n }\n\n const loadOrToggle = (row: T) => {\n instance.store.assertRowKey()\n const rowKey = watcherData.rowKey.value\n const id = getRowIdentity(row, rowKey)\n const data = treeData.value[id]\n if (isUseLazy(data)) {\n loadData(row, id, data)\n } else {\n toggleTreeExpansion(row, undefined)\n }\n }\n\n const loadData = (row: T, key: string, treeNode: TreeNode) => {\n const { load } = instance.props as unknown as TableProps<T>\n if (load && !treeData.value[key].loaded) {\n treeData.value[key].loading = true\n load(row, treeNode, (data) => {\n if (!isArray(data)) {\n throw new TypeError('[ElTable] data must be an array')\n }\n treeData.value[key].loading = false\n treeData.value[key].loaded = true\n treeData.value[key].expanded = true\n if (data.length) {\n lazyTreeNodeMap.value = { ...lazyTreeNodeMap.value, [key]: data }\n }\n instance.emit('expand-change', row, true)\n })\n }\n }\n\n const updateKeyChildren = (key: string, data: T[]) => {\n const { lazy, rowKey } = instance.props as unknown as TableProps<T>\n if (!lazy) return\n if (!rowKey) throw new Error('[Table] rowKey is required in updateKeyChild')\n\n if (lazyTreeNodeMap.value[key]) {\n lazyTreeNodeMap.value = { ...lazyTreeNodeMap.value, [key]: data }\n }\n }\n\n return {\n loadData,\n loadOrToggle,\n toggleTreeExpansion,\n updateTreeExpandKeys,\n updateTreeData,\n updateKeyChildren,\n normalize,\n states: {\n expandRowKeys,\n treeData,\n indent,\n lazy,\n lazyTreeNodeMap,\n lazyColumnIdentifier,\n childrenColumnName,\n checkStrictly,\n },\n }\n}\n\nexport default useTree\n"],"mappings":"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"}
|
|
@@ -42,6 +42,7 @@ function useWatcher() {
|
|
|
42
42
|
const rightFixedLeafColumnsLength = ref(0);
|
|
43
43
|
const isAllSelected = ref(false);
|
|
44
44
|
const selection = ref([]);
|
|
45
|
+
const selectionIndeterminate = ref({});
|
|
45
46
|
const reserveSelection = ref(false);
|
|
46
47
|
const selectOnIndeterminate = ref(false);
|
|
47
48
|
const selectable = ref(null);
|
|
@@ -55,6 +56,13 @@ function useWatcher() {
|
|
|
55
56
|
const selectedMap = computed(() => {
|
|
56
57
|
return rowKey.value ? getKeysMap(selection.value, rowKey.value) : void 0;
|
|
57
58
|
});
|
|
59
|
+
const getRowChildren = (row) => {
|
|
60
|
+
const { childrenColumnName, lazyTreeNodeMap } = instance.store.states;
|
|
61
|
+
const inlineChildren = row[childrenColumnName.value] ?? [];
|
|
62
|
+
if (!rowKey.value) return inlineChildren;
|
|
63
|
+
const id = getRowIdentity(row, rowKey.value);
|
|
64
|
+
return [...lazyTreeNodeMap.value?.[id] ?? [], ...inlineChildren];
|
|
65
|
+
};
|
|
58
66
|
watch(data, () => {
|
|
59
67
|
if (instance.state) {
|
|
60
68
|
scheduleLayout(false);
|
|
@@ -104,10 +112,109 @@ function useWatcher() {
|
|
|
104
112
|
if (selectedMap.value) return !!selectedMap.value[getRowIdentity(row, rowKey.value)];
|
|
105
113
|
else return selection.value.includes(row);
|
|
106
114
|
};
|
|
115
|
+
const rowIndexMap = computed(() => {
|
|
116
|
+
const map = /* @__PURE__ */ new Map();
|
|
117
|
+
if (!rowKey.value || !selectable.value) return map;
|
|
118
|
+
let index = 0;
|
|
119
|
+
const _traverse = (rows) => {
|
|
120
|
+
if (!isArray(rows)) return;
|
|
121
|
+
rows.forEach((row) => {
|
|
122
|
+
const id = getRowIdentity(row, rowKey.value);
|
|
123
|
+
map.set(id, index);
|
|
124
|
+
index += 1;
|
|
125
|
+
const children = getRowChildren(row);
|
|
126
|
+
if (children.length) _traverse(children);
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
_traverse(data.value || []);
|
|
130
|
+
return map;
|
|
131
|
+
});
|
|
132
|
+
const updateSelectionByChildren = (options = {}) => {
|
|
133
|
+
const { emitChange = true } = options;
|
|
134
|
+
if (treeStates.checkStrictly.value || !rowKey.value) {
|
|
135
|
+
selectionIndeterminate.value = {};
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const rowKeyValue = rowKey.value;
|
|
139
|
+
const rowIndexMapValue = options.rowIndexMap ?? rowIndexMap.value;
|
|
140
|
+
const selectableFn = selectable.value;
|
|
141
|
+
const rowIdCache = /* @__PURE__ */ new WeakMap();
|
|
142
|
+
const getCachedRowId = (row) => {
|
|
143
|
+
const cachedId = rowIdCache.get(row);
|
|
144
|
+
if (cachedId) return cachedId;
|
|
145
|
+
const id = getRowIdentity(row, rowKeyValue);
|
|
146
|
+
rowIdCache.set(row, id);
|
|
147
|
+
return id;
|
|
148
|
+
};
|
|
149
|
+
const indeterminateMap = {};
|
|
150
|
+
const selectedIdSet = new Set(selection.value.map((row) => getCachedRowId(row)));
|
|
151
|
+
const rowsToAdd = [];
|
|
152
|
+
let selectionChanged = false;
|
|
153
|
+
const _updateSelectionForRow = (row, id, selected) => {
|
|
154
|
+
const isRowSelected = selectedIdSet.has(id);
|
|
155
|
+
if (selected && !isRowSelected) {
|
|
156
|
+
rowsToAdd.push(row);
|
|
157
|
+
selectedIdSet.add(id);
|
|
158
|
+
selectionChanged = true;
|
|
159
|
+
} else if (!selected && isRowSelected) {
|
|
160
|
+
selectedIdSet.delete(id);
|
|
161
|
+
selectionChanged = true;
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
const _walk = (rows) => {
|
|
165
|
+
let selectedCount = 0;
|
|
166
|
+
let selectableCount = 0;
|
|
167
|
+
if (!isArray(rows)) return {
|
|
168
|
+
selectedCount,
|
|
169
|
+
selectableCount
|
|
170
|
+
};
|
|
171
|
+
rows.forEach((row) => {
|
|
172
|
+
const id = getCachedRowId(row);
|
|
173
|
+
const children = getRowChildren(row);
|
|
174
|
+
let childSelectedCount = 0;
|
|
175
|
+
let childSelectableCount = 0;
|
|
176
|
+
if (children.length) {
|
|
177
|
+
const childResult = _walk(children);
|
|
178
|
+
childSelectedCount = childResult.selectedCount;
|
|
179
|
+
childSelectableCount = childResult.selectableCount;
|
|
180
|
+
}
|
|
181
|
+
const rowSelectable = selectableFn ? selectableFn.call(null, row, rowIndexMapValue.get(id) ?? 0) : true;
|
|
182
|
+
if (rowSelectable) {
|
|
183
|
+
if (childSelectableCount > 0) {
|
|
184
|
+
const allSelected = childSelectedCount === childSelectableCount;
|
|
185
|
+
if (!allSelected && !(childSelectedCount === 0)) indeterminateMap[id] = true;
|
|
186
|
+
_updateSelectionForRow(row, id, allSelected);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (rowSelectable) {
|
|
190
|
+
selectableCount += 1;
|
|
191
|
+
if (selectedIdSet.has(id)) selectedCount += 1;
|
|
192
|
+
}
|
|
193
|
+
selectedCount += childSelectedCount;
|
|
194
|
+
selectableCount += childSelectableCount;
|
|
195
|
+
});
|
|
196
|
+
return {
|
|
197
|
+
selectedCount,
|
|
198
|
+
selectableCount
|
|
199
|
+
};
|
|
200
|
+
};
|
|
201
|
+
_walk(data.value || []);
|
|
202
|
+
if (selectionChanged) {
|
|
203
|
+
const nextSelection = selection.value.filter((row) => selectedIdSet.has(getCachedRowId(row)));
|
|
204
|
+
rowsToAdd.forEach((row) => {
|
|
205
|
+
if (!selectedIdSet.has(getCachedRowId(row))) return;
|
|
206
|
+
nextSelection.push(row);
|
|
207
|
+
});
|
|
208
|
+
selection.value = nextSelection;
|
|
209
|
+
}
|
|
210
|
+
selectionIndeterminate.value = indeterminateMap;
|
|
211
|
+
if (selectionChanged && emitChange) instance.emit("selection-change", selection.value ? selection.value.slice() : []);
|
|
212
|
+
};
|
|
107
213
|
const clearSelection = () => {
|
|
108
214
|
isAllSelected.value = false;
|
|
109
215
|
const oldSelection = selection.value;
|
|
110
216
|
selection.value = [];
|
|
217
|
+
selectionIndeterminate.value = {};
|
|
111
218
|
if (oldSelection.length) instance.emit("selection-change", []);
|
|
112
219
|
};
|
|
113
220
|
const cleanSelection = () => {
|
|
@@ -116,23 +223,58 @@ function useWatcher() {
|
|
|
116
223
|
deleted = [];
|
|
117
224
|
const childrenKey = instance?.store?.states?.childrenColumnName.value;
|
|
118
225
|
const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey);
|
|
226
|
+
const { lazyTreeNodeMap } = instance.store.states;
|
|
227
|
+
if (lazyTreeNodeMap.value) Object.entries(lazyTreeNodeMap.value).forEach(([parentId, lazyRows]) => {
|
|
228
|
+
if (dataMap[parentId]) lazyRows.forEach((row) => {
|
|
229
|
+
const id = getRowIdentity(row, rowKey.value);
|
|
230
|
+
if (!dataMap[id]) dataMap[id] = {
|
|
231
|
+
row,
|
|
232
|
+
index: -1
|
|
233
|
+
};
|
|
234
|
+
});
|
|
235
|
+
});
|
|
119
236
|
for (const key in selectedMap.value) if (hasOwn(selectedMap.value, key) && !dataMap[key]) deleted.push(selectedMap.value[key].row);
|
|
120
237
|
} else deleted = selection.value.filter((item) => !data.value.includes(item));
|
|
121
238
|
if (deleted.length) {
|
|
122
239
|
const newSelection = selection.value.filter((item) => !deleted.includes(item));
|
|
123
240
|
selection.value = newSelection;
|
|
124
|
-
|
|
241
|
+
updateSelectionByChildren({ emitChange: false });
|
|
242
|
+
instance.emit("selection-change", [...newSelection]);
|
|
125
243
|
}
|
|
126
244
|
};
|
|
127
245
|
const getSelectionRows = () => {
|
|
128
246
|
return (selection.value || []).slice();
|
|
129
247
|
};
|
|
248
|
+
const cascadeToLazyChildren = (row, selected, rowIndexMap) => {
|
|
249
|
+
if (!rowKey.value || treeStates.checkStrictly.value || !treeStates.lazy.value) return;
|
|
250
|
+
const { lazyTreeNodeMap, childrenColumnName } = instance.store.states;
|
|
251
|
+
const id = getRowIdentity(row, rowKey.value);
|
|
252
|
+
const lazyChildren = lazyTreeNodeMap.value?.[id] ?? [];
|
|
253
|
+
const inlineChildren = row[childrenColumnName.value] ?? [];
|
|
254
|
+
const treeProps = {
|
|
255
|
+
children: childrenColumnName.value,
|
|
256
|
+
checkStrictly: false
|
|
257
|
+
};
|
|
258
|
+
for (const child of lazyChildren) {
|
|
259
|
+
const childIndex = rowIndexMap.get(getRowIdentity(child, rowKey.value)) ?? 0;
|
|
260
|
+
toggleRowStatus(selection.value, child, selected, treeProps, selectable.value, childIndex, rowKey.value);
|
|
261
|
+
cascadeToLazyChildren(child, selected, rowIndexMap);
|
|
262
|
+
}
|
|
263
|
+
for (const child of inlineChildren) cascadeToLazyChildren(child, selected, rowIndexMap);
|
|
264
|
+
};
|
|
130
265
|
const toggleRowSelection = (row, selected, emitChange = true, ignoreSelectable = false) => {
|
|
131
266
|
const treeProps = {
|
|
132
267
|
children: instance?.store?.states?.childrenColumnName.value,
|
|
133
268
|
checkStrictly: instance?.store?.states?.checkStrictly.value
|
|
134
269
|
};
|
|
135
270
|
if (toggleRowStatus(selection.value, row, selected, treeProps, ignoreSelectable ? void 0 : selectable.value, data.value.indexOf(row), rowKey.value)) {
|
|
271
|
+
if (treeStates.lazy.value && !treeStates.checkStrictly.value) {
|
|
272
|
+
cascadeToLazyChildren(row, selected ?? isSelected(row), rowIndexMap.value);
|
|
273
|
+
updateSelectionByChildren({
|
|
274
|
+
emitChange: false,
|
|
275
|
+
rowIndexMap: rowIndexMap.value
|
|
276
|
+
});
|
|
277
|
+
} else updateSelectionByChildren({ emitChange: false });
|
|
136
278
|
const newSelection = (selection.value || []).slice();
|
|
137
279
|
if (emitChange) instance.emit("select", newSelection, row);
|
|
138
280
|
instance.emit("selection-change", newSelection);
|
|
@@ -154,7 +296,17 @@ function useWatcher() {
|
|
|
154
296
|
if (toggleRowStatus(selection.value, row, value, treeProps, selectable.value, rowIndex, rowKey)) selectionChanged = true;
|
|
155
297
|
childrenCount += getChildrenCount(getRowIdentity(row, rowKey));
|
|
156
298
|
});
|
|
157
|
-
|
|
299
|
+
const rowIndexMapVal = rowIndexMap.value;
|
|
300
|
+
if (treeStates.lazy.value && !treeStates.checkStrictly.value && rowKey) for (const lazyRows of Object.values(treeStates.lazyTreeNodeMap.value)) for (const child of lazyRows) {
|
|
301
|
+
const childIndex = rowIndexMapVal.get(getRowIdentity(child, rowKey)) ?? 0;
|
|
302
|
+
if (toggleRowStatus(selection.value, child, value, treeProps, selectable.value, childIndex, rowKey)) selectionChanged = true;
|
|
303
|
+
cascadeToLazyChildren(child, value, rowIndexMapVal);
|
|
304
|
+
}
|
|
305
|
+
updateSelectionByChildren({
|
|
306
|
+
emitChange: false,
|
|
307
|
+
rowIndexMap: rowIndexMapVal
|
|
308
|
+
});
|
|
309
|
+
if (selectionChanged) instance.emit("selection-change", selection.value ? [...selection.value] : []);
|
|
158
310
|
instance.emit("select-all", (selection.value || []).slice());
|
|
159
311
|
};
|
|
160
312
|
const updateAllSelected = () => {
|
|
@@ -162,23 +314,28 @@ function useWatcher() {
|
|
|
162
314
|
isAllSelected.value = false;
|
|
163
315
|
return;
|
|
164
316
|
}
|
|
165
|
-
const { childrenColumnName } = instance.store.states;
|
|
166
317
|
let rowIndex = 0;
|
|
167
318
|
let selectedCount = 0;
|
|
168
|
-
const checkSelectedStatus = (
|
|
169
|
-
for (const row of
|
|
319
|
+
const checkSelectedStatus = (rows) => {
|
|
320
|
+
for (const row of rows) {
|
|
170
321
|
const isRowSelectable = selectable.value && selectable.value.call(null, row, rowIndex);
|
|
171
322
|
if (!isSelected(row)) {
|
|
172
323
|
if (!selectable.value || isRowSelectable) return false;
|
|
173
324
|
} else selectedCount++;
|
|
174
325
|
rowIndex++;
|
|
175
|
-
|
|
326
|
+
const children = getRowChildren(row);
|
|
327
|
+
if (children.length && !checkSelectedStatus(children)) return false;
|
|
176
328
|
}
|
|
177
329
|
return true;
|
|
178
330
|
};
|
|
179
331
|
const isAllSelected_ = checkSelectedStatus(data.value || []);
|
|
180
332
|
isAllSelected.value = selectedCount === 0 ? false : isAllSelected_;
|
|
181
333
|
};
|
|
334
|
+
const getRowIndeterminate = (row) => {
|
|
335
|
+
if (!rowKey.value) return false;
|
|
336
|
+
const id = getRowIdentity(row, rowKey.value);
|
|
337
|
+
return !!selectionIndeterminate.value[id];
|
|
338
|
+
};
|
|
182
339
|
const getChildrenCount = (rowKey) => {
|
|
183
340
|
if (!instance || !instance.store) return 0;
|
|
184
341
|
const { treeData } = instance.store.states;
|
|
@@ -286,6 +443,27 @@ function useWatcher() {
|
|
|
286
443
|
if (columns.value.some(({ type }) => type === "expand")) toggleRowExpansion(row, expanded);
|
|
287
444
|
else toggleTreeExpansion(row, expanded);
|
|
288
445
|
};
|
|
446
|
+
watch(() => treeStates.checkStrictly.value, (value) => {
|
|
447
|
+
if (value) selectionIndeterminate.value = {};
|
|
448
|
+
else updateSelectionByChildren({ emitChange: false });
|
|
449
|
+
updateAllSelected();
|
|
450
|
+
});
|
|
451
|
+
watch(() => treeStates.lazyTreeNodeMap.value, () => {
|
|
452
|
+
if (!treeStates.lazy.value || treeStates.checkStrictly.value || !rowKey.value) return;
|
|
453
|
+
const rowIndexMapVal = rowIndexMap.value;
|
|
454
|
+
const prevLen = selection.value.length;
|
|
455
|
+
for (const parentId of Object.keys(treeStates.lazyTreeNodeMap.value)) {
|
|
456
|
+
if (!selectedMap.value?.[parentId]) continue;
|
|
457
|
+
cascadeToLazyChildren(selectedMap.value[parentId].row, true, rowIndexMapVal);
|
|
458
|
+
}
|
|
459
|
+
const cascadeChanged = selection.value.length !== prevLen;
|
|
460
|
+
updateSelectionByChildren({
|
|
461
|
+
emitChange: !cascadeChanged,
|
|
462
|
+
rowIndexMap: rowIndexMapVal
|
|
463
|
+
});
|
|
464
|
+
updateAllSelected();
|
|
465
|
+
if (cascadeChanged) instance.emit("selection-change", [...selection.value]);
|
|
466
|
+
});
|
|
289
467
|
return {
|
|
290
468
|
assertRowKey,
|
|
291
469
|
updateColumns,
|
|
@@ -298,6 +476,8 @@ function useWatcher() {
|
|
|
298
476
|
_toggleAllSelection,
|
|
299
477
|
toggleAllSelection: null,
|
|
300
478
|
updateAllSelected,
|
|
479
|
+
updateSelectionByChildren,
|
|
480
|
+
getRowIndeterminate,
|
|
301
481
|
updateFilters,
|
|
302
482
|
updateCurrentRow,
|
|
303
483
|
updateSort,
|
|
@@ -336,6 +516,7 @@ function useWatcher() {
|
|
|
336
516
|
rightFixedLeafColumnsLength,
|
|
337
517
|
isAllSelected,
|
|
338
518
|
selection,
|
|
519
|
+
selectionIndeterminate,
|
|
339
520
|
reserveSelection,
|
|
340
521
|
selectOnIndeterminate,
|
|
341
522
|
selectable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/watcher.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, toRefs, unref, watch } from 'vue'\nimport { ensureArray, hasOwn, isArray, isString } from '@element-plus/utils'\nimport {\n getColumnById,\n getColumnByKey,\n getKeysMap,\n getRowIdentity,\n orderBy,\n toggleRowStatus,\n} from '../util'\nimport useExpand from './expand'\nimport useCurrent from './current'\nimport useTree from './tree'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type {\n DefaultRow,\n Table,\n TableRefs,\n TableSortOrder,\n} from '../table/defaults'\nimport type { StoreFilter } from '.'\n\nconst sortData = <T extends DefaultRow>(\n data: T[],\n states: {\n sortingColumn: TableColumnCtx<T> | null\n sortProp: string | null\n sortOrder: string | number | null\n }\n) => {\n const sortingColumn = states.sortingColumn\n if (!sortingColumn || isString(sortingColumn.sortable)) {\n return data\n }\n return orderBy(\n data,\n states.sortProp,\n states.sortOrder,\n sortingColumn.sortMethod,\n sortingColumn.sortBy\n )\n}\n\nconst doFlattenColumns = <T extends DefaultRow>(\n columns: TableColumnCtx<T>[]\n) => {\n const result: TableColumnCtx<T>[] = []\n columns.forEach((column) => {\n if (column.children && column.children.length > 0) {\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, doFlattenColumns(column.children))\n } else {\n result.push(column)\n }\n })\n return result\n}\n\nfunction useWatcher<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const { size: tableSize } = toRefs(instance.proxy?.$props as any)\n const rowKey: Ref<string | null> = ref(null)\n const data: Ref<T[]> = ref([])\n const _data: Ref<T[]> = ref([])\n const isComplex = ref(false)\n const _columns: Ref<TableColumnCtx<T>[]> = ref([])\n const originColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const columns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const leafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const updateOrderFns: (() => void)[] = []\n const leafColumnsLength = ref(0)\n const fixedLeafColumnsLength = ref(0)\n const rightFixedLeafColumnsLength = ref(0)\n const isAllSelected = ref(false)\n const selection: Ref<T[]> = ref([])\n const reserveSelection = ref(false)\n const selectOnIndeterminate = ref(false)\n const selectable: Ref<((row: T, index: number) => boolean) | null> = ref(null)\n const rowExpandable: Ref<((row: T, index: number) => boolean) | null> =\n ref(null)\n const filters: Ref<StoreFilter> = ref({})\n const filteredData: Ref<T[] | null> = ref(null)\n const sortingColumn: Ref<TableColumnCtx<T> | null> = ref(null)\n const sortProp: Ref<string | null> = ref(null)\n const sortOrder: Ref<string | number | null> = ref(null)\n const hoverRow: Ref<T | null> = ref(null)\n\n const selectedMap = computed(() => {\n return rowKey.value ? getKeysMap(selection.value, rowKey.value) : undefined\n })\n\n watch(\n data,\n () => {\n if (instance.state) {\n scheduleLayout(false)\n const needUpdateFixed = instance.props.tableLayout === 'auto'\n if (needUpdateFixed) {\n instance.refs.tableHeaderRef?.updateFixedColumnStyle()\n }\n }\n },\n {\n deep: true,\n }\n )\n\n // 检查 rowKey 是否存在\n const assertRowKey = () => {\n if (!rowKey.value) throw new Error('[ElTable] prop row-key is required')\n }\n\n // 更新 fixed\n const updateChildFixed = (column: TableColumnCtx<T>) => {\n column.children?.forEach((childColumn) => {\n childColumn.fixed = column.fixed\n updateChildFixed(childColumn)\n })\n }\n\n // 更新列\n const updateColumns = () => {\n _columns.value.forEach((column) => {\n updateChildFixed(column)\n })\n fixedColumns.value = _columns.value.filter((column) =>\n [true, 'left'].includes(column.fixed)\n )\n\n const selectColumn = _columns.value.find(\n (column) => column.type === 'selection'\n )\n\n let selectColFixLeft: boolean\n if (\n selectColumn &&\n selectColumn.fixed !== 'right' &&\n !fixedColumns.value.includes(selectColumn)\n ) {\n const selectColumnIndex = _columns.value.indexOf(selectColumn)\n if (selectColumnIndex === 0 && fixedColumns.value.length) {\n fixedColumns.value.unshift(selectColumn)\n selectColFixLeft = true\n }\n }\n\n rightFixedColumns.value = _columns.value.filter(\n (column) => column.fixed === 'right'\n )\n\n const notFixedColumns = _columns.value.filter(\n (column) =>\n (selectColFixLeft ? column.type !== 'selection' : true) && !column.fixed\n )\n\n originColumns.value = Array.from(fixedColumns.value)\n .concat(notFixedColumns)\n .concat(rightFixedColumns.value)\n const leafColumns = doFlattenColumns(notFixedColumns)\n const fixedLeafColumns = doFlattenColumns(fixedColumns.value)\n const rightFixedLeafColumns = doFlattenColumns(rightFixedColumns.value)\n\n leafColumnsLength.value = leafColumns.length\n fixedLeafColumnsLength.value = fixedLeafColumns.length\n rightFixedLeafColumnsLength.value = rightFixedLeafColumns.length\n\n columns.value = Array.from(fixedLeafColumns)\n .concat(leafColumns)\n .concat(rightFixedLeafColumns)\n isComplex.value =\n fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0\n }\n\n // 更新 DOM\n const scheduleLayout = (needUpdateColumns?: boolean, immediate = false) => {\n if (needUpdateColumns) {\n updateColumns()\n }\n if (immediate) {\n instance.state.doLayout()\n } else {\n instance.state.debouncedUpdateLayout()\n }\n }\n\n // 选择\n const isSelected = (row: T) => {\n if (selectedMap.value) {\n return !!selectedMap.value[getRowIdentity(row, rowKey.value)]\n } else {\n return selection.value.includes(row)\n }\n }\n\n const clearSelection = () => {\n isAllSelected.value = false\n const oldSelection = selection.value\n selection.value = []\n if (oldSelection.length) {\n instance.emit('selection-change', [])\n }\n }\n\n const cleanSelection = () => {\n let deleted\n if (rowKey.value) {\n deleted = []\n const childrenKey = instance?.store?.states?.childrenColumnName.value\n const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey)\n for (const key in selectedMap.value) {\n if (hasOwn(selectedMap.value, key) && !dataMap[key]) {\n deleted.push(selectedMap.value[key].row)\n }\n }\n } else {\n deleted = selection.value.filter((item) => !data.value.includes(item))\n }\n if (deleted.length) {\n const newSelection = selection.value.filter(\n (item) => !deleted.includes(item)\n )\n selection.value = newSelection\n instance.emit('selection-change', newSelection.slice())\n }\n }\n\n const getSelectionRows = () => {\n return (selection.value || []).slice()\n }\n\n const toggleRowSelection = (\n row: T,\n selected?: boolean,\n emitChange = true,\n ignoreSelectable = false\n ) => {\n const treeProps = {\n children: instance?.store?.states?.childrenColumnName.value,\n checkStrictly: instance?.store?.states?.checkStrictly.value,\n }\n const changed = toggleRowStatus(\n selection.value,\n row,\n selected,\n treeProps,\n ignoreSelectable ? undefined : selectable.value,\n data.value.indexOf(row),\n rowKey.value\n )\n if (changed) {\n const newSelection = (selection.value || []).slice()\n // 调用 API 修改选中值,不触发 select 事件\n if (emitChange) {\n instance.emit('select', newSelection, row)\n }\n instance.emit('selection-change', newSelection)\n }\n }\n\n const _toggleAllSelection = () => {\n // when only some rows are selected (but not all), select or deselect all of them\n // depending on the value of selectOnIndeterminate\n const value = selectOnIndeterminate.value\n ? !isAllSelected.value\n : !(isAllSelected.value || selection.value.length)\n isAllSelected.value = value\n\n let selectionChanged = false\n let childrenCount = 0\n const rowKey = instance?.store?.states?.rowKey.value\n const { childrenColumnName } = instance.store.states\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false, // Disable checkStrictly when selecting all\n }\n\n data.value.forEach((row, index) => {\n const rowIndex = index + childrenCount\n if (\n toggleRowStatus(\n selection.value,\n row,\n value,\n treeProps,\n selectable.value,\n rowIndex,\n rowKey\n )\n ) {\n selectionChanged = true\n }\n childrenCount += getChildrenCount(getRowIdentity(row, rowKey))\n })\n\n if (selectionChanged) {\n instance.emit(\n 'selection-change',\n selection.value ? selection.value.slice() : []\n )\n }\n instance.emit('select-all', (selection.value || []).slice())\n }\n\n const updateAllSelected = () => {\n // data 为 null 时,解构时的默认值会被忽略\n if (data.value?.length === 0) {\n isAllSelected.value = false\n return\n }\n\n const { childrenColumnName } = instance.store.states\n let rowIndex = 0\n let selectedCount = 0\n\n const checkSelectedStatus = (data: T[]) => {\n for (const row of data) {\n const isRowSelectable =\n selectable.value && selectable.value.call(null, row, rowIndex)\n\n if (!isSelected(row)) {\n if (!selectable.value || isRowSelectable) {\n return false\n }\n } else {\n selectedCount++\n }\n rowIndex++\n\n if (\n row[childrenColumnName.value]?.length &&\n !checkSelectedStatus(row[childrenColumnName.value])\n ) {\n return false\n }\n }\n return true\n }\n\n const isAllSelected_ = checkSelectedStatus(data.value || [])\n isAllSelected.value = selectedCount === 0 ? false : isAllSelected_\n }\n\n const getChildrenCount = (rowKey: string) => {\n if (!instance || !instance.store) return 0\n const { treeData } = instance.store.states\n let count = 0\n const children = treeData.value[rowKey]?.children\n if (children) {\n count += children.length\n children.forEach((childKey) => {\n count += getChildrenCount(childKey)\n })\n }\n return count\n }\n\n // 过滤与排序\n const updateFilters = (column: TableColumnCtx<T>, values: string[]) => {\n const filters_: Record<string, string[]> = {}\n ensureArray(column).forEach((col) => {\n filters.value[col.id] = values\n filters_[col.columnKey || col.id] = values\n })\n return filters_\n }\n\n const updateSort = (\n column: TableColumnCtx<T> | null,\n prop: string | null,\n order: TableSortOrder | null\n ) => {\n if (sortingColumn.value && sortingColumn.value !== column) {\n sortingColumn.value.order = null\n }\n sortingColumn.value = column\n sortProp.value = prop\n sortOrder.value = order\n }\n\n const execFilter = () => {\n let sourceData = unref(_data)\n Object.keys(filters.value).forEach((columnId) => {\n const values = filters.value[columnId]\n if (!values || values.length === 0) return\n const column = getColumnById(\n {\n columns: columns.value,\n },\n columnId\n )\n if (column && column.filterMethod) {\n sourceData = sourceData.filter((row) => {\n return values.some((value) =>\n column.filterMethod.call(null, value, row, column)\n )\n })\n }\n })\n filteredData.value = sourceData\n }\n\n const execSort = () => {\n data.value = sortData(filteredData.value ?? [], {\n sortingColumn: sortingColumn.value,\n sortProp: sortProp.value,\n sortOrder: sortOrder.value,\n })\n }\n\n // 根据 filters 与 sort 去过滤 data\n const execQuery = (ignore: { filter: boolean } | undefined = undefined) => {\n if (!ignore?.filter) {\n execFilter()\n }\n execSort()\n }\n\n const clearFilter = (columnKeys?: string[] | string) => {\n const { tableHeaderRef } = instance.refs as TableRefs\n if (!tableHeaderRef) return\n const panels = Object.assign({}, tableHeaderRef.filterPanels)\n\n const keys = Object.keys(panels)\n if (!keys.length) return\n\n if (isString(columnKeys)) {\n columnKeys = [columnKeys]\n }\n\n if (isArray(columnKeys)) {\n const columns_ = columnKeys.map((key) =>\n getColumnByKey(\n {\n columns: columns.value,\n },\n key\n )\n )\n keys.forEach((key) => {\n const column = columns_.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n instance.store.commit('filterChange', {\n column: columns_,\n values: [],\n silent: true,\n multi: true,\n })\n } else {\n keys.forEach((key) => {\n const column = columns.value.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n\n filters.value = {}\n instance.store.commit('filterChange', {\n column: {},\n values: [],\n silent: true,\n })\n }\n }\n\n const clearSort = () => {\n if (!sortingColumn.value) return\n\n updateSort(null, null, null)\n instance.store.commit('changeSortCondition', {\n silent: true,\n })\n }\n const {\n setExpandRowKeys,\n toggleRowExpansion,\n updateExpandRows,\n states: expandStates,\n isRowExpanded,\n } = useExpand({\n data,\n rowKey,\n })\n const {\n updateTreeExpandKeys,\n toggleTreeExpansion,\n updateTreeData,\n updateKeyChildren,\n loadOrToggle,\n states: treeStates,\n } = useTree({\n data,\n rowKey,\n })\n const {\n updateCurrentRowData,\n updateCurrentRow,\n setCurrentRowKey,\n states: currentData,\n } = useCurrent({\n data,\n rowKey,\n })\n // 适配层,expand-row-keys 在 Expand 与 TreeTable 中都有使用\n const setExpandRowKeysAdapter = (val: string[]) => {\n // 这里会触发额外的计算,但为了兼容性,暂时这么做\n setExpandRowKeys(val)\n updateTreeExpandKeys(val)\n }\n\n // 展开行与 TreeTable 都要使用\n const toggleRowExpansionAdapter = (row: T, expanded?: boolean) => {\n const hasExpandColumn = columns.value.some(({ type }) => type === 'expand')\n if (hasExpandColumn) {\n toggleRowExpansion(row, expanded)\n } else {\n toggleTreeExpansion(row, expanded)\n }\n }\n\n return {\n assertRowKey,\n updateColumns,\n scheduleLayout,\n isSelected,\n clearSelection,\n cleanSelection,\n getSelectionRows,\n toggleRowSelection,\n _toggleAllSelection,\n toggleAllSelection: null as (() => void) | null,\n updateAllSelected,\n updateFilters,\n updateCurrentRow,\n updateSort,\n execFilter,\n execSort,\n execQuery,\n clearFilter,\n clearSort,\n toggleRowExpansion,\n setExpandRowKeysAdapter,\n setCurrentRowKey,\n toggleRowExpansionAdapter,\n isRowExpanded,\n updateExpandRows,\n updateCurrentRowData,\n loadOrToggle,\n updateTreeData,\n updateKeyChildren,\n states: {\n tableSize,\n rowKey,\n data,\n _data,\n isComplex,\n _columns,\n originColumns,\n columns,\n fixedColumns,\n rightFixedColumns,\n leafColumns,\n fixedLeafColumns,\n rightFixedLeafColumns,\n updateOrderFns,\n leafColumnsLength,\n fixedLeafColumnsLength,\n rightFixedLeafColumnsLength,\n isAllSelected,\n selection,\n reserveSelection,\n selectOnIndeterminate,\n selectable,\n rowExpandable,\n filters,\n filteredData,\n sortingColumn,\n sortProp,\n sortOrder,\n hoverRow,\n ...expandStates,\n ...treeStates,\n ...currentData,\n },\n }\n}\n\nexport default useWatcher\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"watcher.mjs","names":[],"sources":["../../../../../../../packages/components/table/src/store/watcher.ts"],"sourcesContent":["import { computed, getCurrentInstance, ref, toRefs, unref, watch } from 'vue'\nimport { ensureArray, hasOwn, isArray, isString } from '@element-plus/utils'\nimport {\n getColumnById,\n getColumnByKey,\n getKeysMap,\n getRowIdentity,\n orderBy,\n toggleRowStatus,\n} from '../util'\nimport useExpand from './expand'\nimport useCurrent from './current'\nimport useTree from './tree'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type {\n DefaultRow,\n Table,\n TableRefs,\n TableSortOrder,\n} from '../table/defaults'\nimport type { StoreFilter } from '.'\n\nconst sortData = <T extends DefaultRow>(\n data: T[],\n states: {\n sortingColumn: TableColumnCtx<T> | null\n sortProp: string | null\n sortOrder: string | number | null\n }\n) => {\n const sortingColumn = states.sortingColumn\n if (!sortingColumn || isString(sortingColumn.sortable)) {\n return data\n }\n return orderBy(\n data,\n states.sortProp,\n states.sortOrder,\n sortingColumn.sortMethod,\n sortingColumn.sortBy\n )\n}\n\nconst doFlattenColumns = <T extends DefaultRow>(\n columns: TableColumnCtx<T>[]\n) => {\n const result: TableColumnCtx<T>[] = []\n columns.forEach((column) => {\n if (column.children && column.children.length > 0) {\n // eslint-disable-next-line prefer-spread\n result.push.apply(result, doFlattenColumns(column.children))\n } else {\n result.push(column)\n }\n })\n return result\n}\n\nfunction useWatcher<T extends DefaultRow>() {\n const instance = getCurrentInstance() as Table<T>\n const { size: tableSize } = toRefs(instance.proxy?.$props as any)\n const rowKey: Ref<string | null> = ref(null)\n const data: Ref<T[]> = ref([])\n const _data: Ref<T[]> = ref([])\n const isComplex = ref(false)\n const _columns: Ref<TableColumnCtx<T>[]> = ref([])\n const originColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const columns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const leafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const fixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const rightFixedLeafColumns: Ref<TableColumnCtx<T>[]> = ref([])\n const updateOrderFns: (() => void)[] = []\n const leafColumnsLength = ref(0)\n const fixedLeafColumnsLength = ref(0)\n const rightFixedLeafColumnsLength = ref(0)\n const isAllSelected = ref(false)\n const selection: Ref<T[]> = ref([])\n const selectionIndeterminate = ref<Record<string, boolean>>({})\n const reserveSelection = ref(false)\n const selectOnIndeterminate = ref(false)\n const selectable: Ref<((row: T, index: number) => boolean) | null> = ref(null)\n const rowExpandable: Ref<((row: T, index: number) => boolean) | null> =\n ref(null)\n const filters: Ref<StoreFilter> = ref({})\n const filteredData: Ref<T[] | null> = ref(null)\n const sortingColumn: Ref<TableColumnCtx<T> | null> = ref(null)\n const sortProp: Ref<string | null> = ref(null)\n const sortOrder: Ref<string | number | null> = ref(null)\n const hoverRow: Ref<T | null> = ref(null)\n\n const selectedMap = computed(() => {\n return rowKey.value ? getKeysMap(selection.value, rowKey.value) : undefined\n })\n\n const getRowChildren = (row: T): T[] => {\n const { childrenColumnName, lazyTreeNodeMap } = instance.store.states\n const inlineChildren = (row[childrenColumnName.value] ?? []) as T[]\n if (!rowKey.value) return inlineChildren\n const id = getRowIdentity(row, rowKey.value)\n const lazyChildren = (lazyTreeNodeMap.value?.[id] ?? []) as T[]\n return [...lazyChildren, ...inlineChildren]\n }\n\n watch(\n data,\n () => {\n if (instance.state) {\n scheduleLayout(false)\n const needUpdateFixed = instance.props.tableLayout === 'auto'\n if (needUpdateFixed) {\n instance.refs.tableHeaderRef?.updateFixedColumnStyle()\n }\n }\n },\n {\n deep: true,\n }\n )\n\n const assertRowKey = () => {\n if (!rowKey.value) throw new Error('[ElTable] prop row-key is required')\n }\n\n const updateChildFixed = (column: TableColumnCtx<T>) => {\n column.children?.forEach((childColumn) => {\n childColumn.fixed = column.fixed\n updateChildFixed(childColumn)\n })\n }\n\n const updateColumns = () => {\n _columns.value.forEach((column) => {\n updateChildFixed(column)\n })\n fixedColumns.value = _columns.value.filter((column) =>\n [true, 'left'].includes(column.fixed)\n )\n\n const selectColumn = _columns.value.find(\n (column) => column.type === 'selection'\n )\n\n let selectColFixLeft: boolean\n if (\n selectColumn &&\n selectColumn.fixed !== 'right' &&\n !fixedColumns.value.includes(selectColumn)\n ) {\n const selectColumnIndex = _columns.value.indexOf(selectColumn)\n if (selectColumnIndex === 0 && fixedColumns.value.length) {\n fixedColumns.value.unshift(selectColumn)\n selectColFixLeft = true\n }\n }\n\n rightFixedColumns.value = _columns.value.filter(\n (column) => column.fixed === 'right'\n )\n\n const notFixedColumns = _columns.value.filter(\n (column) =>\n (selectColFixLeft ? column.type !== 'selection' : true) && !column.fixed\n )\n\n originColumns.value = Array.from(fixedColumns.value)\n .concat(notFixedColumns)\n .concat(rightFixedColumns.value)\n const leafColumns = doFlattenColumns(notFixedColumns)\n const fixedLeafColumns = doFlattenColumns(fixedColumns.value)\n const rightFixedLeafColumns = doFlattenColumns(rightFixedColumns.value)\n\n leafColumnsLength.value = leafColumns.length\n fixedLeafColumnsLength.value = fixedLeafColumns.length\n rightFixedLeafColumnsLength.value = rightFixedLeafColumns.length\n\n columns.value = Array.from(fixedLeafColumns)\n .concat(leafColumns)\n .concat(rightFixedLeafColumns)\n isComplex.value =\n fixedColumns.value.length > 0 || rightFixedColumns.value.length > 0\n }\n\n const scheduleLayout = (needUpdateColumns?: boolean, immediate = false) => {\n if (needUpdateColumns) {\n updateColumns()\n }\n if (immediate) {\n instance.state.doLayout()\n } else {\n instance.state.debouncedUpdateLayout()\n }\n }\n\n const isSelected = (row: T) => {\n if (selectedMap.value) {\n return !!selectedMap.value[getRowIdentity(row, rowKey.value)]\n } else {\n return selection.value.includes(row)\n }\n }\n\n // Used by selectable to compute row indices in tree-shaped data\n const rowIndexMap = computed(() => {\n const map = new Map<string, number>()\n if (!rowKey.value || !selectable.value) return map\n let index = 0\n const _traverse = (rows: T[]) => {\n if (!isArray(rows)) return\n rows.forEach((row) => {\n const id = getRowIdentity(row, rowKey.value)\n map.set(id, index)\n index += 1\n const children = getRowChildren(row)\n if (children.length) _traverse(children)\n })\n }\n _traverse(data.value || [])\n return map\n })\n\n // Update parent selection and indeterminate state based on children selection\n const updateSelectionByChildren = (\n options: {\n emitChange?: boolean\n rowIndexMap?: Map<string, number>\n } = {}\n ) => {\n const { emitChange = true } = options\n if (treeStates.checkStrictly.value || !rowKey.value) {\n selectionIndeterminate.value = {}\n return\n }\n const rowKeyValue = rowKey.value\n const rowIndexMapValue = options.rowIndexMap ?? rowIndexMap.value\n const selectableFn = selectable.value\n const rowIdCache = new WeakMap<T, string>()\n const getCachedRowId = (row: T) => {\n const cachedId = rowIdCache.get(row)\n if (cachedId) return cachedId\n const id = getRowIdentity(row, rowKeyValue)\n rowIdCache.set(row, id)\n return id\n }\n const indeterminateMap: Record<string, boolean> = {}\n const selectedIdSet = new Set(\n selection.value.map((row) => getCachedRowId(row))\n )\n const rowsToAdd: T[] = []\n let selectionChanged = false\n // Sync parent selection without triggering external select event\n const _updateSelectionForRow = (row: T, id: string, selected: boolean) => {\n const isRowSelected = selectedIdSet.has(id)\n if (selected && !isRowSelected) {\n rowsToAdd.push(row)\n selectedIdSet.add(id)\n selectionChanged = true\n } else if (!selected && isRowSelected) {\n selectedIdSet.delete(id)\n selectionChanged = true\n }\n }\n const _walk = (rows: T[]) => {\n let selectedCount = 0\n let selectableCount = 0\n if (!isArray(rows)) return { selectedCount, selectableCount }\n rows.forEach((row) => {\n const id = getCachedRowId(row)\n const children = getRowChildren(row)\n let childSelectedCount = 0\n let childSelectableCount = 0\n if (children.length) {\n const childResult = _walk(children)\n childSelectedCount = childResult.selectedCount\n childSelectableCount = childResult.selectableCount\n }\n const rowSelectable = selectableFn\n ? selectableFn.call(null, row, rowIndexMapValue.get(id) ?? 0)\n : true\n if (rowSelectable) {\n if (childSelectableCount > 0) {\n const allSelected = childSelectedCount === childSelectableCount\n const noneSelected = childSelectedCount === 0\n if (!allSelected && !noneSelected) {\n indeterminateMap[id] = true\n }\n _updateSelectionForRow(row, id, allSelected)\n }\n }\n if (rowSelectable) {\n selectableCount += 1\n if (selectedIdSet.has(id)) {\n selectedCount += 1\n }\n }\n selectedCount += childSelectedCount\n selectableCount += childSelectableCount\n })\n return { selectedCount, selectableCount }\n }\n _walk(data.value || [])\n if (selectionChanged) {\n const nextSelection = selection.value.filter((row) =>\n selectedIdSet.has(getCachedRowId(row))\n )\n rowsToAdd.forEach((row) => {\n if (!selectedIdSet.has(getCachedRowId(row))) return\n nextSelection.push(row)\n })\n selection.value = nextSelection\n }\n selectionIndeterminate.value = indeterminateMap\n if (selectionChanged && emitChange) {\n instance.emit(\n 'selection-change',\n selection.value ? selection.value.slice() : []\n )\n }\n }\n\n const clearSelection = () => {\n isAllSelected.value = false\n const oldSelection = selection.value\n selection.value = []\n selectionIndeterminate.value = {}\n if (oldSelection.length) {\n instance.emit('selection-change', [])\n }\n }\n\n const cleanSelection = () => {\n let deleted\n if (rowKey.value) {\n deleted = []\n const childrenKey = instance?.store?.states?.childrenColumnName.value\n const dataMap = getKeysMap(data.value, rowKey.value, true, childrenKey)\n // Include lazy-loaded children only if their parent is still in data\n const { lazyTreeNodeMap } = instance.store.states\n if (lazyTreeNodeMap.value) {\n Object.entries(lazyTreeNodeMap.value).forEach(\n ([parentId, lazyRows]) => {\n if (dataMap[parentId]) {\n ;(lazyRows as T[]).forEach((row) => {\n const id = getRowIdentity(row, rowKey.value)\n if (!dataMap[id]) {\n dataMap[id] = { row, index: -1 }\n }\n })\n }\n }\n )\n }\n for (const key in selectedMap.value) {\n if (hasOwn(selectedMap.value, key) && !dataMap[key]) {\n deleted.push(selectedMap.value[key].row)\n }\n }\n } else {\n deleted = selection.value.filter((item) => !data.value.includes(item))\n }\n if (deleted.length) {\n const newSelection = selection.value.filter(\n (item) => !deleted.includes(item)\n )\n selection.value = newSelection\n updateSelectionByChildren({ emitChange: false })\n instance.emit('selection-change', [...newSelection])\n }\n }\n\n const getSelectionRows = () => {\n return (selection.value || []).slice()\n }\n\n const cascadeToLazyChildren = (\n row: T,\n selected: boolean,\n rowIndexMap: Map<string, number>\n ) => {\n if (\n !rowKey.value ||\n treeStates.checkStrictly.value ||\n !treeStates.lazy.value\n )\n return\n const { lazyTreeNodeMap, childrenColumnName } = instance.store.states\n const id = getRowIdentity(row, rowKey.value)\n const lazyChildren = (lazyTreeNodeMap.value?.[id] ?? []) as T[]\n const inlineChildren = (row[childrenColumnName.value] ?? []) as T[]\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false,\n }\n\n for (const child of lazyChildren) {\n const childIndex =\n rowIndexMap.get(getRowIdentity(child, rowKey.value)) ?? 0\n toggleRowStatus(\n selection.value,\n child,\n selected,\n treeProps,\n selectable.value,\n childIndex,\n rowKey.value\n )\n // Recursively handle lazy children's inline descendants\n cascadeToLazyChildren(child, selected, rowIndexMap)\n }\n // Only recurse into inline children (lazy children handled above)\n for (const child of inlineChildren) {\n cascadeToLazyChildren(child, selected, rowIndexMap)\n }\n }\n\n const toggleRowSelection = (\n row: T,\n selected?: boolean,\n emitChange = true,\n ignoreSelectable = false\n ) => {\n const treeProps = {\n children: instance?.store?.states?.childrenColumnName.value,\n checkStrictly: instance?.store?.states?.checkStrictly.value,\n }\n const changed = toggleRowStatus(\n selection.value,\n row,\n selected,\n treeProps,\n ignoreSelectable ? undefined : selectable.value,\n data.value.indexOf(row),\n rowKey.value\n )\n if (changed) {\n // lazy mode and non-strict mode, sync lazy children selection status\n if (treeStates.lazy.value && !treeStates.checkStrictly.value) {\n const finalSelected = selected ?? isSelected(row)\n cascadeToLazyChildren(row, finalSelected, rowIndexMap.value)\n updateSelectionByChildren({\n emitChange: false,\n rowIndexMap: rowIndexMap.value,\n })\n } else {\n updateSelectionByChildren({ emitChange: false })\n }\n const newSelection = (selection.value || []).slice()\n // API call to modify selection, don't trigger select event\n if (emitChange) {\n instance.emit('select', newSelection, row)\n }\n instance.emit('selection-change', newSelection)\n }\n }\n\n const _toggleAllSelection = () => {\n // when only some rows are selected (but not all), select or deselect all of them\n // depending on the value of selectOnIndeterminate\n const value = selectOnIndeterminate.value\n ? !isAllSelected.value\n : !(isAllSelected.value || selection.value.length)\n isAllSelected.value = value\n\n let selectionChanged = false\n let childrenCount = 0\n const rowKey = instance?.store?.states?.rowKey.value\n const { childrenColumnName } = instance.store.states\n const treeProps = {\n children: childrenColumnName.value,\n checkStrictly: false, // Disable checkStrictly when selecting all\n }\n\n data.value.forEach((row, index) => {\n const rowIndex = index + childrenCount\n if (\n toggleRowStatus(\n selection.value,\n row,\n value,\n treeProps,\n selectable.value,\n rowIndex,\n rowKey\n )\n ) {\n selectionChanged = true\n }\n childrenCount += getChildrenCount(getRowIdentity(row, rowKey))\n })\n\n const rowIndexMapVal = rowIndexMap.value\n\n if (treeStates.lazy.value && !treeStates.checkStrictly.value && rowKey) {\n for (const lazyRows of Object.values(treeStates.lazyTreeNodeMap.value)) {\n for (const child of lazyRows as T[]) {\n const childIndex =\n rowIndexMapVal.get(getRowIdentity(child, rowKey)) ?? 0\n if (\n toggleRowStatus(\n selection.value,\n child,\n value,\n treeProps,\n selectable.value,\n childIndex,\n rowKey\n )\n )\n selectionChanged = true\n cascadeToLazyChildren(child, value, rowIndexMapVal)\n }\n }\n }\n\n updateSelectionByChildren({\n emitChange: false,\n rowIndexMap: rowIndexMapVal,\n })\n\n if (selectionChanged) {\n instance.emit(\n 'selection-change',\n selection.value ? [...selection.value] : []\n )\n }\n instance.emit('select-all', (selection.value || []).slice())\n }\n\n const updateAllSelected = () => {\n // When data is null, default values during destructuring are ignored\n if (data.value?.length === 0) {\n isAllSelected.value = false\n return\n }\n\n let rowIndex = 0\n let selectedCount = 0\n\n const checkSelectedStatus = (rows: T[]) => {\n for (const row of rows) {\n const isRowSelectable =\n selectable.value && selectable.value.call(null, row, rowIndex)\n\n if (!isSelected(row)) {\n if (!selectable.value || isRowSelectable) {\n return false\n }\n } else {\n selectedCount++\n }\n rowIndex++\n\n const children = getRowChildren(row)\n if (children.length && !checkSelectedStatus(children)) {\n return false\n }\n }\n return true\n }\n\n const isAllSelected_ = checkSelectedStatus(data.value || [])\n isAllSelected.value = selectedCount === 0 ? false : isAllSelected_\n }\n\n const getRowIndeterminate = (row: T) => {\n if (!rowKey.value) return false\n const id = getRowIdentity(row, rowKey.value)\n return !!selectionIndeterminate.value[id]\n }\n\n const getChildrenCount = (rowKey: string) => {\n if (!instance || !instance.store) return 0\n const { treeData } = instance.store.states\n let count = 0\n const children = treeData.value[rowKey]?.children\n if (children) {\n count += children.length\n children.forEach((childKey) => {\n count += getChildrenCount(childKey)\n })\n }\n return count\n }\n\n const updateFilters = (column: TableColumnCtx<T>, values: string[]) => {\n const filters_: Record<string, string[]> = {}\n ensureArray(column).forEach((col) => {\n filters.value[col.id] = values\n filters_[col.columnKey || col.id] = values\n })\n return filters_\n }\n\n const updateSort = (\n column: TableColumnCtx<T> | null,\n prop: string | null,\n order: TableSortOrder | null\n ) => {\n if (sortingColumn.value && sortingColumn.value !== column) {\n sortingColumn.value.order = null\n }\n sortingColumn.value = column\n sortProp.value = prop\n sortOrder.value = order\n }\n\n const execFilter = () => {\n let sourceData = unref(_data)\n Object.keys(filters.value).forEach((columnId) => {\n const values = filters.value[columnId]\n if (!values || values.length === 0) return\n const column = getColumnById(\n {\n columns: columns.value,\n },\n columnId\n )\n if (column && column.filterMethod) {\n sourceData = sourceData.filter((row) => {\n return values.some((value) =>\n column.filterMethod.call(null, value, row, column)\n )\n })\n }\n })\n filteredData.value = sourceData\n }\n\n const execSort = () => {\n data.value = sortData(filteredData.value ?? [], {\n sortingColumn: sortingColumn.value,\n sortProp: sortProp.value,\n sortOrder: sortOrder.value,\n })\n }\n\n // Filter and sort data based on filters and sort conditions\n const execQuery = (ignore: { filter: boolean } | undefined = undefined) => {\n if (!ignore?.filter) {\n execFilter()\n }\n execSort()\n }\n\n const clearFilter = (columnKeys?: string[] | string) => {\n const { tableHeaderRef } = instance.refs as TableRefs\n if (!tableHeaderRef) return\n const panels = Object.assign({}, tableHeaderRef.filterPanels)\n\n const keys = Object.keys(panels)\n if (!keys.length) return\n\n if (isString(columnKeys)) {\n columnKeys = [columnKeys]\n }\n\n if (isArray(columnKeys)) {\n const columns_ = columnKeys.map((key) =>\n getColumnByKey(\n {\n columns: columns.value,\n },\n key\n )\n )\n keys.forEach((key) => {\n const column = columns_.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n instance.store.commit('filterChange', {\n column: columns_,\n values: [],\n silent: true,\n multi: true,\n })\n } else {\n keys.forEach((key) => {\n const column = columns.value.find((col) => col.id === key)\n if (column) {\n column.filteredValue = []\n }\n })\n\n filters.value = {}\n instance.store.commit('filterChange', {\n column: {},\n values: [],\n silent: true,\n })\n }\n }\n\n const clearSort = () => {\n if (!sortingColumn.value) return\n\n updateSort(null, null, null)\n instance.store.commit('changeSortCondition', {\n silent: true,\n })\n }\n const {\n setExpandRowKeys,\n toggleRowExpansion,\n updateExpandRows,\n states: expandStates,\n isRowExpanded,\n } = useExpand({\n data,\n rowKey,\n })\n const {\n updateTreeExpandKeys,\n toggleTreeExpansion,\n updateTreeData,\n updateKeyChildren,\n loadOrToggle,\n states: treeStates,\n } = useTree({\n data,\n rowKey,\n })\n const {\n updateCurrentRowData,\n updateCurrentRow,\n setCurrentRowKey,\n states: currentData,\n } = useCurrent({\n data,\n rowKey,\n })\n // Adapter layer, expand-row-keys is used in both Expand and TreeTable\n const setExpandRowKeysAdapter = (val: string[]) => {\n // Triggers extra computation, but kept for compatibility\n setExpandRowKeys(val)\n updateTreeExpandKeys(val)\n }\n\n // Used for both expand rows and TreeTable\n const toggleRowExpansionAdapter = (row: T, expanded?: boolean) => {\n const hasExpandColumn = columns.value.some(({ type }) => type === 'expand')\n if (hasExpandColumn) {\n toggleRowExpansion(row, expanded)\n } else {\n toggleTreeExpansion(row, expanded)\n }\n }\n\n watch(\n () => treeStates.checkStrictly.value,\n (value) => {\n if (value) {\n selectionIndeterminate.value = {}\n } else {\n // Internal sync when switching strict mode, avoid triggering selection-change\n updateSelectionByChildren({ emitChange: false })\n }\n updateAllSelected()\n }\n )\n\n watch(\n () => treeStates.lazyTreeNodeMap.value,\n () => {\n if (\n !treeStates.lazy.value ||\n treeStates.checkStrictly.value ||\n !rowKey.value\n )\n return\n const rowIndexMapVal = rowIndexMap.value\n const prevLen = selection.value.length\n\n for (const parentId of Object.keys(treeStates.lazyTreeNodeMap.value)) {\n if (!selectedMap.value?.[parentId]) continue\n cascadeToLazyChildren(\n selectedMap.value[parentId].row,\n true,\n rowIndexMapVal\n )\n }\n\n const cascadeChanged = selection.value.length !== prevLen\n updateSelectionByChildren({\n emitChange: !cascadeChanged,\n rowIndexMap: rowIndexMapVal,\n })\n updateAllSelected()\n if (cascadeChanged) {\n instance.emit('selection-change', [...selection.value])\n }\n }\n )\n\n return {\n assertRowKey,\n updateColumns,\n scheduleLayout,\n isSelected,\n clearSelection,\n cleanSelection,\n getSelectionRows,\n toggleRowSelection,\n _toggleAllSelection,\n toggleAllSelection: null as (() => void) | null,\n updateAllSelected,\n updateSelectionByChildren,\n getRowIndeterminate,\n updateFilters,\n updateCurrentRow,\n updateSort,\n execFilter,\n execSort,\n execQuery,\n clearFilter,\n clearSort,\n toggleRowExpansion,\n setExpandRowKeysAdapter,\n setCurrentRowKey,\n toggleRowExpansionAdapter,\n isRowExpanded,\n updateExpandRows,\n updateCurrentRowData,\n loadOrToggle,\n updateTreeData,\n updateKeyChildren,\n states: {\n tableSize,\n rowKey,\n data,\n _data,\n isComplex,\n _columns,\n originColumns,\n columns,\n fixedColumns,\n rightFixedColumns,\n leafColumns,\n fixedLeafColumns,\n rightFixedLeafColumns,\n updateOrderFns,\n leafColumnsLength,\n fixedLeafColumnsLength,\n rightFixedLeafColumnsLength,\n isAllSelected,\n selection,\n selectionIndeterminate,\n reserveSelection,\n selectOnIndeterminate,\n selectable,\n rowExpandable,\n filters,\n filteredData,\n sortingColumn,\n sortProp,\n sortOrder,\n hoverRow,\n ...expandStates,\n ...treeStates,\n ...currentData,\n },\n }\n}\n\nexport default useWatcher\n"],"mappings":"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AEjC,qBAAoB,KAAK,SAAS;;AAItC,aACQ,WAAW,cAAc,QAC9B,UAAU;AACT,MAAI,MACF,wBAAuB,QAAQ,EAAE;MAGjC,2BAA0B,EAAE,YAAY,OAAO,CAAC;AAElD,qBAAmB;GAEtB;AAED,aACQ,WAAW,gBAAgB,aAC3B;AACJ,MACE,CAAC,WAAW,KAAK,SACjB,WAAW,cAAc,SACzB,CAAC,OAAO,MAER;EACF,MAAM,iBAAiB,YAAY;EACnC,MAAM,UAAU,UAAU,MAAM;AAEhC,OAAK,MAAM,YAAY,OAAO,KAAK,WAAW,gBAAgB,MAAM,EAAE;AACpE,OAAI,CAAC,YAAY,QAAQ,UAAW;AACpC,yBACE,YAAY,MAAM,UAAU,KAC5B,MACA,eACD;;EAGH,MAAM,iBAAiB,UAAU,MAAM,WAAW;AAClD,4BAA0B;GACxB,YAAY,CAAC;GACb,aAAa;GACd,CAAC;AACF,qBAAmB;AACnB,MAAI,eACF,UAAS,KAAK,oBAAoB,CAAC,GAAG,UAAU,MAAM,CAAC;GAG5D;AAED,QAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,oBAAoB;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQ;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,GAAG;GACH,GAAG;GACH,GAAG;GACJ;EACF"}
|