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.
- package/dist/index.full.js +109 -84
- package/dist/index.full.min.js +8 -8
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +8 -8
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +109 -84
- package/es/components/table/src/components/AutoHeightHeader/Header.vue.d.ts +4 -2
- package/es/components/table/src/components/AutoHeightHeader/HeaderRow.vue.d.ts +4 -2
- package/es/components/table/src/components/ColumnSetting/CheckboxList.vue.d.ts +1 -0
- package/es/components/table/src/components/ColumnSetting/CheckboxListItem.vue.d.ts +1 -0
- package/es/components/table/src/components/ColumnSetting/ColumnSetting.vue.d.ts +1 -0
- package/es/components/table/src/components/ColumnSetting/GroupCheckboxList.vue.d.ts +1 -0
- package/es/components/table/src/components/Filter/FilterDropdown.vue.d.ts +1 -1
- package/es/components/table/src/components/Header/Header.vue.d.ts +5 -2
- package/es/components/table/src/components/Header/HeaderCell.vue.d.ts +3 -1
- package/es/components/table/src/components/Header/HeaderCellTitle.vue.d.ts +1 -0
- package/es/components/table/src/components/Header/HeaderExtraCell.vue.d.ts +1 -1
- package/es/components/table/src/components/Header/HeaderGroupCell.vue.d.ts +1 -0
- package/es/components/table/src/components/Header/HeaderRows.vue.d.ts +5 -2
- package/es/components/table/src/components/Header/HeaderRowsWrap.vue.d.ts +5 -2
- package/es/components/table/src/components/Header/Sorter.vue.d.ts +1 -0
- package/es/components/table/src/components/InteralTable.vue.d.ts +9 -4
- package/es/components/table/src/components/ToolBar/ToolBar.vue.d.ts +1 -0
- package/es/components/table/src/components/interface.d.ts +1 -0
- package/es/index.d.ts +1 -0
- package/es/packages/components/form/src/components/FormTitle.mjs +6 -1
- package/es/packages/components/form/src/components/FormTitle.mjs.map +1 -1
- package/es/packages/components/form/src/fields/FieldReadonly.mjs +5 -1
- package/es/packages/components/form/src/fields/FieldReadonly.mjs.map +1 -1
- package/es/packages/components/form/src/layouts/QueryFilter.mjs +6 -0
- package/es/packages/components/form/src/layouts/QueryFilter.mjs.map +1 -1
- package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.mjs +8 -5
- package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.mjs.map +1 -1
- package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.mjs +5 -1
- package/es/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.mjs.map +1 -1
- package/es/packages/components/table/src/components/Filter/FilterDropdown.vue.mjs.map +1 -1
- package/es/packages/components/table/src/components/Filter/FilterDropdown.vue2.mjs +3 -6
- package/es/packages/components/table/src/components/Filter/FilterDropdown.vue2.mjs.map +1 -1
- package/es/packages/components/table/src/components/Header/HeaderCell.vue.mjs +20 -26
- package/es/packages/components/table/src/components/Header/HeaderCell.vue.mjs.map +1 -1
- package/es/packages/components/table/src/components/Header/HeaderCell.vue2.mjs +4 -0
- package/es/packages/components/table/src/components/Header/HeaderCell.vue2.mjs.map +1 -1
- package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue.mjs +29 -32
- package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue.mjs.map +1 -1
- package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue2.mjs +4 -0
- package/es/packages/components/table/src/components/Header/HeaderCellTitle.vue2.mjs.map +1 -1
- package/es/packages/components/table/src/components/Header/HeaderExtraCell.vue.mjs.map +1 -1
- package/es/packages/components/table/src/components/Header/HeaderExtraCell.vue2.mjs +3 -1
- package/es/packages/components/table/src/components/Header/HeaderExtraCell.vue2.mjs.map +1 -1
- package/es/packages/components/table/src/components/Table.mjs +7 -1
- package/es/packages/components/table/src/components/Table.mjs.map +1 -1
- package/es/packages/components/table/src/components/ToolBar/ToolBar.vue.mjs +10 -10
- package/es/packages/components/table/src/components/ToolBar/ToolBar.vue.mjs.map +1 -1
- package/es/packages/components/table/src/components/ToolBar/ToolBar.vue2.mjs.map +1 -1
- package/es/packages/components/table/src/components/interface.mjs.map +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/table/src/components/AutoHeightHeader/Header.vue.d.ts +4 -2
- package/lib/components/table/src/components/AutoHeightHeader/HeaderRow.vue.d.ts +4 -2
- package/lib/components/table/src/components/ColumnSetting/CheckboxList.vue.d.ts +1 -0
- package/lib/components/table/src/components/ColumnSetting/CheckboxListItem.vue.d.ts +1 -0
- package/lib/components/table/src/components/ColumnSetting/ColumnSetting.vue.d.ts +1 -0
- package/lib/components/table/src/components/ColumnSetting/GroupCheckboxList.vue.d.ts +1 -0
- package/lib/components/table/src/components/Filter/FilterDropdown.vue.d.ts +1 -1
- package/lib/components/table/src/components/Header/Header.vue.d.ts +5 -2
- package/lib/components/table/src/components/Header/HeaderCell.vue.d.ts +3 -1
- package/lib/components/table/src/components/Header/HeaderCellTitle.vue.d.ts +1 -0
- package/lib/components/table/src/components/Header/HeaderExtraCell.vue.d.ts +1 -1
- package/lib/components/table/src/components/Header/HeaderGroupCell.vue.d.ts +1 -0
- package/lib/components/table/src/components/Header/HeaderRows.vue.d.ts +5 -2
- package/lib/components/table/src/components/Header/HeaderRowsWrap.vue.d.ts +5 -2
- package/lib/components/table/src/components/Header/Sorter.vue.d.ts +1 -0
- package/lib/components/table/src/components/InteralTable.vue.d.ts +9 -4
- package/lib/components/table/src/components/ToolBar/ToolBar.vue.d.ts +1 -0
- package/lib/components/table/src/components/interface.d.ts +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/packages/components/form/src/components/FormTitle.js +6 -1
- package/lib/packages/components/form/src/components/FormTitle.js.map +1 -1
- package/lib/packages/components/form/src/fields/FieldReadonly.js +5 -1
- package/lib/packages/components/form/src/fields/FieldReadonly.js.map +1 -1
- package/lib/packages/components/form/src/layouts/QueryFilter.js +6 -0
- package/lib/packages/components/form/src/layouts/QueryFilter.js.map +1 -1
- package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.js +8 -5
- package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue.js.map +1 -1
- package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.js +5 -1
- package/lib/packages/components/table/src/components/ColumnSetting/CheckboxListItem.vue2.js.map +1 -1
- package/lib/packages/components/table/src/components/Filter/FilterDropdown.vue.js.map +1 -1
- package/lib/packages/components/table/src/components/Filter/FilterDropdown.vue2.js +3 -6
- package/lib/packages/components/table/src/components/Filter/FilterDropdown.vue2.js.map +1 -1
- package/lib/packages/components/table/src/components/Header/HeaderCell.vue.js +19 -25
- package/lib/packages/components/table/src/components/Header/HeaderCell.vue.js.map +1 -1
- package/lib/packages/components/table/src/components/Header/HeaderCell.vue2.js +4 -0
- package/lib/packages/components/table/src/components/Header/HeaderCell.vue2.js.map +1 -1
- package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue.js +28 -31
- package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue.js.map +1 -1
- package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue2.js +4 -0
- package/lib/packages/components/table/src/components/Header/HeaderCellTitle.vue2.js.map +1 -1
- package/lib/packages/components/table/src/components/Header/HeaderExtraCell.vue.js.map +1 -1
- package/lib/packages/components/table/src/components/Header/HeaderExtraCell.vue2.js +3 -1
- package/lib/packages/components/table/src/components/Header/HeaderExtraCell.vue2.js.map +1 -1
- package/lib/packages/components/table/src/components/Table.js +7 -1
- package/lib/packages/components/table/src/components/Table.js.map +1 -1
- package/lib/packages/components/table/src/components/ToolBar/ToolBar.vue.js +10 -10
- package/lib/packages/components/table/src/components/ToolBar/ToolBar.vue.js.map +1 -1
- package/lib/packages/components/table/src/components/ToolBar/ToolBar.vue2.js.map +1 -1
- package/lib/packages/components/table/src/components/interface.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- 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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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":"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"}
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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-
|
|
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-
|
|
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:
|
|
116
|
+
getPopupContainer: () => {
|
|
117
|
+
return document.body;
|
|
118
|
+
},
|
|
117
119
|
rowSelectionType,
|
|
118
120
|
hideSelectAll,
|
|
119
121
|
onSelectAllChange: () => {
|