@element-plus/nightly 0.0.20220122 → 0.0.20220123
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 +29 -24
- package/dist/index.full.min.js +4 -4
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +5 -5
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +29 -24
- package/dist/locale/af.js +1 -1
- package/dist/locale/af.min.js +1 -1
- package/dist/locale/af.min.mjs +1 -1
- package/dist/locale/af.mjs +1 -1
- package/dist/locale/ar.js +1 -1
- package/dist/locale/ar.min.js +1 -1
- package/dist/locale/ar.min.mjs +1 -1
- package/dist/locale/ar.mjs +1 -1
- package/dist/locale/bg.js +1 -1
- package/dist/locale/bg.min.js +1 -1
- package/dist/locale/bg.min.mjs +1 -1
- package/dist/locale/bg.mjs +1 -1
- package/dist/locale/bn.js +1 -1
- package/dist/locale/bn.min.js +1 -1
- package/dist/locale/bn.min.mjs +1 -1
- package/dist/locale/bn.mjs +1 -1
- package/dist/locale/ca.js +1 -1
- package/dist/locale/ca.min.js +1 -1
- package/dist/locale/ca.min.mjs +1 -1
- package/dist/locale/ca.mjs +1 -1
- package/dist/locale/cs.js +1 -1
- package/dist/locale/cs.min.js +1 -1
- package/dist/locale/cs.min.mjs +1 -1
- package/dist/locale/cs.mjs +1 -1
- package/dist/locale/da.js +1 -1
- package/dist/locale/da.min.js +1 -1
- package/dist/locale/da.min.mjs +1 -1
- package/dist/locale/da.mjs +1 -1
- package/dist/locale/de.js +1 -1
- package/dist/locale/de.min.js +1 -1
- package/dist/locale/de.min.mjs +1 -1
- package/dist/locale/de.mjs +1 -1
- package/dist/locale/el.js +1 -1
- package/dist/locale/el.min.js +1 -1
- package/dist/locale/el.min.mjs +1 -1
- package/dist/locale/el.mjs +1 -1
- package/dist/locale/en.js +1 -1
- package/dist/locale/en.min.js +1 -1
- package/dist/locale/en.min.mjs +1 -1
- package/dist/locale/en.mjs +1 -1
- package/dist/locale/eo.js +1 -1
- package/dist/locale/eo.min.js +1 -1
- package/dist/locale/eo.min.mjs +1 -1
- package/dist/locale/eo.mjs +1 -1
- package/dist/locale/es.js +1 -1
- package/dist/locale/es.min.js +1 -1
- package/dist/locale/es.min.mjs +1 -1
- package/dist/locale/es.mjs +1 -1
- package/dist/locale/et.js +1 -1
- package/dist/locale/et.min.js +1 -1
- package/dist/locale/et.min.mjs +1 -1
- package/dist/locale/et.mjs +1 -1
- package/dist/locale/eu.js +1 -1
- package/dist/locale/eu.min.js +1 -1
- package/dist/locale/eu.min.mjs +1 -1
- package/dist/locale/eu.mjs +1 -1
- package/dist/locale/fa.js +1 -1
- package/dist/locale/fa.min.js +1 -1
- package/dist/locale/fa.min.mjs +1 -1
- package/dist/locale/fa.mjs +1 -1
- package/dist/locale/fi.js +1 -1
- package/dist/locale/fi.min.js +1 -1
- package/dist/locale/fi.min.mjs +1 -1
- package/dist/locale/fi.mjs +1 -1
- package/dist/locale/fr.js +1 -1
- package/dist/locale/fr.min.js +1 -1
- package/dist/locale/fr.min.mjs +1 -1
- package/dist/locale/fr.mjs +1 -1
- package/dist/locale/he.js +1 -1
- package/dist/locale/he.min.js +1 -1
- package/dist/locale/he.min.mjs +1 -1
- package/dist/locale/he.mjs +1 -1
- package/dist/locale/hr.js +1 -1
- package/dist/locale/hr.min.js +1 -1
- package/dist/locale/hr.min.mjs +1 -1
- package/dist/locale/hr.mjs +1 -1
- package/dist/locale/hu.js +1 -1
- package/dist/locale/hu.min.js +1 -1
- package/dist/locale/hu.min.mjs +1 -1
- package/dist/locale/hu.mjs +1 -1
- package/dist/locale/hy-am.js +1 -1
- package/dist/locale/hy-am.min.js +1 -1
- package/dist/locale/hy-am.min.mjs +1 -1
- package/dist/locale/hy-am.mjs +1 -1
- package/dist/locale/id.js +1 -1
- package/dist/locale/id.min.js +1 -1
- package/dist/locale/id.min.mjs +1 -1
- package/dist/locale/id.mjs +1 -1
- package/dist/locale/it.js +1 -1
- package/dist/locale/it.min.js +1 -1
- package/dist/locale/it.min.mjs +1 -1
- package/dist/locale/it.mjs +1 -1
- package/dist/locale/ja.js +1 -1
- package/dist/locale/ja.min.js +1 -1
- package/dist/locale/ja.min.mjs +1 -1
- package/dist/locale/ja.mjs +1 -1
- package/dist/locale/kk.js +1 -1
- package/dist/locale/kk.min.js +1 -1
- package/dist/locale/kk.min.mjs +1 -1
- package/dist/locale/kk.mjs +1 -1
- package/dist/locale/km.js +1 -1
- package/dist/locale/km.min.js +1 -1
- package/dist/locale/km.min.mjs +1 -1
- package/dist/locale/km.mjs +1 -1
- package/dist/locale/ko.js +1 -1
- package/dist/locale/ko.min.js +1 -1
- package/dist/locale/ko.min.mjs +1 -1
- package/dist/locale/ko.mjs +1 -1
- package/dist/locale/ku.js +1 -1
- package/dist/locale/ku.min.js +1 -1
- package/dist/locale/ku.min.mjs +1 -1
- package/dist/locale/ku.mjs +1 -1
- package/dist/locale/ky.js +1 -1
- package/dist/locale/ky.min.js +1 -1
- package/dist/locale/ky.min.mjs +1 -1
- package/dist/locale/ky.mjs +1 -1
- package/dist/locale/lt.js +1 -1
- package/dist/locale/lt.min.js +1 -1
- package/dist/locale/lt.min.mjs +1 -1
- package/dist/locale/lt.mjs +1 -1
- package/dist/locale/lv.js +1 -1
- package/dist/locale/lv.min.js +1 -1
- package/dist/locale/lv.min.mjs +1 -1
- package/dist/locale/lv.mjs +1 -1
- package/dist/locale/mn.js +1 -1
- package/dist/locale/mn.min.js +1 -1
- package/dist/locale/mn.min.mjs +1 -1
- package/dist/locale/mn.mjs +1 -1
- package/dist/locale/nb-no.js +1 -1
- package/dist/locale/nb-no.min.js +1 -1
- package/dist/locale/nb-no.min.mjs +1 -1
- package/dist/locale/nb-no.mjs +1 -1
- package/dist/locale/nl.js +1 -1
- package/dist/locale/nl.min.js +1 -1
- package/dist/locale/nl.min.mjs +1 -1
- package/dist/locale/nl.mjs +1 -1
- package/dist/locale/pa.js +1 -1
- package/dist/locale/pa.min.js +1 -1
- package/dist/locale/pa.min.mjs +1 -1
- package/dist/locale/pa.mjs +1 -1
- package/dist/locale/pl.js +1 -1
- package/dist/locale/pl.min.js +1 -1
- package/dist/locale/pl.min.mjs +1 -1
- package/dist/locale/pl.mjs +1 -1
- package/dist/locale/pt-br.js +1 -1
- package/dist/locale/pt-br.min.js +1 -1
- package/dist/locale/pt-br.min.mjs +1 -1
- package/dist/locale/pt-br.mjs +1 -1
- package/dist/locale/pt.js +1 -1
- package/dist/locale/pt.min.js +1 -1
- package/dist/locale/pt.min.mjs +1 -1
- package/dist/locale/pt.mjs +1 -1
- package/dist/locale/ro.js +1 -1
- package/dist/locale/ro.min.js +1 -1
- package/dist/locale/ro.min.mjs +1 -1
- package/dist/locale/ro.mjs +1 -1
- package/dist/locale/ru.js +1 -1
- package/dist/locale/ru.min.js +1 -1
- package/dist/locale/ru.min.mjs +1 -1
- package/dist/locale/ru.mjs +1 -1
- package/dist/locale/sk.js +1 -1
- package/dist/locale/sk.min.js +1 -1
- package/dist/locale/sk.min.mjs +1 -1
- package/dist/locale/sk.mjs +1 -1
- package/dist/locale/sl.js +1 -1
- package/dist/locale/sl.min.js +1 -1
- package/dist/locale/sl.min.mjs +1 -1
- package/dist/locale/sl.mjs +1 -1
- package/dist/locale/sr.js +1 -1
- package/dist/locale/sr.min.js +1 -1
- package/dist/locale/sr.min.mjs +1 -1
- package/dist/locale/sr.mjs +1 -1
- package/dist/locale/sv.js +1 -1
- package/dist/locale/sv.min.js +1 -1
- package/dist/locale/sv.min.mjs +1 -1
- package/dist/locale/sv.mjs +1 -1
- package/dist/locale/ta.js +1 -1
- package/dist/locale/ta.min.js +1 -1
- package/dist/locale/ta.min.mjs +1 -1
- package/dist/locale/ta.mjs +1 -1
- package/dist/locale/th.js +1 -1
- package/dist/locale/th.min.js +1 -1
- package/dist/locale/th.min.mjs +1 -1
- package/dist/locale/th.mjs +1 -1
- package/dist/locale/tk.js +1 -1
- package/dist/locale/tk.min.js +1 -1
- package/dist/locale/tk.min.mjs +1 -1
- package/dist/locale/tk.mjs +1 -1
- package/dist/locale/tr.js +1 -1
- package/dist/locale/tr.min.js +1 -1
- package/dist/locale/tr.min.mjs +1 -1
- package/dist/locale/tr.mjs +1 -1
- package/dist/locale/ug-cn.js +1 -1
- package/dist/locale/ug-cn.min.js +1 -1
- package/dist/locale/ug-cn.min.mjs +1 -1
- package/dist/locale/ug-cn.mjs +1 -1
- package/dist/locale/uk.js +1 -1
- package/dist/locale/uk.min.js +1 -1
- package/dist/locale/uk.min.mjs +1 -1
- package/dist/locale/uk.mjs +1 -1
- package/dist/locale/uz-uz.js +1 -1
- package/dist/locale/uz-uz.min.js +1 -1
- package/dist/locale/uz-uz.min.mjs +1 -1
- package/dist/locale/uz-uz.mjs +1 -1
- package/dist/locale/vi.js +1 -1
- package/dist/locale/vi.min.js +1 -1
- package/dist/locale/vi.min.mjs +1 -1
- package/dist/locale/vi.mjs +1 -1
- package/dist/locale/zh-cn.js +1 -1
- package/dist/locale/zh-cn.min.js +1 -1
- package/dist/locale/zh-cn.min.mjs +1 -1
- package/dist/locale/zh-cn.mjs +1 -1
- package/dist/locale/zh-tw.js +1 -1
- package/dist/locale/zh-tw.min.js +1 -1
- package/dist/locale/zh-tw.min.mjs +1 -1
- package/dist/locale/zh-tw.mjs +1 -1
- package/es/components/autocomplete/index.d.ts +22 -0
- package/es/components/autocomplete/src/index.mjs +15 -15
- package/es/components/autocomplete/src/index.mjs.map +1 -1
- package/es/components/autocomplete/src/index.vue.d.ts +11 -0
- package/es/components/backtop/index.d.ts +11 -0
- package/es/components/backtop/src/backtop.vue.d.ts +11 -0
- package/es/components/backtop/src/backtop2.mjs +16 -8
- package/es/components/backtop/src/backtop2.mjs.map +1 -1
- package/es/components/index.mjs +1 -1
- package/es/components/popconfirm/index.mjs +2 -2
- package/es/components/popconfirm/src/popconfirm.mjs +104 -45
- package/es/components/popconfirm/src/popconfirm.mjs.map +1 -1
- package/es/components/popconfirm/src/popconfirm2.mjs +45 -104
- package/es/components/popconfirm/src/popconfirm2.mjs.map +1 -1
- package/es/index.mjs +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/autocomplete/index.d.ts +22 -0
- package/lib/components/autocomplete/src/index.js +17 -17
- package/lib/components/autocomplete/src/index.js.map +1 -1
- package/lib/components/autocomplete/src/index.vue.d.ts +11 -0
- package/lib/components/backtop/index.d.ts +11 -0
- package/lib/components/backtop/src/backtop.vue.d.ts +11 -0
- package/lib/components/backtop/src/backtop2.js +15 -7
- package/lib/components/backtop/src/backtop2.js.map +1 -1
- package/lib/components/index.js +1 -1
- package/lib/components/popconfirm/index.js +2 -2
- package/lib/components/popconfirm/src/popconfirm.js +104 -45
- package/lib/components/popconfirm/src/popconfirm.js.map +1 -1
- package/lib/components/popconfirm/src/popconfirm2.js +45 -104
- package/lib/components/popconfirm/src/popconfirm2.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -2
- package/web-types.json +1 -1
|
@@ -13,6 +13,7 @@ import { ElIcon } from '../../icon/index.mjs';
|
|
|
13
13
|
import { Loading } from '@element-plus/icons-vue';
|
|
14
14
|
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
|
|
15
15
|
import ClickOutside from '../../../directives/click-outside/index.mjs';
|
|
16
|
+
import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
|
|
16
17
|
import { useAttrs } from '../../../hooks/use-attrs/index.mjs';
|
|
17
18
|
|
|
18
19
|
const _sfc_main = defineComponent({
|
|
@@ -94,6 +95,7 @@ const _sfc_main = defineComponent({
|
|
|
94
95
|
"select"
|
|
95
96
|
],
|
|
96
97
|
setup(props, ctx) {
|
|
98
|
+
const ns = useNamespace("autocomplete");
|
|
97
99
|
const attrs = useAttrs();
|
|
98
100
|
const suggestions = ref([]);
|
|
99
101
|
const highlightedIndex = ref(-1);
|
|
@@ -105,7 +107,7 @@ const _sfc_main = defineComponent({
|
|
|
105
107
|
const regionRef = ref(null);
|
|
106
108
|
const popper = ref(null);
|
|
107
109
|
const id = computed(() => {
|
|
108
|
-
return
|
|
110
|
+
return ns.b(String(generateId()));
|
|
109
111
|
});
|
|
110
112
|
const suggestionVisible = computed(() => {
|
|
111
113
|
const isValidData = isArray(suggestions.value) && suggestions.value.length > 0;
|
|
@@ -212,8 +214,8 @@ const _sfc_main = defineComponent({
|
|
|
212
214
|
if (index >= suggestions.value.length) {
|
|
213
215
|
index = suggestions.value.length - 1;
|
|
214
216
|
}
|
|
215
|
-
const suggestion = regionRef.value.querySelector(
|
|
216
|
-
const suggestionList = suggestion.querySelectorAll("
|
|
217
|
+
const suggestion = regionRef.value.querySelector(`.${ns.be("suggestion", "wrap")}`);
|
|
218
|
+
const suggestionList = suggestion.querySelectorAll(`.${ns.be("suggestion", "list")} li`);
|
|
217
219
|
const highlightItem = suggestionList[index];
|
|
218
220
|
const scrollTop = suggestion.scrollTop;
|
|
219
221
|
const { offsetTop, scrollHeight } = highlightItem;
|
|
@@ -251,7 +253,8 @@ const _sfc_main = defineComponent({
|
|
|
251
253
|
focus,
|
|
252
254
|
select,
|
|
253
255
|
highlight,
|
|
254
|
-
onSuggestionShow
|
|
256
|
+
onSuggestionShow,
|
|
257
|
+
ns
|
|
255
258
|
};
|
|
256
259
|
}
|
|
257
260
|
});
|
|
@@ -271,32 +274,29 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
271
274
|
"onUpdate:visible": _cache[2] || (_cache[2] = ($event) => _ctx.suggestionVisible = $event),
|
|
272
275
|
placement: _ctx.placement,
|
|
273
276
|
"fallback-placements": ["bottom-start", "top-start"],
|
|
274
|
-
"popper-class":
|
|
277
|
+
"popper-class": `${_ctx.ns.e("popper")} ${_ctx.popperClass}`,
|
|
275
278
|
"append-to-body": _ctx.popperAppendToBody,
|
|
276
279
|
"gpu-acceleration": false,
|
|
277
280
|
pure: "",
|
|
278
281
|
"manual-mode": "",
|
|
279
282
|
effect: "light",
|
|
280
283
|
trigger: "click",
|
|
281
|
-
transition:
|
|
284
|
+
transition: `${_ctx.ns.namespace.value}-zoom-in-top`,
|
|
282
285
|
persistent: "",
|
|
283
286
|
onShow: _ctx.onSuggestionShow
|
|
284
287
|
}, {
|
|
285
288
|
content: withCtx(() => [
|
|
286
289
|
createElementVNode("div", {
|
|
287
290
|
ref: "regionRef",
|
|
288
|
-
class: normalizeClass([
|
|
289
|
-
"el-autocomplete-suggestion",
|
|
290
|
-
_ctx.suggestionLoading && "is-loading"
|
|
291
|
-
]),
|
|
291
|
+
class: normalizeClass([_ctx.ns.b("suggestion"), _ctx.ns.is("loading", _ctx.suggestionLoading)]),
|
|
292
292
|
style: normalizeStyle({ minWidth: _ctx.dropdownWidth, outline: "none" }),
|
|
293
293
|
role: "region"
|
|
294
294
|
}, [
|
|
295
295
|
createVNode(_component_el_scrollbar, {
|
|
296
296
|
id: _ctx.id,
|
|
297
297
|
tag: "ul",
|
|
298
|
-
"wrap-class": "
|
|
299
|
-
"view-class": "
|
|
298
|
+
"wrap-class": _ctx.ns.be("suggestion", "wrap"),
|
|
299
|
+
"view-class": _ctx.ns.be("suggestion", "list"),
|
|
300
300
|
role: "listbox"
|
|
301
301
|
}, {
|
|
302
302
|
default: withCtx(() => [
|
|
@@ -323,12 +323,12 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
323
323
|
}), 128))
|
|
324
324
|
]),
|
|
325
325
|
_: 3
|
|
326
|
-
}, 8, ["id"])
|
|
326
|
+
}, 8, ["id", "wrap-class", "view-class"])
|
|
327
327
|
], 6)
|
|
328
328
|
]),
|
|
329
329
|
default: withCtx(() => [
|
|
330
330
|
withDirectives((openBlock(), createElementBlock("div", {
|
|
331
|
-
class: normalizeClass([
|
|
331
|
+
class: normalizeClass([_ctx.ns.b(), _ctx.$attrs.class]),
|
|
332
332
|
style: normalizeStyle(_ctx.$attrs.style),
|
|
333
333
|
role: "combobox",
|
|
334
334
|
"aria-haspopup": "listbox",
|
|
@@ -379,7 +379,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
379
379
|
])
|
|
380
380
|
]),
|
|
381
381
|
_: 3
|
|
382
|
-
}, 8, ["visible", "placement", "popper-class", "append-to-body", "onShow"]);
|
|
382
|
+
}, 8, ["visible", "placement", "popper-class", "append-to-body", "transition", "onShow"]);
|
|
383
383
|
}
|
|
384
384
|
var Autocomplete = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
385
385
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/autocomplete/src/index.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"popper\"\n v-model:visible=\"suggestionVisible\"\n :placement=\"placement\"\n :fallback-placements=\"['bottom-start', 'top-start']\"\n :popper-class=\"`el-autocomplete__popper ${popperClass}`\"\n :append-to-body=\"popperAppendToBody\"\n :gpu-acceleration=\"false\"\n pure\n manual-mode\n effect=\"light\"\n trigger=\"click\"\n transition=\"el-zoom-in-top\"\n persistent\n @show=\"onSuggestionShow\"\n >\n <div\n v-clickoutside=\"close\"\n :class=\"['el-autocomplete', $attrs.class]\"\n :style=\"$attrs.style\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n :aria-expanded=\"suggestionVisible\"\n :aria-owns=\"id\"\n >\n <el-input\n ref=\"inputRef\"\n v-bind=\"attrs\"\n :model-value=\"modelValue\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @clear=\"handleClear\"\n @keydown.up.prevent=\"highlight(highlightedIndex - 1)\"\n @keydown.down.prevent=\"highlight(highlightedIndex + 1)\"\n @keydown.enter=\"handleKeyEnter\"\n @keydown.tab=\"close\"\n >\n <template v-if=\"$slots.prepend\" #prepend>\n <slot name=\"prepend\"></slot>\n </template>\n <template v-if=\"$slots.append\" #append>\n <slot name=\"append\"></slot>\n </template>\n <template v-if=\"$slots.prefix\" #prefix>\n <slot name=\"prefix\"></slot>\n </template>\n <template v-if=\"$slots.suffix\" #suffix>\n <slot name=\"suffix\"></slot>\n </template>\n </el-input>\n </div>\n <template #content>\n <div\n ref=\"regionRef\"\n :class=\"[\n 'el-autocomplete-suggestion',\n suggestionLoading && 'is-loading',\n ]\"\n :style=\"{ minWidth: dropdownWidth, outline: 'none' }\"\n role=\"region\"\n >\n <el-scrollbar\n :id=\"id\"\n tag=\"ul\"\n wrap-class=\"el-autocomplete-suggestion__wrap\"\n view-class=\"el-autocomplete-suggestion__list\"\n role=\"listbox\"\n >\n <li v-if=\"suggestionLoading\">\n <el-icon class=\"is-loading\"><loading /></el-icon>\n </li>\n <template v-else>\n <li\n v-for=\"(item, index) in suggestions\"\n :id=\"`${id}-item-${index}`\"\n :key=\"index\"\n :class=\"{ highlighted: highlightedIndex === index }\"\n role=\"option\"\n :aria-selected=\"highlightedIndex === index\"\n @click=\"select(item)\"\n >\n <slot :item=\"item\">{{ item[valueKey] }}</slot>\n </li>\n </template>\n </el-scrollbar>\n </div>\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, onMounted, nextTick } from 'vue'\nimport { NOOP } from '@vue/shared'\nimport debounce from 'lodash/debounce'\nimport { useAttrs } from '@element-plus/hooks'\nimport { ClickOutside } from '@element-plus/directives'\nimport { generateId, isArray } from '@element-plus/utils/util'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/utils/constants'\nimport { throwError } from '@element-plus/utils/error'\nimport ElInput from '@element-plus/components/input'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElIcon from '@element-plus/components/icon'\nimport { Loading } from '@element-plus/icons-vue'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { PropType } from 'vue'\n\nexport default defineComponent({\n name: 'ElAutocomplete',\n components: {\n ElTooltip,\n ElInput,\n ElScrollbar,\n ElIcon,\n Loading,\n },\n directives: {\n clickoutside: ClickOutside,\n },\n inheritAttrs: false,\n props: {\n valueKey: {\n type: String,\n default: 'value',\n },\n modelValue: {\n type: [String, Number],\n default: '',\n },\n debounce: {\n type: Number,\n default: 300,\n },\n placement: {\n type: String as PropType<Placement>,\n validator: (val: string): boolean => {\n return [\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n ].includes(val)\n },\n default: 'bottom-start',\n },\n fetchSuggestions: {\n type: Function as PropType<\n (queryString: string, cb: (data: any[]) => void) => void\n >,\n default: NOOP,\n },\n popperClass: {\n type: String,\n default: '',\n },\n triggerOnFocus: {\n type: Boolean,\n default: true,\n },\n selectWhenUnmatched: {\n type: Boolean,\n default: false,\n },\n hideLoading: {\n type: Boolean,\n default: false,\n },\n popperAppendToBody: {\n type: Boolean,\n default: true,\n },\n highlightFirstItem: {\n type: Boolean,\n default: false,\n },\n },\n emits: [\n UPDATE_MODEL_EVENT,\n 'input',\n 'change',\n 'focus',\n 'blur',\n 'clear',\n 'select',\n ],\n setup(props, ctx) {\n const attrs = useAttrs()\n const suggestions = ref<any[]>([])\n const highlightedIndex = ref(-1)\n const dropdownWidth = ref('')\n const activated = ref(false)\n const suggestionDisabled = ref(false)\n const loading = ref(false)\n const inputRef = ref<{\n inputOrTextarea: HTMLInputElement | HTMLTextAreaElement\n focus: () => void\n $el: HTMLElement\n } | null>(null)\n const regionRef = ref<HTMLElement | null>(null)\n const popper = ref(null)\n\n const id = computed(() => {\n return `el-autocomplete-${generateId()}`\n })\n const suggestionVisible = computed(() => {\n const isValidData =\n isArray(suggestions.value) && suggestions.value.length > 0\n return (isValidData || loading.value) && activated.value\n })\n const suggestionLoading = computed(() => {\n return !props.hideLoading && loading.value\n })\n\n const onSuggestionShow = () => {\n nextTick(() => {\n if (suggestionVisible.value) {\n dropdownWidth.value = `${inputRef.value!.$el.offsetWidth}px`\n }\n })\n }\n\n onMounted(() => {\n inputRef.value!.inputOrTextarea.setAttribute('role', 'textbox')\n inputRef.value!.inputOrTextarea.setAttribute('aria-autocomplete', 'list')\n inputRef.value!.inputOrTextarea.setAttribute('aria-controls', 'id')\n inputRef.value!.inputOrTextarea.setAttribute(\n 'aria-activedescendant',\n `${id.value}-item-${highlightedIndex.value}`\n )\n })\n\n const getData = (queryString: string) => {\n if (suggestionDisabled.value) {\n return\n }\n loading.value = true\n props.fetchSuggestions(queryString, (suggestionsArg) => {\n loading.value = false\n if (suggestionDisabled.value) {\n return\n }\n if (isArray(suggestionsArg)) {\n suggestions.value = suggestionsArg\n highlightedIndex.value = props.highlightFirstItem ? 0 : -1\n } else {\n throwError(\n 'ElAutocomplete',\n 'autocomplete suggestions must be an array'\n )\n }\n })\n }\n const debouncedGetData = debounce(getData, props.debounce)\n const handleInput = (value: string) => {\n ctx.emit('input', value)\n ctx.emit(UPDATE_MODEL_EVENT, value)\n suggestionDisabled.value = false\n if (!props.triggerOnFocus && !value) {\n suggestionDisabled.value = true\n suggestions.value = []\n return\n }\n debouncedGetData(value)\n }\n const handleChange = (value) => {\n ctx.emit('change', value)\n }\n const handleFocus = (e) => {\n activated.value = true\n ctx.emit('focus', e)\n if (props.triggerOnFocus) {\n debouncedGetData(String(props.modelValue))\n }\n }\n const handleBlur = (e) => {\n ctx.emit('blur', e)\n }\n const handleClear = () => {\n activated.value = false\n ctx.emit(UPDATE_MODEL_EVENT, '')\n ctx.emit('clear')\n }\n const handleKeyEnter = () => {\n if (\n suggestionVisible.value &&\n highlightedIndex.value >= 0 &&\n highlightedIndex.value < suggestions.value.length\n ) {\n select(suggestions.value[highlightedIndex.value])\n } else if (props.selectWhenUnmatched) {\n ctx.emit('select', { value: props.modelValue })\n nextTick(() => {\n suggestions.value = []\n highlightedIndex.value = -1\n })\n }\n }\n const close = () => {\n activated.value = false\n }\n const focus = () => {\n inputRef.value?.focus()\n }\n const select = (item) => {\n ctx.emit('input', item[props.valueKey])\n ctx.emit(UPDATE_MODEL_EVENT, item[props.valueKey])\n ctx.emit('select', item)\n nextTick(() => {\n suggestions.value = []\n highlightedIndex.value = -1\n })\n }\n const highlight = (index: number) => {\n if (!suggestionVisible.value || loading.value) {\n return\n }\n if (index < 0) {\n highlightedIndex.value = -1\n return\n }\n if (index >= suggestions.value.length) {\n index = suggestions.value.length - 1\n }\n const suggestion = regionRef.value!.querySelector(\n '.el-autocomplete-suggestion__wrap'\n )!\n const suggestionList = suggestion.querySelectorAll(\n '.el-autocomplete-suggestion__list li'\n )!\n const highlightItem = suggestionList[index]\n const scrollTop = suggestion.scrollTop\n const { offsetTop, scrollHeight } = highlightItem as HTMLElement\n\n if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {\n suggestion.scrollTop += scrollHeight\n }\n if (offsetTop < scrollTop) {\n suggestion.scrollTop -= scrollHeight\n }\n highlightedIndex.value = index\n inputRef.value!.inputOrTextarea.setAttribute(\n 'aria-activedescendant',\n `${id.value}-item-${highlightedIndex.value}`\n )\n }\n\n return {\n attrs,\n suggestions,\n highlightedIndex,\n dropdownWidth,\n activated,\n suggestionDisabled,\n loading,\n inputRef,\n regionRef,\n popper,\n\n id,\n suggestionVisible,\n suggestionLoading,\n\n getData,\n handleInput,\n handleChange,\n handleFocus,\n handleBlur,\n handleClear,\n handleKeyEnter,\n close,\n focus,\n select,\n highlight,\n onSuggestionShow,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createBlock","_withCtx","_normalizeStyle","_createElementBlock","_Fragment","_normalizeClass","_mergeProps","_withModifiers","_createSlots"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/autocomplete/src/index.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"popper\"\n v-model:visible=\"suggestionVisible\"\n :placement=\"placement\"\n :fallback-placements=\"['bottom-start', 'top-start']\"\n :popper-class=\"`${ns.e('popper')} ${popperClass}`\"\n :append-to-body=\"popperAppendToBody\"\n :gpu-acceleration=\"false\"\n pure\n manual-mode\n effect=\"light\"\n trigger=\"click\"\n :transition=\"`${ns.namespace.value}-zoom-in-top`\"\n persistent\n @show=\"onSuggestionShow\"\n >\n <div\n v-clickoutside=\"close\"\n :class=\"[ns.b(), $attrs.class]\"\n :style=\"$attrs.style\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n :aria-expanded=\"suggestionVisible\"\n :aria-owns=\"id\"\n >\n <el-input\n ref=\"inputRef\"\n v-bind=\"attrs\"\n :model-value=\"modelValue\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @clear=\"handleClear\"\n @keydown.up.prevent=\"highlight(highlightedIndex - 1)\"\n @keydown.down.prevent=\"highlight(highlightedIndex + 1)\"\n @keydown.enter=\"handleKeyEnter\"\n @keydown.tab=\"close\"\n >\n <template v-if=\"$slots.prepend\" #prepend>\n <slot name=\"prepend\"></slot>\n </template>\n <template v-if=\"$slots.append\" #append>\n <slot name=\"append\"></slot>\n </template>\n <template v-if=\"$slots.prefix\" #prefix>\n <slot name=\"prefix\"></slot>\n </template>\n <template v-if=\"$slots.suffix\" #suffix>\n <slot name=\"suffix\"></slot>\n </template>\n </el-input>\n </div>\n <template #content>\n <div\n ref=\"regionRef\"\n :class=\"[ns.b('suggestion'), ns.is('loading', suggestionLoading)]\"\n :style=\"{ minWidth: dropdownWidth, outline: 'none' }\"\n role=\"region\"\n >\n <el-scrollbar\n :id=\"id\"\n tag=\"ul\"\n :wrap-class=\"ns.be('suggestion', 'wrap')\"\n :view-class=\"ns.be('suggestion', 'list')\"\n role=\"listbox\"\n >\n <li v-if=\"suggestionLoading\">\n <el-icon class=\"is-loading\"><loading /></el-icon>\n </li>\n <template v-else>\n <li\n v-for=\"(item, index) in suggestions\"\n :id=\"`${id}-item-${index}`\"\n :key=\"index\"\n :class=\"{ highlighted: highlightedIndex === index }\"\n role=\"option\"\n :aria-selected=\"highlightedIndex === index\"\n @click=\"select(item)\"\n >\n <slot :item=\"item\">{{ item[valueKey] }}</slot>\n </li>\n </template>\n </el-scrollbar>\n </div>\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, onMounted, nextTick } from 'vue'\nimport { NOOP } from '@vue/shared'\nimport debounce from 'lodash/debounce'\nimport { useAttrs, useNamespace } from '@element-plus/hooks'\nimport { ClickOutside } from '@element-plus/directives'\nimport { generateId, isArray } from '@element-plus/utils/util'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/utils/constants'\nimport { throwError } from '@element-plus/utils/error'\nimport ElInput from '@element-plus/components/input'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport ElIcon from '@element-plus/components/icon'\nimport { Loading } from '@element-plus/icons-vue'\n\nimport type { Placement } from '@element-plus/components/popper'\nimport type { PropType } from 'vue'\n\nexport default defineComponent({\n name: 'ElAutocomplete',\n components: {\n ElTooltip,\n ElInput,\n ElScrollbar,\n ElIcon,\n Loading,\n },\n directives: {\n clickoutside: ClickOutside,\n },\n inheritAttrs: false,\n props: {\n valueKey: {\n type: String,\n default: 'value',\n },\n modelValue: {\n type: [String, Number],\n default: '',\n },\n debounce: {\n type: Number,\n default: 300,\n },\n placement: {\n type: String as PropType<Placement>,\n validator: (val: string): boolean => {\n return [\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n ].includes(val)\n },\n default: 'bottom-start',\n },\n fetchSuggestions: {\n type: Function as PropType<\n (queryString: string, cb: (data: any[]) => void) => void\n >,\n default: NOOP,\n },\n popperClass: {\n type: String,\n default: '',\n },\n triggerOnFocus: {\n type: Boolean,\n default: true,\n },\n selectWhenUnmatched: {\n type: Boolean,\n default: false,\n },\n hideLoading: {\n type: Boolean,\n default: false,\n },\n popperAppendToBody: {\n type: Boolean,\n default: true,\n },\n highlightFirstItem: {\n type: Boolean,\n default: false,\n },\n },\n emits: [\n UPDATE_MODEL_EVENT,\n 'input',\n 'change',\n 'focus',\n 'blur',\n 'clear',\n 'select',\n ],\n setup(props, ctx) {\n const ns = useNamespace('autocomplete')\n const attrs = useAttrs()\n const suggestions = ref<any[]>([])\n const highlightedIndex = ref(-1)\n const dropdownWidth = ref('')\n const activated = ref(false)\n const suggestionDisabled = ref(false)\n const loading = ref(false)\n const inputRef = ref<{\n inputOrTextarea: HTMLInputElement | HTMLTextAreaElement\n focus: () => void\n $el: HTMLElement\n } | null>(null)\n const regionRef = ref<HTMLElement | null>(null)\n const popper = ref(null)\n\n const id = computed(() => {\n return ns.b(String(generateId()))\n })\n const suggestionVisible = computed(() => {\n const isValidData =\n isArray(suggestions.value) && suggestions.value.length > 0\n return (isValidData || loading.value) && activated.value\n })\n const suggestionLoading = computed(() => {\n return !props.hideLoading && loading.value\n })\n\n const onSuggestionShow = () => {\n nextTick(() => {\n if (suggestionVisible.value) {\n dropdownWidth.value = `${inputRef.value!.$el.offsetWidth}px`\n }\n })\n }\n\n onMounted(() => {\n inputRef.value!.inputOrTextarea.setAttribute('role', 'textbox')\n inputRef.value!.inputOrTextarea.setAttribute('aria-autocomplete', 'list')\n inputRef.value!.inputOrTextarea.setAttribute('aria-controls', 'id')\n inputRef.value!.inputOrTextarea.setAttribute(\n 'aria-activedescendant',\n `${id.value}-item-${highlightedIndex.value}`\n )\n })\n\n const getData = (queryString: string) => {\n if (suggestionDisabled.value) {\n return\n }\n loading.value = true\n props.fetchSuggestions(queryString, (suggestionsArg) => {\n loading.value = false\n if (suggestionDisabled.value) {\n return\n }\n if (isArray(suggestionsArg)) {\n suggestions.value = suggestionsArg\n highlightedIndex.value = props.highlightFirstItem ? 0 : -1\n } else {\n throwError(\n 'ElAutocomplete',\n 'autocomplete suggestions must be an array'\n )\n }\n })\n }\n const debouncedGetData = debounce(getData, props.debounce)\n const handleInput = (value: string) => {\n ctx.emit('input', value)\n ctx.emit(UPDATE_MODEL_EVENT, value)\n suggestionDisabled.value = false\n if (!props.triggerOnFocus && !value) {\n suggestionDisabled.value = true\n suggestions.value = []\n return\n }\n debouncedGetData(value)\n }\n const handleChange = (value) => {\n ctx.emit('change', value)\n }\n const handleFocus = (e) => {\n activated.value = true\n ctx.emit('focus', e)\n if (props.triggerOnFocus) {\n debouncedGetData(String(props.modelValue))\n }\n }\n const handleBlur = (e) => {\n ctx.emit('blur', e)\n }\n const handleClear = () => {\n activated.value = false\n ctx.emit(UPDATE_MODEL_EVENT, '')\n ctx.emit('clear')\n }\n const handleKeyEnter = () => {\n if (\n suggestionVisible.value &&\n highlightedIndex.value >= 0 &&\n highlightedIndex.value < suggestions.value.length\n ) {\n select(suggestions.value[highlightedIndex.value])\n } else if (props.selectWhenUnmatched) {\n ctx.emit('select', { value: props.modelValue })\n nextTick(() => {\n suggestions.value = []\n highlightedIndex.value = -1\n })\n }\n }\n const close = () => {\n activated.value = false\n }\n const focus = () => {\n inputRef.value?.focus()\n }\n const select = (item) => {\n ctx.emit('input', item[props.valueKey])\n ctx.emit(UPDATE_MODEL_EVENT, item[props.valueKey])\n ctx.emit('select', item)\n nextTick(() => {\n suggestions.value = []\n highlightedIndex.value = -1\n })\n }\n const highlight = (index: number) => {\n if (!suggestionVisible.value || loading.value) {\n return\n }\n if (index < 0) {\n highlightedIndex.value = -1\n return\n }\n if (index >= suggestions.value.length) {\n index = suggestions.value.length - 1\n }\n const suggestion = regionRef.value!.querySelector(\n `.${ns.be('suggestion', 'wrap')}`\n )!\n const suggestionList = suggestion.querySelectorAll(\n `.${ns.be('suggestion', 'list')} li`\n )!\n const highlightItem = suggestionList[index]\n const scrollTop = suggestion.scrollTop\n const { offsetTop, scrollHeight } = highlightItem as HTMLElement\n\n if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {\n suggestion.scrollTop += scrollHeight\n }\n if (offsetTop < scrollTop) {\n suggestion.scrollTop -= scrollHeight\n }\n highlightedIndex.value = index\n inputRef.value!.inputOrTextarea.setAttribute(\n 'aria-activedescendant',\n `${id.value}-item-${highlightedIndex.value}`\n )\n }\n\n return {\n attrs,\n suggestions,\n highlightedIndex,\n dropdownWidth,\n activated,\n suggestionDisabled,\n loading,\n inputRef,\n regionRef,\n popper,\n\n id,\n suggestionVisible,\n suggestionLoading,\n\n getData,\n handleInput,\n handleChange,\n handleFocus,\n handleBlur,\n handleClear,\n handleKeyEnter,\n close,\n focus,\n select,\n highlight,\n onSuggestionShow,\n ns,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createBlock","_withCtx","_normalizeClass","_normalizeStyle","_createElementBlock","_Fragment","_mergeProps","_withModifiers","_createSlots"],"mappings":"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"}
|
|
@@ -76,6 +76,17 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
76
76
|
select: (item: any) => void;
|
|
77
77
|
highlight: (index: number) => void;
|
|
78
78
|
onSuggestionShow: () => void;
|
|
79
|
+
ns: {
|
|
80
|
+
namespace: import("vue").ComputedRef<string>;
|
|
81
|
+
b: (blockSuffix?: string) => string;
|
|
82
|
+
e: (element?: string | undefined) => string;
|
|
83
|
+
m: (modifier?: string | undefined) => string;
|
|
84
|
+
be: (blockSuffix?: string | undefined, element?: string | undefined) => string;
|
|
85
|
+
em: (element?: string | undefined, modifier?: string | undefined) => string;
|
|
86
|
+
bm: (blockSuffix?: string | undefined, modifier?: string | undefined) => string;
|
|
87
|
+
bem: (blockSuffix?: string | undefined, element?: string | undefined, modifier?: string | undefined) => string;
|
|
88
|
+
is: (name: string, state?: boolean) => string;
|
|
89
|
+
};
|
|
79
90
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("input" | "select" | "update:modelValue" | "change" | "blur" | "focus" | "clear")[], "input" | "select" | "update:modelValue" | "change" | "blur" | "focus" | "clear", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
80
91
|
valueKey: {
|
|
81
92
|
type: StringConstructor;
|
|
@@ -20,6 +20,17 @@ export declare const ElBacktop: import("../../utils/types").SFCWithInstall<impor
|
|
|
20
20
|
styleBottom: import("vue").ComputedRef<string>;
|
|
21
21
|
styleRight: import("vue").ComputedRef<string>;
|
|
22
22
|
handleClick: (event: MouseEvent) => void;
|
|
23
|
+
ns: {
|
|
24
|
+
namespace: import("vue").ComputedRef<string>;
|
|
25
|
+
b: (blockSuffix?: string) => string;
|
|
26
|
+
e: (element?: string | undefined) => string;
|
|
27
|
+
m: (modifier?: string | undefined) => string;
|
|
28
|
+
be: (blockSuffix?: string | undefined, element?: string | undefined) => string;
|
|
29
|
+
em: (element?: string | undefined, modifier?: string | undefined) => string;
|
|
30
|
+
bm: (blockSuffix?: string | undefined, modifier?: string | undefined) => string;
|
|
31
|
+
bem: (blockSuffix?: string | undefined, element?: string | undefined, modifier?: string | undefined) => string;
|
|
32
|
+
is: (name: string, state?: boolean) => string;
|
|
33
|
+
};
|
|
23
34
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
24
35
|
click: (evt: MouseEvent) => boolean;
|
|
25
36
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
@@ -20,6 +20,17 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
20
20
|
styleBottom: import("vue").ComputedRef<string>;
|
|
21
21
|
styleRight: import("vue").ComputedRef<string>;
|
|
22
22
|
handleClick: (event: MouseEvent) => void;
|
|
23
|
+
ns: {
|
|
24
|
+
namespace: import("vue").ComputedRef<string>;
|
|
25
|
+
b: (blockSuffix?: string) => string;
|
|
26
|
+
e: (element?: string | undefined) => string;
|
|
27
|
+
m: (modifier?: string | undefined) => string;
|
|
28
|
+
be: (blockSuffix?: string | undefined, element?: string | undefined) => string;
|
|
29
|
+
em: (element?: string | undefined, modifier?: string | undefined) => string;
|
|
30
|
+
bm: (blockSuffix?: string | undefined, modifier?: string | undefined) => string;
|
|
31
|
+
bem: (blockSuffix?: string | undefined, element?: string | undefined, modifier?: string | undefined) => string;
|
|
32
|
+
is: (name: string, state?: boolean) => string;
|
|
33
|
+
};
|
|
23
34
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
24
35
|
click: (evt: MouseEvent) => boolean;
|
|
25
36
|
}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { defineComponent, shallowRef, ref, computed, onMounted, resolveComponent, openBlock, createBlock, Transition, withCtx, createElementBlock, normalizeStyle, withModifiers, renderSlot, createVNode, createCommentVNode } from 'vue';
|
|
1
|
+
import { defineComponent, shallowRef, ref, computed, onMounted, resolveComponent, openBlock, createBlock, Transition, withCtx, createElementBlock, normalizeStyle, normalizeClass, withModifiers, renderSlot, createVNode, createCommentVNode } from 'vue';
|
|
2
2
|
import { useThrottleFn, useEventListener } from '@vueuse/core';
|
|
3
3
|
import { ElIcon } from '../../icon/index.mjs';
|
|
4
4
|
import { easeInOutCubic } from '../../../utils/animation.mjs';
|
|
5
5
|
import { throwError } from '../../../utils/error.mjs';
|
|
6
6
|
import { CaretTop } from '@element-plus/icons-vue';
|
|
7
|
+
import '../../../hooks/index.mjs';
|
|
7
8
|
import { backtopProps, backtopEmits } from './backtop.mjs';
|
|
8
9
|
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
|
|
10
|
+
import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
|
|
9
11
|
|
|
10
12
|
const COMPONENT_NAME = "ElBacktop";
|
|
11
13
|
const _sfc_main = defineComponent({
|
|
@@ -17,6 +19,7 @@ const _sfc_main = defineComponent({
|
|
|
17
19
|
props: backtopProps,
|
|
18
20
|
emits: backtopEmits,
|
|
19
21
|
setup(props, { emit }) {
|
|
22
|
+
const ns = useNamespace("backtop");
|
|
20
23
|
const el = shallowRef(document.documentElement);
|
|
21
24
|
const container = shallowRef(document);
|
|
22
25
|
const visible = ref(false);
|
|
@@ -63,14 +66,17 @@ const _sfc_main = defineComponent({
|
|
|
63
66
|
visible,
|
|
64
67
|
styleBottom,
|
|
65
68
|
styleRight,
|
|
66
|
-
handleClick
|
|
69
|
+
handleClick,
|
|
70
|
+
ns
|
|
67
71
|
};
|
|
68
72
|
}
|
|
69
73
|
});
|
|
70
74
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
71
75
|
const _component_caret_top = resolveComponent("caret-top");
|
|
72
76
|
const _component_el_icon = resolveComponent("el-icon");
|
|
73
|
-
return openBlock(), createBlock(Transition, {
|
|
77
|
+
return openBlock(), createBlock(Transition, {
|
|
78
|
+
name: `${_ctx.ns.namespace.value}-fade-in`
|
|
79
|
+
}, {
|
|
74
80
|
default: withCtx(() => [
|
|
75
81
|
_ctx.visible ? (openBlock(), createElementBlock("div", {
|
|
76
82
|
key: 0,
|
|
@@ -78,21 +84,23 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
78
84
|
right: _ctx.styleRight,
|
|
79
85
|
bottom: _ctx.styleBottom
|
|
80
86
|
}),
|
|
81
|
-
class:
|
|
87
|
+
class: normalizeClass(_ctx.ns.b()),
|
|
82
88
|
onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.handleClick && _ctx.handleClick(...args), ["stop"]))
|
|
83
89
|
}, [
|
|
84
90
|
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
85
|
-
createVNode(_component_el_icon, {
|
|
91
|
+
createVNode(_component_el_icon, {
|
|
92
|
+
class: normalizeClass(_ctx.ns.e("icon"))
|
|
93
|
+
}, {
|
|
86
94
|
default: withCtx(() => [
|
|
87
95
|
createVNode(_component_caret_top)
|
|
88
96
|
]),
|
|
89
97
|
_: 1
|
|
90
|
-
})
|
|
98
|
+
}, 8, ["class"])
|
|
91
99
|
])
|
|
92
|
-
],
|
|
100
|
+
], 6)) : createCommentVNode("v-if", true)
|
|
93
101
|
]),
|
|
94
102
|
_: 3
|
|
95
|
-
});
|
|
103
|
+
}, 8, ["name"]);
|
|
96
104
|
}
|
|
97
105
|
var Backtop = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
98
106
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backtop2.mjs","sources":["../../../../../../packages/components/backtop/src/backtop.vue"],"sourcesContent":["<template>\n <transition name=\"
|
|
1
|
+
{"version":3,"file":"backtop2.mjs","sources":["../../../../../../packages/components/backtop/src/backtop.vue"],"sourcesContent":["<template>\n <transition :name=\"`${ns.namespace.value}-fade-in`\">\n <div\n v-if=\"visible\"\n :style=\"{\n right: styleRight,\n bottom: styleBottom,\n }\"\n :class=\"ns.b()\"\n @click.stop=\"handleClick\"\n >\n <slot>\n <el-icon :class=\"ns.e('icon')\"><caret-top /></el-icon>\n </slot>\n </div>\n </transition>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, onMounted, shallowRef } from 'vue'\nimport { useEventListener, useThrottleFn } from '@vueuse/core'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { easeInOutCubic } from '@element-plus/utils/animation'\nimport { throwError } from '@element-plus/utils/error'\nimport { CaretTop } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport { backtopEmits, backtopProps } from './backtop'\n\nconst COMPONENT_NAME = 'ElBacktop'\n\nexport default defineComponent({\n name: COMPONENT_NAME,\n components: {\n ElIcon,\n CaretTop,\n },\n props: backtopProps,\n emits: backtopEmits,\n\n setup(props, { emit }) {\n const ns = useNamespace('backtop')\n const el = shallowRef<HTMLElement | undefined>(document.documentElement)\n const container = shallowRef<Document | HTMLElement>(document)\n const visible = ref(false)\n const styleBottom = computed(() => `${props.bottom}px`)\n const styleRight = computed(() => `${props.right}px`)\n\n const scrollToTop = () => {\n if (!el.value) return\n const beginTime = Date.now()\n const beginValue = el.value.scrollTop\n const frameFunc = () => {\n if (!el.value) return\n const progress = (Date.now() - beginTime) / 500\n if (progress < 1) {\n el.value.scrollTop = beginValue * (1 - easeInOutCubic(progress))\n requestAnimationFrame(frameFunc)\n } else {\n el.value.scrollTop = 0\n }\n }\n requestAnimationFrame(frameFunc)\n }\n const handleScroll = () => {\n if (el.value) visible.value = el.value.scrollTop >= props.visibilityHeight\n }\n const handleClick = (event: MouseEvent) => {\n scrollToTop()\n emit('click', event)\n }\n\n const handleScrollThrottled = useThrottleFn(handleScroll, 300)\n\n onMounted(() => {\n if (props.target) {\n el.value =\n document.querySelector<HTMLElement>(props.target) ?? undefined\n if (!el.value) {\n throwError(COMPONENT_NAME, `target is not existed: ${props.target}`)\n }\n container.value = el.value\n }\n\n useEventListener(container, 'scroll', handleScrollThrottled)\n })\n\n return {\n visible,\n styleBottom,\n styleRight,\n handleClick,\n ns,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createBlock","_Transition","_withCtx","_normalizeStyle","_normalizeClass"],"mappings":";;;;;;;;;;;AA6BA,MAAM,iBAAiB;AAEvB,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA;AAAA,EAEF,OAAO;AAAA,EACP,OAAO;AAAA,EAEP,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,KAAK,aAAa;AACxB,UAAM,KAAK,WAAoC,SAAS;AACxD,UAAM,YAAY,WAAmC;AACrD,UAAM,UAAU,IAAI;AACpB,UAAM,cAAc,SAAS,MAAM,GAAG,MAAM;AAC5C,UAAM,aAAa,SAAS,MAAM,GAAG,MAAM;AAE3C,UAAM,cAAc,MAAM;AACxB,UAAI,CAAC,GAAG;AAAO;AACf,YAAM,YAAY,KAAK;AACvB,YAAM,aAAa,GAAG,MAAM;AAC5B,YAAM,YAAY,MAAM;AACtB,YAAI,CAAC,GAAG;AAAO;AACf,cAAM,WAAY,MAAK,QAAQ,aAAa;AAC5C,YAAI,WAAW,GAAG;AAChB,aAAG,MAAM,YAAY,kBAAkB,eAAe;AACtD,gCAAsB;AAAA,eACjB;AACL,aAAG,MAAM,YAAY;AAAA;AAAA;AAGzB,4BAAsB;AAAA;AAExB,UAAM,eAAe,MAAM;AACzB,UAAI,GAAG;AAAO,gBAAQ,QAAQ,GAAG,MAAM,aAAa,MAAM;AAAA;AAE5D,UAAM,cAAc,CAAC,UAAsB;AACzC;AACA,WAAK,SAAS;AAAA;AAGhB,UAAM,wBAAwB,cAAc,cAAc;AAE1D,cAAU,MAAM;AACd,UAAI,MAAM,QAAQ;AAChB,WAAG,QACD,SAAS,cAA2B,MAAM,WAAW;AACvD,YAAI,CAAC,GAAG,OAAO;AACb,qBAAW,gBAAgB,0BAA0B,MAAM;AAAA;AAE7D,kBAAU,QAAQ,GAAG;AAAA;AAGvB,uBAAiB,WAAW,UAAU;AAAA;AAGxC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;;SA3FaA,aAAQC,YAAeC;AAAA;;aAE9BC,QAAO;AAAA;QACZ,KAAK;AAAA,eAAmBC,eAAU;AAAA,sBAAkB;AAAA;;QAKpD,OAAKC;AAAA;SAEN;AAAA,mBACE,KAAsD;AAAA,sBAAvC,oBAAK;AAAA;;qBAAWF,QAAa;AAAA;;;;;;;;;;;;;;"}
|
package/es/components/index.mjs
CHANGED
|
@@ -103,7 +103,7 @@ export { subMenuProps } from './menu/src/sub-menu.mjs';
|
|
|
103
103
|
export { overlayEmits, overlayProps } from './overlay/src/overlay.mjs';
|
|
104
104
|
export { pageHeaderEmits, pageHeaderProps } from './page-header/src/page-header.mjs';
|
|
105
105
|
export { paginationEmits, paginationProps } from './pagination/src/pagination.mjs';
|
|
106
|
-
export { popconfirmProps } from './popconfirm/src/
|
|
106
|
+
export { popconfirmProps } from './popconfirm/src/popconfirm2.mjs';
|
|
107
107
|
export { default as ElPopperArrow } from './popper/src/arrow.mjs';
|
|
108
108
|
export { default as ElPopperTrigger } from './popper/src/trigger.mjs';
|
|
109
109
|
export { default as ElPopperContent } from './popper/src/content.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { withInstall } from '../../utils/with-install.mjs';
|
|
2
|
-
import Popconfirm from './src/
|
|
3
|
-
export { popconfirmProps } from './src/
|
|
2
|
+
import Popconfirm from './src/popconfirm.mjs';
|
|
3
|
+
export { popconfirmProps } from './src/popconfirm2.mjs';
|
|
4
4
|
|
|
5
5
|
const ElPopconfirm = withInstall(Popconfirm);
|
|
6
6
|
|
|
@@ -1,51 +1,110 @@
|
|
|
1
|
-
import '
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { defineComponent, ref, unref, computed, resolveComponent, openBlock, createBlock, mergeProps, withCtx, createElementVNode, normalizeStyle, resolveDynamicComponent, createCommentVNode, createTextVNode, toDisplayString, createVNode, renderSlot } from 'vue';
|
|
2
|
+
import { ElButton } from '../../button/index.mjs';
|
|
3
|
+
import { ElIcon } from '../../icon/index.mjs';
|
|
4
|
+
import { ElTooltip } from '../../tooltip/index.mjs';
|
|
5
|
+
import '../../../hooks/index.mjs';
|
|
6
|
+
import { popconfirmProps } from './popconfirm2.mjs';
|
|
7
|
+
import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
|
|
8
|
+
import { useLocale } from '../../../hooks/use-locale/index.mjs';
|
|
5
9
|
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
const _sfc_main = defineComponent({
|
|
11
|
+
name: "ElPopconfirm",
|
|
12
|
+
components: {
|
|
13
|
+
ElButton,
|
|
14
|
+
ElTooltip,
|
|
15
|
+
ElIcon
|
|
9
16
|
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
hideAfter: {
|
|
39
|
-
type: Number,
|
|
40
|
-
default: 200
|
|
41
|
-
},
|
|
42
|
-
onConfirm: {
|
|
43
|
-
type: definePropType(Function)
|
|
44
|
-
},
|
|
45
|
-
onCancel: {
|
|
46
|
-
type: definePropType(Function)
|
|
17
|
+
props: popconfirmProps,
|
|
18
|
+
setup(props) {
|
|
19
|
+
const { t } = useLocale();
|
|
20
|
+
const tooltipRef = ref();
|
|
21
|
+
const hidePopper = () => {
|
|
22
|
+
unref(tooltipRef)?.onClose?.();
|
|
23
|
+
};
|
|
24
|
+
const handleCallback = () => {
|
|
25
|
+
hidePopper();
|
|
26
|
+
};
|
|
27
|
+
const confirm = (e) => {
|
|
28
|
+
props.onConfirm?.(e);
|
|
29
|
+
handleCallback();
|
|
30
|
+
};
|
|
31
|
+
const cancel = (e) => {
|
|
32
|
+
props.onCancel?.(e);
|
|
33
|
+
handleCallback();
|
|
34
|
+
};
|
|
35
|
+
const finalConfirmButtonText = computed(() => props.confirmButtonText || t("el.popconfirm.confirmButtonText"));
|
|
36
|
+
const finalCancelButtonText = computed(() => props.cancelButtonText || t("el.popconfirm.cancelButtonText"));
|
|
37
|
+
return {
|
|
38
|
+
finalConfirmButtonText,
|
|
39
|
+
finalCancelButtonText,
|
|
40
|
+
tooltipRef,
|
|
41
|
+
confirm,
|
|
42
|
+
cancel
|
|
43
|
+
};
|
|
47
44
|
}
|
|
48
45
|
});
|
|
46
|
+
const _hoisted_1 = { class: "el-popconfirm" };
|
|
47
|
+
const _hoisted_2 = { class: "el-popconfirm__main" };
|
|
48
|
+
const _hoisted_3 = { class: "el-popconfirm__action" };
|
|
49
|
+
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
50
|
+
const _component_el_icon = resolveComponent("el-icon");
|
|
51
|
+
const _component_el_button = resolveComponent("el-button");
|
|
52
|
+
const _component_el_tooltip = resolveComponent("el-tooltip");
|
|
53
|
+
return openBlock(), createBlock(_component_el_tooltip, mergeProps({ ref: "tooltipRef" }, _ctx.$attrs, {
|
|
54
|
+
trigger: "click",
|
|
55
|
+
effect: "light",
|
|
56
|
+
"popper-class": "el-popover",
|
|
57
|
+
"append-to-body": "",
|
|
58
|
+
"fallback-placements": ["bottom", "top", "right", "left"],
|
|
59
|
+
"hide-after": _ctx.hideAfter,
|
|
60
|
+
persistent: ""
|
|
61
|
+
}), {
|
|
62
|
+
content: withCtx(() => [
|
|
63
|
+
createElementVNode("div", _hoisted_1, [
|
|
64
|
+
createElementVNode("div", _hoisted_2, [
|
|
65
|
+
!_ctx.hideIcon && _ctx.icon ? (openBlock(), createBlock(_component_el_icon, {
|
|
66
|
+
key: 0,
|
|
67
|
+
class: "el-popconfirm__icon",
|
|
68
|
+
style: normalizeStyle({ color: _ctx.iconColor })
|
|
69
|
+
}, {
|
|
70
|
+
default: withCtx(() => [
|
|
71
|
+
(openBlock(), createBlock(resolveDynamicComponent(_ctx.icon)))
|
|
72
|
+
]),
|
|
73
|
+
_: 1
|
|
74
|
+
}, 8, ["style"])) : createCommentVNode("v-if", true),
|
|
75
|
+
createTextVNode(" " + toDisplayString(_ctx.title), 1)
|
|
76
|
+
]),
|
|
77
|
+
createElementVNode("div", _hoisted_3, [
|
|
78
|
+
createVNode(_component_el_button, {
|
|
79
|
+
size: "small",
|
|
80
|
+
type: _ctx.cancelButtonType,
|
|
81
|
+
onClick: _ctx.cancel
|
|
82
|
+
}, {
|
|
83
|
+
default: withCtx(() => [
|
|
84
|
+
createTextVNode(toDisplayString(_ctx.finalCancelButtonText), 1)
|
|
85
|
+
]),
|
|
86
|
+
_: 1
|
|
87
|
+
}, 8, ["type", "onClick"]),
|
|
88
|
+
createVNode(_component_el_button, {
|
|
89
|
+
size: "small",
|
|
90
|
+
type: _ctx.confirmButtonType,
|
|
91
|
+
onClick: _ctx.confirm
|
|
92
|
+
}, {
|
|
93
|
+
default: withCtx(() => [
|
|
94
|
+
createTextVNode(toDisplayString(_ctx.finalConfirmButtonText), 1)
|
|
95
|
+
]),
|
|
96
|
+
_: 1
|
|
97
|
+
}, 8, ["type", "onClick"])
|
|
98
|
+
])
|
|
99
|
+
])
|
|
100
|
+
]),
|
|
101
|
+
default: withCtx(() => [
|
|
102
|
+
_ctx.$slots.reference ? renderSlot(_ctx.$slots, "reference", { key: 0 }) : createCommentVNode("v-if", true)
|
|
103
|
+
]),
|
|
104
|
+
_: 3
|
|
105
|
+
}, 16, ["hide-after"]);
|
|
106
|
+
}
|
|
107
|
+
var Popconfirm = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
49
108
|
|
|
50
|
-
export {
|
|
109
|
+
export { Popconfirm as default };
|
|
51
110
|
//# sourceMappingURL=popconfirm.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popconfirm.mjs","sources":["../../../../../../packages/components/popconfirm/src/popconfirm.
|
|
1
|
+
{"version":3,"file":"popconfirm.mjs","sources":["../../../../../../packages/components/popconfirm/src/popconfirm.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"tooltipRef\"\n v-bind=\"$attrs\"\n trigger=\"click\"\n effect=\"light\"\n popper-class=\"el-popover\"\n append-to-body\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :hide-after=\"hideAfter\"\n persistent\n >\n <template #content>\n <div class=\"el-popconfirm\">\n <div class=\"el-popconfirm__main\">\n <el-icon\n v-if=\"!hideIcon && icon\"\n class=\"el-popconfirm__icon\"\n :style=\"{ color: iconColor }\"\n >\n <component :is=\"icon\" />\n </el-icon>\n {{ title }}\n </div>\n <div class=\"el-popconfirm__action\">\n <el-button size=\"small\" :type=\"cancelButtonType\" @click=\"cancel\">\n {{ finalCancelButtonText }}\n </el-button>\n <el-button size=\"small\" :type=\"confirmButtonType\" @click=\"confirm\">\n {{ finalConfirmButtonText }}\n </el-button>\n </div>\n </div>\n </template>\n <template v-if=\"$slots.reference\">\n <slot name=\"reference\" />\n </template>\n </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, unref } from 'vue'\nimport ElButton from '@element-plus/components/button'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { useLocale } from '@element-plus/hooks'\nimport { popconfirmProps } from './popconfirm'\n\nexport default defineComponent({\n name: 'ElPopconfirm',\n\n components: {\n ElButton,\n ElTooltip,\n ElIcon,\n },\n\n props: popconfirmProps,\n\n setup(props) {\n const { t } = useLocale()\n const tooltipRef = ref<{ onClose: () => void }>()\n\n const hidePopper = () => {\n unref(tooltipRef)?.onClose?.()\n }\n\n const handleCallback = () => {\n hidePopper()\n }\n\n const confirm = (e: Event) => {\n props.onConfirm?.(e)\n handleCallback()\n }\n const cancel = (e: Event) => {\n props.onCancel?.(e)\n handleCallback()\n }\n\n const finalConfirmButtonText = computed(\n () => props.confirmButtonText || t('el.popconfirm.confirmButtonText')\n )\n const finalCancelButtonText = computed(\n () => props.cancelButtonText || t('el.popconfirm.cancelButtonText')\n )\n\n return {\n finalConfirmButtonText,\n finalCancelButtonText,\n tooltipRef,\n\n confirm,\n cancel,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createBlock","_withCtx"],"mappings":";;;;;;;;;AAgDA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EAEN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA;AAAA,EAGF,OAAO;AAAA,EAEP,MAAM,OAAO;AACX,UAAM,EAAE,MAAM;AACd,UAAM,aAAa;AAEnB,UAAM,aAAa,MAAM;AACvB,YAAM,aAAa;AAAA;AAGrB,UAAM,iBAAiB,MAAM;AAC3B;AAAA;AAGF,UAAM,UAAU,CAAC,MAAa;AAC5B,YAAM,YAAY;AAClB;AAAA;AAEF,UAAM,SAAS,CAAC,MAAa;AAC3B,YAAM,WAAW;AACjB;AAAA;AAGF,UAAM,yBAAyB,SAC7B,MAAM,MAAM,qBAAqB,EAAE;AAErC,UAAM,wBAAwB,SAC5B,MAAM,MAAM,oBAAoB,EAAE;AAGpC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA;AAAA;AAAA;qBA/EO,OAAM;qBAUN,OAAM;;;;;;SApBfA,aAAeC;AAAA,IACf,SAAO;AAAA,IACP;AAAA,IACA,gBAAc;AAAA,IACb;AAAA,IACA,uBAAY,WAAS;AAAA,IACtB,cAAU;AAAA;MAEC;AAAA,aACTC,cAmBM;AAAA,yBAlBJ,OASM;AAAA,2BAPa,OAAI,YAAI;AAAA,4BADzB;YAEE,KAAK;AAAA,YACJ,OAAK;AAAA;;6BAEN;AAAA;;;iDAEF;AAAA;;2BAKY;AAAA,sBAFI,sBAAO;AAAA,YAAE,MAAM;AAAA,YAAmB,WAAO;AAAA;;;;;;aAGzD,GAEY;AAAA,sBAFI,sBAAO;AAAA,YAAE,MAAM;AAAA,YAAoB,WAAO;AAAA;;;;;;;;;;aAMhDA,QAAO,MAAS;AAAA,WAC9B;;;;;;;;;"}
|