@platforma-sdk/ui-vue 1.58.5 → 1.58.9

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 (495) hide show
  1. package/.turbo/turbo-build.log +195 -181
  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 +14 -0
  6. package/dist/AgGridVue/createAgGridColDef.js +73 -43
  7. package/dist/AgGridVue/createAgGridColDef.js.map +1 -1
  8. package/dist/AgGridVue/selection.js +55 -47
  9. package/dist/AgGridVue/selection.js.map +1 -1
  10. package/dist/AgGridVue/useAgGridOptions.js +212 -229
  11. package/dist/AgGridVue/useAgGridOptions.js.map +1 -1
  12. package/dist/_virtual/_plugin-vue_export-helper.js +5 -9
  13. package/dist/_virtual/_rolldown/runtime.js +15 -0
  14. package/dist/aggrid.js +48 -46
  15. package/dist/aggrid.js.map +1 -1
  16. package/dist/assets/block.css +1 -1
  17. package/dist/assets/ui.css +1 -0
  18. package/dist/components/BlockLayout.js +7 -0
  19. package/dist/components/BlockLayout.js.map +1 -0
  20. package/dist/components/BlockLayout.style.js +4 -0
  21. package/dist/components/BlockLayout.style.js.map +1 -0
  22. package/dist/components/BlockLayout.vue.css +1 -0
  23. package/dist/components/BlockLayout.vue2.js +42 -54
  24. package/dist/components/BlockLayout.vue2.js.map +1 -1
  25. package/dist/components/BlockLoader.js +5 -0
  26. package/dist/components/BlockLoader.js.map +1 -0
  27. package/dist/components/BlockLoader.vue2.js +22 -5
  28. package/dist/components/BlockLoader.vue2.js.map +1 -1
  29. package/dist/components/LoaderPage.js +10 -0
  30. package/dist/components/LoaderPage.js.map +1 -0
  31. package/dist/components/NotFound.js +5 -0
  32. package/dist/components/NotFound.js.map +1 -0
  33. package/dist/components/NotFound.vue2.js +18 -5
  34. package/dist/components/NotFound.vue2.js.map +1 -1
  35. package/dist/components/PlAdvancedFilter/FilterEditor.js +7 -0
  36. package/dist/components/PlAdvancedFilter/FilterEditor.js.map +1 -0
  37. package/dist/components/PlAdvancedFilter/FilterEditor.style.js +18 -0
  38. package/dist/components/PlAdvancedFilter/FilterEditor.style.js.map +1 -0
  39. package/dist/components/PlAdvancedFilter/FilterEditor.vue.css +1 -0
  40. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js +291 -322
  41. package/dist/components/PlAdvancedFilter/FilterEditor.vue2.js.map +1 -1
  42. package/dist/components/PlAdvancedFilter/OperandButton.js +7 -0
  43. package/dist/components/PlAdvancedFilter/OperandButton.js.map +1 -0
  44. package/dist/components/PlAdvancedFilter/OperandButton.style.js +8 -0
  45. package/dist/components/PlAdvancedFilter/OperandButton.style.js.map +1 -0
  46. package/dist/components/PlAdvancedFilter/OperandButton.vue.css +1 -0
  47. package/dist/components/PlAdvancedFilter/OperandButton.vue2.js +19 -24
  48. package/dist/components/PlAdvancedFilter/OperandButton.vue2.js.map +1 -1
  49. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js +7 -0
  50. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.js.map +1 -0
  51. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js +12 -0
  52. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.style.js.map +1 -0
  53. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.css +1 -0
  54. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts +1 -3
  55. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.d.ts.map +1 -1
  56. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js +239 -238
  57. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue2.js.map +1 -1
  58. package/dist/components/PlAdvancedFilter/constants.js +115 -58
  59. package/dist/components/PlAdvancedFilter/constants.js.map +1 -1
  60. package/dist/components/PlAdvancedFilter/index.d.ts +1 -1
  61. package/dist/components/PlAdvancedFilter/index.d.ts.map +1 -1
  62. package/dist/components/PlAdvancedFilter/index.js +6 -6
  63. package/dist/components/PlAdvancedFilter/index.js.map +1 -1
  64. package/dist/components/PlAdvancedFilter/utils.js +49 -64
  65. package/dist/components/PlAdvancedFilter/utils.js.map +1 -1
  66. package/dist/components/PlAgCellFile/PlAgCellFile.js +5 -0
  67. package/dist/components/PlAgCellFile/PlAgCellFile.js.map +1 -0
  68. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js +36 -5
  69. package/dist/components/PlAgCellFile/PlAgCellFile.vue2.js.map +1 -1
  70. package/dist/components/PlAgCellProgress/PlAgCellProgress.js +5 -0
  71. package/dist/components/PlAgCellProgress/PlAgCellProgress.js.map +1 -0
  72. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js +13 -5
  73. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue2.js.map +1 -1
  74. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js +6 -0
  75. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.js.map +1 -0
  76. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js +12 -0
  77. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue2.js.map +1 -0
  78. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js +6 -0
  79. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.js.map +1 -0
  80. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.style.css +1 -0
  81. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js +31 -0
  82. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue2.js.map +1 -0
  83. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js +6 -0
  84. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.js.map +1 -0
  85. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.style.css +1 -0
  86. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js +19 -0
  87. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue2.js.map +1 -0
  88. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js +5 -0
  89. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.js.map +1 -0
  90. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js +68 -5
  91. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue2.js.map +1 -1
  92. package/dist/components/PlAgColumnHeader/pl-ag-column-header.css +1 -1
  93. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js +5 -0
  94. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.js.map +1 -0
  95. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js +26 -5
  96. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue2.js.map +1 -1
  97. package/dist/components/PlAgCsvExporter/export-csv.js +36 -43
  98. package/dist/components/PlAgCsvExporter/export-csv.js.map +1 -1
  99. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js +7 -0
  100. package/dist/components/PlAgDataTable/PlAgDataTableSheets.js.map +1 -0
  101. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js +4 -0
  102. package/dist/components/PlAgDataTable/PlAgDataTableSheets.style.js.map +1 -0
  103. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.css +1 -0
  104. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js +68 -72
  105. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue2.js.map +1 -1
  106. package/dist/components/PlAgDataTable/PlAgDataTableV2.js +7 -0
  107. package/dist/components/PlAgDataTable/PlAgDataTableV2.js.map +1 -0
  108. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js +7 -0
  109. package/dist/components/PlAgDataTable/PlAgDataTableV2.style.js.map +1 -0
  110. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.css +1 -0
  111. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js +307 -336
  112. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue2.js.map +1 -1
  113. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js +5 -0
  114. package/dist/components/PlAgDataTable/PlAgOverlayLoading.js.map +1 -0
  115. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js +26 -5
  116. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue2.js.map +1 -1
  117. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js +6 -0
  118. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.js.map +1 -0
  119. package/dist/components/PlAgDataTable/{PlAgOverlayNoRows.css → PlAgOverlayNoRows.style.css} +1 -1
  120. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js +14 -0
  121. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue2.js.map +1 -0
  122. package/dist/components/PlAgDataTable/PlAgRowCount.js +5 -0
  123. package/dist/components/PlAgDataTable/PlAgRowCount.js.map +1 -0
  124. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js +23 -5
  125. package/dist/components/PlAgDataTable/PlAgRowCount.vue2.js.map +1 -1
  126. package/dist/components/PlAgDataTable/ag-override.js +4 -0
  127. package/dist/components/PlAgDataTable/ag-override.js.map +1 -0
  128. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js +25 -30
  129. package/dist/components/PlAgDataTable/compositions/useFilterableColumns.js.map +1 -1
  130. package/dist/components/PlAgDataTable/compositions/useGrid.js +102 -112
  131. package/dist/components/PlAgDataTable/compositions/useGrid.js.map +1 -1
  132. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.css +1 -1
  133. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js +9 -0
  134. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.js.map +1 -0
  135. package/dist/components/PlAgDataTable/sources/common.js +6 -8
  136. package/dist/components/PlAgDataTable/sources/common.js.map +1 -1
  137. package/dist/components/PlAgDataTable/sources/focus-row.js +36 -51
  138. package/dist/components/PlAgDataTable/sources/focus-row.js.map +1 -1
  139. package/dist/components/PlAgDataTable/sources/menu-items.js +10 -6
  140. package/dist/components/PlAgDataTable/sources/menu-items.js.map +1 -1
  141. package/dist/components/PlAgDataTable/sources/row-number.js +82 -94
  142. package/dist/components/PlAgDataTable/sources/row-number.js.map +1 -1
  143. package/dist/components/PlAgDataTable/sources/table-source-v2.js +178 -199
  144. package/dist/components/PlAgDataTable/sources/table-source-v2.js.map +1 -1
  145. package/dist/components/PlAgDataTable/sources/table-state-v2.js +155 -132
  146. package/dist/components/PlAgDataTable/sources/table-state-v2.js.map +1 -1
  147. package/dist/components/PlAgDataTable/sources/value-rendering.js +33 -38
  148. package/dist/components/PlAgDataTable/sources/value-rendering.js.map +1 -1
  149. package/dist/components/PlAgDataTable/types.js +54 -43
  150. package/dist/components/PlAgDataTable/types.js.map +1 -1
  151. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js +7 -0
  152. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.js.map +1 -0
  153. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js +4 -0
  154. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.style.js.map +1 -0
  155. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js +89 -100
  156. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue2.js.map +1 -1
  157. package/dist/components/PlAgGridColumnManager/useFilteredItems.js +46 -33
  158. package/dist/components/PlAgGridColumnManager/useFilteredItems.js.map +1 -1
  159. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js +5 -0
  160. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.js.map +1 -0
  161. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.d.ts.map +1 -1
  162. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js +37 -5
  163. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue2.js.map +1 -1
  164. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.css +1 -1
  165. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js +10 -0
  166. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.js.map +1 -0
  167. package/dist/components/PlAgRowNumHeader.js +5 -0
  168. package/dist/components/PlAgRowNumHeader.js.map +1 -0
  169. package/dist/components/PlAgRowNumHeader.vue2.js +38 -5
  170. package/dist/components/PlAgRowNumHeader.vue2.js.map +1 -1
  171. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js +5 -0
  172. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.js.map +1 -0
  173. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js +32 -5
  174. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue2.js.map +1 -1
  175. package/dist/components/PlAgTextAndButtonCell/pl-ag-text-and-button-cell.css +1 -1
  176. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js +7 -0
  177. package/dist/components/PlAnnotations/components/AnnotationsSidebar.js.map +1 -0
  178. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js +11 -0
  179. package/dist/components/PlAnnotations/components/AnnotationsSidebar.style.js.map +1 -0
  180. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.css +1 -0
  181. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js +102 -113
  182. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue2.js.map +1 -1
  183. package/dist/components/PlAnnotations/components/FilterSidebar.js +7 -0
  184. package/dist/components/PlAnnotations/components/FilterSidebar.js.map +1 -0
  185. package/dist/components/PlAnnotations/components/FilterSidebar.style.js +7 -0
  186. package/dist/components/PlAnnotations/components/FilterSidebar.style.js.map +1 -0
  187. package/dist/components/PlAnnotations/components/FilterSidebar.vue.css +1 -0
  188. package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts +1 -2
  189. package/dist/components/PlAnnotations/components/FilterSidebar.vue.d.ts.map +1 -1
  190. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js +121 -131
  191. package/dist/components/PlAnnotations/components/FilterSidebar.vue2.js.map +1 -1
  192. package/dist/components/PlAnnotations/components/PlAnnotations.js +7 -0
  193. package/dist/components/PlAnnotations/components/PlAnnotations.js.map +1 -0
  194. package/dist/components/PlAnnotations/components/PlAnnotations.style.js +4 -0
  195. package/dist/components/PlAnnotations/components/PlAnnotations.style.js.map +1 -0
  196. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js +73 -65
  197. package/dist/components/PlAnnotations/components/PlAnnotations.vue2.js.map +1 -1
  198. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js +7 -0
  199. package/dist/components/PlAnnotations/components/PlAnnotationsModal.js.map +1 -0
  200. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js +7 -0
  201. package/dist/components/PlAnnotations/components/PlAnnotationsModal.style.js.map +1 -0
  202. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js +58 -52
  203. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue2.js.map +1 -1
  204. package/dist/components/PlAnnotations/components/style.css +1 -1
  205. package/dist/components/PlAnnotations/components/style.module.js +8 -0
  206. package/dist/components/PlAnnotations/components/style.module.js.map +1 -0
  207. package/dist/components/PlAnnotations/utils.js +6 -8
  208. package/dist/components/PlAnnotations/utils.js.map +1 -1
  209. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js +5 -0
  210. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.js.map +1 -0
  211. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js +57 -5
  212. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue2.js.map +1 -1
  213. package/dist/components/PlAppErrorNotificationAlert/pl-app-error-notification-alert.css +1 -1
  214. package/dist/components/PlBtnExportArchive/Item.js +7 -0
  215. package/dist/components/PlBtnExportArchive/Item.js.map +1 -0
  216. package/dist/components/PlBtnExportArchive/Item.style.js +9 -0
  217. package/dist/components/PlBtnExportArchive/Item.style.js.map +1 -0
  218. package/dist/components/PlBtnExportArchive/Item.vue.css +1 -0
  219. package/dist/components/PlBtnExportArchive/Item.vue2.js +28 -42
  220. package/dist/components/PlBtnExportArchive/Item.vue2.js.map +1 -1
  221. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js +7 -0
  222. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.js.map +1 -0
  223. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js +8 -0
  224. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.style.js.map +1 -0
  225. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.css +1 -0
  226. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js +161 -159
  227. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue2.js.map +1 -1
  228. package/dist/components/PlBtnExportArchive/Summary.js +7 -0
  229. package/dist/components/PlBtnExportArchive/Summary.js.map +1 -0
  230. package/dist/components/PlBtnExportArchive/Summary.style.js +8 -0
  231. package/dist/components/PlBtnExportArchive/Summary.style.js.map +1 -0
  232. package/dist/components/PlBtnExportArchive/Summary.vue.css +1 -0
  233. package/dist/components/PlBtnExportArchive/Summary.vue2.js +26 -41
  234. package/dist/components/PlBtnExportArchive/Summary.vue2.js.map +1 -1
  235. package/dist/components/PlTableFastSearch/PlTableFastSearch.js +5 -0
  236. package/dist/components/PlTableFastSearch/PlTableFastSearch.js.map +1 -0
  237. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js +41 -5
  238. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue2.js.map +1 -1
  239. package/dist/components/PlTableFilters/PlTableFiltersV2.js +7 -0
  240. package/dist/components/PlTableFilters/PlTableFiltersV2.js.map +1 -0
  241. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js +4 -0
  242. package/dist/components/PlTableFilters/PlTableFiltersV2.style.js.map +1 -0
  243. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.css +1 -0
  244. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.d.ts.map +1 -1
  245. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js +97 -106
  246. package/dist/components/PlTableFilters/PlTableFiltersV2.vue2.js.map +1 -1
  247. package/dist/composition/fileContent.js +169 -200
  248. package/dist/composition/fileContent.js.map +1 -1
  249. package/dist/computedResult.js +47 -18
  250. package/dist/computedResult.js.map +1 -1
  251. package/dist/createModel.js +44 -60
  252. package/dist/createModel.js.map +1 -1
  253. package/dist/defineApp.js +87 -113
  254. package/dist/defineApp.js.map +1 -1
  255. package/dist/defineStore.js +15 -16
  256. package/dist/defineStore.js.map +1 -1
  257. package/dist/index.js +39 -98
  258. package/dist/index.js.map +1 -1
  259. package/dist/internal/UpdateSerializer.js +50 -66
  260. package/dist/internal/UpdateSerializer.js.map +1 -1
  261. package/dist/internal/createAppModel.js +54 -68
  262. package/dist/internal/createAppModel.js.map +1 -1
  263. package/dist/internal/createAppV1.js +140 -193
  264. package/dist/internal/createAppV1.js.map +1 -1
  265. package/dist/internal/createAppV2.d.ts.map +1 -1
  266. package/dist/internal/createAppV2.js +149 -193
  267. package/dist/internal/createAppV2.js.map +1 -1
  268. package/dist/internal/createAppV3.d.ts.map +1 -1
  269. package/dist/internal/createAppV3.js +157 -202
  270. package/dist/internal/createAppV3.js.map +1 -1
  271. package/dist/internal/test-helpers/utils.d.ts.map +1 -1
  272. package/dist/lib/util/helpers/dist/error.js +1 -0
  273. package/dist/lib/util/helpers/dist/functions.js +8 -9
  274. package/dist/lib/util/helpers/dist/functions.js.map +1 -1
  275. package/dist/lib/util/helpers/dist/hash.js +5 -0
  276. package/dist/lib/util/helpers/dist/hash.js.map +1 -0
  277. package/dist/lib/util/helpers/dist/index.js +9 -0
  278. package/dist/lib/util/helpers/dist/objects.js +75 -42
  279. package/dist/lib/util/helpers/dist/objects.js.map +1 -1
  280. package/dist/lib/util/helpers/dist/prettyBytes.js +60 -26
  281. package/dist/lib/util/helpers/dist/prettyBytes.js.map +1 -1
  282. package/dist/lib/util/helpers/dist/random.js +6 -8
  283. package/dist/lib/util/helpers/dist/random.js.map +1 -1
  284. package/dist/lib/util/helpers/dist/strings.js +11 -14
  285. package/dist/lib/util/helpers/dist/strings.js.map +1 -1
  286. package/dist/lib/util/helpers/dist/uniqId.js +7 -0
  287. package/dist/lib/util/helpers/dist/uniqId.js.map +1 -0
  288. package/dist/lib/util/helpers/dist/utils.js +34 -50
  289. package/dist/lib/util/helpers/dist/utils.js.map +1 -1
  290. package/dist/lib.js +38 -0
  291. package/dist/objectHash.js +13 -10
  292. package/dist/objectHash.js.map +1 -1
  293. package/dist/plugins/Monetization/EndOfPeriod.js +7 -0
  294. package/dist/plugins/Monetization/EndOfPeriod.js.map +1 -0
  295. package/dist/plugins/Monetization/EndOfPeriod.style.js +4 -0
  296. package/dist/plugins/Monetization/EndOfPeriod.style.js.map +1 -0
  297. package/dist/plugins/Monetization/EndOfPeriod.vue.css +1 -0
  298. package/dist/plugins/Monetization/EndOfPeriod.vue2.js +15 -23
  299. package/dist/plugins/Monetization/EndOfPeriod.vue2.js.map +1 -1
  300. package/dist/plugins/Monetization/LimitCard.js +7 -0
  301. package/dist/plugins/Monetization/LimitCard.js.map +1 -0
  302. package/dist/plugins/Monetization/LimitCard.style.js +18 -0
  303. package/dist/plugins/Monetization/LimitCard.style.js.map +1 -0
  304. package/dist/plugins/Monetization/LimitCard.vue.css +1 -0
  305. package/dist/plugins/Monetization/LimitCard.vue2.js +47 -84
  306. package/dist/plugins/Monetization/LimitCard.vue2.js.map +1 -1
  307. package/dist/plugins/Monetization/MonetizationSidebar.js +5 -0
  308. package/dist/plugins/Monetization/MonetizationSidebar.js.map +1 -0
  309. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js +106 -5
  310. package/dist/plugins/Monetization/MonetizationSidebar.vue2.js.map +1 -1
  311. package/dist/plugins/Monetization/RunStatus.js +7 -0
  312. package/dist/plugins/Monetization/RunStatus.js.map +1 -0
  313. package/dist/plugins/Monetization/RunStatus.style.js +13 -0
  314. package/dist/plugins/Monetization/RunStatus.style.js.map +1 -0
  315. package/dist/plugins/Monetization/RunStatus.vue.css +1 -0
  316. package/dist/plugins/Monetization/RunStatus.vue2.js +21 -40
  317. package/dist/plugins/Monetization/RunStatus.vue2.js.map +1 -1
  318. package/dist/plugins/Monetization/UserCabinetCard.js +7 -0
  319. package/dist/plugins/Monetization/UserCabinetCard.js.map +1 -0
  320. package/dist/plugins/Monetization/UserCabinetCard.style.js +12 -0
  321. package/dist/plugins/Monetization/UserCabinetCard.style.js.map +1 -0
  322. package/dist/plugins/Monetization/UserCabinetCard.vue.css +1 -0
  323. package/dist/plugins/Monetization/UserCabinetCard.vue2.js +50 -70
  324. package/dist/plugins/Monetization/UserCabinetCard.vue2.js.map +1 -1
  325. package/dist/plugins/Monetization/useButtonTarget.js +15 -16
  326. package/dist/plugins/Monetization/useButtonTarget.js.map +1 -1
  327. package/dist/plugins/Monetization/useInfo.js +36 -71
  328. package/dist/plugins/Monetization/useInfo.js.map +1 -1
  329. package/dist/plugins/Monetization/validation.js +34 -42
  330. package/dist/plugins/Monetization/validation.js.map +1 -1
  331. package/dist/urls.d.ts.map +1 -1
  332. package/dist/urls.js +4 -5
  333. package/dist/urls.js.map +1 -1
  334. package/dist/usePlugin.js +32 -12
  335. package/dist/usePlugin.js.map +1 -1
  336. package/dist/utils.d.ts.map +1 -1
  337. package/dist/utils.js +29 -54
  338. package/dist/utils.js.map +1 -1
  339. package/package.json +8 -8
  340. package/src/components/PlAdvancedFilter/index.ts +1 -1
  341. package/src/components/PlAnnotations/components/FilterSidebar.vue +11 -6
  342. package/src/components/PlTableFilters/PlTableFiltersV2.vue +2 -1
  343. package/dist/_virtual/_plugin-vue_export-helper.js.map +0 -1
  344. package/dist/components/BlockLayout.css +0 -1
  345. package/dist/components/BlockLayout.vue.js +0 -10
  346. package/dist/components/BlockLayout.vue.js.map +0 -1
  347. package/dist/components/BlockLayout.vue3.js +0 -8
  348. package/dist/components/BlockLayout.vue3.js.map +0 -1
  349. package/dist/components/BlockLoader.vue.js +0 -26
  350. package/dist/components/BlockLoader.vue.js.map +0 -1
  351. package/dist/components/LoaderPage.vue.js +0 -15
  352. package/dist/components/LoaderPage.vue.js.map +0 -1
  353. package/dist/components/NotFound.vue.js +0 -26
  354. package/dist/components/NotFound.vue.js.map +0 -1
  355. package/dist/components/PlAdvancedFilter/FilterEditor.css +0 -1
  356. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js +0 -10
  357. package/dist/components/PlAdvancedFilter/FilterEditor.vue.js.map +0 -1
  358. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js +0 -32
  359. package/dist/components/PlAdvancedFilter/FilterEditor.vue3.js.map +0 -1
  360. package/dist/components/PlAdvancedFilter/OperandButton.css +0 -1
  361. package/dist/components/PlAdvancedFilter/OperandButton.vue.js +0 -10
  362. package/dist/components/PlAdvancedFilter/OperandButton.vue.js.map +0 -1
  363. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js +0 -12
  364. package/dist/components/PlAdvancedFilter/OperandButton.vue3.js.map +0 -1
  365. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.css +0 -1
  366. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js +0 -10
  367. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue.js.map +0 -1
  368. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js +0 -20
  369. package/dist/components/PlAdvancedFilter/PlAdvancedFilter.vue3.js.map +0 -1
  370. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js +0 -32
  371. package/dist/components/PlAgCellFile/PlAgCellFile.vue.js.map +0 -1
  372. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js +0 -16
  373. package/dist/components/PlAgCellProgress/PlAgCellProgress.vue.js.map +0 -1
  374. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js +0 -22
  375. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue.js.map +0 -1
  376. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js +0 -6
  377. package/dist/components/PlAgCellStatusTag/PlAgCellStatusTag.vue3.js.map +0 -1
  378. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.css +0 -1
  379. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js +0 -32
  380. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue.js.map +0 -1
  381. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js +0 -6
  382. package/dist/components/PlAgChartHistogramCell/PlAgChartHistogramCell.vue3.js.map +0 -1
  383. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.css +0 -1
  384. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js +0 -24
  385. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue.js.map +0 -1
  386. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js +0 -6
  387. package/dist/components/PlAgChartStackedBarCell/PlAgChartStackedBarCell.vue3.js.map +0 -1
  388. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js +0 -97
  389. package/dist/components/PlAgColumnHeader/PlAgColumnHeader.vue.js.map +0 -1
  390. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js +0 -33
  391. package/dist/components/PlAgCsvExporter/PlAgCsvExporter.vue.js.map +0 -1
  392. package/dist/components/PlAgDataTable/PlAgDataTableSheets.css +0 -1
  393. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js +0 -10
  394. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue.js.map +0 -1
  395. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js +0 -8
  396. package/dist/components/PlAgDataTable/PlAgDataTableSheets.vue3.js.map +0 -1
  397. package/dist/components/PlAgDataTable/PlAgDataTableV2.css +0 -1
  398. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js +0 -10
  399. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue.js.map +0 -1
  400. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js +0 -10
  401. package/dist/components/PlAgDataTable/PlAgDataTableV2.vue3.js.map +0 -1
  402. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js +0 -48
  403. package/dist/components/PlAgDataTable/PlAgOverlayLoading.vue.js.map +0 -1
  404. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js +0 -22
  405. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue.js.map +0 -1
  406. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js +0 -6
  407. package/dist/components/PlAgDataTable/PlAgOverlayNoRows.vue3.js.map +0 -1
  408. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js +0 -26
  409. package/dist/components/PlAgDataTable/PlAgRowCount.vue.js.map +0 -1
  410. package/dist/components/PlAgDataTable/ag-override.css.js +0 -31
  411. package/dist/components/PlAgDataTable/ag-override.css.js.map +0 -1
  412. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js +0 -14
  413. package/dist/components/PlAgDataTable/pl-ag-overlay-loading.module.scss.js.map +0 -1
  414. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js +0 -10
  415. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue.js.map +0 -1
  416. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js +0 -8
  417. package/dist/components/PlAgGridColumnManager/PlAgGridColumnManager.vue3.js.map +0 -1
  418. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js +0 -48
  419. package/dist/components/PlAgRowNumCheckbox/PlAgRowNumCheckbox.vue.js.map +0 -1
  420. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js +0 -15
  421. package/dist/components/PlAgRowNumCheckbox/pl-ag-row-num-checkbox.module.scss.js.map +0 -1
  422. package/dist/components/PlAgRowNumHeader.vue.js +0 -39
  423. package/dist/components/PlAgRowNumHeader.vue.js.map +0 -1
  424. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js +0 -45
  425. package/dist/components/PlAgTextAndButtonCell/PlAgTextAndButtonCell.vue.js.map +0 -1
  426. package/dist/components/PlAnnotations/components/AnnotationsSidebar.css +0 -1
  427. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js +0 -10
  428. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue.js.map +0 -1
  429. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js +0 -18
  430. package/dist/components/PlAnnotations/components/AnnotationsSidebar.vue3.js.map +0 -1
  431. package/dist/components/PlAnnotations/components/FilterSidebar.css +0 -1
  432. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js +0 -10
  433. package/dist/components/PlAnnotations/components/FilterSidebar.vue.js.map +0 -1
  434. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js +0 -10
  435. package/dist/components/PlAnnotations/components/FilterSidebar.vue3.js.map +0 -1
  436. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js +0 -10
  437. package/dist/components/PlAnnotations/components/PlAnnotations.vue.js.map +0 -1
  438. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js +0 -8
  439. package/dist/components/PlAnnotations/components/PlAnnotations.vue3.js.map +0 -1
  440. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js +0 -10
  441. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue.js.map +0 -1
  442. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js +0 -10
  443. package/dist/components/PlAnnotations/components/PlAnnotationsModal.vue3.js.map +0 -1
  444. package/dist/components/PlAnnotations/components/style.module.css.js +0 -12
  445. package/dist/components/PlAnnotations/components/style.module.css.js.map +0 -1
  446. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js +0 -79
  447. package/dist/components/PlAppErrorNotificationAlert/PlAppErrorNotificationAlert.vue.js.map +0 -1
  448. package/dist/components/PlBtnExportArchive/Item.css +0 -1
  449. package/dist/components/PlBtnExportArchive/Item.vue.js +0 -10
  450. package/dist/components/PlBtnExportArchive/Item.vue.js.map +0 -1
  451. package/dist/components/PlBtnExportArchive/Item.vue3.js +0 -14
  452. package/dist/components/PlBtnExportArchive/Item.vue3.js.map +0 -1
  453. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.css +0 -1
  454. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js +0 -10
  455. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue.js.map +0 -1
  456. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js +0 -12
  457. package/dist/components/PlBtnExportArchive/PlBtnExportArchive.vue3.js.map +0 -1
  458. package/dist/components/PlBtnExportArchive/Summary.css +0 -1
  459. package/dist/components/PlBtnExportArchive/Summary.vue.js +0 -10
  460. package/dist/components/PlBtnExportArchive/Summary.vue.js.map +0 -1
  461. package/dist/components/PlBtnExportArchive/Summary.vue3.js +0 -12
  462. package/dist/components/PlBtnExportArchive/Summary.vue3.js.map +0 -1
  463. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js +0 -54
  464. package/dist/components/PlTableFastSearch/PlTableFastSearch.vue.js.map +0 -1
  465. package/dist/components/PlTableFilters/PlTableFiltersV2.css +0 -1
  466. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js +0 -10
  467. package/dist/components/PlTableFilters/PlTableFiltersV2.vue.js.map +0 -1
  468. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js +0 -8
  469. package/dist/components/PlTableFilters/PlTableFiltersV2.vue3.js.map +0 -1
  470. package/dist/plugins/Monetization/EndOfPeriod.css +0 -1
  471. package/dist/plugins/Monetization/EndOfPeriod.vue.js +0 -10
  472. package/dist/plugins/Monetization/EndOfPeriod.vue.js.map +0 -1
  473. package/dist/plugins/Monetization/EndOfPeriod.vue3.js +0 -8
  474. package/dist/plugins/Monetization/EndOfPeriod.vue3.js.map +0 -1
  475. package/dist/plugins/Monetization/LimitCard.css +0 -1
  476. package/dist/plugins/Monetization/LimitCard.vue.js +0 -10
  477. package/dist/plugins/Monetization/LimitCard.vue.js.map +0 -1
  478. package/dist/plugins/Monetization/LimitCard.vue3.js +0 -32
  479. package/dist/plugins/Monetization/LimitCard.vue3.js.map +0 -1
  480. package/dist/plugins/Monetization/MonetizationSidebar.vue.js +0 -138
  481. package/dist/plugins/Monetization/MonetizationSidebar.vue.js.map +0 -1
  482. package/dist/plugins/Monetization/RunStatus.css +0 -1
  483. package/dist/plugins/Monetization/RunStatus.vue.js +0 -10
  484. package/dist/plugins/Monetization/RunStatus.vue.js.map +0 -1
  485. package/dist/plugins/Monetization/RunStatus.vue3.js +0 -20
  486. package/dist/plugins/Monetization/RunStatus.vue3.js.map +0 -1
  487. package/dist/plugins/Monetization/UserCabinetCard.css +0 -1
  488. package/dist/plugins/Monetization/UserCabinetCard.vue.js +0 -10
  489. package/dist/plugins/Monetization/UserCabinetCard.vue.js.map +0 -1
  490. package/dist/plugins/Monetization/UserCabinetCard.vue3.js +0 -20
  491. package/dist/plugins/Monetization/UserCabinetCard.vue3.js.map +0 -1
  492. /package/dist/components/PlAgCellStatusTag/{PlAgCellStatusTag.css → PlAgCellStatusTag.style.css} +0 -0
  493. /package/dist/components/PlAgGridColumnManager/{PlAgGridColumnManager.css → PlAgGridColumnManager.vue.css} +0 -0
  494. /package/dist/components/PlAnnotations/components/{PlAnnotations.css → PlAnnotations.vue.css} +0 -0
  495. /package/dist/components/PlAnnotations/components/{PlAnnotationsModal.css → PlAnnotationsModal.vue.css} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgDataTableV2.vue2.js","sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableKey,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n} from \"@platforma-sdk/model\";\nimport type { CellRendererSelectorFunc, GridApi, GridState } from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, ref, toRefs, watch, watchEffect } from \"vue\";\nimport { AgGridTheme } from \"../../aggrid\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport { PlTableFastSearch } from \"../PlTableFastSearch\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n} from \"./types\";\nimport { useFilterableColumns } from \"./compositions/useFilterableColumns\";\nimport { useGrid } from \"./compositions/useGrid\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst { gridApi, gridOptions } = useGrid({\n selection: selection.value,\n noRowsText: props.noRowsText,\n runningText: props.runningText,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n cellRendererSelector: props.cellRendererSelector,\n});\ngridOptions.value.onGridPreDestroyed = (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.api.getState());\n gridApi.value = null;\n};\ngridOptions.value.onRowDoubleClicked = (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n};\ngridOptions.value.onStateUpdated = (event) => {\n let partialState = makePartialState(event.state);\n // AG Grid omits columnVisibility when no columns are hidden. If we previously had\n // hidden columns and now get undefined, treat as \"all visible\" so we don't revert to default.\n const hadHiddenCols = gridState.value.columnVisibility?.hiddenColIds !== undefined;\n if (partialState.columnVisibility === undefined && hadHiddenCols) {\n partialState = { ...partialState, columnVisibility: { hiddenColIds: [] } };\n }\n // We have to keep initialState synchronized with gridState for gridState recovery after key updating.\n gridOptions.value.initialState = gridState.value = partialState;\n\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n};\n\nconst [filterableColumns, visibleFilterableColumns] = useFilterableColumns(\n () => settings.value.sourceId,\n () => gridOptions.value.columnDefs ?? null,\n);\nconst { gridState, sheetsState, filtersState, searchString } = useTableState(\n tableState,\n settings,\n visibleFilterableColumns,\n);\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\ngridOptions.value.initialState = gridState.value;\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// Normalize columnVisibility for comparison: undefined and { hiddenColIds: [] } are equivalent.\nfunction stateForReloadCompare(state: PlDataTableGridStateCore): PlDataTableGridStateCore {\n const cv = state.columnVisibility;\n const normalizedCv = !cv || cv.hiddenColIds.length === 0 ? undefined : state.columnVisibility;\n return { ...state, columnVisibility: normalizedCv };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (\n !isJsonEqual(gridState, {}) &&\n !isJsonEqual(stateForReloadCompare(gridState), stateForReloadCompare(selfState))\n ) {\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :columns=\"filterableColumns\"\n />\n <PlAgCsvExporter v-if=\"gridApi && showExportButton\" :api=\"gridApi\" />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <PlTableFastSearch v-model=\"searchString\" />\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"names":["tableState","_useModel","selection","__props","props","settings","toRefs","emit","__emit","dataRenderedTracker","DeferredCircular","gridApi","gridOptions","useGrid","event","gridState","makePartialState","partialState","hadHiddenCols","_a","isJsonEqual","column","PlAgDataTableRowNumberColId","filterableColumns","visibleFilterableColumns","useFilterableColumns","sheetsState","filtersState","searchString","useTableState","sheetsSettings","computed","settingsCopy","state","stateForReloadCompare","cv","normalizedCv","reloadKey","ref","watch","selfState","cellRendererSelector","__expose","rowKey","ensureNodeVisible","row","axesSpec","selectedKeys","axes","mapping","spec","id","getAxisId","axis","matchAxisId","mappingSet","selectedNodes","key","canonicalizeJson","index","oldSelectedKeys","scope","effectScope","resolve","promise","promiseTimeout","defaultSelection","createPlSelectionModel","oldSettings","generation","sourceChanged","rowCount","params","stateGeneration","calculateGridOptions","getRawPlatformaInstance","_b","result","options","oldAxesSpec","newSelection","error","isAbortError","loadingText","runningText","notReadyText","noRowsText","watchEffect","PlAgRowCount","_createElementBlock","_normalizeClass","$style","_unref","_createBlock","PlAgGridColumnManager","PlTableFiltersV2","$event","PlAgCsvExporter","_createVNode","PlAgDataTableSheets","$slots","_renderSlot","_ctx","PlTableFastSearch","AgGridVue","AgGridTheme"],"mappings":"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"}
1
+ {"version":3,"file":"PlAgDataTableV2.vue_vue_type_script_setup_true_lang.js","names":["$style","$slots"],"sources":["../../../src/components/PlAgDataTable/PlAgDataTableV2.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { promiseTimeout, isJsonEqual } from \"@milaboratories/helpers\";\nimport type {\n AxisId,\n PlDataTableGridStateCore,\n PlDataTableStateV2,\n PlSelectionModel,\n PlTableColumnIdJson,\n PTableKey,\n} from \"@platforma-sdk/model\";\nimport {\n getRawPlatformaInstance,\n createPlSelectionModel,\n matchAxisId,\n getAxisId,\n canonicalizeJson,\n isAbortError,\n} from \"@platforma-sdk/model\";\nimport type { CellRendererSelectorFunc, GridApi, GridState } from \"ag-grid-enterprise\";\nimport { AgGridVue } from \"ag-grid-vue3\";\nimport { computed, effectScope, ref, toRefs, watch, watchEffect } from \"vue\";\nimport { AgGridTheme } from \"../../aggrid\";\nimport PlAgCsvExporter from \"../PlAgCsvExporter/PlAgCsvExporter.vue\";\nimport { PlAgGridColumnManager } from \"../PlAgGridColumnManager\";\nimport PlTableFiltersV2 from \"../PlTableFilters/PlTableFiltersV2.vue\";\nimport { PlTableFastSearch } from \"../PlTableFastSearch\";\nimport PlAgDataTableSheets from \"./PlAgDataTableSheets.vue\";\nimport PlAgRowCount from \"./PlAgRowCount.vue\";\nimport { DeferredCircular, ensureNodeVisible } from \"./sources/focus-row\";\nimport { PlAgDataTableRowNumberColId } from \"./sources/row-number\";\nimport type { PlAgCellButtonAxisParams } from \"./sources/table-source-v2\";\nimport { calculateGridOptions } from \"./sources/table-source-v2\";\nimport { useTableState } from \"./sources/table-state-v2\";\nimport type {\n PlAgDataTableV2Controller,\n PlAgDataTableV2Row,\n PlAgOverlayLoadingParams,\n PlAgOverlayNoRowsParams,\n PlDataTableSettingsV2,\n PlDataTableSheetsSettings,\n PlTableRowId,\n} from \"./types\";\nimport { useFilterableColumns } from \"./compositions/useFilterableColumns\";\nimport { useGrid } from \"./compositions/useGrid\";\n\nconst tableState = defineModel<PlDataTableStateV2>({\n required: true,\n});\n/** Warning: selection model value updates are ignored, use updateSelection instead */\nconst selection = defineModel<PlSelectionModel>(\"selection\");\nconst props = defineProps<{\n /** Required component settings */\n settings: Readonly<PlDataTableSettingsV2>;\n\n /**\n * The disableColumnsPanel prop controls the display of a button that activates\n * the columns management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableColumnsPanel?: boolean;\n\n /**\n * The disableFiltersPanel prop controls the display of a button that activates\n * the filters management panel in the table. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n disableFiltersPanel?: boolean;\n\n /**\n * The showExportButton prop controls the display of a button that allows\n * to export table data in CSV format. To make the button functional\n * and visible, you must also include the PlAgDataTableToolsPanel component in your layout.\n * This component serves as the target for teleporting the button.\n */\n showExportButton?: boolean;\n\n /**\n * The AxisId property is used to configure and display the PlAgTextAndButtonCell component\n */\n showCellButtonForAxisId?: AxisId;\n\n /**\n * If cellButtonInvokeRowsOnDoubleClick = true, clicking a button inside the row\n * triggers the doubleClick event for the entire row.\n *\n * If cellButtonInvokeRowsOnDoubleClick = false, the doubleClick event for the row\n * is not triggered, but will triggered cellButtonClicked event with (key: PTableRowKey) argument.\n */\n cellButtonInvokeRowsOnDoubleClick?: boolean;\n\n /** @see {@link PlAgOverlayLoadingParams.loadingText} */\n loadingText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.runningText} */\n runningText?: string;\n\n /** @see {@link PlAgOverlayLoadingParams.notReadyText} */\n notReadyText?: string;\n\n /** @see {@link PlAgOverlayNoRowsParams.text} */\n noRowsText?: string;\n\n /**\n * Callback to override the default renderer for a given cell.\n * @see https://www.ag-grid.com/vue-data-grid/component-cell-renderer/#dynamic-component-selection\n */\n cellRendererSelector?: CellRendererSelectorFunc<PlAgDataTableV2Row>;\n}>();\nconst { settings } = toRefs(props);\nconst emit = defineEmits<{\n rowDoubleClicked: [key?: PTableKey];\n cellButtonClicked: [key?: PTableKey];\n newDataRendered: [];\n}>();\n\nconst dataRenderedTracker = new DeferredCircular<GridApi<PlAgDataTableV2Row>>();\nconst { gridApi, gridOptions } = useGrid({\n selection: selection.value,\n noRowsText: props.noRowsText,\n runningText: props.runningText,\n loadingText: props.loadingText,\n notReadyText: props.notReadyText,\n cellRendererSelector: props.cellRendererSelector,\n});\ngridOptions.value.onGridPreDestroyed = (event) => {\n gridOptions.value.initialState = gridState.value = makePartialState(event.api.getState());\n gridApi.value = null;\n};\ngridOptions.value.onRowDoubleClicked = (event) => {\n if (event.data && event.data.axesKey) emit(\"rowDoubleClicked\", event.data.axesKey);\n};\ngridOptions.value.onStateUpdated = (event) => {\n let partialState = makePartialState(event.state);\n // AG Grid omits columnVisibility when no columns are hidden. If we previously had\n // hidden columns and now get undefined, treat as \"all visible\" so we don't revert to default.\n const hadHiddenCols = gridState.value.columnVisibility?.hiddenColIds !== undefined;\n if (partialState.columnVisibility === undefined && hadHiddenCols) {\n partialState = { ...partialState, columnVisibility: { hiddenColIds: [] } };\n }\n // We have to keep initialState synchronized with gridState for gridState recovery after key updating.\n gridOptions.value.initialState = gridState.value = partialState;\n\n if (!isJsonEqual(event.sources, [\"columnSizing\"])) {\n event.api.autoSizeColumns(\n event.api\n .getAllDisplayedColumns()\n .filter((column) => column.getColId() !== PlAgDataTableRowNumberColId),\n );\n }\n};\n\nconst [filterableColumns, visibleFilterableColumns] = useFilterableColumns(\n () => settings.value.sourceId,\n () => gridOptions.value.columnDefs ?? null,\n);\nconst { gridState, sheetsState, filtersState, searchString } = useTableState(\n tableState,\n settings,\n visibleFilterableColumns,\n);\nconst sheetsSettings = computed<PlDataTableSheetsSettings>(() => {\n const settingsCopy = { ...settings.value };\n return settingsCopy.sourceId !== null\n ? {\n sheets: settingsCopy.sheets ?? [],\n cachedState: [...sheetsState.value],\n }\n : {\n sheets: [],\n cachedState: [],\n };\n});\ngridOptions.value.initialState = gridState.value;\n\n// Restore proper types erased by AgGrid\nfunction makePartialState(state: GridState): PlDataTableGridStateCore {\n return {\n columnOrder: state.columnOrder as\n | {\n orderedColIds: PlTableColumnIdJson[];\n }\n | undefined,\n sort: state.sort as\n | {\n sortModel: {\n colId: PlTableColumnIdJson;\n sort: \"asc\" | \"desc\";\n }[];\n }\n | undefined,\n columnVisibility: state.columnVisibility as\n | {\n hiddenColIds: PlTableColumnIdJson[];\n }\n | undefined,\n };\n}\n\n// Normalize columnVisibility for comparison: undefined and { hiddenColIds: [] } are equivalent.\nfunction stateForReloadCompare(state: PlDataTableGridStateCore): PlDataTableGridStateCore {\n const cv = state.columnVisibility;\n const normalizedCv = !cv || cv.hiddenColIds.length === 0 ? undefined : state.columnVisibility;\n return { ...state, columnVisibility: normalizedCv };\n}\n\n// Reload AgGrid when new state arrives from server\nconst reloadKey = ref(0);\nwatch(\n () => [gridApi.value, gridState.value] as const,\n ([gridApi, gridState]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n const selfState = makePartialState(gridApi.getState());\n if (\n !isJsonEqual(gridState, {}) &&\n !isJsonEqual(stateForReloadCompare(gridState), stateForReloadCompare(selfState))\n ) {\n gridOptions.value.initialState = gridState;\n ++reloadKey.value;\n }\n },\n);\n\n// Make cellRendererSelector reactive\nconst cellRendererSelector = computed(() => props.cellRendererSelector ?? null);\nwatch(\n () => [gridApi.value, cellRendererSelector.value] as const,\n ([gridApi, cellRendererSelector]) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.setGridOption(\"defaultColDef\", {\n ...gridOptions.value.defaultColDef,\n cellRendererSelector: cellRendererSelector ?? undefined,\n });\n },\n);\n\ndefineExpose<PlAgDataTableV2Controller>({\n focusRow: async (rowKey) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n return ensureNodeVisible(gridApi, (row) => isJsonEqual(row.data?.axesKey, rowKey));\n },\n updateSelection: async ({ axesSpec, selectedKeys }) => {\n const gridApi = await dataRenderedTracker.promise;\n if (gridApi.isDestroyed()) return false;\n\n const axes = selection.value?.axesSpec;\n if (!axes || axes.length !== axesSpec.length) return false;\n\n const mapping = axesSpec.map((spec) => {\n const id = getAxisId(spec);\n return axes.findIndex((axis) => matchAxisId(axis, id));\n });\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) return false;\n\n const selectedNodes = selectedKeys.map((key) =>\n canonicalizeJson<PlTableRowId>(mapping.map((index) => key[index])),\n );\n const oldSelectedKeys = gridApi.getServerSideSelectionState()?.toggledNodes ?? [];\n if (!isJsonEqual(oldSelectedKeys, selectedNodes)) {\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes,\n });\n\n // wait for `onSelectionChanged` to update `selection` model\n const scope = effectScope();\n const { resolve, promise } = Promise.withResolvers();\n scope.run(() => watch(selection, resolve, { once: true }));\n try {\n await promiseTimeout(promise, 500);\n } catch {\n return false;\n } finally {\n scope.stop();\n }\n }\n return true;\n },\n});\n\n// Update AgGrid when settings change\nconst defaultSelection = createPlSelectionModel();\nlet oldSettings: PlDataTableSettingsV2 | null = null;\nconst generation = ref(0);\nwatch(\n () => [gridApi.value, settings.value] as const,\n ([gridApi, settings]) => {\n // Wait for AgGrid reinitialization, gridApi will eventually become initialized\n if (!gridApi || gridApi.isDestroyed()) return;\n // Verify that this is not a false watch trigger\n if (isJsonEqual(settings, oldSettings)) return;\n ++generation.value;\n try {\n // Hide no rows overlay if it is shown, or else loading overlay will not be shown\n gridApi.hideOverlay();\n dataRenderedTracker.reset();\n\n // No data source selected -> reset state to default\n if (settings.sourceId === null) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: settings.pending ? \"running\" : \"not-ready\",\n } satisfies PlAgOverlayLoadingParams,\n columnDefs: undefined,\n serverSideDatasource: undefined,\n });\n if (selection.value) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n return;\n }\n\n // Data source changed -> show full page loader, clear selection\n if (settings.sourceId !== oldSettings?.sourceId) {\n gridApi.updateGridOptions({\n loading: true,\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n variant: \"loading\",\n } satisfies PlAgOverlayLoadingParams,\n });\n if (selection.value && oldSettings?.sourceId) {\n if (selection.value && !isJsonEqual(selection.value, defaultSelection)) {\n selection.value = createPlSelectionModel();\n }\n gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n }\n\n // Model updated -> show skeletons instead of data\n const sourceChanged =\n settings.model?.sourceId && settings.model.sourceId !== settings.sourceId;\n if (!settings.model || sourceChanged) {\n const state = gridApi.getServerSideGroupLevelState();\n const rowCount = !sourceChanged && state.length > 0 ? state[0].rowCount : 1;\n return gridApi.updateGridOptions({\n serverSideDatasource: {\n getRows: (params) => {\n params.success({ rowData: [], rowCount });\n },\n },\n });\n }\n\n // Model ready -> calculate new state\n const stateGeneration = generation.value;\n calculateGridOptions({\n generation,\n pfDriver: getRawPlatformaInstance().pFrameDriver,\n model: settings.model,\n sheets: settings.sheets ?? [],\n dataRenderedTracker,\n hiddenColIds: gridState.value.columnVisibility?.hiddenColIds,\n cellButtonAxisParams: {\n showCellButtonForAxisId: props.showCellButtonForAxisId,\n cellButtonInvokeRowsOnDoubleClick: props.cellButtonInvokeRowsOnDoubleClick,\n trigger: (key?: PTableKey) => emit(\"cellButtonClicked\", key),\n } satisfies PlAgCellButtonAxisParams,\n })\n .then((result) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n const { axesSpec, ...options } = result;\n gridApi.updateGridOptions({\n ...options,\n });\n if (selection.value) {\n // Update selection if axesSpec changed, as order of axes may have changed and so we need to remap selected keys\n const { axesSpec: oldAxesSpec, selectedKeys: oldSelectedKeys } = selection.value;\n if (!isJsonEqual(oldAxesSpec, axesSpec)) {\n if (!oldAxesSpec || axesSpec.length !== oldAxesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const mapping = oldAxesSpec\n .map(getAxisId)\n .map((id) => axesSpec.findIndex((axis) => matchAxisId(axis, id)));\n const mappingSet = new Set(mapping);\n if (mappingSet.has(-1) || mappingSet.size !== axesSpec.length) {\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: [] };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: [],\n });\n }\n\n const selectedNodes = oldSelectedKeys.map((key) =>\n mapping.map((index) => key[index]),\n );\n const newSelection: PlSelectionModel = { axesSpec, selectedKeys: selectedNodes };\n if (!isJsonEqual(selection.value, newSelection)) {\n selection.value = newSelection;\n }\n return gridApi.setServerSideSelectionState({\n selectAll: false,\n toggledNodes: selectedNodes.map((key) => canonicalizeJson<PlTableRowId>(key)),\n });\n }\n }\n })\n .catch((error: unknown) => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n if (isAbortError(error)) return;\n console.trace(error);\n })\n .finally(() => {\n if (gridApi.isDestroyed() || stateGeneration !== generation.value) return;\n gridApi.updateGridOptions({\n loading: false,\n });\n });\n dataRenderedTracker.promise.then(() => emit(\"newDataRendered\"));\n } catch (error: unknown) {\n console.trace(error);\n } finally {\n oldSettings = settings;\n }\n },\n);\n\nwatch(\n () => ({\n gridApi: gridApi.value,\n loadingText: props.loadingText,\n runningText: props.runningText,\n notReadyText: props.notReadyText,\n noRowsText: props.noRowsText,\n }),\n ({ gridApi, loadingText, runningText, notReadyText, noRowsText }) => {\n if (!gridApi || gridApi.isDestroyed()) return;\n gridApi.updateGridOptions({\n loadingOverlayComponentParams: {\n ...gridOptions.value.loadingOverlayComponentParams,\n loadingText,\n runningText,\n notReadyText,\n },\n noRowsOverlayComponentParams: {\n ...gridOptions.value.noRowsOverlayComponentParams,\n text: noRowsText,\n },\n });\n },\n);\n\nwatchEffect(() => {\n if (!gridApi.value || gridApi.value?.isDestroyed()) return;\n gridApi.value.updateGridOptions({\n statusBar: gridOptions.value.loading\n ? undefined\n : {\n statusPanels: [{ statusPanel: PlAgRowCount, align: \"left\" }],\n },\n });\n});\n</script>\n\n<template>\n <div :class=\"$style.container\">\n <PlAgGridColumnManager v-if=\"gridApi && !disableColumnsPanel\" :api=\"gridApi\" />\n <PlTableFiltersV2\n v-if=\"!disableFiltersPanel\"\n v-model=\"filtersState\"\n :columns=\"filterableColumns\"\n />\n <PlAgCsvExporter v-if=\"gridApi && showExportButton\" :api=\"gridApi\" />\n <PlAgDataTableSheets v-model=\"sheetsState\" :settings=\"sheetsSettings\">\n <template v-if=\"$slots['before-sheets']\" #before>\n <slot name=\"before-sheets\" />\n </template>\n <template v-if=\"$slots['after-sheets']\" #after>\n <slot name=\"after-sheets\" />\n </template>\n </PlAgDataTableSheets>\n <PlTableFastSearch v-model=\"searchString\" />\n <AgGridVue\n :key=\"reloadKey\"\n :theme=\"AgGridTheme\"\n :class=\"$style.grid\"\n :grid-options=\"gridOptions\"\n />\n </div>\n</template>\n\n<style lang=\"css\" module>\n.container {\n display: flex;\n flex-direction: column;\n height: 100%;\n gap: 12px;\n}\n\n.grid {\n flex: 1;\n}\n</style>\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import e from "./PlAgOverlayLoading.vue2.js";
2
+ var t = e;
3
+ export { t as default };
4
+
5
+ //# sourceMappingURL=PlAgOverlayLoading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlAgOverlayLoading.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayLoading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PL_PLACEHOLDER_TEXTS, PlPlaceholder } from \"@milaboratories/uikit\";\nimport type { PlPlaceholderProps } from \"@milaboratories/uikit\";\nimport { ref } from \"vue\";\nimport style from \"./pl-ag-overlay-loading.module.scss\";\nimport type { PlAgOverlayLoadingParams } from \"./types\";\n\n// @TODO move this component from this folder\n\nconst props = defineProps<{\n /** Required object that contains props from loadingOverlayComponentParams. */\n params: PlAgOverlayLoadingParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayLoadingParams) => {\n params.value = newParams;\n },\n});\n\nfunction normalizePlaceholderText(\n text: string | Pick<PlPlaceholderProps, \"title\" | \"subtitle\">,\n): Pick<PlPlaceholderProps, \"title\" | \"subtitle\"> {\n if (typeof text === \"string\") return { title: text };\n return text;\n}\n</script>\n\n<template>\n <div :class=\"style.container\">\n <div v-if=\"params.variant === 'not-ready'\" :class=\"style.notReadyWrapper\">\n <div :class=\"style.iconCatInBag\" />\n <h3 :class=\"style.text\">{{ params.notReadyText || \"Data is not computed\" }}</h3>\n </div>\n <PlPlaceholder\n v-else\n v-bind=\"\n normalizePlaceholderText(\n {\n loading: params.loadingText ?? PL_PLACEHOLDER_TEXTS.LOADING,\n running: params.runningText ?? PL_PLACEHOLDER_TEXTS.RUNNING,\n }[params.variant],\n )\n \"\n variant=\"table\"\n />\n </div>\n</template>\n"],"mappings":""}
@@ -1,5 +1,26 @@
1
- import f from "./PlAgOverlayLoading.vue.js";
2
- export {
3
- f as default
4
- };
5
- //# sourceMappingURL=PlAgOverlayLoading.vue2.js.map
1
+ import e from "./pl-ag-overlay-loading.module.js";
2
+ import { createBlock as t, createElementBlock as n, createElementVNode as r, defineComponent as i, mergeProps as a, normalizeClass as o, openBlock as s, ref as c, toDisplayString as l, unref as u } from "vue";
3
+ import { PL_PLACEHOLDER_TEXTS as d, PlPlaceholder as f } from "@milaboratories/uikit";
4
+ var p = /* @__PURE__ */ i({
5
+ __name: "PlAgOverlayLoading",
6
+ props: { params: {} },
7
+ setup(i, { expose: p }) {
8
+ let m = c(i.params);
9
+ p({ refresh: (e) => {
10
+ m.value = e;
11
+ } });
12
+ function h(e) {
13
+ return typeof e == "string" ? { title: e } : e;
14
+ }
15
+ return (i, c) => (s(), n("div", { class: o(u(e).container) }, [m.value.variant === "not-ready" ? (s(), n("div", {
16
+ key: 0,
17
+ class: o(u(e).notReadyWrapper)
18
+ }, [r("div", { class: o(u(e).iconCatInBag) }, null, 2), r("h3", { class: o(u(e).text) }, l(m.value.notReadyText || "Data is not computed"), 3)], 2)) : (s(), t(u(f), a({ key: 1 }, h({
19
+ loading: m.value.loadingText ?? u(d).LOADING,
20
+ running: m.value.runningText ?? u(d).RUNNING
21
+ }[m.value.variant]), { variant: "table" }), null, 16))], 2));
22
+ }
23
+ });
24
+ export { p as default };
25
+
26
+ //# sourceMappingURL=PlAgOverlayLoading.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgOverlayLoading.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"PlAgOverlayLoading.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayLoading.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { PL_PLACEHOLDER_TEXTS, PlPlaceholder } from \"@milaboratories/uikit\";\nimport type { PlPlaceholderProps } from \"@milaboratories/uikit\";\nimport { ref } from \"vue\";\nimport style from \"./pl-ag-overlay-loading.module.scss\";\nimport type { PlAgOverlayLoadingParams } from \"./types\";\n\n// @TODO move this component from this folder\n\nconst props = defineProps<{\n /** Required object that contains props from loadingOverlayComponentParams. */\n params: PlAgOverlayLoadingParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayLoadingParams) => {\n params.value = newParams;\n },\n});\n\nfunction normalizePlaceholderText(\n text: string | Pick<PlPlaceholderProps, \"title\" | \"subtitle\">,\n): Pick<PlPlaceholderProps, \"title\" | \"subtitle\"> {\n if (typeof text === \"string\") return { title: text };\n return text;\n}\n</script>\n\n<template>\n <div :class=\"style.container\">\n <div v-if=\"params.variant === 'not-ready'\" :class=\"style.notReadyWrapper\">\n <div :class=\"style.iconCatInBag\" />\n <h3 :class=\"style.text\">{{ params.notReadyText || \"Data is not computed\" }}</h3>\n </div>\n <PlPlaceholder\n v-else\n v-bind=\"\n normalizePlaceholderText(\n {\n loading: params.loadingText ?? PL_PLACEHOLDER_TEXTS.LOADING,\n running: params.runningText ?? PL_PLACEHOLDER_TEXTS.RUNNING,\n }[params.variant],\n )\n \"\n variant=\"table\"\n />\n </div>\n</template>\n"],"mappings":";;;;;;;EAcA,IAAM,IAAS,EALD,EAKW,OAAO;AAEhC,IAAa,EACX,UAAU,MAAwC;AAChD,KAAO,QAAQ;KAElB,CAAC;EAEF,SAAS,EACP,GACgD;AAEhD,UADI,OAAO,KAAS,WAAiB,EAAE,OAAO,GAAM,GAC7C;;yBAKP,EAiBM,OAAA,EAjBA,OAAK,EAAE,EAAA,EAAK,CAAC,UAAS,EAAA,EAAA,CACf,EAAA,MAAO,YAAO,eAAA,GAAA,EAAzB,EAGM,OAAA;;GAHsC,OAAK,EAAE,EAAA,EAAK,CAAC,gBAAe;MACtE,EAAmC,OAAA,EAA7B,OAAK,EAAE,EAAA,EAAK,CAAC,aAAY,EAAA,EAAA,MAAA,EAAA,EAC/B,EAAgF,MAAA,EAA3E,OAAK,EAAE,EAAA,EAAK,CAAC,KAAI,EAAA,EAAA,EAAK,EAAA,MAAO,gBAAY,uBAAA,EAAA,EAAA,CAAA,EAAA,EAAA,KAAA,GAAA,EAEhD,EAWE,EAAA,EAAA,EAXF,EAWE,EAAA,KAAA,GAAA,EATiB,EAAA;YAA2D,EAAA,MAAO,eAAe,EAAA,EAAoB,CAAC;YAA8B,EAAA,MAAO,eAAe,EAAA,EAAoB,CAAC;IAAqB,EAAA,MAAO,SAAA,EAAA,EAQ5N,SAAQ,SAAO,CAAA,EAAA,MAAA,GAAA,EAAA,EAAA,EAAA"}
@@ -0,0 +1,6 @@
1
+ import e from "./PlAgOverlayNoRows.vue2.js";
2
+ import './PlAgOverlayNoRows.style.css';/* empty css */
3
+ var t = e;
4
+ export { t as default };
5
+
6
+ //# sourceMappingURL=PlAgOverlayNoRows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlAgOverlayNoRows.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayNoRows.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref } from \"vue\";\nimport type { PlAgOverlayNoRowsParams } from \"./types\";\n\nconst props = defineProps<{\n params: PlAgOverlayNoRowsParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayNoRowsParams) => {\n params.value = newParams;\n },\n});\n</script>\n\n<template>\n <div class=\"grid-overlay-container\">\n <div class=\"grid-icon-sad-cat\" />\n <span class=\"text-subtitle-m\">{{ params.text || \"Empty\" }}</span>\n </div>\n</template>\n\n<style lang=\"css\">\n.grid-overlay-container {\n height: calc(100% - 1px);\n margin-top: 1px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: var(--bg-base-light);\n}\n.grid-icon-sad-cat {\n background-image: url(./assets/no-data-cat.png);\n background-repeat: no-repeat;\n}\n.grid-overlay-container > div {\n height: 300px;\n width: 300px;\n background-size: contain;\n background-position: center;\n}\n.grid-overlay-container > span {\n color: var(--txt-mask);\n}\n</style>\n"],"mappings":""}
@@ -1 +1 @@
1
- .grid-overlay-container{height:calc(100% - 1px);margin-top:1px;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:var(--bg-base-light)}.grid-icon-sad-cat{background-image:url(data:image/png;base64,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);background-repeat:no-repeat}.grid-overlay-container>div{height:300px;width:300px;background-size:contain;background-position:center}.grid-overlay-container>span{color:var(--txt-mask)}
1
+ .grid-overlay-container{background-color:var(--bg-base-light);flex-direction:column;justify-content:center;align-items:center;width:100%;height:calc(100% - 1px);margin-top:1px;display:flex}.grid-icon-sad-cat{background-image:url(data:image/png;base64,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);background-repeat:no-repeat}.grid-overlay-container>div{background-position:50%;background-size:contain;width:300px;height:300px}.grid-overlay-container>span{color:var(--txt-mask)}
@@ -0,0 +1,14 @@
1
+ import { createElementBlock as e, createElementVNode as t, defineComponent as n, openBlock as r, ref as i, toDisplayString as a } from "vue";
2
+ var o = { class: "grid-overlay-container" }, s = { class: "text-subtitle-m" }, c = /* @__PURE__ */ n({
3
+ __name: "PlAgOverlayNoRows",
4
+ props: { params: {} },
5
+ setup(n, { expose: c }) {
6
+ let l = i(n.params);
7
+ return c({ refresh: (e) => {
8
+ l.value = e;
9
+ } }), (n, i) => (r(), e("div", o, [i[0] ||= t("div", { class: "grid-icon-sad-cat" }, null, -1), t("span", s, a(l.value.text || "Empty"), 1)]));
10
+ }
11
+ });
12
+ export { c as default };
13
+
14
+ //# sourceMappingURL=PlAgOverlayNoRows.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlAgOverlayNoRows.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgOverlayNoRows.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { ref } from \"vue\";\nimport type { PlAgOverlayNoRowsParams } from \"./types\";\n\nconst props = defineProps<{\n params: PlAgOverlayNoRowsParams;\n}>();\n\nconst params = ref(props.params);\n\ndefineExpose({\n refresh: (newParams: PlAgOverlayNoRowsParams) => {\n params.value = newParams;\n },\n});\n</script>\n\n<template>\n <div class=\"grid-overlay-container\">\n <div class=\"grid-icon-sad-cat\" />\n <span class=\"text-subtitle-m\">{{ params.text || \"Empty\" }}</span>\n </div>\n</template>\n\n<style lang=\"css\">\n.grid-overlay-container {\n height: calc(100% - 1px);\n margin-top: 1px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n background-color: var(--bg-base-light);\n}\n.grid-icon-sad-cat {\n background-image: url(./assets/no-data-cat.png);\n background-repeat: no-repeat;\n}\n.grid-overlay-container > div {\n height: 300px;\n width: 300px;\n background-size: contain;\n background-position: center;\n}\n.grid-overlay-container > span {\n color: var(--txt-mask);\n}\n</style>\n"],"mappings":";;;;;EAQA,IAAM,IAAS,EAJD,EAIW,OAAO;SAEhC,EAAa,EACX,UAAU,MAAuC;AAC/C,KAAO,QAAQ;KAElB,CAAC,kBAIA,EAGM,OAHN,GAGM,CAAA,AAAA,EAAA,OAFJ,EAAiC,OAAA,EAA5B,OAAM,qBAAmB,EAAA,MAAA,GAAA,EAC9B,EAAiE,QAAjE,GAAiE,EAAhC,EAAA,MAAO,QAAI,QAAA,EAAA,EAAA,CAAA,CAAA"}
@@ -0,0 +1,5 @@
1
+ import e from "./PlAgRowCount.vue2.js";
2
+ var t = e;
3
+ export { t as default };
4
+
5
+ //# sourceMappingURL=PlAgRowCount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlAgRowCount.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgRowCount.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { GridApi } from \"ag-grid-enterprise\";\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from \"vue\";\nimport { getSelectedRowsCount, getTotalRowsCount } from \"../../lib\";\n\nconst { params } = defineProps<{\n params: { api: GridApi };\n}>();\n\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\n\nconst pluralRules = new Intl.PluralRules(\"en\");\nconst numberFormatter = new Intl.NumberFormat(\"en\");\n\nconst output = computed(() => {\n let result = numberFormatter.format(totalRowCount.value) + \" \";\n result += pluralRules.select(totalRowCount.value) === \"one\" ? \"row\" : \"rows\";\n if (selectedRowCount.value > 0) {\n result += \" (\" + numberFormatter.format(selectedRowCount.value) + \" selected)\";\n }\n return result;\n});\n\nfunction updateRowCounts() {\n totalRowCount.value = getTotalRowsCount(params.api);\n selectedRowCount.value = getSelectedRowsCount(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener(\"selectionChanged\", updateRowCounts);\n params.api.addEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.addEventListener(\"modelUpdated\", updateRowCounts);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener(\"selectionChanged\", updateRowCounts);\n params.api.removeEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.removeEventListener(\"modelUpdated\", updateRowCounts);\n});\n</script>\n\n<template>\n {{ output }}\n</template>\n"],"mappings":""}
@@ -1,5 +1,23 @@
1
- import f from "./PlAgRowCount.vue.js";
2
- export {
3
- f as default
4
- };
5
- //# sourceMappingURL=PlAgRowCount.vue2.js.map
1
+ import { getSelectedRowsCount as e, getTotalRowsCount as t } from "../../AgGridVue/selection.js";
2
+ import { computed as n, defineComponent as r, onBeforeMount as i, onBeforeUnmount as a, ref as o, toDisplayString as s } from "vue";
3
+ var c = /* @__PURE__ */ r({
4
+ __name: "PlAgRowCount",
5
+ props: { params: {} },
6
+ setup(r) {
7
+ let c = o(t(r.params.api)), l = o(e(r.params.api)), u = new Intl.PluralRules("en"), d = new Intl.NumberFormat("en"), f = n(() => {
8
+ let e = d.format(c.value) + " ";
9
+ return e += u.select(c.value) === "one" ? "row" : "rows", l.value > 0 && (e += " (" + d.format(l.value) + " selected)"), e;
10
+ });
11
+ function p() {
12
+ c.value = t(r.params.api), l.value = e(r.params.api);
13
+ }
14
+ return i(() => {
15
+ r.params.api.addEventListener("selectionChanged", p), r.params.api.addEventListener("rowDataUpdated", p), r.params.api.addEventListener("modelUpdated", p);
16
+ }), a(() => {
17
+ r.params.api.removeEventListener("selectionChanged", p), r.params.api.removeEventListener("rowDataUpdated", p), r.params.api.removeEventListener("modelUpdated", p);
18
+ }), (e, t) => s(f.value);
19
+ }
20
+ });
21
+ export { c as default };
22
+
23
+ //# sourceMappingURL=PlAgRowCount.vue2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlAgRowCount.vue2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"PlAgRowCount.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/PlAgDataTable/PlAgRowCount.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport type { GridApi } from \"ag-grid-enterprise\";\nimport { computed, onBeforeMount, onBeforeUnmount, ref } from \"vue\";\nimport { getSelectedRowsCount, getTotalRowsCount } from \"../../lib\";\n\nconst { params } = defineProps<{\n params: { api: GridApi };\n}>();\n\nconst totalRowCount = ref(getTotalRowsCount(params.api));\nconst selectedRowCount = ref(getSelectedRowsCount(params.api));\n\nconst pluralRules = new Intl.PluralRules(\"en\");\nconst numberFormatter = new Intl.NumberFormat(\"en\");\n\nconst output = computed(() => {\n let result = numberFormatter.format(totalRowCount.value) + \" \";\n result += pluralRules.select(totalRowCount.value) === \"one\" ? \"row\" : \"rows\";\n if (selectedRowCount.value > 0) {\n result += \" (\" + numberFormatter.format(selectedRowCount.value) + \" selected)\";\n }\n return result;\n});\n\nfunction updateRowCounts() {\n totalRowCount.value = getTotalRowsCount(params.api);\n selectedRowCount.value = getSelectedRowsCount(params.api);\n}\n\nonBeforeMount(() => {\n params.api.addEventListener(\"selectionChanged\", updateRowCounts);\n params.api.addEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.addEventListener(\"modelUpdated\", updateRowCounts);\n});\n\nonBeforeUnmount(() => {\n params.api.removeEventListener(\"selectionChanged\", updateRowCounts);\n params.api.removeEventListener(\"rowDataUpdated\", updateRowCounts);\n params.api.removeEventListener(\"modelUpdated\", updateRowCounts);\n});\n</script>\n\n<template>\n {{ output }}\n</template>\n"],"mappings":";;;;;;EASA,IAAM,IAAgB,EAAI,EAAkB,EAAA,OAAO,IAAI,CAAC,EAClD,IAAmB,EAAI,EAAqB,EAAA,OAAO,IAAI,CAAC,EAExD,IAAc,IAAI,KAAK,YAAY,KAAK,EACxC,IAAkB,IAAI,KAAK,aAAa,KAAK,EAE7C,IAAS,QAAe;GAC5B,IAAI,IAAS,EAAgB,OAAO,EAAc,MAAM,GAAG;AAK3D,UAJA,KAAU,EAAY,OAAO,EAAc,MAAM,KAAK,QAAQ,QAAQ,QAClE,EAAiB,QAAQ,MAC3B,KAAU,OAAO,EAAgB,OAAO,EAAiB,MAAM,GAAG,eAE7D;IACP;EAEF,SAAS,IAAkB;AAEzB,GADA,EAAc,QAAQ,EAAkB,EAAA,OAAO,IAAI,EACnD,EAAiB,QAAQ,EAAqB,EAAA,OAAO,IAAI;;SAG3D,QAAoB;AAGlB,GAFA,EAAA,OAAO,IAAI,iBAAiB,oBAAoB,EAAgB,EAChE,EAAA,OAAO,IAAI,iBAAiB,kBAAkB,EAAgB,EAC9D,EAAA,OAAO,IAAI,iBAAiB,gBAAgB,EAAgB;IAC5D,EAEF,QAAsB;AAGpB,GAFA,EAAA,OAAO,IAAI,oBAAoB,oBAAoB,EAAgB,EACnE,EAAA,OAAO,IAAI,oBAAoB,kBAAkB,EAAgB,EACjE,EAAA,OAAO,IAAI,oBAAoB,gBAAgB,EAAgB;IAC/D,cAIG,EAAA,MAAM"}
@@ -0,0 +1,4 @@
1
+ var e = ".ag-header {\n border-bottom: 1px solid var(--border-color-default);\n}\n\n.ag-column-menu,\n.ag-menu.ag-ltr.ag-popup-child {\n border-radius: 12px;\n border: none;\n background: var(--bg-elevated-01);\n box-shadow: none;\n background: var(--bg-base-dark);\n}\n\n.ag-column-menu *,\n.ag-menu.ag-ltr.ag-popup-child * {\n color: var(--txt-00);\n}\n\n.ag-column-menu .ag-icon,\n.ag-menu.ag-ltr.ag-popup-child .ag-icon {\n color: var(--ic-00);\n}\n\n.ag-menu-separator-part:after {\n border-color: var(--btn-sec-hover-grey);\n}\n";
2
+ export { e as default };
3
+
4
+ //# sourceMappingURL=ag-override.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ag-override.js","names":[],"sources":["../../../src/components/PlAgDataTable/ag-override.css?raw"],"sourcesContent":["export default \".ag-header {\\n border-bottom: 1px solid var(--border-color-default);\\n}\\n\\n.ag-column-menu,\\n.ag-menu.ag-ltr.ag-popup-child {\\n border-radius: 12px;\\n border: none;\\n background: var(--bg-elevated-01);\\n box-shadow: none;\\n background: var(--bg-base-dark);\\n}\\n\\n.ag-column-menu *,\\n.ag-menu.ag-ltr.ag-popup-child * {\\n color: var(--txt-00);\\n}\\n\\n.ag-column-menu .ag-icon,\\n.ag-menu.ag-ltr.ag-popup-child .ag-icon {\\n color: var(--ic-00);\\n}\\n\\n.ag-menu-separator-part:after {\\n border-color: var(--btn-sec-hover-grey);\\n}\\n\""],"mappings":"AAAA,IAAA,IAAe"}
@@ -1,33 +1,28 @@
1
- import { isNil as a } from "es-toolkit";
2
- import { parseJson as u } from "@platforma-sdk/model";
3
- import { ref as n } from "vue";
4
- import { watchCached as s } from "@milaboratories/uikit";
5
- import { PlAgDataTableRowNumberColId as d } from "../sources/row-number.js";
6
- function g(l, t) {
7
- const r = n([]), i = n([]);
8
- return s(
9
- () => [t(), l()],
10
- ([f, m]) => {
11
- if (a(m)) {
12
- r.value = [], i.value = [];
13
- return;
14
- }
15
- const o = c(f).filter((e) => !a(e.colId)).flatMap((e) => ({
16
- id: u(e.colId).labeled,
17
- hide: e.hide
18
- }));
19
- r.value = o.map((e) => e.id), i.value = o.filter((e) => !e.hide).map((e) => e.id);
20
- },
21
- { immediate: !0 }
22
- ), [r, i];
1
+ import "../sources/row-number.js";
2
+ import { ref as e } from "vue";
3
+ import { parseJson as t } from "@platforma-sdk/model";
4
+ import { watchCached as n } from "@milaboratories/uikit";
5
+ import { isNil as r } from "es-toolkit";
6
+ function i(i, o) {
7
+ let s = e([]), c = e([]);
8
+ return n(() => [o(), i()], ([e, n]) => {
9
+ if (r(n)) {
10
+ s.value = [], c.value = [];
11
+ return;
12
+ }
13
+ let i = a(e).filter((e) => !r(e.colId)).flatMap((e) => ({
14
+ id: t(e.colId).labeled,
15
+ hide: e.hide
16
+ }));
17
+ s.value = i.map((e) => e.id), c.value = i.filter((e) => !e.hide).map((e) => e.id);
18
+ }, { immediate: !0 }), [s, c];
23
19
  }
24
- function c(l) {
25
- return l ? l.filter(p).filter((t) => t.colId && t.colId !== d) : [];
20
+ function a(e) {
21
+ return e ? e.filter(o).filter((e) => e.colId && e.colId !== "\"##RowNumberColumnId##\"") : [];
26
22
  }
27
- function p(l) {
28
- return !("children" in l);
23
+ function o(e) {
24
+ return !("children" in e);
29
25
  }
30
- export {
31
- g as useFilterableColumns
32
- };
33
- //# sourceMappingURL=useFilterableColumns.js.map
26
+ export { i as useFilterableColumns };
27
+
28
+ //# sourceMappingURL=useFilterableColumns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFilterableColumns.js","sources":["../../../../src/components/PlAgDataTable/compositions/useFilterableColumns.ts"],"sourcesContent":["import { isNil } from \"es-toolkit\";\nimport {\n parseJson,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableValue,\n} from \"@platforma-sdk/model\";\nimport { ref } from \"vue\";\nimport { PTableHidden } from \"../sources/common\";\nimport { watchCached } from \"@milaboratories/uikit\";\nimport { ColDef, ColGroupDef } from \"ag-grid-enterprise\";\nimport { PlAgDataTableRowNumberColId } from \"../sources/row-number\";\nimport { PlAgDataTableV2Row } from \"../types\";\n\nexport function useFilterableColumns(\n getSourceId: () => string | null,\n getColumnDefs: () => null | undefined | ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[],\n) {\n const filterableColumns = ref<PTableColumnSpec[]>([]);\n const visibleFilterableColumns = ref<PTableColumnSpec[]>([]);\n\n // Propagate columns for filter component\n watchCached(\n () => [getColumnDefs(), getSourceId()] as const,\n ([columnDefs, sourceId]) => {\n if (isNil(sourceId)) {\n filterableColumns.value = [];\n visibleFilterableColumns.value = [];\n return;\n }\n\n const dataColDefs = getDataColDefs(columnDefs);\n const cols = dataColDefs\n .filter((def): def is typeof def & { colId: string } => !isNil(def.colId))\n .flatMap((def) => ({\n id: parseJson(def.colId satisfies string as PlTableColumnIdJson).labeled,\n hide: def.hide,\n }));\n\n filterableColumns.value = cols.map((c) => c.id);\n visibleFilterableColumns.value = cols.filter((c) => !c.hide).map((c) => c.id);\n },\n { immediate: true },\n );\n\n return [filterableColumns, visibleFilterableColumns] as const;\n}\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\nfunction isColDef<TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n): def is ColDef<TData, TValue> {\n return !(\"children\" in def);\n}\n"],"names":["useFilterableColumns","getSourceId","getColumnDefs","filterableColumns","ref","visibleFilterableColumns","watchCached","columnDefs","sourceId","isNil","cols","getDataColDefs","def","parseJson","c","isColDef","PlAgDataTableRowNumberColId"],"mappings":";;;;;AAcO,SAASA,EACdC,GACAC,GACA;AACA,QAAMC,IAAoBC,EAAwB,EAAE,GAC9CC,IAA2BD,EAAwB,EAAE;AAG3D,SAAAE;AAAA,IACE,MAAM,CAACJ,KAAiBD,GAAa;AAAA,IACrC,CAAC,CAACM,GAAYC,CAAQ,MAAM;AAC1B,UAAIC,EAAMD,CAAQ,GAAG;AACnB,QAAAL,EAAkB,QAAQ,CAAA,GAC1BE,EAAyB,QAAQ,CAAA;AACjC;AAAA,MACF;AAGA,YAAMK,IADcC,EAAeJ,CAAU,EAE1C,OAAO,CAACK,MAA+C,CAACH,EAAMG,EAAI,KAAK,CAAC,EACxE,QAAQ,CAACA,OAAS;AAAA,QACjB,IAAIC,EAAUD,EAAI,KAA6C,EAAE;AAAA,QACjE,MAAMA,EAAI;AAAA,MAAA,EACV;AAEJ,MAAAT,EAAkB,QAAQO,EAAK,IAAI,CAACI,MAAMA,EAAE,EAAE,GAC9CT,EAAyB,QAAQK,EAAK,OAAO,CAACI,MAAM,CAACA,EAAE,IAAI,EAAE,IAAI,CAACA,MAAMA,EAAE,EAAE;AAAA,IAC9E;AAAA,IACA,EAAE,WAAW,GAAA;AAAA,EAAK,GAGb,CAACX,GAAmBE,CAAwB;AACrD;AAEA,SAASM,EACPJ,GAC0D;AAC1D,SAAKA,IACEA,EACJ,OAAOQ,CAAQ,EACf,OAAO,CAACH,MAAQA,EAAI,SAASA,EAAI,UAAUI,CAA2B,IAHjD,CAAA;AAI1B;AAEA,SAASD,EACPH,GAC8B;AAC9B,SAAO,EAAE,cAAcA;AACzB;"}
1
+ {"version":3,"file":"useFilterableColumns.js","names":[],"sources":["../../../../src/components/PlAgDataTable/compositions/useFilterableColumns.ts"],"sourcesContent":["import { isNil } from \"es-toolkit\";\nimport {\n parseJson,\n PlTableColumnIdJson,\n PTableColumnSpec,\n PTableValue,\n} from \"@platforma-sdk/model\";\nimport { ref } from \"vue\";\nimport { PTableHidden } from \"../sources/common\";\nimport { watchCached } from \"@milaboratories/uikit\";\nimport { ColDef, ColGroupDef } from \"ag-grid-enterprise\";\nimport { PlAgDataTableRowNumberColId } from \"../sources/row-number\";\nimport { PlAgDataTableV2Row } from \"../types\";\n\nexport function useFilterableColumns(\n getSourceId: () => string | null,\n getColumnDefs: () => null | undefined | ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[],\n) {\n const filterableColumns = ref<PTableColumnSpec[]>([]);\n const visibleFilterableColumns = ref<PTableColumnSpec[]>([]);\n\n // Propagate columns for filter component\n watchCached(\n () => [getColumnDefs(), getSourceId()] as const,\n ([columnDefs, sourceId]) => {\n if (isNil(sourceId)) {\n filterableColumns.value = [];\n visibleFilterableColumns.value = [];\n return;\n }\n\n const dataColDefs = getDataColDefs(columnDefs);\n const cols = dataColDefs\n .filter((def): def is typeof def & { colId: string } => !isNil(def.colId))\n .flatMap((def) => ({\n id: parseJson(def.colId satisfies string as PlTableColumnIdJson).labeled,\n hide: def.hide,\n }));\n\n filterableColumns.value = cols.map((c) => c.id);\n visibleFilterableColumns.value = cols.filter((c) => !c.hide).map((c) => c.id);\n },\n { immediate: true },\n );\n\n return [filterableColumns, visibleFilterableColumns] as const;\n}\n\nfunction getDataColDefs(\n columnDefs: ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] | null | undefined,\n): ColDef<PlAgDataTableV2Row, PTableValue | PTableHidden>[] {\n if (!columnDefs) return [];\n return columnDefs\n .filter(isColDef)\n .filter((def) => def.colId && def.colId !== PlAgDataTableRowNumberColId);\n}\n\nfunction isColDef<TData, TValue>(\n def: ColDef<TData, TValue> | ColGroupDef<TData>,\n): def is ColDef<TData, TValue> {\n return !(\"children\" in def);\n}\n"],"mappings":";;;;;AAcA,SAAgB,EACd,GACA,GACA;CACA,IAAM,IAAoB,EAAwB,EAAE,CAAC,EAC/C,IAA2B,EAAwB,EAAE,CAAC;AA0B5D,QAvBA,QACQ,CAAC,GAAe,EAAE,GAAa,CAAC,GACrC,CAAC,GAAY,OAAc;AAC1B,MAAI,EAAM,EAAS,EAAE;AAEnB,GADA,EAAkB,QAAQ,EAAE,EAC5B,EAAyB,QAAQ,EAAE;AACnC;;EAIF,IAAM,IADc,EAAe,EAAW,CAE3C,QAAQ,MAA+C,CAAC,EAAM,EAAI,MAAM,CAAC,CACzE,SAAS,OAAS;GACjB,IAAI,EAAU,EAAI,MAA8C,CAAC;GACjE,MAAM,EAAI;GACX,EAAE;AAGL,EADA,EAAkB,QAAQ,EAAK,KAAK,MAAM,EAAE,GAAG,EAC/C,EAAyB,QAAQ,EAAK,QAAQ,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,MAAM,EAAE,GAAG;IAE/E,EAAE,WAAW,IAAM,CACpB,EAEM,CAAC,GAAmB,EAAyB;;AAGtD,SAAS,EACP,GAC0D;AAE1D,QADK,IACE,EACJ,OAAO,EAAS,CAChB,QAAQ,MAAQ,EAAI,SAAS,EAAI,UAAA,4BAAsC,GAHlD,EAAE;;AAM5B,SAAS,EACP,GAC8B;AAC9B,QAAO,EAAE,cAAc"}