@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.
- package/es/components/Select/RefSelect.mjs +2 -1
- package/es/components/Select/RefSelect.mjs.map +1 -1
- package/es/components/Upload/Upload.d.ts +9 -0
- package/es/components/Upload/Upload.mjs +2 -1
- package/es/components/Upload/Upload.mjs.map +1 -1
- package/es/components/Upload/Upload.type.d.ts +4 -0
- package/es/components/Upload/Upload.type.mjs +4 -0
- package/es/components/Upload/Upload.type.mjs.map +1 -1
- package/es/components/Upload/UploadDragger.mjs +8 -1
- package/es/components/Upload/UploadDragger.mjs.map +1 -1
- package/es/components/Upload/UploadDragger.vue.d.ts +9 -0
- package/es/components/Upload/Uploader.mjs +6 -1
- package/es/components/Upload/Uploader.mjs.map +1 -1
- package/es/components/Upload/Uploader.vue.d.ts +18 -0
- package/es/components/Upload/index.d.ts +15 -0
- package/lib/components/Select/RefSelect.js +2 -1
- package/lib/components/Select/RefSelect.js.map +1 -1
- package/lib/components/Upload/Upload.d.ts +9 -0
- package/lib/components/Upload/Upload.js +2 -1
- package/lib/components/Upload/Upload.js.map +1 -1
- package/lib/components/Upload/Upload.type.d.ts +4 -0
- package/lib/components/Upload/Upload.type.js +4 -0
- package/lib/components/Upload/Upload.type.js.map +1 -1
- package/lib/components/Upload/UploadDragger.js +8 -1
- package/lib/components/Upload/UploadDragger.js.map +1 -1
- package/lib/components/Upload/UploadDragger.vue.d.ts +9 -0
- package/lib/components/Upload/Uploader.js +6 -1
- package/lib/components/Upload/Uploader.js.map +1 -1
- package/lib/components/Upload/Uploader.vue.d.ts +18 -0
- package/lib/components/Upload/index.d.ts +15 -0
- package/package.json +1 -1
- package/styles/components/upload/index.css +1 -1
- package/styles/components/upload/index.less +5 -0
- package/styles/index.css +1 -1
- package/types/components/Upload/Upload.d.ts +9 -0
- package/types/components/Upload/Upload.type.d.ts +4 -0
- package/types/components/Upload/UploadDragger.vue.d.ts +9 -0
- package/types/components/Upload/Uploader.vue.d.ts +18 -0
- package/types/components/Upload/index.d.ts +15 -0
- package/uxd-ui.css +1 -1
- package/uxd-ui.esm.min.mjs +3 -3
- package/uxd-ui.esm.mjs +23 -5
- package/uxd-ui.umd.js +23 -5
- 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
|
-
}, ["
|
|
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,
|
|
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: {
|
|
@@ -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":";;;
|
|
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":";;;;;;AAgCA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA;AACF,EACA,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,MAAc,CAAC,QAAQ,WAAW,cAAc,EAAE,SAAS,CAAC;AAAA;AAC1E,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,OAAO;AAAC;AACnB,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,OAAO;AAAC;AACnB,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR,IACA,OAAO;AAAA,MACL,MAAM;AAAA;AACR,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,cAAc;AAAA,MACZ,MAAM;AAAA;AACR,IACA,eAAe;AAAA,MACb,MAAM;AAAA;AACR;AACF,EACA,MAAM,OAAO;UACL,OAAO,IAAgD,EAAE;UACzD,UAAU,IAAgB,IAAI;UAE9B,EAAE,aAAa,eAAe,gBAAgB,aAAa,iBAAiB,OAAsB,iBAAiB,EAAmB;UAEtI,OAAO,CAAC,YAAiB;YACvB,EAAE,QAAQ;UACZ,CAAC,MAAM,QAAQ;;;YAGb,SAAS;AAAA,QACb,SAAS,MAAM;AAAA,QACf,iBAAiB,MAAM;AAAA,QACvB,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,UAAU,MAAM;AAAA,QAChB,QAAQ,MAAM;AAAA,QACd,YAAY,CAAC,MAAsB;yBAClB,GAAG,OAAO;AAAA;AAC3B,QACA,WAAW,CAAC,QAAa;wBACT,KAAK,OAAO;iBACnB,KAAK,MAAM;AAAA;AACpB,QACA,SAAS,CAAC,QAAqB;sBACjB,KAAK,OAAO;iBACjB,KAAK,MAAM;AAAA;AACpB;YAEI,UAAUA,UAAkB,MAAM;YAClC,MAAM,QAAQ,MAAM;kBACd,OAAO;WACd,MAAM,OAAO;UACd,eAAe,SAAS;YACtB,KAAK,OAAO,WAAW,OAAO,OAAO;AAAA;AAC3C;UAGIC,WAAS,CAAC,SAAkB,SAAS,UAAU;UAC/C,QAAQ,OAAO;gBACT,MAAM,QAAQ;AAAA;UAEpB,CAAC,MAAM,cAAc;eAChB,KAAK,OAAO;AAAA;YAEf,SAAS,MAAM,aAAa,SAAS,MAAM;UAC7C,kBAAkB,SAAS;eAE1B,KAAK,CAAC,kBAAkB;gBACjB,oBAAoB,OAAO,UAAU,SAAS,KAAK,aAAa;cAClE,sBAAsB,mBAAmB,sBAAsB,iBAAiB;iBAC7E,aAAa;AAAA,iBACb;iBACA,OAAO;AAAA;AACd,SACD,EACA,MAAM,CAAC,MAAM;sBACA,GAAG,OAAO;AAAA,SACvB;AAAA,iBACM,WAAW,OAAO;aACtB,OAAO;AAAA;AACd;UAGI,QAAQ,CAAC,SAAmB;
|
|
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
|
-
}, ["
|
|
526
|
+
}, ["stop"])),
|
|
526
527
|
onClick: _cache[1] || (_cache[1] = (...args) => _ctx.onClearSelection && _ctx.onClearSelection(...args))
|
|
527
528
|
}, [
|
|
528
529
|
vue.createVNode(_component_UIcon, null, {
|