@milaboratories/uikit 2.15.37 → 2.15.38

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 (457) hide show
  1. package/.turbo/turbo-build.log +173 -173
  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 +6 -0
  6. package/dist/__tests__/default-testid.test.d.ts +2 -0
  7. package/dist/__tests__/default-testid.test.d.ts.map +1 -0
  8. package/dist/base/BtnBase.js.map +1 -1
  9. package/dist/base/BtnBase.vue.d.ts.map +1 -1
  10. package/dist/base/BtnBase.vue2.js +6 -1
  11. package/dist/base/BtnBase.vue2.js.map +1 -1
  12. package/dist/components/DropdownListItem.js.map +1 -1
  13. package/dist/components/DropdownListItem.vue.d.ts.map +1 -1
  14. package/dist/components/DropdownListItem.vue2.js +13 -4
  15. package/dist/components/DropdownListItem.vue2.js.map +1 -1
  16. package/dist/components/InputRange.js.map +1 -1
  17. package/dist/components/InputRange.vue.d.ts.map +1 -1
  18. package/dist/components/InputRange.vue2.js +10 -2
  19. package/dist/components/InputRange.vue2.js.map +1 -1
  20. package/dist/components/PlAccordion/PlAccordionSection.js.map +1 -1
  21. package/dist/components/PlAccordion/PlAccordionSection.style.js.map +1 -1
  22. package/dist/components/PlAccordion/PlAccordionSection.vue.d.ts.map +1 -1
  23. package/dist/components/PlAccordion/PlAccordionSection.vue2.js +7 -1
  24. package/dist/components/PlAccordion/PlAccordionSection.vue2.js.map +1 -1
  25. package/dist/components/PlAlert/PlAlert.js.map +1 -1
  26. package/dist/components/PlAlert/PlAlert.vue.d.ts.map +1 -1
  27. package/dist/components/PlAlert/PlAlert.vue2.js +10 -1
  28. package/dist/components/PlAlert/PlAlert.vue2.js.map +1 -1
  29. package/dist/components/PlAutocomplete/PlAutocomplete.js.map +1 -1
  30. package/dist/components/PlAutocomplete/PlAutocomplete.vue.d.ts.map +1 -1
  31. package/dist/components/PlAutocomplete/PlAutocomplete.vue2.js +29 -11
  32. package/dist/components/PlAutocomplete/PlAutocomplete.vue2.js.map +1 -1
  33. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.js.map +1 -1
  34. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue.d.ts.map +1 -1
  35. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue2.js +30 -9
  36. package/dist/components/PlAutocompleteMulti/PlAutocompleteMulti.vue2.js.map +1 -1
  37. package/dist/components/PlBtnAccent/PlBtnAccent.js.map +1 -1
  38. package/dist/components/PlBtnAccent/PlBtnAccent.vue.d.ts.map +1 -1
  39. package/dist/components/PlBtnAccent/PlBtnAccent.vue2.js +4 -1
  40. package/dist/components/PlBtnAccent/PlBtnAccent.vue2.js.map +1 -1
  41. package/dist/components/PlBtnDanger/PlBtnDanger.js.map +1 -1
  42. package/dist/components/PlBtnDanger/PlBtnDanger.vue.d.ts.map +1 -1
  43. package/dist/components/PlBtnDanger/PlBtnDanger.vue2.js +4 -1
  44. package/dist/components/PlBtnDanger/PlBtnDanger.vue2.js.map +1 -1
  45. package/dist/components/PlBtnGhost/PlBtnGhost.js.map +1 -1
  46. package/dist/components/PlBtnGhost/PlBtnGhost.vue.d.ts.map +1 -1
  47. package/dist/components/PlBtnGhost/PlBtnGhost.vue2.js +7 -1
  48. package/dist/components/PlBtnGhost/PlBtnGhost.vue2.js.map +1 -1
  49. package/dist/components/PlBtnGroup/PlBtnGroup.js.map +1 -1
  50. package/dist/components/PlBtnGroup/PlBtnGroup.vue.d.ts.map +1 -1
  51. package/dist/components/PlBtnGroup/PlBtnGroup.vue2.js +19 -6
  52. package/dist/components/PlBtnGroup/PlBtnGroup.vue2.js.map +1 -1
  53. package/dist/components/PlBtnLink/PlBtnLink.js.map +1 -1
  54. package/dist/components/PlBtnLink/PlBtnLink.vue.d.ts.map +1 -1
  55. package/dist/components/PlBtnLink/PlBtnLink.vue2.js +2 -0
  56. package/dist/components/PlBtnLink/PlBtnLink.vue2.js.map +1 -1
  57. package/dist/components/PlBtnPrimary/PlBtnPrimary.js.map +1 -1
  58. package/dist/components/PlBtnPrimary/PlBtnPrimary.vue.d.ts.map +1 -1
  59. package/dist/components/PlBtnPrimary/PlBtnPrimary.vue2.js +4 -1
  60. package/dist/components/PlBtnPrimary/PlBtnPrimary.vue2.js.map +1 -1
  61. package/dist/components/PlBtnSecondary/PlBtnSecondary.js.map +1 -1
  62. package/dist/components/PlBtnSecondary/PlBtnSecondary.vue.d.ts.map +1 -1
  63. package/dist/components/PlBtnSecondary/PlBtnSecondary.vue2.js +1 -1
  64. package/dist/components/PlBtnSecondary/PlBtnSecondary.vue2.js.map +1 -1
  65. package/dist/components/PlBtnSplit/PlBtnSplit.js.map +1 -1
  66. package/dist/components/PlBtnSplit/PlBtnSplit.vue.d.ts.map +1 -1
  67. package/dist/components/PlBtnSplit/PlBtnSplit.vue2.js +6 -0
  68. package/dist/components/PlBtnSplit/PlBtnSplit.vue2.js.map +1 -1
  69. package/dist/components/PlChartHistogram/PlChartHistogram.js.map +1 -1
  70. package/dist/components/PlChartHistogram/PlChartHistogram.style.js.map +1 -1
  71. package/dist/components/PlChartHistogram/PlChartHistogram.vue.d.ts.map +1 -1
  72. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js +7 -2
  73. package/dist/components/PlChartHistogram/PlChartHistogram.vue2.js.map +1 -1
  74. package/dist/components/PlChartHistogram/createGridlines.d.ts.map +1 -1
  75. package/dist/components/PlChartHistogram/createGridlines.js +1 -1
  76. package/dist/components/PlChartHistogram/createGridlines.js.map +1 -1
  77. package/dist/components/PlChartHistogram/createLabels.d.ts.map +1 -1
  78. package/dist/components/PlChartHistogram/createLabels.js +1 -1
  79. package/dist/components/PlChartHistogram/createLabels.js.map +1 -1
  80. package/dist/components/PlChartHistogram/createSvgContainer.d.ts.map +1 -1
  81. package/dist/components/PlChartHistogram/createSvgContainer.js +1 -1
  82. package/dist/components/PlChartHistogram/createSvgContainer.js.map +1 -1
  83. package/dist/components/PlChartHistogram/drawBins.d.ts.map +1 -1
  84. package/dist/components/PlChartHistogram/drawBins.js +2 -2
  85. package/dist/components/PlChartHistogram/drawBins.js.map +1 -1
  86. package/dist/components/PlChartHistogram/drawThreshold.d.ts.map +1 -1
  87. package/dist/components/PlChartHistogram/drawThreshold.js +1 -1
  88. package/dist/components/PlChartHistogram/drawThreshold.js.map +1 -1
  89. package/dist/components/PlChartHistogram/histogram.d.ts.map +1 -1
  90. package/dist/components/PlChartHistogram/histogram.js +1 -1
  91. package/dist/components/PlChartHistogram/histogram.js.map +1 -1
  92. package/dist/components/PlChartStackedBar/Legends.js.map +1 -1
  93. package/dist/components/PlChartStackedBar/Legends.style.js.map +1 -1
  94. package/dist/components/PlChartStackedBar/Legends.vue.d.ts.map +1 -1
  95. package/dist/components/PlChartStackedBar/Legends.vue2.js +7 -1
  96. package/dist/components/PlChartStackedBar/Legends.vue2.js.map +1 -1
  97. package/dist/components/PlChartStackedBar/PlChartStackedBar.js.map +1 -1
  98. package/dist/components/PlChartStackedBar/PlChartStackedBar.style.js.map +1 -1
  99. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue.d.ts.map +1 -1
  100. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js +5 -1
  101. package/dist/components/PlChartStackedBar/PlChartStackedBar.vue2.js.map +1 -1
  102. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.js.map +1 -1
  103. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.style.js.map +1 -1
  104. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue.d.ts.map +1 -1
  105. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js +4 -1
  106. package/dist/components/PlChartStackedBar/PlChartStackedBarCompact.vue2.js.map +1 -1
  107. package/dist/components/PlChartStackedBar/StackedRow.js.map +1 -1
  108. package/dist/components/PlChartStackedBar/StackedRow.style.js.map +1 -1
  109. package/dist/components/PlChartStackedBar/StackedRow.vue.d.ts.map +1 -1
  110. package/dist/components/PlChartStackedBar/StackedRow.vue2.js +13 -3
  111. package/dist/components/PlChartStackedBar/StackedRow.vue2.js.map +1 -1
  112. package/dist/components/PlChartStackedBar/StackedRowCompact.js.map +1 -1
  113. package/dist/components/PlChartStackedBar/StackedRowCompact.style.js.map +1 -1
  114. package/dist/components/PlChartStackedBar/StackedRowCompact.vue.d.ts.map +1 -1
  115. package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js +8 -2
  116. package/dist/components/PlChartStackedBar/StackedRowCompact.vue2.js.map +1 -1
  117. package/dist/components/PlCheckbox/PlCheckbox.js.map +1 -1
  118. package/dist/components/PlCheckbox/PlCheckbox.vue.d.ts.map +1 -1
  119. package/dist/components/PlCheckbox/PlCheckbox.vue2.js +9 -2
  120. package/dist/components/PlCheckbox/PlCheckbox.vue2.js.map +1 -1
  121. package/dist/components/PlCheckbox/PlCheckboxBase.js.map +1 -1
  122. package/dist/components/PlCheckbox/PlCheckboxBase.vue.d.ts.map +1 -1
  123. package/dist/components/PlCheckbox/PlCheckboxBase.vue2.js +1 -0
  124. package/dist/components/PlCheckbox/PlCheckboxBase.vue2.js.map +1 -1
  125. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.js.map +1 -1
  126. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue.d.ts.map +1 -1
  127. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue2.js +19 -5
  128. package/dist/components/PlCheckboxGroup/PlCheckboxGroup.vue2.js.map +1 -1
  129. package/dist/components/PlChip/PlChip.js.map +1 -1
  130. package/dist/components/PlChip/PlChip.vue.d.ts.map +1 -1
  131. package/dist/components/PlChip/PlChip.vue2.js +7 -1
  132. package/dist/components/PlChip/PlChip.vue2.js.map +1 -1
  133. package/dist/components/PlClipboard/PlClipboard.js.map +1 -1
  134. package/dist/components/PlClipboard/PlClipboard.style.js.map +1 -1
  135. package/dist/components/PlClipboard/PlClipboard.vue.d.ts.map +1 -1
  136. package/dist/components/PlClipboard/PlClipboard.vue2.js +1 -0
  137. package/dist/components/PlClipboard/PlClipboard.vue2.js.map +1 -1
  138. package/dist/components/PlConfirmDialog.js.map +1 -1
  139. package/dist/components/PlConfirmDialog.vue.d.ts.map +1 -1
  140. package/dist/components/PlConfirmDialog.vue2.js +9 -2
  141. package/dist/components/PlConfirmDialog.vue2.js.map +1 -1
  142. package/dist/components/PlDialogModal/PlDialogModal.js.map +1 -1
  143. package/dist/components/PlDialogModal/PlDialogModal.vue.d.ts.map +1 -1
  144. package/dist/components/PlDialogModal/PlDialogModal.vue2.js +12 -5
  145. package/dist/components/PlDialogModal/PlDialogModal.vue2.js.map +1 -1
  146. package/dist/components/PlDropdown/OptionList.js.map +1 -1
  147. package/dist/components/PlDropdown/OptionList.vue.d.ts.map +1 -1
  148. package/dist/components/PlDropdown/OptionList.vue2.js +11 -5
  149. package/dist/components/PlDropdown/OptionList.vue2.js.map +1 -1
  150. package/dist/components/PlDropdown/PlDropdown.js.map +1 -1
  151. package/dist/components/PlDropdown/PlDropdown.vue.d.ts.map +1 -1
  152. package/dist/components/PlDropdown/PlDropdown.vue2.js +26 -10
  153. package/dist/components/PlDropdown/PlDropdown.vue2.js.map +1 -1
  154. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.js.map +1 -1
  155. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue.d.ts.map +1 -1
  156. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue2.js +32 -10
  157. package/dist/components/PlDropdownLegacy/PlDropdownLegacy.vue2.js.map +1 -1
  158. package/dist/components/PlDropdownLine/PlDropdownLine.js.map +1 -1
  159. package/dist/components/PlDropdownLine/PlDropdownLine.vue.d.ts.map +1 -1
  160. package/dist/components/PlDropdownLine/PlDropdownLine.vue2.js +17 -3
  161. package/dist/components/PlDropdownLine/PlDropdownLine.vue2.js.map +1 -1
  162. package/dist/components/PlDropdownLine/ResizableInput.js.map +1 -1
  163. package/dist/components/PlDropdownLine/ResizableInput.vue.d.ts.map +1 -1
  164. package/dist/components/PlDropdownLine/ResizableInput.vue2.js +5 -2
  165. package/dist/components/PlDropdownLine/ResizableInput.vue2.js.map +1 -1
  166. package/dist/components/PlDropdownMulti/PlDropdownMulti.js.map +1 -1
  167. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue.d.ts.map +1 -1
  168. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue2.js +31 -10
  169. package/dist/components/PlDropdownMulti/PlDropdownMulti.vue2.js.map +1 -1
  170. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.js.map +1 -1
  171. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue.d.ts.map +1 -1
  172. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue2.js +1 -1
  173. package/dist/components/PlDropdownMultiRef/PlDropdownMultiRef.vue2.js.map +1 -1
  174. package/dist/components/PlDropdownRef/PlDropdownRef.js.map +1 -1
  175. package/dist/components/PlDropdownRef/PlDropdownRef.vue.d.ts.map +1 -1
  176. package/dist/components/PlDropdownRef/PlDropdownRef.vue2.js +1 -1
  177. package/dist/components/PlDropdownRef/PlDropdownRef.vue2.js.map +1 -1
  178. package/dist/components/PlEditableTitle/PlEditableTitle.js.map +1 -1
  179. package/dist/components/PlEditableTitle/PlEditableTitle.vue.d.ts.map +1 -1
  180. package/dist/components/PlEditableTitle/PlEditableTitle.vue2.js +9 -3
  181. package/dist/components/PlEditableTitle/PlEditableTitle.vue2.js.map +1 -1
  182. package/dist/components/PlElementList/PlElementList.js.map +1 -1
  183. package/dist/components/PlElementList/PlElementList.style.js.map +1 -1
  184. package/dist/components/PlElementList/PlElementList.vue.d.ts.map +1 -1
  185. package/dist/components/PlElementList/PlElementList.vue2.js +6 -1
  186. package/dist/components/PlElementList/PlElementList.vue2.js.map +1 -1
  187. package/dist/components/PlElementList/PlElementListItem.js.map +1 -1
  188. package/dist/components/PlElementList/PlElementListItem.style.js.map +1 -1
  189. package/dist/components/PlElementList/PlElementListItem.vue.d.ts.map +1 -1
  190. package/dist/components/PlElementList/PlElementListItem.vue2.js +34 -13
  191. package/dist/components/PlElementList/PlElementListItem.vue2.js.map +1 -1
  192. package/dist/components/PlErrorAlert/PlErrorAlert.js.map +1 -1
  193. package/dist/components/PlErrorAlert/PlErrorAlert.style.js.map +1 -1
  194. package/dist/components/PlErrorAlert/PlErrorAlert.vue.d.ts.map +1 -1
  195. package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js +15 -3
  196. package/dist/components/PlErrorAlert/PlErrorAlert.vue2.js.map +1 -1
  197. package/dist/components/PlErrorBoundary/PlErrorBoundary.js.map +1 -1
  198. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue.d.ts.map +1 -1
  199. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue2.js +1 -0
  200. package/dist/components/PlErrorBoundary/PlErrorBoundary.vue2.js.map +1 -1
  201. package/dist/components/PlFileDialog/Local.js.map +1 -1
  202. package/dist/components/PlFileDialog/Local.vue.d.ts.map +1 -1
  203. package/dist/components/PlFileDialog/Local.vue2.js +23 -20
  204. package/dist/components/PlFileDialog/Local.vue2.js.map +1 -1
  205. package/dist/components/PlFileDialog/PlFileDialog.js.map +1 -1
  206. package/dist/components/PlFileDialog/PlFileDialog.vue.d.ts.map +1 -1
  207. package/dist/components/PlFileDialog/PlFileDialog.vue2.js +5 -1
  208. package/dist/components/PlFileDialog/PlFileDialog.vue2.js.map +1 -1
  209. package/dist/components/PlFileDialog/Remote.js.map +1 -1
  210. package/dist/components/PlFileDialog/Remote.vue.d.ts.map +1 -1
  211. package/dist/components/PlFileDialog/Remote.vue2.js +108 -94
  212. package/dist/components/PlFileDialog/Remote.vue2.js.map +1 -1
  213. package/dist/components/PlFileDialog/Shortcuts.js.map +1 -1
  214. package/dist/components/PlFileDialog/Shortcuts.style.js.map +1 -1
  215. package/dist/components/PlFileDialog/Shortcuts.vue.d.ts.map +1 -1
  216. package/dist/components/PlFileDialog/Shortcuts.vue2.js +2 -1
  217. package/dist/components/PlFileDialog/Shortcuts.vue2.js.map +1 -1
  218. package/dist/components/PlFileInput/PlFileInput.js.map +1 -1
  219. package/dist/components/PlFileInput/PlFileInput.vue.d.ts.map +1 -1
  220. package/dist/components/PlFileInput/PlFileInput.vue2.js +92 -71
  221. package/dist/components/PlFileInput/PlFileInput.vue2.js.map +1 -1
  222. package/dist/components/PlLoaderCircular/PlLoaderCircular.js.map +1 -1
  223. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue.d.ts.map +1 -1
  224. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue2.js +4 -1
  225. package/dist/components/PlLoaderCircular/PlLoaderCircular.vue2.js.map +1 -1
  226. package/dist/components/PlLoaderLogo.js.map +1 -1
  227. package/dist/components/PlLoaderLogo.style.js.map +1 -1
  228. package/dist/components/PlLoaderLogo.vue.css +1 -1
  229. package/dist/components/PlLoaderLogo.vue.d.ts.map +1 -1
  230. package/dist/components/PlLoaderLogo.vue2.js +4 -3
  231. package/dist/components/PlLoaderLogo.vue2.js.map +1 -1
  232. package/dist/components/PlLogView/PlLogView.js.map +1 -1
  233. package/dist/components/PlLogView/PlLogView.vue.d.ts.map +1 -1
  234. package/dist/components/PlLogView/PlLogView.vue2.js +13 -1
  235. package/dist/components/PlLogView/PlLogView.vue2.js.map +1 -1
  236. package/dist/components/PlNotificationAlert/PlNotificationAlert.js.map +1 -1
  237. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue.d.ts.map +1 -1
  238. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue2.js +8 -2
  239. package/dist/components/PlNotificationAlert/PlNotificationAlert.vue2.js.map +1 -1
  240. package/dist/components/PlNumberField/PlNumberField.js.map +1 -1
  241. package/dist/components/PlNumberField/PlNumberField.vue.d.ts.map +1 -1
  242. package/dist/components/PlNumberField/PlNumberField.vue2.js +12 -3
  243. package/dist/components/PlNumberField/PlNumberField.vue2.js.map +1 -1
  244. package/dist/components/PlProgressBar/PlProgressBar.js.map +1 -1
  245. package/dist/components/PlProgressBar/PlProgressBar.vue.d.ts.map +1 -1
  246. package/dist/components/PlProgressBar/PlProgressBar.vue2.js +9 -1
  247. package/dist/components/PlProgressBar/PlProgressBar.vue2.js.map +1 -1
  248. package/dist/components/PlProgressCell/PlProgressCell.js.map +1 -1
  249. package/dist/components/PlProgressCell/PlProgressCell.vue.d.ts.map +1 -1
  250. package/dist/components/PlProgressCell/PlProgressCell.vue2.js +19 -7
  251. package/dist/components/PlProgressCell/PlProgressCell.vue2.js.map +1 -1
  252. package/dist/components/PlRadio/PlRadio.js.map +1 -1
  253. package/dist/components/PlRadio/PlRadio.style.js.map +1 -1
  254. package/dist/components/PlRadio/PlRadio.vue.d.ts.map +1 -1
  255. package/dist/components/PlRadio/PlRadio.vue2.js +10 -3
  256. package/dist/components/PlRadio/PlRadio.vue2.js.map +1 -1
  257. package/dist/components/PlRadio/PlRadioGroup.js.map +1 -1
  258. package/dist/components/PlRadio/PlRadioGroup.style.js.map +1 -1
  259. package/dist/components/PlRadio/PlRadioGroup.vue.d.ts.map +1 -1
  260. package/dist/components/PlRadio/PlRadioGroup.vue2.js +10 -3
  261. package/dist/components/PlRadio/PlRadioGroup.vue2.js.map +1 -1
  262. package/dist/components/PlSearchField/PlSearchField.js.map +1 -1
  263. package/dist/components/PlSearchField/PlSearchField.style.js.map +1 -1
  264. package/dist/components/PlSearchField/PlSearchField.vue.d.ts.map +1 -1
  265. package/dist/components/PlSearchField/PlSearchField.vue2.js +11 -4
  266. package/dist/components/PlSearchField/PlSearchField.vue2.js.map +1 -1
  267. package/dist/components/PlSectionSeparator/PlSectionSeparator.js.map +1 -1
  268. package/dist/components/PlSectionSeparator/PlSectionSeparator.style.js.map +1 -1
  269. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue.d.ts.map +1 -1
  270. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js +7 -1
  271. package/dist/components/PlSectionSeparator/PlSectionSeparator.vue2.js.map +1 -1
  272. package/dist/components/PlSidebar/PlSidebarGroup.js.map +1 -1
  273. package/dist/components/PlSidebar/PlSidebarGroup.style.js.map +1 -1
  274. package/dist/components/PlSidebar/PlSidebarGroup.vue.d.ts.map +1 -1
  275. package/dist/components/PlSidebar/PlSidebarGroup.vue2.js +5 -1
  276. package/dist/components/PlSidebar/PlSidebarGroup.vue2.js.map +1 -1
  277. package/dist/components/PlSidebar/PlSidebarItem.js.map +1 -1
  278. package/dist/components/PlSidebar/PlSidebarItem.style.js.map +1 -1
  279. package/dist/components/PlSidebar/PlSidebarItem.vue.d.ts.map +1 -1
  280. package/dist/components/PlSidebar/PlSidebarItem.vue2.js +7 -1
  281. package/dist/components/PlSidebar/PlSidebarItem.vue2.js.map +1 -1
  282. package/dist/components/PlSlideModal/PlPureSlideModal.js.map +1 -1
  283. package/dist/components/PlSlideModal/PlPureSlideModal.vue.d.ts.map +1 -1
  284. package/dist/components/PlSlideModal/PlPureSlideModal.vue2.js +4 -1
  285. package/dist/components/PlSlideModal/PlPureSlideModal.vue2.js.map +1 -1
  286. package/dist/components/PlSlideModal/PlSlideModal.js.map +1 -1
  287. package/dist/components/PlSlideModal/PlSlideModal.style.js.map +1 -1
  288. package/dist/components/PlSlideModal/PlSlideModal.vue.d.ts.map +1 -1
  289. package/dist/components/PlSlideModal/PlSlideModal.vue2.js +7 -2
  290. package/dist/components/PlSlideModal/PlSlideModal.vue2.js.map +1 -1
  291. package/dist/components/PlSpacer/PlSpacer.vue.d.ts.map +1 -1
  292. package/dist/components/PlSplash/PlSplash.js.map +1 -1
  293. package/dist/components/PlSplash/PlSplash.vue.d.ts.map +1 -1
  294. package/dist/components/PlSplash/PlSplash.vue2.js +13 -5
  295. package/dist/components/PlSplash/PlSplash.vue2.js.map +1 -1
  296. package/dist/components/PlStatusTag/PlStatusTag.js.map +1 -1
  297. package/dist/components/PlStatusTag/PlStatusTag.vue.d.ts.map +1 -1
  298. package/dist/components/PlStatusTag/PlStatusTag.vue2.js +4 -1
  299. package/dist/components/PlStatusTag/PlStatusTag.vue2.js.map +1 -1
  300. package/dist/components/PlTabs/PlTabs.js.map +1 -1
  301. package/dist/components/PlTabs/PlTabs.vue.d.ts.map +1 -1
  302. package/dist/components/PlTabs/PlTabs.vue2.js +16 -11
  303. package/dist/components/PlTabs/PlTabs.vue2.js.map +1 -1
  304. package/dist/components/PlTextArea/PlTextArea.js.map +1 -1
  305. package/dist/components/PlTextArea/PlTextArea.vue.d.ts.map +1 -1
  306. package/dist/components/PlTextArea/PlTextArea.vue2.js +21 -8
  307. package/dist/components/PlTextArea/PlTextArea.vue2.js.map +1 -1
  308. package/dist/components/PlTextField/PlTextField.js.map +1 -1
  309. package/dist/components/PlTextField/PlTextField.vue.d.ts.map +1 -1
  310. package/dist/components/PlTextField/PlTextField.vue2.js +23 -9
  311. package/dist/components/PlTextField/PlTextField.vue2.js.map +1 -1
  312. package/dist/components/PlToggleSwitch/PlToggleSwitch.js.map +1 -1
  313. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue.d.ts.map +1 -1
  314. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue2.js +10 -2
  315. package/dist/components/PlToggleSwitch/PlToggleSwitch.vue2.js.map +1 -1
  316. package/dist/components/PlTooltip/PlTooltip.js.map +1 -1
  317. package/dist/components/PlTooltip/PlTooltip.style.js.map +1 -1
  318. package/dist/components/PlTooltip/PlTooltip.vue.css +1 -1
  319. package/dist/components/PlTooltip/PlTooltip.vue.d.ts.map +1 -1
  320. package/dist/components/PlTooltip/PlTooltip.vue2.js +7 -2
  321. package/dist/components/PlTooltip/PlTooltip.vue2.js.map +1 -1
  322. package/dist/components/Slider.js.map +1 -1
  323. package/dist/components/Slider.vue.d.ts.map +1 -1
  324. package/dist/components/Slider.vue2.js +13 -1
  325. package/dist/components/Slider.vue2.js.map +1 -1
  326. package/dist/components/SliderRange.js.map +1 -1
  327. package/dist/components/SliderRange.vue.d.ts.map +1 -1
  328. package/dist/components/SliderRange.vue2.js +14 -1
  329. package/dist/components/SliderRange.vue2.js.map +1 -1
  330. package/dist/components/SliderRangeTriple.js.map +1 -1
  331. package/dist/components/SliderRangeTriple.vue.d.ts.map +1 -1
  332. package/dist/components/SliderRangeTriple.vue2.js +13 -1
  333. package/dist/components/SliderRangeTriple.vue2.js.map +1 -1
  334. package/dist/components/TabItem.js.map +1 -1
  335. package/dist/components/TabItem.vue.d.ts.map +1 -1
  336. package/dist/components/TabItem.vue2.js +8 -2
  337. package/dist/components/TabItem.vue2.js.map +1 -1
  338. package/dist/components/contextMenu/Menu.js +1 -1
  339. package/dist/components/contextMenu/Menu.js.map +1 -1
  340. package/dist/components/contextMenu/Menu.style.css +1 -1
  341. package/dist/components/contextMenu/Menu.vue.d.ts.map +1 -1
  342. package/dist/components/contextMenu/Menu.vue2.js +12 -8
  343. package/dist/components/contextMenu/Menu.vue2.js.map +1 -1
  344. package/dist/layout/PlBlockPage/PlBlockPage.js.map +1 -1
  345. package/dist/layout/PlBlockPage/PlBlockPage.style.js.map +1 -1
  346. package/dist/layout/PlBlockPage/PlBlockPage.vue.d.ts.map +1 -1
  347. package/dist/layout/PlBlockPage/PlBlockPage.vue2.js +45 -25
  348. package/dist/layout/PlBlockPage/PlBlockPage.vue2.js.map +1 -1
  349. package/dist/layout/PlContainer/PlContainer.js.map +1 -1
  350. package/dist/layout/PlContainer/PlContainer.vue.d.ts.map +1 -1
  351. package/dist/layout/PlContainer/PlContainer.vue2.js +1 -0
  352. package/dist/layout/PlContainer/PlContainer.vue2.js.map +1 -1
  353. package/dist/layout/PlGrid/PlGrid.js.map +1 -1
  354. package/dist/layout/PlGrid/PlGrid.vue.d.ts.map +1 -1
  355. package/dist/layout/PlGrid/PlGrid.vue2.js +1 -0
  356. package/dist/layout/PlGrid/PlGrid.vue2.js.map +1 -1
  357. package/dist/layout/PlPlaceholder/PlPlaceholder.js.map +1 -1
  358. package/dist/layout/PlPlaceholder/PlPlaceholder.style.js.map +1 -1
  359. package/dist/layout/PlPlaceholder/PlPlaceholder.vue.d.ts.map +1 -1
  360. package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js +25 -6
  361. package/dist/layout/PlPlaceholder/PlPlaceholder.vue2.js.map +1 -1
  362. package/dist/layout/PlRow/PlRow.js.map +1 -1
  363. package/dist/layout/PlRow/PlRow.vue.d.ts.map +1 -1
  364. package/dist/layout/PlRow/PlRow.vue2.js +7 -4
  365. package/dist/layout/PlRow/PlRow.vue2.js.map +1 -1
  366. package/dist/layout/PlSpacer/PlSpacer.js.map +1 -1
  367. package/dist/layout/PlSpacer/PlSpacer.vue.d.ts.map +1 -1
  368. package/dist/layout/PlSpacer/PlSpacer.vue2.js +1 -0
  369. package/dist/layout/PlSpacer/PlSpacer.vue2.js.map +1 -1
  370. package/package.json +3 -3
  371. package/src/__tests__/default-testid.test.ts +95 -0
  372. package/src/base/BtnBase.vue +3 -3
  373. package/src/components/DropdownListItem.vue +14 -4
  374. package/src/components/InputRange.vue +6 -2
  375. package/src/components/PlAccordion/PlAccordionSection.vue +13 -4
  376. package/src/components/PlAlert/PlAlert.vue +5 -3
  377. package/src/components/PlAutocomplete/PlAutocomplete.vue +47 -11
  378. package/src/components/PlAutocompleteMulti/PlAutocompleteMulti.vue +53 -11
  379. package/src/components/PlBtnAccent/PlBtnAccent.vue +1 -1
  380. package/src/components/PlBtnDanger/PlBtnDanger.vue +1 -1
  381. package/src/components/PlBtnGhost/PlBtnGhost.vue +4 -3
  382. package/src/components/PlBtnGroup/PlBtnGroup.vue +16 -6
  383. package/src/components/PlBtnLink/PlBtnLink.vue +2 -1
  384. package/src/components/PlBtnPrimary/PlBtnPrimary.vue +1 -1
  385. package/src/components/PlBtnSecondary/PlBtnSecondary.vue +1 -1
  386. package/src/components/PlBtnSplit/PlBtnSplit.vue +12 -2
  387. package/src/components/PlChartHistogram/PlChartHistogram.vue +9 -3
  388. package/src/components/PlChartHistogram/createGridlines.ts +2 -0
  389. package/src/components/PlChartHistogram/createLabels.ts +2 -0
  390. package/src/components/PlChartHistogram/createSvgContainer.ts +2 -0
  391. package/src/components/PlChartHistogram/drawBins.ts +2 -0
  392. package/src/components/PlChartHistogram/drawThreshold.ts +1 -0
  393. package/src/components/PlChartHistogram/histogram.ts +6 -1
  394. package/src/components/PlChartStackedBar/Legends.vue +18 -4
  395. package/src/components/PlChartStackedBar/PlChartStackedBar.vue +4 -2
  396. package/src/components/PlChartStackedBar/PlChartStackedBarCompact.vue +1 -1
  397. package/src/components/PlChartStackedBar/StackedRow.vue +12 -4
  398. package/src/components/PlChartStackedBar/StackedRowCompact.vue +10 -3
  399. package/src/components/PlCheckbox/PlCheckbox.vue +15 -4
  400. package/src/components/PlCheckbox/PlCheckboxBase.vue +1 -0
  401. package/src/components/PlCheckboxGroup/PlCheckboxGroup.vue +15 -4
  402. package/src/components/PlChip/PlChip.vue +4 -3
  403. package/src/components/PlClipboard/PlClipboard.vue +7 -1
  404. package/src/components/PlConfirmDialog.vue +8 -3
  405. package/src/components/PlDialogModal/PlDialogModal.vue +15 -2
  406. package/src/components/PlDropdown/OptionList.vue +13 -3
  407. package/src/components/PlDropdown/PlDropdown.vue +35 -11
  408. package/src/components/PlDropdownLegacy/PlDropdownLegacy.vue +51 -12
  409. package/src/components/PlDropdownLine/PlDropdownLine.vue +29 -5
  410. package/src/components/PlDropdownLine/ResizableInput.vue +2 -1
  411. package/src/components/PlDropdownMulti/PlDropdownMulti.vue +47 -11
  412. package/src/components/PlDropdownMultiRef/PlDropdownMultiRef.vue +1 -0
  413. package/src/components/PlDropdownRef/PlDropdownRef.vue +1 -0
  414. package/src/components/PlEditableTitle/PlEditableTitle.vue +11 -3
  415. package/src/components/PlElementList/PlElementList.vue +8 -3
  416. package/src/components/PlElementList/PlElementListItem.vue +16 -5
  417. package/src/components/PlErrorAlert/PlErrorAlert.vue +8 -6
  418. package/src/components/PlErrorBoundary/PlErrorBoundary.vue +7 -1
  419. package/src/components/PlFileDialog/Local.vue +12 -4
  420. package/src/components/PlFileDialog/PlFileDialog.vue +13 -3
  421. package/src/components/PlFileDialog/Remote.vue +39 -11
  422. package/src/components/PlFileDialog/Shortcuts.vue +7 -1
  423. package/src/components/PlFileInput/PlFileInput.vue +44 -19
  424. package/src/components/PlLoaderCircular/PlLoaderCircular.vue +1 -1
  425. package/src/components/PlLoaderLogo.vue +6 -1
  426. package/src/components/PlLogView/PlLogView.vue +30 -8
  427. package/src/components/PlNotificationAlert/PlNotificationAlert.vue +15 -3
  428. package/src/components/PlNumberField/PlNumberField.vue +14 -3
  429. package/src/components/PlProgressBar/PlProgressBar.vue +12 -4
  430. package/src/components/PlProgressCell/PlProgressCell.vue +13 -4
  431. package/src/components/PlRadio/PlRadio.vue +10 -3
  432. package/src/components/PlRadio/PlRadioGroup.vue +3 -2
  433. package/src/components/PlSearchField/PlSearchField.vue +5 -3
  434. package/src/components/PlSectionSeparator/PlSectionSeparator.vue +6 -2
  435. package/src/components/PlSidebar/PlSidebarGroup.vue +2 -2
  436. package/src/components/PlSidebar/PlSidebarItem.vue +12 -4
  437. package/src/components/PlSlideModal/PlPureSlideModal.vue +7 -1
  438. package/src/components/PlSlideModal/PlSlideModal.vue +4 -3
  439. package/src/components/PlSpacer/PlSpacer.vue +1 -1
  440. package/src/components/PlSplash/PlSplash.vue +6 -3
  441. package/src/components/PlStatusTag/PlStatusTag.vue +1 -0
  442. package/src/components/PlTabs/PlTabs.vue +6 -2
  443. package/src/components/PlTextArea/PlTextArea.vue +21 -8
  444. package/src/components/PlTextField/PlTextField.vue +23 -8
  445. package/src/components/PlToggleSwitch/PlToggleSwitch.vue +4 -3
  446. package/src/components/PlTooltip/PlTooltip.vue +3 -0
  447. package/src/components/Slider.vue +27 -7
  448. package/src/components/SliderRange.vue +28 -7
  449. package/src/components/SliderRangeTriple.vue +19 -5
  450. package/src/components/TabItem.vue +2 -2
  451. package/src/components/contextMenu/Menu.vue +8 -3
  452. package/src/layout/PlBlockPage/PlBlockPage.vue +40 -11
  453. package/src/layout/PlContainer/PlContainer.vue +1 -0
  454. package/src/layout/PlGrid/PlGrid.vue +1 -1
  455. package/src/layout/PlPlaceholder/PlPlaceholder.vue +20 -8
  456. package/src/layout/PlRow/PlRow.vue +5 -1
  457. package/src/layout/PlSpacer/PlSpacer.vue +1 -1
@@ -2,7 +2,10 @@ import e from "../../components/PlLoaderLogo.js";
2
2
  import t from "./paint-worklet.js";
3
3
  import { Fragment as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, defineComponent as s, normalizeClass as c, openBlock as l, renderList as u, toDisplayString as d, unref as f, useCssModule as p } from "vue";
4
4
  //#region src/layout/PlPlaceholder/PlPlaceholder.vue?vue&type=script&setup=true&lang.ts
5
- var m = { key: 1 }, h = new Blob([t], { type: "application/javascript" }), g = URL.createObjectURL(h);
5
+ var m = {
6
+ key: 1,
7
+ "data-testid": "pl-placeholder-subtitle-item"
8
+ }, h = new Blob([t], { type: "application/javascript" }), g = URL.createObjectURL(h);
6
9
  CSS.paintWorklet.addModule(g);
7
10
  var _ = /* @__PURE__ */ s({
8
11
  __name: "PlPlaceholder",
@@ -13,22 +16,38 @@ var _ = /* @__PURE__ */ s({
13
16
  },
14
17
  setup(t) {
15
18
  let s = t, h = p();
16
- return (t, p) => (l(), i("div", { class: c(f(h).root) }, [a("div", { class: c([f(h).background, {
17
- [f(h).table]: s.variant === "table",
18
- [f(h).graph]: s.variant === "graph"
19
- }]) }, null, 2), a("div", { class: c(f(h).content) }, [o(e, {
19
+ return (t, p) => (l(), i("div", {
20
+ "data-testid": "pl-placeholder",
21
+ class: c(f(h).root)
22
+ }, [a("div", {
23
+ "data-testid": "pl-placeholder-background",
24
+ class: c([f(h).background, {
25
+ [f(h).table]: s.variant === "table",
26
+ [f(h).graph]: s.variant === "graph"
27
+ }])
28
+ }, null, 2), a("div", {
29
+ "data-testid": "pl-placeholder-content",
30
+ class: c(f(h).content)
31
+ }, [o(e, {
32
+ "data-testid": "pl-placeholder-loader",
20
33
  size: 64,
21
34
  color: "var(--color-div-grey)"
22
35
  }), s.title || s.subtitle ? (l(), i("div", {
23
36
  key: 0,
37
+ "data-testid": "pl-placeholder-text",
24
38
  class: c(f(h).text)
25
39
  }, [s.title ? (l(), i("div", {
26
40
  key: 0,
41
+ "data-testid": "pl-placeholder-title",
27
42
  class: c(f(h).title)
28
43
  }, d(s.title), 3)) : r("", !0), s.subtitle ? (l(), i("div", {
29
44
  key: 1,
45
+ "data-testid": "pl-placeholder-subtitle",
30
46
  class: c(f(h).subtitle)
31
- }, [Array.isArray(s.subtitle) ? (l(!0), i(n, { key: 0 }, u(s.subtitle, (e, t) => (l(), i("span", { key: t }, d(e), 1))), 128)) : (l(), i("span", m, d(s.subtitle), 1))], 2)) : r("", !0)], 2)) : r("", !0)], 2)], 2));
47
+ }, [Array.isArray(s.subtitle) ? (l(!0), i(n, { key: 0 }, u(s.subtitle, (e, t) => (l(), i("span", {
48
+ key: t,
49
+ "data-testid": "pl-placeholder-subtitle-item"
50
+ }, d(e), 1))), 128)) : (l(), i("span", m, d(s.subtitle), 1))], 2)) : r("", !0)], 2)) : r("", !0)], 2)], 2));
32
51
  }
33
52
  });
34
53
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"PlPlaceholder.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/layout/PlPlaceholder/PlPlaceholder.vue"],"sourcesContent":["<script lang=\"ts\">\nimport paintWorkletCode from \"./paint-worklet.js?raw\";\n\nexport interface PlPlaceholderProps {\n variant?: \"table\" | \"graph\";\n title?: string;\n subtitle?: string | string[];\n}\n\n// Register paint worklet once at module load (uses blob URL to comply with CSP)\nconst workletBlob = new Blob([paintWorkletCode], { type: \"application/javascript\" });\nconst workletUrl = URL.createObjectURL(workletBlob);\n(\n CSS as unknown as {\n paintWorklet: { addModule: (url: string) => void };\n }\n).paintWorklet.addModule(workletUrl);\n</script>\n\n<script setup lang=\"ts\">\nimport { useCssModule } from \"vue\";\nimport PlLoaderLogo from \"../../components/PlLoaderLogo.vue\";\n\nconst props = defineProps<PlPlaceholderProps>();\n\nconst styles = useCssModule();\n</script>\n\n<template>\n <div :class=\"styles.root\">\n <div\n :class=\"[\n styles.background,\n {\n [styles.table]: props.variant === 'table',\n [styles.graph]: props.variant === 'graph',\n },\n ]\"\n />\n <div :class=\"styles.content\">\n <PlLoaderLogo :size=\"64\" color=\"var(--color-div-grey)\" />\n <div v-if=\"props.title || props.subtitle\" :class=\"styles.text\">\n <div v-if=\"props.title\" :class=\"styles.title\">{{ props.title }}</div>\n <div v-if=\"props.subtitle\" :class=\"styles.subtitle\">\n <template v-if=\"Array.isArray(props.subtitle)\">\n <span v-for=\"(item, key) of props.subtitle\" :key>{{ item }}</span>\n </template>\n <span v-else>{{ props.subtitle }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style module>\n.root {\n block-size: 100%;\n inline-size: 100%;\n position: relative;\n user-select: none;\n background-color: var(--bg-elevated-01);\n}\n\n.background {\n position: absolute;\n inset: 0;\n pointer-events: none;\n mask: linear-gradient(transparent 35%, #000 40% 60%, transparent 65%);\n mask-size: 100% 300%;\n animation-duration: 5s;\n animation-iteration-count: infinite;\n animation-name: slide;\n &.table {\n background-image: paint(pl-placeholder-table-skeleton);\n }\n &.graph {\n background-image: paint(pl-placeholder-graph-skeleton);\n }\n}\n\n.content {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 12px;\n}\n\n.text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n -webkit-text-stroke-color: white;\n -webkit-text-stroke-width: 4px;\n paint-order: stroke;\n}\n\n.title {\n color: var(--txt-03);\n font-size: 20px;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: -0.2px;\n}\n\n.subtitle {\n color: var(--txt-03);\n font-weight: 500;\n line-height: 20px;\n display: grid;\n span {\n grid-area: 1 / 1;\n text-align: center;\n animation-name: active-subtitle;\n animation-duration: calc(6s * sibling-count());\n animation-iteration-count: infinite;\n animation-timing-function: steps(sibling-count(), jump-none);\n visibility: if(\n style(--pl-placeholder-active-subtitle: sibling-index()): visible; else: hidden;\n );\n }\n}\n\n@keyframes slide {\n from {\n mask-position: 0 100%;\n }\n}\n\n@keyframes active-subtitle {\n from {\n --pl-placeholder-active-subtitle: 1;\n }\n to {\n --pl-placeholder-active-subtitle: sibling-count();\n }\n}\n\n@property --pl-placeholder-active-subtitle {\n syntax: \"<number>\";\n inherits: false;\n initial-value: 1;\n}\n</style>\n"],"mappings":";;;;oBAUM,IAAc,IAAI,KAAK,CAAC,EAAiB,EAAE,EAAE,MAAM,0BAA0B,CAAC,EAC9E,IAAa,IAAI,gBAAgB,EAAY;AAEjD,IAGA,aAAa,UAAU,EAAW;;;;;;;;;EAOpC,IAAM,IAAQ,GAER,IAAS,GAAc;yBAI3B,EAsBM,OAAA,EAtBA,OAAK,EAAE,EAAA,EAAM,CAAC,KAAI,EAAA,EAAA,CACtB,EAQE,OAAA,EAPC,OAAK,EAAA,CAAY,EAAA,EAAM,CAAC,YAAA;IAAiC,EAAA,EAAM,CAAC,QAAQ,EAAM,YAAO;IAAyB,EAAA,EAAM,CAAC,QAAQ,EAAM,YAAO;mBAQ7I,EAWM,OAAA,EAXA,OAAK,EAAE,EAAA,EAAM,CAAC,QAAO,EAAA,EAAA,CACzB,EAAyD,GAAA;GAA1C,MAAM;GAAI,OAAM;MACpB,EAAM,SAAS,EAAM,YAAA,GAAA,EAAhC,EAQM,OAAA;;GARqC,OAAK,EAAE,EAAA,EAAM,CAAC,KAAI;MAChD,EAAM,SAAA,GAAA,EAAjB,EAAqE,OAAA;;GAA5C,OAAK,EAAE,EAAA,EAAM,CAAC,MAAK;OAAK,EAAM,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EACjD,EAAM,YAAA,GAAA,EAAjB,EAKM,OAAA;;GALsB,OAAK,EAAE,EAAA,EAAM,CAAC,SAAQ;MAChC,MAAM,QAAQ,EAAM,SAAQ,IAAA,EAAA,GAAA,EAC1C,EAAkE,GAAA,EAAA,KAAA,GAAA,EAAA,EAAtC,EAAM,WAApB,GAAM,YAApB,EAAkE,QAAA,EAArB,QAAG,EAAA,EAAI,EAAI,EAAA,EAAA,kBAE1D,EAAwC,QAAA,GAAA,EAAxB,EAAM,SAAQ,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"PlPlaceholder.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/layout/PlPlaceholder/PlPlaceholder.vue"],"sourcesContent":["<script lang=\"ts\">\nimport paintWorkletCode from \"./paint-worklet.js?raw\";\n\nexport interface PlPlaceholderProps {\n variant?: \"table\" | \"graph\";\n title?: string;\n subtitle?: string | string[];\n}\n\n// Register paint worklet once at module load (uses blob URL to comply with CSP)\nconst workletBlob = new Blob([paintWorkletCode], { type: \"application/javascript\" });\nconst workletUrl = URL.createObjectURL(workletBlob);\n(\n CSS as unknown as {\n paintWorklet: { addModule: (url: string) => void };\n }\n).paintWorklet.addModule(workletUrl);\n</script>\n\n<script setup lang=\"ts\">\nimport { useCssModule } from \"vue\";\nimport PlLoaderLogo from \"../../components/PlLoaderLogo.vue\";\n\nconst props = defineProps<PlPlaceholderProps>();\n\nconst styles = useCssModule();\n</script>\n\n<template>\n <div data-testid=\"pl-placeholder\" :class=\"styles.root\">\n <div\n data-testid=\"pl-placeholder-background\"\n :class=\"[\n styles.background,\n {\n [styles.table]: props.variant === 'table',\n [styles.graph]: props.variant === 'graph',\n },\n ]\"\n />\n <div data-testid=\"pl-placeholder-content\" :class=\"styles.content\">\n <PlLoaderLogo data-testid=\"pl-placeholder-loader\" :size=\"64\" color=\"var(--color-div-grey)\" />\n <div\n v-if=\"props.title || props.subtitle\"\n data-testid=\"pl-placeholder-text\"\n :class=\"styles.text\"\n >\n <div v-if=\"props.title\" data-testid=\"pl-placeholder-title\" :class=\"styles.title\">\n {{ props.title }}\n </div>\n <div v-if=\"props.subtitle\" data-testid=\"pl-placeholder-subtitle\" :class=\"styles.subtitle\">\n <template v-if=\"Array.isArray(props.subtitle)\">\n <span\n v-for=\"(item, key) of props.subtitle\"\n :key\n data-testid=\"pl-placeholder-subtitle-item\"\n >{{ item }}</span\n >\n </template>\n <span v-else data-testid=\"pl-placeholder-subtitle-item\">{{ props.subtitle }}</span>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<style module>\n.root {\n block-size: 100%;\n inline-size: 100%;\n position: relative;\n user-select: none;\n background-color: var(--bg-elevated-01);\n}\n\n.background {\n position: absolute;\n inset: 0;\n pointer-events: none;\n mask: linear-gradient(transparent 35%, #000 40% 60%, transparent 65%);\n mask-size: 100% 300%;\n animation-duration: 5s;\n animation-iteration-count: infinite;\n animation-name: slide;\n &.table {\n background-image: paint(pl-placeholder-table-skeleton);\n }\n &.graph {\n background-image: paint(pl-placeholder-graph-skeleton);\n }\n}\n\n.content {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 12px;\n}\n\n.text {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n -webkit-text-stroke-color: white;\n -webkit-text-stroke-width: 4px;\n paint-order: stroke;\n}\n\n.title {\n color: var(--txt-03);\n font-size: 20px;\n font-weight: 500;\n line-height: 24px;\n letter-spacing: -0.2px;\n}\n\n.subtitle {\n color: var(--txt-03);\n font-weight: 500;\n line-height: 20px;\n display: grid;\n span {\n grid-area: 1 / 1;\n text-align: center;\n animation-name: active-subtitle;\n animation-duration: calc(6s * sibling-count());\n animation-iteration-count: infinite;\n animation-timing-function: steps(sibling-count(), jump-none);\n visibility: if(\n style(--pl-placeholder-active-subtitle: sibling-index()): visible; else: hidden;\n );\n }\n}\n\n@keyframes slide {\n from {\n mask-position: 0 100%;\n }\n}\n\n@keyframes active-subtitle {\n from {\n --pl-placeholder-active-subtitle: 1;\n }\n to {\n --pl-placeholder-active-subtitle: sibling-count();\n }\n}\n\n@property --pl-placeholder-active-subtitle {\n syntax: \"<number>\";\n inherits: false;\n initial-value: 1;\n}\n</style>\n"],"mappings":";;;;;;;GAUM,IAAc,IAAI,KAAK,CAAC,EAAiB,EAAE,EAAE,MAAM,0BAA0B,CAAC,EAC9E,IAAa,IAAI,gBAAgB,EAAY;AAEjD,IAGA,aAAa,UAAU,EAAW;;;;;;;;;EAOpC,IAAM,IAAQ,GAER,IAAS,GAAc;yBAI3B,EAkCM,OAAA;GAlCD,eAAY;GAAkB,OAAK,EAAE,EAAA,EAAM,CAAC,KAAI;MACnD,EASE,OAAA;GARA,eAAY;GACX,OAAK,EAAA,CAAY,EAAA,EAAM,CAAC,YAAA;KAAiC,EAAA,EAAM,CAAC,QAAQ,EAAM,YAAO;KAAyB,EAAA,EAAM,CAAC,QAAQ,EAAM,YAAO;;eAQ7I,EAsBM,OAAA;GAtBD,eAAY;GAA0B,OAAK,EAAE,EAAA,EAAM,CAAC,QAAO;MAC9D,EAA6F,GAAA;GAA/E,eAAY;GAAyB,MAAM;GAAI,OAAM;MAE3D,EAAM,SAAS,EAAM,YAAA,GAAA,EAD7B,EAmBM,OAAA;;GAjBJ,eAAY;GACX,OAAK,EAAE,EAAA,EAAM,CAAC,KAAI;MAER,EAAM,SAAA,GAAA,EAAjB,EAEM,OAAA;;GAFkB,eAAY;GAAwB,OAAK,EAAE,EAAA,EAAM,CAAC,MAAK;OAC1E,EAAM,MAAK,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,EAEL,EAAM,YAAA,GAAA,EAAjB,EAUM,OAAA;;GAVqB,eAAY;GAA2B,OAAK,EAAE,EAAA,EAAM,CAAC,SAAQ;MACtE,MAAM,QAAQ,EAAM,SAAQ,IAAA,EAAA,GAAA,EAC1C,EAKC,GAAA,EAAA,KAAA,GAAA,EAAA,EAJuB,EAAM,WAApB,GAAM,YADhB,EAKC,QAAA;GAHE;GACD,eAAY;OACR,EAAI,EAAA,EAAA,kBAGZ,EAAmF,QAAnF,GAAmF,EAAxB,EAAM,SAAQ,EAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,EAAA,IAAA,EAAA,IAAA,GAAA,CAAA,EAAA,EAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlRow.js","names":[],"sources":["../../../src/layout/PlRow/PlRow.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Horizontal Flex flow container */\nexport default {\n name: \"PlRow\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-row.scss\";\n\ndefineProps<{\n wrap?: boolean;\n alignCenter?: boolean;\n noGap?: boolean;\n}>();\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-row\" :class=\"{ wrap, 'align-center': alignCenter }\">\n <slot />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"PlRow.js","names":[],"sources":["../../../src/layout/PlRow/PlRow.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Horizontal Flex flow container */\nexport default {\n name: \"PlRow\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-row.scss\";\n\ndefineProps<{\n wrap?: boolean;\n alignCenter?: boolean;\n noGap?: boolean;\n}>();\n</script>\n\n<template>\n <div\n class=\"pl-layout-component pl-row\"\n data-testid=\"pl-row\"\n :class=\"{ wrap, 'align-center': alignCenter }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"PlRow.vue.d.ts","sourceRoot":"","sources":["../../../src/layout/PlRow/PlRow.vue"],"names":[],"mappings":"AAyBA,OAAO,eAAe,CAAC;AAGvB,qCAAqC;wBAChB,OAAO,YAAY;AAAxC,wBAAyC;AAKzC,QAAA,MAAM,YAAY;WAET,OAAO;kBACA,OAAO;YACb,OAAO;;WAFR,OAAO;kBACA,OAAO;YACb,OAAO;;cA8BH,CAAC,KAAK,IAAgB,KAAK,GAAG;EASxC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"PlRow.vue.d.ts","sourceRoot":"","sources":["../../../src/layout/PlRow/PlRow.vue"],"names":[],"mappings":"AA6BA,OAAO,eAAe,CAAC;AAGvB,qCAAqC;wBAChB,OAAO,YAAY;AAAxC,wBAAyC;AAKzC,QAAA,MAAM,YAAY;WAET,OAAO;kBACA,OAAO;YACb,OAAO;;WAFR,OAAO;kBACA,OAAO;YACb,OAAO;;cA+BH,CAAC,KAAK,IAAgB,KAAK,GAAG;EASxC,CAAC;AACL,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -8,10 +8,13 @@ var a = /* @__PURE__ */ t({
8
8
  noGap: { type: Boolean }
9
9
  },
10
10
  setup(t) {
11
- return (a, o) => (r(), e("div", { class: n(["pl-layout-component pl-row", {
12
- wrap: t.wrap,
13
- "align-center": t.alignCenter
14
- }]) }, [i(a.$slots, "default")], 2));
11
+ return (a, o) => (r(), e("div", {
12
+ class: n(["pl-layout-component pl-row", {
13
+ wrap: t.wrap,
14
+ "align-center": t.alignCenter
15
+ }]),
16
+ "data-testid": "pl-row"
17
+ }, [i(a.$slots, "default")], 2));
15
18
  }
16
19
  });
17
20
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"PlRow.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/layout/PlRow/PlRow.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Horizontal Flex flow container */\nexport default {\n name: \"PlRow\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-row.scss\";\n\ndefineProps<{\n wrap?: boolean;\n alignCenter?: boolean;\n noGap?: boolean;\n}>();\n</script>\n\n<template>\n <div class=\"pl-layout-component pl-row\" :class=\"{ wrap, 'align-center': alignCenter }\">\n <slot />\n </div>\n</template>\n"],"mappings":";;;CAGE,MAAM;;;;;;;yBAeN,EAEM,OAAA,EAFD,OAAK,EAAA,CAAC,8BAA4B;GAAA,MAAW,EAAA;GAAI,gBAAkB,EAAA;GAAW,CAAA,CAAA,EAAA,EAAA,CACjF,EAAQ,EAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"PlRow.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/layout/PlRow/PlRow.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Horizontal Flex flow container */\nexport default {\n name: \"PlRow\",\n};\n</script>\n\n<script lang=\"ts\" setup>\nimport \"./pl-row.scss\";\n\ndefineProps<{\n wrap?: boolean;\n alignCenter?: boolean;\n noGap?: boolean;\n}>();\n</script>\n\n<template>\n <div\n class=\"pl-layout-component pl-row\"\n data-testid=\"pl-row\"\n :class=\"{ wrap, 'align-center': alignCenter }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;CAGE,MAAM;;;;;;;yBAeN,EAMM,OAAA;GALJ,OAAK,EAAA,CAAC,8BAA4B;IAAA,MAExB,EAAA;IAAI,gBAAkB,EAAA;IAAW,CAAA,CAAA;GAD3C,eAAY;MAGZ,EAAQ,EAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"PlSpacer.js","names":[],"sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Fills flex remaining space */\nexport default {\n name: \"PlSpacer\",\n};\n</script>\n\n<script lang=\"ts\" setup>\n//\n</script>\n\n<template>\n <div class=\"pl-layout-component\" style=\"flex-grow: 1\" />\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"PlSpacer.js","names":[],"sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Fills flex remaining space */\nexport default {\n name: \"PlSpacer\",\n};\n</script>\n\n<script lang=\"ts\" setup>\n//\n</script>\n\n<template>\n <div class=\"pl-layout-component\" data-testid=\"pl-spacer\" style=\"flex-grow: 1\" />\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"PlSpacer.vue.d.ts","sourceRoot":"","sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"names":[],"mappings":"AAkBA,iCAAiC;wBACZ,OAAO,YAAY;AAAxC,wBAAyC;AAKzC,QAAA,MAAM,YAAY,+QAoBd,CAAC"}
1
+ {"version":3,"file":"PlSpacer.vue.d.ts","sourceRoot":"","sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"names":[],"mappings":"AAkBA,iCAAiC;wBACZ,OAAO,YAAY;AAAxC,wBAAyC;AAKzC,QAAA,MAAM,YAAY,+QAqBd,CAAC"}
@@ -2,6 +2,7 @@ import { createElementBlock as e, defineComponent as t, openBlock as n } from "v
2
2
  //#region src/layout/PlSpacer/PlSpacer.vue?vue&type=script&setup=true&lang.ts
3
3
  var r = {
4
4
  class: "pl-layout-component",
5
+ "data-testid": "pl-spacer",
5
6
  style: { "flex-grow": "1" }
6
7
  }, i = /* @__PURE__ */ t({
7
8
  name: "PlSpacer",
@@ -1 +1 @@
1
- {"version":3,"file":"PlSpacer.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Fills flex remaining space */\nexport default {\n name: \"PlSpacer\",\n};\n</script>\n\n<script lang=\"ts\" setup>\n//\n</script>\n\n<template>\n <div class=\"pl-layout-component\" style=\"flex-grow: 1\" />\n</template>\n"],"mappings":";;;;;;CAGE,MAAM;;yBASN,EAAwD,OAAxD,EAAwD"}
1
+ {"version":3,"file":"PlSpacer.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/layout/PlSpacer/PlSpacer.vue"],"sourcesContent":["<script lang=\"ts\">\n/** Fills flex remaining space */\nexport default {\n name: \"PlSpacer\",\n};\n</script>\n\n<script lang=\"ts\" setup>\n//\n</script>\n\n<template>\n <div class=\"pl-layout-component\" data-testid=\"pl-spacer\" style=\"flex-grow: 1\" />\n</template>\n"],"mappings":";;;;;;;CAGE,MAAM;;yBASN,EAAgF,OAAhF,EAAgF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@milaboratories/uikit",
3
- "version": "2.15.37",
3
+ "version": "2.15.38",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -40,9 +40,9 @@
40
40
  "svgo": "^3.3.2",
41
41
  "typescript": "7.0.2",
42
42
  "vitest": "^4.1.3",
43
- "@milaboratories/build-configs": "2.0.2",
43
+ "@milaboratories/ts-builder": "1.7.2",
44
44
  "@milaboratories/ts-configs": "1.4.0",
45
- "@milaboratories/ts-builder": "1.7.2"
45
+ "@milaboratories/build-configs": "2.0.2"
46
46
  },
47
47
  "scripts": {
48
48
  "dev": "ts-builder serve --target browser-lib --build-config ./build.browser-lib.config.js",
@@ -0,0 +1,95 @@
1
+ import { afterEach, describe, expect, it } from "vitest";
2
+ import { mount } from "@vue/test-utils";
3
+ import type { Component } from "vue";
4
+
5
+ /**
6
+ * Every component ships a default `data-testid` on its root, `pl-<component-kebab>`, so E2E tests
7
+ * can find it without the consuming app configuring anything. A `data-testid` passed by the caller
8
+ * replaces it.
9
+ */
10
+
11
+ // Components without a root element to mark, or whose root needs data these generic props don't give.
12
+ const exempt: Record<string, string> = {
13
+ PlAccordion: "renders only slots",
14
+ PlErrorBoundary: "renders its slot plus an alert, no own root",
15
+ PlProgressBar: "renders nothing unless loading",
16
+ PlStatusTag: "renders nothing without a type",
17
+ PlChartHistogram: "needs chart data to mount",
18
+ PlChartStackedBar: "needs chart data to mount",
19
+ PlChartStackedBarCompact: "needs chart data to mount",
20
+ PlIcon16: "icon",
21
+ PlIcon24: "icon",
22
+ PlMaskIcon16: "icon",
23
+ PlMaskIcon24: "icon",
24
+ PlSvg: "icon",
25
+ };
26
+
27
+ const genericProps = {
28
+ modelValue: true,
29
+ options: [],
30
+ items: [],
31
+ label: "L",
32
+ loading: true,
33
+ type: "info",
34
+ };
35
+
36
+ const kebab = (name: string) => name.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
37
+
38
+ // vitest cannot compile PlSlideModal and PlProgressCell (imported types in defineProps), so they are
39
+ // left out of the glob; both mark their root in the template.
40
+ const modules = import.meta.glob<Record<string, unknown>>([
41
+ "../components/Pl*/index.ts",
42
+ "../layout/Pl*/index.ts",
43
+ "!../components/PlSlideModal/index.ts",
44
+ "!../components/PlProgressCell/index.ts",
45
+ ]);
46
+
47
+ function isComponent(value: unknown): value is Component {
48
+ return typeof value === "object" && value !== null && ("setup" in value || "render" in value);
49
+ }
50
+
51
+ async function collect(): Promise<[string, Component][]> {
52
+ const found: [string, Component][] = [];
53
+ for (const load of Object.values(modules)) {
54
+ for (const [name, value] of Object.entries(await load())) {
55
+ if (/^Pl[A-Z]/.test(name) && !(name in exempt) && isComponent(value))
56
+ found.push([name, value]);
57
+ }
58
+ }
59
+ return found.sort(([a], [b]) => a.localeCompare(b));
60
+ }
61
+
62
+ // jsdom has no CSS Houdini; PlPlaceholder registers a paint worklet when its module loads.
63
+ Object.defineProperty(globalThis, "CSS", {
64
+ configurable: true,
65
+ value: { paintWorklet: { addModule: () => {} }, supports: () => false, escape: (s: string) => s },
66
+ });
67
+
68
+ const components = await collect();
69
+
70
+ describe("default data-testid", () => {
71
+ afterEach(() => {
72
+ document.body.innerHTML = "";
73
+ });
74
+
75
+ it.each(components)("%s marks its root", async (name, component) => {
76
+ const wrapper = mount(component, { attachTo: document.body, props: genericProps });
77
+ await wrapper.vm.$nextTick();
78
+
79
+ expect(document.body.querySelector(`[data-testid="${kebab(name)}"]`)).not.toBeNull();
80
+ wrapper.unmount();
81
+ });
82
+
83
+ it.each(components)("%s lets the caller replace the root id", async (name, component) => {
84
+ const wrapper = mount(component, {
85
+ attachTo: document.body,
86
+ props: genericProps,
87
+ attrs: { "data-testid": "from-caller" },
88
+ });
89
+ await wrapper.vm.$nextTick();
90
+
91
+ expect(document.body.querySelector('[data-testid="from-caller"]')).not.toBeNull();
92
+ expect(document.body.querySelector(`[data-testid="${kebab(name)}"]`)).toBeNull();
93
+ wrapper.unmount();
94
+ });
95
+ });
@@ -36,12 +36,12 @@ useRipple(btn);
36
36
  :class="{ loading, small, large, round, reverse, justifyCenter, [$attrs.class + '']: true }"
37
37
  v-bind="{ ...$attrs, disabled: Boolean($attrs.disabled) || loading }"
38
38
  >
39
- <span v-if="!round">
39
+ <span v-if="!round" data-testid="pl-btn-label">
40
40
  <slot />
41
41
  </span>
42
42
  <slot name="icon">
43
- <PlMaskIcon16 v-if="loading" name="loading" :size="size" />
44
- <PlMaskIcon16 v-else-if="icon" :name="icon" :size="size" />
43
+ <PlMaskIcon16 v-if="loading" data-testid="pl-btn-loading" name="loading" :size="size" />
44
+ <PlMaskIcon16 v-else-if="icon" data-testid="pl-btn-icon" :name="icon" :size="size" />
45
45
  </slot>
46
46
  </button>
47
47
  </template>
@@ -47,21 +47,31 @@ const checkboxSvg = computed(() => (props.isSelected ? CheckboxCheckedSvg : Chec
47
47
  </script>
48
48
 
49
49
  <template>
50
- <div :class="classes" class="dropdown-list-item">
50
+ <div :class="classes" class="dropdown-list-item" data-testid="pl-dropdown-list-item">
51
51
  <!-- eslint-disable vue/no-v-html -->
52
- <div v-if="props.useCheckbox" :class="checkboxClasses" v-html="checkboxSvg" />
52
+ <div
53
+ v-if="props.useCheckbox"
54
+ :class="checkboxClasses"
55
+ data-testid="pl-dropdown-list-item-checkbox"
56
+ v-html="checkboxSvg"
57
+ />
53
58
  <!--eslint-enable-->
54
59
  <div class="dropdown-list-item__title-container">
55
- <div class="dropdown-list-item__title text-s">
60
+ <div class="dropdown-list-item__title text-s" data-testid="pl-dropdown-list-item-title">
56
61
  {{ option.label }}
57
62
  </div>
58
- <div v-if="option.description" class="dropdown-list-item__description text-description">
63
+ <div
64
+ v-if="option.description"
65
+ class="dropdown-list-item__description text-description"
66
+ data-testid="pl-dropdown-list-item-description"
67
+ >
59
68
  {{ option.description }}
60
69
  </div>
61
70
  </div>
62
71
  <div
63
72
  v-if="!props.useCheckbox && props.isSelected"
64
73
  class="dropdown-list-item__icon flex-self-start"
74
+ data-testid="pl-dropdown-list-item-selected-icon"
65
75
  />
66
76
  </div>
67
77
  </template>
@@ -77,9 +77,10 @@ function validateInput(isLeft: boolean, event: Event) {
77
77
 
78
78
  <template>
79
79
  <!-- {{ data }} -->
80
- <div :class="classes" class="ui-input-range" v-bind="$attrs">
80
+ <div :class="classes" class="ui-input-range" data-testid="pl-input-range" v-bind="$attrs">
81
81
  <input
82
82
  v-model="valuesModel.left"
83
+ data-testid="pl-input-range-left"
83
84
  class="text-s"
84
85
  type="text"
85
86
  @change="updateModel"
@@ -87,9 +88,12 @@ function validateInput(isLeft: boolean, event: Event) {
87
88
  @focusout="isFocused = false"
88
89
  @input="validateInput(true, $event)"
89
90
  />
90
- <div class="ui-input-range__separator">{{ props.separator }}</div>
91
+ <div data-testid="pl-input-range-separator" class="ui-input-range__separator">
92
+ {{ props.separator }}
93
+ </div>
91
94
  <input
92
95
  v-model="valuesModel.right"
96
+ data-testid="pl-input-range-right"
93
97
  class="text-s"
94
98
  type="text"
95
99
  @change="updateModel"
@@ -50,13 +50,22 @@ defineProps<{
50
50
  </script>
51
51
 
52
52
  <template>
53
- <div class="pl-accordion-section">
54
- <PlSectionSeparator :class="$style.separator" :compact="compact" @click="open = !open">
55
- <PlMaskIcon16 name="chevron-right" :class="[{ [$style.down]: open }, $style.chevron]" />
53
+ <div class="pl-accordion-section" data-testid="pl-accordion-section">
54
+ <PlSectionSeparator
55
+ data-testid="pl-accordion-section-header"
56
+ :class="$style.separator"
57
+ :compact="compact"
58
+ @click="open = !open"
59
+ >
60
+ <PlMaskIcon16
61
+ data-testid="pl-accordion-section-chevron"
62
+ name="chevron-right"
63
+ :class="[{ [$style.down]: open }, $style.chevron]"
64
+ />
56
65
  {{ label }}
57
66
  </PlSectionSeparator>
58
67
  <ExpandTransition>
59
- <div v-if="open" :class="$style.content">
68
+ <div v-if="open" data-testid="pl-accordion-section-body" :class="$style.content">
60
69
  <slot />
61
70
  </div>
62
71
  </ExpandTransition>
@@ -80,19 +80,21 @@ const iconMap = {
80
80
  <template>
81
81
  <div
82
82
  v-if="modelValue"
83
+ data-testid="pl-alert"
83
84
  class="pl-alert"
84
85
  :style="{ maxHeight }"
85
86
  :class="[{ monospace, whiteSpacePre }, type ? `pl-alert__${type}` : '']"
86
87
  >
87
- <div v-if="icon && type" class="pl-alert__icon">
88
+ <div v-if="icon && type" data-testid="pl-alert-icon" class="pl-alert__icon">
88
89
  <div :class="`icon-24 icon-${iconMap[type]}`" />
89
90
  </div>
90
91
  <div class="pl-alert__main">
91
- <label v-if="label">{{ label }}</label>
92
- <div class="pl-alert__main__text"><slot /></div>
92
+ <label v-if="label" data-testid="pl-alert-label">{{ label }}</label>
93
+ <div data-testid="pl-alert-message" class="pl-alert__main__text"><slot /></div>
93
94
  </div>
94
95
  <PlCloseModalBtn
95
96
  v-if="closeable"
97
+ data-testid="pl-alert-close"
96
98
  class="pl-alert__close-btn"
97
99
  @click="$emit('update:modelValue', false)"
98
100
  />
@@ -378,11 +378,16 @@ watch(
378
378
  </script>
379
379
 
380
380
  <template>
381
- <div class="pl-autocomplete__envelope" @click.stop="setFocusOnInput">
381
+ <div
382
+ class="pl-autocomplete__envelope"
383
+ @click.stop="setFocusOnInput"
384
+ data-testid="pl-autocomplete"
385
+ >
382
386
  <div
383
387
  ref="rootRef"
384
388
  :tabindex="tabindex"
385
389
  class="pl-autocomplete"
390
+ data-testid="pl-autocomplete-control"
386
391
  :class="{ open: data.open, error: Boolean(computedError), disabled: isDisabled }"
387
392
  @keydown="handleKeydown"
388
393
  @focusout="onFocusOut"
@@ -398,23 +403,33 @@ watch(
398
403
  :placeholder="computedPlaceholder"
399
404
  spellcheck="false"
400
405
  autocomplete="chrome-off"
406
+ data-testid="pl-autocomplete-input"
401
407
  @focus="onInputFocus"
402
408
  />
403
409
 
404
- <div v-if="!data.open" class="input-value">
410
+ <div v-if="!data.open" class="input-value" data-testid="pl-autocomplete-value">
405
411
  <LongText> {{ textValue }} </LongText>
406
412
  </div>
407
413
 
408
414
  <div class="pl-autocomplete__controls">
409
- <PlMaskIcon24 v-if="isLoadingOptions" name="loading" />
415
+ <PlMaskIcon24
416
+ v-if="isLoadingOptions"
417
+ name="loading"
418
+ data-testid="pl-autocomplete-loading"
419
+ />
410
420
  <PlIcon16
411
421
  v-if="clearable && hasValue"
412
422
  class="clear"
423
+ data-testid="pl-autocomplete-clear"
413
424
  name="delete-clear"
414
425
  @click.stop="clear"
415
426
  />
416
427
  <slot name="append" />
417
- <div class="pl-autocomplete__arrow-wrapper" @click.stop="toggleOpen">
428
+ <div
429
+ class="pl-autocomplete__arrow-wrapper"
430
+ data-testid="pl-autocomplete-arrow"
431
+ @click.stop="toggleOpen"
432
+ >
418
433
  <div
419
434
  v-if="arrowIconLarge"
420
435
  class="arrow-icon"
@@ -425,10 +440,15 @@ watch(
425
440
  </div>
426
441
  </div>
427
442
  </div>
428
- <label v-if="label">
429
- <PlSvg v-if="required" :uri="SvgRequired" />
443
+ <label v-if="label" data-testid="pl-autocomplete-label">
444
+ <PlSvg v-if="required" :uri="SvgRequired" data-testid="pl-autocomplete-required" />
430
445
  <span>{{ label }}</span>
431
- <PlTooltip v-if="slots.tooltip" class="info" position="top">
446
+ <PlTooltip
447
+ v-if="slots.tooltip"
448
+ class="info"
449
+ position="top"
450
+ data-testid="pl-autocomplete-tooltip"
451
+ >
432
452
  <template #tooltip>
433
453
  <slot name="tooltip" />
434
454
  </template>
@@ -439,6 +459,7 @@ watch(
439
459
  ref="overlay"
440
460
  :root="rootRef"
441
461
  class="pl-autocomplete__options"
462
+ data-testid="pl-autocomplete-options"
442
463
  tabindex="-1"
443
464
  :gap="3"
444
465
  >
@@ -449,17 +470,32 @@ watch(
449
470
  :is-selected="item.isSelected"
450
471
  :is-hovered="item.isActive"
451
472
  :size="optionSize"
473
+ data-testid="pl-autocomplete-option"
452
474
  @click.stop="selectOption(item)"
453
475
  />
454
- <div v-if="!renderedOptionsRef.length" class="nothing-found">Nothing found</div>
476
+ <div
477
+ v-if="!renderedOptionsRef.length"
478
+ class="nothing-found"
479
+ data-testid="pl-autocomplete-options-empty"
480
+ >
481
+ Nothing found
482
+ </div>
455
483
  </DropdownOverlay>
456
484
  <DoubleContour class="pl-autocomplete__contour" :group-position="groupPosition" />
457
485
  </div>
458
486
  </div>
459
- <div v-if="computedError" class="pl-autocomplete__error">{{ computedError }}</div>
460
- <div v-else-if="isLoadingOptions && loadingOptionsHelper" class="pl-autocomplete__helper">
487
+ <div v-if="computedError" class="pl-autocomplete__error" data-testid="pl-autocomplete-error">
488
+ {{ computedError }}
489
+ </div>
490
+ <div
491
+ v-else-if="isLoadingOptions && loadingOptionsHelper"
492
+ class="pl-autocomplete__helper"
493
+ data-testid="pl-autocomplete-helper"
494
+ >
461
495
  {{ loadingOptionsHelper }}
462
496
  </div>
463
- <div v-else-if="helper" class="pl-autocomplete__helper">{{ helper }}</div>
497
+ <div v-else-if="helper" class="pl-autocomplete__helper" data-testid="pl-autocomplete-helper">
498
+ {{ helper }}
499
+ </div>
464
500
  </div>
465
501
  </template>