element-ps 1.0.16 → 1.0.17
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/dist/index.full.js +13 -13
- package/dist/index.full.min.js +1 -1
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +1 -1
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +13 -13
- package/es/components/select-v2/index.d.ts +6 -6
- package/es/components/select-v2/src/defaults.d.ts +1 -1
- package/es/components/select-v2/src/select.vue.d.ts +3 -3
- package/es/index.mjs +11 -11
- package/es/packages/components/affix/index.mjs +2 -2
- package/es/packages/components/affix/src/affix.mjs +22 -5
- package/es/packages/components/affix/src/affix.mjs.map +1 -1
- package/es/packages/components/affix/src/affix.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/affix/src/affix2.mjs +5 -22
- package/es/packages/components/affix/src/affix2.mjs.map +1 -1
- package/es/packages/components/alert/index.mjs +2 -2
- package/es/packages/components/alert/src/alert.mjs +5 -34
- package/es/packages/components/alert/src/alert.mjs.map +1 -1
- package/es/packages/components/alert/src/alert.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/alert/src/alert2.mjs +34 -5
- package/es/packages/components/alert/src/alert2.mjs.map +1 -1
- package/es/packages/components/avatar/index.mjs +2 -2
- package/es/packages/components/avatar/src/avatar.mjs +29 -5
- package/es/packages/components/avatar/src/avatar.mjs.map +1 -1
- package/es/packages/components/avatar/src/avatar.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/avatar/src/avatar2.mjs +5 -29
- package/es/packages/components/avatar/src/avatar2.mjs.map +1 -1
- package/es/packages/components/backtop/index.mjs +2 -2
- package/es/packages/components/backtop/src/backtop.mjs +19 -5
- package/es/packages/components/backtop/src/backtop.mjs.map +1 -1
- package/es/packages/components/backtop/src/backtop.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/backtop/src/backtop2.mjs +5 -19
- package/es/packages/components/backtop/src/backtop2.mjs.map +1 -1
- package/es/packages/components/breadcrumb/index.mjs +2 -2
- package/es/packages/components/breadcrumb/src/breadcrumb.mjs +5 -13
- package/es/packages/components/breadcrumb/src/breadcrumb.mjs.map +1 -1
- package/es/packages/components/breadcrumb/src/breadcrumb.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/breadcrumb/src/breadcrumb2.mjs +13 -5
- package/es/packages/components/breadcrumb/src/breadcrumb2.mjs.map +1 -1
- package/es/packages/components/button/index.mjs +1 -1
- package/es/packages/components/button/src/button-group.mjs +7 -5
- package/es/packages/components/button/src/button-group.mjs.map +1 -1
- package/es/packages/components/button/src/button-group.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/button/src/button-group2.mjs +5 -7
- package/es/packages/components/button/src/button-group2.mjs.map +1 -1
- package/es/packages/components/empty/index.mjs +2 -2
- package/es/packages/components/empty/src/empty.mjs +12 -5
- package/es/packages/components/empty/src/empty.mjs.map +1 -1
- package/es/packages/components/empty/src/empty.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/empty/src/empty2.mjs +5 -12
- package/es/packages/components/empty/src/empty2.mjs.map +1 -1
- package/es/packages/components/icon/index.mjs +2 -2
- package/es/packages/components/icon/src/icon.mjs +11 -5
- package/es/packages/components/icon/src/icon.mjs.map +1 -1
- package/es/packages/components/icon/src/icon.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/icon/src/icon2.mjs +5 -11
- package/es/packages/components/icon/src/icon2.mjs.map +1 -1
- package/es/packages/components/image-viewer/index.mjs +2 -2
- package/es/packages/components/image-viewer/src/image-viewer.mjs +25 -5
- package/es/packages/components/image-viewer/src/image-viewer.mjs.map +1 -1
- package/es/packages/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/image-viewer/src/image-viewer2.mjs +5 -25
- package/es/packages/components/image-viewer/src/image-viewer2.mjs.map +1 -1
- package/es/packages/components/index.mjs +11 -11
- package/es/packages/components/input-number/index.mjs +2 -2
- package/es/packages/components/input-number/src/input-number.mjs +49 -5
- package/es/packages/components/input-number/src/input-number.mjs.map +1 -1
- package/es/packages/components/input-number/src/input-number.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/input-number/src/input-number2.mjs +5 -49
- package/es/packages/components/input-number/src/input-number2.mjs.map +1 -1
- package/es/packages/components/link/index.mjs +2 -2
- package/es/packages/components/link/src/link.mjs +20 -5
- package/es/packages/components/link/src/link.mjs.map +1 -1
- package/es/packages/components/link/src/link.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/link/src/link2.mjs +5 -20
- package/es/packages/components/link/src/link2.mjs.map +1 -1
- package/es/packages/components/menu/index.mjs +2 -2
- package/es/packages/components/menu/src/menu-item-group.mjs +4 -5
- package/es/packages/components/menu/src/menu-item-group.mjs.map +1 -1
- package/es/packages/components/menu/src/menu-item-group.vue_vue&type=script&lang.mjs +1 -1
- package/es/packages/components/menu/src/menu-item-group2.mjs +5 -4
- package/es/packages/components/menu/src/menu-item-group2.mjs.map +1 -1
- package/es/packages/components/select-v2/src/defaults.mjs +1 -1
- package/es/packages/components/select-v2/src/defaults.mjs.map +1 -1
- package/es/packages/components/select-v2/src/select.vue_vue&type=script&lang.mjs.map +1 -1
- package/es/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.mjs +4 -4
- package/es/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.mjs.map +1 -1
- package/es/packages/components/select-v2/src/useSelect.mjs +8 -8
- package/es/packages/components/select-v2/src/useSelect.mjs.map +1 -1
- package/lib/components/select-v2/index.d.ts +6 -6
- package/lib/components/select-v2/src/defaults.d.ts +1 -1
- package/lib/components/select-v2/src/select.vue.d.ts +3 -3
- package/lib/index.js +11 -11
- package/lib/packages/components/affix/index.js +2 -2
- package/lib/packages/components/affix/src/affix.js +21 -5
- package/lib/packages/components/affix/src/affix.js.map +1 -1
- package/lib/packages/components/affix/src/affix.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/affix/src/affix2.js +5 -21
- package/lib/packages/components/affix/src/affix2.js.map +1 -1
- package/lib/packages/components/alert/index.js +2 -2
- package/lib/packages/components/alert/src/alert.js +5 -33
- package/lib/packages/components/alert/src/alert.js.map +1 -1
- package/lib/packages/components/alert/src/alert.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/alert/src/alert2.js +33 -5
- package/lib/packages/components/alert/src/alert2.js.map +1 -1
- package/lib/packages/components/avatar/index.js +2 -2
- package/lib/packages/components/avatar/src/avatar.js +28 -5
- package/lib/packages/components/avatar/src/avatar.js.map +1 -1
- package/lib/packages/components/avatar/src/avatar.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/avatar/src/avatar2.js +5 -28
- package/lib/packages/components/avatar/src/avatar2.js.map +1 -1
- package/lib/packages/components/backtop/index.js +2 -2
- package/lib/packages/components/backtop/src/backtop.js +19 -6
- package/lib/packages/components/backtop/src/backtop.js.map +1 -1
- package/lib/packages/components/backtop/src/backtop.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/backtop/src/backtop2.js +6 -19
- package/lib/packages/components/backtop/src/backtop2.js.map +1 -1
- package/lib/packages/components/breadcrumb/index.js +2 -2
- package/lib/packages/components/breadcrumb/src/breadcrumb.js +5 -12
- package/lib/packages/components/breadcrumb/src/breadcrumb.js.map +1 -1
- package/lib/packages/components/breadcrumb/src/breadcrumb.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/breadcrumb/src/breadcrumb2.js +12 -5
- package/lib/packages/components/breadcrumb/src/breadcrumb2.js.map +1 -1
- package/lib/packages/components/button/index.js +1 -1
- package/lib/packages/components/button/src/button-group.js +6 -5
- package/lib/packages/components/button/src/button-group.js.map +1 -1
- package/lib/packages/components/button/src/button-group.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/button/src/button-group2.js +5 -6
- package/lib/packages/components/button/src/button-group2.js.map +1 -1
- package/lib/packages/components/empty/index.js +2 -2
- package/lib/packages/components/empty/src/empty.js +12 -6
- package/lib/packages/components/empty/src/empty.js.map +1 -1
- package/lib/packages/components/empty/src/empty.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/empty/src/empty2.js +6 -12
- package/lib/packages/components/empty/src/empty2.js.map +1 -1
- package/lib/packages/components/icon/index.js +2 -2
- package/lib/packages/components/icon/src/icon.js +10 -5
- package/lib/packages/components/icon/src/icon.js.map +1 -1
- package/lib/packages/components/icon/src/icon.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/icon/src/icon2.js +5 -10
- package/lib/packages/components/icon/src/icon2.js.map +1 -1
- package/lib/packages/components/image-viewer/index.js +2 -2
- package/lib/packages/components/image-viewer/src/image-viewer.js +24 -5
- package/lib/packages/components/image-viewer/src/image-viewer.js.map +1 -1
- package/lib/packages/components/image-viewer/src/image-viewer.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/image-viewer/src/image-viewer2.js +5 -24
- package/lib/packages/components/image-viewer/src/image-viewer2.js.map +1 -1
- package/lib/packages/components/index.js +11 -11
- package/lib/packages/components/input-number/index.js +2 -2
- package/lib/packages/components/input-number/src/input-number.js +48 -5
- package/lib/packages/components/input-number/src/input-number.js.map +1 -1
- package/lib/packages/components/input-number/src/input-number.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/input-number/src/input-number2.js +5 -48
- package/lib/packages/components/input-number/src/input-number2.js.map +1 -1
- package/lib/packages/components/link/index.js +2 -2
- package/lib/packages/components/link/src/link.js +19 -5
- package/lib/packages/components/link/src/link.js.map +1 -1
- package/lib/packages/components/link/src/link.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/link/src/link2.js +5 -19
- package/lib/packages/components/link/src/link2.js.map +1 -1
- package/lib/packages/components/menu/index.js +2 -2
- package/lib/packages/components/menu/src/menu-item-group.js +4 -6
- package/lib/packages/components/menu/src/menu-item-group.js.map +1 -1
- package/lib/packages/components/menu/src/menu-item-group.vue_vue&type=script&lang.js +1 -1
- package/lib/packages/components/menu/src/menu-item-group2.js +6 -4
- package/lib/packages/components/menu/src/menu-item-group2.js.map +1 -1
- package/lib/packages/components/select-v2/src/defaults.js +1 -1
- package/lib/packages/components/select-v2/src/defaults.js.map +1 -1
- package/lib/packages/components/select-v2/src/select.vue_vue&type=script&lang.js.map +1 -1
- package/lib/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js +4 -4
- package/lib/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js.map +1 -1
- package/lib/packages/components/select-v2/src/useSelect.js +8 -8
- package/lib/packages/components/select-v2/src/useSelect.js.map +1 -1
- package/package.json +1 -1
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.vue_vue&type=script&lang.js","sources":["../../../../../../../packages/components/select-v2/src/select.vue"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n :class=\"[selectSize ? 'el-select-v2--' + selectSize : '']\"\n class=\"el-select-v2\"\n >\n <div\n ref=\"selectionRef\"\n class=\"el-select-v2__wrapper\"\n :class=\"{\n 'is-focused': states.isComposing,\n 'is-hovering': states.comboBoxHovering,\n 'is-filterable': filterable,\n 'is-disabled': disabled,\n }\"\n >\n <div v-if=\"$slots.prefix\">\n <slot name=\"prefix\"></slot>\n </div>\n <div v-if=\"multiple\" class=\"el-select-v2__selection\">\n <template v-if=\"collapseTags &&
|
|
1
|
+
{"version":3,"file":"select.vue_vue&type=script&lang.js","sources":["../../../../../../../packages/components/select-v2/src/select.vue"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n :class=\"[selectSize ? 'el-select-v2--' + selectSize : '']\"\n class=\"el-select-v2\"\n >\n <div\n ref=\"selectionRef\"\n class=\"el-select-v2__wrapper\"\n :class=\"{\n 'is-focused': states.isComposing,\n 'is-hovering': states.comboBoxHovering,\n 'is-filterable': filterable,\n 'is-disabled': disabled,\n }\"\n >\n <div v-if=\"$slots.prefix\">\n <slot name=\"prefix\"></slot>\n </div>\n <div v-if=\"multiple\" class=\"el-select-v2__selection\">\n <template v-if=\"collapseTags && _modelValue.length > 0\">\n <div class=\"el-select-v2__selected-item\">\n <ps-tag\n :closable=\"!selectDisabled && !states.cachedOptions[0]?.disable\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ states.cachedOptions[0].label }}</span\n >\n </ps-tag>\n <ps-tag\n v-if=\"_modelValue.length > 1\"\n :closable=\"false\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >+ {{ _modelValue.length - 1 }}</span\n >\n </ps-tag>\n </div>\n </template>\n\n <template v-else>\n <div\n v-for=\"(selected, idx) in states.cachedOptions\"\n :key=\"idx\"\n class=\"el-select-v2__selected-item\"\n >\n <ps-tag\n :key=\"getValueKey(selected)\"\n :closable=\"!selectDisabled && !selected.disabled\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ getLabel(selected) }}</span\n >\n </ps-tag>\n </div>\n </template>\n <div\n class=\"el-select-v2__selected-item el-select-v2__input-wrapper\"\n :style=\"inputWrapperStyle\"\n >\n <input\n :id=\"id\"\n ref=\"inputRef\"\n :autocomplete=\"autocomplete\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n autocapitalize=\"off\"\n :aria-expanded=\"expanded\"\n :aria-labelledby=\"label\"\n class=\"el-select-v2__combobox-input\"\n :class=\"[selectSize ? `is-${selectSize}` : '']\"\n :disabled=\"disabled\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :name=\"name\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n >\n </span>\n </div>\n </div>\n <template v-else>\n <div class=\"el-select-v2__selected-item el-select-v2__input-wrapper\">\n <input\n :id=\"id\"\n ref=\"inputRef\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n :aria-labelledby=\"label\"\n :aria-expanded=\"expanded\"\n autocapitalize=\"off\"\n :autocomplete=\"autocomplete\"\n class=\"el-select-v2__combobox-input\"\n :disabled=\"disabled\"\n :name=\"name\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n </div>\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__selected-item el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n ></span>\n </template>\n <span\n v-if=\"shouldShowPlaceholder\"\n :class=\"{\n 'el-select-v2__placeholder': true,\n 'is-transparent':\n states.isComposing ||\n (placeholder && multiple ? _modelValue.length === 0 : !_modelValue),\n }\"\n >{{ currentPlaceholder }}</span\n >\n <span class=\"el-select-v2__suffix\">\n <ps-icon\n v-if=\"iconComponent\"\n v-show=\"!showClearBtn\"\n :class=\"['el-select-v2__caret', 'el-input__icon', iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </ps-icon>\n <ps-icon\n v-if=\"showClearBtn && clearIcon\"\n class=\"el-select-v2__caret el-input__icon\"\n >\n <component :is=\"clearIcon\" />\n </ps-icon>\n </span>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, toRefs, reactive } from 'vue'\nimport PsTag from '@element-ps/components/tag'\nimport useSelect from './useSelect'\nimport { selectV2InjectionKey } from './token'\nimport { SelectProps } from './defaults'\nimport PsIcon from '@element-ps/components/icon'\n\nexport default defineComponent({\n name: 'PsSelectV2',\n components: {\n PsTag,\n PsIcon\n },\n props: SelectProps,\n setup(props, { emit }) {\n const API = useSelect(props, emit)\n provide(selectV2InjectionKey, {\n props: reactive({\n ...toRefs(props),\n }),\n } as any)\n\n return API\n },\n})\n</script>\n"],"names":["defineComponent","PsTag","PsIcon","SelectProps","useSelect","selectV2InjectionKey","reactive","toRefs"],"mappings":";;;;;;;;;;;AAgLA,aAAeA,oBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,WACVC;AAAA,YACAC;AAAA;AAAA,EAEF,OAAOC;AAAA,EACP,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,MAAMC,qBAAU,OAAO;AAC7B,gBAAQC,4BAAsB;AAAA,MAC5B,OAAOC,aAAS;AAAA,WACXC,WAAO;AAAA;AAAA;AAId,WAAO;AAAA;AAAA;;;;"}
|
package/lib/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js
CHANGED
|
@@ -40,7 +40,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
40
40
|
vue.renderSlot(_ctx.$slots, "prefix")
|
|
41
41
|
])) : vue.createCommentVNode("v-if", true),
|
|
42
42
|
_ctx.multiple ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
|
|
43
|
-
_ctx.collapseTags && _ctx.
|
|
43
|
+
_ctx.collapseTags && _ctx._modelValue.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3, [
|
|
44
44
|
vue.createVNode(_component_ps_tag, {
|
|
45
45
|
closable: !_ctx.selectDisabled && !((_a = _ctx.states.cachedOptions[0]) == null ? void 0 : _a.disable),
|
|
46
46
|
size: _ctx.collapseTagSize,
|
|
@@ -57,7 +57,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
57
57
|
]),
|
|
58
58
|
_: 1
|
|
59
59
|
}, 8, ["closable", "size"]),
|
|
60
|
-
_ctx.
|
|
60
|
+
_ctx._modelValue.length > 1 ? (vue.openBlock(), vue.createBlock(_component_ps_tag, {
|
|
61
61
|
key: 0,
|
|
62
62
|
closable: false,
|
|
63
63
|
size: _ctx.collapseTagSize,
|
|
@@ -70,7 +70,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
70
70
|
style: vue.normalizeStyle({
|
|
71
71
|
maxWidth: `${_ctx.tagMaxWidth}px`
|
|
72
72
|
})
|
|
73
|
-
}, "+ " + vue.toDisplayString(_ctx.
|
|
73
|
+
}, "+ " + vue.toDisplayString(_ctx._modelValue.length - 1), 5)
|
|
74
74
|
]),
|
|
75
75
|
_: 1
|
|
76
76
|
}, 8, ["size"])) : vue.createCommentVNode("v-if", true)
|
|
@@ -161,7 +161,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
161
161
|
key: 3,
|
|
162
162
|
class: vue.normalizeClass({
|
|
163
163
|
"el-select-v2__placeholder": true,
|
|
164
|
-
"is-transparent": _ctx.states.isComposing || (_ctx.placeholder && _ctx.multiple ? _ctx.
|
|
164
|
+
"is-transparent": _ctx.states.isComposing || (_ctx.placeholder && _ctx.multiple ? _ctx._modelValue.length === 0 : !_ctx._modelValue)
|
|
165
165
|
})
|
|
166
166
|
}, vue.toDisplayString(_ctx.currentPlaceholder), 3)) : vue.createCommentVNode("v-if", true),
|
|
167
167
|
vue.createElementVNode("span", _hoisted_9, [
|
package/lib/packages/components/select-v2/src/select.vue_vue&type=template&id=13e598a4&lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.vue_vue&type=template&id=13e598a4&lang.js","sources":["../../../../../../../packages/components/select-v2/src/select.vue?vue&type=template&id=13e598a4&lang.js"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n :class=\"[selectSize ? 'el-select-v2--' + selectSize : '']\"\n class=\"el-select-v2\"\n >\n <div\n ref=\"selectionRef\"\n class=\"el-select-v2__wrapper\"\n :class=\"{\n 'is-focused': states.isComposing,\n 'is-hovering': states.comboBoxHovering,\n 'is-filterable': filterable,\n 'is-disabled': disabled,\n }\"\n >\n <div v-if=\"$slots.prefix\">\n <slot name=\"prefix\"></slot>\n </div>\n <div v-if=\"multiple\" class=\"el-select-v2__selection\">\n <template v-if=\"collapseTags &&
|
|
1
|
+
{"version":3,"file":"select.vue_vue&type=template&id=13e598a4&lang.js","sources":["../../../../../../../packages/components/select-v2/src/select.vue?vue&type=template&id=13e598a4&lang.js"],"sourcesContent":["<template>\n <div\n ref=\"selectRef\"\n :class=\"[selectSize ? 'el-select-v2--' + selectSize : '']\"\n class=\"el-select-v2\"\n >\n <div\n ref=\"selectionRef\"\n class=\"el-select-v2__wrapper\"\n :class=\"{\n 'is-focused': states.isComposing,\n 'is-hovering': states.comboBoxHovering,\n 'is-filterable': filterable,\n 'is-disabled': disabled,\n }\"\n >\n <div v-if=\"$slots.prefix\">\n <slot name=\"prefix\"></slot>\n </div>\n <div v-if=\"multiple\" class=\"el-select-v2__selection\">\n <template v-if=\"collapseTags && _modelValue.length > 0\">\n <div class=\"el-select-v2__selected-item\">\n <ps-tag\n :closable=\"!selectDisabled && !states.cachedOptions[0]?.disable\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ states.cachedOptions[0].label }}</span\n >\n </ps-tag>\n <ps-tag\n v-if=\"_modelValue.length > 1\"\n :closable=\"false\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >+ {{ _modelValue.length - 1 }}</span\n >\n </ps-tag>\n </div>\n </template>\n\n <template v-else>\n <div\n v-for=\"(selected, idx) in states.cachedOptions\"\n :key=\"idx\"\n class=\"el-select-v2__selected-item\"\n >\n <ps-tag\n :key=\"getValueKey(selected)\"\n :closable=\"!selectDisabled && !selected.disabled\"\n :size=\"collapseTagSize\"\n type=\"info\"\n disable-transitions\n >\n <span\n class=\"el-select-v2__tags-text\"\n :style=\"{\n maxWidth: `${tagMaxWidth}px`,\n }\"\n >{{ getLabel(selected) }}</span\n >\n </ps-tag>\n </div>\n </template>\n <div\n class=\"el-select-v2__selected-item el-select-v2__input-wrapper\"\n :style=\"inputWrapperStyle\"\n >\n <input\n :id=\"id\"\n ref=\"inputRef\"\n :autocomplete=\"autocomplete\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n autocapitalize=\"off\"\n :aria-expanded=\"expanded\"\n :aria-labelledby=\"label\"\n class=\"el-select-v2__combobox-input\"\n :class=\"[selectSize ? `is-${selectSize}` : '']\"\n :disabled=\"disabled\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :name=\"name\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n >\n </span>\n </div>\n </div>\n <template v-else>\n <div class=\"el-select-v2__selected-item el-select-v2__input-wrapper\">\n <input\n :id=\"id\"\n ref=\"inputRef\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n :aria-labelledby=\"label\"\n :aria-expanded=\"expanded\"\n autocapitalize=\"off\"\n :autocomplete=\"autocomplete\"\n class=\"el-select-v2__combobox-input\"\n :disabled=\"disabled\"\n :name=\"name\"\n role=\"combobox\"\n :readonly=\"!filterable\"\n spellcheck=\"false\"\n type=\"text\"\n :unselectable=\"expanded ? 'on' : undefined\"\n />\n </div>\n <span\n v-if=\"filterable\"\n ref=\"calculatorRef\"\n aria-hidden=\"true\"\n class=\"el-select-v2__selected-item el-select-v2__input-calculator\"\n v-text=\"states.displayInputValue\"\n ></span>\n </template>\n <span\n v-if=\"shouldShowPlaceholder\"\n :class=\"{\n 'el-select-v2__placeholder': true,\n 'is-transparent':\n states.isComposing ||\n (placeholder && multiple ? _modelValue.length === 0 : !_modelValue),\n }\"\n >{{ currentPlaceholder }}</span\n >\n <span class=\"el-select-v2__suffix\">\n <ps-icon\n v-if=\"iconComponent\"\n v-show=\"!showClearBtn\"\n :class=\"['el-select-v2__caret', 'el-input__icon', iconReverse]\"\n >\n <component :is=\"iconComponent\" />\n </ps-icon>\n <ps-icon\n v-if=\"showClearBtn && clearIcon\"\n class=\"el-select-v2__caret el-input__icon\"\n >\n <component :is=\"clearIcon\" />\n </ps-icon>\n </span>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, provide, toRefs, reactive } from 'vue'\nimport PsTag from '@element-ps/components/tag'\nimport useSelect from './useSelect'\nimport { selectV2InjectionKey } from './token'\nimport { SelectProps } from './defaults'\nimport PsIcon from '@element-ps/components/icon'\n\nexport default defineComponent({\n name: 'PsSelectV2',\n components: {\n PsTag,\n PsIcon\n },\n props: SelectProps,\n setup(props, { emit }) {\n const API = useSelect(props, emit)\n provide(selectV2InjectionKey, {\n props: reactive({\n ...toRefs(props),\n }),\n } as any)\n\n return API\n },\n})\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_renderSlot","_createVNode","_createBlock","_toDisplayString"],"mappings":";;;;;;;;;EAmB2B,OAAM;AAAA;;;EAElB,OAAM;AAAA;;;qBA0FR,OAAM;;;qBAsCP,OAAM;;;;;0BApJhBA;IACE,KAAI;AAAA,IACH,4BAAQ,qCAAgC,uBACnC;AAAA;IAENC;MACE,KAAI;AAAA,MACJ,2BAAM;;;;;;;MAQK,YAAO,2BAAlBD;QACEE;;MAES,kCAAXF,8BAAA;QACkB,qBAAgB,iBAAY,+BAC1CA,8BAAA;UACEG;YACG,WAAW,2CAA0B,qBAAP,mBAAyB;AAAA,YACvD,MAAM;YACP,MAAK;AAAA,YACL,uBAAA;AAAA;iCAEA;cAAAF;gBACE,OAAM;AAAA,gBACL;;;qCAGG,YAAO,iBAAiB;;;;UAIxB,iBAAY,+BADpBG;;YAEG,UAAU;AAAA,YACV,MAAM;YACP,MAAK;AAAA,YACL,uBAAA;AAAA;iCAEA;cAAAH;gBACE,OAAM;AAAA,gBACL;;;iBAGA,2BAAK,iBAAY;;;;oCAOxBD,gEAC4B,YAAO,gBAAzB,UAAU;kCADpBA;YAEG,KAAK;AAAA,YACN,OAAM;AAAA;YAENG;cACG,KAAK,iBAAY;AAAA,cACjB,WAAW,wBAAmB,SAAS;AAAA,cACvC,MAAM;cACP,MAAK;AAAA,cACL,uBAAA;AAAA;mCAEA;gBAAAF;kBACE,OAAM;AAAA,kBACL;;;uCAGG,cAAS;;;;;;QAKrBA;UACE,OAAM;AAAA,UACL,0BAAO;;UAERA;YACG,IAAI;YACL,KAAI;AAAA,YACH,cAAc;YACf,qBAAkB;AAAA,YAClB,iBAAc;AAAA,YACd,gBAAe;AAAA,YACd,iBAAe;YACf,mBAAiB;YAClB,2BAAM,iCACG,wBAAmB;YAC3B,UAAU;YACX,MAAK;AAAA,YACJ,WAAW;YACZ,YAAW;AAAA,YACX,MAAK;AAAA,YACJ,MAAM;YACN,cAAc,uBAAkB;AAAA;UAG3B,oCADRD;;YAEE,KAAI;AAAA,YACJ,eAAY;AAAA,YACZ,OAAM;AAAA,yBACNK,gCAAe;AAAA;;8BAKrBL;QACEC,8BAAA;UACEA;YACG,IAAI;YACL,KAAI;AAAA,YACJ,qBAAkB;AAAA,YAClB,iBAAc;AAAA,YACb,mBAAiB;YACjB,iBAAe;YAChB,gBAAe;AAAA,YACd,cAAc;YACf,OAAM;AAAA,YACL,UAAU;YACV,MAAM;YACP,MAAK;AAAA,YACJ,WAAW;YACZ,YAAW;AAAA,YACX,MAAK;AAAA,YACJ,cAAc,uBAAkB;AAAA;;QAI7B,oCADRD;;UAEE,KAAI;AAAA,UACJ,eAAY;AAAA,UACZ,OAAM;AAAA,uBACNK,gCAAe;AAAA;;MAIX,+CADRL;;QAEG;;;;6BAMG;MAENC,+BAAA;QAEU,0DADRG;;UAGG,oEAAiD;;+BAElD;8BAAAA,4CAAgB;;;;uBAHP;;QAMH,qBAAgB,mCADxBA;;UAEE,OAAM;AAAA;+BAEN;8BAAAA,4CAAgB;;;;;;;;;;;"}
|
|
@@ -55,7 +55,7 @@ const useSelect = (props) => {
|
|
|
55
55
|
const expanded = vue.ref(false);
|
|
56
56
|
const selectDisabled = vue.computed(() => props.disabled || elForm.disabled);
|
|
57
57
|
const showClearBtn = vue.computed(() => {
|
|
58
|
-
const hasValue = props.multiple ? Array.isArray(props.
|
|
58
|
+
const hasValue = props.multiple ? Array.isArray(props._modelValue) && props._modelValue.length > 0 : props._modelValue !== void 0 && props._modelValue !== null && props._modelValue !== "";
|
|
59
59
|
const criteria = props.clearable && !selectDisabled.value && states.comboBoxHovering && hasValue;
|
|
60
60
|
return criteria;
|
|
61
61
|
});
|
|
@@ -102,8 +102,8 @@ const useSelect = (props) => {
|
|
|
102
102
|
};
|
|
103
103
|
});
|
|
104
104
|
const shouldShowPlaceholder = vue.computed(() => {
|
|
105
|
-
if (shared.isArray(props.
|
|
106
|
-
return props.
|
|
105
|
+
if (shared.isArray(props._modelValue)) {
|
|
106
|
+
return props._modelValue.length === 0 && !states.displayInputValue;
|
|
107
107
|
}
|
|
108
108
|
return props.filterable ? states.displayInputValue.length === 0 : true;
|
|
109
109
|
});
|
|
@@ -113,10 +113,10 @@ const useSelect = (props) => {
|
|
|
113
113
|
});
|
|
114
114
|
const initStates = () => {
|
|
115
115
|
if (props.multiple) {
|
|
116
|
-
if (props.
|
|
116
|
+
if (props._modelValue.length > 0) {
|
|
117
117
|
let initHovering = false;
|
|
118
118
|
states.cachedOptions.length = 0;
|
|
119
|
-
props.
|
|
119
|
+
props._modelValue.map((selected) => {
|
|
120
120
|
const itemIndex = filteredOptions.value.findIndex((option) => option.value === selected);
|
|
121
121
|
if (~itemIndex) {
|
|
122
122
|
states.cachedOptions.push(filteredOptions.value[itemIndex]);
|
|
@@ -127,13 +127,13 @@ const useSelect = (props) => {
|
|
|
127
127
|
states.cachedOptions = [];
|
|
128
128
|
}
|
|
129
129
|
} else {
|
|
130
|
-
if (props.
|
|
130
|
+
if (props._modelValue) {
|
|
131
131
|
const options = filteredOptions.value;
|
|
132
|
-
const selectedItemIndex = options.findIndex((o) => o.value === props.
|
|
132
|
+
const selectedItemIndex = options.findIndex((o) => o.value === props._modelValue);
|
|
133
133
|
if (~selectedItemIndex) {
|
|
134
134
|
states.selectedLabel = options[selectedItemIndex].label;
|
|
135
135
|
} else {
|
|
136
|
-
states.selectedLabel = `${props.
|
|
136
|
+
states.selectedLabel = `${props._modelValue}`;
|
|
137
137
|
}
|
|
138
138
|
} else {
|
|
139
139
|
states.selectedLabel = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.js","sources":["../../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import { computed, ref, reactive, inject, onMounted } from 'vue'\nimport { isArray } from '@vue/shared'\nimport { ArrowUp } from '@element-plus/icons'\nimport { elFormKey, elFormItemKey } from '@element-ps/tokens'\nimport { useLocaleInject } from '@element-ps/hooks'\nimport { useGlobalConfig } from '@element-ps/utils/util'\nimport { flattenOptions } from './util'\nimport type { SelectProps } from './defaults'\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-ps/tokens'\nimport type { OptionType, Option } from './select.types'\n\nconst DEFAULT_INPUT_PLACEHOLDER = ''\nconst MINIMUM_INPUT_WIDTH = 11\nconst TAG_BASE_WIDTH = {\n small: 42,\n mini: 33,\n}\n\nconst useSelect = (props: ExtractPropTypes<typeof SelectProps>) => {\n // inject\n const { t } = useLocaleInject()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const $ELEMENT = useGlobalConfig()\n\n const states = reactive({\n inputValue: DEFAULT_INPUT_PLACEHOLDER,\n displayInputValue: DEFAULT_INPUT_PLACEHOLDER,\n calculatedWidth: 0,\n cachedPlaceholder: '',\n cachedOptions: [] as Option[],\n createdOptions: [] as Option[],\n createdLabel: '',\n createdSelected: false,\n currentPlaceholder: '',\n hoveringIndex: -1,\n comboBoxHovering: false,\n isOnComposition: false,\n isSilentBlur: false,\n isComposing: false,\n inputLength: 20,\n selectWidth: 200,\n initialInputHeight: 0,\n previousQuery: null,\n previousValue: '',\n query: '',\n selectedLabel: '',\n softFocus: false,\n tagInMultiLine: false,\n })\n\n // DOM & Component refs\n const inputRef = ref(null) // el-input ref\n const selectRef = ref(null)\n const selectionRef = ref(null) // tags ref\n const calculatorRef = ref<HTMLElement>(null as any as HTMLElement)\n\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const selectDisabled = computed(() => props.disabled || elForm.disabled)\n\n const showClearBtn = computed(() => {\n const hasValue = props.multiple\n ? Array.isArray(props.modelValue) && props.modelValue.length > 0\n : props.modelValue !== undefined &&\n props.modelValue !== null &&\n props.modelValue !== ''\n\n const criteria =\n props.clearable &&\n !selectDisabled.value &&\n states.comboBoxHovering &&\n hasValue\n return criteria\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable ? '' : ArrowUp\n )\n\n const iconReverse = computed(() =>\n iconComponent.value && expanded.value ? 'is-reverse' : ''\n )\n\n const filteredOptions = computed(() => {\n const isValidOption = (o: Option): boolean => {\n // fill the conditions here.\n const query = states.inputValue\n // when query was given, we should test on the label see whether the label contains the given query\n const containsQueryString = query ? o.label.includes(query) : true\n return containsQueryString\n }\n if (props.loading) {\n return []\n }\n return flattenOptions(\n (props.options as OptionType[])\n .concat(states.createdOptions)\n .map((v) => {\n if (isArray(v.options)) {\n const filtered = v.options.filter(isValidOption)\n if (filtered.length > 0) {\n return {\n ...v,\n options: filtered,\n }\n }\n } else {\n if (props.remote || isValidOption(v as Option)) {\n return v\n }\n }\n return null\n })\n .filter((v) => v !== null) as any\n )\n })\n\n const selectSize = computed(\n () => props.size || elFormItem.size || $ELEMENT.size\n )\n\n const collapseTagSize = computed(() =>\n ['small', 'mini'].indexOf(selectSize.value) > -1 ? 'mini' : 'small'\n )\n\n const tagMaxWidth = computed(() => {\n const select = selectionRef.value\n const size = collapseTagSize.value\n const paddingLeft = select\n ? parseInt(getComputedStyle(select).paddingLeft)\n : 0\n const paddingRight = select\n ? parseInt(getComputedStyle(select).paddingRight)\n : 0\n return (\n states.selectWidth - paddingRight - paddingLeft - TAG_BASE_WIDTH[size]\n )\n })\n\n const inputWrapperStyle = computed(() => {\n return {\n width: `${\n states.calculatedWidth === 0\n ? MINIMUM_INPUT_WIDTH\n : Math.ceil(states.calculatedWidth) + MINIMUM_INPUT_WIDTH\n }px`,\n } as CSSProperties\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.displayInputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? states.displayInputValue.length === 0 : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder || t('el.select.placeholder')\n return props.multiple ? _placeholder : states.selectedLabel || _placeholder\n })\n\n const initStates = () => {\n if (props.multiple) {\n if ((props.modelValue as Array<any>).length > 0) {\n let initHovering = false\n states.cachedOptions.length = 0\n ;(props.modelValue as Array<any>).map((selected) => {\n const itemIndex = filteredOptions.value.findIndex(\n (option) => (option as any).value === selected\n )\n if (~itemIndex) {\n states.cachedOptions.push(\n filteredOptions.value[itemIndex] as Option\n )\n initHovering = true\n }\n })\n } else {\n states.cachedOptions = []\n }\n } else {\n if (props.modelValue) {\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (o) => (o as any).value === props.modelValue\n )\n if (~selectedItemIndex) {\n states.selectedLabel = (options[selectedItemIndex] as any).label\n } else {\n states.selectedLabel = `${props.modelValue}`\n }\n } else {\n states.selectedLabel = ''\n }\n }\n }\n\n onMounted(() => {\n initStates()\n })\n\n return {\n // data exports\n collapseTagSize,\n currentPlaceholder,\n expanded,\n iconComponent,\n iconReverse,\n inputWrapperStyle,\n // readonly,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n showClearBtn,\n states,\n tagMaxWidth,\n\n // refs items exports\n calculatorRef,\n inputRef,\n selectRef,\n selectionRef,\n }\n}\n\nexport default useSelect\n"],"names":["useLocaleInject","inject","elFormKey","elFormItemKey","useGlobalConfig","reactive","ref","computed","ArrowUp","flattenOptions","isArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSelect.js","sources":["../../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import { computed, ref, reactive, inject, onMounted } from 'vue'\nimport { isArray } from '@vue/shared'\nimport { ArrowUp } from '@element-plus/icons'\nimport { elFormKey, elFormItemKey } from '@element-ps/tokens'\nimport { useLocaleInject } from '@element-ps/hooks'\nimport { useGlobalConfig } from '@element-ps/utils/util'\nimport { flattenOptions } from './util'\nimport type { SelectProps } from './defaults'\nimport type { ExtractPropTypes, CSSProperties } from 'vue'\nimport type { ElFormContext, ElFormItemContext } from '@element-ps/tokens'\nimport type { OptionType, Option } from './select.types'\n\nconst DEFAULT_INPUT_PLACEHOLDER = ''\nconst MINIMUM_INPUT_WIDTH = 11\nconst TAG_BASE_WIDTH = {\n small: 42,\n mini: 33,\n}\n\nconst useSelect = (props: ExtractPropTypes<typeof SelectProps>) => {\n // inject\n const { t } = useLocaleInject()\n const elForm = inject(elFormKey, {} as ElFormContext)\n const elFormItem = inject(elFormItemKey, {} as ElFormItemContext)\n const $ELEMENT = useGlobalConfig()\n\n const states = reactive({\n inputValue: DEFAULT_INPUT_PLACEHOLDER,\n displayInputValue: DEFAULT_INPUT_PLACEHOLDER,\n calculatedWidth: 0,\n cachedPlaceholder: '',\n cachedOptions: [] as Option[],\n createdOptions: [] as Option[],\n createdLabel: '',\n createdSelected: false,\n currentPlaceholder: '',\n hoveringIndex: -1,\n comboBoxHovering: false,\n isOnComposition: false,\n isSilentBlur: false,\n isComposing: false,\n inputLength: 20,\n selectWidth: 200,\n initialInputHeight: 0,\n previousQuery: null,\n previousValue: '',\n query: '',\n selectedLabel: '',\n softFocus: false,\n tagInMultiLine: false,\n })\n\n // DOM & Component refs\n const inputRef = ref(null) // el-input ref\n const selectRef = ref(null)\n const selectionRef = ref(null) // tags ref\n const calculatorRef = ref<HTMLElement>(null as any as HTMLElement)\n\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const selectDisabled = computed(() => props.disabled || elForm.disabled)\n\n const showClearBtn = computed(() => {\n const hasValue = props.multiple\n ? Array.isArray(props._modelValue) && props._modelValue.length > 0\n : props._modelValue !== undefined &&\n props._modelValue !== null &&\n props._modelValue !== ''\n\n const criteria =\n props.clearable &&\n !selectDisabled.value &&\n states.comboBoxHovering &&\n hasValue\n return criteria\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable ? '' : ArrowUp\n )\n\n const iconReverse = computed(() =>\n iconComponent.value && expanded.value ? 'is-reverse' : ''\n )\n\n const filteredOptions = computed(() => {\n const isValidOption = (o: Option): boolean => {\n // fill the conditions here.\n const query = states.inputValue\n // when query was given, we should test on the label see whether the label contains the given query\n const containsQueryString = query ? o.label.includes(query) : true\n return containsQueryString\n }\n if (props.loading) {\n return []\n }\n return flattenOptions(\n (props.options as OptionType[])\n .concat(states.createdOptions)\n .map((v) => {\n if (isArray(v.options)) {\n const filtered = v.options.filter(isValidOption)\n if (filtered.length > 0) {\n return {\n ...v,\n options: filtered,\n }\n }\n } else {\n if (props.remote || isValidOption(v as Option)) {\n return v\n }\n }\n return null\n })\n .filter((v) => v !== null) as any\n )\n })\n\n const selectSize = computed(\n () => props.size || elFormItem.size || $ELEMENT.size\n )\n\n const collapseTagSize = computed(() =>\n ['small', 'mini'].indexOf(selectSize.value) > -1 ? 'mini' : 'small'\n )\n\n const tagMaxWidth = computed(() => {\n const select = selectionRef.value\n const size = collapseTagSize.value\n const paddingLeft = select\n ? parseInt(getComputedStyle(select).paddingLeft)\n : 0\n const paddingRight = select\n ? parseInt(getComputedStyle(select).paddingRight)\n : 0\n return (\n states.selectWidth - paddingRight - paddingLeft - TAG_BASE_WIDTH[size]\n )\n })\n\n const inputWrapperStyle = computed(() => {\n return {\n width: `${\n states.calculatedWidth === 0\n ? MINIMUM_INPUT_WIDTH\n : Math.ceil(states.calculatedWidth) + MINIMUM_INPUT_WIDTH\n }px`,\n } as CSSProperties\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props._modelValue)) {\n return props._modelValue.length === 0 && !states.displayInputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? states.displayInputValue.length === 0 : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder || t('el.select.placeholder')\n return props.multiple ? _placeholder : states.selectedLabel || _placeholder\n })\n\n const initStates = () => {\n if (props.multiple) {\n if ((props._modelValue as Array<any>).length > 0) {\n let initHovering = false\n states.cachedOptions.length = 0\n ;(props._modelValue as Array<any>).map((selected) => {\n const itemIndex = filteredOptions.value.findIndex(\n (option) => (option as any).value === selected\n )\n if (~itemIndex) {\n states.cachedOptions.push(\n filteredOptions.value[itemIndex] as Option\n )\n initHovering = true\n }\n })\n } else {\n states.cachedOptions = []\n }\n } else {\n if (props._modelValue) {\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (o) => (o as any).value === props._modelValue\n )\n if (~selectedItemIndex) {\n states.selectedLabel = (options[selectedItemIndex] as any).label\n } else {\n states.selectedLabel = `${props._modelValue}`\n }\n } else {\n states.selectedLabel = ''\n }\n }\n }\n\n onMounted(() => {\n initStates()\n })\n\n return {\n // data exports\n collapseTagSize,\n currentPlaceholder,\n expanded,\n iconComponent,\n iconReverse,\n inputWrapperStyle,\n // readonly,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n showClearBtn,\n states,\n tagMaxWidth,\n\n // refs items exports\n calculatorRef,\n inputRef,\n selectRef,\n selectionRef,\n }\n}\n\nexport default useSelect\n"],"names":["useLocaleInject","inject","elFormKey","elFormItemKey","useGlobalConfig","reactive","ref","computed","ArrowUp","flattenOptions","isArray"],"mappings":"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"}
|
package/package.json
CHANGED
package/web-types.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"element-ps","version":"1.0.
|
|
1
|
+
{"$schema":"https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json","framework":"vue","name":"element-ps","version":"1.0.17","contributions":{"html":{"types-syntax":"typescript","description-markup":"markdown"}}}
|