| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { defineComponent, inject, computed, ref, onMounted, openBlock, createElementBlock, normalizeClass, normalizeStyle, renderSlot, createCommentVNode } from 'vue';
- import { useResizeObserver } from '@vueuse/core';
- import { selectKey } from './token.mjs';
- import _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';
- import { BORDER_HORIZONTAL_WIDTH } from '../../../constants/form.mjs';
- import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
- const _sfc_main = defineComponent({
- name: "ElSelectDropdown",
- componentName: "ElSelectDropdown",
- setup() {
- const select = inject(selectKey);
- const ns = useNamespace("select");
- const popperClass = computed(() => select.props.popperClass);
- const isMultiple = computed(() => select.props.multiple);
- const isFitInputWidth = computed(() => select.props.fitInputWidth);
- const minWidth = ref("");
- function updateMinWidth() {
- var _a;
- const offsetWidth = (_a = select.selectRef) == null ? void 0 : _a.offsetWidth;
- if (offsetWidth) {
- minWidth.value = `${offsetWidth - BORDER_HORIZONTAL_WIDTH}px`;
- } else {
- minWidth.value = "";
- }
- }
- onMounted(() => {
- updateMinWidth();
- useResizeObserver(select.selectRef, updateMinWidth);
- });
- return {
- ns,
- minWidth,
- popperClass,
- isMultiple,
- isFitInputWidth
- };
- }
- });
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
- return openBlock(), createElementBlock("div", {
- class: normalizeClass([_ctx.ns.b("dropdown"), _ctx.ns.is("multiple", _ctx.isMultiple), _ctx.popperClass]),
- style: normalizeStyle({ [_ctx.isFitInputWidth ? "width" : "minWidth"]: _ctx.minWidth })
- }, [
- _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
- key: 0,
- class: normalizeClass(_ctx.ns.be("dropdown", "header"))
- }, [
- renderSlot(_ctx.$slots, "header")
- ], 2)) : createCommentVNode("v-if", true),
- renderSlot(_ctx.$slots, "default"),
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
- key: 1,
- class: normalizeClass(_ctx.ns.be("dropdown", "footer"))
- }, [
- renderSlot(_ctx.$slots, "footer")
- ], 2)) : createCommentVNode("v-if", true)
- ], 6);
- }
- var ElSelectMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "select-dropdown.vue"]]);
- export { ElSelectMenu as default };
- //# sourceMappingURL=select-dropdown.mjs.map
|