@milaboratories/uikit 2.3.29 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/.turbo/turbo-build.log +24 -24
  2. package/.turbo/turbo-test.log +133 -0
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +10 -0
  5. package/dist/components/DataTable/TableComponent.vue.js +1 -1
  6. package/dist/components/PlAccordion/ExpandTransition.vue.js +27 -0
  7. package/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -0
  8. package/dist/components/PlAccordion/ExpandTransition.vue3.js +1 -1
  9. package/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
  10. package/dist/components/PlDropdown/PlDropdown.vue.d.ts +6 -7
  11. package/dist/components/PlDropdown/PlDropdown.vue.d.ts.map +1 -1
  12. package/dist/components/PlDropdown/PlDropdown.vue.js +78 -75
  13. package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
  14. package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts.map +1 -1
  15. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +100 -96
  16. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
  17. package/dist/components/PlDropdownRef/PlDropdownRef.vue.d.ts +68 -123
  18. package/dist/components/PlDropdownRef/PlDropdownRef.vue.d.ts.map +1 -1
  19. package/dist/components/PlDropdownRef/PlDropdownRef.vue.js +23 -21
  20. package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
  21. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
  22. package/dist/utils/DropdownOverlay/DropdownOverlay.vue.d.ts.map +1 -1
  23. package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js +19 -17
  24. package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
  25. package/package.json +3 -3
  26. package/src/components/PlDropdown/PlDropdown.vue +9 -13
  27. package/src/components/PlDropdown/pl-dropdown.scss +6 -11
  28. package/src/components/PlDropdownLine/PlDropdownLine.vue +10 -1
  29. package/src/components/PlDropdownRef/PlDropdownRef.vue +16 -14
  30. package/src/utils/DropdownOverlay/DropdownOverlay.vue +7 -1
@@ -1,8 +1,8 @@
1
- import { defineComponent as s, useSlots as u, computed as t, createBlock as f, openBlock as m, unref as a, mergeProps as c, createSlots as g, withCtx as v, renderSlot as b } from "vue";
2
- import _ from "../PlDropdown/PlDropdown.vue.js";
1
+ import { defineComponent as i, useSlots as p, computed as s, createBlock as u, openBlock as f, unref as a, mergeProps as m, createSlots as c, withCtx as g, renderSlot as b } from "vue";
2
+ import v from "../PlDropdown/PlDropdown.vue.js";
3
3
  const k = {
4
4
  name: "PlDropdownRef"
5
- }, h = /* @__PURE__ */ s({
5
+ }, h = /* @__PURE__ */ i({
6
6
  ...k,
7
7
  props: {
8
8
  modelValue: {},
@@ -18,27 +18,29 @@ const k = {
18
18
  optionSize: { default: "small" }
19
19
  },
20
20
  emits: ["update:modelValue"],
21
- setup(n) {
22
- const r = u(), l = n, i = t(
21
+ setup(t) {
22
+ const n = p(), l = t, r = s(
23
23
  () => {
24
- var e;
25
- return (e = l.options) == null ? void 0 : e.map((o) => ({
26
- label: o.label,
27
- value: o.ref,
28
- group: o.group
29
- }));
24
+ var o;
25
+ return (o = l.options) == null ? void 0 : o.map(
26
+ (e) => "ref" in e ? {
27
+ label: e.label,
28
+ value: e.ref,
29
+ group: e.group
30
+ } : e
31
+ );
30
32
  }
31
- ), d = t(() => l.disabled ? "icon-link-disabled" : "icon-link");
32
- return (e, o) => (m(), f(a(_), c(l, {
33
- options: i.value,
34
- "loading-options-helper": e.loadingOptionsHelper,
35
- "arrow-icon-large": d.value,
36
- "onUpdate:modelValue": o[0] || (o[0] = (p) => e.$emit("update:modelValue", p))
37
- }), g({ _: 2 }, [
38
- a(r).tooltip ? {
33
+ );
34
+ return (o, e) => (f(), u(a(v), m(l, {
35
+ options: r.value,
36
+ "loading-options-helper": o.loadingOptionsHelper,
37
+ "arrow-icon-large": o.disabled ? "link-disabled" : "link",
38
+ "onUpdate:modelValue": e[0] || (e[0] = (d) => o.$emit("update:modelValue", d))
39
+ }), c({ _: 2 }, [
40
+ a(n).tooltip ? {
39
41
  name: "tooltip",
40
- fn: v(() => [
41
- b(e.$slots, "tooltip")
42
+ fn: g(() => [
43
+ b(o.$slots, "tooltip")
42
44
  ]),
43
45
  key: "0"
44
46
  } : void 0
@@ -1 +1 @@
1
- {"version":3,"file":"PlDropdownRef.vue.js","sources":["../../../src/components/PlDropdownRef/PlDropdownRef.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a list of options\n */\nexport default {\n name: 'PlDropdownRef',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport type { ModelRef, RefOption } from '../../types';\nimport { PlDropdown } from '../PlDropdown';\nimport { computed, useSlots } from 'vue';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst slots: any = useSlots();\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated.\n */\n (e: 'update:modelValue', value: ModelRef | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current selected ref of the dropdown.\n */\n modelValue: ModelRef | undefined;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * List of available ref options for the dropdown\n */\n options?: Readonly<RefOption[]>;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Option list item size\n */\n optionSize?: 'small' | 'medium';\n }>(),\n {\n label: '',\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n placeholder: '...',\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n optionSize: 'small',\n options: undefined,\n },\n);\n\nconst options = computed(() =>\n props.options?.map((opt) => ({\n label: opt.label,\n value: opt.ref,\n group: opt.group,\n })),\n);\n\nconst arrowIcon = computed(() => (props.disabled ? 'icon-link-disabled' : 'icon-link'));\n</script>\n\n<template>\n <PlDropdown\n v-bind=\"props\"\n :options=\"options\"\n :loading-options-helper=\"loadingOptionsHelper\"\n :arrow-icon-large=\"arrowIcon\"\n @update:model-value=\"$emit('update:modelValue', $event)\"\n >\n <template v-if=\"slots.tooltip\" #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlDropdown>\n</template>\n"],"names":["__default__","slots","useSlots","props","__props","options","computed","_a","opt","arrowIcon"],"mappings":";;AAIA,MAAeA,IAAA;AAAA,EACb,MAAM;AACR;;;;;;;;;;;;;;;;;AASA,UAAMC,IAAaC,EAAS,GAStBC,IAAQC,GA8DRC,IAAUC;AAAA,MAAS,MAAA;;AACvB,gBAAAC,IAAAJ,EAAM,YAAN,gBAAAI,EAAe,IAAI,CAACC,OAAS;AAAA,UAC3B,OAAOA,EAAI;AAAA,UACX,OAAOA,EAAI;AAAA,UACX,OAAOA,EAAI;AAAA,QAAA;AAAA;AAAA,IAEf,GAEMC,IAAYH,EAAS,MAAOH,EAAM,WAAW,uBAAuB,WAAY;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlDropdownRef.vue.js","sources":["../../../src/components/PlDropdownRef/PlDropdownRef.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a list of options\n */\nexport default {\n name: 'PlDropdownRef',\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = ModelRef\">\nimport { computed, useSlots } from 'vue';\nimport type { ListOption, ModelRef, RefOption } from '../../types';\nimport { PlDropdown } from '../PlDropdown';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst slots: any = useSlots();\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated.\n */\n (e: 'update:modelValue', value: M | undefined): void;\n}>();\n\nconst props = withDefaults(\n defineProps<{\n /**\n * The current selected ref of the dropdown.\n */\n modelValue: M | undefined;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * List of available ref options for the dropdown\n */\n options?: Readonly<RefOption[] | ListOption<M>[]>;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Option list item size\n */\n optionSize?: 'small' | 'medium';\n }>(),\n {\n label: '',\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n placeholder: '...',\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n optionSize: 'small',\n options: undefined,\n },\n);\n\nconst options = computed(() =>\n props.options?.map((opt) =>\n 'ref' in opt\n ? {\n label: opt.label,\n value: opt.ref,\n group: opt.group,\n } as ListOption<M>\n : opt,\n ),\n);\n</script>\n\n<template>\n <PlDropdown\n v-bind=\"props\"\n :options=\"options\"\n :loading-options-helper=\"loadingOptionsHelper\"\n :arrow-icon-large=\"disabled ? 'link-disabled' : 'link'\"\n @update:model-value=\"$emit('update:modelValue', $event)\"\n >\n <template v-if=\"slots.tooltip\" #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlDropdown>\n</template>\n"],"names":["__default__","slots","useSlots","props","__props","options","computed","_a","opt"],"mappings":";;AAIA,MAAeA,IAAA;AAAA,EACb,MAAM;AACR;;;;;;;;;;;;;;;;;AASA,UAAMC,IAAaC,EAAS,GAStBC,IAAQC,GA8DRC,IAAUC;AAAA,MAAS,MACvB;;AAAA,gBAAAC,IAAAJ,EAAM,YAAN,gBAAAI,EAAe;AAAA,UAAI,CAACC,MAClB,SAASA,IACL;AAAA,YACE,OAAOA,EAAI;AAAA,YACX,OAAOA,EAAI;AAAA,YACX,OAAOA,EAAI;AAAA,UAAA,IAEbA;AAAA;AAAA;AAAA,IAER;;;;;;;;;;;;;;;;;"}
@@ -26,7 +26,7 @@
26
26
  .pl-checkbox-group{--color-label: var(--color-text);--cursor-label: pointer;display:flex;flex-direction:column;font-family:var(--font-family-base)}.pl-checkbox-group.disabled{--color-label: var(--color-dis-01);--cursor-label: default;pointer-events:none}.pl-checkbox-group>label{color:var(--color-label);cursor:var(--cursor-label);display:flex;align-items:center;gap:4px;margin-bottom:6px;font-size:14px;font-weight:600;line-height:20px}.pl-checkbox-group>div{height:32px;display:flex;flex-direction:row;align-items:center;gap:8px}.pl-checkbox-group>div>label{font-size:14px;font-weight:500}
27
27
  .pl-chip-tooltip{display:inline-flex}.pl-chip{--chip-color: var(--txt-01);position:relative;display:inline-flex;align-items:center;gap:4px;padding:0 8px;height:32px;background:var(--chip-bg);border:var(--chip-border);border-radius:6px;max-width:256px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base);letter-spacing:-.2px;color:var(--chip-color)}.pl-chip.small{height:24px;padding:0 6px;border-radius:4px}.pl-chip.large{height:40px;padding:0 12px;border-radius:6px}[data-theme=dark] .pl-chip{color:#fff}.pl-chip__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.pl-chip__close{cursor:pointer;--mask-color: var(--chip-close-ic-color)}.pl-chip__close:hover{--mask-color: var(--chip-close-ic-hover-color)}.pl-chip__close:focus-visible{--mask-color: var(--chip-close-ic-hover-color);box-shadow:0 0 0 2px var(--border-color-focus);border-radius:1px;outline:none}.pl-chip__close--icon{background:var(--mask-color);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M4.00001%202.93933L8.00001%206.93933L12%202.93933L13.0607%203.99999L9.06067%207.99999L13.0607%2012L12%2013.0607L8.00001%209.06065L4.00001%2013.0607L2.93935%2012L6.93935%207.99999L2.93935%203.99999L4.00001%202.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M4.00001%202.93933L8.00001%206.93933L12%202.93933L13.0607%203.99999L9.06067%207.99999L13.0607%2012L12%2013.0607L8.00001%209.06065L4.00001%2013.0607L2.93935%2012L6.93935%207.99999L2.93935%203.99999L4.00001%202.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}
28
28
  .pl-dialog-modal{--padding-top: 24px;--border-radius: 16px;--title-padding: 24px 24px 0 24px;min-height:400px;max-height:calc(100vh - 48px);max-width:calc(100% - 48px);min-width:448px;position:absolute;top:50%;left:50%;transform:translateY(-50%) translate(-50%);background-color:#fff;padding-top:var(--padding-top);display:flex;flex-direction:column;box-shadow:0 2px 8px #24223d1f;border-radius:var(--border-radius)}.pl-dialog-modal.has-title{--padding-top: 0}.pl-dialog-modal.has-content{--title-padding: 24px}.pl-dialog-modal__title{display:flex;align-items:center;font-family:var(--font-family-base);font-size:28px;font-style:normal;font-weight:500;line-height:32px;letter-spacing:-.56px;padding:var(--title-padding)}.pl-dialog-modal__content{flex:1;display:flex;flex-direction:column;gap:24px;padding:16px 24px 40px;min-height:0;line-height:20px;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dialog-modal__content::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dialog-modal__content::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dialog-modal__content::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dialog-modal__content.no-content-gutters{padding:0}.pl-dialog-modal__content.no-top-content-gutter{padding-top:0}.pl-dialog-modal__actions{display:flex;align-items:center;gap:6px;min-height:88px;padding:0 24px}.pl-dialog-modal__actions button{min-width:160px}.pl-dialog-modal__actions.has-top-border{border-top:1px solid var(--border-color-div-grey)}.pl-dialog-modal .alert-error{background-color:var(--txt-error);color:#fff;font-weight:500;padding:12px;border-radius:6px}.pl-dialog-modal .alert-warning{background-color:#fee0a3;font-weight:500;padding:12px;border-radius:6px}.pl-dialog-modal__shadow{position:absolute;z-index:var(--z-dialog);top:var(--title-bar-height);left:0;right:0;bottom:0;background-color:#000000a3}.pl-dialog-modal .close-modal-btn{position:absolute;top:4px;right:4px}
29
- .pl-dropdown__options{--option-hover-bg: var(--btn-sec-hover-grey);z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);position:absolute;background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown__options .group-container{padding:4px 0}.pl-dropdown__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown__options .option.selected .checkmark{display:block}.pl-dropdown__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown{--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}.pl-dropdown__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center;cursor:pointer}.pl-dropdown__field .input-value{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;flex-direction:row;align-items:center;padding:0 60px 0 11px;pointer-events:none;line-height:20px;color:var(--txt-01);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit}.pl-dropdown__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown__field input:focus{outline:none}.pl-dropdown__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown__controls .mask-16,.pl-dropdown__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown .arrow-icon{cursor:pointer}.pl-dropdown .arrow-icon.arrow-icon-default{transition:transform .2s;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown.open,.pl-dropdown:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown.open .pl-dropdown__container{z-index:1000}.pl-dropdown.open .pl-dropdown__field{border-radius:6px 6px 0 0}.pl-dropdown.open .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);transform:rotate(-180deg)}.pl-dropdown:hover{--contour-color: var(--control-hover-color)}.pl-dropdown:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}.pl-dropdown.disabled .input-value{color:var(--dis-01)}
29
+ .pl-dropdown__options{--option-hover-bg: var(--btn-sec-hover-grey);z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);position:absolute;background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown__options .group-container{padding:4px 0}.pl-dropdown__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown__options .option.selected .checkmark{display:block}.pl-dropdown__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown{--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}.pl-dropdown__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center;cursor:pointer}.pl-dropdown__field .input-value{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;flex-direction:row;align-items:center;padding:0 60px 0 11px;pointer-events:none;line-height:20px;color:var(--txt-01);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit}.pl-dropdown__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown__field input:focus{outline:none}.pl-dropdown__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown__controls .mask-16,.pl-dropdown__controls .mask-24{cursor:pointer}.pl-dropdown__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown .arrow-icon{cursor:pointer}.pl-dropdown .arrow-icon.arrow-icon-default{transition:transform .2s}.pl-dropdown.open,.pl-dropdown:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown.open .pl-dropdown__container{z-index:1000}.pl-dropdown.open .pl-dropdown__field{border-radius:6px 6px 0 0}.pl-dropdown.open .arrow-icon.arrow-icon-default{transform:rotate(-180deg)}.pl-dropdown:hover{--contour-color: var(--control-hover-color)}.pl-dropdown:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown.disabled{--contour-color: var(--color-dis-01);--icon-color: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}.pl-dropdown.disabled .input-value{color:var(--dis-01)}
30
30
  .pl-dropdown-legacy{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}[data-theme=dark] .pl-dropdown-legacy{--options-bg: #1b1b1f}.pl-dropdown-legacy__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown-legacy label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown-legacy label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-legacy__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown-legacy__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown-legacy__options{position:relative;background-color:var(--options-bg);border-radius:0 0 6px 6px;max-height:244px;border-top:1px solid var(--color-div-black);--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown-legacy__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown-legacy__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown-legacy__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown-legacy__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown-legacy__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown-legacy__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown-legacy__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown-legacy__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown-legacy__options .option.selected .checkmark{display:block}.pl-dropdown-legacy__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown-legacy__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown-legacy__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding:0 11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center}.pl-dropdown-legacy__field .input-value{outline:1px solid red;position:absolute;top:0;left:0;bottom:0;right:0;padding:0 60px 0 11px;pointer-events:none;line-height:var(--control-height);color:var(--contour-color);overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-legacy__field input{min-height:calc(var(--control-height) - 2px);line-height:calc(var(--control-height) - 2px);font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown-legacy__field input:focus{outline:none}.pl-dropdown-legacy__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown-legacy__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown-legacy__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-legacy__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-legacy__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown-legacy__controls .mask-16,.pl-dropdown-legacy__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown-legacy__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown-legacy__controls .mask-loading{--icon-color: var(#07AD3E);animation:spin 2.5s linear infinite}.pl-dropdown-legacy .arrow-icon{cursor:pointer}.pl-dropdown-legacy .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-legacy.open,.pl-dropdown-legacy:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown-legacy.open .pl-dropdown-legacy__container{z-index:1000}.pl-dropdown-legacy.open .pl-dropdown-legacy__field{border-radius:6px 6px 0 0}.pl-dropdown-legacy.open .arrow-icon{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-legacy:hover{--contour-color: var(--control-hover-color)}.pl-dropdown-legacy:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown-legacy:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown-legacy.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown-legacy.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}
31
31
  .pl-line-dropdown{display:flex;align-items:center;width:fit-content;padding:8px 0;box-sizing:border-box;position:relative;outline:none;max-width:256px}.pl-line-dropdown:focus-within:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__prefix,.pl-line-dropdown__input{text-transform:uppercase}.pl-line-dropdown:hover:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown:after{content:"";position:absolute;bottom:0;border-bottom:2px solid var(--color-div-grey);width:100%}.pl-line-dropdown *{color:var(--txt-01);font-family:var(--font-family-base);font-size:13px;font-style:normal;font-weight:600;line-height:14px;letter-spacing:.52px}.pl-line-dropdown__input::placeholder{color:var(--txt-mask)}.pl-line-dropdown__icon{display:flex;align-items:center;min-width:16px;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-line-dropdown__icon-clear{mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px;background-color:var(--color-ic-02)}.pl-line-dropdown.open .pl-line-dropdown__icon{mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-line-dropdown.open:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__icon-wrapper{padding:4px 2px 4px 0}.pl-line-dropdown.disabled *{color:var(--txt-mask);cursor:not-allowed}.pl-line-dropdown.disabled .pl-line-dropdown__icon{background-color:var(--color-div-grey)!important}.pl-line-dropdown.disabled:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown.disabled:hover:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown__no-item{padding:8px 12px}.pl-line-dropdown__no-item-title{color:var(--txt-03)!important;text-wrap:nowrap;text-overflow:ellipsis;overflow:hidden}.pl-line-dropdown__items{position:absolute;top:0;z-index:var(--z-dropdown-options);border-radius:6px;padding:12px 0;border:1px solid var(--color-div-grey);width:256px;box-sizing:border-box;max-height:320px;background-color:var(--bg-elevated-01);box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-y:auto}.pl-line-dropdown__items::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-line-dropdown__items-tabs{display:flex;position:absolute;top:0;z-index:var(--z-dropdown-options);background-color:var(--color-div-bw);overflow-x:scroll;max-width:400px;padding:6px 12px 12px;border:1px solid var(--color-div-grey);border-radius:6px;box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-x:auto}.pl-line-dropdown__items-tabs::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
32
32
  .resizable-input{position:relative;box-sizing:border-box;padding:0 8px;display:inline-block;max-width:100%;text-overflow:ellipsis;overflow:hidden}.resizable-input__size-span{font-family:inherit;white-space:pre;display:inline-block;font-size:inherit;line-height:inherit;box-sizing:border-box;position:relative;left:0;opacity:0;min-width:2px;-webkit-user-select:none;user-select:none;vertical-align:top}.resizable-input input{border:none;outline:none;height:100%;text-overflow:ellipsis;font-family:inherit;background:none;color:inherit;top:0;left:0;right:0;font-size:inherit;line-height:inherit;position:absolute;box-sizing:border-box}
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownOverlay.vue.d.ts","sourceRoot":"","sources":["../../../src/utils/DropdownOverlay/DropdownOverlay.vue"],"names":[],"mappings":"AAwFA,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAuEF,iBAAS,cAAc;WA0CT,OAAO,IAA6B;;;;YAZrB,GAAG;;;;;;EAiB/B;AAUD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;OASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"DropdownOverlay.vue.d.ts","sourceRoot":"","sources":["../../../src/utils/DropdownOverlay/DropdownOverlay.vue"],"names":[],"mappings":"AA8FA,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAuEF,iBAAS,cAAc;WA2CT,OAAO,IAA6B;;;;YAZrB,GAAG;;;;;;EAiB/B;AAUD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;OASnB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAQpG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,25 +1,25 @@
1
- import { defineComponent as h, reactive as l, toRef as g, ref as u, watch as w, createBlock as v, openBlock as x, Teleport as y, createElementVNode as R, mergeProps as H, renderSlot as _ } from "vue";
2
- import { useElementPosition as b } from "../../composition/usePosition.js";
1
+ import { defineComponent as g, reactive as c, toRef as h, ref as u, watch as w, createBlock as v, openBlock as x, Teleport as y, createElementVNode as R, mergeProps as C, withModifiers as H, renderSlot as b } from "vue";
2
+ import { useElementPosition as k } from "../../composition/usePosition.js";
3
3
  import { scrollIntoView as B } from "../../helpers/dom.js";
4
- import { tapIf as C } from "../../lib/util/helpers/dist/index.js";
5
- const $ = /* @__PURE__ */ h({
4
+ import { tapIf as E } from "../../lib/util/helpers/dist/index.js";
5
+ const q = /* @__PURE__ */ g({
6
6
  __name: "DropdownOverlay",
7
7
  props: {
8
8
  root: {},
9
9
  gap: {}
10
10
  },
11
- setup(f, { expose: a }) {
12
- const r = f, i = l({
11
+ setup(f, { expose: d }) {
12
+ const r = f, i = c({
13
13
  optionsHeight: 0
14
- }), o = l({
14
+ }), o = c({
15
15
  top: "0px",
16
16
  left: "0px",
17
17
  width: "0px"
18
- }), d = g(r, "root"), n = u();
19
- return a({
18
+ }), a = h(r, "root"), n = u();
19
+ return d({
20
20
  scrollIntoActive: () => {
21
21
  const t = n.value;
22
- t && C(t.querySelector(".hovered-item"), (e) => {
22
+ t && E(t.querySelector(".hovered-item"), (e) => {
23
23
  B(t, e);
24
24
  });
25
25
  },
@@ -29,23 +29,25 @@ const $ = /* @__PURE__ */ h({
29
29
  const e = t.getBoundingClientRect();
30
30
  i.optionsHeight = e.height, window.dispatchEvent(new CustomEvent("adjust"));
31
31
  });
32
- }), b(d, (t) => {
33
- const e = document.body.getBoundingClientRect(), s = t.top - e.top, m = t.left - e.left, p = r.gap ?? 0, c = s + t.height + p;
34
- c + i.optionsHeight > t.clientHeight ? o.top = s - i.optionsHeight - p + "px" : o.top = c + "px", o.left = m + "px", o.width = t.width + "px";
32
+ }), k(a, (t) => {
33
+ const e = document.body.getBoundingClientRect(), s = t.top - e.top, m = t.left - e.left, p = r.gap ?? 0, l = s + t.height + p;
34
+ l + i.optionsHeight > t.clientHeight ? o.top = s - i.optionsHeight - p + "px" : o.top = l + "px", o.left = m + "px", o.width = t.width + "px";
35
35
  }), (t, e) => (x(), v(y, { to: "body" }, [
36
- R("div", H({
36
+ R("div", C({
37
37
  ref_key: "listRef",
38
38
  ref: n
39
39
  }, t.$attrs, {
40
40
  style: o,
41
- tabindex: "-1"
41
+ tabindex: "-1",
42
+ onClick: e[0] || (e[0] = H(() => {
43
+ }, ["stop"]))
42
44
  }), [
43
- _(t.$slots, "default", { ref: "list" })
45
+ b(t.$slots, "default", { ref: "list" })
44
46
  ], 16)
45
47
  ]));
46
48
  }
47
49
  });
48
50
  export {
49
- $ as default
51
+ q as default
50
52
  };
51
53
  //# sourceMappingURL=DropdownOverlay.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownOverlay.vue.js","sources":["../../../src/utils/DropdownOverlay/DropdownOverlay.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useElementPosition } from '../../composition/usePosition';\nimport { scrollIntoView } from '../../helpers/dom';\nimport { tapIf } from '@milaboratories/helpers';\nimport { reactive, ref, toRef, watch } from 'vue';\n\nconst props = defineProps<{\n root: HTMLElement | undefined; // element to \"track\"\n gap?: number; // additional gap between overlay and \"root\" component\n}>();\n\nconst data = reactive({\n optionsHeight: 0,\n});\n\nconst optionsStyle = reactive({\n top: '0px',\n left: '0px',\n width: '0px',\n});\n\nconst rootRef = toRef(props, 'root');\n\nconst listRef = ref<HTMLElement>();\n\nconst scrollIntoActive = () => {\n const $list = listRef.value;\n\n if (!$list) {\n return;\n }\n\n tapIf($list.querySelector('.hovered-item') as HTMLElement, (opt) => {\n scrollIntoView($list, opt);\n });\n};\n\ndefineExpose({\n scrollIntoActive,\n listRef,\n});\n\nwatch(listRef, (el) => {\n if (el) {\n requestAnimationFrame(() => {\n const rect = el.getBoundingClientRect();\n data.optionsHeight = rect.height;\n window.dispatchEvent(new CustomEvent('adjust'));\n });\n }\n});\n\nuseElementPosition(rootRef, (pos) => {\n const bodyRect = document.body.getBoundingClientRect();\n\n const top = pos.top - bodyRect.top;\n\n const left = pos.left - bodyRect.left;\n\n const gap = props.gap ?? 0;\n\n const downTopOffset = top + pos.height + gap;\n\n if (downTopOffset + data.optionsHeight > pos.clientHeight) {\n optionsStyle.top = top - data.optionsHeight - gap + 'px';\n } else {\n optionsStyle.top = downTopOffset + 'px';\n }\n\n optionsStyle.left = left + 'px';\n optionsStyle.width = pos.width + 'px';\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <div ref=\"listRef\" v-bind=\"$attrs\" :style=\"optionsStyle\" tabindex=\"-1\">\n <slot ref=\"list\" />\n </div>\n </Teleport>\n</template>\n"],"names":["props","__props","data","reactive","optionsStyle","rootRef","toRef","listRef","ref","__expose","$list","tapIf","opt","scrollIntoView","watch","el","rect","useElementPosition","pos","bodyRect","top","left","gap","downTopOffset"],"mappings":";;;;;;;;;;;AAMA,UAAMA,IAAQC,GAKRC,IAAOC,EAAS;AAAA,MACpB,eAAe;AAAA,IAAA,CAChB,GAEKC,IAAeD,EAAS;AAAA,MAC5B,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,IAAA,CACR,GAEKE,IAAUC,EAAMN,GAAO,MAAM,GAE7BO,IAAUC,EAAiB;AAcpB,WAAAC,EAAA;AAAA,MACX,kBAbuB,MAAM;AAC7B,cAAMC,IAAQH,EAAQ;AAEtB,QAAKG,KAILC,EAAMD,EAAM,cAAc,eAAe,GAAkB,CAACE,MAAQ;AAClE,UAAAC,EAAeH,GAAOE,CAAG;AAAA,QAAA,CAC1B;AAAA,MACH;AAAA,MAIE,SAAAL;AAAA,IAAA,CACD,GAEKO,EAAAP,GAAS,CAACQ,MAAO;AACrB,MAAIA,KACF,sBAAsB,MAAM;AACpB,cAAAC,IAAOD,EAAG,sBAAsB;AACtC,QAAAb,EAAK,gBAAgBc,EAAK,QAC1B,OAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,MAAA,CAC/C;AAAA,IACH,CACD,GAEkBC,EAAAZ,GAAS,CAACa,MAAQ;AAC7B,YAAAC,IAAW,SAAS,KAAK,sBAAsB,GAE/CC,IAAMF,EAAI,MAAMC,EAAS,KAEzBE,IAAOH,EAAI,OAAOC,EAAS,MAE3BG,IAAMtB,EAAM,OAAO,GAEnBuB,IAAgBH,IAAMF,EAAI,SAASI;AAEzC,MAAIC,IAAgBrB,EAAK,gBAAgBgB,EAAI,eAC3Cd,EAAa,MAAMgB,IAAMlB,EAAK,gBAAgBoB,IAAM,OAEpDlB,EAAa,MAAMmB,IAAgB,MAGrCnB,EAAa,OAAOiB,IAAO,MACdjB,EAAA,QAAQc,EAAI,QAAQ;AAAA,IAAA,CAClC;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DropdownOverlay.vue.js","sources":["../../../src/utils/DropdownOverlay/DropdownOverlay.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { useElementPosition } from '../../composition/usePosition';\nimport { scrollIntoView } from '../../helpers/dom';\nimport { tapIf } from '@milaboratories/helpers';\nimport { reactive, ref, toRef, watch } from 'vue';\n\nconst props = defineProps<{\n root: HTMLElement | undefined; // element to \"track\"\n gap?: number; // additional gap between overlay and \"root\" component\n}>();\n\nconst data = reactive({\n optionsHeight: 0,\n});\n\nconst optionsStyle = reactive({\n top: '0px',\n left: '0px',\n width: '0px',\n});\n\nconst rootRef = toRef(props, 'root');\n\nconst listRef = ref<HTMLElement>();\n\nconst scrollIntoActive = () => {\n const $list = listRef.value;\n\n if (!$list) {\n return;\n }\n\n tapIf($list.querySelector('.hovered-item') as HTMLElement, (opt) => {\n scrollIntoView($list, opt);\n });\n};\n\ndefineExpose({\n scrollIntoActive,\n listRef,\n});\n\nwatch(listRef, (el) => {\n if (el) {\n requestAnimationFrame(() => {\n const rect = el.getBoundingClientRect();\n data.optionsHeight = rect.height;\n window.dispatchEvent(new CustomEvent('adjust'));\n });\n }\n});\n\nuseElementPosition(rootRef, (pos) => {\n const bodyRect = document.body.getBoundingClientRect();\n\n const top = pos.top - bodyRect.top;\n\n const left = pos.left - bodyRect.left;\n\n const gap = props.gap ?? 0;\n\n const downTopOffset = top + pos.height + gap;\n\n if (downTopOffset + data.optionsHeight > pos.clientHeight) {\n optionsStyle.top = top - data.optionsHeight - gap + 'px';\n } else {\n optionsStyle.top = downTopOffset + 'px';\n }\n\n optionsStyle.left = left + 'px';\n optionsStyle.width = pos.width + 'px';\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <div\n ref=\"listRef\"\n v-bind=\"$attrs\"\n :style=\"optionsStyle\"\n tabindex=\"-1\"\n @click.stop\n >\n <slot ref=\"list\" />\n </div>\n </Teleport>\n</template>\n"],"names":["props","__props","data","reactive","optionsStyle","rootRef","toRef","listRef","ref","__expose","$list","tapIf","opt","scrollIntoView","watch","el","rect","useElementPosition","pos","bodyRect","top","left","gap","downTopOffset"],"mappings":";;;;;;;;;;;AAMA,UAAMA,IAAQC,GAKRC,IAAOC,EAAS;AAAA,MACpB,eAAe;AAAA,IAAA,CAChB,GAEKC,IAAeD,EAAS;AAAA,MAC5B,KAAK;AAAA,MACL,MAAM;AAAA,MACN,OAAO;AAAA,IAAA,CACR,GAEKE,IAAUC,EAAMN,GAAO,MAAM,GAE7BO,IAAUC,EAAiB;AAcpB,WAAAC,EAAA;AAAA,MACX,kBAbuB,MAAM;AAC7B,cAAMC,IAAQH,EAAQ;AAEtB,QAAKG,KAILC,EAAMD,EAAM,cAAc,eAAe,GAAkB,CAACE,MAAQ;AAClE,UAAAC,EAAeH,GAAOE,CAAG;AAAA,QAAA,CAC1B;AAAA,MACH;AAAA,MAIE,SAAAL;AAAA,IAAA,CACD,GAEKO,EAAAP,GAAS,CAACQ,MAAO;AACrB,MAAIA,KACF,sBAAsB,MAAM;AACpB,cAAAC,IAAOD,EAAG,sBAAsB;AACtC,QAAAb,EAAK,gBAAgBc,EAAK,QAC1B,OAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,MAAA,CAC/C;AAAA,IACH,CACD,GAEkBC,EAAAZ,GAAS,CAACa,MAAQ;AAC7B,YAAAC,IAAW,SAAS,KAAK,sBAAsB,GAE/CC,IAAMF,EAAI,MAAMC,EAAS,KAEzBE,IAAOH,EAAI,OAAOC,EAAS,MAE3BG,IAAMtB,EAAM,OAAO,GAEnBuB,IAAgBH,IAAMF,EAAI,SAASI;AAEzC,MAAIC,IAAgBrB,EAAK,gBAAgBgB,EAAI,eAC3Cd,EAAa,MAAMgB,IAAMlB,EAAK,gBAAgBoB,IAAM,OAEpDlB,EAAa,MAAMmB,IAAgB,MAGrCnB,EAAa,OAAOiB,IAAO,MACdjB,EAAA,QAAQc,EAAI,QAAQ;AAAA,IAAA,CAClC;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/uikit",
3
- "version": "2.3.29",
3
+ "version": "2.4.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -30,8 +30,8 @@
30
30
  "d3-selection": "^3.0.0",
31
31
  "d3-axis": "^3.0.0",
32
32
  "resize-observer-polyfill": "^1.5.1",
33
- "@platforma-sdk/model": "^1.42.10",
34
- "@milaboratories/helpers": "^1.6.19"
33
+ "@milaboratories/helpers": "^1.6.19",
34
+ "@platforma-sdk/model": "^1.42.10"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@vitejs/plugin-vue": "^5.2.3",
@@ -14,12 +14,12 @@ import { tap } from '../../helpers/functions';
14
14
  import { PlTooltip } from '../PlTooltip';
15
15
  import DoubleContour from '../../utils/DoubleContour.vue';
16
16
  import { useLabelNotch } from '../../utils/useLabelNotch';
17
- import type { ListOption, ListOptionNormalized } from '../../types';
17
+ import type { ListOption, ListOptionNormalized, MaskIconName16, MaskIconName24 } from '../../types';
18
18
  import { deepEqual } from '../../helpers/objects';
19
19
  import LongText from '../LongText.vue';
20
20
  import { normalizeListOptions } from '../../helpers/utils';
21
21
  import { PlIcon16 } from '../PlIcon16';
22
- import { PlMaskIcon24 } from '../PlMaskIcon24';
22
+ import { PlIcon24 } from '../PlIcon24';
23
23
  import SvgRequired from '../../generated/components/svg/images/SvgRequired.vue';
24
24
  import { getErrorMessage } from '../../helpers/error.ts';
25
25
  import OptionList from './OptionList.vue';
@@ -78,11 +78,11 @@ const props = withDefaults(
78
78
  /**
79
79
  * Custom icon (16px) class for the dropdown arrow (optional)
80
80
  */
81
- arrowIcon?: string;
81
+ arrowIcon?: MaskIconName16;
82
82
  /**
83
83
  * Custom icon (24px) class for the dropdown arrow (optional)
84
84
  */
85
- arrowIconLarge?: string;
85
+ arrowIconLarge?: MaskIconName24;
86
86
  /**
87
87
  * Option list item size
88
88
  */
@@ -104,10 +104,6 @@ const props = withDefaults(
104
104
  },
105
105
  );
106
106
 
107
- const slots = defineSlots<{
108
- [key: string]: unknown;
109
- }>();
110
-
111
107
  const rootRef = ref<HTMLElement | undefined>();
112
108
  const input = ref<HTMLInputElement | undefined>();
113
109
 
@@ -342,20 +338,20 @@ watchPostEffect(() => {
342
338
  </div>
343
339
 
344
340
  <div class="pl-dropdown__controls">
345
- <PlMaskIcon24 v-if="isLoadingOptions" name="loading" />
341
+ <PlIcon24 v-if="isLoadingOptions" name="loading" />
346
342
  <PlIcon16 v-if="clearable && hasValue" class="clear" name="delete-clear" @click.stop="clear" />
347
343
  <slot name="append" />
348
344
  <div class="pl-dropdown__arrow-wrapper" @click.stop="toggleOpen">
349
- <div v-if="arrowIconLarge" class="arrow-icon" :class="[`icon-24 ${arrowIconLarge}`]" />
350
- <div v-else-if="arrowIcon" class="arrow-icon" :class="[`icon-16 ${arrowIcon}`]" />
351
- <div v-else class="arrow-icon arrow-icon-default" />
345
+ <PlIcon24 v-if="arrowIconLarge" :name="arrowIconLarge" class="arrow-icon" />
346
+ <PlIcon16 v-else-if="arrowIcon" :name="arrowIcon" class="arrow-icon" />
347
+ <PlIcon16 v-else name="chevron-down" class="arrow-icon arrow-icon-default" />
352
348
  </div>
353
349
  </div>
354
350
  </div>
355
351
  <label v-if="label">
356
352
  <SvgRequired v-if="required" />
357
353
  <span>{{ label }}</span>
358
- <PlTooltip v-if="slots.tooltip" class="info" position="top">
354
+ <PlTooltip v-if="$slots.tooltip" class="info" position="top">
359
355
  <template #tooltip>
360
356
  <slot name="tooltip" />
361
357
  </template>
@@ -1,4 +1,4 @@
1
- @use "../../assets/mixins.scss" as *;
1
+ @use '../../assets/mixins.scss' as *;
2
2
 
3
3
  .pl-dropdown__options {
4
4
  --option-hover-bg: var(--btn-sec-hover-grey);
@@ -41,7 +41,7 @@
41
41
  @include abs-center-y();
42
42
  }
43
43
 
44
- >span {
44
+ > span {
45
45
  display: block;
46
46
  overflow: hidden;
47
47
  white-space: nowrap;
@@ -187,10 +187,8 @@
187
187
  gap: 6px;
188
188
  margin-left: auto;
189
189
 
190
-
191
190
  .mask-16,
192
191
  .mask-24 {
193
- --icon-color: var(--control-mask-fill);
194
192
  cursor: pointer;
195
193
  }
196
194
 
@@ -214,11 +212,9 @@
214
212
  .arrow-icon {
215
213
  cursor: pointer;
216
214
 
217
- // Default "arrow" icon (16x16)
215
+ // Default "arrow" icon (16x16)
218
216
  &.arrow-icon-default {
219
- transition: transform .2s;
220
- background-color: var(--control-mask-fill);
221
- @include mask(url('../../assets/images/16_chevron-down.svg'), 16px);
217
+ transition: transform 0.2s;
222
218
  }
223
219
  }
224
220
 
@@ -239,7 +235,6 @@
239
235
 
240
236
  .arrow-icon {
241
237
  &.arrow-icon-default {
242
- background-color: var(--control-mask-fill);
243
238
  transform: rotate(-180deg);
244
239
  }
245
240
  }
@@ -268,7 +263,7 @@
268
263
 
269
264
  &.disabled {
270
265
  --contour-color: var(--color-dis-01);
271
- --control-mask-fill: var(--color-dis-01);
266
+ --icon-color: var(--color-dis-01);
272
267
  --label-color: var(--color-dis-01);
273
268
  cursor: not-allowed;
274
269
  pointer-events: none;
@@ -278,4 +273,4 @@
278
273
  color: var(--dis-01);
279
274
  }
280
275
  }
281
- }
276
+ }
@@ -273,7 +273,15 @@ useElementPosition(container, (pos) => {
273
273
  <div v-show="canShowClearBtn" class="pl-line-dropdown__icon-clear" @click="clearModel" />
274
274
  </div>
275
275
  <Teleport v-if="data.isOpen" to="body">
276
- <div v-if="props.mode === 'list'" ref="list" :style="optionsStyle" tabindex="-1" class="pl-line-dropdown__items" @focusout="onFocusOut">
276
+ <div
277
+ v-if="props.mode === 'list'"
278
+ ref="list"
279
+ :style="optionsStyle"
280
+ tabindex="-1"
281
+ class="pl-line-dropdown__items"
282
+ @focusout="onFocusOut"
283
+ @click.stop
284
+ >
277
285
  <template v-for="(item, index) in options" :key="index">
278
286
  <slot
279
287
  name="item"
@@ -305,6 +313,7 @@ useElementPosition(container, (pos) => {
305
313
  tabindex="-1"
306
314
  class="pl-line-dropdown__items-tabs"
307
315
  @focusout="onFocusOut"
316
+ @click.stop
308
317
  >
309
318
  <template v-for="(item, index) in options" :key="index">
310
319
  <slot name="item" :item="item" :is-selected="isItemSelected(item)" :is-hovered="data.activeOption == index" @click.stop="selectItem(item)">
@@ -7,10 +7,10 @@ export default {
7
7
  };
8
8
  </script>
9
9
 
10
- <script lang="ts" setup>
11
- import type { ModelRef, RefOption } from '../../types';
12
- import { PlDropdown } from '../PlDropdown';
10
+ <script lang="ts" setup generic="M = ModelRef">
13
11
  import { computed, useSlots } from 'vue';
12
+ import type { ListOption, ModelRef, RefOption } from '../../types';
13
+ import { PlDropdown } from '../PlDropdown';
14
14
 
15
15
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
16
  const slots: any = useSlots();
@@ -19,7 +19,7 @@ defineEmits<{
19
19
  /**
20
20
  * Emitted when the model value is updated.
21
21
  */
22
- (e: 'update:modelValue', value: ModelRef | undefined): void;
22
+ (e: 'update:modelValue', value: M | undefined): void;
23
23
  }>();
24
24
 
25
25
  const props = withDefaults(
@@ -27,7 +27,7 @@ const props = withDefaults(
27
27
  /**
28
28
  * The current selected ref of the dropdown.
29
29
  */
30
- modelValue: ModelRef | undefined;
30
+ modelValue: M | undefined;
31
31
  /**
32
32
  * The label text for the dropdown field (optional)
33
33
  */
@@ -35,7 +35,7 @@ const props = withDefaults(
35
35
  /**
36
36
  * List of available ref options for the dropdown
37
37
  */
38
- options?: Readonly<RefOption[]>;
38
+ options?: Readonly<RefOption[] | ListOption<M>[]>;
39
39
  /**
40
40
  * A helper text displayed below the dropdown when there are no errors (optional).
41
41
  */
@@ -85,14 +85,16 @@ const props = withDefaults(
85
85
  );
86
86
 
87
87
  const options = computed(() =>
88
- props.options?.map((opt) => ({
89
- label: opt.label,
90
- value: opt.ref,
91
- group: opt.group,
92
- })),
88
+ props.options?.map((opt) =>
89
+ 'ref' in opt
90
+ ? {
91
+ label: opt.label,
92
+ value: opt.ref,
93
+ group: opt.group,
94
+ } as ListOption<M>
95
+ : opt,
96
+ ),
93
97
  );
94
-
95
- const arrowIcon = computed(() => (props.disabled ? 'icon-link-disabled' : 'icon-link'));
96
98
  </script>
97
99
 
98
100
  <template>
@@ -100,7 +102,7 @@ const arrowIcon = computed(() => (props.disabled ? 'icon-link-disabled' : 'icon-
100
102
  v-bind="props"
101
103
  :options="options"
102
104
  :loading-options-helper="loadingOptionsHelper"
103
- :arrow-icon-large="arrowIcon"
105
+ :arrow-icon-large="disabled ? 'link-disabled' : 'link'"
104
106
  @update:model-value="$emit('update:modelValue', $event)"
105
107
  >
106
108
  <template v-if="slots.tooltip" #tooltip>
@@ -74,7 +74,13 @@ useElementPosition(rootRef, (pos) => {
74
74
 
75
75
  <template>
76
76
  <Teleport to="body">
77
- <div ref="listRef" v-bind="$attrs" :style="optionsStyle" tabindex="-1">
77
+ <div
78
+ ref="listRef"
79
+ v-bind="$attrs"
80
+ :style="optionsStyle"
81
+ tabindex="-1"
82
+ @click.stop
83
+ >
78
84
  <slot ref="list" />
79
85
  </div>
80
86
  </Teleport>