@koi-design/uxd-ui 14.0.28 → 14.0.30

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 (44) hide show
  1. package/es/components/Select/RefSelect.mjs +2 -1
  2. package/es/components/Select/RefSelect.mjs.map +1 -1
  3. package/es/components/Upload/Upload.d.ts +9 -0
  4. package/es/components/Upload/Upload.mjs +2 -1
  5. package/es/components/Upload/Upload.mjs.map +1 -1
  6. package/es/components/Upload/Upload.type.d.ts +4 -0
  7. package/es/components/Upload/Upload.type.mjs +4 -0
  8. package/es/components/Upload/Upload.type.mjs.map +1 -1
  9. package/es/components/Upload/UploadDragger.mjs +8 -1
  10. package/es/components/Upload/UploadDragger.mjs.map +1 -1
  11. package/es/components/Upload/UploadDragger.vue.d.ts +9 -0
  12. package/es/components/Upload/Uploader.mjs +6 -1
  13. package/es/components/Upload/Uploader.mjs.map +1 -1
  14. package/es/components/Upload/Uploader.vue.d.ts +18 -0
  15. package/es/components/Upload/index.d.ts +15 -0
  16. package/lib/components/Select/RefSelect.js +2 -1
  17. package/lib/components/Select/RefSelect.js.map +1 -1
  18. package/lib/components/Upload/Upload.d.ts +9 -0
  19. package/lib/components/Upload/Upload.js +2 -1
  20. package/lib/components/Upload/Upload.js.map +1 -1
  21. package/lib/components/Upload/Upload.type.d.ts +4 -0
  22. package/lib/components/Upload/Upload.type.js +4 -0
  23. package/lib/components/Upload/Upload.type.js.map +1 -1
  24. package/lib/components/Upload/UploadDragger.js +8 -1
  25. package/lib/components/Upload/UploadDragger.js.map +1 -1
  26. package/lib/components/Upload/UploadDragger.vue.d.ts +9 -0
  27. package/lib/components/Upload/Uploader.js +6 -1
  28. package/lib/components/Upload/Uploader.js.map +1 -1
  29. package/lib/components/Upload/Uploader.vue.d.ts +18 -0
  30. package/lib/components/Upload/index.d.ts +15 -0
  31. package/package.json +1 -1
  32. package/styles/components/upload/index.css +1 -1
  33. package/styles/components/upload/index.less +5 -0
  34. package/styles/index.css +1 -1
  35. package/types/components/Upload/Upload.d.ts +9 -0
  36. package/types/components/Upload/Upload.type.d.ts +4 -0
  37. package/types/components/Upload/UploadDragger.vue.d.ts +9 -0
  38. package/types/components/Upload/Uploader.vue.d.ts +18 -0
  39. package/types/components/Upload/index.d.ts +15 -0
  40. package/uxd-ui.css +1 -1
  41. package/uxd-ui.esm.min.mjs +3 -3
  42. package/uxd-ui.esm.mjs +23 -5
  43. package/uxd-ui.umd.js +23 -5
  44. package/uxd-ui.umd.min.js +3 -3
@@ -258,6 +258,7 @@ const _sfc_main = defineComponent({
258
258
  blur: onContainerBlur
259
259
  });
260
260
  const onContainerMouseDown = (e) => {
261
+ console.log("onContainerMouseDown", e);
261
262
  setOpenState(!stateOpen.value);
262
263
  emit("mousedown", e);
263
264
  };
@@ -518,7 +519,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
518
519
  key: "clear",
519
520
  class: normalizeClass(`${_ctx.prefixCls}-clear`),
520
521
  onMousedown: _cache[0] || (_cache[0] = withModifiers(() => {
521
- }, ["prevent"])),
522
+ }, ["stop"])),
522
523
  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.onClearSelection && _ctx.onClearSelection(...args))
523
524
  }, [
524
525
  createVNode(_component_UIcon, null, {
@@ -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 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.stop @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 console.log('onContainerMouseDown', e);\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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"}
@@ -80,6 +80,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
80
80
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
81
81
  default: () => void;
82
82
  };
83
+ error: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
83
87
  }>, {
84
88
  prefixCls: import("vue").ComputedRef<string>;
85
89
  uploaderRef: import("vue").Ref<any, any>;
@@ -201,6 +205,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
201
205
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
202
206
  default: () => void;
203
207
  };
208
+ error: {
209
+ type: BooleanConstructor;
210
+ default: boolean;
211
+ };
204
212
  }>> & Readonly<{
205
213
  onChange?: (file: FileInfo, fileList: FileInfo[]) => any;
206
214
  onPreview?: (file: FileInfo) => any;
@@ -209,6 +217,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
209
217
  }>, {
210
218
  data: Record<string, any>;
211
219
  drag: boolean;
220
+ error: boolean;
212
221
  name: string;
213
222
  onProgress: import("./Upload.type").OnUploadProgress;
214
223
  onError: import("./Upload.type").OnUploadError;
@@ -104,7 +104,8 @@ var Upload = defineComponent({
104
104
  "withCredentials": this.withCredentials,
105
105
  "disabled": this.disabled,
106
106
  "limit": limit,
107
- "customRequest": this.customRequest
107
+ "customRequest": this.customRequest,
108
+ "error": this.error
108
109
  }), _isSlot(_slot = this.getChild()) ? _slot : {
109
110
  default: () => [_slot]
110
111
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.mjs","sources":["../../../../src/components/Upload/Upload.tsx"],"sourcesContent":["import { defineComponent, provide } from 'vue';\nimport { getSlot, cloneVNode } from '../../utils/slots';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport Uploader from './Uploader.vue';\nimport UploadList from './UploadList.vue';\nimport useFileUpload from './hooks/useFileUpload';\nimport { type FileInfo, uploadProps, uploadEmits } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUpload',\n inheritAttrs: false,\n props: uploadProps,\n emits: uploadEmits,\n setup(props, { slots, emit }) {\n const { prefixCls } = useGlobalConfig('upload');\n\n const { uploaderRef, uploadFileList, abort, clearFiles, submit, handleError, handleSuccess, handleProgress, handleStart, handleRemove } =\n useFileUpload(props, emit);\n\n const getChild = () => {\n const children = getSlot(slots);\n const newChildren = children.map((child) => {\n return cloneVNode(child as any, {\n disabled: props.disabled ? true : undefined\n });\n });\n return newChildren;\n };\n\n const handleExceed = (files: File[]) => {\n props.onError('exceed the upload limit', files, uploadFileList.value);\n };\n\n const handlePreview = (file: FileInfo) => {\n emit('preview', file);\n };\n\n const handleItemClick = (file: FileInfo) => {\n emit('item-click', file);\n };\n\n provide('UploadContext', {\n uploadFileList,\n handleError,\n handleSuccess,\n handleProgress,\n handleStart,\n handleRemove,\n handleExceed,\n handlePreview\n });\n\n return {\n prefixCls,\n uploaderRef,\n uploadFileList,\n abort,\n clearFiles,\n submit,\n handleRemove,\n handlePreview,\n handleItemClick,\n getChild\n };\n },\n render() {\n const { showFileList, listType, prefixCls } = this;\n\n let limit;\n if (this.limit && typeof this.limit === 'number') {\n limit = this.limit - this.uploadFileList.length;\n limit = limit > 0 ? limit : 0;\n }\n\n const attrs = this.$attrs;\n\n const uploader = (\n <Uploader\n ref=\"uploaderRef\"\n {...attrs}\n prefixCls={prefixCls}\n action={this.action}\n name={this.name}\n multiple={this.multiple}\n listType={this.listType}\n accept={this.accept}\n headers={this.headers}\n drag={this.drag}\n data={this.data}\n beforeUpload={this.beforeUpload}\n withCredentials={this.withCredentials}\n disabled={this.disabled}\n limit={limit}\n customRequest={this.customRequest}\n >\n {this.getChild()}\n </Uploader>\n );\n\n const uploadList = (append?: any) =>\n showFileList ? (\n <UploadList\n prefixCls={prefixCls}\n disabled={this.disabled}\n files={this.uploadFileList}\n listType={listType}\n listItemClass={this.listItemClass}\n onRemove={this.handleRemove}\n onPreview={this.handlePreview}\n onClick={this.handleItemClick}\n v-slots={{\n ...(this.$slots.file\n ? {\n default: ({ file }: { file: FileInfo }) => {\n return this.$slots.file?.({\n file\n });\n }\n }\n : {}),\n\n ...(append\n ? {\n append: () => append\n }\n : {})\n }}\n ></UploadList>\n ) : null;\n\n const tips = <div class={`${prefixCls}-tip`}>{this.$slots.tip?.()}</div>;\n\n if (this.listType === 'picture-card' && showFileList) {\n return <>{[uploadList(uploader), tips]}</>;\n }\n return <>{[uploader, tips, uploadList()]}</>;\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","inheritAttrs","props","uploadProps","emits","uploadEmits","setup","slots","emit","prefixCls","useGlobalConfig","uploaderRef","uploadFileList","abort","clearFiles","submit","handleError","handleSuccess","handleProgress","handleStart","handleRemove","useFileUpload","getChild","children","getSlot","newChildren","map","child","cloneVNode","disabled","undefined","handleExceed","files","onError","value","handlePreview","file","handleItemClick","provide","render","_slot","showFileList","listType","limit","length","attrs","$attrs","uploader","_createVNode","Uploader","_mergeProps","action","multiple","accept","headers","drag","data","beforeUpload","withCredentials","customRequest","default","uploadList","append","UploadList","listItemClass","$slots","_a","_b","tips","tip","_Fragment"],"mappings":";;;;;;;;AAMwE,SAAAA,QAAAC;AAAA,gBAAAA,oBAAAC,OAAAC,UAAAC,SAAAC,KAAAJ,CAAA,4BAAAK,QAAAL,CAAA;AAAA;AAExE,aAAeM,gBAAgB;AAAA,EAC7BC,MAAM;AAAA,EACNC,cAAc;AAAA,EACdC,OAAOC;AAAAA,EACPC,OAAOC;AAAAA,EACPC,MAAMJ,OAAO;AAAA,IAAEK;AAAAA,IAAOC;AAAAA,KAAQ;AAC5B,UAAM;AAAA,MAAEC;AAAAA,QAAcC,gBAAgB,QAAQ;AAE9C,UAAM;AAAA,MAAEC;AAAAA,MAAaC;AAAAA,MAAgBC;AAAAA,MAAOC;AAAAA,MAAYC;AAAAA,MAAQC;AAAAA,MAAaC;AAAAA,MAAeC;AAAAA,MAAgBC;AAAAA,MAAaC;AAAAA,QACvHC,cAAcnB,OAAOM,IAAI;AAE3B,UAAMc,WAAWA,MAAM;AACrB,YAAMC,WAAWC,QAAQjB,KAAK;AAC9B,YAAMkB,cAAcF,SAASG,IAAKC,WAAU;AAC1C,eAAOC,WAAWD,OAAc;AAAA,UAC9BE,UAAU3B,MAAM2B,WAAW,OAAOC;AAAAA,SACnC;AAAA,OACF;AACD,aAAOL;AAAAA;AAGT,UAAMM,eAAgBC,WAAkB;AACtC9B,YAAM+B,QAAQ,2BAA2BD,OAAOpB,eAAesB,KAAK;AAAA;AAGtE,UAAMC,gBAAiBC,UAAmB;AACxC5B,WAAK,WAAW4B,IAAI;AAAA;AAGtB,UAAMC,kBAAmBD,UAAmB;AAC1C5B,WAAK,cAAc4B,IAAI;AAAA;AAGzBE,YAAQ,iBAAiB;AAAA,MACvB1B;AAAAA,MACAI;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAW;AAAAA,MACAI;AAAAA,KACD;AAED,WAAO;AAAA,MACL1B;AAAAA,MACAE;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAK;AAAAA,MACAe;AAAAA,MACAE;AAAAA,MACAf;AAAAA;AACF;AACF,EACAiB,SAAS;AAjEX;AAiEW,QAAAC;AACP,UAAM;AAAA,MAAEC;AAAAA,MAAcC;AAAAA,MAAUjC;AAAAA,QAAc;AAE9C,QAAIkC;AACJ,QAAI,KAAKA,SAAS,OAAO,KAAKA,UAAU,UAAU;AAChDA,cAAQ,KAAKA,QAAQ,KAAK/B,eAAegC;AACzCD,cAAQA,QAAQ,IAAIA,QAAQ;AAAA;AAG9B,UAAME,QAAQ,KAAKC;AAEnB,UAAMC,WAAQC,YAAAC,UAAAC;MAAA;OAGNL;MAAK,aACEpC;AAAAA,MAAS,UACZ,KAAK0C;AAAAA,MAAM,QACb,KAAKnD;AAAAA,MAAI,YACL,KAAKoD;AAAAA,MAAQ,YACb,KAAKV;AAAAA,MAAQ,UACf,KAAKW;AAAAA,MAAM,WACV,KAAKC;AAAAA,MAAO,QACf,KAAKC;AAAAA,MAAI,QACT,KAAKC;AAAAA,MAAI,gBACD,KAAKC;AAAAA,MAAY,mBACd,KAAKC;AAAAA,MAAe,YAC3B,KAAK7B;AAAAA,MAAQ,SAChBc;AAAAA,MAAK,iBACG,KAAKgB;AAAAA,QAAanE,QAAAgD,QAEhC,KAAKlB,UAAU,IAAAkB;MAAAoB,SAAAA,OAAApB,KAAA;AAAA;AAIpB,UAAMqB,aAAcC,YAClBrB,eAAYO,YAAAe;MAAA,aAEGtD;AAAAA,MAAS,YACV,KAAKoB;AAAAA,MAAQ,SAChB,KAAKjB;AAAAA,MAAc,YAChB8B;AAAAA,MAAQ,iBACH,KAAKsB;AAAAA,MAAa,YACvB,KAAK5C;AAAAA,MAAY,aAChB,KAAKe;AAAAA,MAAa,WACpB,KAAKE;AAAAA,OACL;AAAA,MACP,GAAI,KAAK4B,OAAO7B,OACZ;AAAA,QACEwB,SAASA,CAAC;AAAA,UAAExB;AAAAA,cAA+B;AAjH7D,cAAA8B,KAAAC;AAkHoB,kBAAOA,OAAAD,MAAA,KAAKD,QAAO7B,SAAZ,gBAAA+B,IAAA,KAAAD,KAAmB;AAAA,YACxB9B;AAAAA;AACF;AACF,UAEF;AAAC,MAEL,GAAI0B,SACA;AAAA,QACEA,QAAQA,MAAMA;AAAAA,UAEhB;AAAC,KACN,IAED;AAEN,UAAMM,OAAIpB;MAAA,SAAe,GAAGvC;AAAAA,SAAkB,gBAAKwD,QAAOI,QAAZ,2BAAmB;AAEjE,QAAI,KAAK3B,aAAa,kBAAkBD,cAAc;AACpD,aAAAO,YAAAsB,iBAAU,CAACT,WAAWd,QAAQ,GAAGqB,IAAI,CAAC;;AAExC,WAAApB,YAAAsB,iBAAU,CAACvB,UAAUqB,MAAMP,YAAY,CAAC;;AAE5C,CAAC;;;;"}
1
+ {"version":3,"file":"Upload.mjs","sources":["../../../../src/components/Upload/Upload.tsx"],"sourcesContent":["import { defineComponent, provide } from 'vue';\nimport { getSlot, cloneVNode } from '../../utils/slots';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport Uploader from './Uploader.vue';\nimport UploadList from './UploadList.vue';\nimport useFileUpload from './hooks/useFileUpload';\nimport { type FileInfo, uploadProps, uploadEmits } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUpload',\n inheritAttrs: false,\n props: uploadProps,\n emits: uploadEmits,\n setup(props, { slots, emit }) {\n const { prefixCls } = useGlobalConfig('upload');\n\n const { uploaderRef, uploadFileList, abort, clearFiles, submit, handleError, handleSuccess, handleProgress, handleStart, handleRemove } =\n useFileUpload(props, emit);\n\n const getChild = () => {\n const children = getSlot(slots);\n const newChildren = children.map((child) => {\n return cloneVNode(child as any, {\n disabled: props.disabled ? true : undefined\n });\n });\n return newChildren;\n };\n\n const handleExceed = (files: File[]) => {\n props.onError('exceed the upload limit', files, uploadFileList.value);\n };\n\n const handlePreview = (file: FileInfo) => {\n emit('preview', file);\n };\n\n const handleItemClick = (file: FileInfo) => {\n emit('item-click', file);\n };\n\n provide('UploadContext', {\n uploadFileList,\n handleError,\n handleSuccess,\n handleProgress,\n handleStart,\n handleRemove,\n handleExceed,\n handlePreview\n });\n\n return {\n prefixCls,\n uploaderRef,\n uploadFileList,\n abort,\n clearFiles,\n submit,\n handleRemove,\n handlePreview,\n handleItemClick,\n getChild\n };\n },\n render() {\n const { showFileList, listType, prefixCls } = this;\n\n let limit;\n if (this.limit && typeof this.limit === 'number') {\n limit = this.limit - this.uploadFileList.length;\n limit = limit > 0 ? limit : 0;\n }\n\n const attrs = this.$attrs;\n\n const uploader = (\n <Uploader\n ref=\"uploaderRef\"\n {...attrs}\n prefixCls={prefixCls}\n action={this.action}\n name={this.name}\n multiple={this.multiple}\n listType={this.listType}\n accept={this.accept}\n headers={this.headers}\n drag={this.drag}\n data={this.data}\n beforeUpload={this.beforeUpload}\n withCredentials={this.withCredentials}\n disabled={this.disabled}\n limit={limit}\n customRequest={this.customRequest}\n error={this.error}\n >\n {this.getChild()}\n </Uploader>\n );\n\n const uploadList = (append?: any) =>\n showFileList ? (\n <UploadList\n prefixCls={prefixCls}\n disabled={this.disabled}\n files={this.uploadFileList}\n listType={listType}\n listItemClass={this.listItemClass}\n onRemove={this.handleRemove}\n onPreview={this.handlePreview}\n onClick={this.handleItemClick}\n v-slots={{\n ...(this.$slots.file\n ? {\n default: ({ file }: { file: FileInfo }) => {\n return this.$slots.file?.({\n file\n });\n }\n }\n : {}),\n\n ...(append\n ? {\n append: () => append\n }\n : {})\n }}\n ></UploadList>\n ) : null;\n\n const tips = <div class={`${prefixCls}-tip`}>{this.$slots.tip?.()}</div>;\n\n if (this.listType === 'picture-card' && showFileList) {\n return <>{[uploadList(uploader), tips]}</>;\n }\n return <>{[uploader, tips, uploadList()]}</>;\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","inheritAttrs","props","uploadProps","emits","uploadEmits","setup","slots","emit","prefixCls","useGlobalConfig","uploaderRef","uploadFileList","abort","clearFiles","submit","handleError","handleSuccess","handleProgress","handleStart","handleRemove","useFileUpload","getChild","children","getSlot","newChildren","map","child","cloneVNode","disabled","undefined","handleExceed","files","onError","value","handlePreview","file","handleItemClick","provide","render","_slot","showFileList","listType","limit","length","attrs","$attrs","uploader","_createVNode","Uploader","_mergeProps","action","multiple","accept","headers","drag","data","beforeUpload","withCredentials","customRequest","error","default","uploadList","append","UploadList","listItemClass","$slots","_a","_b","tips","tip","_Fragment"],"mappings":"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"}
@@ -125,6 +125,10 @@ export declare const uploadProps: {
125
125
  type: PropType<OnUploadError>;
126
126
  default: () => void;
127
127
  };
128
+ error: {
129
+ type: BooleanConstructor;
130
+ default: boolean;
131
+ };
128
132
  };
129
133
  export type UploadProps = ExtractPropTypes<typeof uploadProps>;
130
134
  export declare const uploadEmits: {
@@ -82,6 +82,10 @@ const uploadProps = {
82
82
  onError: {
83
83
  type: Function,
84
84
  default: NOOP
85
+ },
86
+ error: {
87
+ type: Boolean,
88
+ default: false
85
89
  }
86
90
  };
87
91
  const uploadEmits = {
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.type.mjs","sources":["../../../../src/components/Upload/Upload.type.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, Ref } from 'vue';\nimport type { EmitFn } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\n\nexport type FileStatus = 'ready' | 'uploading' | 'fail' | 'done';\n\nexport type ListType = 'text' | 'picture' | 'picture-card';\n\nexport type RawFile = any & { uid: string };\nexport interface FileInfo {\n type?: string;\n uid?: string;\n name?: string;\n url?: string;\n thumbUrl?: string;\n status?: FileStatus;\n size?: number;\n raw?: any;\n percent?: number;\n response?: any;\n}\n\nexport interface UploadError extends Error {\n status?: number;\n method?: string;\n url?: string;\n}\n\nexport type BeforeUpload = (file: RawFile, isLast: boolean) => boolean | Promise<any>;\nexport type BeforeRemove = (files: FileInfo, uploadFileList: FileInfo[]) => boolean | Promise<boolean>;\nexport type OnUploadRemove = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadProgress = (e: any, files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadSuccess = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadError = (msg: string | UploadError, files: FileInfo | File[], uploadFileList: FileInfo[]) => void;\nexport interface UploadProgress extends ProgressEvent {\n percent?: number;\n}\nexport interface UploadRequestConfig {\n method?: string;\n headers: Record<string, any>;\n withCredentials: boolean;\n file: any;\n data: Record<string, any>;\n fileName: string;\n action: string;\n onProgress: (e: UploadProgress) => void;\n onSuccess: (rep: Request) => void;\n onError: (err: UploadError) => void;\n}\n\nexport type UploadRequest = (params: UploadRequestConfig) => Promise<any>;\n\nconst NOOP = () => {};\n\nexport const uploadProps = {\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n },\n showFileList: {\n type: Boolean,\n default: true\n },\n fileList: {\n type: Array as PropType<FileInfo[]>\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: oneOf(['text', 'picture', 'picture-card'])\n },\n listItemClass: {\n type: String\n },\n beforeRemove: {\n type: Function as PropType<BeforeRemove>\n },\n onRemove: {\n type: Function as PropType<OnUploadRemove>,\n default: NOOP\n },\n onProgress: {\n type: Function as PropType<OnUploadProgress>,\n default: NOOP\n },\n onSuccess: {\n type: Function as PropType<OnUploadSuccess>,\n default: NOOP\n },\n onError: {\n type: Function as PropType<OnUploadError>,\n default: NOOP\n }\n};\n\nexport type UploadProps = ExtractPropTypes<typeof uploadProps>;\n\nexport const uploadEmits = {\n change: (file: FileInfo, fileList: FileInfo[]) => file.uid !== undefined && Array.isArray(fileList),\n preview: (file: FileInfo) => file.uid !== undefined,\n 'item-click': (file: FileInfo) => file.uid !== undefined,\n 'update:fileList': (fileList: FileInfo[]) => Array.isArray(fileList)\n};\n\nexport type UploadEmits = typeof uploadEmits;\n\nexport type UploadEmit = EmitFn<UploadEmits>;\n\nexport interface UploadContext {\n uploadFileList: Ref<FileInfo[]>;\n handleError: (err: UploadError, rawFile: RawFile) => void;\n handleSuccess: (res: Request, rawFile: RawFile) => void;\n handleProgress: (e: UploadProgress, rawFile: RawFile) => void;\n handleStart: (rawFile: RawFile) => void;\n handleRemove: (rawFile: RawFile) => void;\n handleExceed: (files: File[]) => void;\n handlePreview: (file: FileInfo) => void;\n}\n"],"names":[],"mappings":";;AAoDA,MAAM,OAAO,MAAM;AAAC;MAEP,cAAc;AAAA,EACzB,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,KAAK;AAAA,IACH,MAAM;AAAA;AACR,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,OAAO;AAAA,IACL,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,UAAU;AAAA,IACR,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW,MAAM,CAAC,QAAQ,WAAW,cAAc,CAAC;AAAA;AACtD,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA;AAEb;MAIa,cAAc;AAAA,EACzB,QAAQ,CAAC,MAAgB,aAAyB,KAAK,QAAQ,UAAa,MAAM,QAAQ,QAAQ;AAAA,EAClG,SAAS,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC1C,cAAc,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC/C,mBAAmB,CAAC,aAAyB,MAAM,QAAQ,QAAQ;AACrE;;;;"}
1
+ {"version":3,"file":"Upload.type.mjs","sources":["../../../../src/components/Upload/Upload.type.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, Ref } from 'vue';\nimport type { EmitFn } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\n\nexport type FileStatus = 'ready' | 'uploading' | 'fail' | 'done';\n\nexport type ListType = 'text' | 'picture' | 'picture-card';\n\nexport type RawFile = any & { uid: string };\nexport interface FileInfo {\n type?: string;\n uid?: string;\n name?: string;\n url?: string;\n thumbUrl?: string;\n status?: FileStatus;\n size?: number;\n raw?: any;\n percent?: number;\n response?: any;\n}\n\nexport interface UploadError extends Error {\n status?: number;\n method?: string;\n url?: string;\n}\n\nexport type BeforeUpload = (file: RawFile, isLast: boolean) => boolean | Promise<any>;\nexport type BeforeRemove = (files: FileInfo, uploadFileList: FileInfo[]) => boolean | Promise<boolean>;\nexport type OnUploadRemove = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadProgress = (e: any, files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadSuccess = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadError = (msg: string | UploadError, files: FileInfo | File[], uploadFileList: FileInfo[]) => void;\nexport interface UploadProgress extends ProgressEvent {\n percent?: number;\n}\nexport interface UploadRequestConfig {\n method?: string;\n headers: Record<string, any>;\n withCredentials: boolean;\n file: any;\n data: Record<string, any>;\n fileName: string;\n action: string;\n onProgress: (e: UploadProgress) => void;\n onSuccess: (rep: Request) => void;\n onError: (err: UploadError) => void;\n}\n\nexport type UploadRequest = (params: UploadRequestConfig) => Promise<any>;\n\nconst NOOP = () => {};\n\nexport const uploadProps = {\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n },\n showFileList: {\n type: Boolean,\n default: true\n },\n fileList: {\n type: Array as PropType<FileInfo[]>\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: oneOf(['text', 'picture', 'picture-card'])\n },\n listItemClass: {\n type: String\n },\n beforeRemove: {\n type: Function as PropType<BeforeRemove>\n },\n onRemove: {\n type: Function as PropType<OnUploadRemove>,\n default: NOOP\n },\n onProgress: {\n type: Function as PropType<OnUploadProgress>,\n default: NOOP\n },\n onSuccess: {\n type: Function as PropType<OnUploadSuccess>,\n default: NOOP\n },\n onError: {\n type: Function as PropType<OnUploadError>,\n default: NOOP\n },\n error: {\n type: Boolean,\n default: false\n }\n};\n\nexport type UploadProps = ExtractPropTypes<typeof uploadProps>;\n\nexport const uploadEmits = {\n change: (file: FileInfo, fileList: FileInfo[]) => file.uid !== undefined && Array.isArray(fileList),\n preview: (file: FileInfo) => file.uid !== undefined,\n 'item-click': (file: FileInfo) => file.uid !== undefined,\n 'update:fileList': (fileList: FileInfo[]) => Array.isArray(fileList)\n};\n\nexport type UploadEmits = typeof uploadEmits;\n\nexport type UploadEmit = EmitFn<UploadEmits>;\n\nexport interface UploadContext {\n uploadFileList: Ref<FileInfo[]>;\n handleError: (err: UploadError, rawFile: RawFile) => void;\n handleSuccess: (res: Request, rawFile: RawFile) => void;\n handleProgress: (e: UploadProgress, rawFile: RawFile) => void;\n handleStart: (rawFile: RawFile) => void;\n handleRemove: (rawFile: RawFile) => void;\n handleExceed: (files: File[]) => void;\n handlePreview: (file: FileInfo) => void;\n}\n"],"names":[],"mappings":";;AAoDA,MAAM,OAAO,MAAM;AAAC;MAEP,cAAc;AAAA,EACzB,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,KAAK;AAAA,IACH,MAAM;AAAA;AACR,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,OAAO;AAAA,IACL,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,UAAU;AAAA,IACR,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW,MAAM,CAAC,QAAQ,WAAW,cAAc,CAAC;AAAA;AACtD,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA;AAEb;MAIa,cAAc;AAAA,EACzB,QAAQ,CAAC,MAAgB,aAAyB,KAAK,QAAQ,UAAa,MAAM,QAAQ,QAAQ;AAAA,EAClG,SAAS,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC1C,cAAc,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC/C,mBAAmB,CAAC,aAAyB,MAAM,QAAQ,QAAQ;AACrE;;;;"}
@@ -14,6 +14,10 @@ const _sfc_main = defineComponent({
14
14
  },
15
15
  accept: {
16
16
  type: String
17
+ },
18
+ error: {
19
+ type: Boolean,
20
+ default: false
17
21
  }
18
22
  },
19
23
  emits: ["file"],
@@ -24,6 +28,7 @@ const _sfc_main = defineComponent({
24
28
  return;
25
29
  if (!props.accept) {
26
30
  emit("file", e.dataTransfer.files);
31
+ dragover.value = false;
27
32
  } else {
28
33
  const { accept } = props;
29
34
  const files = Array.from(e.dataTransfer.files).filter((file) => {
@@ -42,6 +47,7 @@ const _sfc_main = defineComponent({
42
47
  });
43
48
  });
44
49
  emit("file", files);
50
+ dragover.value = false;
45
51
  }
46
52
  };
47
53
  const onDragover = () => {
@@ -65,7 +71,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
65
71
  class: normalizeClass({
66
72
  [`${_ctx.prefixCls}-dragger`]: true,
67
73
  [`${_ctx.prefixCls}-dragger-hover`]: _ctx.dragover,
68
- [`${_ctx.prefixCls}-dragger-disabled`]: _ctx.disabled
74
+ [`${_ctx.prefixCls}-dragger-disabled`]: _ctx.disabled,
75
+ [`${_ctx.prefixCls}-dragger-error`]: _ctx.error
69
76
  }),
70
77
  onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.onDrop && _ctx.onDrop(...args), ["prevent"])),
71
78
  onDragover: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.onDragover && _ctx.onDragover(...args), ["prevent"])),
@@ -1 +1 @@
1
- {"version":3,"file":"UploadDragger.mjs","sources":["../../../../src/components/Upload/UploadDragger.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}-dragger`]: true,\n [`${prefixCls}-dragger-hover`]: dragover,\n [`${prefixCls}-dragger-disabled`]: disabled\n }\"\n @drop.prevent=\"onDrop\"\n @dragover.prevent=\"onDragover\"\n @dragleave.prevent=\"onDragLeave\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref } from 'vue';\n\nexport default defineComponent({\n name: 'UUploadDragger',\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n }\n },\n emits: ['file'],\n setup(props, { emit }) {\n const dragover = ref(false);\n\n const onDrop = (e: any) => {\n if (props.disabled) return;\n if (!props.accept) {\n emit('file', e.dataTransfer.files);\n } else {\n const { accept } = props;\n const files = Array.from(e.dataTransfer.files).filter((file) => {\n const { type, name } = file as any;\n const extname = name.indexOf('.') > -1 ? `.${name.split('.').pop()}` : '';\n const baseType = type.replace(/\\/.*/, '');\n return accept.split(',').some((acceptType) => {\n const validType = acceptType.trim();\n if (validType.startsWith('.')) {\n return extname === validType;\n }\n if (/\\/\\*$/.test(validType)) {\n return baseType === validType.replace(/\\/.*$/, '');\n }\n return type === validType;\n });\n });\n emit('file', files);\n }\n };\n\n const onDragover = () => {\n if (!props.disabled) {\n dragover.value = true;\n }\n };\n\n const onDragLeave = () => {\n dragover.value = false;\n };\n\n return {\n dragover,\n onDrop,\n onDragover,\n onDragLeave\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot"],"mappings":";;;AAkBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR;AACF,EACA,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,OAAO,EAAE,QAAQ;UACf,WAAW,IAAI,KAAK;UAEpB,SAAS,CAAC,MAAW;UACrB,MAAM;;UACN,CAAC,MAAM,QAAQ;aACZ,QAAQ,EAAE,aAAa,KAAK;AAAA,aAC5B;cACC,EAAE,WAAW;cACb,QAAQ,MAAM,KAAK,EAAE,aAAa,KAAK,EAAE,OAAO,CAAC,SAAS;gBACxD,EAAE,MAAM,SAAS;gBACjB,UAAU,KAAK,QAAQ,GAAG,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,EAAE,UAAU;gBACjE,WAAW,KAAK,QAAQ,QAAQ,EAAE;iBACjC,OAAO,MAAM,GAAG,EAAE,KAAK,CAAC,eAAe;kBACtC,YAAY,WAAW;gBACzB,UAAU,WAAW,GAAG,GAAG;qBACtB,YAAY;AAAA;gBAEjB,QAAQ,KAAK,SAAS,GAAG;qBACpB,aAAa,UAAU,QAAQ,SAAS,EAAE;AAAA;mBAE5C,SAAS;AAAA,WACjB;AAAA,SACF;aACI,QAAQ,KAAK;AAAA;AACpB;UAGI,aAAa,MAAM;UACnB,CAAC,MAAM,UAAU;iBACV,QAAQ;AAAA;AACnB;UAGI,cAAc,MAAM;eACf,QAAQ;AAAA;WAGZ;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;sBA9ECA,mBAWM;IAVH,OAAKC;UAAc,2BAAS;AAAA,UAA6B,iCAA4B;UAAoB,oCAA+B;;IAKxI,QAAI,qDAAU,qCAAM;IACpB,YAAQ,qDAAU,6CAAU;IAC5B,aAAS,qDAAU,+CAAW;;IAE/BC,WAAQ;;;;;;;"}
1
+ {"version":3,"file":"UploadDragger.mjs","sources":["../../../../src/components/Upload/UploadDragger.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}-dragger`]: true,\n [`${prefixCls}-dragger-hover`]: dragover,\n [`${prefixCls}-dragger-disabled`]: disabled,\n [`${prefixCls}-dragger-error`]: error\n }\"\n @drop.prevent=\"onDrop\"\n @dragover.prevent=\"onDragover\"\n @dragleave.prevent=\"onDragLeave\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref } from 'vue';\n\nexport default defineComponent({\n name: 'UUploadDragger',\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n error: {\n type: Boolean,\n default: false\n }\n },\n emits: ['file'],\n setup(props, { emit }) {\n const dragover = ref(false);\n\n const onDrop = (e: any) => {\n if (props.disabled) return;\n if (!props.accept) {\n emit('file', e.dataTransfer.files);\n dragover.value = false;\n } else {\n const { accept } = props;\n const files = Array.from(e.dataTransfer.files).filter((file) => {\n const { type, name } = file as any;\n const extname = name.indexOf('.') > -1 ? `.${name.split('.').pop()}` : '';\n const baseType = type.replace(/\\/.*/, '');\n return accept.split(',').some((acceptType) => {\n const validType = acceptType.trim();\n if (validType.startsWith('.')) {\n return extname === validType;\n }\n if (/\\/\\*$/.test(validType)) {\n return baseType === validType.replace(/\\/.*$/, '');\n }\n return type === validType;\n });\n });\n\n emit('file', files);\n dragover.value = false;\n }\n };\n\n const onDragover = () => {\n if (!props.disabled) {\n dragover.value = true;\n }\n };\n\n const onDragLeave = () => {\n dragover.value = false;\n };\n\n return {\n dragover,\n onDrop,\n onDragover,\n onDragLeave\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot"],"mappings":";;;AAmBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA;AACX;AACF,EACA,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,OAAO,EAAE,QAAQ;UACf,WAAW,IAAI,KAAK;UAEpB,SAAS,CAAC,MAAW;UACrB,MAAM;;UACN,CAAC,MAAM,QAAQ;aACZ,QAAQ,EAAE,aAAa,KAAK;iBACxB,QAAQ;AAAA,aACZ;cACC,EAAE,WAAW;cACb,QAAQ,MAAM,KAAK,EAAE,aAAa,KAAK,EAAE,OAAO,CAAC,SAAS;gBACxD,EAAE,MAAM,SAAS;gBACjB,UAAU,KAAK,QAAQ,GAAG,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,EAAE,UAAU;gBACjE,WAAW,KAAK,QAAQ,QAAQ,EAAE;iBACjC,OAAO,MAAM,GAAG,EAAE,KAAK,CAAC,eAAe;kBACtC,YAAY,WAAW;gBACzB,UAAU,WAAW,GAAG,GAAG;qBACtB,YAAY;AAAA;gBAEjB,QAAQ,KAAK,SAAS,GAAG;qBACpB,aAAa,UAAU,QAAQ,SAAS,EAAE;AAAA;mBAE5C,SAAS;AAAA,WACjB;AAAA,SACF;aAEI,QAAQ,KAAK;iBACT,QAAQ;AAAA;AACnB;UAGI,aAAa,MAAM;UACnB,CAAC,MAAM,UAAU;iBACV,QAAQ;AAAA;AACnB;UAGI,cAAc,MAAM;eACf,QAAQ;AAAA;WAGZ;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;sBAtFCA,mBAYM;IAXH,OAAKC;UAAc,2BAAS;AAAA,UAA6B,iCAA4B;UAAoB,oCAA+B;UAAoB,iCAA4B;;IAMxL,QAAI,qDAAU,qCAAM;IACpB,YAAQ,qDAAU,6CAAU;IAC5B,aAAS,qDAAU,+CAAW;;IAE/BC,WAAQ;;;;;;;"}
@@ -10,6 +10,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
10
10
  accept: {
11
11
  type: StringConstructor;
12
12
  };
13
+ error: {
14
+ type: BooleanConstructor;
15
+ default: boolean;
16
+ };
13
17
  }>, {
14
18
  dragover: import("vue").Ref<boolean, boolean>;
15
19
  onDrop: (e: any) => void;
@@ -27,9 +31,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
27
31
  accept: {
28
32
  type: StringConstructor;
29
33
  };
34
+ error: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
30
38
  }>> & Readonly<{
31
39
  onFile?: (...args: any[]) => any;
32
40
  }>, {
41
+ error: boolean;
33
42
  prefixCls: string;
34
43
  disabled: boolean;
35
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -61,6 +61,10 @@ const _sfc_main = defineComponent({
61
61
  },
62
62
  customRequest: {
63
63
  type: Function
64
+ },
65
+ error: {
66
+ type: Boolean,
67
+ default: false
64
68
  }
65
69
  },
66
70
  setup(props) {
@@ -205,6 +209,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
205
209
  key: 0,
206
210
  disabled: _ctx.disabled,
207
211
  "prefix-cls": _ctx.prefixCls,
212
+ error: _ctx.error,
208
213
  accept: _ctx.accept,
209
214
  onFile: _ctx.uploadFiles
210
215
  }, {
@@ -212,7 +217,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
212
217
  renderSlot(_ctx.$slots, "default")
213
218
  ]),
214
219
  _: 3
215
- }, 8, ["disabled", "prefix-cls", "accept", "onFile"])) : renderSlot(_ctx.$slots, "default", { key: 1 }),
220
+ }, 8, ["disabled", "prefix-cls", "error", "accept", "onFile"])) : renderSlot(_ctx.$slots, "default", { key: 1 }),
216
221
  createElementVNode("input", {
217
222
  ref: "fileRef",
218
223
  class: normalizeClass(`${_ctx.prefixCls}-input`),
@@ -1 +1 @@
1
- {"version":3,"file":"Uploader.mjs","sources":["../../../../src/components/Upload/Uploader.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}`]: true,\n [`${prefixCls}-${listType}`]: true,\n [`${prefixCls}-drag`]: drag,\n [`${prefixCls}-disabled`]: disabled\n }\"\n tabindex=\"0\"\n @click=\"handleClick\"\n @keydown.enter=\"handleEnter\"\n >\n <template v-if=\"drag\">\n <UploadDragger :disabled=\"disabled\" :prefix-cls=\"prefixCls\" :accept=\"accept\" @file=\"uploadFiles\">\n <slot />\n </UploadDragger>\n </template>\n <template v-else>\n <slot />\n </template>\n <input ref=\"fileRef\" :class=\"`${prefixCls}-input`\" type=\"file\" :name=\"name\" :multiple=\"multiple\" :accept=\"accept\" @change=\"handleChange\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, inject } from 'vue';\nimport type { PropType } from 'vue';\nimport defaultRequest from './uitls/request';\nimport UploadDragger from './UploadDragger.vue';\nimport getUid from './uitls/uid';\nimport type { BeforeUpload, ListType, UploadContext, UploadRequest, RawFile, FileInfo, UploadProgress, UploadError } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUploader',\n components: {\n UploadDragger\n },\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: (v: string) => ['text', 'picture', 'picture-card'].includes(v)\n },\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n }\n },\n setup(props) {\n const reqs = ref<Record<string, XMLHttpRequest | undefined>>({});\n const fileRef = ref<any | null>(null);\n\n const { handleError, handleSuccess, handleProgress, handleStart, handleExceed } = inject<UploadContext>('UploadContext', {} as UploadContext);\n\n const post = (rawFile: any) => {\n const { uid } = rawFile;\n if (!props.action) {\n return;\n }\n const option = {\n headers: props.headers,\n withCredentials: props.withCredentials,\n file: rawFile,\n data: props.data,\n fileName: props.name,\n action: props.action,\n onProgress: (e: UploadProgress) => {\n handleProgress(e, rawFile);\n },\n onSuccess: (res: any) => {\n handleSuccess(res, rawFile);\n delete reqs.value[uid];\n },\n onError: (err: UploadError) => {\n handleError(err, rawFile);\n delete reqs.value[uid];\n }\n };\n const request = defaultRequest || props.customRequest;\n const req = request(option) as XMLHttpRequest;\n handleStart(rawFile);\n reqs.value[uid] = req;\n if (req instanceof Promise) {\n req.then(option.onSuccess, option.onError);\n }\n };\n\n const upload = (rawFile: RawFile, isLast = false) => {\n if (fileRef.value) {\n fileRef.value.value = '';\n }\n if (!props.beforeUpload) {\n return post(rawFile);\n }\n const before = props.beforeUpload(rawFile, isLast);\n if (before instanceof Promise) {\n before\n .then((processedFile) => {\n const processedFileType = Object.prototype.toString.call(processedFile);\n if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\n post(processedFile);\n } else {\n post(rawFile);\n }\n })\n .catch((e) => {\n handleError(e, rawFile);\n });\n } else if (before !== false) {\n post(rawFile);\n }\n };\n\n const abort = (file: FileInfo) => {\n const _reqs = reqs.value;\n if (file) {\n const uid = file.uid!;\n if (_reqs[uid] && _reqs[uid]?.abort) {\n _reqs[uid]?.abort();\n }\n delete _reqs[uid];\n } else {\n Object.keys(_reqs).forEach((uid) => {\n if (_reqs[uid]) _reqs[uid]?.abort();\n delete _reqs[uid];\n });\n }\n };\n\n const uploadFiles = (files: File[]) => {\n if (props.limit !== undefined && files.length > props.limit) {\n handleExceed(files);\n return;\n }\n let postFiles = Array.from(files);\n if (!props.multiple) {\n postFiles = postFiles.slice(0, 1);\n }\n if (postFiles.length === 0) {\n return;\n }\n postFiles\n .map((f) => {\n (f as RawFile).uid = getUid();\n return f;\n })\n .forEach((rawFile, i) => {\n upload(rawFile, i === postFiles.length - 1);\n });\n };\n\n const handleClick = () => {\n if (!props.disabled) {\n if (fileRef.value) {\n fileRef.value.value = '';\n fileRef.value.click();\n }\n }\n };\n\n const handleEnter = () => {\n handleClick();\n };\n\n const handleChange = (e: any) => {\n const { files } = e.target;\n if (!files) return;\n uploadFiles(files);\n };\n\n return {\n abort,\n upload,\n fileRef,\n uploadFiles,\n handleClick,\n handleEnter,\n handleChange\n };\n }\n});\n</script>\n"],"names":["defaultRequest","upload","_a","_createElementBlock","_normalizeClass","_createBlock","_renderSlot","_createElementVNode"],"mappings":"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"}
1
+ {"version":3,"file":"Uploader.mjs","sources":["../../../../src/components/Upload/Uploader.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}`]: true,\n [`${prefixCls}-${listType}`]: true,\n [`${prefixCls}-drag`]: drag,\n [`${prefixCls}-disabled`]: disabled\n }\"\n tabindex=\"0\"\n @click=\"handleClick\"\n @keydown.enter=\"handleEnter\"\n >\n <template v-if=\"drag\">\n <UploadDragger :disabled=\"disabled\" :prefix-cls=\"prefixCls\" :error=\"error\" :accept=\"accept\" @file=\"uploadFiles\">\n <slot />\n </UploadDragger>\n </template>\n <template v-else>\n <slot />\n </template>\n <input ref=\"fileRef\" :class=\"`${prefixCls}-input`\" type=\"file\" :name=\"name\" :multiple=\"multiple\" :accept=\"accept\" @change=\"handleChange\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, inject } from 'vue';\nimport type { PropType } from 'vue';\nimport defaultRequest from './uitls/request';\nimport UploadDragger from './UploadDragger.vue';\nimport getUid from './uitls/uid';\nimport type { BeforeUpload, ListType, UploadContext, UploadRequest, RawFile, FileInfo, UploadProgress, UploadError } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUploader',\n components: {\n UploadDragger\n },\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: (v: string) => ['text', 'picture', 'picture-card'].includes(v)\n },\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n },\n error: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const reqs = ref<Record<string, XMLHttpRequest | undefined>>({});\n const fileRef = ref<any | null>(null);\n\n const { handleError, handleSuccess, handleProgress, handleStart, handleExceed } = inject<UploadContext>('UploadContext', {} as UploadContext);\n\n const post = (rawFile: any) => {\n const { uid } = rawFile;\n if (!props.action) {\n return;\n }\n const option = {\n headers: props.headers,\n withCredentials: props.withCredentials,\n file: rawFile,\n data: props.data,\n fileName: props.name,\n action: props.action,\n onProgress: (e: UploadProgress) => {\n handleProgress(e, rawFile);\n },\n onSuccess: (res: any) => {\n handleSuccess(res, rawFile);\n delete reqs.value[uid];\n },\n onError: (err: UploadError) => {\n handleError(err, rawFile);\n delete reqs.value[uid];\n }\n };\n const request = defaultRequest || props.customRequest;\n const req = request(option) as XMLHttpRequest;\n handleStart(rawFile);\n reqs.value[uid] = req;\n if (req instanceof Promise) {\n req.then(option.onSuccess, option.onError);\n }\n };\n\n const upload = (rawFile: RawFile, isLast = false) => {\n if (fileRef.value) {\n fileRef.value.value = '';\n }\n if (!props.beforeUpload) {\n return post(rawFile);\n }\n const before = props.beforeUpload(rawFile, isLast);\n if (before instanceof Promise) {\n before\n .then((processedFile) => {\n const processedFileType = Object.prototype.toString.call(processedFile);\n if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\n post(processedFile);\n } else {\n post(rawFile);\n }\n })\n .catch((e) => {\n handleError(e, rawFile);\n });\n } else if (before !== false) {\n post(rawFile);\n }\n };\n\n const abort = (file: FileInfo) => {\n const _reqs = reqs.value;\n if (file) {\n const uid = file.uid!;\n if (_reqs[uid] && _reqs[uid]?.abort) {\n _reqs[uid]?.abort();\n }\n delete _reqs[uid];\n } else {\n Object.keys(_reqs).forEach((uid) => {\n if (_reqs[uid]) _reqs[uid]?.abort();\n delete _reqs[uid];\n });\n }\n };\n\n const uploadFiles = (files: File[]) => {\n if (props.limit !== undefined && files.length > props.limit) {\n handleExceed(files);\n return;\n }\n let postFiles = Array.from(files);\n if (!props.multiple) {\n postFiles = postFiles.slice(0, 1);\n }\n if (postFiles.length === 0) {\n return;\n }\n postFiles\n .map((f) => {\n (f as RawFile).uid = getUid();\n return f;\n })\n .forEach((rawFile, i) => {\n upload(rawFile, i === postFiles.length - 1);\n });\n };\n\n const handleClick = () => {\n if (!props.disabled) {\n if (fileRef.value) {\n fileRef.value.value = '';\n fileRef.value.click();\n }\n }\n };\n\n const handleEnter = () => {\n handleClick();\n };\n\n const handleChange = (e: any) => {\n const { files } = e.target;\n if (!files) return;\n uploadFiles(files);\n };\n\n return {\n abort,\n upload,\n fileRef,\n uploadFiles,\n handleClick,\n handleEnter,\n handleChange\n };\n }\n});\n</script>\n"],"names":["defaultRequest","upload","_a","_createElementBlock","_normalizeClass","_createBlock","_renderSlot","_createElementVNode"],"mappings":"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"}
@@ -53,6 +53,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
53
53
  customRequest: {
54
54
  type: PropType<UploadRequest>;
55
55
  };
56
+ error: {
57
+ type: BooleanConstructor;
58
+ default: boolean;
59
+ };
56
60
  }>, {
57
61
  abort: (file: FileInfo) => void;
58
62
  upload: (rawFile: RawFile, isLast?: boolean) => void;
@@ -114,7 +118,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
114
118
  customRequest: {
115
119
  type: PropType<UploadRequest>;
116
120
  };
121
+ error: {
122
+ type: BooleanConstructor;
123
+ default: boolean;
124
+ };
117
125
  }>> & Readonly<{}>, {
126
+ error: boolean;
118
127
  name: string;
119
128
  prefixCls: string;
120
129
  data: Record<string, any>;
@@ -137,6 +146,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
137
146
  accept: {
138
147
  type: StringConstructor;
139
148
  };
149
+ error: {
150
+ type: BooleanConstructor;
151
+ default: boolean;
152
+ };
140
153
  }>, {
141
154
  dragover: import("vue").Ref<boolean, boolean>;
142
155
  onDrop: (e: any) => void;
@@ -154,9 +167,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
154
167
  accept: {
155
168
  type: StringConstructor;
156
169
  };
170
+ error: {
171
+ type: BooleanConstructor;
172
+ default: boolean;
173
+ };
157
174
  }>> & Readonly<{
158
175
  onFile?: (...args: any[]) => any;
159
176
  }>, {
177
+ error: boolean;
160
178
  prefixCls: string;
161
179
  disabled: boolean;
162
180
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -80,6 +80,10 @@ export declare const UUpload: {
80
80
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
81
81
  default: () => void;
82
82
  };
83
+ error: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
83
87
  }>> & Readonly<{
84
88
  onChange?: (file: import("./Upload.type").FileInfo, fileList: import("./Upload.type").FileInfo[]) => any;
85
89
  onPreview?: (file: import("./Upload.type").FileInfo) => any;
@@ -126,6 +130,7 @@ export declare const UUpload: {
126
130
  'item-click': (file: import("./Upload.type").FileInfo) => boolean;
127
131
  'update:fileList': (fileList: import("./Upload.type").FileInfo[]) => boolean;
128
132
  }, import("vue").PublicProps, {
133
+ error: boolean;
129
134
  name: string;
130
135
  data: Record<string, any>;
131
136
  onError: import("./Upload.type").OnUploadError;
@@ -227,6 +232,10 @@ export declare const UUpload: {
227
232
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
228
233
  default: () => void;
229
234
  };
235
+ error: {
236
+ type: BooleanConstructor;
237
+ default: boolean;
238
+ };
230
239
  }>> & Readonly<{
231
240
  onChange?: (file: import("./Upload.type").FileInfo, fileList: import("./Upload.type").FileInfo[]) => any;
232
241
  onPreview?: (file: import("./Upload.type").FileInfo) => any;
@@ -268,6 +277,7 @@ export declare const UUpload: {
268
277
  [key: string]: any;
269
278
  }>[];
270
279
  }, {}, {}, {}, {
280
+ error: boolean;
271
281
  name: string;
272
282
  data: Record<string, any>;
273
283
  onError: import("./Upload.type").OnUploadError;
@@ -366,6 +376,10 @@ export declare const UUpload: {
366
376
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
367
377
  default: () => void;
368
378
  };
379
+ error: {
380
+ type: BooleanConstructor;
381
+ default: boolean;
382
+ };
369
383
  }>> & Readonly<{
370
384
  onChange?: (file: import("./Upload.type").FileInfo, fileList: import("./Upload.type").FileInfo[]) => any;
371
385
  onPreview?: (file: import("./Upload.type").FileInfo) => any;
@@ -412,6 +426,7 @@ export declare const UUpload: {
412
426
  'item-click': (file: import("./Upload.type").FileInfo) => boolean;
413
427
  'update:fileList': (fileList: import("./Upload.type").FileInfo[]) => boolean;
414
428
  }, string, {
429
+ error: boolean;
415
430
  name: string;
416
431
  data: Record<string, any>;
417
432
  onError: import("./Upload.type").OnUploadError;
@@ -262,6 +262,7 @@ const _sfc_main = vue.defineComponent({
262
262
  blur: onContainerBlur
263
263
  });
264
264
  const onContainerMouseDown = (e) => {
265
+ console.log("onContainerMouseDown", e);
265
266
  setOpenState(!stateOpen.value);
266
267
  emit("mousedown", e);
267
268
  };
@@ -522,7 +523,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
522
523
  key: "clear",
523
524
  class: vue.normalizeClass(`${_ctx.prefixCls}-clear`),
524
525
  onMousedown: _cache[0] || (_cache[0] = vue.withModifiers(() => {
525
- }, ["prevent"])),
526
+ }, ["stop"])),
526
527
  onClick: _cache[1] || (_cache[1] = (...args) => _ctx.onClearSelection && _ctx.onClearSelection(...args))
527
528
  }, [
528
529
  vue.createVNode(_component_UIcon, null, {