pro-design-vue 1.3.16 → 1.3.18

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.
Files changed (111) hide show
  1. package/dist/index.full.js +109 -84
  2. package/dist/index.full.min.js +8 -8
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +8 -8
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +109 -84
  7. package/es/components/table/src/components/AutoHeightHeader/Header.vue.d.ts +4 -2
  8. package/es/components/table/src/components/AutoHeightHeader/HeaderRow.vue.d.ts +4 -2
  9. package/es/components/table/src/components/ColumnSetting/CheckboxList.vue.d.ts +1 -0
  10. package/es/components/table/src/components/ColumnSetting/CheckboxListItem.vue.d.ts +1 -0
  11. package/es/components/table/src/components/ColumnSetting/ColumnSetting.vue.d.ts +1 -0
  12. package/es/components/table/src/components/ColumnSetting/GroupCheckboxList.vue.d.ts +1 -0
  13. package/es/components/table/src/components/Filter/FilterDropdown.vue.d.ts +1 -1
  14. package/es/components/table/src/components/Header/Header.vue.d.ts +5 -2
  15. package/es/components/table/src/components/Header/HeaderCell.vue.d.ts +3 -1
  16. package/es/components/table/src/components/Header/HeaderCellTitle.vue.d.ts +1 -0
  17. package/es/components/table/src/components/Header/HeaderExtraCell.vue.d.ts +1 -1
  18. package/es/components/table/src/components/Header/HeaderGroupCell.vue.d.ts +1 -0
  19. package/es/components/table/src/components/Header/HeaderRows.vue.d.ts +5 -2
  20. package/es/components/table/src/components/Header/HeaderRowsWrap.vue.d.ts +5 -2
  21. package/es/components/table/src/components/Header/Sorter.vue.d.ts +1 -0
  22. package/es/components/table/src/components/InteralTable.vue.d.ts +9 -4
  23. package/es/components/table/src/components/ToolBar/ToolBar.vue.d.ts +1 -0
  24. package/es/components/table/src/components/interface.d.ts +1 -0
  25. package/es/index.d.ts +1 -0
  26. package/es/packages/components/form/src/components/FormTitle.mjs +6 -1
  27. package/es/packages/components/form/src/components/FormTitle.mjs.map +1 -1
  28. package/es/packages/components/form/src/fields/FieldReadonly.mjs +5 -1
  29. package/es/packages/components/form/src/fields/FieldReadonly.mjs.map +1 -1
  30. package/es/packages/components/form/src/layouts/QueryFilter.mjs +6 -0
  31. package/es/packages/components/form/src/layouts/QueryFilter.mjs.map +1 -1
  32. package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.mjs +8 -5
  33. package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.mjs.map +1 -1
  34. package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.mjs +5 -1
  35. package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.mjs.map +1 -1
  36. package/es/packages/components/table/src/components/Filter/FilterDropdown.vue.mjs.map +1 -1
  37. package/es/packages/components/table/src/components/Filter/FilterDropdown.vue2.mjs +3 -6
  38. package/es/packages/components/table/src/components/Filter/FilterDropdown.vue2.mjs.map +1 -1
  39. package/es/packages/components/table/src/components/Header/HeaderCell.vue.mjs +20 -26
  40. package/es/packages/components/table/src/components/Header/HeaderCell.vue.mjs.map +1 -1
  41. package/es/packages/components/table/src/components/Header/HeaderCell.vue2.mjs +4 -0
  42. package/es/packages/components/table/src/components/Header/HeaderCell.vue2.mjs.map +1 -1
  43. package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue.mjs +29 -32
  44. package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue.mjs.map +1 -1
  45. package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue2.mjs +4 -0
  46. package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue2.mjs.map +1 -1
  47. package/es/packages/components/table/src/components/Header/HeaderExtraCell.vue.mjs.map +1 -1
  48. package/es/packages/components/table/src/components/Header/HeaderExtraCell.vue2.mjs +3 -1
  49. package/es/packages/components/table/src/components/Header/HeaderExtraCell.vue2.mjs.map +1 -1
  50. package/es/packages/components/table/src/components/Table.mjs +7 -1
  51. package/es/packages/components/table/src/components/Table.mjs.map +1 -1
  52. package/es/packages/components/table/src/components/ToolBar/ToolBar.vue.mjs +10 -10
  53. package/es/packages/components/table/src/components/ToolBar/ToolBar.vue.mjs.map +1 -1
  54. package/es/packages/components/table/src/components/ToolBar/ToolBar.vue2.mjs.map +1 -1
  55. package/es/packages/components/table/src/components/interface.mjs.map +1 -1
  56. package/es/version.d.ts +1 -1
  57. package/es/version.mjs +1 -1
  58. package/es/version.mjs.map +1 -1
  59. package/lib/components/table/src/components/AutoHeightHeader/Header.vue.d.ts +4 -2
  60. package/lib/components/table/src/components/AutoHeightHeader/HeaderRow.vue.d.ts +4 -2
  61. package/lib/components/table/src/components/ColumnSetting/CheckboxList.vue.d.ts +1 -0
  62. package/lib/components/table/src/components/ColumnSetting/CheckboxListItem.vue.d.ts +1 -0
  63. package/lib/components/table/src/components/ColumnSetting/ColumnSetting.vue.d.ts +1 -0
  64. package/lib/components/table/src/components/ColumnSetting/GroupCheckboxList.vue.d.ts +1 -0
  65. package/lib/components/table/src/components/Filter/FilterDropdown.vue.d.ts +1 -1
  66. package/lib/components/table/src/components/Header/Header.vue.d.ts +5 -2
  67. package/lib/components/table/src/components/Header/HeaderCell.vue.d.ts +3 -1
  68. package/lib/components/table/src/components/Header/HeaderCellTitle.vue.d.ts +1 -0
  69. package/lib/components/table/src/components/Header/HeaderExtraCell.vue.d.ts +1 -1
  70. package/lib/components/table/src/components/Header/HeaderGroupCell.vue.d.ts +1 -0
  71. package/lib/components/table/src/components/Header/HeaderRows.vue.d.ts +5 -2
  72. package/lib/components/table/src/components/Header/HeaderRowsWrap.vue.d.ts +5 -2
  73. package/lib/components/table/src/components/Header/Sorter.vue.d.ts +1 -0
  74. package/lib/components/table/src/components/InteralTable.vue.d.ts +9 -4
  75. package/lib/components/table/src/components/ToolBar/ToolBar.vue.d.ts +1 -0
  76. package/lib/components/table/src/components/interface.d.ts +1 -0
  77. package/lib/index.d.ts +1 -0
  78. package/lib/packages/components/form/src/components/FormTitle.js +6 -1
  79. package/lib/packages/components/form/src/components/FormTitle.js.map +1 -1
  80. package/lib/packages/components/form/src/fields/FieldReadonly.js +5 -1
  81. package/lib/packages/components/form/src/fields/FieldReadonly.js.map +1 -1
  82. package/lib/packages/components/form/src/layouts/QueryFilter.js +6 -0
  83. package/lib/packages/components/form/src/layouts/QueryFilter.js.map +1 -1
  84. package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.js +8 -5
  85. package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.js.map +1 -1
  86. package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.js +5 -1
  87. package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.js.map +1 -1
  88. package/lib/packages/components/table/src/components/Filter/FilterDropdown.vue.js.map +1 -1
  89. package/lib/packages/components/table/src/components/Filter/FilterDropdown.vue2.js +3 -6
  90. package/lib/packages/components/table/src/components/Filter/FilterDropdown.vue2.js.map +1 -1
  91. package/lib/packages/components/table/src/components/Header/HeaderCell.vue.js +19 -25
  92. package/lib/packages/components/table/src/components/Header/HeaderCell.vue.js.map +1 -1
  93. package/lib/packages/components/table/src/components/Header/HeaderCell.vue2.js +4 -0
  94. package/lib/packages/components/table/src/components/Header/HeaderCell.vue2.js.map +1 -1
  95. package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue.js +28 -31
  96. package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue.js.map +1 -1
  97. package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue2.js +4 -0
  98. package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue2.js.map +1 -1
  99. package/lib/packages/components/table/src/components/Header/HeaderExtraCell.vue.js.map +1 -1
  100. package/lib/packages/components/table/src/components/Header/HeaderExtraCell.vue2.js +3 -1
  101. package/lib/packages/components/table/src/components/Header/HeaderExtraCell.vue2.js.map +1 -1
  102. package/lib/packages/components/table/src/components/Table.js +7 -1
  103. package/lib/packages/components/table/src/components/Table.js.map +1 -1
  104. package/lib/packages/components/table/src/components/ToolBar/ToolBar.vue.js +10 -10
  105. package/lib/packages/components/table/src/components/ToolBar/ToolBar.vue.js.map +1 -1
  106. package/lib/packages/components/table/src/components/ToolBar/ToolBar.vue2.js.map +1 -1
  107. package/lib/packages/components/table/src/components/interface.js.map +1 -1
  108. package/lib/version.d.ts +1 -1
  109. package/lib/version.js +1 -1
  110. package/lib/version.js.map +1 -1
  111. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FilterDropdown.vue2.js","sources":["../../../../../../../../../packages/components/table/src/components/Filter/FilterDropdown.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-07 21:51:35\n * @LastEditors: shen\n * @LastEditTime: 2025-07-30 10:38:03\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { FinallyColumnType, DefaultRecordType, Key, FilterConfirmProps } from '../interface'\n\nimport { defineComponent, ref, computed, watch, onUnmounted } from 'vue'\nimport { Dropdown } from 'ant-design-vue'\nimport { FilterFilled } from '@ant-design/icons-vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { isEqual, RenderVNode } from '@pro-design-vue/utils'\nimport { ProButton } from '../../../../button'\nimport eagerComputed from '../../utils/eagerComputed'\nimport FilterWrapper from './FilterWrapper'\nimport FilterItems from './FilterItems.vue'\nimport devWarning from '../../utils/devWarning'\n\nexport default defineComponent({\n name: 'FilterDropdown',\n components: {\n FilterFilled,\n Dropdown,\n FilterItems,\n ProButton,\n RenderVNode,\n FilterWrapper,\n },\n inheritAttrs: false,\n props: {\n prefixCls: { type: String, default: '' },\n column: { type: Object as PropType<FinallyColumnType<DefaultRecordType>>, required: true },\n },\n setup(props) {\n const tableContext = useInjectTable()\n const tableSlotsContext = useInjectSlots()\n\n const filteredKeys = ref<Key[]>([])\n const openKeys = ref<string[]>([])\n const dropdownPrefixCls = computed(() => tableContext.props.dropdownPrefixCls || 'ant-dropdown')\n const columnKey = computed(() => props.column.columnKey)\n const filterStates = computed(() => tableContext.filterStates.value)\n const filterState = computed(() =>\n filterStates.value.find(({ key }) => columnKey.value === key),\n )\n\n watch(\n filterState,\n () => {\n filteredKeys.value = filterState.value?.filteredKeys || []\n },\n { immediate: true },\n )\n\n const getPopupContainer = computed(\n () => props.column?.getPopupContainer ?? tableContext.props.getPopupContainer,\n )\n\n const showFilterDropdown = ref(false)\n\n devWarning(\n !('onFilterDropdownVisibleChange' in props.column),\n '@table',\n 'column.onFilterDropdownVisibleChange is deprecated. Please use column.onFilterDropdownOpenChange instead.',\n )\n devWarning(\n !('filterDropdownVisible' in props.column),\n '@table',\n 'column.filterDropdownVisible is deprecated. Please use column.filterDropdownOpen instead.',\n )\n\n const triggerOpen = (open: boolean) => {\n showFilterDropdown.value = open\n const { onFilterDropdownOpenChange, onFilterDropdownVisibleChange } = props.column || {}\n const onOpenChange = onFilterDropdownOpenChange || onFilterDropdownVisibleChange\n onOpenChange?.(open)\n }\n\n const mergedOpen = eagerComputed(() => {\n const { filterDropdownVisible, filterDropdownOpen } = props.column || {}\n const open = filterDropdownOpen ?? filterDropdownVisible\n return typeof open == 'boolean' ? open : showFilterDropdown.value\n })\n\n let openKeysTimer = 0\n const onOpenChange = (keys: string[]) => {\n openKeysTimer = window.setTimeout(() => {\n openKeys.value = keys\n })\n }\n const onMenuClick = () => {\n window.clearTimeout(openKeysTimer)\n }\n\n onUnmounted(() => {\n window.clearTimeout(openKeysTimer)\n })\n\n const changeFilter = (keys: Key[]) => {\n const newKeys = keys && keys.length ? keys : null\n const state = filterState.value\n\n if (!(newKeys !== null || (state && state.filteredKeys))) return null\n if (isEqual(newKeys, state?.filteredKeys)) return null\n\n const newFilterState = { column: props.column, key: columnKey.value, filteredKeys: newKeys }\n tableContext?.changeFilter(newFilterState)\n }\n\n const onSelectKeys = ({ selectedKeys }: { selectedKeys?: Key[] }) => {\n filteredKeys.value = selectedKeys || []\n }\n const onConfirm = () => {\n triggerOpen(false)\n changeFilter(filteredKeys.value)\n }\n const onReset = () => {\n filteredKeys.value = []\n triggerOpen(false)\n changeFilter([])\n }\n const doFilter = (param: FilterConfirmProps = { closeDropdown: true }) => {\n triggerOpen(!param.closeDropdown)\n changeFilter(filteredKeys.value)\n }\n\n const customFilterDropdown = computed(() => {\n const { filterDropdown, slots = {}, customFilterDropdown } = props.column\n return (\n filterDropdown ||\n (slots.filterDropdown && tableSlotsContext[slots.filterDropdown]) ||\n (customFilterDropdown && tableSlotsContext.customFilterDropdown)\n )\n })\n\n const custocustomFilterDropdownProps = computed(() => ({\n prefixCls: props.prefixCls,\n setSelectedKeys: (keys: Key[]) => onSelectKeys({ selectedKeys: keys }),\n selectedKeys: filteredKeys.value,\n confirm: doFilter,\n clearFilters: onReset,\n filters: props.column.filters,\n column: props.column.originColumn,\n open: mergedOpen.value,\n }))\n\n const customFilterIcon = computed(() => {\n return (\n props.column?.filterIcon ||\n (props.column?.slots?.filterIcon && tableSlotsContext[props.column?.slots?.filterIcon]) ||\n tableSlotsContext.customFilterIcon\n )\n })\n\n const filterItemsProps = computed(() => {\n const { column } = props\n return {\n filters: column.filters,\n prefixCls: props.prefixCls,\n filteredKeys: filteredKeys.value,\n filterMultiple:\n column.filterMultiple === null ||\n column.filterMultiple === undefined ||\n column.filterMultiple,\n locale: tableContext.locale.value,\n onSelectKeys: onSelectKeys,\n onOpenChange: onOpenChange,\n onMenuClick: onMenuClick,\n openKeys: openKeys.value,\n }\n })\n\n const filtered = eagerComputed(() => !!filteredKeys.value?.length)\n\n return {\n getPopupContainer,\n triggerOpen,\n mergedOpen,\n onReset,\n onConfirm,\n onDropdownOpenChange: (open: boolean) => {\n triggerOpen(open)\n if (!(open || customFilterDropdown.value)) {\n onConfirm()\n }\n },\n doFilter,\n filterItemsProps,\n onSelectKeys,\n filteredKeys,\n dropdownPrefixCls,\n filtered,\n locale: tableContext.locale,\n customFilterDropdown,\n customFilterIcon,\n custocustomFilterDropdownProps,\n }\n },\n})\n</script>\n\n<template>\n <Dropdown\n :trigger=\"['click']\"\n :open=\"mergedOpen\"\n :get-popup-container=\"getPopupContainer\"\n placement=\"bottomRight\"\n :overlay-class-name=\"`${prefixCls}-dropdown-root`\"\n @open-change=\"onDropdownOpenChange\"\n @click.stop\n >\n <template #overlay>\n <FilterWrapper :class=\"`${prefixCls}-dropdown`\">\n <RenderVNode\n v-if=\"customFilterDropdown\"\n :vnode=\"customFilterDropdown(custocustomFilterDropdownProps)\"\n ></RenderVNode>\n <template v-else>\n <FilterItems\n v-bind=\"filterItemsProps\"\n root\n :dropdown-prefix-cls=\"dropdownPrefixCls\"\n :get-popup-container=\"getPopupContainer\"\n :prefix-cls=\"prefixCls\"\n />\n <div :class=\"`${prefixCls}-dropdown-btns`\">\n <ProButton\n type=\"link\"\n size=\"small\"\n :disabled=\"filteredKeys.length === 0\"\n @click=\"onReset\"\n >\n {{ locale.filterReset }}\n </ProButton>\n <ProButton type=\"primary\" size=\"small\" @click=\"onConfirm\">\n {{ locale.filterConfirm }}\n </ProButton>\n </div>\n </template>\n </FilterWrapper>\n </template>\n <span :class=\"{ [`${prefixCls}-trigger`]: true, active: filtered }\">\n <RenderVNode\n v-if=\"customFilterIcon\"\n :vnode=\"\n customFilterIcon({\n column: column.originColumn,\n filtered: filtered,\n })\n \"\n />\n <FilterFilled v-else />\n </span>\n </Dropdown>\n</template>\n"],"names":["defineComponent","FilterFilled","Dropdown","FilterItems","ProButton","RenderVNode","FilterWrapper","useInjectTable","useInjectSlots","ref","computed","watch","devWarning","onOpenChange","eagerComputed","onUnmounted","isEqual","customFilterDropdown"],"mappings":"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"}
1
+ {"version":3,"file":"FilterDropdown.vue2.js","sources":["../../../../../../../../../packages/components/table/src/components/Filter/FilterDropdown.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-07 21:51:35\n * @LastEditors: shen\n * @LastEditTime: 2025-11-25 08:57:24\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType } from 'vue'\nimport type { FinallyColumnType, DefaultRecordType, Key, FilterConfirmProps } from '../interface'\n\nimport { defineComponent, ref, computed, watch, onUnmounted } from 'vue'\nimport { Dropdown } from 'ant-design-vue'\nimport { FilterFilled } from '@ant-design/icons-vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { isEqual, RenderVNode } from '@pro-design-vue/utils'\nimport { ProButton } from '../../../../button'\nimport eagerComputed from '../../utils/eagerComputed'\nimport FilterWrapper from './FilterWrapper'\nimport FilterItems from './FilterItems.vue'\nimport devWarning from '../../utils/devWarning'\n\nexport default defineComponent({\n name: 'FilterDropdown',\n components: {\n FilterFilled,\n Dropdown,\n FilterItems,\n ProButton,\n RenderVNode,\n FilterWrapper,\n },\n inheritAttrs: false,\n props: {\n prefixCls: { type: String, default: '' },\n column: { type: Object as PropType<FinallyColumnType<DefaultRecordType>>, required: true },\n },\n setup(props) {\n const tableContext = useInjectTable()\n const tableSlotsContext = useInjectSlots()\n\n const filteredKeys = ref<Key[]>([])\n const openKeys = ref<string[]>([])\n const dropdownPrefixCls = computed(() => tableContext.props.dropdownPrefixCls || 'ant-dropdown')\n const columnKey = computed(() => props.column.columnKey)\n const filterStates = computed(() => tableContext.filterStates.value)\n const filterState = computed(() =>\n filterStates.value.find(({ key }) => columnKey.value === key),\n )\n\n watch(\n filterState,\n () => {\n filteredKeys.value = filterState.value?.filteredKeys || []\n },\n { immediate: true },\n )\n\n const showFilterDropdown = ref(false)\n\n devWarning(\n !('onFilterDropdownVisibleChange' in props.column),\n '@table',\n 'column.onFilterDropdownVisibleChange is deprecated. Please use column.onFilterDropdownOpenChange instead.',\n )\n devWarning(\n !('filterDropdownVisible' in props.column),\n '@table',\n 'column.filterDropdownVisible is deprecated. Please use column.filterDropdownOpen instead.',\n )\n\n const triggerOpen = (open: boolean) => {\n showFilterDropdown.value = open\n const { onFilterDropdownOpenChange, onFilterDropdownVisibleChange } = props.column || {}\n const onOpenChange = onFilterDropdownOpenChange || onFilterDropdownVisibleChange\n onOpenChange?.(open)\n }\n\n const mergedOpen = eagerComputed(() => {\n const { filterDropdownVisible, filterDropdownOpen } = props.column || {}\n const open = filterDropdownOpen ?? filterDropdownVisible\n return typeof open == 'boolean' ? open : showFilterDropdown.value\n })\n\n let openKeysTimer = 0\n const onOpenChange = (keys: string[]) => {\n openKeysTimer = window.setTimeout(() => {\n openKeys.value = keys\n })\n }\n const onMenuClick = () => {\n window.clearTimeout(openKeysTimer)\n }\n\n onUnmounted(() => {\n window.clearTimeout(openKeysTimer)\n })\n\n const changeFilter = (keys: Key[]) => {\n const newKeys = keys && keys.length ? keys : null\n const state = filterState.value\n\n if (!(newKeys !== null || (state && state.filteredKeys))) return null\n if (isEqual(newKeys, state?.filteredKeys)) return null\n\n const newFilterState = { column: props.column, key: columnKey.value, filteredKeys: newKeys }\n tableContext?.changeFilter(newFilterState)\n }\n\n const onSelectKeys = ({ selectedKeys }: { selectedKeys?: Key[] }) => {\n filteredKeys.value = selectedKeys || []\n }\n const onConfirm = () => {\n triggerOpen(false)\n changeFilter(filteredKeys.value)\n }\n const onReset = () => {\n filteredKeys.value = []\n triggerOpen(false)\n changeFilter([])\n }\n const doFilter = (param: FilterConfirmProps = { closeDropdown: true }) => {\n triggerOpen(!param.closeDropdown)\n changeFilter(filteredKeys.value)\n }\n\n const customFilterDropdown = computed(() => {\n const { filterDropdown, slots = {}, customFilterDropdown } = props.column\n return (\n filterDropdown ||\n (slots.filterDropdown && tableSlotsContext[slots.filterDropdown]) ||\n (customFilterDropdown && tableSlotsContext.customFilterDropdown)\n )\n })\n\n const custocustomFilterDropdownProps = computed(() => ({\n prefixCls: props.prefixCls,\n setSelectedKeys: (keys: Key[]) => onSelectKeys({ selectedKeys: keys }),\n selectedKeys: filteredKeys.value,\n confirm: doFilter,\n clearFilters: onReset,\n filters: props.column.filters,\n column: props.column.originColumn,\n open: mergedOpen.value,\n }))\n\n const customFilterIcon = computed(() => {\n return (\n props.column?.filterIcon ||\n (props.column?.slots?.filterIcon && tableSlotsContext[props.column?.slots?.filterIcon]) ||\n tableSlotsContext.customFilterIcon\n )\n })\n\n const filterItemsProps = computed(() => {\n const { column } = props\n return {\n filters: column.filters,\n prefixCls: props.prefixCls,\n filteredKeys: filteredKeys.value,\n filterMultiple:\n column.filterMultiple === null ||\n column.filterMultiple === undefined ||\n column.filterMultiple,\n locale: tableContext.locale.value,\n onSelectKeys: onSelectKeys,\n onOpenChange: onOpenChange,\n onMenuClick: onMenuClick,\n openKeys: openKeys.value,\n }\n })\n\n const filtered = eagerComputed(() => !!filteredKeys.value?.length)\n const getPopupContainer = () => {\n return document.body\n }\n return {\n getPopupContainer,\n triggerOpen,\n mergedOpen,\n onReset,\n onConfirm,\n onDropdownOpenChange: (open: boolean) => {\n triggerOpen(open)\n if (!(open || customFilterDropdown.value)) {\n onConfirm()\n }\n },\n doFilter,\n filterItemsProps,\n onSelectKeys,\n filteredKeys,\n dropdownPrefixCls,\n filtered,\n locale: tableContext.locale,\n customFilterDropdown,\n customFilterIcon,\n custocustomFilterDropdownProps,\n }\n },\n})\n</script>\n\n<template>\n <Dropdown\n :trigger=\"['click']\"\n :open=\"mergedOpen\"\n :get-popup-container=\"getPopupContainer\"\n placement=\"bottomRight\"\n :overlay-class-name=\"`${prefixCls}-dropdown-root`\"\n @open-change=\"onDropdownOpenChange\"\n @click.stop\n >\n <template #overlay>\n <FilterWrapper :class=\"`${prefixCls}-dropdown`\">\n <RenderVNode\n v-if=\"customFilterDropdown\"\n :vnode=\"customFilterDropdown(custocustomFilterDropdownProps)\"\n ></RenderVNode>\n <template v-else>\n <FilterItems\n v-bind=\"filterItemsProps\"\n root\n :dropdown-prefix-cls=\"dropdownPrefixCls\"\n :get-popup-container=\"getPopupContainer\"\n :prefix-cls=\"prefixCls\"\n />\n <div :class=\"`${prefixCls}-dropdown-btns`\">\n <ProButton\n type=\"link\"\n size=\"small\"\n :disabled=\"filteredKeys.length === 0\"\n @click=\"onReset\"\n >\n {{ locale.filterReset }}\n </ProButton>\n <ProButton type=\"primary\" size=\"small\" @click=\"onConfirm\">\n {{ locale.filterConfirm }}\n </ProButton>\n </div>\n </template>\n </FilterWrapper>\n </template>\n <span :class=\"{ [`${prefixCls}-trigger`]: true, active: filtered }\">\n <RenderVNode\n v-if=\"customFilterIcon\"\n :vnode=\"\n customFilterIcon({\n column: column.originColumn,\n filtered: filtered,\n })\n \"\n />\n <FilterFilled v-else />\n </span>\n </Dropdown>\n</template>\n"],"names":["defineComponent","FilterFilled","Dropdown","FilterItems","ProButton","RenderVNode","FilterWrapper","useInjectTable","useInjectSlots","ref","computed","watch","devWarning","onOpenChange","eagerComputed","onUnmounted","isEqual","customFilterDropdown"],"mappings":"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"}
@@ -35,31 +35,25 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
35
35
  class: vue.normalizeClass(_ctx.titleClass)
36
36
  },
37
37
  [
38
- _ctx.column.sorter && _ctx.showSorterTooltip ? (vue.openBlock(), vue.createBlock(
39
- _component_Tooltip,
40
- vue.normalizeProps(vue.mergeProps({ key: 0 }, _ctx.tooltipProps)),
41
- {
42
- title: vue.withCtx(() => [
43
- vue.createTextVNode(
44
- vue.toDisplayString(_ctx.sorterInfo.tip),
45
- 1
46
- /* TEXT */
47
- )
48
- ]),
49
- default: vue.withCtx(() => [
50
- vue.createElementVNode("div", {
51
- class: vue.normalizeClass(`${_ctx.prefixCls}-column-sorters`),
52
- "data-tip": _ctx.sorterInfo.tip
53
- }, [
54
- vue.createVNode(_component_Sorter, vue.mergeProps({ column: _ctx.column }, _ctx.sorterInfo), null, 16, ["column"])
55
- ], 10, _hoisted_1)
56
- ]),
57
- _: 1
58
- /* STABLE */
59
- },
60
- 16
61
- /* FULL_PROPS */
62
- )) : (vue.openBlock(), vue.createBlock(_component_Sorter, vue.mergeProps({
38
+ _ctx.column.sorter && _ctx.showSorterTooltip ? (vue.openBlock(), vue.createBlock(_component_Tooltip, vue.mergeProps({ key: 0 }, _ctx.tooltipProps, { getPopupContainer: _ctx.getPopupContainer }), {
39
+ title: vue.withCtx(() => [
40
+ vue.createTextVNode(
41
+ vue.toDisplayString(_ctx.sorterInfo.tip),
42
+ 1
43
+ /* TEXT */
44
+ )
45
+ ]),
46
+ default: vue.withCtx(() => [
47
+ vue.createElementVNode("div", {
48
+ class: vue.normalizeClass(`${_ctx.prefixCls}-column-sorters`),
49
+ "data-tip": _ctx.sorterInfo.tip
50
+ }, [
51
+ vue.createVNode(_component_Sorter, vue.mergeProps({ column: _ctx.column }, _ctx.sorterInfo), null, 16, ["column"])
52
+ ], 10, _hoisted_1)
53
+ ]),
54
+ _: 1
55
+ /* STABLE */
56
+ }, 16, ["getPopupContainer"])) : (vue.openBlock(), vue.createBlock(_component_Sorter, vue.mergeProps({
63
57
  key: 1,
64
58
  column: _ctx.column
65
59
  }, _ctx.sorterInfo), null, 16, ["column"]))
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.vue.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCell.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-11-17 17:19:06\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, CSSProperties } from 'vue'\nimport type { FilterKey, FinallyColumnType, SortOrder } from '../interface'\n\nimport { defineComponent, computed, inject, ref, watch, h } from 'vue'\nimport { Tooltip } from 'ant-design-vue'\nimport { MenuOutlined } from '@ant-design/icons-vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { RenderVNode, RenderSlot } from '../../utils/renderVNode'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ASCEND, DESCEND, getMultiplePriority } from '../../hooks/useSorter'\nimport { getCellFixedInfo } from '../../utils/fixUtil'\nimport { useInjectHeader } from '../context/HeaderContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectPopup } from '../context/PopupContext'\nimport { isEqual } from '@pro-design-vue/utils'\nimport useColumnDragHandler from '../Drag/useColumnDragHandler'\nimport supportSticky from '../../utils/supportSticky'\nimport eagerComputed from '../../utils/eagerComputed'\nimport Sorter from './Sorter.vue'\nimport DragHandle from './DragHandle.vue'\nimport FilterDropdown from '../Filter/FilterDropdown.vue'\nimport FilterItems from '../Filter/FilterItems.vue'\n\nexport default defineComponent({\n name: 'TableHeaderCell',\n components: {\n Sorter,\n Tooltip,\n DragHandle,\n FilterDropdown,\n MenuOutlined,\n RenderVNode,\n FilterItems,\n },\n props: {\n component: { type: String, default: 'div' },\n prefixCls: String as PropType<string>,\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n level: { type: Number as PropType<number>, default: 1 },\n additionalProps: Object,\n },\n setup(props) {\n const tableContext = useInjectTable()\n const headerContext = useInjectHeader()\n const tableSlotsContext = useInjectSlots()\n const { showPopupContent } = useInjectPopup()\n\n const columnDragging = computed(\n () => tableContext.draggingColumnKey.value === props.column.columnKey,\n )\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n const domRef = ref<HTMLDivElement>()\n\n if (props.level === 1) {\n useColumnDragHandler({\n column: computed(() => props.column),\n columnKey: computed(() => props.column.columnKey),\n disabled: computed(() => false),\n domRef,\n })\n }\n\n const showSorterTooltip = computed(() => {\n return undefined === props.column.showSorterTooltip\n ? tableContext.props.showSorterTooltip\n : props.column.showSorterTooltip\n })\n\n const tooltipProps = computed(() =>\n 'boolean' == typeof showSorterTooltip.value ? {} : showSorterTooltip.value,\n )\n\n const sorterInfo = computed(() => {\n const column = props.column\n const columnKey = column.columnKey\n const sorterState = tableContext.sorterStates.value.find(({ key }) => key === columnKey)\n const sorterOrder = sorterState ? sorterState.sortOrder : null\n const sortDirections = column.sortDirections || ['asc', 'desc']\n const nextSortOrder = sorterOrder\n ? sortDirections[sortDirections.indexOf(sorterOrder) + 1]\n : sortDirections[0]\n\n const { cancelSort, triggerAsc, triggerDesc } = tableContext.locale.value || {}\n let tip = cancelSort\n if (nextSortOrder === DESCEND) {\n tip = triggerDesc\n } else if (nextSortOrder === ASCEND) {\n tip = triggerAsc\n }\n return {\n columnKey,\n sorterState,\n sorterOrder,\n sortDirections,\n nextSortOrder,\n tip,\n showFilter:\n !!(\n column.filters ||\n column.filterDropdown ||\n (column.slots && column.slots.filterDropdown) ||\n column.customFilterDropdown\n ) && false !== column.showFilter,\n wrapText: props.column.wrapText === undefined ? props.wrapText : props.column.wrapText,\n }\n })\n const hasIcon = computed(() => sorterInfo.value.showFilter || !!tableSlotsContext.menuPopup)\n const cellBoxClass = computed(() => ({\n [`${props.prefixCls}-has-icon-column`]: hasIcon.value,\n [`${props.prefixCls}-cell-box`]: true,\n }))\n const titleClass = computed(() => {\n const { prefixCls } = props\n return {\n [`${prefixCls}-column-title`]: true,\n [`${prefixCls}-cell-box`]: !hasIcon.value,\n }\n })\n\n const widths = computed(() => {\n const {\n columnIndex = tableContext.columnKeyIndexMap.value[props.column.columnKey],\n colSpan = 1,\n } = props.column\n return tableContext.getColumnPosition(columnIndex!, colSpan)\n })\n\n const customColProps = computed(() =>\n (props.column.customHeaderCell || tableContext.props.customHeaderCell || (() => ({})))(\n props.column,\n ),\n )\n\n const colProps = computed(() => {\n const { columnIndex, colSpan = 1 } = props.column\n return Object.assign({}, customColProps.value, {\n colspan: colSpan,\n colstart: columnIndex,\n colend: colSpan + columnIndex - 1,\n ...props.additionalProps,\n })\n })\n\n const cellFixedInfo = computed(() => {\n if (autoHeight) {\n return getCellFixedInfo(\n colProps.value!.colstart,\n colProps.value!.colend,\n tableContext.allColumns.value as any,\n tableContext.stickyOffsets.value,\n tableContext.props.direction,\n )\n }\n return undefined\n })\n\n const cellClass = computed(() => {\n const { prefixCls, column } = props\n let cellFixedCls = {}\n if (cellFixedInfo.value && supportSticky) {\n const autoCellPrefixCls = `${prefixCls}-cell`,\n { fixLeft, fixRight, firstFixLeft, lastFixLeft, firstFixRight, lastFixRight } =\n cellFixedInfo.value\n cellFixedCls = {\n [`${autoCellPrefixCls}-fix-left`]: typeof fixLeft === 'number',\n [`${autoCellPrefixCls}-fix-left-first`]: firstFixLeft,\n [`${autoCellPrefixCls}-fix-left-last`]: lastFixLeft,\n [`${autoCellPrefixCls}-fix-right`]: typeof fixRight == 'number',\n [`${autoCellPrefixCls}-fix-right-first`]: firstFixRight,\n [`${autoCellPrefixCls}-fix-right-last`]: lastFixRight,\n }\n }\n return Object.assign(\n {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-first-cell`]: props.column.columnIndex === 0,\n [`${prefixCls}-header-cell`]: true,\n [column.class || '']: true,\n [column.className || '']: true,\n [`${prefixCls}-column-sort`]: sorterInfo.value.sorterOrder,\n [`${prefixCls}-column-has-sorters`]: column.sorter,\n [`${prefixCls}-drag-column-dragging`]: columnDragging.value,\n },\n cellFixedCls,\n )\n })\n\n const componentStyle = computed(() => {\n const styles: CSSProperties = {}\n if (cellFixedInfo.value && supportSticky) {\n const { fixLeft, fixRight } = cellFixedInfo.value\n if (typeof fixLeft == 'number') {\n styles.position = 'sticky'\n styles.left = `${fixLeft}px`\n }\n if (typeof fixRight == 'number') {\n styles.position = 'sticky'\n styles.right = `${fixRight}px`\n }\n }\n return autoHeight\n ? styles\n : { width: `${widths.value.width}px`, height: `${props.column.height}px` }\n })\n\n const selectedKeysRef = ref<FilterKey>([])\n const filterStates = computed(() => tableContext.filterStates.value)\n const columnKey = computed(() => props.column.columnKey)\n const filterState = computed(() =>\n filterStates.value.find(({ key }) => columnKey.value === key),\n )\n\n const changeFilter = (keys: FilterKey) => {\n const filteredKeys = keys?.length ? keys : null\n if (!(null !== filteredKeys || (filterState.value && filterState.value.filteredKeys)))\n return null\n if (\n isEqual(\n filteredKeys,\n null == filterState.value ? undefined : filterState.value.filteredKeys,\n )\n )\n return null\n const state = { column: props.column, key: columnKey.value, filteredKeys }\n tableContext?.changeFilter(state)\n }\n\n watch(\n filterState,\n () => {\n selectedKeysRef.value = filterState.value?.filteredKeys || []\n },\n { immediate: true },\n )\n\n const clearFilters = () => {\n selectedKeysRef.value = []\n changeFilter([])\n }\n const confirm = () => {\n changeFilter(selectedKeysRef.value)\n }\n\n const filtered = eagerComputed(() => {\n return !!selectedKeysRef.value?.length\n })\n\n const menuFilterProps = computed(() => ({\n prefixCls: props.prefixCls,\n setSelectedKeys: (keys: FilterKey) => {\n selectedKeysRef.value = keys || []\n },\n selectedKeysRef,\n confirm,\n clearFilters,\n filters: props.column.filters,\n }))\n\n return {\n tableContext,\n sorterInfo,\n handleSortClick: (column: FinallyColumnType<any>, nextSortOrder: SortOrder) => {\n if (!column.sorter) return\n const sortState = {\n column,\n key: column.columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column),\n }\n tableContext.changeSorter(sortState)\n },\n cellClass,\n widths,\n colProps,\n RenderSlot,\n titleClass,\n domRef,\n autoHeight,\n componentStyle,\n headerContext,\n tableSlotsContext,\n cellBoxClass,\n showPopupContent,\n FilterItems,\n h,\n\n hasIcon,\n menuFilterProps,\n filtered,\n tooltipProps,\n showSorterTooltip,\n }\n },\n})\n</script>\n\n<template>\n <component\n v-if=\"colProps.colspan\"\n ref=\"domRef\"\n :is=\"component\"\n tabindex=\"-1\"\n role=\"cell\"\n :class=\"cellClass\"\n :style=\"componentStyle\"\n v-bind=\"colProps\"\n @click=\"handleSortClick(column, sorterInfo.nextSortOrder!)\"\n >\n <component :is=\"hasIcon ? 'div' : RenderSlot\" :class=\"cellBoxClass\">\n <span :class=\"titleClass\">\n <Tooltip v-if=\"column.sorter && showSorterTooltip\" v-bind=\"tooltipProps\">\n <template #title>\n {{ sorterInfo.tip }}\n </template>\n <div :class=\"`${prefixCls}-column-sorters`\" :data-tip=\"sorterInfo.tip\">\n <Sorter :column=\"column\" v-bind=\"sorterInfo\" />\n </div>\n </Tooltip>\n <Sorter v-else :column=\"column\" v-bind=\"sorterInfo\" />\n </span>\n <FilterDropdown\n v-if=\"sorterInfo.showFilter\"\n :prefix-cls=\"`${prefixCls}-filter`\"\n :column=\"column\"\n />\n <span\n v-if=\"column.showMenu && tableSlotsContext.menuPopup\"\n :class=\"[\n `${prefixCls}-menu-popup-trigger`,\n 'hover' === column.showMenu && `${prefixCls}-menu-popup-trigger-hover`,\n ]\"\n @click.stop=\"\n showPopupContent(tableSlotsContext.menuPopup, $event, {\n column: column.originColumn,\n filter: menuFilterProps,\n })\n \"\n >\n <RenderVNode\n v-if=\"tableSlotsContext.menuIcon\"\n :vnode=\"\n tableSlotsContext.menuIcon({\n column: column.originColumn!,\n filtered: filtered,\n })\n \"\n />\n <MenuOutlined v-else />\n </span>\n </component>\n <DragHandle\n v-if=\"column.resizable && !(column.children && column.children.length)\"\n :prefix-cls=\"prefixCls\"\n :width=\"widths.width\"\n :min-width=\"widths.minWidth\"\n :max-width=\"widths.maxWidth\"\n :column=\"column\"\n />\n </component>\n</template>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_normalizeClass","_createElementVNode","_normalizeProps","_withCtx","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_createElementBlock","_withModifiers"],"mappings":"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"}
1
+ {"version":3,"file":"HeaderCell.vue.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCell.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-11-25 08:54:01\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, CSSProperties } from 'vue'\nimport type { FilterKey, FinallyColumnType, SortOrder } from '../interface'\n\nimport { defineComponent, computed, inject, ref, watch, h } from 'vue'\nimport { Tooltip } from 'ant-design-vue'\nimport { MenuOutlined } from '@ant-design/icons-vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { RenderVNode, RenderSlot } from '../../utils/renderVNode'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ASCEND, DESCEND, getMultiplePriority } from '../../hooks/useSorter'\nimport { getCellFixedInfo } from '../../utils/fixUtil'\nimport { useInjectHeader } from '../context/HeaderContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectPopup } from '../context/PopupContext'\nimport { isEqual } from '@pro-design-vue/utils'\nimport useColumnDragHandler from '../Drag/useColumnDragHandler'\nimport supportSticky from '../../utils/supportSticky'\nimport eagerComputed from '../../utils/eagerComputed'\nimport Sorter from './Sorter.vue'\nimport DragHandle from './DragHandle.vue'\nimport FilterDropdown from '../Filter/FilterDropdown.vue'\nimport FilterItems from '../Filter/FilterItems.vue'\n\nexport default defineComponent({\n name: 'TableHeaderCell',\n components: {\n Sorter,\n Tooltip,\n DragHandle,\n FilterDropdown,\n MenuOutlined,\n RenderVNode,\n FilterItems,\n },\n props: {\n component: { type: String, default: 'div' },\n prefixCls: String as PropType<string>,\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n level: { type: Number as PropType<number>, default: 1 },\n additionalProps: Object,\n },\n setup(props) {\n const tableContext = useInjectTable()\n const headerContext = useInjectHeader()\n const tableSlotsContext = useInjectSlots()\n const { showPopupContent } = useInjectPopup()\n\n const columnDragging = computed(\n () => tableContext.draggingColumnKey.value === props.column.columnKey,\n )\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n const domRef = ref<HTMLDivElement>()\n\n if (props.level === 1) {\n useColumnDragHandler({\n column: computed(() => props.column),\n columnKey: computed(() => props.column.columnKey),\n disabled: computed(() => false),\n domRef,\n })\n }\n\n const showSorterTooltip = computed(() => {\n return undefined === props.column.showSorterTooltip\n ? tableContext.props.showSorterTooltip\n : props.column.showSorterTooltip\n })\n\n const tooltipProps = computed(() =>\n 'boolean' == typeof showSorterTooltip.value ? {} : showSorterTooltip.value,\n )\n\n const sorterInfo = computed(() => {\n const column = props.column\n const columnKey = column.columnKey\n const sorterState = tableContext.sorterStates.value.find(({ key }) => key === columnKey)\n const sorterOrder = sorterState ? sorterState.sortOrder : null\n const sortDirections = column.sortDirections || ['asc', 'desc']\n const nextSortOrder = sorterOrder\n ? sortDirections[sortDirections.indexOf(sorterOrder) + 1]\n : sortDirections[0]\n\n const { cancelSort, triggerAsc, triggerDesc } = tableContext.locale.value || {}\n let tip = cancelSort\n if (nextSortOrder === DESCEND) {\n tip = triggerDesc\n } else if (nextSortOrder === ASCEND) {\n tip = triggerAsc\n }\n return {\n columnKey,\n sorterState,\n sorterOrder,\n sortDirections,\n nextSortOrder,\n tip,\n showFilter:\n !!(\n column.filters ||\n column.filterDropdown ||\n (column.slots && column.slots.filterDropdown) ||\n column.customFilterDropdown\n ) && false !== column.showFilter,\n wrapText: props.column.wrapText === undefined ? props.wrapText : props.column.wrapText,\n }\n })\n const hasIcon = computed(() => sorterInfo.value.showFilter || !!tableSlotsContext.menuPopup)\n const cellBoxClass = computed(() => ({\n [`${props.prefixCls}-has-icon-column`]: hasIcon.value,\n [`${props.prefixCls}-cell-box`]: true,\n }))\n const titleClass = computed(() => {\n const { prefixCls } = props\n return {\n [`${prefixCls}-column-title`]: true,\n [`${prefixCls}-cell-box`]: !hasIcon.value,\n }\n })\n\n const widths = computed(() => {\n const {\n columnIndex = tableContext.columnKeyIndexMap.value[props.column.columnKey],\n colSpan = 1,\n } = props.column\n return tableContext.getColumnPosition(columnIndex!, colSpan)\n })\n\n const customColProps = computed(() =>\n (props.column.customHeaderCell || tableContext.props.customHeaderCell || (() => ({})))(\n props.column,\n ),\n )\n\n const colProps = computed(() => {\n const { columnIndex, colSpan = 1 } = props.column\n return Object.assign({}, customColProps.value, {\n colspan: colSpan,\n colstart: columnIndex,\n colend: colSpan + columnIndex - 1,\n ...props.additionalProps,\n })\n })\n\n const cellFixedInfo = computed(() => {\n if (autoHeight) {\n return getCellFixedInfo(\n colProps.value!.colstart,\n colProps.value!.colend,\n tableContext.allColumns.value as any,\n tableContext.stickyOffsets.value,\n tableContext.props.direction,\n )\n }\n return undefined\n })\n\n const cellClass = computed(() => {\n const { prefixCls, column } = props\n let cellFixedCls = {}\n if (cellFixedInfo.value && supportSticky) {\n const autoCellPrefixCls = `${prefixCls}-cell`,\n { fixLeft, fixRight, firstFixLeft, lastFixLeft, firstFixRight, lastFixRight } =\n cellFixedInfo.value\n cellFixedCls = {\n [`${autoCellPrefixCls}-fix-left`]: typeof fixLeft === 'number',\n [`${autoCellPrefixCls}-fix-left-first`]: firstFixLeft,\n [`${autoCellPrefixCls}-fix-left-last`]: lastFixLeft,\n [`${autoCellPrefixCls}-fix-right`]: typeof fixRight == 'number',\n [`${autoCellPrefixCls}-fix-right-first`]: firstFixRight,\n [`${autoCellPrefixCls}-fix-right-last`]: lastFixRight,\n }\n }\n return Object.assign(\n {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-first-cell`]: props.column.columnIndex === 0,\n [`${prefixCls}-header-cell`]: true,\n [column.class || '']: true,\n [column.className || '']: true,\n [`${prefixCls}-column-sort`]: sorterInfo.value.sorterOrder,\n [`${prefixCls}-column-has-sorters`]: column.sorter,\n [`${prefixCls}-drag-column-dragging`]: columnDragging.value,\n },\n cellFixedCls,\n )\n })\n\n const componentStyle = computed(() => {\n const styles: CSSProperties = {}\n if (cellFixedInfo.value && supportSticky) {\n const { fixLeft, fixRight } = cellFixedInfo.value\n if (typeof fixLeft == 'number') {\n styles.position = 'sticky'\n styles.left = `${fixLeft}px`\n }\n if (typeof fixRight == 'number') {\n styles.position = 'sticky'\n styles.right = `${fixRight}px`\n }\n }\n return autoHeight\n ? styles\n : { width: `${widths.value.width}px`, height: `${props.column.height}px` }\n })\n\n const selectedKeysRef = ref<FilterKey>([])\n const filterStates = computed(() => tableContext.filterStates.value)\n const columnKey = computed(() => props.column.columnKey)\n const filterState = computed(() =>\n filterStates.value.find(({ key }) => columnKey.value === key),\n )\n\n const changeFilter = (keys: FilterKey) => {\n const filteredKeys = keys?.length ? keys : null\n if (!(null !== filteredKeys || (filterState.value && filterState.value.filteredKeys)))\n return null\n if (\n isEqual(\n filteredKeys,\n null == filterState.value ? undefined : filterState.value.filteredKeys,\n )\n )\n return null\n const state = { column: props.column, key: columnKey.value, filteredKeys }\n tableContext?.changeFilter(state)\n }\n\n watch(\n filterState,\n () => {\n selectedKeysRef.value = filterState.value?.filteredKeys || []\n },\n { immediate: true },\n )\n\n const clearFilters = () => {\n selectedKeysRef.value = []\n changeFilter([])\n }\n const confirm = () => {\n changeFilter(selectedKeysRef.value)\n }\n\n const filtered = eagerComputed(() => {\n return !!selectedKeysRef.value?.length\n })\n\n const menuFilterProps = computed(() => ({\n prefixCls: props.prefixCls,\n setSelectedKeys: (keys: FilterKey) => {\n selectedKeysRef.value = keys || []\n },\n selectedKeysRef,\n confirm,\n clearFilters,\n filters: props.column.filters,\n }))\n\n const getPopupContainer = () => {\n return document.body\n }\n\n return {\n tableContext,\n sorterInfo,\n getPopupContainer,\n handleSortClick: (column: FinallyColumnType<any>, nextSortOrder: SortOrder) => {\n if (!column.sorter) return\n const sortState = {\n column,\n key: column.columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column),\n }\n tableContext.changeSorter(sortState)\n },\n cellClass,\n widths,\n colProps,\n RenderSlot,\n titleClass,\n domRef,\n autoHeight,\n componentStyle,\n headerContext,\n tableSlotsContext,\n cellBoxClass,\n showPopupContent,\n FilterItems,\n h,\n\n hasIcon,\n menuFilterProps,\n filtered,\n tooltipProps,\n showSorterTooltip,\n }\n },\n})\n</script>\n\n<template>\n <component\n v-if=\"colProps.colspan\"\n ref=\"domRef\"\n :is=\"component\"\n tabindex=\"-1\"\n role=\"cell\"\n :class=\"cellClass\"\n :style=\"componentStyle\"\n v-bind=\"colProps\"\n @click=\"handleSortClick(column, sorterInfo.nextSortOrder!)\"\n >\n <component :is=\"hasIcon ? 'div' : RenderSlot\" :class=\"cellBoxClass\">\n <span :class=\"titleClass\">\n <Tooltip v-if=\"column.sorter && showSorterTooltip\" v-bind=\"tooltipProps\" :getPopupContainer>\n <template #title>\n {{ sorterInfo.tip }}\n </template>\n <div :class=\"`${prefixCls}-column-sorters`\" :data-tip=\"sorterInfo.tip\">\n <Sorter :column=\"column\" v-bind=\"sorterInfo\" />\n </div>\n </Tooltip>\n <Sorter v-else :column=\"column\" v-bind=\"sorterInfo\" />\n </span>\n <FilterDropdown\n v-if=\"sorterInfo.showFilter\"\n :prefix-cls=\"`${prefixCls}-filter`\"\n :column=\"column\"\n />\n <span\n v-if=\"column.showMenu && tableSlotsContext.menuPopup\"\n :class=\"[\n `${prefixCls}-menu-popup-trigger`,\n 'hover' === column.showMenu && `${prefixCls}-menu-popup-trigger-hover`,\n ]\"\n @click.stop=\"\n showPopupContent(tableSlotsContext.menuPopup, $event, {\n column: column.originColumn,\n filter: menuFilterProps,\n })\n \"\n >\n <RenderVNode\n v-if=\"tableSlotsContext.menuIcon\"\n :vnode=\"\n tableSlotsContext.menuIcon({\n column: column.originColumn!,\n filtered: filtered,\n })\n \"\n />\n <MenuOutlined v-else />\n </span>\n </component>\n <DragHandle\n v-if=\"column.resizable && !(column.children && column.children.length)\"\n :prefix-cls=\"prefixCls\"\n :width=\"widths.width\"\n :min-width=\"widths.minWidth\"\n :max-width=\"widths.maxWidth\"\n :column=\"column\"\n />\n </component>\n</template>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_normalizeClass","_createElementVNode","_withCtx","_createTextVNode","_toDisplayString","_createVNode","_createCommentVNode","_createElementBlock","_withModifiers"],"mappings":"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"}
@@ -225,9 +225,13 @@ var _sfc_main = vue.defineComponent({
225
225
  clearFilters,
226
226
  filters: props.column.filters
227
227
  }));
228
+ const getPopupContainer = () => {
229
+ return document.body;
230
+ };
228
231
  return {
229
232
  tableContext,
230
233
  sorterInfo,
234
+ getPopupContainer,
231
235
  handleSortClick: (column, nextSortOrder) => {
232
236
  if (!column.sorter) return;
233
237
  const sortState = {
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.vue2.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCell.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-11-17 17:19:06\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, CSSProperties } from 'vue'\nimport type { FilterKey, FinallyColumnType, SortOrder } from '../interface'\n\nimport { defineComponent, computed, inject, ref, watch, h } from 'vue'\nimport { Tooltip } from 'ant-design-vue'\nimport { MenuOutlined } from '@ant-design/icons-vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { RenderVNode, RenderSlot } from '../../utils/renderVNode'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ASCEND, DESCEND, getMultiplePriority } from '../../hooks/useSorter'\nimport { getCellFixedInfo } from '../../utils/fixUtil'\nimport { useInjectHeader } from '../context/HeaderContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectPopup } from '../context/PopupContext'\nimport { isEqual } from '@pro-design-vue/utils'\nimport useColumnDragHandler from '../Drag/useColumnDragHandler'\nimport supportSticky from '../../utils/supportSticky'\nimport eagerComputed from '../../utils/eagerComputed'\nimport Sorter from './Sorter.vue'\nimport DragHandle from './DragHandle.vue'\nimport FilterDropdown from '../Filter/FilterDropdown.vue'\nimport FilterItems from '../Filter/FilterItems.vue'\n\nexport default defineComponent({\n name: 'TableHeaderCell',\n components: {\n Sorter,\n Tooltip,\n DragHandle,\n FilterDropdown,\n MenuOutlined,\n RenderVNode,\n FilterItems,\n },\n props: {\n component: { type: String, default: 'div' },\n prefixCls: String as PropType<string>,\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n level: { type: Number as PropType<number>, default: 1 },\n additionalProps: Object,\n },\n setup(props) {\n const tableContext = useInjectTable()\n const headerContext = useInjectHeader()\n const tableSlotsContext = useInjectSlots()\n const { showPopupContent } = useInjectPopup()\n\n const columnDragging = computed(\n () => tableContext.draggingColumnKey.value === props.column.columnKey,\n )\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n const domRef = ref<HTMLDivElement>()\n\n if (props.level === 1) {\n useColumnDragHandler({\n column: computed(() => props.column),\n columnKey: computed(() => props.column.columnKey),\n disabled: computed(() => false),\n domRef,\n })\n }\n\n const showSorterTooltip = computed(() => {\n return undefined === props.column.showSorterTooltip\n ? tableContext.props.showSorterTooltip\n : props.column.showSorterTooltip\n })\n\n const tooltipProps = computed(() =>\n 'boolean' == typeof showSorterTooltip.value ? {} : showSorterTooltip.value,\n )\n\n const sorterInfo = computed(() => {\n const column = props.column\n const columnKey = column.columnKey\n const sorterState = tableContext.sorterStates.value.find(({ key }) => key === columnKey)\n const sorterOrder = sorterState ? sorterState.sortOrder : null\n const sortDirections = column.sortDirections || ['asc', 'desc']\n const nextSortOrder = sorterOrder\n ? sortDirections[sortDirections.indexOf(sorterOrder) + 1]\n : sortDirections[0]\n\n const { cancelSort, triggerAsc, triggerDesc } = tableContext.locale.value || {}\n let tip = cancelSort\n if (nextSortOrder === DESCEND) {\n tip = triggerDesc\n } else if (nextSortOrder === ASCEND) {\n tip = triggerAsc\n }\n return {\n columnKey,\n sorterState,\n sorterOrder,\n sortDirections,\n nextSortOrder,\n tip,\n showFilter:\n !!(\n column.filters ||\n column.filterDropdown ||\n (column.slots && column.slots.filterDropdown) ||\n column.customFilterDropdown\n ) && false !== column.showFilter,\n wrapText: props.column.wrapText === undefined ? props.wrapText : props.column.wrapText,\n }\n })\n const hasIcon = computed(() => sorterInfo.value.showFilter || !!tableSlotsContext.menuPopup)\n const cellBoxClass = computed(() => ({\n [`${props.prefixCls}-has-icon-column`]: hasIcon.value,\n [`${props.prefixCls}-cell-box`]: true,\n }))\n const titleClass = computed(() => {\n const { prefixCls } = props\n return {\n [`${prefixCls}-column-title`]: true,\n [`${prefixCls}-cell-box`]: !hasIcon.value,\n }\n })\n\n const widths = computed(() => {\n const {\n columnIndex = tableContext.columnKeyIndexMap.value[props.column.columnKey],\n colSpan = 1,\n } = props.column\n return tableContext.getColumnPosition(columnIndex!, colSpan)\n })\n\n const customColProps = computed(() =>\n (props.column.customHeaderCell || tableContext.props.customHeaderCell || (() => ({})))(\n props.column,\n ),\n )\n\n const colProps = computed(() => {\n const { columnIndex, colSpan = 1 } = props.column\n return Object.assign({}, customColProps.value, {\n colspan: colSpan,\n colstart: columnIndex,\n colend: colSpan + columnIndex - 1,\n ...props.additionalProps,\n })\n })\n\n const cellFixedInfo = computed(() => {\n if (autoHeight) {\n return getCellFixedInfo(\n colProps.value!.colstart,\n colProps.value!.colend,\n tableContext.allColumns.value as any,\n tableContext.stickyOffsets.value,\n tableContext.props.direction,\n )\n }\n return undefined\n })\n\n const cellClass = computed(() => {\n const { prefixCls, column } = props\n let cellFixedCls = {}\n if (cellFixedInfo.value && supportSticky) {\n const autoCellPrefixCls = `${prefixCls}-cell`,\n { fixLeft, fixRight, firstFixLeft, lastFixLeft, firstFixRight, lastFixRight } =\n cellFixedInfo.value\n cellFixedCls = {\n [`${autoCellPrefixCls}-fix-left`]: typeof fixLeft === 'number',\n [`${autoCellPrefixCls}-fix-left-first`]: firstFixLeft,\n [`${autoCellPrefixCls}-fix-left-last`]: lastFixLeft,\n [`${autoCellPrefixCls}-fix-right`]: typeof fixRight == 'number',\n [`${autoCellPrefixCls}-fix-right-first`]: firstFixRight,\n [`${autoCellPrefixCls}-fix-right-last`]: lastFixRight,\n }\n }\n return Object.assign(\n {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-first-cell`]: props.column.columnIndex === 0,\n [`${prefixCls}-header-cell`]: true,\n [column.class || '']: true,\n [column.className || '']: true,\n [`${prefixCls}-column-sort`]: sorterInfo.value.sorterOrder,\n [`${prefixCls}-column-has-sorters`]: column.sorter,\n [`${prefixCls}-drag-column-dragging`]: columnDragging.value,\n },\n cellFixedCls,\n )\n })\n\n const componentStyle = computed(() => {\n const styles: CSSProperties = {}\n if (cellFixedInfo.value && supportSticky) {\n const { fixLeft, fixRight } = cellFixedInfo.value\n if (typeof fixLeft == 'number') {\n styles.position = 'sticky'\n styles.left = `${fixLeft}px`\n }\n if (typeof fixRight == 'number') {\n styles.position = 'sticky'\n styles.right = `${fixRight}px`\n }\n }\n return autoHeight\n ? styles\n : { width: `${widths.value.width}px`, height: `${props.column.height}px` }\n })\n\n const selectedKeysRef = ref<FilterKey>([])\n const filterStates = computed(() => tableContext.filterStates.value)\n const columnKey = computed(() => props.column.columnKey)\n const filterState = computed(() =>\n filterStates.value.find(({ key }) => columnKey.value === key),\n )\n\n const changeFilter = (keys: FilterKey) => {\n const filteredKeys = keys?.length ? keys : null\n if (!(null !== filteredKeys || (filterState.value && filterState.value.filteredKeys)))\n return null\n if (\n isEqual(\n filteredKeys,\n null == filterState.value ? undefined : filterState.value.filteredKeys,\n )\n )\n return null\n const state = { column: props.column, key: columnKey.value, filteredKeys }\n tableContext?.changeFilter(state)\n }\n\n watch(\n filterState,\n () => {\n selectedKeysRef.value = filterState.value?.filteredKeys || []\n },\n { immediate: true },\n )\n\n const clearFilters = () => {\n selectedKeysRef.value = []\n changeFilter([])\n }\n const confirm = () => {\n changeFilter(selectedKeysRef.value)\n }\n\n const filtered = eagerComputed(() => {\n return !!selectedKeysRef.value?.length\n })\n\n const menuFilterProps = computed(() => ({\n prefixCls: props.prefixCls,\n setSelectedKeys: (keys: FilterKey) => {\n selectedKeysRef.value = keys || []\n },\n selectedKeysRef,\n confirm,\n clearFilters,\n filters: props.column.filters,\n }))\n\n return {\n tableContext,\n sorterInfo,\n handleSortClick: (column: FinallyColumnType<any>, nextSortOrder: SortOrder) => {\n if (!column.sorter) return\n const sortState = {\n column,\n key: column.columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column),\n }\n tableContext.changeSorter(sortState)\n },\n cellClass,\n widths,\n colProps,\n RenderSlot,\n titleClass,\n domRef,\n autoHeight,\n componentStyle,\n headerContext,\n tableSlotsContext,\n cellBoxClass,\n showPopupContent,\n FilterItems,\n h,\n\n hasIcon,\n menuFilterProps,\n filtered,\n tooltipProps,\n showSorterTooltip,\n }\n },\n})\n</script>\n\n<template>\n <component\n v-if=\"colProps.colspan\"\n ref=\"domRef\"\n :is=\"component\"\n tabindex=\"-1\"\n role=\"cell\"\n :class=\"cellClass\"\n :style=\"componentStyle\"\n v-bind=\"colProps\"\n @click=\"handleSortClick(column, sorterInfo.nextSortOrder!)\"\n >\n <component :is=\"hasIcon ? 'div' : RenderSlot\" :class=\"cellBoxClass\">\n <span :class=\"titleClass\">\n <Tooltip v-if=\"column.sorter && showSorterTooltip\" v-bind=\"tooltipProps\">\n <template #title>\n {{ sorterInfo.tip }}\n </template>\n <div :class=\"`${prefixCls}-column-sorters`\" :data-tip=\"sorterInfo.tip\">\n <Sorter :column=\"column\" v-bind=\"sorterInfo\" />\n </div>\n </Tooltip>\n <Sorter v-else :column=\"column\" v-bind=\"sorterInfo\" />\n </span>\n <FilterDropdown\n v-if=\"sorterInfo.showFilter\"\n :prefix-cls=\"`${prefixCls}-filter`\"\n :column=\"column\"\n />\n <span\n v-if=\"column.showMenu && tableSlotsContext.menuPopup\"\n :class=\"[\n `${prefixCls}-menu-popup-trigger`,\n 'hover' === column.showMenu && `${prefixCls}-menu-popup-trigger-hover`,\n ]\"\n @click.stop=\"\n showPopupContent(tableSlotsContext.menuPopup, $event, {\n column: column.originColumn,\n filter: menuFilterProps,\n })\n \"\n >\n <RenderVNode\n v-if=\"tableSlotsContext.menuIcon\"\n :vnode=\"\n tableSlotsContext.menuIcon({\n column: column.originColumn!,\n filtered: filtered,\n })\n \"\n />\n <MenuOutlined v-else />\n </span>\n </component>\n <DragHandle\n v-if=\"column.resizable && !(column.children && column.children.length)\"\n :prefix-cls=\"prefixCls\"\n :width=\"widths.width\"\n :min-width=\"widths.minWidth\"\n :max-width=\"widths.maxWidth\"\n :column=\"column\"\n />\n </component>\n</template>\n"],"names":["defineComponent","Sorter","Tooltip","DragHandle","FilterDropdown","MenuOutlined","RenderVNode","FilterItems","useInjectTable","useInjectHeader","useInjectSlots","useInjectPopup","computed","inject","AUTO_HEADER_HEIGHT","ref","useColumnDragHandler","columnKey","DESCEND","ASCEND","getCellFixedInfo","supportSticky","isEqual","watch","eagerComputed","getMultiplePriority","RenderSlot","h"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA+BA,gBAAeA,mBAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,iBAAA;AAAA,EACN,UAAA,EAAY;AAAA,YACVC,cAAA;AAAA,aACAC,oBAAA;AAAA,gBACAC,kBAAA;AAAA,oBACAC,sBAAA;AAAA,kBACAC,iBAAA;AAAA,iBACAC,uBAAA;AAAA,iBACAC;AAAA,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,KAAA,EAAM;AAAA,IAC1C,SAAA,EAAW,MAAA;AAAA,IACX,QAAQ,EAAE,IAAA,EAAM,QAAuC,OAAA,EAAS,OAAO,EAAC,CAAA,EAAG;AAAA,IAC3E,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAA8B,SAAS,KAAA,EAAM;AAAA,IAC/D,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAA4B,SAAS,CAAA,EAAE;AAAA,IACtD,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,MAAM,KAAA,EAAO;AACX,IAAA,MAAM,eAAeC,2BAAA,EAAe;AACpC,IAAA,MAAM,gBAAgBC,6BAAA,EAAgB;AACtC,IAAA,MAAM,oBAAoBC,gCAAA,EAAe;AACzC,IAAA,MAAM,EAAE,gBAAA,EAAiB,GAAIC,2BAAA,EAAe;AAE5C,IAAA,MAAM,cAAA,GAAiBC,YAAA;AAAA,MACrB,MAAM,YAAA,CAAa,iBAAA,CAAkB,KAAA,KAAU,MAAM,MAAA,CAAO;AAAA,KAC9D;AACA,IAAA,MAAM,UAAA,GAAaC,UAAA,CAAgBC,2BAAA,EAAoB,KAAK,CAAA;AAC5D,IAAA,MAAM,SAASC,OAAA,EAAoB;AAEnC,IAAA,IAAI,KAAA,CAAM,UAAU,CAAA,EAAG;AACrB,MAAAC,4BAAA,CAAqB;AAAA,QACnB,MAAA,EAAQJ,YAAA,CAAS,MAAM,KAAA,CAAM,MAAM,CAAA;AAAA,QACnC,SAAA,EAAWA,YAAA,CAAS,MAAM,KAAA,CAAM,OAAO,SAAS,CAAA;AAAA,QAChD,QAAA,EAAUA,YAAA,CAAS,MAAM,KAAK,CAAA;AAAA,QAC9B;AAAA,OACD,CAAA;AAAA,IACH;AAEA,IAAA,MAAM,iBAAA,GAAoBA,aAAS,MAAM;AACvC,MAAA,OAAO,MAAA,KAAc,MAAM,MAAA,CAAO,iBAAA,GAC9B,aAAa,KAAA,CAAM,iBAAA,GACnB,MAAM,MAAA,CAAO,iBAAA;AAAA,IACnB,CAAC,CAAA;AAED,IAAA,MAAM,YAAA,GAAeA,YAAA;AAAA,MAAS,MAC5B,SAAA,IAAa,OAAO,kBAAkB,KAAA,GAAQ,KAAK,iBAAA,CAAkB;AAAA,KACvE;AAEA,IAAA,MAAM,UAAA,GAAaA,aAAS,MAAM;AAChC,MAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,MAAA,MAAMK,aAAY,MAAA,CAAO,SAAA;AACzB,MAAA,MAAM,WAAA,GAAc,YAAA,CAAa,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,CAAC,EAAE,GAAA,EAAI,KAAM,GAAA,KAAQA,UAAS,CAAA;AACvF,MAAA,MAAM,WAAA,GAAc,WAAA,GAAc,WAAA,CAAY,SAAA,GAAY,IAAA;AAC1D,MAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,cAAA,IAAkB,CAAC,OAAO,MAAM,CAAA;AAC9D,MAAA,MAAM,aAAA,GAAgB,WAAA,GAClB,cAAA,CAAe,cAAA,CAAe,OAAA,CAAQ,WAAW,CAAA,GAAI,CAAC,CAAA,GACtD,cAAA,CAAe,CAAC,CAAA;AAEpB,MAAA,MAAM,EAAE,YAAY,UAAA,EAAY,WAAA,KAAgB,YAAA,CAAa,MAAA,CAAO,SAAS,EAAC;AAC9E,MAAA,IAAI,GAAA,GAAM,UAAA;AACV,MAAA,IAAI,kBAAkBC,iBAAA,EAAS;AAC7B,QAAA,GAAA,GAAM,WAAA;AAAA,MACR,CAAA,MAAA,IAAW,kBAAkBC,gBAAA,EAAQ;AACnC,QAAA,GAAA,GAAM,UAAA;AAAA,MACR;AACA,MAAA,OAAO;AAAA,QACL,SAAA,EAAAF,UAAAA;AAAA,QACA,WAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,QACA,aAAA;AAAA,QACA,GAAA;AAAA,QACA,UAAA,EACE,CAAC,EACC,MAAA,CAAO,WACP,MAAA,CAAO,cAAA,IACN,MAAA,CAAO,KAAA,IAAS,OAAO,KAAA,CAAM,cAAA,IAC9B,MAAA,CAAO,oBAAA,CAAA,IACJ,UAAU,MAAA,CAAO,UAAA;AAAA,QACxB,QAAA,EAAU,MAAM,MAAA,CAAO,QAAA,KAAa,SAAY,KAAA,CAAM,QAAA,GAAW,MAAM,MAAA,CAAO;AAAA,OAChF;AAAA,IACF,CAAC,CAAA;AACD,IAAA,MAAM,OAAA,GAAUL,aAAS,MAAM,UAAA,CAAW,MAAM,UAAA,IAAc,CAAC,CAAC,iBAAA,CAAkB,SAAS,CAAA;AAC3F,IAAA,MAAM,YAAA,GAAeA,aAAS,OAAO;AAAA,MACnC,CAAC,CAAA,EAAG,KAAA,CAAM,SAAS,CAAA,gBAAA,CAAkB,GAAG,OAAA,CAAQ,KAAA;AAAA,MAChD,CAAC,CAAA,EAAG,KAAA,CAAM,SAAS,WAAW,GAAG;AAAA,KACnC,CAAE,CAAA;AACF,IAAA,MAAM,UAAA,GAAaA,aAAS,MAAM;AAChC,MAAA,MAAM,EAAE,WAAU,GAAI,KAAA;AACtB,MAAA,OAAO;AAAA,QACL,CAAC,CAAA,EAAG,SAAS,CAAA,aAAA,CAAe,GAAG,IAAA;AAAA,QAC/B,CAAC,CAAA,EAAG,SAAS,CAAA,SAAA,CAAW,GAAG,CAAC,OAAA,CAAQ;AAAA,OACtC;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,MAAA,GAASA,aAAS,MAAM;AAC5B,MAAA,MAAM;AAAA,QACJ,cAAc,YAAA,CAAa,iBAAA,CAAkB,KAAA,CAAM,KAAA,CAAM,OAAO,SAAS,CAAA;AAAA,QACzE,OAAA,GAAU;AAAA,UACR,KAAA,CAAM,MAAA;AACV,MAAA,OAAO,YAAA,CAAa,iBAAA,CAAkB,WAAA,EAAc,OAAO,CAAA;AAAA,IAC7D,CAAC,CAAA;AAED,IAAA,MAAM,cAAA,GAAiBA,YAAA;AAAA,MAAS,MAAA,CAC7B,MAAM,MAAA,CAAO,gBAAA,IAAoB,aAAa,KAAA,CAAM,gBAAA,KAAqB,OAAO,EAAC,CAAA,CAAA;AAAA,QAChF,KAAA,CAAM;AAAA;AACR,KACF;AAEA,IAAA,MAAM,QAAA,GAAWA,aAAS,MAAM;AAC9B,MAAA,MAAM,EAAE,WAAA,EAAa,OAAA,GAAU,CAAA,KAAM,KAAA,CAAM,MAAA;AAC3C,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,eAAe,KAAA,EAAO;AAAA,QAC7C,OAAA,EAAS,OAAA;AAAA,QACT,QAAA,EAAU,WAAA;AAAA,QACV,MAAA,EAAQ,UAAU,WAAA,GAAc,CAAA;AAAA,QAChC,GAAG,KAAA,CAAM;AAAA,OACV,CAAA;AAAA,IACH,CAAC,CAAA;AAED,IAAA,MAAM,aAAA,GAAgBA,aAAS,MAAM;AACnC,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,OAAOQ,wBAAA;AAAA,UACL,SAAS,KAAA,CAAO,QAAA;AAAA,UAChB,SAAS,KAAA,CAAO,MAAA;AAAA,UAChB,aAAa,UAAA,CAAW,KAAA;AAAA,UACxB,aAAa,aAAA,CAAc,KAAA;AAAA,UAC3B,aAAa,KAAA,CAAM;AAAA,SACrB;AAAA,MACF;AACA,MAAA,OAAO,MAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,SAAA,GAAYR,aAAS,MAAM;AAC/B,MAAA,MAAM,EAAE,SAAA,EAAW,MAAA,EAAO,GAAI,KAAA;AAC9B,MAAA,IAAI,eAAe,EAAC;AACpB,MAAA,IAAI,aAAA,CAAc,SAASS,qBAAA,EAAe;AACxC,QAAA,MAAM,iBAAA,GAAoB,CAAA,EAAG,SAAS,CAAA,KAAA,CAAA,EACpC,EAAE,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,WAAA,EAAa,aAAA,EAAe,YAAA,EAAa,GAC1E,aAAA,CAAc,KAAA;AAClB,QAAA,YAAA,GAAe;AAAA,UACb,CAAC,CAAA,EAAG,iBAAiB,CAAA,SAAA,CAAW,GAAG,OAAO,OAAA,KAAY,QAAA;AAAA,UACtD,CAAC,CAAA,EAAG,iBAAiB,CAAA,eAAA,CAAiB,GAAG,YAAA;AAAA,UACzC,CAAC,CAAA,EAAG,iBAAiB,CAAA,cAAA,CAAgB,GAAG,WAAA;AAAA,UACxC,CAAC,CAAA,EAAG,iBAAiB,CAAA,UAAA,CAAY,GAAG,OAAO,QAAA,IAAY,QAAA;AAAA,UACvD,CAAC,CAAA,EAAG,iBAAiB,CAAA,gBAAA,CAAkB,GAAG,aAAA;AAAA,UAC1C,CAAC,CAAA,EAAG,iBAAiB,CAAA,eAAA,CAAiB,GAAG;AAAA,SAC3C;AAAA,MACF;AACA,MAAA,OAAO,MAAA,CAAO,MAAA;AAAA,QACZ;AAAA,UACE,CAAC,CAAA,EAAG,SAAS,CAAA,KAAA,CAAO,GAAG,IAAA;AAAA,UACvB,CAAC,CAAA,EAAG,SAAS,aAAa,GAAG,KAAA,CAAM,OAAO,WAAA,KAAgB,CAAA;AAAA,UAC1D,CAAC,CAAA,EAAG,SAAS,CAAA,YAAA,CAAc,GAAG,IAAA;AAAA,UAC9B,CAAC,MAAA,CAAO,KAAA,IAAS,EAAE,GAAG,IAAA;AAAA,UACtB,CAAC,MAAA,CAAO,SAAA,IAAa,EAAE,GAAG,IAAA;AAAA,UAC1B,CAAC,CAAA,EAAG,SAAS,CAAA,YAAA,CAAc,GAAG,WAAW,KAAA,CAAM,WAAA;AAAA,UAC/C,CAAC,CAAA,EAAG,SAAS,CAAA,mBAAA,CAAqB,GAAG,MAAA,CAAO,MAAA;AAAA,UAC5C,CAAC,CAAA,EAAG,SAAS,CAAA,qBAAA,CAAuB,GAAG,cAAA,CAAe;AAAA,SACxD;AAAA,QACA;AAAA,OACF;AAAA,IACF,CAAC,CAAA;AAED,IAAA,MAAM,cAAA,GAAiBT,aAAS,MAAM;AACpC,MAAA,MAAM,SAAwB,EAAC;AAC/B,MAAA,IAAI,aAAA,CAAc,SAASS,qBAAA,EAAe;AACxC,QAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAS,GAAI,aAAA,CAAc,KAAA;AAC5C,QAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,UAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAClB,UAAA,MAAA,CAAO,IAAA,GAAO,GAAG,OAAO,CAAA,EAAA,CAAA;AAAA,QAC1B;AACA,QAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,UAAA,MAAA,CAAO,QAAA,GAAW,QAAA;AAClB,UAAA,MAAA,CAAO,KAAA,GAAQ,GAAG,QAAQ,CAAA,EAAA,CAAA;AAAA,QAC5B;AAAA,MACF;AACA,MAAA,OAAO,UAAA,GACH,MAAA,GACA,EAAE,KAAA,EAAO,GAAG,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,EAAA,CAAA,EAAM,MAAA,EAAQ,CAAA,EAAG,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,EAAA,CAAA,EAAK;AAAA,IAC7E,CAAC,CAAA;AAED,IAAA,MAAM,eAAA,GAAkBN,OAAA,CAAe,EAAE,CAAA;AACzC,IAAA,MAAM,YAAA,GAAeH,YAAA,CAAS,MAAM,YAAA,CAAa,aAAa,KAAK,CAAA;AACnE,IAAA,MAAM,SAAA,GAAYA,YAAA,CAAS,MAAM,KAAA,CAAM,OAAO,SAAS,CAAA;AACvD,IAAA,MAAM,WAAA,GAAcA,YAAA;AAAA,MAAS,MAC3B,YAAA,CAAa,KAAA,CAAM,IAAA,CAAK,CAAC,EAAE,GAAA,EAAI,KAAM,SAAA,CAAU,KAAA,KAAU,GAAG;AAAA,KAC9D;AAEA,IAAA,MAAM,YAAA,GAAe,CAAC,IAAA,KAAoB;AACxC,MAAA,MAAM,YAAA,GAAA,CAAe,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,MAAA,IAAS,IAAA,GAAO,IAAA;AAC3C,MAAA,IAAI,EAAE,IAAA,KAAS,YAAA,IAAiB,WAAA,CAAY,KAAA,IAAS,YAAY,KAAA,CAAM,YAAA,CAAA;AACrE,QAAA,OAAO,IAAA;AACT,MAAA,IACEU,qBAAA;AAAA,QACE,YAAA;AAAA,QACA,IAAA,IAAQ,WAAA,CAAY,KAAA,GAAQ,MAAA,GAAY,YAAY,KAAA,CAAM;AAAA,OAC5D;AAEA,QAAA,OAAO,IAAA;AACT,MAAA,MAAM,KAAA,GAAQ,EAAE,MAAA,EAAQ,KAAA,CAAM,QAAQ,GAAA,EAAK,SAAA,CAAU,OAAO,YAAA,EAAa;AACzE,MAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAc,YAAA,CAAa,KAAA,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAAC,SAAA;AAAA,MACE,WAAA;AAAA,MACA,MAAM;;AACJ,QAAA,eAAA,CAAgB,KAAA,GAAA,CAAA,CAAQ,EAAA,GAAA,WAAA,CAAY,KAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,iBAAgB,EAAC;AAAA,MAC9D,CAAA;AAAA,MACA,EAAE,WAAW,IAAA;AAAK,KACpB;AAEA,IAAA,MAAM,eAAe,MAAM;AACzB,MAAA,eAAA,CAAgB,QAAQ,EAAC;AACzB,MAAA,YAAA,CAAa,EAAE,CAAA;AAAA,IACjB,CAAA;AACA,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,YAAA,CAAa,gBAAgB,KAAK,CAAA;AAAA,IACpC,CAAA;AAEA,IAAA,MAAM,QAAA,GAAWC,sBAAc,MAAM;;AACnC,MAAA,OAAO,CAAC,EAAA,CAAC,EAAA,GAAA,eAAA,CAAgB,KAAA,KAAhB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAuB,MAAA,CAAA;AAAA,IAClC,CAAC,CAAA;AAED,IAAA,MAAM,eAAA,GAAkBZ,aAAS,OAAO;AAAA,MACtC,WAAW,KAAA,CAAM,SAAA;AAAA,MACjB,eAAA,EAAiB,CAAC,IAAA,KAAoB;AACpC,QAAA,eAAA,CAAgB,KAAA,GAAQ,QAAQ,EAAC;AAAA,MACnC,CAAA;AAAA,MACA,eAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA,EAAS,MAAM,MAAA,CAAO;AAAA,KACxB,CAAE,CAAA;AAEF,IAAA,OAAO;AAAA,MACL,YAAA;AAAA,MACA,UAAA;AAAA,MACA,eAAA,EAAiB,CAAC,MAAA,EAAgC,aAAA,KAA6B;AAC7E,QAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AACpB,QAAA,MAAM,SAAA,GAAY;AAAA,UAChB,MAAA;AAAA,UACA,KAAK,MAAA,CAAO,SAAA;AAAA,UACZ,SAAA,EAAW,aAAA;AAAA,UACX,gBAAA,EAAkBa,8BAAoB,MAAM;AAAA,SAC9C;AACA,QAAA,YAAA,CAAa,aAAa,SAAS,CAAA;AAAA,MACrC,CAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,kBACAC,sBAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,gBAAA;AAAA,mBACAnB,mBAAA;AAAA,SACAoB,KAAA;AAAA,MAEA,OAAA;AAAA,MACA,eAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;;"}
1
+ {"version":3,"file":"HeaderCell.vue2.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCell.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-11-25 08:54:01\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { PropType, CSSProperties } from 'vue'\nimport type { FilterKey, FinallyColumnType, SortOrder } from '../interface'\n\nimport { defineComponent, computed, inject, ref, watch, h } from 'vue'\nimport { Tooltip } from 'ant-design-vue'\nimport { MenuOutlined } from '@ant-design/icons-vue'\nimport { useInjectTable } from '../context/TableContext'\nimport { RenderVNode, RenderSlot } from '../../utils/renderVNode'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ASCEND, DESCEND, getMultiplePriority } from '../../hooks/useSorter'\nimport { getCellFixedInfo } from '../../utils/fixUtil'\nimport { useInjectHeader } from '../context/HeaderContext'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectPopup } from '../context/PopupContext'\nimport { isEqual } from '@pro-design-vue/utils'\nimport useColumnDragHandler from '../Drag/useColumnDragHandler'\nimport supportSticky from '../../utils/supportSticky'\nimport eagerComputed from '../../utils/eagerComputed'\nimport Sorter from './Sorter.vue'\nimport DragHandle from './DragHandle.vue'\nimport FilterDropdown from '../Filter/FilterDropdown.vue'\nimport FilterItems from '../Filter/FilterItems.vue'\n\nexport default defineComponent({\n name: 'TableHeaderCell',\n components: {\n Sorter,\n Tooltip,\n DragHandle,\n FilterDropdown,\n MenuOutlined,\n RenderVNode,\n FilterItems,\n },\n props: {\n component: { type: String, default: 'div' },\n prefixCls: String as PropType<string>,\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n wrapText: { type: Boolean as PropType<boolean>, default: false },\n level: { type: Number as PropType<number>, default: 1 },\n additionalProps: Object,\n },\n setup(props) {\n const tableContext = useInjectTable()\n const headerContext = useInjectHeader()\n const tableSlotsContext = useInjectSlots()\n const { showPopupContent } = useInjectPopup()\n\n const columnDragging = computed(\n () => tableContext.draggingColumnKey.value === props.column.columnKey,\n )\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n const domRef = ref<HTMLDivElement>()\n\n if (props.level === 1) {\n useColumnDragHandler({\n column: computed(() => props.column),\n columnKey: computed(() => props.column.columnKey),\n disabled: computed(() => false),\n domRef,\n })\n }\n\n const showSorterTooltip = computed(() => {\n return undefined === props.column.showSorterTooltip\n ? tableContext.props.showSorterTooltip\n : props.column.showSorterTooltip\n })\n\n const tooltipProps = computed(() =>\n 'boolean' == typeof showSorterTooltip.value ? {} : showSorterTooltip.value,\n )\n\n const sorterInfo = computed(() => {\n const column = props.column\n const columnKey = column.columnKey\n const sorterState = tableContext.sorterStates.value.find(({ key }) => key === columnKey)\n const sorterOrder = sorterState ? sorterState.sortOrder : null\n const sortDirections = column.sortDirections || ['asc', 'desc']\n const nextSortOrder = sorterOrder\n ? sortDirections[sortDirections.indexOf(sorterOrder) + 1]\n : sortDirections[0]\n\n const { cancelSort, triggerAsc, triggerDesc } = tableContext.locale.value || {}\n let tip = cancelSort\n if (nextSortOrder === DESCEND) {\n tip = triggerDesc\n } else if (nextSortOrder === ASCEND) {\n tip = triggerAsc\n }\n return {\n columnKey,\n sorterState,\n sorterOrder,\n sortDirections,\n nextSortOrder,\n tip,\n showFilter:\n !!(\n column.filters ||\n column.filterDropdown ||\n (column.slots && column.slots.filterDropdown) ||\n column.customFilterDropdown\n ) && false !== column.showFilter,\n wrapText: props.column.wrapText === undefined ? props.wrapText : props.column.wrapText,\n }\n })\n const hasIcon = computed(() => sorterInfo.value.showFilter || !!tableSlotsContext.menuPopup)\n const cellBoxClass = computed(() => ({\n [`${props.prefixCls}-has-icon-column`]: hasIcon.value,\n [`${props.prefixCls}-cell-box`]: true,\n }))\n const titleClass = computed(() => {\n const { prefixCls } = props\n return {\n [`${prefixCls}-column-title`]: true,\n [`${prefixCls}-cell-box`]: !hasIcon.value,\n }\n })\n\n const widths = computed(() => {\n const {\n columnIndex = tableContext.columnKeyIndexMap.value[props.column.columnKey],\n colSpan = 1,\n } = props.column\n return tableContext.getColumnPosition(columnIndex!, colSpan)\n })\n\n const customColProps = computed(() =>\n (props.column.customHeaderCell || tableContext.props.customHeaderCell || (() => ({})))(\n props.column,\n ),\n )\n\n const colProps = computed(() => {\n const { columnIndex, colSpan = 1 } = props.column\n return Object.assign({}, customColProps.value, {\n colspan: colSpan,\n colstart: columnIndex,\n colend: colSpan + columnIndex - 1,\n ...props.additionalProps,\n })\n })\n\n const cellFixedInfo = computed(() => {\n if (autoHeight) {\n return getCellFixedInfo(\n colProps.value!.colstart,\n colProps.value!.colend,\n tableContext.allColumns.value as any,\n tableContext.stickyOffsets.value,\n tableContext.props.direction,\n )\n }\n return undefined\n })\n\n const cellClass = computed(() => {\n const { prefixCls, column } = props\n let cellFixedCls = {}\n if (cellFixedInfo.value && supportSticky) {\n const autoCellPrefixCls = `${prefixCls}-cell`,\n { fixLeft, fixRight, firstFixLeft, lastFixLeft, firstFixRight, lastFixRight } =\n cellFixedInfo.value\n cellFixedCls = {\n [`${autoCellPrefixCls}-fix-left`]: typeof fixLeft === 'number',\n [`${autoCellPrefixCls}-fix-left-first`]: firstFixLeft,\n [`${autoCellPrefixCls}-fix-left-last`]: lastFixLeft,\n [`${autoCellPrefixCls}-fix-right`]: typeof fixRight == 'number',\n [`${autoCellPrefixCls}-fix-right-first`]: firstFixRight,\n [`${autoCellPrefixCls}-fix-right-last`]: lastFixRight,\n }\n }\n return Object.assign(\n {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-first-cell`]: props.column.columnIndex === 0,\n [`${prefixCls}-header-cell`]: true,\n [column.class || '']: true,\n [column.className || '']: true,\n [`${prefixCls}-column-sort`]: sorterInfo.value.sorterOrder,\n [`${prefixCls}-column-has-sorters`]: column.sorter,\n [`${prefixCls}-drag-column-dragging`]: columnDragging.value,\n },\n cellFixedCls,\n )\n })\n\n const componentStyle = computed(() => {\n const styles: CSSProperties = {}\n if (cellFixedInfo.value && supportSticky) {\n const { fixLeft, fixRight } = cellFixedInfo.value\n if (typeof fixLeft == 'number') {\n styles.position = 'sticky'\n styles.left = `${fixLeft}px`\n }\n if (typeof fixRight == 'number') {\n styles.position = 'sticky'\n styles.right = `${fixRight}px`\n }\n }\n return autoHeight\n ? styles\n : { width: `${widths.value.width}px`, height: `${props.column.height}px` }\n })\n\n const selectedKeysRef = ref<FilterKey>([])\n const filterStates = computed(() => tableContext.filterStates.value)\n const columnKey = computed(() => props.column.columnKey)\n const filterState = computed(() =>\n filterStates.value.find(({ key }) => columnKey.value === key),\n )\n\n const changeFilter = (keys: FilterKey) => {\n const filteredKeys = keys?.length ? keys : null\n if (!(null !== filteredKeys || (filterState.value && filterState.value.filteredKeys)))\n return null\n if (\n isEqual(\n filteredKeys,\n null == filterState.value ? undefined : filterState.value.filteredKeys,\n )\n )\n return null\n const state = { column: props.column, key: columnKey.value, filteredKeys }\n tableContext?.changeFilter(state)\n }\n\n watch(\n filterState,\n () => {\n selectedKeysRef.value = filterState.value?.filteredKeys || []\n },\n { immediate: true },\n )\n\n const clearFilters = () => {\n selectedKeysRef.value = []\n changeFilter([])\n }\n const confirm = () => {\n changeFilter(selectedKeysRef.value)\n }\n\n const filtered = eagerComputed(() => {\n return !!selectedKeysRef.value?.length\n })\n\n const menuFilterProps = computed(() => ({\n prefixCls: props.prefixCls,\n setSelectedKeys: (keys: FilterKey) => {\n selectedKeysRef.value = keys || []\n },\n selectedKeysRef,\n confirm,\n clearFilters,\n filters: props.column.filters,\n }))\n\n const getPopupContainer = () => {\n return document.body\n }\n\n return {\n tableContext,\n sorterInfo,\n getPopupContainer,\n handleSortClick: (column: FinallyColumnType<any>, nextSortOrder: SortOrder) => {\n if (!column.sorter) return\n const sortState = {\n column,\n key: column.columnKey,\n sortOrder: nextSortOrder,\n multiplePriority: getMultiplePriority(column),\n }\n tableContext.changeSorter(sortState)\n },\n cellClass,\n widths,\n colProps,\n RenderSlot,\n titleClass,\n domRef,\n autoHeight,\n componentStyle,\n headerContext,\n tableSlotsContext,\n cellBoxClass,\n showPopupContent,\n FilterItems,\n h,\n\n hasIcon,\n menuFilterProps,\n filtered,\n tooltipProps,\n showSorterTooltip,\n }\n },\n})\n</script>\n\n<template>\n <component\n v-if=\"colProps.colspan\"\n ref=\"domRef\"\n :is=\"component\"\n tabindex=\"-1\"\n role=\"cell\"\n :class=\"cellClass\"\n :style=\"componentStyle\"\n v-bind=\"colProps\"\n @click=\"handleSortClick(column, sorterInfo.nextSortOrder!)\"\n >\n <component :is=\"hasIcon ? 'div' : RenderSlot\" :class=\"cellBoxClass\">\n <span :class=\"titleClass\">\n <Tooltip v-if=\"column.sorter && showSorterTooltip\" v-bind=\"tooltipProps\" :getPopupContainer>\n <template #title>\n {{ sorterInfo.tip }}\n </template>\n <div :class=\"`${prefixCls}-column-sorters`\" :data-tip=\"sorterInfo.tip\">\n <Sorter :column=\"column\" v-bind=\"sorterInfo\" />\n </div>\n </Tooltip>\n <Sorter v-else :column=\"column\" v-bind=\"sorterInfo\" />\n </span>\n <FilterDropdown\n v-if=\"sorterInfo.showFilter\"\n :prefix-cls=\"`${prefixCls}-filter`\"\n :column=\"column\"\n />\n <span\n v-if=\"column.showMenu && tableSlotsContext.menuPopup\"\n :class=\"[\n `${prefixCls}-menu-popup-trigger`,\n 'hover' === column.showMenu && `${prefixCls}-menu-popup-trigger-hover`,\n ]\"\n @click.stop=\"\n showPopupContent(tableSlotsContext.menuPopup, $event, {\n column: column.originColumn,\n filter: menuFilterProps,\n })\n \"\n >\n <RenderVNode\n v-if=\"tableSlotsContext.menuIcon\"\n :vnode=\"\n tableSlotsContext.menuIcon({\n column: column.originColumn!,\n filtered: filtered,\n })\n \"\n />\n <MenuOutlined v-else />\n </span>\n </component>\n <DragHandle\n v-if=\"column.resizable && !(column.children && column.children.length)\"\n :prefix-cls=\"prefixCls\"\n :width=\"widths.width\"\n :min-width=\"widths.minWidth\"\n :max-width=\"widths.maxWidth\"\n :column=\"column\"\n />\n </component>\n</template>\n"],"names":["defineComponent","Sorter","Tooltip","DragHandle","FilterDropdown","MenuOutlined","RenderVNode","FilterItems","useInjectTable","useInjectHeader","useInjectSlots","useInjectPopup","computed","inject","AUTO_HEADER_HEIGHT","ref","useColumnDragHandler","columnKey","DESCEND","ASCEND","getCellFixedInfo","supportSticky","isEqual","watch","eagerComputed","getMultiplePriority","RenderSlot","h"],"mappings":"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"}
@@ -36,37 +36,34 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
36
36
  2
37
37
  /* CLASS */
38
38
  ),
39
- _ctx.showCellPopover ? (vue.openBlock(), vue.createBlock(
40
- _component_Popover,
41
- vue.normalizeProps(vue.mergeProps({ key: 0 }, _ctx.popoverProps)),
42
- vue.createSlots({
43
- content: vue.withCtx(() => [
44
- _ctx.tableSlotsContext.headerCellPopover ? (vue.openBlock(), vue.createBlock(_component_RenderVNode, {
45
- key: 0,
46
- vnode: _ctx.tableSlotsContext.headerCellPopover({
47
- title: _ctx.column.title,
48
- column: _ctx.column.originColumn
49
- })
50
- }, null, 8, ["vnode"])) : vue.createCommentVNode("v-if", true)
51
- ]),
52
- default: vue.withCtx(() => [
53
- vue.createVNode(_component_ExclamationCircleOutlined, { style: { "margin-inline-start": "3px", "font-size": "12px" } })
54
- ]),
55
- _: 2
56
- /* DYNAMIC */
57
- }, [
58
- !((_a = _ctx.popoverProps) == null ? void 0 : _a.title) ? {
59
- name: "title",
60
- fn: vue.withCtx(() => [
61
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.title)))
62
- ]),
63
- key: "0"
64
- } : void 0
39
+ _ctx.showCellPopover ? (vue.openBlock(), vue.createBlock(_component_Popover, vue.mergeProps({ key: 0 }, _ctx.popoverProps, { getPopupContainer: _ctx.getPopupContainer }), vue.createSlots({
40
+ content: vue.withCtx(() => [
41
+ _ctx.tableSlotsContext.headerCellPopover ? (vue.openBlock(), vue.createBlock(_component_RenderVNode, {
42
+ key: 0,
43
+ vnode: _ctx.tableSlotsContext.headerCellPopover({
44
+ title: _ctx.column.title,
45
+ column: _ctx.column.originColumn
46
+ })
47
+ }, null, 8, ["vnode"])) : vue.createCommentVNode("v-if", true)
65
48
  ]),
66
- 1040
67
- /* FULL_PROPS, DYNAMIC_SLOTS */
68
- )) : vue.createCommentVNode("v-if", true),
69
- _ctx.column.headerTooltip ? (vue.openBlock(), vue.createBlock(_component_Tooltip, { key: 1 }, {
49
+ default: vue.withCtx(() => [
50
+ vue.createVNode(_component_ExclamationCircleOutlined, { style: { "margin-inline-start": "3px", "font-size": "12px" } })
51
+ ]),
52
+ _: 2
53
+ /* DYNAMIC */
54
+ }, [
55
+ !((_a = _ctx.popoverProps) == null ? void 0 : _a.title) ? {
56
+ name: "title",
57
+ fn: vue.withCtx(() => [
58
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.title)))
59
+ ]),
60
+ key: "0"
61
+ } : void 0
62
+ ]), 1040, ["getPopupContainer"])) : vue.createCommentVNode("v-if", true),
63
+ _ctx.column.headerTooltip ? (vue.openBlock(), vue.createBlock(_component_Tooltip, {
64
+ key: 1,
65
+ getPopupContainer: _ctx.getPopupContainer
66
+ }, {
70
67
  title: vue.withCtx(() => [
71
68
  _ctx.column.headerTooltip === true ? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(_ctx.title), { key: 0 })) : (vue.openBlock(), vue.createElementBlock(
72
69
  vue.Fragment,
@@ -87,7 +84,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
87
84
  ]),
88
85
  _: 1
89
86
  /* STABLE */
90
- })) : vue.createCommentVNode("v-if", true)
87
+ }, 8, ["getPopupContainer"])) : vue.createCommentVNode("v-if", true)
91
88
  ], 14, _hoisted_1);
92
89
  }
93
90
  var HeaderCellTitle = /* @__PURE__ */ _pluginVue_exportHelper.default(HeaderCellTitle_vue_vue_type_script_lang.default, [["render", _sfc_render]]);
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCellTitle.vue.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCellTitle.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-12-17 11:35:56\n * @LastEditors: shen\n * @LastEditTime: 2025-09-29 13:25:11\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { FinallyColumnType } from '../interface'\nimport type { PropType } from 'vue'\n\nimport { defineComponent, computed, h, renderSlot, Fragment, inject } from 'vue'\nimport { Popover, Tooltip } from 'ant-design-vue'\nimport { ExclamationCircleOutlined, InfoCircleOutlined } from '@ant-design/icons-vue'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectTable } from '../context/TableContext'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ensureValidVNode } from '../../utils/util'\nimport { RenderVNode } from '@pro-design-vue/utils'\n\nexport default defineComponent({\n name: 'HeaderCellTitle',\n components: { ExclamationCircleOutlined, InfoCircleOutlined, Popover, Tooltip, RenderVNode },\n props: {\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n prefixCls: String as PropType<string>,\n wrapText: Boolean as PropType<boolean>,\n },\n setup(props) {\n const tableSlotsContext = useInjectSlots()\n const tableContext = useInjectTable()\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n\n const sortColumns = computed(() =>\n tableContext.sorterStates.value.map(({ column, sortOrder }) => ({\n column,\n order: sortOrder,\n })),\n )\n\n const title = computed(() =>\n h(Fragment, [\n renderSlot(\n tableSlotsContext,\n 'headerCell',\n {\n title: props.column.title,\n column: props.column.originColumn,\n },\n () => {\n return [\n typeof props.column.title == 'function'\n ? props.column.title({\n column: props.column.originColumn!,\n sortColumns: sortColumns.value,\n sortColumn: sortColumns.value[0]?.column,\n sortOrder: sortColumns.value[0]?.order,\n })\n : props.column.title,\n ]\n },\n ),\n ]),\n )\n\n const isShowPopover = computed(\n () =>\n !!ensureValidVNode(\n tableSlotsContext.headerCellPopover?.({\n title: props.column.title,\n column: props.column.originColumn!,\n }) ?? [],\n ),\n )\n\n const showCellPopover = computed(() => {\n return undefined === props.column.showCellPopover\n ? isShowPopover.value\n : props.column.showCellPopover\n })\n\n const popoverProps = computed(() =>\n 'boolean' == typeof showCellPopover.value ? {} : showCellPopover.value,\n )\n\n return {\n isShowPopover,\n tableSlotsContext,\n title,\n autoHeight,\n popoverProps,\n showCellPopover,\n altTitle: computed(() =>\n props.column.showTitle && typeof props.column.title == 'string' ? props.column.title : '',\n ),\n }\n },\n})\n</script>\n\n<template>\n <span\n :key=\"String('headerCell' in tableSlotsContext)\"\n :class=\"{\n [`${prefixCls}-header-cell-title-inner`]: true,\n }\"\n :title=\"altTitle\"\n :style=\"`justify-content: ${column.align}`\"\n >\n <span\n :class=\"{\n [`${prefixCls}-cell-wrap-text`]: wrapText,\n [`${prefixCls}-cell-text-ellipsis`]: column.ellipsis !== false && !autoHeight,\n }\"\n >\n <component :is=\"title\"></component>\n </span>\n <template v-if=\"showCellPopover\">\n <Popover v-bind=\"popoverProps\">\n <template #title v-if=\"!popoverProps?.title\">\n <component :is=\"title\"></component>\n </template>\n <template #content>\n <RenderVNode\n v-if=\"tableSlotsContext.headerCellPopover\"\n :vnode=\"\n tableSlotsContext.headerCellPopover({\n title: column.title,\n column: column.originColumn!,\n })\n \"\n />\n </template>\n <ExclamationCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n </Popover>\n </template>\n <template v-if=\"column.headerTooltip\">\n <Tooltip>\n <InfoCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n <template #title>\n <component :is=\"title\" v-if=\"column.headerTooltip === true\"></component>\n <template v-else>{{ column.headerTooltip }}</template>\n </template>\n </Tooltip>\n </template>\n </span>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_openBlock","_createBlock","_resolveDynamicComponent","_normalizeProps","_mergeProps","_createSlots","_withCtx","_createVNode","_Fragment","_createTextVNode","_toDisplayString"],"mappings":"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"}
1
+ {"version":3,"file":"HeaderCellTitle.vue.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCellTitle.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-12-17 11:35:56\n * @LastEditors: shen\n * @LastEditTime: 2025-11-25 08:54:58\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { FinallyColumnType } from '../interface'\nimport type { PropType } from 'vue'\n\nimport { defineComponent, computed, h, renderSlot, Fragment, inject } from 'vue'\nimport { Popover, Tooltip } from 'ant-design-vue'\nimport { ExclamationCircleOutlined, InfoCircleOutlined } from '@ant-design/icons-vue'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectTable } from '../context/TableContext'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ensureValidVNode } from '../../utils/util'\nimport { RenderVNode } from '@pro-design-vue/utils'\n\nexport default defineComponent({\n name: 'HeaderCellTitle',\n components: { ExclamationCircleOutlined, InfoCircleOutlined, Popover, Tooltip, RenderVNode },\n props: {\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n prefixCls: String as PropType<string>,\n wrapText: Boolean as PropType<boolean>,\n },\n setup(props) {\n const tableSlotsContext = useInjectSlots()\n const tableContext = useInjectTable()\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n\n const sortColumns = computed(() =>\n tableContext.sorterStates.value.map(({ column, sortOrder }) => ({\n column,\n order: sortOrder,\n })),\n )\n\n const title = computed(() =>\n h(Fragment, [\n renderSlot(\n tableSlotsContext,\n 'headerCell',\n {\n title: props.column.title,\n column: props.column.originColumn,\n },\n () => {\n return [\n typeof props.column.title == 'function'\n ? props.column.title({\n column: props.column.originColumn!,\n sortColumns: sortColumns.value,\n sortColumn: sortColumns.value[0]?.column,\n sortOrder: sortColumns.value[0]?.order,\n })\n : props.column.title,\n ]\n },\n ),\n ]),\n )\n\n const isShowPopover = computed(\n () =>\n !!ensureValidVNode(\n tableSlotsContext.headerCellPopover?.({\n title: props.column.title,\n column: props.column.originColumn!,\n }) ?? [],\n ),\n )\n\n const showCellPopover = computed(() => {\n return undefined === props.column.showCellPopover\n ? isShowPopover.value\n : props.column.showCellPopover\n })\n\n const popoverProps = computed(() =>\n 'boolean' == typeof showCellPopover.value ? {} : showCellPopover.value,\n )\n\n const getPopupContainer = () => {\n return document.body\n }\n\n return {\n getPopupContainer,\n isShowPopover,\n tableSlotsContext,\n title,\n autoHeight,\n popoverProps,\n showCellPopover,\n altTitle: computed(() =>\n props.column.showTitle && typeof props.column.title == 'string' ? props.column.title : '',\n ),\n }\n },\n})\n</script>\n\n<template>\n <span\n :key=\"String('headerCell' in tableSlotsContext)\"\n :class=\"{\n [`${prefixCls}-header-cell-title-inner`]: true,\n }\"\n :title=\"altTitle\"\n :style=\"`justify-content: ${column.align}`\"\n >\n <span\n :class=\"{\n [`${prefixCls}-cell-wrap-text`]: wrapText,\n [`${prefixCls}-cell-text-ellipsis`]: column.ellipsis !== false && !autoHeight,\n }\"\n >\n <component :is=\"title\"></component>\n </span>\n <template v-if=\"showCellPopover\">\n <Popover v-bind=\"popoverProps\" :getPopupContainer>\n <template #title v-if=\"!popoverProps?.title\">\n <component :is=\"title\"></component>\n </template>\n <template #content>\n <RenderVNode\n v-if=\"tableSlotsContext.headerCellPopover\"\n :vnode=\"\n tableSlotsContext.headerCellPopover({\n title: column.title,\n column: column.originColumn!,\n })\n \"\n />\n </template>\n <ExclamationCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n </Popover>\n </template>\n <template v-if=\"column.headerTooltip\">\n <Tooltip :getPopupContainer>\n <InfoCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n <template #title>\n <component :is=\"title\" v-if=\"column.headerTooltip === true\"></component>\n <template v-else>{{ column.headerTooltip }}</template>\n </template>\n </Tooltip>\n </template>\n </span>\n</template>\n"],"names":["_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_openBlock","_createBlock","_resolveDynamicComponent","_mergeProps","_createSlots","_withCtx","_createVNode","_Fragment","_createTextVNode","_toDisplayString"],"mappings":"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"}
@@ -69,7 +69,11 @@ var _sfc_main = vue.defineComponent({
69
69
  const popoverProps = vue.computed(
70
70
  () => "boolean" == typeof showCellPopover.value ? {} : showCellPopover.value
71
71
  );
72
+ const getPopupContainer = () => {
73
+ return document.body;
74
+ };
72
75
  return {
76
+ getPopupContainer,
73
77
  isShowPopover,
74
78
  tableSlotsContext,
75
79
  title,
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCellTitle.vue2.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCellTitle.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-12-17 11:35:56\n * @LastEditors: shen\n * @LastEditTime: 2025-09-29 13:25:11\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { FinallyColumnType } from '../interface'\nimport type { PropType } from 'vue'\n\nimport { defineComponent, computed, h, renderSlot, Fragment, inject } from 'vue'\nimport { Popover, Tooltip } from 'ant-design-vue'\nimport { ExclamationCircleOutlined, InfoCircleOutlined } from '@ant-design/icons-vue'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectTable } from '../context/TableContext'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ensureValidVNode } from '../../utils/util'\nimport { RenderVNode } from '@pro-design-vue/utils'\n\nexport default defineComponent({\n name: 'HeaderCellTitle',\n components: { ExclamationCircleOutlined, InfoCircleOutlined, Popover, Tooltip, RenderVNode },\n props: {\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n prefixCls: String as PropType<string>,\n wrapText: Boolean as PropType<boolean>,\n },\n setup(props) {\n const tableSlotsContext = useInjectSlots()\n const tableContext = useInjectTable()\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n\n const sortColumns = computed(() =>\n tableContext.sorterStates.value.map(({ column, sortOrder }) => ({\n column,\n order: sortOrder,\n })),\n )\n\n const title = computed(() =>\n h(Fragment, [\n renderSlot(\n tableSlotsContext,\n 'headerCell',\n {\n title: props.column.title,\n column: props.column.originColumn,\n },\n () => {\n return [\n typeof props.column.title == 'function'\n ? props.column.title({\n column: props.column.originColumn!,\n sortColumns: sortColumns.value,\n sortColumn: sortColumns.value[0]?.column,\n sortOrder: sortColumns.value[0]?.order,\n })\n : props.column.title,\n ]\n },\n ),\n ]),\n )\n\n const isShowPopover = computed(\n () =>\n !!ensureValidVNode(\n tableSlotsContext.headerCellPopover?.({\n title: props.column.title,\n column: props.column.originColumn!,\n }) ?? [],\n ),\n )\n\n const showCellPopover = computed(() => {\n return undefined === props.column.showCellPopover\n ? isShowPopover.value\n : props.column.showCellPopover\n })\n\n const popoverProps = computed(() =>\n 'boolean' == typeof showCellPopover.value ? {} : showCellPopover.value,\n )\n\n return {\n isShowPopover,\n tableSlotsContext,\n title,\n autoHeight,\n popoverProps,\n showCellPopover,\n altTitle: computed(() =>\n props.column.showTitle && typeof props.column.title == 'string' ? props.column.title : '',\n ),\n }\n },\n})\n</script>\n\n<template>\n <span\n :key=\"String('headerCell' in tableSlotsContext)\"\n :class=\"{\n [`${prefixCls}-header-cell-title-inner`]: true,\n }\"\n :title=\"altTitle\"\n :style=\"`justify-content: ${column.align}`\"\n >\n <span\n :class=\"{\n [`${prefixCls}-cell-wrap-text`]: wrapText,\n [`${prefixCls}-cell-text-ellipsis`]: column.ellipsis !== false && !autoHeight,\n }\"\n >\n <component :is=\"title\"></component>\n </span>\n <template v-if=\"showCellPopover\">\n <Popover v-bind=\"popoverProps\">\n <template #title v-if=\"!popoverProps?.title\">\n <component :is=\"title\"></component>\n </template>\n <template #content>\n <RenderVNode\n v-if=\"tableSlotsContext.headerCellPopover\"\n :vnode=\"\n tableSlotsContext.headerCellPopover({\n title: column.title,\n column: column.originColumn!,\n })\n \"\n />\n </template>\n <ExclamationCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n </Popover>\n </template>\n <template v-if=\"column.headerTooltip\">\n <Tooltip>\n <InfoCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n <template #title>\n <component :is=\"title\" v-if=\"column.headerTooltip === true\"></component>\n <template v-else>{{ column.headerTooltip }}</template>\n </template>\n </Tooltip>\n </template>\n </span>\n</template>\n"],"names":["defineComponent","ExclamationCircleOutlined","InfoCircleOutlined","Popover","Tooltip","RenderVNode","useInjectSlots","useInjectTable","inject","AUTO_HEADER_HEIGHT","computed","h","Fragment","renderSlot","ensureValidVNode"],"mappings":"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"}
1
+ {"version":3,"file":"HeaderCellTitle.vue2.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderCellTitle.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-12-17 11:35:56\n * @LastEditors: shen\n * @LastEditTime: 2025-11-25 08:54:58\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { FinallyColumnType } from '../interface'\nimport type { PropType } from 'vue'\n\nimport { defineComponent, computed, h, renderSlot, Fragment, inject } from 'vue'\nimport { Popover, Tooltip } from 'ant-design-vue'\nimport { ExclamationCircleOutlined, InfoCircleOutlined } from '@ant-design/icons-vue'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectTable } from '../context/TableContext'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { ensureValidVNode } from '../../utils/util'\nimport { RenderVNode } from '@pro-design-vue/utils'\n\nexport default defineComponent({\n name: 'HeaderCellTitle',\n components: { ExclamationCircleOutlined, InfoCircleOutlined, Popover, Tooltip, RenderVNode },\n props: {\n column: { type: Object as PropType<FinallyColumnType>, default: () => ({}) },\n prefixCls: String as PropType<string>,\n wrapText: Boolean as PropType<boolean>,\n },\n setup(props) {\n const tableSlotsContext = useInjectSlots()\n const tableContext = useInjectTable()\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n\n const sortColumns = computed(() =>\n tableContext.sorterStates.value.map(({ column, sortOrder }) => ({\n column,\n order: sortOrder,\n })),\n )\n\n const title = computed(() =>\n h(Fragment, [\n renderSlot(\n tableSlotsContext,\n 'headerCell',\n {\n title: props.column.title,\n column: props.column.originColumn,\n },\n () => {\n return [\n typeof props.column.title == 'function'\n ? props.column.title({\n column: props.column.originColumn!,\n sortColumns: sortColumns.value,\n sortColumn: sortColumns.value[0]?.column,\n sortOrder: sortColumns.value[0]?.order,\n })\n : props.column.title,\n ]\n },\n ),\n ]),\n )\n\n const isShowPopover = computed(\n () =>\n !!ensureValidVNode(\n tableSlotsContext.headerCellPopover?.({\n title: props.column.title,\n column: props.column.originColumn!,\n }) ?? [],\n ),\n )\n\n const showCellPopover = computed(() => {\n return undefined === props.column.showCellPopover\n ? isShowPopover.value\n : props.column.showCellPopover\n })\n\n const popoverProps = computed(() =>\n 'boolean' == typeof showCellPopover.value ? {} : showCellPopover.value,\n )\n\n const getPopupContainer = () => {\n return document.body\n }\n\n return {\n getPopupContainer,\n isShowPopover,\n tableSlotsContext,\n title,\n autoHeight,\n popoverProps,\n showCellPopover,\n altTitle: computed(() =>\n props.column.showTitle && typeof props.column.title == 'string' ? props.column.title : '',\n ),\n }\n },\n})\n</script>\n\n<template>\n <span\n :key=\"String('headerCell' in tableSlotsContext)\"\n :class=\"{\n [`${prefixCls}-header-cell-title-inner`]: true,\n }\"\n :title=\"altTitle\"\n :style=\"`justify-content: ${column.align}`\"\n >\n <span\n :class=\"{\n [`${prefixCls}-cell-wrap-text`]: wrapText,\n [`${prefixCls}-cell-text-ellipsis`]: column.ellipsis !== false && !autoHeight,\n }\"\n >\n <component :is=\"title\"></component>\n </span>\n <template v-if=\"showCellPopover\">\n <Popover v-bind=\"popoverProps\" :getPopupContainer>\n <template #title v-if=\"!popoverProps?.title\">\n <component :is=\"title\"></component>\n </template>\n <template #content>\n <RenderVNode\n v-if=\"tableSlotsContext.headerCellPopover\"\n :vnode=\"\n tableSlotsContext.headerCellPopover({\n title: column.title,\n column: column.originColumn!,\n })\n \"\n />\n </template>\n <ExclamationCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n </Popover>\n </template>\n <template v-if=\"column.headerTooltip\">\n <Tooltip :getPopupContainer>\n <InfoCircleOutlined style=\"margin-inline-start: 3px; font-size: 12px\" />\n <template #title>\n <component :is=\"title\" v-if=\"column.headerTooltip === true\"></component>\n <template v-else>{{ column.headerTooltip }}</template>\n </template>\n </Tooltip>\n </template>\n </span>\n</template>\n"],"names":["defineComponent","ExclamationCircleOutlined","InfoCircleOutlined","Popover","Tooltip","RenderVNode","useInjectSlots","useInjectTable","inject","AUTO_HEADER_HEIGHT","computed","h","Fragment","renderSlot","ensureValidVNode"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderExtraCell.vue.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderExtraCell.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-09-30 16:52:24\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { CSSProperties, PropType } from 'vue'\nimport type { FinallyColumnType, DefaultRecordType, Key } from '../interface'\n\nimport { defineComponent, inject, computed, Fragment, h } from 'vue'\nimport { Dropdown, Menu, MenuItem } from 'ant-design-vue'\nimport { DownOutlined } from '@ant-design/icons-vue'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { getCellFixedInfo } from '../../utils/fixUtil'\nimport { useInjectTable } from '../context/TableContext'\nimport supportSticky from '../../utils/supportSticky'\nimport eagerComputed from '../../utils/eagerComputed'\nimport Checkbox from '../Checkbox'\n\nexport default defineComponent({\n name: 'HeaderExtraCell',\n components: {\n Checkbox,\n Dropdown,\n AMenu: Menu,\n MenuItem,\n DownOutlined,\n },\n props: {\n component: { type: String, default: 'div' },\n prefixCls: String,\n column: { type: Object as PropType<FinallyColumnType<DefaultRecordType>>, default: () => ({}) },\n additionalProps: Object,\n },\n setup(props) {\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n const tableContext = useInjectTable()\n const { pageDataEnableRowKeys, getRecordByKey, mergedRowSelection } = tableContext\n const {\n checkedCurrentAll,\n checkedCurrentSome,\n allDisabled,\n allDisabledAndChecked,\n allDisabledSomeChecked,\n mergedSelections,\n setSelectedKeys,\n } = tableContext.selection\n\n const rowSelectionType = computed(() => tableContext.mergedRowSelection.value.type)\n const hideSelectAll = computed(() => tableContext.mergedRowSelection.value.hideSelectAll)\n const derivedSelectedKeySet = computed(() => tableContext.selection.derivedSelectedKeySet.value)\n const sortColumns = computed(() =>\n tableContext.sorterStates.value.map(({ column, sortOrder }) => ({\n column,\n order: sortOrder,\n })),\n )\n\n const title = computed(() => {\n return h(Fragment, [\n typeof props.column.title == 'function'\n ? props.column.title({\n column: props.column.originColumn!,\n sortColumns: sortColumns.value,\n sortColumn: sortColumns.value[0]?.column,\n sortOrder: sortColumns.value[0]?.order,\n })\n : props.column.title,\n ])\n })\n\n const cellFixedInfo = computed(() => {\n if (autoHeight) {\n const additionalProps = props.additionalProps!\n return getCellFixedInfo(\n additionalProps.colstart,\n additionalProps.colend,\n tableContext.allColumns.value,\n tableContext.stickyOffsets.value,\n tableContext.props.direction,\n )\n }\n return undefined\n })\n\n const cellClass = computed(() => {\n const { prefixCls } = props\n let cellFixedCls = {}\n if (cellFixedInfo.value && supportSticky) {\n const autoCellPrefixCls = `${prefixCls}-cell`,\n { fixLeft, fixRight, firstFixLeft, lastFixLeft, firstFixRight, lastFixRight } =\n cellFixedInfo.value\n cellFixedCls = {\n [`${autoCellPrefixCls}-fix-left`]: typeof fixLeft === 'number',\n [`${autoCellPrefixCls}-fix-left-first`]: firstFixLeft,\n [`${autoCellPrefixCls}-fix-left-last`]: lastFixLeft,\n [`${autoCellPrefixCls}-fix-right`]: typeof fixRight == 'number',\n [`${autoCellPrefixCls}-fix-right-first`]: firstFixRight,\n [`${autoCellPrefixCls}-fix-right-last`]: lastFixRight,\n }\n }\n return Object.assign(\n {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-header-cell`]: true,\n [`${prefixCls}-header-extra-cell`]: true,\n },\n cellFixedCls,\n )\n })\n\n return {\n cellClass,\n componentStyle: computed(() => {\n const styles: CSSProperties = {}\n if (cellFixedInfo.value && supportSticky) {\n const { fixLeft, fixRight } = cellFixedInfo.value\n if (typeof fixLeft == 'number') {\n styles.position = 'sticky'\n styles.left = `${fixLeft}px`\n }\n if (typeof fixRight == 'number') {\n styles.position = 'sticky'\n styles.right = `${fixRight}px`\n }\n }\n return autoHeight ? styles : { height: `${props.column.height}px` }\n }),\n getPopupContainer: computed(() => tableContext.getPopupContainer.value),\n rowSelectionType,\n hideSelectAll,\n onSelectAllChange: () => {\n const changeRows: Key[] = []\n const copyDerivedSelectedKeySet = new Set(derivedSelectedKeySet.value)\n if (checkedCurrentAll.value) {\n pageDataEnableRowKeys.value.forEach((key: Key) => {\n copyDerivedSelectedKeySet.delete(key)\n changeRows.push(key)\n })\n } else {\n pageDataEnableRowKeys.value.forEach((key: Key) => {\n if (!copyDerivedSelectedKeySet.has(key)) {\n copyDerivedSelectedKeySet.add(key)\n changeRows.push(key)\n }\n })\n }\n\n const selectedRows: Key[] = Array.from(copyDerivedSelectedKeySet)\n mergedRowSelection.value.onSelectAll?.(\n !checkedCurrentAll,\n selectedRows.map((key: Key) => getRecordByKey(key)),\n changeRows.map((key: Key) => getRecordByKey(key)),\n )\n setSelectedKeys(selectedRows)\n },\n checked: eagerComputed(() =>\n allDisabled.value\n ? allDisabledAndChecked.value\n : !!tableContext.flattenData.value.length && checkedCurrentAll.value,\n ),\n indeterminate: eagerComputed(() =>\n allDisabled.value\n ? !allDisabledAndChecked.value && allDisabledSomeChecked.value\n : !checkedCurrentAll.value && checkedCurrentSome.value,\n ),\n disabled: eagerComputed(\n () => tableContext.flattenData.value.length === 0 || allDisabled.value,\n ),\n mergedSelections,\n onMenuClick: (callback: any) => {\n callback?.(pageDataEnableRowKeys.value)\n },\n autoHeight,\n title,\n h,\n Fragment,\n }\n },\n})\n</script>\n\n<template>\n <component\n :is=\"component\"\n tabindex=\"-1\"\n role=\"cell\"\n :class=\"cellClass\"\n :style=\"componentStyle\"\n v-bind=\"additionalProps\"\n @click.stop\n >\n <template\n v-if=\"column.type !== 'checkbox' || rowSelectionType === 'radio' || hideSelectAll\"\n ></template>\n <div v-else :class=\"`${prefixCls}-selection-wrap`\">\n <div :class=\"`${prefixCls}-selection`\">\n <component v-if=\"column.title\" :is=\"title\" />\n <template v-else>\n <Checkbox\n :prefix-cls=\"prefixCls\"\n :indeterminate=\"indeterminate\"\n :disabled=\"disabled\"\n :checked=\"checked\"\n :aria-label=\"\n checked\n ? 'Press Space to toggle all row selection (checked)'\n : 'Press Space to toggle all row selection (unchecked)'\n \"\n @change=\"onSelectAllChange\"\n />\n <div v-if=\"mergedSelections\" :class=\"`${prefixCls}-selection-extra`\">\n <Dropdown :get-popup-container=\"getPopupContainer\">\n <span>\n <DownOutlined :class=\"`${prefixCls}-selection-extra-dropdown-icon`\" />\n </span>\n <template #overlay>\n <AMenu :get-popup-container=\"getPopupContainer\">\n <template\n v-for=\"(item, index) in mergedSelections\"\n :key=\"(item && item.key) || index\"\n >\n <MenuItem\n v-if=\"item\"\n :key=\"item.key || index\"\n @click=\"onMenuClick(item.onSelect)\"\n >\n <component\n :is=\"\n h(Fragment, [\n typeof item.text == 'function' ? item.text(item) : item.text,\n ])\n \"\n ></component>\n </MenuItem>\n </template>\n </AMenu>\n </template>\n </Dropdown>\n </div>\n </template>\n </div>\n </div>\n </component>\n</template>\n"],"names":["_createBlock","_resolveDynamicComponent","_mergeProps","_withModifiers","_openBlock","_createElementBlock","_Fragment","_normalizeClass","_createElementVNode","_createVNode","_withCtx","_renderList"],"mappings":"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"}
1
+ {"version":3,"file":"HeaderExtraCell.vue.js","sources":["../../../../../../../../../packages/components/table/src/components/Header/HeaderExtraCell.vue"],"sourcesContent":["<!--\n * @Author: shen\n * @Date: 2023-11-06 16:03:18\n * @LastEditors: shen\n * @LastEditTime: 2025-11-25 08:58:44\n * @Description:\n-->\n<script lang=\"ts\">\nimport type { CSSProperties, PropType } from 'vue'\nimport type { FinallyColumnType, DefaultRecordType, Key } from '../interface'\n\nimport { defineComponent, inject, computed, Fragment, h } from 'vue'\nimport { Dropdown, Menu, MenuItem } from 'ant-design-vue'\nimport { DownOutlined } from '@ant-design/icons-vue'\nimport { AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { getCellFixedInfo } from '../../utils/fixUtil'\nimport { useInjectTable } from '../context/TableContext'\nimport supportSticky from '../../utils/supportSticky'\nimport eagerComputed from '../../utils/eagerComputed'\nimport Checkbox from '../Checkbox'\n\nexport default defineComponent({\n name: 'HeaderExtraCell',\n components: {\n Checkbox,\n Dropdown,\n AMenu: Menu,\n MenuItem,\n DownOutlined,\n },\n props: {\n component: { type: String, default: 'div' },\n prefixCls: String,\n column: { type: Object as PropType<FinallyColumnType<DefaultRecordType>>, default: () => ({}) },\n additionalProps: Object,\n },\n setup(props) {\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n const tableContext = useInjectTable()\n const { pageDataEnableRowKeys, getRecordByKey, mergedRowSelection } = tableContext\n const {\n checkedCurrentAll,\n checkedCurrentSome,\n allDisabled,\n allDisabledAndChecked,\n allDisabledSomeChecked,\n mergedSelections,\n setSelectedKeys,\n } = tableContext.selection\n\n const rowSelectionType = computed(() => tableContext.mergedRowSelection.value.type)\n const hideSelectAll = computed(() => tableContext.mergedRowSelection.value.hideSelectAll)\n const derivedSelectedKeySet = computed(() => tableContext.selection.derivedSelectedKeySet.value)\n const sortColumns = computed(() =>\n tableContext.sorterStates.value.map(({ column, sortOrder }) => ({\n column,\n order: sortOrder,\n })),\n )\n\n const title = computed(() => {\n return h(Fragment, [\n typeof props.column.title == 'function'\n ? props.column.title({\n column: props.column.originColumn!,\n sortColumns: sortColumns.value,\n sortColumn: sortColumns.value[0]?.column,\n sortOrder: sortColumns.value[0]?.order,\n })\n : props.column.title,\n ])\n })\n\n const cellFixedInfo = computed(() => {\n if (autoHeight) {\n const additionalProps = props.additionalProps!\n return getCellFixedInfo(\n additionalProps.colstart,\n additionalProps.colend,\n tableContext.allColumns.value,\n tableContext.stickyOffsets.value,\n tableContext.props.direction,\n )\n }\n return undefined\n })\n\n const cellClass = computed(() => {\n const { prefixCls } = props\n let cellFixedCls = {}\n if (cellFixedInfo.value && supportSticky) {\n const autoCellPrefixCls = `${prefixCls}-cell`,\n { fixLeft, fixRight, firstFixLeft, lastFixLeft, firstFixRight, lastFixRight } =\n cellFixedInfo.value\n cellFixedCls = {\n [`${autoCellPrefixCls}-fix-left`]: typeof fixLeft === 'number',\n [`${autoCellPrefixCls}-fix-left-first`]: firstFixLeft,\n [`${autoCellPrefixCls}-fix-left-last`]: lastFixLeft,\n [`${autoCellPrefixCls}-fix-right`]: typeof fixRight == 'number',\n [`${autoCellPrefixCls}-fix-right-first`]: firstFixRight,\n [`${autoCellPrefixCls}-fix-right-last`]: lastFixRight,\n }\n }\n return Object.assign(\n {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-header-cell`]: true,\n [`${prefixCls}-header-extra-cell`]: true,\n },\n cellFixedCls,\n )\n })\n\n return {\n cellClass,\n componentStyle: computed(() => {\n const styles: CSSProperties = {}\n if (cellFixedInfo.value && supportSticky) {\n const { fixLeft, fixRight } = cellFixedInfo.value\n if (typeof fixLeft == 'number') {\n styles.position = 'sticky'\n styles.left = `${fixLeft}px`\n }\n if (typeof fixRight == 'number') {\n styles.position = 'sticky'\n styles.right = `${fixRight}px`\n }\n }\n return autoHeight ? styles : { height: `${props.column.height}px` }\n }),\n getPopupContainer: () => {\n return document.body\n },\n rowSelectionType,\n hideSelectAll,\n onSelectAllChange: () => {\n const changeRows: Key[] = []\n const copyDerivedSelectedKeySet = new Set(derivedSelectedKeySet.value)\n if (checkedCurrentAll.value) {\n pageDataEnableRowKeys.value.forEach((key: Key) => {\n copyDerivedSelectedKeySet.delete(key)\n changeRows.push(key)\n })\n } else {\n pageDataEnableRowKeys.value.forEach((key: Key) => {\n if (!copyDerivedSelectedKeySet.has(key)) {\n copyDerivedSelectedKeySet.add(key)\n changeRows.push(key)\n }\n })\n }\n\n const selectedRows: Key[] = Array.from(copyDerivedSelectedKeySet)\n mergedRowSelection.value.onSelectAll?.(\n !checkedCurrentAll,\n selectedRows.map((key: Key) => getRecordByKey(key)),\n changeRows.map((key: Key) => getRecordByKey(key)),\n )\n setSelectedKeys(selectedRows)\n },\n checked: eagerComputed(() =>\n allDisabled.value\n ? allDisabledAndChecked.value\n : !!tableContext.flattenData.value.length && checkedCurrentAll.value,\n ),\n indeterminate: eagerComputed(() =>\n allDisabled.value\n ? !allDisabledAndChecked.value && allDisabledSomeChecked.value\n : !checkedCurrentAll.value && checkedCurrentSome.value,\n ),\n disabled: eagerComputed(\n () => tableContext.flattenData.value.length === 0 || allDisabled.value,\n ),\n mergedSelections,\n onMenuClick: (callback: any) => {\n callback?.(pageDataEnableRowKeys.value)\n },\n autoHeight,\n title,\n h,\n Fragment,\n }\n },\n})\n</script>\n\n<template>\n <component\n :is=\"component\"\n tabindex=\"-1\"\n role=\"cell\"\n :class=\"cellClass\"\n :style=\"componentStyle\"\n v-bind=\"additionalProps\"\n @click.stop\n >\n <template\n v-if=\"column.type !== 'checkbox' || rowSelectionType === 'radio' || hideSelectAll\"\n ></template>\n <div v-else :class=\"`${prefixCls}-selection-wrap`\">\n <div :class=\"`${prefixCls}-selection`\">\n <component v-if=\"column.title\" :is=\"title\" />\n <template v-else>\n <Checkbox\n :prefix-cls=\"prefixCls\"\n :indeterminate=\"indeterminate\"\n :disabled=\"disabled\"\n :checked=\"checked\"\n :aria-label=\"\n checked\n ? 'Press Space to toggle all row selection (checked)'\n : 'Press Space to toggle all row selection (unchecked)'\n \"\n @change=\"onSelectAllChange\"\n />\n <div v-if=\"mergedSelections\" :class=\"`${prefixCls}-selection-extra`\">\n <Dropdown :get-popup-container=\"getPopupContainer\">\n <span>\n <DownOutlined :class=\"`${prefixCls}-selection-extra-dropdown-icon`\" />\n </span>\n <template #overlay>\n <AMenu :get-popup-container=\"getPopupContainer\">\n <template\n v-for=\"(item, index) in mergedSelections\"\n :key=\"(item && item.key) || index\"\n >\n <MenuItem\n v-if=\"item\"\n :key=\"item.key || index\"\n @click=\"onMenuClick(item.onSelect)\"\n >\n <component\n :is=\"\n h(Fragment, [\n typeof item.text == 'function' ? item.text(item) : item.text,\n ])\n \"\n ></component>\n </MenuItem>\n </template>\n </AMenu>\n </template>\n </Dropdown>\n </div>\n </template>\n </div>\n </div>\n </component>\n</template>\n"],"names":["_createBlock","_resolveDynamicComponent","_mergeProps","_withModifiers","_openBlock","_createElementBlock","_Fragment","_normalizeClass","_createElementVNode","_createVNode","_withCtx","_renderList"],"mappings":"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"}
@@ -113,7 +113,9 @@ var _sfc_main = vue.defineComponent({
113
113
  }
114
114
  return autoHeight ? styles : { height: `${props.column.height}px` };
115
115
  }),
116
- getPopupContainer: vue.computed(() => tableContext.getPopupContainer.value),
116
+ getPopupContainer: () => {
117
+ return document.body;
118
+ },
117
119
  rowSelectionType,
118
120
  hideSelectAll,
119
121
  onSelectAllChange: () => {