@koi-design/uxd-ui 14.0.13 → 14.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/es/components/Select/RefSelect.mjs +45 -31
  2. package/es/components/Select/RefSelect.mjs.map +1 -1
  3. package/es/components/Table/BaseTable.mjs +5 -3
  4. package/es/components/Table/BaseTable.mjs.map +1 -1
  5. package/es/components/Table/BaseTable.vue.d.ts +18 -2
  6. package/es/components/Table/BodyTable.vue.d.ts +18 -2
  7. package/es/components/Table/HeadTable.vue.d.ts +18 -2
  8. package/es/components/Table/Table.mjs +6 -2
  9. package/es/components/Table/Table.mjs.map +1 -1
  10. package/es/components/Table/Table.type.d.ts +2 -0
  11. package/es/components/Table/Table.type.mjs.map +1 -1
  12. package/es/components/Table/Table.vue.d.ts +36 -4
  13. package/es/components/Table/TableBox.vue.d.ts +36 -4
  14. package/es/components/Table/hooks/useTableResize.d.ts +2 -0
  15. package/es/components/Table/hooks/useTableResize.mjs +8 -1
  16. package/es/components/Table/hooks/useTableResize.mjs.map +1 -1
  17. package/es/components/Table/tableUnits/ColGroup.mjs +14 -3
  18. package/es/components/Table/tableUnits/ColGroup.mjs.map +1 -1
  19. package/es/components/Table/tableUnits/ColGroup.vue.d.ts +10 -0
  20. package/es/components/Table/tableUnits/ExpandRows.vue.d.ts +4 -1
  21. package/es/components/Table/tableUnits/TableBody.vue.d.ts +8 -2
  22. package/es/components/Table/tableUnits/TableCell.mjs +6 -4
  23. package/es/components/Table/tableUnits/TableCell.mjs.map +1 -1
  24. package/es/components/Table/tableUnits/TableCell.vue.d.ts +4 -1
  25. package/es/components/Table/tableUnits/TableRow.vue.d.ts +4 -1
  26. package/lib/components/Select/RefSelect.js +44 -30
  27. package/lib/components/Select/RefSelect.js.map +1 -1
  28. package/lib/components/Table/BaseTable.js +5 -3
  29. package/lib/components/Table/BaseTable.js.map +1 -1
  30. package/lib/components/Table/BaseTable.vue.d.ts +18 -2
  31. package/lib/components/Table/BodyTable.vue.d.ts +18 -2
  32. package/lib/components/Table/HeadTable.vue.d.ts +18 -2
  33. package/lib/components/Table/Table.js +6 -2
  34. package/lib/components/Table/Table.js.map +1 -1
  35. package/lib/components/Table/Table.type.d.ts +2 -0
  36. package/lib/components/Table/Table.type.js.map +1 -1
  37. package/lib/components/Table/Table.vue.d.ts +36 -4
  38. package/lib/components/Table/TableBox.vue.d.ts +36 -4
  39. package/lib/components/Table/hooks/useTableResize.d.ts +2 -0
  40. package/lib/components/Table/hooks/useTableResize.js +8 -1
  41. package/lib/components/Table/hooks/useTableResize.js.map +1 -1
  42. package/lib/components/Table/tableUnits/ColGroup.js +14 -3
  43. package/lib/components/Table/tableUnits/ColGroup.js.map +1 -1
  44. package/lib/components/Table/tableUnits/ColGroup.vue.d.ts +10 -0
  45. package/lib/components/Table/tableUnits/ExpandRows.vue.d.ts +4 -1
  46. package/lib/components/Table/tableUnits/TableBody.vue.d.ts +8 -2
  47. package/lib/components/Table/tableUnits/TableCell.js +6 -4
  48. package/lib/components/Table/tableUnits/TableCell.js.map +1 -1
  49. package/lib/components/Table/tableUnits/TableCell.vue.d.ts +4 -1
  50. package/lib/components/Table/tableUnits/TableRow.vue.d.ts +4 -1
  51. package/package.json +1 -1
  52. package/styles/components/modal/index.css +1 -1
  53. package/styles/components/modal/modal.less +4 -0
  54. package/styles/index.css +1 -1
  55. package/types/components/Table/BaseTable.vue.d.ts +18 -2
  56. package/types/components/Table/BodyTable.vue.d.ts +18 -2
  57. package/types/components/Table/HeadTable.vue.d.ts +18 -2
  58. package/types/components/Table/Table.type.d.ts +2 -0
  59. package/types/components/Table/Table.vue.d.ts +36 -4
  60. package/types/components/Table/TableBox.vue.d.ts +36 -4
  61. package/types/components/Table/hooks/useTableResize.d.ts +2 -0
  62. package/types/components/Table/tableUnits/ColGroup.vue.d.ts +10 -0
  63. package/types/components/Table/tableUnits/ExpandRows.vue.d.ts +4 -1
  64. package/types/components/Table/tableUnits/TableBody.vue.d.ts +8 -2
  65. package/types/components/Table/tableUnits/TableCell.vue.d.ts +4 -1
  66. package/types/components/Table/tableUnits/TableRow.vue.d.ts +4 -1
  67. package/uxd-ui.css +1 -1
  68. package/uxd-ui.esm.min.mjs +6 -6
  69. package/uxd-ui.esm.mjs +85 -44
  70. package/uxd-ui.umd.js +84 -43
  71. package/uxd-ui.umd.min.js +6 -6
@@ -1,4 +1,4 @@
1
- import { defineComponent, inject, shallowRef, ref, computed, watch, onMounted, onUpdated, provide, resolveComponent, openBlock, createBlock, withCtx, createVNode, renderSlot, createElementVNode, mergeProps, createElementBlock, normalizeClass, toDisplayString, Fragment, createCommentVNode, resolveDynamicComponent, createTextVNode, withModifiers } from 'vue';
1
+ import { defineComponent, inject, shallowRef, ref, computed, watch, onMounted, onUpdated, provide, resolveComponent, openBlock, createBlock, withCtx, renderSlot, normalizeProps, guardReactiveProps, createVNode, createElementVNode, mergeProps, createElementBlock, normalizeClass, toDisplayString, Fragment, createCommentVNode, resolveDynamicComponent, createTextVNode, withModifiers } from 'vue';
2
2
  import '../Popup/index.mjs';
3
3
  import { UIcon } from '../Icon/index.mjs';
4
4
  import { UCheckbox } from '../Checkbox/index.mjs';
@@ -164,6 +164,7 @@ const _sfc_main = defineComponent({
164
164
  emitChange(rowValue);
165
165
  }
166
166
  } else if (value !== stateValue.value && !Array.isArray(value)) {
167
+ console.log("onSelect", value);
167
168
  emitChange([value]);
168
169
  }
169
170
  const { autoClearSearchValue = true } = props;
@@ -366,40 +367,53 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
366
367
  "click-outside": _ctx.onClickOutside
367
368
  }, {
368
369
  popup: withCtx(() => [
369
- createVNode(_component_DropdownMenu, {
370
- id: _ctx.ariaId,
371
- ref: "listRef",
372
- "prefix-cls": _ctx.prefixCls,
370
+ renderSlot(_ctx.$slots, "dropdown", normalizeProps(guardReactiveProps({
373
371
  open: _ctx.stateOpen,
374
- width: _ctx.dropdownMenuWidth,
372
+ options: _ctx.displayOptions,
375
373
  multiple: _ctx.multiple,
376
- "multiple-limit": _ctx.multipleLimit,
377
- options: _ctx.loading ? [] : _ctx.displayOptions,
374
+ multipleLimit: _ctx.multipleLimit,
378
375
  values: _ctx.innerValue,
379
- "search-value": _ctx.searchValue,
380
- "default-active-first": _ctx.defaultActiveFirst,
381
- height: _ctx.dropdownHeight,
382
- "item-height": _ctx.dropdownItemHeight,
383
- size: _ctx.size,
384
- "select-all": _ctx.selectAll,
385
- direction: _ctx.computedDirection,
386
- "title-key": _ctx.titleKey,
376
+ searchValue: _ctx.searchValue,
377
+ loading: _ctx.loading,
387
378
  onSelect: _ctx.onOptionSelect,
388
- onClose: _cache[4] || (_cache[4] = ($event) => _ctx.onToggleOpen(false)),
389
- onScrollAtTop: _ctx.onScrollAtTop,
390
- onScrollAtBottom: _ctx.onScrollAtBottom,
391
- onCreateSubmit: _ctx.onCreateSubmit
392
- }, {
393
- empty: withCtx(() => [
394
- renderSlot(_ctx.$slots, "notFound", {}, () => [
395
- createVNode(_component_RenderEmpty, {
396
- size: "small",
397
- text: _ctx.loading ? _ctx.loadingTextLocale : _ctx.notFoundText
398
- }, null, 8, ["text"])
399
- ])
400
- ]),
401
- _: 3
402
- }, 8, ["id", "prefix-cls", "open", "width", "multiple", "multiple-limit", "options", "values", "search-value", "default-active-first", "height", "item-height", "size", "select-all", "direction", "title-key", "onSelect", "onScrollAtTop", "onScrollAtBottom", "onCreateSubmit"])
379
+ onCreate: _ctx.onCreateSubmit,
380
+ onClose: () => _ctx.onToggleOpen(false)
381
+ })), () => [
382
+ createVNode(_component_DropdownMenu, {
383
+ id: _ctx.ariaId,
384
+ ref: "listRef",
385
+ "prefix-cls": _ctx.prefixCls,
386
+ open: _ctx.stateOpen,
387
+ width: _ctx.dropdownMenuWidth,
388
+ multiple: _ctx.multiple,
389
+ "multiple-limit": _ctx.multipleLimit,
390
+ options: _ctx.loading ? [] : _ctx.displayOptions,
391
+ values: _ctx.innerValue,
392
+ "search-value": _ctx.searchValue,
393
+ "default-active-first": _ctx.defaultActiveFirst,
394
+ height: _ctx.dropdownHeight,
395
+ "item-height": _ctx.dropdownItemHeight,
396
+ size: _ctx.size,
397
+ "select-all": _ctx.selectAll,
398
+ direction: _ctx.computedDirection,
399
+ "title-key": _ctx.titleKey,
400
+ onSelect: _ctx.onOptionSelect,
401
+ onClose: _cache[4] || (_cache[4] = ($event) => _ctx.onToggleOpen(false)),
402
+ onScrollAtTop: _ctx.onScrollAtTop,
403
+ onScrollAtBottom: _ctx.onScrollAtBottom,
404
+ onCreateSubmit: _ctx.onCreateSubmit
405
+ }, {
406
+ empty: withCtx(() => [
407
+ renderSlot(_ctx.$slots, "notFound", {}, () => [
408
+ createVNode(_component_RenderEmpty, {
409
+ size: "small",
410
+ text: _ctx.loading ? _ctx.loadingTextLocale : _ctx.notFoundText
411
+ }, null, 8, ["text"])
412
+ ])
413
+ ]),
414
+ _: 3
415
+ }, 8, ["id", "prefix-cls", "open", "width", "multiple", "multiple-limit", "options", "values", "search-value", "default-active-first", "height", "item-height", "size", "select-all", "direction", "title-key", "onSelect", "onScrollAtTop", "onScrollAtBottom", "onCreateSubmit"])
416
+ ])
403
417
  ]),
404
418
  default: withCtx(() => [
405
419
  createElementVNode("div", mergeProps({
@@ -1 +1 @@
1
- {"version":3,"file":"RefSelect.mjs","sources":["../../../../src/components/Select/RefSelect.vue"],"sourcesContent":["<template>\n <Popup\n :prefix-cls=\"`${prefixCls}-dropdown`\"\n :placement=\"computedPlacement\"\n :visible=\"popupOpen\"\n :popup-class=\"`${dropdownMenuClass || ''} ${isEmpty ? `${prefixCls}-dropdown-empty` : ''} ${\n direction === 'rtl' ? `${prefixCls}-dropdown-rtl` : ''\n }`\"\n :popup-style=\"popupStyle\"\n transition-name=\"slide-up\"\n :click-outside=\"onClickOutside\"\n >\n <div\n ref=\"containerRef\"\n :class=\"[\n prefixCls,\n {\n [attrClass]: attrClass,\n [`${prefixCls}-${size}`]: size,\n [`${prefixCls}-variant-${variant}`]: true,\n [`${prefixCls}-single`]: !multiple,\n [`${prefixCls}-multiple`]: multiple,\n [`${prefixCls}-open`]: stateOpen,\n [`${prefixCls}-filterable`]: filterable,\n [`${prefixCls}-focused`]: stateFocused,\n [`${prefixCls}-disabled`]: disabled,\n [`${prefixCls}-clearable`]: !!clearable,\n [`${prefixCls}-with-clear`]: showClear,\n [`${prefixCls}-show-arrow`]: showArrow,\n [`${prefixCls}-loading`]: !!loading,\n [`${prefixCls}-show-prefix`]: !!prefixIcon,\n [`${prefixCls}-arrow-no-rotate`]: !arrowRotate,\n [`${prefixCls}-rtl`]: computedDirection === 'rtl'\n }\n ]\"\n v-bind=\"$attrs\"\n :style=\"attrStyle\"\n :tabindex=\"disabled ? -1 : 0\"\n @mousedown=\"onContainerMouseDown\"\n @keydown=\"onContainerKeydown\"\n >\n <span\n v-if=\"!!label\"\n :class=\"{\n [`${prefixCls}-label`]: true,\n [`${prefixCls}-label-colon`]: labelColon,\n [`${prefixCls}-label-required`]: required\n }\"\n >\n {{ label }}\n </span>\n <!-- prefix-Icon -->\n <span v-else-if=\"!!prefixIcon\" key=\"prefix\" :class=\"`${prefixCls}-prefix`\">\n <UIcon>\n <component :is=\"prefixIcon\" />\n </UIcon>\n </span>\n <Selection\n ref=\"selectionRef\"\n :disabled=\"disabled\"\n :multiple=\"multiple\"\n :open=\"stateOpen\"\n :values=\"displayValues\"\n :prefix-cls=\"prefixCls\"\n :filterable=\"filterable\"\n :search-value=\"searchValue\"\n :placeholder=\"loading ? loadingTextLocale : placeholder\"\n :max-tag-count=\"maxTagCount\"\n :max-tag-text-length=\"maxTagTextLength\"\n :max-tag-placeholder=\"maxTagPlaceholder\"\n :popover-props=\"popoverProps\"\n :max-tag-tooltip=\"maxTagTooltip\"\n :max-tag-tooltip-width=\"maxTagTooltipWidth\"\n :is-show-tag-tooltip=\"isShowTagTooltip\"\n :tag-render=\"tagRender\"\n :tag-transition-name=\"tagTransitionName\"\n :remove-icon=\"removeIcon\"\n :allow-create=\"allowCreate\"\n :title-key=\"titleKey\"\n :allow-empty-value=\"allowEmptyValue\"\n :token-with-enter=\"tokenWithEnter\"\n :trigger-search=\"triggerSearch\"\n @toggle-open=\"onToggleOpen\"\n @select=\"onSelectionSelect\"\n @create-submit=\"onCreateSubmit\"\n >\n <template #placeholder>\n <slot name=\"placeholder\">\n {{ loading ? loadingTextLocale : placeholder }}\n </slot>\n </template>\n </Selection>\n\n <!-- arrow-Icon -->\n <span v-if=\"showArrow\" key=\"arrow\" :class=\"`${prefixCls}-arrow`\">\n <UIcon :spin=\"loading\">\n <component :is=\"realSuffixIcon\" />\n </UIcon>\n </span>\n <!-- clearIcon -->\n <span v-if=\"showClear\" key=\"clear\" :class=\"`${prefixCls}-clear`\" @mousedown.prevent @click=\"onClearSelection\">\n <UIcon>\n <component :is=\"clearIcon\" v-if=\"clearIcon\" />\n <CircleX v-else />\n </UIcon>\n </span>\n </div>\n <template #popup>\n <DropdownMenu\n :id=\"ariaId\"\n ref=\"listRef\"\n :prefix-cls=\"prefixCls\"\n :open=\"stateOpen\"\n :width=\"dropdownMenuWidth\"\n :multiple=\"multiple\"\n :multiple-limit=\"multipleLimit\"\n :options=\"loading ? [] : displayOptions\"\n :values=\"innerValue\"\n :search-value=\"searchValue\"\n :default-active-first=\"defaultActiveFirst\"\n :height=\"dropdownHeight\"\n :item-height=\"dropdownItemHeight\"\n :size=\"size\"\n :select-all=\"selectAll\"\n :direction=\"computedDirection\"\n :title-key=\"titleKey\"\n @select=\"onOptionSelect\"\n @close=\"onToggleOpen(false)\"\n @scroll-at-top=\"onScrollAtTop\"\n @scroll-at-bottom=\"onScrollAtBottom\"\n @create-submit=\"onCreateSubmit\"\n >\n <template #empty>\n <slot name=\"notFound\">\n <RenderEmpty size=\"small\" :text=\"loading ? loadingTextLocale : notFoundText\" />\n </slot>\n </template>\n </DropdownMenu>\n </template>\n </Popup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, watch, computed, onMounted, onUpdated, provide, inject, shallowRef } from 'vue';\nimport type { CSSProperties, PropType } from 'vue';\nimport Popup from '@uxd-ui/components/Popup';\nimport UIcon from '@uxd-ui/components/Icon';\nimport UCheckbox from '@uxd-ui/components/Checkbox';\nimport { CircleX, LoaderCircle, Search, ChevronDown } from 'lucide-vue-next';\nimport { removeLastEnabledValue, getSeparatedContent } from './utils';\nimport KeyCode from '../../utils/KeyCode';\nimport { generateUUID } from '../../utils/tools';\nimport DropdownMenu from './DropdownMenu.vue';\nimport Selection from './Selection';\nimport RenderEmpty from '../base/RenderEmpty.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport useDelaySet from '../base/hooks/useDelaySet';\n// import useLock from '../base/hooks/useLock';\nimport useArrayValue, { toArray } from './hooks/useArrayValue';\nimport useOptions from './hooks/useOptions';\nimport useContainerWidth from '../base/hooks/useContainerWidth';\nimport { FormItemKey } from '../Form';\nimport { selectProps, selectEmits } from './Select.type';\nimport type { SingleValueType } from './Select.type';\nimport type { FormItemContext } from '../Form/Form.type';\n\nconst localIsValid = (val: any) => {\n return val !== null && val !== undefined;\n};\n\nexport default defineComponent({\n name: 'RefSelect',\n components: {\n Popup,\n Selection,\n DropdownMenu,\n RenderEmpty,\n UIcon,\n UCheckbox,\n CircleX,\n LoaderCircle,\n Search,\n ChevronDown\n },\n inheritAttrs: false,\n props: {\n ...selectProps,\n children: {\n type: Array as PropType<any[]>,\n default: undefined\n }\n },\n emits: selectEmits,\n setup(props, { emit, attrs }) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('select');\n const ariaId = `select_${generateUUID()}`;\n const { onFieldChange } = inject<FormItemContext>(FormItemKey, {} as FormItemContext);\n\n // =================== ref ==================\n // #region\n const containerRef = shallowRef<HTMLElement | null>(null);\n const selectionRef = ref<any | null>(null);\n const listRef = ref<any | null>(null);\n // #endregion\n\n // =================== value & data ==================\n // #region\n\n const stateValue = ref(props.modelValue);\n const { toInnerValue, toOuterValue } = useArrayValue();\n const innerValue = computed<(string | number)[]>(() => toInnerValue(stateValue.value, props.allowEmptyValue ? localIsValid : undefined));\n // const innerValue = computed<(string | number)[]>(() => toInnerValue(stateValue.value));\n const searchValue = ref('');\n const setSearchValue = (val: string) => {\n searchValue.value = val;\n };\n // const activeValue = ref(null);\n // const setActiveValue = val => {\n // activeValue.value = val;\n // };\n\n const { displayOptions, getOptionsByValue, getOptionByLabel } = useOptions(props, searchValue, innerValue);\n\n watch(\n () => props.modelValue,\n (val) => {\n stateValue.value = val;\n }\n );\n\n const emitChange = (val: (string | number)[]) => {\n const _multiple = props.multiple === true;\n const value = toOuterValue(val, _multiple);\n\n if (props.modelValue === undefined) {\n stateValue.value = value;\n }\n emit('update:modelValue', value);\n const options = getOptionsByValue(val);\n emit('change', value, _multiple ? options : options[0]);\n if (onFieldChange && !props.disabledTriggerForm) {\n onFieldChange(value);\n }\n };\n // #endregion\n\n // =================== open ==================\n // #region\n const stateOpen = ref<boolean>(props.open || false);\n watch(\n () => props.open,\n (val) => {\n stateOpen.value = val || false;\n }\n );\n const noPopupContent = computed(() => !props.showEmpty && !displayOptions.value.length);\n const popupOpen = computed(() => (noPopupContent.value ? false : stateOpen.value));\n\n const computedDirection = computed(() => {\n return props.direction || globalConfig.direction || 'ltr';\n });\n const computedPlacement = computed(() => {\n if (props.placement) {\n return props.placement;\n }\n return computedDirection.value === 'rtl' ? 'bottom-end' : 'bottom-start';\n });\n\n const setOpenState = (open?: boolean) => {\n const _open = open !== undefined ? open : !stateOpen.value;\n if (stateOpen.value !== _open && !props.disabled) {\n if (props.open === undefined) {\n stateOpen.value = _open;\n }\n emit('dropdown-visible-change', _open);\n }\n };\n\n watch(\n () => props.disabled,\n () => {\n if (stateOpen.value && !!props.disabled) {\n setOpenState(false);\n }\n }\n );\n // #endregion\n\n // =================== selection ==================\n // #region\n\n const getDisplayValus = () => {\n const options = getOptionsByValue(innerValue.value);\n return options.map((x) => {\n let displayLabel;\n const displayProp = props.displayProp || 'slot';\n if (displayProp === 'slot') {\n displayLabel = x.render ? x.render() : x.label;\n } else {\n displayLabel = x[displayProp] || x.label;\n }\n return {\n ...x,\n displayLabel\n };\n });\n };\n\n const displayValues = computed(() => {\n return getDisplayValus();\n });\n\n const onSelect = (value: string | number | string[] | number[], { selected }: { selected: boolean }) => {\n if (props.disabled) {\n return;\n }\n\n if (props.multiple) {\n const _rawValue = new Set(innerValue.value);\n const values = toArray(value);\n if (selected) {\n values.forEach((v: string | number) => {\n _rawValue.add(v);\n });\n } else {\n values.forEach((v: string | number) => {\n _rawValue.delete(v);\n });\n }\n const rowValue = Array.from(_rawValue);\n if (props.sortByOption && props.options) {\n const sortValue: SingleValueType[] = [];\n props.options.forEach((o) => {\n if (rowValue.includes(o.value)) {\n sortValue.push(o.value);\n }\n });\n emitChange(sortValue);\n } else {\n emitChange(rowValue);\n }\n } else if (value !== stateValue.value && !Array.isArray(value)) {\n emitChange([value]);\n }\n\n const { autoClearSearchValue = true } = props;\n if (!props.multiple) {\n setOpenState(false);\n }\n if (!props.multiple || autoClearSearchValue) {\n setSearchValue('');\n }\n };\n\n // #endregion\n\n // =================== popup ==================\n // #region\n const { containerWidth, getContainerWidth } = useContainerWidth(containerRef);\n onMounted(() => {\n getContainerWidth();\n });\n\n onUpdated(() => {\n getContainerWidth();\n });\n\n const popupStyle = computed(() => {\n const cssStyle: CSSProperties = {};\n if (typeof props.dropdownMenuWidth === 'number') {\n cssStyle.width = `${props.dropdownMenuWidth}px`;\n cssStyle.minWidth = `${props.dropdownMenuWidth}px`;\n } else {\n cssStyle.width = `${containerWidth.value}px`;\n cssStyle.minWidth = `${containerWidth.value}px`;\n }\n return {\n ...cssStyle,\n ...props.dropdownMenuStyle\n } as CSSProperties;\n });\n // #endregion\n\n // =================== search ==================\n // #region\n\n const tokenWithEnter = computed(() => {\n return (props.tokenSeparators || []).some((token) => token === '\\n' || token === '\\r\\n');\n });\n\n const triggerSearch = (searchText: string, isCompositing: boolean) => {\n let ret = true;\n let _searchValue = searchText;\n const preSearchValue = searchValue.value;\n // setActiveValue(null);\n // handle paste auto separate, only use in multiple and tokenSeparators is set\n if (props.multiple && props.tokenSeparators) {\n const patchLabels = isCompositing ? null : getSeparatedContent(searchText, props.tokenSeparators);\n\n if (patchLabels) {\n const patchRawValues: SingleValueType[] = [];\n const restValues: string[] = [];\n patchLabels.forEach((label) => {\n const option = getOptionByLabel(label);\n if (option) {\n patchRawValues.push(option.value);\n } else {\n restValues.push(label);\n }\n });\n const newValues = [...innerValue.value, ...patchRawValues, ...(props.allowCreate ? restValues : [])];\n emitChange(newValues);\n setOpenState(false);\n ret = false;\n _searchValue = '';\n }\n }\n\n setSearchValue(_searchValue);\n if (preSearchValue !== _searchValue) {\n emit('search', _searchValue);\n }\n return ret;\n };\n\n watch(\n stateOpen,\n () => {\n if (!stateOpen.value && searchValue.value) {\n triggerSearch('', false);\n }\n },\n { immediate: true }\n );\n\n // #endregion\n\n // =================== focus/ blur ==================\n // #region\n const [stateFocused, setStateFocused] = useDelaySet();\n const _immediateFocused = ref(false);\n const onContainerFocus = (args: any) => {\n setStateFocused(true);\n if (!props.disabled && !stateFocused.value) {\n emit('focus', args);\n }\n _immediateFocused.value = true;\n };\n const onContainerBlur = (args: any) => {\n setStateFocused(false, () => {\n _immediateFocused.value = false;\n setOpenState(false);\n });\n // if (props.disabled) {\n // return;\n // }\n // if (searchValue.value && props.multiple) {\n // setSearchValue('');\n // }\n\n emit('blur', args);\n };\n\n provide('SelectContext', {\n focus: onContainerFocus,\n blur: onContainerBlur\n });\n\n const onContainerMouseDown = (e: any) => {\n setOpenState(!stateOpen.value);\n emit('mousedown', e);\n };\n\n // #endregion\n\n // =================== keyboard ==================\n // #region\n\n // const [getClearLock, setClearLock] = useLock();\n\n const onContainerKeydown = (e: KeyboardEvent) => {\n // const clearlock = getClearLock();\n const { which } = e;\n if (!stateOpen.value && which === KeyCode.Enter) {\n setOpenState(true);\n }\n // setClearLock(!!searchValue.value);\n\n if (\n which === KeyCode.BACKSPACE &&\n // !clearlock &&\n props.multiple &&\n !searchValue.value &&\n innerValue.value.length > 0\n ) {\n const removeInfo = removeLastEnabledValue(displayValues.value, innerValue.value);\n\n if (removeInfo.removedValue !== null) {\n emitChange(removeInfo.values);\n }\n }\n\n if (stateOpen.value && listRef.value) {\n (listRef.value as any).onKeydown(e);\n }\n emit('keydown', e);\n };\n\n // #endregion\n\n // =================== other ==================\n // #region\n const showClear = computed(() => {\n return props.clearable && !props.disabled && (innerValue.value.length || searchValue.value);\n });\n\n const isEmpty = computed(() => {\n return displayOptions.value.length === 0;\n });\n\n const realSuffixIcon = computed(() => {\n if (props.loading) {\n return LoaderCircle;\n }\n if (props.filterable && stateOpen.value) {\n return Search;\n }\n return props.suffixIcon || ChevronDown;\n });\n // #endregion\n\n const attrClass = computed<any>(() => attrs.class);\n const attrStyle = computed<any>(() => attrs.style);\n\n const loadingTextLocale = computed(() => {\n return props.loadingText || globalConfig.locale.select.loadingText;\n });\n\n return {\n attrClass,\n attrStyle,\n // const\n prefixCls,\n ariaId,\n // Refs\n containerRef,\n selectionRef,\n listRef,\n\n // computed\n showClear,\n isEmpty,\n realSuffixIcon,\n tokenWithEnter,\n loadingTextLocale,\n\n // datas\n popupStyle,\n searchValue,\n stateOpen,\n popupOpen,\n computedDirection,\n computedPlacement,\n innerValue,\n displayValues,\n stateFocused,\n displayOptions,\n // method\n onContainerMouseDown,\n onContainerKeydown,\n onOptionSelect: onSelect,\n onSelectionSelect: onSelect,\n onClearSelection: () => {\n emitChange([]);\n triggerSearch('', false);\n emit('clear');\n },\n triggerSearch,\n onToggleOpen: (open?: boolean) => {\n setOpenState(open);\n },\n onClickOutside: () => {\n setOpenState(false);\n },\n onCreateSubmit: (val: string) => {\n emit('create', val);\n },\n onScrollAtTop: () => {\n emit('scroll-at-top');\n },\n onScrollAtBottom: () => {\n emit('scroll-at-bottom');\n }\n };\n }\n});\n</script>\n"],"names":["_createBlock","_withCtx","_createVNode","_renderSlot","_createElementVNode","_mergeProps","_createElementBlock","_normalizeClass","_Fragment","_createCommentVNode","_resolveDynamicComponent"],"mappings":"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"}
1
+ {"version":3,"file":"RefSelect.mjs","sources":["../../../../src/components/Select/RefSelect.vue"],"sourcesContent":["<template>\n <Popup\n :prefix-cls=\"`${prefixCls}-dropdown`\"\n :placement=\"computedPlacement\"\n :visible=\"popupOpen\"\n :popup-class=\"`${dropdownMenuClass || ''} ${isEmpty ? `${prefixCls}-dropdown-empty` : ''} ${\n direction === 'rtl' ? `${prefixCls}-dropdown-rtl` : ''\n }`\"\n :popup-style=\"popupStyle\"\n transition-name=\"slide-up\"\n :click-outside=\"onClickOutside\"\n >\n <div\n ref=\"containerRef\"\n :class=\"[\n prefixCls,\n {\n [attrClass]: attrClass,\n [`${prefixCls}-${size}`]: size,\n [`${prefixCls}-variant-${variant}`]: true,\n [`${prefixCls}-single`]: !multiple,\n [`${prefixCls}-multiple`]: multiple,\n [`${prefixCls}-open`]: stateOpen,\n [`${prefixCls}-filterable`]: filterable,\n [`${prefixCls}-focused`]: stateFocused,\n [`${prefixCls}-disabled`]: disabled,\n [`${prefixCls}-clearable`]: !!clearable,\n [`${prefixCls}-with-clear`]: showClear,\n [`${prefixCls}-show-arrow`]: showArrow,\n [`${prefixCls}-loading`]: !!loading,\n [`${prefixCls}-show-prefix`]: !!prefixIcon,\n [`${prefixCls}-arrow-no-rotate`]: !arrowRotate,\n [`${prefixCls}-rtl`]: computedDirection === 'rtl'\n }\n ]\"\n v-bind=\"$attrs\"\n :style=\"attrStyle\"\n :tabindex=\"disabled ? -1 : 0\"\n @mousedown=\"onContainerMouseDown\"\n @keydown=\"onContainerKeydown\"\n >\n <span\n v-if=\"!!label\"\n :class=\"{\n [`${prefixCls}-label`]: true,\n [`${prefixCls}-label-colon`]: labelColon,\n [`${prefixCls}-label-required`]: required\n }\"\n >\n {{ label }}\n </span>\n <!-- prefix-Icon -->\n <span v-else-if=\"!!prefixIcon\" key=\"prefix\" :class=\"`${prefixCls}-prefix`\">\n <UIcon>\n <component :is=\"prefixIcon\" />\n </UIcon>\n </span>\n <Selection\n ref=\"selectionRef\"\n :disabled=\"disabled\"\n :multiple=\"multiple\"\n :open=\"stateOpen\"\n :values=\"displayValues\"\n :prefix-cls=\"prefixCls\"\n :filterable=\"filterable\"\n :search-value=\"searchValue\"\n :placeholder=\"loading ? loadingTextLocale : placeholder\"\n :max-tag-count=\"maxTagCount\"\n :max-tag-text-length=\"maxTagTextLength\"\n :max-tag-placeholder=\"maxTagPlaceholder\"\n :popover-props=\"popoverProps\"\n :max-tag-tooltip=\"maxTagTooltip\"\n :max-tag-tooltip-width=\"maxTagTooltipWidth\"\n :is-show-tag-tooltip=\"isShowTagTooltip\"\n :tag-render=\"tagRender\"\n :tag-transition-name=\"tagTransitionName\"\n :remove-icon=\"removeIcon\"\n :allow-create=\"allowCreate\"\n :title-key=\"titleKey\"\n :allow-empty-value=\"allowEmptyValue\"\n :token-with-enter=\"tokenWithEnter\"\n :trigger-search=\"triggerSearch\"\n @toggle-open=\"onToggleOpen\"\n @select=\"onSelectionSelect\"\n @create-submit=\"onCreateSubmit\"\n >\n <template #placeholder>\n <slot name=\"placeholder\">\n {{ loading ? loadingTextLocale : placeholder }}\n </slot>\n </template>\n </Selection>\n\n <!-- arrow-Icon -->\n <span v-if=\"showArrow\" key=\"arrow\" :class=\"`${prefixCls}-arrow`\">\n <UIcon :spin=\"loading\">\n <component :is=\"realSuffixIcon\" />\n </UIcon>\n </span>\n <!-- clearIcon -->\n <span v-if=\"showClear\" key=\"clear\" :class=\"`${prefixCls}-clear`\" @mousedown.prevent @click=\"onClearSelection\">\n <UIcon>\n <component :is=\"clearIcon\" v-if=\"clearIcon\" />\n <CircleX v-else />\n </UIcon>\n </span>\n </div>\n <template #popup>\n <slot\n name=\"dropdown\"\n v-bind=\"{\n open: stateOpen,\n options: displayOptions,\n multiple,\n multipleLimit,\n values: innerValue,\n searchValue,\n loading,\n onSelect: onOptionSelect,\n onCreate: onCreateSubmit,\n onClose: () => onToggleOpen(false)\n }\"\n >\n <DropdownMenu\n :id=\"ariaId\"\n ref=\"listRef\"\n :prefix-cls=\"prefixCls\"\n :open=\"stateOpen\"\n :width=\"dropdownMenuWidth\"\n :multiple=\"multiple\"\n :multiple-limit=\"multipleLimit\"\n :options=\"loading ? [] : displayOptions\"\n :values=\"innerValue\"\n :search-value=\"searchValue\"\n :default-active-first=\"defaultActiveFirst\"\n :height=\"dropdownHeight\"\n :item-height=\"dropdownItemHeight\"\n :size=\"size\"\n :select-all=\"selectAll\"\n :direction=\"computedDirection\"\n :title-key=\"titleKey\"\n @select=\"onOptionSelect\"\n @close=\"onToggleOpen(false)\"\n @scroll-at-top=\"onScrollAtTop\"\n @scroll-at-bottom=\"onScrollAtBottom\"\n @create-submit=\"onCreateSubmit\"\n >\n <template #empty>\n <slot name=\"notFound\">\n <RenderEmpty size=\"small\" :text=\"loading ? loadingTextLocale : notFoundText\" />\n </slot>\n </template>\n </DropdownMenu>\n </slot>\n </template>\n </Popup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, watch, computed, onMounted, onUpdated, provide, inject, shallowRef } from 'vue';\nimport type { CSSProperties, PropType } from 'vue';\nimport Popup from '@uxd-ui/components/Popup';\nimport UIcon from '@uxd-ui/components/Icon';\nimport UCheckbox from '@uxd-ui/components/Checkbox';\nimport { CircleX, LoaderCircle, Search, ChevronDown } from 'lucide-vue-next';\nimport { removeLastEnabledValue, getSeparatedContent } from './utils';\nimport KeyCode from '../../utils/KeyCode';\nimport { generateUUID } from '../../utils/tools';\nimport DropdownMenu from './DropdownMenu.vue';\nimport Selection from './Selection';\nimport RenderEmpty from '../base/RenderEmpty.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport useDelaySet from '../base/hooks/useDelaySet';\n// import useLock from '../base/hooks/useLock';\nimport useArrayValue, { toArray } from './hooks/useArrayValue';\nimport useOptions from './hooks/useOptions';\nimport useContainerWidth from '../base/hooks/useContainerWidth';\nimport { FormItemKey } from '../Form';\nimport { selectProps, selectEmits } from './Select.type';\nimport type { SingleValueType } from './Select.type';\nimport type { FormItemContext } from '../Form/Form.type';\n\nconst localIsValid = (val: any) => {\n return val !== null && val !== undefined;\n};\n\nexport default defineComponent({\n name: 'RefSelect',\n components: {\n Popup,\n Selection,\n DropdownMenu,\n RenderEmpty,\n UIcon,\n UCheckbox,\n CircleX,\n LoaderCircle,\n Search,\n ChevronDown\n },\n inheritAttrs: false,\n props: {\n ...selectProps,\n children: {\n type: Array as PropType<any[]>,\n default: undefined\n }\n },\n emits: selectEmits,\n setup(props, { emit, attrs }) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('select');\n const ariaId = `select_${generateUUID()}`;\n const { onFieldChange } = inject<FormItemContext>(FormItemKey, {} as FormItemContext);\n\n // =================== ref ==================\n // #region\n const containerRef = shallowRef<HTMLElement | null>(null);\n const selectionRef = ref<any | null>(null);\n const listRef = ref<any | null>(null);\n // #endregion\n\n // =================== value & data ==================\n // #region\n\n const stateValue = ref(props.modelValue);\n const { toInnerValue, toOuterValue } = useArrayValue();\n const innerValue = computed<(string | number)[]>(() => toInnerValue(stateValue.value, props.allowEmptyValue ? localIsValid : undefined));\n // const innerValue = computed<(string | number)[]>(() => toInnerValue(stateValue.value));\n const searchValue = ref('');\n const setSearchValue = (val: string) => {\n searchValue.value = val;\n };\n // const activeValue = ref(null);\n // const setActiveValue = val => {\n // activeValue.value = val;\n // };\n\n const { displayOptions, getOptionsByValue, getOptionByLabel } = useOptions(props, searchValue, innerValue);\n\n watch(\n () => props.modelValue,\n (val) => {\n stateValue.value = val;\n }\n );\n\n const emitChange = (val: (string | number)[]) => {\n const _multiple = props.multiple === true;\n const value = toOuterValue(val, _multiple);\n\n if (props.modelValue === undefined) {\n stateValue.value = value;\n }\n emit('update:modelValue', value);\n const options = getOptionsByValue(val);\n emit('change', value, _multiple ? options : options[0]);\n if (onFieldChange && !props.disabledTriggerForm) {\n onFieldChange(value);\n }\n };\n // #endregion\n\n // =================== open ==================\n // #region\n const stateOpen = ref<boolean>(props.open || false);\n watch(\n () => props.open,\n (val) => {\n stateOpen.value = val || false;\n }\n );\n const noPopupContent = computed(() => !props.showEmpty && !displayOptions.value.length);\n const popupOpen = computed(() => (noPopupContent.value ? false : stateOpen.value));\n\n const computedDirection = computed(() => {\n return props.direction || globalConfig.direction || 'ltr';\n });\n const computedPlacement = computed(() => {\n if (props.placement) {\n return props.placement;\n }\n return computedDirection.value === 'rtl' ? 'bottom-end' : 'bottom-start';\n });\n\n const setOpenState = (open?: boolean) => {\n const _open = open !== undefined ? open : !stateOpen.value;\n if (stateOpen.value !== _open && !props.disabled) {\n if (props.open === undefined) {\n stateOpen.value = _open;\n }\n emit('dropdown-visible-change', _open);\n }\n };\n\n watch(\n () => props.disabled,\n () => {\n if (stateOpen.value && !!props.disabled) {\n setOpenState(false);\n }\n }\n );\n // #endregion\n\n // =================== selection ==================\n // #region\n\n const getDisplayValus = () => {\n const options = getOptionsByValue(innerValue.value);\n return options.map((x) => {\n let displayLabel;\n const displayProp = props.displayProp || 'slot';\n if (displayProp === 'slot') {\n displayLabel = x.render ? x.render() : x.label;\n } else {\n displayLabel = x[displayProp] || x.label;\n }\n return {\n ...x,\n displayLabel\n };\n });\n };\n\n const displayValues = computed(() => {\n return getDisplayValus();\n });\n\n const onSelect = (value: string | number | string[] | number[], { selected }: { selected: boolean }) => {\n if (props.disabled) {\n return;\n }\n\n if (props.multiple) {\n const _rawValue = new Set(innerValue.value);\n const values = toArray(value);\n if (selected) {\n values.forEach((v: string | number) => {\n _rawValue.add(v);\n });\n } else {\n values.forEach((v: string | number) => {\n _rawValue.delete(v);\n });\n }\n const rowValue = Array.from(_rawValue);\n if (props.sortByOption && props.options) {\n const sortValue: SingleValueType[] = [];\n props.options.forEach((o) => {\n if (rowValue.includes(o.value)) {\n sortValue.push(o.value);\n }\n });\n emitChange(sortValue);\n } else {\n emitChange(rowValue);\n }\n } else if (value !== stateValue.value && !Array.isArray(value)) {\n console.log('onSelect', value);\n emitChange([value]);\n }\n\n const { autoClearSearchValue = true } = props;\n if (!props.multiple) {\n setOpenState(false);\n }\n if (!props.multiple || autoClearSearchValue) {\n setSearchValue('');\n }\n };\n\n // #endregion\n\n // =================== popup ==================\n // #region\n const { containerWidth, getContainerWidth } = useContainerWidth(containerRef);\n onMounted(() => {\n getContainerWidth();\n });\n\n onUpdated(() => {\n getContainerWidth();\n });\n\n const popupStyle = computed(() => {\n const cssStyle: CSSProperties = {};\n if (typeof props.dropdownMenuWidth === 'number') {\n cssStyle.width = `${props.dropdownMenuWidth}px`;\n cssStyle.minWidth = `${props.dropdownMenuWidth}px`;\n } else {\n cssStyle.width = `${containerWidth.value}px`;\n cssStyle.minWidth = `${containerWidth.value}px`;\n }\n return {\n ...cssStyle,\n ...props.dropdownMenuStyle\n } as CSSProperties;\n });\n // #endregion\n\n // =================== search ==================\n // #region\n\n const tokenWithEnter = computed(() => {\n return (props.tokenSeparators || []).some((token) => token === '\\n' || token === '\\r\\n');\n });\n\n const triggerSearch = (searchText: string, isCompositing: boolean) => {\n let ret = true;\n let _searchValue = searchText;\n const preSearchValue = searchValue.value;\n // setActiveValue(null);\n // handle paste auto separate, only use in multiple and tokenSeparators is set\n if (props.multiple && props.tokenSeparators) {\n const patchLabels = isCompositing ? null : getSeparatedContent(searchText, props.tokenSeparators);\n\n if (patchLabels) {\n const patchRawValues: SingleValueType[] = [];\n const restValues: string[] = [];\n patchLabels.forEach((label) => {\n const option = getOptionByLabel(label);\n if (option) {\n patchRawValues.push(option.value);\n } else {\n restValues.push(label);\n }\n });\n const newValues = [...innerValue.value, ...patchRawValues, ...(props.allowCreate ? restValues : [])];\n emitChange(newValues);\n setOpenState(false);\n ret = false;\n _searchValue = '';\n }\n }\n\n setSearchValue(_searchValue);\n if (preSearchValue !== _searchValue) {\n emit('search', _searchValue);\n }\n return ret;\n };\n\n watch(\n stateOpen,\n () => {\n if (!stateOpen.value && searchValue.value) {\n triggerSearch('', false);\n }\n },\n { immediate: true }\n );\n\n // #endregion\n\n // =================== focus/ blur ==================\n // #region\n const [stateFocused, setStateFocused] = useDelaySet();\n const _immediateFocused = ref(false);\n const onContainerFocus = (args: any) => {\n setStateFocused(true);\n if (!props.disabled && !stateFocused.value) {\n emit('focus', args);\n }\n _immediateFocused.value = true;\n };\n const onContainerBlur = (args: any) => {\n setStateFocused(false, () => {\n _immediateFocused.value = false;\n setOpenState(false);\n });\n // if (props.disabled) {\n // return;\n // }\n // if (searchValue.value && props.multiple) {\n // setSearchValue('');\n // }\n\n emit('blur', args);\n };\n\n provide('SelectContext', {\n focus: onContainerFocus,\n blur: onContainerBlur\n });\n\n const onContainerMouseDown = (e: any) => {\n setOpenState(!stateOpen.value);\n emit('mousedown', e);\n };\n\n // #endregion\n\n // =================== keyboard ==================\n // #region\n\n // const [getClearLock, setClearLock] = useLock();\n\n const onContainerKeydown = (e: KeyboardEvent) => {\n // const clearlock = getClearLock();\n const { which } = e;\n if (!stateOpen.value && which === KeyCode.Enter) {\n setOpenState(true);\n }\n // setClearLock(!!searchValue.value);\n\n if (\n which === KeyCode.BACKSPACE &&\n // !clearlock &&\n props.multiple &&\n !searchValue.value &&\n innerValue.value.length > 0\n ) {\n const removeInfo = removeLastEnabledValue(displayValues.value, innerValue.value);\n\n if (removeInfo.removedValue !== null) {\n emitChange(removeInfo.values);\n }\n }\n\n if (stateOpen.value && listRef.value) {\n (listRef.value as any).onKeydown(e);\n }\n emit('keydown', e);\n };\n\n // #endregion\n\n // =================== other ==================\n // #region\n const showClear = computed(() => {\n return props.clearable && !props.disabled && (innerValue.value.length || searchValue.value);\n });\n\n const isEmpty = computed(() => {\n return displayOptions.value.length === 0;\n });\n\n const realSuffixIcon = computed(() => {\n if (props.loading) {\n return LoaderCircle;\n }\n if (props.filterable && stateOpen.value) {\n return Search;\n }\n return props.suffixIcon || ChevronDown;\n });\n // #endregion\n\n const attrClass = computed<any>(() => attrs.class);\n const attrStyle = computed<any>(() => attrs.style);\n\n const loadingTextLocale = computed(() => {\n return props.loadingText || globalConfig.locale.select.loadingText;\n });\n\n return {\n attrClass,\n attrStyle,\n // const\n prefixCls,\n ariaId,\n // Refs\n containerRef,\n selectionRef,\n listRef,\n\n // computed\n showClear,\n isEmpty,\n realSuffixIcon,\n tokenWithEnter,\n loadingTextLocale,\n\n // datas\n popupStyle,\n searchValue,\n stateOpen,\n popupOpen,\n computedDirection,\n computedPlacement,\n innerValue,\n displayValues,\n stateFocused,\n displayOptions,\n // method\n onContainerMouseDown,\n onContainerKeydown,\n onOptionSelect: onSelect,\n onSelectionSelect: onSelect,\n onClearSelection: () => {\n emitChange([]);\n triggerSearch('', false);\n emit('clear');\n },\n triggerSearch,\n onToggleOpen: (open?: boolean) => {\n setOpenState(open);\n },\n onClickOutside: () => {\n setOpenState(false);\n },\n onCreateSubmit: (val: string) => {\n emit('create', val);\n },\n onScrollAtTop: () => {\n emit('scroll-at-top');\n },\n onScrollAtBottom: () => {\n emit('scroll-at-bottom');\n }\n };\n }\n});\n</script>\n"],"names":["_createBlock","_withCtx","_renderSlot","_createVNode","_createElementVNode","_mergeProps","_createElementBlock","_normalizeClass","_Fragment","_createCommentVNode","_resolveDynamicComponent"],"mappings":"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"}
@@ -38,10 +38,9 @@ const _sfc_main = defineComponent({
38
38
  if (width.value) {
39
39
  style.width = typeof width.value === "number" ? `${width.value}px` : width.value;
40
40
  } else if (props.columns.some((x) => x.fixed)) {
41
- style.width = "max-content";
42
41
  style.minWidth = "100%";
43
42
  }
44
- if (props.columns.some((x) => x.ellipsis) || props.columns.some((x) => x.resizable)) {
43
+ if (props.columns.some((x) => x.ellipsis) || props.columns.some((x) => x.resizable) || props.columns.some((x) => x.fixed)) {
45
44
  style.tableLayout = "fixed";
46
45
  } else {
47
46
  style.tableLayout = "auto";
@@ -96,7 +95,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
96
95
  ref: "tableRef",
97
96
  style: normalizeStyle(_ctx.tableStyle)
98
97
  }, [
99
- createVNode(_component_ColGroup, { columns: _ctx.columns }, null, 8, ["columns"]),
98
+ createVNode(_component_ColGroup, {
99
+ columns: _ctx.columns,
100
+ "is-head-table": !_ctx.showBody
101
+ }, null, 8, ["columns", "is-head-table"]),
100
102
  _ctx.showHeader ? (openBlock(), createBlock(_component_TableHeader, {
101
103
  key: 0,
102
104
  columns: _ctx.getColumns()
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTable.mjs","sources":["../../../../src/components/Table/BaseTable.vue"],"sourcesContent":["<template>\n <table ref=\"tableRef\" :style=\"tableStyle\">\n <ColGroup :columns=\"columns\" />\n <TableHeader v-if=\"showHeader\" :columns=\"getColumns()\" />\n <TableBody v-if=\"showBody\" :columns=\"getColumns()\" />\n </table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, inject, ref } from 'vue';\nimport type { PropType, CSSProperties } from 'vue';\nimport ColGroup from './tableUnits/ColGroup.vue';\nimport TableHeader from './tableUnits/TableHeader.vue';\nimport TableBody from './tableUnits/TableBody.vue';\n// import useResizeObserver from '../base/hooks/useResizeObserver';\nimport type { InnerColumn, TableContext } from './Table.type';\nimport { getWidth } from './hooks/useTableResize';\n// import { debounce } from '../../utils/tools';\n\nexport default defineComponent({\n name: 'BaseTable',\n components: {\n ColGroup,\n TableHeader,\n TableBody\n },\n props: {\n showHeader: {\n type: Boolean,\n default: false\n },\n showBody: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Array as PropType<InnerColumn[]>,\n default: () => [] as InnerColumn[]\n }\n },\n setup(props) {\n const {\n prefixCls,\n props: { width },\n size: { tableWidth }\n } = inject<TableContext>('tableContext', {} as TableContext);\n const tableRef = ref<HTMLElement | null>(null);\n\n const tableStyle = computed(() => {\n const style = {} as CSSProperties;\n if (width.value) {\n style.width = typeof width.value === 'number' ? `${width.value}px` : width.value;\n } else if (props.columns.some((x) => x.fixed)) {\n style.width = 'max-content';\n style.minWidth = '100%';\n }\n if (props.columns.some((x) => x.ellipsis) || props.columns.some((x) => x.resizable)) {\n style.tableLayout = 'fixed';\n } else {\n style.tableLayout = 'auto';\n }\n\n return style;\n });\n\n const getColumns = () => {\n let left = 0;\n let right = props.columns\n .filter((x) => x.fixed === 'right')\n .reduce((sum, column) => {\n const w = getWidth(column.width ?? column.minWidth, tableWidth.value);\n return sum + w;\n }, 0);\n return props.columns.map((column) => {\n const rst = {\n ...column,\n className: column.fixed\n ? `${column.className || ''} ${prefixCls.value}-fixed-column ${prefixCls.value}-fixed-column-${column.fixed}`\n : column.className\n };\n if (column.fixed === 'left') {\n rst.left = left;\n const w = getWidth(column.width ?? column.minWidth, tableWidth.value);\n left += w;\n if (column.lastLeft) {\n rst.className = `${rst.className || ''} ${prefixCls.value}-fixed-column-${column.fixed}-last`;\n }\n }\n if (column.fixed === 'right') {\n const w = getWidth(column.width ?? column.minWidth, tableWidth.value);\n right -= w;\n rst.right = right;\n if (column.firstRight) {\n rst.className = `${rst.className || ''} ${prefixCls.value}-fixed-column-${column.fixed}-first`;\n }\n }\n\n return rst;\n });\n };\n\n // const debouncedHandleResize = debounce(syncFixedTableRowHeight, 150);\n // useResizeObserver(tableRef, debouncedHandleResize);\n\n return {\n tableRef,\n prefixCls,\n tableStyle,\n getColumns\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_normalizeStyle","_createVNode","_createBlock"],"mappings":";;;;;;;AAmBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AAAC;AAClB;AACF,EACA,MAAM,OAAO;UACL;AAAA,MACJ;AAAA,MACA,OAAO,EAAE;AAAM,MACf,MAAM,EAAE;AAAW,QACjB,OAAqB,gBAAgB,EAAkB;UACrD,WAAW,IAAwB,IAAI;UAEvC,aAAa,SAAS,MAAM;YAC1B,QAAQ;UACV,MAAM,OAAO;cACT,QAAQ,OAAO,MAAM,UAAU,WAAW,GAAG,MAAM,YAAY,MAAM;AAAA,iBAClE,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG;cACvC,QAAQ;cACR,WAAW;AAAA;UAEf,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,GAAG;cAC7E,cAAc;AAAA,aACf;cACC,cAAc;AAAA;aAGf;AAAA,KACR;UAEK,aAAa,MAAM;UACnB,OAAO;UACP,QAAQ,MAAM,QACf,OAAO,CAAC,MAAM,EAAE,UAAU,OAAO,EACjC,OAAO,CAAC,KAAK,WAAW;AA5DjC;cA6DgB,IAAI,UAAS,YAAO,UAAP,YAAgB,OAAO,UAAU,WAAW,KAAK;eAC7D,MAAM;AAAA,SACZ,CAAC;aACC,MAAM,QAAQ,IAAI,CAAC,WAAW;AAhE3C;cAiEc,MAAM;AAAA,UACV,GAAG;AAAA,UACH,WAAW,OAAO,QACd,GAAG,OAAO,aAAa,MAAM,UAAU,sBAAsB,UAAU,sBAAsB,OAAO,UACpG,OAAO;AAAA;YAET,OAAO,UAAU,QAAQ;cACvB,OAAO;gBACL,IAAI,UAAS,YAAO,UAAP,YAAgB,OAAO,UAAU,WAAW,KAAK;kBAC5D;cACJ,OAAO,UAAU;gBACf,YAAY,GAAG,IAAI,aAAa,MAAM,UAAU,sBAAsB,OAAO;AAAA;AACnF;YAEE,OAAO,UAAU,SAAS;gBACtB,IAAI,UAAS,YAAO,UAAP,YAAgB,OAAO,UAAU,WAAW,KAAK;mBAC3D;cACL,QAAQ;cACR,OAAO,YAAY;gBACjB,YAAY,GAAG,IAAI,aAAa,MAAM,UAAU,sBAAsB,OAAO;AAAA;AACnF;eAGK;AAAA,OACR;AAAA;WAMI;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;sBA9GCA,mBAIQ;IAJD,KAAI;AAAA,IAAY,OAAKC,eAAE,eAAU;AAAA;IACtCC,YAA+B,uBAApB,SAAS;IACD,gCAAnBC,YAAyD;;MAAzB,SAAS;AAAU;IAClC,8BAAjBA,YAAqD;;MAAzB,SAAS;AAAU;;;;;;;"}
1
+ {"version":3,"file":"BaseTable.mjs","sources":["../../../../src/components/Table/BaseTable.vue"],"sourcesContent":["<template>\n <table ref=\"tableRef\" :style=\"tableStyle\">\n <ColGroup :columns=\"columns\" :is-head-table=\"!showBody\" />\n <TableHeader v-if=\"showHeader\" :columns=\"getColumns()\" />\n <TableBody v-if=\"showBody\" :columns=\"getColumns()\" />\n </table>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, inject, ref } from 'vue';\nimport type { PropType, CSSProperties } from 'vue';\nimport ColGroup from './tableUnits/ColGroup.vue';\nimport TableHeader from './tableUnits/TableHeader.vue';\nimport TableBody from './tableUnits/TableBody.vue';\n// import useResizeObserver from '../base/hooks/useResizeObserver';\nimport type { InnerColumn, TableContext } from './Table.type';\nimport { getWidth } from './hooks/useTableResize';\n// import { debounce } from '../../utils/tools';\n\nexport default defineComponent({\n name: 'BaseTable',\n components: {\n ColGroup,\n TableHeader,\n TableBody\n },\n props: {\n showHeader: {\n type: Boolean,\n default: false\n },\n showBody: {\n type: Boolean,\n default: false\n },\n columns: {\n type: Array as PropType<InnerColumn[]>,\n default: () => [] as InnerColumn[]\n }\n },\n setup(props) {\n const {\n prefixCls,\n props: { width },\n size: { tableWidth }\n } = inject<TableContext>('tableContext', {} as TableContext);\n const tableRef = ref<HTMLElement | null>(null);\n\n const tableStyle = computed(() => {\n const style = {} as CSSProperties;\n if (width.value) {\n style.width = typeof width.value === 'number' ? `${width.value}px` : width.value;\n } else if (props.columns.some((x) => x.fixed)) {\n // style.width = 'max-content';\n style.minWidth = '100%';\n }\n if (props.columns.some((x) => x.ellipsis) || props.columns.some((x) => x.resizable) || props.columns.some((x) => x.fixed)) {\n style.tableLayout = 'fixed';\n } else {\n style.tableLayout = 'auto';\n }\n\n return style;\n });\n\n const getColumns = () => {\n let left = 0;\n let right = props.columns\n .filter((x) => x.fixed === 'right')\n .reduce((sum, column) => {\n const w = getWidth(column.width ?? column.minWidth, tableWidth.value);\n return sum + w;\n }, 0);\n return props.columns.map((column) => {\n const rst = {\n ...column,\n className: column.fixed\n ? `${column.className || ''} ${prefixCls.value}-fixed-column ${prefixCls.value}-fixed-column-${column.fixed}`\n : column.className\n };\n if (column.fixed === 'left') {\n rst.left = left;\n const w = getWidth(column.width ?? column.minWidth, tableWidth.value);\n left += w;\n if (column.lastLeft) {\n rst.className = `${rst.className || ''} ${prefixCls.value}-fixed-column-${column.fixed}-last`;\n }\n }\n if (column.fixed === 'right') {\n const w = getWidth(column.width ?? column.minWidth, tableWidth.value);\n right -= w;\n rst.right = right;\n if (column.firstRight) {\n rst.className = `${rst.className || ''} ${prefixCls.value}-fixed-column-${column.fixed}-first`;\n }\n }\n\n return rst;\n });\n };\n\n // const debouncedHandleResize = debounce(syncFixedTableRowHeight, 150);\n // useResizeObserver(tableRef, debouncedHandleResize);\n\n return {\n tableRef,\n prefixCls,\n tableStyle,\n getColumns\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_normalizeStyle","_createVNode","_createBlock"],"mappings":";;;;;;;AAmBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,IACL,YAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AAAC;AAClB;AACF,EACA,MAAM,OAAO;UACL;AAAA,MACJ;AAAA,MACA,OAAO,EAAE;AAAM,MACf,MAAM,EAAE;AAAW,QACjB,OAAqB,gBAAgB,EAAkB;UACrD,WAAW,IAAwB,IAAI;UAEvC,aAAa,SAAS,MAAM;YAC1B,QAAQ;UACV,MAAM,OAAO;cACT,QAAQ,OAAO,MAAM,UAAU,WAAW,GAAG,MAAM,YAAY,MAAM;AAAA,iBAClE,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG;cAEvC,WAAW;AAAA;UAEf,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,QAAQ,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,KAAK,GAAG;cACnH,cAAc;AAAA,aACf;cACC,cAAc;AAAA;aAGf;AAAA,KACR;UAEK,aAAa,MAAM;UACnB,OAAO;UACP,QAAQ,MAAM,QACf,OAAO,CAAC,MAAM,EAAE,UAAU,OAAO,EACjC,OAAO,CAAC,KAAK,WAAW;AA5DjC;cA6DgB,IAAI,UAAS,YAAO,UAAP,YAAgB,OAAO,UAAU,WAAW,KAAK;eAC7D,MAAM;AAAA,SACZ,CAAC;aACC,MAAM,QAAQ,IAAI,CAAC,WAAW;AAhE3C;cAiEc,MAAM;AAAA,UACV,GAAG;AAAA,UACH,WAAW,OAAO,QACd,GAAG,OAAO,aAAa,MAAM,UAAU,sBAAsB,UAAU,sBAAsB,OAAO,UACpG,OAAO;AAAA;YAET,OAAO,UAAU,QAAQ;cACvB,OAAO;gBACL,IAAI,UAAS,YAAO,UAAP,YAAgB,OAAO,UAAU,WAAW,KAAK;kBAC5D;cACJ,OAAO,UAAU;gBACf,YAAY,GAAG,IAAI,aAAa,MAAM,UAAU,sBAAsB,OAAO;AAAA;AACnF;YAEE,OAAO,UAAU,SAAS;gBACtB,IAAI,UAAS,YAAO,UAAP,YAAgB,OAAO,UAAU,WAAW,KAAK;mBAC3D;cACL,QAAQ;cACR,OAAO,YAAY;gBACjB,YAAY,GAAG,IAAI,aAAa,MAAM,UAAU,sBAAsB,OAAO;AAAA;AACnF;eAGK;AAAA,OACR;AAAA;WAMI;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;sBA9GCA,mBAIQ;IAJD,KAAI;AAAA,IAAY,OAAKC,eAAE,eAAU;AAAA;IACtCC,YAA0D;MAA/C,SAAS;MAAU,iBAAa,CAAG;;IAC3B,gCAAnBC,YAAyD;;MAAzB,SAAS;AAAU;IAClC,8BAAjBA,YAAqD;;MAAzB,SAAS;AAAU;;;;;;;"}
@@ -88,15 +88,25 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
88
88
  type: PropType<InnerColumn[]>;
89
89
  default: () => InnerColumn[];
90
90
  };
91
+ isHeadTable: {
92
+ type: BooleanConstructor;
93
+ default: boolean;
94
+ };
91
95
  }>, {
92
96
  cols: import("vue").ComputedRef<import("./Table.type").TableColProps[]>;
97
+ getWidth: (col: import("./Table.type").TableColProps) => string;
93
98
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
94
99
  columns: {
95
100
  type: PropType<InnerColumn[]>;
96
101
  default: () => InnerColumn[];
97
102
  };
103
+ isHeadTable: {
104
+ type: BooleanConstructor;
105
+ default: boolean;
106
+ };
98
107
  }>> & Readonly<{}>, {
99
108
  columns: InnerColumn[];
109
+ isHeadTable: boolean;
100
110
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
101
111
  TableHeader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
102
112
  columns: {
@@ -4417,7 +4427,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4417
4427
  cellRef: import("vue").Ref<any, any>;
4418
4428
  ellipsisSpanRef: import("vue").Ref<any, any>;
4419
4429
  isOverflow: import("vue").Ref<boolean, boolean>;
4420
- debouncedHandleResize: import("../../utils").DebounceReturn;
4430
+ checkWidth: ({ target, width }: {
4431
+ target: HTMLElement;
4432
+ width: number;
4433
+ }) => void;
4421
4434
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
4422
4435
  prefixCls: {
4423
4436
  type: StringConstructor;
@@ -5716,7 +5729,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
5716
5729
  cellRef: import("vue").Ref<any, any>;
5717
5730
  ellipsisSpanRef: import("vue").Ref<any, any>;
5718
5731
  isOverflow: import("vue").Ref<boolean, boolean>;
5719
- debouncedHandleResize: import("../../utils").DebounceReturn;
5732
+ checkWidth: ({ target, width }: {
5733
+ target: HTMLElement;
5734
+ width: number;
5735
+ }) => void;
5720
5736
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
5721
5737
  prefixCls: {
5722
5738
  type: StringConstructor;
@@ -107,15 +107,25 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
107
107
  type: PropType<InnerColumn[]>;
108
108
  default: () => InnerColumn[];
109
109
  };
110
+ isHeadTable: {
111
+ type: BooleanConstructor;
112
+ default: boolean;
113
+ };
110
114
  }>, {
111
115
  cols: import("vue").ComputedRef<import("./Table.type").TableColProps[]>;
116
+ getWidth: (col: import("./Table.type").TableColProps) => string;
112
117
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
113
118
  columns: {
114
119
  type: PropType<InnerColumn[]>;
115
120
  default: () => InnerColumn[];
116
121
  };
122
+ isHeadTable: {
123
+ type: BooleanConstructor;
124
+ default: boolean;
125
+ };
117
126
  }>> & Readonly<{}>, {
118
127
  columns: InnerColumn[];
128
+ isHeadTable: boolean;
119
129
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
120
130
  TableHeader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
121
131
  columns: {
@@ -4436,7 +4446,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4436
4446
  cellRef: import("vue").Ref<any, any>;
4437
4447
  ellipsisSpanRef: import("vue").Ref<any, any>;
4438
4448
  isOverflow: import("vue").Ref<boolean, boolean>;
4439
- debouncedHandleResize: import("../../utils").DebounceReturn;
4449
+ checkWidth: ({ target, width }: {
4450
+ target: HTMLElement;
4451
+ width: number;
4452
+ }) => void;
4440
4453
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
4441
4454
  prefixCls: {
4442
4455
  type: StringConstructor;
@@ -5735,7 +5748,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
5735
5748
  cellRef: import("vue").Ref<any, any>;
5736
5749
  ellipsisSpanRef: import("vue").Ref<any, any>;
5737
5750
  isOverflow: import("vue").Ref<boolean, boolean>;
5738
- debouncedHandleResize: import("../../utils").DebounceReturn;
5751
+ checkWidth: ({ target, width }: {
5752
+ target: HTMLElement;
5753
+ width: number;
5754
+ }) => void;
5739
5755
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
5740
5756
  prefixCls: {
5741
5757
  type: StringConstructor;
@@ -104,15 +104,25 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
104
104
  type: PropType<InnerColumn[]>;
105
105
  default: () => InnerColumn[];
106
106
  };
107
+ isHeadTable: {
108
+ type: BooleanConstructor;
109
+ default: boolean;
110
+ };
107
111
  }>, {
108
112
  cols: import("vue").ComputedRef<import("./Table.type").TableColProps[]>;
113
+ getWidth: (col: import("./Table.type").TableColProps) => string;
109
114
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
110
115
  columns: {
111
116
  type: PropType<InnerColumn[]>;
112
117
  default: () => InnerColumn[];
113
118
  };
119
+ isHeadTable: {
120
+ type: BooleanConstructor;
121
+ default: boolean;
122
+ };
114
123
  }>> & Readonly<{}>, {
115
124
  columns: InnerColumn[];
125
+ isHeadTable: boolean;
116
126
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
117
127
  TableHeader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
118
128
  columns: {
@@ -4433,7 +4443,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4433
4443
  cellRef: import("vue").Ref<any, any>;
4434
4444
  ellipsisSpanRef: import("vue").Ref<any, any>;
4435
4445
  isOverflow: import("vue").Ref<boolean, boolean>;
4436
- debouncedHandleResize: import("../../utils").DebounceReturn;
4446
+ checkWidth: ({ target, width }: {
4447
+ target: HTMLElement;
4448
+ width: number;
4449
+ }) => void;
4437
4450
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
4438
4451
  prefixCls: {
4439
4452
  type: StringConstructor;
@@ -5732,7 +5745,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
5732
5745
  cellRef: import("vue").Ref<any, any>;
5733
5746
  ellipsisSpanRef: import("vue").Ref<any, any>;
5734
5747
  isOverflow: import("vue").Ref<boolean, boolean>;
5735
- debouncedHandleResize: import("../../utils").DebounceReturn;
5748
+ checkWidth: ({ target, width }: {
5749
+ target: HTMLElement;
5750
+ width: number;
5751
+ }) => void;
5736
5752
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
5737
5753
  prefixCls: {
5738
5754
  type: StringConstructor;
@@ -85,7 +85,9 @@ const _sfc_main = defineComponent({
85
85
  tableWidth,
86
86
  resizeColumns,
87
87
  clearResizeTimer,
88
- setResizeWidth
88
+ setResizeWidth,
89
+ syncColumnWidth,
90
+ columnWidths
89
91
  } = useTableResize(updatedColumns, tableRefs, prefixCls, isColumnFixed, props);
90
92
  const debouncedHandleResize = debounce(handleResize, 150);
91
93
  onMounted(() => {
@@ -203,7 +205,9 @@ const _sfc_main = defineComponent({
203
205
  isScrollX,
204
206
  setResizeWidth,
205
207
  handleColumnResize,
206
- debouncedHandleResize
208
+ debouncedHandleResize,
209
+ syncColumnWidth,
210
+ columnWidths
207
211
  },
208
212
  fixed: {
209
213
  isColumnFixed,
@@ -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 } = 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 },\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":"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"}
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;;;;;;;;;;;;"}
@@ -294,6 +294,8 @@ export interface TableContext {
294
294
  size: {
295
295
  tableWidth: Ref<number>;
296
296
  resizeColumns: Ref<InnerColumn[]>;
297
+ columnWidths: Ref<Record<string, number>>;
298
+ syncColumnWidth: (width: number, column: InnerColumn) => void;
297
299
  isScrollX: ComputedRef<boolean>;
298
300
  setResizeWidth: (column: InnerColumn, width: number) => void;
299
301
  handleColumnResize: (columnWidth: number, changeWidth: number, column: InnerColumn, event: Event) => void;