@milaboratories/uikit 2.6.1 → 2.6.3
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 +143 -143
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +14 -0
- package/dist/base/BtnBase.vue.js +18 -18
- package/dist/base/BtnBase.vue.js.map +1 -1
- package/dist/components/ContextProvider.vue.js.map +1 -1
- package/dist/components/DataTable/BaseCellComponent.vue.js +20 -20
- package/dist/components/DataTable/BaseCellComponent.vue.js.map +1 -1
- package/dist/components/DataTable/ColumnCaret.vue.js +6 -6
- package/dist/components/DataTable/ColumnCaret.vue.js.map +1 -1
- package/dist/components/DataTable/ColumnsCommandMenu.vue.js.map +1 -1
- package/dist/components/DataTable/RowsCommandMenu.vue.js.map +1 -1
- package/dist/components/DataTable/TScroll.vue.js +12 -12
- package/dist/components/DataTable/TScroll.vue.js.map +1 -1
- package/dist/components/DataTable/TableComponent.vue.js +5 -3
- package/dist/components/DataTable/TableComponent.vue.js.map +1 -1
- package/dist/components/DataTable/TdCell.vue.js +36 -36
- package/dist/components/DataTable/TdCell.vue.js.map +1 -1
- package/dist/components/DataTable/ThCell.vue.js +27 -27
- package/dist/components/DataTable/ThCell.vue.js.map +1 -1
- package/dist/components/DataTable/TrBody.vue.js +12 -12
- package/dist/components/DataTable/TrBody.vue.js.map +1 -1
- package/dist/components/DataTable/TrHead.vue.js.map +1 -1
- package/dist/components/DataTable/assets/TableIcon.vue.js +2 -2
- package/dist/components/DataTable/assets/TableIcon.vue.js.map +1 -1
- package/dist/components/DropdownListItem.vue.js +18 -18
- package/dist/components/DropdownListItem.vue.js.map +1 -1
- package/dist/components/HScroll.vue.js.map +1 -1
- package/dist/components/InputRange.vue.js.map +1 -1
- package/dist/components/LongText.vue.js +1 -1
- package/dist/components/LongText.vue.js.map +1 -1
- package/dist/components/LongText.vue3.js +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -1
- package/dist/components/PlAccordion/ExpandTransition.vue3.js +1 -1
- package/dist/components/PlAccordion/PlAccordion.vue.js.map +1 -1
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js +21 -21
- package/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
- package/dist/components/PlAlert/PlAlert.vue.js +23 -23
- package/dist/components/PlAlert/PlAlert.vue.js.map +1 -1
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.d.ts +4 -0
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.js +112 -106
- package/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts +4 -0
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js +100 -94
- package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js.map +1 -1
- package/dist/components/PlBtnAccent/PlBtnAccent.vue.js.map +1 -1
- package/dist/components/PlBtnDanger/PlBtnDanger.vue.js.map +1 -1
- package/dist/components/PlBtnGhost/PlBtnGhost.vue.js +21 -21
- package/dist/components/PlBtnGhost/PlBtnGhost.vue.js.map +1 -1
- package/dist/components/PlBtnGroup/PlBtnGroup.vue.js +34 -34
- package/dist/components/PlBtnGroup/PlBtnGroup.vue.js.map +1 -1
- package/dist/components/PlBtnLink/PlBtnLink.vue.js +12 -12
- package/dist/components/PlBtnLink/PlBtnLink.vue.js.map +1 -1
- package/dist/components/PlBtnPrimary/PlBtnPrimary.vue.js.map +1 -1
- package/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js.map +1 -1
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.js +31 -31
- package/dist/components/PlBtnSplit/PlBtnSplit.vue.js.map +1 -1
- package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js +18 -18
- package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/Legends.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js +15 -15
- package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRow.vue2.js.map +1 -1
- package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js.map +1 -1
- package/dist/components/PlCheckbox/PlCheckbox.vue.js +13 -13
- package/dist/components/PlCheckbox/PlCheckbox.vue.js.map +1 -1
- package/dist/components/PlCheckbox/PlCheckboxBase.vue.js +6 -6
- package/dist/components/PlCheckbox/PlCheckboxBase.vue.js.map +1 -1
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js +28 -28
- package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js.map +1 -1
- package/dist/components/PlChip/PlChip.vue.js +20 -20
- package/dist/components/PlChip/PlChip.vue.js.map +1 -1
- package/dist/components/PlClipboard/PlClipboard.vue2.js.map +1 -1
- package/dist/components/PlConfirmDialog.vue.js +14 -14
- package/dist/components/PlConfirmDialog.vue.js.map +1 -1
- package/dist/components/PlDialogModal/PlDialogModal.vue.js +30 -30
- package/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
- package/dist/components/PlDropdown/OptionList.vue.js +40 -40
- package/dist/components/PlDropdown/OptionList.vue.js.map +1 -1
- package/dist/components/PlDropdown/PlDropdown.vue.d.ts +8 -0
- package/dist/components/PlDropdown/PlDropdown.vue.js +102 -95
- package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
- package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js +95 -93
- package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js.map +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts +1 -1
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +4 -4
- package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
- package/dist/components/PlDropdownLine/ResizableInput.vue.js +12 -12
- package/dist/components/PlDropdownLine/ResizableInput.vue.js.map +1 -1
- package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.d.ts +4 -0
- package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js +88 -82
- package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js.map +1 -1
- package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.d.ts +1 -1
- package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js.map +1 -1
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js +11 -11
- package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
- package/dist/components/PlEditableTitle/PlEditableTitle.vue.d.ts +1 -1
- package/dist/components/PlEditableTitle/PlEditableTitle.vue.js +36 -36
- package/dist/components/PlEditableTitle/PlEditableTitle.vue.js.map +1 -1
- package/dist/components/PlElementList/PlElementList.vue.d.ts +20 -0
- package/dist/components/PlElementList/PlElementList.vue2.js +180 -135
- package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
- package/dist/components/PlElementList/PlElementListItem.vue.d.ts +20 -0
- package/dist/components/PlElementList/PlElementListItem.vue2.js +101 -76
- package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
- package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js.map +1 -1
- package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Local.vue.js +24 -24
- package/dist/components/PlFileDialog/Local.vue.js.map +1 -1
- package/dist/components/PlFileDialog/PlFileDialog.vue.js +38 -38
- package/dist/components/PlFileDialog/PlFileDialog.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Remote.vue.js +2 -2
- package/dist/components/PlFileDialog/Remote.vue.js.map +1 -1
- package/dist/components/PlFileDialog/Shortcuts.vue2.js +4 -4
- package/dist/components/PlFileDialog/Shortcuts.vue2.js.map +1 -1
- package/dist/components/PlFileInput/PlFileInput.vue.d.ts +1 -1
- package/dist/components/PlFileInput/PlFileInput.vue.js +78 -76
- package/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
- package/dist/components/PlIcon16/PlIcon16.vue2.js.map +1 -1
- package/dist/components/PlIcon24/PlIcon24.vue2.js.map +1 -1
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js +11 -11
- package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js.map +1 -1
- package/dist/components/PlLogView/PlLogView.vue.js +62 -60
- package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js +22 -22
- package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js.map +1 -1
- package/dist/components/PlNumberField/PlNumberField.vue.d.ts +6 -1
- package/dist/components/PlNumberField/PlNumberField.vue.js +66 -60
- package/dist/components/PlNumberField/PlNumberField.vue.js.map +1 -1
- package/dist/components/PlProgressBar/PlProgressBar.vue.js +12 -12
- package/dist/components/PlProgressBar/PlProgressBar.vue.js.map +1 -1
- package/dist/components/PlProgressCell/PlProgressCell.vue.js +20 -20
- package/dist/components/PlProgressCell/PlProgressCell.vue.js.map +1 -1
- package/dist/components/PlRadio/PlRadio.vue2.js.map +1 -1
- package/dist/components/PlRadio/PlRadioGroup.vue2.js +8 -8
- package/dist/components/PlRadio/PlRadioGroup.vue2.js.map +1 -1
- package/dist/components/PlSearchField/PlSearchField.vue2.js +19 -19
- package/dist/components/PlSearchField/PlSearchField.vue2.js.map +1 -1
- package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js +8 -8
- package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js.map +1 -1
- package/dist/components/PlSidebar/PlSidebarGroup.vue2.js.map +1 -1
- package/dist/components/PlSidebar/PlSidebarItem.vue2.js.map +1 -1
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +5 -3
- package/dist/components/PlSlideModal/PlPureSlideModal.vue.js.map +1 -1
- package/dist/components/PlSlideModal/PlSlideModal.vue2.js.map +1 -1
- package/dist/components/PlSplash/PlSplash.vue.js +16 -16
- package/dist/components/PlSplash/PlSplash.vue.js.map +1 -1
- package/dist/components/PlStatusTag/PlStatusTag.vue.js +7 -7
- package/dist/components/PlStatusTag/PlStatusTag.vue.js.map +1 -1
- package/dist/components/PlSvg/PlSvg.vue2.js.map +1 -1
- package/dist/components/PlTabs/PlTabs.vue.js +18 -18
- package/dist/components/PlTabs/PlTabs.vue.js.map +1 -1
- package/dist/components/PlTabs/Tab.vue.js +9 -9
- package/dist/components/PlTabs/Tab.vue.js.map +1 -1
- package/dist/components/PlTextArea/PlTextArea.vue.js +55 -53
- package/dist/components/PlTextArea/PlTextArea.vue.js.map +1 -1
- package/dist/components/PlTextField/PlTextField.vue.d.ts +4 -0
- package/dist/components/PlTextField/PlTextField.vue.js +66 -60
- package/dist/components/PlTextField/PlTextField.vue.js.map +1 -1
- package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js +14 -14
- package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js.map +1 -1
- package/dist/components/PlTooltip/Beak.vue.js +2 -2
- package/dist/components/PlTooltip/Beak.vue.js.map +1 -1
- package/dist/components/PlTooltip/PlTooltip.vue.js +50 -50
- package/dist/components/PlTooltip/PlTooltip.vue.js.map +1 -1
- package/dist/components/Scrollable.vue.js.map +1 -1
- package/dist/components/Slider.vue.js +35 -35
- package/dist/components/Slider.vue.js.map +1 -1
- package/dist/components/SliderRange.vue.js +47 -47
- package/dist/components/SliderRange.vue.js.map +1 -1
- package/dist/components/SliderRangeTriple.vue.js +47 -47
- package/dist/components/SliderRangeTriple.vue.js.map +1 -1
- package/dist/components/TabItem.vue.js.map +1 -1
- package/dist/components/ThemeSwitcher.vue.js +2 -2
- package/dist/components/ThemeSwitcher.vue.js.map +1 -1
- package/dist/components/TransitionSlidePanel.vue.js.map +1 -1
- package/dist/components/VScroll.vue.js.map +1 -1
- package/dist/components/contextMenu/Menu.vue2.js +12 -12
- package/dist/components/contextMenu/Menu.vue2.js.map +1 -1
- package/dist/composition/filters/metadata.d.ts +205 -0
- package/dist/composition/filters/metadata.js +129 -19
- package/dist/composition/filters/metadata.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/layout/PlBlockPage/PlBlockPage.vue.js +27 -27
- package/dist/layout/PlBlockPage/PlBlockPage.vue.js.map +1 -1
- package/dist/layout/PlContainer/PlContainer.vue.js +10 -10
- package/dist/layout/PlContainer/PlContainer.vue.js.map +1 -1
- package/dist/layout/PlGrid/PlGrid.vue.js.map +1 -1
- package/dist/layout/PlRow/PlRow.vue.js +8 -8
- package/dist/layout/PlRow/PlRow.vue.js.map +1 -1
- package/dist/layout/PlSpacer/PlSpacer.vue.js.map +1 -1
- package/dist/utils/DoubleContour.vue.d.ts +7 -1
- package/dist/utils/DoubleContour.vue.js +20 -13
- package/dist/utils/DoubleContour.vue.js.map +1 -1
- package/dist/utils/DoubleContour.vue3.js +7 -0
- package/dist/utils/DoubleContour.vue3.js.map +1 -0
- package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
- package/dist/utils/PlCloseModalBtn.vue.js +2 -2
- package/dist/utils/PlCloseModalBtn.vue.js.map +1 -1
- package/dist/utils/TextLabel.vue.js.map +1 -1
- package/package.json +5 -5
- package/src/components/PlAutocomplete/PlAutocomplete.vue +6 -1
- package/src/components/PlAutocompleteMulti/PlAutocompleteMulti.vue +6 -1
- package/src/components/PlDropdown/PlDropdown.vue +12 -2
- package/src/components/PlDropdownMulti/PlDropdownMulti.vue +6 -1
- package/src/components/PlElementList/PlElementList.vue +40 -6
- package/src/components/PlElementList/PlElementListItem.vue +64 -47
- package/src/components/PlNumberField/PlNumberField.vue +4 -1
- package/src/components/PlTextField/PlTextField.vue +5 -1
- package/src/composition/filters/metadata.ts +105 -0
- package/src/utils/DoubleContour.vue +68 -2
- package/dist/utils/DoubleContour.vue2.js +0 -7
- package/dist/utils/DoubleContour.vue2.js.map +0 -1
|
@@ -1,53 +1,53 @@
|
|
|
1
1
|
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".pl-block-page{--pl-block-page-body-padding: var(--main-spacing, 24px);padding:var(--container-spacing);background-color:var(--bg-elevated-01);height:100%;max-width:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.pl-block-page.noBodyGutters{--pl-block-page-body-padding: 0}.pl-block-page__title{height:80px;display:flex;align-items:center;gap:12px;padding:20px 24px;min-width:0;max-width:100%}.pl-block-page__title__default{flex:1;min-width:0;max-width:100%;margin:0;color:var(--txt-01);display:flex;flex-direction:row;align-items:center;gap:12px}.pl-block-page__title__default>span{font-size:28px;font-weight:500;line-height:36px;letter-spacing:-.56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%;display:inline-block}.pl-block-page__title__append{margin-left:auto;display:flex;align-items:center;gap:2px}.pl-block-page__title__append__teleport{display:flex;align-items:center;gap:2px}.pl-block-page__body{max-width:100%;display:flex;flex-direction:column;gap:var(--gap-v);padding:var(--pl-block-page-body-padding);--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-block-page__body::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-block-page__body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-block-page__body::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}")),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})();
|
|
2
|
-
import { defineComponent as p, useSlots as r, createElementBlock as e, openBlock as o, normalizeClass as _, createVNode as
|
|
3
|
-
import { PlBlockPageTitleTeleportId as
|
|
2
|
+
import { defineComponent as p, useSlots as r, createElementBlock as e, openBlock as o, normalizeClass as _, createVNode as u, unref as d, createElementVNode as s, withDirectives as m, renderSlot as l, withCtx as f } from "vue";
|
|
3
|
+
import { PlBlockPageTitleTeleportId as g } from "./PlBlockPageTitleTeleportId.js";
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
const
|
|
5
|
+
import b from "../../components/PlSplash/PlSplash.vue.js";
|
|
6
|
+
const y = {
|
|
7
7
|
key: 0,
|
|
8
8
|
class: "pl-block-page__title"
|
|
9
|
-
},
|
|
9
|
+
}, k = { class: "pl-block-page__title__default" }, h = { class: "pl-block-page__title__append" }, v = ["id"], B = { key: 1 }, T = {
|
|
10
10
|
name: "PlBlockPage"
|
|
11
|
-
},
|
|
12
|
-
...
|
|
11
|
+
}, C = /* @__PURE__ */ p({
|
|
12
|
+
...T,
|
|
13
13
|
props: {
|
|
14
14
|
noBodyGutters: { type: Boolean },
|
|
15
15
|
bodyLoading: { type: Boolean },
|
|
16
16
|
bodyLoadingText: {}
|
|
17
17
|
},
|
|
18
|
-
setup(
|
|
19
|
-
const
|
|
18
|
+
setup(i) {
|
|
19
|
+
const a = r(), n = (t) => {
|
|
20
20
|
t.removeAttribute("title"), t.clientWidth < t.scrollWidth && t.setAttribute("title", t.innerText);
|
|
21
|
-
},
|
|
22
|
-
mounted:
|
|
23
|
-
updated:
|
|
21
|
+
}, c = {
|
|
22
|
+
mounted: n,
|
|
23
|
+
updated: n
|
|
24
24
|
};
|
|
25
|
-
return (t,
|
|
26
|
-
class: _(["pl-layout-component pl-block-page", { noBodyGutters:
|
|
25
|
+
return (t, x) => (o(), e("div", {
|
|
26
|
+
class: _(["pl-layout-component pl-block-page", { noBodyGutters: i.noBodyGutters }])
|
|
27
27
|
}, [
|
|
28
|
-
|
|
29
|
-
s("div",
|
|
30
|
-
|
|
28
|
+
d(a).title ? (o(), e("div", y, [
|
|
29
|
+
s("div", k, [
|
|
30
|
+
m((o(), e("span", null, [
|
|
31
31
|
l(t.$slots, "title")
|
|
32
32
|
])), [
|
|
33
|
-
[
|
|
33
|
+
[c]
|
|
34
34
|
]),
|
|
35
35
|
l(t.$slots, "after-title")
|
|
36
36
|
]),
|
|
37
|
-
s("div",
|
|
37
|
+
s("div", h, [
|
|
38
38
|
s("div", {
|
|
39
|
-
id:
|
|
39
|
+
id: d(g),
|
|
40
40
|
class: "pl-block-page__title__append__teleport"
|
|
41
|
-
}, null, 8,
|
|
41
|
+
}, null, 8, v),
|
|
42
42
|
l(t.$slots, "append")
|
|
43
43
|
])
|
|
44
|
-
])) : (o(), e("div",
|
|
45
|
-
|
|
46
|
-
loading:
|
|
47
|
-
"loading-text":
|
|
44
|
+
])) : (o(), e("div", B)),
|
|
45
|
+
u(b, {
|
|
46
|
+
loading: i.bodyLoading,
|
|
47
|
+
"loading-text": i.bodyLoadingText,
|
|
48
48
|
class: "pl-block-page__body"
|
|
49
49
|
}, {
|
|
50
|
-
default:
|
|
50
|
+
default: f(() => [
|
|
51
51
|
l(t.$slots, "default")
|
|
52
52
|
]),
|
|
53
53
|
_: 3
|
|
@@ -56,6 +56,6 @@ const b = {
|
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
58
|
export {
|
|
59
|
-
|
|
59
|
+
C as default
|
|
60
60
|
};
|
|
61
61
|
//# sourceMappingURL=PlBlockPage.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlBlockPage.vue.js","sources":["../../../src/layout/PlBlockPage/PlBlockPage.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Root block page component */\nexport default {\n name: 'PlBlockPage',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { useSlots } from 'vue';\nimport { PlBlockPageTitleTeleportId } from './PlBlockPageTitleTeleportId';\nimport './pl-block-page.scss';\nimport PlSplash from '../../components/PlSplash/PlSplash.vue';\n\nconst slots = useSlots();\n\ndefineProps<{\n /**\n * If `true` body gutters are removed\n */\n noBodyGutters?: boolean;\n /**\n * If `true`, a loading overlay is displayed on the page body (over all default slot content)\n */\n bodyLoading?: boolean;\n /**\n * Optional body loading text\n */\n bodyLoadingText?: string;\n}>();\n\nconst setTitleIfNeeded = (el: HTMLElement) => {\n el.removeAttribute('title');\n if (el.clientWidth < el.scrollWidth) {\n el.setAttribute('title', el.innerText);\n }\n};\n\nconst vTextOverflownTitle = {\n mounted: setTitleIfNeeded,\n updated: setTitleIfNeeded,\n};\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-block-page\" :class=\"{ noBodyGutters }\">\n <div v-if=\"slots.title\" class=\"pl-block-page__title\">\n <div class=\"pl-block-page__title__default\">\n <span v-text-overflown-title><slot name=\"title\" /></span>\n <slot name=\"after-title\" />\n </div>\n <div class=\"pl-block-page__title__append\">\n <div :id=\"PlBlockPageTitleTeleportId\" class=\"pl-block-page__title__append__teleport\" />\n <slot name=\"append\" />\n </div>\n </div>\n <div v-else />\n <PlSplash :loading=\"bodyLoading\" :loading-text=\"bodyLoadingText\" class=\"pl-block-page__body\">\n <slot />\n </PlSplash>\n </div>\n</template>\n"],"names":["__default__","slots","useSlots","setTitleIfNeeded","el","vTextOverflownTitle"],"mappings":";;;;;;;8HAEAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;AASA,UAAMC,IAAQC,EAAA,GAiBRC,IAAmB,CAACC,MAAoB;AAC5C,MAAAA,EAAG,gBAAgB,OAAO,GACtBA,EAAG,cAAcA,EAAG,eACtBA,EAAG,aAAa,SAASA,EAAG,SAAS;AAAA,IAEzC,GAEMC,IAAsB;AAAA,MAC1B,SAASF;AAAA,MACT,SAASA;AAAA,IAAA
|
|
1
|
+
{"version":3,"file":"PlBlockPage.vue.js","sources":["../../../src/layout/PlBlockPage/PlBlockPage.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Root block page component */\nexport default {\n name: 'PlBlockPage',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { useSlots } from 'vue';\nimport { PlBlockPageTitleTeleportId } from './PlBlockPageTitleTeleportId';\nimport './pl-block-page.scss';\nimport PlSplash from '../../components/PlSplash/PlSplash.vue';\n\nconst slots = useSlots();\n\ndefineProps<{\n /**\n * If `true` body gutters are removed\n */\n noBodyGutters?: boolean;\n /**\n * If `true`, a loading overlay is displayed on the page body (over all default slot content)\n */\n bodyLoading?: boolean;\n /**\n * Optional body loading text\n */\n bodyLoadingText?: string;\n}>();\n\nconst setTitleIfNeeded = (el: HTMLElement) => {\n el.removeAttribute('title');\n if (el.clientWidth < el.scrollWidth) {\n el.setAttribute('title', el.innerText);\n }\n};\n\nconst vTextOverflownTitle = {\n mounted: setTitleIfNeeded,\n updated: setTitleIfNeeded,\n};\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-block-page\" :class=\"{ noBodyGutters }\">\n <div v-if=\"slots.title\" class=\"pl-block-page__title\">\n <div class=\"pl-block-page__title__default\">\n <span v-text-overflown-title><slot name=\"title\" /></span>\n <slot name=\"after-title\" />\n </div>\n <div class=\"pl-block-page__title__append\">\n <div :id=\"PlBlockPageTitleTeleportId\" class=\"pl-block-page__title__append__teleport\" />\n <slot name=\"append\" />\n </div>\n </div>\n <div v-else />\n <PlSplash :loading=\"bodyLoading\" :loading-text=\"bodyLoadingText\" class=\"pl-block-page__body\">\n <slot />\n </PlSplash>\n </div>\n</template>\n"],"names":["__default__","slots","useSlots","setTitleIfNeeded","el","vTextOverflownTitle","_createElementBlock","_normalizeClass","__props","_unref","_openBlock","_hoisted_1","_createElementVNode","_hoisted_2","_renderSlot","_ctx","_hoisted_3","PlBlockPageTitleTeleportId","_hoisted_5","_createVNode","PlSplash"],"mappings":";;;;;;;8HAEAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;AASA,UAAMC,IAAQC,EAAA,GAiBRC,IAAmB,CAACC,MAAoB;AAC5C,MAAAA,EAAG,gBAAgB,OAAO,GACtBA,EAAG,cAAcA,EAAG,eACtBA,EAAG,aAAa,SAASA,EAAG,SAAS;AAAA,IAEzC,GAEMC,IAAsB;AAAA,MAC1B,SAASF;AAAA,MACT,SAASA;AAAA,IAAA;2BAKTG,EAeM,OAAA;AAAA,MAfD,OAAKC,EAAA,CAAC,qCAAmC,EAAA,eAAWC,EAAA,eAAa,CAAA;AAAA,IAAA;MACzDC,EAAAR,CAAA,EAAM,SAAjBS,KAAAJ,EASM,OATNK,GASM;AAAA,QARJC,EAGM,OAHNC,GAGM;AAAA,kBAFJP,EAAyD,QAAA,MAAA;AAAA,YAA5BQ,EAAqBC,EAAA,QAAA,OAAA;AAAA,UAAA;;;UAClDD,EAA2BC,EAAA,QAAA,aAAA;AAAA,QAAA;QAE7BH,EAGM,OAHNI,GAGM;AAAA,UAFJJ,EAAuF,OAAA;AAAA,YAAjF,IAAIH,EAAAQ,CAAA;AAAA,YAA4B,OAAM;AAAA,UAAA;UAC5CH,EAAsBC,EAAA,QAAA,QAAA;AAAA,QAAA;kBAG1BT,EAAc,OAAAY,CAAA;AAAA,MACdC,EAEWC,GAAA;AAAA,QAFA,SAASZ,EAAA;AAAA,QAAc,gBAAcA,EAAA;AAAA,QAAiB,OAAM;AAAA,MAAA;mBACrE,MAAQ;AAAA,UAARM,EAAQC,EAAA,QAAA,SAAA;AAAA,QAAA;;;;;;"}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".pl-container{display:flex;flex-direction:column;gap:var(--gap-v)}")),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
|
|
2
|
-
import { defineComponent as l, computed as a, createBlock as i, openBlock as d, normalizeStyle as r, withCtx as
|
|
2
|
+
import { defineComponent as l, computed as a, createBlock as i, openBlock as d, normalizeStyle as r, withCtx as c, renderSlot as s } from "vue";
|
|
3
3
|
|
|
4
|
-
import
|
|
5
|
-
const
|
|
4
|
+
import m from "../../components/PlSplash/PlSplash.vue.js";
|
|
5
|
+
const p = {
|
|
6
6
|
name: "PlContainer"
|
|
7
7
|
}, y = /* @__PURE__ */ l({
|
|
8
|
-
...
|
|
8
|
+
...p,
|
|
9
9
|
props: {
|
|
10
10
|
width: {},
|
|
11
11
|
loading: { type: Boolean },
|
|
12
12
|
loadingText: {}
|
|
13
13
|
},
|
|
14
|
-
setup(
|
|
15
|
-
const e =
|
|
14
|
+
setup(t) {
|
|
15
|
+
const e = t, o = a(() => ({
|
|
16
16
|
width: e.width
|
|
17
17
|
}));
|
|
18
|
-
return (
|
|
18
|
+
return (n, u) => (d(), i(m, {
|
|
19
19
|
loading: t.loading,
|
|
20
20
|
"loading-text": t.loadingText,
|
|
21
21
|
class: "pl-container pl-layout-component",
|
|
22
|
-
style: r(
|
|
22
|
+
style: r(o.value)
|
|
23
23
|
}, {
|
|
24
|
-
default:
|
|
25
|
-
|
|
24
|
+
default: c(() => [
|
|
25
|
+
s(n.$slots, "default")
|
|
26
26
|
]),
|
|
27
27
|
_: 3
|
|
28
28
|
}, 8, ["loading", "loading-text", "style"]));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlContainer.vue.js","sources":["../../../src/layout/PlContainer/PlContainer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Container with vertical spacing */\nexport default {\n name: 'PlContainer',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport './pl-container.scss';\nimport PlSplash from '../../components/PlSplash/PlSplash.vue';\n\nconst props = defineProps<{\n /**\n * CSS width value (px, %)\n */\n width?: string;\n /**\n * Shows loading overlay\n */\n loading?: boolean;\n /**\n * Optional loading text\n */\n loadingText?: string;\n}>();\n\nconst style = computed(() => ({\n width: props.width,\n}));\n</script>\n\n<template>\n <PlSplash :loading=\"loading\" :loading-text=\"loadingText\" class=\"pl-container pl-layout-component\" :style=\"style\">\n <slot />\n </PlSplash>\n</template>\n"],"names":["__default__","props","__props","style","computed"],"mappings":";;;AAEA,MAAAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;AAQA,UAAMC,IAAQC,GAeRC,IAAQC,EAAS,OAAO;AAAA,MAC5B,OAAOH,EAAM;AAAA,IAAA,EACb
|
|
1
|
+
{"version":3,"file":"PlContainer.vue.js","sources":["../../../src/layout/PlContainer/PlContainer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Container with vertical spacing */\nexport default {\n name: 'PlContainer',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport './pl-container.scss';\nimport PlSplash from '../../components/PlSplash/PlSplash.vue';\n\nconst props = defineProps<{\n /**\n * CSS width value (px, %)\n */\n width?: string;\n /**\n * Shows loading overlay\n */\n loading?: boolean;\n /**\n * Optional loading text\n */\n loadingText?: string;\n}>();\n\nconst style = computed(() => ({\n width: props.width,\n}));\n</script>\n\n<template>\n <PlSplash :loading=\"loading\" :loading-text=\"loadingText\" class=\"pl-container pl-layout-component\" :style=\"style\">\n <slot />\n </PlSplash>\n</template>\n"],"names":["__default__","props","__props","style","computed","_createBlock","PlSplash","_renderSlot","_ctx"],"mappings":";;;AAEA,MAAAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;AAQA,UAAMC,IAAQC,GAeRC,IAAQC,EAAS,OAAO;AAAA,MAC5B,OAAOH,EAAM;AAAA,IAAA,EACb;2BAIAI,EAEWC,GAAA;AAAA,MAFA,SAASJ,EAAA;AAAA,MAAU,gBAAcA,EAAA;AAAA,MAAa,OAAM;AAAA,MAAoC,SAAOC,EAAA,KAAK;AAAA,IAAA;iBAC7G,MAAQ;AAAA,QAARI,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlGrid.vue.js","sources":["../../../src/layout/PlGrid/PlGrid.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Grid container */\nexport default {\n name: 'PlGrid',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport './pl-grid.scss';\n\nconst props = defineProps<{\n columns: number;\n}>();\n\nconst style = computed(() => {\n return {\n gridTemplateColumns: `repeat(${props.columns}, minmax(0, 1fr))`,\n };\n});\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-grid\" :style=\"style\">\n <slot />\n </div>\n</template>\n"],"names":["__default__","props","__props","style","computed"],"mappings":";;AAEA,MAAAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;AAOA,UAAMC,IAAQC,GAIRC,IAAQC,EAAS,OACd;AAAA,MACL,qBAAqB,UAAUH,EAAM,OAAO;AAAA,IAAA,EAE/C
|
|
1
|
+
{"version":3,"file":"PlGrid.vue.js","sources":["../../../src/layout/PlGrid/PlGrid.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Grid container */\nexport default {\n name: 'PlGrid',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport './pl-grid.scss';\n\nconst props = defineProps<{\n columns: number;\n}>();\n\nconst style = computed(() => {\n return {\n gridTemplateColumns: `repeat(${props.columns}, minmax(0, 1fr))`,\n };\n});\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-grid\" :style=\"style\">\n <slot />\n </div>\n</template>\n"],"names":["__default__","props","__props","style","computed","_createElementBlock","_renderSlot","_ctx"],"mappings":";;AAEA,MAAAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;AAOA,UAAMC,IAAQC,GAIRC,IAAQC,EAAS,OACd;AAAA,MACL,qBAAqB,UAAUH,EAAM,OAAO;AAAA,IAAA,EAE/C;2BAICI,EAEM,OAAA;AAAA,MAFD,OAAM;AAAA,MAA+B,SAAOF,EAAA,KAAK;AAAA,IAAA;MACpDG,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
(function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".pl-row{display:flex;flex-direction:row;gap:var(--gap-h)}.pl-row.noGap{gap:0}.pl-row.wrap{flex-wrap:wrap}.pl-row.align-center{align-items:center}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
2
|
-
import { defineComponent as
|
|
2
|
+
import { defineComponent as n, createElementBlock as t, openBlock as a, normalizeClass as l, renderSlot as r } from "vue";
|
|
3
3
|
|
|
4
|
-
const
|
|
4
|
+
const p = {
|
|
5
5
|
name: "PlRow"
|
|
6
|
-
}, m = /* @__PURE__ */
|
|
7
|
-
...
|
|
6
|
+
}, m = /* @__PURE__ */ n({
|
|
7
|
+
...p,
|
|
8
8
|
props: {
|
|
9
9
|
wrap: { type: Boolean },
|
|
10
10
|
alignCenter: { type: Boolean },
|
|
11
11
|
noGap: { type: Boolean }
|
|
12
12
|
},
|
|
13
|
-
setup(
|
|
14
|
-
return (
|
|
15
|
-
class:
|
|
13
|
+
setup(e) {
|
|
14
|
+
return (o, c) => (a(), t("div", {
|
|
15
|
+
class: l(["pl-layout-component pl-row", { wrap: e.wrap, "align-center": e.alignCenter }])
|
|
16
16
|
}, [
|
|
17
|
-
|
|
17
|
+
r(o.$slots, "default")
|
|
18
18
|
], 2));
|
|
19
19
|
}
|
|
20
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlRow.vue.js","sources":["../../../src/layout/PlRow/PlRow.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Horizontal Flex flow container */\nexport default {\n name: 'PlRow',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport './pl-row.scss';\n\ndefineProps<{\n wrap?: boolean;\n alignCenter?: boolean;\n noGap?: boolean;\n}>();\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-row\" :class=\"{ wrap, 'align-center': alignCenter }\">\n <slot />\n </div>\n</template>\n"],"names":["__default__"],"mappings":";;AAEA,MAAAA,IAAe;AAAA,EACb,MAAM;AACR
|
|
1
|
+
{"version":3,"file":"PlRow.vue.js","sources":["../../../src/layout/PlRow/PlRow.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Horizontal Flex flow container */\nexport default {\n name: 'PlRow',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport './pl-row.scss';\n\ndefineProps<{\n wrap?: boolean;\n alignCenter?: boolean;\n noGap?: boolean;\n}>();\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-row\" :class=\"{ wrap, 'align-center': alignCenter }\">\n <slot />\n </div>\n</template>\n"],"names":["__default__","_createElementBlock","_normalizeClass","__props","_renderSlot","_ctx"],"mappings":";;AAEA,MAAAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;2BAcEC,EAEM,OAAA;AAAA,MAFD,OAAKC,EAAA,CAAC,8BAA4B,EAAA,MAAWC,EAAA,sBAAsBA,EAAA,aAAW,CAAA;AAAA,IAAA;MACjFC,EAAQC,EAAA,QAAA,SAAA;AAAA,IAAA;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlSpacer.vue.js","sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Fills flex remaining space */\nexport default {\n name: 'PlSpacer',\n};\n</script>\n\n<script lang=\"ts\" setup>\n//\n</script>\n\n<template>\n <div class=\"pl-layout-component\" style=\"flex-grow: 1\" />\n</template>\n"],"names":["__default__"],"mappings":";;;;GAEAA,IAAe;AAAA,EACb,MAAM;AACR
|
|
1
|
+
{"version":3,"file":"PlSpacer.vue.js","sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Fills flex remaining space */\nexport default {\n name: 'PlSpacer',\n};\n</script>\n\n<script lang=\"ts\" setup>\n//\n</script>\n\n<template>\n <div class=\"pl-layout-component\" style=\"flex-grow: 1\" />\n</template>\n"],"names":["__default__","_openBlock","_createElementBlock","_hoisted_1"],"mappings":";;;;GAEAA,IAAe;AAAA,EACb,MAAM;AACR;;;sBAQEC,EAAA,GAAAC,EAAwD,OAAxDC,CAAwD;AAAA;;"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
|
|
1
|
+
declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
|
|
2
|
+
groupPosition?: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "middle";
|
|
3
|
+
}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
|
|
4
|
+
groupPosition?: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "middle";
|
|
5
|
+
}> & Readonly<{}>, {
|
|
6
|
+
groupPosition: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "middle";
|
|
7
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>, {
|
|
2
8
|
default?(_: {}): any;
|
|
3
9
|
}>;
|
|
4
10
|
export default _default;
|
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { defineComponent as t, createElementBlock as r, openBlock as n, normalizeClass as s, createElementVNode as a, normalizeProps as l, guardReactiveProps as i, renderSlot as u } from "vue";
|
|
2
|
+
const d = {
|
|
3
|
+
inheritAttrs: !1
|
|
4
|
+
}, m = /* @__PURE__ */ t({
|
|
5
|
+
...d,
|
|
6
|
+
__name: "DoubleContour",
|
|
7
|
+
props: {
|
|
8
|
+
groupPosition: { default: void 0 }
|
|
9
|
+
},
|
|
10
|
+
setup(o) {
|
|
11
|
+
return (e, c) => (n(), r("div", {
|
|
12
|
+
class: s(["double-contour", { [o.groupPosition]: !0 }])
|
|
13
|
+
}, [
|
|
14
|
+
a("div", l(i(e.$attrs)), [
|
|
15
|
+
u(e.$slots, "default")
|
|
16
|
+
], 16)
|
|
17
|
+
], 2));
|
|
18
|
+
}
|
|
19
|
+
});
|
|
13
20
|
export {
|
|
14
|
-
|
|
21
|
+
m as default
|
|
15
22
|
};
|
|
16
23
|
//# sourceMappingURL=DoubleContour.vue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DoubleContour.vue.js","sources":["../../src/utils/DoubleContour.vue"],"sourcesContent":["<script lang=\"ts\" setup
|
|
1
|
+
{"version":3,"file":"DoubleContour.vue.js","sources":["../../src/utils/DoubleContour.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nwithDefaults(defineProps<{\n groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';\n}>(), {\n groupPosition: undefined,\n});\n</script>\n\n<script lang=\"ts\">\n\nexport default {\n inheritAttrs: false,\n};\n</script>\n\n<template>\n <div class=\"double-contour\" :class=\"{ [groupPosition]: true }\">\n <div v-bind=\"$attrs\">\n <slot />\n </div>\n </div>\n</template>\n<style>\n.double-contour {\n &.top > div {\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n}\n.double-contour {\n &.bottom > div {\n border-top-right-radius: 0;\n border-top-left-radius: 0;\n }\n}\n.double-contour {\n &.left > div {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n.double-contour {\n &.right > div {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n }\n}\n.double-contour {\n &.top-left > div{\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n}\n.double-contour {\n &.top-right > div {\n border-bottom-right-radius: 0;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n}\n.double-contour {\n &.bottom-left > div {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n border-top-left-radius: 0;\n }\n}\n.double-contour {\n &.bottom-right > div {\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n}\n.double-contour {\n &.middle > div {\n border-radius: 0;\n }\n}\n</style>\n"],"names":["__default__","_createElementBlock","_normalizeClass","__props","_createElementVNode","$attrs","_renderSlot","_ctx"],"mappings":";AAUA,MAAAA,IAAe;AAAA,EACb,cAAc;AAChB;;;;;;;2BAIEC,EAIM,OAAA;AAAA,MAJD,OAAKC,EAAA,CAAC,kBAAgB,EAAA,CAAYC,EAAA,aAAa,GAAA,IAAA,CAAA;AAAA,IAAA;MAClDC,EAEM,WAFOC,EAAAA,MAAM,CAAA,GAAA;AAAA,QACjBC,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var o=document.createElement("style");o.appendChild(document.createTextNode(".double-contour.top>div{border-bottom-right-radius:0;border-bottom-left-radius:0}.double-contour.bottom>div{border-top-right-radius:0;border-top-left-radius:0}.double-contour.left>div{border-top-right-radius:0;border-bottom-right-radius:0}.double-contour.right>div{border-top-left-radius:0;border-bottom-left-radius:0}.double-contour.top-left>div{border-top-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.double-contour.top-right>div{border-bottom-right-radius:0;border-top-left-radius:0;border-top-right-radius:0}.double-contour.bottom-left>div{border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.double-contour.bottom-right>div{border-top-right-radius:0;border-bottom-left-radius:0;border-top-left-radius:0}.double-contour.middle>div{border-radius:0}")),document.head.appendChild(o)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
|
|
2
|
+
import o from "./DoubleContour.vue.js";
|
|
3
|
+
|
|
4
|
+
export {
|
|
5
|
+
o as default
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=DoubleContour.vue3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DoubleContour.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -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<Record<string, string | undefined>>({\n top: undefined,\n bottom: undefined,\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 const bottom = bodyRect.bottom - pos.bottom;\n const upBottomOffset = bottom + pos.height + gap;\n optionsStyle.bottom = upBottomOffset + 'px';\n optionsStyle.top = undefined;\n } else {\n optionsStyle.top = downTopOffset + 'px';\n optionsStyle.bottom = undefined;\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 @mousedown.prevent\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","upBottomOffset"],"mappings":";;;;;;;;;;;AAMA,UAAMA,IAAQC,GAKRC,IAAOC,EAAS;AAAA,MACpB,eAAe;AAAA,IAAA,CAChB,GAEKC,IAAeD,EAA6C;AAAA,MAChE,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IAAA,CACR,GAEKE,IAAUC,EAAMN,GAAO,MAAM,GAE7BO,IAAUC,EAAA;AAchB,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,QAC3B,CAAC;AAAA,MACH;AAAA,MAIE,SAAAL;AAAA,IAAA,CACD,GAEDO,EAAMP,GAAS,CAACQ,MAAO;AACrB,MAAIA,KACF,sBAAsB,MAAM;AAC1B,cAAMC,IAAOD,EAAG,sBAAA;AAChB,QAAAb,EAAK,gBAAgBc,EAAK,QAC1B,OAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,MAChD,CAAC;AAAA,IAEL,CAAC,GAEDC,EAAmBZ,GAAS,CAACa,MAAQ;AACnC,YAAMC,IAAW,SAAS,KAAK,sBAAA,GAEzBC,IAAMF,EAAI,MAAMC,EAAS,KAEzBE,IAAOH,EAAI,OAAOC,EAAS,MAE3BG,IAAMtB,EAAM,OAAO,GAEnBuB,IAAgBH,IAAMF,EAAI,SAASI;AAEzC,UAAIC,IAAgBrB,EAAK,gBAAgBgB,EAAI,cAAc;AAEzD,cAAMM,IADSL,EAAS,SAASD,EAAI,SACLA,EAAI,SAASI;AAC7C,QAAAlB,EAAa,SAASoB,IAAiB,MACvCpB,EAAa,MAAM;AAAA,MACrB;AACE,QAAAA,EAAa,MAAMmB,IAAgB,MACnCnB,EAAa,SAAS;AAGxB,MAAAA,EAAa,OAAOiB,IAAO,MAC3BjB,EAAa,QAAQc,EAAI,QAAQ;AAAA,IACnC,CAAC
|
|
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<Record<string, string | undefined>>({\n top: undefined,\n bottom: undefined,\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 const bottom = bodyRect.bottom - pos.bottom;\n const upBottomOffset = bottom + pos.height + gap;\n optionsStyle.bottom = upBottomOffset + 'px';\n optionsStyle.top = undefined;\n } else {\n optionsStyle.top = downTopOffset + 'px';\n optionsStyle.bottom = undefined;\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 @mousedown.prevent\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","upBottomOffset","_createBlock","_Teleport","_createElementVNode","_mergeProps","$attrs","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;AAMA,UAAMA,IAAQC,GAKRC,IAAOC,EAAS;AAAA,MACpB,eAAe;AAAA,IAAA,CAChB,GAEKC,IAAeD,EAA6C;AAAA,MAChE,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IAAA,CACR,GAEKE,IAAUC,EAAMN,GAAO,MAAM,GAE7BO,IAAUC,EAAA;AAchB,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,QAC3B,CAAC;AAAA,MACH;AAAA,MAIE,SAAAL;AAAA,IAAA,CACD,GAEDO,EAAMP,GAAS,CAACQ,MAAO;AACrB,MAAIA,KACF,sBAAsB,MAAM;AAC1B,cAAMC,IAAOD,EAAG,sBAAA;AAChB,QAAAb,EAAK,gBAAgBc,EAAK,QAC1B,OAAO,cAAc,IAAI,YAAY,QAAQ,CAAC;AAAA,MAChD,CAAC;AAAA,IAEL,CAAC,GAEDC,EAAmBZ,GAAS,CAACa,MAAQ;AACnC,YAAMC,IAAW,SAAS,KAAK,sBAAA,GAEzBC,IAAMF,EAAI,MAAMC,EAAS,KAEzBE,IAAOH,EAAI,OAAOC,EAAS,MAE3BG,IAAMtB,EAAM,OAAO,GAEnBuB,IAAgBH,IAAMF,EAAI,SAASI;AAEzC,UAAIC,IAAgBrB,EAAK,gBAAgBgB,EAAI,cAAc;AAEzD,cAAMM,IADSL,EAAS,SAASD,EAAI,SACLA,EAAI,SAASI;AAC7C,QAAAlB,EAAa,SAASoB,IAAiB,MACvCpB,EAAa,MAAM;AAAA,MACrB;AACE,QAAAA,EAAa,MAAMmB,IAAgB,MACnCnB,EAAa,SAAS;AAGxB,MAAAA,EAAa,OAAOiB,IAAO,MAC3BjB,EAAa,QAAQc,EAAI,QAAQ;AAAA,IACnC,CAAC,mBAICO,EAWWC,GAAA,EAXD,IAAG,UAAM;AAAA,MACjBC,EASM,OATNC,EASM;AAAA,iBARA;AAAA,QAAJ,KAAIrB;AAAA,MAAA,GACIsB,EAAAA,QAAM;AAAA,QACb,OAAOzB;AAAA,QACR,UAAS;AAAA,QACR,+BAAD,MAAA;AAAA,QAAA,GAAkB,CAAA,SAAA,CAAA;AAAA,QACjB,2BAAD,MAAA;AAAA,QAAA,GAAW,CAAA,MAAA,CAAA;AAAA,MAAA;QAEX0B,EAAmBC,EAAA,QAAA,WAAA,EAAb,KAAI,QAAM;AAAA,MAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlCloseModalBtn.vue.js","sources":["../../src/utils/PlCloseModalBtn.vue"],"sourcesContent":["<template>\n <div :class=\"$style.component\">\n <div />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '../assets/mixins' as *;\n\n.component {\n display: flex;\n place-content: center;\n place-items: center;\n width: 40px;\n height: 40px;\n cursor: pointer;\n border-radius: 12px; // slide-modal 6px\n &:hover {\n background-color: var(--btn-sec-hover-grey);\n transition: all 0.1s ease-in-out;\n }\n > div {\n background-color: var(--ic-01);\n @include mask(url(../assets/images/24_close.svg), 24px);\n }\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock"],"mappings":";;;;cACEA,GAAA;
|
|
1
|
+
{"version":3,"file":"PlCloseModalBtn.vue.js","sources":["../../src/utils/PlCloseModalBtn.vue"],"sourcesContent":["<template>\n <div :class=\"$style.component\">\n <div />\n </div>\n</template>\n\n<style lang=\"scss\" module>\n@use '../assets/mixins' as *;\n\n.component {\n display: flex;\n place-content: center;\n place-items: center;\n width: 40px;\n height: 40px;\n cursor: pointer;\n border-radius: 12px; // slide-modal 6px\n &:hover {\n background-color: var(--btn-sec-hover-grey);\n transition: all 0.1s ease-in-out;\n }\n > div {\n background-color: var(--ic-01);\n @include mask(url(../assets/images/24_close.svg), 24px);\n }\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock"],"mappings":";;;;cACEA,GAAA;SAAWC,EAAA,GAAAC,EAAS,OAAS;AAAA;KAC3B,CAAA,GAAAF,EAAA,CAAA,MAAOA,EAAA,CAAA,IAAA;AAAA;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextLabel.vue.js","sources":["../../src/utils/TextLabel.vue"],"sourcesContent":["<template>\n <div :class=\"$style.textLabel\">\n <div :class=\"$style.label\">\n <div :class=\"$style.labelText\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.textLabel {\n padding: 0px 12px;\n}\n\n.label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--txt-03);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n}\n\n.labelText {\n display: inline-block;\n max-width: 100%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.label::after {\n display: block;\n flex: 1;\n content: '';\n height: 1px;\n background-color: var(--border-color-div-grey);\n width: 100%;\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock","
|
|
1
|
+
{"version":3,"file":"TextLabel.vue.js","sources":["../../src/utils/TextLabel.vue"],"sourcesContent":["<template>\n <div :class=\"$style.textLabel\">\n <div :class=\"$style.label\">\n <div :class=\"$style.labelText\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style lang=\"scss\" module>\n.textLabel {\n padding: 0px 12px;\n}\n\n.label {\n display: flex;\n align-items: center;\n gap: 4px;\n color: var(--txt-03);\n font-size: 12px;\n font-weight: 500;\n line-height: 16px;\n}\n\n.labelText {\n display: inline-block;\n max-width: 100%;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.label::after {\n display: block;\n flex: 1;\n content: '';\n height: 1px;\n background-color: var(--border-color-div-grey);\n width: 100%;\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock","$style"],"mappings":";;;;cACEA,GAAA;SAAWC,EAAA,GAAAC,EAAS,OAAS;AAAA;KAC3B;AAAA,MAAW,OAAEC;AAAAA;OACX;AAAA,QAAW,OAAEA;AAAAA;SACX;AAAA;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@milaboratories/uikit",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@vue/test-utils": "^2.4.6",
|
|
24
24
|
"@vueuse/integrations": "^13.3.0",
|
|
25
25
|
"sortablejs": "^1.15.6",
|
|
26
|
-
"vue": "^3.5.
|
|
26
|
+
"vue": "^3.5.24",
|
|
27
27
|
"@vueuse/core": "^13.3.0",
|
|
28
28
|
"d3-scale": "^4.0.2",
|
|
29
29
|
"d3-array": "^3.0.0",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"resize-observer-polyfill": "^1.5.1",
|
|
33
33
|
"canonicalize": "~2.1.0",
|
|
34
34
|
"@milaboratories/helpers": "1.12.0",
|
|
35
|
-
"@platforma-sdk/model": "1.45.
|
|
35
|
+
"@platforma-sdk/model": "1.45.35"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"jsdom": "^25.0.1",
|
|
@@ -40,10 +40,10 @@
|
|
|
40
40
|
"yarpm": "^1.2.0",
|
|
41
41
|
"svgo": "^3.3.2",
|
|
42
42
|
"typescript": "~5.6.3",
|
|
43
|
+
"@milaboratories/ts-configs": "1.0.6",
|
|
43
44
|
"@milaboratories/build-configs": "1.0.8",
|
|
44
|
-
"@milaboratories/eslint-config": "1.0.5",
|
|
45
45
|
"@milaboratories/ts-builder": "1.0.5",
|
|
46
|
-
"@milaboratories/
|
|
46
|
+
"@milaboratories/eslint-config": "1.0.5"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"dev": "ts-builder serve --target browser-lib --build-config ./build.browser-lib.config.js",
|
|
@@ -92,6 +92,10 @@ const props = withDefaults(
|
|
|
92
92
|
* Formatter for the selected value if its label is absent
|
|
93
93
|
*/
|
|
94
94
|
formatValue?: (value: M) => string;
|
|
95
|
+
/**
|
|
96
|
+
* Makes some of corners not rounded
|
|
97
|
+
* */
|
|
98
|
+
groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';
|
|
95
99
|
}>(),
|
|
96
100
|
{
|
|
97
101
|
modelSearch: undefined,
|
|
@@ -107,6 +111,7 @@ const props = withDefaults(
|
|
|
107
111
|
arrowIconLarge: undefined,
|
|
108
112
|
optionSize: 'small',
|
|
109
113
|
formatValue: (v: M) => String(v),
|
|
114
|
+
groupPosition: undefined,
|
|
110
115
|
},
|
|
111
116
|
);
|
|
112
117
|
|
|
@@ -397,7 +402,7 @@ watch(() => optionsRequest.loading || modelOptionRequest.loading, (loading) => {
|
|
|
397
402
|
/>
|
|
398
403
|
<div v-if="!renderedOptionsRef.length" class="nothing-found">Nothing found</div>
|
|
399
404
|
</DropdownOverlay>
|
|
400
|
-
<DoubleContour class="pl-autocomplete__contour" />
|
|
405
|
+
<DoubleContour class="pl-autocomplete__contour" :group-position="groupPosition" />
|
|
401
406
|
</div>
|
|
402
407
|
</div>
|
|
403
408
|
<div v-if="computedError" class="pl-autocomplete__error">{{ computedError }}</div>
|
|
@@ -119,6 +119,10 @@ const props = withDefaults(
|
|
|
119
119
|
* The text to display when no options are found.
|
|
120
120
|
*/
|
|
121
121
|
emptyOptionsText?: string;
|
|
122
|
+
/**
|
|
123
|
+
* Makes some of corners not rounded
|
|
124
|
+
* */
|
|
125
|
+
groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';
|
|
122
126
|
}>(),
|
|
123
127
|
{
|
|
124
128
|
modelValue: () => [],
|
|
@@ -131,6 +135,7 @@ const props = withDefaults(
|
|
|
131
135
|
debounce: 300,
|
|
132
136
|
emptyOptionsText: 'Nothing found',
|
|
133
137
|
sourceId: undefined,
|
|
138
|
+
groupPosition: undefined,
|
|
134
139
|
},
|
|
135
140
|
);
|
|
136
141
|
|
|
@@ -406,7 +411,7 @@ const computedError = computed(() => {
|
|
|
406
411
|
/>
|
|
407
412
|
<div v-if="!filteredOptionsRef.length && !isOptionsLoading" class="nothing-found">{{ emptyOptionsText }}</div>
|
|
408
413
|
</DropdownOverlay>
|
|
409
|
-
<DoubleContour class="pl-autocomplete-multi__contour" />
|
|
414
|
+
<DoubleContour class="pl-autocomplete-multi__contour" :group-position="groupPosition" />
|
|
410
415
|
</div>
|
|
411
416
|
</div>
|
|
412
417
|
<div v-if="computedError" class="pl-autocomplete-multi__error">{{ computedError }}</div>
|
|
@@ -60,6 +60,10 @@ const props = withDefaults(
|
|
|
60
60
|
* Error message displayed below the dropdown (optional)
|
|
61
61
|
*/
|
|
62
62
|
error?: unknown;
|
|
63
|
+
/**
|
|
64
|
+
* Shows red border even without an error message
|
|
65
|
+
*/
|
|
66
|
+
errorStatus?: boolean;
|
|
63
67
|
/**
|
|
64
68
|
* Placeholder text shown when no value is selected.
|
|
65
69
|
*/
|
|
@@ -88,12 +92,17 @@ const props = withDefaults(
|
|
|
88
92
|
* Option list item size
|
|
89
93
|
*/
|
|
90
94
|
optionSize?: 'small' | 'medium';
|
|
95
|
+
/**
|
|
96
|
+
* Makes some of corners not rounded
|
|
97
|
+
* */
|
|
98
|
+
groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';
|
|
91
99
|
}>(),
|
|
92
100
|
{
|
|
93
101
|
label: '',
|
|
94
102
|
helper: undefined,
|
|
95
103
|
loadingOptionsHelper: undefined,
|
|
96
104
|
error: undefined,
|
|
105
|
+
showErrorMessage: true,
|
|
97
106
|
placeholder: '...',
|
|
98
107
|
clearable: false,
|
|
99
108
|
required: false,
|
|
@@ -102,6 +111,7 @@ const props = withDefaults(
|
|
|
102
111
|
arrowIconLarge: undefined,
|
|
103
112
|
optionSize: 'small',
|
|
104
113
|
options: undefined,
|
|
114
|
+
groupPosition: undefined,
|
|
105
115
|
},
|
|
106
116
|
);
|
|
107
117
|
|
|
@@ -316,7 +326,7 @@ watchPostEffect(() => {
|
|
|
316
326
|
ref="rootRef"
|
|
317
327
|
:tabindex="tabindex"
|
|
318
328
|
class="pl-dropdown"
|
|
319
|
-
:class="{ open: data.open, error, disabled: isDisabled }"
|
|
329
|
+
:class="{ open: data.open, error: error || errorStatus, disabled: isDisabled }"
|
|
320
330
|
@keydown="handleKeydown"
|
|
321
331
|
@focusout="onFocusOut"
|
|
322
332
|
>
|
|
@@ -367,7 +377,7 @@ watchPostEffect(() => {
|
|
|
367
377
|
:option-size="optionSize"
|
|
368
378
|
:select-option="selectOptionWrapper"
|
|
369
379
|
/>
|
|
370
|
-
<DoubleContour class="pl-dropdown__contour" />
|
|
380
|
+
<DoubleContour class="pl-dropdown__contour" :group-position="groupPosition" />
|
|
371
381
|
</div>
|
|
372
382
|
</div>
|
|
373
383
|
<div v-if="computedError" class="pl-dropdown__error">{{ computedError }}</div>
|
|
@@ -66,6 +66,10 @@ const props = withDefaults(
|
|
|
66
66
|
* If `true`, the dropdown component is disabled and cannot be interacted with.
|
|
67
67
|
*/
|
|
68
68
|
disabled?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Makes some of corners not rounded
|
|
71
|
+
* */
|
|
72
|
+
groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';
|
|
69
73
|
}>(),
|
|
70
74
|
{
|
|
71
75
|
modelValue: () => [],
|
|
@@ -76,6 +80,7 @@ const props = withDefaults(
|
|
|
76
80
|
required: false,
|
|
77
81
|
disabled: false,
|
|
78
82
|
options: undefined,
|
|
83
|
+
groupPosition: undefined,
|
|
79
84
|
},
|
|
80
85
|
);
|
|
81
86
|
|
|
@@ -308,7 +313,7 @@ watchPostEffect(() => {
|
|
|
308
313
|
/>
|
|
309
314
|
<div v-if="!filteredOptionsRef.length" class="nothing-found">Nothing found</div>
|
|
310
315
|
</DropdownOverlay>
|
|
311
|
-
<DoubleContour class="pl-dropdown-multi__contour" />
|
|
316
|
+
<DoubleContour class="pl-dropdown-multi__contour" :group-position="groupPosition" />
|
|
312
317
|
</div>
|
|
313
318
|
</div>
|
|
314
319
|
<div v-if="error" class="pl-dropdown-multi__error">{{ getErrorMessage(error) }}</div>
|