@milaboratories/uikit 2.10.40 → 2.10.42

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 (29) hide show
  1. package/.turbo/turbo-build.log +21 -21
  2. package/.turbo/turbo-formatter$colon$check.log +2 -2
  3. package/.turbo/turbo-linter$colon$check.log +2 -2
  4. package/.turbo/turbo-types$colon$check.log +1 -1
  5. package/CHANGELOG.md +15 -0
  6. package/dist/components/PlAlert/PlAlert.js.map +1 -1
  7. package/dist/components/PlAlert/PlAlert.vue.d.ts.map +1 -1
  8. package/dist/components/PlAlert/PlAlert.vue2.js +19 -20
  9. package/dist/components/PlAlert/PlAlert.vue2.js.map +1 -1
  10. package/dist/components/PlAlert/pl-alert.css +1 -1
  11. package/dist/components/PlDialogModal/PlDialogModal.vue2.js +1 -1
  12. package/dist/components/PlSlideModal/PlPureSlideModal.js.map +1 -1
  13. package/dist/components/PlSlideModal/PlPureSlideModal.vue.d.ts.map +1 -1
  14. package/dist/components/PlSlideModal/PlPureSlideModal.vue2.js +13 -13
  15. package/dist/components/PlSlideModal/PlPureSlideModal.vue2.js.map +1 -1
  16. package/dist/components/PlSlideModal/pl-slide-modal.css +1 -1
  17. package/dist/components/PlTextField/PlTextField.js.map +1 -1
  18. package/dist/components/PlTextField/PlTextField.vue.d.ts +118 -74
  19. package/dist/components/PlTextField/PlTextField.vue.d.ts.map +1 -1
  20. package/dist/components/PlTextField/PlTextField.vue2.js +41 -60
  21. package/dist/components/PlTextField/PlTextField.vue2.js.map +1 -1
  22. package/dist/index.js +20 -20
  23. package/package.json +5 -5
  24. package/src/components/PlAlert/PlAlert.vue +3 -3
  25. package/src/components/PlAlert/pl-alert.scss +0 -7
  26. package/src/components/PlSlideModal/PlPureSlideModal.vue +5 -2
  27. package/src/components/PlSlideModal/pl-slide-modal.scss +0 -8
  28. package/src/components/PlTextField/PlTextField.vue +9 -62
  29. package/src/components/PlTextField/__tests__/TextField.spec.ts +3 -3
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @milaboratories/uikit@2.10.40 build /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.10.42 build /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > ts-builder build --target browser-lib --build-config ./build.browser-lib.config.js
5
5
 
6
6
  Building browser-lib project...
@@ -24,13 +24,13 @@ Using custom config: ./build.browser-lib.config.js
24
24
  rendering chunks...
25
25
 
26
26
  [vite:dts] Start generate declaration files...
27
- [vite:dts] Declaration files built in 5494ms.
27
+ [vite:dts] Declaration files built in 6264ms.
28
28
 
29
29
  computing gzip size...
30
30
  dist/components/PlClipboard/PlClipboard.vue?vue&type=style&index=0&lang.css 0.04 kB │ gzip: 0.06 kB
31
31
  dist/components/PlSlideModal/PlSlideModal.vue?vue&type=style&index=0&lang.css 0.05 kB │ gzip: 0.06 kB
32
- dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue?vue&type=style&index=0&lang.css 0.06 kB │ gzip: 0.08 kB
33
32
  dist/layout/PlContainer/pl-container.css 0.06 kB │ gzip: 0.08 kB
33
+ dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue?vue&type=style&index=0&lang.css 0.06 kB │ gzip: 0.08 kB
34
34
  dist/layout/PlGrid/pl-grid.css 0.06 kB │ gzip: 0.07 kB
35
35
  dist/layout/PlRow/pl-row.css 0.14 kB │ gzip: 0.12 kB
36
36
  dist/components/PlChartStackedBar/PlChartStackedBar.vue?vue&type=style&index=0&lang.css 0.17 kB │ gzip: 0.15 kB
@@ -68,14 +68,14 @@ dist/components/contextMenu/Menu.vue_vue_type_style_index_0_scoped_1bb3001b_lang
68
68
  dist/components/PlSearchField/PlSearchField.vue?vue&type=style&index=0&lang.css 1.03 kB │ gzip: 0.39 kB
69
69
  dist/components/PlProgressCell/pl-progress-cell.css 1.14 kB │ gzip: 0.48 kB
70
70
  dist/layout/PlBlockPage/pl-block-page.css 1.32 kB │ gzip: 0.51 kB
71
+ dist/components/PlAlert/pl-alert.css 1.38 kB │ gzip: 0.54 kB
71
72
  dist/components/PlChip/pl-chip.css 1.55 kB │ gzip: 0.70 kB
72
73
  dist/layout/PlPlaceholder/PlPlaceholder.vue?vue&type=style&index=0&lang.css 1.56 kB │ gzip: 0.68 kB
73
74
  dist/components/PlBtnSplit/pl-btn-split.css 1.57 kB │ gzip: 0.45 kB
75
+ dist/components/PlSlideModal/pl-slide-modal.css 1.80 kB │ gzip: 0.70 kB
74
76
  dist/components/PlTabs/pl-tabs.css 1.80 kB │ gzip: 0.55 kB
75
- dist/components/PlAlert/pl-alert.css 1.92 kB │ gzip: 0.80 kB
76
77
  dist/components/PlDialogModal/pl-dialog-modal.css 2.00 kB │ gzip: 0.71 kB
77
78
  dist/components/PlEditableTitle/pl-editable-title.css 2.10 kB │ gzip: 0.86 kB
78
- dist/components/PlSlideModal/pl-slide-modal.css 2.33 kB │ gzip: 0.94 kB
79
79
  dist/components/PlElementList/PlElementListItem.vue?vue&type=style&index=0&lang.css 2.35 kB │ gzip: 0.84 kB
80
80
  dist/components/PlBtnGhost/pl-btn-ghost.css 2.37 kB │ gzip: 0.80 kB
81
81
  dist/components/PlBtnDanger/pl-btn-danger.css 2.45 kB │ gzip: 0.83 kB
@@ -181,7 +181,7 @@ dist/layout/PlGrid/PlGrid.js
181
181
  dist/base/BtnBase.js 0.13 kB │ gzip: 0.13 kB │ map: 1.36 kB
182
182
  dist/components/DataTable/TScroll.js 0.13 kB │ gzip: 0.13 kB │ map: 1.43 kB
183
183
  dist/components/HScroll.js 0.13 kB │ gzip: 0.13 kB │ map: 1.69 kB
184
- dist/components/PlAlert/PlAlert.js 0.13 kB │ gzip: 0.13 kB │ map: 2.68 kB
184
+ dist/components/PlAlert/PlAlert.js 0.13 kB │ gzip: 0.13 kB │ map: 2.70 kB
185
185
  dist/components/TabItem.js 0.13 kB │ gzip: 0.13 kB │ map: 0.96 kB
186
186
  dist/components/VScroll.js 0.13 kB │ gzip: 0.13 kB │ map: 1.69 kB
187
187
  dist/components/PlSplash/PlSplash.js 0.14 kB │ gzip: 0.13 kB │ map: 1.17 kB
@@ -203,7 +203,7 @@ dist/components/PlBtnAccent/PlBtnAccent.js
203
203
  dist/components/PlBtnDanger/PlBtnDanger.js 0.14 kB │ gzip: 0.14 kB │ map: 1.11 kB
204
204
  dist/components/PlFileInput/PlFileInput.js 0.14 kB │ gzip: 0.14 kB │ map: 6.62 kB
205
205
  dist/components/PlStatusTag/PlStatusTag.js 0.14 kB │ gzip: 0.14 kB │ map: 0.80 kB
206
- dist/components/PlTextField/PlTextField.js 0.14 kB │ gzip: 0.14 kB │ map: 7.34 kB
206
+ dist/components/PlTextField/PlTextField.js 0.14 kB │ gzip: 0.14 kB │ map: 5.75 kB
207
207
  dist/components/SliderRange.js 0.14 kB │ gzip: 0.14 kB │ map: 8.18 kB
208
208
  dist/composition/utils.js 0.14 kB │ gzip: 0.14 kB │ map: 0.32 kB
209
209
  dist/layout/PlContainer/PlContainer.js 0.14 kB │ gzip: 0.14 kB │ map: 0.94 kB
@@ -236,7 +236,7 @@ dist/utils/DropdownOverlay/DropdownOverlay.js
236
236
  dist/components/DropdownListItem.js 0.15 kB │ gzip: 0.14 kB │ map: 2.20 kB
237
237
  dist/components/PlDropdownLegacy/PlDropdownLegacy.js 0.15 kB │ gzip: 0.14 kB │ map: 11.18 kB
238
238
  dist/components/PlLoaderCircular/PlLoaderCircular.js 0.15 kB │ gzip: 0.14 kB │ map: 1.02 kB
239
- dist/components/PlSlideModal/PlPureSlideModal.js 0.15 kB │ gzip: 0.14 kB │ map: 1.75 kB
239
+ dist/components/PlSlideModal/PlPureSlideModal.js 0.15 kB │ gzip: 0.14 kB │ map: 1.91 kB
240
240
  dist/components/DataTable/BaseCellComponent.js 0.15 kB │ gzip: 0.14 kB │ map: 1.67 kB
241
241
  dist/components/SliderRangeTriple.js 0.15 kB │ gzip: 0.14 kB │ map: 10.26 kB
242
242
  dist/components/DataTable/ColumnsCommandMenu.js 0.16 kB │ gzip: 0.14 kB │ map: 1.06 kB
@@ -483,16 +483,24 @@ dist/layout/PlPlaceholder/PlPlaceholder.vue_vue_type_style_index_0_lang.module.j
483
483
  dist/_virtual/_rolldown_dynamic_import_helper.js 0.48 kB │ gzip: 0.33 kB
484
484
  dist/assets/icons/icon-assets-min/16_lock.js 0.48 kB │ gzip: 0.33 kB │ map: 0.63 kB
485
485
  dist/components/DataTable/domain.js 0.48 kB │ gzip: 0.31 kB │ map: 1.86 kB
486
+ [PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:
487
+ - vite:asset (37%)
486
488
  dist/assets/icons/icon-assets-min/16_cell-type-num.js 0.48 kB │ gzip: 0.33 kB │ map: 0.63 kB
487
489
  dist/assets/icons/icon-assets-min/24_cell-type-num.js 0.48 kB │ gzip: 0.33 kB │ map: 0.63 kB
488
490
  dist/assets/icons/icon-assets-min/24_frame-type-left.js 0.49 kB │ gzip: 0.27 kB │ map: 0.64 kB
491
+ - vite:css-post (11%)
492
+ - vite:dts (11%)
489
493
  dist/composition/useFormState.js 0.49 kB │ gzip: 0.31 kB │ map: 1.44 kB
490
494
  dist/assets/icons/icon-assets-min/16_clear.js 0.49 kB │ gzip: 0.32 kB │ map: 0.65 kB
491
495
  dist/assets/icons/icon-assets-min/24_frame-type-bottom.js 0.49 kB │ gzip: 0.27 kB │ map: 0.65 kB
496
+ - sourcemaps (10%)
492
497
  dist/assets/icons/icon-assets-min/24_lock.js 0.49 kB │ gzip: 0.33 kB │ map: 0.64 kB
498
+ - vite:vue (9%)
499
+ See https://rolldown.rs/options/checks#plugintimings for more details.
493
500
  dist/assets/icons/icon-assets-min/24_table.js 0.49 kB │ gzip: 0.32 kB │ map: 0.64 kB
494
501
  dist/assets/icons/icon-assets-min/24_statistics.js 0.50 kB │ gzip: 0.33 kB │ map: 0.65 kB
495
502
  dist/components/DataTable/composition/useColumn.js 0.50 kB │ gzip: 0.30 kB │ map: 1.26 kB
503
+ 
496
504
  dist/assets/icons/icon-assets-min/16_delete-clear.js 0.50 kB │ gzip: 0.33 kB │ map: 0.67 kB
497
505
  dist/assets/icons/icon-assets-min/24_x-axis.js 0.50 kB │ gzip: 0.31 kB │ map: 0.66 kB
498
506
  dist/assets/icons/icon-assets-min/16_box.js 0.50 kB │ gzip: 0.34 kB │ map: 0.65 kB
@@ -534,14 +542,6 @@ dist/composition/useConfirm.js
534
542
  dist/assets/icons/icon-assets-min/16_clipboard-copied.js 0.57 kB │ gzip: 0.36 kB │ map: 0.73 kB
535
543
  dist/assets/icons/icon-assets-min/16_clipboard.js 0.57 kB │ gzip: 0.34 kB │ map: 0.72 kB
536
544
  dist/components/DataTable/ColumnCaret.vue_vue_type_script_setup_true_lang.js 0.57 kB │ gzip: 0.39 kB │ map: 0.85 kB
537
- [PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:
538
- - vite:asset (34%)
539
- - sourcemaps (14%)
540
- - vite:css-post (12%)
541
- - vite:dts (10%)
542
- - vite:vue (8%)
543
- See https://rolldown.rs/options/checks#plugintimings for more details.
544
- 
545
545
  dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue_vue_type_script_setup_true_lang.js 0.57 kB │ gzip: 0.39 kB │ map: 1.02 kB
546
546
  dist/assets/icons/icon-assets-min/24_file-doc-import.js 0.57 kB │ gzip: 0.37 kB │ map: 0.74 kB
547
547
  dist/composition/useRipple.js 0.57 kB │ gzip: 0.37 kB │ map: 1.50 kB
@@ -730,13 +730,13 @@ dist/components/PlBtnGhost/PlBtnGhost.vue_vue_type_script_setup_true_lang.js
730
730
  dist/assets/icons/icon-assets-min/24_social-twitter-bird.js 1.70 kB │ gzip: 0.94 kB │ map: 1.86 kB
731
731
  dist/assets/icons/icon-assets-min/24_publications.js 1.73 kB │ gzip: 0.90 kB │ map: 1.90 kB
732
732
  dist/utils/DropdownOverlay/DropdownOverlay.vue_vue_type_script_setup_true_lang.js 1.75 kB │ gzip: 0.95 kB │ map: 3.52 kB
733
- dist/components/PlAlert/PlAlert.vue_vue_type_script_setup_true_lang.js 1.78 kB │ gzip: 0.83 kB │ map: 4.92 kB
733
+ dist/components/PlAlert/PlAlert.vue_vue_type_script_setup_true_lang.js 1.79 kB │ gzip: 0.84 kB │ map: 4.91 kB
734
734
  dist/components/PlSvg/registry.js 1.79 kB │ gzip: 0.90 kB │ map: 4.76 kB
735
735
  dist/components/DropdownListItem.vue_vue_type_script_setup_true_lang.js 1.83 kB │ gzip: 0.78 kB │ map: 3.00 kB
736
736
  dist/components/PlCheckboxGroup/PlCheckboxGroup.vue_vue_type_script_setup_true_lang.js 1.84 kB │ gzip: 0.92 kB │ map: 5.23 kB
737
737
  dist/components/PlAccordion/PlAccordionSection.vue_vue_type_script_setup_true_lang.js 1.87 kB │ gzip: 0.93 kB │ map: 3.24 kB
738
738
  dist/assets/icons/icon-assets-min/24_debug.js 1.88 kB │ gzip: 0.98 kB │ map: 2.02 kB
739
- dist/components/PlSlideModal/PlPureSlideModal.vue_vue_type_script_setup_true_lang.js 1.91 kB │ gzip: 0.89 kB │ map: 5.16 kB
739
+ dist/components/PlSlideModal/PlPureSlideModal.vue_vue_type_script_setup_true_lang.js 1.90 kB │ gzip: 0.89 kB │ map: 5.14 kB
740
740
  dist/composition/useTransformedModel.js 1.91 kB │ gzip: 0.90 kB │ map: 3.22 kB
741
741
  dist/assets/icons/icon-assets-min/24_pen-tool.js 1.94 kB │ gzip: 1.00 kB │ map: 2.08 kB
742
742
  dist/components/PlSearchField/PlSearchField.vue_vue_type_script_setup_true_lang.js 1.95 kB │ gzip: 0.95 kB │ map: 3.55 kB
@@ -763,7 +763,7 @@ dist/components/PlDropdown/OptionList.vue_vue_type_script_setup_true_lang.js
763
763
  dist/layout/PlBlockPage/PlBlockPage.vue_vue_type_script_setup_true_lang.js 2.80 kB │ gzip: 1.27 kB │ map: 7.49 kB
764
764
  dist/colors/gradient.js 2.83 kB │ gzip: 1.17 kB │ map: 5.92 kB
765
765
  dist/components/PlFileDialog/PlFileDialog.vue_vue_type_script_setup_true_lang.js 3.10 kB │ gzip: 1.34 kB │ map: 5.30 kB
766
- dist/components/PlDialogModal/PlDialogModal.vue_vue_type_script_setup_true_lang.js 3.12 kB │ gzip: 1.26 kB │ map: 8.47 kB
766
+ dist/components/PlDialogModal/PlDialogModal.vue_vue_type_script_setup_true_lang.js 3.12 kB │ gzip: 1.27 kB │ map: 8.47 kB
767
767
  dist/components/DataTable/state.js 3.14 kB │ gzip: 1.20 kB │ map: 7.85 kB
768
768
  dist/colors/palette.js 3.17 kB │ gzip: 1.31 kB │ map: 6.07 kB
769
769
  dist/components/PlTextArea/PlTextArea.vue_vue_type_script_setup_true_lang.js 3.21 kB │ gzip: 1.43 kB │ map: 9.24 kB
@@ -772,12 +772,12 @@ dist/components/PlTooltip/PlTooltip.vue_vue_type_script_setup_true_lang.js
772
772
  dist/layout/PlPlaceholder/paint-worklet.js 3.40 kB │ gzip: 0.68 kB │ map: 3.65 kB
773
773
  dist/components/DataTable/TableComponent.vue_vue_type_script_setup_true_lang.js 3.51 kB │ gzip: 1.49 kB │ map: 10.60 kB
774
774
  dist/components/PlLogView/PlLogView.vue_vue_type_script_setup_true_lang.js 3.59 kB │ gzip: 1.53 kB │ map: 10.52 kB
775
+ dist/components/PlTextField/PlTextField.vue_vue_type_script_setup_true_lang.js 4.07 kB │ gzip: 1.66 kB │ map: 11.86 kB
775
776
  dist/components/PlElementList/PlElementListItem.vue_vue_type_script_setup_true_lang.js 4.08 kB │ gzip: 1.30 kB │ map: 10.07 kB
776
777
  dist/composition/useSortable2.js 4.37 kB │ gzip: 1.64 kB │ map: 11.54 kB
777
778
  dist/assets/icons/icon-assets-min/24_heatmap.js 4.42 kB │ gzip: 0.99 kB │ map: 4.65 kB
778
779
  dist/components/PlBtnSplit/PlBtnSplit.vue_vue_type_script_setup_true_lang.js 4.52 kB │ gzip: 1.94 kB │ map: 13.35 kB
779
780
  dist/components/Slider.vue_vue_type_script_setup_true_lang.js 4.59 kB │ gzip: 1.83 kB │ map: 8.92 kB
780
- dist/components/PlTextField/PlTextField.vue_vue_type_script_setup_true_lang.js 4.75 kB │ gzip: 1.89 kB │ map: 13.94 kB
781
781
  dist/components/PlFileInput/PlFileInput.vue_vue_type_script_setup_true_lang.js 5.17 kB │ gzip: 2.02 kB │ map: 14.66 kB
782
782
  dist/components/SliderRange.vue_vue_type_script_setup_true_lang.js 5.83 kB │ gzip: 2.09 kB │ map: 12.27 kB
783
783
  dist/components/PlNumberField/PlNumberField.vue_vue_type_script_setup_true_lang.js 6.12 kB │ gzip: 2.23 kB │ map: 17.47 kB
@@ -796,5 +796,5 @@ dist/composition/filters/metadata.js
796
796
  dist/index.js 12.50 kB │ gzip: 2.94 kB │ map: 21.27 kB
797
797
  dist/components/PlSvg/PlSvg.vue_vue_type_script_setup_true_lang.js 39.32 kB │ gzip: 3.34 kB │ map: 8.66 kB
798
798
 
799
- ✓ built in 7.70s
799
+ ✓ built in 8.24s
800
800
  Build completed successfully
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @milaboratories/uikit@2.10.40 formatter:check /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.10.42 formatter:check /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > ts-builder formatter --check
5
5
 
6
6
  Checking formatting...
@@ -8,5 +8,5 @@ Checking formatting...
8
8
  Checking formatting...
9
9
 
10
10
  All matched files use the correct format.
11
- Finished in 4337ms on 380 files using 8 threads.
11
+ Finished in 4021ms on 380 files using 8 threads.
12
12
  Format check completed successfully
@@ -1,10 +1,10 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @milaboratories/uikit@2.10.40 linter:check /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.10.42 linter:check /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > ts-builder linter --check
5
5
 
6
6
  Linting project...
7
7
  ↳ oxlint --config /home/runner/_work/platforma/platforma/lib/ui/uikit/.oxlintrc.json --deny-warnings
8
8
  Found 0 warnings and 0 errors.
9
- Finished in 31ms on 307 files with 98 rules using 8 threads.
9
+ Finished in 33ms on 307 files with 98 rules using 8 threads.
10
10
  Linting completed successfully
@@ -1,6 +1,6 @@
1
1
   WARN  Issue while reading "/home/runner/_work/platforma/platforma/.npmrc". Failed to replace env in config: ${NPMJS_TOKEN}
2
2
 
3
- > @milaboratories/uikit@2.10.40 types:check /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.10.42 types:check /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > ts-builder type-check --target browser-lib
5
5
 
6
6
  ↳ vue-tsc.js --noEmit --project ./tsconfig.json --customConditions ,
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @milaboratories/uikit
2
2
 
3
+ ## 2.10.42
4
+
5
+ ### Patch Changes
6
+
7
+ - a93de45: Fix table filters bugs
8
+ - Updated dependencies [a93de45]
9
+ - @milaboratories/helpers@1.13.7
10
+ - @platforma-sdk/model@1.58.19
11
+
12
+ ## 2.10.41
13
+
14
+ ### Patch Changes
15
+
16
+ - f2b7989: Use shared PlCloseModalBtn in PlAlert and PlPureSlideModal instead of duplicated close button styles
17
+
3
18
  ## 2.10.40
4
19
 
5
20
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"PlAlert.js","names":[],"sources":["../../../src/components/PlAlert/PlAlert.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlAlert\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-alert.scss\";\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated, typically when the close button is clicked.\n *\n * @param value - The new value of the model, generally `false` when the alert is closed.\n */\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nwithDefaults(\n defineProps<{\n /**\n * Controls the visibility of the alert component. If `true`, the alert is visible.\n *\n * @default true\n */\n modelValue?: boolean;\n /**\n * The type of alert, which determines the alert's style and icon.\n * Can be one of `'success' | 'info' | 'warn' | 'error'`.\n */\n type?: \"success\" | \"info\" | \"warn\" | \"error\";\n /**\n * An optional label that appears at the top of the alert.\n */\n label?: string;\n /**\n * If `true`, an icon corresponding to the alert type is displayed.\n */\n icon?: boolean;\n /**\n * If `true`, a close button is displayed in the alert, allowing the user to close it.\n */\n closeable?: boolean;\n /**\n * If `true`, the alert text is displayed in a monospace font.\n */\n monospace?: boolean;\n /**\n * If `true`, the alert content will preserve whitespace and line breaks.\n */\n whiteSpacePre?: boolean;\n\n /**\n * Max height (css value like '120px or 30%')\n */\n maxHeight?: string;\n }>(),\n {\n modelValue: true,\n type: undefined,\n label: undefined,\n icon: undefined,\n closeable: undefined,\n monospace: undefined,\n whiteSpacePre: undefined,\n maxHeight: undefined,\n },\n);\n\nconst iconMap = {\n success: \"success\",\n warn: \"warning\",\n info: \"edit\",\n error: \"error\",\n};\n</script>\n\n<template>\n <div\n v-if=\"modelValue\"\n class=\"pl-alert\"\n :style=\"{ maxHeight }\"\n :class=\"[{ monospace, whiteSpacePre }, type ? `pl-alert__${type}` : '']\"\n >\n <div v-if=\"icon && type\" class=\"pl-alert__icon\">\n <div :class=\"`icon-24 icon-${iconMap[type]}`\" />\n </div>\n <div class=\"pl-alert__main\">\n <label v-if=\"label\">{{ label }}</label>\n <div class=\"pl-alert__main__text\"><slot /></div>\n </div>\n <div\n v-if=\"closeable\"\n class=\"pl-alert__close-btn\"\n aria-label=\"Close alert\"\n role=\"button\"\n @click=\"$emit('update:modelValue', false)\"\n />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"PlAlert.js","names":[],"sources":["../../../src/components/PlAlert/PlAlert.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlAlert\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-alert.scss\";\n\nimport PlCloseModalBtn from \"../../utils/PlCloseModalBtn.vue\";\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated, typically when the close button is clicked.\n *\n * @param value - The new value of the model, generally `false` when the alert is closed.\n */\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nwithDefaults(\n defineProps<{\n /**\n * Controls the visibility of the alert component. If `true`, the alert is visible.\n *\n * @default true\n */\n modelValue?: boolean;\n /**\n * The type of alert, which determines the alert's style and icon.\n * Can be one of `'success' | 'info' | 'warn' | 'error'`.\n */\n type?: \"success\" | \"info\" | \"warn\" | \"error\";\n /**\n * An optional label that appears at the top of the alert.\n */\n label?: string;\n /**\n * If `true`, an icon corresponding to the alert type is displayed.\n */\n icon?: boolean;\n /**\n * If `true`, a close button is displayed in the alert, allowing the user to close it.\n */\n closeable?: boolean;\n /**\n * If `true`, the alert text is displayed in a monospace font.\n */\n monospace?: boolean;\n /**\n * If `true`, the alert content will preserve whitespace and line breaks.\n */\n whiteSpacePre?: boolean;\n\n /**\n * Max height (css value like '120px or 30%')\n */\n maxHeight?: string;\n }>(),\n {\n modelValue: true,\n type: undefined,\n label: undefined,\n icon: undefined,\n closeable: undefined,\n monospace: undefined,\n whiteSpacePre: undefined,\n maxHeight: undefined,\n },\n);\n\nconst iconMap = {\n success: \"success\",\n warn: \"warning\",\n info: \"edit\",\n error: \"error\",\n};\n</script>\n\n<template>\n <div\n v-if=\"modelValue\"\n class=\"pl-alert\"\n :style=\"{ maxHeight }\"\n :class=\"[{ monospace, whiteSpacePre }, type ? `pl-alert__${type}` : '']\"\n >\n <div v-if=\"icon && type\" class=\"pl-alert__icon\">\n <div :class=\"`icon-24 icon-${iconMap[type]}`\" />\n </div>\n <div class=\"pl-alert__main\">\n <label v-if=\"label\">{{ label }}</label>\n <div class=\"pl-alert__main__text\"><slot /></div>\n </div>\n <PlCloseModalBtn\n v-if=\"closeable\"\n class=\"pl-alert__close-btn\"\n @click=\"$emit('update:modelValue', false)\"\n />\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"PlAlert.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAlert/PlAlert.vue"],"names":[],"mappings":"AAsGA,OAAO,iBAAiB,CAAC;;IAerB;;;;OAIG;iBACU,OAAO;IACpB;;;OAGG;WACI,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAC5C;;OAEG;YACK,MAAM;IACd;;OAEG;WACI,OAAO;IACd;;OAEG;gBACS,OAAO;IACnB;;OAEG;gBACS,OAAO;IACnB;;OAEG;oBACa,OAAO;IAEvB;;OAEG;gBACS,MAAM;;;;IAnClB;;;;OAIG;iBACU,OAAO;IACpB;;;OAGG;WACI,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAC5C;;OAEG;YACK,MAAM;IACd;;OAEG;WACI,OAAO;IACd;;OAEG;gBACS,OAAO;IACnB;;OAEG;gBACS,OAAO;IACnB;;OAEG;oBACa,OAAO;IAEvB;;OAEG;gBACS,MAAM;;;;WArBV,MAAM;gBATD,OAAO;UAKb,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;UAQrC,OAAO;eAiBF,MAAM;eAbN,OAAO;eAIP,OAAO;mBAIH,OAAO;;qBAyFE,GAAG;;AAnIhC,wBA4KK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlAlert.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlAlert/PlAlert.vue"],"names":[],"mappings":"AAsGA,OAAO,iBAAiB,CAAC;;IAiBrB;;;;OAIG;iBACU,OAAO;IACpB;;;OAGG;WACI,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAC5C;;OAEG;YACK,MAAM;IACd;;OAEG;WACI,OAAO;IACd;;OAEG;gBACS,OAAO;IACnB;;OAEG;gBACS,OAAO;IACnB;;OAEG;oBACa,OAAO;IAEvB;;OAEG;gBACS,MAAM;;;;IAnClB;;;;OAIG;iBACU,OAAO;IACpB;;;OAGG;WACI,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAC5C;;OAEG;YACK,MAAM;IACd;;OAEG;WACI,OAAO;IACd;;OAEG;gBACS,OAAO;IACnB;;OAEG;gBACS,OAAO;IACnB;;OAEG;oBACa,OAAO;IAEvB;;OAEG;gBACS,MAAM;;;;WArBV,MAAM;gBATD,OAAO;UAKb,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;UAQrC,OAAO;eAiBF,MAAM;eAbN,OAAO;eAIP,OAAO;mBAIH,OAAO;;qBAoGE,GAAG;;AA9IhC,wBAwLK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import './pl-alert.css';/* empty css */
2
- import { createCommentVNode as e, createElementBlock as t, createElementVNode as n, defineComponent as r, normalizeClass as i, normalizeStyle as a, openBlock as o, renderSlot as s, toDisplayString as c } from "vue";
3
- var l = {
2
+ import e from "../../utils/PlCloseModalBtn.js";
3
+ import { createBlock as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, normalizeClass as o, normalizeStyle as s, openBlock as c, renderSlot as l, toDisplayString as u } from "vue";
4
+ var d = {
4
5
  key: 0,
5
6
  class: "pl-alert__icon"
6
- }, u = { class: "pl-alert__main" }, d = { key: 0 }, f = { class: "pl-alert__main__text" }, p = /* @__PURE__ */ r({
7
+ }, f = { class: "pl-alert__main" }, p = { key: 0 }, m = { class: "pl-alert__main__text" }, h = /* @__PURE__ */ a({
7
8
  name: "PlAlert",
8
9
  props: {
9
10
  modelValue: {
@@ -31,33 +32,31 @@ var l = {
31
32
  maxHeight: { default: void 0 }
32
33
  },
33
34
  emits: ["update:modelValue"],
34
- setup(r) {
35
- let p = {
35
+ setup(a) {
36
+ let h = {
36
37
  success: "success",
37
38
  warn: "warning",
38
39
  info: "edit",
39
40
  error: "error"
40
41
  };
41
- return (m, h) => r.modelValue ? (o(), t("div", {
42
+ return (g, _) => a.modelValue ? (c(), r("div", {
42
43
  key: 0,
43
- class: i(["pl-alert", [{
44
- monospace: r.monospace,
45
- whiteSpacePre: r.whiteSpacePre
46
- }, r.type ? `pl-alert__${r.type}` : ""]]),
47
- style: a({ maxHeight: r.maxHeight })
44
+ class: o(["pl-alert", [{
45
+ monospace: a.monospace,
46
+ whiteSpacePre: a.whiteSpacePre
47
+ }, a.type ? `pl-alert__${a.type}` : ""]]),
48
+ style: s({ maxHeight: a.maxHeight })
48
49
  }, [
49
- r.icon && r.type ? (o(), t("div", l, [n("div", { class: i(`icon-24 icon-${p[r.type]}`) }, null, 2)])) : e("", !0),
50
- n("div", u, [r.label ? (o(), t("label", d, c(r.label), 1)) : e("", !0), n("div", f, [s(m.$slots, "default")])]),
51
- r.closeable ? (o(), t("div", {
50
+ a.icon && a.type ? (c(), r("div", d, [i("div", { class: o(`icon-24 icon-${h[a.type]}`) }, null, 2)])) : n("", !0),
51
+ i("div", f, [a.label ? (c(), r("label", p, u(a.label), 1)) : n("", !0), i("div", m, [l(g.$slots, "default")])]),
52
+ a.closeable ? (c(), t(e, {
52
53
  key: 1,
53
54
  class: "pl-alert__close-btn",
54
- "aria-label": "Close alert",
55
- role: "button",
56
- onClick: h[0] ||= (e) => m.$emit("update:modelValue", !1)
57
- })) : e("", !0)
58
- ], 6)) : e("", !0);
55
+ onClick: _[0] ||= (e) => g.$emit("update:modelValue", !1)
56
+ })) : n("", !0)
57
+ ], 6)) : n("", !0);
59
58
  }
60
59
  });
61
- export { p as default };
60
+ export { h as default };
62
61
 
63
62
  //# sourceMappingURL=PlAlert.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAlert.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/PlAlert/PlAlert.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlAlert\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-alert.scss\";\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated, typically when the close button is clicked.\n *\n * @param value - The new value of the model, generally `false` when the alert is closed.\n */\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nwithDefaults(\n defineProps<{\n /**\n * Controls the visibility of the alert component. If `true`, the alert is visible.\n *\n * @default true\n */\n modelValue?: boolean;\n /**\n * The type of alert, which determines the alert's style and icon.\n * Can be one of `'success' | 'info' | 'warn' | 'error'`.\n */\n type?: \"success\" | \"info\" | \"warn\" | \"error\";\n /**\n * An optional label that appears at the top of the alert.\n */\n label?: string;\n /**\n * If `true`, an icon corresponding to the alert type is displayed.\n */\n icon?: boolean;\n /**\n * If `true`, a close button is displayed in the alert, allowing the user to close it.\n */\n closeable?: boolean;\n /**\n * If `true`, the alert text is displayed in a monospace font.\n */\n monospace?: boolean;\n /**\n * If `true`, the alert content will preserve whitespace and line breaks.\n */\n whiteSpacePre?: boolean;\n\n /**\n * Max height (css value like '120px or 30%')\n */\n maxHeight?: string;\n }>(),\n {\n modelValue: true,\n type: undefined,\n label: undefined,\n icon: undefined,\n closeable: undefined,\n monospace: undefined,\n whiteSpacePre: undefined,\n maxHeight: undefined,\n },\n);\n\nconst iconMap = {\n success: \"success\",\n warn: \"warning\",\n info: \"edit\",\n error: \"error\",\n};\n</script>\n\n<template>\n <div\n v-if=\"modelValue\"\n class=\"pl-alert\"\n :style=\"{ maxHeight }\"\n :class=\"[{ monospace, whiteSpacePre }, type ? `pl-alert__${type}` : '']\"\n >\n <div v-if=\"icon && type\" class=\"pl-alert__icon\">\n <div :class=\"`icon-24 icon-${iconMap[type]}`\" />\n </div>\n <div class=\"pl-alert__main\">\n <label v-if=\"label\">{{ label }}</label>\n <div class=\"pl-alert__main__text\"><slot /></div>\n </div>\n <div\n v-if=\"closeable\"\n class=\"pl-alert__close-btn\"\n aria-label=\"Close alert\"\n role=\"button\"\n @click=\"$emit('update:modelValue', false)\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;CAEE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmER,IAAM,IAAU;GACd,SAAS;GACT,MAAM;GACN,MAAM;GACN,OAAO;GACR;mBAKS,EAAA,cAAA,GAAA,EADR,EAoBM,OAAA;;GAlBJ,OAAK,EAAA,CAAC,YAAU,CAAA;IAAA,WAEL,EAAA;IAAS,eAAE,EAAA;IAAa,EAAI,EAAA,OAAI,aAAgB,EAAA,SAAI,GAAA,CAAA,CAAA;GAD9D,OAAK,EAAA,EAAA,WAAI,EAAA,WAAS,CAAA;;GAGR,EAAA,QAAQ,EAAA,QAAA,GAAA,EAAnB,EAEM,OAFN,GAEM,CADJ,EAAgD,OAAA,EAA1C,OAAK,EAAA,gBAAkB,EAAQ,EAAA,QAAI,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA;GAE3C,EAGM,OAHN,GAGM,CAFS,EAAA,SAAA,GAAA,EAAb,EAAuC,SAAA,GAAA,EAAhB,EAAA,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAC5B,EAAgD,OAAhD,GAAgD,CAAd,EAAQ,EAAA,QAAA,UAAA,CAAA,CAAA,CAAA,CAAA;GAGpC,EAAA,aAAA,GAAA,EADR,EAME,OAAA;;IAJA,OAAM;IACN,cAAW;IACX,MAAK;IACJ,SAAK,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,qBAAA,GAAA"}
1
+ {"version":3,"file":"PlAlert.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/PlAlert/PlAlert.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlAlert\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-alert.scss\";\n\nimport PlCloseModalBtn from \"../../utils/PlCloseModalBtn.vue\";\n\ndefineEmits<{\n /**\n * Emitted when the model value is updated, typically when the close button is clicked.\n *\n * @param value - The new value of the model, generally `false` when the alert is closed.\n */\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nwithDefaults(\n defineProps<{\n /**\n * Controls the visibility of the alert component. If `true`, the alert is visible.\n *\n * @default true\n */\n modelValue?: boolean;\n /**\n * The type of alert, which determines the alert's style and icon.\n * Can be one of `'success' | 'info' | 'warn' | 'error'`.\n */\n type?: \"success\" | \"info\" | \"warn\" | \"error\";\n /**\n * An optional label that appears at the top of the alert.\n */\n label?: string;\n /**\n * If `true`, an icon corresponding to the alert type is displayed.\n */\n icon?: boolean;\n /**\n * If `true`, a close button is displayed in the alert, allowing the user to close it.\n */\n closeable?: boolean;\n /**\n * If `true`, the alert text is displayed in a monospace font.\n */\n monospace?: boolean;\n /**\n * If `true`, the alert content will preserve whitespace and line breaks.\n */\n whiteSpacePre?: boolean;\n\n /**\n * Max height (css value like '120px or 30%')\n */\n maxHeight?: string;\n }>(),\n {\n modelValue: true,\n type: undefined,\n label: undefined,\n icon: undefined,\n closeable: undefined,\n monospace: undefined,\n whiteSpacePre: undefined,\n maxHeight: undefined,\n },\n);\n\nconst iconMap = {\n success: \"success\",\n warn: \"warning\",\n info: \"edit\",\n error: \"error\",\n};\n</script>\n\n<template>\n <div\n v-if=\"modelValue\"\n class=\"pl-alert\"\n :style=\"{ maxHeight }\"\n :class=\"[{ monospace, whiteSpacePre }, type ? `pl-alert__${type}` : '']\"\n >\n <div v-if=\"icon && type\" class=\"pl-alert__icon\">\n <div :class=\"`icon-24 icon-${iconMap[type]}`\" />\n </div>\n <div class=\"pl-alert__main\">\n <label v-if=\"label\">{{ label }}</label>\n <div class=\"pl-alert__main__text\"><slot /></div>\n </div>\n <PlCloseModalBtn\n v-if=\"closeable\"\n class=\"pl-alert__close-btn\"\n @click=\"$emit('update:modelValue', false)\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;CAEE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqER,IAAM,IAAU;GACd,SAAS;GACT,MAAM;GACN,MAAM;GACN,OAAO;GACR;mBAKS,EAAA,cAAA,GAAA,EADR,EAkBM,OAAA;;GAhBJ,OAAK,EAAA,CAAC,YAAU,CAAA;IAAA,WAEL,EAAA;IAAS,eAAE,EAAA;IAAa,EAAI,EAAA,OAAI,aAAgB,EAAA,SAAI,GAAA,CAAA,CAAA;GAD9D,OAAK,EAAA,EAAA,WAAI,EAAA,WAAS,CAAA;;GAGR,EAAA,QAAQ,EAAA,QAAA,GAAA,EAAnB,EAEM,OAFN,GAEM,CADJ,EAAgD,OAAA,EAA1C,OAAK,EAAA,gBAAkB,EAAQ,EAAA,QAAI,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,IAAA,EAAA,IAAA,GAAA;GAE3C,EAGM,OAHN,GAGM,CAFS,EAAA,SAAA,GAAA,EAAb,EAAuC,SAAA,GAAA,EAAhB,EAAA,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAC5B,EAAgD,OAAhD,GAAgD,CAAd,EAAQ,EAAA,QAAA,UAAA,CAAA,CAAA,CAAA,CAAA;GAGpC,EAAA,aAAA,GAAA,EADR,EAIE,GAAA;;IAFA,OAAM;IACL,SAAK,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,qBAAA,GAAA"}
@@ -1 +1 @@
1
- .pl-alert{--text-font-family:var(--font-family-base);--text-white-space:normal;--indent:24px;border:1px solid var(--border-color-default);color:var(--txt-01);border-radius:6px;flex-wrap:nowrap;gap:12px;padding:12px;display:flex;position:relative}.pl-alert.monospace{--text-font-family:var(--font-family-monospace)}.pl-alert.whiteSpacePre{--text-white-space:pre}.pl-alert__error{background:var(--notification-error)}.pl-alert__warn{background:var(--notification-warning)}.pl-alert__success{background:var(--notification-success)}.pl-alert__info{background:var(--notification-neutral)}.pl-alert__icon{width:24px}.pl-alert__main{flex-direction:column;flex:1;gap:6px;width:100%;min-height:24px;display:flex;overflow:hidden}.pl-alert__main label{letter-spacing:-.2px;font-size:20px;font-weight:500;line-height:24px}.pl-alert__main__text{font-size:14px;font-weight:500;line-height:20px;font-family:var(--text-font-family);white-space:var(--text-white-space);--thumb-color:var(--ic-02);flex:1;max-width:100%;overflow-y:auto}.pl-alert__main__text::-webkit-scrollbar{width:var(--scrollbar-width,6px);background-color:#0000;height:5px;display:block}.pl-alert__main__text::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-alert__main__text::-webkit-scrollbar-thumb:hover{--thumb-color:var(--border-color-focus)}.pl-alert__close-btn{cursor:pointer;background-color:#d3d7e0;width:24px;height:24px;transition:all .1s ease-in-out;position:absolute;top:10px;right:12px;mask-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.99954%2018L11.9995%2012M11.9995%2012L17.9995%206M11.9995%2012L5.99954%206M11.9995%2012L17.9995%2018'%20stroke='%23110529'%20stroke-width='1.5'/%3e%3c/svg%3e");mask-position:50%;mask-size:24px;mask-repeat:no-repeat}.pl-alert__close-btn:hover{background-color:var(--main-dark-color)}
1
+ .pl-alert{--text-font-family:var(--font-family-base);--text-white-space:normal;--indent:24px;border:1px solid var(--border-color-default);color:var(--txt-01);border-radius:6px;flex-wrap:nowrap;gap:12px;padding:12px;display:flex;position:relative}.pl-alert.monospace{--text-font-family:var(--font-family-monospace)}.pl-alert.whiteSpacePre{--text-white-space:pre}.pl-alert__error{background:var(--notification-error)}.pl-alert__warn{background:var(--notification-warning)}.pl-alert__success{background:var(--notification-success)}.pl-alert__info{background:var(--notification-neutral)}.pl-alert__icon{width:24px}.pl-alert__main{flex-direction:column;flex:1;gap:6px;width:100%;min-height:24px;display:flex;overflow:hidden}.pl-alert__main label{letter-spacing:-.2px;font-size:20px;font-weight:500;line-height:24px}.pl-alert__main__text{font-size:14px;font-weight:500;line-height:20px;font-family:var(--text-font-family);white-space:var(--text-white-space);--thumb-color:var(--ic-02);flex:1;max-width:100%;overflow-y:auto}.pl-alert__main__text::-webkit-scrollbar{width:var(--scrollbar-width,6px);background-color:#0000;height:5px;display:block}.pl-alert__main__text::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-alert__main__text::-webkit-scrollbar-thumb:hover{--thumb-color:var(--border-color-focus)}.pl-alert__close-btn{position:absolute;top:10px;right:12px}
@@ -1,6 +1,6 @@
1
1
  import { useEventListener as e } from "../../composition/useEventListener.js";
2
- import './pl-dialog-modal.css';/* empty css */
3
2
  import t from "../../utils/PlCloseModalBtn.js";
3
+ import './pl-dialog-modal.css';/* empty css */
4
4
  import { Teleport as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createVNode as l, defineComponent as u, mergeProps as d, normalizeClass as f, openBlock as p, ref as m, renderSlot as h, useSlots as g, withCtx as _, withModifiers as v } from "vue";
5
5
  var y = {
6
6
  key: 1,
@@ -1 +1 @@
1
- {"version":3,"file":"PlPureSlideModal.js","names":[],"sources":["../../../src/components/PlSlideModal/PlPureSlideModal.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlPureSlideModal\",\n inheritAttrs: false,\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-slide-modal.scss\";\nimport { ref, useAttrs } from \"vue\";\nimport TransitionSlidePanel from \"../TransitionSlidePanel.vue\";\nimport { useClickOutside, useEventListener } from \"../../index\";\nimport type { Props } from \"./props\";\nimport { defaultProps } from \"./props\";\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nconst modal = ref();\nconst attrs = useAttrs();\nconst props = withDefaults(defineProps<Props>(), defaultProps);\n\nuseClickOutside(modal, () => {\n if (props.modelValue && props.closeOnOutsideClick) {\n emit(\"update:modelValue\", false);\n }\n});\n\nuseEventListener(document, \"keydown\", (evt: KeyboardEvent) => {\n if (evt.key === \"Escape\") {\n emit(\"update:modelValue\", false);\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <TransitionSlidePanel>\n <div\n v-if=\"props.modelValue\"\n ref=\"modal\"\n class=\"pl-slide-modal\"\n :style=\"{ width: props.width }\"\n v-bind=\"attrs\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n >\n <div class=\"close-dialog-btn\" @click=\"emit('update:modelValue', false)\" />\n <slot />\n </div>\n </TransitionSlidePanel>\n <div\n v-if=\"props.modelValue && props.shadow\"\n class=\"pl-slide-modal__shadow\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n />\n </Teleport>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"PlPureSlideModal.js","names":[],"sources":["../../../src/components/PlSlideModal/PlPureSlideModal.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlPureSlideModal\",\n inheritAttrs: false,\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-slide-modal.scss\";\n\nimport { ref, useAttrs } from \"vue\";\nimport { useClickOutside } from \"../../composition/useClickOutside\";\nimport { useEventListener } from \"../../composition/useEventListener\";\nimport PlCloseModalBtn from \"../../utils/PlCloseModalBtn.vue\";\nimport TransitionSlidePanel from \"../TransitionSlidePanel.vue\";\nimport type { Props } from \"./props\";\nimport { defaultProps } from \"./props\";\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nconst modal = ref();\nconst attrs = useAttrs();\nconst props = withDefaults(defineProps<Props>(), defaultProps);\n\nuseClickOutside(modal, () => {\n if (props.modelValue && props.closeOnOutsideClick) {\n emit(\"update:modelValue\", false);\n }\n});\n\nuseEventListener(document, \"keydown\", (evt: KeyboardEvent) => {\n if (evt.key === \"Escape\") {\n emit(\"update:modelValue\", false);\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <TransitionSlidePanel>\n <div\n v-if=\"props.modelValue\"\n ref=\"modal\"\n class=\"pl-slide-modal\"\n :style=\"{ width: props.width }\"\n v-bind=\"attrs\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n >\n <PlCloseModalBtn class=\"close-dialog-btn\" @click=\"emit('update:modelValue', false)\" />\n <slot />\n </div>\n </TransitionSlidePanel>\n <div\n v-if=\"props.modelValue && props.shadow\"\n class=\"pl-slide-modal__shadow\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n />\n </Teleport>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"PlPureSlideModal.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlSlideModal/PlPureSlideModal.vue"],"names":[],"mappings":"AA4DA,OAAO,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;;;;;;;;;;;;;qBA2FP,GAAG;;AAvFjC,wBAuIK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlPureSlideModal.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PlSlideModal/PlPureSlideModal.vue"],"names":[],"mappings":"AA+DA,OAAO,uBAAuB,CAAC;AAO/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;;;;;;;;;;;;;qBAwGP,GAAG;;AApGjC,wBAqJK;AAcL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import { useEventListener as e } from "../../composition/useEventListener.js";
2
2
  import { useClickOutside as t } from "../../composition/useClickOutside.js";
3
+ import n from "../../utils/PlCloseModalBtn.js";
3
4
  import './pl-slide-modal.css';/* empty css */
4
- import n from "../TransitionSlidePanel.js";
5
- import { defaultProps as r } from "./props.js";
6
- import "../../index.js";
7
- import { Teleport as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createVNode as l, defineComponent as u, mergeDefaults as d, mergeProps as f, openBlock as p, ref as m, renderSlot as h, unref as g, useAttrs as _, withCtx as v, withKeys as y } from "vue";
5
+ import r from "../TransitionSlidePanel.js";
6
+ import { defaultProps as i } from "./props.js";
7
+ import { Teleport as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createVNode as l, defineComponent as u, mergeDefaults as d, mergeProps as f, openBlock as p, ref as m, renderSlot as h, unref as g, useAttrs as _, withCtx as v, withKeys as y } from "vue";
8
8
  var b = /* @__PURE__ */ u({
9
9
  name: "PlPureSlideModal",
10
10
  inheritAttrs: !1,
@@ -13,31 +13,31 @@ var b = /* @__PURE__ */ u({
13
13
  width: {},
14
14
  shadow: { type: Boolean },
15
15
  closeOnOutsideClick: { type: Boolean }
16
- }, r),
16
+ }, i),
17
17
  emits: ["update:modelValue"],
18
- setup(r, { emit: u }) {
19
- let d = u, b = m(), x = _(), S = r;
18
+ setup(i, { emit: u }) {
19
+ let d = u, b = m(), x = _(), S = i;
20
20
  return t(b, () => {
21
21
  S.modelValue && S.closeOnOutsideClick && d("update:modelValue", !1);
22
22
  }), e(document, "keydown", (e) => {
23
23
  e.key === "Escape" && d("update:modelValue", !1);
24
- }), (e, t) => (p(), a(i, { to: "body" }, [l(n, null, {
25
- default: v(() => [S.modelValue ? (p(), s("div", f({
24
+ }), (e, t) => (p(), o(a, { to: "body" }, [l(r, null, {
25
+ default: v(() => [S.modelValue ? (p(), c("div", f({
26
26
  key: 0,
27
27
  ref_key: "modal",
28
28
  ref: b,
29
29
  class: "pl-slide-modal",
30
30
  style: { width: S.width }
31
- }, g(x), { onKeyup: t[1] ||= y((e) => d("update:modelValue", !1), ["esc"]) }), [c("div", {
31
+ }, g(x), { onKeyup: t[1] ||= y((e) => d("update:modelValue", !1), ["esc"]) }), [l(n, {
32
32
  class: "close-dialog-btn",
33
33
  onClick: t[0] ||= (e) => d("update:modelValue", !1)
34
- }), h(e.$slots, "default")], 16)) : o("", !0)]),
34
+ }), h(e.$slots, "default")], 16)) : s("", !0)]),
35
35
  _: 3
36
- }), S.modelValue && S.shadow ? (p(), s("div", {
36
+ }), S.modelValue && S.shadow ? (p(), c("div", {
37
37
  key: 0,
38
38
  class: "pl-slide-modal__shadow",
39
39
  onKeyup: t[2] ||= y((e) => d("update:modelValue", !1), ["esc"])
40
- }, null, 32)) : o("", !0)]));
40
+ }, null, 32)) : s("", !0)]));
41
41
  }
42
42
  });
43
43
  export { b as default };
@@ -1 +1 @@
1
- {"version":3,"file":"PlPureSlideModal.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlSlideModal/PlPureSlideModal.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlPureSlideModal\",\n inheritAttrs: false,\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-slide-modal.scss\";\nimport { ref, useAttrs } from \"vue\";\nimport TransitionSlidePanel from \"../TransitionSlidePanel.vue\";\nimport { useClickOutside, useEventListener } from \"../../index\";\nimport type { Props } from \"./props\";\nimport { defaultProps } from \"./props\";\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nconst modal = ref();\nconst attrs = useAttrs();\nconst props = withDefaults(defineProps<Props>(), defaultProps);\n\nuseClickOutside(modal, () => {\n if (props.modelValue && props.closeOnOutsideClick) {\n emit(\"update:modelValue\", false);\n }\n});\n\nuseEventListener(document, \"keydown\", (evt: KeyboardEvent) => {\n if (evt.key === \"Escape\") {\n emit(\"update:modelValue\", false);\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <TransitionSlidePanel>\n <div\n v-if=\"props.modelValue\"\n ref=\"modal\"\n class=\"pl-slide-modal\"\n :style=\"{ width: props.width }\"\n v-bind=\"attrs\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n >\n <div class=\"close-dialog-btn\" @click=\"emit('update:modelValue', false)\" />\n <slot />\n </div>\n </TransitionSlidePanel>\n <div\n v-if=\"props.modelValue && props.shadow\"\n class=\"pl-slide-modal__shadow\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n />\n </Teleport>\n</template>\n"],"mappings":";;;;;;;;CAEE,MAAM;CACN,cAAc;;;;;;;;;EAYhB,IAAM,IAAO,GAIP,IAAQ,GAAK,EACb,IAAQ,GAAU,EAClB,IAAQ;SAEd,EAAgB,SAAa;AAC3B,GAAI,EAAM,cAAc,EAAM,uBAC5B,EAAK,qBAAqB,GAAM;IAElC,EAEF,EAAiB,UAAU,YAAY,MAAuB;AAC5D,GAAI,EAAI,QAAQ,YACd,EAAK,qBAAqB,GAAM;IAElC,kBAIA,EAmBW,GAAA,EAnBD,IAAG,QAAM,EAAA,CACjB,EAYuB,GAAA,MAAA;oBADf,CATE,EAAM,cAAA,GAAA,EADd,EAUM,OAVN,EAUM;;aARA;IAAJ,KAAI;IACJ,OAAM;IACL,OAAK,EAAA,OAAW,EAAM,OAAK;MACpB,EAAA,EAAK,EAAA,EACZ,SAAK,AAAA,EAAA,OAAA,GAAA,MAAM,EAAI,qBAAA,GAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAEhB,EAA0E,OAAA;IAArE,OAAM;IAAoB,SAAK,AAAA,EAAA,QAAA,MAAE,EAAI,qBAAA,GAAA;OAC1C,EAAQ,EAAA,QAAA,UAAA,CAAA,EAAA,GAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA;;MAIJ,EAAM,cAAc,EAAM,UAAA,GAAA,EADlC,EAIE,OAAA;;GAFA,OAAM;GACL,SAAK,AAAA,EAAA,OAAA,GAAA,MAAM,EAAI,qBAAA,GAAA,EAAA,CAAA,MAAA,CAAA"}
1
+ {"version":3,"file":"PlPureSlideModal.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlSlideModal/PlPureSlideModal.vue"],"sourcesContent":["<script lang=\"ts\">\nexport default {\n name: \"PlPureSlideModal\",\n inheritAttrs: false,\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-slide-modal.scss\";\n\nimport { ref, useAttrs } from \"vue\";\nimport { useClickOutside } from \"../../composition/useClickOutside\";\nimport { useEventListener } from \"../../composition/useEventListener\";\nimport PlCloseModalBtn from \"../../utils/PlCloseModalBtn.vue\";\nimport TransitionSlidePanel from \"../TransitionSlidePanel.vue\";\nimport type { Props } from \"./props\";\nimport { defaultProps } from \"./props\";\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: boolean): void;\n}>();\n\nconst modal = ref();\nconst attrs = useAttrs();\nconst props = withDefaults(defineProps<Props>(), defaultProps);\n\nuseClickOutside(modal, () => {\n if (props.modelValue && props.closeOnOutsideClick) {\n emit(\"update:modelValue\", false);\n }\n});\n\nuseEventListener(document, \"keydown\", (evt: KeyboardEvent) => {\n if (evt.key === \"Escape\") {\n emit(\"update:modelValue\", false);\n }\n});\n</script>\n\n<template>\n <Teleport to=\"body\">\n <TransitionSlidePanel>\n <div\n v-if=\"props.modelValue\"\n ref=\"modal\"\n class=\"pl-slide-modal\"\n :style=\"{ width: props.width }\"\n v-bind=\"attrs\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n >\n <PlCloseModalBtn class=\"close-dialog-btn\" @click=\"emit('update:modelValue', false)\" />\n <slot />\n </div>\n </TransitionSlidePanel>\n <div\n v-if=\"props.modelValue && props.shadow\"\n class=\"pl-slide-modal__shadow\"\n @keyup.esc=\"emit('update:modelValue', false)\"\n />\n </Teleport>\n</template>\n"],"mappings":";;;;;;;;CAEE,MAAM;CACN,cAAc;;;;;;;;;EAehB,IAAM,IAAO,GAIP,IAAQ,GAAK,EACb,IAAQ,GAAU,EAClB,IAAQ;SAEd,EAAgB,SAAa;AAC3B,GAAI,EAAM,cAAc,EAAM,uBAC5B,EAAK,qBAAqB,GAAM;IAElC,EAEF,EAAiB,UAAU,YAAY,MAAuB;AAC5D,GAAI,EAAI,QAAQ,YACd,EAAK,qBAAqB,GAAM;IAElC,kBAIA,EAmBW,GAAA,EAnBD,IAAG,QAAM,EAAA,CACjB,EAYuB,GAAA,MAAA;oBADf,CATE,EAAM,cAAA,GAAA,EADd,EAUM,OAVN,EAUM;;aARA;IAAJ,KAAI;IACJ,OAAM;IACL,OAAK,EAAA,OAAW,EAAM,OAAK;MACpB,EAAA,EAAK,EAAA,EACZ,SAAK,AAAA,EAAA,OAAA,GAAA,MAAM,EAAI,qBAAA,GAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAEhB,EAAsF,GAAA;IAArE,OAAM;IAAoB,SAAK,AAAA,EAAA,QAAA,MAAE,EAAI,qBAAA,GAAA;OACtD,EAAQ,EAAA,QAAA,UAAA,CAAA,EAAA,GAAA,IAAA,EAAA,IAAA,GAAA,CAAA,CAAA;;MAIJ,EAAM,cAAc,EAAM,UAAA,GAAA,EADlC,EAIE,OAAA;;GAFA,OAAM;GACL,SAAK,AAAA,EAAA,OAAA,GAAA,MAAM,EAAI,qBAAA,GAAA,EAAA,CAAA,MAAA,CAAA"}
@@ -1 +1 @@
1
- .pl-slide-modal{--padding-top:0;--padding-bottom:0;top:var(--title-bar-height);z-index:var(--z-slide-dialog);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);will-change:transform;border-left:1px solid var(--div-grey);background-color:#fff;flex-direction:column;width:368px;min-width:368px;max-width:100%;display:flex;position:absolute;bottom:0;right:0;box-shadow:0 8px 16px -4px #0f244d29,0 12px 32px -4px #0f244d29}.pl-slide-modal .close-dialog-btn{z-index:1;cursor:pointer;background-color:#d3d7e0;width:24px;height:24px;position:absolute;top:12px;right:12px;mask-image:url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M5.99954%2018L11.9995%2012M11.9995%2012L17.9995%206M11.9995%2012L5.99954%206M11.9995%2012L17.9995%2018'%20stroke='%23110529'%20stroke-width='1.5'/%3e%3c/svg%3e");mask-position:50%;mask-size:24px;mask-repeat:no-repeat}.pl-slide-modal .close-dialog-btn:hover{background-color:var(--main-dark-color)}.pl-slide-modal.has-title{--padding-top:0}.pl-slide-modal.has-actions{--padding-bottom:0}.pl-slide-modal__title{font-family:var(--font-family-base);letter-spacing:-.56px;align-items:center;width:100%;padding:24px;font-size:28px;font-style:normal;font-weight:500;line-height:40px;display:flex;overflow:hidden}.pl-slide-modal__title-content{-webkit-line-clamp:2;text-overflow:ellipsis;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.pl-slide-modal__actions{align-items:center;gap:6px;min-height:88px;padding:0 24px;display:flex}.pl-slide-modal__actions button{min-width:160px}.pl-slide-modal__content{padding:16px calc(24px - var(--scrollbar-width)) 16px 24px;--thumb-color:var(--ic-02);scrollbar-gutter:stable;flex-direction:column;flex:1;gap:24px;margin:0;display:flex;overflow-y:auto}.pl-slide-modal__content::-webkit-scrollbar{width:var(--scrollbar-width,6px);background-color:#0000;height:5px;display:block}.pl-slide-modal__content::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-slide-modal__content::-webkit-scrollbar-thumb:hover{--thumb-color:var(--border-color-focus)}.pl-slide-modal__shadow{z-index:var(--z-slide-shadow);top:var(--title-bar-height);background-color:#000000a3;position:absolute;bottom:0;left:0;right:0}
1
+ .pl-slide-modal{--padding-top:0;--padding-bottom:0;top:var(--title-bar-height);z-index:var(--z-slide-dialog);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);will-change:transform;border-left:1px solid var(--div-grey);background-color:#fff;flex-direction:column;width:368px;min-width:368px;max-width:100%;display:flex;position:absolute;bottom:0;right:0;box-shadow:0 8px 16px -4px #0f244d29,0 12px 32px -4px #0f244d29}.pl-slide-modal .close-dialog-btn{position:absolute;top:12px;right:12px}.pl-slide-modal.has-title{--padding-top:0}.pl-slide-modal.has-actions{--padding-bottom:0}.pl-slide-modal__title{font-family:var(--font-family-base);letter-spacing:-.56px;align-items:center;width:100%;padding:24px;font-size:28px;font-style:normal;font-weight:500;line-height:40px;display:flex;overflow:hidden}.pl-slide-modal__title-content{-webkit-line-clamp:2;text-overflow:ellipsis;word-break:break-word;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.pl-slide-modal__actions{align-items:center;gap:6px;min-height:88px;padding:0 24px;display:flex}.pl-slide-modal__actions button{min-width:160px}.pl-slide-modal__content{padding:16px calc(24px - var(--scrollbar-width)) 16px 24px;--thumb-color:var(--ic-02);scrollbar-gutter:stable;flex-direction:column;flex:1;gap:24px;margin:0;display:flex;overflow-y:auto}.pl-slide-modal__content::-webkit-scrollbar{width:var(--scrollbar-width,6px);background-color:#0000;height:5px;display:block}.pl-slide-modal__content::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-slide-modal__content::-webkit-scrollbar-thumb:hover{--thumb-color:var(--border-color-focus)}.pl-slide-modal__shadow{z-index:var(--z-slide-shadow);top:var(--title-bar-height);background-color:#000000a3;position:absolute;bottom:0;left:0;right:0}
@@ -1 +1 @@
1
- {"version":3,"file":"PlTextField.js","names":[],"sources":["../../../src/components/PlTextField/PlTextField.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for one-line string data manipulation\n */\nexport default {\n name: \"PlTextField\",\n};\n</script>\n\n<script lang=\"ts\" setup generic=\"M, E = string, C = E\">\nimport type { Equal } from \"@milaboratories/helpers\";\nimport { computed, reactive, ref, useSlots } from \"vue\";\nimport SvgRequired from \"../../assets/images/required.svg?raw\";\nimport { getErrorMessage } from \"../../helpers/error.ts\";\nimport DoubleContour from \"../../utils/DoubleContour.vue\";\nimport { useLabelNotch } from \"../../utils/useLabelNotch\";\nimport { useValidation } from \"../../utils/useValidation\";\nimport { PlIcon16 } from \"../PlIcon16\";\nimport { PlIcon24 } from \"../PlIcon24\";\nimport { PlSvg } from \"../PlSvg\";\nimport { PlTooltip } from \"../PlTooltip\";\nimport \"./pl-text-field.scss\";\n\nconst slots = useSlots();\n\ntype Model = Equal<M, E | C> extends true ? M : never; // basically in === out\n\n/**\n * The current value of the input field.\n */\nconst model = defineModel<Model>({\n required: true,\n});\n\nconst props = defineProps<{\n /**\n * The label to display above the input field.\n */\n label?: string;\n /**\n * If `true`, a clear icon will appear in the input field to clear the value (set it to empty string).\n * Or you can pass a callback that returns a custom \"empty\" value (null | undefined | string)\n */\n clearable?: boolean | (() => C);\n /**\n * An optional callback to parse and/or cast the value, the return type overrides the model type.\n * The callback must throw an exception if the value is invalid\n */\n parse?: (v: string) => E;\n /**\n * If `true`, the input field is marked as required.\n */\n required?: boolean;\n /**\n * An error message to display below the input field.\n */\n error?: unknown;\n /**\n * A helper text to display below the input field when there are no errors.\n */\n helper?: string;\n /**\n * A placeholder text to display inside the input field when it is empty.\n */\n placeholder?: string;\n /**\n * If `true`, the input field is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * If `true`, the input field has a dashed border.\n */\n dashed?: boolean;\n /**\n * A prefix text to display inside the input field before the value.\n */\n prefix?: string;\n /**\n * An array of validation rules to apply to the input field. Each rule is a function that takes the current value and returns `true` if valid or an error message if invalid.\n */\n rules?: ((v: string) => boolean | string)[];\n /**\n * The string specifies whether the field should be a password or not, value could be \"password\" or undefined.\n */\n type?: \"password\";\n /**\n * Makes some of corners not rounded\n * */\n groupPosition?:\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"middle\";\n}>();\n\nconst rootRef = ref<HTMLInputElement | undefined>(undefined);\n\nconst inputRef = ref<HTMLInputElement | undefined>();\n\nconst showPassword = ref(false);\n\nconst data = reactive({\n cached: undefined as { error: string; value: string } | undefined,\n});\n\nconst valueRef = computed<string>({\n get() {\n if (data.cached) {\n return data.cached.value;\n }\n return model.value === undefined || model.value === null ? \"\" : String(model.value);\n },\n set(value) {\n data.cached = undefined;\n\n if (props.parse) {\n try {\n model.value = props.parse(value) as Model;\n } catch (err) {\n data.cached = {\n error: err instanceof Error ? err.message : String(err),\n value,\n };\n }\n } else {\n model.value = value as Model;\n }\n },\n});\n\nconst fieldType = computed(() => {\n if (props.type && props.type === \"password\") {\n return showPassword.value ? \"text\" : props.type;\n } else {\n return \"text\";\n }\n});\n\nconst passwordIcon = computed(() => (showPassword.value ? \"view-show\" : \"view-hide\"));\n\nconst clear = () => {\n if (props.clearable) {\n data.cached = undefined;\n model.value = props.clearable === true ? (\"\" as Model) : (props.clearable() as Model);\n }\n};\n\nconst validationData = useValidation(valueRef, props.rules || []);\n\nconst isEmpty = computed(() => {\n if (props.clearable) {\n return props.clearable === true ? model.value === \"\" : model.value === props.clearable();\n }\n\n return model.value === \"\";\n});\n\nconst nonEmpty = computed(() => !isEmpty.value);\n\nconst displayErrors = computed(() => {\n const errors: string[] = [];\n const propsError = getErrorMessage(props.error);\n if (propsError) {\n errors.push(propsError);\n }\n if (data.cached) {\n errors.push(data.cached.error);\n }\n if (!validationData.value.isValid) {\n errors.push(...validationData.value.errors);\n }\n return errors;\n});\n\nconst hasErrors = computed(() => displayErrors.value.length > 0);\n\nconst canShowClearable = computed(\n () => props.clearable && nonEmpty.value && props.type !== \"password\" && !props.disabled,\n);\n\nconst togglePasswordVisibility = () => (showPassword.value = !showPassword.value);\n\nconst onFocusOut = () => {\n data.cached = undefined;\n};\n\nconst setFocusOnInput = () => inputRef.value?.focus();\n\nuseLabelNotch(rootRef);\n</script>\n\n<template>\n <div class=\"pl-text-field__envelope\">\n <div\n ref=\"rootRef\"\n class=\"pl-text-field\"\n :class=\"{\n error: hasErrors,\n disabled,\n dashed,\n nonEmpty,\n }\"\n >\n <label v-if=\"label\" ref=\"label\">\n <PlSvg v-if=\"required\" :uri=\"SvgRequired\" />\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 <div v-if=\"prefix\" class=\"pl-text-field__prefix\">\n {{ prefix }}\n </div>\n <input\n ref=\"inputRef\"\n v-model=\"valueRef\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder || '...'\"\n :type=\"fieldType\"\n spellcheck=\"false\"\n @focusout=\"onFocusOut\"\n />\n <div class=\"pl-text-field__append\" @click=\"setFocusOnInput\">\n <PlIcon16\n v-if=\"canShowClearable\"\n class=\"pl-text-field__clearable\"\n name=\"delete-clear\"\n @click.stop=\"clear\"\n />\n <PlIcon24\n v-if=\"type === 'password'\"\n :name=\"passwordIcon\"\n style=\"cursor: pointer\"\n @click.stop=\"togglePasswordVisibility\"\n />\n <slot name=\"append\" />\n </div>\n <DoubleContour class=\"pl-text-field__contour\" :group-position=\"groupPosition\" />\n </div>\n <div v-if=\"hasErrors\" class=\"pl-text-field__error\">\n {{ displayErrors.join(\" \") }}\n </div>\n <div v-else-if=\"helper\" class=\"pl-text-field__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"PlTextField.js","names":[],"sources":["../../../src/components/PlTextField/PlTextField.vue"],"sourcesContent":["<script lang=\"ts\">\n/**\n * Component for one-line string data manipulation\n */\nexport default {\n name: \"PlTextField\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, useSlots } from \"vue\";\nimport SvgRequired from \"../../assets/images/required.svg?raw\";\nimport { getErrorMessage } from \"../../helpers/error.ts\";\nimport DoubleContour from \"../../utils/DoubleContour.vue\";\nimport { useLabelNotch } from \"../../utils/useLabelNotch\";\nimport { useValidation } from \"../../utils/useValidation\";\nimport { PlIcon16 } from \"../PlIcon16\";\nimport { PlIcon24 } from \"../PlIcon24\";\nimport { PlSvg } from \"../PlSvg\";\nimport { PlTooltip } from \"../PlTooltip\";\nimport \"./pl-text-field.scss\";\n\nconst slots = useSlots();\n\n/**\n * The current value of the input field.\n */\nconst model = defineModel<string>({\n default: \"\",\n});\n\nconst props = defineProps<{\n /**\n * The label to display above the input field.\n */\n label?: string;\n /**\n * If `true`, a clear icon will appear in the input field to clear the value (set it to empty string).\n */\n clearable?: boolean;\n /**\n * If `true`, the input field is marked as required.\n */\n required?: boolean;\n /**\n * An error message to display below the input field.\n */\n error?: unknown;\n /**\n * A helper text to display below the input field when there are no errors.\n */\n helper?: string;\n /**\n * A placeholder text to display inside the input field when it is empty.\n */\n placeholder?: string;\n /**\n * If `true`, the input field is disabled and cannot be interacted with.\n */\n disabled?: boolean;\n /**\n * If `true`, the input field has a dashed border.\n */\n dashed?: boolean;\n /**\n * A prefix text to display inside the input field before the value.\n */\n prefix?: string;\n /**\n * An array of validation rules to apply to the input field. Each rule is a function that takes the current value and returns `true` if valid or an error message if invalid.\n */\n rules?: ((v: string) => boolean | string)[];\n /**\n * The string specifies whether the field should be a password or not, value could be \"password\" or undefined.\n */\n type?: \"password\";\n /**\n * Makes some of corners not rounded\n * */\n groupPosition?:\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"middle\";\n}>();\n\nconst rootRef = ref<HTMLInputElement | undefined>(undefined);\n\nconst inputRef = ref<HTMLInputElement | undefined>();\n\nconst showPassword = ref(false);\n\nconst fieldType = computed(() => {\n if (props.type && props.type === \"password\") {\n return showPassword.value ? \"text\" : props.type;\n } else {\n return \"text\";\n }\n});\n\nconst passwordIcon = computed(() => (showPassword.value ? \"view-show\" : \"view-hide\"));\n\nconst clear = () => {\n if (props.clearable) {\n model.value = \"\";\n }\n};\n\nconst validationData = useValidation(model, props.rules || []);\n\nconst isEmpty = computed(() => model.value === \"\");\n\nconst nonEmpty = computed(() => !isEmpty.value);\n\nconst displayErrors = computed(() => {\n const errors: string[] = [];\n const propsError = getErrorMessage(props.error);\n if (propsError) {\n errors.push(propsError);\n }\n if (!validationData.value.isValid) {\n errors.push(...validationData.value.errors);\n }\n return errors;\n});\n\nconst hasErrors = computed(() => displayErrors.value.length > 0);\n\nconst canShowClearable = computed(\n () => props.clearable && nonEmpty.value && props.type !== \"password\" && !props.disabled,\n);\n\nconst togglePasswordVisibility = () => (showPassword.value = !showPassword.value);\n\nconst setFocusOnInput = () => inputRef.value?.focus();\n\nuseLabelNotch(rootRef);\n</script>\n\n<template>\n <div class=\"pl-text-field__envelope\">\n <div\n ref=\"rootRef\"\n class=\"pl-text-field\"\n :class=\"{\n error: hasErrors,\n disabled,\n dashed,\n nonEmpty,\n }\"\n >\n <label v-if=\"label\" ref=\"label\">\n <PlSvg v-if=\"required\" :uri=\"SvgRequired\" />\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 <div v-if=\"prefix\" class=\"pl-text-field__prefix\">\n {{ prefix }}\n </div>\n <input\n ref=\"inputRef\"\n v-model=\"model\"\n :disabled=\"disabled\"\n :placeholder=\"placeholder || '...'\"\n :type=\"fieldType\"\n spellcheck=\"false\"\n />\n <div class=\"pl-text-field__append\" @click=\"setFocusOnInput\">\n <PlIcon16\n v-if=\"canShowClearable\"\n class=\"pl-text-field__clearable\"\n name=\"delete-clear\"\n @click.stop=\"clear\"\n />\n <PlIcon24\n v-if=\"type === 'password'\"\n :name=\"passwordIcon\"\n style=\"cursor: pointer\"\n @click.stop=\"togglePasswordVisibility\"\n />\n <slot name=\"append\" />\n </div>\n <DoubleContour class=\"pl-text-field__contour\" :group-position=\"groupPosition\" />\n </div>\n <div v-if=\"hasErrors\" class=\"pl-text-field__error\">\n {{ displayErrors.join(\" \") }}\n </div>\n <div v-else-if=\"helper\" class=\"pl-text-field__helper\">{{ helper }}</div>\n </div>\n</template>\n"],"mappings":""}