@koi-design/uxd-ui 14.0.23 → 14.0.25

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 (33) hide show
  1. package/es/components/Select/RefSelect.mjs +0 -1
  2. package/es/components/Select/RefSelect.mjs.map +1 -1
  3. package/es/components/Table/Table.type.d.ts +1 -0
  4. package/es/components/Table/Table.type.mjs.map +1 -1
  5. package/es/components/Table/tableUnits/ColGroup.mjs +5 -3
  6. package/es/components/Table/tableUnits/ColGroup.mjs.map +1 -1
  7. package/es/components/Tabs/TabNav.mjs +2 -1
  8. package/es/components/Tabs/TabNav.mjs.map +1 -1
  9. package/es/components/Tabs/Tabs.type.d.ts +1 -0
  10. package/es/components/Tabs/Tabs.type.mjs.map +1 -1
  11. package/lib/components/Select/RefSelect.js +0 -1
  12. package/lib/components/Select/RefSelect.js.map +1 -1
  13. package/lib/components/Table/Table.type.d.ts +1 -0
  14. package/lib/components/Table/Table.type.js.map +1 -1
  15. package/lib/components/Table/tableUnits/ColGroup.js +4 -2
  16. package/lib/components/Table/tableUnits/ColGroup.js.map +1 -1
  17. package/lib/components/Tabs/TabNav.js +2 -1
  18. package/lib/components/Tabs/TabNav.js.map +1 -1
  19. package/lib/components/Tabs/Tabs.type.d.ts +1 -0
  20. package/lib/components/Tabs/Tabs.type.js.map +1 -1
  21. package/package.json +1 -1
  22. package/styles/components/dropdown/index.css +1 -1
  23. package/styles/components/dropdown/index.less +6 -9
  24. package/styles/components/form/index.css +1 -1
  25. package/styles/components/form/index.less +4 -1
  26. package/styles/index.css +1 -1
  27. package/types/components/Table/Table.type.d.ts +1 -0
  28. package/types/components/Tabs/Tabs.type.d.ts +1 -0
  29. package/uxd-ui.css +1 -1
  30. package/uxd-ui.esm.min.mjs +4 -4
  31. package/uxd-ui.esm.mjs +7 -5
  32. package/uxd-ui.umd.js +7 -5
  33. package/uxd-ui.umd.min.js +4 -4
@@ -164,7 +164,6 @@ 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);
168
167
  emitChange([value]);
169
168
  }
170
169
  const { autoClearSearchValue = true } = props;
@@ -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 <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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"}
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 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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"}
@@ -27,6 +27,7 @@ export interface TableColProps {
27
27
  fixed: boolean;
28
28
  minWidth: string;
29
29
  resizeWidth: string;
30
+ className: string;
30
31
  }
31
32
  export interface ColumnFilterSlotParams {
32
33
  selectedKeys: (string | number)[];
@@ -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}\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 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,4 +1,4 @@
1
- import { defineComponent, inject, computed, openBlock, createElementBlock, Fragment, renderList, normalizeStyle } from 'vue';
1
+ import { defineComponent, inject, computed, openBlock, createElementBlock, Fragment, renderList, normalizeClass, normalizeStyle } from 'vue';
2
2
  import { getLeafColumns, getColumnKey } from '../utils.mjs';
3
3
  import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
4
4
 
@@ -31,7 +31,8 @@ const _sfc_main = defineComponent({
31
31
  minWidth: typeof col.minWidth === "number" ? `${col.minWidth}px` : col.minWidth,
32
32
  key: colKey,
33
33
  fixed: !!fixed,
34
- resizeWidth: resizeWidth ? `${resizeWidth}px` : void 0
34
+ resizeWidth: resizeWidth ? `${resizeWidth}px` : void 0,
35
+ className: col.className
35
36
  };
36
37
  })
37
38
  );
@@ -54,8 +55,9 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
54
55
  (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.cols, (col) => {
55
56
  return openBlock(), createElementBlock("col", {
56
57
  key: col.key,
58
+ class: normalizeClass(col.className),
57
59
  style: normalizeStyle({ width: _ctx.getWidth(col), minWidth: col.minWidth, maxWidth: col.fixed ? col.width : "" })
58
- }, null, 4);
60
+ }, null, 6);
59
61
  }), 128))
60
62
  ]);
61
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ColGroup.mjs","sources":["../../../../../src/components/Table/tableUnits/ColGroup.vue"],"sourcesContent":["<template>\n <colgroup>\n <col v-for=\"col in cols\" :key=\"col.key\" :style=\"{ width: getWidth(col), minWidth: col.minWidth, maxWidth: col.fixed ? col.width : '' }\" />\n </colgroup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, inject } from 'vue';\nimport type { PropType } from 'vue';\nimport type { TableColProps, InnerColumn, TableContext } from '../Table.type';\nimport { getColumnKey, getLeafColumns } from '../utils';\n\nexport default defineComponent({\n name: 'TableColGroup',\n props: {\n columns: {\n type: Array as PropType<InnerColumn[]>,\n default: () => [] as InnerColumn[]\n },\n isHeadTable: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const {\n size: { resizeColumns, columnWidths }\n } = inject<TableContext>('tableContext', {} as TableContext);\n\n const cols = computed(() => {\n let rst: TableColProps[] = [];\n rst = rst.concat(\n getLeafColumns(props.columns).map((col) => {\n const { fixed } = col;\n const colKey = getColumnKey(col);\n const resizeWidth = resizeColumns.value.find((x) => x.key === colKey)?.width;\n return {\n width: typeof col.width === 'number' ? `${col.width}px` : col.width,\n minWidth: typeof col.minWidth === 'number' ? `${col.minWidth}px` : col.minWidth,\n key: colKey,\n fixed: !!fixed,\n resizeWidth: resizeWidth ? `${resizeWidth}px` : undefined\n } as any;\n })\n );\n return rst;\n });\n\n const getWidth = (col: TableColProps) => {\n if (props.isHeadTable) {\n return `${columnWidths.value[col.key]}px`;\n }\n return col.resizeWidth ? col.resizeWidth : col.width;\n };\n\n return {\n cols,\n getWidth\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_Fragment","_normalizeStyle"],"mappings":";;;;AAYA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AAAC;AAClB,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;AACX;AACF,EACA,MAAM,OAAO;UACL;AAAA,MACJ,MAAM,EAAE,eAAe;AAAa,QAClC,OAAqB,gBAAgB,EAAkB;UAErD,OAAO,SAAS,MAAM;UACtB,MAAuB;YACrB,IAAI;AAAA,QACR,eAAe,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ;AAzBnD;gBA0BgB,EAAE,UAAU;gBACZ,SAAS,aAAa,GAAG;gBACzB,eAAc,mBAAc,MAAM,KAAK,CAAC,MAAM,EAAE,QAAQ,MAAM,MAAhD,mBAAmD;iBAChE;AAAA,YACL,OAAO,OAAO,IAAI,UAAU,WAAW,GAAG,IAAI,YAAY,IAAI;AAAA,YAC9D,UAAU,OAAO,IAAI,aAAa,WAAW,GAAG,IAAI,eAAe,IAAI;AAAA,YACvE,KAAK;AAAA,YACL,OAAO,CAAC,CAAC;AAAA,YACT,aAAa,cAAc,GAAG,kBAAkB;AAAA;AAClD,SACD;AAAA;aAEI;AAAA,KACR;UAEK,WAAW,CAAC,QAAuB;UACnC,MAAM,aAAa;eACd,GAAG,aAAa,MAAM,IAAI;AAAA;aAE5B,IAAI,cAAc,IAAI,cAAc,IAAI;AAAA;WAG1C;AAAA,MACL;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;sBA3DCA,mBAEW;sBADTA,mBAA0IC,2BAAvH,WAAI,CAAX,QAAG;0BAAfD,mBAA0I;QAAhH,KAAK,IAAI;AAAA,QAAM,OAAKE,wBAAW,cAAS,GAAG,aAAa,IAAI,UAAQ,UAAY,IAAI,QAAQ,IAAI,QAAK;;;;;;;;;"}
1
+ {"version":3,"file":"ColGroup.mjs","sources":["../../../../../src/components/Table/tableUnits/ColGroup.vue"],"sourcesContent":["<template>\n <colgroup>\n <col\n v-for=\"col in cols\"\n :key=\"col.key\"\n :class=\"col.className\"\n :style=\"{ width: getWidth(col), minWidth: col.minWidth, maxWidth: col.fixed ? col.width : '' }\"\n />\n </colgroup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, inject } from 'vue';\nimport type { PropType } from 'vue';\nimport type { TableColProps, InnerColumn, TableContext } from '../Table.type';\nimport { getColumnKey, getLeafColumns } from '../utils';\n\nexport default defineComponent({\n name: 'TableColGroup',\n props: {\n columns: {\n type: Array as PropType<InnerColumn[]>,\n default: () => [] as InnerColumn[]\n },\n isHeadTable: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const {\n size: { resizeColumns, columnWidths }\n } = inject<TableContext>('tableContext', {} as TableContext);\n\n const cols = computed(() => {\n let rst: TableColProps[] = [];\n rst = rst.concat(\n getLeafColumns(props.columns).map((col) => {\n const { fixed } = col;\n const colKey = getColumnKey(col);\n const resizeWidth = resizeColumns.value.find((x) => x.key === colKey)?.width;\n return {\n width: typeof col.width === 'number' ? `${col.width}px` : col.width,\n minWidth: typeof col.minWidth === 'number' ? `${col.minWidth}px` : col.minWidth,\n key: colKey,\n fixed: !!fixed,\n resizeWidth: resizeWidth ? `${resizeWidth}px` : undefined,\n className: col.className\n } as any;\n })\n );\n return rst;\n });\n\n const getWidth = (col: TableColProps) => {\n if (props.isHeadTable) {\n return `${columnWidths.value[col.key]}px`;\n }\n return col.resizeWidth ? col.resizeWidth : col.width;\n };\n\n return {\n cols,\n getWidth\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_Fragment","_normalizeClass","_normalizeStyle"],"mappings":";;;;AAiBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,MAAM;AAAC;AAClB,IACA,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA;AACX;AACF,EACA,MAAM,OAAO;UACL;AAAA,MACJ,MAAM,EAAE,eAAe;AAAa,QAClC,OAAqB,gBAAgB,EAAkB;UAErD,OAAO,SAAS,MAAM;UACtB,MAAuB;YACrB,IAAI;AAAA,QACR,eAAe,MAAM,OAAO,EAAE,IAAI,CAAC,QAAQ;AAzBnD;gBA0BgB,EAAE,UAAU;gBACZ,SAAS,aAAa,GAAG;gBACzB,eAAc,mBAAc,MAAM,KAAK,CAAC,MAAM,EAAE,QAAQ,MAAM,MAAhD,mBAAmD;iBAChE;AAAA,YACL,OAAO,OAAO,IAAI,UAAU,WAAW,GAAG,IAAI,YAAY,IAAI;AAAA,YAC9D,UAAU,OAAO,IAAI,aAAa,WAAW,GAAG,IAAI,eAAe,IAAI;AAAA,YACvE,KAAK;AAAA,YACL,OAAO,CAAC,CAAC;AAAA,YACT,aAAa,cAAc,GAAG,kBAAkB;AAAA,YAChD,WAAW,IAAI;AAAA;AACjB,SACD;AAAA;aAEI;AAAA,KACR;UAEK,WAAW,CAAC,QAAuB;UACnC,MAAM,aAAa;eACd,GAAG,aAAa,MAAM,IAAI;AAAA;aAE5B,IAAI,cAAc,IAAI,cAAc,IAAI;AAAA;WAG1C;AAAA,MACL;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;sBAjECA,mBAOW;sBANTA,mBAKEC,2BAJc,WAAI,CAAX,QAAG;0BADZD,mBAKE;QAHC,KAAK,IAAI;AAAA,QACT,OAAKE,eAAE,IAAI,SAAS;AAAA,QACpB,OAAKC,wBAAW,cAAS,GAAG,aAAa,IAAI,UAAQ,UAAY,IAAI,QAAQ,IAAI,QAAK;;;;;;;;;"}
@@ -424,7 +424,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
424
424
  [`${_ctx.prefixCls}-item`]: true,
425
425
  [`${_ctx.prefixCls}-item-active`]: _ctx.stateValue ? _ctx.stateValue === item.key : index === 0,
426
426
  [`${_ctx.prefixCls}-item-disabled`]: item.disabled,
427
- [`${_ctx.prefixCls}-item-closable`]: (_ctx.editable || _ctx.closable) && item.closable
427
+ [`${_ctx.prefixCls}-item-closable`]: (_ctx.editable || _ctx.closable) && item.closable,
428
+ [`${item.className}`]: item.className
428
429
  }),
429
430
  onClick: (e) => _ctx.handleTabClick(item, index, e)
430
431
  }, [
@@ -1 +1 @@
1
- {"version":3,"file":"TabNav.mjs","sources":["../../../../src/components/Tabs/TabNav.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}-bar`]: true,\n [`${prefixCls}-${type}`]: true,\n [`${prefixCls}-${size}`]: true,\n [`${prefixCls}-${tabPosition}-bar`]: true,\n [`${prefixCls}-vertical`]: isVertical,\n [`${prefixCls}-extra-${extraPosition}`]: !isVertical,\n [`${prefixCls}-centered`]: !isVertical && centered\n }\"\n tabindex=\"0\"\n @keydown=\"handleTabNavKeydown\"\n >\n <div v-if=\"$slots.extra\" :class=\"`${prefixCls}-extra-content`\">\n <slot name=\"extra\">\n <!-- <span v-if=\"addable || editable\" :class=\"`${prefixCls}-add-btn`\" @click.stop=\"handleTabAdd\">\n <UIcon>\n <ULineAdd />\n </UIcon>\n </span> -->\n </slot>\n </div>\n\n <div\n ref=\"container\"\n :class=\"[\n `${prefixCls}-container`,\n {\n [`${prefixCls}-scrolling`]: scrollable.show\n }\n ]\"\n @wheel.stop=\"handleTabNavScroll\"\n >\n <span\n v-if=\"scrollable.show\"\n :class=\"[\n `${prefixCls}-btn`,\n `${prefixCls}-prev`,\n {\n [`${prefixCls}-btn-disabled`]: !scrollable.prev\n }\n ]\"\n @click.stop=\"handleScrollPrev\"\n >\n <UIcon>\n <ChevronLeft />\n </UIcon>\n </span>\n <div :ref=\"saveRef('navScroll')\" :class=\"`${prefixCls}-scroll`\">\n <div :ref=\"saveRef('nav')\" :style=\"navStyle\" :class=\"[`${prefixCls}-content`]\">\n <TabBar\n v-if=\"type === 'line'\"\n ref=\"tabBarRef\"\n :tabs=\"tabs\"\n :active=\"stateValue\"\n :tab-position=\"tabPosition\"\n :prefix-cls=\"prefixCls\"\n :animated=\"animated\"\n :fixed-distance=\"fixedDistance\"\n />\n\n <div\n v-for=\"(item, index) in tabs\"\n :key=\"item.key\"\n :ref=\"saveRef(`tab_${item.key}`)\"\n :class=\"{\n [`${prefixCls}-item`]: true,\n [`${prefixCls}-item-active`]: stateValue ? stateValue === item.key : index === 0,\n [`${prefixCls}-item-disabled`]: item.disabled,\n [`${prefixCls}-item-closable`]: (editable || closable) && item.closable\n }\"\n @click=\"(e: any) => handleTabClick(item, index, e)\"\n >\n <span\n :class=\"{\n [`${prefixCls}-item-content`]: true\n }\"\n >\n <URender v-if=\"item.slot !== undefined\" :render=\"item.slot\" />\n <template v-else-if=\"$slots.tab\">\n <slot name=\"tab\" v-bind=\"{ item }\" />\n </template>\n <template v-else>{{ item.label }}</template>\n\n <span\n v-if=\"editable || closable\"\n :class=\"{\n [`${prefixCls}-item-close`]: true,\n [`${prefixCls}-item-close-hidden`]: item.closable === false\n }\"\n @click.stop=\"(e: any) => handleTabRemove(item, index, e)\"\n >\n <UIcon>\n <X />\n </UIcon>\n </span>\n </span>\n </div>\n </div>\n </div>\n <span\n v-if=\"scrollable.show\"\n :class=\"[\n `${prefixCls}-btn`,\n `${prefixCls}-next`,\n {\n [`${prefixCls}-btn-disabled`]: !scrollable.next\n }\n ]\"\n @click.stop=\"handleScrollNext\"\n >\n <UIcon>\n <ChevronRight />\n </UIcon>\n </span>\n <div\n v-if=\"addable || editable\"\n :class=\"{\n [`${prefixCls}-item-add-btn`]: true\n }\"\n @click.stop=\"handleTabAdd\"\n >\n <UIcon>\n <Plus />\n </UIcon>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, defineComponent, reactive, provide, computed, watch, nextTick, onMounted, onBeforeUnmount, onUpdated } from 'vue';\nimport UIcon from '@uxd-ui/components/Icon';\nimport { ChevronLeft, ChevronRight, Plus, X } from 'lucide-vue-next';\nimport TabBar from './TabBar.vue';\nimport URender from '../base/Render';\nimport useResizeObserver from '../base/hooks/useResizeObserver';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport KeyCode from '../../utils/KeyCode';\nimport { debounce } from '../../utils/tools';\nimport { tabNavProps, tabNavEmits } from './Tabs.type';\nimport type { TabsGuard, TabInfo, TabPaneInstance } from './Tabs.type';\n\nexport default defineComponent({\n name: 'UTabNav',\n components: {\n TabBar,\n UIcon,\n X,\n ChevronLeft,\n ChevronRight,\n Plus,\n URender\n },\n props: tabNavProps,\n emits: tabNavEmits,\n setup(props, { emit }) {\n const { prefixCls } = useGlobalConfig('tab-nav');\n const stateValue = ref(props.modelValue);\n const scrollable = reactive({\n show: false,\n prev: false,\n next: false\n });\n const container = ref(null);\n const tabNavRefs = reactive({} as Record<string, Element>);\n\n const saveRef = (key: string) => {\n return (el: any) => {\n tabNavRefs[key] = el;\n };\n };\n // ========= scroll ==========\n // #region\n const isVertical = computed(() => {\n return props.tabPosition === 'left' || props.tabPosition === 'right';\n });\n\n const getOffsetWH = (node: any) => {\n let prop = 'offsetWidth';\n if (isVertical.value) {\n prop = 'offsetHeight';\n }\n return node[prop];\n };\n let stateOffset = 0;\n const navStyle = ref({});\n\n const getMinOffset = () => {\n const { nav } = tabNavRefs;\n const tabNavContainer = tabNavRefs.navScroll;\n const navWH = getOffsetWH(nav);\n const containerWH = getOffsetWH(tabNavContainer);\n return containerWH - navWH;\n };\n\n const setOffset = (offset: number) => {\n const target = Math.min(0, offset);\n if (stateOffset !== target) {\n stateOffset = target;\n }\n const direction = isVertical.value ? 'Y' : 'X';\n navStyle.value = {\n ...navStyle.value,\n transform: `translate${direction}(${target}px)`\n };\n };\n\n const updateScroll = () => {\n const { nav } = tabNavRefs;\n if (!nav) return;\n const minOffset = getMinOffset();\n if (minOffset < 0) {\n scrollable.show = true;\n scrollable.prev = stateOffset < 0;\n scrollable.next = minOffset < stateOffset;\n if (stateOffset < minOffset) {\n setOffset(minOffset);\n }\n } else {\n scrollable.show = false;\n if (stateOffset < 0) {\n setOffset(0);\n }\n }\n };\n\n const scrollToActiveTab = () => {\n if (!scrollable.show) return;\n const activeKey = props.modelValue;\n const activeTab = tabNavRefs[`tab_${activeKey}`];\n const tabNavContainer = tabNavRefs.navScroll;\n if (!activeTab) return;\n const containerBounding = tabNavContainer.getBoundingClientRect();\n const activeTabBounding = activeTab.getBoundingClientRect();\n const propLT = isVertical.value ? 'top' : 'left';\n const containerLT = containerBounding[propLT];\n const activeTabLT = activeTabBounding[propLT];\n const propRB = isVertical.value ? 'bottom' : 'right';\n const containerRB = containerBounding[propRB];\n const activeTabRB = activeTabBounding[propRB];\n\n let offset = stateOffset;\n if (containerLT > activeTabLT) {\n offset += containerLT - activeTabLT;\n setOffset(offset);\n } else if (containerRB < activeTabRB) {\n offset -= activeTabRB - containerRB;\n setOffset(offset);\n }\n };\n\n const handleScrollPrev = () => {\n if (!scrollable.prev) return;\n const containerWH = getOffsetWH(tabNavRefs.navScroll);\n setOffset(stateOffset + containerWH);\n };\n\n const handleScrollNext = () => {\n if (!scrollable.next) return;\n const containerWH = getOffsetWH(tabNavRefs.navScroll);\n setOffset(stateOffset - containerWH);\n };\n\n const handleTabNavScroll = (evt: WheelEvent) => {\n if (!scrollable.show) return;\n\n evt.preventDefault();\n\n navStyle.value = {\n ...navStyle.value,\n transitionDuration: '0s'\n };\n setOffset(stateOffset + (evt as any).wheelDelta);\n nextTick(() => {\n navStyle.value = {\n ...navStyle.value,\n transitionDuration: ''\n };\n });\n };\n\n onMounted(() => {\n updateScroll();\n setTimeout(() => scrollToActiveTab(), 300);\n });\n\n const preTabPosition = ref(props.tabPosition);\n const preAcitve = ref(props.modelValue);\n const update = () => {\n if (preTabPosition.value !== props.tabPosition) {\n setOffset(0);\n }\n updateScroll();\n if (preAcitve.value !== props.modelValue) {\n nextTick(() => {\n setTimeout(() => {\n scrollToActiveTab();\n }, 300);\n });\n }\n preTabPosition.value = props.tabPosition;\n preAcitve.value = props.modelValue;\n };\n\n onUpdated(() => {\n update();\n });\n\n const debounceResize = debounce(() => {\n updateScroll();\n setTimeout(() => {\n scrollToActiveTab();\n }, 300);\n }, 200);\n\n useResizeObserver(container, debounceResize);\n\n onBeforeUnmount(() => {\n debounceResize.cancel();\n });\n\n // #endregion\n\n // ========== event =============\n // #region\n const getClosable = (pane: TabInfo | TabPaneInstance) => {\n if (props.editable || props.closable) {\n if (pane.closable === undefined) {\n return true;\n }\n return pane.closable;\n }\n return pane.closable;\n };\n\n const emitValueChange = (val: string) => {\n stateValue.value = val;\n if (props.modelValue) {\n emit('update:modelValue', val);\n }\n };\n\n const getNextActiveTab = (next: boolean) => {\n const activeKey = props.modelValue;\n const children: TabInfo[] = [];\n props.tabs.forEach((tab) => {\n if (tab && !tab.disabled) {\n if (next) {\n children.push(tab);\n } else {\n children.unshift(tab);\n }\n }\n });\n\n const { length } = children;\n let ret = length && children[0];\n children.every((c, i) => {\n if (c.key === activeKey) {\n if (i === length - 1) {\n ret = children[0];\n } else {\n ret = children[i + 1];\n }\n return false;\n }\n return true;\n });\n return ret;\n };\n\n watch(\n () => props.modelValue,\n (val) => {\n stateValue.value = val;\n }\n );\n\n const getActivePane = () => {\n const activeKey = stateValue.value;\n const pane = props.tabs.find((x) => x.key === activeKey);\n return pane;\n };\n\n const handleTabClick = async (pane: TabInfo | TabPaneInstance, index: number, e: any) => {\n if (pane.disabled) {\n return;\n }\n const guard = props.guard as TabsGuard;\n if (guard?.onClickBefore) {\n const res = await guard.onClickBefore(e);\n if (!res) return;\n }\n emitValueChange(pane.key);\n emit('tabClick', pane, index, e);\n if (guard?.onClickAfter) guard.onClickAfter(e);\n };\n\n const handleTabRemove = (pane: TabInfo | TabPaneInstance, index?: number, e?: any) => {\n if (pane.disabled) {\n return;\n }\n emit('tabRemove', pane, index, e);\n };\n\n const handleTabAdd = (e?: any) => {\n emit('tabAdd', e);\n };\n\n const handleTabChange = (tab: TabInfo) => {\n emitValueChange(tab.key);\n const index = props.tabs.findIndex((x) => x.key === tab.key);\n emit('tabClick', tab, index);\n };\n\n const handleTabNavKeydown = (e: KeyboardEvent) => {\n const { which } = e;\n\n switch (which) {\n case KeyCode.RIGHT:\n case KeyCode.DOWN: {\n const newTab = getNextActiveTab(true);\n newTab && handleTabChange(newTab);\n break;\n }\n case KeyCode.LEFT:\n case KeyCode.UP: {\n const newTab = getNextActiveTab(false);\n newTab && handleTabChange(newTab);\n break;\n }\n case KeyCode.DELETE: {\n const activePane = getActivePane();\n if (activePane) {\n const closable = getClosable(activePane);\n if (closable) {\n handleTabRemove(activePane);\n }\n }\n break;\n }\n case KeyCode.INSERT: {\n if (props.editable || props.addable) {\n handleTabAdd();\n }\n break;\n }\n default:\n break;\n }\n };\n // #endregion\n\n const tabBarRef = ref<InstanceType<typeof TabBar> | null>(null);\n let observer: MutationObserver | null = null;\n\n const handleNavChange = () => {\n tabBarRef.value?.update();\n };\n\n watch(tabNavRefs, () => {\n if (tabNavRefs.nav && !observer) {\n observer = new MutationObserver(handleNavChange);\n observer.observe(tabNavRefs.nav, {\n childList: true,\n subtree: true,\n attributes: false\n });\n }\n });\n\n onBeforeUnmount(() => {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n });\n\n provide('TabNavContext', {\n tabNavRefs\n });\n\n return {\n stateValue,\n prefixCls,\n scrollToActiveTab,\n scrollable,\n container,\n saveRef,\n isVertical,\n getClosable,\n navStyle,\n tabBarRef,\n handleTabClick,\n handleTabRemove,\n handleTabAdd,\n handleTabNavKeydown,\n handleScrollPrev,\n handleScrollNext,\n handleTabNavScroll\n };\n }\n});\n</script>\n"],"names":["URender","_createElementBlock","_normalizeClass","_renderSlot","_createCommentVNode","_createElementVNode","_createVNode","_normalizeStyle","_createBlock","_Fragment","_mergeProps","_withModifiers"],"mappings":"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"}
1
+ {"version":3,"file":"TabNav.mjs","sources":["../../../../src/components/Tabs/TabNav.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}-bar`]: true,\n [`${prefixCls}-${type}`]: true,\n [`${prefixCls}-${size}`]: true,\n [`${prefixCls}-${tabPosition}-bar`]: true,\n [`${prefixCls}-vertical`]: isVertical,\n [`${prefixCls}-extra-${extraPosition}`]: !isVertical,\n [`${prefixCls}-centered`]: !isVertical && centered\n }\"\n tabindex=\"0\"\n @keydown=\"handleTabNavKeydown\"\n >\n <div v-if=\"$slots.extra\" :class=\"`${prefixCls}-extra-content`\">\n <slot name=\"extra\">\n <!-- <span v-if=\"addable || editable\" :class=\"`${prefixCls}-add-btn`\" @click.stop=\"handleTabAdd\">\n <UIcon>\n <ULineAdd />\n </UIcon>\n </span> -->\n </slot>\n </div>\n\n <div\n ref=\"container\"\n :class=\"[\n `${prefixCls}-container`,\n {\n [`${prefixCls}-scrolling`]: scrollable.show\n }\n ]\"\n @wheel.stop=\"handleTabNavScroll\"\n >\n <span\n v-if=\"scrollable.show\"\n :class=\"[\n `${prefixCls}-btn`,\n `${prefixCls}-prev`,\n {\n [`${prefixCls}-btn-disabled`]: !scrollable.prev\n }\n ]\"\n @click.stop=\"handleScrollPrev\"\n >\n <UIcon>\n <ChevronLeft />\n </UIcon>\n </span>\n <div :ref=\"saveRef('navScroll')\" :class=\"`${prefixCls}-scroll`\">\n <div :ref=\"saveRef('nav')\" :style=\"navStyle\" :class=\"[`${prefixCls}-content`]\">\n <TabBar\n v-if=\"type === 'line'\"\n ref=\"tabBarRef\"\n :tabs=\"tabs\"\n :active=\"stateValue\"\n :tab-position=\"tabPosition\"\n :prefix-cls=\"prefixCls\"\n :animated=\"animated\"\n :fixed-distance=\"fixedDistance\"\n />\n\n <div\n v-for=\"(item, index) in tabs\"\n :key=\"item.key\"\n :ref=\"saveRef(`tab_${item.key}`)\"\n :class=\"{\n [`${prefixCls}-item`]: true,\n [`${prefixCls}-item-active`]: stateValue ? stateValue === item.key : index === 0,\n [`${prefixCls}-item-disabled`]: item.disabled,\n [`${prefixCls}-item-closable`]: (editable || closable) && item.closable,\n [`${item.className}`]: item.className\n }\"\n @click=\"(e: any) => handleTabClick(item, index, e)\"\n >\n <span\n :class=\"{\n [`${prefixCls}-item-content`]: true\n }\"\n >\n <URender v-if=\"item.slot !== undefined\" :render=\"item.slot\" />\n <template v-else-if=\"$slots.tab\">\n <slot name=\"tab\" v-bind=\"{ item }\" />\n </template>\n <template v-else>{{ item.label }}</template>\n\n <span\n v-if=\"editable || closable\"\n :class=\"{\n [`${prefixCls}-item-close`]: true,\n [`${prefixCls}-item-close-hidden`]: item.closable === false\n }\"\n @click.stop=\"(e: any) => handleTabRemove(item, index, e)\"\n >\n <UIcon>\n <X />\n </UIcon>\n </span>\n </span>\n </div>\n </div>\n </div>\n <span\n v-if=\"scrollable.show\"\n :class=\"[\n `${prefixCls}-btn`,\n `${prefixCls}-next`,\n {\n [`${prefixCls}-btn-disabled`]: !scrollable.next\n }\n ]\"\n @click.stop=\"handleScrollNext\"\n >\n <UIcon>\n <ChevronRight />\n </UIcon>\n </span>\n <div\n v-if=\"addable || editable\"\n :class=\"{\n [`${prefixCls}-item-add-btn`]: true\n }\"\n @click.stop=\"handleTabAdd\"\n >\n <UIcon>\n <Plus />\n </UIcon>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { ref, defineComponent, reactive, provide, computed, watch, nextTick, onMounted, onBeforeUnmount, onUpdated } from 'vue';\nimport UIcon from '@uxd-ui/components/Icon';\nimport { ChevronLeft, ChevronRight, Plus, X } from 'lucide-vue-next';\nimport TabBar from './TabBar.vue';\nimport URender from '../base/Render';\nimport useResizeObserver from '../base/hooks/useResizeObserver';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport KeyCode from '../../utils/KeyCode';\nimport { debounce } from '../../utils/tools';\nimport { tabNavProps, tabNavEmits } from './Tabs.type';\nimport type { TabsGuard, TabInfo, TabPaneInstance } from './Tabs.type';\n\nexport default defineComponent({\n name: 'UTabNav',\n components: {\n TabBar,\n UIcon,\n X,\n ChevronLeft,\n ChevronRight,\n Plus,\n URender\n },\n props: tabNavProps,\n emits: tabNavEmits,\n setup(props, { emit }) {\n const { prefixCls } = useGlobalConfig('tab-nav');\n const stateValue = ref(props.modelValue);\n const scrollable = reactive({\n show: false,\n prev: false,\n next: false\n });\n const container = ref(null);\n const tabNavRefs = reactive({} as Record<string, Element>);\n\n const saveRef = (key: string) => {\n return (el: any) => {\n tabNavRefs[key] = el;\n };\n };\n // ========= scroll ==========\n // #region\n const isVertical = computed(() => {\n return props.tabPosition === 'left' || props.tabPosition === 'right';\n });\n\n const getOffsetWH = (node: any) => {\n let prop = 'offsetWidth';\n if (isVertical.value) {\n prop = 'offsetHeight';\n }\n return node[prop];\n };\n let stateOffset = 0;\n const navStyle = ref({});\n\n const getMinOffset = () => {\n const { nav } = tabNavRefs;\n const tabNavContainer = tabNavRefs.navScroll;\n const navWH = getOffsetWH(nav);\n const containerWH = getOffsetWH(tabNavContainer);\n return containerWH - navWH;\n };\n\n const setOffset = (offset: number) => {\n const target = Math.min(0, offset);\n if (stateOffset !== target) {\n stateOffset = target;\n }\n const direction = isVertical.value ? 'Y' : 'X';\n navStyle.value = {\n ...navStyle.value,\n transform: `translate${direction}(${target}px)`\n };\n };\n\n const updateScroll = () => {\n const { nav } = tabNavRefs;\n if (!nav) return;\n const minOffset = getMinOffset();\n if (minOffset < 0) {\n scrollable.show = true;\n scrollable.prev = stateOffset < 0;\n scrollable.next = minOffset < stateOffset;\n if (stateOffset < minOffset) {\n setOffset(minOffset);\n }\n } else {\n scrollable.show = false;\n if (stateOffset < 0) {\n setOffset(0);\n }\n }\n };\n\n const scrollToActiveTab = () => {\n if (!scrollable.show) return;\n const activeKey = props.modelValue;\n const activeTab = tabNavRefs[`tab_${activeKey}`];\n const tabNavContainer = tabNavRefs.navScroll;\n if (!activeTab) return;\n const containerBounding = tabNavContainer.getBoundingClientRect();\n const activeTabBounding = activeTab.getBoundingClientRect();\n const propLT = isVertical.value ? 'top' : 'left';\n const containerLT = containerBounding[propLT];\n const activeTabLT = activeTabBounding[propLT];\n const propRB = isVertical.value ? 'bottom' : 'right';\n const containerRB = containerBounding[propRB];\n const activeTabRB = activeTabBounding[propRB];\n\n let offset = stateOffset;\n if (containerLT > activeTabLT) {\n offset += containerLT - activeTabLT;\n setOffset(offset);\n } else if (containerRB < activeTabRB) {\n offset -= activeTabRB - containerRB;\n setOffset(offset);\n }\n };\n\n const handleScrollPrev = () => {\n if (!scrollable.prev) return;\n const containerWH = getOffsetWH(tabNavRefs.navScroll);\n setOffset(stateOffset + containerWH);\n };\n\n const handleScrollNext = () => {\n if (!scrollable.next) return;\n const containerWH = getOffsetWH(tabNavRefs.navScroll);\n setOffset(stateOffset - containerWH);\n };\n\n const handleTabNavScroll = (evt: WheelEvent) => {\n if (!scrollable.show) return;\n\n evt.preventDefault();\n\n navStyle.value = {\n ...navStyle.value,\n transitionDuration: '0s'\n };\n setOffset(stateOffset + (evt as any).wheelDelta);\n nextTick(() => {\n navStyle.value = {\n ...navStyle.value,\n transitionDuration: ''\n };\n });\n };\n\n onMounted(() => {\n updateScroll();\n setTimeout(() => scrollToActiveTab(), 300);\n });\n\n const preTabPosition = ref(props.tabPosition);\n const preAcitve = ref(props.modelValue);\n const update = () => {\n if (preTabPosition.value !== props.tabPosition) {\n setOffset(0);\n }\n updateScroll();\n if (preAcitve.value !== props.modelValue) {\n nextTick(() => {\n setTimeout(() => {\n scrollToActiveTab();\n }, 300);\n });\n }\n preTabPosition.value = props.tabPosition;\n preAcitve.value = props.modelValue;\n };\n\n onUpdated(() => {\n update();\n });\n\n const debounceResize = debounce(() => {\n updateScroll();\n setTimeout(() => {\n scrollToActiveTab();\n }, 300);\n }, 200);\n\n useResizeObserver(container, debounceResize);\n\n onBeforeUnmount(() => {\n debounceResize.cancel();\n });\n\n // #endregion\n\n // ========== event =============\n // #region\n const getClosable = (pane: TabInfo | TabPaneInstance) => {\n if (props.editable || props.closable) {\n if (pane.closable === undefined) {\n return true;\n }\n return pane.closable;\n }\n return pane.closable;\n };\n\n const emitValueChange = (val: string) => {\n stateValue.value = val;\n if (props.modelValue) {\n emit('update:modelValue', val);\n }\n };\n\n const getNextActiveTab = (next: boolean) => {\n const activeKey = props.modelValue;\n const children: TabInfo[] = [];\n props.tabs.forEach((tab) => {\n if (tab && !tab.disabled) {\n if (next) {\n children.push(tab);\n } else {\n children.unshift(tab);\n }\n }\n });\n\n const { length } = children;\n let ret = length && children[0];\n children.every((c, i) => {\n if (c.key === activeKey) {\n if (i === length - 1) {\n ret = children[0];\n } else {\n ret = children[i + 1];\n }\n return false;\n }\n return true;\n });\n return ret;\n };\n\n watch(\n () => props.modelValue,\n (val) => {\n stateValue.value = val;\n }\n );\n\n const getActivePane = () => {\n const activeKey = stateValue.value;\n const pane = props.tabs.find((x) => x.key === activeKey);\n return pane;\n };\n\n const handleTabClick = async (pane: TabInfo | TabPaneInstance, index: number, e: any) => {\n if (pane.disabled) {\n return;\n }\n const guard = props.guard as TabsGuard;\n if (guard?.onClickBefore) {\n const res = await guard.onClickBefore(e);\n if (!res) return;\n }\n emitValueChange(pane.key);\n emit('tabClick', pane, index, e);\n if (guard?.onClickAfter) guard.onClickAfter(e);\n };\n\n const handleTabRemove = (pane: TabInfo | TabPaneInstance, index?: number, e?: any) => {\n if (pane.disabled) {\n return;\n }\n emit('tabRemove', pane, index, e);\n };\n\n const handleTabAdd = (e?: any) => {\n emit('tabAdd', e);\n };\n\n const handleTabChange = (tab: TabInfo) => {\n emitValueChange(tab.key);\n const index = props.tabs.findIndex((x) => x.key === tab.key);\n emit('tabClick', tab, index);\n };\n\n const handleTabNavKeydown = (e: KeyboardEvent) => {\n const { which } = e;\n\n switch (which) {\n case KeyCode.RIGHT:\n case KeyCode.DOWN: {\n const newTab = getNextActiveTab(true);\n newTab && handleTabChange(newTab);\n break;\n }\n case KeyCode.LEFT:\n case KeyCode.UP: {\n const newTab = getNextActiveTab(false);\n newTab && handleTabChange(newTab);\n break;\n }\n case KeyCode.DELETE: {\n const activePane = getActivePane();\n if (activePane) {\n const closable = getClosable(activePane);\n if (closable) {\n handleTabRemove(activePane);\n }\n }\n break;\n }\n case KeyCode.INSERT: {\n if (props.editable || props.addable) {\n handleTabAdd();\n }\n break;\n }\n default:\n break;\n }\n };\n // #endregion\n\n const tabBarRef = ref<InstanceType<typeof TabBar> | null>(null);\n let observer: MutationObserver | null = null;\n\n const handleNavChange = () => {\n tabBarRef.value?.update();\n };\n\n watch(tabNavRefs, () => {\n if (tabNavRefs.nav && !observer) {\n observer = new MutationObserver(handleNavChange);\n observer.observe(tabNavRefs.nav, {\n childList: true,\n subtree: true,\n attributes: false\n });\n }\n });\n\n onBeforeUnmount(() => {\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n });\n\n provide('TabNavContext', {\n tabNavRefs\n });\n\n return {\n stateValue,\n prefixCls,\n scrollToActiveTab,\n scrollable,\n container,\n saveRef,\n isVertical,\n getClosable,\n navStyle,\n tabBarRef,\n handleTabClick,\n handleTabRemove,\n handleTabAdd,\n handleTabNavKeydown,\n handleScrollPrev,\n handleScrollNext,\n handleTabNavScroll\n };\n }\n});\n</script>\n"],"names":["URender","_createElementBlock","_normalizeClass","_renderSlot","_createCommentVNode","_createElementVNode","_createVNode","_normalizeStyle","_createBlock","_Fragment","_mergeProps","_withModifiers"],"mappings":"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"}
@@ -116,6 +116,7 @@ export interface TabInfo {
116
116
  label: string;
117
117
  key: string;
118
118
  slots?: Slots;
119
+ className?: string;
119
120
  [key: string]: any;
120
121
  }
121
122
  export interface TabsContext {
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.type.mjs","sources":["../../../../src/components/Tabs/Tabs.type.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, Ref, Slots } from 'vue';\nimport { normalSizeMap, type NormalSizeMap } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\n\nimport type Tabs from './Tabs';\nimport type TabPane from './TabPane.vue';\nimport type TabNav from './TabNav.vue';\n\nexport const tabsType = ['line', 'card', 'border-card'] as const;\nexport type TabsType = (typeof tabsType)[number];\nexport const tabPosition = ['top', 'left', 'right', 'bottom'] as const;\nexport type TabPosition = (typeof tabPosition)[number];\nexport const extraPosition = ['left', 'right'] as const;\nexport type ExtraPosition = (typeof extraPosition)[number];\n\nexport interface TabsGuard {\n onClickBefore?: (e: Event) => Promise<boolean> | boolean;\n onClickAfter?: (e: Event) => void;\n}\n\nexport const tabsProps = {\n type: {\n type: String as PropType<TabsType>,\n default: 'line',\n validator: oneOf(tabsType)\n },\n closable: {\n type: Boolean,\n default: false\n },\n editable: {\n type: Boolean,\n default: false\n },\n addable: {\n type: Boolean,\n default: false\n },\n modelValue: {\n type: String\n },\n tabPosition: {\n type: String as PropType<TabPosition>,\n default: 'top',\n validator: oneOf(tabPosition)\n },\n extraPosition: {\n type: String as PropType<ExtraPosition>,\n default: 'right',\n validator: oneOf(extraPosition)\n },\n size: {\n type: String as PropType<NormalSizeMap>,\n default: 'default',\n validator: oneOf(normalSizeMap)\n },\n animated: {\n type: Boolean,\n default: true\n },\n fixedDistance: {\n type: Number,\n default: undefined as undefined\n },\n centered: {\n type: Boolean,\n default: false\n },\n guard: {\n type: Object as PropType<TabsGuard>,\n default: () => ({})\n }\n};\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>;\n\nexport const tabsEmits = {\n tabClick: (key: string, index: number, e?: Event) => key && typeof index === 'number' && (e === undefined || e instanceof Event),\n tabRemove: (key: string, e: Event) => typeof key === 'string' && e instanceof Event,\n tabAdd: (e: Event) => e instanceof Event,\n 'update:modelValue': (v: string) => typeof v === 'string',\n edit: (key: string | null, op: 'remove' | 'add') => (key === null || typeof key === 'string') && (op === 'remove' || op === 'add')\n};\n\nexport type TabsEmits = typeof tabsEmits;\n\nexport const tabPaneProps = {\n label: {\n type: String,\n default: ''\n },\n name: {\n type: String\n },\n closable: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n index: {\n type: String,\n default: '0'\n },\n forceRender: {\n type: Boolean,\n default: false\n }\n};\nexport type TabPaneProps = ExtractPropTypes<typeof tabPaneProps>;\n\nexport interface TabPaneInstance {\n closable: boolean;\n index: string;\n disabled: boolean;\n label: string;\n key: string;\n slots: Slots;\n}\n\nexport interface TabInfo {\n closable?: boolean;\n index?: string;\n disabled?: boolean;\n label: string;\n key: string;\n slots?: Slots;\n [key: string]: any;\n}\n\nexport interface TabsContext {\n activeName: Ref<string>;\n closable: Ref<boolean>;\n addPane: (instance: TabPaneInstance) => void;\n removePane: (instance: TabPaneInstance) => void;\n}\n\nexport const tabNavProps = {\n tabs: {\n type: Array as PropType<TabInfo[]>,\n default: () => [] as TabInfo[]\n },\n modelValue: {\n type: [String, Number]\n },\n editable: {\n type: Boolean,\n default: false\n },\n closable: {\n type: Boolean,\n default: false\n },\n addable: {\n type: Boolean,\n default: false\n },\n type: {\n type: String as PropType<TabsType>,\n default: 'line',\n validator: oneOf(tabsType)\n },\n tabPosition: {\n type: String as PropType<TabPosition>,\n default: 'top',\n validator: oneOf(tabPosition)\n },\n extraPosition: {\n type: String as PropType<ExtraPosition>,\n default: 'right',\n validator: oneOf(extraPosition)\n },\n size: {\n type: String as PropType<NormalSizeMap>,\n default: 'default',\n validator: oneOf(normalSizeMap)\n },\n animated: {\n type: Boolean,\n default: true\n },\n fixedDistance: {\n type: Number,\n default: undefined as undefined\n },\n centered: {\n type: Boolean,\n default: false\n },\n guard: {\n type: Object as PropType<TabsGuard>,\n default: () => ({})\n }\n};\n\nexport type TabNavProps = ExtractPropTypes<typeof tabNavProps>;\n\nexport const tabNavEmits = {\n tabClick: (pane: TabInfo, index: number, e?: Event) => pane.key && typeof index === 'number' && (e === undefined || e instanceof Event),\n tabRemove: (pane: TabInfo, index?: number, e?: Event) => pane.key && typeof index === 'number' && e instanceof Event,\n tabAdd: (e: Event) => e instanceof Event,\n 'update:modelValue': (v: string) => typeof v === 'string'\n};\n\nexport type TabNavEmits = typeof tabNavEmits;\n\nexport interface TabNavContext {\n tabNavRefs: Record<string, HTMLElement>;\n}\n\nexport type TabsInstanceType = InstanceType<typeof Tabs>;\nexport type TabPaneInstanceType = InstanceType<typeof TabPane>;\nexport type TabNavInstanceType = InstanceType<typeof TabNav>;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tabs.type.mjs","sources":["../../../../src/components/Tabs/Tabs.type.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, Ref, Slots } from 'vue';\nimport { normalSizeMap, type NormalSizeMap } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\n\nimport type Tabs from './Tabs';\nimport type TabPane from './TabPane.vue';\nimport type TabNav from './TabNav.vue';\n\nexport const tabsType = ['line', 'card', 'border-card'] as const;\nexport type TabsType = (typeof tabsType)[number];\nexport const tabPosition = ['top', 'left', 'right', 'bottom'] as const;\nexport type TabPosition = (typeof tabPosition)[number];\nexport const extraPosition = ['left', 'right'] as const;\nexport type ExtraPosition = (typeof extraPosition)[number];\n\nexport interface TabsGuard {\n onClickBefore?: (e: Event) => Promise<boolean> | boolean;\n onClickAfter?: (e: Event) => void;\n}\n\nexport const tabsProps = {\n type: {\n type: String as PropType<TabsType>,\n default: 'line',\n validator: oneOf(tabsType)\n },\n closable: {\n type: Boolean,\n default: false\n },\n editable: {\n type: Boolean,\n default: false\n },\n addable: {\n type: Boolean,\n default: false\n },\n modelValue: {\n type: String\n },\n tabPosition: {\n type: String as PropType<TabPosition>,\n default: 'top',\n validator: oneOf(tabPosition)\n },\n extraPosition: {\n type: String as PropType<ExtraPosition>,\n default: 'right',\n validator: oneOf(extraPosition)\n },\n size: {\n type: String as PropType<NormalSizeMap>,\n default: 'default',\n validator: oneOf(normalSizeMap)\n },\n animated: {\n type: Boolean,\n default: true\n },\n fixedDistance: {\n type: Number,\n default: undefined as undefined\n },\n centered: {\n type: Boolean,\n default: false\n },\n guard: {\n type: Object as PropType<TabsGuard>,\n default: () => ({})\n }\n};\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>;\n\nexport const tabsEmits = {\n tabClick: (key: string, index: number, e?: Event) => key && typeof index === 'number' && (e === undefined || e instanceof Event),\n tabRemove: (key: string, e: Event) => typeof key === 'string' && e instanceof Event,\n tabAdd: (e: Event) => e instanceof Event,\n 'update:modelValue': (v: string) => typeof v === 'string',\n edit: (key: string | null, op: 'remove' | 'add') => (key === null || typeof key === 'string') && (op === 'remove' || op === 'add')\n};\n\nexport type TabsEmits = typeof tabsEmits;\n\nexport const tabPaneProps = {\n label: {\n type: String,\n default: ''\n },\n name: {\n type: String\n },\n closable: {\n type: Boolean,\n default: false\n },\n disabled: {\n type: Boolean,\n default: false\n },\n index: {\n type: String,\n default: '0'\n },\n forceRender: {\n type: Boolean,\n default: false\n }\n};\nexport type TabPaneProps = ExtractPropTypes<typeof tabPaneProps>;\n\nexport interface TabPaneInstance {\n closable: boolean;\n index: string;\n disabled: boolean;\n label: string;\n key: string;\n slots: Slots;\n}\n\nexport interface TabInfo {\n closable?: boolean;\n index?: string;\n disabled?: boolean;\n label: string;\n key: string;\n slots?: Slots;\n className?: string;\n [key: string]: any;\n}\n\nexport interface TabsContext {\n activeName: Ref<string>;\n closable: Ref<boolean>;\n addPane: (instance: TabPaneInstance) => void;\n removePane: (instance: TabPaneInstance) => void;\n}\n\nexport const tabNavProps = {\n tabs: {\n type: Array as PropType<TabInfo[]>,\n default: () => [] as TabInfo[]\n },\n modelValue: {\n type: [String, Number]\n },\n editable: {\n type: Boolean,\n default: false\n },\n closable: {\n type: Boolean,\n default: false\n },\n addable: {\n type: Boolean,\n default: false\n },\n type: {\n type: String as PropType<TabsType>,\n default: 'line',\n validator: oneOf(tabsType)\n },\n tabPosition: {\n type: String as PropType<TabPosition>,\n default: 'top',\n validator: oneOf(tabPosition)\n },\n extraPosition: {\n type: String as PropType<ExtraPosition>,\n default: 'right',\n validator: oneOf(extraPosition)\n },\n size: {\n type: String as PropType<NormalSizeMap>,\n default: 'default',\n validator: oneOf(normalSizeMap)\n },\n animated: {\n type: Boolean,\n default: true\n },\n fixedDistance: {\n type: Number,\n default: undefined as undefined\n },\n centered: {\n type: Boolean,\n default: false\n },\n guard: {\n type: Object as PropType<TabsGuard>,\n default: () => ({})\n }\n};\n\nexport type TabNavProps = ExtractPropTypes<typeof tabNavProps>;\n\nexport const tabNavEmits = {\n tabClick: (pane: TabInfo, index: number, e?: Event) => pane.key && typeof index === 'number' && (e === undefined || e instanceof Event),\n tabRemove: (pane: TabInfo, index?: number, e?: Event) => pane.key && typeof index === 'number' && e instanceof Event,\n tabAdd: (e: Event) => e instanceof Event,\n 'update:modelValue': (v: string) => typeof v === 'string'\n};\n\nexport type TabNavEmits = typeof tabNavEmits;\n\nexport interface TabNavContext {\n tabNavRefs: Record<string, HTMLElement>;\n}\n\nexport type TabsInstanceType = InstanceType<typeof Tabs>;\nexport type TabPaneInstanceType = InstanceType<typeof TabPane>;\nexport type TabNavInstanceType = InstanceType<typeof TabNav>;\n"],"names":[],"mappings":"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"}
@@ -168,7 +168,6 @@ const _sfc_main = vue.defineComponent({
168
168
  emitChange(rowValue);
169
169
  }
170
170
  } else if (value !== stateValue.value && !Array.isArray(value)) {
171
- console.log("onSelect", value);
172
171
  emitChange([value]);
173
172
  }
174
173
  const { autoClearSearchValue = true } = props;