@milaboratories/uikit 2.6.2 → 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 (191) hide show
  1. package/.turbo/turbo-build.log +135 -135
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +6 -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 +1 -1
  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 +27 -0
  34. package/dist/components/PlAccordion/ExpandTransition.vue.js.map +1 -0
  35. package/dist/components/PlAccordion/ExpandTransition.vue2.js.map +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.js +86 -86
  42. package/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
  43. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js +83 -83
  44. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.js.map +1 -1
  45. package/dist/components/PlBtnAccent/PlBtnAccent.vue.js.map +1 -1
  46. package/dist/components/PlBtnDanger/PlBtnDanger.vue.js.map +1 -1
  47. package/dist/components/PlBtnGhost/PlBtnGhost.vue.js +21 -21
  48. package/dist/components/PlBtnGhost/PlBtnGhost.vue.js.map +1 -1
  49. package/dist/components/PlBtnGroup/PlBtnGroup.vue.js +34 -34
  50. package/dist/components/PlBtnGroup/PlBtnGroup.vue.js.map +1 -1
  51. package/dist/components/PlBtnLink/PlBtnLink.vue.js +12 -12
  52. package/dist/components/PlBtnLink/PlBtnLink.vue.js.map +1 -1
  53. package/dist/components/PlBtnPrimary/PlBtnPrimary.vue.js.map +1 -1
  54. package/dist/components/PlBtnSecondary/PlBtnSecondary.vue.js.map +1 -1
  55. package/dist/components/PlBtnSplit/PlBtnSplit.vue.js +31 -31
  56. package/dist/components/PlBtnSplit/PlBtnSplit.vue.js.map +1 -1
  57. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js +18 -18
  58. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js.map +1 -1
  59. package/dist/components/PlChartStackedBar/Legends.vue2.js.map +1 -1
  60. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js +15 -15
  61. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js.map +1 -1
  62. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js.map +1 -1
  63. package/dist/components/PlChartStackedBar/StackedRow.vue2.js.map +1 -1
  64. package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js.map +1 -1
  65. package/dist/components/PlCheckbox/PlCheckbox.vue.js +13 -13
  66. package/dist/components/PlCheckbox/PlCheckbox.vue.js.map +1 -1
  67. package/dist/components/PlCheckbox/PlCheckboxBase.vue.js +6 -6
  68. package/dist/components/PlCheckbox/PlCheckboxBase.vue.js.map +1 -1
  69. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js +28 -28
  70. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js.map +1 -1
  71. package/dist/components/PlChip/PlChip.vue.js +20 -20
  72. package/dist/components/PlChip/PlChip.vue.js.map +1 -1
  73. package/dist/components/PlClipboard/PlClipboard.vue2.js.map +1 -1
  74. package/dist/components/PlConfirmDialog.vue.js +14 -14
  75. package/dist/components/PlConfirmDialog.vue.js.map +1 -1
  76. package/dist/components/PlDialogModal/PlDialogModal.vue.js +30 -30
  77. package/dist/components/PlDialogModal/PlDialogModal.vue.js.map +1 -1
  78. package/dist/components/PlDropdown/OptionList.vue.js +40 -40
  79. package/dist/components/PlDropdown/OptionList.vue.js.map +1 -1
  80. package/dist/components/PlDropdown/PlDropdown.vue.js +89 -89
  81. package/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
  82. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js +92 -92
  83. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js.map +1 -1
  84. package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts +1 -1
  85. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js +4 -4
  86. package/dist/components/PlDropdownLine/PlDropdownLine.vue.js.map +1 -1
  87. package/dist/components/PlDropdownLine/ResizableInput.vue.js +12 -12
  88. package/dist/components/PlDropdownLine/ResizableInput.vue.js.map +1 -1
  89. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js +70 -70
  90. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js.map +1 -1
  91. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.d.ts +1 -1
  92. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js.map +1 -1
  93. package/dist/components/PlDropdownRef/PlDropdownRef.vue.js +11 -11
  94. package/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
  95. package/dist/components/PlEditableTitle/PlEditableTitle.vue.d.ts +1 -1
  96. package/dist/components/PlEditableTitle/PlEditableTitle.vue.js +36 -36
  97. package/dist/components/PlEditableTitle/PlEditableTitle.vue.js.map +1 -1
  98. package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
  99. package/dist/components/PlElementList/PlElementListItem.vue2.js +67 -67
  100. package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
  101. package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js.map +1 -1
  102. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.js.map +1 -1
  103. package/dist/components/PlFileDialog/Local.vue.js +24 -24
  104. package/dist/components/PlFileDialog/Local.vue.js.map +1 -1
  105. package/dist/components/PlFileDialog/PlFileDialog.vue.js +38 -38
  106. package/dist/components/PlFileDialog/PlFileDialog.vue.js.map +1 -1
  107. package/dist/components/PlFileDialog/Remote.vue.js +2 -2
  108. package/dist/components/PlFileDialog/Remote.vue.js.map +1 -1
  109. package/dist/components/PlFileDialog/Shortcuts.vue2.js +4 -4
  110. package/dist/components/PlFileDialog/Shortcuts.vue2.js.map +1 -1
  111. package/dist/components/PlFileInput/PlFileInput.vue.d.ts +1 -1
  112. package/dist/components/PlFileInput/PlFileInput.vue.js +75 -75
  113. package/dist/components/PlFileInput/PlFileInput.vue.js.map +1 -1
  114. package/dist/components/PlIcon16/PlIcon16.vue2.js.map +1 -1
  115. package/dist/components/PlIcon24/PlIcon24.vue2.js.map +1 -1
  116. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js +11 -11
  117. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js.map +1 -1
  118. package/dist/components/PlLogView/PlLogView.vue.js +58 -58
  119. package/dist/components/PlLogView/PlLogView.vue.js.map +1 -1
  120. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js +22 -22
  121. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.js.map +1 -1
  122. package/dist/components/PlNumberField/PlNumberField.vue.d.ts +1 -1
  123. package/dist/components/PlNumberField/PlNumberField.vue.js +75 -75
  124. package/dist/components/PlNumberField/PlNumberField.vue.js.map +1 -1
  125. package/dist/components/PlProgressBar/PlProgressBar.vue.js +12 -12
  126. package/dist/components/PlProgressBar/PlProgressBar.vue.js.map +1 -1
  127. package/dist/components/PlProgressCell/PlProgressCell.vue.js +20 -20
  128. package/dist/components/PlProgressCell/PlProgressCell.vue.js.map +1 -1
  129. package/dist/components/PlRadio/PlRadio.vue2.js.map +1 -1
  130. package/dist/components/PlRadio/PlRadioGroup.vue2.js +8 -8
  131. package/dist/components/PlRadio/PlRadioGroup.vue2.js.map +1 -1
  132. package/dist/components/PlSearchField/PlSearchField.vue2.js +19 -19
  133. package/dist/components/PlSearchField/PlSearchField.vue2.js.map +1 -1
  134. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js +8 -8
  135. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js.map +1 -1
  136. package/dist/components/PlSidebar/PlSidebarGroup.vue2.js.map +1 -1
  137. package/dist/components/PlSidebar/PlSidebarItem.vue2.js.map +1 -1
  138. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +1 -1
  139. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js.map +1 -1
  140. package/dist/components/PlSlideModal/PlSlideModal.vue2.js.map +1 -1
  141. package/dist/components/PlSplash/PlSplash.vue.js +16 -16
  142. package/dist/components/PlSplash/PlSplash.vue.js.map +1 -1
  143. package/dist/components/PlStatusTag/PlStatusTag.vue.js +7 -7
  144. package/dist/components/PlStatusTag/PlStatusTag.vue.js.map +1 -1
  145. package/dist/components/PlSvg/PlSvg.vue2.js.map +1 -1
  146. package/dist/components/PlTabs/PlTabs.vue.js +18 -18
  147. package/dist/components/PlTabs/PlTabs.vue.js.map +1 -1
  148. package/dist/components/PlTabs/Tab.vue.js +9 -9
  149. package/dist/components/PlTabs/Tab.vue.js.map +1 -1
  150. package/dist/components/PlTextArea/PlTextArea.vue.js +51 -51
  151. package/dist/components/PlTextArea/PlTextArea.vue.js.map +1 -1
  152. package/dist/components/PlTextField/PlTextField.vue.js +62 -62
  153. package/dist/components/PlTextField/PlTextField.vue.js.map +1 -1
  154. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js +14 -14
  155. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.js.map +1 -1
  156. package/dist/components/PlTooltip/Beak.vue.js +2 -2
  157. package/dist/components/PlTooltip/Beak.vue.js.map +1 -1
  158. package/dist/components/PlTooltip/PlTooltip.vue.js +50 -50
  159. package/dist/components/PlTooltip/PlTooltip.vue.js.map +1 -1
  160. package/dist/components/Scrollable.vue.js.map +1 -1
  161. package/dist/components/Slider.vue.js +35 -35
  162. package/dist/components/Slider.vue.js.map +1 -1
  163. package/dist/components/SliderRange.vue.js +47 -47
  164. package/dist/components/SliderRange.vue.js.map +1 -1
  165. package/dist/components/SliderRangeTriple.vue.js +47 -47
  166. package/dist/components/SliderRangeTriple.vue.js.map +1 -1
  167. package/dist/components/TabItem.vue.js.map +1 -1
  168. package/dist/components/ThemeSwitcher.vue.js +2 -2
  169. package/dist/components/ThemeSwitcher.vue.js.map +1 -1
  170. package/dist/components/TransitionSlidePanel.vue.js.map +1 -1
  171. package/dist/components/VScroll.vue.js.map +1 -1
  172. package/dist/components/contextMenu/Menu.vue2.js +12 -12
  173. package/dist/components/contextMenu/Menu.vue2.js.map +1 -1
  174. package/dist/index.js +1 -1
  175. package/dist/layout/PlBlockPage/PlBlockPage.vue.js +27 -27
  176. package/dist/layout/PlBlockPage/PlBlockPage.vue.js.map +1 -1
  177. package/dist/layout/PlContainer/PlContainer.vue.js +10 -10
  178. package/dist/layout/PlContainer/PlContainer.vue.js.map +1 -1
  179. package/dist/layout/PlGrid/PlGrid.vue.js.map +1 -1
  180. package/dist/layout/PlRow/PlRow.vue.js +8 -8
  181. package/dist/layout/PlRow/PlRow.vue.js.map +1 -1
  182. package/dist/layout/PlSpacer/PlSpacer.vue.js.map +1 -1
  183. package/dist/utils/DoubleContour.vue.js +9 -9
  184. package/dist/utils/DoubleContour.vue.js.map +1 -1
  185. package/dist/utils/DropdownOverlay/DropdownOverlay.vue.js.map +1 -1
  186. package/dist/utils/PlCloseModalBtn.vue.js +2 -2
  187. package/dist/utils/PlCloseModalBtn.vue.js.map +1 -1
  188. package/dist/utils/TextLabel.vue.js.map +1 -1
  189. package/package.json +4 -4
  190. package/dist/utils/DoubleContour.vue2.js +0 -23
  191. package/dist/utils/DoubleContour.vue2.js.map +0 -1
@@ -1,14 +1,14 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var t=document.createElement("style");t.appendChild(document.createTextNode(".pl-notification-alert{padding:12px;position:relative;border-radius:6px;border:1px solid var(--border-color-default);min-height:40px;width:256px;max-height:100%;overflow:auto}.pl-notification-alert .ui-btn-ghost{position:absolute;right:0;top:0}.pl-notification-alert__close{width:32px;min-width:28px}.pl-notification-alert__close .pl-btn-ghost{position:absolute;top:0;right:0;width:40px!important;height:40px!important}.pl-notification-alert__wrapper{flex-grow:1;overflow:auto}.pl-notification-alert.neutral{background:var(--notification-neutral)}.pl-notification-alert.error{background:var(--notification-error)}.pl-notification-alert.success{background:var(--notification-success)}.pl-notification-alert.warning{background:var(--notification-warning)}")),document.head.appendChild(t)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();
2
- import { defineComponent as d, mergeModels as f, useModel as p, createElementBlock as t, createCommentVNode as o, openBlock as l, normalizeStyle as m, normalizeClass as u, createElementVNode as i, renderSlot as n, createVNode as _, unref as h, withModifiers as y } from "vue";
2
+ import { defineComponent as r, mergeModels as f, useModel as m, createElementBlock as o, createCommentVNode as l, openBlock as a, normalizeStyle as u, normalizeClass as p, createElementVNode as s, renderSlot as n, createVNode as _, unref as h, withModifiers as y } from "vue";
3
3
  import v from "../PlBtnGhost/PlBtnGhost.vue.js";
4
4
 
5
- const k = { class: "pl-notification-alert__wrapper d-flex text-s" }, w = { class: "pl-notification-alert__content flex-grow-1" }, V = {
5
+ const k = { class: "pl-notification-alert__wrapper d-flex text-s" }, w = { class: "pl-notification-alert__content flex-grow-1" }, x = {
6
6
  key: 0,
7
7
  class: "pl-notification-alert__close"
8
- }, $ = {
8
+ }, V = {
9
9
  key: 0,
10
10
  class: "pl-notification-alert__actions d-flex"
11
- }, b = /* @__PURE__ */ d({
11
+ }, N = /* @__PURE__ */ r({
12
12
  __name: "PlNotificationAlert",
13
13
  props: /* @__PURE__ */ f({
14
14
  type: { default: "neutral" },
@@ -19,34 +19,34 @@ const k = { class: "pl-notification-alert__wrapper d-flex text-s" }, w = { class
19
19
  modelModifiers: {}
20
20
  }),
21
21
  emits: ["update:modelValue"],
22
- setup(s) {
23
- const r = s, a = p(s, "modelValue");
24
- function c() {
25
- r.closable && (a.value = !1);
22
+ setup(e) {
23
+ const c = e, i = m(e, "modelValue");
24
+ function d() {
25
+ c.closable && (i.value = !1);
26
26
  }
27
- return (e, B) => a.value ? (l(), t("div", {
27
+ return (t, $) => i.value ? (a(), o("div", {
28
28
  key: 0,
29
- class: u([e.type, "pl-notification-alert d-flex flex-column gap-16"]),
30
- style: m({ width: `${e.width}` })
29
+ class: p([e.type, "pl-notification-alert d-flex flex-column gap-16"]),
30
+ style: u({ width: `${e.width}` })
31
31
  }, [
32
- i("div", k, [
33
- i("div", w, [
34
- n(e.$slots, "default")
32
+ s("div", k, [
33
+ s("div", w, [
34
+ n(t.$slots, "default")
35
35
  ]),
36
- e.closable ? (l(), t("div", V, [
36
+ e.closable ? (a(), o("div", x, [
37
37
  _(h(v), {
38
38
  icon: "close",
39
- onClick: y(c, ["stop"])
39
+ onClick: y(d, ["stop"])
40
40
  })
41
- ])) : o("", !0)
41
+ ])) : l("", !0)
42
42
  ]),
43
- e.$slots.actions ? (l(), t("div", $, [
44
- n(e.$slots, "actions")
45
- ])) : o("", !0)
46
- ], 6)) : o("", !0);
43
+ t.$slots.actions ? (a(), o("div", V, [
44
+ n(t.$slots, "actions")
45
+ ])) : l("", !0)
46
+ ], 6)) : l("", !0);
47
47
  }
48
48
  });
49
49
  export {
50
- b as default
50
+ N as default
51
51
  };
52
52
  //# sourceMappingURL=PlNotificationAlert.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlNotificationAlert.vue.js","sources":["../../../src/components/PlNotificationAlert/PlNotificationAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnGhost } from '../PlBtnGhost';\nimport './pl-notification-alert.scss';\n\nconst props = withDefaults(\n defineProps<{\n type?: 'success' | 'error' | 'warning' | 'neutral';\n width?: string;\n closable?: boolean;\n }>(),\n { type: 'neutral', width: '256px' },\n);\n\nconst model = defineModel({ type: Boolean, default: true });\n\nfunction closeAlert() {\n if (props.closable) {\n model.value = false;\n }\n}\n</script>\n\n<template>\n <div v-if=\"model\" :class=\"type\" :style=\"{ width: `${width}` }\" class=\"pl-notification-alert d-flex flex-column gap-16\">\n <div class=\"pl-notification-alert__wrapper d-flex text-s\">\n <div class=\"pl-notification-alert__content flex-grow-1\">\n <slot />\n </div>\n <div v-if=\"closable\" class=\"pl-notification-alert__close\">\n <PlBtnGhost icon=\"close\" @click.stop=\"closeAlert\" />\n </div>\n </div>\n\n <div v-if=\"!!$slots.actions\" class=\"pl-notification-alert__actions d-flex\">\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n"],"names":["props","__props","model","_useModel","closeAlert"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GASRC,IAAQC,iBAA4C;AAE1D,aAASC,IAAa;AACpB,MAAIJ,EAAM,aACRE,EAAM,QAAQ;AAAA,IAElB;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlNotificationAlert.vue.js","sources":["../../../src/components/PlNotificationAlert/PlNotificationAlert.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PlBtnGhost } from '../PlBtnGhost';\nimport './pl-notification-alert.scss';\n\nconst props = withDefaults(\n defineProps<{\n type?: 'success' | 'error' | 'warning' | 'neutral';\n width?: string;\n closable?: boolean;\n }>(),\n { type: 'neutral', width: '256px' },\n);\n\nconst model = defineModel({ type: Boolean, default: true });\n\nfunction closeAlert() {\n if (props.closable) {\n model.value = false;\n }\n}\n</script>\n\n<template>\n <div v-if=\"model\" :class=\"type\" :style=\"{ width: `${width}` }\" class=\"pl-notification-alert d-flex flex-column gap-16\">\n <div class=\"pl-notification-alert__wrapper d-flex text-s\">\n <div class=\"pl-notification-alert__content flex-grow-1\">\n <slot />\n </div>\n <div v-if=\"closable\" class=\"pl-notification-alert__close\">\n <PlBtnGhost icon=\"close\" @click.stop=\"closeAlert\" />\n </div>\n </div>\n\n <div v-if=\"!!$slots.actions\" class=\"pl-notification-alert__actions d-flex\">\n <slot name=\"actions\" />\n </div>\n </div>\n</template>\n"],"names":["props","__props","model","_useModel","closeAlert","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_hoisted_2","_renderSlot","_ctx","_openBlock","_hoisted_3","_createVNode","_unref","PlBtnGhost","$slots","_hoisted_4"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,UAAMA,IAAQC,GASRC,IAAQC,iBAA4C;AAE1D,aAASC,IAAa;AACpB,MAAIJ,EAAM,aACRE,EAAM,QAAQ;AAAA,IAElB;qBAIaA,EAAA,cAAXG,EAaM,OAAA;AAAA;MAba,OAAKC,EAAA,CAAEL,EAAA,MAA2C,iDAAiD,CAAA;AAAA,MAArF,qBAAmBA,EAAA,KAAK,IAAA;AAAA,IAAA;MACvDM,EAOM,OAPNC,GAOM;AAAA,QANJD,EAEM,OAFNE,GAEM;AAAA,UADJC,EAAQC,EAAA,QAAA,SAAA;AAAA,QAAA;QAECV,EAAA,YAAXW,EAAA,GAAAP,EAEM,OAFNQ,GAEM;AAAA,UADJC,EAAoDC,EAAAC,CAAA,GAAA;AAAA,YAAxC,MAAK;AAAA,YAAS,WAAYZ,GAAU,CAAA,MAAA,CAAA;AAAA,UAAA;;;MAIvCa,EAAAA,OAAO,WAApBL,EAAA,GAAAP,EAEM,OAFNa,GAEM;AAAA,QADJR,EAAuBC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
@@ -68,9 +68,9 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
68
68
  "onUpdate:modelValue"?: ((value: number | undefined) => any) | undefined;
69
69
  }>, {
70
70
  label: string;
71
+ placeholder: string;
71
72
  step: number;
72
73
  groupPosition: "top" | "bottom" | "left" | "right" | "top-left" | "top-right" | "bottom-left" | "bottom-right" | "middle";
73
- placeholder: string;
74
74
  minValue: number;
75
75
  maxValue: number;
76
76
  useIncrementButtons: boolean;
@@ -1,12 +1,12 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode(`.pl-number-field{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);--color-hint: #9d9eae}.pl-number-field ::placeholder{color:#cfd1db;opacity:1}.pl-number-field__main-wrapper{height:40px;position:relative}.pl-number-field__wrapper{padding-left:12px;border-radius:6px}.pl-number-field__wrapper.withoutArrows{padding-right:12px}.pl-number-field__icons{width:40px;border-radius:0 6px 6px 0;border-left:1px solid var(--contour-color)}.pl-number-field__icon{line-height:0}.pl-number-field__icon.disabled{cursor:not-allowed;position:relative;z-index:1}.pl-number-field__icon.disabled svg path{fill:#cfd1db}.pl-number-field__icon:hover{background-color:#9babcc29}.pl-number-field__icon:first-child{border-bottom:1px solid var(--contour-color)}.pl-number-field__hint{margin-top:3px;color:var(--color-hint)}.pl-number-field__error{margin-top:3px;color:var(--txt-error);font-size:12px;font-weight:500;line-height:16px}.pl-number-field input{outline:none;border:none;width:100%;background:unset;text-overflow:ellipsis}.pl-number-field__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none;transition:all .3s}.pl-number-field:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-number-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-number-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error);--color-hint: var(--txt-error)}.pl-number-field.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);cursor:not-allowed}.pl-number-field.disabled label,.pl-number-field.disabled .mi-number-field__hint,.pl-number-field.disabled input{color:var(--contour-color)}.pl-number-field.disabled svg path{fill:var(--contour-color)}.pl-number-field.disabled .mi-number-field__icons{pointer-events:none}.pl-number-field label{position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);display:flex;align-items:center;padding:0 4px;overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);transition:color .3s}.pl-number-field label .required{display:inline-block;font-weight:500;font-size:12px;line-height:16px;color:var(--txt-error);margin-right:4px}
2
2
  .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(r)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
3
- import { defineComponent as S, mergeModels as A, useModel as R, useSlots as $, ref as f, computed as a, watch as F, createElementBlock as p, openBlock as d, normalizeClass as c, createElementVNode as r, createCommentVNode as m, createVNode as P, withDirectives as j, createTextVNode as T, createBlock as U, toDisplayString as L, unref as M, withCtx as K, renderSlot as Z, vModelText as q } from "vue";
3
+ import { defineComponent as _, mergeModels as A, useModel as R, useSlots as $, ref as c, computed as s, watch as F, createElementBlock as m, openBlock as v, normalizeClass as p, createElementVNode as r, createCommentVNode as g, createVNode as P, withDirectives as j, createTextVNode as T, createBlock as U, toDisplayString as M, unref as C, withCtx as K, renderSlot as Z, vModelText as q } from "vue";
4
4
 
5
5
  import z from "../../utils/DoubleContour.vue.js";
6
6
 
7
7
  import { useLabelNotch as G } from "../../utils/useLabelNotch.js";
8
8
  import H from "../PlTooltip/PlTooltip.vue.js";
9
- import { parseNumber as C } from "./parseNumber.js";
9
+ import { parseNumber as D } from "./parseNumber.js";
10
10
  const J = { class: "pl-number-field__main-wrapper d-flex" }, Q = {
11
11
  key: 0,
12
12
  class: "text-description"
@@ -15,7 +15,7 @@ const J = { class: "pl-number-field__main-wrapper d-flex" }, Q = {
15
15
  class: "pl-number-field__error"
16
16
  }, Y = {
17
17
  name: "PlNumberField"
18
- }, ie = /* @__PURE__ */ S({
18
+ }, ie = /* @__PURE__ */ _({
19
19
  ...Y,
20
20
  props: /* @__PURE__ */ A({
21
21
  disabled: { type: Boolean },
@@ -34,90 +34,90 @@ const J = { class: "pl-number-field__main-wrapper d-flex" }, Q = {
34
34
  modelModifiers: {}
35
35
  }),
36
36
  emits: ["update:modelValue"],
37
- setup(V) {
38
- const o = V, n = R(V, "modelValue"), D = $(), b = f(), v = f();
39
- G(b);
40
- function x(e) {
37
+ setup(n) {
38
+ const t = n, u = R(n, "modelValue"), O = $(), V = c(), f = c();
39
+ G(V);
40
+ function b(e) {
41
41
  return e === void 0 ? "" : String(+e);
42
42
  }
43
- const u = a(() => C(o, s.value)), g = f(void 0), O = () => g.value = void 0;
44
- F(n, (e) => {
45
- const l = u.value;
46
- (l.error || e !== l.value) && O();
43
+ const i = s(() => D(t, d.value)), w = c(void 0), E = () => w.value = void 0;
44
+ F(u, (e) => {
45
+ const l = i.value;
46
+ (l.error || e !== l.value) && E();
47
47
  });
48
- const s = a({
48
+ const d = s({
49
49
  get() {
50
- return g.value ?? x(n.value);
50
+ return w.value ?? b(u.value);
51
51
  },
52
52
  set(e) {
53
- const l = C(o, e);
54
- g.value = l.cleanInput, l.error || o.updateOnEnterOrClickOutside ? v.value.value = l.cleanInput : n.value = l.value;
53
+ const l = D(t, e);
54
+ w.value = l.cleanInput, l.error || t.updateOnEnterOrClickOutside ? f.value.value = l.cleanInput : u.value = l.value;
55
55
  }
56
- }), h = f(!1);
57
- function E() {
58
- u.value.error === void 0 && (n.value = u.value.value);
56
+ }), h = c(!1);
57
+ function I() {
58
+ i.value.error === void 0 && (u.value = i.value.value);
59
59
  }
60
- const w = a(() => {
60
+ const x = s(() => {
61
61
  let e = [];
62
- o.errorMessage && e.push(o.errorMessage);
63
- const l = u.value;
62
+ t.errorMessage && e.push(t.errorMessage);
63
+ const l = i.value;
64
64
  if (l.error)
65
65
  e.push(l.error.message);
66
- else if (o.validate && l.value !== void 0) {
67
- const t = o.validate(l.value);
68
- t && e.push(t);
66
+ else if (t.validate && l.value !== void 0) {
67
+ const o = t.validate(l.value);
68
+ o && e.push(o);
69
69
  }
70
70
  return e = [...e], e.join(" ");
71
- }), y = a(() => {
72
- const e = u.value;
73
- return o.maxValue !== void 0 && e.value !== void 0 ? e.value >= o.maxValue : !1;
74
- }), k = a(() => {
75
- const e = u.value;
76
- return o.minValue !== void 0 && e.value !== void 0 ? e.value <= o.minValue : !1;
77
- }), i = a(
71
+ }), y = s(() => {
72
+ const e = i.value;
73
+ return t.maxValue !== void 0 && e.value !== void 0 ? e.value >= t.maxValue : !1;
74
+ }), k = s(() => {
75
+ const e = i.value;
76
+ return t.minValue !== void 0 && e.value !== void 0 ? e.value <= t.minValue : !1;
77
+ }), a = s(
78
78
  () => {
79
79
  var e;
80
- return 10 ** (((e = o.step.toString().split(".").at(1)) == null ? void 0 : e.length) ?? 0);
80
+ return 10 ** (((e = t.step.toString().split(".").at(1)) == null ? void 0 : e.length) ?? 0);
81
81
  }
82
82
  );
83
- function _() {
84
- const l = u.value.value;
83
+ function B() {
84
+ const l = i.value.value;
85
85
  if (!y.value) {
86
- let t;
87
- l === void 0 ? t = o.minValue ? o.minValue : 0 : t = ((l || 0) * i.value + o.step * i.value) / i.value, n.value = o.maxValue !== void 0 ? Math.min(o.maxValue, t) : t;
86
+ let o;
87
+ l === void 0 ? o = t.minValue ? t.minValue : 0 : o = ((l || 0) * a.value + t.step * a.value) / a.value, u.value = t.maxValue !== void 0 ? Math.min(t.maxValue, o) : o;
88
88
  }
89
89
  }
90
- function B() {
91
- const l = u.value.value;
90
+ function L() {
91
+ const l = i.value.value;
92
92
  if (!k.value) {
93
- let t;
94
- l === void 0 ? t = 0 : t = ((l || 0) * i.value - o.step * i.value) / i.value, n.value = o.minValue !== void 0 ? Math.max(o.minValue, t) : t;
93
+ let o;
94
+ l === void 0 ? o = 0 : o = ((l || 0) * a.value - t.step * a.value) / a.value, u.value = t.minValue !== void 0 ? Math.max(t.minValue, o) : o;
95
95
  }
96
96
  }
97
- function I(e) {
98
- var l, t;
99
- o.updateOnEnterOrClickOutside && (e.code === "Escape" && (s.value = x(n.value), (l = v.value) == null || l.blur()), e.code === "Enter" && ((t = v.value) == null || t.blur())), e.code === "Enter" && (s.value = String(n.value)), ["ArrowDown", "ArrowUp"].includes(e.code) && e.preventDefault(), o.useIncrementButtons && e.code === "ArrowUp" && _(), o.useIncrementButtons && e.code === "ArrowDown" && B();
97
+ function N(e) {
98
+ var l, o;
99
+ t.updateOnEnterOrClickOutside && (e.code === "Escape" && (d.value = b(u.value), (l = f.value) == null || l.blur()), e.code === "Enter" && ((o = f.value) == null || o.blur())), e.code === "Enter" && (d.value = String(u.value)), ["ArrowDown", "ArrowUp"].includes(e.code) && e.preventDefault(), t.useIncrementButtons && e.code === "ArrowUp" && B(), t.useIncrementButtons && e.code === "ArrowDown" && L();
100
100
  }
101
- const N = (e) => {
101
+ const S = (e) => {
102
102
  e.detail > 1 && e.preventDefault();
103
103
  };
104
- return (e, l) => (d(), p("div", {
104
+ return (e, l) => (v(), m("div", {
105
105
  ref_key: "rootRef",
106
- ref: b,
107
- class: c([{ error: !!w.value.trim(), disabled: e.disabled }, "pl-number-field d-flex-column"]),
108
- onKeydown: l[3] || (l[3] = (t) => I(t))
106
+ ref: V,
107
+ class: p([{ error: !!x.value.trim(), disabled: n.disabled }, "pl-number-field d-flex-column"]),
108
+ onKeydown: l[3] || (l[3] = (o) => N(o))
109
109
  }, [
110
110
  r("div", J, [
111
111
  P(z, {
112
112
  class: "pl-number-field__contour",
113
- "group-position": e.groupPosition
113
+ "group-position": n.groupPosition
114
114
  }, null, 8, ["group-position"]),
115
115
  r("div", {
116
- class: c(["pl-number-field__wrapper flex-grow d-flex flex-align-center", { withoutArrows: !e.useIncrementButtons }])
116
+ class: p(["pl-number-field__wrapper flex-grow d-flex flex-align-center", { withoutArrows: !n.useIncrementButtons }])
117
117
  }, [
118
- e.label ? (d(), p("label", Q, [
119
- T(L(e.label) + " ", 1),
120
- M(D).tooltip ? (d(), U(M(H), {
118
+ n.label ? (v(), m("label", Q, [
119
+ T(M(n.label) + " ", 1),
120
+ C(O).tooltip ? (v(), U(C(H), {
121
121
  key: 0,
122
122
  class: "info",
123
123
  position: "top"
@@ -126,32 +126,32 @@ const J = { class: "pl-number-field__main-wrapper d-flex" }, Q = {
126
126
  Z(e.$slots, "tooltip")
127
127
  ]),
128
128
  _: 3
129
- })) : m("", !0)
130
- ])) : m("", !0),
129
+ })) : g("", !0)
130
+ ])) : g("", !0),
131
131
  j(r("input", {
132
132
  ref_key: "inputRef",
133
- ref: v,
134
- "onUpdate:modelValue": l[0] || (l[0] = (t) => s.value = t),
135
- disabled: e.disabled,
136
- placeholder: e.placeholder,
133
+ ref: f,
134
+ "onUpdate:modelValue": l[0] || (l[0] = (o) => d.value = o),
135
+ disabled: n.disabled,
136
+ placeholder: n.placeholder,
137
137
  class: "text-s flex-grow",
138
- onFocusin: l[1] || (l[1] = (t) => h.value = !0),
139
- onFocusout: l[2] || (l[2] = (t) => {
140
- h.value = !1, E();
138
+ onFocusin: l[1] || (l[1] = (o) => h.value = !0),
139
+ onFocusout: l[2] || (l[2] = (o) => {
140
+ h.value = !1, I();
141
141
  })
142
142
  }, null, 40, W), [
143
- [q, s.value]
143
+ [q, d.value]
144
144
  ])
145
145
  ], 2),
146
- e.useIncrementButtons ? (d(), p("div", {
146
+ n.useIncrementButtons ? (v(), m("div", {
147
147
  key: 0,
148
148
  class: "pl-number-field__icons d-flex-column",
149
- onMousedown: N
149
+ onMousedown: S
150
150
  }, [
151
151
  r("div", {
152
- class: c([{ disabled: y.value }, "pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
153
- onClick: _
154
- }, l[4] || (l[4] = [
152
+ class: p([{ disabled: y.value }, "pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
153
+ onClick: B
154
+ }, [...l[4] || (l[4] = [
155
155
  r("svg", {
156
156
  xmlns: "http://www.w3.org/2000/svg",
157
157
  width: "16",
@@ -166,11 +166,11 @@ const J = { class: "pl-number-field__main-wrapper d-flex" }, Q = {
166
166
  fill: "#110529"
167
167
  })
168
168
  ], -1)
169
- ]), 2),
169
+ ])], 2),
170
170
  r("div", {
171
- class: c([{ disabled: k.value }, "pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
172
- onClick: B
173
- }, l[5] || (l[5] = [
171
+ class: p([{ disabled: k.value }, "pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center"]),
172
+ onClick: L
173
+ }, [...l[5] || (l[5] = [
174
174
  r("svg", {
175
175
  xmlns: "http://www.w3.org/2000/svg",
176
176
  width: "16",
@@ -185,10 +185,10 @@ const J = { class: "pl-number-field__main-wrapper d-flex" }, Q = {
185
185
  fill: "#110529"
186
186
  })
187
187
  ], -1)
188
- ]), 2)
189
- ], 32)) : m("", !0)
188
+ ])], 2)
189
+ ], 32)) : g("", !0)
190
190
  ]),
191
- w.value.trim() ? (d(), p("div", X, L(w.value), 1)) : m("", !0)
191
+ x.value.trim() ? (v(), m("div", X, M(x.value), 1)) : g("", !0)
192
192
  ], 34));
193
193
  }
194
194
  });
@@ -1 +1 @@
1
- {"version":3,"file":"PlNumberField.vue.js","sources":["../../../src/components/PlNumberField/PlNumberField.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Number input field with increment/decrement buttons, validation, and min/max constraints.\n *\n * @example\n * <PlNumberField v-model=\"price\" :step=\"0.01\" :min-value=\"0\" label=\"Price\" />\n *\n * @example\n * <PlNumberField\n * v-model=\"evenNumber\"\n * :validate=\"(v) => v % 2 !== 0 ? 'Number must be even' : undefined\"\n * :update-on-enter-or-click-outside=\"true\"\n * label=\"Even Number\"\n * />\n */\nexport default {\n name: 'PlNumberField',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport './pl-number-field.scss';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport { computed, ref, useSlots, watch } from 'vue';\nimport { PlTooltip } from '../PlTooltip';\nimport { parseNumber } from './parseNumber';\n\nconst props = withDefaults(defineProps<{\n /** Input is disabled if true */\n disabled?: boolean;\n /** Label on the top border of the field, empty by default */\n label?: string;\n /** Input placeholder, empty by default */\n placeholder?: string;\n /** Step for increment/decrement buttons, 1 by default */\n step?: number;\n /** If defined - show an error if value is lower */\n minValue?: number;\n /** If defined - show an error if value is higher */\n maxValue?: number;\n /** If false - remove buttons on the right */\n useIncrementButtons?: boolean;\n /** If true - changes do not apply immediately, they apply only by removing focus from the input (by click enter or by click outside) */\n updateOnEnterOrClickOutside?: boolean;\n /** Error message that shows always when it's provided, without other checks */\n errorMessage?: string;\n /** Additional validity check for input value that must return an error text if failed */\n validate?: (v: number) => string | undefined;\n /** Makes some of corners not rounded */\n groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';\n}>(), {\n step: 1,\n label: undefined,\n placeholder: undefined,\n minValue: undefined,\n maxValue: undefined,\n useIncrementButtons: true,\n updateOnEnter: false,\n errorMessage: undefined,\n validate: undefined,\n groupPosition: undefined,\n});\n\nconst modelValue = defineModel<number | undefined>({ required: true });\n\nconst slots = useSlots();\n\nconst rootRef = ref<HTMLElement>();\nconst inputRef = ref<HTMLInputElement>();\n\nuseLabelNotch(rootRef);\n\nfunction modelToString(v: number | undefined) {\n return v === undefined ? '' : String(+v); // (+v) to avoid staying in input non-number values if they are provided in model\n}\n\nconst parsedResult = computed(() => parseNumber(props, inputValue.value));\n\nconst cachedValue = ref<string | undefined>(undefined);\n\nconst resetCachedValue = () => cachedValue.value = undefined;\n\nwatch(modelValue, (n) => {\n const r = parsedResult.value;\n if (r.error || n !== r.value) {\n resetCachedValue();\n }\n});\n\nconst inputValue = computed({\n get() {\n return cachedValue.value ?? modelToString(modelValue.value);\n },\n set(nextValue: string) {\n const r = parseNumber(props, nextValue);\n\n cachedValue.value = r.cleanInput;\n\n if (r.error || props.updateOnEnterOrClickOutside) {\n inputRef.value!.value = r.cleanInput;\n } else {\n modelValue.value = r.value;\n }\n },\n});\n\nconst focused = ref(false);\n\nfunction applyChanges() {\n if (parsedResult.value.error === undefined) {\n modelValue.value = parsedResult.value.value;\n }\n}\n\nconst errors = computed(() => {\n let ers: string[] = [];\n\n if (props.errorMessage) {\n ers.push(props.errorMessage);\n }\n\n const r = parsedResult.value;\n\n if (r.error) {\n ers.push(r.error.message);\n } else if (props.validate && r.value !== undefined) {\n const error = props.validate(r.value);\n if (error) {\n ers.push(error);\n }\n }\n\n ers = [...ers];\n\n return ers.join(' ');\n});\n\nconst isIncrementDisabled = computed(() => {\n const r = parsedResult.value;\n\n if (props.maxValue !== undefined && r.value !== undefined) {\n return r.value >= props.maxValue;\n }\n\n return false;\n});\n\nconst isDecrementDisabled = computed(() => {\n const r = parsedResult.value;\n\n if (props.minValue !== undefined && r.value !== undefined) {\n return r.value <= props.minValue;\n }\n\n return false;\n});\n\nconst multiplier = computed(() =>\n 10 ** (props.step.toString().split('.').at(1)?.length ?? 0),\n);\n\nfunction increment() {\n const r = parsedResult.value;\n\n const parsedValue = r.value;\n\n if (!isIncrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = props.minValue ? props.minValue : 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n + props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.maxValue !== undefined ? Math.min(props.maxValue, nV) : nV;\n }\n}\n\nfunction decrement() {\n const r = parsedResult.value;\n\n const parsedValue = r.value;\n\n if (!isDecrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n - props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.minValue !== undefined ? Math.max(props.minValue, nV) : nV;\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if (props.updateOnEnterOrClickOutside) {\n if (e.code === 'Escape') {\n inputValue.value = modelToString(modelValue.value);\n inputRef.value?.blur();\n }\n if (e.code === 'Enter') {\n inputRef.value?.blur();\n }\n }\n\n if (e.code === 'Enter') {\n inputValue.value = String(modelValue.value); // to make .1 => 0.1, 10.00 => 10, remove leading zeros etc\n }\n\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault();\n }\n\n if (props.useIncrementButtons && e.code === 'ArrowUp') {\n increment();\n }\n\n if (props.useIncrementButtons && e.code === 'ArrowDown') {\n decrement();\n }\n}\n\n// https://stackoverflow.com/questions/880512/prevent-text-selection-after-double-click#:~:text=If%20you%20encounter%20a%20situation,none%3B%20to%20the%20summary%20element.\n// this prevents selecting of more than input content in some cases,\n// but also disable selecting input content by double-click (useful feature)\nconst onMousedown = (ev: MouseEvent) => {\n if (ev.detail > 1) {\n ev.preventDefault();\n }\n};\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n :class=\"{ error: !!errors.trim(), disabled: disabled }\"\n class=\"pl-number-field d-flex-column\"\n @keydown=\"handleKeyPress($event)\"\n >\n <div class=\"pl-number-field__main-wrapper d-flex\">\n <DoubleContour class=\"pl-number-field__contour\" :group-position=\"groupPosition\"/>\n <div\n class=\"pl-number-field__wrapper flex-grow d-flex flex-align-center\"\n :class=\"{withoutArrows: !useIncrementButtons}\"\n >\n <label v-if=\"label\" class=\"text-description\">\n {{ label }}\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\"/>\n </template>\n </PlTooltip>\n </label>\n <input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n class=\"text-s flex-grow\"\n @focusin=\"focused = true\"\n @focusout=\"focused = false; applyChanges()\"\n />\n </div>\n <div v-if=\"useIncrementButtons\" class=\"pl-number-field__icons d-flex-column\" @mousedown=\"onMousedown\">\n <div\n :class=\"{ disabled: isIncrementDisabled }\"\n class=\"pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"increment\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8 4.93933L13.5303 10.4697L12.4697 11.5303L8 7.06065L3.53033 11.5303L2.46967 10.4697L8 4.93933Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n <div\n :class=\"{ disabled: isDecrementDisabled }\"\n class=\"pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"decrement\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.46967 6.53033L3.53033 5.46967L8 9.93934L12.4697 5.46967L13.5303 6.53033L8 12.0607L2.46967 6.53033Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div v-if=\"errors.trim()\" class=\"pl-number-field__error\">\n {{ errors }}\n </div>\n </div>\n</template>\n"],"names":["__default__","props","__props","modelValue","_useModel","slots","useSlots","rootRef","ref","inputRef","useLabelNotch","modelToString","v","parsedResult","computed","parseNumber","inputValue","cachedValue","resetCachedValue","watch","n","r","nextValue","focused","applyChanges","errors","ers","error","isIncrementDisabled","isDecrementDisabled","multiplier","_a","increment","parsedValue","nV","decrement","handleKeyPress","_b","onMousedown","ev"],"mappings":"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"}
1
+ {"version":3,"file":"PlNumberField.vue.js","sources":["../../../src/components/PlNumberField/PlNumberField.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Number input field with increment/decrement buttons, validation, and min/max constraints.\n *\n * @example\n * <PlNumberField v-model=\"price\" :step=\"0.01\" :min-value=\"0\" label=\"Price\" />\n *\n * @example\n * <PlNumberField\n * v-model=\"evenNumber\"\n * :validate=\"(v) => v % 2 !== 0 ? 'Number must be even' : undefined\"\n * :update-on-enter-or-click-outside=\"true\"\n * label=\"Even Number\"\n * />\n */\nexport default {\n name: 'PlNumberField',\n};\n</script>\n\n<script setup lang=\"ts\">\nimport './pl-number-field.scss';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport { computed, ref, useSlots, watch } from 'vue';\nimport { PlTooltip } from '../PlTooltip';\nimport { parseNumber } from './parseNumber';\n\nconst props = withDefaults(defineProps<{\n /** Input is disabled if true */\n disabled?: boolean;\n /** Label on the top border of the field, empty by default */\n label?: string;\n /** Input placeholder, empty by default */\n placeholder?: string;\n /** Step for increment/decrement buttons, 1 by default */\n step?: number;\n /** If defined - show an error if value is lower */\n minValue?: number;\n /** If defined - show an error if value is higher */\n maxValue?: number;\n /** If false - remove buttons on the right */\n useIncrementButtons?: boolean;\n /** If true - changes do not apply immediately, they apply only by removing focus from the input (by click enter or by click outside) */\n updateOnEnterOrClickOutside?: boolean;\n /** Error message that shows always when it's provided, without other checks */\n errorMessage?: string;\n /** Additional validity check for input value that must return an error text if failed */\n validate?: (v: number) => string | undefined;\n /** Makes some of corners not rounded */\n groupPosition?: 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'middle';\n}>(), {\n step: 1,\n label: undefined,\n placeholder: undefined,\n minValue: undefined,\n maxValue: undefined,\n useIncrementButtons: true,\n updateOnEnter: false,\n errorMessage: undefined,\n validate: undefined,\n groupPosition: undefined,\n});\n\nconst modelValue = defineModel<number | undefined>({ required: true });\n\nconst slots = useSlots();\n\nconst rootRef = ref<HTMLElement>();\nconst inputRef = ref<HTMLInputElement>();\n\nuseLabelNotch(rootRef);\n\nfunction modelToString(v: number | undefined) {\n return v === undefined ? '' : String(+v); // (+v) to avoid staying in input non-number values if they are provided in model\n}\n\nconst parsedResult = computed(() => parseNumber(props, inputValue.value));\n\nconst cachedValue = ref<string | undefined>(undefined);\n\nconst resetCachedValue = () => cachedValue.value = undefined;\n\nwatch(modelValue, (n) => {\n const r = parsedResult.value;\n if (r.error || n !== r.value) {\n resetCachedValue();\n }\n});\n\nconst inputValue = computed({\n get() {\n return cachedValue.value ?? modelToString(modelValue.value);\n },\n set(nextValue: string) {\n const r = parseNumber(props, nextValue);\n\n cachedValue.value = r.cleanInput;\n\n if (r.error || props.updateOnEnterOrClickOutside) {\n inputRef.value!.value = r.cleanInput;\n } else {\n modelValue.value = r.value;\n }\n },\n});\n\nconst focused = ref(false);\n\nfunction applyChanges() {\n if (parsedResult.value.error === undefined) {\n modelValue.value = parsedResult.value.value;\n }\n}\n\nconst errors = computed(() => {\n let ers: string[] = [];\n\n if (props.errorMessage) {\n ers.push(props.errorMessage);\n }\n\n const r = parsedResult.value;\n\n if (r.error) {\n ers.push(r.error.message);\n } else if (props.validate && r.value !== undefined) {\n const error = props.validate(r.value);\n if (error) {\n ers.push(error);\n }\n }\n\n ers = [...ers];\n\n return ers.join(' ');\n});\n\nconst isIncrementDisabled = computed(() => {\n const r = parsedResult.value;\n\n if (props.maxValue !== undefined && r.value !== undefined) {\n return r.value >= props.maxValue;\n }\n\n return false;\n});\n\nconst isDecrementDisabled = computed(() => {\n const r = parsedResult.value;\n\n if (props.minValue !== undefined && r.value !== undefined) {\n return r.value <= props.minValue;\n }\n\n return false;\n});\n\nconst multiplier = computed(() =>\n 10 ** (props.step.toString().split('.').at(1)?.length ?? 0),\n);\n\nfunction increment() {\n const r = parsedResult.value;\n\n const parsedValue = r.value;\n\n if (!isIncrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = props.minValue ? props.minValue : 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n + props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.maxValue !== undefined ? Math.min(props.maxValue, nV) : nV;\n }\n}\n\nfunction decrement() {\n const r = parsedResult.value;\n\n const parsedValue = r.value;\n\n if (!isDecrementDisabled.value) {\n let nV;\n if (parsedValue === undefined) {\n nV = 0;\n } else {\n nV = ((parsedValue || 0) * multiplier.value\n - props.step * multiplier.value)\n / multiplier.value;\n }\n modelValue.value = props.minValue !== undefined ? Math.max(props.minValue, nV) : nV;\n }\n}\n\nfunction handleKeyPress(e: { code: string; preventDefault(): void }) {\n if (props.updateOnEnterOrClickOutside) {\n if (e.code === 'Escape') {\n inputValue.value = modelToString(modelValue.value);\n inputRef.value?.blur();\n }\n if (e.code === 'Enter') {\n inputRef.value?.blur();\n }\n }\n\n if (e.code === 'Enter') {\n inputValue.value = String(modelValue.value); // to make .1 => 0.1, 10.00 => 10, remove leading zeros etc\n }\n\n if (['ArrowDown', 'ArrowUp'].includes(e.code)) {\n e.preventDefault();\n }\n\n if (props.useIncrementButtons && e.code === 'ArrowUp') {\n increment();\n }\n\n if (props.useIncrementButtons && e.code === 'ArrowDown') {\n decrement();\n }\n}\n\n// https://stackoverflow.com/questions/880512/prevent-text-selection-after-double-click#:~:text=If%20you%20encounter%20a%20situation,none%3B%20to%20the%20summary%20element.\n// this prevents selecting of more than input content in some cases,\n// but also disable selecting input content by double-click (useful feature)\nconst onMousedown = (ev: MouseEvent) => {\n if (ev.detail > 1) {\n ev.preventDefault();\n }\n};\n</script>\n\n<template>\n <div\n ref=\"rootRef\"\n :class=\"{ error: !!errors.trim(), disabled: disabled }\"\n class=\"pl-number-field d-flex-column\"\n @keydown=\"handleKeyPress($event)\"\n >\n <div class=\"pl-number-field__main-wrapper d-flex\">\n <DoubleContour class=\"pl-number-field__contour\" :group-position=\"groupPosition\"/>\n <div\n class=\"pl-number-field__wrapper flex-grow d-flex flex-align-center\"\n :class=\"{withoutArrows: !useIncrementButtons}\"\n >\n <label v-if=\"label\" class=\"text-description\">\n {{ label }}\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\"/>\n </template>\n </PlTooltip>\n </label>\n <input\n ref=\"inputRef\"\n v-model=\"inputValue\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder\"\n class=\"text-s flex-grow\"\n @focusin=\"focused = true\"\n @focusout=\"focused = false; applyChanges()\"\n />\n </div>\n <div v-if=\"useIncrementButtons\" class=\"pl-number-field__icons d-flex-column\" @mousedown=\"onMousedown\">\n <div\n :class=\"{ disabled: isIncrementDisabled }\"\n class=\"pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"increment\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M8 4.93933L13.5303 10.4697L12.4697 11.5303L8 7.06065L3.53033 11.5303L2.46967 10.4697L8 4.93933Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n <div\n :class=\"{ disabled: isDecrementDisabled }\"\n class=\"pl-number-field__icon d-flex flex-justify-center uc-pointer flex-grow flex-align-center\"\n @click=\"decrement\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M2.46967 6.53033L3.53033 5.46967L8 9.93934L12.4697 5.46967L13.5303 6.53033L8 12.0607L2.46967 6.53033Z\"\n fill=\"#110529\"\n />\n </svg>\n </div>\n </div>\n </div>\n <div v-if=\"errors.trim()\" class=\"pl-number-field__error\">\n {{ errors }}\n </div>\n </div>\n</template>\n"],"names":["__default__","props","__props","modelValue","_useModel","slots","useSlots","rootRef","ref","inputRef","useLabelNotch","modelToString","v","parsedResult","computed","parseNumber","inputValue","cachedValue","resetCachedValue","watch","n","r","nextValue","focused","applyChanges","errors","ers","error","isIncrementDisabled","isDecrementDisabled","multiplier","_a","increment","parsedValue","nV","decrement","handleKeyPress","_b","onMousedown","ev","_createElementBlock","_cache","$event","_createElementVNode","_hoisted_1","_createVNode","DoubleContour","_normalizeClass","_openBlock","_hoisted_2","_createTextVNode","_toDisplayString","_unref","_createBlock","PlTooltip","_renderSlot","_ctx","_hoisted_4"],"mappings":"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"}
@@ -1,26 +1,26 @@
1
- import { defineComponent as l, computed as n, createElementBlock as p, createCommentVNode as i, openBlock as c, createElementVNode as e, normalizeStyle as d, toDisplayString as o } from "vue";
2
- const g = {
1
+ import { defineComponent as a, computed as l, createElementBlock as n, createCommentVNode as c, openBlock as i, createElementVNode as s, normalizeStyle as d, toDisplayString as o } from "vue";
2
+ const p = {
3
3
  key: 0,
4
4
  class: "ui-progress-bar"
5
- }, _ = { class: "ui-progress-bar__messages d-flex align-center pl-6 pr-6" }, m = { class: "ui-progress-bar__message flex-grow-1" }, u = { class: "ui-progress-bar__percent" }, v = /* @__PURE__ */ l({
5
+ }, g = { class: "ui-progress-bar__messages d-flex align-center pl-6 pr-6" }, m = { class: "ui-progress-bar__message flex-grow-1" }, _ = { class: "ui-progress-bar__percent" }, v = /* @__PURE__ */ a({
6
6
  __name: "PlProgressBar",
7
7
  props: {
8
8
  loading: { type: Boolean },
9
9
  progress: { default: 0 },
10
10
  completeMessage: { default: "Completed" }
11
11
  },
12
- setup(t) {
13
- const r = t, a = n(() => r.progress === 100 ? r.completeMessage : "");
14
- return (s, f) => s.loading ? (c(), p("div", g, [
15
- e("div", {
12
+ setup(e) {
13
+ const r = e, t = l(() => r.progress === 100 ? r.completeMessage : "");
14
+ return (u, f) => e.loading ? (i(), n("div", p, [
15
+ s("div", {
16
16
  class: "ui-progress-bar__indicator",
17
- style: d({ width: s.progress + "%" })
17
+ style: d({ width: e.progress + "%" })
18
18
  }, null, 4),
19
- e("div", _, [
20
- e("div", m, o(a.value), 1),
21
- e("div", u, o(s.progress + "%"), 1)
19
+ s("div", g, [
20
+ s("div", m, o(t.value), 1),
21
+ s("div", _, o(e.progress + "%"), 1)
22
22
  ])
23
- ])) : i("", !0);
23
+ ])) : c("", !0);
24
24
  }
25
25
  });
26
26
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"PlProgressBar.vue.js","sources":["../../../src/components/PlProgressBar/PlProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n loading: boolean;\n progress: number;\n completeMessage: string;\n }>(),\n { progress: 0, completeMessage: 'Completed' },\n);\n\nconst readyMsg = computed(() => (props.progress === 100 ? props.completeMessage : ''));\n</script>\n\n<template>\n <div v-if=\"loading\" class=\"ui-progress-bar\">\n <div class=\"ui-progress-bar__indicator\" :style=\"{ width: progress + '%' }\"/>\n <div class=\"ui-progress-bar__messages d-flex align-center pl-6 pr-6\">\n <div class=\"ui-progress-bar__message flex-grow-1\">{{ readyMsg }}</div>\n <div class=\"ui-progress-bar__percent\">{{ progress + '%' }}</div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","readyMsg","computed"],"mappings":";;;;;;;;;;;;AAGA,UAAMA,IAAQC,GASRC,IAAWC,EAAS,MAAOH,EAAM,aAAa,MAAMA,EAAM,kBAAkB,EAAG;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlProgressBar.vue.js","sources":["../../../src/components/PlProgressBar/PlProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n loading: boolean;\n progress: number;\n completeMessage: string;\n }>(),\n { progress: 0, completeMessage: 'Completed' },\n);\n\nconst readyMsg = computed(() => (props.progress === 100 ? props.completeMessage : ''));\n</script>\n\n<template>\n <div v-if=\"loading\" class=\"ui-progress-bar\">\n <div class=\"ui-progress-bar__indicator\" :style=\"{ width: progress + '%' }\"/>\n <div class=\"ui-progress-bar__messages d-flex align-center pl-6 pr-6\">\n <div class=\"ui-progress-bar__message flex-grow-1\">{{ readyMsg }}</div>\n <div class=\"ui-progress-bar__percent\">{{ progress + '%' }}</div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","readyMsg","computed","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_toDisplayString","_hoisted_4"],"mappings":";;;;;;;;;;;;AAGA,UAAMA,IAAQC,GASRC,IAAWC,EAAS,MAAOH,EAAM,aAAa,MAAMA,EAAM,kBAAkB,EAAG;qBAIxEC,EAAA,WAAXG,EAAA,GAAAC,EAMM,OANNC,GAMM;AAAA,MALJC,EAA4E,OAAA;AAAA,QAAvE,OAAM;AAAA,QAA8B,kBAAgBN,EAAA,WAAQ,KAAA;AAAA,MAAA;MACjEM,EAGM,OAHNC,GAGM;AAAA,QAFJD,EAAsE,OAAtEE,GAAsEC,EAAjBR,EAAA,KAAQ,GAAA,CAAA;AAAA,QAC7DK,EAAgE,OAAhEI,GAAgED,EAAvBT,EAAA,WAAQ,GAAA,GAAA,CAAA;AAAA,MAAA;;;;"}
@@ -1,12 +1,12 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".progress-cell{background-color:transparent;height:100%;position:relative;width:100%;overflow:hidden;border-radius:2px}.progress-cell .mask-error{--icon-color: var(--txt-error)}.progress-cell.not-started *{color:var(--txt-03)!important}.progress-cell.error *{color:var(--txt-error)!important}.progress-cell__white-bg{background-color:#fff}.progress-cell__indicator{position:absolute;height:100%;transition:width .4s ease-in-out;background:linear-gradient(90deg,#fff,#d8fac8);transition:width .2s ease-in-out}.progress-cell__body{padding:0 15px;display:flex;gap:12px;align-items:center;height:100%;width:100%;position:absolute;z-index:1}.progress-cell__stage{overflow:hidden;text-overflow:ellipsis;flex-shrink:1;text-wrap:nowrap}.progress-cell__percentage{flex-grow:1;flex-shrink:0;text-align:right}.progress-cell__stage--queued{color:var(--txt-03)}.progress-cell__infinity-loader{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;animation:move-gradient 2s linear infinite}.progress-cell__infinity-gradient{width:50%;height:100%;background:linear-gradient(90deg,#fff,#d8fac8,#fff)}@keyframes move-gradient{0%{transform:translate(-50%)}to{transform:translate(100%)}}")),document.head.appendChild(e)}}catch(r){console.error("vite-plugin-css-injected-by-js",r)}})();
2
- import { defineComponent as _, computed as n, createElementBlock as t, openBlock as s, normalizeClass as m, createCommentVNode as o, createElementVNode as l, normalizeStyle as f, toDisplayString as d, unref as g, createBlock as v, Fragment as y, createTextVNode as h } from "vue";
2
+ import { defineComponent as m, computed as n, createElementBlock as s, openBlock as t, normalizeClass as f, createCommentVNode as o, createElementVNode as l, normalizeStyle as p, toDisplayString as c, unref as d, createBlock as v, Fragment as _, createTextVNode as y } from "vue";
3
3
 
4
- import k from "../PlIcon24/PlIcon24.vue.js";
5
- import { getErrorMessage as S } from "../../helpers/error.js";
6
- const w = {
4
+ import h from "../PlIcon24/PlIcon24.vue.js";
5
+ import { getErrorMessage as k } from "../../helpers/error.js";
6
+ const x = {
7
7
  key: 0,
8
8
  class: "progress-cell__infinity-loader"
9
- }, B = { class: "progress-cell__body" }, C = { class: "progress-cell__stage text-s" }, P = { class: "progress-cell__percentage text-s d-flex align-center justify-end" }, b = /* @__PURE__ */ _({
9
+ }, S = { class: "progress-cell__body" }, w = { class: "progress-cell__stage text-s" }, B = { class: "progress-cell__percentage text-s d-flex align-center justify-end" }, V = /* @__PURE__ */ m({
10
10
  __name: "PlProgressCell",
11
11
  props: {
12
12
  stage: { default: "not_started" },
@@ -15,28 +15,28 @@ const w = {
15
15
  progress: { default: void 0 },
16
16
  error: { default: void 0 }
17
17
  },
18
- setup(c) {
19
- const e = c, p = n(() => e.stage !== "not_started"), u = n(() => e.stage === "done" ? 100 : Math.min(100, e.progress || 0)), a = n(() => e.progress === void 0 && e.stage !== "done" && e.stage !== "not_started" && !e.error);
20
- return (r, i) => (s(), t("div", {
21
- class: m({ "progress-cell": !0, "progress-cell__white-bg": p.value, error: r.error, "not-started": e.stage === "not_started" })
18
+ setup(e) {
19
+ const r = e, g = n(() => r.stage !== "not_started"), u = n(() => r.stage === "done" ? 100 : Math.min(100, r.progress || 0)), a = n(() => r.progress === void 0 && r.stage !== "done" && r.stage !== "not_started" && !r.error);
20
+ return (C, i) => (t(), s("div", {
21
+ class: f({ "progress-cell": !0, "progress-cell__white-bg": g.value, error: e.error, "not-started": r.stage === "not_started" })
22
22
  }, [
23
- a.value ? (s(), t("div", w, i[0] || (i[0] = [
23
+ a.value ? (t(), s("div", x, [...i[0] || (i[0] = [
24
24
  l("div", { class: "progress-cell__infinity-gradient" }, null, -1)
25
- ]))) : o("", !0),
26
- !a.value && !r.error ? (s(), t("div", {
25
+ ])])) : o("", !0),
26
+ !a.value && !e.error ? (t(), s("div", {
27
27
  key: 1,
28
28
  class: "progress-cell__indicator",
29
- style: f({ width: u.value + "%" })
29
+ style: p({ width: u.value + "%" })
30
30
  }, null, 4)) : o("", !0),
31
- l("div", B, [
32
- l("div", C, d(r.error ? g(S)(r.error) : r.step), 1),
33
- l("div", P, [
34
- r.error ? (s(), v(g(k), {
31
+ l("div", S, [
32
+ l("div", w, c(e.error ? d(k)(e.error) : e.step), 1),
33
+ l("div", B, [
34
+ e.error ? (t(), v(d(h), {
35
35
  key: 0,
36
36
  name: "error"
37
37
  })) : o("", !0),
38
- r.error ? o("", !0) : (s(), t(y, { key: 1 }, [
39
- h(d(r.progressString), 1)
38
+ e.error ? o("", !0) : (t(), s(_, { key: 1 }, [
39
+ y(c(e.progressString), 1)
40
40
  ], 64))
41
41
  ])
42
42
  ])
@@ -44,6 +44,6 @@ const w = {
44
44
  }
45
45
  });
46
46
  export {
47
- b as default
47
+ V as default
48
48
  };
49
49
  //# sourceMappingURL=PlProgressCell.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlProgressCell.vue.js","sources":["../../../src/components/PlProgressCell/PlProgressCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport './pl-progress-cell.scss';\nimport { computed } from 'vue';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport type { PlProgressCellProps } from './types';\nimport { getErrorMessage } from '../../helpers/error.ts';\n\nconst props = withDefaults(defineProps<PlProgressCellProps>(), {\n stage: 'not_started',\n step: '', // main text (left)\n progressString: '', // appended text on the right side (right)\n progress: undefined,\n error: undefined,\n});\n\nconst canShowWhiteBg = computed(() => props.stage !== 'not_started');\n\nconst currentProgress = computed(() => props.stage === 'done' ? 100 : Math.min(100, props.progress || 0));\n\nconst canShowInfinityLoader = computed(() => props.progress === undefined && props.stage !== 'done' && props.stage !== 'not_started' && !props.error);\n</script>\n\n<template>\n <div :class=\"{'progress-cell':true, 'progress-cell__white-bg': canShowWhiteBg, error, 'not-started': props.stage === 'not_started' }\">\n <div v-if=\"canShowInfinityLoader\" class=\"progress-cell__infinity-loader\">\n <div class=\"progress-cell__infinity-gradient\"/>\n </div>\n <div v-if=\"!canShowInfinityLoader && !error\" class=\"progress-cell__indicator\" :style=\"{ width: currentProgress + '%' }\"/>\n <div class=\"progress-cell__body\">\n <div class=\"progress-cell__stage text-s\">\n {{ error ? getErrorMessage(error) : step }}\n </div>\n <div class=\"progress-cell__percentage text-s d-flex align-center justify-end\">\n <PlMaskIcon24 v-if=\"error\" name=\"error\" />\n <template v-if=\"!error\">\n {{ progressString }}\n </template>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","canShowWhiteBg","computed","currentProgress","canShowInfinityLoader"],"mappings":";;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAQRC,IAAiBC,EAAS,MAAMH,EAAM,UAAU,aAAa,GAE7DI,IAAkBD,EAAS,MAAMH,EAAM,UAAU,SAAS,MAAM,KAAK,IAAI,KAAKA,EAAM,YAAY,CAAC,CAAC,GAElGK,IAAwBF,EAAS,MAAMH,EAAM,aAAa,UAAaA,EAAM,UAAU,UAAUA,EAAM,UAAU,iBAAiB,CAACA,EAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlProgressCell.vue.js","sources":["../../../src/components/PlProgressCell/PlProgressCell.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport './pl-progress-cell.scss';\nimport { computed } from 'vue';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport type { PlProgressCellProps } from './types';\nimport { getErrorMessage } from '../../helpers/error.ts';\n\nconst props = withDefaults(defineProps<PlProgressCellProps>(), {\n stage: 'not_started',\n step: '', // main text (left)\n progressString: '', // appended text on the right side (right)\n progress: undefined,\n error: undefined,\n});\n\nconst canShowWhiteBg = computed(() => props.stage !== 'not_started');\n\nconst currentProgress = computed(() => props.stage === 'done' ? 100 : Math.min(100, props.progress || 0));\n\nconst canShowInfinityLoader = computed(() => props.progress === undefined && props.stage !== 'done' && props.stage !== 'not_started' && !props.error);\n</script>\n\n<template>\n <div :class=\"{'progress-cell':true, 'progress-cell__white-bg': canShowWhiteBg, error, 'not-started': props.stage === 'not_started' }\">\n <div v-if=\"canShowInfinityLoader\" class=\"progress-cell__infinity-loader\">\n <div class=\"progress-cell__infinity-gradient\"/>\n </div>\n <div v-if=\"!canShowInfinityLoader && !error\" class=\"progress-cell__indicator\" :style=\"{ width: currentProgress + '%' }\"/>\n <div class=\"progress-cell__body\">\n <div class=\"progress-cell__stage text-s\">\n {{ error ? getErrorMessage(error) : step }}\n </div>\n <div class=\"progress-cell__percentage text-s d-flex align-center justify-end\">\n <PlMaskIcon24 v-if=\"error\" name=\"error\" />\n <template v-if=\"!error\">\n {{ progressString }}\n </template>\n </div>\n </div>\n </div>\n</template>\n"],"names":["props","__props","canShowWhiteBg","computed","currentProgress","canShowInfinityLoader","_createElementBlock","_openBlock","_hoisted_1","_cache","_createElementVNode","_hoisted_2","_hoisted_3","_toDisplayString","_unref","getErrorMessage","_hoisted_4","_createBlock","PlMaskIcon24","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;AAOA,UAAMA,IAAQC,GAQRC,IAAiBC,EAAS,MAAMH,EAAM,UAAU,aAAa,GAE7DI,IAAkBD,EAAS,MAAMH,EAAM,UAAU,SAAS,MAAM,KAAK,IAAI,KAAKA,EAAM,YAAY,CAAC,CAAC,GAElGK,IAAwBF,EAAS,MAAMH,EAAM,aAAa,UAAaA,EAAM,UAAU,UAAUA,EAAM,UAAU,iBAAiB,CAACA,EAAM,KAAK;2BAIlJM,EAgBM,OAAA;AAAA,MAhBA,2DAAyDJ,EAAA,OAAc,OAAED,SAAK,eAAiBD,EAAM,UAAK,eAAA;AAAA,IAAA;MACnGK,EAAA,SAAXE,KAAAD,EAEM,OAFNE,GAEM,CAAA,GAAAC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA;AAAA,QADJC,EAA+C,OAAA,EAA1C,OAAM,mCAAA,GAAkC,MAAA,EAAA;AAAA,MAAA;MAEnC,CAAAL,EAAA,UAA0BJ,EAAA,cAAtCK,EAAyH,OAAA;AAAA;QAA5E,OAAM;AAAA,QAA4B,kBAAgBF,EAAA,QAAe,KAAA;AAAA,MAAA;MAC9GM,EAUM,OAVNC,GAUM;AAAA,QATJD,EAEM,OAFNE,GAEMC,EADDZ,EAAA,QAAQa,EAAAC,CAAA,EAAgBd,EAAA,KAAK,IAAIA,EAAA,IAAI,GAAA,CAAA;AAAA,QAE1CS,EAKM,OALNM,GAKM;AAAA,UAJgBf,EAAA,cAApBgB,EAA0CH,EAAAI,CAAA,GAAA;AAAA;YAAf,MAAK;AAAA,UAAA;UACfjB,EAAA,0BAAjBK,EAEWa,GAAA,EAAA,KAAA,KAAA;AAAA,gBADNlB,EAAA,cAAc,GAAA,CAAA;AAAA,UAAA;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlRadio.vue2.js","sources":["../../../src/components/PlRadio/PlRadio.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"M\">\nimport { inject } from 'vue';\nimport { radioGroupModelKey, radioGroupNameKey } from './keys';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars -- used by the props documentation\nimport type PlRadioGroup from './PlRadioGroup.vue';\n\nconst standaloneModel = defineModel<M>();\n\nconst { name: standaloneName, ...props } = defineProps<{\n /** Used to group multiple radio controls. Will be ignored if this component is a descendant of a {@link PlRadioGroup}. */\n name?: string;\n /** Value that goes into `v-model`. */\n value?: M;\n /** Whether the radio control is disabled. */\n disabled?: boolean;\n}>();\n\ndefineSlots<{\n /** Label of the radio control. */\n default?(): unknown;\n}>();\n\nconst name = inject(radioGroupNameKey, standaloneName);\nconst model = inject<typeof standaloneModel>(radioGroupModelKey, standaloneModel);\n</script>\n\n<template>\n <label :class=\"$style.container\">\n <input v-model=\"model\" :class=\"$style.input\" type=\"radio\" :name v-bind=\"props\" />\n <span :class=\"$style.label\"><slot /></span>\n </label>\n</template>\n\n<style module>\n .container {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px;\n border-radius: 6px;\n transition: all 200ms ease-in-out;\n color: var(--txt-01);\n user-select: none;\n &:hover:not(:has(:disabled)) {\n background: var(--btn-sec-hover-grey);\n }\n &:has(:disabled) {\n color: var(--dis-01);\n }\n }\n\n .input {\n appearance: none;\n position: relative;\n block-size: 24px;\n aspect-ratio: 1;\n margin: 0;\n border-radius: 50%;\n outline: 2px solid transparent;\n color: inherit;\n transition: inherit;\n &:focus {\n outline-color: var(--border-color-focus);\n }\n &::before {\n content: \"\";\n position: absolute;\n inset: 2px;\n border-radius: 50%;\n border: 2px solid;\n }\n &::after {\n content: \"\";\n position: absolute;\n inset: 7.5px;\n border-radius: 50%;\n background-color: currentColor;\n scale: 0;\n transition: inherit;\n }\n &:checked::after {\n scale: 1;\n }\n }\n\n .label {\n padding-inline: 4px;\n line-height: calc(20 / 14);\n font-weight: 500;\n text-box: trim-both cap alphabetic;\n }\n</style>\n"],"names":["standaloneModel","_useModel","__props","props","_createPropsRestProxy","name","inject","radioGroupNameKey","model","radioGroupModelKey"],"mappings":";;;;;;;;;;;;;;AAMA,UAAMA,IAAkBC,EAAcC,GAAA,YAAC,GAEjCC,IAAqCC,EAAAF,GAAA,CAAA,MAAA,CAAA,GAcrCG,IAAOC,EAAOC,GAAmBL,MAAc,GAC/CM,IAAQF,EAA+BG,GAAoBT,CAAe;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlRadio.vue2.js","sources":["../../../src/components/PlRadio/PlRadio.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"M\">\nimport { inject } from 'vue';\nimport { radioGroupModelKey, radioGroupNameKey } from './keys';\n// eslint-disable-next-line @typescript-eslint/no-unused-vars -- used by the props documentation\nimport type PlRadioGroup from './PlRadioGroup.vue';\n\nconst standaloneModel = defineModel<M>();\n\nconst { name: standaloneName, ...props } = defineProps<{\n /** Used to group multiple radio controls. Will be ignored if this component is a descendant of a {@link PlRadioGroup}. */\n name?: string;\n /** Value that goes into `v-model`. */\n value?: M;\n /** Whether the radio control is disabled. */\n disabled?: boolean;\n}>();\n\ndefineSlots<{\n /** Label of the radio control. */\n default?(): unknown;\n}>();\n\nconst name = inject(radioGroupNameKey, standaloneName);\nconst model = inject<typeof standaloneModel>(radioGroupModelKey, standaloneModel);\n</script>\n\n<template>\n <label :class=\"$style.container\">\n <input v-model=\"model\" :class=\"$style.input\" type=\"radio\" :name v-bind=\"props\" />\n <span :class=\"$style.label\"><slot /></span>\n </label>\n</template>\n\n<style module>\n .container {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px;\n border-radius: 6px;\n transition: all 200ms ease-in-out;\n color: var(--txt-01);\n user-select: none;\n &:hover:not(:has(:disabled)) {\n background: var(--btn-sec-hover-grey);\n }\n &:has(:disabled) {\n color: var(--dis-01);\n }\n }\n\n .input {\n appearance: none;\n position: relative;\n block-size: 24px;\n aspect-ratio: 1;\n margin: 0;\n border-radius: 50%;\n outline: 2px solid transparent;\n color: inherit;\n transition: inherit;\n &:focus {\n outline-color: var(--border-color-focus);\n }\n &::before {\n content: \"\";\n position: absolute;\n inset: 2px;\n border-radius: 50%;\n border: 2px solid;\n }\n &::after {\n content: \"\";\n position: absolute;\n inset: 7.5px;\n border-radius: 50%;\n background-color: currentColor;\n scale: 0;\n transition: inherit;\n }\n &:checked::after {\n scale: 1;\n }\n }\n\n .label {\n padding-inline: 4px;\n line-height: calc(20 / 14);\n font-weight: 500;\n text-box: trim-both cap alphabetic;\n }\n</style>\n"],"names":["standaloneModel","_useModel","__props","props","_createPropsRestProxy","name","inject","radioGroupNameKey","model","radioGroupModelKey","_createElementBlock","_normalizeClass","$style","_withDirectives","_createElementVNode","_mergeProps","$event","_unref","_hoisted_1","_renderSlot","_ctx"],"mappings":";;;;;;;;;;;;;;AAMA,UAAMA,IAAkBC,EAAcC,GAAA,YAAC,GAEjCC,IAAqCC,EAAAF,GAAA,CAAA,MAAA,CAAA,GAcrCG,IAAOC,EAAOC,GAAmBL,MAAc,GAC/CM,IAAQF,EAA+BG,GAAoBT,CAAe;2BAI9EU,EAGQ,SAAA;AAAA,MAHA,OAAKC,EAAEC,EAAAA,OAAO,SAAS;AAAA,IAAA;MAC7BC,EAAAC,EAAiF,SAAjFC,EAAiF;AAAA,6DAAjEP,EAAK,QAAAQ,IAAA;AAAA,QAAG,OAAOJ,EAAAA,OAAO;AAAA,QAAO,MAAK;AAAA,QAAS,MAAAK,EAAAZ,CAAA;AAAA,MAAA,GAAaF,CAAK,GAAA,MAAA,IAAAe,CAAA,GAAA;AAAA,YAA7DD,EAAAT,CAAA,CAAK;AAAA,MAAA;MACrBM,EAA2C,QAAA;AAAA,QAApC,OAAKH,EAAEC,EAAAA,OAAO,KAAK;AAAA,MAAA;QAAEO,EAAQC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;"}