pro-design-vue 1.3.37 → 1.3.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/index.full.js +27 -8
  2. package/dist/index.full.min.js +5 -5
  3. package/dist/index.full.min.js.map +1 -1
  4. package/dist/index.full.min.mjs +5 -5
  5. package/dist/index.full.min.mjs.map +1 -1
  6. package/dist/index.full.mjs +27 -8
  7. package/es/components/config-provider/src/typing.d.ts +2 -0
  8. package/es/components/table/src/components/AutoHeightHeader/Header.vue.d.ts +1 -0
  9. package/es/components/table/src/components/AutoHeightHeader/HeaderRow.vue.d.ts +1 -0
  10. package/es/components/table/src/components/Header/Header.vue.d.ts +1 -0
  11. package/es/components/table/src/components/Header/HeaderCell.vue.d.ts +1 -0
  12. package/es/components/table/src/components/Header/HeaderRows.vue.d.ts +1 -0
  13. package/es/components/table/src/components/Header/HeaderRowsWrap.vue.d.ts +1 -0
  14. package/es/components/table/src/components/InteralTable.vue.d.ts +13 -2
  15. package/es/components/table/src/components/Table.d.ts +11 -2
  16. package/es/components/table/src/components/context/TableContext.d.ts +2 -1
  17. package/es/components/table/src/components/interface.d.ts +15 -3
  18. package/es/index.d.ts +18 -3
  19. package/es/packages/components/table/src/components/Drag/useColumnDragHandler.mjs +4 -3
  20. package/es/packages/components/table/src/components/Drag/useColumnDragHandler.mjs.map +1 -1
  21. package/es/packages/components/table/src/components/Header/HeaderCell.vue.mjs +1 -1
  22. package/es/packages/components/table/src/components/Header/HeaderCell.vue.mjs.map +1 -1
  23. package/es/packages/components/table/src/components/Header/HeaderCell.vue2.mjs +7 -0
  24. package/es/packages/components/table/src/components/Header/HeaderCell.vue2.mjs.map +1 -1
  25. package/es/packages/components/table/src/components/InteralTable.vue.mjs.map +1 -1
  26. package/es/packages/components/table/src/components/InteralTable.vue2.mjs +8 -1
  27. package/es/packages/components/table/src/components/InteralTable.vue2.mjs.map +1 -1
  28. package/es/packages/components/table/src/components/context/TableContext.mjs.map +1 -1
  29. package/es/packages/components/table/src/components/interface.mjs +5 -1
  30. package/es/packages/components/table/src/components/interface.mjs.map +1 -1
  31. package/es/version.d.ts +1 -1
  32. package/es/version.mjs +1 -1
  33. package/es/version.mjs.map +1 -1
  34. package/lib/components/config-provider/src/typing.d.ts +2 -0
  35. package/lib/components/table/src/components/AutoHeightHeader/Header.vue.d.ts +1 -0
  36. package/lib/components/table/src/components/AutoHeightHeader/HeaderRow.vue.d.ts +1 -0
  37. package/lib/components/table/src/components/Header/Header.vue.d.ts +1 -0
  38. package/lib/components/table/src/components/Header/HeaderCell.vue.d.ts +1 -0
  39. package/lib/components/table/src/components/Header/HeaderRows.vue.d.ts +1 -0
  40. package/lib/components/table/src/components/Header/HeaderRowsWrap.vue.d.ts +1 -0
  41. package/lib/components/table/src/components/InteralTable.vue.d.ts +13 -2
  42. package/lib/components/table/src/components/Table.d.ts +11 -2
  43. package/lib/components/table/src/components/context/TableContext.d.ts +2 -1
  44. package/lib/components/table/src/components/interface.d.ts +15 -3
  45. package/lib/index.d.ts +18 -3
  46. package/lib/packages/components/table/src/components/Drag/useColumnDragHandler.js +4 -3
  47. package/lib/packages/components/table/src/components/Drag/useColumnDragHandler.js.map +1 -1
  48. package/lib/packages/components/table/src/components/Header/HeaderCell.vue.js +1 -1
  49. package/lib/packages/components/table/src/components/Header/HeaderCell.vue.js.map +1 -1
  50. package/lib/packages/components/table/src/components/Header/HeaderCell.vue2.js +7 -0
  51. package/lib/packages/components/table/src/components/Header/HeaderCell.vue2.js.map +1 -1
  52. package/lib/packages/components/table/src/components/InteralTable.vue.js.map +1 -1
  53. package/lib/packages/components/table/src/components/InteralTable.vue2.js +8 -1
  54. package/lib/packages/components/table/src/components/InteralTable.vue2.js.map +1 -1
  55. package/lib/packages/components/table/src/components/context/TableContext.js.map +1 -1
  56. package/lib/packages/components/table/src/components/interface.js +5 -1
  57. package/lib/packages/components/table/src/components/interface.js.map +1 -1
  58. package/lib/version.d.ts +1 -1
  59. package/lib/version.js +1 -1
  60. package/lib/version.js.map +1 -1
  61. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /*! Pro Design Vue v1.3.37 */
1
+ /*! Pro Design Vue v1.3.38 */
2
2
 
3
3
  import { Modal, theme as theme$1, ConfigProvider, App, Button as Button$1, Tooltip, Popconfirm, Dropdown, Menu, Slider, Drawer, Input, InputNumber, Form as Form$1, Space, Textarea, Select, TreeSelect, Checkbox as Checkbox$1, CheckboxGroup, RadioGroup, Radio as Radio$1, Cascader, Switch, Rate, DatePicker, RangePicker, TimePicker, TimeRangePicker, Upload, FormItemRest, Spin, message, Row as Row$1, Col, FormItem as FormItem$1, Steps, Popover, MenuItem, SubMenu, Empty, Badge, Tag, Pagination, InputSearch, Tree, Card, Tabs, TabPane } from 'ant-design-vue';
4
4
  import { inject, ref, getCurrentInstance, nextTick, h, reactive, defineComponent, createVNode, isVNode, Fragment, cloneVNode, provide, watch, computed, renderSlot, createPropsRestProxy, createBlock, openBlock, unref, mergeProps, withCtx, normalizeProps, guardReactiveProps, shallowRef, shallowReadonly, toValue, getCurrentScope, onScopeDispose, onMounted, hasInjectionContext, isRef, toRefs as toRefs$1, customRef, toRef as toRef$1, readonly, watchEffect, toRaw, createElementBlock, createCommentVNode, resolveDynamicComponent, createElementVNode, normalizeStyle, toDisplayString, normalizeClass, createSlots, createTextVNode, useAttrs, useTemplateRef, Teleport, onUnmounted, Comment as Comment$1, useSlots, useModel, withModifiers, mergeModels, renderList, camelize, isReactive, onActivated, onDeactivated, triggerRef, onBeforeUnmount, resolveDirective, withDirectives, vShow, render as render$1, resolveComponent } from 'vue';
@@ -30,7 +30,7 @@ const SCROLL_FIXED_CLASS = `_scroll__fixed_`;
30
30
  const DEFAULT_NAMESPACE = "pro";
31
31
  const DEFAULT_LOCALE = "zh-CN";
32
32
 
33
- const version$1 = "1.3.37";
33
+ const version$1 = "1.3.38";
34
34
 
35
35
  const makeInstaller = (components = []) => {
36
36
  const install = (app) => {
@@ -24073,7 +24073,11 @@ const baseTableProps = () => ({
24073
24073
  prefixCls: String,
24074
24074
  columnDrag: {
24075
24075
  type: Boolean,
24076
- default: false
24076
+ default: void 0
24077
+ },
24078
+ columnResizable: {
24079
+ type: Boolean,
24080
+ default: void 0
24077
24081
  },
24078
24082
  animateRows: {
24079
24083
  type: Boolean,
@@ -29100,9 +29104,10 @@ const useColumnDragHandler = ({ columnKey, disabled, column, domRef }) => {
29100
29104
  const mouseUpHandler = (event) => {
29101
29105
  handleMouseUpOrToucheEnd(event);
29102
29106
  };
29103
- const mergeColumnDrag = computed(
29104
- () => column.value.drag || column.value.drag === void 0 && columnDrag.value
29105
- );
29107
+ const mergeColumnDrag = computed(() => {
29108
+ var _a;
29109
+ return (_a = column.value.drag) != null ? _a : columnDrag.value;
29110
+ });
29106
29111
  onMounted(() => {
29107
29112
  nextTick(() => {
29108
29113
  watch(
@@ -30227,6 +30232,12 @@ var _sfc_main$w = defineComponent({
30227
30232
  const columnDragging = computed(
30228
30233
  () => tableContext.draggingColumnKey.value === props.column.columnKey
30229
30234
  );
30235
+ const mergeColumnResizable = computed(
30236
+ () => {
30237
+ var _a;
30238
+ return (_a = props.column.resizable) != null ? _a : tableContext.columnResizable.value;
30239
+ }
30240
+ );
30230
30241
  const autoHeight = inject(AUTO_HEADER_HEIGHT, false);
30231
30242
  const domRef = ref();
30232
30243
  if (props.level === 1) {
@@ -30410,6 +30421,7 @@ var _sfc_main$w = defineComponent({
30410
30421
  tableContext,
30411
30422
  sorterInfo,
30412
30423
  getPopupContainer,
30424
+ mergeColumnResizable,
30413
30425
  handleSortClick: (column, nextSortOrder) => {
30414
30426
  if (!column.sorter) return;
30415
30427
  const sortState = {
@@ -30532,7 +30544,7 @@ function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
30532
30544
  _: 1
30533
30545
  /* STABLE */
30534
30546
  }, 8, ["class"])),
30535
- _ctx.column.resizable && !(_ctx.column.children && _ctx.column.children.length) ? (openBlock(), createBlock(_component_DragHandle, {
30547
+ _ctx.mergeColumnResizable && !(_ctx.column.children && _ctx.column.children.length) ? (openBlock(), createBlock(_component_DragHandle, {
30536
30548
  key: 0,
30537
30549
  "prefix-cls": _ctx.prefixCls,
30538
30550
  width: _ctx.widths.width,
@@ -36041,7 +36053,14 @@ var _sfc_main$g = defineComponent({
36041
36053
  },
36042
36054
  onColumnDrag: () => {
36043
36055
  },
36044
- columnDrag: computed(() => props.columnDrag),
36056
+ columnDrag: computed(() => {
36057
+ var _a, _b;
36058
+ return (_b = props.columnDrag) != null ? _b : (_a = table == null ? void 0 : table.value) == null ? void 0 : _a.columnResizable;
36059
+ }),
36060
+ columnResizable: computed(() => {
36061
+ var _a, _b;
36062
+ return (_b = props.columnResizable) != null ? _b : (_a = table == null ? void 0 : table.value) == null ? void 0 : _a.columnResizable;
36063
+ }),
36045
36064
  summaryFixed: mergedSummaryFixed,
36046
36065
  realHeaderHeight,
36047
36066
  bottomPaginationHeight,
@@ -20,6 +20,8 @@ interface ProConfigProviderProps extends Omit<ConfigProviderProps, 'form'> {
20
20
  selectRowByClick?: boolean;
21
21
  rowKey?: string;
22
22
  size?: DensitySize;
23
+ columnDrag?: boolean;
24
+ columnResizable?: boolean;
23
25
  expandIconType?: ExpandIconType;
24
26
  rowHover?: boolean;
25
27
  summaryFixed?: boolean;
@@ -2048,6 +2048,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
2048
2048
  wrapText: boolean;
2049
2049
  }>;
2050
2050
  getPopupContainer: () => HTMLElement;
2051
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
2051
2052
  handleSortClick: (column: import("../interface").FinallyColumnType<any>, nextSortOrder: import("../interface").SortOrder) => void;
2052
2053
  cellClass: import("vue").ComputedRef<{
2053
2054
  [x: string]: boolean | import("../interface").SortOrder | import("../interface").CompareFn<import("../interface").DefaultRecordType> | {
@@ -1978,6 +1978,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1978
1978
  wrapText: boolean;
1979
1979
  }>;
1980
1980
  getPopupContainer: () => HTMLElement;
1981
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
1981
1982
  handleSortClick: (column: import("../interface").FinallyColumnType<any>, nextSortOrder: import("../interface").SortOrder) => void;
1982
1983
  cellClass: import("vue").ComputedRef<{
1983
1984
  [x: string]: boolean | import("../interface").SortOrder | import("../interface").CompareFn<import("../interface").DefaultRecordType> | {
@@ -901,6 +901,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
901
901
  wrapText: boolean;
902
902
  }>;
903
903
  getPopupContainer: () => HTMLElement;
904
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
904
905
  handleSortClick: (column: import("../interface").FinallyColumnType<any>, nextSortOrder: import("../interface").SortOrder) => void;
905
906
  cellClass: import("vue").ComputedRef<{
906
907
  [x: string]: boolean | import("../interface").SortOrder | import("../interface").CompareFn<import("../interface").DefaultRecordType> | {
@@ -33,6 +33,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
33
33
  wrapText: boolean;
34
34
  }>;
35
35
  getPopupContainer: () => HTMLElement;
36
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
36
37
  handleSortClick: (column: FinallyColumnType<any>, nextSortOrder: SortOrder) => void;
37
38
  cellClass: import("vue").ComputedRef<{
38
39
  [x: string]: boolean | SortOrder | import("../interface").CompareFn<import("../interface").DefaultRecordType> | {
@@ -788,6 +788,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
788
788
  wrapText: boolean;
789
789
  }>;
790
790
  getPopupContainer: () => HTMLElement;
791
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
791
792
  handleSortClick: (column: FinallyColumnType<any>, nextSortOrder: import("../interface").SortOrder) => void;
792
793
  cellClass: import("vue").ComputedRef<{
793
794
  [x: string]: boolean | import("../interface").SortOrder | import("../interface").CompareFn<DefaultRecordType> | {
@@ -839,6 +839,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
839
839
  wrapText: boolean;
840
840
  }>;
841
841
  getPopupContainer: () => HTMLElement;
842
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
842
843
  handleSortClick: (column: import("../interface").FinallyColumnType<any>, nextSortOrder: import("../interface").SortOrder) => void;
843
844
  cellClass: import("vue").ComputedRef<{
844
845
  [x: string]: boolean | import("../interface").SortOrder | import("../interface").CompareFn<import("../interface").DefaultRecordType> | {
@@ -27,7 +27,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
27
27
  prefixCls: StringConstructor;
28
28
  columnDrag: {
29
29
  type: BooleanConstructor;
30
- default: boolean;
30
+ default: undefined;
31
+ };
32
+ columnResizable: {
33
+ type: BooleanConstructor;
34
+ default: undefined;
31
35
  };
32
36
  animateRows: {
33
37
  type: BooleanConstructor;
@@ -579,7 +583,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
579
583
  prefixCls: StringConstructor;
580
584
  columnDrag: {
581
585
  type: BooleanConstructor;
582
- default: boolean;
586
+ default: undefined;
587
+ };
588
+ columnResizable: {
589
+ type: BooleanConstructor;
590
+ default: undefined;
583
591
  };
584
592
  animateRows: {
585
593
  type: BooleanConstructor;
@@ -1081,6 +1089,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1081
1089
  deepWatchDataSource: boolean;
1082
1090
  deepWatchColumns: boolean;
1083
1091
  columnDrag: boolean;
1092
+ columnResizable: boolean;
1084
1093
  animateRows: boolean;
1085
1094
  columns: import("pro-design-vue").ProTableColumnsType<DefaultRecordType>;
1086
1095
  dataSource: DefaultRecordType[];
@@ -3702,6 +3711,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3702
3711
  wrapText: boolean;
3703
3712
  }>;
3704
3713
  getPopupContainer: () => HTMLElement;
3714
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
3705
3715
  handleSortClick: (column: import("./interface").FinallyColumnType<any>, nextSortOrder: import("./interface").SortOrder) => void;
3706
3716
  cellClass: import("vue").ComputedRef<{
3707
3717
  [x: string]: boolean | import("./interface").SortOrder | import("./interface").CompareFn<DefaultRecordType> | {
@@ -9514,6 +9524,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
9514
9524
  wrapText: boolean;
9515
9525
  }>;
9516
9526
  getPopupContainer: () => HTMLElement;
9527
+ mergeColumnResizable: import("vue").ComputedRef<boolean | undefined>;
9517
9528
  handleSortClick: (column: import("./interface").FinallyColumnType<any>, nextSortOrder: import("./interface").SortOrder) => void;
9518
9529
  cellClass: import("vue").ComputedRef<{
9519
9530
  [x: string]: boolean | import("./interface").SortOrder | import("./interface").CompareFn<DefaultRecordType> | {
@@ -70,7 +70,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
70
70
  prefixCls: StringConstructor;
71
71
  columnDrag: {
72
72
  type: BooleanConstructor;
73
- default: boolean;
73
+ default: undefined;
74
+ };
75
+ columnResizable: {
76
+ type: BooleanConstructor;
77
+ default: undefined;
74
78
  };
75
79
  animateRows: {
76
80
  type: BooleanConstructor;
@@ -593,7 +597,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
593
597
  prefixCls: StringConstructor;
594
598
  columnDrag: {
595
599
  type: BooleanConstructor;
596
- default: boolean;
600
+ default: undefined;
601
+ };
602
+ columnResizable: {
603
+ type: BooleanConstructor;
604
+ default: undefined;
597
605
  };
598
606
  animateRows: {
599
607
  type: BooleanConstructor;
@@ -1128,6 +1136,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1128
1136
  deepWatchDataSource: boolean;
1129
1137
  deepWatchColumns: boolean;
1130
1138
  columnDrag: boolean;
1139
+ columnResizable: boolean;
1131
1140
  animateRows: boolean;
1132
1141
  columns: ColumnsType<import("./interface").DefaultRecordType>;
1133
1142
  dataSource: import("./interface").DefaultRecordType[];
@@ -69,7 +69,8 @@ export interface TableContextProps extends CalType, UseColumnsType, FlattenRecor
69
69
  onColumnDragEnd: (arg: DragColumnEventInfo) => void;
70
70
  onColumnDrag: (arg: DragColumnEventInfo) => void;
71
71
  prefixCls: ComputedRef<string>;
72
- columnDrag: ComputedRef<boolean>;
72
+ columnDrag: ComputedRef<boolean | undefined>;
73
+ columnResizable: ComputedRef<boolean | undefined>;
73
74
  summaryFixed: ComputedRef<SummaryFixed>;
74
75
  realHeaderHeight: Ref<number>;
75
76
  bottomPaginationHeight: Ref<number>;
@@ -233,7 +233,11 @@ export declare const baseTableProps: <T = DefaultRecordType>() => {
233
233
  prefixCls: StringConstructor;
234
234
  columnDrag: {
235
235
  type: BooleanConstructor;
236
- default: boolean;
236
+ default: undefined;
237
+ };
238
+ columnResizable: {
239
+ type: BooleanConstructor;
240
+ default: undefined;
237
241
  };
238
242
  animateRows: {
239
243
  type: BooleanConstructor;
@@ -640,7 +644,11 @@ export declare const tableProps: <T = DefaultRecordType>() => {
640
644
  prefixCls: StringConstructor;
641
645
  columnDrag: {
642
646
  type: BooleanConstructor;
643
- default: boolean;
647
+ default: undefined;
648
+ };
649
+ columnResizable: {
650
+ type: BooleanConstructor;
651
+ default: undefined;
644
652
  };
645
653
  animateRows: {
646
654
  type: BooleanConstructor;
@@ -1161,7 +1169,11 @@ declare class Helper<T extends DefaultRecordType> {
1161
1169
  prefixCls: StringConstructor;
1162
1170
  columnDrag: {
1163
1171
  type: BooleanConstructor;
1164
- default: boolean;
1172
+ default: undefined;
1173
+ };
1174
+ columnResizable: {
1175
+ type: BooleanConstructor;
1176
+ default: undefined;
1165
1177
  };
1166
1178
  animateRows: {
1167
1179
  type: BooleanConstructor;
package/es/index.d.ts CHANGED
@@ -1848,7 +1848,11 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
1848
1848
  prefixCls: StringConstructor;
1849
1849
  columnDrag: {
1850
1850
  type: BooleanConstructor;
1851
- default: boolean;
1851
+ default: undefined;
1852
+ };
1853
+ columnResizable: {
1854
+ type: BooleanConstructor;
1855
+ default: undefined;
1852
1856
  };
1853
1857
  animateRows: {
1854
1858
  type: BooleanConstructor;
@@ -2371,7 +2375,11 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2371
2375
  prefixCls: StringConstructor;
2372
2376
  columnDrag: {
2373
2377
  type: BooleanConstructor;
2374
- default: boolean;
2378
+ default: undefined;
2379
+ };
2380
+ columnResizable: {
2381
+ type: BooleanConstructor;
2382
+ default: undefined;
2375
2383
  };
2376
2384
  animateRows: {
2377
2385
  type: BooleanConstructor;
@@ -2906,6 +2914,7 @@ declare const _default_17: DefineComponent<ExtractPropTypes<{
2906
2914
  deepWatchDataSource: boolean;
2907
2915
  deepWatchColumns: boolean;
2908
2916
  columnDrag: boolean;
2917
+ columnResizable: boolean;
2909
2918
  animateRows: boolean;
2910
2919
  columns: ProTableColumnsType<DefaultRecordType>;
2911
2920
  dataSource: DefaultRecordType[];
@@ -5723,7 +5732,11 @@ declare class Helper<T extends DefaultRecordType> {
5723
5732
  prefixCls: StringConstructor;
5724
5733
  columnDrag: {
5725
5734
  type: BooleanConstructor;
5726
- default: boolean;
5735
+ default: undefined;
5736
+ };
5737
+ columnResizable: {
5738
+ type: BooleanConstructor;
5739
+ default: undefined;
5727
5740
  };
5728
5741
  animateRows: {
5729
5742
  type: BooleanConstructor;
@@ -6622,6 +6635,8 @@ export declare interface ProConfigProviderProps extends Omit<ConfigProviderProps
6622
6635
  selectRowByClick?: boolean;
6623
6636
  rowKey?: string;
6624
6637
  size?: ProTableDensitySize;
6638
+ columnDrag?: boolean;
6639
+ columnResizable?: boolean;
6625
6640
  expandIconType?: ExpandIconType;
6626
6641
  rowHover?: boolean;
6627
6642
  summaryFixed?: boolean;
@@ -284,9 +284,10 @@ const useColumnDragHandler = ({ columnKey, disabled, column, domRef }) => {
284
284
  const mouseUpHandler = (event) => {
285
285
  handleMouseUpOrToucheEnd(event);
286
286
  };
287
- const mergeColumnDrag = computed(
288
- () => column.value.drag || column.value.drag === void 0 && columnDrag.value
289
- );
287
+ const mergeColumnDrag = computed(() => {
288
+ var _a;
289
+ return (_a = column.value.drag) != null ? _a : columnDrag.value;
290
+ });
290
291
  onMounted(() => {
291
292
  nextTick(() => {
292
293
  watch(
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnDragHandler.mjs","sources":["../../../../../../../../../packages/components/table/src/components/Drag/useColumnDragHandler.ts"],"sourcesContent":["import type { Ref, VNode } from 'vue'\nimport type { RafFrame } from '../../utils/raf'\nimport type { FinallyColumnType, Key } from '../interface'\n\nimport {\n ref,\n inject,\n computed,\n shallowRef,\n onMounted,\n onBeforeUnmount,\n watch,\n watchEffect,\n nextTick,\n render,\n createVNode,\n toRaw,\n} from 'vue'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectHeader } from '../context/HeaderContext'\nimport { VIEWPORT_REF, DRAG_COLUMN_DIS_UNIT, AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { dragForbidIcon, dragLeftAndRightIcon } from './icon'\nimport { eventsClose } from '../../utils/util'\nimport { OFFSET_X, OFFSET_Y, DRAG_BUFF } from './constant'\nimport raf from '../../utils/raf'\n\ninterface ColumnDragHandler {\n columnKey: Ref<Key>\n disabled: Ref<boolean>\n column: Ref<FinallyColumnType>\n domRef: Ref<HTMLDivElement | undefined>\n}\n\nexport const ICON_TYPE_DOWN = 'ICON_TYPE_DOWN'\nexport const ICON_TYPE_FORBID = 'ICON_TYPE_FORBID'\n\nconst getRootDocument = () => document.fullscreenElement || document.body\n\nconst useColumnDragHandler: ({\n columnKey,\n disabled,\n column,\n domRef,\n}: ColumnDragHandler) => void = ({ columnKey, disabled, column, domRef }) => {\n const dragging = ref(false)\n const viewportRef = inject<Ref<HTMLDivElement | undefined>>(VIEWPORT_REF)\n const {\n prefixCls,\n draggingColumnKey,\n onColumnDragEnd,\n scrollTo,\n leftWidth,\n rightWidth,\n centerWidth,\n bodyWidth,\n leftHeaderColumns,\n visibleCenterHeaderColumns,\n rightHeaderColumns,\n columnDrag,\n } = useInjectTable()\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n\n const offsetLeft = ref(0)\n const colPosition = ref()\n watchEffect(() => {\n if (column.value.fixed === 'right') {\n offsetLeft.value = leftWidth.value + centerWidth.value\n colPosition.value = 'right'\n } else if (column.value.fixed) {\n offsetLeft.value = 0\n colPosition.value = 'left'\n } else {\n offsetLeft.value = leftWidth.value\n colPosition.value = 'center'\n }\n if (autoHeight) {\n offsetLeft.value = 0\n }\n })\n\n const { dragColumnPlaceholderRef, headerRef } = useInjectHeader()\n const tableSlotsContext = useInjectSlots()\n\n let rafFrame: RafFrame\n const clientY = ref()\n const clientX = ref()\n const clientX2 = ref()\n const dragOverColumn = ref()\n const dragGhostDom = document.createElement('div')\n let scrollTimer: any\n let clientXTimer: any\n const scrollLeft = ref(0)\n const allowed = ref(true)\n let cacheMouseEvent: any = null\n let headerRect: DOMRect | Record<string, any> = {}\n let offsetWidth = 0\n const destroyHandlers: Array<() => void> = []\n let dragGhostImage: VNode | null = null\n const iconType = ref(ICON_TYPE_DOWN)\n\n const headerColumns = computed(() => {\n switch (colPosition.value) {\n case 'left':\n return leftHeaderColumns.value\n case 'center':\n return visibleCenterHeaderColumns.value\n case 'right':\n return rightHeaderColumns.value\n default:\n return []\n }\n })\n\n const calDragX = computed(() => {\n let handler: () => boolean = () => false\n if (autoHeight && colPosition.value !== 'center') {\n handler = () => {\n const { x } = headerRect\n const minOffetLeft =\n colPosition.value === 'left'\n ? viewportRef?.value?.scrollLeft + x\n : viewportRef?.value?.scrollLeft + x + bodyWidth.value - rightWidth.value\n const maxOffetLeft =\n colPosition.value === 'left'\n ? minOffetLeft + leftWidth.value\n : minOffetLeft + rightWidth.value\n const pageXOffset = window.pageXOffset || document.documentElement.scrollLeft\n if (clientX.value + OFFSET_X <= minOffetLeft) {\n dragGhostDom.style.left = minOffetLeft + pageXOffset - 20 + 'px'\n return true\n } else if (clientX.value + OFFSET_X >= maxOffetLeft) {\n dragGhostDom.style.left = maxOffetLeft + pageXOffset - 20 + 'px'\n return true\n } else {\n return false\n }\n }\n } else if (colPosition.value !== 'center') {\n handler = () => {\n const { x, width } = headerRect\n const pageXOffset = window.pageXOffset || document.documentElement.scrollLeft\n if (clientX.value + OFFSET_X <= x) {\n dragGhostDom.style.left = x + pageXOffset - 20 + 'px'\n return true\n } else if (clientX.value + OFFSET_X >= x + width) {\n dragGhostDom.style.left = x + pageXOffset + width - 20 + 'px'\n return true\n } else {\n return false\n }\n }\n } else {\n handler = () => {\n const { x, width } = viewportRef!.value!.getBoundingClientRect()\n const pageXOffset = window.pageXOffset || document.documentElement.scrollLeft\n if (clientX.value + OFFSET_X <= x + leftWidth.value) {\n dragGhostDom.style.left = x + pageXOffset + leftWidth.value - 20 + 'px'\n return true\n } else if (clientX.value + OFFSET_X >= x + width - rightWidth.value) {\n dragGhostDom.style.left = x + pageXOffset + width - rightWidth.value - 20 + 'px'\n return true\n } else {\n return false\n }\n }\n }\n return handler\n })\n\n const calDragY = () => {\n const { y, height } = headerRect\n const pageYOffset = window.pageYOffset || document.documentElement.scrollTop\n if (clientY.value + OFFSET_Y <= y) {\n dragGhostDom.style.top = y + pageYOffset - 20 + 'px'\n return true\n } else if (clientY.value > y + height) {\n dragGhostDom.style.top = y + pageYOffset + height - 10 + 'px'\n return true\n } else {\n return false\n }\n }\n\n const batchEvent = (eventList: any) => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.addEventListener(type, listener, options)\n })\n destroyHandlers.push(() => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.removeEventListener(type, listener, options)\n })\n })\n }\n const columnDragEvent = shallowRef<MouseEvent | Touch>()\n const handleMouseMoveOrTouchMove = (\n event: MouseEvent | Touch,\n cacheEvent: MouseEvent | Touch,\n ) => {\n columnDragEvent.value = event\n if (!dragging.value) {\n if (eventsClose(event, cacheEvent, DRAG_BUFF)) {\n return\n }\n dragging.value = true\n clientX2.value = event.clientX\n draggingColumnKey.value = columnKey.value\n offsetWidth = domRef.value?.offsetWidth || 0\n getRootDocument().appendChild(dragGhostDom)\n renderDragGhost()\n }\n allowed.value = true\n clientX.value = event.clientX\n clientY.value = event.clientY\n if (calDragY()) {\n allowed.value = false\n clearInterval(clientXTimer)\n } else {\n dragGhostDom.style.top = event.pageY - 10 + 'px'\n }\n\n if (calDragX.value()) {\n allowed.value = false\n } else {\n dragGhostDom.style.left = event.pageX - 10 + 'px'\n }\n }\n\n let cacheStartTouch: TouchList[number] | null | undefined\n let cacheTouch: TouchList[number] | null | undefined\n const getTouch = (touches: TouchList) => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i]?.identifier === cacheTouch?.identifier) {\n return touches[i]\n }\n }\n return null\n }\n\n const handleMouseUpOrToucheEnd = (event: MouseEvent | Touch) => {\n if (dragging.value) {\n dragging.value = false\n getRootDocument().removeChild(dragGhostDom)\n }\n columnDragEvent.value = event\n cacheMouseEvent = null\n cacheTouch = null\n cacheStartTouch = null\n clearInterval(clientXTimer)\n draggingColumnKey.value = ''\n dragColumnPlaceholderRef.value!.style.opacity = '0'\n destroyHandlers.forEach((fn) => fn())\n destroyHandlers.length = 0\n raf.cancel(rafFrame)\n }\n\n const documentTouchMoveHandler = (event: TouchEvent) => {\n event.cancelable && event.preventDefault()\n }\n\n const onTouchStart = (event: TouchEvent) => {\n dragOverColumn.value = null\n if (disabled.value) {\n return\n }\n dragging.value = false\n const touch = event.touches[0]\n cacheStartTouch = touch\n cacheTouch = touch\n headerRect = headerRef.value!.getBoundingClientRect()\n const dom = domRef.value\n const eventList = [\n {\n target: document,\n type: 'touchmove',\n listener: documentTouchMoveHandler,\n options: { passive: false },\n },\n {\n target: dom,\n type: 'touchmove',\n listener: touchMoveHandler,\n options: { passive: true },\n },\n {\n target: dom,\n type: 'touchend',\n listener: touchEndHandler,\n options: { passive: true },\n },\n {\n target: dom,\n type: 'touchcancel',\n listener: touchEndHandler,\n options: { passive: true },\n },\n ]\n batchEvent(eventList)\n }\n\n const touchMoveHandler = (event: TouchEvent) => {\n const touch = getTouch(event.touches)\n touch && handleMouseMoveOrTouchMove(touch, cacheTouch!)\n }\n\n const touchEndHandler = (event: TouchEvent) => {\n let touch = getTouch(event.touches)\n if (!touch) {\n touch = cacheStartTouch\n }\n handleMouseUpOrToucheEnd(touch!)\n }\n const onMousedown = (event: MouseEvent) => {\n event.preventDefault()\n dragOverColumn.value = null\n if (disabled.value) {\n return\n }\n dragging.value = false\n cacheMouseEvent = event\n headerRect = headerRef.value!.getBoundingClientRect()\n const doc = document\n batchEvent([\n { target: doc, type: 'mousemove', listener: mouseMoveHandler },\n { target: doc, type: 'mouseup', listener: mouseUpHandler },\n { target: doc, type: 'contextmenu', listener: contextmenuHandler },\n ])\n }\n const contextmenuHandler = (event: MouseEvent) => event.preventDefault()\n const mouseMoveHandler = (event: MouseEvent) => {\n handleMouseMoveOrTouchMove(event, cacheMouseEvent)\n }\n const mouseUpHandler = (event: MouseEvent) => {\n handleMouseUpOrToucheEnd(event)\n }\n const mergeColumnDrag = computed(\n () => column.value.drag || (column.value.drag === undefined && columnDrag.value),\n )\n\n onMounted(() => {\n nextTick(() => {\n watch(\n [domRef, mergeColumnDrag],\n ([newDom], [oldDom]) => {\n if (oldDom) {\n oldDom.removeEventListener('mousedown', onMousedown)\n oldDom.removeEventListener('touchstart', onTouchStart)\n }\n if (newDom && mergeColumnDrag.value) {\n newDom.addEventListener('mousedown', onMousedown)\n newDom.addEventListener('touchstart', onTouchStart, { passive: true })\n }\n },\n { flush: 'post', immediate: true },\n )\n })\n })\n onBeforeUnmount(() => {\n if (domRef.value) {\n domRef.value.removeEventListener('mousedown', onMousedown)\n domRef.value.removeEventListener('touchstart', onTouchStart)\n }\n raf.cancel(rafFrame)\n render(null, dragGhostDom)\n })\n\n const renderDragGhostImage = () => {\n let dragIcon = dragLeftAndRightIcon\n if (iconType.value === ICON_TYPE_FORBID) {\n dragIcon = dragForbidIcon\n }\n return tableSlotsContext.columnDragGhost\n ? tableSlotsContext.columnDragGhost({\n targetColumn: toRaw(dragOverColumn.value),\n column: column.value,\n icon: createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n allowed: allowed.value,\n dragging: dragging.value,\n event: columnDragEvent.value!,\n })\n : [\n createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n createVNode(\n 'span',\n {\n class: `${prefixCls.value}-drag-ghost-image-label`,\n style: { maxWidth: `${offsetWidth}px` },\n },\n [column.value.title],\n ),\n ]\n }\n\n const renderDragGhost = () => {\n if (!dragGhostImage) {\n dragGhostImage = createVNode(renderDragGhostImage)\n render(dragGhostImage, dragGhostDom)\n }\n }\n\n watch(\n [prefixCls],\n () => {\n dragGhostDom.className = `${prefixCls.value}-drag-ghost-image`\n },\n { immediate: true },\n )\n watch([clientX, colPosition], () => {\n clearInterval(clientXTimer)\n if (colPosition.value === 'center' && allowed.value) {\n clientXTimer = setInterval(() => {\n const { x, width } = viewportRef!.value!.getBoundingClientRect()\n if (clientX.value + 30 > x + width - rightWidth.value) {\n scrollTo({ left: viewportRef!.value!.scrollLeft + DRAG_COLUMN_DIS_UNIT }, 'auto', true)\n clearTimeout(scrollTimer)\n scrollTimer = setTimeout(() => {\n scrollLeft.value = viewportRef!.value!.scrollLeft + DRAG_COLUMN_DIS_UNIT\n })\n } else if (clientX.value < x + leftWidth.value) {\n const left = Math.max(viewportRef!.value!.scrollLeft - DRAG_COLUMN_DIS_UNIT, 0)\n scrollTo({ left }, 'auto', true)\n clearTimeout(scrollTimer)\n scrollTimer = setTimeout(() => {\n scrollLeft.value = left\n })\n }\n }, 30)\n }\n })\n\n const handleDraging = () => {\n const pageX = clientX.value\n const { x } = headerRef.value!.getBoundingClientRect()\n const rawColumns = toRaw(headerColumns.value)\n const rawClientX = offsetLeft.value - x\n\n let currentOffetLeft = 0\n let scrollLeft = 0\n if (autoHeight && colPosition.value !== 'center') {\n scrollLeft = viewportRef!.value!.scrollLeft\n currentOffetLeft =\n colPosition.value === 'left'\n ? scrollLeft\n : scrollLeft + bodyWidth.value - rightWidth.value - leftWidth.value - centerWidth.value\n }\n\n for (let i = 0, len = rawColumns.length; i < len; i++) {\n const { left, finallyWidth } = rawColumns[i]!\n const columnClientX = left! - rawClientX + currentOffetLeft\n if (\n !rawColumns[i]!.__Internal__Column__ &&\n pageX > columnClientX &&\n pageX < columnClientX + finallyWidth!\n ) {\n dragOverColumn.value = rawColumns[i]\n }\n }\n if (dragOverColumn.value && dragOverColumn.value.left !== column.value.left) {\n dragColumnPlaceholderRef.value!.style.opacity = '1'\n dragColumnPlaceholderRef.value!.style.zIndex = column.value.fixed ? '3' : 'unset'\n if (dragOverColumn.value.left > column.value.left!) {\n dragColumnPlaceholderRef.value!.style.left = `${\n dragOverColumn.value.left -\n offsetLeft.value +\n dragOverColumn.value.finallyWidth +\n currentOffetLeft -\n 1\n }px`\n } else {\n dragColumnPlaceholderRef.value!.style.left = `${dragOverColumn.value.left - offsetLeft.value + currentOffetLeft - 1}px`\n }\n } else {\n dragColumnPlaceholderRef.value!.style.opacity = '0'\n }\n }\n\n watch([dragging, clientX, allowed, scrollLeft], () => {\n raf.cancel(rafFrame)\n rafFrame = raf(() => {\n if (dragging.value && !allowed.value) {\n iconType.value = ICON_TYPE_FORBID\n }\n if (dragging.value && allowed.value) {\n iconType.value = ''\n handleDraging()\n } else {\n dragColumnPlaceholderRef.value!.style.opacity = '0'\n }\n })\n })\n\n watch(dragging, () => {\n if (!dragging.value && allowed.value && dragOverColumn.value) {\n raf.cancel(rafFrame)\n onColumnDragEnd({\n column: column.value.originColumn!,\n targetColumn: toRaw(dragOverColumn.value.originColumn),\n event: columnDragEvent.value!,\n dir: column.value.left! <= dragOverColumn.value.left ? 'right' : 'left',\n })\n }\n })\n}\nexport default useColumnDragHandler\n"],"names":["scrollLeft"],"mappings":"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"}
1
+ {"version":3,"file":"useColumnDragHandler.mjs","sources":["../../../../../../../../../packages/components/table/src/components/Drag/useColumnDragHandler.ts"],"sourcesContent":["import type { Ref, VNode } from 'vue'\nimport type { RafFrame } from '../../utils/raf'\nimport type { FinallyColumnType, Key } from '../interface'\n\nimport {\n ref,\n inject,\n computed,\n shallowRef,\n onMounted,\n onBeforeUnmount,\n watch,\n watchEffect,\n nextTick,\n render,\n createVNode,\n toRaw,\n} from 'vue'\nimport { useInjectSlots } from '../context/TableSlotsContext'\nimport { useInjectTable } from '../context/TableContext'\nimport { useInjectHeader } from '../context/HeaderContext'\nimport { VIEWPORT_REF, DRAG_COLUMN_DIS_UNIT, AUTO_HEADER_HEIGHT } from '../../utils/constant'\nimport { dragForbidIcon, dragLeftAndRightIcon } from './icon'\nimport { eventsClose } from '../../utils/util'\nimport { OFFSET_X, OFFSET_Y, DRAG_BUFF } from './constant'\nimport raf from '../../utils/raf'\n\ninterface ColumnDragHandler {\n columnKey: Ref<Key>\n disabled: Ref<boolean>\n column: Ref<FinallyColumnType>\n domRef: Ref<HTMLDivElement | undefined>\n}\n\nexport const ICON_TYPE_DOWN = 'ICON_TYPE_DOWN'\nexport const ICON_TYPE_FORBID = 'ICON_TYPE_FORBID'\n\nconst getRootDocument = () => document.fullscreenElement || document.body\n\nconst useColumnDragHandler: ({\n columnKey,\n disabled,\n column,\n domRef,\n}: ColumnDragHandler) => void = ({ columnKey, disabled, column, domRef }) => {\n const dragging = ref(false)\n const viewportRef = inject<Ref<HTMLDivElement | undefined>>(VIEWPORT_REF)\n const {\n prefixCls,\n draggingColumnKey,\n onColumnDragEnd,\n scrollTo,\n leftWidth,\n rightWidth,\n centerWidth,\n bodyWidth,\n leftHeaderColumns,\n visibleCenterHeaderColumns,\n rightHeaderColumns,\n columnDrag,\n } = useInjectTable()\n const autoHeight = inject<boolean>(AUTO_HEADER_HEIGHT, false)\n\n const offsetLeft = ref(0)\n const colPosition = ref()\n watchEffect(() => {\n if (column.value.fixed === 'right') {\n offsetLeft.value = leftWidth.value + centerWidth.value\n colPosition.value = 'right'\n } else if (column.value.fixed) {\n offsetLeft.value = 0\n colPosition.value = 'left'\n } else {\n offsetLeft.value = leftWidth.value\n colPosition.value = 'center'\n }\n if (autoHeight) {\n offsetLeft.value = 0\n }\n })\n\n const { dragColumnPlaceholderRef, headerRef } = useInjectHeader()\n const tableSlotsContext = useInjectSlots()\n\n let rafFrame: RafFrame\n const clientY = ref()\n const clientX = ref()\n const clientX2 = ref()\n const dragOverColumn = ref()\n const dragGhostDom = document.createElement('div')\n let scrollTimer: any\n let clientXTimer: any\n const scrollLeft = ref(0)\n const allowed = ref(true)\n let cacheMouseEvent: any = null\n let headerRect: DOMRect | Record<string, any> = {}\n let offsetWidth = 0\n const destroyHandlers: Array<() => void> = []\n let dragGhostImage: VNode | null = null\n const iconType = ref(ICON_TYPE_DOWN)\n\n const headerColumns = computed(() => {\n switch (colPosition.value) {\n case 'left':\n return leftHeaderColumns.value\n case 'center':\n return visibleCenterHeaderColumns.value\n case 'right':\n return rightHeaderColumns.value\n default:\n return []\n }\n })\n\n const calDragX = computed(() => {\n let handler: () => boolean = () => false\n if (autoHeight && colPosition.value !== 'center') {\n handler = () => {\n const { x } = headerRect\n const minOffetLeft =\n colPosition.value === 'left'\n ? viewportRef?.value?.scrollLeft + x\n : viewportRef?.value?.scrollLeft + x + bodyWidth.value - rightWidth.value\n const maxOffetLeft =\n colPosition.value === 'left'\n ? minOffetLeft + leftWidth.value\n : minOffetLeft + rightWidth.value\n const pageXOffset = window.pageXOffset || document.documentElement.scrollLeft\n if (clientX.value + OFFSET_X <= minOffetLeft) {\n dragGhostDom.style.left = minOffetLeft + pageXOffset - 20 + 'px'\n return true\n } else if (clientX.value + OFFSET_X >= maxOffetLeft) {\n dragGhostDom.style.left = maxOffetLeft + pageXOffset - 20 + 'px'\n return true\n } else {\n return false\n }\n }\n } else if (colPosition.value !== 'center') {\n handler = () => {\n const { x, width } = headerRect\n const pageXOffset = window.pageXOffset || document.documentElement.scrollLeft\n if (clientX.value + OFFSET_X <= x) {\n dragGhostDom.style.left = x + pageXOffset - 20 + 'px'\n return true\n } else if (clientX.value + OFFSET_X >= x + width) {\n dragGhostDom.style.left = x + pageXOffset + width - 20 + 'px'\n return true\n } else {\n return false\n }\n }\n } else {\n handler = () => {\n const { x, width } = viewportRef!.value!.getBoundingClientRect()\n const pageXOffset = window.pageXOffset || document.documentElement.scrollLeft\n if (clientX.value + OFFSET_X <= x + leftWidth.value) {\n dragGhostDom.style.left = x + pageXOffset + leftWidth.value - 20 + 'px'\n return true\n } else if (clientX.value + OFFSET_X >= x + width - rightWidth.value) {\n dragGhostDom.style.left = x + pageXOffset + width - rightWidth.value - 20 + 'px'\n return true\n } else {\n return false\n }\n }\n }\n return handler\n })\n\n const calDragY = () => {\n const { y, height } = headerRect\n const pageYOffset = window.pageYOffset || document.documentElement.scrollTop\n if (clientY.value + OFFSET_Y <= y) {\n dragGhostDom.style.top = y + pageYOffset - 20 + 'px'\n return true\n } else if (clientY.value > y + height) {\n dragGhostDom.style.top = y + pageYOffset + height - 10 + 'px'\n return true\n } else {\n return false\n }\n }\n\n const batchEvent = (eventList: any) => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.addEventListener(type, listener, options)\n })\n destroyHandlers.push(() => {\n eventList.forEach((config: any) => {\n const { target, type, listener, options } = config\n target.removeEventListener(type, listener, options)\n })\n })\n }\n const columnDragEvent = shallowRef<MouseEvent | Touch>()\n const handleMouseMoveOrTouchMove = (\n event: MouseEvent | Touch,\n cacheEvent: MouseEvent | Touch,\n ) => {\n columnDragEvent.value = event\n if (!dragging.value) {\n if (eventsClose(event, cacheEvent, DRAG_BUFF)) {\n return\n }\n dragging.value = true\n clientX2.value = event.clientX\n draggingColumnKey.value = columnKey.value\n offsetWidth = domRef.value?.offsetWidth || 0\n getRootDocument().appendChild(dragGhostDom)\n renderDragGhost()\n }\n allowed.value = true\n clientX.value = event.clientX\n clientY.value = event.clientY\n if (calDragY()) {\n allowed.value = false\n clearInterval(clientXTimer)\n } else {\n dragGhostDom.style.top = event.pageY - 10 + 'px'\n }\n\n if (calDragX.value()) {\n allowed.value = false\n } else {\n dragGhostDom.style.left = event.pageX - 10 + 'px'\n }\n }\n\n let cacheStartTouch: TouchList[number] | null | undefined\n let cacheTouch: TouchList[number] | null | undefined\n const getTouch = (touches: TouchList) => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i]?.identifier === cacheTouch?.identifier) {\n return touches[i]\n }\n }\n return null\n }\n\n const handleMouseUpOrToucheEnd = (event: MouseEvent | Touch) => {\n if (dragging.value) {\n dragging.value = false\n getRootDocument().removeChild(dragGhostDom)\n }\n columnDragEvent.value = event\n cacheMouseEvent = null\n cacheTouch = null\n cacheStartTouch = null\n clearInterval(clientXTimer)\n draggingColumnKey.value = ''\n dragColumnPlaceholderRef.value!.style.opacity = '0'\n destroyHandlers.forEach((fn) => fn())\n destroyHandlers.length = 0\n raf.cancel(rafFrame)\n }\n\n const documentTouchMoveHandler = (event: TouchEvent) => {\n event.cancelable && event.preventDefault()\n }\n\n const onTouchStart = (event: TouchEvent) => {\n dragOverColumn.value = null\n if (disabled.value) {\n return\n }\n dragging.value = false\n const touch = event.touches[0]\n cacheStartTouch = touch\n cacheTouch = touch\n headerRect = headerRef.value!.getBoundingClientRect()\n const dom = domRef.value\n const eventList = [\n {\n target: document,\n type: 'touchmove',\n listener: documentTouchMoveHandler,\n options: { passive: false },\n },\n {\n target: dom,\n type: 'touchmove',\n listener: touchMoveHandler,\n options: { passive: true },\n },\n {\n target: dom,\n type: 'touchend',\n listener: touchEndHandler,\n options: { passive: true },\n },\n {\n target: dom,\n type: 'touchcancel',\n listener: touchEndHandler,\n options: { passive: true },\n },\n ]\n batchEvent(eventList)\n }\n\n const touchMoveHandler = (event: TouchEvent) => {\n const touch = getTouch(event.touches)\n touch && handleMouseMoveOrTouchMove(touch, cacheTouch!)\n }\n\n const touchEndHandler = (event: TouchEvent) => {\n let touch = getTouch(event.touches)\n if (!touch) {\n touch = cacheStartTouch\n }\n handleMouseUpOrToucheEnd(touch!)\n }\n const onMousedown = (event: MouseEvent) => {\n event.preventDefault()\n dragOverColumn.value = null\n if (disabled.value) {\n return\n }\n dragging.value = false\n cacheMouseEvent = event\n headerRect = headerRef.value!.getBoundingClientRect()\n const doc = document\n batchEvent([\n { target: doc, type: 'mousemove', listener: mouseMoveHandler },\n { target: doc, type: 'mouseup', listener: mouseUpHandler },\n { target: doc, type: 'contextmenu', listener: contextmenuHandler },\n ])\n }\n const contextmenuHandler = (event: MouseEvent) => event.preventDefault()\n const mouseMoveHandler = (event: MouseEvent) => {\n handleMouseMoveOrTouchMove(event, cacheMouseEvent)\n }\n const mouseUpHandler = (event: MouseEvent) => {\n handleMouseUpOrToucheEnd(event)\n }\n const mergeColumnDrag = computed(() => column.value.drag ?? columnDrag.value)\n\n onMounted(() => {\n nextTick(() => {\n watch(\n [domRef, mergeColumnDrag],\n ([newDom], [oldDom]) => {\n if (oldDom) {\n oldDom.removeEventListener('mousedown', onMousedown)\n oldDom.removeEventListener('touchstart', onTouchStart)\n }\n if (newDom && mergeColumnDrag.value) {\n newDom.addEventListener('mousedown', onMousedown)\n newDom.addEventListener('touchstart', onTouchStart, { passive: true })\n }\n },\n { flush: 'post', immediate: true },\n )\n })\n })\n onBeforeUnmount(() => {\n if (domRef.value) {\n domRef.value.removeEventListener('mousedown', onMousedown)\n domRef.value.removeEventListener('touchstart', onTouchStart)\n }\n raf.cancel(rafFrame)\n render(null, dragGhostDom)\n })\n\n const renderDragGhostImage = () => {\n let dragIcon = dragLeftAndRightIcon\n if (iconType.value === ICON_TYPE_FORBID) {\n dragIcon = dragForbidIcon\n }\n return tableSlotsContext.columnDragGhost\n ? tableSlotsContext.columnDragGhost({\n targetColumn: toRaw(dragOverColumn.value),\n column: column.value,\n icon: createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n allowed: allowed.value,\n dragging: dragging.value,\n event: columnDragEvent.value!,\n })\n : [\n createVNode(\n 'span',\n { class: `${prefixCls.value}-drag-ghost-image-icon`, innerHTML: dragIcon },\n null,\n ),\n createVNode(\n 'span',\n {\n class: `${prefixCls.value}-drag-ghost-image-label`,\n style: { maxWidth: `${offsetWidth}px` },\n },\n [column.value.title],\n ),\n ]\n }\n\n const renderDragGhost = () => {\n if (!dragGhostImage) {\n dragGhostImage = createVNode(renderDragGhostImage)\n render(dragGhostImage, dragGhostDom)\n }\n }\n\n watch(\n [prefixCls],\n () => {\n dragGhostDom.className = `${prefixCls.value}-drag-ghost-image`\n },\n { immediate: true },\n )\n watch([clientX, colPosition], () => {\n clearInterval(clientXTimer)\n if (colPosition.value === 'center' && allowed.value) {\n clientXTimer = setInterval(() => {\n const { x, width } = viewportRef!.value!.getBoundingClientRect()\n if (clientX.value + 30 > x + width - rightWidth.value) {\n scrollTo({ left: viewportRef!.value!.scrollLeft + DRAG_COLUMN_DIS_UNIT }, 'auto', true)\n clearTimeout(scrollTimer)\n scrollTimer = setTimeout(() => {\n scrollLeft.value = viewportRef!.value!.scrollLeft + DRAG_COLUMN_DIS_UNIT\n })\n } else if (clientX.value < x + leftWidth.value) {\n const left = Math.max(viewportRef!.value!.scrollLeft - DRAG_COLUMN_DIS_UNIT, 0)\n scrollTo({ left }, 'auto', true)\n clearTimeout(scrollTimer)\n scrollTimer = setTimeout(() => {\n scrollLeft.value = left\n })\n }\n }, 30)\n }\n })\n\n const handleDraging = () => {\n const pageX = clientX.value\n const { x } = headerRef.value!.getBoundingClientRect()\n const rawColumns = toRaw(headerColumns.value)\n const rawClientX = offsetLeft.value - x\n\n let currentOffetLeft = 0\n let scrollLeft = 0\n if (autoHeight && colPosition.value !== 'center') {\n scrollLeft = viewportRef!.value!.scrollLeft\n currentOffetLeft =\n colPosition.value === 'left'\n ? scrollLeft\n : scrollLeft + bodyWidth.value - rightWidth.value - leftWidth.value - centerWidth.value\n }\n\n for (let i = 0, len = rawColumns.length; i < len; i++) {\n const { left, finallyWidth } = rawColumns[i]!\n const columnClientX = left! - rawClientX + currentOffetLeft\n if (\n !rawColumns[i]!.__Internal__Column__ &&\n pageX > columnClientX &&\n pageX < columnClientX + finallyWidth!\n ) {\n dragOverColumn.value = rawColumns[i]\n }\n }\n if (dragOverColumn.value && dragOverColumn.value.left !== column.value.left) {\n dragColumnPlaceholderRef.value!.style.opacity = '1'\n dragColumnPlaceholderRef.value!.style.zIndex = column.value.fixed ? '3' : 'unset'\n if (dragOverColumn.value.left > column.value.left!) {\n dragColumnPlaceholderRef.value!.style.left = `${\n dragOverColumn.value.left -\n offsetLeft.value +\n dragOverColumn.value.finallyWidth +\n currentOffetLeft -\n 1\n }px`\n } else {\n dragColumnPlaceholderRef.value!.style.left = `${dragOverColumn.value.left - offsetLeft.value + currentOffetLeft - 1}px`\n }\n } else {\n dragColumnPlaceholderRef.value!.style.opacity = '0'\n }\n }\n\n watch([dragging, clientX, allowed, scrollLeft], () => {\n raf.cancel(rafFrame)\n rafFrame = raf(() => {\n if (dragging.value && !allowed.value) {\n iconType.value = ICON_TYPE_FORBID\n }\n if (dragging.value && allowed.value) {\n iconType.value = ''\n handleDraging()\n } else {\n dragColumnPlaceholderRef.value!.style.opacity = '0'\n }\n })\n })\n\n watch(dragging, () => {\n if (!dragging.value && allowed.value && dragOverColumn.value) {\n raf.cancel(rafFrame)\n onColumnDragEnd({\n column: column.value.originColumn!,\n targetColumn: toRaw(dragOverColumn.value.originColumn),\n event: columnDragEvent.value!,\n dir: column.value.left! <= dragOverColumn.value.left ? 'right' : 'left',\n })\n }\n })\n}\nexport default useColumnDragHandler\n"],"names":["scrollLeft"],"mappings":"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"}
@@ -91,7 +91,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
91
91
  _: 1
92
92
  /* STABLE */
93
93
  }, 8, ["class"])),
94
- _ctx.column.resizable && !(_ctx.column.children && _ctx.column.children.length) ? (openBlock(), createBlock(_component_DragHandle, {
94
+ _ctx.mergeColumnResizable && !(_ctx.column.children && _ctx.column.children.length) ? (openBlock(), createBlock(_component_DragHandle, {
95
95
  key: 0,
96
96
  "prefix-cls": _ctx.prefixCls,
97
97
  width: _ctx.widths.width,
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderCell.vue.mjs","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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"}
1
+ {"version":3,"file":"HeaderCell.vue.mjs","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: 2026-01-22 10:35:45\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\n const mergeColumnResizable = computed(\n () => props.column.resizable ?? tableContext.columnResizable.value,\n )\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 mergeColumnResizable,\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=\"mergeColumnResizable && !(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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"}