@platforma-sdk/ui-vue 1.37.13 → 1.37.14

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 (32) hide show
  1. package/.turbo/turbo-build.log +19 -15
  2. package/.turbo/turbo-type-check.log +1 -1
  3. package/CHANGELOG.md +8 -0
  4. package/dist/AgGridVue/createAgGridColDef.d.ts.map +1 -1
  5. package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
  6. package/dist/lib/ui/uikit/dist/components/DataTable/TableComponent.vue.js +1 -1
  7. package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js +27 -27
  8. package/dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
  9. package/dist/lib/ui/uikit/dist/components/PlAutocomplete/PlAutocomplete.vue.js.map +1 -1
  10. package/dist/lib/ui/uikit/dist/components/PlDropdown/OptionList.vue.js +88 -0
  11. package/dist/lib/ui/uikit/dist/components/PlDropdown/OptionList.vue.js.map +1 -0
  12. package/dist/lib/ui/uikit/dist/components/PlDropdown/PlDropdown.vue.js +105 -117
  13. package/dist/lib/ui/uikit/dist/components/PlDropdown/PlDropdown.vue.js.map +1 -1
  14. package/dist/lib/ui/uikit/dist/components/PlDropdown/useGroupBy.js +33 -0
  15. package/dist/lib/ui/uikit/dist/components/PlDropdown/useGroupBy.js.map +1 -0
  16. package/dist/lib/ui/uikit/dist/components/PlDropdownRef/PlDropdownRef.vue.js +8 -7
  17. package/dist/lib/ui/uikit/dist/components/PlDropdownRef/PlDropdownRef.vue.js.map +1 -1
  18. package/dist/lib/ui/uikit/dist/components/PlFileDialog/Remote.vue.js +4 -4
  19. package/dist/lib/ui/uikit/dist/components/PlSlideModal/PlSlideModal.vue.js +1 -1
  20. package/dist/lib/ui/uikit/dist/helpers/utils.js +2 -1
  21. package/dist/lib/ui/uikit/dist/helpers/utils.js.map +1 -1
  22. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js +1 -1
  23. package/dist/lib/ui/uikit/dist/sdk/model/dist/index.js.map +1 -1
  24. package/dist/lib/ui/uikit/dist/utils/TextLabel.vue.js +26 -0
  25. package/dist/lib/ui/uikit/dist/utils/TextLabel.vue.js.map +1 -0
  26. package/dist/lib/ui/uikit/dist/utils/TextLabel.vue2.js +22 -0
  27. package/dist/lib/ui/uikit/dist/utils/TextLabel.vue2.js.map +1 -0
  28. package/dist/plugins/Monetization/MonetizationSidebar.vue.js +2 -2
  29. package/dist/sdk/model/dist/index.js +1 -1
  30. package/dist/sdk/model/dist/index.js.map +1 -1
  31. package/package.json +7 -7
  32. package/src/AgGridVue/createAgGridColDef.ts +2 -1
@@ -1,16 +1,16 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.37.13 build /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.37.14 build /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > vite build
5
5
 
6
6
  vite v6.3.5 building for production...
7
7
  transforming...
8
- ✓ 899 modules transformed.
8
+ ✓ 903 modules transformed.
9
9
  rendering chunks...
10
10
 
11
11
  [vite:dts] Start generate declaration files...
12
12
  computing gzip size...
13
- [vite:dts] Declaration files built in 5127ms.
13
+ [vite:dts] Declaration files built in 5286ms.
14
14
 
15
15
  dist/_virtual/re.js  0.08 kB │ gzip: 0.10 kB │ map: 0.09 kB
16
16
  dist/_virtual/lodash2.js  0.09 kB │ gzip: 0.10 kB │ map: 0.09 kB
@@ -137,8 +137,8 @@ computing gzip size...
137
137
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_linetype-solid.svg.js  0.26 kB │ gzip: 0.22 kB │ map: 0.48 kB
138
138
  dist/node_modules/.pnpm/d3-format@3.1.0/node_modules/d3-format/src/defaultLocale.js  0.26 kB │ gzip: 0.21 kB │ map: 0.87 kB
139
139
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_color-stroke.svg.js  0.26 kB │ gzip: 0.22 kB │ map: 0.49 kB
140
- dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/init.js  0.26 kB │ gzip: 0.18 kB │ map: 1.11 kB
141
140
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/selection.js  0.26 kB │ gzip: 0.20 kB │ map: 0.60 kB
141
+ dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/init.js  0.26 kB │ gzip: 0.18 kB │ map: 1.11 kB
142
142
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/node.js  0.26 kB │ gzip: 0.19 kB │ map: 0.82 kB
143
143
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/select.js  0.26 kB │ gzip: 0.20 kB │ map: 0.73 kB
144
144
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/each.js  0.26 kB │ gzip: 0.21 kB │ map: 0.88 kB
@@ -156,8 +156,8 @@ computing gzip size...
156
156
  dist/lib/ui/uikit/dist/components/PlRadio/PlRadio.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
157
157
  dist/_virtual/index.js  0.27 kB │ gzip: 0.21 kB │ map: 0.09 kB
158
158
  dist/components/PlMultiSequenceAlignment/Toolbar.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
159
- dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_linetype-longdash.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.50 kB
160
159
  dist/lib/ui/uikit/dist/components/PlChartStackedBar/Legends.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
160
+ dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_linetype-longdash.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.50 kB
161
161
  dist/components/PlMultiSequenceAlignment/SeqLogo.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
162
162
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/16_chevron-first.svg.js  0.28 kB │ gzip: 0.23 kB │ map: 0.48 kB
163
163
  dist/lib/ui/uikit/dist/components/PlIcon16/PlIcon16.vue.js  0.28 kB │ gzip: 0.22 kB │ map: 0.10 kB
@@ -523,6 +523,7 @@ computing gzip size...
523
523
  dist/lib/ui/uikit/dist/components/PlFileDialog/utils.js  0.66 kB │ gzip: 0.42 kB │ map: 2.48 kB
524
524
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_filter.svg.js  0.66 kB │ gzip: 0.40 kB │ map: 0.89 kB
525
525
  dist/lib/ui/uikit/dist/components/PlRadio/PlRadioGroup.vue3.js  0.66 kB │ gzip: 0.42 kB │ map: 0.12 kB
526
+ dist/lib/ui/uikit/dist/utils/TextLabel.vue.js  0.66 kB │ gzip: 0.38 kB │ map: 1.26 kB
526
527
  dist/lib/ui/uikit/dist/composition/useQuery.js  0.66 kB │ gzip: 0.36 kB │ map: 1.55 kB
527
528
  dist/lib/ui/uikit/dist/components/PlElementList/PlElementList.vue3.js  0.67 kB │ gzip: 0.42 kB │ map: 0.12 kB
528
529
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_cpu.svg.js  0.67 kB │ gzip: 0.38 kB │ map: 0.87 kB
@@ -552,6 +553,7 @@ computing gzip size...
552
553
  dist/lib/ui/uikit/dist/components/contextMenu/Menu.vue2.js  0.74 kB │ gzip: 0.46 kB │ map: 2.11 kB
553
554
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_graph.svg.js  0.74 kB │ gzip: 0.39 kB │ map: 0.97 kB
554
555
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_bar-trend.svg.js  0.75 kB │ gzip: 0.40 kB │ map: 1.00 kB
556
+ dist/lib/ui/uikit/dist/components/PlDropdown/useGroupBy.js  0.75 kB │ gzip: 0.41 kB │ map: 2.49 kB
555
557
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_delete-bin.svg.js  0.75 kB │ gzip: 0.39 kB │ map: 1.03 kB
556
558
  dist/node_modules/.pnpm/semver@7.7.2/node_modules/semver/functions/diff.js  0.75 kB │ gzip: 0.39 kB │ map: 2.46 kB
557
559
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_help-outline.svg.js  0.75 kB │ gzip: 0.48 kB │ map: 0.97 kB
@@ -598,6 +600,7 @@ computing gzip size...
598
600
  dist/lib/ui/uikit/dist/layout/PlGrid/PlGrid.vue.js  0.92 kB │ gzip: 0.56 kB │ map: 0.84 kB
599
601
  dist/lib/ui/uikit/dist/utils/useLabelNotch.js  0.93 kB │ gzip: 0.51 kB │ map: 2.38 kB
600
602
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_view-show.svg.js  0.93 kB │ gzip: 0.55 kB │ map: 1.14 kB
603
+ dist/lib/ui/uikit/dist/utils/TextLabel.vue2.js  0.93 kB │ gzip: 0.53 kB │ map: 0.11 kB
601
604
  dist/lib/ui/uikit/dist/components/PlChartHistogram/PlChartHistogram.vue3.js  0.93 kB │ gzip: 0.56 kB │ map: 0.12 kB
602
605
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_theme-dark.svg.js  0.94 kB │ gzip: 0.48 kB │ map: 1.15 kB
603
606
  dist/lib/ui/uikit/dist/components/PlIcon16/PlIcon16.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 1.59 kB
@@ -605,8 +608,8 @@ computing gzip size...
605
608
  dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_dendrogram-X-line.svg.js  0.95 kB │ gzip: 0.39 kB │ map: 1.27 kB
606
609
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bisector.js  0.96 kB │ gzip: 0.40 kB │ map: 3.15 kB
607
610
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/attrTween.js  0.97 kB │ gzip: 0.42 kB │ map: 2.60 kB
608
- dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_lasso.svg.js  0.97 kB │ gzip: 0.57 kB │ map: 1.18 kB
609
611
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/selection/transition.js  0.97 kB │ gzip: 0.53 kB │ map: 2.34 kB
612
+ dist/lib/ui/uikit/dist/assets/icons/icon-assets-min/24_lasso.svg.js  0.97 kB │ gzip: 0.57 kB │ map: 1.18 kB
610
613
  dist/lib/ui/uikit/dist/layout/PlRow/PlRow.vue.js  0.98 kB │ gzip: 0.57 kB │ map: 0.64 kB
611
614
  dist/lib/ui/uikit/dist/composition/useTheme.js  0.98 kB │ gzip: 0.50 kB │ map: 2.43 kB
612
615
  dist/components/ValueOrErrorsComponent.vue.js  0.98 kB │ gzip: 0.50 kB │ map: 1.34 kB
@@ -714,14 +717,14 @@ computing gzip size...
714
717
  dist/lib/ui/uikit/dist/components/PlRadio/PlRadio.vue3.js  1.56 kB │ gzip: 0.76 kB │ map: 0.11 kB
715
718
  dist/lib/ui/uikit/dist/components/contextMenu/Menu.vue.js  1.58 kB │ gzip: 0.77 kB │ map: 0.11 kB
716
719
  dist/components/PlAgCsvExporter/export-csv.js  1.60 kB │ gzip: 0.73 kB │ map: 3.74 kB
717
- dist/AgGridVue/createAgGridColDef.js  1.61 kB │ gzip: 0.72 kB │ map: 9.34 kB
720
+ dist/AgGridVue/createAgGridColDef.js  1.61 kB │ gzip: 0.72 kB │ map: 9.40 kB
718
721
  dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_integrations@13.3.0_axios@1.8.1_focus-trap@7.6.0_sortablejs@1.15.6_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/integrations/useSortable.js  1.61 kB │ gzip: 0.80 kB │ map: 4.03 kB
719
722
  dist/lib/ui/uikit/dist/components/PlTabs/PlTabs.vue.js  1.61 kB │ gzip: 0.80 kB │ map: 2.14 kB
720
- dist/lib/ui/uikit/dist/components/PlDropdownRef/PlDropdownRef.vue.js  1.61 kB │ gzip: 0.73 kB │ map: 3.40 kB
721
723
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-interpolate@3.0.1/node_modules/d3-interpolate/src/transform/index.js  1.62 kB │ gzip: 0.65 kB │ map: 4.71 kB
722
724
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-selection@3.0.0/node_modules/d3-selection/src/selection/on.js  1.63 kB │ gzip: 0.68 kB │ map: 4.38 kB
723
725
  dist/lib/ui/uikit/dist/components/PlFileDialog/Shortcuts.vue2.js  1.63 kB │ gzip: 0.60 kB │ map: 0.14 kB
724
726
  dist/plugins/Monetization/RunStatus.vue3.js  1.63 kB │ gzip: 0.77 kB │ map: 0.11 kB
727
+ dist/lib/ui/uikit/dist/components/PlDropdownRef/PlDropdownRef.vue.js  1.64 kB │ gzip: 0.74 kB │ map: 3.45 kB
725
728
  dist/components/PlMultiSequenceAlignment/MultiSequenceAlignmentView.vue3.js  1.64 kB │ gzip: 0.78 kB │ map: 0.12 kB
726
729
  dist/aggrid.js  1.66 kB │ gzip: 0.79 kB │ map: 3.09 kB
727
730
  dist/lib/ui/uikit/dist/components/PlSvg/registry.js  1.66 kB │ gzip: 0.86 kB │ map: 4.41 kB
@@ -758,7 +761,7 @@ computing gzip size...
758
761
  dist/lib/ui/uikit/dist/components/InputRange.vue.js  2.24 kB │ gzip: 0.91 kB │ map: 3.75 kB
759
762
  dist/lib/ui/uikit/dist/components/PlLoaderCircular/PlLoaderCircular.vue.js  2.25 kB │ gzip: 0.95 kB │ map: 0.14 kB
760
763
  dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js  2.26 kB │ gzip: 1.06 kB │ map: 2.83 kB
761
- dist/lib/ui/uikit/dist/helpers/utils.js  2.26 kB │ gzip: 0.88 kB │ map: 6.59 kB
764
+ dist/lib/ui/uikit/dist/helpers/utils.js  2.28 kB │ gzip: 0.89 kB │ map: 6.63 kB
762
765
  dist/plugins/Monetization/useInfo.js  2.29 kB │ gzip: 0.87 kB │ map: 4.32 kB
763
766
  dist/lib/ui/uikit/dist/components/Scrollable.vue.js  2.30 kB │ gzip: 0.88 kB │ map: 3.54 kB
764
767
  dist/lib/ui/uikit/dist/node_modules/.pnpm/@vueuse_core@13.3.0_vue@3.5.13_typescript@5.6.3_/node_modules/@vueuse/core/index.js  2.31 kB │ gzip: 1.02 kB │ map: 248.40 kB
@@ -768,9 +771,9 @@ computing gzip size...
768
771
  dist/lib/util/helpers/dist/index.js  2.40 kB │ gzip: 1.01 kB │ map: 20.17 kB
769
772
  dist/lib/ui/uikit/dist/colors/gradient.js  2.44 kB │ gzip: 0.98 kB │ map: 6.48 kB
770
773
  dist/lib/ui/uikit/dist/components/PlTabs/pl-tabs.module.scss.js  2.49 kB │ gzip: 0.90 kB │ map: 0.12 kB
771
- dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js  2.51 kB │ gzip: 1.13 kB │ map: 2.76 kB
772
774
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/continuous.js  2.53 kB │ gzip: 0.94 kB │ map: 7.07 kB
773
775
  dist/plugins/Monetization/LimitCard.vue3.js  2.55 kB │ gzip: 0.92 kB │ map: 0.11 kB
776
+ dist/lib/ui/uikit/dist/components/PlAccordion/PlAccordionSection.vue2.js  2.57 kB │ gzip: 1.15 kB │ map: 2.90 kB
774
777
  dist/node_modules/.pnpm/@vueuse_shared@13.3.0_vue@3.5.13_typescript@5.5.4_/node_modules/@vueuse/shared/index.js  2.57 kB │ gzip: 1.13 kB │ map: 50.11 kB
775
778
  dist/plugins/Monetization/LimitCard.vue2.js  2.61 kB │ gzip: 0.88 kB │ map: 4.83 kB
776
779
  dist/lib/ui/uikit/dist/components/DataTable/TdCell.vue.js  2.61 kB │ gzip: 1.04 kB │ map: 4.63 kB
@@ -782,6 +785,7 @@ computing gzip size...
782
785
  dist/lib/ui/uikit/dist/node_modules/.pnpm/d3-transition@3.0.1_d3-selection@3.0.0/node_modules/d3-transition/src/transition/schedule.js  2.74 kB │ gzip: 1.07 kB │ map: 8.14 kB
783
786
  dist/lib/ui/uikit/dist/components/PlEditableTitle/PlEditableTitle.vue.js  2.75 kB │ gzip: 1.18 kB │ map: 3.19 kB
784
787
  dist/lib/ui/uikit/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.js  2.80 kB │ gzip: 1.25 kB │ map: 2.65 kB
788
+ dist/lib/ui/uikit/dist/components/PlDropdown/OptionList.vue.js  2.92 kB │ gzip: 1.09 kB │ map: 3.07 kB
785
789
  dist/composition/fileContent.js  2.92 kB │ gzip: 1.06 kB │ map: 8.69 kB
786
790
  dist/lib/ui/uikit/dist/components/PlChartHistogram/histogram.js  2.98 kB │ gzip: 0.99 kB │ map: 7.83 kB
787
791
  dist/components/PlAgDataTable/sources/row-number.js  3.10 kB │ gzip: 1.34 kB │ map: 8.35 kB
@@ -853,9 +857,9 @@ computing gzip size...
853
857
  dist/lib/ui/uikit/dist/demo-site-data/all-css-variables.js  11.00 kB │ gzip: 1.76 kB │ map: 18.24 kB
854
858
  dist/components/PlTableFilters/PlTableFilters.vue.js  13.75 kB │ gzip: 4.06 kB │ map: 18.77 kB
855
859
  dist/lib/ui/uikit/dist/components/PlDropdownLine/PlDropdownLine.vue.js  14.70 kB │ gzip: 3.91 kB │ map: 12.75 kB
856
- dist/lib/ui/uikit/dist/components/PlDropdown/PlDropdown.vue.js  16.71 kB │ gzip: 4.87 kB │ map: 14.51 kB
860
+ dist/lib/ui/uikit/dist/components/PlDropdown/PlDropdown.vue.js  16.32 kB │ gzip: 4.79 kB │ map: 14.65 kB
857
861
  dist/lib/ui/uikit/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.js  17.39 kB │ gzip: 4.84 kB │ map: 14.46 kB
858
- dist/lib/ui/uikit/dist/components/PlAutocomplete/PlAutocomplete.vue.js  17.76 kB │ gzip: 5.14 kB │ map: 17.10 kB
862
+ dist/lib/ui/uikit/dist/components/PlAutocomplete/PlAutocomplete.vue.js  17.76 kB │ gzip: 5.14 kB │ map: 17.09 kB
859
863
  dist/lib/ui/uikit/dist/components/PlDropdownMulti/PlDropdownMulti.vue.js  20.23 kB │ gzip: 5.27 kB │ map: 12.97 kB
860
864
  dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js  35.48 kB │ gzip: 26.70 kB │ map: 0.11 kB
861
865
  dist/node_modules/.pnpm/lru-cache@11.1.0/node_modules/lru-cache/dist/esm/index.js  37.21 kB │ gzip: 9.81 kB │ map: 127.30 kB
@@ -874,6 +878,6 @@ computing gzip size...
874
878
  dist/node_modules/.pnpm/zod@3.23.8/node_modules/zod/lib/index.js  83.81 kB │ gzip: 17.26 kB │ map: 241.15 kB
875
879
  dist/node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js 128.45 kB │ gzip: 31.07 kB │ map: 723.83 kB
876
880
  dist/lib/ui/uikit/dist/index.js 497.54 kB │ gzip: 191.69 kB │ map: 0.18 kB
877
- dist/lib/ui/uikit/dist/components/PlSlideModal/PlSlideModal.vue.js 601.36 kB │ gzip: 204.40 kB │ map: 0.23 kB
878
- dist/lib/ui/uikit/dist/components/DataTable/TableComponent.vue.js 602.69 kB │ gzip: 204.99 kB │ map: 0.27 kB
879
- ✓ built in 9.07s
881
+ dist/lib/ui/uikit/dist/components/PlSlideModal/PlSlideModal.vue.js 601.41 kB │ gzip: 204.41 kB │ map: 0.23 kB
882
+ dist/lib/ui/uikit/dist/components/DataTable/TableComponent.vue.js 602.75 kB │ gzip: 205.00 kB │ map: 0.27 kB
883
+ ✓ built in 10.13s
@@ -1,5 +1,5 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @platforma-sdk/ui-vue@1.37.13 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
3
+ > @platforma-sdk/ui-vue@1.37.14 type-check /home/runner/_work/platforma/platforma/sdk/ui-vue
4
4
  > vue-tsc --noEmit --project ./tsconfig.json
5
5
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @platforma-sdk/ui-vue
2
2
 
3
+ ## 1.37.14
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [8236387]
8
+ - @milaboratories/uikit@2.2.96
9
+ - @platforma-sdk/model@1.37.14
10
+
3
11
  ## 1.37.13
4
12
 
5
13
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"createAgGridColDef.d.ts","sourceRoot":"","sources":["../../src/AgGridVue/createAgGridColDef.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAoB,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG7F;;GAEG;AACH,KAAK,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAWzD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;OAKG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,SAAS,CAAC;AAEd;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,CAC9D,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KACzC,cAAc,CAAC;AAEpB;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAE,SAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IAChF,QAAQ,CAAC,EAAE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,cAAc,CAAC,EAAE,IAAI,GAAG;QACtB;;WAEG;QACH,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;;;;;WAQG;QACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;KACjD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AA8D5H;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CA6BjH"}
1
+ {"version":3,"file":"createAgGridColDef.d.ts","sourceRoot":"","sources":["../../src/AgGridVue/createAgGridColDef.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,uBAAuB,CAAC;AAEjF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAIhF;;GAEG;AACH,KAAK,cAAc,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAWzD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;OAKG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,SAAS,CAAC;AAEd;;;;;;;;;;GAUG;AACH,MAAM,MAAM,sBAAsB,CAAC,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,CAC9D,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KACzC,cAAc,CAAC;AAEpB;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAE,SAAQ,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;IAChF,QAAQ,CAAC,EAAE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,yBAAyB,CAAC;IAClD,cAAc,CAAC,EAAE,IAAI,GAAG;QACtB;;WAEG;QACH,IAAI,CAAC,EAAE,cAAc,CAAC;QACtB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;;;;;WAQG;QACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;KACjD,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AA8D5H;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CA6BjH"}
@@ -1 +1 @@
1
- {"version":3,"file":"createAgGridColDef.js","sources":["../../src/AgGridVue/createAgGridColDef.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColDef, ICellRendererParams } from 'ag-grid-enterprise';\nimport { PlAgCellProgress } from '../components/PlAgCellProgress';\nimport type { MaskIconName16, PlProgressCellProps } from '@milaboratories/uikit';\nimport { tapIf } from '@milaboratories/helpers';\nimport { PlAgColumnHeader, PlAgHeaderComponentParams } from '../components/PlAgColumnHeader';\nimport { PlAgTextAndButtonCell } from '../components/PlAgTextAndButtonCell';\n\n/**\n * Represents the available progress statuses for a cell.\n */\ntype ProgressStatus = 'not_started' | 'running' | 'done';\n\n/**\n * Human-readable labels for each {@link ProgressStatus}.\n */\nconst progressStatusLabels: Record<ProgressStatus, string> = {\n not_started: 'Not Started',\n running: 'Running',\n done: 'Done',\n};\n\n/**\n * Defines the configuration for rendering a progress overlay in a grid cell.\n *\n * When provided, a progress overlay will be rendered. If the value is\n * `undefined`, no progress overlay is shown.\n */\nexport type ColDefProgress = {\n /**\n * The progress status which influences default text and styling:\n * - `'not_started'`: Typically renders gray text without a progress bar.\n * - `'running'`: Indicates an active progress state.\n * - `'done'`: Implies completion (commonly rendered as 100%).\n */\n status: ProgressStatus;\n /**\n * A number (or numeric string) between 0 and 100 that indicates progress.\n * If omitted or invalid, it implies an infinite or indeterminate progress state\n */\n percent?: number | string;\n /**\n * The main label displayed on the left side of the cell.\n */\n text?: string;\n /**\n * Additional text, often used to display the percentage by default.\n */\n suffix?: string;\n /**\n * If provided, this message takes precedence over `text` to indicate an error.\n */\n error?: string;\n} | undefined;\n\n/**\n * Callback function type to dynamically generate a {@link ColDefProgress} configuration\n * for a cell based on its rendering parameters.\n *\n * @typeParam TData - The type of the row data.\n * @typeParam TValue - The type of the cell value.\n *\n * @param cellData - The parameters provided by AG Grid's cell renderer.\n * @returns A {@link ColDefProgress} object to configure the progress overlay,\n * or `undefined` if no progress overlay should be rendered.\n */\nexport type ColDefProgressCallback<TData = any, TValue = any> = (\n value: TValue,\n cellData: ICellRendererParams<TData, TValue>\n) => ColDefProgress;\n\n/**\n * Extended AG Grid column definition that supports additional properties for\n * progress overlays and layout customization.\n *\n * @typeParam TData - The type of the row data.\n * @typeParam TValue - The type of the cell value.\n *\n * @property progress - An optional callback to provide progress overlay configuration.\n * @property noGutters - If `true`, removes padding from the cell.\n */\nexport interface ColDefExtended<TData, TValue = any> extends ColDef<TData, TValue> {\n progress?: ColDefProgressCallback<TData, TValue>;\n noGutters?: boolean;\n headerComponentParams?: PlAgHeaderComponentParams;\n textWithButton?: true | {\n /**\n * Button icon MaskIconName16\n */\n icon?: MaskIconName16;\n /**\n * Button label\n */\n btnLabel?: string;\n /**\n * If invokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row. In this case,\n * the handler passed to the component is not called, even if it is defined.\n *\n * If invokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but the provided handler will be called, receiving\n * the ICellRendererParams as an argument.\n */\n invokeRowsOnDoubleClick?: boolean;\n /**\n * plHandler parameter is a click handler that is invoked when\n * the invokeRowsOnDoubleClick property is set to false.\n */\n onClick?: (params: ICellRendererParams) => void;\n };\n}\n\n/**\n * Utility type to infer the type of a specific property key from a {@link ColDefExtended}. Maybe not useful\n */\nexport type InferColDefKey<TData, TValue, K extends keyof ColDefExtended<TData, TValue>> = ColDefExtended<TData, TValue>[K];\n\n/**\n * Returns a style object that removes horizontal and vertical padding from an AG Grid cell.\n */\nfunction noGuttersStyle() {\n return {\n '--ag-cell-horizontal-padding': '0px',\n '--ag-cell-vertical-padding': '0px',\n };\n}\n\n/**\n * Creates the configuration object for a progress cell renderer component.\n *\n * @param params - The properties for the progress cell component, conforming to {@link PlProgressCellProps}.\n * @returns An object containing the progress component and its parameters.\n */\nfunction createProgressComponent(params: PlProgressCellProps) {\n return {\n component: PlAgCellProgress,\n params,\n };\n}\n\n/**\n * Enhances the given column definition to support a progress overlay if a progress callback is provided.\n *\n * This function modifies the column definition by:\n * - Merging no-gutters styles into the cell style.\n * - Overriding the `cellRendererSelector` to return a progress component when a valid progress configuration is present.\n *\n * @typeParam TData - The type of the row data.\n * @param def - The extended column definition to be augmented.\n */\nfunction handleProgress<TData>(def: ColDefExtended<TData>) {\n if (def.progress) {\n const progress = def.progress;\n\n const cellRendererSelector = def.cellRendererSelector;\n\n // Ensure no padding in the cell when a progress overlay is rendered.\n def.cellStyle = Object.assign({}, def.cellStyle ?? {}, noGuttersStyle());\n\n def.cellRendererSelector = (cellData) => {\n const pt = progress(cellData.value, cellData);\n\n if (!pt) {\n return cellRendererSelector?.(cellData);\n }\n\n return createProgressComponent({\n progress: tapIf(Number(pt.percent), (n) => Number.isFinite(n) ? (n < 0 ? 0 : n) : undefined),\n progressString: pt.suffix ?? (pt.status === 'running' ? `${pt.percent ?? 0}%` : ''),\n step: pt.text ?? progressStatusLabels[pt.status],\n stage: pt.status,\n error: pt.error,\n });\n };\n }\n}\n\n/**\n * Creates an AG Grid column definition with extended features such as progress overlays and gutter removal.\n *\n * This function processes an extended column definition by:\n * - Applying progress rendering logic via {@link handleProgress} if a progress callback is provided.\n * - Merging no-gutters styles if the `noGutters` flag is set.\n * - Removing the internal properties (`progress` and `noGutters`) from the final definition.\n *\n * @typeParam TData - The type of the row data.\n * @typeParam TValue - The type of the cell value.\n * @param def - The extended column definition containing custom properties.\n * @returns The processed column definition ready for use with AG Grid.\n */\nexport function createAgGridColDef<TData, TValue = any>(def: ColDefExtended<TData, TValue>): ColDef<TData, TValue> {\n handleProgress(def);\n\n if (def.noGutters) {\n def.cellStyle = Object.assign({}, def.cellStyle ?? {}, noGuttersStyle());\n }\n\n if (def.headerComponentParams) {\n def.headerComponent = PlAgColumnHeader;\n }\n\n if (def.textWithButton) {\n def.cellRenderer = PlAgTextAndButtonCell;\n if (typeof def.textWithButton !== 'boolean') {\n def.cellRendererParams = def.textWithButton;\n } else {\n def.cellRendererParams = {\n invokeRowsOnDoubleClick: true,\n };\n }\n }\n\n delete def.textWithButton;\n\n delete def.progress;\n\n delete def.noGutters;\n\n return def;\n}\n"],"names":["progressStatusLabels","noGuttersStyle","createProgressComponent","params","PlAgCellProgress","handleProgress","def","progress","cellRendererSelector","cellData","pt","tapIf","n","createAgGridColDef","PlAgColumnHeader","PlAgTextAndButtonCell"],"mappings":";;;;AAgBA,MAAMA,IAAuD;AAAA,EAC3D,aAAa;AAAA,EACb,SAAS;AAAA,EACT,MAAM;AACR;AAoGA,SAASC,IAAiB;AACjB,SAAA;AAAA,IACL,gCAAgC;AAAA,IAChC,8BAA8B;AAAA,EAChC;AACF;AAQA,SAASC,EAAwBC,GAA6B;AACrD,SAAA;AAAA,IACL,WAAWC;AAAAA,IACX,QAAAD;AAAA,EACF;AACF;AAYA,SAASE,EAAsBC,GAA4B;AACzD,MAAIA,EAAI,UAAU;AAChB,UAAMC,IAAWD,EAAI,UAEfE,IAAuBF,EAAI;AAG7B,IAAAA,EAAA,YAAY,OAAO,OAAO,CAAA,GAAIA,EAAI,aAAa,IAAIL,GAAgB,GAEnEK,EAAA,uBAAuB,CAACG,MAAa;AACvC,YAAMC,IAAKH,EAASE,EAAS,OAAOA,CAAQ;AAE5C,aAAKC,IAIER,EAAwB;AAAA,QAC7B,UAAUS,EAAM,OAAOD,EAAG,OAAO,GAAG,CAACE,MAAM,OAAO,SAASA,CAAC,IAAKA,IAAI,IAAI,IAAIA,IAAK,MAAS;AAAA,QAC3F,gBAAgBF,EAAG,WAAWA,EAAG,WAAW,YAAY,GAAGA,EAAG,WAAW,CAAC,MAAM;AAAA,QAChF,MAAMA,EAAG,QAAQV,EAAqBU,EAAG,MAAM;AAAA,QAC/C,OAAOA,EAAG;AAAA,QACV,OAAOA,EAAG;AAAA,MAAA,CACX,IATQF,KAAA,gBAAAA,EAAuBC;AAAA,IAUlC;AAAA,EAAA;AAEJ;AAeO,SAASI,EAAwCP,GAA2D;AACjH,SAAAD,EAAeC,CAAG,GAEdA,EAAI,cACFA,EAAA,YAAY,OAAO,OAAO,CAAA,GAAIA,EAAI,aAAa,IAAIL,GAAgB,IAGrEK,EAAI,0BACNA,EAAI,kBAAkBQ,IAGpBR,EAAI,mBACNA,EAAI,eAAeS,GACf,OAAOT,EAAI,kBAAmB,YAChCA,EAAI,qBAAqBA,EAAI,iBAE7BA,EAAI,qBAAqB;AAAA,IACvB,yBAAyB;AAAA,EAC3B,IAIJ,OAAOA,EAAI,gBAEX,OAAOA,EAAI,UAEX,OAAOA,EAAI,WAEJA;AACT;"}
1
+ {"version":3,"file":"createAgGridColDef.js","sources":["../../src/AgGridVue/createAgGridColDef.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ColDef, ICellRendererParams } from 'ag-grid-enterprise';\nimport { PlAgCellProgress } from '../components/PlAgCellProgress';\nimport type { MaskIconName16, PlProgressCellProps } from '@milaboratories/uikit';\nimport { tapIf } from '@milaboratories/helpers';\nimport type { PlAgHeaderComponentParams } from '../components/PlAgColumnHeader';\nimport { PlAgColumnHeader } from '../components/PlAgColumnHeader';\nimport { PlAgTextAndButtonCell } from '../components/PlAgTextAndButtonCell';\n\n/**\n * Represents the available progress statuses for a cell.\n */\ntype ProgressStatus = 'not_started' | 'running' | 'done';\n\n/**\n * Human-readable labels for each {@link ProgressStatus}.\n */\nconst progressStatusLabels: Record<ProgressStatus, string> = {\n not_started: 'Not Started',\n running: 'Running',\n done: 'Done',\n};\n\n/**\n * Defines the configuration for rendering a progress overlay in a grid cell.\n *\n * When provided, a progress overlay will be rendered. If the value is\n * `undefined`, no progress overlay is shown.\n */\nexport type ColDefProgress = {\n /**\n * The progress status which influences default text and styling:\n * - `'not_started'`: Typically renders gray text without a progress bar.\n * - `'running'`: Indicates an active progress state.\n * - `'done'`: Implies completion (commonly rendered as 100%).\n */\n status: ProgressStatus;\n /**\n * A number (or numeric string) between 0 and 100 that indicates progress.\n * If omitted or invalid, it implies an infinite or indeterminate progress state\n */\n percent?: number | string;\n /**\n * The main label displayed on the left side of the cell.\n */\n text?: string;\n /**\n * Additional text, often used to display the percentage by default.\n */\n suffix?: string;\n /**\n * If provided, this message takes precedence over `text` to indicate an error.\n */\n error?: string;\n} | undefined;\n\n/**\n * Callback function type to dynamically generate a {@link ColDefProgress} configuration\n * for a cell based on its rendering parameters.\n *\n * @typeParam TData - The type of the row data.\n * @typeParam TValue - The type of the cell value.\n *\n * @param cellData - The parameters provided by AG Grid's cell renderer.\n * @returns A {@link ColDefProgress} object to configure the progress overlay,\n * or `undefined` if no progress overlay should be rendered.\n */\nexport type ColDefProgressCallback<TData = any, TValue = any> = (\n value: TValue,\n cellData: ICellRendererParams<TData, TValue>\n) => ColDefProgress;\n\n/**\n * Extended AG Grid column definition that supports additional properties for\n * progress overlays and layout customization.\n *\n * @typeParam TData - The type of the row data.\n * @typeParam TValue - The type of the cell value.\n *\n * @property progress - An optional callback to provide progress overlay configuration.\n * @property noGutters - If `true`, removes padding from the cell.\n */\nexport interface ColDefExtended<TData, TValue = any> extends ColDef<TData, TValue> {\n progress?: ColDefProgressCallback<TData, TValue>;\n noGutters?: boolean;\n headerComponentParams?: PlAgHeaderComponentParams;\n textWithButton?: true | {\n /**\n * Button icon MaskIconName16\n */\n icon?: MaskIconName16;\n /**\n * Button label\n */\n btnLabel?: string;\n /**\n * If invokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row. In this case,\n * the handler passed to the component is not called, even if it is defined.\n *\n * If invokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but the provided handler will be called, receiving\n * the ICellRendererParams as an argument.\n */\n invokeRowsOnDoubleClick?: boolean;\n /**\n * plHandler parameter is a click handler that is invoked when\n * the invokeRowsOnDoubleClick property is set to false.\n */\n onClick?: (params: ICellRendererParams) => void;\n };\n}\n\n/**\n * Utility type to infer the type of a specific property key from a {@link ColDefExtended}. Maybe not useful\n */\nexport type InferColDefKey<TData, TValue, K extends keyof ColDefExtended<TData, TValue>> = ColDefExtended<TData, TValue>[K];\n\n/**\n * Returns a style object that removes horizontal and vertical padding from an AG Grid cell.\n */\nfunction noGuttersStyle() {\n return {\n '--ag-cell-horizontal-padding': '0px',\n '--ag-cell-vertical-padding': '0px',\n };\n}\n\n/**\n * Creates the configuration object for a progress cell renderer component.\n *\n * @param params - The properties for the progress cell component, conforming to {@link PlProgressCellProps}.\n * @returns An object containing the progress component and its parameters.\n */\nfunction createProgressComponent(params: PlProgressCellProps) {\n return {\n component: PlAgCellProgress,\n params,\n };\n}\n\n/**\n * Enhances the given column definition to support a progress overlay if a progress callback is provided.\n *\n * This function modifies the column definition by:\n * - Merging no-gutters styles into the cell style.\n * - Overriding the `cellRendererSelector` to return a progress component when a valid progress configuration is present.\n *\n * @typeParam TData - The type of the row data.\n * @param def - The extended column definition to be augmented.\n */\nfunction handleProgress<TData>(def: ColDefExtended<TData>) {\n if (def.progress) {\n const progress = def.progress;\n\n const cellRendererSelector = def.cellRendererSelector;\n\n // Ensure no padding in the cell when a progress overlay is rendered.\n def.cellStyle = Object.assign({}, def.cellStyle ?? {}, noGuttersStyle());\n\n def.cellRendererSelector = (cellData) => {\n const pt = progress(cellData.value, cellData);\n\n if (!pt) {\n return cellRendererSelector?.(cellData);\n }\n\n return createProgressComponent({\n progress: tapIf(Number(pt.percent), (n) => Number.isFinite(n) ? (n < 0 ? 0 : n) : undefined),\n progressString: pt.suffix ?? (pt.status === 'running' ? `${pt.percent ?? 0}%` : ''),\n step: pt.text ?? progressStatusLabels[pt.status],\n stage: pt.status,\n error: pt.error,\n });\n };\n }\n}\n\n/**\n * Creates an AG Grid column definition with extended features such as progress overlays and gutter removal.\n *\n * This function processes an extended column definition by:\n * - Applying progress rendering logic via {@link handleProgress} if a progress callback is provided.\n * - Merging no-gutters styles if the `noGutters` flag is set.\n * - Removing the internal properties (`progress` and `noGutters`) from the final definition.\n *\n * @typeParam TData - The type of the row data.\n * @typeParam TValue - The type of the cell value.\n * @param def - The extended column definition containing custom properties.\n * @returns The processed column definition ready for use with AG Grid.\n */\nexport function createAgGridColDef<TData, TValue = any>(def: ColDefExtended<TData, TValue>): ColDef<TData, TValue> {\n handleProgress(def);\n\n if (def.noGutters) {\n def.cellStyle = Object.assign({}, def.cellStyle ?? {}, noGuttersStyle());\n }\n\n if (def.headerComponentParams) {\n def.headerComponent = PlAgColumnHeader;\n }\n\n if (def.textWithButton) {\n def.cellRenderer = PlAgTextAndButtonCell;\n if (typeof def.textWithButton !== 'boolean') {\n def.cellRendererParams = def.textWithButton;\n } else {\n def.cellRendererParams = {\n invokeRowsOnDoubleClick: true,\n };\n }\n }\n\n delete def.textWithButton;\n\n delete def.progress;\n\n delete def.noGutters;\n\n return def;\n}\n"],"names":["progressStatusLabels","noGuttersStyle","createProgressComponent","params","PlAgCellProgress","handleProgress","def","progress","cellRendererSelector","cellData","pt","tapIf","n","createAgGridColDef","PlAgColumnHeader","PlAgTextAndButtonCell"],"mappings":";;;;AAiBA,MAAMA,IAAuD;AAAA,EAC3D,aAAa;AAAA,EACb,SAAS;AAAA,EACT,MAAM;AACR;AAoGA,SAASC,IAAiB;AACjB,SAAA;AAAA,IACL,gCAAgC;AAAA,IAChC,8BAA8B;AAAA,EAChC;AACF;AAQA,SAASC,EAAwBC,GAA6B;AACrD,SAAA;AAAA,IACL,WAAWC;AAAAA,IACX,QAAAD;AAAA,EACF;AACF;AAYA,SAASE,EAAsBC,GAA4B;AACzD,MAAIA,EAAI,UAAU;AAChB,UAAMC,IAAWD,EAAI,UAEfE,IAAuBF,EAAI;AAG7B,IAAAA,EAAA,YAAY,OAAO,OAAO,CAAA,GAAIA,EAAI,aAAa,IAAIL,GAAgB,GAEnEK,EAAA,uBAAuB,CAACG,MAAa;AACvC,YAAMC,IAAKH,EAASE,EAAS,OAAOA,CAAQ;AAE5C,aAAKC,IAIER,EAAwB;AAAA,QAC7B,UAAUS,EAAM,OAAOD,EAAG,OAAO,GAAG,CAACE,MAAM,OAAO,SAASA,CAAC,IAAKA,IAAI,IAAI,IAAIA,IAAK,MAAS;AAAA,QAC3F,gBAAgBF,EAAG,WAAWA,EAAG,WAAW,YAAY,GAAGA,EAAG,WAAW,CAAC,MAAM;AAAA,QAChF,MAAMA,EAAG,QAAQV,EAAqBU,EAAG,MAAM;AAAA,QAC/C,OAAOA,EAAG;AAAA,QACV,OAAOA,EAAG;AAAA,MAAA,CACX,IATQF,KAAA,gBAAAA,EAAuBC;AAAA,IAUlC;AAAA,EAAA;AAEJ;AAeO,SAASI,EAAwCP,GAA2D;AACjH,SAAAD,EAAeC,CAAG,GAEdA,EAAI,cACFA,EAAA,YAAY,OAAO,OAAO,CAAA,GAAIA,EAAI,aAAa,IAAIL,GAAgB,IAGrEK,EAAI,0BACNA,EAAI,kBAAkBQ,IAGpBR,EAAI,mBACNA,EAAI,eAAeS,GACf,OAAOT,EAAI,kBAAmB,YAChCA,EAAI,qBAAqBA,EAAI,iBAE7BA,EAAI,qBAAqB;AAAA,IACvB,yBAAyB;AAAA,EAC3B,IAIJ,OAAOA,EAAI,gBAEX,OAAOA,EAAI,UAEX,OAAOA,EAAI,WAEJA;AACT;"}
@@ -46,7 +46,7 @@ import "../../colors/gradient.js";
46
46
  .pl-text-field{--pl-text-field-text-color: var(--txt-01);--contour-color: var(--txt-01);--label-color: var(--txt-01);--contour-border-width: 1px;--contour-box-shadow: none;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--prefix-color: var(--color-placeholder);--show-clearable: none;width:100%;min-width:160px;min-height:var(--control-height);position:relative;border-radius:var(--border-radius-control);display:flex;flex-direction:row;align-items:center;outline:none}.pl-text-field__envelope{font-family:var(--font-family-base)}.pl-text-field input{font-family:var(--font-family-base);font-weight:500;min-height:calc(var(--control-height) - 2px);line-height:20px;width:100%;padding:0 12px;border:none;font-size:inherit;background-color:transparent;color:var(--pl-text-field-text-color);caret-color:var(--border-color-focus);cursor:inherit}.pl-text-field input:focus{outline:none}.pl-text-field input::placeholder{color:var(--color-placeholder)}.pl-text-field label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-text-field label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-text-field__contour{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius-control);border-width:var(--contour-border-width);border-color:var(--contour-color);border-style:solid;box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-text-field__prefix{padding-left:12px;white-space:nowrap;margin-right:-12px;color:var(--prefix-color)}.pl-text-field__append{padding-right:12px;display:flex;flex-direction:row;align-items:center;gap:4px;cursor:text}.pl-text-field__append .icon-16{cursor:pointer}.pl-text-field__append .mask-16{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-text-field__clearable{display:var(--show-clearable)!important;--icon-color: var(--ic-02) !important}.pl-text-field__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-text-field__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-text-field:hover{--contour-color: var(--control-hover-color);--show-clearable: inline-block}.pl-text-field:focus-within{--show-clearable: inline-block}.pl-text-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-text-field:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-text-field.dashed .pl-text-field__contour{border-style:dashed}.pl-text-field.nonEmpty{--prefix-color: var(--txt-01)}.pl-text-field.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-text-field.disabled{--contour-color: var(--color-dis-01);--label-color: var(--dis-01);--pl-text-field-text-color: var(--dis-01);--mask-icon-bg-color: var(--dis-01);cursor:not-allowed}
47
47
  .SvgRequired{background-image:url(data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%225%22%20height%3D%2212%22%20viewBox%3D%220%200%205%2012%22%20fill%3D%22none%22%3E%3Cpath%20d%3D%22M1.51685%204.8L2.5%203.34159L3.47612%204.8L4.39607%204.12743L3.31461%202.7469L5%202.25133L4.64888%201.16106L3.00562%201.77699L3.06882%200H1.93118L1.99438%201.77699L0.351124%201.16106L0%202.25133L1.68539%202.7469L0.59691%204.12743L1.51685%204.8Z%22%20fill%3D%22%23F1222F%22%2F%3E%3C%2Fsvg%3E)}
48
48
  .ui-text-area{--contour-color: var(--txt-01);--label-color: var(--txt-01);--contour-border-width: 1px;--contour-box-shadow: none;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--prefix-color: var(--color-placeholder);width:100%;min-height:var(--control-height);position:relative;border-radius:var(--border-radius-control);display:flex;flex-direction:row;align-items:center;outline:none}.ui-text-area__envelope{font-family:var(--font-family-base)}.ui-text-area textarea{min-height:calc(var(--control-height) - 2px);width:100%;padding:10px 12px;border:none;font-size:inherit;background-color:transparent;color:var(--txt-01);caret-color:var(--border-color-focus);cursor:inherit;resize:none;--thumb-color: var(--ic-02);overflow-y:auto}.ui-text-area textarea::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.ui-text-area textarea::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.ui-text-area textarea::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.ui-text-area textarea:focus{outline:none}.ui-text-area textarea::placeholder{color:var(--color-placeholder)}.ui-text-area label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.ui-text-area label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.ui-text-area__contour{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:var(--border-radius-control);border-width:var(--contour-border-width);border-color:var(--contour-color);border-style:solid;box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.ui-text-area__append{display:flex;flex-direction:row;align-items:center;gap:4px}.ui-text-area__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.ui-text-area__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.ui-text-area:hover{--contour-color: var(--control-hover-color)}.ui-text-area: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)}.ui-text-area:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.ui-text-area.dashed .ui-text-area__contour{border-style:dashed}.ui-text-area.nonEmpty{--prefix-color: var(--txt-01)}.ui-text-area.error{--contour-color: var(--txt-error)}.ui-text-area.disabled{--contour-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none}.ui-text-area.disabled *{color:var(--contour-color)}
49
- .pl-dropdown__options{--option-hover-bg: var(--btn-sec-hover-grey);z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);position:absolute;background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown__options .option.selected .checkmark{display:block}.pl-dropdown__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown{--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}.pl-dropdown__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center;cursor:pointer}.pl-dropdown__field .input-value{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;flex-direction:row;align-items:center;padding:0 60px 0 11px;pointer-events:none;line-height:20px;color:var(--txt-01);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit}.pl-dropdown__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown__field input:focus{outline:none}.pl-dropdown__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown__controls .mask-16,.pl-dropdown__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown .arrow-icon{cursor:pointer}.pl-dropdown .arrow-icon.arrow-icon-default{transition:transform .2s;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown.open,.pl-dropdown:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown.open .pl-dropdown__container{z-index:1000}.pl-dropdown.open .pl-dropdown__field{border-radius:6px 6px 0 0}.pl-dropdown.open .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);transform:rotate(-180deg)}.pl-dropdown:hover{--contour-color: var(--control-hover-color)}.pl-dropdown:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}.pl-dropdown.disabled .input-value{color:var(--dis-01)}
49
+ .pl-dropdown__options{--option-hover-bg: var(--btn-sec-hover-grey);z-index:var(--z-dropdown-options);border:1px solid var(--border-color-div-grey);position:absolute;background-color:var(--pl-dropdown-options-bg);border-radius:6px;max-height:244px;box-shadow:0 4px 12px -2px #0f244d14,0 6px 24px -2px #0f244d14;--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown__options .group-container{padding:4px 0}.pl-dropdown__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown__options .option.selected .checkmark{display:block}.pl-dropdown__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown{--contour-color: var(--txt-01);--contour-border-width: 1px;--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}.pl-dropdown__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding-left:11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center;cursor:pointer}.pl-dropdown__field .input-value{position:absolute;top:0;left:0;bottom:0;right:0;display:flex;flex-direction:row;align-items:center;padding:0 60px 0 11px;pointer-events:none;line-height:20px;color:var(--txt-01);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit}.pl-dropdown__field input{min-height:calc(var(--control-height) - 2px);line-height:20px;font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown__field input:focus{outline:none}.pl-dropdown__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown__controls .mask-16,.pl-dropdown__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown__controls .mask-loading{--icon-color: var(--ic-accent);animation:spin 2.5s linear infinite}.pl-dropdown__arrow-wrapper{display:flex;align-items:center;min-height:var(--control-height);padding-right:11px}.pl-dropdown .arrow-icon{cursor:pointer}.pl-dropdown .arrow-icon.arrow-icon-default{transition:transform .2s;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown.open,.pl-dropdown:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown.open .pl-dropdown__container{z-index:1000}.pl-dropdown.open .pl-dropdown__field{border-radius:6px 6px 0 0}.pl-dropdown.open .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);transform:rotate(-180deg)}.pl-dropdown:hover{--contour-color: var(--control-hover-color)}.pl-dropdown:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}.pl-dropdown.disabled .input-value{color:var(--dis-01)}
50
50
  .pl-line-dropdown{display:flex;align-items:center;width:fit-content;padding:8px 0;box-sizing:border-box;position:relative;outline:none;max-width:256px}.pl-line-dropdown:focus-within:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__prefix,.pl-line-dropdown__input{text-transform:uppercase}.pl-line-dropdown:hover:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown:after{content:"";position:absolute;bottom:0;border-bottom:2px solid var(--color-div-grey);width:100%}.pl-line-dropdown *{color:var(--txt-01);font-family:var(--font-family-base);font-size:13px;font-style:normal;font-weight:600;line-height:14px;letter-spacing:.52px}.pl-line-dropdown__input::placeholder{color:var(--txt-mask)}.pl-line-dropdown__icon{display:flex;align-items:center;min-width:16px;background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-line-dropdown__icon-clear{mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_586_7851)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%2016C12.4183%2016%2016%2012.4183%2016%208C16%203.58172%2012.4183%200%208%200C3.58172%200%200%203.58172%200%208C0%2012.4183%203.58172%2016%208%2016ZM4.46967%205.53033L6.93934%208L4.46967%2010.4697L5.53033%2011.5303L8%209.06066L10.4697%2011.5303L11.5303%2010.4697L9.06066%208L11.5303%205.53033L10.4697%204.46967L8%206.93934L5.53033%204.46967L4.46967%205.53033Z'%20fill='%23CFD1DB'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_586_7851'%3e%3crect%20width='16'%20height='16'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px;background-color:var(--color-ic-02)}.pl-line-dropdown.open .pl-line-dropdown__icon{mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-line-dropdown.open:after{border-bottom:2px solid var(--border-color-focus)}.pl-line-dropdown__icon-wrapper{padding:4px 2px 4px 0}.pl-line-dropdown.disabled *{color:var(--txt-mask);cursor:not-allowed}.pl-line-dropdown.disabled .pl-line-dropdown__icon{background-color:var(--color-div-grey)!important}.pl-line-dropdown.disabled:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown.disabled:hover:after{border-bottom:2px solid var(--color-div-grey)!important}.pl-line-dropdown__no-item{padding:8px 12px}.pl-line-dropdown__no-item-title{color:var(--txt-03)!important;text-wrap:nowrap;text-overflow:ellipsis;overflow:hidden}.pl-line-dropdown__items{position:absolute;top:0;z-index:var(--z-dropdown-options);border-radius:6px;padding:12px 0;border:1px solid var(--color-div-grey);width:256px;box-sizing:border-box;max-height:320px;background-color:var(--bg-elevated-01);box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-y:auto}.pl-line-dropdown__items::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-line-dropdown__items-tabs{display:flex;position:absolute;top:0;z-index:var(--z-dropdown-options);background-color:var(--color-div-bw);overflow-x:scroll;max-width:400px;padding:6px 12px 12px;border:1px solid var(--color-div-grey);border-radius:6px;box-shadow:var(--shadow-m);--thumb-color: var(--ic-02);overflow-x:auto}.pl-line-dropdown__items-tabs::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-line-dropdown__items-tabs::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
51
51
  .resizable-input{position:relative;box-sizing:border-box;padding:0 8px;display:inline-block;max-width:100%;text-overflow:ellipsis;overflow:hidden}.resizable-input__size-span{font-family:inherit;white-space:pre;display:inline-block;font-size:inherit;line-height:inherit;box-sizing:border-box;position:relative;left:0;opacity:0;min-width:2px;-webkit-user-select:none;user-select:none;vertical-align:top}.resizable-input input{border:none;outline:none;height:100%;text-overflow:ellipsis;font-family:inherit;background:none;color:inherit;top:0;left:0;right:0;font-size:inherit;line-height:inherit;position:absolute;box-sizing:border-box}
52
52
  .pl-dropdown-legacy{--contour-color: var(--txt-01);--contour-border-width: 1px;--options-bg: #fff;--option-hover-bg: var(--btn-sec-hover-grey);--label-offset-left-x: 8px;--label-offset-right-x: 8px;--label-color: var(--txt-01);position:relative;outline:none;min-height:var(--control-height);border-radius:6px;font-family:var(--font-family-base);font-size:var(--font-size-base);font-weight:var(--font-weigh-base)}[data-theme=dark] .pl-dropdown-legacy{--options-bg: #1b1b1f}.pl-dropdown-legacy__envelope{font-family:var(--control-font-family);min-width:160px}.pl-dropdown-legacy label{display:flex;align-items:center;gap:4px;position:absolute;top:0;transform:translateY(-60%);left:var(--label-offset-left-x);padding:0 4px;max-width:calc(100% - 16px);overflow:hidden;white-space:pre;text-overflow:ellipsis;cursor:inherit;color:var(--label-color);font-size:12px;font-weight:500;border-bottom-right-radius:4px;border-bottom-left-radius:4px;background:var(--bg-elevated-01)}.pl-dropdown-legacy label>span{overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-legacy__container{position:absolute;top:0;left:0;right:0;border-radius:6px;min-height:var(--control-height);color:var(--txt-01)}.pl-dropdown-legacy__contour{border-radius:var(--border-radius-control);border:var(--contour-border-width) solid var(--contour-color);box-shadow:var(--contour-box-shadow);z-index:0;pointer-events:none}.pl-dropdown-legacy__options{position:relative;background-color:var(--options-bg);border-radius:0 0 6px 6px;max-height:244px;border-top:1px solid var(--color-div-black);--thumb-color: var(--ic-02);overflow-y:auto}.pl-dropdown-legacy__options::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-dropdown-legacy__options::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-dropdown-legacy__options::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}.pl-dropdown-legacy__options .nothing-found{padding:0 10px;height:var(--control-height);line-height:var(--control-height);background-color:#fff;opacity:.5;font-style:italic}.pl-dropdown-legacy__options .option{position:relative;padding:0 30px 0 10px;height:var(--control-height);line-height:var(--control-height);cursor:pointer;-webkit-user-select:none;user-select:none}.pl-dropdown-legacy__options .option .checkmark{position:absolute;display:none;right:10px;top:50%;transform:translateY(-50%)}.pl-dropdown-legacy__options .option>span{display:block;overflow:hidden;white-space:nowrap;max-width:100%;text-overflow:ellipsis}.pl-dropdown-legacy__options .option.selected{background-color:var(--color-active-select)}.pl-dropdown-legacy__options .option.selected .checkmark{display:block}.pl-dropdown-legacy__options .option.active:not(.selected){background-color:var(--option-hover-bg)}.pl-dropdown-legacy__options .option:hover{background-color:var(--option-hover-bg)}.pl-dropdown-legacy__field{position:relative;border-radius:6px;overflow:hidden;background:transparent;padding:0 11px;min-height:var(--control-height);line-height:var(--control-height);display:flex;flex-direction:row;align-items:center}.pl-dropdown-legacy__field .input-value{outline:1px solid red;position:absolute;top:0;left:0;bottom:0;right:0;padding:0 60px 0 11px;pointer-events:none;line-height:var(--control-height);color:var(--contour-color);overflow:hidden;white-space:pre;text-overflow:ellipsis}.pl-dropdown-legacy__field input{min-height:calc(var(--control-height) - 2px);line-height:calc(var(--control-height) - 2px);font-family:inherit;font-size:inherit;background-color:transparent;border:none;padding:0;width:calc(100% - 40px);color:var(--txt-01);caret-color:var(--border-color-focus)}.pl-dropdown-legacy__field input:focus{outline:none}.pl-dropdown-legacy__field input:placeholder-shown{text-overflow:ellipsis}.pl-dropdown-legacy__field input::placeholder{color:var(--color-placeholder)}.pl-dropdown-legacy__helper{font-size:12px;color:var(--txt-03);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-legacy__error{font-size:12px;color:var(--txt-error);padding:2px 0 0;white-space:pre-wrap;text-overflow:ellipsis;font-weight:500;line-height:16px;margin-top:6px}.pl-dropdown-legacy__controls{display:flex;flex-direction:row;align-items:center;gap:6px;margin-left:auto}.pl-dropdown-legacy__controls .mask-16,.pl-dropdown-legacy__controls .mask-24{--icon-color: var(--control-mask-fill);cursor:pointer}.pl-dropdown-legacy__controls .clear{--icon-color: var(--ic-02)}.pl-dropdown-legacy__controls .mask-loading{--icon-color: var(#07AD3E);animation:spin 2.5s linear infinite}.pl-dropdown-legacy .arrow-icon{cursor:pointer}.pl-dropdown-legacy .arrow-icon.arrow-icon-default{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M2.46967%206.53033L3.53033%205.46967L8%209.93934L12.4697%205.46967L13.5303%206.53033L8%2012.0607L2.46967%206.53033Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-legacy.open,.pl-dropdown-legacy:focus-within{z-index:1;--label-color: var(--txt-focus)}.pl-dropdown-legacy.open .pl-dropdown-legacy__container{z-index:1000}.pl-dropdown-legacy.open .pl-dropdown-legacy__field{border-radius:6px 6px 0 0}.pl-dropdown-legacy.open .arrow-icon{background-color:var(--control-mask-fill);mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");-webkit-mask-image:url("data:image/svg+xml,%3csvg%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8%204.93933L13.5303%2010.4697L12.4697%2011.5303L8%207.06065L3.53033%2011.5303L2.46967%2010.4697L8%204.93933Z'%20fill='%23110529'/%3e%3c/svg%3e");mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:center;-webkit-mask-position:center;mask-size:16px;-webkit-mask-size:16px;width:16px;height:16px}.pl-dropdown-legacy:hover{--contour-color: var(--control-hover-color)}.pl-dropdown-legacy:focus-within:not(.error){--label-color: var(--txt-focus);--contour-color: var(--border-color-focus);--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--border-color-focus-shadow)}.pl-dropdown-legacy:focus-within.error{--contour-border-width: 2px;--contour-box-shadow: 0 0 0 4px var(--color-error-shadow)}.pl-dropdown-legacy.error{--contour-color: var(--txt-error);--label-color: var(--txt-error)}.pl-dropdown-legacy.disabled{--contour-color: var(--color-dis-01);--control-mask-fill: var(--color-dis-01);--label-color: var(--color-dis-01);cursor:not-allowed;pointer-events:none;-webkit-user-select:none;user-select:none}
@@ -1,21 +1,21 @@
1
- import { defineComponent as y, mergeModels as x, inject as d, useModel as g, computed as u, createElementBlock as m, openBlock as v, createVNode as n, unref as f, normalizeClass as r, withCtx as h, createTextVNode as C, toDisplayString as $, createCommentVNode as V, renderSlot as _ } from "vue";
2
- import { uniqueId as b } from "../../lib/util/helpers/dist/index.js";
3
- import k from "../PlIcon16/PlIcon16.vue.js";
4
- import B from "../PlSectionSeparator/PlSectionSeparator.vue.js";
5
- import N from "./ExpandTransition.vue2.js";
1
+ import { defineComponent as x, mergeModels as g, inject as d, toRef as u, useModel as C, computed as m, createElementBlock as v, openBlock as f, createVNode as n, unref as h, normalizeClass as r, withCtx as y, createTextVNode as $, toDisplayString as V, createCommentVNode as b, renderSlot as k } from "vue";
2
+ import { uniqueId as w } from "../../lib/util/helpers/dist/index.js";
3
+ import B from "../PlIcon16/PlIcon16.vue.js";
4
+ import N from "../PlSectionSeparator/PlSectionSeparator.vue.js";
5
+ import _ from "./ExpandTransition.vue2.js";
6
6
  (function() {
7
7
  try {
8
8
  if (typeof document < "u") {
9
- var t = document.createElement("style");
10
- t.appendChild(document.createTextNode(".expand-collapse-fix{overflow:hidden}.expand-collapse-enter-active,.expand-collapse-leave-active{transition:height .2s ease-in-out,opacity .2s ease-in-out;height:var(--component-height)}.expand-collapse-enter-from,.expand-collapse-leave-to{opacity:.5;height:0}")), document.head.appendChild(t);
9
+ var o = document.createElement("style");
10
+ o.appendChild(document.createTextNode(".expand-collapse-fix{overflow:hidden}.expand-collapse-enter-active,.expand-collapse-leave-active{transition:height .2s ease-in-out,opacity .2s ease-in-out;height:var(--component-height)}.expand-collapse-enter-from,.expand-collapse-leave-to{opacity:.5;height:0}")), document.head.appendChild(o);
11
11
  }
12
- } catch (o) {
13
- console.error("vite-plugin-css-injected-by-js", o);
12
+ } catch (t) {
13
+ console.error("vite-plugin-css-injected-by-js", t);
14
14
  }
15
15
  })();
16
- const j = { class: "pl-accordion-section" }, q = /* @__PURE__ */ y({
16
+ const j = { class: "pl-accordion-section" }, A = /* @__PURE__ */ x({
17
17
  __name: "PlAccordionSection",
18
- props: /* @__PURE__ */ x({
18
+ props: /* @__PURE__ */ g({
19
19
  label: {},
20
20
  compact: { type: Boolean }
21
21
  }, {
@@ -23,38 +23,38 @@ const j = { class: "pl-accordion-section" }, q = /* @__PURE__ */ y({
23
23
  modelModifiers: {}
24
24
  }),
25
25
  emits: ["update:modelValue"],
26
- setup(t) {
27
- const o = d("pl-accordion-model"), s = d("pl-accordion-props"), a = g(t, "modelValue"), c = b(), i = u(() => !s || s.value.multiple), l = u({
26
+ setup(o) {
27
+ const t = d("pl-accordion-model", () => u(""), !0), s = d("pl-accordion-props", () => u({ multiple: !1 }), !0), a = C(o, "modelValue"), c = w(), i = m(() => !s || s.value.multiple), l = m({
28
28
  get() {
29
- return i.value ? a.value : o ? o.value === c : a.value;
29
+ return i.value ? a.value : t ? t.value === c : a.value;
30
30
  },
31
31
  set(e) {
32
- i.value ? a.value = e : o && (o.value = o.value === c ? "" : c);
32
+ i.value ? a.value = e : t && (t.value = t.value === c ? "" : c);
33
33
  }
34
34
  });
35
- return (e, p) => (v(), m("div", j, [
36
- n(f(B), {
35
+ return (e, p) => (f(), v("div", j, [
36
+ n(h(N), {
37
37
  class: r(e.$style.separator),
38
38
  compact: e.compact,
39
- onClick: p[0] || (p[0] = (w) => l.value = !l.value)
39
+ onClick: p[0] || (p[0] = (E) => l.value = !l.value)
40
40
  }, {
41
- default: h(() => [
42
- n(f(k), {
41
+ default: y(() => [
42
+ n(h(B), {
43
43
  name: "chevron-right",
44
44
  class: r([{ [e.$style.down]: l.value }, e.$style.chevron])
45
45
  }, null, 8, ["class"]),
46
- C(" " + $(e.label), 1)
46
+ $(" " + V(e.label), 1)
47
47
  ]),
48
48
  _: 1
49
49
  }, 8, ["class", "compact"]),
50
- n(N, null, {
51
- default: h(() => [
52
- l.value ? (v(), m("div", {
50
+ n(_, null, {
51
+ default: y(() => [
52
+ l.value ? (f(), v("div", {
53
53
  key: 0,
54
54
  class: r(e.$style.content)
55
55
  }, [
56
- _(e.$slots, "default")
57
- ], 2)) : V("", !0)
56
+ k(e.$slots, "default")
57
+ ], 2)) : b("", !0)
58
58
  ]),
59
59
  _: 3
60
60
  })
@@ -62,6 +62,6 @@ const j = { class: "pl-accordion-section" }, q = /* @__PURE__ */ y({
62
62
  }
63
63
  });
64
64
  export {
65
- q as default
65
+ A as default
66
66
  };
67
67
  //# sourceMappingURL=PlAccordionSection.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAccordionSection.vue2.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlAccordion/PlAccordionSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { uniqueId } from '@milaboratories/helpers';\nimport { PlMaskIcon16 } from '../PlMaskIcon16';\nimport { PlSectionSeparator } from '../PlSectionSeparator';\nimport ExpandTransition from './ExpandTransition.vue';\nimport type { Ref } from 'vue';\nimport { computed, inject } from 'vue';\n\nconst $m = inject<Ref<string>>('pl-accordion-model');\n\nconst $p = inject<\n Ref<{\n multiple?: boolean;\n }>\n>('pl-accordion-props');\n\nconst model = defineModel<boolean>();\n\nconst id = uniqueId();\n\nconst isMulti = computed(() => !$p || $p.value.multiple);\n\nconst open = computed({\n get() {\n if (isMulti.value) {\n return model.value;\n }\n\n return $m ? $m.value === id : model.value;\n },\n set(on) {\n if (isMulti.value) {\n model.value = on;\n } else if ($m) {\n $m.value = $m.value === id ? '' : id;\n }\n },\n});\n\ndefineProps<{\n /**\n * The label text (optional)\n */\n label?: string;\n /**\n * If `true`, remove top padding\n */\n compact?: boolean;\n}>();\n</script>\n\n<template>\n <div class=\"pl-accordion-section\">\n <PlSectionSeparator :class=\"$style.separator\" :compact=\"compact\" @click=\"open = !open\">\n <PlMaskIcon16 name=\"chevron-right\" :class=\"[{ [$style.down]: open }, $style.chevron]\" />\n {{ label }}\n </PlSectionSeparator>\n <ExpandTransition>\n <div v-if=\"open\" :class=\"$style.content\">\n <slot />\n </div>\n </ExpandTransition>\n </div>\n</template>\n\n<style module>\n.content {\n display: flex;\n flex-direction: column;\n gap: var(--gap-v);\n will-change: height, opacity;\n /* transform: translateZ(0);\n backface-visibility: hidden; */\n}\n\n.content > *:first-child {\n margin-top: 24px;\n}\n\n.content > *:last-child {\n margin-bottom: 4px;\n}\n\n.separator {\n cursor: pointer;\n &:hover {\n --pl-separator-txt-color: var(--txt-01);\n --mask-icon-bg-color: var(--ic-01);\n }\n}\n\n.chevron {\n transition-duration: 50ms;\n}\n\n.down {\n transform: rotate(90deg);\n}\n</style>\n"],"names":["$m","u","r","t","V","$","a","h","c","m","isMulti","model"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAQMA,MAAAA,GAAAA;AAcgB,UACd,IAAAC,EAAA,oBAAA,GAAAC,IAAAD,EAAA,oBAAA,GAAAE,IAAAC,EAAAC,GAAA,YAAA,GAAAC,IAAAC,EAAA,GAAAC,IAAAC,EAAA,MAAA,CAAAP,KAAAA,EAAA,MAAA,QAAA,GAAA,IAAAO,EAAA;AAAA,MACAC,MAAAA;AAKN,eAAAF,EAAA,QAAAL,EAAA,QAAA,IAAA,EAAA,UAAAG,IAAAH,EAAA;AAAA;MAEMO,IAAQ,GACVC;AAGF,QAAAH,EAAA,QAAAL,EAAA,QAAA,IAAA,MAAA,EAAA,QAAA,EAAA,UAAAG,IAAA,KAAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PlAccordionSection.vue2.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlAccordion/PlAccordionSection.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { uniqueId } from '@milaboratories/helpers';\nimport { PlMaskIcon16 } from '../PlMaskIcon16';\nimport { PlSectionSeparator } from '../PlSectionSeparator';\nimport ExpandTransition from './ExpandTransition.vue';\nimport type { Ref } from 'vue';\nimport { computed, inject, toRef } from 'vue';\n\nconst $m = inject<Ref<string>>('pl-accordion-model', () => toRef(''), true);\n\nconst $p = inject<\n Ref<{\n multiple?: boolean;\n }>\n>('pl-accordion-props', () => toRef({ multiple: false }), true);\n\nconst model = defineModel<boolean>();\n\nconst id = uniqueId();\n\nconst isMulti = computed(() => !$p || $p.value.multiple);\n\nconst open = computed({\n get() {\n if (isMulti.value) {\n return model.value;\n }\n\n return $m ? $m.value === id : model.value;\n },\n set(on) {\n if (isMulti.value) {\n model.value = on;\n } else if ($m) {\n $m.value = $m.value === id ? '' : id;\n }\n },\n});\n\ndefineProps<{\n /**\n * The label text (optional)\n */\n label?: string;\n /**\n * If `true`, remove top padding\n */\n compact?: boolean;\n}>();\n</script>\n\n<template>\n <div class=\"pl-accordion-section\">\n <PlSectionSeparator :class=\"$style.separator\" :compact=\"compact\" @click=\"open = !open\">\n <PlMaskIcon16 name=\"chevron-right\" :class=\"[{ [$style.down]: open }, $style.chevron]\" />\n {{ label }}\n </PlSectionSeparator>\n <ExpandTransition>\n <div v-if=\"open\" :class=\"$style.content\">\n <slot />\n </div>\n </ExpandTransition>\n </div>\n</template>\n\n<style module>\n.content {\n display: flex;\n flex-direction: column;\n gap: var(--gap-v);\n will-change: height, opacity;\n /* transform: translateZ(0);\n backface-visibility: hidden; */\n}\n\n.content > *:first-child {\n margin-top: 24px;\n}\n\n.content > *:last-child {\n margin-bottom: 4px;\n}\n\n.separator {\n cursor: pointer;\n &:hover {\n --pl-separator-txt-color: var(--txt-01);\n --mask-icon-bg-color: var(--ic-01);\n }\n}\n\n.chevron {\n transition-duration: 50ms;\n}\n\n.down {\n transform: rotate(90deg);\n}\n</style>\n"],"names":["y","o","i","m","r","t","k","a","B","c","p","isMulti","model"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAQA,MAAAA;AAcsB,UACdC,IAAAC,EAAA,sBAAA,MAAAC,EAAA,EAAA,GAAA,EAAA,GAAAC,IAAAF,EAAA,sBAAA,MAAAC,EAAA,EAAA,UAAA,GAAA,CAAA,GAAA,EAAA,GAAAE,IAAAC,EAAAN,GAAA,YAAA,GAAAO,IAAAC,EAAA,GAAAC,IAAAC,EAAA,MAAA,CAAAN,KAAAA,EAAA,MAAA,QAAA,GAAA,IAAAM,EAAA;AAAA,MACAC,MAAAA;AAKN,eAAAF,EAAA,QAAAJ,EAAA,QAAAJ,IAAAA,EAAA,UAAAM,IAAAF,EAAA;AAAA;MAEMM,IAAQ,GACVC;AAGF,QAAAH,EAAA,QAAAJ,EAAA,QAAA,IAAAJ,MAAAA,EAAA,QAAAA,EAAA,UAAAM,IAAA,KAAAA;AAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlAutocomplete.vue.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlAutocomplete/PlAutocomplete.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a big list of options using string search request\n */\nexport default {\n name: 'PlAutocomplete',\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = unknown\">\nimport './pl-autocomplete.scss';\nimport { computed, reactive, ref, unref, useSlots, useTemplateRef, watch, watchPostEffect } from 'vue';\nimport { tap } from '../../helpers/functions';\nimport { PlTooltip } from '../PlTooltip';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport type { ListOption, ListOptionNormalized } from '../../types';\nimport { deepEqual } from '../../helpers/objects';\nimport DropdownListItem from '../DropdownListItem.vue';\nimport LongText from '../LongText.vue';\nimport { normalizeListOptions } from '../../helpers/utils';\nimport { PlIcon16 } from '../PlIcon16';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport { DropdownOverlay } from '../../utils/DropdownOverlay';\nimport { refDebounced } from '@vueuse/core';\nimport { useWatchFetch } from '../../composition/useWatchFetch.ts';\nimport SvgRequired from '../../generated/components/svg/images/SvgRequired.vue';\nimport { getErrorMessage } from '../../helpers/error.ts';\n\n/**\n * The current selected value.\n */\nconst model = defineModel<M>({ required: true });\n\nconst props = withDefaults(\n defineProps<{\n /**\n * Lambda for requesting of available options for the dropdown by search string.\n */\n optionsSearch: (s: string) => Promise<ListOption<M>[]>;\n /**\n * Lambda for requesting of corresponding option for current model value. If empty, optionsSearch is used for this.\n */\n modelSearch?: (v: M) => Promise<ListOption<M>>;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Custom icon (16px) class for the dropdown arrow (optional)\n */\n arrowIcon?: string;\n /**\n * Custom icon (24px) class for the dropdown arrow (optional)\n */\n arrowIconLarge?: string;\n /**\n * Option list item size\n */\n optionSize?: 'small' | 'medium';\n /**\n * Formatter for the selected value if its label is absent\n */\n formatValue?: (value: M) => string;\n }>(),\n {\n modelSearch: undefined,\n label: '',\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n placeholder: '...',\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n arrowIconLarge: undefined,\n optionSize: 'small',\n formatValue: (v: M) => String(v),\n },\n);\n\nconst slots = defineSlots<{\n [key: string]: unknown;\n}>();\n\nconst rootRef = ref<HTMLElement | undefined>();\nconst input = ref<HTMLInputElement | undefined>();\n\nconst overlayRef = useTemplateRef('overlay');\n\nconst search = ref<string | null>(null);\nconst data = reactive({\n activeIndex: -1,\n open: false,\n});\n\nconst findActiveIndex = () =>\n tap(\n renderedOptionsRef.value.findIndex((o) => deepEqual(o.value, model.value)),\n (v) => (v < 0 ? 0 : v),\n );\n\nconst updateActive = () => (data.activeIndex = findActiveIndex());\n\nconst loadedOptionsRef = ref<ListOption<M>[]>([]);\nconst modelOptionRef = ref<ListOptionNormalized<M> | undefined>(); // list of 1 option that is selected or empty, to keep selected label\n\nconst renderedOptionsRef = computed(() => {\n return normalizeListOptions(loadedOptionsRef.value).map((opt, index) => ({\n ...opt,\n index,\n isSelected: index === selectedIndex.value,\n isActive: index === data.activeIndex,\n }));\n});\nconst isLoadingOptions = ref<boolean>(true);\nconst isLoadingError = ref<boolean>(false);\n\nconst isDisabled = computed(() => {\n return props.disabled;\n});\n\nconst selectedIndex = computed(() => {\n return loadedOptionsRef.value.findIndex((o) => deepEqual(o.value, model.value));\n});\n\nconst computedError = computed(() => {\n if (isLoadingOptions.value) {\n return undefined;\n }\n\n if (props.error) {\n return getErrorMessage(props.error);\n }\n\n if (isLoadingError.value) {\n return 'Data loading error';\n }\n\n return undefined;\n});\n\nconst textValue = computed(() => {\n const modelOption = unref(modelOptionRef);\n const options = unref(renderedOptionsRef);\n\n const item: ListOptionNormalized | undefined = modelOption ?? options.find((o) => deepEqual(o.value, model.value)) ?? options.find((o) => deepEqual(o.value, model.value));\n\n return item?.label || (model.value ? props.formatValue(model.value) : '');\n});\n\nconst computedPlaceholder = computed(() => {\n if (!data.open && model.value) {\n return '';\n }\n\n return model.value ? String(textValue.value) : props.placeholder;\n});\n\nconst hasValue = computed(() => {\n return model.value !== undefined && model.value !== null;\n});\n\nconst tabindex = computed(() => (isDisabled.value ? undefined : '0'));\n\nconst selectOption = (v: ListOptionNormalized<M> | undefined) => {\n model.value = v?.value as M;\n modelOptionRef.value = v;\n search.value = null;\n data.open = false;\n rootRef?.value?.focus();\n};\n\nconst clear = () => {\n model.value = undefined as M;\n modelOptionRef.value = undefined;\n};\n\nconst setFocusOnInput = () => input.value?.focus();\n\nconst toggleOpen = () => {\n data.open = !data.open;\n};\n\nwatch(() => data.open, (v) => {\n search.value = v ? '' : null;\n});\n\nconst onInputFocus = () => {\n data.open = true;\n};\n\nconst onFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!rootRef.value?.contains(relatedTarget) && !overlayRef.value?.listRef?.contains(relatedTarget)) {\n search.value = null;\n data.open = false;\n }\n};\n\nconst handleKeydown = (e: { code: string; preventDefault(): void }) => {\n if (!['ArrowDown', 'ArrowUp', 'Enter', 'Escape'].includes(e.code)) {\n return;\n } else {\n e.preventDefault();\n }\n\n const { open, activeIndex } = data;\n\n if (!open) {\n if (e.code === 'Enter') {\n data.open = true;\n search.value = '';\n }\n return;\n }\n\n if (e.code === 'Escape') {\n data.open = false;\n search.value = null;\n rootRef.value?.focus();\n }\n\n const options = unref(renderedOptionsRef);\n\n const { length } = options;\n\n if (!length) {\n return;\n }\n\n if (e.code === 'Enter') {\n selectOption(options.find((it) => it.index === activeIndex));\n }\n\n const localIndex = options.findIndex((it) => it.index === activeIndex) ?? -1;\n\n const delta = e.code === 'ArrowDown' ? 1 : e.code === 'ArrowUp' ? -1 : 0;\n\n const newIndex = Math.abs(localIndex + delta + length) % length;\n\n data.activeIndex = renderedOptionsRef.value[newIndex].index ?? -1;\n};\n\nuseLabelNotch(rootRef);\n\nwatch(() => model.value, updateActive, { immediate: true });\n\nwatch(\n () => data.open,\n (open) => (open ? input.value?.focus() : ''),\n);\n\nwatchPostEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n search.value; // to watch\n\n if (data.activeIndex >= 0 && data.open) {\n overlayRef.value?.scrollIntoActive();\n }\n});\n\nconst searchDebounced = refDebounced(search, 300, { maxWait: 1000 });\n\nconst optionsRequest = useWatchFetch(() => searchDebounced.value, async (v) => {\n if (v !== null) { // search is null when dropdown is closed;\n return props.optionsSearch(v);\n }\n return [];\n});\n\nconst modelOptionRequest = useWatchFetch(() => model.value, async (v) => {\n if (v && !deepEqual(modelOptionRef.value?.value, v)) { // load label for selected value if it was updated from outside the component\n if (props.modelSearch) {\n return props.modelSearch(v);\n }\n return (await props.optionsSearch(String(v)))?.[0];\n }\n return modelOptionRef.value;\n});\n\nwatch(() => optionsRequest.value, (result) => {\n if (result) {\n loadedOptionsRef.value = result;\n if (search.value !== null) {\n isLoadingError.value = false;\n }\n }\n});\n\nwatch(() => modelOptionRequest.value, (result) => {\n if (result) {\n modelOptionRef.value = normalizeListOptions([result])[0];\n }\n});\n\nwatch(() => optionsRequest.error, (err) => {\n if (err) {\n isLoadingError.value = Boolean(err);\n }\n});\n\nwatch(() => optionsRequest.loading || modelOptionRequest.loading, (loading) => {\n isLoadingOptions.value = loading;\n});\n</script>\n\n<template>\n <div class=\"pl-autocomplete__envelope\" @click.stop=\"setFocusOnInput\">\n <div\n ref=\"rootRef\"\n :tabindex=\"tabindex\"\n class=\"pl-autocomplete\"\n :class=\"{ open: data.open, error: Boolean(computedError), disabled: isDisabled }\"\n @keydown=\"handleKeydown\"\n @focusout=\"onFocusOut\"\n >\n <div class=\"pl-autocomplete__container\">\n <div class=\"pl-autocomplete__field\">\n <input\n ref=\"input\"\n v-model=\"search\"\n type=\"text\"\n tabindex=\"-1\"\n :disabled=\"isDisabled\"\n :placeholder=\"computedPlaceholder\"\n spellcheck=\"false\"\n autocomplete=\"chrome-off\"\n @focus=\"onInputFocus\"\n />\n\n <div v-if=\"!data.open\" class=\"input-value\">\n <LongText> {{ textValue }} </LongText>\n </div>\n\n <div class=\"pl-autocomplete__controls\">\n <PlMaskIcon24 v-if=\"isLoadingOptions\" name=\"loading\" />\n <PlIcon16 v-if=\"clearable && hasValue\" class=\"clear\" name=\"delete-clear\" @click.stop=\"clear\" />\n <slot name=\"append\" />\n <div class=\"pl-autocomplete__arrow-wrapper\" @click.stop=\"toggleOpen\">\n <div v-if=\"arrowIconLarge\" class=\"arrow-icon\" :class=\"[`icon-24 ${arrowIconLarge}`]\" />\n <div v-else-if=\"arrowIcon\" class=\"arrow-icon\" :class=\"[`icon-16 ${arrowIcon}`]\" />\n <div v-else class=\"arrow-icon arrow-icon-default\" />\n </div>\n </div>\n </div>\n <label v-if=\"label\">\n <SvgRequired v-if=\"required\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <DropdownOverlay v-if=\"data.open\" ref=\"overlay\" :root=\"rootRef\" class=\"pl-autocomplete__options\" tabindex=\"-1\" :gap=\"3\">\n <DropdownListItem\n v-for=\"(item, index) in renderedOptionsRef\"\n :key=\"index\"\n :option=\"item\"\n :is-selected=\"item.isSelected\"\n :is-hovered=\"item.isActive\"\n :size=\"optionSize\"\n @click.stop=\"selectOption(item)\"\n />\n <div v-if=\"!renderedOptionsRef.length\" class=\"nothing-found\">Nothing found</div>\n </DropdownOverlay>\n <DoubleContour class=\"pl-autocomplete__contour\" />\n </div>\n </div>\n <div v-if=\"computedError\" class=\"pl-autocomplete__error\">{{ computedError }}</div>\n <div v-else-if=\"isLoadingOptions && loadingOptionsHelper\" class=\"pl-autocomplete__helper\">{{ loadingOptionsHelper }}</div>\n <div v-else-if=\"helper\" class=\"pl-autocomplete__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"names":["He","model","I","n","ue","u","U","ce","d","f","x","$","de","i","pe","findActiveIndex","tap","renderedOptionsRef","v","ge","g","b","ref","modelOptionRef","opt","index","S","V","A","p","j","E","getErrorMessage","props","isLoadingError","Ae","computed","item","computedPlaceholder","m","y","r","G","data","_a","rootRef","Q","L","setFocusOnInput","Y","input","Z","search","h","relatedTarget","o","te","z","l","length","localIndex","newIndex","R","ae","ne","re","useLabelNotch","be","open","refDebounced","useWatchFetch","searchDebounced","Ce","H","optionsRequest","result","D","normalizeListOptions","watch","err","T","modelOptionRequest","isLoadingOptions","loading"],"mappings":"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"}
1
+ {"version":3,"file":"PlAutocomplete.vue.js","sources":["../../../../../../../../../lib/ui/uikit/src/components/PlAutocomplete/PlAutocomplete.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * A component for selecting one value from a big list of options using string search request\n */\nexport default {\n name: 'PlAutocomplete',\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M = unknown\">\nimport './pl-autocomplete.scss';\nimport { computed, reactive, ref, unref, useTemplateRef, watch, watchPostEffect } from 'vue';\nimport { tap } from '../../helpers/functions';\nimport { PlTooltip } from '../PlTooltip';\nimport DoubleContour from '../../utils/DoubleContour.vue';\nimport { useLabelNotch } from '../../utils/useLabelNotch';\nimport type { ListOption, ListOptionNormalized } from '../../types';\nimport { deepEqual } from '../../helpers/objects';\nimport DropdownListItem from '../DropdownListItem.vue';\nimport LongText from '../LongText.vue';\nimport { normalizeListOptions } from '../../helpers/utils';\nimport { PlIcon16 } from '../PlIcon16';\nimport { PlMaskIcon24 } from '../PlMaskIcon24';\nimport { DropdownOverlay } from '../../utils/DropdownOverlay';\nimport { refDebounced } from '@vueuse/core';\nimport { useWatchFetch } from '../../composition/useWatchFetch.ts';\nimport SvgRequired from '../../generated/components/svg/images/SvgRequired.vue';\nimport { getErrorMessage } from '../../helpers/error.ts';\n\n/**\n * The current selected value.\n */\nconst model = defineModel<M>({ required: true });\n\nconst props = withDefaults(\n defineProps<{\n /**\n * Lambda for requesting of available options for the dropdown by search string.\n */\n optionsSearch: (s: string) => Promise<ListOption<M>[]>;\n /**\n * Lambda for requesting of corresponding option for current model value. If empty, optionsSearch is used for this.\n */\n modelSearch?: (v: M) => Promise<ListOption<M>>;\n /**\n * The label text for the dropdown field (optional)\n */\n label?: string;\n /**\n * A helper text displayed below the dropdown when there are no errors (optional).\n */\n helper?: string;\n /**\n * A helper text displayed below the dropdown when there are no options yet or options is undefined (optional).\n */\n loadingOptionsHelper?: string;\n /**\n * Error message displayed below the dropdown (optional)\n */\n error?: unknown;\n /**\n * Placeholder text shown when no value is selected.\n */\n placeholder?: string;\n /**\n * Enables a button to clear the selected value (default: false)\n */\n clearable?: boolean;\n /**\n * If `true`, the dropdown component is marked as required.\n */\n required?: boolean;\n /**\n * If `true`, the dropdown component is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * Custom icon (16px) class for the dropdown arrow (optional)\n */\n arrowIcon?: string;\n /**\n * Custom icon (24px) class for the dropdown arrow (optional)\n */\n arrowIconLarge?: string;\n /**\n * Option list item size\n */\n optionSize?: 'small' | 'medium';\n /**\n * Formatter for the selected value if its label is absent\n */\n formatValue?: (value: M) => string;\n }>(),\n {\n modelSearch: undefined,\n label: '',\n helper: undefined,\n loadingOptionsHelper: undefined,\n error: undefined,\n placeholder: '...',\n clearable: false,\n required: false,\n disabled: false,\n arrowIcon: undefined,\n arrowIconLarge: undefined,\n optionSize: 'small',\n formatValue: (v: M) => String(v),\n },\n);\n\nconst slots = defineSlots<{\n [key: string]: unknown;\n}>();\n\nconst rootRef = ref<HTMLElement | undefined>();\nconst input = ref<HTMLInputElement | undefined>();\n\nconst overlayRef = useTemplateRef('overlay');\n\nconst search = ref<string | null>(null);\nconst data = reactive({\n activeIndex: -1,\n open: false,\n});\n\nconst findActiveIndex = () =>\n tap(\n renderedOptionsRef.value.findIndex((o) => deepEqual(o.value, model.value)),\n (v) => (v < 0 ? 0 : v),\n );\n\nconst updateActive = () => (data.activeIndex = findActiveIndex());\n\nconst loadedOptionsRef = ref<ListOption<M>[]>([]);\nconst modelOptionRef = ref<ListOptionNormalized<M> | undefined>(); // list of 1 option that is selected or empty, to keep selected label\n\nconst renderedOptionsRef = computed(() => {\n return normalizeListOptions(loadedOptionsRef.value).map((opt, index) => ({\n ...opt,\n index,\n isSelected: index === selectedIndex.value,\n isActive: index === data.activeIndex,\n }));\n});\nconst isLoadingOptions = ref<boolean>(true);\nconst isLoadingError = ref<boolean>(false);\n\nconst isDisabled = computed(() => {\n return props.disabled;\n});\n\nconst selectedIndex = computed(() => {\n return loadedOptionsRef.value.findIndex((o) => deepEqual(o.value, model.value));\n});\n\nconst computedError = computed(() => {\n if (isLoadingOptions.value) {\n return undefined;\n }\n\n if (props.error) {\n return getErrorMessage(props.error);\n }\n\n if (isLoadingError.value) {\n return 'Data loading error';\n }\n\n return undefined;\n});\n\nconst textValue = computed(() => {\n const modelOption = unref(modelOptionRef);\n const options = unref(renderedOptionsRef);\n\n const item: ListOptionNormalized | undefined = modelOption ?? options.find((o) => deepEqual(o.value, model.value)) ?? options.find((o) => deepEqual(o.value, model.value));\n\n return item?.label || (model.value ? props.formatValue(model.value) : '');\n});\n\nconst computedPlaceholder = computed(() => {\n if (!data.open && model.value) {\n return '';\n }\n\n return model.value ? String(textValue.value) : props.placeholder;\n});\n\nconst hasValue = computed(() => {\n return model.value !== undefined && model.value !== null;\n});\n\nconst tabindex = computed(() => (isDisabled.value ? undefined : '0'));\n\nconst selectOption = (v: ListOptionNormalized<M> | undefined) => {\n model.value = v?.value as M;\n modelOptionRef.value = v;\n search.value = null;\n data.open = false;\n rootRef?.value?.focus();\n};\n\nconst clear = () => {\n model.value = undefined as M;\n modelOptionRef.value = undefined;\n};\n\nconst setFocusOnInput = () => input.value?.focus();\n\nconst toggleOpen = () => {\n data.open = !data.open;\n};\n\nwatch(() => data.open, (v) => {\n search.value = v ? '' : null;\n});\n\nconst onInputFocus = () => {\n data.open = true;\n};\n\nconst onFocusOut = (event: FocusEvent) => {\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!rootRef.value?.contains(relatedTarget) && !overlayRef.value?.listRef?.contains(relatedTarget)) {\n search.value = null;\n data.open = false;\n }\n};\n\nconst handleKeydown = (e: { code: string; preventDefault(): void }) => {\n if (!['ArrowDown', 'ArrowUp', 'Enter', 'Escape'].includes(e.code)) {\n return;\n } else {\n e.preventDefault();\n }\n\n const { open, activeIndex } = data;\n\n if (!open) {\n if (e.code === 'Enter') {\n data.open = true;\n search.value = '';\n }\n return;\n }\n\n if (e.code === 'Escape') {\n data.open = false;\n search.value = null;\n rootRef.value?.focus();\n }\n\n const options = unref(renderedOptionsRef);\n\n const { length } = options;\n\n if (!length) {\n return;\n }\n\n if (e.code === 'Enter') {\n selectOption(options.find((it) => it.index === activeIndex));\n }\n\n const localIndex = options.findIndex((it) => it.index === activeIndex) ?? -1;\n\n const delta = e.code === 'ArrowDown' ? 1 : e.code === 'ArrowUp' ? -1 : 0;\n\n const newIndex = Math.abs(localIndex + delta + length) % length;\n\n data.activeIndex = renderedOptionsRef.value[newIndex].index ?? -1;\n};\n\nuseLabelNotch(rootRef);\n\nwatch(() => model.value, updateActive, { immediate: true });\n\nwatch(\n () => data.open,\n (open) => (open ? input.value?.focus() : ''),\n);\n\nwatchPostEffect(() => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n search.value; // to watch\n\n if (data.activeIndex >= 0 && data.open) {\n overlayRef.value?.scrollIntoActive();\n }\n});\n\nconst searchDebounced = refDebounced(search, 300, { maxWait: 1000 });\n\nconst optionsRequest = useWatchFetch(() => searchDebounced.value, async (v) => {\n if (v !== null) { // search is null when dropdown is closed;\n return props.optionsSearch(v);\n }\n return [];\n});\n\nconst modelOptionRequest = useWatchFetch(() => model.value, async (v) => {\n if (v && !deepEqual(modelOptionRef.value?.value, v)) { // load label for selected value if it was updated from outside the component\n if (props.modelSearch) {\n return props.modelSearch(v);\n }\n return (await props.optionsSearch(String(v)))?.[0];\n }\n return modelOptionRef.value;\n});\n\nwatch(() => optionsRequest.value, (result) => {\n if (result) {\n loadedOptionsRef.value = result;\n if (search.value !== null) {\n isLoadingError.value = false;\n }\n }\n});\n\nwatch(() => modelOptionRequest.value, (result) => {\n if (result) {\n modelOptionRef.value = normalizeListOptions([result])[0];\n }\n});\n\nwatch(() => optionsRequest.error, (err) => {\n if (err) {\n isLoadingError.value = Boolean(err);\n }\n});\n\nwatch(() => optionsRequest.loading || modelOptionRequest.loading, (loading) => {\n isLoadingOptions.value = loading;\n});\n</script>\n\n<template>\n <div class=\"pl-autocomplete__envelope\" @click.stop=\"setFocusOnInput\">\n <div\n ref=\"rootRef\"\n :tabindex=\"tabindex\"\n class=\"pl-autocomplete\"\n :class=\"{ open: data.open, error: Boolean(computedError), disabled: isDisabled }\"\n @keydown=\"handleKeydown\"\n @focusout=\"onFocusOut\"\n >\n <div class=\"pl-autocomplete__container\">\n <div class=\"pl-autocomplete__field\">\n <input\n ref=\"input\"\n v-model=\"search\"\n type=\"text\"\n tabindex=\"-1\"\n :disabled=\"isDisabled\"\n :placeholder=\"computedPlaceholder\"\n spellcheck=\"false\"\n autocomplete=\"chrome-off\"\n @focus=\"onInputFocus\"\n />\n\n <div v-if=\"!data.open\" class=\"input-value\">\n <LongText> {{ textValue }} </LongText>\n </div>\n\n <div class=\"pl-autocomplete__controls\">\n <PlMaskIcon24 v-if=\"isLoadingOptions\" name=\"loading\" />\n <PlIcon16 v-if=\"clearable && hasValue\" class=\"clear\" name=\"delete-clear\" @click.stop=\"clear\" />\n <slot name=\"append\" />\n <div class=\"pl-autocomplete__arrow-wrapper\" @click.stop=\"toggleOpen\">\n <div v-if=\"arrowIconLarge\" class=\"arrow-icon\" :class=\"[`icon-24 ${arrowIconLarge}`]\" />\n <div v-else-if=\"arrowIcon\" class=\"arrow-icon\" :class=\"[`icon-16 ${arrowIcon}`]\" />\n <div v-else class=\"arrow-icon arrow-icon-default\" />\n </div>\n </div>\n </div>\n <label v-if=\"label\">\n <SvgRequired v-if=\"required\" />\n <span>{{ label }}</span>\n <PlTooltip v-if=\"slots.tooltip\" class=\"info\" position=\"top\">\n <template #tooltip>\n <slot name=\"tooltip\" />\n </template>\n </PlTooltip>\n </label>\n <DropdownOverlay v-if=\"data.open\" ref=\"overlay\" :root=\"rootRef\" class=\"pl-autocomplete__options\" tabindex=\"-1\" :gap=\"3\">\n <DropdownListItem\n v-for=\"(item, index) in renderedOptionsRef\"\n :key=\"index\"\n :option=\"item\"\n :is-selected=\"item.isSelected\"\n :is-hovered=\"item.isActive\"\n :size=\"optionSize\"\n @click.stop=\"selectOption(item)\"\n />\n <div v-if=\"!renderedOptionsRef.length\" class=\"nothing-found\">Nothing found</div>\n </DropdownOverlay>\n <DoubleContour class=\"pl-autocomplete__contour\" />\n </div>\n </div>\n <div v-if=\"computedError\" class=\"pl-autocomplete__error\">{{ computedError }}</div>\n <div v-else-if=\"isLoadingOptions && loadingOptionsHelper\" class=\"pl-autocomplete__helper\">{{ loadingOptionsHelper }}</div>\n <div v-else-if=\"helper\" class=\"pl-autocomplete__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"names":["He","model","I","n","ue","u","U","ce","d","f","x","$","de","i","pe","findActiveIndex","tap","renderedOptionsRef","v","ge","g","b","ref","modelOptionRef","opt","index","S","V","A","p","j","E","getErrorMessage","props","isLoadingError","Ae","computed","item","computedPlaceholder","m","y","r","G","data","_a","rootRef","Q","L","setFocusOnInput","Y","input","Z","search","h","relatedTarget","o","te","z","l","length","localIndex","newIndex","R","ae","ne","re","useLabelNotch","be","open","refDebounced","useWatchFetch","searchDebounced","Ce","H","optionsRequest","result","D","normalizeListOptions","watch","err","T","modelOptionRequest","isLoadingOptions","loading"],"mappings":"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"}