@koi-design/uxd-ui 14.0.35 → 14.0.37
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/es/components/Menu/MenuItem.mjs +1 -1
- package/es/components/Menu/MenuItem.mjs.map +1 -1
- package/es/components/Table/BaseTable.vue.d.ts +10 -0
- package/es/components/Table/BodyTable.vue.d.ts +10 -0
- package/es/components/Table/HeadTable.vue.d.ts +10 -0
- package/es/components/Table/Table.mjs +2 -0
- package/es/components/Table/Table.mjs.map +1 -1
- package/es/components/Table/Table.type.d.ts +1 -0
- package/es/components/Table/Table.type.mjs.map +1 -1
- package/es/components/Table/Table.vue.d.ts +20 -0
- package/es/components/Table/TableBox.vue.d.ts +20 -0
- package/es/components/Table/hooks/useFilterSortPage.d.ts +1 -0
- package/es/components/Table/hooks/useFilterSortPage.mjs +5 -0
- package/es/components/Table/hooks/useFilterSortPage.mjs.map +1 -1
- package/es/components/Table/tableUnits/FilterDropdown.mjs +6 -1
- package/es/components/Table/tableUnits/FilterDropdown.mjs.map +1 -1
- package/es/components/Table/tableUnits/FilterDropdown.vue.d.ts +9 -0
- package/es/components/Table/tableUnits/TableHeader.vue.d.ts +10 -0
- package/es/components/Table/tableUnits/TableHeaderRow.mjs +4 -1
- package/es/components/Table/tableUnits/TableHeaderRow.mjs.map +1 -1
- package/es/components/Table/tableUnits/TableHeaderRow.vue.d.ts +10 -0
- package/lib/components/Menu/MenuItem.js +1 -1
- package/lib/components/Menu/MenuItem.js.map +1 -1
- package/lib/components/Table/BaseTable.vue.d.ts +10 -0
- package/lib/components/Table/BodyTable.vue.d.ts +10 -0
- package/lib/components/Table/HeadTable.vue.d.ts +10 -0
- package/lib/components/Table/Table.js +2 -0
- package/lib/components/Table/Table.js.map +1 -1
- package/lib/components/Table/Table.type.d.ts +1 -0
- package/lib/components/Table/Table.type.js.map +1 -1
- package/lib/components/Table/Table.vue.d.ts +20 -0
- package/lib/components/Table/TableBox.vue.d.ts +20 -0
- package/lib/components/Table/hooks/useFilterSortPage.d.ts +1 -0
- package/lib/components/Table/hooks/useFilterSortPage.js +5 -0
- package/lib/components/Table/hooks/useFilterSortPage.js.map +1 -1
- package/lib/components/Table/tableUnits/FilterDropdown.js +6 -1
- package/lib/components/Table/tableUnits/FilterDropdown.js.map +1 -1
- package/lib/components/Table/tableUnits/FilterDropdown.vue.d.ts +9 -0
- package/lib/components/Table/tableUnits/TableHeader.vue.d.ts +10 -0
- package/lib/components/Table/tableUnits/TableHeaderRow.js +4 -1
- package/lib/components/Table/tableUnits/TableHeaderRow.js.map +1 -1
- package/lib/components/Table/tableUnits/TableHeaderRow.vue.d.ts +10 -0
- package/package.json +1 -1
- package/styles/components/table/index.css +1 -1
- package/styles/components/table/index.less +18 -2
- package/styles/components/table/var.less +1 -0
- package/styles/index.css +1 -1
- package/types/components/Table/BaseTable.vue.d.ts +10 -0
- package/types/components/Table/BodyTable.vue.d.ts +10 -0
- package/types/components/Table/HeadTable.vue.d.ts +10 -0
- package/types/components/Table/Table.type.d.ts +1 -0
- package/types/components/Table/Table.vue.d.ts +20 -0
- package/types/components/Table/TableBox.vue.d.ts +20 -0
- package/types/components/Table/hooks/useFilterSortPage.d.ts +1 -0
- package/types/components/Table/tableUnits/FilterDropdown.vue.d.ts +9 -0
- package/types/components/Table/tableUnits/TableHeader.vue.d.ts +10 -0
- package/types/components/Table/tableUnits/TableHeaderRow.vue.d.ts +10 -0
- package/uxd-ui.css +1 -1
- package/uxd-ui.esm.min.mjs +7 -7
- package/uxd-ui.esm.mjs +19 -4
- package/uxd-ui.umd.js +19 -4
- package/uxd-ui.umd.min.js +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.mjs","sources":["../../../../src/components/Menu/MenuItem.vue"],"sourcesContent":["<template>\n <UTooltip :title=\"title\" :disabled=\"!showTooltip\" placement=\"right\" :class=\"`${prefixCls}-trigger`\">\n <li\n role=\"menuitem\"\n :class=\"[\n prefixCls,\n {\n [`${prefixCls}-selected`]: isSelected,\n [`${prefixCls}-disabled`]: disabled\n }\n ]\"\n :style=\"style\"\n :data-color=\"color\"\n v-bind=\"$attrs\"\n @click=\"onClick\"\n >\n <slot>{{ title }}</slot>\n </li>\n </UTooltip>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, watch, ref } from 'vue';\nimport type { CSSProperties } from 'vue';\nimport UTooltip from '@uxd-ui/components/Tooltip';\nimport warn from '../../utils/warn';\nimport { isFunction } from '../../utils/isValid';\nimport { menuItemProps, menuItemEmits, type MenuEvent, type MenuStore, type ParentMenu } from './Menu.type';\n\nlet guid = -1;\n\nexport default defineComponent({\n name: 'UMenuItem',\n components: {\n UTooltip\n },\n inheritAttrs: false,\n props: menuItemProps,\n emits: menuItemEmits,\n setup(props, { emit, attrs }) {\n const {\n selectedKeys,\n mode,\n rootPrefixCls,\n updateKeyPath,\n // inlineIndent,\n collapsed\n } = inject<MenuStore>('menuStore', {} as MenuStore);\n const { fireMenuClick, fireMenuDeselect, fireMenuSelect } = inject<MenuEvent>('menuEvent', {} as MenuEvent);\n const parentMenu = inject<ParentMenu>('parentMenu', {} as ParentMenu);\n const prefixCls = computed(() => `${rootPrefixCls.value}-item`);\n const level = parentMenu.isRootMenu ? 1 : (parentMenu.level as number) + 1;\n\n if (mode === undefined) {\n warn('cannot find menu parent Component ,OR! the menu mode is error');\n }\n const eventKey = computed(() => {\n if (props.name) {\n return props.name;\n }\n guid += 1;\n return `${guid}$MenuItem`;\n });\n\n const isSelected = ref(false);\n\n watch(\n selectedKeys,\n () => {\n const selected = selectedKeys.value.includes(eventKey.value);\n if (parentMenu.setSubMenuSelected) {\n parentMenu.setSubMenuSelected(eventKey.value, selected);\n }\n isSelected.value = selected;\n },\n { immediate: true }\n );\n\n const style = computed<CSSProperties>(() => {\n const attrStyle: CSSProperties = attrs.style ? (attrs.style as CSSProperties) : ({} as CSSProperties);\n if (mode.value === 'inline') {\n return {\n // paddingLeft: `${inlineIndent.value * level}px`,\n ...attrStyle\n };\n }\n return { ...attrStyle };\n });\n\n const showTooltip = computed(() => {\n if (collapsed.value) {\n return props.title !== undefined && !props.disabled && level === 1;\n }\n return false;\n });\n\n const onClick = () => {\n if (props.disabled) {\n return;\n }\n const key = eventKey.value;\n updateKeyPath(key, 'item');\n if (parentMenu.fireSubmenuClick && isFunction(parentMenu.fireSubmenuClick)) {\n parentMenu.fireSubmenuClick();\n }\n const _event = {\n key,\n item: {}\n };\n fireMenuClick && isFunction(fireMenuClick) && fireMenuClick(_event);\n if (isSelected.value) {\n fireMenuDeselect && isFunction(fireMenuDeselect) && fireMenuDeselect(_event);\n } else {\n fireMenuSelect && isFunction(fireMenuSelect) && fireMenuSelect(_event);\n }\n emit('click', _event);\n };\n\n return {\n prefixCls,\n rootPrefixCls,\n showTooltip,\n isSelected,\n style,\n onClick\n };\n }\n});\n</script>\n"],"names":["_createBlock","_normalizeClass","_createElementVNode","_mergeProps","_renderSlot"],"mappings":";;;;;;;AA6BA,IAAI,OAAO;AAEX,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA;AACF,EACA,cAAc;AAAA,EACd,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM,OAAO,EAAE,MAAM,SAAS;UACtB;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,QACE,OAAkB,aAAa,EAAe;UAC5C,EAAE,eAAe,kBAAkB,mBAAmB,OAAkB,aAAa,EAAe;UACpG,aAAa,OAAmB,cAAc,EAAgB;UAC9D,YAAY,SAAS,MAAM,GAAG,cAAc,YAAY;UACxD,QAAQ,WAAW,aAAa,IAAK,WAAW,QAAmB;QAErE,SAAS,QAAW;cACjB,+DAA+D;AAAA;UAEhE,WAAW,SAAS,MAAM;UAC1B,MAAM,
|
|
1
|
+
{"version":3,"file":"MenuItem.mjs","sources":["../../../../src/components/Menu/MenuItem.vue"],"sourcesContent":["<template>\n <UTooltip :title=\"title\" :disabled=\"!showTooltip\" placement=\"right\" :class=\"`${prefixCls}-trigger`\">\n <li\n role=\"menuitem\"\n :class=\"[\n prefixCls,\n {\n [`${prefixCls}-selected`]: isSelected,\n [`${prefixCls}-disabled`]: disabled\n }\n ]\"\n :style=\"style\"\n :data-color=\"color\"\n v-bind=\"$attrs\"\n @click=\"onClick\"\n >\n <slot>{{ title }}</slot>\n </li>\n </UTooltip>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, watch, ref } from 'vue';\nimport type { CSSProperties } from 'vue';\nimport UTooltip from '@uxd-ui/components/Tooltip';\nimport warn from '../../utils/warn';\nimport { isFunction } from '../../utils/isValid';\nimport { menuItemProps, menuItemEmits, type MenuEvent, type MenuStore, type ParentMenu } from './Menu.type';\n\nlet guid = -1;\n\nexport default defineComponent({\n name: 'UMenuItem',\n components: {\n UTooltip\n },\n inheritAttrs: false,\n props: menuItemProps,\n emits: menuItemEmits,\n setup(props, { emit, attrs }) {\n const {\n selectedKeys,\n mode,\n rootPrefixCls,\n updateKeyPath,\n // inlineIndent,\n collapsed\n } = inject<MenuStore>('menuStore', {} as MenuStore);\n const { fireMenuClick, fireMenuDeselect, fireMenuSelect } = inject<MenuEvent>('menuEvent', {} as MenuEvent);\n const parentMenu = inject<ParentMenu>('parentMenu', {} as ParentMenu);\n const prefixCls = computed(() => `${rootPrefixCls.value}-item`);\n const level = parentMenu.isRootMenu ? 1 : (parentMenu.level as number) + 1;\n\n if (mode === undefined) {\n warn('cannot find menu parent Component ,OR! the menu mode is error');\n }\n const eventKey = computed(() => {\n if (props.name !== undefined) {\n return props.name;\n }\n guid += 1;\n return `${guid}$MenuItem`;\n });\n\n const isSelected = ref(false);\n\n watch(\n selectedKeys,\n () => {\n const selected = selectedKeys.value.includes(eventKey.value);\n if (parentMenu.setSubMenuSelected) {\n parentMenu.setSubMenuSelected(eventKey.value, selected);\n }\n isSelected.value = selected;\n },\n { immediate: true }\n );\n\n const style = computed<CSSProperties>(() => {\n const attrStyle: CSSProperties = attrs.style ? (attrs.style as CSSProperties) : ({} as CSSProperties);\n if (mode.value === 'inline') {\n return {\n // paddingLeft: `${inlineIndent.value * level}px`,\n ...attrStyle\n };\n }\n return { ...attrStyle };\n });\n\n const showTooltip = computed(() => {\n if (collapsed.value) {\n return props.title !== undefined && !props.disabled && level === 1;\n }\n return false;\n });\n\n const onClick = () => {\n if (props.disabled) {\n return;\n }\n const key = eventKey.value;\n updateKeyPath(key, 'item');\n if (parentMenu.fireSubmenuClick && isFunction(parentMenu.fireSubmenuClick)) {\n parentMenu.fireSubmenuClick();\n }\n const _event = {\n key,\n item: {}\n };\n fireMenuClick && isFunction(fireMenuClick) && fireMenuClick(_event);\n if (isSelected.value) {\n fireMenuDeselect && isFunction(fireMenuDeselect) && fireMenuDeselect(_event);\n } else {\n fireMenuSelect && isFunction(fireMenuSelect) && fireMenuSelect(_event);\n }\n emit('click', _event);\n };\n\n return {\n prefixCls,\n rootPrefixCls,\n showTooltip,\n isSelected,\n style,\n onClick\n };\n }\n});\n</script>\n"],"names":["_createBlock","_normalizeClass","_createElementVNode","_mergeProps","_renderSlot"],"mappings":";;;;;;;AA6BA,IAAI,OAAO;AAEX,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA;AACF,EACA,cAAc;AAAA,EACd,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM,OAAO,EAAE,MAAM,SAAS;UACtB;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,QACE,OAAkB,aAAa,EAAe;UAC5C,EAAE,eAAe,kBAAkB,mBAAmB,OAAkB,aAAa,EAAe;UACpG,aAAa,OAAmB,cAAc,EAAgB;UAC9D,YAAY,SAAS,MAAM,GAAG,cAAc,YAAY;UACxD,QAAQ,WAAW,aAAa,IAAK,WAAW,QAAmB;QAErE,SAAS,QAAW;cACjB,+DAA+D;AAAA;UAEhE,WAAW,SAAS,MAAM;UAC1B,MAAM,SAAS,QAAW;eACrB,MAAM;AAAA;cAEP;aACD,GAAG;AAAA,KACX;UAEK,aAAa,IAAI,KAAK;;MAG1B;AAAA,MACA,MAAM;cACE,WAAW,aAAa,MAAM,SAAS,SAAS,KAAK;YACvD,WAAW,oBAAoB;qBACtB,mBAAmB,SAAS,OAAO,QAAQ;AAAA;mBAE7C,QAAQ;AAAA;AACrB,MACA,EAAE,WAAW;AAAK;UAGd,QAAQ,SAAwB,MAAM;YACpC,YAA2B,MAAM,QAAS,MAAM,QAA2B;UAC7E,KAAK,UAAU,UAAU;eACpB;AAAA,UAEL,GAAG;AAAA;AACL;aAEK,EAAE,GAAG;AAAU,KACvB;UAEK,cAAc,SAAS,MAAM;UAC7B,UAAU,OAAO;eACZ,MAAM,UAAU,UAAa,CAAC,MAAM,YAAY,UAAU;AAAA;aAE5D;AAAA,KACR;UAEK,UAAU,MAAM;UAChB,MAAM,UAAU;;;YAGd,MAAM,SAAS;oBACP,KAAK,MAAM;UACrB,WAAW,oBAAoB,WAAW,WAAW,gBAAgB,GAAG;mBAC/D;AAAiB;YAExB,SAAS;AAAA,QACb;AAAA,QACA,MAAM;AAAC;uBAEQ,WAAW,aAAa,KAAK,cAAc,MAAM;UAC9D,WAAW,OAAO;4BACA,WAAW,gBAAgB,KAAK,iBAAiB,MAAM;AAAA,aACtE;0BACa,WAAW,cAAc,KAAK,eAAe,MAAM;AAAA;WAElE,SAAS,MAAM;AAAA;WAGf;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;sBA9HCA,YAiBW;IAjBA,OAAO;IAAQ,UAAQ,CAAG;IAAa,WAAU;AAAA,IAAS,OAAKC,kBAAK,wBAAS;AAAA;qBACtF,MAeK;AAAA,MAfLC,mBAeK,MAfLC,WAeK;AAAA,QAdH,MAAK;AAAA,QACJ,OAAK;AAAA,UAAY;;gBAAmC,4BAAuB;gBAA0B,4BAAuB;;;QAO5H,OAAO;QACP,cAAY;SACL,aAAM;AAAA,QACb,SAAK,uCAAE;;QAERC,WAAwB,4BAAxB,MAAwB;AAAA,0CAAf,UAAK;;;;;;;;;;;"}
|
|
@@ -143,6 +143,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
143
143
|
isSortColumn: (column: InnerColumn) => boolean;
|
|
144
144
|
isAscend: (column: InnerColumn) => boolean;
|
|
145
145
|
isDescend: (column: InnerColumn) => boolean;
|
|
146
|
+
isFiltered: (column: InnerColumn) => boolean;
|
|
146
147
|
hasAscend: (column: InnerColumn) => boolean;
|
|
147
148
|
hasDescend: (column: InnerColumn) => boolean;
|
|
148
149
|
handleSorterClick: (column: InnerColumn) => void;
|
|
@@ -175,6 +176,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
175
176
|
type: PropType<import("../locale/default").TableLocal>;
|
|
176
177
|
required: true;
|
|
177
178
|
};
|
|
179
|
+
active: {
|
|
180
|
+
type: BooleanConstructor;
|
|
181
|
+
default: boolean;
|
|
182
|
+
};
|
|
178
183
|
}>, {
|
|
179
184
|
prefixCls: import("vue").ComputedRef<string>;
|
|
180
185
|
dropdownPrefixCls: import("vue").ComputedRef<string>;
|
|
@@ -198,9 +203,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
198
203
|
type: PropType<import("../locale/default").TableLocal>;
|
|
199
204
|
required: true;
|
|
200
205
|
};
|
|
206
|
+
active: {
|
|
207
|
+
type: BooleanConstructor;
|
|
208
|
+
default: boolean;
|
|
209
|
+
};
|
|
201
210
|
}>> & Readonly<{
|
|
202
211
|
onSelect?: (...args: any[]) => any;
|
|
203
212
|
}>, {
|
|
213
|
+
active: boolean;
|
|
204
214
|
selectedKeys: (string | number)[];
|
|
205
215
|
}, {}, {
|
|
206
216
|
Dropdown: {
|
|
@@ -162,6 +162,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
162
162
|
isSortColumn: (column: InnerColumn) => boolean;
|
|
163
163
|
isAscend: (column: InnerColumn) => boolean;
|
|
164
164
|
isDescend: (column: InnerColumn) => boolean;
|
|
165
|
+
isFiltered: (column: InnerColumn) => boolean;
|
|
165
166
|
hasAscend: (column: InnerColumn) => boolean;
|
|
166
167
|
hasDescend: (column: InnerColumn) => boolean;
|
|
167
168
|
handleSorterClick: (column: InnerColumn) => void;
|
|
@@ -194,6 +195,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
194
195
|
type: PropType<import("../locale/default").TableLocal>;
|
|
195
196
|
required: true;
|
|
196
197
|
};
|
|
198
|
+
active: {
|
|
199
|
+
type: BooleanConstructor;
|
|
200
|
+
default: boolean;
|
|
201
|
+
};
|
|
197
202
|
}>, {
|
|
198
203
|
prefixCls: import("vue").ComputedRef<string>;
|
|
199
204
|
dropdownPrefixCls: import("vue").ComputedRef<string>;
|
|
@@ -217,9 +222,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
217
222
|
type: PropType<import("../locale/default").TableLocal>;
|
|
218
223
|
required: true;
|
|
219
224
|
};
|
|
225
|
+
active: {
|
|
226
|
+
type: BooleanConstructor;
|
|
227
|
+
default: boolean;
|
|
228
|
+
};
|
|
220
229
|
}>> & Readonly<{
|
|
221
230
|
onSelect?: (...args: any[]) => any;
|
|
222
231
|
}>, {
|
|
232
|
+
active: boolean;
|
|
223
233
|
selectedKeys: (string | number)[];
|
|
224
234
|
}, {}, {
|
|
225
235
|
Dropdown: {
|
|
@@ -159,6 +159,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
159
159
|
isSortColumn: (column: InnerColumn) => boolean;
|
|
160
160
|
isAscend: (column: InnerColumn) => boolean;
|
|
161
161
|
isDescend: (column: InnerColumn) => boolean;
|
|
162
|
+
isFiltered: (column: InnerColumn) => boolean;
|
|
162
163
|
hasAscend: (column: InnerColumn) => boolean;
|
|
163
164
|
hasDescend: (column: InnerColumn) => boolean;
|
|
164
165
|
handleSorterClick: (column: InnerColumn) => void;
|
|
@@ -191,6 +192,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
191
192
|
type: PropType<import("../locale/default").TableLocal>;
|
|
192
193
|
required: true;
|
|
193
194
|
};
|
|
195
|
+
active: {
|
|
196
|
+
type: BooleanConstructor;
|
|
197
|
+
default: boolean;
|
|
198
|
+
};
|
|
194
199
|
}>, {
|
|
195
200
|
prefixCls: import("vue").ComputedRef<string>;
|
|
196
201
|
dropdownPrefixCls: import("vue").ComputedRef<string>;
|
|
@@ -214,9 +219,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
214
219
|
type: PropType<import("../locale/default").TableLocal>;
|
|
215
220
|
required: true;
|
|
216
221
|
};
|
|
222
|
+
active: {
|
|
223
|
+
type: BooleanConstructor;
|
|
224
|
+
default: boolean;
|
|
225
|
+
};
|
|
217
226
|
}>> & Readonly<{
|
|
218
227
|
onSelect?: (...args: any[]) => any;
|
|
219
228
|
}>, {
|
|
229
|
+
active: boolean;
|
|
220
230
|
selectedKeys: (string | number)[];
|
|
221
231
|
}, {}, {
|
|
222
232
|
Dropdown: {
|
|
@@ -49,6 +49,7 @@ const _sfc_main = defineComponent({
|
|
|
49
49
|
isSortColumn,
|
|
50
50
|
isAscend,
|
|
51
51
|
isDescend,
|
|
52
|
+
isFiltered,
|
|
52
53
|
hasAscend,
|
|
53
54
|
hasDescend,
|
|
54
55
|
toggleSortOrder,
|
|
@@ -233,6 +234,7 @@ const _sfc_main = defineComponent({
|
|
|
233
234
|
isSortColumn,
|
|
234
235
|
isAscend,
|
|
235
236
|
isDescend,
|
|
237
|
+
isFiltered,
|
|
236
238
|
hasAscend,
|
|
237
239
|
hasDescend,
|
|
238
240
|
toggleSortOrder,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.mjs","sources":["../../../../src/components/Table/Table.vue"],"sourcesContent":["<template>\n <ResizeObserver @resize=\"debouncedHandleResize\">\n <div :class=\"[`${prefixCls}-wrapper`]\">\n <div\n v-if=\"showPagination && pagination && (pagination.position === 'top' || pagination.position === 'both')\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-top`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n <div\n :ref=\"saveRef('table')\"\n :class=\"[\n prefixCls,\n `${prefixCls}-${size}`,\n {\n [`${prefixCls}-${variant}`]: !isBorder,\n [`${prefixCls}-border`]: !!isBorder,\n [`${prefixCls}-radius`]: variant !== 'ghost' && !border && radius,\n [`${prefixCls}-empty`]: !data.length,\n [`${prefixCls}-without-column-header`]: !showHeader,\n [`${prefixCls}-fixed-header`]: !!maxHeight,\n [`${prefixCls}-scroll-position-left`]: scrollPosition === 'left' || scrollPosition === 'both',\n [`${prefixCls}-scroll-position-right`]: scrollPosition === 'right' || scrollPosition === 'both',\n [`${prefixCls}-dragging`]: showResizeLine,\n [`${prefixCls}-stripe`]: stripe\n }\n ]\"\n >\n <div v-if=\"$slots.title\" :class=\"`${prefixCls}-title`\">\n <slot name=\"title\" />\n </div>\n <div :class=\"`${prefixCls}-content`\">\n <TableBox :columns=\"updatedColumns\" @head-scroll=\"handleBodyScrollX\" @body-scroll=\"handleBodyScroll\" />\n <div v-if=\"!currentDatas.length\" :class=\"`${prefixCls}-placeholder`\">\n <slot name=\"empty\">\n {{ emptyText }}\n </slot>\n </div>\n </div>\n <div v-show=\"showResizeLine\" :ref=\"saveRef('resizeLine')\" :class=\"`${prefixCls}-resize-line`\" />\n <Spin v-if=\"loadingType === 'spinner'\" fix :loading=\"loading\" />\n </div>\n <div v-if=\"$slots.footer\" :class=\"`${prefixCls}-footer`\">\n <slot name=\"footer\" />\n </div>\n <div\n v-if=\"showPagination && ((pagination && pagination.position !== 'top') || !pagination)\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-bottom`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n </div>\n </ResizeObserver>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, provide, reactive, toRefs, ref, onMounted, nextTick, onBeforeUnmount, onUpdated, watch } from 'vue';\nimport Spin from '@uxd-ui/components/Spin';\nimport Pagination from '@uxd-ui/components/Pagination';\nimport { debounce } from '../../utils/tools';\n// import Container from '../base/Container';\nimport TableBox from './TableBox.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport ResizeObserver from '../base/ResizeObserver';\nimport useUpdateColumns from './hooks/useUpdateColumns';\nimport useUpdateDatas from './hooks/useUpdateDatas';\nimport useTableResize from './hooks/useTableResize';\nimport useExpander from './hooks/useExpander';\nimport useSelection from './hooks/useSelection';\nimport useDraggable from './hooks/useDraggable';\nimport useFilterSortPage from './hooks/useFilterSortPage';\nimport { tableProps, tableEmits, type SaveRef, type TableRefs, type TableColumn, type InnerColumn } from './Table.type';\n\nexport default defineComponent({\n name: 'UTable',\n components: {\n TableBox,\n Spin,\n Pagination,\n ResizeObserver\n },\n props: tableProps,\n emits: tableEmits,\n setup(props, { slots, emit }) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('table');\n const showResizeLine = ref(false);\n const tableRefs = reactive({} as TableRefs);\n const saveRef: SaveRef = (key: string) => {\n return (el: any) => {\n tableRefs[key] = el;\n };\n };\n\n const locale = computed(() => {\n return { ...globalConfig.locale.table, ...props.locale };\n });\n\n const isBorder = computed(() => {\n const b = props.variant === 'border' || props.border;\n return b;\n });\n\n // ============ datas ===============\n const { updatedDatas } = useUpdateDatas(props);\n\n // ============= sort & fitler =============\n const {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n handlePageChange,\n handlePageSizeChange\n } = useFilterSortPage(props, updatedDatas, emit);\n\n // ================ draggable ====================\n const { setRowRefs, draggableColumn } = useDraggable(props, tableRefs);\n\n // ================ expander ====================\n const {\n expandedRowKeys,\n showChildrenRowKeys,\n handleExpandChange,\n isRowExpanded,\n expandedRowRender,\n isTreeTable,\n expandColumn,\n expandIconColumnIndex\n } = useExpander(props, slots, currentDatas, emit);\n\n const { selectionColumn } = useSelection(props, updatedDatas, currentDatas, prefixCls, locale);\n\n // ============ columns ===============\n const { updatedColumns, isColumnFixed, isLeftFixed, isRightFixed, leftColumns, rightColumns } = useUpdateColumns(props, slots, {\n draggableColumn,\n expandColumn,\n selectionColumn\n });\n\n // ============ resize ==============\n // #region\n const {\n // sizesMap,\n handleResize,\n isScrollX,\n // fixedHeadRowsHeight,\n // fixedBodyRowsHeight,\n scrollPosition,\n // syncFixedTableRowHeight,\n setScrollPositionClass,\n resetScrollX,\n tableWidth,\n resizeColumns,\n clearResizeTimer,\n setResizeWidth,\n syncColumnWidth,\n columnWidths\n } = useTableResize(updatedColumns, tableRefs, prefixCls, isColumnFixed, props);\n\n const debouncedHandleResize = debounce(handleResize, 150);\n\n onMounted(() => {\n nextTick(() => {\n setTimeout(() => {\n handleResize();\n resetScrollX();\n }, 0);\n });\n });\n\n onUpdated(() => {\n nextTick(() => {\n handleResize();\n });\n });\n\n onBeforeUnmount(() => {\n if (debouncedHandleResize) {\n debouncedHandleResize.cancel();\n }\n clearResizeTimer();\n });\n // #endregion\n\n // ============ scroll ===============\n // #region\n const scrollable = computed(() => {\n return props.maxHeight || isScrollX.value || isColumnFixed.value;\n });\n\n let lastScrollLeft = 0;\n const handleBodyScrollX = (e: any) => {\n if (e.currentTarget !== e.target) {\n return;\n }\n\n const { target } = e;\n const { bodyTable, headTable } = tableRefs;\n\n if (target.scrollLeft !== lastScrollLeft && isScrollX.value) {\n if (target === (bodyTable as any).wrapRef && headTable) {\n (headTable as any).setScrollLeft(target.scrollLeft);\n } else if (target === (headTable as any)?.wrapRef && bodyTable) {\n (bodyTable as any).setScrollLeft(target.scrollLeft);\n }\n setScrollPositionClass();\n }\n lastScrollLeft = target.scrollLeft;\n };\n\n const handleBodyScroll = (e: any) => {\n handleBodyScrollX(e);\n };\n\n watch(\n () => props.data,\n (val) => {\n if (val.length === 0 && isScrollX.value) {\n nextTick(() => {\n resetScrollX();\n });\n }\n }\n );\n // #endregion\n // ============ empty ================\n const emptyText = computed(() => {\n return props.data.length ? locale.value.notFoundText : locale.value.noDataText;\n });\n\n // ===========row hover & event ================\n // #region\n const currentHoverKey = ref(null);\n const onRowMouseEnter = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseenter', data, index, e);\n };\n const onRowMouseLeave = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseleave', data, index, e);\n };\n const onRowClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-click', data, index, e);\n };\n const onRowDoubleClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-doubleclick', data, index, e);\n };\n const onRowContextMenu = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-contextmenu', data, index, e);\n };\n // #endregion\n\n // ============= other event =================\n // #region\n const onHeaderCellClick = (column: TableColumn, e: Event) => {\n emit('header-click', column, e);\n };\n\n const handleColumnResize = (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) => {\n emit('column-resize', columnWidth, changeWidth, column, event);\n };\n // #endregion\n\n // ============= provide =================\n\n const { showHeader, maxHeight, expandIcon, rowClassName, indentSize, showSummary, disabledHover, expandIndent, headerSticky, loading, width } =\n toRefs(props);\n\n provide('tableContext', {\n prefixCls,\n locale,\n data: currentDatas,\n saveRef,\n tableRefs,\n showResizeLine,\n props: {\n showHeader,\n maxHeight,\n expandIcon,\n rowClassName,\n indentSize,\n emptyText,\n showSummary,\n disabledHover,\n expandIndent,\n headerSticky,\n loading,\n width\n },\n slots,\n expand: {\n expandedRowRender,\n expandedRowKeys,\n showChildrenRowKeys,\n isRowExpanded,\n expandIconColumnIndex,\n handleExpandChange,\n isTreeTable\n },\n size: {\n tableWidth,\n // sizesMap,\n resizeColumns,\n isScrollX,\n setResizeWidth,\n handleColumnResize,\n debouncedHandleResize,\n syncColumnWidth,\n columnWidths\n },\n fixed: {\n isColumnFixed,\n currentHoverKey\n },\n draggable: {\n setRowRefs\n },\n rowEvents: {\n onRowMouseEnter,\n onRowMouseLeave,\n onRowClick,\n onRowDoubleClick,\n onRowContextMenu\n },\n headerEvents: {\n onHeaderCellClick\n },\n filterAndSorter: {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter\n },\n pagination: paginationOptions\n });\n return {\n prefixCls,\n saveRef,\n showResizeLine,\n updatedColumns,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n isBorder,\n isLeftFixed,\n leftColumns,\n isRightFixed,\n rightColumns,\n scrollable,\n scrollPosition,\n handleBodyScroll,\n handleBodyScrollX,\n emptyText,\n debouncedHandleResize,\n handlePageChange,\n handlePageSizeChange\n };\n }\n});\n</script>\n"],"names":["Spin","Pagination","useFilterSortPage","_createBlock","_createElementVNode","_normalizeClass","_createElementBlock","_createVNode","_mergeProps","_renderSlot"],"mappings":";;;;;;;;;;;;;;;;;AAiFA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,UACAA;AAAA,gBACAC;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM,OAAO,EAAE,OAAO,QAAQ;UACtB,EAAE,WAAW,QAAQ,iBAAiB,gBAAgB,OAAO;UAC7D,iBAAiB,IAAI,KAAK;UAC1B,YAAY,SAAS,EAAe;UACpC,UAAmB,CAAC,QAAgB;aACjC,CAAC,OAAY;kBACR,OAAO;AAAA;AACnB;UAGI,SAAS,SAAS,MAAM;aACrB,EAAE,GAAG,aAAa,OAAO,OAAO,GAAG,MAAM;AAAO,KACxD;UAEK,WAAW,SAAS,MAAM;YACxB,IAAI,MAAM,YAAY,YAAY,MAAM;aACvC;AAAA,KACR;UAGK,EAAE,iBAAiB,eAAe,KAAK;UAGvC;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACEC,iBAAkB,OAAO,cAAc,IAAI;UAGzC,EAAE,YAAY,oBAAoB,aAAa,OAAO,SAAS;UAG/D;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,YAAY,OAAO,OAAO,cAAc,IAAI;UAE1C,EAAE,oBAAoB,aAAa,OAAO,cAAc,cAAc,WAAW,MAAM;UAGvF,EAAE,gBAAgB,eAAe,aAAa,cAAc,aAAa,iBAAiB,iBAAiB,OAAO,OAAO;AAAA,MAC7H;AAAA,MACA;AAAA,MACA;AAAA,KACD;UAIK;AAAA,MAEJ;AAAA,MACA;AAAA,MAGA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,QACE,eAAe,gBAAgB,WAAW,WAAW,eAAe,KAAK;UAEvE,wBAAwB,SAAS,cAAc,GAAG;cAE9C,MAAM;eACL,MAAM;mBACF,MAAM;;;AAEF,WACZ,CAAC;AAAA,OACL;AAAA,KACF;cAES,MAAM;eACL,MAAM;;AACA,OACd;AAAA,KACF;oBAEe,MAAM;UAChB,uBAAuB;8BACH;AAAO;;AAEd,KAClB;UAKK,aAAa,SAAS,MAAM;aACzB,MAAM,aAAa,UAAU,SAAS,cAAc;AAAA,KAC5D;QAEG,iBAAiB;UACf,oBAAoB,CAAC,MAAW;UAChC,EAAE,kBAAkB,EAAE,QAAQ;;;YAI5B,EAAE,WAAW;YACb,EAAE,WAAW,cAAc;UAE7B,OAAO,eAAe,kBAAkB,UAAU,OAAO;YACvD,WAAY,UAAkB,WAAW,WAAW;AACrD,oBAAkB,cAAc,OAAO,UAAU;AAAA,mBACzC,YAAY,uCAAmB,YAAW,WAAW;AAC7D,oBAAkB,cAAc,OAAO,UAAU;AAAA;;AAE7B;uBAER,OAAO;AAAA;UAGpB,mBAAmB,CAAC,MAAW;wBACjB,CAAC;AAAA;;MAInB,MAAM,MAAM;AAAA,MACZ,CAAC,QAAQ;YACH,IAAI,WAAW,KAAK,UAAU,OAAO;mBAC9B,MAAM;;AACA,WACd;AAAA;AACH;AACF;UAII,YAAY,SAAS,MAAM;aACxB,MAAM,KAAK,SAAS,OAAO,MAAM,eAAe,OAAO,MAAM;AAAA,KACrE;UAIK,kBAAkB,IAAI,IAAI;UAC1B,kBAAkB,CAAC,MAA2B,OAAe,MAAa;WACzE,kBAAkB,MAAM,OAAO,CAAC;AAAA;UAEjC,kBAAkB,CAAC,MAA2B,OAAe,MAAa;WACzE,kBAAkB,MAAM,OAAO,CAAC;AAAA;UAEjC,aAAa,CAAC,MAA2B,OAAe,MAAa;WACpE,aAAa,MAAM,OAAO,CAAC;AAAA;UAE5B,mBAAmB,CAAC,MAA2B,OAAe,MAAa;WAC1E,mBAAmB,MAAM,OAAO,CAAC;AAAA;UAElC,mBAAmB,CAAC,MAA2B,OAAe,MAAa;WAC1E,mBAAmB,MAAM,OAAO,CAAC;AAAA;UAMlC,oBAAoB,CAAC,QAAqB,MAAa;WACtD,gBAAgB,QAAQ,CAAC;AAAA;UAG1B,qBAAqB,CAAC,aAAqB,aAAqB,QAAqB,UAAiB;WACrG,iBAAiB,aAAa,aAAa,QAAQ,KAAK;AAAA;UAMzD,EAAE,YAAY,WAAW,YAAY,cAAc,YAAY,aAAa,eAAe,cAAc,cAAc,SAAS,UACpI,OAAO,KAAK;YAEN,gBAAgB;AAAA,MACtB;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AACF,MACA;AAAA,MACA,QAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AACF,MACA,MAAM;AAAA,QACJ;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AACF,MACA,OAAO;AAAA,QACL;AAAA,QACA;AAAA;AACF,MACA,WAAW;AAAA,QACT;AAAA;AACF,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AACF,MACA,cAAc;AAAA,QACZ;AAAA;AACF,MACA,iBAAiB;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AACF,MACA,YAAY;AAAA,KACb;WACM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;;sBA1XCC,YA2DiB,6BA3DA,UAAQ;qBACvB,MAyDM;AAAA,MAzDNC,mBAyDM;QAzDA,OAAKC,mBAAM,wBAAS;;QAEhB,uBAAkB,oBAAe,gBAAW,aAAQ,SAAc,gBAAW,aAAQ,wBAD7FC,mBASM;;UAPH,OAAKD;gBAAkB,8BAAS;AAAA,gBAAoC,kCAAS;AAAA,gBAAwC,oCAA+B,mBAAc,gBAAW,UAAK;AAAA;;UAMnLE,YAAwI,uBAAxIC,WAAoB,KAAoH,mBAAnG;AAAA,YAAG,OAAO;YAAoB,UAAQ;YAAmB,kBAAkB;;;QAElHJ,mBAgCM;UA/BH,KAAK,aAAO;UACZ,OAAKC;YAAc;eAAwB,kBAAa;;kBAAoC,kBAAa,iBAAO,CAAM;kBAA0B,0BAAS,EAAc;kBAA0B,0BAAqB,iBAAO,YAAiB,eAAU;kBAAwB,yBAAS,CAAY,UAAK;AAAA,kBAAwB,yCAAS,CAA4B;kBAA4B,gCAAS,EAAoB;kBAA2B,wCAAmC,wBAAc,UAAe,wBAAc;AAAA,kBAA6B,yCAAoC,wBAAc,WAAgB,wBAAc;AAAA,kBAA6B,4BAAuB;kBAAgC,0BAAqB;;;;UAiBrtB,YAAO,sBAAlBC,mBAEM;;YAFoB,OAAKD,kBAAK,sBAAS;AAAA;YAC3CI,WAAqB;;UAEvBL,mBAOM;YAPA,OAAKC,kBAAK,wBAAS;AAAA;YACvBE,YAAuG;cAA5F,SAAS;cAAiB,cAAa;cAAoB,cAAa;;aACvE,kBAAa,uBAAzBD,mBAIM;;cAJ4B,OAAKD,kBAAK,4BAAS;AAAA;cACnDI,WAEO,0BAFP,MAEO;AAAA,gDADF,cAAS;;;;yBAIlBL,mBAAgG;YAAlE,KAAK,aAAO;YAAiB,OAAKC,kBAAK,4BAAS;AAAA;oBAAjE,mBAAc;AAAA;UACf,qBAAW,0BAAvBF,YAAgE;;YAAzB;YAAK,SAAS;;;QAE5C,YAAO,uBAAlBG,mBAEM;;UAFqB,OAAKD,kBAAK,uBAAS;AAAA;UAC5CI,WAAsB;;QAGhB,wBAAoB,mBAAc,gBAAW,aAAQ,UAAgB,iCAD7EH,mBASM;;UAPH,OAAKD;gBAAkB,8BAAS;AAAA,gBAAoC,qCAAS;AAAA,gBAA2C,oCAA+B,mBAAc,gBAAW,UAAK;AAAA;;UAMtLE,YAAwI,uBAAxIC,WAAoB,KAAoH,mBAAnG;AAAA,YAAG,OAAO;YAAoB,UAAQ;YAAmB,kBAAkB;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Table.mjs","sources":["../../../../src/components/Table/Table.vue"],"sourcesContent":["<template>\n <ResizeObserver @resize=\"debouncedHandleResize\">\n <div :class=\"[`${prefixCls}-wrapper`]\">\n <div\n v-if=\"showPagination && pagination && (pagination.position === 'top' || pagination.position === 'both')\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-top`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n <div\n :ref=\"saveRef('table')\"\n :class=\"[\n prefixCls,\n `${prefixCls}-${size}`,\n {\n [`${prefixCls}-${variant}`]: !isBorder,\n [`${prefixCls}-border`]: !!isBorder,\n [`${prefixCls}-radius`]: variant !== 'ghost' && !border && radius,\n [`${prefixCls}-empty`]: !data.length,\n [`${prefixCls}-without-column-header`]: !showHeader,\n [`${prefixCls}-fixed-header`]: !!maxHeight,\n [`${prefixCls}-scroll-position-left`]: scrollPosition === 'left' || scrollPosition === 'both',\n [`${prefixCls}-scroll-position-right`]: scrollPosition === 'right' || scrollPosition === 'both',\n [`${prefixCls}-dragging`]: showResizeLine,\n [`${prefixCls}-stripe`]: stripe\n }\n ]\"\n >\n <div v-if=\"$slots.title\" :class=\"`${prefixCls}-title`\">\n <slot name=\"title\" />\n </div>\n <div :class=\"`${prefixCls}-content`\">\n <TableBox :columns=\"updatedColumns\" @head-scroll=\"handleBodyScrollX\" @body-scroll=\"handleBodyScroll\" />\n <div v-if=\"!currentDatas.length\" :class=\"`${prefixCls}-placeholder`\">\n <slot name=\"empty\">\n {{ emptyText }}\n </slot>\n </div>\n </div>\n <div v-show=\"showResizeLine\" :ref=\"saveRef('resizeLine')\" :class=\"`${prefixCls}-resize-line`\" />\n <Spin v-if=\"loadingType === 'spinner'\" fix :loading=\"loading\" />\n </div>\n <div v-if=\"$slots.footer\" :class=\"`${prefixCls}-footer`\">\n <slot name=\"footer\" />\n </div>\n <div\n v-if=\"showPagination && ((pagination && pagination.position !== 'top') || !pagination)\"\n :class=\"{\n [`${prefixCls}-pagination`]: true,\n [`${prefixCls}-pagination-bottom`]: true,\n [`${prefixCls}-pagination-right`]: pagination && pagination.align === 'right'\n }\"\n >\n <Pagination v-bind=\"paginationOptions\" :total=\"computedPageTotal\" @change=\"handlePageChange\" @page-size-change=\"handlePageSizeChange\" />\n </div>\n </div>\n </ResizeObserver>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, provide, reactive, toRefs, ref, onMounted, nextTick, onBeforeUnmount, onUpdated, watch } from 'vue';\nimport Spin from '@uxd-ui/components/Spin';\nimport Pagination from '@uxd-ui/components/Pagination';\nimport { debounce } from '../../utils/tools';\n// import Container from '../base/Container';\nimport TableBox from './TableBox.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport ResizeObserver from '../base/ResizeObserver';\nimport useUpdateColumns from './hooks/useUpdateColumns';\nimport useUpdateDatas from './hooks/useUpdateDatas';\nimport useTableResize from './hooks/useTableResize';\nimport useExpander from './hooks/useExpander';\nimport useSelection from './hooks/useSelection';\nimport useDraggable from './hooks/useDraggable';\nimport useFilterSortPage from './hooks/useFilterSortPage';\nimport { tableProps, tableEmits, type SaveRef, type TableRefs, type TableColumn, type InnerColumn } from './Table.type';\n\nexport default defineComponent({\n name: 'UTable',\n components: {\n TableBox,\n Spin,\n Pagination,\n ResizeObserver\n },\n props: tableProps,\n emits: tableEmits,\n setup(props, { slots, emit }) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('table');\n const showResizeLine = ref(false);\n const tableRefs = reactive({} as TableRefs);\n const saveRef: SaveRef = (key: string) => {\n return (el: any) => {\n tableRefs[key] = el;\n };\n };\n\n const locale = computed(() => {\n return { ...globalConfig.locale.table, ...props.locale };\n });\n\n const isBorder = computed(() => {\n const b = props.variant === 'border' || props.border;\n return b;\n });\n\n // ============ datas ===============\n const { updatedDatas } = useUpdateDatas(props);\n\n // ============= sort & fitler =============\n const {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n isFiltered,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n handlePageChange,\n handlePageSizeChange\n } = useFilterSortPage(props, updatedDatas, emit);\n\n // ================ draggable ====================\n const { setRowRefs, draggableColumn } = useDraggable(props, tableRefs);\n\n // ================ expander ====================\n const {\n expandedRowKeys,\n showChildrenRowKeys,\n handleExpandChange,\n isRowExpanded,\n expandedRowRender,\n isTreeTable,\n expandColumn,\n expandIconColumnIndex\n } = useExpander(props, slots, currentDatas, emit);\n\n const { selectionColumn } = useSelection(props, updatedDatas, currentDatas, prefixCls, locale);\n\n // ============ columns ===============\n const { updatedColumns, isColumnFixed, isLeftFixed, isRightFixed, leftColumns, rightColumns } = useUpdateColumns(props, slots, {\n draggableColumn,\n expandColumn,\n selectionColumn\n });\n\n // ============ resize ==============\n // #region\n const {\n // sizesMap,\n handleResize,\n isScrollX,\n // fixedHeadRowsHeight,\n // fixedBodyRowsHeight,\n scrollPosition,\n // syncFixedTableRowHeight,\n setScrollPositionClass,\n resetScrollX,\n tableWidth,\n resizeColumns,\n clearResizeTimer,\n setResizeWidth,\n syncColumnWidth,\n columnWidths\n } = useTableResize(updatedColumns, tableRefs, prefixCls, isColumnFixed, props);\n\n const debouncedHandleResize = debounce(handleResize, 150);\n\n onMounted(() => {\n nextTick(() => {\n setTimeout(() => {\n handleResize();\n resetScrollX();\n }, 0);\n });\n });\n\n onUpdated(() => {\n nextTick(() => {\n handleResize();\n });\n });\n\n onBeforeUnmount(() => {\n if (debouncedHandleResize) {\n debouncedHandleResize.cancel();\n }\n clearResizeTimer();\n });\n // #endregion\n\n // ============ scroll ===============\n // #region\n const scrollable = computed(() => {\n return props.maxHeight || isScrollX.value || isColumnFixed.value;\n });\n\n let lastScrollLeft = 0;\n const handleBodyScrollX = (e: any) => {\n if (e.currentTarget !== e.target) {\n return;\n }\n\n const { target } = e;\n const { bodyTable, headTable } = tableRefs;\n\n if (target.scrollLeft !== lastScrollLeft && isScrollX.value) {\n if (target === (bodyTable as any).wrapRef && headTable) {\n (headTable as any).setScrollLeft(target.scrollLeft);\n } else if (target === (headTable as any)?.wrapRef && bodyTable) {\n (bodyTable as any).setScrollLeft(target.scrollLeft);\n }\n setScrollPositionClass();\n }\n lastScrollLeft = target.scrollLeft;\n };\n\n const handleBodyScroll = (e: any) => {\n handleBodyScrollX(e);\n };\n\n watch(\n () => props.data,\n (val) => {\n if (val.length === 0 && isScrollX.value) {\n nextTick(() => {\n resetScrollX();\n });\n }\n }\n );\n // #endregion\n // ============ empty ================\n const emptyText = computed(() => {\n return props.data.length ? locale.value.notFoundText : locale.value.noDataText;\n });\n\n // ===========row hover & event ================\n // #region\n const currentHoverKey = ref(null);\n const onRowMouseEnter = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseenter', data, index, e);\n };\n const onRowMouseLeave = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-mouseleave', data, index, e);\n };\n const onRowClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-click', data, index, e);\n };\n const onRowDoubleClick = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-doubleclick', data, index, e);\n };\n const onRowContextMenu = (data: Record<string, any>, index: number, e: Event) => {\n emit('row-contextmenu', data, index, e);\n };\n // #endregion\n\n // ============= other event =================\n // #region\n const onHeaderCellClick = (column: TableColumn, e: Event) => {\n emit('header-click', column, e);\n };\n\n const handleColumnResize = (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) => {\n emit('column-resize', columnWidth, changeWidth, column, event);\n };\n // #endregion\n\n // ============= provide =================\n\n const { showHeader, maxHeight, expandIcon, rowClassName, indentSize, showSummary, disabledHover, expandIndent, headerSticky, loading, width } =\n toRefs(props);\n\n provide('tableContext', {\n prefixCls,\n locale,\n data: currentDatas,\n saveRef,\n tableRefs,\n showResizeLine,\n props: {\n showHeader,\n maxHeight,\n expandIcon,\n rowClassName,\n indentSize,\n emptyText,\n showSummary,\n disabledHover,\n expandIndent,\n headerSticky,\n loading,\n width\n },\n slots,\n expand: {\n expandedRowRender,\n expandedRowKeys,\n showChildrenRowKeys,\n isRowExpanded,\n expandIconColumnIndex,\n handleExpandChange,\n isTreeTable\n },\n size: {\n tableWidth,\n // sizesMap,\n resizeColumns,\n isScrollX,\n setResizeWidth,\n handleColumnResize,\n debouncedHandleResize,\n syncColumnWidth,\n columnWidths\n },\n fixed: {\n isColumnFixed,\n currentHoverKey\n },\n draggable: {\n setRowRefs\n },\n rowEvents: {\n onRowMouseEnter,\n onRowMouseLeave,\n onRowClick,\n onRowDoubleClick,\n onRowContextMenu\n },\n headerEvents: {\n onHeaderCellClick\n },\n filterAndSorter: {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n isFiltered,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter\n },\n pagination: paginationOptions\n });\n return {\n prefixCls,\n saveRef,\n showResizeLine,\n updatedColumns,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n isBorder,\n isLeftFixed,\n leftColumns,\n isRightFixed,\n rightColumns,\n scrollable,\n scrollPosition,\n handleBodyScroll,\n handleBodyScrollX,\n emptyText,\n debouncedHandleResize,\n handlePageChange,\n handlePageSizeChange\n };\n }\n});\n</script>\n"],"names":["Spin","Pagination","useFilterSortPage","_createBlock","_createElementVNode","_normalizeClass","_createElementBlock","_createVNode","_mergeProps","_renderSlot"],"mappings":"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"}
|
|
@@ -326,6 +326,7 @@ export interface TableContext {
|
|
|
326
326
|
isSortColumn: (column: InnerColumn) => boolean;
|
|
327
327
|
isAscend: (column: InnerColumn) => boolean;
|
|
328
328
|
isDescend: (column: InnerColumn) => boolean;
|
|
329
|
+
isFiltered: (column: InnerColumn) => boolean;
|
|
329
330
|
hasAscend: (column: InnerColumn) => boolean;
|
|
330
331
|
hasDescend: (column: InnerColumn) => boolean;
|
|
331
332
|
toggleSortOrder: (column: InnerColumn) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.type.mjs","sources":["../../../../src/components/Table/Table.type.ts"],"sourcesContent":["import type { Component, ComputedRef, CSSProperties, ExtractPropTypes, PropType, Ref, Slot, Slots, VNodeChild } from 'vue';\nimport type { JSX } from 'vue/jsx-runtime';\nimport { normalSizeMap } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\nimport type { EmitFn, NormalSizeMap } from '../../utils/globalType';\nimport type { TableLocal } from '../locale/default';\nimport type { PaginationProps } from '../Pagination/Pagination.type';\nimport type Table from './Table.vue';\nimport type { RowData } from './hooks/useDraggable';\n\nexport type ColumnFixed = boolean | 'left' | 'right';\nexport type ColumnAlign = 'left' | 'right' | 'center';\nexport type ColumnSortOrder = 'ascend' | 'descend';\nexport type ColumnSortFn = (a: any, b: any) => number;\nexport interface ColumnFilter {\n label: string;\n value: string | number;\n}\nexport type ColumnFilterFn = (value: string | number, row: any) => boolean;\nexport interface ColumnSlotParams {\n row: any;\n index: number;\n rowKey: string | number;\n pagination: Partial<PaginationProps>;\n column: InnerColumn;\n}\n\nexport interface TableColProps {\n width: string;\n key: string;\n fixed: boolean;\n minWidth: string;\n resizeWidth: string;\n className: string;\n}\n\nexport interface ColumnFilterSlotParams {\n selectedKeys: (string | number)[];\n setSelectedKeys: (keys: (string | number)[]) => void;\n confirm: () => void;\n column: InnerColumn;\n}\n\nexport interface TableColumnSkeleton {\n type: 'circle' | 'rect' | 'text' | 'p' | 'image';\n style: CSSProperties;\n}\nexport interface TableColumn {\n key: string;\n title?: string;\n dataIndex?: string;\n width?: number | string;\n minWidth?: number;\n children?: TableColumn[];\n fixed?: ColumnFixed;\n align?: ColumnAlign;\n ellipsis?: boolean;\n sortable?: boolean | 'custom';\n sortOrder?: ColumnSortOrder;\n sortDirections?: ColumnSortOrder[];\n sortFn?: ColumnSortFn;\n filterable?: boolean;\n filters?: ColumnFilter[];\n filterFn?: ColumnFilterFn;\n filterIcon?: string | Component;\n filterIconStyle?: CSSProperties;\n filterMultiple?: boolean;\n filteredValue?: (string | number)[];\n onFilterDropdownVisibleChange?: (visible: boolean) => void;\n slot?: string;\n titleSlot?: string;\n filterSlot?: string;\n render?: (param: ColumnSlotParams) => VNodeChild | JSX.Element;\n titleRender?: (column: TableColumn) => VNodeChild | JSX.Element;\n filterRender?: (param: ColumnFilterSlotParams) => VNodeChild | JSX.Element;\n resizable?: boolean;\n customCell?: (row: any, index: number) => Record<string, any>;\n className?: string;\n hideSummary?: boolean;\n summarySlot?: string;\n summaryRender?: (sum?: number) => VNodeChild | JSX.Element;\n customSummaryCell?: () => Record<string, any>;\n autoSummary?: boolean;\n tips?: string;\n skeleton?: TableColumnSkeleton[];\n\n // draggable?: boolean;\n // handleDragStart?: (event: MouseEvent, param: ColumnSlotParams) => void;\n // render?: (param: ColumnSlotParams, handleDragStart?: (event: MouseEvent, DragParam: ColumnSlotParams) => void) => VNodeChild | JSX.Element;\n}\n\nexport interface InnerColumn extends TableColumn {\n _index?: number;\n rowSpan?: number;\n colSpan?: number;\n children?: InnerColumn[];\n type?: string;\n summaryRender?: (sum?: number) => VNodeChild | JSX.Element;\n left?: number;\n right?: number;\n lastLeft?: boolean;\n firstRight?: boolean;\n _isRightEdge?: boolean;\n}\n\nexport type SelectionType = 'checkbox' | 'radio';\nexport interface SelectionMenu {\n key: string;\n text: string;\n onSelect?: (rows: any[]) => void;\n}\nexport interface SelectionConfig {\n selectedKeys: (string | number)[] | undefined;\n type?: SelectionType;\n setSelectionProps?: (row: any, index: any) => Record<string, any>;\n selectionMenus?: SelectionMenu[];\n hideDefaultMenus?: boolean;\n onChange?: (keys: (string | number)[], selectedRows: any[]) => void;\n onSelect?: (data: any, checked: boolean, selectedRows: any[], event: any) => void;\n onSelectMultiple?: (checked: boolean, selectedRows: any[], changeRows: any[]) => void;\n onSelectAll?: (checked: boolean, selectedRows: any[], changeRows: any[]) => void;\n onSelectInvert?: (keys: (string | number)[]) => void;\n columnWidth?: number;\n fixed?: ColumnFixed;\n showCheckAll?: boolean;\n}\n\nexport interface DraggableConfig {\n fixed?: ColumnFixed;\n onDragDrop: (sourceRowKey: string | number, targetRowKey: string | number) => void;\n}\n\nexport type PaginationPosition = 'top' | 'bottom' | 'both' | undefined;\nexport type PaginationAlign = 'left' | 'right' | undefined;\nexport interface PaginationConfig extends Partial<PaginationProps> {\n position: PaginationPosition;\n align: PaginationAlign;\n}\n\nexport interface InnerDataItem {\n _index: number;\n _key: string | number;\n _isSkeleton?: boolean;\n dataRef: Record<string, any>;\n children?: InnerColumn[];\n}\n\nexport type RowClassName = (row: Record<string, any>, index: number) => string;\nexport type GetRowKey = (row: Record<string, any>, index: number) => string | number;\n\nexport const tableProps = {\n data: {\n type: Array as PropType<Record<string, any>[]>,\n default: () => [] as Record<string, any>[]\n },\n columns: {\n type: Array as PropType<TableColumn[]>,\n default: () => [] as TableColumn[]\n },\n border: {\n type: Boolean,\n default: false\n },\n showHeader: {\n type: Boolean,\n default: true\n },\n width: {\n type: [Number, String]\n },\n maxHeight: {\n type: [Number, String]\n },\n loading: {\n type: Boolean,\n default: false\n },\n size: {\n type: String as PropType<NormalSizeMap>,\n default: 'default',\n validator: oneOf(normalSizeMap)\n },\n disabledHover: {\n type: Boolean,\n default: false\n },\n rowKey: {\n type: [Function, String] as PropType<string | GetRowKey>,\n default: 'key'\n },\n rowClassName: {\n type: Function as PropType<RowClassName>\n },\n expandIcon: {\n type: String\n },\n defaultExpandAllRows: {\n type: Boolean,\n default: false\n },\n expandedRowKeys: {\n type: Array as PropType<string[]>\n },\n treeIconColumnIndex: {\n type: Number\n },\n defaultShowAllChildren: {\n type: Boolean,\n default: false\n },\n showChildrenRowKeys: {\n type: Array as PropType<string[]>\n },\n indentSize: {\n type: Number,\n default: 20\n },\n selection: {\n type: Object as PropType<SelectionConfig>\n },\n locale: {\n type: Object as PropType<TableLocal>\n },\n stripe: {\n type: Boolean,\n default: false\n },\n showPagination: {\n type: Boolean,\n default: false\n },\n pagination: {\n type: Object as PropType<PaginationConfig>\n },\n showSummary: {\n type: Boolean,\n default: false\n },\n expandFix: {\n type: Boolean,\n default: false\n },\n expandIndent: {\n type: Boolean,\n default: true\n },\n draggable: {\n type: Object as PropType<DraggableConfig>\n },\n headerSticky: {\n type: Number,\n default: undefined as undefined\n },\n variant: {\n type: String as PropType<'surface' | 'ghost' | 'border'>,\n default: 'ghost'\n },\n radius: {\n type: Boolean,\n default: false\n },\n loadingType: {\n type: String as PropType<'spinner' | 'skeleton'>,\n default: 'spinner'\n },\n skeletonRows: {\n type: Number,\n default: 3\n }\n};\nexport type TableProps = ExtractPropTypes<typeof tableProps>;\n\nexport type SaveRef = (key: string) => (el: any) => void;\nexport type TableRefs = Record<string, any>;\nexport interface ExpandParams {\n row: any;\n rowKey: string | number;\n async?: boolean;\n done?: () => void;\n tree?: boolean;\n}\nexport interface TableContext {\n prefixCls: ComputedRef<string>;\n locale: ComputedRef<TableLocal>;\n data: ComputedRef<InnerDataItem[]>;\n saveRef: SaveRef;\n tableRefs: TableRefs;\n showResizeLine: Ref<boolean>;\n props: {\n showHeader: Ref<boolean>;\n maxHeight: Ref<string | number | undefined>;\n expandIcon: Ref<string | undefined>;\n rowClassName: Ref<RowClassName>;\n indentSize: Ref<number>;\n emptyText: ComputedRef<string>;\n showSummary: Ref<boolean>;\n disabledHover: Ref<boolean>;\n expandIndent: Ref<boolean>;\n headerSticky: Ref<number | undefined>;\n loading: Ref<boolean>;\n width: Ref<string | number | undefined>;\n };\n slots: Slots;\n expand: {\n expandedRowRender: ComputedRef<Slot | undefined>;\n expandedRowKeys: Ref<(string | number)[]>;\n showChildrenRowKeys: Ref<(string | number)[]>;\n isRowExpanded: (rowKey: string | number, tree: boolean) => boolean;\n expandIconColumnIndex: ComputedRef<number>;\n handleExpandChange: ({ row, rowKey, async, done, tree }: ExpandParams, e: Event) => void;\n isTreeTable: ComputedRef<boolean>;\n };\n size: {\n tableWidth: Ref<number>;\n resizeColumns: Ref<InnerColumn[]>;\n columnWidths: Ref<Record<string, number>>;\n syncColumnWidth: (width: number, column: InnerColumn) => void;\n // sizesMap: Record<string, number>;\n isScrollX: ComputedRef<boolean>;\n setResizeWidth: (column: InnerColumn, width: number) => void;\n handleColumnResize: (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) => void;\n debouncedHandleResize: any;\n };\n fixed: {\n isColumnFixed: ComputedRef<boolean>;\n currentHoverKey: Ref<string | number | null>;\n };\n draggable: {\n setRowRefs: (val: RowData) => void;\n };\n rowEvents: {\n onRowMouseEnter: (data: Record<string, any>, index: number, e: Event) => void;\n onRowMouseLeave: (data: Record<string, any>, index: number, e: Event) => void;\n onRowClick: (data: Record<string, any>, index: number, e: Event) => void;\n onRowDoubleClick: (data: Record<string, any>, index: number, e: Event) => void;\n onRowContextMenu: (data: Record<string, any>, index: number, e: Event) => void;\n };\n headerEvents: {\n onHeaderCellClick: (column: InnerColumn, e: any) => void;\n };\n filterAndSorter: {\n hasAction: (column: InnerColumn) => boolean;\n hasSorters: (column: InnerColumn) => boolean;\n hasFilters: (column: InnerColumn) => boolean;\n isSortColumn: (column: InnerColumn) => boolean;\n isAscend: (column: InnerColumn) => boolean;\n isDescend: (column: InnerColumn) => boolean;\n hasAscend: (column: InnerColumn) => boolean;\n hasDescend: (column: InnerColumn) => boolean;\n toggleSortOrder: (column: InnerColumn) => void;\n setColumnFilter: (column: InnerColumn, selectedKeys: (string | number)[]) => void;\n };\n isSummary: boolean;\n pagination: PaginationProps;\n}\n\nconst rowEmitFn = (data: Record<string, any>, index: number, e: Event) => typeof data === 'object' && typeof index === 'number' && e instanceof Event;\nexport const tableEmits = {\n 'row-mouseenter': rowEmitFn,\n 'row-mouseleave': rowEmitFn,\n 'row-click': rowEmitFn,\n 'row-doubleclick': rowEmitFn,\n 'row-contextmenu': rowEmitFn,\n 'header-click': (column: TableColumn, e: Event) => typeof column === 'object' && e instanceof Event,\n 'column-resize': (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) =>\n typeof columnWidth === 'number' && typeof changeWidth === 'number' && typeof column === 'object' && event instanceof Event,\n expand: (expanded: boolean, row: Record<string, any>, type: string) =>\n typeof expanded === 'boolean' && typeof row === 'object' && typeof type === 'string',\n 'async-expand': (row: any, done: (() => void) | undefined, keys: (string | number)[]) =>\n typeof row === 'object' && Array.isArray(keys) && typeof done === 'function',\n change: (\n pagination: PaginationProps,\n sort: { column: TableColumn | null; order: ColumnSortOrder | null },\n filter: Record<string, (string | number)[]> | null\n ) => !(pagination === null && sort === null && filter === null)\n};\n\nexport type TableEmits = typeof tableEmits;\nexport type TableEmit = EmitFn<TableEmits>;\nexport type TableInstanceType = InstanceType<typeof Table>;\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.type.mjs","sources":["../../../../src/components/Table/Table.type.ts"],"sourcesContent":["import type { Component, ComputedRef, CSSProperties, ExtractPropTypes, PropType, Ref, Slot, Slots, VNodeChild } from 'vue';\nimport type { JSX } from 'vue/jsx-runtime';\nimport { normalSizeMap } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\nimport type { EmitFn, NormalSizeMap } from '../../utils/globalType';\nimport type { TableLocal } from '../locale/default';\nimport type { PaginationProps } from '../Pagination/Pagination.type';\nimport type Table from './Table.vue';\nimport type { RowData } from './hooks/useDraggable';\n\nexport type ColumnFixed = boolean | 'left' | 'right';\nexport type ColumnAlign = 'left' | 'right' | 'center';\nexport type ColumnSortOrder = 'ascend' | 'descend';\nexport type ColumnSortFn = (a: any, b: any) => number;\nexport interface ColumnFilter {\n label: string;\n value: string | number;\n}\nexport type ColumnFilterFn = (value: string | number, row: any) => boolean;\nexport interface ColumnSlotParams {\n row: any;\n index: number;\n rowKey: string | number;\n pagination: Partial<PaginationProps>;\n column: InnerColumn;\n}\n\nexport interface TableColProps {\n width: string;\n key: string;\n fixed: boolean;\n minWidth: string;\n resizeWidth: string;\n className: string;\n}\n\nexport interface ColumnFilterSlotParams {\n selectedKeys: (string | number)[];\n setSelectedKeys: (keys: (string | number)[]) => void;\n confirm: () => void;\n column: InnerColumn;\n}\n\nexport interface TableColumnSkeleton {\n type: 'circle' | 'rect' | 'text' | 'p' | 'image';\n style: CSSProperties;\n}\nexport interface TableColumn {\n key: string;\n title?: string;\n dataIndex?: string;\n width?: number | string;\n minWidth?: number;\n children?: TableColumn[];\n fixed?: ColumnFixed;\n align?: ColumnAlign;\n ellipsis?: boolean;\n sortable?: boolean | 'custom';\n sortOrder?: ColumnSortOrder;\n sortDirections?: ColumnSortOrder[];\n sortFn?: ColumnSortFn;\n filterable?: boolean;\n filters?: ColumnFilter[];\n filterFn?: ColumnFilterFn;\n filterIcon?: string | Component;\n filterIconStyle?: CSSProperties;\n filterMultiple?: boolean;\n filteredValue?: (string | number)[];\n onFilterDropdownVisibleChange?: (visible: boolean) => void;\n slot?: string;\n titleSlot?: string;\n filterSlot?: string;\n render?: (param: ColumnSlotParams) => VNodeChild | JSX.Element;\n titleRender?: (column: TableColumn) => VNodeChild | JSX.Element;\n filterRender?: (param: ColumnFilterSlotParams) => VNodeChild | JSX.Element;\n resizable?: boolean;\n customCell?: (row: any, index: number) => Record<string, any>;\n className?: string;\n hideSummary?: boolean;\n summarySlot?: string;\n summaryRender?: (sum?: number) => VNodeChild | JSX.Element;\n customSummaryCell?: () => Record<string, any>;\n autoSummary?: boolean;\n tips?: string;\n skeleton?: TableColumnSkeleton[];\n\n // draggable?: boolean;\n // handleDragStart?: (event: MouseEvent, param: ColumnSlotParams) => void;\n // render?: (param: ColumnSlotParams, handleDragStart?: (event: MouseEvent, DragParam: ColumnSlotParams) => void) => VNodeChild | JSX.Element;\n}\n\nexport interface InnerColumn extends TableColumn {\n _index?: number;\n rowSpan?: number;\n colSpan?: number;\n children?: InnerColumn[];\n type?: string;\n summaryRender?: (sum?: number) => VNodeChild | JSX.Element;\n left?: number;\n right?: number;\n lastLeft?: boolean;\n firstRight?: boolean;\n _isRightEdge?: boolean;\n}\n\nexport type SelectionType = 'checkbox' | 'radio';\nexport interface SelectionMenu {\n key: string;\n text: string;\n onSelect?: (rows: any[]) => void;\n}\nexport interface SelectionConfig {\n selectedKeys: (string | number)[] | undefined;\n type?: SelectionType;\n setSelectionProps?: (row: any, index: any) => Record<string, any>;\n selectionMenus?: SelectionMenu[];\n hideDefaultMenus?: boolean;\n onChange?: (keys: (string | number)[], selectedRows: any[]) => void;\n onSelect?: (data: any, checked: boolean, selectedRows: any[], event: any) => void;\n onSelectMultiple?: (checked: boolean, selectedRows: any[], changeRows: any[]) => void;\n onSelectAll?: (checked: boolean, selectedRows: any[], changeRows: any[]) => void;\n onSelectInvert?: (keys: (string | number)[]) => void;\n columnWidth?: number;\n fixed?: ColumnFixed;\n showCheckAll?: boolean;\n}\n\nexport interface DraggableConfig {\n fixed?: ColumnFixed;\n onDragDrop: (sourceRowKey: string | number, targetRowKey: string | number) => void;\n}\n\nexport type PaginationPosition = 'top' | 'bottom' | 'both' | undefined;\nexport type PaginationAlign = 'left' | 'right' | undefined;\nexport interface PaginationConfig extends Partial<PaginationProps> {\n position: PaginationPosition;\n align: PaginationAlign;\n}\n\nexport interface InnerDataItem {\n _index: number;\n _key: string | number;\n _isSkeleton?: boolean;\n dataRef: Record<string, any>;\n children?: InnerColumn[];\n}\n\nexport type RowClassName = (row: Record<string, any>, index: number) => string;\nexport type GetRowKey = (row: Record<string, any>, index: number) => string | number;\n\nexport const tableProps = {\n data: {\n type: Array as PropType<Record<string, any>[]>,\n default: () => [] as Record<string, any>[]\n },\n columns: {\n type: Array as PropType<TableColumn[]>,\n default: () => [] as TableColumn[]\n },\n border: {\n type: Boolean,\n default: false\n },\n showHeader: {\n type: Boolean,\n default: true\n },\n width: {\n type: [Number, String]\n },\n maxHeight: {\n type: [Number, String]\n },\n loading: {\n type: Boolean,\n default: false\n },\n size: {\n type: String as PropType<NormalSizeMap>,\n default: 'default',\n validator: oneOf(normalSizeMap)\n },\n disabledHover: {\n type: Boolean,\n default: false\n },\n rowKey: {\n type: [Function, String] as PropType<string | GetRowKey>,\n default: 'key'\n },\n rowClassName: {\n type: Function as PropType<RowClassName>\n },\n expandIcon: {\n type: String\n },\n defaultExpandAllRows: {\n type: Boolean,\n default: false\n },\n expandedRowKeys: {\n type: Array as PropType<string[]>\n },\n treeIconColumnIndex: {\n type: Number\n },\n defaultShowAllChildren: {\n type: Boolean,\n default: false\n },\n showChildrenRowKeys: {\n type: Array as PropType<string[]>\n },\n indentSize: {\n type: Number,\n default: 20\n },\n selection: {\n type: Object as PropType<SelectionConfig>\n },\n locale: {\n type: Object as PropType<TableLocal>\n },\n stripe: {\n type: Boolean,\n default: false\n },\n showPagination: {\n type: Boolean,\n default: false\n },\n pagination: {\n type: Object as PropType<PaginationConfig>\n },\n showSummary: {\n type: Boolean,\n default: false\n },\n expandFix: {\n type: Boolean,\n default: false\n },\n expandIndent: {\n type: Boolean,\n default: true\n },\n draggable: {\n type: Object as PropType<DraggableConfig>\n },\n headerSticky: {\n type: Number,\n default: undefined as undefined\n },\n variant: {\n type: String as PropType<'surface' | 'ghost' | 'border'>,\n default: 'ghost'\n },\n radius: {\n type: Boolean,\n default: false\n },\n loadingType: {\n type: String as PropType<'spinner' | 'skeleton'>,\n default: 'spinner'\n },\n skeletonRows: {\n type: Number,\n default: 3\n }\n};\nexport type TableProps = ExtractPropTypes<typeof tableProps>;\n\nexport type SaveRef = (key: string) => (el: any) => void;\nexport type TableRefs = Record<string, any>;\nexport interface ExpandParams {\n row: any;\n rowKey: string | number;\n async?: boolean;\n done?: () => void;\n tree?: boolean;\n}\nexport interface TableContext {\n prefixCls: ComputedRef<string>;\n locale: ComputedRef<TableLocal>;\n data: ComputedRef<InnerDataItem[]>;\n saveRef: SaveRef;\n tableRefs: TableRefs;\n showResizeLine: Ref<boolean>;\n props: {\n showHeader: Ref<boolean>;\n maxHeight: Ref<string | number | undefined>;\n expandIcon: Ref<string | undefined>;\n rowClassName: Ref<RowClassName>;\n indentSize: Ref<number>;\n emptyText: ComputedRef<string>;\n showSummary: Ref<boolean>;\n disabledHover: Ref<boolean>;\n expandIndent: Ref<boolean>;\n headerSticky: Ref<number | undefined>;\n loading: Ref<boolean>;\n width: Ref<string | number | undefined>;\n };\n slots: Slots;\n expand: {\n expandedRowRender: ComputedRef<Slot | undefined>;\n expandedRowKeys: Ref<(string | number)[]>;\n showChildrenRowKeys: Ref<(string | number)[]>;\n isRowExpanded: (rowKey: string | number, tree: boolean) => boolean;\n expandIconColumnIndex: ComputedRef<number>;\n handleExpandChange: ({ row, rowKey, async, done, tree }: ExpandParams, e: Event) => void;\n isTreeTable: ComputedRef<boolean>;\n };\n size: {\n tableWidth: Ref<number>;\n resizeColumns: Ref<InnerColumn[]>;\n columnWidths: Ref<Record<string, number>>;\n syncColumnWidth: (width: number, column: InnerColumn) => void;\n // sizesMap: Record<string, number>;\n isScrollX: ComputedRef<boolean>;\n setResizeWidth: (column: InnerColumn, width: number) => void;\n handleColumnResize: (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) => void;\n debouncedHandleResize: any;\n };\n fixed: {\n isColumnFixed: ComputedRef<boolean>;\n currentHoverKey: Ref<string | number | null>;\n };\n draggable: {\n setRowRefs: (val: RowData) => void;\n };\n rowEvents: {\n onRowMouseEnter: (data: Record<string, any>, index: number, e: Event) => void;\n onRowMouseLeave: (data: Record<string, any>, index: number, e: Event) => void;\n onRowClick: (data: Record<string, any>, index: number, e: Event) => void;\n onRowDoubleClick: (data: Record<string, any>, index: number, e: Event) => void;\n onRowContextMenu: (data: Record<string, any>, index: number, e: Event) => void;\n };\n headerEvents: {\n onHeaderCellClick: (column: InnerColumn, e: any) => void;\n };\n filterAndSorter: {\n hasAction: (column: InnerColumn) => boolean;\n hasSorters: (column: InnerColumn) => boolean;\n hasFilters: (column: InnerColumn) => boolean;\n isSortColumn: (column: InnerColumn) => boolean;\n isAscend: (column: InnerColumn) => boolean;\n isDescend: (column: InnerColumn) => boolean;\n isFiltered: (column: InnerColumn) => boolean;\n hasAscend: (column: InnerColumn) => boolean;\n hasDescend: (column: InnerColumn) => boolean;\n toggleSortOrder: (column: InnerColumn) => void;\n setColumnFilter: (column: InnerColumn, selectedKeys: (string | number)[]) => void;\n };\n isSummary: boolean;\n pagination: PaginationProps;\n}\n\nconst rowEmitFn = (data: Record<string, any>, index: number, e: Event) => typeof data === 'object' && typeof index === 'number' && e instanceof Event;\nexport const tableEmits = {\n 'row-mouseenter': rowEmitFn,\n 'row-mouseleave': rowEmitFn,\n 'row-click': rowEmitFn,\n 'row-doubleclick': rowEmitFn,\n 'row-contextmenu': rowEmitFn,\n 'header-click': (column: TableColumn, e: Event) => typeof column === 'object' && e instanceof Event,\n 'column-resize': (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) =>\n typeof columnWidth === 'number' && typeof changeWidth === 'number' && typeof column === 'object' && event instanceof Event,\n expand: (expanded: boolean, row: Record<string, any>, type: string) =>\n typeof expanded === 'boolean' && typeof row === 'object' && typeof type === 'string',\n 'async-expand': (row: any, done: (() => void) | undefined, keys: (string | number)[]) =>\n typeof row === 'object' && Array.isArray(keys) && typeof done === 'function',\n change: (\n pagination: PaginationProps,\n sort: { column: TableColumn | null; order: ColumnSortOrder | null },\n filter: Record<string, (string | number)[]> | null\n ) => !(pagination === null && sort === null && filter === null)\n};\n\nexport type TableEmits = typeof tableEmits;\nexport type TableEmit = EmitFn<TableEmits>;\nexport type TableInstanceType = InstanceType<typeof Table>;\n"],"names":[],"mappings":"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"}
|
|
@@ -513,6 +513,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
513
513
|
isSortColumn: (column: InnerColumn) => boolean;
|
|
514
514
|
isAscend: (column: InnerColumn) => boolean;
|
|
515
515
|
isDescend: (column: InnerColumn) => boolean;
|
|
516
|
+
isFiltered: (column: InnerColumn) => boolean;
|
|
516
517
|
hasAscend: (column: InnerColumn) => boolean;
|
|
517
518
|
hasDescend: (column: InnerColumn) => boolean;
|
|
518
519
|
handleSorterClick: (column: InnerColumn) => void;
|
|
@@ -545,6 +546,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
545
546
|
type: import("vue").PropType<import("../locale/default").TableLocal>;
|
|
546
547
|
required: true;
|
|
547
548
|
};
|
|
549
|
+
active: {
|
|
550
|
+
type: BooleanConstructor;
|
|
551
|
+
default: boolean;
|
|
552
|
+
};
|
|
548
553
|
}>, {
|
|
549
554
|
prefixCls: import("vue").ComputedRef<string>;
|
|
550
555
|
dropdownPrefixCls: import("vue").ComputedRef<string>;
|
|
@@ -568,9 +573,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
568
573
|
type: import("vue").PropType<import("../locale/default").TableLocal>;
|
|
569
574
|
required: true;
|
|
570
575
|
};
|
|
576
|
+
active: {
|
|
577
|
+
type: BooleanConstructor;
|
|
578
|
+
default: boolean;
|
|
579
|
+
};
|
|
571
580
|
}>> & Readonly<{
|
|
572
581
|
onSelect?: (...args: any[]) => any;
|
|
573
582
|
}>, {
|
|
583
|
+
active: boolean;
|
|
574
584
|
selectedKeys: (string | number)[];
|
|
575
585
|
}, {}, {
|
|
576
586
|
Dropdown: {
|
|
@@ -7443,6 +7453,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
7443
7453
|
isSortColumn: (column: InnerColumn) => boolean;
|
|
7444
7454
|
isAscend: (column: InnerColumn) => boolean;
|
|
7445
7455
|
isDescend: (column: InnerColumn) => boolean;
|
|
7456
|
+
isFiltered: (column: InnerColumn) => boolean;
|
|
7446
7457
|
hasAscend: (column: InnerColumn) => boolean;
|
|
7447
7458
|
hasDescend: (column: InnerColumn) => boolean;
|
|
7448
7459
|
handleSorterClick: (column: InnerColumn) => void;
|
|
@@ -7475,6 +7486,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
7475
7486
|
type: import("vue").PropType<import("../locale/default").TableLocal>;
|
|
7476
7487
|
required: true;
|
|
7477
7488
|
};
|
|
7489
|
+
active: {
|
|
7490
|
+
type: BooleanConstructor;
|
|
7491
|
+
default: boolean;
|
|
7492
|
+
};
|
|
7478
7493
|
}>, {
|
|
7479
7494
|
prefixCls: import("vue").ComputedRef<string>;
|
|
7480
7495
|
dropdownPrefixCls: import("vue").ComputedRef<string>;
|
|
@@ -7498,9 +7513,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
7498
7513
|
type: import("vue").PropType<import("../locale/default").TableLocal>;
|
|
7499
7514
|
required: true;
|
|
7500
7515
|
};
|
|
7516
|
+
active: {
|
|
7517
|
+
type: BooleanConstructor;
|
|
7518
|
+
default: boolean;
|
|
7519
|
+
};
|
|
7501
7520
|
}>> & Readonly<{
|
|
7502
7521
|
onSelect?: (...args: any[]) => any;
|
|
7503
7522
|
}>, {
|
|
7523
|
+
active: boolean;
|
|
7504
7524
|
selectedKeys: (string | number)[];
|
|
7505
7525
|
}, {}, {
|
|
7506
7526
|
Dropdown: {
|
|
@@ -176,6 +176,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
176
176
|
isSortColumn: (column: import("./Table.type").InnerColumn) => boolean;
|
|
177
177
|
isAscend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
178
178
|
isDescend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
179
|
+
isFiltered: (column: import("./Table.type").InnerColumn) => boolean;
|
|
179
180
|
hasAscend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
180
181
|
hasDescend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
181
182
|
handleSorterClick: (column: import("./Table.type").InnerColumn) => void;
|
|
@@ -208,6 +209,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
208
209
|
type: PropType<import("../locale/default").TableLocal>;
|
|
209
210
|
required: true;
|
|
210
211
|
};
|
|
212
|
+
active: {
|
|
213
|
+
type: BooleanConstructor;
|
|
214
|
+
default: boolean;
|
|
215
|
+
};
|
|
211
216
|
}>, {
|
|
212
217
|
prefixCls: import("vue").ComputedRef<string>;
|
|
213
218
|
dropdownPrefixCls: import("vue").ComputedRef<string>;
|
|
@@ -231,9 +236,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
231
236
|
type: PropType<import("../locale/default").TableLocal>;
|
|
232
237
|
required: true;
|
|
233
238
|
};
|
|
239
|
+
active: {
|
|
240
|
+
type: BooleanConstructor;
|
|
241
|
+
default: boolean;
|
|
242
|
+
};
|
|
234
243
|
}>> & Readonly<{
|
|
235
244
|
onSelect?: (...args: any[]) => any;
|
|
236
245
|
}>, {
|
|
246
|
+
active: boolean;
|
|
237
247
|
selectedKeys: (string | number)[];
|
|
238
248
|
}, {}, {
|
|
239
249
|
Dropdown: {
|
|
@@ -7106,6 +7116,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
7106
7116
|
isSortColumn: (column: import("./Table.type").InnerColumn) => boolean;
|
|
7107
7117
|
isAscend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
7108
7118
|
isDescend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
7119
|
+
isFiltered: (column: import("./Table.type").InnerColumn) => boolean;
|
|
7109
7120
|
hasAscend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
7110
7121
|
hasDescend: (column: import("./Table.type").InnerColumn) => boolean;
|
|
7111
7122
|
handleSorterClick: (column: import("./Table.type").InnerColumn) => void;
|
|
@@ -7138,6 +7149,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
7138
7149
|
type: PropType<import("../locale/default").TableLocal>;
|
|
7139
7150
|
required: true;
|
|
7140
7151
|
};
|
|
7152
|
+
active: {
|
|
7153
|
+
type: BooleanConstructor;
|
|
7154
|
+
default: boolean;
|
|
7155
|
+
};
|
|
7141
7156
|
}>, {
|
|
7142
7157
|
prefixCls: import("vue").ComputedRef<string>;
|
|
7143
7158
|
dropdownPrefixCls: import("vue").ComputedRef<string>;
|
|
@@ -7161,9 +7176,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
7161
7176
|
type: PropType<import("../locale/default").TableLocal>;
|
|
7162
7177
|
required: true;
|
|
7163
7178
|
};
|
|
7179
|
+
active: {
|
|
7180
|
+
type: BooleanConstructor;
|
|
7181
|
+
default: boolean;
|
|
7182
|
+
};
|
|
7164
7183
|
}>> & Readonly<{
|
|
7165
7184
|
onSelect?: (...args: any[]) => any;
|
|
7166
7185
|
}>, {
|
|
7186
|
+
active: boolean;
|
|
7167
7187
|
selectedKeys: (string | number)[];
|
|
7168
7188
|
}, {}, {
|
|
7169
7189
|
Dropdown: {
|
|
@@ -7,6 +7,7 @@ export default function useFilterAndSort(props: TableProps, updatedDatas: Comput
|
|
|
7
7
|
isSortColumn: (column: InnerColumn) => boolean;
|
|
8
8
|
isAscend: (column: InnerColumn) => boolean;
|
|
9
9
|
isDescend: (column: InnerColumn) => boolean;
|
|
10
|
+
isFiltered: (column: InnerColumn) => boolean;
|
|
10
11
|
hasAscend: (column: InnerColumn) => boolean;
|
|
11
12
|
hasDescend: (column: InnerColumn) => boolean;
|
|
12
13
|
toggleSortOrder: (column: InnerColumn) => void;
|
|
@@ -115,6 +115,10 @@ function useFilterAndSort(props, updatedDatas, emit) {
|
|
|
115
115
|
};
|
|
116
116
|
emit("change", paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);
|
|
117
117
|
};
|
|
118
|
+
const isFiltered = (column) => {
|
|
119
|
+
var _a;
|
|
120
|
+
return hasFilters(column) && ((_a = currentFilters.value) == null ? void 0 : _a[getColumnKey(column)]) !== void 0;
|
|
121
|
+
};
|
|
118
122
|
const hasAction = (column) => {
|
|
119
123
|
return hasSorters(column) || hasFilters(column);
|
|
120
124
|
};
|
|
@@ -210,6 +214,7 @@ function useFilterAndSort(props, updatedDatas, emit) {
|
|
|
210
214
|
isSortColumn,
|
|
211
215
|
isAscend,
|
|
212
216
|
isDescend,
|
|
217
|
+
isFiltered,
|
|
213
218
|
hasAscend,
|
|
214
219
|
hasDescend,
|
|
215
220
|
toggleSortOrder,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFilterSortPage.mjs","sources":["../../../../../src/components/Table/hooks/useFilterSortPage.ts"],"sourcesContent":["import { computed, ref, watch, reactive } from 'vue';\nimport type { ComputedRef } from 'vue';\nimport { flatFilter, shallowequal, treeMap, treeSort } from '../../../utils/tools';\nimport type { PaginationProps } from '../../Pagination/Pagination.type';\nimport type { ColumnSortOrder, InnerColumn, InnerDataItem, TableColumn, TableEmit, TableProps } from '../Table.type';\nimport { getColumnKey } from '../utils';\n\nconst isSameColumn = (a: any, b: any) => {\n if (a && b && a.key && a.key === b.key) {\n return true;\n }\n return a === b || shallowequal(a, b);\n};\n\nexport default function useFilterAndSort(props: TableProps, updatedDatas: ComputedRef<InnerDataItem[]>, emit: TableEmit) {\n const currentSortColumn = ref<TableColumn | null>(null);\n const currentSortOrder = ref<ColumnSortOrder | null>(null);\n const currentFilters = ref<Record<string, (string | number)[]> | null>(null);\n const paginationOptions = reactive({} as PaginationProps);\n const sortDirections = ['ascend', 'descend'] as ColumnSortOrder[];\n const getDefaultSort = () => {\n const rst = flatFilter(props.columns, (column) => {\n return !!column.sortOrder && !column.children;\n });\n if (rst.length > 0) {\n currentSortColumn.value = rst[0];\n currentSortOrder.value = rst[0].sortOrder || null;\n }\n };\n\n const getDefaultFilters = () => {\n const rst = {} as Record<string, any>;\n let index = 0;\n treeMap(props.columns, (column) => {\n const colKey = getColumnKey(column, index);\n index += 1;\n if (column.filteredValue !== undefined && !column.children) {\n rst[colKey] = column.filteredValue;\n }\n });\n currentFilters.value = rst;\n };\n\n const restSortColumn = () => {\n currentSortColumn.value = null;\n currentSortOrder.value = null;\n currentFilters.value = null;\n };\n\n watch(\n computed(() => props.columns),\n () => {\n restSortColumn();\n getDefaultSort();\n getDefaultFilters();\n },\n { immediate: true }\n );\n\n // =========== sort ============\n // #region\n const hasSorters = (column: InnerColumn) => {\n return column.sortable && !column.children;\n };\n\n const isSortColumn = (column: InnerColumn) => {\n if (!column || !currentSortColumn.value) {\n return false;\n }\n return isSameColumn(column, currentSortColumn.value);\n };\n\n const isAscend = (column: InnerColumn) => {\n return isSortColumn(column) && currentSortOrder.value === 'ascend';\n };\n\n const isDescend = (column: InnerColumn) => {\n return isSortColumn(column) && currentSortOrder.value === 'descend';\n };\n\n const getSortDirections = (column: InnerColumn) => {\n return column.sortDirections || sortDirections;\n };\n\n const hasAscend = (column: InnerColumn) => {\n return getSortDirections(column).indexOf('ascend') !== -1;\n };\n\n const hasDescend = (column: InnerColumn) => {\n return getSortDirections(column).indexOf('descend') !== -1;\n };\n\n const toggleSortOrder = (column: InnerColumn) => {\n const directions = column.sortDirections || sortDirections;\n let newSortOrder;\n if (isSortColumn(column) && currentSortOrder.value !== null) {\n const index = directions.indexOf(currentSortOrder.value) + 1;\n newSortOrder = index === directions.length ? null : directions[index];\n } else {\n newSortOrder = directions[0];\n }\n currentSortOrder.value = newSortOrder;\n currentSortColumn.value = column;\n\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n const getSorterFn = () => {\n const sortOrder = currentSortOrder.value;\n const sortColumn = currentSortColumn.value;\n if (!sortOrder || !sortColumn || sortColumn.sortable === 'custom') {\n return;\n }\n return (a: any, b: any) => {\n if (sortColumn.sortFn) {\n const rst = sortColumn.sortFn(a.dataRef, b.dataRef);\n return sortOrder === 'descend' ? -rst : rst;\n }\n const key = sortColumn.dataIndex || sortColumn.key;\n if (sortOrder === 'ascend') {\n return a.dataRef[key] > b.dataRef[key] ? 1 : -1;\n }\n return a.dataRef[key] < b.dataRef[key] ? 1 : -1;\n };\n };\n\n // #endregion\n\n // ================= filter ======================\n // #region\n\n const hasFilters = (column: InnerColumn) => {\n return column.filterable && !column.children;\n };\n\n const setColumnFilter = (column: InnerColumn, selectedKeys: (string | number)[]) => {\n const colKey = getColumnKey(column);\n currentFilters.value = {\n ...currentFilters.value,\n [colKey]: selectedKeys\n };\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n // #endregion\n\n const hasAction = (column: InnerColumn) => {\n return hasSorters(column) || hasFilters(column);\n };\n\n const findColumn = (key: string) => {\n let column: TableColumn | undefined;\n let index = 0;\n let find = false;\n treeMap<TableColumn, void>(props.columns, (node: TableColumn) => {\n if (find) {\n return;\n }\n const colKey = getColumnKey(node, index);\n index += 1;\n if (colKey === key) {\n column = node;\n find = true;\n }\n });\n return column;\n };\n\n const filteredDatas = computed(() => {\n let data = updatedDatas.value || [];\n const sorterFn = getSorterFn();\n\n if (sorterFn) {\n data = treeSort([...data], sorterFn);\n }\n\n const filters = currentFilters.value;\n if (filters) {\n Object.keys(filters).forEach((colKey) => {\n const column = findColumn(colKey);\n if (!column) {\n return;\n }\n const values = filters[colKey] || [];\n\n if (values.length === 0) {\n return;\n }\n const { filterFn } = column;\n if (filterFn) {\n data = data.filter((row) => {\n return values.some((v) => filterFn(v, row.dataRef));\n });\n }\n });\n }\n return data;\n });\n\n // ================= pagination ==================\n\n watch(\n () => props.pagination,\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { position, align, pageSize, current, ...restProps } = props.pagination || {};\n paginationOptions.pageSize = pageSize || 10;\n paginationOptions.current = current || 1;\n\n Object.keys(restProps).forEach((key) => {\n (paginationOptions as any)[key] = (restProps as any)[key];\n });\n },\n { immediate: true, deep: true }\n );\n\n const getPageTotal = (total: number) => {\n const { current, pageSize } = paginationOptions;\n if ((current - 1) * pageSize >= total) {\n return Math.floor((total - 1) / pageSize) + 1;\n }\n return current;\n };\n\n const computedPageTotal = computed(() => {\n return paginationOptions.total || filteredDatas.value.length;\n });\n\n const currentDatas = computed(() => {\n if (props.showPagination) {\n const { pageSize } = paginationOptions;\n const current = getPageTotal(computedPageTotal.value);\n\n if (filteredDatas.value.length > pageSize) {\n return filteredDatas.value.slice((current - 1) * pageSize, current * pageSize);\n }\n }\n return filteredDatas.value;\n });\n\n const handlePageChange = (page: number) => {\n paginationOptions.current = page;\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n const handlePageSizeChange = (size: number, current: number) => {\n paginationOptions.pageSize = size;\n paginationOptions.current = current;\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n return {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n handlePageChange,\n handlePageSizeChange\n };\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useFilterSortPage.mjs","sources":["../../../../../src/components/Table/hooks/useFilterSortPage.ts"],"sourcesContent":["import { computed, ref, watch, reactive } from 'vue';\nimport type { ComputedRef } from 'vue';\nimport { flatFilter, shallowequal, treeMap, treeSort } from '../../../utils/tools';\nimport type { PaginationProps } from '../../Pagination/Pagination.type';\nimport type { ColumnSortOrder, InnerColumn, InnerDataItem, TableColumn, TableEmit, TableProps } from '../Table.type';\nimport { getColumnKey } from '../utils';\n\nconst isSameColumn = (a: any, b: any) => {\n if (a && b && a.key && a.key === b.key) {\n return true;\n }\n return a === b || shallowequal(a, b);\n};\n\nexport default function useFilterAndSort(props: TableProps, updatedDatas: ComputedRef<InnerDataItem[]>, emit: TableEmit) {\n const currentSortColumn = ref<TableColumn | null>(null);\n const currentSortOrder = ref<ColumnSortOrder | null>(null);\n const currentFilters = ref<Record<string, (string | number)[]> | null>(null);\n const paginationOptions = reactive({} as PaginationProps);\n const sortDirections = ['ascend', 'descend'] as ColumnSortOrder[];\n const getDefaultSort = () => {\n const rst = flatFilter(props.columns, (column) => {\n return !!column.sortOrder && !column.children;\n });\n if (rst.length > 0) {\n currentSortColumn.value = rst[0];\n currentSortOrder.value = rst[0].sortOrder || null;\n }\n };\n\n const getDefaultFilters = () => {\n const rst = {} as Record<string, any>;\n let index = 0;\n treeMap(props.columns, (column) => {\n const colKey = getColumnKey(column, index);\n index += 1;\n if (column.filteredValue !== undefined && !column.children) {\n rst[colKey] = column.filteredValue;\n }\n });\n currentFilters.value = rst;\n };\n\n const restSortColumn = () => {\n currentSortColumn.value = null;\n currentSortOrder.value = null;\n currentFilters.value = null;\n };\n\n watch(\n computed(() => props.columns),\n () => {\n restSortColumn();\n getDefaultSort();\n getDefaultFilters();\n },\n { immediate: true }\n );\n\n // =========== sort ============\n // #region\n const hasSorters = (column: InnerColumn) => {\n return column.sortable && !column.children;\n };\n\n const isSortColumn = (column: InnerColumn) => {\n if (!column || !currentSortColumn.value) {\n return false;\n }\n return isSameColumn(column, currentSortColumn.value);\n };\n\n const isAscend = (column: InnerColumn) => {\n return isSortColumn(column) && currentSortOrder.value === 'ascend';\n };\n\n const isDescend = (column: InnerColumn) => {\n return isSortColumn(column) && currentSortOrder.value === 'descend';\n };\n\n const getSortDirections = (column: InnerColumn) => {\n return column.sortDirections || sortDirections;\n };\n\n const hasAscend = (column: InnerColumn) => {\n return getSortDirections(column).indexOf('ascend') !== -1;\n };\n\n const hasDescend = (column: InnerColumn) => {\n return getSortDirections(column).indexOf('descend') !== -1;\n };\n\n const toggleSortOrder = (column: InnerColumn) => {\n const directions = column.sortDirections || sortDirections;\n let newSortOrder;\n if (isSortColumn(column) && currentSortOrder.value !== null) {\n const index = directions.indexOf(currentSortOrder.value) + 1;\n newSortOrder = index === directions.length ? null : directions[index];\n } else {\n newSortOrder = directions[0];\n }\n currentSortOrder.value = newSortOrder;\n currentSortColumn.value = column;\n\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n const getSorterFn = () => {\n const sortOrder = currentSortOrder.value;\n const sortColumn = currentSortColumn.value;\n if (!sortOrder || !sortColumn || sortColumn.sortable === 'custom') {\n return;\n }\n return (a: any, b: any) => {\n if (sortColumn.sortFn) {\n const rst = sortColumn.sortFn(a.dataRef, b.dataRef);\n return sortOrder === 'descend' ? -rst : rst;\n }\n const key = sortColumn.dataIndex || sortColumn.key;\n if (sortOrder === 'ascend') {\n return a.dataRef[key] > b.dataRef[key] ? 1 : -1;\n }\n return a.dataRef[key] < b.dataRef[key] ? 1 : -1;\n };\n };\n\n // #endregion\n\n // ================= filter ======================\n // #region\n\n const hasFilters = (column: InnerColumn) => {\n return column.filterable && !column.children;\n };\n\n const setColumnFilter = (column: InnerColumn, selectedKeys: (string | number)[]) => {\n const colKey = getColumnKey(column);\n currentFilters.value = {\n ...currentFilters.value,\n [colKey]: selectedKeys\n };\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n const isFiltered = (column: InnerColumn) => {\n return hasFilters(column) && currentFilters.value?.[getColumnKey(column)] !== undefined;\n };\n\n // #endregion\n\n const hasAction = (column: InnerColumn) => {\n return hasSorters(column) || hasFilters(column);\n };\n\n const findColumn = (key: string) => {\n let column: TableColumn | undefined;\n let index = 0;\n let find = false;\n treeMap<TableColumn, void>(props.columns, (node: TableColumn) => {\n if (find) {\n return;\n }\n const colKey = getColumnKey(node, index);\n index += 1;\n if (colKey === key) {\n column = node;\n find = true;\n }\n });\n return column;\n };\n\n const filteredDatas = computed(() => {\n let data = updatedDatas.value || [];\n const sorterFn = getSorterFn();\n\n if (sorterFn) {\n data = treeSort([...data], sorterFn);\n }\n\n const filters = currentFilters.value;\n if (filters) {\n Object.keys(filters).forEach((colKey) => {\n const column = findColumn(colKey);\n if (!column) {\n return;\n }\n const values = filters[colKey] || [];\n\n if (values.length === 0) {\n return;\n }\n const { filterFn } = column;\n if (filterFn) {\n data = data.filter((row) => {\n return values.some((v) => filterFn(v, row.dataRef));\n });\n }\n });\n }\n return data;\n });\n\n // ================= pagination ==================\n\n watch(\n () => props.pagination,\n () => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { position, align, pageSize, current, ...restProps } = props.pagination || {};\n paginationOptions.pageSize = pageSize || 10;\n paginationOptions.current = current || 1;\n\n Object.keys(restProps).forEach((key) => {\n (paginationOptions as any)[key] = (restProps as any)[key];\n });\n },\n { immediate: true, deep: true }\n );\n\n const getPageTotal = (total: number) => {\n const { current, pageSize } = paginationOptions;\n if ((current - 1) * pageSize >= total) {\n return Math.floor((total - 1) / pageSize) + 1;\n }\n return current;\n };\n\n const computedPageTotal = computed(() => {\n return paginationOptions.total || filteredDatas.value.length;\n });\n\n const currentDatas = computed(() => {\n if (props.showPagination) {\n const { pageSize } = paginationOptions;\n const current = getPageTotal(computedPageTotal.value);\n\n if (filteredDatas.value.length > pageSize) {\n return filteredDatas.value.slice((current - 1) * pageSize, current * pageSize);\n }\n }\n return filteredDatas.value;\n });\n\n const handlePageChange = (page: number) => {\n paginationOptions.current = page;\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n const handlePageSizeChange = (size: number, current: number) => {\n paginationOptions.pageSize = size;\n paginationOptions.current = current;\n emit('change', paginationOptions, { column: currentSortColumn.value, order: currentSortOrder.value }, currentFilters.value);\n };\n\n return {\n hasAction,\n hasSorters,\n hasFilters,\n isSortColumn,\n isAscend,\n isDescend,\n isFiltered,\n hasAscend,\n hasDescend,\n toggleSortOrder,\n setColumnFilter,\n currentDatas,\n paginationOptions,\n computedPageTotal,\n handlePageChange,\n handlePageSizeChange\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,10 @@ const _sfc_main = defineComponent({
|
|
|
32
32
|
locale: {
|
|
33
33
|
type: Object,
|
|
34
34
|
required: true
|
|
35
|
+
},
|
|
36
|
+
active: {
|
|
37
|
+
type: Boolean,
|
|
38
|
+
default: false
|
|
35
39
|
}
|
|
36
40
|
},
|
|
37
41
|
emits: ["select"],
|
|
@@ -188,7 +192,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
188
192
|
class: normalizeClass([
|
|
189
193
|
`${_ctx.prefixCls}-icon`,
|
|
190
194
|
{
|
|
191
|
-
[`${_ctx.prefixCls}-open`]: !!_ctx.stateVisible
|
|
195
|
+
[`${_ctx.prefixCls}-open`]: !!_ctx.stateVisible,
|
|
196
|
+
[`${_ctx.prefixCls}-active`]: _ctx.active
|
|
192
197
|
}
|
|
193
198
|
]),
|
|
194
199
|
onClick: _cache[0] || (_cache[0] = withModifiers(() => {
|