@milaboratories/uikit 2.9.1 → 2.10.0

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 (34) hide show
  1. package/.turbo/turbo-build.log +44 -43
  2. package/.turbo/turbo-lint.log +1 -1
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +6 -0
  5. package/dist/components/DataTable/TableComponent.vue.js +4 -4
  6. package/dist/components/PlSlideModal/PlPureSlideModal.vue.js +4 -4
  7. package/dist/layout/PlBlockPage/PlBlockPage.vue.d.ts +28 -2
  8. package/dist/layout/PlBlockPage/PlBlockPage.vue.d.ts.map +1 -1
  9. package/dist/layout/PlBlockPage/PlBlockPage.vue.js +7 -58
  10. package/dist/layout/PlBlockPage/PlBlockPage.vue.js.map +1 -1
  11. package/dist/layout/PlBlockPage/PlBlockPage.vue2.js +87 -2
  12. package/dist/layout/PlBlockPage/PlBlockPage.vue2.js.map +1 -1
  13. package/dist/layout/PlBlockPage/PlBlockPage.vue3.js +13 -0
  14. package/dist/layout/PlBlockPage/PlBlockPage.vue3.js.map +1 -0
  15. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.d.ts +2 -0
  16. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.d.ts.map +1 -0
  17. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js +6 -0
  18. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js.map +1 -0
  19. package/dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.d.ts +1 -1
  20. package/dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.d.ts.map +1 -1
  21. package/dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js +10 -11
  22. package/dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js.map +1 -1
  23. package/package.json +4 -4
  24. package/src/layout/PlBlockPage/PlBlockPage.vue +92 -23
  25. package/src/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.ts +3 -0
  26. package/src/layout/PlBlockPage/pl-block-page.scss +3 -8
  27. package/src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts +6 -11
  28. package/dist/components/PlAccordion/ExpandTransition.vue.js +0 -27
  29. package/dist/components/PlAccordion/ExpandTransition.vue.js.map +0 -1
  30. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportId.d.ts +0 -2
  31. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportId.d.ts.map +0 -1
  32. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportId.js +0 -6
  33. package/dist/layout/PlBlockPage/PlBlockPageTitleTeleportId.js.map +0 -1
  34. package/src/layout/PlBlockPage/PlBlockPageTitleTeleportId.ts +0 -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.9.1 build /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.10.0 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...
@@ -14,7 +14,7 @@ Using custom config: ./build.browser-lib.config.js
14
14
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15
15
 
16
16
  transforming...
17
- ✓ 737 modules transformed.
17
+ ✓ 738 modules transformed.
18
18
  rendering chunks...
19
19
 
20
20
  [vite:dts] Start generate declaration files...
@@ -35,62 +35,61 @@ computing gzip size...
35
35
  dist/components/PlAlert/PlAlert.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
36
36
  dist/components/VScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
37
37
  dist/components/HScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
38
- dist/base/BtnBase.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
39
- dist/components/TabItem.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
40
38
  dist/components/DataTable/TScroll.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
39
+ dist/components/TabItem.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
40
+ dist/base/BtnBase.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
41
41
  dist/components/PlSplash/PlSplash.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
42
42
  dist/layout/PlSpacer/PlSpacer.vue2.js  0.10 kB │ gzip: 0.11 kB │ map: 0.10 kB
43
- dist/components/PlBtnLink/PlBtnLink.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
44
43
  dist/components/PlLogView/PlLogView.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
44
+ dist/components/PlBtnLink/PlBtnLink.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
45
45
  dist/components/PlTooltip/PlTooltip.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
46
46
  dist/components/Scrollable.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
47
- dist/components/PlCheckbox/PlCheckbox.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
47
+ dist/components/PlBtnGroup/PlBtnGroup.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
48
48
  dist/components/PlBtnSplit/PlBtnSplit.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
49
- dist/components/PlTextArea/PlTextArea.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
50
49
  dist/components/PlBtnGhost/PlBtnGhost.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
51
- dist/components/PlBtnGroup/PlBtnGroup.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
50
+ dist/components/PlTextArea/PlTextArea.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
51
+ dist/components/PlCheckbox/PlCheckbox.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
52
52
  dist/components/PlDropdown/PlDropdown.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
53
53
  dist/components/InputRange.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
54
54
  dist/components/PlDropdown/OptionList.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
55
55
  dist/components/SliderRange.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
56
- dist/components/PlBtnDanger/PlBtnDanger.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
57
56
  dist/components/PlAccordion/PlAccordion.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
58
- dist/components/PlBtnAccent/PlBtnAccent.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
59
- dist/components/PlTextField/PlTextField.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
57
+ dist/components/PlFileInput/PlFileInput.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
60
58
  dist/components/PlStatusTag/PlStatusTag.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
59
+ dist/components/PlBtnAccent/PlBtnAccent.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
61
60
  dist/layout/PlContainer/PlContainer.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
62
- dist/layout/PlBlockPage/PlBlockPage.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
63
- dist/components/PlFileInput/PlFileInput.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
61
+ dist/components/PlTextField/PlTextField.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
62
+ dist/components/PlBtnDanger/PlBtnDanger.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
64
63
  dist/components/DataTable/ColumnCaret.vue2.js  0.11 kB │ gzip: 0.11 kB │ map: 0.10 kB
65
- dist/components/PlBtnPrimary/PlBtnPrimary.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
66
64
  dist/components/PlFileDialog/PlFileDialog.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
65
+ dist/components/PlBtnPrimary/PlBtnPrimary.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
67
66
  dist/utils/InnerBorder.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.34 kB
68
67
  dist/components/ThemeSwitcher.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
69
- dist/components/PlDropdownRef/PlDropdownRef.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
70
- dist/components/PlNumberField/PlNumberField.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
71
68
  dist/components/PlDialogModal/PlDialogModal.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
72
69
  dist/components/PlProgressBar/PlProgressBar.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
70
+ dist/components/PlNumberField/PlNumberField.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
71
+ dist/components/PlDropdownRef/PlDropdownRef.vue2.js  0.11 kB │ gzip: 0.12 kB │ map: 0.10 kB
72
+ dist/components/PlProgressCell/PlProgressCell.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
73
+ dist/components/DataTable/TableComponent.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
73
74
  dist/components/PlBtnSecondary/PlBtnSecondary.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
75
+ dist/components/PlDropdownLine/PlDropdownLine.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
74
76
  dist/components/PlAutocomplete/PlAutocomplete.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
75
- dist/components/PlProgressCell/PlProgressCell.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
76
77
  dist/components/PlToggleSwitch/PlToggleSwitch.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
77
- dist/components/PlDropdownLine/PlDropdownLine.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
78
- dist/components/DataTable/TableComponent.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
79
- dist/components/PlCheckbox/PlCheckboxBase.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
80
78
  dist/components/PlDropdownLine/ResizableInput.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
79
+ dist/components/PlCheckbox/PlCheckboxBase.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.10 kB
81
80
  dist/components/ContextProvider.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
82
- dist/utils/DropdownOverlay/DropdownOverlay.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
83
- dist/components/PlCheckboxGroup/PlCheckboxGroup.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
81
+ dist/components/PlConfirmDialog.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
84
82
  dist/components/PlErrorBoundary/PlErrorBoundary.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
83
+ dist/utils/DropdownOverlay/DropdownOverlay.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
85
84
  dist/components/PlDropdownMulti/PlDropdownMulti.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
85
+ dist/components/PlCheckboxGroup/PlCheckboxGroup.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
86
86
  dist/components/PlEditableTitle/PlEditableTitle.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
87
- dist/components/PlConfirmDialog.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
88
87
  dist/helpers/math.js  0.12 kB │ gzip: 0.13 kB │ map: 0.33 kB
89
88
  dist/components/DataTable/RowsCommandMenu.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
90
89
  dist/components/DropdownListItem.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
91
- dist/components/PlDropdownLegacy/PlDropdownLegacy.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
92
- dist/components/PlLoaderCircular/PlLoaderCircular.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
93
90
  dist/components/PlSlideModal/PlPureSlideModal.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
91
+ dist/components/PlLoaderCircular/PlLoaderCircular.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
92
+ dist/components/PlDropdownLegacy/PlDropdownLegacy.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
94
93
  dist/components/SliderRangeTriple.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
95
94
  dist/components/DataTable/BaseCellComponent.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
96
95
  dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue2.js  0.12 kB │ gzip: 0.12 kB │ map: 0.11 kB
@@ -102,9 +101,9 @@ computing gzip size...
102
101
  dist/composition/utils.js  0.15 kB │ gzip: 0.14 kB │ map: 0.38 kB
103
102
  dist/composition/useComponentProp.js  0.15 kB │ gzip: 0.14 kB │ map: 1.38 kB
104
103
  dist/components/DataTable/keys.js  0.15 kB │ gzip: 0.15 kB │ map: 0.57 kB
104
+ dist/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js  0.16 kB │ gzip: 0.13 kB │ map: 0.35 kB
105
105
  dist/components/PlSlideModal/props.js  0.16 kB │ gzip: 0.15 kB │ map: 0.81 kB
106
106
  dist/components/DataTable/constants.js  0.16 kB │ gzip: 0.16 kB │ map: 0.42 kB
107
- dist/layout/PlBlockPage/PlBlockPageTitleTeleportId.js  0.17 kB │ gzip: 0.15 kB │ map: 0.35 kB
108
107
  dist/_virtual/_plugin-vue_export-helper.js  0.19 kB │ gzip: 0.17 kB │ map: 0.12 kB
109
108
  dist/helpers/index.js  0.21 kB │ gzip: 0.17 kB │ map: 0.65 kB
110
109
  dist/assets/icons/icon-assets-min/16_more.svg.js  0.22 kB │ gzip: 0.21 kB │ map: 0.38 kB
@@ -131,8 +130,8 @@ computing gzip size...
131
130
  dist/assets/icons/icon-assets-min/24_arrow-down.svg.js  0.27 kB │ gzip: 0.24 kB │ map: 0.44 kB
132
131
  dist/assets/icons/icon-assets-min/16_add.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.44 kB
133
132
  dist/components/PlRadio/PlRadio.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
134
- dist/assets/icons/icon-assets-min/24_linetype-longdash.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.47 kB
135
133
  dist/components/PlChartStackedBar/Legends.vue.js  0.27 kB │ gzip: 0.21 kB │ map: 0.10 kB
134
+ dist/assets/icons/icon-assets-min/24_linetype-longdash.svg.js  0.27 kB │ gzip: 0.23 kB │ map: 0.47 kB
136
135
  dist/assets/icons/icon-assets-min/16_chevron-first.svg.js  0.28 kB │ gzip: 0.23 kB │ map: 0.45 kB
137
136
  dist/components/PlIcon16/PlIcon16.vue.js  0.28 kB │ gzip: 0.22 kB │ map: 0.10 kB
138
137
  dist/components/PlIcon24/PlIcon24.vue.js  0.28 kB │ gzip: 0.22 kB │ map: 0.10 kB
@@ -141,6 +140,7 @@ computing gzip size...
141
140
  dist/components/PlFileDialog/Shortcuts.vue.js  0.28 kB │ gzip: 0.21 kB │ map: 0.10 kB
142
141
  dist/assets/icons/icon-assets-min/16_drag-dots.svg.js  0.28 kB │ gzip: 0.23 kB │ map: 0.45 kB
143
142
  dist/components/PlChartStackedBar/StackedRow.vue.js  0.28 kB │ gzip: 0.22 kB │ map: 0.10 kB
143
+ dist/layout/PlBlockPage/PlBlockPage.vue.js  0.29 kB │ gzip: 0.22 kB │ map: 0.11 kB
144
144
  dist/components/PlLoaderLogo.vue.js  0.29 kB │ gzip: 0.21 kB │ map: 0.11 kB
145
145
  dist/assets/icons/icon-assets-min/16_caret-down.svg.js  0.29 kB │ gzip: 0.24 kB │ map: 0.46 kB
146
146
  dist/assets/icons/icon-assets-min/16_caret-up.svg.js  0.29 kB │ gzip: 0.24 kB │ map: 0.45 kB
@@ -171,12 +171,12 @@ computing gzip size...
171
171
  dist/assets/icons/icon-assets-min/24_jump-link.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.46 kB
172
172
  dist/assets/icons/icon-assets-min/24_checkbox-intermediate.svg.js  0.30 kB │ gzip: 0.24 kB │ map: 0.53 kB
173
173
  dist/assets/icons/icon-assets-min/24_chevron-up.svg.js  0.30 kB │ gzip: 0.24 kB │ map: 0.48 kB
174
- dist/components/PlElementList/utils.js  0.30 kB │ gzip: 0.23 kB │ map: 0.79 kB
175
174
  dist/assets/icons/icon-assets-min/16_close.svg.js  0.30 kB │ gzip: 0.24 kB │ map: 0.47 kB
176
175
  dist/assets/icons/icon-assets-min/24_chevron-down.svg.js  0.30 kB │ gzip: 0.24 kB │ map: 0.48 kB
177
176
  dist/assets/icons/icon-assets-min/24_linetype-dotdash.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.49 kB
178
177
  dist/assets/icons/icon-assets-min/24_menu.svg.js  0.30 kB │ gzip: 0.24 kB │ map: 0.46 kB
179
178
  dist/assets/icons/icon-assets-min/24_text-align-left.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.49 kB
179
+ dist/components/PlElementList/utils.js  0.30 kB │ gzip: 0.23 kB │ map: 0.79 kB
180
180
  dist/assets/icons/icon-assets-min/24_arrow-link.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.48 kB
181
181
  dist/assets/icons/icon-assets-min/24_chevron-right.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.49 kB
182
182
  dist/assets/icons/icon-assets-min/16_arrow-link.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.48 kB
@@ -188,10 +188,10 @@ computing gzip size...
188
188
  dist/assets/icons/icon-assets-min/24_text-align-right.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.50 kB
189
189
  dist/assets/icons/icon-assets-min/16_checkmark.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.48 kB
190
190
  dist/components/PlChartStackedBar/PlChartStackedBar.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
191
- dist/components/PlElementList/PlElementListItem.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
191
+ dist/components/PlChartStackedBar/StackedRowCompact.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
192
192
  dist/assets/icons/icon-assets-min/16_arrow-up.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.48 kB
193
193
  dist/assets/icons/icon-assets-min/24_linetype-twodash.svg.js  0.30 kB │ gzip: 0.25 kB │ map: 0.50 kB
194
- dist/components/PlChartStackedBar/StackedRowCompact.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
194
+ dist/components/PlElementList/PlElementListItem.vue.js  0.30 kB │ gzip: 0.22 kB │ map: 0.11 kB
195
195
  dist/assets/icons/icon-assets-min/24_checkmark.svg.js  0.31 kB │ gzip: 0.25 kB │ map: 0.49 kB
196
196
  dist/assets/icons/icon-assets-min/16_arrow-down.svg.js  0.31 kB │ gzip: 0.25 kB │ map: 0.49 kB
197
197
  dist/assets/icons/icon-assets-min/16_arrow-left.svg.js  0.31 kB │ gzip: 0.24 kB │ map: 0.49 kB
@@ -217,16 +217,16 @@ computing gzip size...
217
217
  dist/assets/icons/icon-assets-min/16_compare.svg.js  0.34 kB │ gzip: 0.26 kB │ map: 0.51 kB
218
218
  dist/assets/icons/icon-assets-min/16_jump-link.svg.js  0.34 kB │ gzip: 0.26 kB │ map: 0.52 kB
219
219
  dist/assets/icons/icon-assets-min/16_reverse.svg.js  0.34 kB │ gzip: 0.26 kB │ map: 0.51 kB
220
- dist/assets/icons/icon-assets-min/16_stop.svg.js  0.34 kB │ gzip: 0.25 kB │ map: 0.52 kB
221
220
  dist/components/DataTable/TrHead.vue.js  0.34 kB │ gzip: 0.27 kB │ map: 0.41 kB
221
+ dist/assets/icons/icon-assets-min/16_stop.svg.js  0.34 kB │ gzip: 0.25 kB │ map: 0.52 kB
222
222
  dist/assets/icons/icon-assets-min/24_expand-left.svg.js  0.35 kB │ gzip: 0.24 kB │ map: 0.53 kB
223
223
  dist/assets/icons/icon-assets-min/24_expand-right.svg.js  0.35 kB │ gzip: 0.25 kB │ map: 0.53 kB
224
224
  dist/assets/icons/icon-assets-min/24_restart.svg.js  0.35 kB │ gzip: 0.27 kB │ map: 0.52 kB
225
225
  dist/assets/icons/icon-assets-min/24_legend-box.svg.js  0.35 kB │ gzip: 0.26 kB │ map: 0.54 kB
226
226
  dist/assets/icons/icon-assets-min/24_position-left.svg.js  0.35 kB │ gzip: 0.27 kB │ map: 0.52 kB
227
227
  dist/assets/icons/icon-assets-min/24_close.svg.js  0.35 kB │ gzip: 0.25 kB │ map: 0.52 kB
228
- dist/assets/icons/icon-assets-min/24_stop.svg.js  0.35 kB │ gzip: 0.25 kB │ map: 0.52 kB
229
228
  dist/composition/useFilteredList.js  0.35 kB │ gzip: 0.24 kB │ map: 1.15 kB
229
+ dist/assets/icons/icon-assets-min/24_stop.svg.js  0.35 kB │ gzip: 0.25 kB │ map: 0.52 kB
230
230
  dist/layout/PlSpacer/PlSpacer.vue.js  0.35 kB │ gzip: 0.27 kB │ map: 0.53 kB
231
231
  dist/assets/icons/icon-assets-min/24_checkbox.svg.js  0.35 kB │ gzip: 0.26 kB │ map: 0.53 kB
232
232
  dist/assets/icons/icon-assets-min/24_play.svg.js  0.35 kB │ gzip: 0.28 kB │ map: 0.53 kB
@@ -272,9 +272,9 @@ computing gzip size...
272
272
  dist/assets/icons/icon-assets-min/24_align-right.svg.js  0.43 kB │ gzip: 0.28 kB │ map: 0.61 kB
273
273
  dist/assets/icons/icon-assets-min/24_zoom-out.svg.js  0.43 kB │ gzip: 0.29 kB │ map: 0.63 kB
274
274
  dist/assets/icons/icon-assets-min/24_windows-collapse.svg.js  0.43 kB │ gzip: 0.30 kB │ map: 0.66 kB
275
+ dist/utils/InnerBorder.vue.js  0.43 kB │ gzip: 0.31 kB │ map: 0.42 kB
275
276
  dist/assets/icons/icon-assets-min/16_delete-circle.svg.js  0.43 kB │ gzip: 0.30 kB │ map: 0.62 kB
276
277
  dist/assets/icons/icon-assets-min/24_drag-vertical.svg.js  0.43 kB │ gzip: 0.31 kB │ map: 0.62 kB
277
- dist/utils/InnerBorder.vue.js  0.43 kB │ gzip: 0.31 kB │ map: 0.42 kB
278
278
  dist/assets/icons/icon-assets-min/16_zip.svg.js  0.43 kB │ gzip: 0.29 kB │ map: 0.60 kB
279
279
  dist/assets/icons/icon-assets-min/24_arrow-left-curved.svg.js  0.43 kB │ gzip: 0.31 kB │ map: 0.61 kB
280
280
  dist/assets/icons/icon-assets-min/24_drag-horizontal.svg.js  0.43 kB │ gzip: 0.32 kB │ map: 0.62 kB
@@ -354,8 +354,8 @@ computing gzip size...
354
354
  dist/assets/icons/icon-assets-min/16_settings.svg.js  0.56 kB │ gzip: 0.33 kB │ map: 0.74 kB
355
355
  dist/composition/useFormState.js  0.56 kB │ gzip: 0.32 kB │ map: 1.67 kB
356
356
  dist/assets/icons/icon-assets-min/24_frame-type-none.svg.js  0.56 kB │ gzip: 0.27 kB │ map: 0.75 kB
357
- dist/assets/icons/icon-assets-min/24_columns.svg.js  0.56 kB │ gzip: 0.33 kB │ map: 0.76 kB
358
357
  dist/components/DataTable/ColumnCaret.vue.js  0.56 kB │ gzip: 0.37 kB │ map: 0.90 kB
358
+ dist/assets/icons/icon-assets-min/24_columns.svg.js  0.56 kB │ gzip: 0.33 kB │ map: 0.76 kB
359
359
  dist/assets/icons/icon-assets-min/16_clipboard-copied.svg.js  0.56 kB │ gzip: 0.36 kB │ map: 0.76 kB
360
360
  dist/assets/icons/icon-assets-min/16_clipboard.svg.js  0.56 kB │ gzip: 0.34 kB │ map: 0.74 kB
361
361
  dist/assets/icons/icon-assets-min/24_file-doc-import.svg.js  0.56 kB │ gzip: 0.37 kB │ map: 0.77 kB
@@ -364,6 +364,7 @@ computing gzip size...
364
364
  dist/components/PlIcon16/PlIcon16.vue3.js  0.57 kB │ gzip: 0.34 kB │ map: 0.10 kB
365
365
  dist/assets/icons/icon-assets-min/24_analytics.svg.js  0.57 kB │ gzip: 0.35 kB │ map: 0.75 kB
366
366
  dist/assets/icons/icon-assets-min/24_pin.svg.js  0.57 kB │ gzip: 0.36 kB │ map: 0.74 kB
367
+ dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js  0.58 kB │ gzip: 0.33 kB │ map: 1.18 kB
367
368
  dist/assets/icons/icon-assets-min/16_cell-type-subset.svg.js  0.58 kB │ gzip: 0.37 kB │ map: 0.77 kB
368
369
  dist/assets/icons/icon-assets-min/24_clipboard-copied.svg.js  0.58 kB │ gzip: 0.38 kB │ map: 0.78 kB
369
370
  dist/assets/icons/icon-assets-min/24_link.svg.js  0.58 kB │ gzip: 0.36 kB │ map: 0.76 kB
@@ -386,15 +387,14 @@ computing gzip size...
386
387
  dist/components/PlSvg/PlSvg.vue3.js  0.61 kB │ gzip: 0.34 kB │ map: 0.10 kB
387
388
  dist/components/PlTooltip/Beak.vue.js  0.61 kB │ gzip: 0.43 kB │ map: 0.71 kB
388
389
  dist/components/ThemeSwitcher.vue.js  0.62 kB │ gzip: 0.40 kB │ map: 0.79 kB
389
- dist/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.js  0.62 kB │ gzip: 0.36 kB │ map: 1.36 kB
390
390
  dist/assets/icons/icon-assets-min/24_learn.svg.js  0.62 kB │ gzip: 0.39 kB │ map: 0.80 kB
391
391
  dist/components/PlRadio/PlRadioGroup.vue3.js  0.62 kB │ gzip: 0.41 kB │ map: 0.11 kB
392
392
  dist/assets/icons/icon-assets-min/24_filter-on.svg.js  0.62 kB │ gzip: 0.41 kB │ map: 0.81 kB
393
393
  dist/assets/icons/icon-assets-min/16_duplicate.svg.js  0.62 kB │ gzip: 0.39 kB │ map: 0.83 kB
394
394
  dist/assets/icons/icon-assets-min/24_bar-stacked.svg.js  0.62 kB │ gzip: 0.34 kB │ map: 0.83 kB
395
395
  dist/components/PlElementList/PlElementList.vue3.js  0.63 kB │ gzip: 0.41 kB │ map: 0.11 kB
396
- dist/assets/icons/icon-assets-min/24_file-doc-download.svg.js  0.63 kB │ gzip: 0.38 kB │ map: 0.85 kB
397
396
  dist/composition/useRipple.js  0.63 kB │ gzip: 0.40 kB │ map: 1.69 kB
397
+ dist/assets/icons/icon-assets-min/24_file-doc-download.svg.js  0.63 kB │ gzip: 0.38 kB │ map: 0.85 kB
398
398
  dist/assets/icons/icon-assets-min/24_axes.svg.js  0.63 kB │ gzip: 0.37 kB │ map: 0.81 kB
399
399
  dist/utils/DoubleContour.vue.js  0.63 kB │ gzip: 0.41 kB │ map: 2.12 kB
400
400
  dist/assets/icons/icon-assets-min/24_clipboard.svg.js  0.63 kB │ gzip: 0.37 kB │ map: 0.84 kB
@@ -471,8 +471,8 @@ computing gzip size...
471
471
  dist/assets/icons/icon-assets-min/24_view-show.svg.js  0.93 kB │ gzip: 0.55 kB │ map: 1.11 kB
472
472
  dist/assets/icons/icon-assets-min/24_theme-dark.svg.js  0.94 kB │ gzip: 0.48 kB │ map: 1.12 kB
473
473
  dist/layout/PlRow/PlRow.vue.js  0.94 kB │ gzip: 0.56 kB │ map: 0.81 kB
474
- dist/components/PlIcon24/PlIcon24.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 2.57 kB
475
474
  dist/components/PlIcon16/PlIcon16.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 1.86 kB
475
+ dist/components/PlIcon24/PlIcon24.vue2.js  0.95 kB │ gzip: 0.51 kB │ map: 2.57 kB
476
476
  dist/assets/icons/icon-assets-min/24_dendrogram-X-line.svg.js  0.95 kB │ gzip: 0.39 kB │ map: 1.24 kB
477
477
  dist/components/PlAccordion/PlAccordionSection.vue3.js  0.95 kB │ gzip: 0.53 kB │ map: 0.11 kB
478
478
  dist/components/DataTable/composition/useTableColumns.js  0.97 kB │ gzip: 0.53 kB │ map: 2.87 kB
@@ -483,8 +483,8 @@ computing gzip size...
483
483
  dist/composition/usePosition.js  1.00 kB │ gzip: 0.46 kB │ map: 2.31 kB
484
484
  dist/assets/icons/icon-assets-min/16_progress.svg.js  1.02 kB │ gzip: 0.61 kB │ map: 1.22 kB
485
485
  dist/composition/useDraggable.js  1.02 kB │ gzip: 0.44 kB │ map: 2.56 kB
486
- dist/assets/icons/icon-assets-min/24_strip-plot.svg.js  1.02 kB │ gzip: 0.36 kB │ map: 1.29 kB
487
486
  dist/components/DataTable/assets/TableIcon.vue.js  1.02 kB │ gzip: 0.55 kB │ map: 1.20 kB
487
+ dist/assets/icons/icon-assets-min/24_strip-plot.svg.js  1.02 kB │ gzip: 0.36 kB │ map: 1.29 kB
488
488
  dist/components/PlChartStackedBar/Legends.vue3.js  1.03 kB │ gzip: 0.56 kB │ map: 0.10 kB
489
489
  dist/helpers/downloadContent.js  1.03 kB │ gzip: 0.50 kB │ map: 3.22 kB
490
490
  dist/generated/icons-16.js  1.04 kB │ gzip: 0.42 kB │ map: 1.90 kB
@@ -525,6 +525,7 @@ computing gzip size...
525
525
  dist/assets/icons/icon-assets-min/24_dna.svg.js  1.30 kB │ gzip: 0.73 kB │ map: 1.47 kB
526
526
  dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.js  1.31 kB │ gzip: 0.62 kB │ map: 2.79 kB
527
527
  dist/assets/icons/icon-assets-min/24_title-position.svg.js  1.31 kB │ gzip: 0.51 kB │ map: 1.59 kB
528
+ dist/layout/PlBlockPage/PlBlockPage.vue3.js  1.33 kB │ gzip: 0.67 kB │ map: 0.11 kB
528
529
  dist/assets/icons/icon-assets-min/24_sina.svg.js  1.35 kB │ gzip: 0.40 kB │ map: 1.60 kB
529
530
  dist/assets/icons/icon-assets-min/24_color-none.svg.js  1.36 kB │ gzip: 0.64 kB │ map: 1.58 kB
530
531
  dist/components/PlErrorAlert/PlErrorAlert.vue3.js  1.38 kB │ gzip: 0.72 kB │ map: 0.11 kB
@@ -605,7 +606,6 @@ computing gzip size...
605
606
  dist/components/PlBtnPrimary/PlBtnPrimary.vue.js  3.57 kB │ gzip: 1.34 kB │ map: 1.41 kB
606
607
  dist/components/PlFileDialog/PlFileDialog.vue.js  3.58 kB │ gzip: 1.40 kB │ map: 6.03 kB
607
608
  dist/composition/useSortable.js  3.68 kB │ gzip: 1.30 kB │ map: 10.86 kB
608
- dist/layout/PlBlockPage/PlBlockPage.vue.js  3.79 kB │ gzip: 1.55 kB │ map: 3.69 kB
609
609
  dist/components/PlElementList/PlElementListItem.vue3.js  3.80 kB │ gzip: 1.36 kB │ map: 0.12 kB
610
610
  dist/components/PlChip/PlChip.vue.js  4.06 kB │ gzip: 1.64 kB │ map: 2.06 kB
611
611
  dist/composition/usePollingQuery.js  4.13 kB │ gzip: 1.57 kB │ map: 19.03 kB
@@ -615,6 +615,7 @@ computing gzip size...
615
615
  dist/components/PlAlert/PlAlert.vue.js  4.44 kB │ gzip: 1.70 kB │ map: 3.53 kB
616
616
  dist/components/PlSlideModal/PlSlideModal.vue2.js  4.45 kB │ gzip: 1.75 kB │ map: 2.18 kB
617
617
  dist/components/PlElementList/PlElementListItem.vue2.js  4.69 kB │ gzip: 1.31 kB │ map: 10.64 kB
618
+ dist/layout/PlBlockPage/PlBlockPage.vue2.js  4.85 kB │ gzip: 1.87 kB │ map: 5.99 kB
618
619
  dist/components/PlBtnGroup/PlBtnGroup.vue.js  5.14 kB │ gzip: 1.94 kB │ map: 4.42 kB
619
620
  dist/components/PlTooltip/PlTooltip.vue.js  5.19 kB │ gzip: 1.93 kB │ map: 6.61 kB
620
621
  dist/components/Slider.vue.js  5.52 kB │ gzip: 1.92 kB │ map: 9.88 kB
@@ -643,9 +644,9 @@ computing gzip size...
643
644
  dist/components/PlSvg/PlSvg.vue2.js  39.54 kB │ gzip: 3.38 kB │ map: 12.31 kB
644
645
  dist/components/PlFileDialog/pl-file-dialog.module.scss.js  47.68 kB │ gzip: 16.33 kB │ map: 0.13 kB
645
646
  dist/index.js 502.70 kB │ gzip: 192.57 kB │ map: 5.98 kB
646
- dist/components/PlSlideModal/PlPureSlideModal.vue.js 605.60 kB │ gzip: 205.14 kB │ map: 2.93 kB
647
- dist/components/DataTable/TableComponent.vue.js 607.44 kB │ gzip: 206.03 kB │ map: 6.85 kB
648
- [vite:dts] Declaration files built in 10111ms.
647
+ dist/components/PlSlideModal/PlPureSlideModal.vue.js 605.52 kB │ gzip: 205.13 kB │ map: 2.93 kB
648
+ dist/components/DataTable/TableComponent.vue.js 607.36 kB │ gzip: 206.02 kB │ map: 6.85 kB
649
+ [vite:dts] Declaration files built in 5984ms.
649
650
 
650
- ✓ built in 13.89s
651
+ ✓ built in 9.51s
651
652
  Build completed successfully
@@ -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
- > @milaboratories/uikit@2.9.1 lint /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.10.0 lint /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > eslint .
5
5
 
@@ -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.9.1 type-check /home/runner/_work/platforma/platforma/lib/ui/uikit
3
+ > @milaboratories/uikit@2.10.0 type-check /home/runner/_work/platforma/platforma/lib/ui/uikit
4
4
  > ts-builder types --target browser-lib
5
5
 
6
6
  ↳ vue-tsc.js --noEmit --project ./tsconfig.json --customConditions ,
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @milaboratories/uikit
2
2
 
3
+ ## 2.10.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 0f0a802: PlBlockPage: Added editable subtitles and made title into a prop
8
+
3
9
  ## 2.9.1
4
10
 
5
11
  ### Patch Changes
@@ -3,7 +3,7 @@
3
3
  .pl-tooltip{--pl-tooltip-max-width: 300px;z-index:var(--z-tooltip);position:absolute;display:inline-block;padding:8px 12px 9px;background:var(--tooltip-bg);border-radius:6px;width:max-content;word-break:normal;transform-origin:0 50%;max-width:var(--pl-tooltip-max-width);color:#fff}.pl-tooltip__container{position:absolute;width:0;height:0}.pl-tooltip a{color:var(--tooltip-link-color)}.pl-tooltip p{margin-bottom:8px}.pl-tooltip ul,.pl-tooltip li{margin-left:6px;padding-left:6px}.pl-tooltip li{margin-bottom:4px}.pl-tooltip .beak{position:absolute;top:50%;right:100%}.pl-tooltip.top-left{bottom:0}.pl-tooltip.top-left .beak{position:absolute;top:calc(100% - 2px);transform:translate(-50%) rotate(-90deg);left:20%}.pl-tooltip.left{right:0;transform:translateY(-50%)}.pl-tooltip.left .beak{position:absolute;top:50%;transform:translateY(-50%) rotate(180deg);left:100%}.pl-tooltip.right{left:0;transform:translateY(-50%)}.pl-tooltip.right .beak{position:absolute;top:50%;transform:translateY(-50%);right:100%}.pl-tooltip.top{transform:translate(-50%);bottom:0}.pl-tooltip.top .beak{position:absolute;top:calc(100% - 2px);transform:translate(-50%) rotate(-90deg);left:50%}.pl-tooltip.southwest{transform:translateY(100%);bottom:0;right:-6px}.pl-tooltip.southwest .beak{position:absolute;top:-2px;transform:translateY(-50%) rotate(90deg);right:12px}.tooltip-transition-enter-active,.tooltip-transition-leave-active{transition:all .1s ease-in-out}.tooltip-transition-enter-from,.tooltip-transition-leave-to{opacity:0;transform:translateY(-50%) scale(0)}
4
4
  .context-menu[data-v-12530966]{display:block;position:absolute;top:50px;left:50px;z-index:var(--z-context-menu);margin:0;padding:3px 0 4px;background:#fffffff2;box-shadow:0 8px 15px #00000059;border-radius:4px;font-family:Lucida Grande,sans-serif;font-size:14px;line-height:15px}.context-menu[data-v-12530966]:before{display:block;position:absolute;content:"";top:-1px;left:-1px;bottom:-1px;right:-1px;border-radius:4px;border:1px solid rgba(0,0,0,.125);z-index:-1}.context-menu hr[data-v-12530966]{border:none;height:1px;background:#0000001a;margin:6px 1px 5px;padding:0}.context-menu>div[data-v-12530966]{display:block;padding:0 20px;border-top:1px solid rgba(0,0,0,0);border-bottom:1px solid rgba(0,0,0,0)}.context-menu>div span[data-v-12530966]{vertical-align:2px;-webkit-user-select:none;user-select:none}.context-menu>div[data-v-12530966]:hover{background:-webkit-linear-gradient(top,#648bf5,#2866f2);background:linear-gradient(to bottom,#648bf5,#2866f2);border-top:1px solid #5a82eb;border-bottom:1px solid #1758e7}.context-menu>div[data-v-12530966]:hover:after{color:#fff}
5
5
  .ui-lt-container{min-width:0;white-space:nowrap;overflow:hidden;position:relative;border-radius:5px}.ui-lt-container span{display:inline-block;overflow:hidden;text-overflow:ellipsis;width:100%;vertical-align:bottom;pointer-events:all!important}.ui-lt-container .ui-lt-animate{position:relative;animation:left-to-right var(--v5deba9de) infinite alternate linear;overflow:unset!important;text-overflow:unset!important;width:fit-content!important}@keyframes left-to-right{0%{transform:translate(0);left:0%}to{transform:translate(-101%);left:101%}}
6
- .pl-block-page{--pl-block-page-body-padding: var(--main-spacing, 24px);padding:var(--container-spacing);background-color:var(--bg-elevated-01);height:100%;max-width:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.pl-block-page.noBodyGutters{--pl-block-page-body-padding: 0}.pl-block-page__title{height:80px;display:flex;align-items:center;gap:12px;padding:20px 24px;min-width:0;max-width:100%}.pl-block-page__title__default{flex:1;min-width:0;max-width:100%;margin:0;color:var(--txt-01);display:flex;flex-direction:row;align-items:center;gap:12px}.pl-block-page__title__default>span{font-size:28px;font-weight:500;line-height:36px;letter-spacing:-.56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%;display:inline-block}.pl-block-page__title__append{margin-left:auto;display:flex;align-items:center;gap:2px}.pl-block-page__title__append__teleport{display:flex;align-items:center;gap:2px}.pl-block-page__body{max-width:100%;display:flex;flex-direction:column;gap:var(--gap-v);padding:var(--pl-block-page-body-padding);--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-block-page__body::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-block-page__body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-block-page__body::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
6
+ .pl-block-page{--pl-block-page-body-padding: var(--main-spacing, 24px);background-color:var(--bg-elevated-01);height:100%;max-width:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.pl-block-page.noBodyGutters{--pl-block-page-body-padding: 0}.pl-block-page__title{display:flex;align-items:center;gap:12px;min-width:0;max-width:100%}.pl-block-page__title__default{flex:1;min-width:0;max-width:100%;margin:0;color:var(--txt-01);display:flex;flex-direction:row;align-items:center;gap:12px}.pl-block-page__title__default>span{font-size:28px;font-weight:500;line-height:36px;letter-spacing:-.56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%;display:inline-block}.pl-block-page__title__append{margin-left:auto;display:flex;align-items:center;gap:2px}.pl-block-page__title__append__teleport{display:contents}.pl-block-page__body{max-width:100%;display:flex;flex-direction:column;gap:var(--gap-v);padding:var(--pl-block-page-body-padding);--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-block-page__body::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-block-page__body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-block-page__body::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
7
7
  .pl-container{display:flex;flex-direction:column;gap:var(--gap-v)}
8
8
  .pl-loader-circular{position:relative;height:100%;display:flex;align-items:center;justify-content:center}.pl-loader-circular__svg{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;height:100%;width:100%;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}.pl-loader-circular__svg-circle{stroke-dasharray:150,200;stroke-dashoffset:-10;-webkit-animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}@keyframes color{0%{stroke:var(--ic-02)}40%{stroke:var(--ic-02)}66%{stroke:var(--ic-02)}80%,90%{stroke:var(--ic-02)}}
9
9
  .pl-grid{display:grid;row-gap:var(--gap-h);column-gap:var(--gap-v)}
@@ -62,15 +62,15 @@ import { useEventListener as U } from "../../composition/useEventListener.js";
62
62
 
63
63
 
64
64
  import "../../global/resizeObserver.js";
65
- import "../../layout/PlBlockPage/PlBlockPageTitleTeleportId.js";
65
+ import "../../layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js";
66
66
 
67
+ import "@vueuse/core";
68
+ import "../PlSvg/registry.js";
67
69
  import "../../layout/PlPlaceholder/PlPlaceholder.vue2.js";
68
70
 
69
71
 
70
72
 
71
73
 
72
- import "@vueuse/core";
73
- import "../PlSvg/registry.js";
74
74
 
75
75
 
76
76
 
@@ -4,7 +4,7 @@
4
4
  .context-menu[data-v-12530966]{display:block;position:absolute;top:50px;left:50px;z-index:var(--z-context-menu);margin:0;padding:3px 0 4px;background:#fffffff2;box-shadow:0 8px 15px #00000059;border-radius:4px;font-family:Lucida Grande,sans-serif;font-size:14px;line-height:15px}.context-menu[data-v-12530966]:before{display:block;position:absolute;content:"";top:-1px;left:-1px;bottom:-1px;right:-1px;border-radius:4px;border:1px solid rgba(0,0,0,.125);z-index:-1}.context-menu hr[data-v-12530966]{border:none;height:1px;background:#0000001a;margin:6px 1px 5px;padding:0}.context-menu>div[data-v-12530966]{display:block;padding:0 20px;border-top:1px solid rgba(0,0,0,0);border-bottom:1px solid rgba(0,0,0,0)}.context-menu>div span[data-v-12530966]{vertical-align:2px;-webkit-user-select:none;user-select:none}.context-menu>div[data-v-12530966]:hover{background:-webkit-linear-gradient(top,#648bf5,#2866f2);background:linear-gradient(to bottom,#648bf5,#2866f2);border-top:1px solid #5a82eb;border-bottom:1px solid #1758e7}.context-menu>div[data-v-12530966]:hover:after{color:#fff}
5
5
  .pl-tooltip{--pl-tooltip-max-width: 300px;z-index:var(--z-tooltip);position:absolute;display:inline-block;padding:8px 12px 9px;background:var(--tooltip-bg);border-radius:6px;width:max-content;word-break:normal;transform-origin:0 50%;max-width:var(--pl-tooltip-max-width);color:#fff}.pl-tooltip__container{position:absolute;width:0;height:0}.pl-tooltip a{color:var(--tooltip-link-color)}.pl-tooltip p{margin-bottom:8px}.pl-tooltip ul,.pl-tooltip li{margin-left:6px;padding-left:6px}.pl-tooltip li{margin-bottom:4px}.pl-tooltip .beak{position:absolute;top:50%;right:100%}.pl-tooltip.top-left{bottom:0}.pl-tooltip.top-left .beak{position:absolute;top:calc(100% - 2px);transform:translate(-50%) rotate(-90deg);left:20%}.pl-tooltip.left{right:0;transform:translateY(-50%)}.pl-tooltip.left .beak{position:absolute;top:50%;transform:translateY(-50%) rotate(180deg);left:100%}.pl-tooltip.right{left:0;transform:translateY(-50%)}.pl-tooltip.right .beak{position:absolute;top:50%;transform:translateY(-50%);right:100%}.pl-tooltip.top{transform:translate(-50%);bottom:0}.pl-tooltip.top .beak{position:absolute;top:calc(100% - 2px);transform:translate(-50%) rotate(-90deg);left:50%}.pl-tooltip.southwest{transform:translateY(100%);bottom:0;right:-6px}.pl-tooltip.southwest .beak{position:absolute;top:-2px;transform:translateY(-50%) rotate(90deg);right:12px}.tooltip-transition-enter-active,.tooltip-transition-leave-active{transition:all .1s ease-in-out}.tooltip-transition-enter-from,.tooltip-transition-leave-to{opacity:0;transform:translateY(-50%) scale(0)}
6
6
  .ui-lt-container{min-width:0;white-space:nowrap;overflow:hidden;position:relative;border-radius:5px}.ui-lt-container span{display:inline-block;overflow:hidden;text-overflow:ellipsis;width:100%;vertical-align:bottom;pointer-events:all!important}.ui-lt-container .ui-lt-animate{position:relative;animation:left-to-right var(--v5deba9de) infinite alternate linear;overflow:unset!important;text-overflow:unset!important;width:fit-content!important}@keyframes left-to-right{0%{transform:translate(0);left:0%}to{transform:translate(-101%);left:101%}}
7
- .pl-block-page{--pl-block-page-body-padding: var(--main-spacing, 24px);padding:var(--container-spacing);background-color:var(--bg-elevated-01);height:100%;max-width:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.pl-block-page.noBodyGutters{--pl-block-page-body-padding: 0}.pl-block-page__title{height:80px;display:flex;align-items:center;gap:12px;padding:20px 24px;min-width:0;max-width:100%}.pl-block-page__title__default{flex:1;min-width:0;max-width:100%;margin:0;color:var(--txt-01);display:flex;flex-direction:row;align-items:center;gap:12px}.pl-block-page__title__default>span{font-size:28px;font-weight:500;line-height:36px;letter-spacing:-.56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%;display:inline-block}.pl-block-page__title__append{margin-left:auto;display:flex;align-items:center;gap:2px}.pl-block-page__title__append__teleport{display:flex;align-items:center;gap:2px}.pl-block-page__body{max-width:100%;display:flex;flex-direction:column;gap:var(--gap-v);padding:var(--pl-block-page-body-padding);--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-block-page__body::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-block-page__body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-block-page__body::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
7
+ .pl-block-page{--pl-block-page-body-padding: var(--main-spacing, 24px);background-color:var(--bg-elevated-01);height:100%;max-width:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.pl-block-page.noBodyGutters{--pl-block-page-body-padding: 0}.pl-block-page__title{display:flex;align-items:center;gap:12px;min-width:0;max-width:100%}.pl-block-page__title__default{flex:1;min-width:0;max-width:100%;margin:0;color:var(--txt-01);display:flex;flex-direction:row;align-items:center;gap:12px}.pl-block-page__title__default>span{font-size:28px;font-weight:500;line-height:36px;letter-spacing:-.56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%;display:inline-block}.pl-block-page__title__append{margin-left:auto;display:flex;align-items:center;gap:2px}.pl-block-page__title__append__teleport{display:contents}.pl-block-page__body{max-width:100%;display:flex;flex-direction:column;gap:var(--gap-v);padding:var(--pl-block-page-body-padding);--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-block-page__body::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-block-page__body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-block-page__body::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}
8
8
  .pl-container{display:flex;flex-direction:column;gap:var(--gap-v)}
9
9
  .pl-loader-circular{position:relative;height:100%;display:flex;align-items:center;justify-content:center}.pl-loader-circular__svg{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;height:100%;width:100%;-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center}.pl-loader-circular__svg-circle{stroke-dasharray:150,200;stroke-dashoffset:-10;-webkit-animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite,color 6s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}@keyframes color{0%{stroke:var(--ic-02)}40%{stroke:var(--ic-02)}66%{stroke:var(--ic-02)}80%,90%{stroke:var(--ic-02)}}
10
10
  .pl-grid{display:grid;row-gap:var(--gap-h);column-gap:var(--gap-v)}
@@ -54,15 +54,15 @@ import "../../composition/useTheme.js";
54
54
  import { useClickOutside as P } from "../../composition/useClickOutside.js";
55
55
 
56
56
  import "../../global/resizeObserver.js";
57
- import "../../layout/PlBlockPage/PlBlockPageTitleTeleportId.js";
57
+ import "../../layout/PlBlockPage/PlBlockPageTitleTeleportTarget.js";
58
58
 
59
+ import "@vueuse/core";
60
+ import "../PlSvg/registry.js";
59
61
  import "../../layout/PlPlaceholder/PlPlaceholder.vue2.js";
60
62
 
61
63
 
62
64
 
63
65
 
64
- import "@vueuse/core";
65
- import "../PlSvg/registry.js";
66
66
 
67
67
 
68
68
 
@@ -1,6 +1,16 @@
1
1
  import { PlPlaceholderProps } from '../PlPlaceholder';
2
2
  /** Root block page component */
3
3
  declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
4
+ subtitle?: string;
5
+ } & {
6
+ /**
7
+ * Page title (won't be displayed if `title` slot is also provided)
8
+ */
9
+ title?: string;
10
+ /**
11
+ * Text to display when subtitle is empty
12
+ */
13
+ subtitlePlaceholder?: string;
4
14
  /**
5
15
  * If `true` body gutters are removed
6
16
  */
@@ -9,7 +19,19 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
9
19
  * If defined, a loading overlay is displayed on the page body (over all default slot content)
10
20
  */
11
21
  bodyLoading?: PlPlaceholderProps["variant"] | PlPlaceholderProps;
12
- }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
22
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
23
+ "update:subtitle": (value: string) => any;
24
+ }, string, import('vue').PublicProps, Readonly<{
25
+ subtitle?: string;
26
+ } & {
27
+ /**
28
+ * Page title (won't be displayed if `title` slot is also provided)
29
+ */
30
+ title?: string;
31
+ /**
32
+ * Text to display when subtitle is empty
33
+ */
34
+ subtitlePlaceholder?: string;
13
35
  /**
14
36
  * If `true` body gutters are removed
15
37
  */
@@ -18,7 +40,11 @@ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<{
18
40
  * If defined, a loading overlay is displayed on the page body (over all default slot content)
19
41
  */
20
42
  bodyLoading?: PlPlaceholderProps["variant"] | PlPlaceholderProps;
21
- }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>, {
43
+ }> & Readonly<{
44
+ "onUpdate:subtitle"?: ((value: string) => any) | undefined;
45
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
46
+ teleportTarget: HTMLDivElement;
47
+ }, HTMLDivElement>, {
22
48
  title?(_: {}): any;
23
49
  'after-title'?(_: {}): any;
24
50
  append?(_: {}): any;
@@ -1 +1 @@
1
- {"version":3,"file":"PlBlockPage.vue.d.ts","sourceRoot":"","sources":["../../../src/layout/PlBlockPage/PlBlockPage.vue"],"names":[],"mappings":"AA0EA,OAAO,sBAAsB,CAAC;AAC9B,OAAO,EAAuC,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGhG,gCAAgC;;IAK9B;;OAEG;oBACa,OAAO;IACvB;;OAEG;kBACW,kBAAkB,CAAC,SAAS,CAAC,GAAG,kBAAkB;;IAPhE;;OAEG;oBACa,OAAO;IACvB;;OAEG;kBACW,kBAAkB,CAAC,SAAS,CAAC,GAAG,kBAAkB;;mBAoFvC,GAAG;2BACK,GAAG;oBACV,GAAG;qBACF,GAAG;;AAlGhC,wBA4IK;AASL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlBlockPage.vue.d.ts","sourceRoot":"","sources":["../../../src/layout/PlBlockPage/PlBlockPage.vue"],"names":[],"mappings":"AA+IA,OAAO,sBAAsB,CAAC;AAE9B,OAAO,EAAE,KAAK,kBAAkB,EAAuC,MAAM,kBAAkB,CAAC;AAGhG,gCAAgC;;eA8CnB,MAAM;;IAzCjB;;OAEG;YACK,MAAM;IACd;;OAEG;0BACmB,MAAM;IAC5B;;OAEG;oBACa,OAAO;IACvB;;OAEG;kBACW,kBAAkB,CAAC,SAAS,CAAC,GAAG,kBAAkB;;;;eA0BrD,MAAM;;IAzCjB;;OAEG;YACK,MAAM;IACd;;OAEG;0BACmB,MAAM;IAC5B;;OAEG;oBACa,OAAO;IACvB;;OAEG;kBACW,kBAAkB,CAAC,SAAS,CAAC,GAAG,kBAAkB;;;;;;mBAiIvC,GAAG;2BACK,GAAG;oBACV,GAAG;qBACD,GAAG;;AAvJjC,wBAsMK;AAgBL,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
@@ -1,61 +1,10 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".pl-block-page{--pl-block-page-body-padding: var(--main-spacing, 24px);padding:var(--container-spacing);background-color:var(--bg-elevated-01);height:100%;max-width:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.pl-block-page.noBodyGutters{--pl-block-page-body-padding: 0}.pl-block-page__title{height:80px;display:flex;align-items:center;gap:12px;padding:20px 24px;min-width:0;max-width:100%}.pl-block-page__title__default{flex:1;min-width:0;max-width:100%;margin:0;color:var(--txt-01);display:flex;flex-direction:row;align-items:center;gap:12px}.pl-block-page__title__default>span{font-size:28px;font-weight:500;line-height:36px;letter-spacing:-.56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%;display:inline-block}.pl-block-page__title__append{margin-left:auto;display:flex;align-items:center;gap:2px}.pl-block-page__title__append__teleport{display:flex;align-items:center;gap:2px}.pl-block-page__body{max-width:100%;display:flex;flex-direction:column;gap:var(--gap-v);padding:var(--pl-block-page-body-padding);--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-block-page__body::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-block-page__body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-block-page__body::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}")),document.head.appendChild(e)}}catch(a){console.error("vite-plugin-css-injected-by-js",a)}})();
2
- import { defineComponent as u, useSlots as m, computed as v, createElementBlock as o, openBlock as l, normalizeClass as f, createElementVNode as t, unref as d, withDirectives as c, renderSlot as s, createVNode as y, normalizeProps as g, guardReactiveProps as b, vShow as h, normalizeStyle as k } from "vue";
3
- import { PlBlockPageTitleTeleportId as P } from "./PlBlockPageTitleTeleportId.js";
4
-
5
- import { PL_PLACEHOLDER_TEXTS as B } from "../PlPlaceholder/index.js";
6
- import L from "../PlPlaceholder/PlPlaceholder.vue.js";
7
- const T = {
8
- key: 0,
9
- class: "pl-block-page__title"
10
- }, E = { class: "pl-block-page__title__default" }, S = { class: "pl-block-page__title__append" }, A = ["id"], G = { key: 1 }, N = { class: "pl-block-page__body" }, $ = {
11
- name: "PlBlockPage"
12
- }, R = /* @__PURE__ */ u({
13
- ...$,
14
- props: {
15
- noBodyGutters: { type: Boolean },
16
- bodyLoading: {}
17
- },
18
- setup(a) {
19
- const p = m(), n = a, i = v(() => typeof n.bodyLoading == "string" ? { variant: n.bodyLoading, ...B.LOADING } : n.bodyLoading), r = (e) => {
20
- e.removeAttribute("title"), e.clientWidth < e.scrollWidth && e.setAttribute("title", e.innerText);
21
- }, _ = {
22
- mounted: r,
23
- updated: r
24
- };
25
- return (e, w) => (l(), o("div", {
26
- class: f(["pl-layout-component pl-block-page", { noBodyGutters: a.noBodyGutters }])
27
- }, [
28
- d(p).title ? (l(), o("div", T, [
29
- t("div", E, [
30
- c((l(), o("span", null, [
31
- s(e.$slots, "title")
32
- ])), [
33
- [_]
34
- ]),
35
- s(e.$slots, "after-title")
36
- ]),
37
- t("div", S, [
38
- t("div", {
39
- id: d(P),
40
- class: "pl-block-page__title__append__teleport"
41
- }, null, 8, A),
42
- s(e.$slots, "append")
43
- ])
44
- ])) : (l(), o("div", G)),
45
- t("div", N, [
46
- c(y(d(L), g(b(i.value)), null, 16), [
47
- [h, i.value]
48
- ]),
49
- t("div", {
50
- style: k({ display: i.value ? "none" : "contents" })
51
- }, [
52
- s(e.$slots, "default")
53
- ], 4)
54
- ])
55
- ], 2));
56
- }
57
- });
1
+ import o from "./PlBlockPage.vue2.js";
2
+ import s from "./PlBlockPage.vue3.js";
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const e = {
5
+ $style: s
6
+ }, m = /* @__PURE__ */ t(o, [["__cssModules", e]]);
58
7
  export {
59
- R as default
8
+ m as default
60
9
  };
61
10
  //# sourceMappingURL=PlBlockPage.vue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlBlockPage.vue.js","sources":["../../../src/layout/PlBlockPage/PlBlockPage.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Root block page component */\nexport default {\n name: 'PlBlockPage',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue';\nimport { PlBlockPageTitleTeleportId } from './PlBlockPageTitleTeleportId';\nimport './pl-block-page.scss';\nimport { PL_PLACEHOLDER_TEXTS, PlPlaceholder, type PlPlaceholderProps } from '../PlPlaceholder';\n\nconst slots = useSlots();\n\nconst props = defineProps<{\n /**\n * If `true` body gutters are removed\n */\n noBodyGutters?: boolean;\n /**\n * If defined, a loading overlay is displayed on the page body (over all default slot content)\n */\n bodyLoading?: PlPlaceholderProps['variant'] | PlPlaceholderProps;\n}>();\n\nconst loadingPlaceholder = computed<PlPlaceholderProps | undefined>(() => {\n if (typeof props.bodyLoading === 'string') {\n return { variant: props.bodyLoading, ...PL_PLACEHOLDER_TEXTS.LOADING };\n }\n return props.bodyLoading;\n});\n\nconst setTitleIfNeeded = (el: HTMLElement) => {\n el.removeAttribute('title');\n if (el.clientWidth < el.scrollWidth) {\n el.setAttribute('title', el.innerText);\n }\n};\n\nconst vTextOverflownTitle = {\n mounted: setTitleIfNeeded,\n updated: setTitleIfNeeded,\n};\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-block-page\" :class=\"{ noBodyGutters }\">\n <div v-if=\"slots.title\" class=\"pl-block-page__title\">\n <div class=\"pl-block-page__title__default\">\n <span v-text-overflown-title><slot name=\"title\" /></span>\n <slot name=\"after-title\" />\n </div>\n <div class=\"pl-block-page__title__append\">\n <div\n :id=\"PlBlockPageTitleTeleportId\"\n class=\"pl-block-page__title__append__teleport\"\n />\n <slot name=\"append\" />\n </div>\n </div>\n <div v-else />\n <div class=\"pl-block-page__body\">\n <PlPlaceholder v-show=\"loadingPlaceholder\" v-bind=\"loadingPlaceholder\" />\n <div :style=\"{ display: loadingPlaceholder ? 'none' : 'contents' }\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n"],"names":["__default__","slots","useSlots","props","__props","loadingPlaceholder","computed","PL_PLACEHOLDER_TEXTS","setTitleIfNeeded","el","vTextOverflownTitle","_createElementBlock","_normalizeClass","_unref","_openBlock","_hoisted_1","_createElementVNode","_hoisted_2","_renderSlot","_ctx","_hoisted_3","PlBlockPageTitleTeleportId","_hoisted_5","_hoisted_6","_withDirectives","_createVNode"],"mappings":";;;;;;;;oKAEAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;AASA,UAAMC,IAAQC,EAAA,GAERC,IAAQC,GAWRC,IAAqBC,EAAyC,MAC9D,OAAOH,EAAM,eAAgB,WACxB,EAAE,SAASA,EAAM,aAAa,GAAGI,EAAqB,QAAA,IAExDJ,EAAM,WACd,GAEKK,IAAmB,CAACC,MAAoB;AAC5C,MAAAA,EAAG,gBAAgB,OAAO,GACtBA,EAAG,cAAcA,EAAG,eACtBA,EAAG,aAAa,SAASA,EAAG,SAAS;AAAA,IAEzC,GAEMC,IAAsB;AAAA,MAC1B,SAASF;AAAA,MACT,SAASA;AAAA,IAAA;2BAKTG,EAqBM,OAAA;AAAA,MArBD,OAAKC,EAAA,CAAC,qCAAmC,EAAA,eAAWR,EAAA,eAAa,CAAA;AAAA,IAAA;MACzDS,EAAAZ,CAAA,EAAM,SAAjBa,KAAAH,EAYM,OAZNI,GAYM;AAAA,QAXJC,EAGM,OAHNC,GAGM;AAAA,kBAFJN,EAAyD,QAAA,MAAA;AAAA,YAA5BO,EAAqBC,EAAA,QAAA,OAAA;AAAA,UAAA;;;UAClDD,EAA2BC,EAAA,QAAA,aAAA;AAAA,QAAA;QAE7BH,EAMM,OANNI,GAMM;AAAA,UALJJ,EAGE,OAAA;AAAA,YAFC,IAAIH,EAAAQ,CAAA;AAAA,YACL,OAAM;AAAA,UAAA;UAERH,EAAsBC,EAAA,QAAA,QAAA;AAAA,QAAA;kBAG1BR,EAAc,OAAAW,CAAA;AAAA,MACdN,EAKM,OALNO,GAKM;AAAA,QAJJC,EAAAC,EAAyEZ,UAAtBR,EAAA,KAAkB,CAAA,GAAA,MAAA,EAAA,GAAA;AAAA,cAA9CA,EAAA,KAAkB;AAAA,QAAA;QACzCW,EAEM,OAAA;AAAA,UAFA,oBAAkBX,EAAA,QAAkB,SAAA,YAAA;AAAA,QAAA;UACxCa,EAAQC,EAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
1
+ {"version":3,"file":"PlBlockPage.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,5 +1,90 @@
1
- import f from "./PlBlockPage.vue.js";
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".pl-block-page{--pl-block-page-body-padding: var(--main-spacing, 24px);background-color:var(--bg-elevated-01);height:100%;max-width:100%;display:grid;grid-template-rows:auto minmax(0,1fr)}.pl-block-page.noBodyGutters{--pl-block-page-body-padding: 0}.pl-block-page__title{display:flex;align-items:center;gap:12px;min-width:0;max-width:100%}.pl-block-page__title__default{flex:1;min-width:0;max-width:100%;margin:0;color:var(--txt-01);display:flex;flex-direction:row;align-items:center;gap:12px}.pl-block-page__title__default>span{font-size:28px;font-weight:500;line-height:36px;letter-spacing:-.56px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;max-width:100%;display:inline-block}.pl-block-page__title__append{margin-left:auto;display:flex;align-items:center;gap:2px}.pl-block-page__title__append__teleport{display:contents}.pl-block-page__body{max-width:100%;display:flex;flex-direction:column;gap:var(--gap-v);padding:var(--pl-block-page-body-padding);--thumb-color: var(--ic-02);overflow-y:auto;overflow-x:auto}.pl-block-page__body::-webkit-scrollbar{width:var(--scrollbar-width, 6px);height:5px;background-color:transparent;display:block}.pl-block-page__body::-webkit-scrollbar-thumb{background:var(--thumb-color);border-radius:5px}.pl-block-page__body::-webkit-scrollbar-thumb:hover{--thumb-color: var(--border-color-focus)}")),document.head.appendChild(e)}}catch(l){console.error("vite-plugin-css-injected-by-js",l)}})();
2
+ import { defineComponent as g, mergeModels as b, useSlots as h, useModel as k, useCssModule as P, computed as T, useTemplateRef as B, watchEffect as L, createElementBlock as o, openBlock as s, normalizeClass as i, createElementVNode as t, unref as l, createCommentVNode as E, renderSlot as r, toDisplayString as M, withDirectives as v, createVNode as y, vModelText as S, normalizeProps as C, guardReactiveProps as z, vShow as D, normalizeStyle as G } from "vue";
3
+ import { PlBlockPageTitleTeleportTarget as N } from "./PlBlockPageTitleTeleportTarget.js";
4
+
5
+ import V from "../../components/PlIcon24/PlIcon24.vue.js";
6
+ import { PL_PLACEHOLDER_TEXTS as $ } from "../PlPlaceholder/index.js";
7
+ import w from "../PlPlaceholder/PlPlaceholder.vue.js";
8
+ const I = { class: "pl-block-page__title" }, R = { class: "pl-block-page__title__default" }, A = { key: 0 }, O = { key: 1 }, H = { class: "pl-block-page__title__append" }, U = ["placeholder"], X = { key: 1 }, j = { class: "pl-block-page__body" }, q = {
9
+ name: "PlBlockPage"
10
+ }, Z = /* @__PURE__ */ g({
11
+ ...q,
12
+ props: /* @__PURE__ */ b({
13
+ title: {},
14
+ subtitlePlaceholder: {},
15
+ noBodyGutters: { type: Boolean },
16
+ bodyLoading: {}
17
+ }, {
18
+ subtitle: {},
19
+ subtitleModifiers: {}
20
+ }),
21
+ emits: ["update:subtitle"],
22
+ setup(p) {
23
+ const u = h(), e = p, n = k(p, "subtitle"), d = P(), c = T(() => typeof e.bodyLoading == "string" ? { variant: e.bodyLoading, ...$.LOADING } : e.bodyLoading), _ = B("teleportTarget");
24
+ return L(() => {
25
+ N.value = _.value;
26
+ }), (a, m) => (s(), o("div", {
27
+ class: i(["pl-layout-component pl-block-page", { noBodyGutters: e.noBodyGutters }])
28
+ }, [
29
+ l(u).title || e.title ? (s(), o("div", {
30
+ key: 0,
31
+ class: i(l(d).header)
32
+ }, [
33
+ t("div", I, [
34
+ t("div", R, [
35
+ l(u).title ? (s(), o("span", A, [
36
+ r(a.$slots, "title")
37
+ ])) : (s(), o("span", O, M(e.title), 1)),
38
+ r(a.$slots, "after-title")
39
+ ]),
40
+ t("div", H, [
41
+ t("div", {
42
+ ref_key: "teleportTarget",
43
+ ref: _,
44
+ class: "pl-block-page__title__append__teleport"
45
+ }, null, 512),
46
+ r(a.$slots, "append")
47
+ ])
48
+ ]),
49
+ n.value !== void 0 ? (s(), o("div", {
50
+ key: 0,
51
+ class: i(l(d).subtitle)
52
+ }, [
53
+ v(t("input", {
54
+ "onUpdate:modelValue": m[0] || (m[0] = (f) => n.value = f),
55
+ placeholder: e.subtitlePlaceholder
56
+ }, null, 8, U), [
57
+ [
58
+ S,
59
+ n.value,
60
+ void 0,
61
+ {
62
+ lazy: !0,
63
+ trim: !0
64
+ }
65
+ ]
66
+ ]),
67
+ y(l(V), {
68
+ class: i(l(d).editIcon),
69
+ name: "edit",
70
+ color: "var(--ic-02)"
71
+ }, null, 8, ["class"])
72
+ ], 2)) : E("", !0)
73
+ ], 2)) : (s(), o("div", X)),
74
+ t("div", j, [
75
+ v(y(l(w), C(z(c.value)), null, 16), [
76
+ [D, c.value]
77
+ ]),
78
+ t("div", {
79
+ style: G({ display: c.value ? "none" : "contents" })
80
+ }, [
81
+ r(a.$slots, "default")
82
+ ], 4)
83
+ ])
84
+ ], 2));
85
+ }
86
+ });
2
87
  export {
3
- f as default
88
+ Z as default
4
89
  };
5
90
  //# sourceMappingURL=PlBlockPage.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlBlockPage.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"PlBlockPage.vue2.js","sources":["../../../src/layout/PlBlockPage/PlBlockPage.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Root block page component */\nexport default {\n name: 'PlBlockPage',\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport { computed, useCssModule, useSlots, useTemplateRef, watchEffect } from 'vue';\nimport { PlBlockPageTitleTeleportTarget } from './PlBlockPageTitleTeleportTarget';\nimport './pl-block-page.scss';\nimport { PlIcon24 } from '../../components/PlIcon24';\nimport { type PlPlaceholderProps, PL_PLACEHOLDER_TEXTS, PlPlaceholder } from '../PlPlaceholder';\n\nconst slots = useSlots();\n\nconst props = defineProps<{\n /**\n * Page title (won't be displayed if `title` slot is also provided)\n */\n title?: string;\n /**\n * Text to display when subtitle is empty\n */\n subtitlePlaceholder?: string;\n /**\n * If `true` body gutters are removed\n */\n noBodyGutters?: boolean;\n /**\n * If defined, a loading overlay is displayed on the page body (over all default slot content)\n */\n bodyLoading?: PlPlaceholderProps['variant'] | PlPlaceholderProps;\n}>();\n\n/** Page subtitle (editable) */\nconst subtitle = defineModel<string>('subtitle');\n\nconst styles = useCssModule();\n\nconst loadingPlaceholder = computed<PlPlaceholderProps | undefined>(() => {\n if (typeof props.bodyLoading === 'string') {\n return { variant: props.bodyLoading, ...PL_PLACEHOLDER_TEXTS.LOADING };\n }\n return props.bodyLoading;\n});\n\nconst teleportTarget = useTemplateRef('teleportTarget');\n\nwatchEffect(() => {\n PlBlockPageTitleTeleportTarget.value = teleportTarget.value;\n});\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-block-page\" :class=\"{ noBodyGutters: props.noBodyGutters }\">\n <div v-if=\"slots.title || props.title\" :class=\"styles.header\">\n <div class=\"pl-block-page__title\">\n <div class=\"pl-block-page__title__default\">\n <span v-if=\"slots.title\"><slot name=\"title\" /></span>\n <span v-else>{{ props.title }}</span>\n <slot name=\"after-title\" />\n </div>\n <div class=\"pl-block-page__title__append\">\n <div\n ref=\"teleportTarget\"\n class=\"pl-block-page__title__append__teleport\"\n />\n <slot name=\"append\" />\n </div>\n </div>\n <div v-if=\"subtitle !== undefined\" :class=\"styles.subtitle\">\n <input\n v-model.lazy.trim=\"subtitle\"\n :placeholder=\"props.subtitlePlaceholder\"\n />\n <PlIcon24 :class=\"styles.editIcon\" name=\"edit\" color=\"var(--ic-02)\" />\n </div>\n </div>\n <div v-else />\n <div class=\"pl-block-page__body\">\n <PlPlaceholder v-show=\"loadingPlaceholder\" v-bind=\"loadingPlaceholder\" />\n <div :style=\"{ display: loadingPlaceholder ? 'none' : 'contents' }\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style module>\n.header {\n display: flex;\n flex-direction: column;\n padding: 12px 24px;\n margin-block-end: -8px;\n gap: 2px;\n overflow: hidden;\n}\n\n.subtitle {\n display: flex;\n padding-inline-end: 28px;\n\n input {\n anchor-name: --pl-block-page-subtitle;\n field-sizing: content;\n padding: 0;\n border: none;\n outline: none;\n caret-color: var(--border-color-focus);\n color: var(--txt-01);\n font-family: Manrope;\n font-size: 20px;\n font-weight: 500;\n line-height: 28px;\n letter-spacing: -0.2px;\n margin-block-end: -4px;\n max-inline-size: 100%;\n text-overflow: ellipsis;\n\n &::placeholder {\n color: var(--txt-03);\n }\n }\n\n .editIcon {\n visibility: hidden;\n position: fixed;\n position-anchor: --pl-block-page-subtitle;\n position-area: center inline-end;\n inset-inline-start: 4px;\n }\n &:hover, &:focus-within {\n .editIcon {\n visibility: visible;\n }\n }\n}\n</style>\n"],"names":["__default__","slots","useSlots","props","__props","subtitle","_useModel","styles","useCssModule","loadingPlaceholder","computed","PL_PLACEHOLDER_TEXTS","teleportTarget","useTemplateRef","watchEffect","PlBlockPageTitleTeleportTarget","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_hoisted_1","_hoisted_2","_hoisted_3","_renderSlot","_ctx","_hoisted_4","_toDisplayString","_hoisted_5","$event","_createVNode","PlIcon24","_hoisted_7","_hoisted_8","_withDirectives"],"mappings":";;;;;;uPAEAA,IAAe;AAAA,EACb,MAAM;AACR;;;;;;;;;;;;;AAUA,UAAMC,IAAQC,EAAA,GAERC,IAAQC,GAoBRC,IAAWC,KAAoB,UAAU,GAEzCC,IAASC,EAAA,GAETC,IAAqBC,EAAyC,MAC9D,OAAOP,EAAM,eAAgB,WACxB,EAAE,SAASA,EAAM,aAAa,GAAGQ,EAAqB,QAAA,IAExDR,EAAM,WACd,GAEKS,IAAiBC,EAAe,gBAAgB;AAEtD,WAAAC,EAAY,MAAM;AAChB,MAAAC,EAA+B,QAAQH,EAAe;AAAA,IACxD,CAAC,mBAICI,EA+BM,OAAA;AAAA,MA/BD,OAAKC,EAAA,CAAC,qCAAmC,EAAA,eAA0Bd,EAAM,eAAa,CAAA;AAAA,IAAA;MAC9Ee,EAAAjB,CAAA,EAAM,SAASE,EAAM,cAAhCa,EAsBM,OAAA;AAAA;QAtBkC,OAAKC,EAAEC,EAAAX,CAAA,EAAO,MAAM;AAAA,MAAA;QAC1DY,EAaM,OAbNC,GAaM;AAAA,UAZJD,EAIM,OAJNE,GAIM;AAAA,YAHQH,EAAAjB,CAAA,EAAM,cAAlBe,EAAqD,QAAAM,GAAA;AAAA,cAA5BC,EAAqBC,EAAA,QAAA,OAAA;AAAA,YAAA,YAC9CR,EAAqC,QAAAS,GAAAC,EAArBvB,EAAM,KAAK,GAAA,CAAA;AAAA,YAC3BoB,EAA2BC,EAAA,QAAA,aAAA;AAAA,UAAA;UAE7BL,EAMM,OANNQ,GAMM;AAAA,YALJR,EAGE,OAAA;AAAA,uBAFI;AAAA,cAAJ,KAAIP;AAAA,cACJ,OAAM;AAAA,YAAA;YAERW,EAAsBC,EAAA,QAAA,QAAA;AAAA,UAAA;;QAGfnB,EAAA,UAAa,eAAxBW,EAMM,OAAA;AAAA;UAN8B,OAAKC,EAAEC,EAAAX,CAAA,EAAO,QAAQ;AAAA,QAAA;YACxDY,EAGE,SAAA;AAAA,0DAFmBd,EAAQ,QAAAuB;AAAA,YAC1B,aAAazB,EAAM;AAAA,UAAA;;;cADDE,EAAA;AAAA;;gBAAX,MAAR;AAAA,gBAAa,MAAb;AAAA,cAAA;AAAA;;UAGFwB,EAAsEX,EAAAY,CAAA,GAAA;AAAA,YAA3D,OAAKb,EAAEC,EAAAX,CAAA,EAAO,QAAQ;AAAA,YAAE,MAAK;AAAA,YAAO,OAAM;AAAA,UAAA;;qBAGzDS,EAAc,OAAAe,CAAA;AAAA,MACdZ,EAKM,OALNa,GAKM;AAAA,QAJJC,EAAAJ,EAAyEX,UAAtBT,EAAA,KAAkB,CAAA,GAAA,MAAA,EAAA,GAAA;AAAA,cAA9CA,EAAA,KAAkB;AAAA,QAAA;QACzCU,EAEM,OAAA;AAAA,UAFA,oBAAkBV,EAAA,QAAkB,SAAA,YAAA;AAAA,QAAA;UACxCc,EAAQC,EAAA,QAAA,SAAA;AAAA,QAAA;;;;;"}
@@ -0,0 +1,13 @@
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._header_y99r6_2{display:flex;flex-direction:column;padding:12px 24px;margin-block-end:-8px;gap:2px;overflow:hidden}._subtitle_y99r6_11{display:flex;padding-inline-end:28px}._subtitle_y99r6_11 input{anchor-name:--pl-block-page-subtitle;field-sizing:content;padding:0;border:none;outline:none;caret-color:var(--border-color-focus);color:var(--txt-01);font-family:Manrope;font-size:20px;font-weight:500;line-height:28px;letter-spacing:-.2px;margin-block-end:-4px;max-inline-size:100%;text-overflow:ellipsis}._subtitle_y99r6_11 input::placeholder{color:var(--txt-03)}._subtitle_y99r6_11 ._editIcon_y99r6_37{visibility:hidden;position:fixed;position-anchor:--pl-block-page-subtitle;position-area:center inline-end;inset-inline-start:4px}._subtitle_y99r6_11:hover ._editIcon_y99r6_37,._subtitle_y99r6_11:focus-within ._editIcon_y99r6_37{visibility:visible}")),document.head.appendChild(e)}}catch(i){console.error("vite-plugin-css-injected-by-js",i)}})();
2
+ const t = "_header_y99r6_2", e = "_subtitle_y99r6_11", s = "_editIcon_y99r6_37", _ = {
3
+ header: t,
4
+ subtitle: e,
5
+ editIcon: s
6
+ };
7
+ export {
8
+ _ as default,
9
+ s as editIcon,
10
+ t as header,
11
+ e as subtitle
12
+ };
13
+ //# sourceMappingURL=PlBlockPage.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlBlockPage.vue3.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -0,0 +1,2 @@
1
+ export declare const PlBlockPageTitleTeleportTarget: import('vue').Ref<HTMLElement | null | undefined, HTMLElement | null | undefined>;
2
+ //# sourceMappingURL=PlBlockPageTitleTeleportTarget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlBlockPageTitleTeleportTarget.d.ts","sourceRoot":"","sources":["../../../src/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,8BAA8B,mFAA4B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ref as e } from "vue";
2
+ const r = e();
3
+ export {
4
+ r as PlBlockPageTitleTeleportTarget
5
+ };
6
+ //# sourceMappingURL=PlBlockPageTitleTeleportTarget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlBlockPageTitleTeleportTarget.js","sources":["../../../src/layout/PlBlockPage/PlBlockPageTitleTeleportTarget.ts"],"sourcesContent":["import { ref } from 'vue';\n\nexport const PlBlockPageTitleTeleportTarget = ref<HTMLElement | null>();\n"],"names":["PlBlockPageTitleTeleportTarget","ref"],"mappings":";AAEO,MAAMA,IAAiCC,EAAA;"}
@@ -1,2 +1,2 @@
1
- export declare function usePlBlockPageTitleTeleportTarget(componentName: string): import('vue').Ref<string | undefined, string | undefined>;
1
+ export declare function usePlBlockPageTitleTeleportTarget(componentName: string): import('vue').Ref<HTMLElement | null | undefined, HTMLElement | null | undefined>;
2
2
  //# sourceMappingURL=usePlBlockPageTitleTeleportTarget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePlBlockPageTitleTeleportTarget.d.ts","sourceRoot":"","sources":["../../../src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts"],"names":[],"mappings":"AAKA,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,MAAM,6DAmBtE"}
1
+ {"version":3,"file":"usePlBlockPageTitleTeleportTarget.d.ts","sourceRoot":"","sources":["../../../src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts"],"names":[],"mappings":"AAGA,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,MAAM,qFAgBtE"}
@@ -1,18 +1,17 @@
1
- import { ref as n, onMounted as c, onUpdated as l, nextTick as i } from "vue";
2
- import { PlBlockPageTitleTeleportId as s } from "./PlBlockPageTitleTeleportId.js";
3
- const t = "#" + s;
4
- function p(r) {
5
- const e = n(), o = () => {
6
- i(() => {
7
- e.value = document.querySelector(t) ? t : void 0, e.value || console.error(
8
- `[${r}] Error: 'PlBlockPage' component is missing.
9
- Ensure that you placed the components inside <PlBlockPage />.`
1
+ import { onMounted as r, onUpdated as i, nextTick as l } from "vue";
2
+ import { PlBlockPageTitleTeleportTarget as o } from "./PlBlockPageTitleTeleportTarget.js";
3
+ function a(t) {
4
+ const e = () => {
5
+ l(() => {
6
+ o.value || console.error(
7
+ `[${t}] Error: Either 'PlBlockPage' component is missing or it has no title.
8
+ Ensure that you placed the components inside <PlBlockPage /> with a title.`
10
9
  );
11
10
  });
12
11
  };
13
- return c(o), l(o), e;
12
+ return r(e), i(e), o;
14
13
  }
15
14
  export {
16
- p as usePlBlockPageTitleTeleportTarget
15
+ a as usePlBlockPageTitleTeleportTarget
17
16
  };
18
17
  //# sourceMappingURL=usePlBlockPageTitleTeleportTarget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePlBlockPageTitleTeleportTarget.js","sources":["../../../src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts"],"sourcesContent":["import { nextTick, onMounted, onUpdated, ref } from 'vue';\nimport { PlBlockPageTitleTeleportId } from './PlBlockPageTitleTeleportId';\n\nconst selector = '#' + PlBlockPageTitleTeleportId;\n\nexport function usePlBlockPageTitleTeleportTarget(componentName: string) {\n const target = ref<string>();\n\n const check = () => {\n nextTick(() => {\n target.value = document.querySelector(selector) ? selector : undefined;\n if (!target.value) {\n console.error(\n `[${componentName}] Error: 'PlBlockPage' component is missing. \n Ensure that you placed the components inside <PlBlockPage />.`,\n );\n }\n });\n };\n\n onMounted(check);\n onUpdated(check);\n\n return target;\n}\n"],"names":["selector","PlBlockPageTitleTeleportId","usePlBlockPageTitleTeleportTarget","componentName","target","ref","check","nextTick","onMounted","onUpdated"],"mappings":";;AAGA,MAAMA,IAAW,MAAMC;AAEhB,SAASC,EAAkCC,GAAuB;AACvE,QAAMC,IAASC,EAAA,GAETC,IAAQ,MAAM;AAClB,IAAAC,EAAS,MAAM;AACb,MAAAH,EAAO,QAAQ,SAAS,cAAcJ,CAAQ,IAAIA,IAAW,QACxDI,EAAO,SACV,QAAQ;AAAA,QACN,IAAID,CAAa;AAAA;AAAA,MAAA;AAAA,IAIvB,CAAC;AAAA,EACH;AAEA,SAAAK,EAAUF,CAAK,GACfG,EAAUH,CAAK,GAERF;AACT;"}
1
+ {"version":3,"file":"usePlBlockPageTitleTeleportTarget.js","sources":["../../../src/layout/PlBlockPage/usePlBlockPageTitleTeleportTarget.ts"],"sourcesContent":["import { nextTick, onMounted, onUpdated } from 'vue';\nimport { PlBlockPageTitleTeleportTarget } from './PlBlockPageTitleTeleportTarget';\n\nexport function usePlBlockPageTitleTeleportTarget(componentName: string) {\n const check = () => {\n nextTick(() => {\n if (!PlBlockPageTitleTeleportTarget.value) {\n console.error(\n `[${componentName}] Error: Either 'PlBlockPage' component is missing or it has no title. \n Ensure that you placed the components inside <PlBlockPage /> with a title.`,\n );\n }\n });\n };\n\n onMounted(check);\n onUpdated(check);\n\n return PlBlockPageTitleTeleportTarget;\n}\n"],"names":["usePlBlockPageTitleTeleportTarget","componentName","check","nextTick","PlBlockPageTitleTeleportTarget","onMounted","onUpdated"],"mappings":";;AAGO,SAASA,EAAkCC,GAAuB;AACvE,QAAMC,IAAQ,MAAM;AAClB,IAAAC,EAAS,MAAM;AACb,MAAKC,EAA+B,SAClC,QAAQ;AAAA,QACN,IAAIH,CAAa;AAAA;AAAA,MAAA;AAAA,IAIvB,CAAC;AAAA,EACH;AAEA,SAAAI,EAAUH,CAAK,GACfI,EAAUJ,CAAK,GAERE;AACT;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/uikit",
3
- "version": "2.9.1",
3
+ "version": "2.10.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -32,8 +32,8 @@
32
32
  "d3-axis": "^3.0.0",
33
33
  "resize-observer-polyfill": "^1.5.1",
34
34
  "canonicalize": "~2.1.0",
35
- "@platforma-sdk/model": "1.51.2",
36
- "@milaboratories/helpers": "1.13.0"
35
+ "@milaboratories/helpers": "1.13.0",
36
+ "@platforma-sdk/model": "1.51.2"
37
37
  },
38
38
  "devDependencies": {
39
39
  "jsdom": "^25.0.1",
@@ -43,9 +43,9 @@
43
43
  "yarpm": "^1.2.0",
44
44
  "svgo": "^3.3.2",
45
45
  "typescript": "~5.6.3",
46
+ "@milaboratories/build-configs": "1.2.1",
46
47
  "@milaboratories/eslint-config": "1.0.5",
47
48
  "@milaboratories/ts-builder": "1.2.1",
48
- "@milaboratories/build-configs": "1.2.1",
49
49
  "@milaboratories/ts-configs": "1.2.0"
50
50
  },
51
51
  "scripts": {
@@ -6,14 +6,23 @@ export default {
6
6
  </script>
7
7
 
8
8
  <script lang="ts" setup>
9
- import { computed, useSlots } from 'vue';
10
- import { PlBlockPageTitleTeleportId } from './PlBlockPageTitleTeleportId';
9
+ import { computed, useCssModule, useSlots, useTemplateRef, watchEffect } from 'vue';
10
+ import { PlBlockPageTitleTeleportTarget } from './PlBlockPageTitleTeleportTarget';
11
11
  import './pl-block-page.scss';
12
- import { PL_PLACEHOLDER_TEXTS, PlPlaceholder, type PlPlaceholderProps } from '../PlPlaceholder';
12
+ import { PlIcon24 } from '../../components/PlIcon24';
13
+ import { type PlPlaceholderProps, PL_PLACEHOLDER_TEXTS, PlPlaceholder } from '../PlPlaceholder';
13
14
 
14
15
  const slots = useSlots();
15
16
 
16
17
  const props = defineProps<{
18
+ /**
19
+ * Page title (won't be displayed if `title` slot is also provided)
20
+ */
21
+ title?: string;
22
+ /**
23
+ * Text to display when subtitle is empty
24
+ */
25
+ subtitlePlaceholder?: string;
17
26
  /**
18
27
  * If `true` body gutters are removed
19
28
  */
@@ -24,6 +33,11 @@ const props = defineProps<{
24
33
  bodyLoading?: PlPlaceholderProps['variant'] | PlPlaceholderProps;
25
34
  }>();
26
35
 
36
+ /** Page subtitle (editable) */
37
+ const subtitle = defineModel<string>('subtitle');
38
+
39
+ const styles = useCssModule();
40
+
27
41
  const loadingPlaceholder = computed<PlPlaceholderProps | undefined>(() => {
28
42
  if (typeof props.bodyLoading === 'string') {
29
43
  return { variant: props.bodyLoading, ...PL_PLACEHOLDER_TEXTS.LOADING };
@@ -31,32 +45,36 @@ const loadingPlaceholder = computed<PlPlaceholderProps | undefined>(() => {
31
45
  return props.bodyLoading;
32
46
  });
33
47
 
34
- const setTitleIfNeeded = (el: HTMLElement) => {
35
- el.removeAttribute('title');
36
- if (el.clientWidth < el.scrollWidth) {
37
- el.setAttribute('title', el.innerText);
38
- }
39
- };
48
+ const teleportTarget = useTemplateRef('teleportTarget');
40
49
 
41
- const vTextOverflownTitle = {
42
- mounted: setTitleIfNeeded,
43
- updated: setTitleIfNeeded,
44
- };
50
+ watchEffect(() => {
51
+ PlBlockPageTitleTeleportTarget.value = teleportTarget.value;
52
+ });
45
53
  </script>
46
54
 
47
55
  <template>
48
- <div class="pl-layout-component pl-block-page" :class="{ noBodyGutters }">
49
- <div v-if="slots.title" class="pl-block-page__title">
50
- <div class="pl-block-page__title__default">
51
- <span v-text-overflown-title><slot name="title" /></span>
52
- <slot name="after-title" />
56
+ <div class="pl-layout-component pl-block-page" :class="{ noBodyGutters: props.noBodyGutters }">
57
+ <div v-if="slots.title || props.title" :class="styles.header">
58
+ <div class="pl-block-page__title">
59
+ <div class="pl-block-page__title__default">
60
+ <span v-if="slots.title"><slot name="title" /></span>
61
+ <span v-else>{{ props.title }}</span>
62
+ <slot name="after-title" />
63
+ </div>
64
+ <div class="pl-block-page__title__append">
65
+ <div
66
+ ref="teleportTarget"
67
+ class="pl-block-page__title__append__teleport"
68
+ />
69
+ <slot name="append" />
70
+ </div>
53
71
  </div>
54
- <div class="pl-block-page__title__append">
55
- <div
56
- :id="PlBlockPageTitleTeleportId"
57
- class="pl-block-page__title__append__teleport"
72
+ <div v-if="subtitle !== undefined" :class="styles.subtitle">
73
+ <input
74
+ v-model.lazy.trim="subtitle"
75
+ :placeholder="props.subtitlePlaceholder"
58
76
  />
59
- <slot name="append" />
77
+ <PlIcon24 :class="styles.editIcon" name="edit" color="var(--ic-02)" />
60
78
  </div>
61
79
  </div>
62
80
  <div v-else />
@@ -68,3 +86,54 @@ const vTextOverflownTitle = {
68
86
  </div>
69
87
  </div>
70
88
  </template>
89
+
90
+ <style module>
91
+ .header {
92
+ display: flex;
93
+ flex-direction: column;
94
+ padding: 12px 24px;
95
+ margin-block-end: -8px;
96
+ gap: 2px;
97
+ overflow: hidden;
98
+ }
99
+
100
+ .subtitle {
101
+ display: flex;
102
+ padding-inline-end: 28px;
103
+
104
+ input {
105
+ anchor-name: --pl-block-page-subtitle;
106
+ field-sizing: content;
107
+ padding: 0;
108
+ border: none;
109
+ outline: none;
110
+ caret-color: var(--border-color-focus);
111
+ color: var(--txt-01);
112
+ font-family: Manrope;
113
+ font-size: 20px;
114
+ font-weight: 500;
115
+ line-height: 28px;
116
+ letter-spacing: -0.2px;
117
+ margin-block-end: -4px;
118
+ max-inline-size: 100%;
119
+ text-overflow: ellipsis;
120
+
121
+ &::placeholder {
122
+ color: var(--txt-03);
123
+ }
124
+ }
125
+
126
+ .editIcon {
127
+ visibility: hidden;
128
+ position: fixed;
129
+ position-anchor: --pl-block-page-subtitle;
130
+ position-area: center inline-end;
131
+ inset-inline-start: 4px;
132
+ }
133
+ &:hover, &:focus-within {
134
+ .editIcon {
135
+ visibility: visible;
136
+ }
137
+ }
138
+ }
139
+ </style>
@@ -0,0 +1,3 @@
1
+ import { ref } from 'vue';
2
+
3
+ export const PlBlockPageTitleTeleportTarget = ref<HTMLElement | null>();
@@ -1,9 +1,8 @@
1
- @use "../../assets/mixins.scss" as *;
1
+ @use '../../assets/mixins.scss' as *;
2
2
 
3
3
  .pl-block-page {
4
4
  --pl-block-page-body-padding: var(--main-spacing, 24px);
5
5
 
6
- padding: var(--container-spacing);
7
6
  background-color: var(--bg-elevated-01);
8
7
  height: 100%;
9
8
  max-width: 100%;
@@ -15,11 +14,9 @@
15
14
  }
16
15
 
17
16
  &__title {
18
- height: 80px;
19
17
  display: flex;
20
18
  align-items: center;
21
19
  gap: 12px;
22
- padding: 20px 24px;
23
20
  min-width: 0;
24
21
  max-width: 100%;
25
22
 
@@ -55,9 +52,7 @@
55
52
  gap: 2px;
56
53
 
57
54
  &__teleport {
58
- display: flex;
59
- align-items: center;
60
- gap: 2px;
55
+ display: contents;
61
56
  }
62
57
  }
63
58
  }
@@ -70,4 +65,4 @@
70
65
  padding: var(--pl-block-page-body-padding);
71
66
  @include scrollbar(true, true);
72
67
  }
73
- }
68
+ }
@@ -1,18 +1,13 @@
1
- import { nextTick, onMounted, onUpdated, ref } from 'vue';
2
- import { PlBlockPageTitleTeleportId } from './PlBlockPageTitleTeleportId';
3
-
4
- const selector = '#' + PlBlockPageTitleTeleportId;
1
+ import { nextTick, onMounted, onUpdated } from 'vue';
2
+ import { PlBlockPageTitleTeleportTarget } from './PlBlockPageTitleTeleportTarget';
5
3
 
6
4
  export function usePlBlockPageTitleTeleportTarget(componentName: string) {
7
- const target = ref<string>();
8
-
9
5
  const check = () => {
10
6
  nextTick(() => {
11
- target.value = document.querySelector(selector) ? selector : undefined;
12
- if (!target.value) {
7
+ if (!PlBlockPageTitleTeleportTarget.value) {
13
8
  console.error(
14
- `[${componentName}] Error: 'PlBlockPage' component is missing.
15
- Ensure that you placed the components inside <PlBlockPage />.`,
9
+ `[${componentName}] Error: Either 'PlBlockPage' component is missing or it has no title.
10
+ Ensure that you placed the components inside <PlBlockPage /> with a title.`,
16
11
  );
17
12
  }
18
13
  });
@@ -21,5 +16,5 @@ export function usePlBlockPageTitleTeleportTarget(componentName: string) {
21
16
  onMounted(check);
22
17
  onUpdated(check);
23
18
 
24
- return target;
19
+ return PlBlockPageTitleTeleportTarget;
25
20
  }
@@ -1,27 +0,0 @@
1
- import { defineComponent as n, createBlock as r, openBlock as a, Transition as s, withCtx as p, renderSlot as c } from "vue";
2
- const f = /* @__PURE__ */ n({
3
- __name: "ExpandTransition",
4
- setup(l) {
5
- const t = (e) => {
6
- e.classList.add("expand-collapse-fix"), e.style.setProperty("--component-height", e.scrollHeight + "px");
7
- }, o = (e) => {
8
- e.style.removeProperty("--component-height"), e.classList.remove("expand-collapse-fix");
9
- };
10
- return (e, i) => (a(), r(s, {
11
- name: "expand-collapse",
12
- onEnter: t,
13
- onLeave: t,
14
- onAfterEnter: o,
15
- onAfterLeave: o
16
- }, {
17
- default: p(() => [
18
- c(e.$slots, "default")
19
- ]),
20
- _: 3
21
- }));
22
- }
23
- });
24
- export {
25
- f as default
26
- };
27
- //# sourceMappingURL=ExpandTransition.vue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExpandTransition.vue.js","sources":["../../../src/components/PlAccordion/ExpandTransition.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nconst onStart = (el: Element) => {\n el.classList.add('expand-collapse-fix');\n (el as HTMLElement).style.setProperty('--component-height', el.scrollHeight + 'px');\n};\n\nconst onAfter = (el: Element) => {\n (el as HTMLElement).style.removeProperty('--component-height');\n el.classList.remove('expand-collapse-fix');\n};\n</script>\n\n<template>\n <Transition name=\"expand-collapse\" @enter=\"onStart\" @leave=\"onStart\" @after-enter=\"onAfter\" @after-leave=\"onAfter\">\n <slot/>\n </Transition>\n</template>\n\n<style>\n.expand-collapse-fix {\n overflow: hidden;\n}\n\n.expand-collapse-enter-active,\n.expand-collapse-leave-active {\n transition:\n height 0.2s ease-in-out,\n opacity 0.2s ease-in-out;\n height: var(--component-height);\n}\n\n.expand-collapse-enter-from,\n.expand-collapse-leave-to {\n opacity: 0.5;\n height: 0;\n}\n</style>\n"],"names":["onStart","el","onAfter","_createBlock","_Transition","_renderSlot","_ctx"],"mappings":";;;;AACA,UAAMA,IAAU,CAACC,MAAgB;AAC/B,MAAAA,EAAG,UAAU,IAAI,qBAAqB,GACrCA,EAAmB,MAAM,YAAY,sBAAsBA,EAAG,eAAe,IAAI;AAAA,IACpF,GAEMC,IAAU,CAACD,MAAgB;AAC9B,MAAAA,EAAmB,MAAM,eAAe,oBAAoB,GAC7DA,EAAG,UAAU,OAAO,qBAAqB;AAAA,IAC3C;2BAIEE,EAEaC,GAAA;AAAA,MAFD,MAAK;AAAA,MAAmB,SAAOJ;AAAA,MAAU,SAAOA;AAAA,MAAU,cAAaE;AAAA,MAAU,cAAaA;AAAA,IAAA;iBACxG,MAAO;AAAA,QAAPG,EAAOC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;;"}
@@ -1,2 +0,0 @@
1
- export declare const PlBlockPageTitleTeleportId: string;
2
- //# sourceMappingURL=PlBlockPageTitleTeleportId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlBlockPageTitleTeleportId.d.ts","sourceRoot":"","sources":["../../../src/layout/PlBlockPage/PlBlockPageTitleTeleportId.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,QAAa,CAAC"}
@@ -1,6 +0,0 @@
1
- import { uniqueId as e } from "@milaboratories/helpers";
2
- const t = e();
3
- export {
4
- t as PlBlockPageTitleTeleportId
5
- };
6
- //# sourceMappingURL=PlBlockPageTitleTeleportId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PlBlockPageTitleTeleportId.js","sources":["../../../src/layout/PlBlockPage/PlBlockPageTitleTeleportId.ts"],"sourcesContent":["import { uniqueId } from '@milaboratories/helpers';\n\nexport const PlBlockPageTitleTeleportId = uniqueId();\n"],"names":["PlBlockPageTitleTeleportId","uniqueId"],"mappings":";AAEO,MAAMA,IAA6BC,EAAA;"}
@@ -1,3 +0,0 @@
1
- import { uniqueId } from '@milaboratories/helpers';
2
-
3
- export const PlBlockPageTitleTeleportId = uniqueId();