@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 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-image-upload.mjs","sources":["../../../projects/ui-kit-v2/src/lib/components/image-upload/rt-image-upload.logic.ts","../../../projects/ui-kit-v2/src/lib/components/image-upload/rt-image-upload.component.ts","../../../projects/ui-kit-v2/src/lib/components/image-upload/rt-image-upload.component.html","../../../projects/ui-kit-v2/src/lib/components/image-upload/rt-tools-ui-kit-v2-image-upload.ts"],"sourcesContent":["import { IRtImageUpload } from './rt-image-upload.model';\n\n/**\n * Какое состояние занимает место. Загрузка приложения важнее всего, выбранный исходник важнее\n * картинки, картинка важнее зоны загрузки.\n */\nexport function uploadState(loading: boolean, hasSource: boolean, image: string | null): IRtImageUpload.State {\n if (loading) {\n return 'loading';\n }\n if (hasSource) {\n return 'cropping';\n }\n return image ? 'image' : 'empty';\n}\n\n/** Берётся только файл изображения: брошенный файл другого типа загрузчик пропускает */\nexport function isImageFile(file: File | null | undefined): file is File {\n return !!file && file.type.startsWith('image/');\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n linkedSignal,\n numberAttribute,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n viewChild,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective, ModDirective, WINDOW } from '@rt-tools/core';\n\nimport { RT_KIT_LABELS, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';\nimport { IButton } from '@rt-tools/ui-kit-v2/core';\nimport { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';\nimport { RtEmptyStateComponent } from '@rt-tools/ui-kit-v2/empty-state';\nimport { RtFileDropComponent } from '@rt-tools/ui-kit-v2/file-drop';\nimport { IRtIcon } from '@rt-tools/ui-kit-v2/core';\nimport { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';\nimport { IRtImageCropper, RT_IMAGE_CROPPER_QUALITY, RtImageCropperComponent } from '@rt-tools/ui-kit-v2/image-cropper';\nimport { TRtRadius } from '@rt-tools/ui-kit-v2/core';\nimport { RtSpinnerComponent } from '@rt-tools/ui-kit-v2/spinner';\nimport { RtTooltipDirective } from '@rt-tools/ui-kit-v2/tooltip';\nimport { isImageFile, uploadState } from './rt-image-upload.logic';\nimport { IRtImageUpload } from './rt-image-upload.model';\n\nconst BEM_BLOCK: string = 'rt-image-upload';\n\n/**\n * Загрузчик одного изображения: одно место, в котором по очереди стоят зона загрузки, обрезка и\n * сама картинка. Файл выбирают кнопкой зоны или бросают на неё; выбранный открывает обрезку, а\n * «Применить» ставит результат на место картинки и отдаёт файл приложению. Нажатие на картинку\n * выбирает другой файл.\n *\n * Картинка — адрес: приложение даёт свой, а адрес применённого файла загрузчик делает сам и\n * отпускает его, когда картинку сменили или компонент ушёл. Файл приложение получает в\n * `imageChanged`.\n */\n@Component({\n selector: 'rt-image-upload',\n templateUrl: './rt-image-upload.component.html',\n styleUrl: './rt-image-upload.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtButtonDirective,\n RtTooltipDirective,\n\n // components\n RtEmptyStateComponent,\n RtFileDropComponent,\n RtIconButtonComponent,\n RtImageCropperComponent,\n RtSpinnerComponent,\n ],\n host: {\n class: BEM_BLOCK,\n '[class.rt-image-upload--disabled]': 'disabled()',\n },\n})\nexport class RtImageUploadComponent {\n readonly #window: Window & typeof globalThis = inject(WINDOW) as Window & typeof globalThis;\n\n readonly #document: Document = inject(DOCUMENT);\n\n /** Адрес, сделанный загрузчиком под применённый файл: его и только его он отпускает */\n #ownUrl: string | null = null;\n\n protected readonly picker: Signal<ElementRef<HTMLInputElement>> = viewChild.required<ElementRef<HTMLInputElement>>('picker');\n\n protected readonly t: Signal<TRtKitLabelMap> = inject(RT_KIT_LABELS);\n\n /** Выбранный файл, который сейчас режет обрезка */\n protected readonly source: WritableSignal<File | null> = signal(null);\n\n /** Последний результат обрезки — его берёт «Применить» */\n protected readonly result: WritableSignal<IRtImageCropper.Result | null> = signal(null);\n\n /** Что сейчас стоит в месте загрузчика */\n protected readonly state: Signal<IRtImageUpload.State> = computed((): IRtImageUpload.State =>\n uploadState(this.loading(), this.source() !== null, this.image())\n );\n\n /** Подсказка над картинкой: своя приложения или подпись кита */\n protected readonly hint: Signal<string> = computed((): string => this.tooltip() || this.t().uiImageUploadChange);\n\n /** Круглая ли кнопка скачивания: подложка под размытием повторяет её скругление */\n protected readonly downloadRound: Signal<boolean> = computed((): boolean => this.downloadShape() === 'circle');\n\n /** Шаг скругления кнопки скачивания: круг — полный шаг, квадрат — скругление кнопки по умолчанию */\n protected readonly downloadRadius: Signal<TRtRadius | null> = computed((): TRtRadius | null => (this.downloadRound() ? 'full' : null));\n\n /**\n * Адрес текущей картинки: данный приложением или сделанный под применённый файл. Новый адрес от\n * приложения снова берёт верх над применённым.\n */\n protected readonly image: WritableSignal<string | null> = linkedSignal((): string | null => this.imageUrl());\n\n /** Адрес картинки от приложения */\n public readonly imageUrl: InputSignal<string | null> = input<string | null>(null);\n\n /** Имя файла, под которым картинку скачивают и отдают приложению */\n public readonly fileName: InputSignal<string> = input<string>('image');\n\n /** Подсказка над картинкой; пустая — подпись кита */\n public readonly tooltip: InputSignal<string> = input<string>('');\n\n /** Кнопка скачивания рядом с картинкой */\n public readonly downloadable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Форма кнопки скачивания; она заходит за правый верхний угол картинки при любой форме */\n public readonly downloadShape: InputSignal<IRtImageUpload.DownloadShape> = input<IRtImageUpload.DownloadShape>('circle');\n\n /** Размер значка кнопки скачивания; пусто — от размера кнопки */\n public readonly downloadIconSize: InputSignal<IRtIcon.Size | null> = input<IRtIcon.Size | null>(null);\n\n /** Вид кнопки выбора файла в пустом загрузчике */\n public readonly chooseAppearance: InputSignal<IButton.Appearance> = input<IButton.Appearance>('outlined');\n\n /** Значок кнопки выбора файла; пусто — кнопка без значка */\n public readonly chooseIcon: InputSignal<string | null> = input<string | null>('ico-upload');\n\n /** Без кнопок «Отмена» и «Применить»: каждый результат обрезки применяется сразу */\n public readonly autoApply: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Приложение загружает картинку: на месте стоит индикатор */\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Недоступный загрузчик не берёт файлов и не отзывается на нажатие картинки */\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Соотношение рамки обрезки; пусто — свободная рамка */\n public readonly ratio: InputSignalWithTransform<number | null, NumberInput> = input<number | null, NumberInput>(null, {\n transform: (value: NumberInput): number | null => (value === null || value === '' ? null : numberAttribute(value, 0) || null),\n });\n\n /** Круглая маска обрезки для аватара */\n public readonly round: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Формат результата; пусто — формат исходника */\n public readonly format: InputSignal<IRtImageCropper.Format | null> = input<IRtImageCropper.Format | null>(null);\n\n /** Качество результата, от 0 до 100 */\n public readonly quality: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(RT_IMAGE_CROPPER_QUALITY, {\n transform: (value: NumberInput): number => numberAttribute(value, RT_IMAGE_CROPPER_QUALITY),\n });\n\n /** Применённый файл — его приложение отправляет, куда ему надо */\n public readonly imageChanged: OutputEmitterRef<File> = output<File>();\n\n /** Картинку скачали */\n public readonly downloaded: OutputEmitterRef<void> = output<void>();\n\n constructor() {\n inject(DestroyRef).onDestroy((): void => this.#release());\n }\n\n /** Открывает выбор файла, если загрузчик доступен */\n public pick(): void {\n if (!this.disabled()) {\n this.picker().nativeElement.click();\n }\n }\n\n /** Файл выбран кнопкой или брошен: изображение открывает обрезку, остальное пропускается */\n public choose(file: File | null | undefined): void {\n if (this.disabled() || !isImageFile(file)) {\n return;\n }\n this.result.set(null);\n this.source.set(file);\n }\n\n protected onPicked(event: Event): void {\n const input: HTMLInputElement = event.target as HTMLInputElement;\n this.choose(input.files?.[0]);\n // Тот же файл, выбранный второй раз, иначе не даёт события\n input.value = '';\n }\n\n protected onSpace(event: Event): void {\n event.preventDefault();\n this.pick();\n }\n\n protected onCropped(result: IRtImageCropper.Result): void {\n this.result.set(result);\n if (this.autoApply()) {\n this.#applyResult(result, false);\n }\n }\n\n protected apply(): void {\n const result: IRtImageCropper.Result | null = this.result();\n if (result !== null) {\n this.#applyResult(result, true);\n }\n }\n\n protected cancel(): void {\n this.source.set(null);\n this.result.set(null);\n }\n\n protected download(): void {\n const url: string | null = this.image();\n if (url === null) {\n return;\n }\n const link: HTMLAnchorElement = this.#document.createElement('a');\n link.href = url;\n link.download = this.fileName();\n this.#document.body.appendChild(link);\n link.click();\n link.remove();\n this.downloaded.emit();\n }\n\n /** Результат становится картинкой; `close` убирает обрезку — при автоприменении она остаётся */\n #applyResult(result: IRtImageCropper.Result, close: boolean): void {\n const file: File = new File([result.file], this.fileName(), { type: result.file.type });\n this.#release();\n this.#ownUrl = this.#window.URL.createObjectURL(file);\n this.image.set(this.#ownUrl);\n this.imageChanged.emit(file);\n if (close) {\n this.cancel();\n }\n }\n\n #release(): void {\n if (this.#ownUrl !== null) {\n this.#window.URL.revokeObjectURL(this.#ownUrl);\n this.#ownUrl = null;\n }\n }\n}\n","<ng-container rtBlock=\"rt-image-upload\">\n <input\n #picker\n hidden\n type=\"file\"\n accept=\"image/*\"\n qa-dataid=\"image-upload-native\"\n [disabled]=\"disabled()\"\n (change)=\"onPicked($event)\" />\n\n @switch (state()) {\n @case ('loading') {\n <div rtElem=\"loading\" qa-dataid=\"image-upload-loading\">\n <rt-spinner />\n </div>\n }\n @case ('cropping') {\n <rt-image-cropper\n qa-dataid=\"image-upload-cropper\"\n [file]=\"source()\"\n [ratio]=\"ratio()\"\n [round]=\"round()\"\n [format]=\"format()\"\n [quality]=\"quality()\"\n (cropped)=\"onCropped($event)\"\n (loadFailed)=\"cancel()\" />\n\n @if (!autoApply()) {\n <div rtElem=\"actions\">\n <button\n rtButton\n appearance=\"text\"\n type=\"button\"\n qa-dataid=\"image-upload-cancel\"\n [label]=\"t().uiImageUploadCancel\"\n [attr.aria-label]=\"t().uiImageUploadCancel\"\n (click)=\"cancel()\"></button>\n <button\n rtButton\n type=\"button\"\n qa-dataid=\"image-upload-apply\"\n [label]=\"t().uiImageUploadApply\"\n [attr.aria-label]=\"t().uiImageUploadApply\"\n [disabled]=\"!result()\"\n (click)=\"apply()\"></button>\n </div>\n }\n }\n @case ('image') {\n <rt-file-drop accept=\"image/*\" [disabled]=\"disabled()\" (filesDropped)=\"choose($event[0])\">\n <div rtElem=\"preview\">\n <img\n rtElem=\"image\"\n role=\"button\"\n qa-dataid=\"image-upload-image\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.alt]=\"t().uiImageUploadImage\"\n [rtTooltip]=\"disabled() ? '' : hint()\"\n [rtMod]=\"{ active: !disabled() }\"\n [src]=\"image()\"\n (click)=\"pick()\"\n (keydown.enter)=\"pick()\"\n (keydown.space)=\"onSpace($event)\" />\n\n @if (downloadable()) {\n <rt-icon-button\n rtElem=\"download\"\n icon=\"ico-download\"\n qa-dataid=\"image-upload-download\"\n [radius]=\"downloadRadius()\"\n [iconSize]=\"downloadIconSize()\"\n [rtMod]=\"{ round: downloadRound() }\"\n [ariaLabel]=\"t().uiDownload\"\n [tooltip]=\"t().uiDownload\"\n (click)=\"download()\" />\n }\n </div>\n </rt-file-drop>\n }\n @default {\n <rt-file-drop accept=\"image/*\" qa-dataid=\"image-upload-drop\" [disabled]=\"disabled()\" (filesDropped)=\"choose($event[0])\">\n <rt-empty-state framed icon=\"cloud-upload\" [title]=\"t().uiImageUploadDrop\">\n <button\n rtButton\n type=\"button\"\n qa-dataid=\"image-upload-choose\"\n [appearance]=\"chooseAppearance()\"\n [icon]=\"chooseIcon()\"\n [label]=\"t().uiImageUploadChoose\"\n [attr.aria-label]=\"t().uiImageUploadChoose\"\n [disabled]=\"disabled()\"\n (click)=\"pick()\"></button>\n </rt-empty-state>\n </rt-file-drop>\n }\n }\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-image-upload.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/image-upload/rt-image-upload.logic.ts","../../../projects/ui-kit-v2/src/lib/components/image-upload/rt-image-upload.component.ts","../../../projects/ui-kit-v2/src/lib/components/image-upload/rt-image-upload.component.html"],"sourcesContent":["import { IRtImageUpload } from './rt-image-upload.model';\n\n/**\n * Какое состояние занимает место. Загрузка приложения важнее всего, выбранный исходник важнее\n * картинки, картинка важнее зоны загрузки.\n */\nexport function uploadState(loading: boolean, hasSource: boolean, image: string | null): IRtImageUpload.State {\n if (loading) {\n return 'loading';\n }\n if (hasSource) {\n return 'cropping';\n }\n return image ? 'image' : 'empty';\n}\n\n/** Берётся только файл изображения: брошенный файл другого типа загрузчик пропускает */\nexport function isImageFile(file: File | null | undefined): file is File {\n return !!file && file.type.startsWith('image/');\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { DOCUMENT } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n linkedSignal,\n numberAttribute,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n viewChild,\n ViewEncapsulation,\n WritableSignal,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective, ModDirective, WINDOW } from '@rt-tools/core';\n\nimport { RT_KIT_LABELS, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';\nimport { IButton } from '@rt-tools/ui-kit-v2/core';\nimport { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';\nimport { RtEmptyStateComponent } from '@rt-tools/ui-kit-v2/empty-state';\nimport { RtFileDropComponent } from '@rt-tools/ui-kit-v2/file-drop';\nimport { IRtIcon } from '@rt-tools/ui-kit-v2/core';\nimport { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';\nimport { IRtImageCropper, RT_IMAGE_CROPPER_QUALITY, RtImageCropperComponent } from '@rt-tools/ui-kit-v2/image-cropper';\nimport { TRtRadius } from '@rt-tools/ui-kit-v2/core';\nimport { RtSpinnerComponent } from '@rt-tools/ui-kit-v2/spinner';\nimport { RtTooltipDirective } from '@rt-tools/ui-kit-v2/tooltip';\nimport { isImageFile, uploadState } from './rt-image-upload.logic';\nimport { IRtImageUpload } from './rt-image-upload.model';\n\nconst BEM_BLOCK: string = 'rt-image-upload';\n\n/**\n * Загрузчик одного изображения: одно место, в котором по очереди стоят зона загрузки, обрезка и\n * сама картинка. Файл выбирают кнопкой зоны или бросают на неё; выбранный открывает обрезку, а\n * «Применить» ставит результат на место картинки и отдаёт файл приложению. Нажатие на картинку\n * выбирает другой файл.\n *\n * Картинка — адрес: приложение даёт свой, а адрес применённого файла загрузчик делает сам и\n * отпускает его, когда картинку сменили или компонент ушёл. Файл приложение получает в\n * `imageChanged`.\n */\n@Component({\n selector: 'rt-image-upload',\n templateUrl: './rt-image-upload.component.html',\n styleUrl: './rt-image-upload.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // directives\n BlockDirective,\n ElemDirective,\n ModDirective,\n RtButtonDirective,\n RtTooltipDirective,\n\n // components\n RtEmptyStateComponent,\n RtFileDropComponent,\n RtIconButtonComponent,\n RtImageCropperComponent,\n RtSpinnerComponent,\n ],\n host: {\n class: BEM_BLOCK,\n '[class.rt-image-upload--disabled]': 'disabled()',\n },\n})\nexport class RtImageUploadComponent {\n readonly #window: Window & typeof globalThis = inject(WINDOW) as Window & typeof globalThis;\n\n readonly #document: Document = inject(DOCUMENT);\n\n /** Адрес, сделанный загрузчиком под применённый файл: его и только его он отпускает */\n #ownUrl: string | null = null;\n\n protected readonly picker: Signal<ElementRef<HTMLInputElement>> = viewChild.required<ElementRef<HTMLInputElement>>('picker');\n\n protected readonly t: Signal<TRtKitLabelMap> = inject(RT_KIT_LABELS);\n\n /** Выбранный файл, который сейчас режет обрезка */\n protected readonly source: WritableSignal<File | null> = signal(null);\n\n /** Последний результат обрезки — его берёт «Применить» */\n protected readonly result: WritableSignal<IRtImageCropper.Result | null> = signal(null);\n\n /** Что сейчас стоит в месте загрузчика */\n protected readonly state: Signal<IRtImageUpload.State> = computed((): IRtImageUpload.State =>\n uploadState(this.loading(), this.source() !== null, this.image())\n );\n\n /** Подсказка над картинкой: своя приложения или подпись кита */\n protected readonly hint: Signal<string> = computed((): string => this.tooltip() || this.t().uiImageUploadChange);\n\n /** Круглая ли кнопка скачивания: подложка под размытием повторяет её скругление */\n protected readonly downloadRound: Signal<boolean> = computed((): boolean => this.downloadShape() === 'circle');\n\n /** Шаг скругления кнопки скачивания: круг — полный шаг, квадрат — скругление кнопки по умолчанию */\n protected readonly downloadRadius: Signal<TRtRadius | null> = computed((): TRtRadius | null => (this.downloadRound() ? 'full' : null));\n\n /**\n * Адрес текущей картинки: данный приложением или сделанный под применённый файл. Новый адрес от\n * приложения снова берёт верх над применённым.\n */\n protected readonly image: WritableSignal<string | null> = linkedSignal((): string | null => this.imageUrl());\n\n /** Адрес картинки от приложения */\n public readonly imageUrl: InputSignal<string | null> = input<string | null>(null);\n\n /** Имя файла, под которым картинку скачивают и отдают приложению */\n public readonly fileName: InputSignal<string> = input<string>('image');\n\n /** Подсказка над картинкой; пустая — подпись кита */\n public readonly tooltip: InputSignal<string> = input<string>('');\n\n /** Кнопка скачивания рядом с картинкой */\n public readonly downloadable: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Форма кнопки скачивания; она заходит за правый верхний угол картинки при любой форме */\n public readonly downloadShape: InputSignal<IRtImageUpload.DownloadShape> = input<IRtImageUpload.DownloadShape>('circle');\n\n /** Размер значка кнопки скачивания; пусто — от размера кнопки */\n public readonly downloadIconSize: InputSignal<IRtIcon.Size | null> = input<IRtIcon.Size | null>(null);\n\n /** Вид кнопки выбора файла в пустом загрузчике */\n public readonly chooseAppearance: InputSignal<IButton.Appearance> = input<IButton.Appearance>('outlined');\n\n /** Значок кнопки выбора файла; пусто — кнопка без значка */\n public readonly chooseIcon: InputSignal<string | null> = input<string | null>('ico-upload');\n\n /** Без кнопок «Отмена» и «Применить»: каждый результат обрезки применяется сразу */\n public readonly autoApply: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Приложение загружает картинку: на месте стоит индикатор */\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Недоступный загрузчик не берёт файлов и не отзывается на нажатие картинки */\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Соотношение рамки обрезки; пусто — свободная рамка */\n public readonly ratio: InputSignalWithTransform<number | null, NumberInput> = input<number | null, NumberInput>(null, {\n transform: (value: NumberInput): number | null => (value === null || value === '' ? null : numberAttribute(value, 0) || null),\n });\n\n /** Круглая маска обрезки для аватара */\n public readonly round: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Формат результата; пусто — формат исходника */\n public readonly format: InputSignal<IRtImageCropper.Format | null> = input<IRtImageCropper.Format | null>(null);\n\n /** Качество результата, от 0 до 100 */\n public readonly quality: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(RT_IMAGE_CROPPER_QUALITY, {\n transform: (value: NumberInput): number => numberAttribute(value, RT_IMAGE_CROPPER_QUALITY),\n });\n\n /** Применённый файл — его приложение отправляет, куда ему надо */\n public readonly imageChanged: OutputEmitterRef<File> = output<File>();\n\n /** Картинку скачали */\n public readonly downloaded: OutputEmitterRef<void> = output<void>();\n\n constructor() {\n inject(DestroyRef).onDestroy((): void => this.#release());\n }\n\n /** Открывает выбор файла, если загрузчик доступен */\n public pick(): void {\n if (!this.disabled()) {\n this.picker().nativeElement.click();\n }\n }\n\n /** Файл выбран кнопкой или брошен: изображение открывает обрезку, остальное пропускается */\n public choose(file: File | null | undefined): void {\n if (this.disabled() || !isImageFile(file)) {\n return;\n }\n this.result.set(null);\n this.source.set(file);\n }\n\n protected onPicked(event: Event): void {\n const input: HTMLInputElement = event.target as HTMLInputElement;\n this.choose(input.files?.[0]);\n // Тот же файл, выбранный второй раз, иначе не даёт события\n input.value = '';\n }\n\n protected onSpace(event: Event): void {\n event.preventDefault();\n this.pick();\n }\n\n protected onCropped(result: IRtImageCropper.Result): void {\n this.result.set(result);\n if (this.autoApply()) {\n this.#applyResult(result, false);\n }\n }\n\n protected apply(): void {\n const result: IRtImageCropper.Result | null = this.result();\n if (result !== null) {\n this.#applyResult(result, true);\n }\n }\n\n protected cancel(): void {\n this.source.set(null);\n this.result.set(null);\n }\n\n protected download(): void {\n const url: string | null = this.image();\n if (url === null) {\n return;\n }\n const link: HTMLAnchorElement = this.#document.createElement('a');\n link.href = url;\n link.download = this.fileName();\n this.#document.body.appendChild(link);\n link.click();\n link.remove();\n this.downloaded.emit();\n }\n\n /** Результат становится картинкой; `close` убирает обрезку — при автоприменении она остаётся */\n #applyResult(result: IRtImageCropper.Result, close: boolean): void {\n const file: File = new File([result.file], this.fileName(), { type: result.file.type });\n this.#release();\n this.#ownUrl = this.#window.URL.createObjectURL(file);\n this.image.set(this.#ownUrl);\n this.imageChanged.emit(file);\n if (close) {\n this.cancel();\n }\n }\n\n #release(): void {\n if (this.#ownUrl !== null) {\n this.#window.URL.revokeObjectURL(this.#ownUrl);\n this.#ownUrl = null;\n }\n }\n}\n","<ng-container rtBlock=\"rt-image-upload\">\n <input\n #picker\n hidden\n type=\"file\"\n accept=\"image/*\"\n qa-dataid=\"image-upload-native\"\n [disabled]=\"disabled()\"\n (change)=\"onPicked($event)\" />\n\n @switch (state()) {\n @case ('loading') {\n <div rtElem=\"loading\" qa-dataid=\"image-upload-loading\">\n <rt-spinner />\n </div>\n }\n @case ('cropping') {\n <rt-image-cropper\n qa-dataid=\"image-upload-cropper\"\n [file]=\"source()\"\n [ratio]=\"ratio()\"\n [round]=\"round()\"\n [format]=\"format()\"\n [quality]=\"quality()\"\n (cropped)=\"onCropped($event)\"\n (loadFailed)=\"cancel()\" />\n\n @if (!autoApply()) {\n <div rtElem=\"actions\">\n <button\n rtButton\n appearance=\"text\"\n type=\"button\"\n qa-dataid=\"image-upload-cancel\"\n [label]=\"t().uiImageUploadCancel\"\n [attr.aria-label]=\"t().uiImageUploadCancel\"\n (click)=\"cancel()\"></button>\n <button\n rtButton\n type=\"button\"\n qa-dataid=\"image-upload-apply\"\n [label]=\"t().uiImageUploadApply\"\n [attr.aria-label]=\"t().uiImageUploadApply\"\n [disabled]=\"!result()\"\n (click)=\"apply()\"></button>\n </div>\n }\n }\n @case ('image') {\n <rt-file-drop accept=\"image/*\" [disabled]=\"disabled()\" (filesDropped)=\"choose($event[0])\">\n <div rtElem=\"preview\">\n <img\n rtElem=\"image\"\n role=\"button\"\n qa-dataid=\"image-upload-image\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n [attr.aria-disabled]=\"disabled()\"\n [attr.alt]=\"t().uiImageUploadImage\"\n [rtTooltip]=\"disabled() ? '' : hint()\"\n [rtMod]=\"{ active: !disabled() }\"\n [src]=\"image()\"\n (click)=\"pick()\"\n (keydown.enter)=\"pick()\"\n (keydown.space)=\"onSpace($event)\" />\n\n @if (downloadable()) {\n <rt-icon-button\n rtElem=\"download\"\n icon=\"ico-download\"\n qa-dataid=\"image-upload-download\"\n [radius]=\"downloadRadius()\"\n [iconSize]=\"downloadIconSize()\"\n [rtMod]=\"{ round: downloadRound() }\"\n [ariaLabel]=\"t().uiDownload\"\n [tooltip]=\"t().uiDownload\"\n (click)=\"download()\" />\n }\n </div>\n </rt-file-drop>\n }\n @default {\n <rt-file-drop accept=\"image/*\" qa-dataid=\"image-upload-drop\" [disabled]=\"disabled()\" (filesDropped)=\"choose($event[0])\">\n <rt-empty-state framed icon=\"cloud-upload\" [title]=\"t().uiImageUploadDrop\">\n <button\n rtButton\n type=\"button\"\n qa-dataid=\"image-upload-choose\"\n [appearance]=\"chooseAppearance()\"\n [icon]=\"chooseIcon()\"\n [label]=\"t().uiImageUploadChoose\"\n [attr.aria-label]=\"t().uiImageUploadChoose\"\n [disabled]=\"disabled()\"\n (click)=\"pick()\"></button>\n </rt-empty-state>\n </rt-file-drop>\n }\n }\n</ng-container>\n"],"mappings":";;;;;;;;;;;;AAMA,SAAgB,YAAY,SAAkB,WAAoB,OAAoB;CAClF,IAAI,SACA,OAAO;CAEX,IAAI,WACA,OAAO;CAEX,OAAO,QAAQ,UAAU;AAC7B;AAGA,SAAgB,YAAY,MAA6B;CACrD,OAAO,CAAC,CAAC,QAAQ,KAAK,KAAK,WAAW,QAAQ;AAClD;ACqBA,MAAM,YAAoB;AAsC1B,IAAa,yBAAb,MAAa,uBAAsB;CACtB;CAEA;CAGT;CAiGA,cAAA;EAtGS,KAAA,UAAsC,OAAO,MAAM;EAEnD,KAAA,YAAsB,OAAO,QAAQ;EAG9C,KAAA,UAAyB;EAEN,KAAA,SAA+C,UAAU,SAAuC,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAEzG,KAAA,IAA4B,OAAO,aAAa;EAGhD,KAAA,SAAsC,OAAO,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAGlD,KAAA,SAAwD,OAAO,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAGpE,KAAA,QAAsC,eACrD,YAAY,KAAK,QAAO,GAAI,KAAK,OAAM,MAAO,MAAM,KAAK,MAAK,CAAE,GACnE,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAGkB,KAAA,OAAuB,eAAuB,KAAK,QAAO,KAAM,KAAK,EAAC,CAAE,CAAC,qBAAoB,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;EAG7F,KAAA,gBAAiC,eAAwB,KAAK,cAAa,MAAO,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;EAG3F,KAAA,iBAA2C,eAAkC,KAAK,cAAa,IAAK,SAAS,MAAM,GAAA,YAAA,CAAA,EAAA,WAAA,iBAAA,CAAA,+BAAA,CAAA,CAAA;EAMnH,KAAA,QAAuC,mBAAkC,KAAK,SAAQ,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAG5F,KAAA,WAAuC,MAAqB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAGjE,KAAA,WAAgC,MAAc,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;EAGtD,KAAA,UAA+B,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAGhD,KAAA,eAAgE,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,eAAA,+BAAA,CAAA;GAC9G,WAAW;EAAgB,CAAA;EAIf,KAAA,gBAA2D,MAAoC,UAAS,GAAA,YAAA,CAAA,EAAA,WAAA,gBAAA,CAAA,+BAAA,CAAA,CAAA;EAGxG,KAAA,mBAAqD,MAA2B,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;EAGrF,KAAA,mBAAoD,MAA0B,YAAW,GAAA,YAAA,CAAA,EAAA,WAAA,mBAAA,CAAA,+BAAA,CAAA,CAAA;EAGzF,KAAA,aAAyC,MAAqB,cAAa,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;EAG3E,KAAA,YAA6D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,YAAA,+BAAA,CAAA;GAC3G,WAAW;EAAgB,CAAA;EAIf,KAAA,UAA2D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GACzG,WAAW;EAAgB,CAAA;EAIf,KAAA,WAA4D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;GAC1G,WAAW;EAAgB,CAAA;EAIf,KAAA,QAA8D,MAAkC,MAAI;GAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;GAChH,YAAY,UAAuC,UAAU,QAAQ,UAAU,KAAK,OAAO,gBAAgB,OAAO,CAAC,KAAK;EAAK,CAAA;EAIjH,KAAA,QAAyD,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;GACvG,WAAW;EAAgB,CAAA;EAIf,KAAA,SAAqD,MAAqC,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAG/F,KAAA,UAAyD,MAA2B,0BAAwB;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GACxH,YAAY,UAA+B,gBAAgB,OAAO,wBAAwB;EAAC,CAAA;EAI/E,KAAA,eAAuC,OAAM;EAG7C,KAAA,aAAqC,OAAM;EAGvD,OAAO,UAAU,CAAC,CAAC,gBAAsB,KAAK,SAAQ,CAAE;CAC5D;CAGO,OAAI;EACP,IAAI,CAAC,KAAK,SAAQ,GACd,KAAK,OAAM,CAAE,CAAC,cAAc,MAAK;CAEzC;CAGO,OAAO,MAA6B;EACvC,IAAI,KAAK,SAAQ,KAAM,CAAC,YAAY,IAAI,GACpC;EAEJ,KAAK,OAAO,IAAI,IAAI;EACpB,KAAK,OAAO,IAAI,IAAI;CACxB;CAEU,SAAS,OAAY;EAC3B,MAAM,QAA0B,MAAM;EACtC,KAAK,OAAO,MAAM,QAAQ,EAAE;EAE5B,MAAM,QAAQ;CAClB;CAEU,QAAQ,OAAY;EAC1B,MAAM,eAAc;EACpB,KAAK,KAAI;CACb;CAEU,UAAU,QAA8B;EAC9C,KAAK,OAAO,IAAI,MAAM;EACtB,IAAI,KAAK,UAAS,GACd,KAAK,aAAa,QAAQ,KAAK;CAEvC;CAEU,QAAK;EACX,MAAM,SAAwC,KAAK,OAAM;EACzD,IAAI,WAAW,MACX,KAAK,aAAa,QAAQ,IAAI;CAEtC;CAEU,SAAM;EACZ,KAAK,OAAO,IAAI,IAAI;EACpB,KAAK,OAAO,IAAI,IAAI;CACxB;CAEU,WAAQ;EACd,MAAM,MAAqB,KAAK,MAAK;EACrC,IAAI,QAAQ,MACR;EAEJ,MAAM,OAA0B,KAAK,UAAU,cAAc,GAAG;EAChE,KAAK,OAAO;EACZ,KAAK,WAAW,KAAK,SAAQ;EAC7B,KAAK,UAAU,KAAK,YAAY,IAAI;EACpC,KAAK,MAAK;EACV,KAAK,OAAM;EACX,KAAK,WAAW,KAAI;CACxB;CAGA,aAAa,QAAgC,OAAc;EACvD,MAAM,OAAa,IAAI,KAAK,CAAC,OAAO,IAAI,GAAG,KAAK,SAAQ,GAAI,EAAE,MAAM,OAAO,KAAK,KAAI,CAAE;EACtF,KAAK,SAAQ;EACb,KAAK,UAAU,KAAK,QAAQ,IAAI,gBAAgB,IAAI;EACpD,KAAK,MAAM,IAAI,KAAK,OAAO;EAC3B,KAAK,aAAa,KAAK,IAAI;EAC3B,IAAI,OACA,KAAK,OAAM;CAEnB;CAEA,WAAQ;EACJ,IAAI,KAAK,YAAY,MAAM;GACvB,KAAK,QAAQ,IAAI,gBAAgB,KAAK,OAAO;GAC7C,KAAK,UAAU;EACnB;CACJ;CAzLS;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAsB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAtB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAsB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,cAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,eAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,kBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,kBAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,YAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,QAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA;IAAA,cAAA;IAAA,YAAA;GAAA;GAAA,MAAA;IAAA,YAAA,EAAA,mCAAA,aAAA;IAAA,gBAAA;GAAA;GAAA,aAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,QAAA;IAAA,aAAA;IAAA,UAAA;GAAA,CAAA;GAAA,UAAA;GAAA,UC9EnC;GAkGA,QAAA,CAAA,81DAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDtCQ;KAAc,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACd;KAAa,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACb;KAAY,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACZ;KAAiB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACjB;KAAkB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,UAAA,CAAA,WAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAGlB;KAAqB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACrB;KAAmB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACnB;KAAqB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACrB;KAAuB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,WAAA,YAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACvB;KAAkB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAOb,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAsB,YAAA,CAAA;EA1BlC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAiB,iBAGV,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,SAC5B;IAEL;IACA;IACA;IACA;IACA;IAGA;IACA;IACA;IACA;IACA;GACH;GAAA,MACK;IACF,OAAO;IACP,qCAAqC;GACxC;GAAA,UAAA;GAAA,QAAA,CAAA,81DAAA;EAAA,CAAA;CAUkH,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,UAAQ,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,kBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,kBAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,QAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,cAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,YAAA;EAAA,CAAA;CAAA;AAAA,CAAA"}
@@ -1,37 +1,151 @@
1
- import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { BlockDirective, ElemDirective } from '@rt-tools/core';
4
- import { RtSkeletonWrapperComponent } from '@rt-tools/ui-kit-v2/skeleton-wrapper';
5
-
6
- const BEM_BLOCK = 'rt-info-item';
7
- class RtInfoItemComponent {
8
- constructor() {
9
- this.label = input.required(/* @ts-ignore */
10
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
11
- this.loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
12
- this.grow = input(false, { ...(ngDevMode ? { debugName: "grow" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtInfoItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: RtInfoItemComponent, isStandalone: true, selector: "rt-info-item", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, grow: { classPropertyName: "grow", publicName: "grow", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rt-info-item--grow": "grow()" }, classAttribute: "rt-info-item" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-info-item\">\n <span rtElem=\"label\" qa-dataid=\"info-item-label\">{{ label() }}</span>\n @if (loading()) {\n <rt-skeleton-wrapper rtElem=\"value-skeleton\" qa-dataid=\"info-item-skeleton\" width=\"80px\" [isLoading]=\"true\" />\n } @else {\n <span rtElem=\"value\" qa-dataid=\"info-item-value\"><ng-content /></span>\n }\n</ng-container>\n", styles: ["@layer rt-kit.components{.rt-info-item{padding:var(--rt-space-md);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);display:flex;min-width:0;flex-direction:column;margin:0;gap:var(--rt-space-0-5)}.rt-info-item--grow{flex:1 0 0}.rt-info-item__label{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}.rt-info-item__value{display:flex;flex-wrap:wrap;align-items:baseline;margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-0-5);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug);overflow-wrap:anywhere}.rt-info-item__value-skeleton{display:block}[data-theme=dark] .rt-info-item{background:var(--rt-color-bg-nav);box-shadow:var(--rt-shadow-card-soft)}}\n"], dependencies: [{ kind: "component", type:
16
- // standalone components / directives
17
- RtSkeletonWrapperComponent, selector: "rt-skeleton-wrapper", inputs: ["width", "height", "shape", "size", "radius", "animation", "isLoading"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtInfoItemComponent, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'rt-info-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
22
- // standalone components / directives
23
- RtSkeletonWrapperComponent,
24
- BlockDirective,
25
- ElemDirective,
26
- ], host: {
27
- class: BEM_BLOCK,
28
- '[class.rt-info-item--grow]': 'grow()',
29
- }, template: "<ng-container rtBlock=\"rt-info-item\">\n <span rtElem=\"label\" qa-dataid=\"info-item-label\">{{ label() }}</span>\n @if (loading()) {\n <rt-skeleton-wrapper rtElem=\"value-skeleton\" qa-dataid=\"info-item-skeleton\" width=\"80px\" [isLoading]=\"true\" />\n } @else {\n <span rtElem=\"value\" qa-dataid=\"info-item-value\"><ng-content /></span>\n }\n</ng-container>\n", styles: ["@layer rt-kit.components{.rt-info-item{padding:var(--rt-space-md);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);display:flex;min-width:0;flex-direction:column;margin:0;gap:var(--rt-space-0-5)}.rt-info-item--grow{flex:1 0 0}.rt-info-item__label{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}.rt-info-item__value{display:flex;flex-wrap:wrap;align-items:baseline;margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-0-5);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug);overflow-wrap:anywhere}.rt-info-item__value-skeleton{display:block}[data-theme=dark] .rt-info-item{background:var(--rt-color-bg-nav);box-shadow:var(--rt-shadow-card-soft)}}\n"] }]
30
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], grow: [{ type: i0.Input, args: [{ isSignal: true, alias: "grow", required: false }] }] } });
31
-
32
- /**
33
- * Generated bundle index. Do not edit.
34
- */
35
-
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input } from "@angular/core";
3
+ import { BlockDirective, ElemDirective } from "@rt-tools/core";
4
+ import { RtSkeletonWrapperComponent } from "@rt-tools/ui-kit-v2/skeleton-wrapper";
5
+ const BEM_BLOCK = "rt-info-item";
6
+ var RtInfoItemComponent = class RtInfoItemComponent {
7
+ constructor() {
8
+ this.label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
9
+ this.loading = input(false, {
10
+ ...ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {},
11
+ transform: booleanAttribute
12
+ });
13
+ this.grow = input(false, {
14
+ ...ngDevMode ? { debugName: "grow" } : /* istanbul ignore next */ {},
15
+ transform: booleanAttribute
16
+ });
17
+ }
18
+ static {
19
+ this.ɵfac = i0.ɵɵngDeclareFactory({
20
+ minVersion: "12.0.0",
21
+ version: "22.2.2",
22
+ ngImport: i0,
23
+ type: RtInfoItemComponent,
24
+ deps: [],
25
+ target: i0.ɵɵFactoryTarget.Component
26
+ });
27
+ }
28
+ static {
29
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
30
+ minVersion: "17.0.0",
31
+ version: "22.2.2",
32
+ type: RtInfoItemComponent,
33
+ isStandalone: true,
34
+ selector: "rt-info-item",
35
+ inputs: {
36
+ label: {
37
+ classPropertyName: "label",
38
+ publicName: "label",
39
+ isSignal: true,
40
+ isRequired: true,
41
+ transformFunction: null
42
+ },
43
+ loading: {
44
+ classPropertyName: "loading",
45
+ publicName: "loading",
46
+ isSignal: true,
47
+ isRequired: false,
48
+ transformFunction: null
49
+ },
50
+ grow: {
51
+ classPropertyName: "grow",
52
+ publicName: "grow",
53
+ isSignal: true,
54
+ isRequired: false,
55
+ transformFunction: null
56
+ }
57
+ },
58
+ host: {
59
+ properties: { "class.rt-info-item--grow": "grow()" },
60
+ classAttribute: "rt-info-item"
61
+ },
62
+ ngImport: i0,
63
+ template: "<ng-container rtBlock=\"rt-info-item\">\n <span rtElem=\"label\" qa-dataid=\"info-item-label\">{{ label() }}</span>\n @if (loading()) {\n <rt-skeleton-wrapper rtElem=\"value-skeleton\" qa-dataid=\"info-item-skeleton\" width=\"80px\" [isLoading]=\"true\" />\n } @else {\n <span rtElem=\"value\" qa-dataid=\"info-item-value\"><ng-content /></span>\n }\n</ng-container>\n",
64
+ styles: ["@layer rt-kit.components{.rt-info-item{padding:var(--rt-space-md);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);display:flex;min-width:0;flex-direction:column;margin:0;gap:var(--rt-space-0-5)}.rt-info-item--grow{flex:1 0 0}.rt-info-item__label{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}.rt-info-item__value{display:flex;flex-wrap:wrap;align-items:baseline;margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-0-5);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug);overflow-wrap:anywhere}.rt-info-item__value-skeleton{display:block}[data-theme=dark] .rt-info-item{background:var(--rt-color-bg-nav);box-shadow:var(--rt-shadow-card-soft)}}\n"],
65
+ dependencies: [
66
+ {
67
+ kind: "component",
68
+ type: RtSkeletonWrapperComponent,
69
+ selector: "rt-skeleton-wrapper",
70
+ inputs: [
71
+ "width",
72
+ "height",
73
+ "shape",
74
+ "size",
75
+ "radius",
76
+ "animation",
77
+ "isLoading"
78
+ ]
79
+ },
80
+ {
81
+ kind: "directive",
82
+ type: BlockDirective,
83
+ selector: "[rtBlock]",
84
+ inputs: ["rtMod"]
85
+ },
86
+ {
87
+ kind: "directive",
88
+ type: ElemDirective,
89
+ selector: "[rtElem]",
90
+ inputs: ["rtMod"]
91
+ }
92
+ ],
93
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
94
+ encapsulation: i0.ViewEncapsulation.None
95
+ });
96
+ }
97
+ };
98
+ i0.ɵɵngDeclareClassMetadata({
99
+ minVersion: "12.0.0",
100
+ version: "22.2.2",
101
+ ngImport: i0,
102
+ type: RtInfoItemComponent,
103
+ decorators: [{
104
+ type: Component,
105
+ args: [{
106
+ selector: "rt-info-item",
107
+ changeDetection: ChangeDetectionStrategy.OnPush,
108
+ encapsulation: ViewEncapsulation.None,
109
+ imports: [
110
+ RtSkeletonWrapperComponent,
111
+ BlockDirective,
112
+ ElemDirective
113
+ ],
114
+ host: {
115
+ class: BEM_BLOCK,
116
+ "[class.rt-info-item--grow]": "grow()"
117
+ },
118
+ template: "<ng-container rtBlock=\"rt-info-item\">\n <span rtElem=\"label\" qa-dataid=\"info-item-label\">{{ label() }}</span>\n @if (loading()) {\n <rt-skeleton-wrapper rtElem=\"value-skeleton\" qa-dataid=\"info-item-skeleton\" width=\"80px\" [isLoading]=\"true\" />\n } @else {\n <span rtElem=\"value\" qa-dataid=\"info-item-value\"><ng-content /></span>\n }\n</ng-container>\n",
119
+ styles: ["@layer rt-kit.components{.rt-info-item{padding:var(--rt-space-md);border-radius:var(--rt-radius-xl);background:var(--rt-color-bg-surface);box-shadow:var(--rt-shadow-card-soft);display:flex;min-width:0;flex-direction:column;margin:0;gap:var(--rt-space-0-5)}.rt-info-item--grow{flex:1 0 0}.rt-info-item__label{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-xs);font-weight:var(--rt-font-weight-regular);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug)}.rt-info-item__value{display:flex;flex-wrap:wrap;align-items:baseline;margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-bold);gap:var(--rt-space-0-5);letter-spacing:var(--rt-letter-spacing-wide);line-height:var(--rt-leading-snug);overflow-wrap:anywhere}.rt-info-item__value-skeleton{display:block}[data-theme=dark] .rt-info-item{background:var(--rt-color-bg-nav);box-shadow:var(--rt-shadow-card-soft)}}\n"]
120
+ }]
121
+ }],
122
+ propDecorators: {
123
+ label: [{
124
+ type: i0.Input,
125
+ args: [{
126
+ isSignal: true,
127
+ alias: "label",
128
+ required: true
129
+ }]
130
+ }],
131
+ loading: [{
132
+ type: i0.Input,
133
+ args: [{
134
+ isSignal: true,
135
+ alias: "loading",
136
+ required: false
137
+ }]
138
+ }],
139
+ grow: [{
140
+ type: i0.Input,
141
+ args: [{
142
+ isSignal: true,
143
+ alias: "grow",
144
+ required: false
145
+ }]
146
+ }]
147
+ }
148
+ });
36
149
  export { RtInfoItemComponent };
37
- //# sourceMappingURL=rt-tools-ui-kit-v2-info-item.mjs.map
150
+
151
+ //# sourceMappingURL=rt-tools-ui-kit-v2-info-item.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-info-item.mjs","sources":["../../../projects/ui-kit-v2/src/lib/components/info-item/rt-info-item.component.ts","../../../projects/ui-kit-v2/src/lib/components/info-item/rt-info-item.component.html","../../../projects/ui-kit-v2/src/lib/components/info-item/rt-tools-ui-kit-v2-info-item.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n InputSignalWithTransform,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RtSkeletonWrapperComponent } from '@rt-tools/ui-kit-v2/skeleton-wrapper';\n\nconst BEM_BLOCK: string = 'rt-info-item';\n\n@Component({\n selector: 'rt-info-item',\n templateUrl: './rt-info-item.component.html',\n styleUrl: './rt-info-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // standalone components / directives\n RtSkeletonWrapperComponent,\n BlockDirective,\n ElemDirective,\n ],\n host: {\n class: BEM_BLOCK,\n '[class.rt-info-item--grow]': 'grow()',\n },\n})\nexport class RtInfoItemComponent {\n public readonly label: InputSignal<string> = input.required<string>();\n\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly grow: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n}\n","<ng-container rtBlock=\"rt-info-item\">\n <span rtElem=\"label\" qa-dataid=\"info-item-label\">{{ label() }}</span>\n @if (loading()) {\n <rt-skeleton-wrapper rtElem=\"value-skeleton\" qa-dataid=\"info-item-skeleton\" width=\"80px\" [isLoading]=\"true\" />\n } @else {\n <span rtElem=\"value\" qa-dataid=\"info-item-value\"><ng-content /></span>\n }\n</ng-container>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAeA,MAAM,SAAS,GAAW,cAAc;MAmB3B,mBAAmB,CAAA;AAjBhC,IAAA,WAAA,GAAA;QAkBoB,IAAA,CAAA,KAAK,GAAwB,KAAK,CAAC,QAAQ;kFAAU;QAErD,IAAA,CAAA,OAAO,GAAoD,KAAK,CAAwB,KAAK,+EACzG,SAAS,EAAE,gBAAgB,EAAA,CAC7B;QAEc,IAAA,CAAA,IAAI,GAAoD,KAAK,CAAwB,KAAK,4EACtG,SAAS,EAAE,gBAAgB,EAAA,CAC7B;AACL,IAAA;8GAVY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,8hBClChC,4YAQA,EAAA,MAAA,EAAA,CAAA,m8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBDiBQ,0BAA0B,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC1B,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAOR,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAjB/B,SAAS;+BACI,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B;;wBAEL,0BAA0B;wBAC1B,cAAc;wBACd,aAAa;qBAChB,EAAA,IAAA,EACK;AACF,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,4BAA4B,EAAE,QAAQ;AACzC,qBAAA,EAAA,QAAA,EAAA,4YAAA,EAAA,MAAA,EAAA,CAAA,m8BAAA,CAAA,EAAA;;;AEhCL;;AAEG;;;;"}
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-info-item.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/info-item/rt-info-item.component.ts","../../../projects/ui-kit-v2/src/lib/components/info-item/rt-info-item.component.html"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n InputSignalWithTransform,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RtSkeletonWrapperComponent } from '@rt-tools/ui-kit-v2/skeleton-wrapper';\n\nconst BEM_BLOCK: string = 'rt-info-item';\n\n@Component({\n selector: 'rt-info-item',\n templateUrl: './rt-info-item.component.html',\n styleUrl: './rt-info-item.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // standalone components / directives\n RtSkeletonWrapperComponent,\n BlockDirective,\n ElemDirective,\n ],\n host: {\n class: BEM_BLOCK,\n '[class.rt-info-item--grow]': 'grow()',\n },\n})\nexport class RtInfoItemComponent {\n public readonly label: InputSignal<string> = input.required<string>();\n\n public readonly loading: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n public readonly grow: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n}\n","<ng-container rtBlock=\"rt-info-item\">\n <span rtElem=\"label\" qa-dataid=\"info-item-label\">{{ label() }}</span>\n @if (loading()) {\n <rt-skeleton-wrapper rtElem=\"value-skeleton\" qa-dataid=\"info-item-skeleton\" width=\"80px\" [isLoading]=\"true\" />\n } @else {\n <span rtElem=\"value\" qa-dataid=\"info-item-value\"><ng-content /></span>\n }\n</ng-container>\n"],"mappings":";;;;AAeA,MAAM,YAAoB;AAmB1B,IAAa,sBAAb,MAAa,oBAAmB;CAjBhC,cAAA;EAkBoB,KAAA,QAA6B,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAErD,KAAA,UAA2D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GACzG,WAAW;EAAgB,CAAA;EAGf,KAAA,OAAwD,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,OAAA,+BAAA,CAAA;GACtG,WAAW;EAAgB,CAAA;CAElC;CAVY;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAmB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAnB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAmB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,MAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,MAAA;IAAA,YAAA,EAAA,4BAAA,SAAA;IAAA,gBAAA;GAAA;GAAA,UAAA;GAAA,UClChC;GAQA,QAAA,CAAA,m8BAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDiBQ;KAA0B,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAC1B;KAAc,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACd;KAAa,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAOR,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAmB,YAAA,CAAA;EAjB/B,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAc,iBAGP,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,SAC5B;IAEL;IACA;IACA;GACH;GAAA,MACK;IACF,OAAO;IACP,8BAA8B;GACjC;GAAA,UAAA;GAAA,QAAA,CAAA,m8BAAA;EAAA,CAAA"}