@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.
Files changed (215) hide show
  1. package/.turbo/turbo-build.log +143 -143
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +14 -0
  4. package/dist/base/BtnBase.vue.js +18 -18
  5. package/dist/base/BtnBase.vue.js.map +1 -1
  6. package/dist/components/ContextProvider.vue.js.map +1 -1
  7. package/dist/components/DataTable/BaseCellComponent.vue.js +20 -20
  8. package/dist/components/DataTable/BaseCellComponent.vue.js.map +1 -1
  9. package/dist/components/DataTable/ColumnCaret.vue.js +6 -6
  10. package/dist/components/DataTable/ColumnCaret.vue.js.map +1 -1
  11. package/dist/components/DataTable/ColumnsCommandMenu.vue.js.map +1 -1
  12. package/dist/components/DataTable/RowsCommandMenu.vue.js.map +1 -1
  13. package/dist/components/DataTable/TScroll.vue.js +12 -12
  14. package/dist/components/DataTable/TScroll.vue.js.map +1 -1
  15. package/dist/components/DataTable/TableComponent.vue.js +5 -3
  16. package/dist/components/DataTable/TableComponent.vue.js.map +1 -1
  17. package/dist/components/DataTable/TdCell.vue.js +36 -36
  18. package/dist/components/DataTable/TdCell.vue.js.map +1 -1
  19. package/dist/components/DataTable/ThCell.vue.js +27 -27
  20. package/dist/components/DataTable/ThCell.vue.js.map +1 -1
  21. package/dist/components/DataTable/TrBody.vue.js +12 -12
  22. package/dist/components/DataTable/TrBody.vue.js.map +1 -1
  23. package/dist/components/DataTable/TrHead.vue.js.map +1 -1
  24. package/dist/components/DataTable/assets/TableIcon.vue.js +2 -2
  25. package/dist/components/DataTable/assets/TableIcon.vue.js.map +1 -1
  26. package/dist/components/DropdownListItem.vue.js +18 -18
  27. package/dist/components/DropdownListItem.vue.js.map +1 -1
  28. package/dist/components/HScroll.vue.js.map +1 -1
  29. package/dist/components/InputRange.vue.js.map +1 -1
  30. package/dist/components/LongText.vue.js +1 -1
  31. package/dist/components/LongText.vue.js.map +1 -1
  32. package/dist/components/LongText.vue3.js +1 -1
  33. package/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -1
  34. package/dist/components/PlAccordion/ExpandTransition.vue2.js.map +1 -1
  35. package/dist/components/PlAccordion/ExpandTransition.vue3.js +1 -1
  36. package/dist/components/PlAccordion/PlAccordion.vue.js.map +1 -1
  37. package/dist/components/PlAccordion/PlAccordionSection.vue2.js +21 -21
  38. package/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
  39. package/dist/components/PlAlert/PlAlert.vue.js +23 -23
  40. package/dist/components/PlAlert/PlAlert.vue.js.map +1 -1
  41. package/dist/components/PlAutocomplete/PlAutocomplete.vue.d.ts +4 -0
  42. package/dist/components/PlAutocomplete/PlAutocomplete.vue.js +112 -106
  43. package/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
  44. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts +4 -0
  45. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js +100 -94
  46. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js.map +1 -1
  47. package/dist/components/PlBtnAccent/PlBtnAccent.vue.js.map +1 -1
  48. package/dist/components/PlBtnDanger/PlBtnDanger.vue.js.map +1 -1
  49. package/dist/components/PlBtnGhost/PlBtnGhost.vue.js +21 -21
  50. package/dist/components/PlBtnGhost/PlBtnGhost.vue.js.map +1 -1
  51. package/dist/components/PlBtnGroup/PlBtnGroup.vue.js +34 -34
  52. package/dist/components/PlBtnGroup/PlBtnGroup.vue.js.map +1 -1
  53. package/dist/components/PlBtnLink/PlBtnLink.vue.js +12 -12
  54. package/dist/components/PlBtnLink/PlBtnLink.vue.js.map +1 -1
  55. package/dist/components/PlBtnPrimary/PlBtnPrimary.vue.js.map +1 -1
  56. package/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js.map +1 -1
  57. package/dist/components/PlBtnSplit/PlBtnSplit.vue.js +31 -31
  58. package/dist/components/PlBtnSplit/PlBtnSplit.vue.js.map +1 -1
  59. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js +18 -18
  60. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js.map +1 -1
  61. package/dist/components/PlChartStackedBar/Legends.vue2.js.map +1 -1
  62. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js +15 -15
  63. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js.map +1 -1
  64. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js.map +1 -1
  65. package/dist/components/PlChartStackedBar/StackedRow.vue2.js.map +1 -1
  66. package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js.map +1 -1
  67. package/dist/components/PlCheckbox/PlCheckbox.vue.js +13 -13
  68. package/dist/components/PlCheckbox/PlCheckbox.vue.js.map +1 -1
  69. package/dist/components/PlCheckbox/PlCheckboxBase.vue.js +6 -6
  70. package/dist/components/PlCheckbox/PlCheckboxBase.vue.js.map +1 -1
  71. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js +28 -28
  72. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js.map +1 -1
  73. package/dist/components/PlChip/PlChip.vue.js +20 -20
  74. package/dist/components/PlChip/PlChip.vue.js.map +1 -1
  75. package/dist/components/PlClipboard/PlClipboard.vue2.js.map +1 -1
  76. package/dist/components/PlConfirmDialog.vue.js +14 -14
  77. package/dist/components/PlConfirmDialog.vue.js.map +1 -1
  78. package/dist/components/PlDialogModal/PlDialogModal.vue.js +30 -30
  79. package/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
  80. package/dist/components/PlDropdown/OptionList.vue.js +40 -40
  81. package/dist/components/PlDropdown/OptionList.vue.js.map +1 -1
  82. package/dist/components/PlDropdown/PlDropdown.vue.d.ts +8 -0
  83. package/dist/components/PlDropdown/PlDropdown.vue.js +102 -95
  84. package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
  85. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js +95 -93
  86. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js.map +1 -1
  87. package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts +1 -1
  88. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +4 -4
  89. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
  90. package/dist/components/PlDropdownLine/ResizableInput.vue.js +12 -12
  91. package/dist/components/PlDropdownLine/ResizableInput.vue.js.map +1 -1
  92. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.d.ts +4 -0
  93. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js +88 -82
  94. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js.map +1 -1
  95. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.d.ts +1 -1
  96. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js.map +1 -1
  97. package/dist/components/PlDropdownRef/PlDropdownRef.vue.js +11 -11
  98. package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
  99. package/dist/components/PlEditableTitle/PlEditableTitle.vue.d.ts +1 -1
  100. package/dist/components/PlEditableTitle/PlEditableTitle.vue.js +36 -36
  101. package/dist/components/PlEditableTitle/PlEditableTitle.vue.js.map +1 -1
  102. package/dist/components/PlElementList/PlElementList.vue.d.ts +20 -0
  103. package/dist/components/PlElementList/PlElementList.vue2.js +180 -135
  104. package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
  105. package/dist/components/PlElementList/PlElementListItem.vue.d.ts +20 -0
  106. package/dist/components/PlElementList/PlElementListItem.vue2.js +101 -76
  107. package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
  108. package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js.map +1 -1
  109. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js.map +1 -1
  110. package/dist/components/PlFileDialog/Local.vue.js +24 -24
  111. package/dist/components/PlFileDialog/Local.vue.js.map +1 -1
  112. package/dist/components/PlFileDialog/PlFileDialog.vue.js +38 -38
  113. package/dist/components/PlFileDialog/PlFileDialog.vue.js.map +1 -1
  114. package/dist/components/PlFileDialog/Remote.vue.js +2 -2
  115. package/dist/components/PlFileDialog/Remote.vue.js.map +1 -1
  116. package/dist/components/PlFileDialog/Shortcuts.vue2.js +4 -4
  117. package/dist/components/PlFileDialog/Shortcuts.vue2.js.map +1 -1
  118. package/dist/components/PlFileInput/PlFileInput.vue.d.ts +1 -1
  119. package/dist/components/PlFileInput/PlFileInput.vue.js +78 -76
  120. package/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
  121. package/dist/components/PlIcon16/PlIcon16.vue2.js.map +1 -1
  122. package/dist/components/PlIcon24/PlIcon24.vue2.js.map +1 -1
  123. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js +11 -11
  124. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js.map +1 -1
  125. package/dist/components/PlLogView/PlLogView.vue.js +62 -60
  126. package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
  127. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js +22 -22
  128. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js.map +1 -1
  129. package/dist/components/PlNumberField/PlNumberField.vue.d.ts +6 -1
  130. package/dist/components/PlNumberField/PlNumberField.vue.js +66 -60
  131. package/dist/components/PlNumberField/PlNumberField.vue.js.map +1 -1
  132. package/dist/components/PlProgressBar/PlProgressBar.vue.js +12 -12
  133. package/dist/components/PlProgressBar/PlProgressBar.vue.js.map +1 -1
  134. package/dist/components/PlProgressCell/PlProgressCell.vue.js +20 -20
  135. package/dist/components/PlProgressCell/PlProgressCell.vue.js.map +1 -1
  136. package/dist/components/PlRadio/PlRadio.vue2.js.map +1 -1
  137. package/dist/components/PlRadio/PlRadioGroup.vue2.js +8 -8
  138. package/dist/components/PlRadio/PlRadioGroup.vue2.js.map +1 -1
  139. package/dist/components/PlSearchField/PlSearchField.vue2.js +19 -19
  140. package/dist/components/PlSearchField/PlSearchField.vue2.js.map +1 -1
  141. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js +8 -8
  142. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js.map +1 -1
  143. package/dist/components/PlSidebar/PlSidebarGroup.vue2.js.map +1 -1
  144. package/dist/components/PlSidebar/PlSidebarItem.vue2.js.map +1 -1
  145. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +5 -3
  146. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js.map +1 -1
  147. package/dist/components/PlSlideModal/PlSlideModal.vue2.js.map +1 -1
  148. package/dist/components/PlSplash/PlSplash.vue.js +16 -16
  149. package/dist/components/PlSplash/PlSplash.vue.js.map +1 -1
  150. package/dist/components/PlStatusTag/PlStatusTag.vue.js +7 -7
  151. package/dist/components/PlStatusTag/PlStatusTag.vue.js.map +1 -1
  152. package/dist/components/PlSvg/PlSvg.vue2.js.map +1 -1
  153. package/dist/components/PlTabs/PlTabs.vue.js +18 -18
  154. package/dist/components/PlTabs/PlTabs.vue.js.map +1 -1
  155. package/dist/components/PlTabs/Tab.vue.js +9 -9
  156. package/dist/components/PlTabs/Tab.vue.js.map +1 -1
  157. package/dist/components/PlTextArea/PlTextArea.vue.js +55 -53
  158. package/dist/components/PlTextArea/PlTextArea.vue.js.map +1 -1
  159. package/dist/components/PlTextField/PlTextField.vue.d.ts +4 -0
  160. package/dist/components/PlTextField/PlTextField.vue.js +66 -60
  161. package/dist/components/PlTextField/PlTextField.vue.js.map +1 -1
  162. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js +14 -14
  163. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js.map +1 -1
  164. package/dist/components/PlTooltip/Beak.vue.js +2 -2
  165. package/dist/components/PlTooltip/Beak.vue.js.map +1 -1
  166. package/dist/components/PlTooltip/PlTooltip.vue.js +50 -50
  167. package/dist/components/PlTooltip/PlTooltip.vue.js.map +1 -1
  168. package/dist/components/Scrollable.vue.js.map +1 -1
  169. package/dist/components/Slider.vue.js +35 -35
  170. package/dist/components/Slider.vue.js.map +1 -1
  171. package/dist/components/SliderRange.vue.js +47 -47
  172. package/dist/components/SliderRange.vue.js.map +1 -1
  173. package/dist/components/SliderRangeTriple.vue.js +47 -47
  174. package/dist/components/SliderRangeTriple.vue.js.map +1 -1
  175. package/dist/components/TabItem.vue.js.map +1 -1
  176. package/dist/components/ThemeSwitcher.vue.js +2 -2
  177. package/dist/components/ThemeSwitcher.vue.js.map +1 -1
  178. package/dist/components/TransitionSlidePanel.vue.js.map +1 -1
  179. package/dist/components/VScroll.vue.js.map +1 -1
  180. package/dist/components/contextMenu/Menu.vue2.js +12 -12
  181. package/dist/components/contextMenu/Menu.vue2.js.map +1 -1
  182. package/dist/composition/filters/metadata.d.ts +205 -0
  183. package/dist/composition/filters/metadata.js +129 -19
  184. package/dist/composition/filters/metadata.js.map +1 -1
  185. package/dist/index.js +1 -1
  186. package/dist/layout/PlBlockPage/PlBlockPage.vue.js +27 -27
  187. package/dist/layout/PlBlockPage/PlBlockPage.vue.js.map +1 -1
  188. package/dist/layout/PlContainer/PlContainer.vue.js +10 -10
  189. package/dist/layout/PlContainer/PlContainer.vue.js.map +1 -1
  190. package/dist/layout/PlGrid/PlGrid.vue.js.map +1 -1
  191. package/dist/layout/PlRow/PlRow.vue.js +8 -8
  192. package/dist/layout/PlRow/PlRow.vue.js.map +1 -1
  193. package/dist/layout/PlSpacer/PlSpacer.vue.js.map +1 -1
  194. package/dist/utils/DoubleContour.vue.d.ts +7 -1
  195. package/dist/utils/DoubleContour.vue.js +20 -13
  196. package/dist/utils/DoubleContour.vue.js.map +1 -1
  197. package/dist/utils/DoubleContour.vue3.js +7 -0
  198. package/dist/utils/DoubleContour.vue3.js.map +1 -0
  199. package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
  200. package/dist/utils/PlCloseModalBtn.vue.js +2 -2
  201. package/dist/utils/PlCloseModalBtn.vue.js.map +1 -1
  202. package/dist/utils/TextLabel.vue.js.map +1 -1
  203. package/package.json +5 -5
  204. package/src/components/PlAutocomplete/PlAutocomplete.vue +6 -1
  205. package/src/components/PlAutocompleteMulti/PlAutocompleteMulti.vue +6 -1
  206. package/src/components/PlDropdown/PlDropdown.vue +12 -2
  207. package/src/components/PlDropdownMulti/PlDropdownMulti.vue +6 -1
  208. package/src/components/PlElementList/PlElementList.vue +40 -6
  209. package/src/components/PlElementList/PlElementListItem.vue +64 -47
  210. package/src/components/PlNumberField/PlNumberField.vue +4 -1
  211. package/src/components/PlTextField/PlTextField.vue +5 -1
  212. package/src/composition/filters/metadata.ts +105 -0
  213. package/src/utils/DoubleContour.vue +68 -2
  214. package/dist/utils/DoubleContour.vue2.js +0 -7
  215. 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 c, unref as n, createElementVNode as s, withDirectives as u, renderSlot as l, withCtx as m } from "vue";
3
- import { PlBlockPageTitleTeleportId as f } from "./PlBlockPageTitleTeleportId.js";
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 g from "../../components/PlSplash/PlSplash.vue.js";
6
- const b = {
5
+ import b from "../../components/PlSplash/PlSplash.vue.js";
6
+ const y = {
7
7
  key: 0,
8
8
  class: "pl-block-page__title"
9
- }, y = { class: "pl-block-page__title__default" }, k = { class: "pl-block-page__title__append" }, h = ["id"], v = { key: 1 }, B = {
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
- }, G = /* @__PURE__ */ p({
12
- ...B,
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(T) {
19
- const d = r(), i = (t) => {
18
+ setup(i) {
19
+ const a = r(), n = (t) => {
20
20
  t.removeAttribute("title"), t.clientWidth < t.scrollWidth && t.setAttribute("title", t.innerText);
21
- }, a = {
22
- mounted: i,
23
- updated: i
21
+ }, c = {
22
+ mounted: n,
23
+ updated: n
24
24
  };
25
- return (t, $) => (o(), e("div", {
26
- class: _(["pl-layout-component pl-block-page", { noBodyGutters: t.noBodyGutters }])
25
+ return (t, x) => (o(), e("div", {
26
+ class: _(["pl-layout-component pl-block-page", { noBodyGutters: i.noBodyGutters }])
27
27
  }, [
28
- n(d).title ? (o(), e("div", b, [
29
- s("div", y, [
30
- u((o(), e("span", null, [
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
- [a]
33
+ [c]
34
34
  ]),
35
35
  l(t.$slots, "after-title")
36
36
  ]),
37
- s("div", k, [
37
+ s("div", h, [
38
38
  s("div", {
39
- id: n(f),
39
+ id: d(g),
40
40
  class: "pl-block-page__title__append__teleport"
41
- }, null, 8, h),
41
+ }, null, 8, v),
42
42
  l(t.$slots, "append")
43
43
  ])
44
- ])) : (o(), e("div", v)),
45
- c(g, {
46
- loading: t.bodyLoading,
47
- "loading-text": t.bodyLoadingText,
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: m(() => [
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
- G as default
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 s, renderSlot as p } from "vue";
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 c from "../../components/PlSplash/PlSplash.vue.js";
5
- const m = {
4
+ import m from "../../components/PlSplash/PlSplash.vue.js";
5
+ const p = {
6
6
  name: "PlContainer"
7
7
  }, y = /* @__PURE__ */ l({
8
- ...m,
8
+ ...p,
9
9
  props: {
10
10
  width: {},
11
11
  loading: { type: Boolean },
12
12
  loadingText: {}
13
13
  },
14
- setup(o) {
15
- const e = o, n = a(() => ({
14
+ setup(t) {
15
+ const e = t, o = a(() => ({
16
16
  width: e.width
17
17
  }));
18
- return (t, u) => (d(), i(c, {
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(n.value)
22
+ style: r(o.value)
23
23
  }, {
24
- default: s(() => [
25
- p(t.$slots, "default")
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 o, createElementBlock as n, openBlock as a, normalizeClass as t, renderSlot as l } from "vue";
2
+ import { defineComponent as n, createElementBlock as t, openBlock as a, normalizeClass as l, renderSlot as r } from "vue";
3
3
 
4
- const r = {
4
+ const p = {
5
5
  name: "PlRow"
6
- }, m = /* @__PURE__ */ o({
7
- ...r,
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(p) {
14
- return (e, s) => (a(), n("div", {
15
- class: t(["pl-layout-component pl-row", { wrap: e.wrap, "align-center": e.alignCenter }])
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
- l(e.$slots, "default")
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<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>, {
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 e from "./DoubleContour.vue2.js";
2
- import { createElementBlock as r, openBlock as t, createElementVNode as s, normalizeProps as n, guardReactiveProps as a, renderSlot as c } from "vue";
3
- import d from "../_virtual/_plugin-vue_export-helper.js";
4
- const l = { class: "double-contour" };
5
- function p(o, i, m, u, f, _) {
6
- return t(), r("div", l, [
7
- s("div", n(a(o.$attrs)), [
8
- c(o.$slots, "default")
9
- ], 16)
10
- ]);
11
- }
12
- const h = /* @__PURE__ */ d(e, [["render", p]]);
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
- h as default
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></script>\n\n<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n};\n</script>\n\n<template>\n <div class=\"double-contour\">\n <div v-bind=\"$attrs\">\n <slot />\n </div>\n </div>\n</template>\n"],"names":["_sfc_render","_ctx","_cache","$props","$setup","$data","$options","$attrs","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_normalizeProps","_guardReactiveProps"],"mappings":";;;;AAUI,SAAAA,EAAAC,GAEMC,GAZVC,GAAAC,GAAAC,GAAAC,GAUiBC;SACXC,EAAA,GAAQC,EAAA,OAAAC,GAAA;AAAA,IAAAC,EAAA,OAAAC,EAAAC,EAAAZ,EAAA,MAAA,CAAA,GAAA;AAAA;;;;;"}
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;;;;"}
@@ -5,9 +5,9 @@ const m = {};
5
5
  function d(o, e) {
6
6
  return l(), s("div", {
7
7
  class: t(o.$style.component)
8
- }, e[0] || (e[0] = [
8
+ }, [...e[0] || (e[0] = [
9
9
  n("div", null, null, -1)
10
- ]), 2);
10
+ ])], 2);
11
11
  }
12
12
  const a = {
13
13
  $style: r
@@ -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;AAAM,SAAKC,EADb,GAAAC,EACsB,OAAS;AAAA;KAC3BF,EAAA,CAAA,MAAAA,EAAO,CAAA,IAAA;AAAA;;;;;;"}
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","_createElementVNode","$style"],"mappings":";;;;cACEA,GAAA;AAAM,SAAKC,EADb,GAAAC,EACsB,OAAS;AAAA;KAC3B;AAAA,IAAMC,EAFV,OAEiBC;AAAAA;OACX;AAAA,MAAMD,EAHZ,OAGmBC;AAAAA;SACX;AAAA;;;;;;;;"}
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.1",
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.13",
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.30"
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/ts-configs": "1.0.6"
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>