@rt-tools/ui-kit-v2 0.23.3 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +142 -71
  2. package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +467 -231
  4. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +260 -91
  6. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +80 -46
  8. package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +984 -697
  10. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +452 -210
  12. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +143 -52
  14. package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +158 -83
  16. package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +335 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -0
  19. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +437 -363
  20. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
  21. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +430 -149
  22. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
  23. package/fesm2022/rt-tools-ui-kit-v2-card.mjs +155 -71
  24. package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -1
  25. package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs +155 -0
  26. package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs.map +1 -0
  27. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +215 -110
  28. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
  29. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +158 -75
  30. package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -1
  31. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +769 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +462 -253
  34. package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -1
  35. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1276 -1316
  36. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
  37. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +185 -80
  38. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
  39. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2321 -2619
  40. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  41. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +100 -44
  42. package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -1
  43. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +290 -155
  44. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -1
  45. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +2097 -858
  46. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
  47. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +2247 -1176
  48. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  49. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +1043 -705
  50. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  51. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +810 -525
  52. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  53. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +158 -138
  54. package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -1
  55. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +177 -67
  56. package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -1
  57. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +550 -477
  58. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -1
  59. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +185 -168
  60. package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -1
  61. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +116 -43
  62. package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -1
  63. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +585 -0
  64. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +755 -259
  66. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
  67. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +3266 -1115
  68. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  69. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +190 -55
  70. package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -1
  71. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +283 -103
  72. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
  73. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +393 -177
  74. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
  75. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +399 -207
  76. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
  77. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +288 -212
  78. package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -1
  79. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +262 -116
  80. package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -1
  81. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +57 -31
  82. package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -1
  83. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +258 -90
  84. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
  85. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +249 -215
  86. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
  87. package/fesm2022/rt-tools-ui-kit-v2-header.mjs +199 -71
  88. package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -1
  89. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +231 -0
  90. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -0
  91. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +336 -0
  92. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -0
  93. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +451 -162
  94. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
  95. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +931 -686
  96. package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
  97. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +664 -491
  98. package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -1
  99. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +574 -222
  100. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
  101. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +150 -36
  102. package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -1
  103. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +606 -0
  104. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -0
  105. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +461 -355
  106. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  107. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +338 -143
  108. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  109. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +135 -48
  110. package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -1
  111. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +166 -92
  112. package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -1
  113. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +118 -56
  114. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -1
  115. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1054 -527
  116. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
  117. package/fesm2022/rt-tools-ui-kit-v2-message.mjs +230 -104
  118. package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -1
  119. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +210 -70
  120. package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -1
  121. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +532 -311
  122. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
  123. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +125 -50
  124. package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -1
  125. package/fesm2022/rt-tools-ui-kit-v2-note.mjs +73 -43
  126. package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -1
  127. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +161 -53
  128. package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -1
  129. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +491 -310
  130. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  131. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +374 -174
  132. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
  133. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +202 -159
  134. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -1
  135. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +438 -309
  136. package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -1
  137. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +295 -0
  138. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -0
  139. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs +135 -45
  140. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs.map +1 -1
  141. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +293 -171
  142. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
  143. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +62 -55
  144. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -1
  145. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +3379 -1466
  146. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  147. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +114 -116
  148. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -1
  149. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +406 -299
  150. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  151. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +137 -36
  152. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -1
  153. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +687 -468
  154. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  155. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +2195 -1569
  156. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  157. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +187 -48
  158. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -1
  159. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +242 -122
  160. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -1
  161. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +439 -0
  162. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -0
  163. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +218 -69
  164. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -1
  165. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +292 -91
  166. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -1
  167. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +225 -138
  168. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -1
  169. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +150 -116
  170. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  171. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +2462 -1583
  172. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  173. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +647 -346
  174. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  175. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +335 -121
  176. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  177. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +217 -84
  178. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
  179. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +151 -72
  180. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  181. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +697 -226
  182. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  183. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +92 -38
  184. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -1
  185. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +752 -338
  186. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  187. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +310 -129
  188. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  189. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +286 -158
  190. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -1
  191. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +270 -134
  192. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -1
  193. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +322 -202
  194. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  195. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +908 -0
  196. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -0
  197. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +785 -0
  198. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -0
  199. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +118 -63
  200. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -1
  201. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +783 -262
  202. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  203. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +633 -294
  204. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  205. package/fesm2022/rt-tools-ui-kit-v2.mjs +100 -103
  206. package/package.json +45 -1
  207. package/src/assets/icons/collapse-all.svg +9 -0
  208. package/src/assets/icons/expand-all.svg +9 -0
  209. package/src/assets/icons-material/collapse-all.fill.svg +5 -0
  210. package/src/assets/icons-material/collapse-all.svg +5 -0
  211. package/src/assets/icons-material/expand-all.fill.svg +5 -0
  212. package/src/assets/icons-material/expand-all.svg +5 -0
  213. package/src/assets/icons-material/undo.fill.svg +5 -0
  214. package/src/assets/icons-material/undo.svg +5 -0
  215. package/src/lib/components/bottom-sheet/CONTEXT.md +20 -2
  216. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +36 -1
  217. package/src/lib/components/breadcrumbs/CONTEXT.md +37 -0
  218. package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +205 -0
  219. package/src/lib/components/carousel/CONTEXT.md +42 -0
  220. package/src/lib/components/carousel/rt-carousel.component.scss +117 -0
  221. package/src/lib/components/checkbox/CONTEXT.md +3 -0
  222. package/src/lib/components/checkbox/rt-checkbox.component.scss +9 -3
  223. package/src/lib/components/color-palette/CONTEXT.md +49 -0
  224. package/src/lib/components/color-palette/picker/rt-color-picker.component.scss +161 -0
  225. package/src/lib/components/color-palette/rt-color-palette.component.scss +132 -0
  226. package/src/lib/components/draggable-tree/CONTEXT.md +54 -0
  227. package/src/lib/components/draggable-tree/rt-draggable-tree.component.scss +219 -0
  228. package/src/lib/components/hybrid-tree/CONTEXT.md +31 -0
  229. package/src/lib/components/hybrid-tree-selector/CONTEXT.md +25 -0
  230. package/src/lib/components/icon-button/CONTEXT.md +3 -0
  231. package/src/lib/components/inline-edit/CONTEXT.md +41 -0
  232. package/src/lib/components/inline-edit/rt-inline-edit.component.scss +274 -0
  233. package/src/lib/components/popover/CONTEXT.md +3 -0
  234. package/src/lib/components/profile-menu/CONTEXT.md +32 -0
  235. package/src/lib/components/profile-menu/rt-profile-menu.component.scss +104 -0
  236. package/src/lib/components/speed-menu/CONTEXT.md +34 -0
  237. package/src/lib/components/speed-menu/rt-speed-menu.component.scss +118 -0
  238. package/src/lib/components/tag/rt-tag.component.scss +12 -0
  239. package/src/lib/components/thread-list/CONTEXT.md +1 -0
  240. package/src/lib/components/thread-list/rt-thread-list.component.scss +2 -1
  241. package/src/lib/components/toolbar/CONTEXT.md +9 -4
  242. package/src/lib/components/toolbar/rt-toolbar.component.scss +10 -2
  243. package/src/lib/components/tooltip/CONTEXT.md +8 -1
  244. package/src/lib/components/tree/CONTEXT.md +66 -0
  245. package/src/lib/components/tree/rt-tree.component.scss +313 -0
  246. package/src/lib/components/tree-selector/CONTEXT.md +47 -0
  247. package/src/lib/components/tree-selector/rt-tree-selector.component.scss +121 -0
  248. package/src/styles/_primitives.scss +4 -0
  249. package/src/styles/_semantic.scss +5 -0
  250. package/styles/tokens.css +43 -0
  251. package/types/rt-tools-ui-kit-v2-accordion.d.ts +31 -24
  252. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +112 -91
  253. package/types/rt-tools-ui-kit-v2-ai-run-status.d.ts +64 -40
  254. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +13 -10
  255. package/types/rt-tools-ui-kit-v2-aside.d.ts +268 -206
  256. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +102 -61
  257. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +39 -27
  258. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +31 -20
  259. package/types/rt-tools-ui-kit-v2-breadcrumbs.d.ts +89 -0
  260. package/types/rt-tools-ui-kit-v2-button.d.ts +119 -59
  261. package/types/rt-tools-ui-kit-v2-calendar.d.ts +151 -86
  262. package/types/rt-tools-ui-kit-v2-card.d.ts +42 -21
  263. package/types/rt-tools-ui-kit-v2-carousel.d.ts +76 -0
  264. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +48 -24
  265. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +28 -20
  266. package/types/rt-tools-ui-kit-v2-color-palette.d.ts +208 -0
  267. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +104 -47
  268. package/types/rt-tools-ui-kit-v2-container.d.ts +278 -221
  269. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +39 -24
  270. package/types/rt-tools-ui-kit-v2-core.d.ts +862 -865
  271. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +20 -12
  272. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -38
  273. package/types/rt-tools-ui-kit-v2-data-list.d.ts +429 -264
  274. package/types/rt-tools-ui-kit-v2-data-table.d.ts +500 -351
  275. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +164 -138
  276. package/types/rt-tools-ui-kit-v2-date-range.d.ts +102 -84
  277. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +16 -13
  278. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +23 -16
  279. package/types/rt-tools-ui-kit-v2-dialog.d.ts +130 -101
  280. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +10 -13
  281. package/types/rt-tools-ui-kit-v2-download-link.d.ts +22 -17
  282. package/types/rt-tools-ui-kit-v2-draggable-tree.d.ts +132 -0
  283. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +185 -96
  284. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +904 -404
  285. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +48 -19
  286. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +67 -39
  287. package/types/rt-tools-ui-kit-v2-field.d.ts +90 -49
  288. package/types/rt-tools-ui-kit-v2-file-card.d.ts +115 -75
  289. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -48
  290. package/types/rt-tools-ui-kit-v2-file-input.d.ts +53 -36
  291. package/types/rt-tools-ui-kit-v2-file-list.d.ts +5 -8
  292. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +83 -49
  293. package/types/rt-tools-ui-kit-v2-form-control.d.ts +102 -74
  294. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -22
  295. package/types/rt-tools-ui-kit-v2-hybrid-tree-selector.d.ts +14 -0
  296. package/types/rt-tools-ui-kit-v2-hybrid-tree.d.ts +72 -0
  297. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +190 -90
  298. package/types/rt-tools-ui-kit-v2-icon.d.ts +160 -129
  299. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +151 -111
  300. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +159 -85
  301. package/types/rt-tools-ui-kit-v2-info-item.d.ts +26 -13
  302. package/types/rt-tools-ui-kit-v2-inline-edit.d.ts +194 -0
  303. package/types/rt-tools-ui-kit-v2-input-number.d.ts +102 -53
  304. package/types/rt-tools-ui-kit-v2-input.d.ts +82 -43
  305. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +30 -17
  306. package/types/rt-tools-ui-kit-v2-logo.d.ts +49 -32
  307. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +26 -17
  308. package/types/rt-tools-ui-kit-v2-menu.d.ts +272 -155
  309. package/types/rt-tools-ui-kit-v2-message.d.ts +59 -33
  310. package/types/rt-tools-ui-kit-v2-money-list.d.ts +36 -18
  311. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +114 -80
  312. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +34 -25
  313. package/types/rt-tools-ui-kit-v2-note.d.ts +12 -9
  314. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +37 -16
  315. package/types/rt-tools-ui-kit-v2-page-header.d.ts +218 -150
  316. package/types/rt-tools-ui-kit-v2-pagination.d.ts +99 -63
  317. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +61 -66
  318. package/types/rt-tools-ui-kit-v2-popover.d.ts +116 -55
  319. package/types/rt-tools-ui-kit-v2-profile-menu.d.ts +103 -0
  320. package/types/rt-tools-ui-kit-v2-prompt-suggestion.d.ts +26 -16
  321. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +85 -43
  322. package/types/rt-tools-ui-kit-v2-radius.d.ts +18 -15
  323. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +931 -590
  324. package/types/rt-tools-ui-kit-v2-ripple.d.ts +28 -25
  325. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +60 -58
  326. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +32 -22
  327. package/types/rt-tools-ui-kit-v2-select.d.ts +182 -139
  328. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +452 -349
  329. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +53 -20
  330. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +55 -26
  331. package/types/rt-tools-ui-kit-v2-speed-menu.d.ts +131 -0
  332. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -28
  333. package/types/rt-tools-ui-kit-v2-split-button.d.ts +96 -55
  334. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +88 -60
  335. package/types/rt-tools-ui-kit-v2-stepper.d.ts +50 -37
  336. package/types/rt-tools-ui-kit-v2-table.d.ts +631 -480
  337. package/types/rt-tools-ui-kit-v2-tabs.d.ts +198 -113
  338. package/types/rt-tools-ui-kit-v2-tag.d.ts +106 -53
  339. package/types/rt-tools-ui-kit-v2-textarea.d.ts +48 -25
  340. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +28 -26
  341. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +154 -94
  342. package/types/rt-tools-ui-kit-v2-timeline.d.ts +30 -28
  343. package/types/rt-tools-ui-kit-v2-toast.d.ts +174 -98
  344. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +132 -86
  345. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +88 -50
  346. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +30 -27
  347. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +65 -41
  348. package/types/rt-tools-ui-kit-v2-tree-selector.d.ts +257 -0
  349. package/types/rt-tools-ui-kit-v2-tree.d.ts +282 -0
  350. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +21 -24
  351. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +195 -124
  352. package/types/rt-tools-ui-kit-v2-workspace.d.ts +122 -79
  353. package/types/rt-tools-ui-kit-v2.d.ts +100 -90
  354. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +0 -1
@@ -1,260 +1,756 @@
1
- import { NgTemplateOutlet } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { inject, TemplateRef, Directive, DestroyRef, contentChild, computed, input, booleanAttribute, numberAttribute, output, effect, untracked, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
4
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
- import * as i1 from '@angular/forms';
6
- import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
7
- import { map, filter } from 'rxjs';
8
- import { BlockDirective, ElemDirective } from '@rt-tools/core';
9
- import { RT_KIT_LABELS, rtKitLabel, searchDebounce } from '@rt-tools/ui-kit-v2/core';
10
- import { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';
11
- import { RtCheckboxComponent } from '@rt-tools/ui-kit-v2/checkbox';
12
- import { RtEmptyStateComponent } from '@rt-tools/ui-kit-v2/empty-state';
13
- import { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';
14
- import { RtInputComponent } from '@rt-tools/ui-kit-v2/input';
15
- import { RtPaginationComponent } from '@rt-tools/ui-kit-v2/pagination';
16
- import { RtSpinnerComponent } from '@rt-tools/ui-kit-v2/spinner';
17
-
18
- /**
19
- * Маркеры частей панели инструментов — своим файлом, как у соседних семей.
20
- *
21
- * В имени класса стоит слово «Toolbar», хотя в разметке его нет: имя `RtDynamicListSelectorsDirective`
22
- * в дереве уже занято первым китом, и там оно означает другое — проводку состояния списка, а не
23
- * маркер стороны полосы. Два одинаковых имени в двух китах проверка дерева не пропускает.
24
- *
25
- * Каждый маркер держит свой шаблон и о списке не знает ничего: список читает маркеры среди своего
26
- * содержимого и берёт у них шаблон. Часть, которую потребитель не объявил, для списка просто
27
- * отсутствует.
28
- */
29
- /**
30
- * Левая сторона панели: то, чем человек отбирает записи.
31
- *
32
- * @example
33
- * ```html
34
- * <rt-dynamic-list>
35
- * <ng-container *rtDynamicListSelectors>
36
- * <rt-select [options]="stages()" />
37
- * </ng-container>
38
- * </rt-dynamic-list>
39
- * ```
40
- */
41
- class RtDynamicListToolbarSelectorsDirective {
42
- constructor() {
43
- this.templateRef = inject(TemplateRef);
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDynamicListToolbarSelectorsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
46
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: RtDynamicListToolbarSelectorsDirective, isStandalone: true, selector: "[rtDynamicListSelectors]", ngImport: i0 }); }
47
- }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDynamicListToolbarSelectorsDirective, decorators: [{
49
- type: Directive,
50
- args: [{
51
- selector: '[rtDynamicListSelectors]',
52
- }]
53
- }] });
54
- /** Правая сторона панели: действия над разделом. Поле поиска стоит после них и остаётся за семьёй. */
55
- class RtDynamicListToolbarActionsDirective {
56
- constructor() {
57
- this.templateRef = inject(TemplateRef);
58
- }
59
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDynamicListToolbarActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
60
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: RtDynamicListToolbarActionsDirective, isStandalone: true, selector: "[rtDynamicListActions]", ngImport: i0 }); }
61
- }
62
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDynamicListToolbarActionsDirective, decorators: [{
63
- type: Directive,
64
- args: [{
65
- selector: '[rtDynamicListActions]',
66
- }]
67
- }] });
68
-
69
- const BEM_BLOCK = 'rt-dynamic-list';
70
- /**
71
- * Размеры страницы, которые предлагает полоса страниц. Семья передаёт их полосе сама: по наименьшему
72
- * из них она решает, рисовать ли полосу, и то же решение принимает полоса у себя.
73
- */
74
- const PER_PAGE_OPTIONS = [20, 50, 100];
75
- /**
76
- * Список записей со своей панелью инструментов.
77
- *
78
- * Полосу панели семья раскладывает сама, а не зовёт `rt-toolbar`: у того стороны объявлены
79
- * нешринкующимися, и на хозяине уже́ содержимого полоса раздаётся шире него и уезжает за край.
80
- * Семья кладёт в полосу готовые части кита — поле, кнопки, флажок, — а строит её сама.
81
- *
82
- * Семья ничего не рисует сама: поиск — поле кита, действия — его кнопки со значком, пустое место —
83
- * его пустое состояние, страницы — его нумерация. Сами записи проецируются: таблица между панелью
84
- * и страницами — потребителя, с его колонками, ячейками и действиями строки.
85
- *
86
- * Договорённость — `docs/specs/ui-kit-v2/dynamic-list/`.
87
- */
88
- class RtDynamicListComponent {
89
- #destroyRef;
90
- /**
91
- * Последнее, что знают и потребитель, и поле: отправленное потребителю или поставленное им самим.
92
- * Одно и то же дважды не спрашивается, а поставленное потребителем не возвращается ему эхом.
93
- */
94
- #lastSearch;
95
- constructor() {
96
- this.#destroyRef = inject(DestroyRef);
97
- /**
98
- * Последнее, что знают и потребитель, и поле: отправленное потребителю или поставленное им самим.
99
- * Одно и то же дважды не спрашивается, а поставленное потребителем не возвращается ему эхом.
100
- */
101
- this.#lastSearch = '';
102
- this.t = inject(RT_KIT_LABELS);
103
- this.searchControl = new FormControl('', { nonNullable: true });
104
- this.perPageOptions = PER_PAGE_OPTIONS;
105
- this.selectorsTpl = contentChild(RtDynamicListToolbarSelectorsDirective, /* @ts-ignore */
106
- ...(ngDevMode ? [{ debugName: "selectorsTpl" }] : /* istanbul ignore next */ []));
107
- this.actionsTpl = contentChild(RtDynamicListToolbarActionsDirective, /* @ts-ignore */
108
- ...(ngDevMode ? [{ debugName: "actionsTpl" }] : /* istanbul ignore next */ []));
109
- /** «Выбрано: N» — подпись с подстановкой, потому её берут не из карты, а вызовом. */
110
- this.selectedLabel = rtKitLabel('uiSelectedCount', computed(() => ({ count: this.selectedCount() })));
111
- /** Отчего пусто. Отбор стоит — значит, записи убрал он, и человеку показывают дорогу назад. */
112
- this.emptyReason = computed(() => this.filtered() ? 'filter' : 'section', /* @ts-ignore */
113
- ...(ngDevMode ? [{ debugName: "emptyReason" }] : /* istanbul ignore next */ []));
114
- /** Значок пустого места: под отбором — лупа, у пустого раздела — лоток. */
115
- this.emptyIcon = computed(() => this.emptyReason() === 'filter' ? 'search' : 'inbox', /* @ts-ignore */
116
- ...(ngDevMode ? [{ debugName: "emptyIcon" }] : /* istanbul ignore next */ []));
117
- /** Подпись пустого места. Своя подпись потребителя сильнее обеих подписей кита. */
118
- this.emptyTitleText = computed(() => {
119
- if (this.emptyTitle()) {
120
- return this.emptyTitle();
121
- }
122
- return this.emptyReason() === 'filter' ? this.t().uiNothingFound : this.t().uiNoRows;
123
- }, /* @ts-ignore */
124
- ...(ngDevMode ? [{ debugName: "emptyTitleText" }] : /* istanbul ignore next */ []));
125
- /**
126
- * Полоса страниц рисуется, пока записей больше наименьшего размера страницы — то же правило, что у
127
- * самой полосы. Число страниц при нынешнем размере тут не решает: выбравший крупный размер, при
128
- * котором всё легло на одну страницу, иначе терял вместе с полосой и дорогу к размеру поменьше.
129
- */
130
- this.isPaginationShown = computed(() => {
131
- const page = this.pageModel();
132
- if (!page || this.empty()) {
133
- return false;
134
- }
135
- return page.totalCount > Math.min(...PER_PAGE_OPTIONS);
136
- }, /* @ts-ignore */
137
- ...(ngDevMode ? [{ debugName: "isPaginationShown" }] : /* istanbul ignore next */ []));
138
- /**
139
- * Есть ли в панели хоть что-нибудь. Полоса без единой части — это отступ над записями, и
140
- * место она забирает у них.
141
- */
142
- this.isToolbarShown = computed(() => [
143
- this.showSearch(),
144
- this.showRefresh(),
145
- this.showClearFilters(),
146
- this.showColumnSettings(),
147
- this.selectable(),
148
- !!this.selectorsTpl(),
149
- !!this.actionsTpl(),
150
- ].some((part) => part), /* @ts-ignore */
151
- ...(ngDevMode ? [{ debugName: "isToolbarShown" }] : /* istanbul ignore next */ []));
152
- /** Записи проецируются, и о числе страниц семья узнаёт только из модели страницы. */
153
- this.pageModel = input(null, /* @ts-ignore */
154
- ...(ngDevMode ? [{ debugName: "pageModel" }] : /* istanbul ignore next */ []));
155
- /** Первая загрузка: вместо всего содержимого стоит вертушка. */
156
- this.loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
157
- /** Подгрузка поверх нарисованного: записи остаются на месте, вертушка стоит над ними. */
158
- this.fetching = input(false, { ...(ngDevMode ? { debugName: "fetching" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
159
- /** Записей нет вовсе. От пустого ответа под отбором отличается входом `filtered`. */
160
- this.empty = input(false, { ...(ngDevMode ? { debugName: "empty" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
161
- /** Отбор стоит. Вместе с `empty` даёт вторую причину пустоты — ту, у которой есть дорога назад. */
162
- this.filtered = input(false, { ...(ngDevMode ? { debugName: "filtered" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
163
- /** Кнопка сброса отбора: показана у раздела с отбором, выключена, пока сбрасывать нечего. */
164
- this.showClearFilters = input(false, { ...(ngDevMode ? { debugName: "showClearFilters" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
165
- this.showRefresh = input(false, { ...(ngDevMode ? { debugName: "showRefresh" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
166
- this.showColumnSettings = input(false, { ...(ngDevMode ? { debugName: "showColumnSettings" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
167
- this.showSearch = input(true, { ...(ngDevMode ? { debugName: "showSearch" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
168
- /** Выбор записей: флажок «выбрать все» и счётчик выбранного на левой стороне панели. */
169
- this.selectable = input(false, { ...(ngDevMode ? { debugName: "selectable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
170
- this.allSelected = input(false, { ...(ngDevMode ? { debugName: "allSelected" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
171
- this.someSelected = input(false, { ...(ngDevMode ? { debugName: "someSelected" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
172
- this.selectAllDisabled = input(false, { ...(ngDevMode ? { debugName: "selectAllDisabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
173
- this.selectedCount = input(0, { ...(ngDevMode ? { debugName: "selectedCount" } : /* istanbul ignore next */ {}), transform: numberAttribute });
174
- this.emptyTitle = input('', /* @ts-ignore */
175
- ...(ngDevMode ? [{ debugName: "emptyTitle" }] : /* istanbul ignore next */ []));
176
- this.emptyDescription = input(null, /* @ts-ignore */
177
- ...(ngDevMode ? [{ debugName: "emptyDescription" }] : /* istanbul ignore next */ []));
178
- /** Поиск потребителя: поле следует за ним при каждой смене и потребителю его не возвращает. */
179
- this.searchTerm = input('', /* @ts-ignore */
180
- ...(ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []));
181
- this.searchChange = output();
182
- this.refreshed = output();
183
- this.filtersCleared = output();
184
- this.columnSettingsOpened = output();
185
- this.pageChange = output();
186
- this.perPageChange = output();
187
- this.allSelectedChange = output();
188
- // Поиск потребителя ставится в поле, только когда он отличается от последнего, что список
189
- // отправил или поставил сам. Эхо отправленного — даже запоздалое, когда человек уже дописал
190
- // дальше, — поле не трогает: иначе оно стирало бы набранное и сбивало каретку.
191
- effect(() => {
192
- const term = this.searchTerm() ?? '';
193
- untracked(() => {
194
- if (term.trim() === this.#lastSearch) {
195
- return;
196
- }
197
- this.#lastSearch = term.trim();
198
- this.searchControl.setValue(term, { emitEvent: false });
199
- });
200
- });
201
- }
202
- ngOnInit() {
203
- // Дебаунс непустого ввода; очистка крестиком применяется сразу — так же, как в списке
204
- // переписок: оператор один на кит, и два разных ожидания разошлись бы молча.
205
- this.searchControl.valueChanges
206
- .pipe(map((value) => value.trim()), searchDebounce(),
207
- // Набранное, которое потребитель или сброс отбора успели заменить, уже не в поле.
208
- filter((value) => value === this.searchControl.value.trim()), filter((value) => value !== this.#lastSearch), takeUntilDestroyed(this.#destroyRef))
209
- .subscribe((value) => {
210
- this.#lastSearch = value;
211
- this.searchChange.emit(value);
212
- });
213
- }
214
- onSelectAll(checked) {
215
- this.allSelectedChange.emit(checked);
216
- }
217
- /**
218
- * Сброс отбора снимает и поиск: пустой ответ под поиском — тоже ответ под отбором, и дорога назад
219
- * без очистки поля вела бы к тому же пустому ответу. Поле очищается молча: `filtersCleared`
220
- * уже значит «и поиск снят», и отдельный пустой `searchChange` заставил бы потребителя
221
- * запрашивать список дважды.
222
- */
223
- onClearFilters() {
224
- this.#lastSearch = '';
225
- this.searchControl.setValue('', { emitEvent: false });
226
- this.filtersCleared.emit();
227
- }
228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDynamicListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
229
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: RtDynamicListComponent, isStandalone: true, selector: "rt-dynamic-list", inputs: { pageModel: { classPropertyName: "pageModel", publicName: "pageModel", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, fetching: { classPropertyName: "fetching", publicName: "fetching", isSignal: true, isRequired: false, transformFunction: null }, empty: { classPropertyName: "empty", publicName: "empty", isSignal: true, isRequired: false, transformFunction: null }, filtered: { classPropertyName: "filtered", publicName: "filtered", isSignal: true, isRequired: false, transformFunction: null }, showClearFilters: { classPropertyName: "showClearFilters", publicName: "showClearFilters", isSignal: true, isRequired: false, transformFunction: null }, showRefresh: { classPropertyName: "showRefresh", publicName: "showRefresh", isSignal: true, isRequired: false, transformFunction: null }, showColumnSettings: { classPropertyName: "showColumnSettings", publicName: "showColumnSettings", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, allSelected: { classPropertyName: "allSelected", publicName: "allSelected", isSignal: true, isRequired: false, transformFunction: null }, someSelected: { classPropertyName: "someSelected", publicName: "someSelected", isSignal: true, isRequired: false, transformFunction: null }, selectAllDisabled: { classPropertyName: "selectAllDisabled", publicName: "selectAllDisabled", isSignal: true, isRequired: false, transformFunction: null }, selectedCount: { classPropertyName: "selectedCount", publicName: "selectedCount", isSignal: true, isRequired: false, transformFunction: null }, emptyTitle: { classPropertyName: "emptyTitle", publicName: "emptyTitle", isSignal: true, isRequired: false, transformFunction: null }, emptyDescription: { classPropertyName: "emptyDescription", publicName: "emptyDescription", isSignal: true, isRequired: false, transformFunction: null }, searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchChange: "searchChange", refreshed: "refreshed", filtersCleared: "filtersCleared", columnSettingsOpened: "columnSettingsOpened", pageChange: "pageChange", perPageChange: "perPageChange", allSelectedChange: "allSelectedChange" }, host: { classAttribute: "rt-dynamic-list" }, queries: [{ propertyName: "selectorsTpl", first: true, predicate: RtDynamicListToolbarSelectorsDirective, descendants: true, isSignal: true }, { propertyName: "actionsTpl", first: true, predicate: RtDynamicListToolbarActionsDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container rtBlock=\"rt-dynamic-list\">\n @if (loading()) {\n <div rtElem=\"loader\" qa-dataid=\"dynamic-list-loader\">\n <rt-spinner />\n </div>\n } @else {\n @if (fetching()) {\n <div rtElem=\"veil\" qa-dataid=\"dynamic-list-veil\">\n <rt-spinner />\n </div>\n }\n\n @if (isToolbarShown()) {\n <div rtElem=\"toolbar\" qa-dataid=\"dynamic-list-toolbar\">\n @if (selectable() || selectorsTpl()) {\n <div rtElem=\"selectors\" qa-dataid=\"dynamic-list-selectors\">\n @if (selectable()) {\n <rt-checkbox\n qa-dataid=\"dynamic-list-select-all\"\n [ariaLabel]=\"t().uiSelectAll\"\n [ngModel]=\"allSelected()\"\n [indeterminate]=\"!allSelected() && someSelected()\"\n [disabled]=\"selectAllDisabled()\"\n (ngModelChange)=\"onSelectAll($event)\" />\n\n @if (selectedCount()) {\n <span rtElem=\"counter\" qa-dataid=\"dynamic-list-selected-count\">\n {{ selectedLabel() }}\n </span>\n }\n }\n\n @if (selectorsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n </div>\n }\n\n <div rtElem=\"right\" qa-dataid=\"dynamic-list-right\">\n <div rtElem=\"actions\">\n @if (actionsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n\n @if (showClearFilters()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-clear-filters\"\n icon=\"filter-slash\"\n size=\"sm\"\n [ariaLabel]=\"t().uiClearFilters\"\n [tooltip]=\"t().uiClearFilters\"\n [disabled]=\"!filtered()\"\n (clicked)=\"onClearFilters()\" />\n }\n\n @if (showRefresh()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-refresh\"\n icon=\"refresh\"\n size=\"sm\"\n [ariaLabel]=\"t().uiRefresh\"\n [tooltip]=\"t().uiRefresh\"\n (clicked)=\"refreshed.emit()\" />\n }\n\n @if (showColumnSettings()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-column-settings\"\n icon=\"sliders-v\"\n size=\"sm\"\n [ariaLabel]=\"t().uiColumnSettings\"\n [tooltip]=\"t().uiColumnSettings\"\n (clicked)=\"columnSettingsOpened.emit()\" />\n }\n </div>\n\n @if (showSearch()) {\n <div rtElem=\"search\">\n <rt-input\n qa-dataid=\"dynamic-list-search\"\n iconLeft=\"search\"\n [placeholder]=\"t().uiSearch\"\n [formControl]=\"searchControl\" />\n </div>\n }\n </div>\n </div>\n }\n\n @if (empty()) {\n <rt-empty-state\n rtElem=\"empty\"\n qa-dataid=\"dynamic-list-empty\"\n [icon]=\"emptyIcon()\"\n [title]=\"emptyTitleText()\"\n [description]=\"emptyDescription()\">\n @if (emptyReason() === 'filter') {\n <button\n rtButton\n qa-dataid=\"dynamic-list-empty-clear\"\n type=\"button\"\n icon=\"filter-slash\"\n appearance=\"outlined\"\n size=\"sm\"\n [label]=\"t().uiClearFilters\"\n [attr.aria-label]=\"t().uiClearFilters\"\n (click)=\"onClearFilters()\"></button>\n }\n </rt-empty-state>\n } @else {\n <div rtElem=\"content\" qa-dataid=\"dynamic-list-content\">\n <ng-content />\n </div>\n\n @if (isPaginationShown()) {\n <rt-pagination\n rtElem=\"pagination\"\n qa-dataid=\"dynamic-list-pagination\"\n [pageModel]=\"pageModel()!\"\n [perPageOptions]=\"perPageOptions\"\n [loading]=\"fetching()\"\n (pageChange)=\"pageChange.emit($event)\"\n (perPageChange)=\"perPageChange.emit($event)\" />\n }\n }\n }\n</ng-container>\n", styles: ["@layer rt-kit.components{.rt-dynamic-list{--rt-dynamic-list-gap: var(--rt-space-4);--rt-dynamic-list-search-width: var(--rt-size-64);--rt-dynamic-list-veil-bg: var(--rt-color-bg-surface);position:relative;display:flex;flex-direction:column;block-size:100%;gap:var(--rt-dynamic-list-gap);inline-size:100%;min-block-size:0}.rt-dynamic-list__loader{display:flex;flex:1 1 auto;align-items:center;justify-content:center;padding:var(--rt-space-8)}.rt-dynamic-list__veil{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;background-color:color-mix(in srgb,var(--rt-dynamic-list-veil-bg) 60%,transparent);inset:0}.rt-dynamic-list__toolbar{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__selectors{display:flex;flex:0 1 auto;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__counter{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-dynamic-list__right{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__actions{display:flex;flex:0 0 auto;align-items:center;gap:var(--rt-space-1)}.rt-dynamic-list__search{flex:1 1 auto;max-inline-size:var(--rt-dynamic-list-search-width);min-inline-size:0}.rt-dynamic-list__content{display:flex;overflow:auto;flex:1 1 auto;flex-direction:column;isolation:isolate;min-block-size:0}.rt-dynamic-list__empty{flex:1 1 auto}.rt-dynamic-list__pagination{flex:0 0 auto}@media(width<=1080px){.rt-dynamic-list__right{flex-wrap:wrap}.rt-dynamic-list__search{max-inline-size:none}}}\n"], dependencies: [{ kind: "directive", type:
230
- // Angular
231
- NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type:
232
- // standalone components / directives
233
- RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "loading", "loadingIcon", "loadingLabel", "pressed"] }, { kind: "component", type: RtCheckboxComponent, selector: "rt-checkbox", inputs: ["inputId", "ariaLabel", "disabled", "indeterminate"] }, { kind: "component", type: RtEmptyStateComponent, selector: "rt-empty-state", inputs: ["icon", "glyph", "title", "description", "framed"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "glyph", "ariaLabel", "variant", "iconColor", "iconFill", "size", "iconSize", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "component", type: RtInputComponent, selector: "rt-input", inputs: ["appearance", "type", "placeholder", "iconLeft", "iconRight", "passwordToggle", "autocomplete"] }, { kind: "component", type: RtPaginationComponent, selector: "rt-pagination", inputs: ["pageModel", "perPageOptions", "prevIcon", "nextIcon", "numbering", "loading"], outputs: ["pageChange", "perPageChange"] }, { kind: "component", type: RtSpinnerComponent, selector: "rt-spinner", inputs: ["diameter", "color", "appearance", "overlay", "backdrop", "plate"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
234
- }
235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDynamicListComponent, decorators: [{
236
- type: Component,
237
- args: [{ selector: 'rt-dynamic-list', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
238
- // Angular
239
- NgTemplateOutlet,
240
- FormsModule,
241
- ReactiveFormsModule,
242
- // standalone components / directives
243
- RtButtonDirective,
244
- RtCheckboxComponent,
245
- RtEmptyStateComponent,
246
- RtIconButtonComponent,
247
- RtInputComponent,
248
- RtPaginationComponent,
249
- RtSpinnerComponent,
250
- BlockDirective,
251
- ElemDirective,
252
- ], host: { class: BEM_BLOCK }, template: "<ng-container rtBlock=\"rt-dynamic-list\">\n @if (loading()) {\n <div rtElem=\"loader\" qa-dataid=\"dynamic-list-loader\">\n <rt-spinner />\n </div>\n } @else {\n @if (fetching()) {\n <div rtElem=\"veil\" qa-dataid=\"dynamic-list-veil\">\n <rt-spinner />\n </div>\n }\n\n @if (isToolbarShown()) {\n <div rtElem=\"toolbar\" qa-dataid=\"dynamic-list-toolbar\">\n @if (selectable() || selectorsTpl()) {\n <div rtElem=\"selectors\" qa-dataid=\"dynamic-list-selectors\">\n @if (selectable()) {\n <rt-checkbox\n qa-dataid=\"dynamic-list-select-all\"\n [ariaLabel]=\"t().uiSelectAll\"\n [ngModel]=\"allSelected()\"\n [indeterminate]=\"!allSelected() && someSelected()\"\n [disabled]=\"selectAllDisabled()\"\n (ngModelChange)=\"onSelectAll($event)\" />\n\n @if (selectedCount()) {\n <span rtElem=\"counter\" qa-dataid=\"dynamic-list-selected-count\">\n {{ selectedLabel() }}\n </span>\n }\n }\n\n @if (selectorsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n </div>\n }\n\n <div rtElem=\"right\" qa-dataid=\"dynamic-list-right\">\n <div rtElem=\"actions\">\n @if (actionsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n\n @if (showClearFilters()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-clear-filters\"\n icon=\"filter-slash\"\n size=\"sm\"\n [ariaLabel]=\"t().uiClearFilters\"\n [tooltip]=\"t().uiClearFilters\"\n [disabled]=\"!filtered()\"\n (clicked)=\"onClearFilters()\" />\n }\n\n @if (showRefresh()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-refresh\"\n icon=\"refresh\"\n size=\"sm\"\n [ariaLabel]=\"t().uiRefresh\"\n [tooltip]=\"t().uiRefresh\"\n (clicked)=\"refreshed.emit()\" />\n }\n\n @if (showColumnSettings()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-column-settings\"\n icon=\"sliders-v\"\n size=\"sm\"\n [ariaLabel]=\"t().uiColumnSettings\"\n [tooltip]=\"t().uiColumnSettings\"\n (clicked)=\"columnSettingsOpened.emit()\" />\n }\n </div>\n\n @if (showSearch()) {\n <div rtElem=\"search\">\n <rt-input\n qa-dataid=\"dynamic-list-search\"\n iconLeft=\"search\"\n [placeholder]=\"t().uiSearch\"\n [formControl]=\"searchControl\" />\n </div>\n }\n </div>\n </div>\n }\n\n @if (empty()) {\n <rt-empty-state\n rtElem=\"empty\"\n qa-dataid=\"dynamic-list-empty\"\n [icon]=\"emptyIcon()\"\n [title]=\"emptyTitleText()\"\n [description]=\"emptyDescription()\">\n @if (emptyReason() === 'filter') {\n <button\n rtButton\n qa-dataid=\"dynamic-list-empty-clear\"\n type=\"button\"\n icon=\"filter-slash\"\n appearance=\"outlined\"\n size=\"sm\"\n [label]=\"t().uiClearFilters\"\n [attr.aria-label]=\"t().uiClearFilters\"\n (click)=\"onClearFilters()\"></button>\n }\n </rt-empty-state>\n } @else {\n <div rtElem=\"content\" qa-dataid=\"dynamic-list-content\">\n <ng-content />\n </div>\n\n @if (isPaginationShown()) {\n <rt-pagination\n rtElem=\"pagination\"\n qa-dataid=\"dynamic-list-pagination\"\n [pageModel]=\"pageModel()!\"\n [perPageOptions]=\"perPageOptions\"\n [loading]=\"fetching()\"\n (pageChange)=\"pageChange.emit($event)\"\n (perPageChange)=\"perPageChange.emit($event)\" />\n }\n }\n }\n</ng-container>\n", styles: ["@layer rt-kit.components{.rt-dynamic-list{--rt-dynamic-list-gap: var(--rt-space-4);--rt-dynamic-list-search-width: var(--rt-size-64);--rt-dynamic-list-veil-bg: var(--rt-color-bg-surface);position:relative;display:flex;flex-direction:column;block-size:100%;gap:var(--rt-dynamic-list-gap);inline-size:100%;min-block-size:0}.rt-dynamic-list__loader{display:flex;flex:1 1 auto;align-items:center;justify-content:center;padding:var(--rt-space-8)}.rt-dynamic-list__veil{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;background-color:color-mix(in srgb,var(--rt-dynamic-list-veil-bg) 60%,transparent);inset:0}.rt-dynamic-list__toolbar{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__selectors{display:flex;flex:0 1 auto;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__counter{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-dynamic-list__right{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__actions{display:flex;flex:0 0 auto;align-items:center;gap:var(--rt-space-1)}.rt-dynamic-list__search{flex:1 1 auto;max-inline-size:var(--rt-dynamic-list-search-width);min-inline-size:0}.rt-dynamic-list__content{display:flex;overflow:auto;flex:1 1 auto;flex-direction:column;isolation:isolate;min-block-size:0}.rt-dynamic-list__empty{flex:1 1 auto}.rt-dynamic-list__pagination{flex:0 0 auto}@media(width<=1080px){.rt-dynamic-list__right{flex-wrap:wrap}.rt-dynamic-list__search{max-inline-size:none}}}\n"] }]
253
- }], ctorParameters: () => [], propDecorators: { selectorsTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RtDynamicListToolbarSelectorsDirective), { isSignal: true }] }], actionsTpl: [{ type: i0.ContentChild, args: [i0.forwardRef(() => RtDynamicListToolbarActionsDirective), { isSignal: true }] }], pageModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageModel", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], fetching: [{ type: i0.Input, args: [{ isSignal: true, alias: "fetching", required: false }] }], empty: [{ type: i0.Input, args: [{ isSignal: true, alias: "empty", required: false }] }], filtered: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtered", required: false }] }], showClearFilters: [{ type: i0.Input, args: [{ isSignal: true, alias: "showClearFilters", required: false }] }], showRefresh: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRefresh", required: false }] }], showColumnSettings: [{ type: i0.Input, args: [{ isSignal: true, alias: "showColumnSettings", required: false }] }], showSearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSearch", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], allSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "allSelected", required: false }] }], someSelected: [{ type: i0.Input, args: [{ isSignal: true, alias: "someSelected", required: false }] }], selectAllDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectAllDisabled", required: false }] }], selectedCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedCount", required: false }] }], emptyTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyTitle", required: false }] }], emptyDescription: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyDescription", required: false }] }], searchTerm: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchTerm", required: false }] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }], refreshed: [{ type: i0.Output, args: ["refreshed"] }], filtersCleared: [{ type: i0.Output, args: ["filtersCleared"] }], columnSettingsOpened: [{ type: i0.Output, args: ["columnSettingsOpened"] }], pageChange: [{ type: i0.Output, args: ["pageChange"] }], perPageChange: [{ type: i0.Output, args: ["perPageChange"] }], allSelectedChange: [{ type: i0.Output, args: ["allSelectedChange"] }] } });
254
-
255
- /**
256
- * Generated bundle index. Do not edit.
257
- */
258
-
1
+ import { NgTemplateOutlet } from "@angular/common";
2
+ import * as i0 from "@angular/core";
3
+ import { ChangeDetectionStrategy, Component, DestroyRef, Directive, TemplateRef, ViewEncapsulation, booleanAttribute, computed, contentChild, effect, inject, input, numberAttribute, output, untracked } from "@angular/core";
4
+ import { takeUntilDestroyed } from "@angular/core/rxjs-interop";
5
+ import * as i1 from "@angular/forms";
6
+ import { FormControl, FormsModule, ReactiveFormsModule } from "@angular/forms";
7
+ import { filter, map } from "rxjs";
8
+ import { BlockDirective, ElemDirective } from "@rt-tools/core";
9
+ import { RT_KIT_LABELS, rtKitLabel, searchDebounce } from "@rt-tools/ui-kit-v2/core";
10
+ import { RtButtonDirective } from "@rt-tools/ui-kit-v2/button";
11
+ import { RtCheckboxComponent } from "@rt-tools/ui-kit-v2/checkbox";
12
+ import { RtEmptyStateComponent } from "@rt-tools/ui-kit-v2/empty-state";
13
+ import { RtIconButtonComponent } from "@rt-tools/ui-kit-v2/icon-button";
14
+ import { RtInputComponent } from "@rt-tools/ui-kit-v2/input";
15
+ import { RtPaginationComponent } from "@rt-tools/ui-kit-v2/pagination";
16
+ import { RtSpinnerComponent } from "@rt-tools/ui-kit-v2/spinner";
17
+ var RtDynamicListToolbarSelectorsDirective = class RtDynamicListToolbarSelectorsDirective {
18
+ constructor() {
19
+ this.templateRef = inject(TemplateRef);
20
+ }
21
+ static {
22
+ this.ɵfac = i0.ɵɵngDeclareFactory({
23
+ minVersion: "12.0.0",
24
+ version: "22.2.2",
25
+ ngImport: i0,
26
+ type: RtDynamicListToolbarSelectorsDirective,
27
+ deps: [],
28
+ target: i0.ɵɵFactoryTarget.Directive
29
+ });
30
+ }
31
+ static {
32
+ this.ɵdir = i0.ɵɵngDeclareDirective({
33
+ minVersion: "14.0.0",
34
+ version: "22.2.2",
35
+ type: RtDynamicListToolbarSelectorsDirective,
36
+ isStandalone: true,
37
+ selector: "[rtDynamicListSelectors]",
38
+ ngImport: i0
39
+ });
40
+ }
41
+ };
42
+ i0.ɵɵngDeclareClassMetadata({
43
+ minVersion: "12.0.0",
44
+ version: "22.2.2",
45
+ ngImport: i0,
46
+ type: RtDynamicListToolbarSelectorsDirective,
47
+ decorators: [{
48
+ type: Directive,
49
+ args: [{ selector: "[rtDynamicListSelectors]" }]
50
+ }]
51
+ });
52
+ var RtDynamicListToolbarActionsDirective = class RtDynamicListToolbarActionsDirective {
53
+ constructor() {
54
+ this.templateRef = inject(TemplateRef);
55
+ }
56
+ static {
57
+ this.ɵfac = i0.ɵɵngDeclareFactory({
58
+ minVersion: "12.0.0",
59
+ version: "22.2.2",
60
+ ngImport: i0,
61
+ type: RtDynamicListToolbarActionsDirective,
62
+ deps: [],
63
+ target: i0.ɵɵFactoryTarget.Directive
64
+ });
65
+ }
66
+ static {
67
+ this.ɵdir = i0.ɵɵngDeclareDirective({
68
+ minVersion: "14.0.0",
69
+ version: "22.2.2",
70
+ type: RtDynamicListToolbarActionsDirective,
71
+ isStandalone: true,
72
+ selector: "[rtDynamicListActions]",
73
+ ngImport: i0
74
+ });
75
+ }
76
+ };
77
+ i0.ɵɵngDeclareClassMetadata({
78
+ minVersion: "12.0.0",
79
+ version: "22.2.2",
80
+ ngImport: i0,
81
+ type: RtDynamicListToolbarActionsDirective,
82
+ decorators: [{
83
+ type: Directive,
84
+ args: [{ selector: "[rtDynamicListActions]" }]
85
+ }]
86
+ });
87
+ const BEM_BLOCK = "rt-dynamic-list";
88
+ const PER_PAGE_OPTIONS = [
89
+ 20,
90
+ 50,
91
+ 100
92
+ ];
93
+ var RtDynamicListComponent = class RtDynamicListComponent {
94
+ #destroyRef;
95
+ #lastSearch;
96
+ constructor() {
97
+ this.#destroyRef = inject(DestroyRef);
98
+ this.#lastSearch = "";
99
+ this.t = inject(RT_KIT_LABELS);
100
+ this.searchControl = new FormControl("", { nonNullable: true });
101
+ this.perPageOptions = PER_PAGE_OPTIONS;
102
+ this.selectorsTpl = contentChild(RtDynamicListToolbarSelectorsDirective, ...ngDevMode ? [{ debugName: "selectorsTpl" }] : /* istanbul ignore next */ []);
103
+ this.actionsTpl = contentChild(RtDynamicListToolbarActionsDirective, ...ngDevMode ? [{ debugName: "actionsTpl" }] : /* istanbul ignore next */ []);
104
+ this.selectedLabel = rtKitLabel("uiSelectedCount", computed(() => ({ count: this.selectedCount() })));
105
+ this.emptyReason = computed(() => this.filtered() ? "filter" : "section", ...ngDevMode ? [{ debugName: "emptyReason" }] : /* istanbul ignore next */ []);
106
+ this.emptyIcon = computed(() => this.emptyReason() === "filter" ? "search" : "inbox", ...ngDevMode ? [{ debugName: "emptyIcon" }] : /* istanbul ignore next */ []);
107
+ this.emptyTitleText = computed(() => {
108
+ if (this.emptyTitle()) return this.emptyTitle();
109
+ return this.emptyReason() === "filter" ? this.t().uiNothingFound : this.t().uiNoRows;
110
+ }, ...ngDevMode ? [{ debugName: "emptyTitleText" }] : /* istanbul ignore next */ []);
111
+ this.isPaginationShown = computed(() => {
112
+ const page = this.pageModel();
113
+ if (!page || this.empty()) return false;
114
+ return page.totalCount > Math.min(...PER_PAGE_OPTIONS);
115
+ }, ...ngDevMode ? [{ debugName: "isPaginationShown" }] : /* istanbul ignore next */ []);
116
+ this.isToolbarShown = computed(() => [
117
+ this.showSearch(),
118
+ this.showRefresh(),
119
+ this.showClearFilters(),
120
+ this.showColumnSettings(),
121
+ this.selectable(),
122
+ !!this.selectorsTpl(),
123
+ !!this.actionsTpl()
124
+ ].some((part) => part), ...ngDevMode ? [{ debugName: "isToolbarShown" }] : /* istanbul ignore next */ []);
125
+ this.pageModel = input(null, ...ngDevMode ? [{ debugName: "pageModel" }] : /* istanbul ignore next */ []);
126
+ this.loading = input(false, {
127
+ ...ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {},
128
+ transform: booleanAttribute
129
+ });
130
+ this.fetching = input(false, {
131
+ ...ngDevMode ? { debugName: "fetching" } : /* istanbul ignore next */ {},
132
+ transform: booleanAttribute
133
+ });
134
+ this.empty = input(false, {
135
+ ...ngDevMode ? { debugName: "empty" } : /* istanbul ignore next */ {},
136
+ transform: booleanAttribute
137
+ });
138
+ this.filtered = input(false, {
139
+ ...ngDevMode ? { debugName: "filtered" } : /* istanbul ignore next */ {},
140
+ transform: booleanAttribute
141
+ });
142
+ this.showClearFilters = input(false, {
143
+ ...ngDevMode ? { debugName: "showClearFilters" } : /* istanbul ignore next */ {},
144
+ transform: booleanAttribute
145
+ });
146
+ this.showRefresh = input(false, {
147
+ ...ngDevMode ? { debugName: "showRefresh" } : /* istanbul ignore next */ {},
148
+ transform: booleanAttribute
149
+ });
150
+ this.showColumnSettings = input(false, {
151
+ ...ngDevMode ? { debugName: "showColumnSettings" } : /* istanbul ignore next */ {},
152
+ transform: booleanAttribute
153
+ });
154
+ this.showSearch = input(true, {
155
+ ...ngDevMode ? { debugName: "showSearch" } : /* istanbul ignore next */ {},
156
+ transform: booleanAttribute
157
+ });
158
+ this.selectable = input(false, {
159
+ ...ngDevMode ? { debugName: "selectable" } : /* istanbul ignore next */ {},
160
+ transform: booleanAttribute
161
+ });
162
+ this.allSelected = input(false, {
163
+ ...ngDevMode ? { debugName: "allSelected" } : /* istanbul ignore next */ {},
164
+ transform: booleanAttribute
165
+ });
166
+ this.someSelected = input(false, {
167
+ ...ngDevMode ? { debugName: "someSelected" } : /* istanbul ignore next */ {},
168
+ transform: booleanAttribute
169
+ });
170
+ this.selectAllDisabled = input(false, {
171
+ ...ngDevMode ? { debugName: "selectAllDisabled" } : /* istanbul ignore next */ {},
172
+ transform: booleanAttribute
173
+ });
174
+ this.selectedCount = input(0, {
175
+ ...ngDevMode ? { debugName: "selectedCount" } : /* istanbul ignore next */ {},
176
+ transform: numberAttribute
177
+ });
178
+ this.emptyTitle = input("", ...ngDevMode ? [{ debugName: "emptyTitle" }] : /* istanbul ignore next */ []);
179
+ this.emptyDescription = input(null, ...ngDevMode ? [{ debugName: "emptyDescription" }] : /* istanbul ignore next */ []);
180
+ this.searchTerm = input("", ...ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []);
181
+ this.searchChange = output();
182
+ this.refreshed = output();
183
+ this.filtersCleared = output();
184
+ this.columnSettingsOpened = output();
185
+ this.pageChange = output();
186
+ this.perPageChange = output();
187
+ this.allSelectedChange = output();
188
+ effect(() => {
189
+ const term = this.searchTerm() ?? "";
190
+ untracked(() => {
191
+ if (term.trim() === this.#lastSearch) return;
192
+ this.#lastSearch = term.trim();
193
+ this.searchControl.setValue(term, { emitEvent: false });
194
+ });
195
+ });
196
+ }
197
+ ngOnInit() {
198
+ this.searchControl.valueChanges.pipe(map((value) => value.trim()), searchDebounce(), filter((value) => value === this.searchControl.value.trim()), filter((value) => value !== this.#lastSearch), takeUntilDestroyed(this.#destroyRef)).subscribe((value) => {
199
+ this.#lastSearch = value;
200
+ this.searchChange.emit(value);
201
+ });
202
+ }
203
+ onSelectAll(checked) {
204
+ this.allSelectedChange.emit(checked);
205
+ }
206
+ onClearFilters() {
207
+ this.#lastSearch = "";
208
+ this.searchControl.setValue("", { emitEvent: false });
209
+ this.filtersCleared.emit();
210
+ }
211
+ static {
212
+ this.ɵfac = i0.ɵɵngDeclareFactory({
213
+ minVersion: "12.0.0",
214
+ version: "22.2.2",
215
+ ngImport: i0,
216
+ type: RtDynamicListComponent,
217
+ deps: [],
218
+ target: i0.ɵɵFactoryTarget.Component
219
+ });
220
+ }
221
+ static {
222
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
223
+ minVersion: "17.0.0",
224
+ version: "22.2.2",
225
+ type: RtDynamicListComponent,
226
+ isStandalone: true,
227
+ selector: "rt-dynamic-list",
228
+ inputs: {
229
+ pageModel: {
230
+ classPropertyName: "pageModel",
231
+ publicName: "pageModel",
232
+ isSignal: true,
233
+ isRequired: false,
234
+ transformFunction: null
235
+ },
236
+ loading: {
237
+ classPropertyName: "loading",
238
+ publicName: "loading",
239
+ isSignal: true,
240
+ isRequired: false,
241
+ transformFunction: null
242
+ },
243
+ fetching: {
244
+ classPropertyName: "fetching",
245
+ publicName: "fetching",
246
+ isSignal: true,
247
+ isRequired: false,
248
+ transformFunction: null
249
+ },
250
+ empty: {
251
+ classPropertyName: "empty",
252
+ publicName: "empty",
253
+ isSignal: true,
254
+ isRequired: false,
255
+ transformFunction: null
256
+ },
257
+ filtered: {
258
+ classPropertyName: "filtered",
259
+ publicName: "filtered",
260
+ isSignal: true,
261
+ isRequired: false,
262
+ transformFunction: null
263
+ },
264
+ showClearFilters: {
265
+ classPropertyName: "showClearFilters",
266
+ publicName: "showClearFilters",
267
+ isSignal: true,
268
+ isRequired: false,
269
+ transformFunction: null
270
+ },
271
+ showRefresh: {
272
+ classPropertyName: "showRefresh",
273
+ publicName: "showRefresh",
274
+ isSignal: true,
275
+ isRequired: false,
276
+ transformFunction: null
277
+ },
278
+ showColumnSettings: {
279
+ classPropertyName: "showColumnSettings",
280
+ publicName: "showColumnSettings",
281
+ isSignal: true,
282
+ isRequired: false,
283
+ transformFunction: null
284
+ },
285
+ showSearch: {
286
+ classPropertyName: "showSearch",
287
+ publicName: "showSearch",
288
+ isSignal: true,
289
+ isRequired: false,
290
+ transformFunction: null
291
+ },
292
+ selectable: {
293
+ classPropertyName: "selectable",
294
+ publicName: "selectable",
295
+ isSignal: true,
296
+ isRequired: false,
297
+ transformFunction: null
298
+ },
299
+ allSelected: {
300
+ classPropertyName: "allSelected",
301
+ publicName: "allSelected",
302
+ isSignal: true,
303
+ isRequired: false,
304
+ transformFunction: null
305
+ },
306
+ someSelected: {
307
+ classPropertyName: "someSelected",
308
+ publicName: "someSelected",
309
+ isSignal: true,
310
+ isRequired: false,
311
+ transformFunction: null
312
+ },
313
+ selectAllDisabled: {
314
+ classPropertyName: "selectAllDisabled",
315
+ publicName: "selectAllDisabled",
316
+ isSignal: true,
317
+ isRequired: false,
318
+ transformFunction: null
319
+ },
320
+ selectedCount: {
321
+ classPropertyName: "selectedCount",
322
+ publicName: "selectedCount",
323
+ isSignal: true,
324
+ isRequired: false,
325
+ transformFunction: null
326
+ },
327
+ emptyTitle: {
328
+ classPropertyName: "emptyTitle",
329
+ publicName: "emptyTitle",
330
+ isSignal: true,
331
+ isRequired: false,
332
+ transformFunction: null
333
+ },
334
+ emptyDescription: {
335
+ classPropertyName: "emptyDescription",
336
+ publicName: "emptyDescription",
337
+ isSignal: true,
338
+ isRequired: false,
339
+ transformFunction: null
340
+ },
341
+ searchTerm: {
342
+ classPropertyName: "searchTerm",
343
+ publicName: "searchTerm",
344
+ isSignal: true,
345
+ isRequired: false,
346
+ transformFunction: null
347
+ }
348
+ },
349
+ outputs: {
350
+ searchChange: "searchChange",
351
+ refreshed: "refreshed",
352
+ filtersCleared: "filtersCleared",
353
+ columnSettingsOpened: "columnSettingsOpened",
354
+ pageChange: "pageChange",
355
+ perPageChange: "perPageChange",
356
+ allSelectedChange: "allSelectedChange"
357
+ },
358
+ host: { classAttribute: "rt-dynamic-list" },
359
+ queries: [{
360
+ propertyName: "selectorsTpl",
361
+ first: true,
362
+ predicate: RtDynamicListToolbarSelectorsDirective,
363
+ descendants: true,
364
+ isSignal: true
365
+ }, {
366
+ propertyName: "actionsTpl",
367
+ first: true,
368
+ predicate: RtDynamicListToolbarActionsDirective,
369
+ descendants: true,
370
+ isSignal: true
371
+ }],
372
+ ngImport: i0,
373
+ template: "<ng-container rtBlock=\"rt-dynamic-list\">\n @if (loading()) {\n <div rtElem=\"loader\" qa-dataid=\"dynamic-list-loader\">\n <rt-spinner />\n </div>\n } @else {\n @if (fetching()) {\n <div rtElem=\"veil\" qa-dataid=\"dynamic-list-veil\">\n <rt-spinner />\n </div>\n }\n\n @if (isToolbarShown()) {\n <div rtElem=\"toolbar\" qa-dataid=\"dynamic-list-toolbar\">\n @if (selectable() || selectorsTpl()) {\n <div rtElem=\"selectors\" qa-dataid=\"dynamic-list-selectors\">\n @if (selectable()) {\n <rt-checkbox\n qa-dataid=\"dynamic-list-select-all\"\n [ariaLabel]=\"t().uiSelectAll\"\n [ngModel]=\"allSelected()\"\n [indeterminate]=\"!allSelected() && someSelected()\"\n [disabled]=\"selectAllDisabled()\"\n (ngModelChange)=\"onSelectAll($event)\" />\n\n @if (selectedCount()) {\n <span rtElem=\"counter\" qa-dataid=\"dynamic-list-selected-count\">\n {{ selectedLabel() }}\n </span>\n }\n }\n\n @if (selectorsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n </div>\n }\n\n <div rtElem=\"right\" qa-dataid=\"dynamic-list-right\">\n <div rtElem=\"actions\">\n @if (actionsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n\n @if (showClearFilters()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-clear-filters\"\n icon=\"filter-slash\"\n size=\"sm\"\n [ariaLabel]=\"t().uiClearFilters\"\n [tooltip]=\"t().uiClearFilters\"\n [disabled]=\"!filtered()\"\n (clicked)=\"onClearFilters()\" />\n }\n\n @if (showRefresh()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-refresh\"\n icon=\"refresh\"\n size=\"sm\"\n [ariaLabel]=\"t().uiRefresh\"\n [tooltip]=\"t().uiRefresh\"\n (clicked)=\"refreshed.emit()\" />\n }\n\n @if (showColumnSettings()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-column-settings\"\n icon=\"sliders-v\"\n size=\"sm\"\n [ariaLabel]=\"t().uiColumnSettings\"\n [tooltip]=\"t().uiColumnSettings\"\n (clicked)=\"columnSettingsOpened.emit()\" />\n }\n </div>\n\n @if (showSearch()) {\n <div rtElem=\"search\">\n <rt-input\n qa-dataid=\"dynamic-list-search\"\n iconLeft=\"search\"\n [placeholder]=\"t().uiSearch\"\n [formControl]=\"searchControl\" />\n </div>\n }\n </div>\n </div>\n }\n\n @if (empty()) {\n <rt-empty-state\n rtElem=\"empty\"\n qa-dataid=\"dynamic-list-empty\"\n [icon]=\"emptyIcon()\"\n [title]=\"emptyTitleText()\"\n [description]=\"emptyDescription()\">\n @if (emptyReason() === 'filter') {\n <button\n rtButton\n qa-dataid=\"dynamic-list-empty-clear\"\n type=\"button\"\n icon=\"filter-slash\"\n appearance=\"outlined\"\n size=\"sm\"\n [label]=\"t().uiClearFilters\"\n [attr.aria-label]=\"t().uiClearFilters\"\n (click)=\"onClearFilters()\"></button>\n }\n </rt-empty-state>\n } @else {\n <div rtElem=\"content\" qa-dataid=\"dynamic-list-content\">\n <ng-content />\n </div>\n\n @if (isPaginationShown()) {\n <rt-pagination\n rtElem=\"pagination\"\n qa-dataid=\"dynamic-list-pagination\"\n [pageModel]=\"pageModel()!\"\n [perPageOptions]=\"perPageOptions\"\n [loading]=\"fetching()\"\n (pageChange)=\"pageChange.emit($event)\"\n (perPageChange)=\"perPageChange.emit($event)\" />\n }\n }\n }\n</ng-container>\n",
374
+ styles: ["@layer rt-kit.components{.rt-dynamic-list{--rt-dynamic-list-gap: var(--rt-space-4);--rt-dynamic-list-search-width: var(--rt-size-64);--rt-dynamic-list-veil-bg: var(--rt-color-bg-surface);position:relative;display:flex;flex-direction:column;block-size:100%;gap:var(--rt-dynamic-list-gap);inline-size:100%;min-block-size:0}.rt-dynamic-list__loader{display:flex;flex:1 1 auto;align-items:center;justify-content:center;padding:var(--rt-space-8)}.rt-dynamic-list__veil{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;background-color:color-mix(in srgb,var(--rt-dynamic-list-veil-bg) 60%,transparent);inset:0}.rt-dynamic-list__toolbar{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__selectors{display:flex;flex:0 1 auto;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__counter{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-dynamic-list__right{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__actions{display:flex;flex:0 0 auto;align-items:center;gap:var(--rt-space-1)}.rt-dynamic-list__search{flex:1 1 auto;max-inline-size:var(--rt-dynamic-list-search-width);min-inline-size:0}.rt-dynamic-list__content{display:flex;overflow:auto;flex:1 1 auto;flex-direction:column;isolation:isolate;min-block-size:0}.rt-dynamic-list__empty{flex:1 1 auto}.rt-dynamic-list__pagination{flex:0 0 auto}@media(width<=1080px){.rt-dynamic-list__right{flex-wrap:wrap}.rt-dynamic-list__search{max-inline-size:none}}}\n"],
375
+ dependencies: [
376
+ {
377
+ kind: "directive",
378
+ type: NgTemplateOutlet,
379
+ selector: "[ngTemplateOutlet]",
380
+ inputs: [
381
+ "ngTemplateOutletContext",
382
+ "ngTemplateOutlet",
383
+ "ngTemplateOutletInjector"
384
+ ]
385
+ },
386
+ {
387
+ kind: "ngmodule",
388
+ type: FormsModule
389
+ },
390
+ {
391
+ kind: "directive",
392
+ type: i1.NgControlStatus,
393
+ selector: "[formControlName],[ngModel],[formControl]"
394
+ },
395
+ {
396
+ kind: "directive",
397
+ type: i1.NgModel,
398
+ selector: "[ngModel]:not([formControlName]):not([formControl])",
399
+ inputs: [
400
+ "name",
401
+ "disabled",
402
+ "ngModel",
403
+ "ngModelOptions"
404
+ ],
405
+ outputs: ["ngModelChange"],
406
+ exportAs: ["ngModel"]
407
+ },
408
+ {
409
+ kind: "ngmodule",
410
+ type: ReactiveFormsModule
411
+ },
412
+ {
413
+ kind: "directive",
414
+ type: i1.FormControlDirective,
415
+ selector: "[formControl]",
416
+ inputs: [
417
+ "formControl",
418
+ "disabled",
419
+ "ngModel"
420
+ ],
421
+ outputs: ["ngModelChange"],
422
+ exportAs: ["ngForm"]
423
+ },
424
+ {
425
+ kind: "directive",
426
+ type: RtButtonDirective,
427
+ selector: "button[rtButton], a[rtButton]",
428
+ inputs: [
429
+ "label",
430
+ "icon",
431
+ "iconPos",
432
+ "theme",
433
+ "appearance",
434
+ "size",
435
+ "loading",
436
+ "loadingIcon",
437
+ "loadingLabel",
438
+ "pressed"
439
+ ]
440
+ },
441
+ {
442
+ kind: "component",
443
+ type: RtCheckboxComponent,
444
+ selector: "rt-checkbox",
445
+ inputs: [
446
+ "inputId",
447
+ "ariaLabel",
448
+ "disabled",
449
+ "indeterminate"
450
+ ]
451
+ },
452
+ {
453
+ kind: "component",
454
+ type: RtEmptyStateComponent,
455
+ selector: "rt-empty-state",
456
+ inputs: [
457
+ "icon",
458
+ "glyph",
459
+ "title",
460
+ "description",
461
+ "framed"
462
+ ]
463
+ },
464
+ {
465
+ kind: "component",
466
+ type: RtIconButtonComponent,
467
+ selector: "rt-icon-button",
468
+ inputs: [
469
+ "icon",
470
+ "glyph",
471
+ "ariaLabel",
472
+ "variant",
473
+ "iconColor",
474
+ "iconFill",
475
+ "size",
476
+ "iconSize",
477
+ "type",
478
+ "tooltip",
479
+ "tooltipHideOnClick",
480
+ "tabIndex",
481
+ "loading",
482
+ "disabled",
483
+ "active",
484
+ "expanded",
485
+ "indicator"
486
+ ],
487
+ outputs: ["clicked"]
488
+ },
489
+ {
490
+ kind: "component",
491
+ type: RtInputComponent,
492
+ selector: "rt-input",
493
+ inputs: [
494
+ "appearance",
495
+ "type",
496
+ "placeholder",
497
+ "iconLeft",
498
+ "iconRight",
499
+ "passwordToggle",
500
+ "autocomplete"
501
+ ]
502
+ },
503
+ {
504
+ kind: "component",
505
+ type: RtPaginationComponent,
506
+ selector: "rt-pagination",
507
+ inputs: [
508
+ "pageModel",
509
+ "perPageOptions",
510
+ "prevIcon",
511
+ "nextIcon",
512
+ "numbering",
513
+ "loading"
514
+ ],
515
+ outputs: ["pageChange", "perPageChange"]
516
+ },
517
+ {
518
+ kind: "component",
519
+ type: RtSpinnerComponent,
520
+ selector: "rt-spinner",
521
+ inputs: [
522
+ "diameter",
523
+ "color",
524
+ "appearance",
525
+ "overlay",
526
+ "backdrop",
527
+ "plate"
528
+ ]
529
+ },
530
+ {
531
+ kind: "directive",
532
+ type: BlockDirective,
533
+ selector: "[rtBlock]",
534
+ inputs: ["rtMod"]
535
+ },
536
+ {
537
+ kind: "directive",
538
+ type: ElemDirective,
539
+ selector: "[rtElem]",
540
+ inputs: ["rtMod"]
541
+ }
542
+ ],
543
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
544
+ encapsulation: i0.ViewEncapsulation.None
545
+ });
546
+ }
547
+ };
548
+ i0.ɵɵngDeclareClassMetadata({
549
+ minVersion: "12.0.0",
550
+ version: "22.2.2",
551
+ ngImport: i0,
552
+ type: RtDynamicListComponent,
553
+ decorators: [{
554
+ type: Component,
555
+ args: [{
556
+ selector: "rt-dynamic-list",
557
+ changeDetection: ChangeDetectionStrategy.OnPush,
558
+ encapsulation: ViewEncapsulation.None,
559
+ imports: [
560
+ NgTemplateOutlet,
561
+ FormsModule,
562
+ ReactiveFormsModule,
563
+ RtButtonDirective,
564
+ RtCheckboxComponent,
565
+ RtEmptyStateComponent,
566
+ RtIconButtonComponent,
567
+ RtInputComponent,
568
+ RtPaginationComponent,
569
+ RtSpinnerComponent,
570
+ BlockDirective,
571
+ ElemDirective
572
+ ],
573
+ host: { class: BEM_BLOCK },
574
+ template: "<ng-container rtBlock=\"rt-dynamic-list\">\n @if (loading()) {\n <div rtElem=\"loader\" qa-dataid=\"dynamic-list-loader\">\n <rt-spinner />\n </div>\n } @else {\n @if (fetching()) {\n <div rtElem=\"veil\" qa-dataid=\"dynamic-list-veil\">\n <rt-spinner />\n </div>\n }\n\n @if (isToolbarShown()) {\n <div rtElem=\"toolbar\" qa-dataid=\"dynamic-list-toolbar\">\n @if (selectable() || selectorsTpl()) {\n <div rtElem=\"selectors\" qa-dataid=\"dynamic-list-selectors\">\n @if (selectable()) {\n <rt-checkbox\n qa-dataid=\"dynamic-list-select-all\"\n [ariaLabel]=\"t().uiSelectAll\"\n [ngModel]=\"allSelected()\"\n [indeterminate]=\"!allSelected() && someSelected()\"\n [disabled]=\"selectAllDisabled()\"\n (ngModelChange)=\"onSelectAll($event)\" />\n\n @if (selectedCount()) {\n <span rtElem=\"counter\" qa-dataid=\"dynamic-list-selected-count\">\n {{ selectedLabel() }}\n </span>\n }\n }\n\n @if (selectorsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n </div>\n }\n\n <div rtElem=\"right\" qa-dataid=\"dynamic-list-right\">\n <div rtElem=\"actions\">\n @if (actionsTpl(); as tpl) {\n <ng-container [ngTemplateOutlet]=\"tpl.templateRef\" />\n }\n\n @if (showClearFilters()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-clear-filters\"\n icon=\"filter-slash\"\n size=\"sm\"\n [ariaLabel]=\"t().uiClearFilters\"\n [tooltip]=\"t().uiClearFilters\"\n [disabled]=\"!filtered()\"\n (clicked)=\"onClearFilters()\" />\n }\n\n @if (showRefresh()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-refresh\"\n icon=\"refresh\"\n size=\"sm\"\n [ariaLabel]=\"t().uiRefresh\"\n [tooltip]=\"t().uiRefresh\"\n (clicked)=\"refreshed.emit()\" />\n }\n\n @if (showColumnSettings()) {\n <rt-icon-button\n qa-dataid=\"dynamic-list-column-settings\"\n icon=\"sliders-v\"\n size=\"sm\"\n [ariaLabel]=\"t().uiColumnSettings\"\n [tooltip]=\"t().uiColumnSettings\"\n (clicked)=\"columnSettingsOpened.emit()\" />\n }\n </div>\n\n @if (showSearch()) {\n <div rtElem=\"search\">\n <rt-input\n qa-dataid=\"dynamic-list-search\"\n iconLeft=\"search\"\n [placeholder]=\"t().uiSearch\"\n [formControl]=\"searchControl\" />\n </div>\n }\n </div>\n </div>\n }\n\n @if (empty()) {\n <rt-empty-state\n rtElem=\"empty\"\n qa-dataid=\"dynamic-list-empty\"\n [icon]=\"emptyIcon()\"\n [title]=\"emptyTitleText()\"\n [description]=\"emptyDescription()\">\n @if (emptyReason() === 'filter') {\n <button\n rtButton\n qa-dataid=\"dynamic-list-empty-clear\"\n type=\"button\"\n icon=\"filter-slash\"\n appearance=\"outlined\"\n size=\"sm\"\n [label]=\"t().uiClearFilters\"\n [attr.aria-label]=\"t().uiClearFilters\"\n (click)=\"onClearFilters()\"></button>\n }\n </rt-empty-state>\n } @else {\n <div rtElem=\"content\" qa-dataid=\"dynamic-list-content\">\n <ng-content />\n </div>\n\n @if (isPaginationShown()) {\n <rt-pagination\n rtElem=\"pagination\"\n qa-dataid=\"dynamic-list-pagination\"\n [pageModel]=\"pageModel()!\"\n [perPageOptions]=\"perPageOptions\"\n [loading]=\"fetching()\"\n (pageChange)=\"pageChange.emit($event)\"\n (perPageChange)=\"perPageChange.emit($event)\" />\n }\n }\n }\n</ng-container>\n",
575
+ styles: ["@layer rt-kit.components{.rt-dynamic-list{--rt-dynamic-list-gap: var(--rt-space-4);--rt-dynamic-list-search-width: var(--rt-size-64);--rt-dynamic-list-veil-bg: var(--rt-color-bg-surface);position:relative;display:flex;flex-direction:column;block-size:100%;gap:var(--rt-dynamic-list-gap);inline-size:100%;min-block-size:0}.rt-dynamic-list__loader{display:flex;flex:1 1 auto;align-items:center;justify-content:center;padding:var(--rt-space-8)}.rt-dynamic-list__veil{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;background-color:color-mix(in srgb,var(--rt-dynamic-list-veil-bg) 60%,transparent);inset:0}.rt-dynamic-list__toolbar{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__selectors{display:flex;flex:0 1 auto;align-items:center;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__counter{color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-dynamic-list__right{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--rt-space-2);min-inline-size:0}.rt-dynamic-list__actions{display:flex;flex:0 0 auto;align-items:center;gap:var(--rt-space-1)}.rt-dynamic-list__search{flex:1 1 auto;max-inline-size:var(--rt-dynamic-list-search-width);min-inline-size:0}.rt-dynamic-list__content{display:flex;overflow:auto;flex:1 1 auto;flex-direction:column;isolation:isolate;min-block-size:0}.rt-dynamic-list__empty{flex:1 1 auto}.rt-dynamic-list__pagination{flex:0 0 auto}@media(width<=1080px){.rt-dynamic-list__right{flex-wrap:wrap}.rt-dynamic-list__search{max-inline-size:none}}}\n"]
576
+ }]
577
+ }],
578
+ ctorParameters: () => [],
579
+ propDecorators: {
580
+ selectorsTpl: [{
581
+ type: i0.ContentChild,
582
+ args: [i0.forwardRef(() => RtDynamicListToolbarSelectorsDirective), { isSignal: true }]
583
+ }],
584
+ actionsTpl: [{
585
+ type: i0.ContentChild,
586
+ args: [i0.forwardRef(() => RtDynamicListToolbarActionsDirective), { isSignal: true }]
587
+ }],
588
+ pageModel: [{
589
+ type: i0.Input,
590
+ args: [{
591
+ isSignal: true,
592
+ alias: "pageModel",
593
+ required: false
594
+ }]
595
+ }],
596
+ loading: [{
597
+ type: i0.Input,
598
+ args: [{
599
+ isSignal: true,
600
+ alias: "loading",
601
+ required: false
602
+ }]
603
+ }],
604
+ fetching: [{
605
+ type: i0.Input,
606
+ args: [{
607
+ isSignal: true,
608
+ alias: "fetching",
609
+ required: false
610
+ }]
611
+ }],
612
+ empty: [{
613
+ type: i0.Input,
614
+ args: [{
615
+ isSignal: true,
616
+ alias: "empty",
617
+ required: false
618
+ }]
619
+ }],
620
+ filtered: [{
621
+ type: i0.Input,
622
+ args: [{
623
+ isSignal: true,
624
+ alias: "filtered",
625
+ required: false
626
+ }]
627
+ }],
628
+ showClearFilters: [{
629
+ type: i0.Input,
630
+ args: [{
631
+ isSignal: true,
632
+ alias: "showClearFilters",
633
+ required: false
634
+ }]
635
+ }],
636
+ showRefresh: [{
637
+ type: i0.Input,
638
+ args: [{
639
+ isSignal: true,
640
+ alias: "showRefresh",
641
+ required: false
642
+ }]
643
+ }],
644
+ showColumnSettings: [{
645
+ type: i0.Input,
646
+ args: [{
647
+ isSignal: true,
648
+ alias: "showColumnSettings",
649
+ required: false
650
+ }]
651
+ }],
652
+ showSearch: [{
653
+ type: i0.Input,
654
+ args: [{
655
+ isSignal: true,
656
+ alias: "showSearch",
657
+ required: false
658
+ }]
659
+ }],
660
+ selectable: [{
661
+ type: i0.Input,
662
+ args: [{
663
+ isSignal: true,
664
+ alias: "selectable",
665
+ required: false
666
+ }]
667
+ }],
668
+ allSelected: [{
669
+ type: i0.Input,
670
+ args: [{
671
+ isSignal: true,
672
+ alias: "allSelected",
673
+ required: false
674
+ }]
675
+ }],
676
+ someSelected: [{
677
+ type: i0.Input,
678
+ args: [{
679
+ isSignal: true,
680
+ alias: "someSelected",
681
+ required: false
682
+ }]
683
+ }],
684
+ selectAllDisabled: [{
685
+ type: i0.Input,
686
+ args: [{
687
+ isSignal: true,
688
+ alias: "selectAllDisabled",
689
+ required: false
690
+ }]
691
+ }],
692
+ selectedCount: [{
693
+ type: i0.Input,
694
+ args: [{
695
+ isSignal: true,
696
+ alias: "selectedCount",
697
+ required: false
698
+ }]
699
+ }],
700
+ emptyTitle: [{
701
+ type: i0.Input,
702
+ args: [{
703
+ isSignal: true,
704
+ alias: "emptyTitle",
705
+ required: false
706
+ }]
707
+ }],
708
+ emptyDescription: [{
709
+ type: i0.Input,
710
+ args: [{
711
+ isSignal: true,
712
+ alias: "emptyDescription",
713
+ required: false
714
+ }]
715
+ }],
716
+ searchTerm: [{
717
+ type: i0.Input,
718
+ args: [{
719
+ isSignal: true,
720
+ alias: "searchTerm",
721
+ required: false
722
+ }]
723
+ }],
724
+ searchChange: [{
725
+ type: i0.Output,
726
+ args: ["searchChange"]
727
+ }],
728
+ refreshed: [{
729
+ type: i0.Output,
730
+ args: ["refreshed"]
731
+ }],
732
+ filtersCleared: [{
733
+ type: i0.Output,
734
+ args: ["filtersCleared"]
735
+ }],
736
+ columnSettingsOpened: [{
737
+ type: i0.Output,
738
+ args: ["columnSettingsOpened"]
739
+ }],
740
+ pageChange: [{
741
+ type: i0.Output,
742
+ args: ["pageChange"]
743
+ }],
744
+ perPageChange: [{
745
+ type: i0.Output,
746
+ args: ["perPageChange"]
747
+ }],
748
+ allSelectedChange: [{
749
+ type: i0.Output,
750
+ args: ["allSelectedChange"]
751
+ }]
752
+ }
753
+ });
259
754
  export { RtDynamicListComponent, RtDynamicListToolbarActionsDirective, RtDynamicListToolbarSelectorsDirective };
260
- //# sourceMappingURL=rt-tools-ui-kit-v2-dynamic-list.mjs.map
755
+
756
+ //# sourceMappingURL=rt-tools-ui-kit-v2-dynamic-list.mjs.map