@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.
- package/.turbo/turbo-build.log +24 -24
- package/.turbo/turbo-test.log +133 -0
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +10 -0
- package/dist/components/DataTable/TableComponent.vue.js +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue.js +27 -0
- package/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -0
- package/dist/components/PlAccordion/ExpandTransition.vue3.js +1 -1
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.d.ts +6 -7
- package/dist/components/PlDropdown/PlDropdown.vue.d.ts.map +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.js +78 -75
- package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +100 -96
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.d.ts +68 -123
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.d.ts.map +1 -1
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js +23 -21
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
- package/dist/utils/DropdownOverlay/DropdownOverlay.vue.d.ts.map +1 -1
- package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js +19 -17
- package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
- package/package.json +3 -3
- package/src/components/PlDropdown/PlDropdown.vue +9 -13
- package/src/components/PlDropdown/pl-dropdown.scss +6 -11
- package/src/components/PlDropdownLine/PlDropdownLine.vue +10 -1
- package/src/components/PlDropdownRef/PlDropdownRef.vue +16 -14
- package/src/utils/DropdownOverlay/DropdownOverlay.vue +7 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
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__ */
|
|
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(
|
|
22
|
-
const
|
|
21
|
+
setup(t) {
|
|
22
|
+
const n = p(), l = t, r = s(
|
|
23
23
|
() => {
|
|
24
|
-
var
|
|
25
|
-
return (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
)
|
|
32
|
-
return (
|
|
33
|
-
options:
|
|
34
|
-
"loading-options-helper":
|
|
35
|
-
"arrow-icon-large":
|
|
36
|
-
"onUpdate:modelValue":
|
|
37
|
-
}),
|
|
38
|
-
a(
|
|
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:
|
|
41
|
-
b(
|
|
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
|
|
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{
|
|
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":"
|
|
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
|
|
2
|
-
import { useElementPosition as
|
|
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
|
|
5
|
-
const
|
|
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:
|
|
12
|
-
const r = f, i =
|
|
11
|
+
setup(f, { expose: d }) {
|
|
12
|
+
const r = f, i = c({
|
|
13
13
|
optionsHeight: 0
|
|
14
|
-
}), o =
|
|
14
|
+
}), o = c({
|
|
15
15
|
top: "0px",
|
|
16
16
|
left: "0px",
|
|
17
17
|
width: "0px"
|
|
18
|
-
}),
|
|
19
|
-
return
|
|
18
|
+
}), a = h(r, "root"), n = u();
|
|
19
|
+
return d({
|
|
20
20
|
scrollIntoActive: () => {
|
|
21
21
|
const t = n.value;
|
|
22
|
-
t &&
|
|
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
|
-
}),
|
|
33
|
-
const e = document.body.getBoundingClientRect(), s = t.top - e.top, m = t.left - e.left, p = r.gap ?? 0,
|
|
34
|
-
|
|
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",
|
|
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
|
-
|
|
45
|
+
b(t.$slots, "default", { ref: "list" })
|
|
44
46
|
], 16)
|
|
45
47
|
]));
|
|
46
48
|
}
|
|
47
49
|
});
|
|
48
50
|
export {
|
|
49
|
-
|
|
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
|
|
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
|
+
"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
|
-
"@
|
|
34
|
-
"@
|
|
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 {
|
|
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?:
|
|
81
|
+
arrowIcon?: MaskIconName16;
|
|
82
82
|
/**
|
|
83
83
|
* Custom icon (24px) class for the dropdown arrow (optional)
|
|
84
84
|
*/
|
|
85
|
-
arrowIconLarge?:
|
|
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
|
-
<
|
|
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
|
-
<
|
|
350
|
-
<
|
|
351
|
-
<
|
|
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
|
|
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
|
-
--
|
|
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
|
|
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:
|
|
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:
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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="
|
|
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
|
|
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>
|