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

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 (348) 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 +2309 -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-prompt-suggestion.mjs +135 -45
  138. package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs.map +1 -1
  139. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +293 -171
  140. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
  141. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +62 -55
  142. package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -1
  143. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +3379 -1466
  144. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  145. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +114 -116
  146. package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -1
  147. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +406 -299
  148. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  149. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +137 -36
  150. package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -1
  151. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +687 -468
  152. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  153. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +2195 -1569
  154. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  155. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +187 -48
  156. package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -1
  157. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +242 -122
  158. package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -1
  159. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +439 -0
  160. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -0
  161. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +218 -69
  162. package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -1
  163. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +292 -91
  164. package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -1
  165. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +225 -138
  166. package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -1
  167. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +150 -116
  168. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  169. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +2462 -1583
  170. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  171. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +647 -346
  172. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  173. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +335 -121
  174. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  175. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +217 -84
  176. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
  177. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +151 -72
  178. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  179. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +697 -226
  180. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  181. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +92 -38
  182. package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -1
  183. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +752 -338
  184. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  185. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +310 -129
  186. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  187. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +286 -158
  188. package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -1
  189. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +270 -134
  190. package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -1
  191. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +322 -202
  192. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  193. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +908 -0
  194. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -0
  195. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +785 -0
  196. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -0
  197. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +118 -63
  198. package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -1
  199. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +783 -262
  200. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  201. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +633 -294
  202. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  203. package/fesm2022/rt-tools-ui-kit-v2.mjs +100 -103
  204. package/package.json +41 -1
  205. package/src/assets/icons/collapse-all.svg +9 -0
  206. package/src/assets/icons/expand-all.svg +9 -0
  207. package/src/assets/icons-material/collapse-all.fill.svg +5 -0
  208. package/src/assets/icons-material/collapse-all.svg +5 -0
  209. package/src/assets/icons-material/expand-all.fill.svg +5 -0
  210. package/src/assets/icons-material/expand-all.svg +5 -0
  211. package/src/assets/icons-material/undo.fill.svg +5 -0
  212. package/src/assets/icons-material/undo.svg +5 -0
  213. package/src/lib/components/bottom-sheet/CONTEXT.md +20 -2
  214. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +35 -1
  215. package/src/lib/components/breadcrumbs/CONTEXT.md +37 -0
  216. package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +205 -0
  217. package/src/lib/components/carousel/CONTEXT.md +42 -0
  218. package/src/lib/components/carousel/rt-carousel.component.scss +117 -0
  219. package/src/lib/components/checkbox/CONTEXT.md +3 -0
  220. package/src/lib/components/checkbox/rt-checkbox.component.scss +9 -3
  221. package/src/lib/components/color-palette/CONTEXT.md +49 -0
  222. package/src/lib/components/color-palette/picker/rt-color-picker.component.scss +161 -0
  223. package/src/lib/components/color-palette/rt-color-palette.component.scss +132 -0
  224. package/src/lib/components/draggable-tree/CONTEXT.md +54 -0
  225. package/src/lib/components/draggable-tree/rt-draggable-tree.component.scss +219 -0
  226. package/src/lib/components/hybrid-tree/CONTEXT.md +31 -0
  227. package/src/lib/components/hybrid-tree-selector/CONTEXT.md +25 -0
  228. package/src/lib/components/icon-button/CONTEXT.md +3 -0
  229. package/src/lib/components/inline-edit/CONTEXT.md +41 -0
  230. package/src/lib/components/inline-edit/rt-inline-edit.component.scss +274 -0
  231. package/src/lib/components/popover/CONTEXT.md +3 -0
  232. package/src/lib/components/speed-menu/CONTEXT.md +34 -0
  233. package/src/lib/components/speed-menu/rt-speed-menu.component.scss +118 -0
  234. package/src/lib/components/tag/rt-tag.component.scss +12 -0
  235. package/src/lib/components/thread-list/CONTEXT.md +1 -0
  236. package/src/lib/components/thread-list/rt-thread-list.component.scss +2 -1
  237. package/src/lib/components/toolbar/CONTEXT.md +9 -4
  238. package/src/lib/components/toolbar/rt-toolbar.component.scss +10 -2
  239. package/src/lib/components/tooltip/CONTEXT.md +8 -1
  240. package/src/lib/components/tree/CONTEXT.md +66 -0
  241. package/src/lib/components/tree/rt-tree.component.scss +313 -0
  242. package/src/lib/components/tree-selector/CONTEXT.md +47 -0
  243. package/src/lib/components/tree-selector/rt-tree-selector.component.scss +121 -0
  244. package/src/styles/_primitives.scss +4 -0
  245. package/styles/tokens.css +3 -0
  246. package/types/rt-tools-ui-kit-v2-accordion.d.ts +31 -24
  247. package/types/rt-tools-ui-kit-v2-action-bar.d.ts +112 -91
  248. package/types/rt-tools-ui-kit-v2-ai-run-status.d.ts +64 -40
  249. package/types/rt-tools-ui-kit-v2-aside-section.d.ts +13 -10
  250. package/types/rt-tools-ui-kit-v2-aside.d.ts +268 -206
  251. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +102 -61
  252. package/types/rt-tools-ui-kit-v2-bar-list.d.ts +39 -27
  253. package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +31 -20
  254. package/types/rt-tools-ui-kit-v2-breadcrumbs.d.ts +89 -0
  255. package/types/rt-tools-ui-kit-v2-button.d.ts +119 -59
  256. package/types/rt-tools-ui-kit-v2-calendar.d.ts +151 -86
  257. package/types/rt-tools-ui-kit-v2-card.d.ts +42 -21
  258. package/types/rt-tools-ui-kit-v2-carousel.d.ts +76 -0
  259. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +48 -24
  260. package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +28 -20
  261. package/types/rt-tools-ui-kit-v2-color-palette.d.ts +208 -0
  262. package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +104 -47
  263. package/types/rt-tools-ui-kit-v2-container.d.ts +278 -221
  264. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +39 -24
  265. package/types/rt-tools-ui-kit-v2-core.d.ts +856 -865
  266. package/types/rt-tools-ui-kit-v2-counter-row.d.ts +20 -12
  267. package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -38
  268. package/types/rt-tools-ui-kit-v2-data-list.d.ts +429 -264
  269. package/types/rt-tools-ui-kit-v2-data-table.d.ts +500 -351
  270. package/types/rt-tools-ui-kit-v2-date-picker.d.ts +164 -138
  271. package/types/rt-tools-ui-kit-v2-date-range.d.ts +102 -84
  272. package/types/rt-tools-ui-kit-v2-delta-view.d.ts +16 -13
  273. package/types/rt-tools-ui-kit-v2-detail-list.d.ts +23 -16
  274. package/types/rt-tools-ui-kit-v2-dialog.d.ts +130 -101
  275. package/types/rt-tools-ui-kit-v2-dot-field.d.ts +10 -13
  276. package/types/rt-tools-ui-kit-v2-download-link.d.ts +22 -17
  277. package/types/rt-tools-ui-kit-v2-draggable-tree.d.ts +132 -0
  278. package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +185 -96
  279. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +904 -404
  280. package/types/rt-tools-ui-kit-v2-empty-state.d.ts +48 -19
  281. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +67 -39
  282. package/types/rt-tools-ui-kit-v2-field.d.ts +90 -49
  283. package/types/rt-tools-ui-kit-v2-file-card.d.ts +115 -75
  284. package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -48
  285. package/types/rt-tools-ui-kit-v2-file-input.d.ts +53 -36
  286. package/types/rt-tools-ui-kit-v2-file-list.d.ts +5 -8
  287. package/types/rt-tools-ui-kit-v2-filter-control.d.ts +83 -49
  288. package/types/rt-tools-ui-kit-v2-form-control.d.ts +102 -74
  289. package/types/rt-tools-ui-kit-v2-header.d.ts +40 -22
  290. package/types/rt-tools-ui-kit-v2-hybrid-tree-selector.d.ts +14 -0
  291. package/types/rt-tools-ui-kit-v2-hybrid-tree.d.ts +72 -0
  292. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +190 -90
  293. package/types/rt-tools-ui-kit-v2-icon.d.ts +160 -129
  294. package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +151 -111
  295. package/types/rt-tools-ui-kit-v2-image-upload.d.ts +159 -85
  296. package/types/rt-tools-ui-kit-v2-info-item.d.ts +26 -13
  297. package/types/rt-tools-ui-kit-v2-inline-edit.d.ts +194 -0
  298. package/types/rt-tools-ui-kit-v2-input-number.d.ts +102 -53
  299. package/types/rt-tools-ui-kit-v2-input.d.ts +82 -43
  300. package/types/rt-tools-ui-kit-v2-live-badge.d.ts +30 -17
  301. package/types/rt-tools-ui-kit-v2-logo.d.ts +49 -32
  302. package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +26 -17
  303. package/types/rt-tools-ui-kit-v2-menu.d.ts +272 -155
  304. package/types/rt-tools-ui-kit-v2-message.d.ts +59 -33
  305. package/types/rt-tools-ui-kit-v2-money-list.d.ts +36 -18
  306. package/types/rt-tools-ui-kit-v2-multiselect.d.ts +114 -80
  307. package/types/rt-tools-ui-kit-v2-night-grid.d.ts +34 -25
  308. package/types/rt-tools-ui-kit-v2-note.d.ts +12 -9
  309. package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +37 -16
  310. package/types/rt-tools-ui-kit-v2-page-header.d.ts +218 -150
  311. package/types/rt-tools-ui-kit-v2-pagination.d.ts +99 -63
  312. package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +61 -66
  313. package/types/rt-tools-ui-kit-v2-popover.d.ts +116 -55
  314. package/types/rt-tools-ui-kit-v2-prompt-suggestion.d.ts +26 -16
  315. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +85 -43
  316. package/types/rt-tools-ui-kit-v2-radius.d.ts +18 -15
  317. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +931 -590
  318. package/types/rt-tools-ui-kit-v2-ripple.d.ts +28 -25
  319. package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +60 -58
  320. package/types/rt-tools-ui-kit-v2-section-nav.d.ts +32 -22
  321. package/types/rt-tools-ui-kit-v2-select.d.ts +182 -139
  322. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +452 -349
  323. package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +53 -20
  324. package/types/rt-tools-ui-kit-v2-skeleton.d.ts +55 -26
  325. package/types/rt-tools-ui-kit-v2-speed-menu.d.ts +131 -0
  326. package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -28
  327. package/types/rt-tools-ui-kit-v2-split-button.d.ts +96 -55
  328. package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +88 -60
  329. package/types/rt-tools-ui-kit-v2-stepper.d.ts +50 -37
  330. package/types/rt-tools-ui-kit-v2-table.d.ts +631 -480
  331. package/types/rt-tools-ui-kit-v2-tabs.d.ts +198 -113
  332. package/types/rt-tools-ui-kit-v2-tag.d.ts +106 -53
  333. package/types/rt-tools-ui-kit-v2-textarea.d.ts +48 -25
  334. package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +28 -26
  335. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +154 -94
  336. package/types/rt-tools-ui-kit-v2-timeline.d.ts +30 -28
  337. package/types/rt-tools-ui-kit-v2-toast.d.ts +174 -98
  338. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +132 -86
  339. package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +88 -50
  340. package/types/rt-tools-ui-kit-v2-toolbar.d.ts +30 -27
  341. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +65 -41
  342. package/types/rt-tools-ui-kit-v2-tree-selector.d.ts +257 -0
  343. package/types/rt-tools-ui-kit-v2-tree.d.ts +282 -0
  344. package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +21 -24
  345. package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +195 -124
  346. package/types/rt-tools-ui-kit-v2-workspace.d.ts +122 -79
  347. package/types/rt-tools-ui-kit-v2.d.ts +100 -90
  348. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-popover.mjs","sources":["../../../projects/ui-kit-v2/src/lib/components/popover/rt-popover.directive.ts","../../../projects/ui-kit-v2/src/lib/components/popover/rt-tools-ui-kit-v2-popover.ts"],"sourcesContent":["import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n OverlaySizeConfig,\n ScrollStrategyOptions,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n numberAttribute,\n OnDestroy,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { map, merge, Observable, Subject, switchMap } from 'rxjs';\n\nimport { carryThemeScope, materialPresetClassesOf } from '@rt-tools/ui-kit-v2/core';\nimport { IRtPopover } from './rt-popover.model';\n\nconst HOVER_CLOSE_DELAY_MS: number = 100;\n\n/**\n * Высота, ниже которой ужимать панель под вьюпорт бессмысленно: в такой полосе не\n * видно и одного пункта. Нужна только режиму `fitViewport` — по ней CDK решает,\n * что свободного места под триггером хватает.\n */\nconst FIT_VIEWPORT_MIN_HEIGHT_PX: number = 120;\n\n/**\n * Переиспользуемый popover-примитив поверх CDK Overlay. Привязывает плавающую\n * панель (`<ng-template>`) к host-элементу. Движок — CDK Overlay\n * (`flexibleConnectedTo`): авто-flip у края viewport, reposition при скролле,\n * outside-click и Escape закрытие из коробки — без ручного `position: absolute`\n * в `:host` (тот резался `overflow: hidden` предками: таблицы, aside, карточки).\n *\n * Триггеры:\n * - `click` (default) — toggle по клику на host; outside-click закрывает.\n * - `hover` — открытие на `mouseenter`, закрытие с grace-периодом на `mouseleave`\n * (наведение на панель удерживает её открытой).\n * - `manual` — авто-listener'ы не вешаются; host сам зовёт `open()/close()`.\n * Используется form-control'ами с собственным жестом (autocomplete — открытие\n * по набору текста).\n *\n * `open()/close()/toggle()/isOpen()` публичны во ВСЕХ режимах — `trigger` лишь\n * определяет авто-listener'ы. `width: 'trigger'` синхронизирует ширину панели с\n * host'ом (dropdown'ы), `'trigger-min'` не даёт панели стать уже host'а и дальше пускает\n * её по содержимому, `'auto'` — content-sized (тултипы).\n */\n@Directive({\n selector: '[rtPopover]',\n exportAs: 'rtPopover',\n host: {\n '(click)': 'onHostClick()',\n '(mouseenter)': 'onHostMouseEnter()',\n '(mouseleave)': 'onHostMouseLeave($event)',\n },\n})\nexport class RtPopoverDirective implements OnDestroy {\n readonly #overlay: Overlay = inject(Overlay);\n readonly #elementRef: ElementRef<HTMLElement> = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n readonly #scrollStrategies: ScrollStrategyOptions = inject(ScrollStrategyOptions);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n readonly #overlayCreatedSource: Subject<OverlayRef> = new Subject<OverlayRef>();\n\n #overlayRef: OverlayRef | null = null;\n #hoverCloseTimer: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly isOpenState: WritableSignal<boolean> = signal<boolean>(false);\n\n public readonly template: InputSignal<TemplateRef<unknown> | null> = input<TemplateRef<unknown> | null>(null, { alias: 'rtPopover' });\n\n public readonly trigger: InputSignal<IRtPopover.Trigger> = input<IRtPopover.Trigger>('click', {\n alias: 'rtPopoverTrigger',\n });\n\n public readonly width: InputSignal<IRtPopover.Width> = input<IRtPopover.Width>('auto', {\n alias: 'rtPopoverWidth',\n });\n\n /** `end` — панель прижата к правому краю host'а (триггеры у правого края viewport). */\n public readonly align: InputSignal<IRtPopover.Align> = input<IRtPopover.Align>('start', {\n alias: 'rtPopoverAlign',\n });\n\n /**\n * Панель обязана уместиться во вьюпорт: не влезающая по ширине сдвигается от\n * края экрана внутрь, не влезающая по высоте ужимается до свободного места под\n * триггером, и содержимое в ней прокручивается.\n *\n * По умолчанию выключено: панель стоит ровно там, куда её ставит привязка к\n * триггеру, даже если часть её ушла за экран. Включать там, где панель широкая\n * или высокая настолько, что привязка сама по себе её не удерживает, — иначе\n * пункты навигации остаются за краем экрана и недостижимы.\n */\n public readonly fitViewport: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n alias: 'rtPopoverFitViewport',\n transform: booleanAttribute,\n });\n\n public readonly context: InputSignal<unknown> = input<unknown>(null, {\n alias: 'rtPopoverContext',\n });\n\n public readonly panelClass: InputSignal<string> = input<string>('', {\n alias: 'rtPopoverPanelClass',\n });\n\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n alias: 'rtPopoverDisabled',\n transform: booleanAttribute,\n });\n\n public readonly offsetY: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(4, {\n alias: 'rtPopoverOffsetY',\n transform: numberAttribute,\n });\n\n public readonly offsetX: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(0, {\n alias: 'rtPopoverOffsetX',\n transform: numberAttribute,\n });\n\n public readonly opened: OutputEmitterRef<void> = output<void>({ alias: 'rtPopoverOpened' });\n\n public readonly closed: OutputEmitterRef<void> = output<void>({ alias: 'rtPopoverClosed' });\n\n public readonly isOpen: Signal<boolean> = this.isOpenState.asReadonly();\n\n constructor() {\n // Outside-click / ESC подписки на единожды создаваемый overlay живут в\n // одном конструкторном стриме: #ensureOverlay эмитит OverlayRef после\n // создания (ровно один раз за жизнь директивы), стрим живёт до destroy.\n this.#overlayCreatedSource\n .pipe(\n switchMap((overlayRef: OverlayRef): Observable<() => void> =>\n merge(\n overlayRef.outsidePointerEvents().pipe(\n map((event: MouseEvent): (() => void) => (): void => {\n // Клик по host в режиме click обрабатывает onHostClick (toggle) —\n // не закрываем здесь, иначе двойной toggle (close + open).\n if (this.#elementRef.nativeElement.contains(event.target as Node)) {\n return;\n }\n // Клик по вложенной панели — не клик снаружи: закрытие\n // разрушило бы её вместе с нашей до того, как выбор\n // дойдёт до обработчика\n if (this.#isNestedOverlay(event.target)) {\n return;\n }\n this.close();\n })\n ),\n overlayRef.keydownEvents().pipe(\n map((event: KeyboardEvent): (() => void) => (): void => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n })\n )\n )\n ),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((handleCloseIntent: () => void): void => handleCloseIntent());\n }\n\n public ngOnDestroy(): void {\n this.#clearHoverTimer();\n this.#disposeOverlay();\n }\n\n public open(): void {\n if (this.disabled() || this.isOpenState() || this.template() === null) {\n return;\n }\n const overlayRef: OverlayRef = this.#ensureOverlay();\n const hostWidth: number = this.#elementRef.nativeElement.offsetWidth;\n const sizeByWidth: Record<IRtPopover.Width, OverlaySizeConfig> = {\n trigger: { width: hostWidth },\n 'trigger-min': { minWidth: hostWidth },\n auto: {},\n };\n overlayRef.updateSize(sizeByWidth[this.width()]);\n // Тема куска `rtTheme` вокруг host'а едет на коробку панели: панель лежит в конце\n // страницы, и без этого список из тёмной карточки рисовался темой страницы.\n carryThemeScope(overlayRef.overlayElement, this.#elementRef.nativeElement);\n const portal: TemplatePortal<unknown> = new TemplatePortal(this.template() as TemplateRef<unknown>, this.#viewContainerRef, {\n $implicit: this.context(),\n });\n overlayRef.attach(portal);\n this.isOpenState.set(true);\n this.opened.emit();\n }\n\n public close(): void {\n if (!this.isOpenState()) {\n return;\n }\n this.#overlayRef?.detach();\n this.isOpenState.set(false);\n this.closed.emit();\n }\n\n public toggle(): void {\n if (this.isOpenState()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n // --- авто-triggers (HostListener'ы навешиваются на host безусловно, но\n // проверяют активный режим — это дешевле, чем условная подписка) ---\n\n protected onHostClick(): void {\n if (this.trigger() !== 'click' || this.disabled()) {\n return;\n }\n this.toggle();\n }\n\n protected onHostMouseEnter(): void {\n if (this.trigger() !== 'hover') {\n return;\n }\n this.#clearHoverTimer();\n this.open();\n }\n\n protected onHostMouseLeave(event: MouseEvent): void {\n if (this.trigger() !== 'hover') {\n return;\n }\n if (this.#isNestedOverlay(event.relatedTarget)) {\n return;\n }\n this.#scheduleHoverClose();\n }\n\n #ensureOverlay(): OverlayRef {\n if (this.#overlayRef !== null) {\n return this.#overlayRef;\n }\n const alignX: 'start' | 'end' = this.align();\n const positions: ConnectedPosition[] = [\n {\n originX: alignX,\n originY: 'bottom',\n overlayX: alignX,\n overlayY: 'top',\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n },\n {\n originX: alignX,\n originY: 'top',\n overlayX: alignX,\n overlayY: 'bottom',\n offsetX: this.offsetX(),\n offsetY: -this.offsetY(),\n },\n ];\n // Сдвиг к краю экрана и ужатие по высоте включаются только по просьбе\n // потребителя: панель, которая и так помещается, обязана стоять у своего\n // триггера — меню строки таблицы, подтверждение, меню профиля.\n const fitViewport: boolean = this.fitViewport();\n const positionStrategy: FlexibleConnectedPositionStrategy = this.#overlay\n .position()\n .flexibleConnectedTo(this.#elementRef)\n .withPush(fitViewport)\n .withFlexibleDimensions(fitViewport)\n // Отступ от края экрана равен отступу от триггера: свободное место\n // считается без него, и ужатая по высоте панель свисала бы за нижний\n // край ровно на этот отступ — вместе со своей рамкой.\n .withViewportMargin(fitViewport ? Math.abs(this.offsetY()) : 0)\n .withPositions(positions);\n\n const config: OverlayConfig = new OverlayConfig({\n positionStrategy,\n scrollStrategy: this.#scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: this.#resolvePanelClasses(),\n // Порог, ниже которого свободного места под триггером считается\n // недостаточно и панель не ужимается, а сдвигается целиком.\n minHeight: fitViewport ? FIT_VIEWPORT_MIN_HEIGHT_PX : undefined,\n });\n const overlayRef: OverlayRef = this.#overlay.create(config);\n\n // Hover-bridge: при переходе курсора с host'а на панель отложенный close\n // (grace-период) гасится; уход с панели планирует его заново. Без этого\n // hover-popover закрывался бы по таймеру, как только мышь покидает host.\n // Listeners живут на overlay-элементе и умирают вместе с ним в dispose().\n overlayRef.overlayElement.addEventListener('mouseenter', (): void => {\n if (this.trigger() === 'hover') {\n this.#clearHoverTimer();\n }\n });\n overlayRef.overlayElement.addEventListener('mouseleave', (event: MouseEvent): void => {\n if (this.trigger() === 'hover' && !this.#isNestedOverlay(event.relatedTarget)) {\n this.#scheduleHoverClose();\n }\n });\n\n // Outside-click / ESC подписки объявлены один раз в конструкторе —\n // здесь только эмит созданного OverlayRef (см. #overlayCreatedSource-стрим).\n this.#overlayCreatedSource.next(overlayRef);\n\n this.#overlayRef = overlayRef;\n return overlayRef;\n }\n\n /**\n * Панель, открытая из нашей — список `rt-select`, календарь, вложенное меню.\n *\n * В DOM она лежит не внутри нашей панели, а рядом, отдельным оверлеем CDK.\n * Поэтому и уход курсора на неё, и клик по ней выглядят как «ушёл наружу»:\n * меню профиля закрывалось прямо под рукой, стоило потянуться к списку\n * языков, а выбранное значение до обработчика не доходило — панель со\n * `rt-select` разрушалась раньше.\n *\n * Вложенность определяется порядком в контейнере оверлеев: CDK добавляет их\n * по мере открытия, поэтому панель, открытая из нашей, всегда следует за\n * нашей. Соседний оверлей, открытый до нас, этой проверкой не удерживается —\n * клик по нему закрывает попап, как и любой клик снаружи.\n */\n #isNestedOverlay(target: EventTarget | null): boolean {\n const panel: HTMLElement | undefined = this.#overlayRef?.overlayElement;\n if (!panel || !(target instanceof Element)) {\n return false;\n }\n\n const nested: Element | null = target.closest('.cdk-overlay-pane');\n const container: HTMLElement | null = panel.parentElement;\n if (nested === null || nested === panel || container === null) {\n return false;\n }\n\n // `querySelectorAll` отдаёт узлы в порядке документа — им и меряется,\n // какая панель открыта позже\n const panes: readonly Element[] = Array.from(container.querySelectorAll('.cdk-overlay-pane'));\n\n return panes.indexOf(nested) > panes.indexOf(panel);\n }\n\n #resolvePanelClasses(): string[] {\n const base: string = 'rt-popover-panel';\n const extra: string = this.panelClass().trim();\n const preset: string[] = materialPresetClassesOf(this.#elementRef.nativeElement);\n return extra ? [base, ...extra.split(/\\s+/), ...preset] : [base, ...preset];\n }\n\n #scheduleHoverClose(): void {\n this.#clearHoverTimer();\n this.#hoverCloseTimer = setTimeout((): void => this.close(), HOVER_CLOSE_DELAY_MS);\n }\n\n #clearHoverTimer(): void {\n if (this.#hoverCloseTimer !== null) {\n clearTimeout(this.#hoverCloseTimer);\n this.#hoverCloseTimer = null;\n }\n }\n\n #disposeOverlay(): void {\n this.#overlayRef?.dispose();\n this.#overlayRef = null;\n }\n}\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-popover.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/popover/rt-popover.directive.ts"],"sourcesContent":["import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n OverlaySizeConfig,\n ScrollStrategyOptions,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n booleanAttribute,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n numberAttribute,\n OnDestroy,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n ViewContainerRef,\n WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { map, merge, Observable, Subject, switchMap } from 'rxjs';\n\nimport { carryThemeScope, materialPresetClassesOf } from '@rt-tools/ui-kit-v2/core';\nimport { IRtPopover } from './rt-popover.model';\n\nconst HOVER_CLOSE_DELAY_MS: number = 100;\n\n/**\n * Высота, ниже которой ужимать панель под вьюпорт бессмысленно: в такой полосе не\n * видно и одного пункта. Нужна только режиму `fitViewport` — по ней CDK решает,\n * что свободного места под триггером хватает.\n */\nconst FIT_VIEWPORT_MIN_HEIGHT_PX: number = 120;\n\n/**\n * Переиспользуемый popover-примитив поверх CDK Overlay. Привязывает плавающую\n * панель (`<ng-template>`) к host-элементу. Движок — CDK Overlay\n * (`flexibleConnectedTo`): авто-flip у края viewport, reposition при скролле,\n * outside-click и Escape закрытие из коробки — без ручного `position: absolute`\n * в `:host` (тот резался `overflow: hidden` предками: таблицы, aside, карточки).\n *\n * Триггеры:\n * - `click` (default) — toggle по клику на host; outside-click закрывает.\n * - `hover` — открытие на `mouseenter`, закрытие с grace-периодом на `mouseleave`\n * (наведение на панель удерживает её открытой).\n * - `manual` — авто-listener'ы не вешаются; host сам зовёт `open()/close()`.\n * Используется form-control'ами с собственным жестом (autocomplete — открытие\n * по набору текста).\n *\n * `open()/close()/toggle()/isOpen()` публичны во ВСЕХ режимах — `trigger` лишь\n * определяет авто-listener'ы. `width: 'trigger'` синхронизирует ширину панели с\n * host'ом (dropdown'ы), `'trigger-min'` не даёт панели стать уже host'а и дальше пускает\n * её по содержимому, `'auto'` — content-sized (тултипы).\n */\n@Directive({\n selector: '[rtPopover]',\n exportAs: 'rtPopover',\n host: {\n '(click)': 'onHostClick()',\n '(mouseenter)': 'onHostMouseEnter()',\n '(mouseleave)': 'onHostMouseLeave($event)',\n },\n})\nexport class RtPopoverDirective implements OnDestroy {\n readonly #overlay: Overlay = inject(Overlay);\n readonly #elementRef: ElementRef<HTMLElement> = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly #viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n readonly #scrollStrategies: ScrollStrategyOptions = inject(ScrollStrategyOptions);\n readonly #destroyRef: DestroyRef = inject(DestroyRef);\n\n readonly #overlayCreatedSource: Subject<OverlayRef> = new Subject<OverlayRef>();\n\n #overlayRef: OverlayRef | null = null;\n #positionStrategy: FlexibleConnectedPositionStrategy | null = null;\n #hoverCloseTimer: ReturnType<typeof setTimeout> | null = null;\n\n protected readonly isOpenState: WritableSignal<boolean> = signal<boolean>(false);\n\n public readonly template: InputSignal<TemplateRef<unknown> | null> = input<TemplateRef<unknown> | null>(null, { alias: 'rtPopover' });\n\n public readonly trigger: InputSignal<IRtPopover.Trigger> = input<IRtPopover.Trigger>('click', {\n alias: 'rtPopoverTrigger',\n });\n\n public readonly width: InputSignal<IRtPopover.Width> = input<IRtPopover.Width>('auto', {\n alias: 'rtPopoverWidth',\n });\n\n /** `end` — панель прижата к правому краю host'а (триггеры у правого края viewport). */\n public readonly align: InputSignal<IRtPopover.Align> = input<IRtPopover.Align>('start', {\n alias: 'rtPopoverAlign',\n });\n\n /**\n * Панель обязана уместиться во вьюпорт: не влезающая по ширине сдвигается от\n * края экрана внутрь, не влезающая по высоте ужимается до свободного места под\n * триггером, и содержимое в ней прокручивается.\n *\n * По умолчанию выключено: панель стоит ровно там, куда её ставит привязка к\n * триггеру, даже если часть её ушла за экран. Включать там, где панель широкая\n * или высокая настолько, что привязка сама по себе её не удерживает, — иначе\n * пункты навигации остаются за краем экрана и недостижимы.\n */\n public readonly fitViewport: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n alias: 'rtPopoverFitViewport',\n transform: booleanAttribute,\n });\n\n public readonly context: InputSignal<unknown> = input<unknown>(null, {\n alias: 'rtPopoverContext',\n });\n\n public readonly panelClass: InputSignal<string> = input<string>('', {\n alias: 'rtPopoverPanelClass',\n });\n\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n alias: 'rtPopoverDisabled',\n transform: booleanAttribute,\n });\n\n public readonly offsetY: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(4, {\n alias: 'rtPopoverOffsetY',\n transform: numberAttribute,\n });\n\n public readonly offsetX: InputSignalWithTransform<number, NumberInput> = input<number, NumberInput>(0, {\n alias: 'rtPopoverOffsetX',\n transform: numberAttribute,\n });\n\n /**\n * Свои места панели вокруг host'а: первое главное, остальные — запасные у края экрана. `null` —\n * прежние два: под host'ом и над ним. Заданные читаются при каждом открытии.\n */\n public readonly positions: InputSignal<readonly ConnectedPosition[] | null> = input<readonly ConnectedPosition[] | null>(null, {\n alias: 'rtPopoverPositions',\n });\n\n public readonly opened: OutputEmitterRef<void> = output<void>({ alias: 'rtPopoverOpened' });\n\n public readonly closed: OutputEmitterRef<void> = output<void>({ alias: 'rtPopoverClosed' });\n\n public readonly isOpen: Signal<boolean> = this.isOpenState.asReadonly();\n\n constructor() {\n // Outside-click / ESC подписки на единожды создаваемый overlay живут в\n // одном конструкторном стриме: #ensureOverlay эмитит OverlayRef после\n // создания (ровно один раз за жизнь директивы), стрим живёт до destroy.\n this.#overlayCreatedSource\n .pipe(\n switchMap((overlayRef: OverlayRef): Observable<() => void> =>\n merge(\n overlayRef.outsidePointerEvents().pipe(\n map((event: MouseEvent): (() => void) => (): void => {\n // Клик по host в режиме click обрабатывает onHostClick (toggle) —\n // не закрываем здесь, иначе двойной toggle (close + open).\n if (this.#elementRef.nativeElement.contains(event.target as Node)) {\n return;\n }\n // Клик по вложенной панели — не клик снаружи: закрытие\n // разрушило бы её вместе с нашей до того, как выбор\n // дойдёт до обработчика\n if (this.#isNestedOverlay(event.target)) {\n return;\n }\n this.close();\n })\n ),\n overlayRef.keydownEvents().pipe(\n map((event: KeyboardEvent): (() => void) => (): void => {\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n }\n })\n )\n )\n ),\n takeUntilDestroyed(this.#destroyRef)\n )\n .subscribe((handleCloseIntent: () => void): void => handleCloseIntent());\n }\n\n public ngOnDestroy(): void {\n this.#clearHoverTimer();\n this.#disposeOverlay();\n }\n\n public open(): void {\n if (this.disabled() || this.isOpenState() || this.template() === null) {\n return;\n }\n const overlayRef: OverlayRef = this.#ensureOverlay();\n const positions: readonly ConnectedPosition[] | null = this.positions();\n if (positions !== null) {\n this.#positionStrategy?.withPositions([...positions]);\n }\n const hostWidth: number = this.#elementRef.nativeElement.offsetWidth;\n const sizeByWidth: Record<IRtPopover.Width, OverlaySizeConfig> = {\n trigger: { width: hostWidth },\n 'trigger-min': { minWidth: hostWidth },\n auto: {},\n };\n overlayRef.updateSize(sizeByWidth[this.width()]);\n // Тема куска `rtTheme` вокруг host'а едет на коробку панели: панель лежит в конце\n // страницы, и без этого список из тёмной карточки рисовался темой страницы.\n carryThemeScope(overlayRef.overlayElement, this.#elementRef.nativeElement);\n const portal: TemplatePortal<unknown> = new TemplatePortal(this.template() as TemplateRef<unknown>, this.#viewContainerRef, {\n $implicit: this.context(),\n });\n overlayRef.attach(portal);\n this.isOpenState.set(true);\n this.opened.emit();\n }\n\n public close(): void {\n if (!this.isOpenState()) {\n return;\n }\n this.#overlayRef?.detach();\n this.isOpenState.set(false);\n this.closed.emit();\n }\n\n public toggle(): void {\n if (this.isOpenState()) {\n this.close();\n } else {\n this.open();\n }\n }\n\n // --- авто-triggers (HostListener'ы навешиваются на host безусловно, но\n // проверяют активный режим — это дешевле, чем условная подписка) ---\n\n protected onHostClick(): void {\n if (this.trigger() !== 'click' || this.disabled()) {\n return;\n }\n this.toggle();\n }\n\n protected onHostMouseEnter(): void {\n if (this.trigger() !== 'hover') {\n return;\n }\n this.#clearHoverTimer();\n this.open();\n }\n\n protected onHostMouseLeave(event: MouseEvent): void {\n if (this.trigger() !== 'hover') {\n return;\n }\n if (this.#isNestedOverlay(event.relatedTarget)) {\n return;\n }\n this.#scheduleHoverClose();\n }\n\n #ensureOverlay(): OverlayRef {\n if (this.#overlayRef !== null) {\n return this.#overlayRef;\n }\n const alignX: 'start' | 'end' = this.align();\n const positions: ConnectedPosition[] = [\n {\n originX: alignX,\n originY: 'bottom',\n overlayX: alignX,\n overlayY: 'top',\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n },\n {\n originX: alignX,\n originY: 'top',\n overlayX: alignX,\n overlayY: 'bottom',\n offsetX: this.offsetX(),\n offsetY: -this.offsetY(),\n },\n ];\n // Сдвиг к краю экрана и ужатие по высоте включаются только по просьбе\n // потребителя: панель, которая и так помещается, обязана стоять у своего\n // триггера — меню строки таблицы, подтверждение, меню профиля.\n const fitViewport: boolean = this.fitViewport();\n const positionStrategy: FlexibleConnectedPositionStrategy = this.#overlay\n .position()\n .flexibleConnectedTo(this.#elementRef)\n .withPush(fitViewport)\n .withFlexibleDimensions(fitViewport)\n // Отступ от края экрана равен отступу от триггера: свободное место\n // считается без него, и ужатая по высоте панель свисала бы за нижний\n // край ровно на этот отступ — вместе со своей рамкой.\n .withViewportMargin(fitViewport ? Math.abs(this.offsetY()) : 0)\n .withPositions(positions);\n this.#positionStrategy = positionStrategy;\n\n const config: OverlayConfig = new OverlayConfig({\n positionStrategy,\n scrollStrategy: this.#scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: this.#resolvePanelClasses(),\n // Порог, ниже которого свободного места под триггером считается\n // недостаточно и панель не ужимается, а сдвигается целиком.\n minHeight: fitViewport ? FIT_VIEWPORT_MIN_HEIGHT_PX : undefined,\n });\n const overlayRef: OverlayRef = this.#overlay.create(config);\n\n // Hover-bridge: при переходе курсора с host'а на панель отложенный close\n // (grace-период) гасится; уход с панели планирует его заново. Без этого\n // hover-popover закрывался бы по таймеру, как только мышь покидает host.\n // Listeners живут на overlay-элементе и умирают вместе с ним в dispose().\n overlayRef.overlayElement.addEventListener('mouseenter', (): void => {\n if (this.trigger() === 'hover') {\n this.#clearHoverTimer();\n }\n });\n overlayRef.overlayElement.addEventListener('mouseleave', (event: MouseEvent): void => {\n if (this.trigger() === 'hover' && !this.#isNestedOverlay(event.relatedTarget)) {\n this.#scheduleHoverClose();\n }\n });\n\n // Outside-click / ESC подписки объявлены один раз в конструкторе —\n // здесь только эмит созданного OverlayRef (см. #overlayCreatedSource-стрим).\n this.#overlayCreatedSource.next(overlayRef);\n\n this.#overlayRef = overlayRef;\n return overlayRef;\n }\n\n /**\n * Панель, открытая из нашей — список `rt-select`, календарь, вложенное меню.\n *\n * В DOM она лежит не внутри нашей панели, а рядом, отдельным оверлеем CDK.\n * Поэтому и уход курсора на неё, и клик по ней выглядят как «ушёл наружу»:\n * меню профиля закрывалось прямо под рукой, стоило потянуться к списку\n * языков, а выбранное значение до обработчика не доходило — панель со\n * `rt-select` разрушалась раньше.\n *\n * Вложенность определяется порядком в контейнере оверлеев: CDK добавляет их\n * по мере открытия, поэтому панель, открытая из нашей, всегда следует за\n * нашей. Соседний оверлей, открытый до нас, этой проверкой не удерживается —\n * клик по нему закрывает попап, как и любой клик снаружи.\n */\n #isNestedOverlay(target: EventTarget | null): boolean {\n const panel: HTMLElement | undefined = this.#overlayRef?.overlayElement;\n if (!panel || !(target instanceof Element)) {\n return false;\n }\n\n const nested: Element | null = target.closest('.cdk-overlay-pane');\n const container: HTMLElement | null = panel.parentElement;\n if (nested === null || nested === panel || container === null) {\n return false;\n }\n\n // `querySelectorAll` отдаёт узлы в порядке документа — им и меряется,\n // какая панель открыта позже\n const panes: readonly Element[] = Array.from(container.querySelectorAll('.cdk-overlay-pane'));\n\n return panes.indexOf(nested) > panes.indexOf(panel);\n }\n\n #resolvePanelClasses(): string[] {\n const base: string = 'rt-popover-panel';\n const extra: string = this.panelClass().trim();\n const preset: string[] = materialPresetClassesOf(this.#elementRef.nativeElement);\n return extra ? [base, ...extra.split(/\\s+/), ...preset] : [base, ...preset];\n }\n\n #scheduleHoverClose(): void {\n this.#clearHoverTimer();\n this.#hoverCloseTimer = setTimeout((): void => this.close(), HOVER_CLOSE_DELAY_MS);\n }\n\n #clearHoverTimer(): void {\n if (this.#hoverCloseTimer !== null) {\n clearTimeout(this.#hoverCloseTimer);\n this.#hoverCloseTimer = null;\n }\n }\n\n #disposeOverlay(): void {\n this.#overlayRef?.dispose();\n this.#overlayRef = null;\n this.#positionStrategy = null;\n }\n}\n"],"mappings":";;;;;;;AAqCA,MAAM,uBAA+B;AAOrC,MAAM,6BAAqC;AA+B3C,IAAa,qBAAb,MAAa,mBAAkB;CAClB;CACA;CACA;CACA;CACA;CAEA;CAET;CACA;CACA;CAuEA,cAAA;EAjFS,KAAA,WAAoB,OAAO,OAAO;EAClC,KAAA,cAAuC,OAAgC,UAAU;EACjF,KAAA,oBAAsC,OAAO,gBAAgB;EAC7D,KAAA,oBAA2C,OAAO,qBAAqB;EACvE,KAAA,cAA0B,OAAO,UAAU;EAE3C,KAAA,wBAA6C,IAAI,QAAO;EAEjE,KAAA,cAAiC;EACjC,KAAA,oBAA8D;EAC9D,KAAA,mBAAyD;EAEtC,KAAA,cAAuC,OAAgB,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;EAEhE,KAAA,WAAqD,MAAmC,MAAI;GAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;GAAI,OAAO;EAAW,CAAA;EAElH,KAAA,UAA2C,MAA0B,SAAO;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GACxF,OAAO;EAAkB,CAAA;EAGb,KAAA,QAAuC,MAAwB,QAAM;GAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;GACjF,OAAO;EAAgB,CAAA;EAIX,KAAA,QAAuC,MAAwB,SAAO;GAAA,GAAA,YAAA,EAAA,WAAA,QAAA,+BAAA,CAAA;GAClF,OAAO;EAAgB,CAAA;EAaX,KAAA,cAA+D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,cAAA,+BAAA,CAAA;GAC7G,OAAO;GACP,WAAW;EAAgB,CAAA;EAGf,KAAA,UAAgC,MAAe,MAAI;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GAC/D,OAAO;EAAkB,CAAA;EAGb,KAAA,aAAkC,MAAc,IAAE;GAAA,GAAA,YAAA,EAAA,WAAA,aAAA,+BAAA,CAAA;GAC9D,OAAO;EAAqB,CAAA;EAGhB,KAAA,WAA4D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;GAC1G,OAAO;GACP,WAAW;EAAgB,CAAA;EAGf,KAAA,UAAyD,MAA2B,GAAC;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GACjG,OAAO;GACP,WAAW;EAAe,CAAA;EAGd,KAAA,UAAyD,MAA2B,GAAC;GAAA,GAAA,YAAA,EAAA,WAAA,UAAA,+BAAA,CAAA;GACjG,OAAO;GACP,WAAW;EAAe,CAAA;EAOd,KAAA,YAA8D,MAA2C,MAAI;GAAA,GAAA,YAAA,EAAA,WAAA,YAAA,+BAAA,CAAA;GACzH,OAAO;EAAoB,CAAA;EAGf,KAAA,SAAiC,OAAa,EAAE,OAAO,kBAAiB,CAAE;EAE1E,KAAA,SAAiC,OAAa,EAAE,OAAO,kBAAiB,CAAE;EAE1E,KAAA,SAA0B,KAAK,YAAY,WAAU;EAMjE,KAAK,sBACA,KACG,WAAW,eACP,MACI,WAAW,qBAAoB,CAAE,CAAC,KAC9B,KAAK,gBAA+C;GAGhD,IAAI,KAAK,YAAY,cAAc,SAAS,MAAM,MAAc,GAC5D;GAKJ,IAAI,KAAK,iBAAiB,MAAM,MAAM,GAClC;GAEJ,KAAK,MAAK;EACd,CAAC,CAAC,GAEN,WAAW,cAAa,CAAE,CAAC,KACvB,KAAK,gBAAkD;GACnD,IAAI,MAAM,QAAQ,UAAU;IACxB,MAAM,eAAc;IACpB,KAAK,MAAK;GACd;EACJ,CAAC,CAAC,CACL,CACJ,GAEL,mBAAmB,KAAK,WAAW,CAAC,CACvC,CACA,WAAW,sBAAwC,kBAAiB,CAAE;CAC/E;CAEO,cAAW;EACd,KAAK,iBAAgB;EACrB,KAAK,gBAAe;CACxB;CAEO,OAAI;EACP,IAAI,KAAK,SAAQ,KAAM,KAAK,YAAW,KAAM,KAAK,SAAQ,MAAO,MAC7D;EAEJ,MAAM,aAAyB,KAAK,eAAc;EAClD,MAAM,YAAiD,KAAK,UAAS;EACrE,IAAI,cAAc,MACd,KAAK,mBAAmB,cAAc,CAAC,GAAG,SAAS,CAAC;EAExD,MAAM,YAAoB,KAAK,YAAY,cAAc;EACzD,MAAM,cAA2D;GAC7D,SAAS,EAAE,OAAO,UAAS;GAC3B,eAAe,EAAE,UAAU,UAAS;GACpC,MAAM,CAAA;EACT;EACD,WAAW,WAAW,YAAY,KAAK,MAAK,EAAG;EAG/C,gBAAgB,WAAW,gBAAgB,KAAK,YAAY,aAAa;EACzE,MAAM,SAAkC,IAAI,eAAe,KAAK,SAAQ,GAA4B,KAAK,mBAAmB,EACxH,WAAW,KAAK,QAAO,EAC1B,CAAA;EACD,WAAW,OAAO,MAAM;EACxB,KAAK,YAAY,IAAI,IAAI;EACzB,KAAK,OAAO,KAAI;CACpB;CAEO,QAAK;EACR,IAAI,CAAC,KAAK,YAAW,GACjB;EAEJ,KAAK,aAAa,OAAM;EACxB,KAAK,YAAY,IAAI,KAAK;EAC1B,KAAK,OAAO,KAAI;CACpB;CAEO,SAAM;EACT,IAAI,KAAK,YAAW,GAChB,KAAK,MAAK;OAEV,KAAK,KAAI;CAEjB;CAKU,cAAW;EACjB,IAAI,KAAK,QAAO,MAAO,WAAW,KAAK,SAAQ,GAC3C;EAEJ,KAAK,OAAM;CACf;CAEU,mBAAgB;EACtB,IAAI,KAAK,QAAO,MAAO,SACnB;EAEJ,KAAK,iBAAgB;EACrB,KAAK,KAAI;CACb;CAEU,iBAAiB,OAAiB;EACxC,IAAI,KAAK,QAAO,MAAO,SACnB;EAEJ,IAAI,KAAK,iBAAiB,MAAM,aAAa,GACzC;EAEJ,KAAK,oBAAmB;CAC5B;CAEA,iBAAc;EACV,IAAI,KAAK,gBAAgB,MACrB,OAAO,KAAK;EAEhB,MAAM,SAA0B,KAAK,MAAK;EAC1C,MAAM,YAAiC,CACnC;GACI,SAAS;GACT,SAAS;GACT,UAAU;GACV,UAAU;GACV,SAAS,KAAK,QAAO;GACrB,SAAS,KAAK,QAAO;EACxB,GACD;GACI,SAAS;GACT,SAAS;GACT,UAAU;GACV,UAAU;GACV,SAAS,KAAK,QAAO;GACrB,SAAS,CAAC,KAAK,QAAO;EACzB,CACJ;EAID,MAAM,cAAuB,KAAK,YAAW;EAC7C,MAAM,mBAAsD,KAAK,SAC5D,SAAQ,CAAE,CACV,oBAAoB,KAAK,WAAW,CAAC,CACrC,SAAS,WAAW,CAAC,CACrB,uBAAuB,WAAW,CAAC,CAInC,mBAAmB,cAAc,KAAK,IAAI,KAAK,QAAO,CAAE,IAAI,CAAC,CAAC,CAC9D,cAAc,SAAS;EAC5B,KAAK,oBAAoB;EAEzB,MAAM,SAAwB,IAAI,cAAc;GAC5C;GACA,gBAAgB,KAAK,kBAAkB,WAAU;GACjD,aAAa;GACb,YAAY,KAAK,qBAAoB;GAGrC,WAAW,cAAc,6BAA6B;EACzD,CAAA;EACD,MAAM,aAAyB,KAAK,SAAS,OAAO,MAAM;EAM1D,WAAW,eAAe,iBAAiB,oBAAyB;GAChE,IAAI,KAAK,QAAO,MAAO,SACnB,KAAK,iBAAgB;EAE7B,CAAC;EACD,WAAW,eAAe,iBAAiB,eAAe,UAA2B;GACjF,IAAI,KAAK,QAAO,MAAO,WAAW,CAAC,KAAK,iBAAiB,MAAM,aAAa,GACxE,KAAK,oBAAmB;EAEhC,CAAC;EAID,KAAK,sBAAsB,KAAK,UAAU;EAE1C,KAAK,cAAc;EACnB,OAAO;CACX;CAgBA,iBAAiB,QAA0B;EACvC,MAAM,QAAiC,KAAK,aAAa;EACzD,IAAI,CAAC,SAAS,EAAE,kBAAkB,UAC9B,OAAO;EAGX,MAAM,SAAyB,OAAO,QAAQ,mBAAmB;EACjE,MAAM,YAAgC,MAAM;EAC5C,IAAI,WAAW,QAAQ,WAAW,SAAS,cAAc,MACrD,OAAO;EAKX,MAAM,QAA4B,MAAM,KAAK,UAAU,iBAAiB,mBAAmB,CAAC;EAE5F,OAAO,MAAM,QAAQ,MAAM,IAAI,MAAM,QAAQ,KAAK;CACtD;CAEA,uBAAoB;EAChB,MAAM,OAAe;EACrB,MAAM,QAAgB,KAAK,WAAU,CAAE,CAAC,KAAI;EAC5C,MAAM,SAAmB,wBAAwB,KAAK,YAAY,aAAa;EAC/E,OAAO,QAAQ;GAAC;GAAM,GAAG,MAAM,MAAM,KAAK;GAAG,GAAG;EAAM,IAAI,CAAC,MAAM,GAAG,MAAM;CAC9E;CAEA,sBAAmB;EACf,KAAK,iBAAgB;EACrB,KAAK,mBAAmB,iBAAuB,KAAK,MAAK,GAAI,oBAAoB;CACrF;CAEA,mBAAgB;EACZ,IAAI,KAAK,qBAAqB,MAAM;GAChC,aAAa,KAAK,gBAAgB;GAClC,KAAK,mBAAmB;EAC5B;CACJ;CAEA,kBAAe;EACX,KAAK,aAAa,QAAO;EACzB,KAAK,cAAc;EACnB,KAAK,oBAAoB;CAC7B;CAvUS;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAkB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAAlB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAkB,cAAA;GAAA,UAAA;GAAA,QAAA;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,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,aAAA;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,YAAA;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,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA;IAAA,QAAA;IAAA,QAAA;GAAA;GAAA,MAAA,EAAA,WAAA;IAAA,SAAA;IAAA,cAAA;IAAA,cAAA;GAAA,EAAA;GAAA,UAAA,CAAA,WAAA;GAAA,UAAA;EAAA,CAAA;CAAA;;AAAlB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAkB,YAAA,CAAA;EAT9B,MAAA;EAAU,MAAA,CAAA;GACP,UAAU;GACV,UAAU;GACV,MAAM;IACF,WAAW;IACX,gBAAgB;IAChB,gBAAgB;GACnB;EACJ,CAAA"}
@@ -1,46 +1,136 @@
1
- import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, output, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
- import { BlockDirective, ElemDirective } from '@rt-tools/core';
4
- import { RtIconComponent } from '@rt-tools/ui-kit-v2/icon';
5
-
6
- const BEM_BLOCK = 'rt-prompt-suggestion';
7
- /**
8
- * Карточка готового вопроса на пустом экране ассистента: подпись слева, стрелка справа на
9
- * одинаковом отступе. Нажатие сообщает текст подсказки наружу — что с ним делать, решает
10
- * приложение.
11
- */
12
- class RtPromptSuggestionComponent {
13
- constructor() {
14
- /** Текст вопроса: он и на карточке, и в выходе. */
15
- this.label = input.required(/* @ts-ignore */
16
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
17
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
18
- /** Карточку нажали; значение — текст вопроса. */
19
- this.picked = output();
20
- }
21
- onClick() {
22
- this.picked.emit(this.label());
23
- }
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtPromptSuggestionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: RtPromptSuggestionComponent, isStandalone: true, selector: "rt-prompt-suggestion", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { picked: "picked" }, host: { classAttribute: "rt-prompt-suggestion" }, ngImport: i0, template: "<button rtBlock=\"rt-prompt-suggestion\" type=\"button\" qa-dataid=\"prompt-suggestion\" [disabled]=\"disabled()\" (click)=\"onClick()\">\n <span rtElem=\"label\" qa-dataid=\"prompt-suggestion-label\">{{ label() }}</span>\n <rt-icon rtElem=\"arrow\" name=\"arrow-right\" size=\"sm\" aria-hidden=\"true\" />\n</button>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{rt-prompt-suggestion{display:block}rt-prompt-suggestion .rt-prompt-suggestion{--rt-prompt-suggestion-radius: var(--rt-radius-lg);--rt-prompt-suggestion-focus-shadow: var(--rt-shadow-focus-ring);--rt-prompt-suggestion-transition-duration: var(--rt-duration-fast);display:flex;box-sizing:border-box;align-items:center;justify-content:space-between;padding:var(--rt-space-sm) var(--rt-space-md);border:0;border-radius:var(--rt-prompt-suggestion-radius);margin:0;background:var(--rt-color-bg-hover);color:var(--rt-color-text-primary);cursor:pointer;font:inherit;font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium);gap:var(--rt-space-sm);inline-size:100%;line-height:var(--rt-leading-snug);text-align:start;transition:background-color var(--rt-prompt-suggestion-transition-duration) ease}rt-prompt-suggestion .rt-prompt-suggestion:hover:not(:disabled){background:var(--rt-color-bg-subtle)}rt-prompt-suggestion .rt-prompt-suggestion:focus-visible{box-shadow:var(--rt-prompt-suggestion-focus-shadow);outline:2px solid transparent;outline-offset:2px}rt-prompt-suggestion .rt-prompt-suggestion:disabled{color:var(--rt-color-text-disabled);cursor:default}rt-prompt-suggestion .rt-prompt-suggestion__label{min-inline-size:0}rt-prompt-suggestion .rt-prompt-suggestion__arrow{flex:none;color:var(--rt-color-text-muted)}}\n"], dependencies: [{ kind: "directive", type:
26
- // standalone components / directives
27
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "component", type: RtIconComponent, selector: "rt-icon", inputs: ["name", "glyph", "glyphStrategy", "size", "color", "fill", "spin", "rotate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
28
- }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtPromptSuggestionComponent, decorators: [{
30
- type: Component,
31
- args: [{ selector: 'rt-prompt-suggestion', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
32
- // standalone components / directives
33
- BlockDirective,
34
- ElemDirective,
35
- RtIconComponent,
36
- ], host: {
37
- class: BEM_BLOCK,
38
- }, template: "<button rtBlock=\"rt-prompt-suggestion\" type=\"button\" qa-dataid=\"prompt-suggestion\" [disabled]=\"disabled()\" (click)=\"onClick()\">\n <span rtElem=\"label\" qa-dataid=\"prompt-suggestion-label\">{{ label() }}</span>\n <rt-icon rtElem=\"arrow\" name=\"arrow-right\" size=\"sm\" aria-hidden=\"true\" />\n</button>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{rt-prompt-suggestion{display:block}rt-prompt-suggestion .rt-prompt-suggestion{--rt-prompt-suggestion-radius: var(--rt-radius-lg);--rt-prompt-suggestion-focus-shadow: var(--rt-shadow-focus-ring);--rt-prompt-suggestion-transition-duration: var(--rt-duration-fast);display:flex;box-sizing:border-box;align-items:center;justify-content:space-between;padding:var(--rt-space-sm) var(--rt-space-md);border:0;border-radius:var(--rt-prompt-suggestion-radius);margin:0;background:var(--rt-color-bg-hover);color:var(--rt-color-text-primary);cursor:pointer;font:inherit;font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium);gap:var(--rt-space-sm);inline-size:100%;line-height:var(--rt-leading-snug);text-align:start;transition:background-color var(--rt-prompt-suggestion-transition-duration) ease}rt-prompt-suggestion .rt-prompt-suggestion:hover:not(:disabled){background:var(--rt-color-bg-subtle)}rt-prompt-suggestion .rt-prompt-suggestion:focus-visible{box-shadow:var(--rt-prompt-suggestion-focus-shadow);outline:2px solid transparent;outline-offset:2px}rt-prompt-suggestion .rt-prompt-suggestion:disabled{color:var(--rt-color-text-disabled);cursor:default}rt-prompt-suggestion .rt-prompt-suggestion__label{min-inline-size:0}rt-prompt-suggestion .rt-prompt-suggestion__arrow{flex:none;color:var(--rt-color-text-muted)}}\n"] }]
39
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], picked: [{ type: i0.Output, args: ["picked"] }] } });
40
-
41
- /**
42
- * Generated bundle index. Do not edit.
43
- */
44
-
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, input, output } from "@angular/core";
3
+ import { BlockDirective, ElemDirective } from "@rt-tools/core";
4
+ import { RtIconComponent } from "@rt-tools/ui-kit-v2/icon";
5
+ const BEM_BLOCK = "rt-prompt-suggestion";
6
+ var RtPromptSuggestionComponent = class RtPromptSuggestionComponent {
7
+ constructor() {
8
+ this.label = input.required(...ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []);
9
+ this.disabled = input(false, {
10
+ ...ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {},
11
+ transform: booleanAttribute
12
+ });
13
+ this.picked = output();
14
+ }
15
+ onClick() {
16
+ this.picked.emit(this.label());
17
+ }
18
+ static {
19
+ this.ɵfac = i0.ɵɵngDeclareFactory({
20
+ minVersion: "12.0.0",
21
+ version: "22.2.2",
22
+ ngImport: i0,
23
+ type: RtPromptSuggestionComponent,
24
+ deps: [],
25
+ target: i0.ɵɵFactoryTarget.Component
26
+ });
27
+ }
28
+ static {
29
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
30
+ minVersion: "17.1.0",
31
+ version: "22.2.2",
32
+ type: RtPromptSuggestionComponent,
33
+ isStandalone: true,
34
+ selector: "rt-prompt-suggestion",
35
+ inputs: {
36
+ label: {
37
+ classPropertyName: "label",
38
+ publicName: "label",
39
+ isSignal: true,
40
+ isRequired: true,
41
+ transformFunction: null
42
+ },
43
+ disabled: {
44
+ classPropertyName: "disabled",
45
+ publicName: "disabled",
46
+ isSignal: true,
47
+ isRequired: false,
48
+ transformFunction: null
49
+ }
50
+ },
51
+ outputs: { picked: "picked" },
52
+ host: { classAttribute: "rt-prompt-suggestion" },
53
+ ngImport: i0,
54
+ template: "<button rtBlock=\"rt-prompt-suggestion\" type=\"button\" qa-dataid=\"prompt-suggestion\" [disabled]=\"disabled()\" (click)=\"onClick()\">\n <span rtElem=\"label\" qa-dataid=\"prompt-suggestion-label\">{{ label() }}</span>\n <rt-icon rtElem=\"arrow\" name=\"arrow-right\" size=\"sm\" aria-hidden=\"true\" />\n</button>\n",
55
+ styles: ["@charset \"UTF-8\";@layer rt-kit.components{rt-prompt-suggestion{display:block}rt-prompt-suggestion .rt-prompt-suggestion{--rt-prompt-suggestion-radius: var(--rt-radius-lg);--rt-prompt-suggestion-focus-shadow: var(--rt-shadow-focus-ring);--rt-prompt-suggestion-transition-duration: var(--rt-duration-fast);display:flex;box-sizing:border-box;align-items:center;justify-content:space-between;padding:var(--rt-space-sm) var(--rt-space-md);border:0;border-radius:var(--rt-prompt-suggestion-radius);margin:0;background:var(--rt-color-bg-hover);color:var(--rt-color-text-primary);cursor:pointer;font:inherit;font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium);gap:var(--rt-space-sm);inline-size:100%;line-height:var(--rt-leading-snug);text-align:start;transition:background-color var(--rt-prompt-suggestion-transition-duration) ease}rt-prompt-suggestion .rt-prompt-suggestion:hover:not(:disabled){background:var(--rt-color-bg-subtle)}rt-prompt-suggestion .rt-prompt-suggestion:focus-visible{box-shadow:var(--rt-prompt-suggestion-focus-shadow);outline:2px solid transparent;outline-offset:2px}rt-prompt-suggestion .rt-prompt-suggestion:disabled{color:var(--rt-color-text-disabled);cursor:default}rt-prompt-suggestion .rt-prompt-suggestion__label{min-inline-size:0}rt-prompt-suggestion .rt-prompt-suggestion__arrow{flex:none;color:var(--rt-color-text-muted)}}\n"],
56
+ dependencies: [
57
+ {
58
+ kind: "directive",
59
+ type: BlockDirective,
60
+ selector: "[rtBlock]",
61
+ inputs: ["rtMod"]
62
+ },
63
+ {
64
+ kind: "directive",
65
+ type: ElemDirective,
66
+ selector: "[rtElem]",
67
+ inputs: ["rtMod"]
68
+ },
69
+ {
70
+ kind: "component",
71
+ type: RtIconComponent,
72
+ selector: "rt-icon",
73
+ inputs: [
74
+ "name",
75
+ "glyph",
76
+ "glyphStrategy",
77
+ "size",
78
+ "color",
79
+ "fill",
80
+ "spin",
81
+ "rotate"
82
+ ]
83
+ }
84
+ ],
85
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
86
+ encapsulation: i0.ViewEncapsulation.None
87
+ });
88
+ }
89
+ };
90
+ i0.ɵɵngDeclareClassMetadata({
91
+ minVersion: "12.0.0",
92
+ version: "22.2.2",
93
+ ngImport: i0,
94
+ type: RtPromptSuggestionComponent,
95
+ decorators: [{
96
+ type: Component,
97
+ args: [{
98
+ selector: "rt-prompt-suggestion",
99
+ changeDetection: ChangeDetectionStrategy.OnPush,
100
+ encapsulation: ViewEncapsulation.None,
101
+ imports: [
102
+ BlockDirective,
103
+ ElemDirective,
104
+ RtIconComponent
105
+ ],
106
+ host: { class: BEM_BLOCK },
107
+ template: "<button rtBlock=\"rt-prompt-suggestion\" type=\"button\" qa-dataid=\"prompt-suggestion\" [disabled]=\"disabled()\" (click)=\"onClick()\">\n <span rtElem=\"label\" qa-dataid=\"prompt-suggestion-label\">{{ label() }}</span>\n <rt-icon rtElem=\"arrow\" name=\"arrow-right\" size=\"sm\" aria-hidden=\"true\" />\n</button>\n",
108
+ styles: ["@charset \"UTF-8\";@layer rt-kit.components{rt-prompt-suggestion{display:block}rt-prompt-suggestion .rt-prompt-suggestion{--rt-prompt-suggestion-radius: var(--rt-radius-lg);--rt-prompt-suggestion-focus-shadow: var(--rt-shadow-focus-ring);--rt-prompt-suggestion-transition-duration: var(--rt-duration-fast);display:flex;box-sizing:border-box;align-items:center;justify-content:space-between;padding:var(--rt-space-sm) var(--rt-space-md);border:0;border-radius:var(--rt-prompt-suggestion-radius);margin:0;background:var(--rt-color-bg-hover);color:var(--rt-color-text-primary);cursor:pointer;font:inherit;font-size:var(--rt-text-sm);font-weight:var(--rt-font-weight-medium);gap:var(--rt-space-sm);inline-size:100%;line-height:var(--rt-leading-snug);text-align:start;transition:background-color var(--rt-prompt-suggestion-transition-duration) ease}rt-prompt-suggestion .rt-prompt-suggestion:hover:not(:disabled){background:var(--rt-color-bg-subtle)}rt-prompt-suggestion .rt-prompt-suggestion:focus-visible{box-shadow:var(--rt-prompt-suggestion-focus-shadow);outline:2px solid transparent;outline-offset:2px}rt-prompt-suggestion .rt-prompt-suggestion:disabled{color:var(--rt-color-text-disabled);cursor:default}rt-prompt-suggestion .rt-prompt-suggestion__label{min-inline-size:0}rt-prompt-suggestion .rt-prompt-suggestion__arrow{flex:none;color:var(--rt-color-text-muted)}}\n"]
109
+ }]
110
+ }],
111
+ propDecorators: {
112
+ label: [{
113
+ type: i0.Input,
114
+ args: [{
115
+ isSignal: true,
116
+ alias: "label",
117
+ required: true
118
+ }]
119
+ }],
120
+ disabled: [{
121
+ type: i0.Input,
122
+ args: [{
123
+ isSignal: true,
124
+ alias: "disabled",
125
+ required: false
126
+ }]
127
+ }],
128
+ picked: [{
129
+ type: i0.Output,
130
+ args: ["picked"]
131
+ }]
132
+ }
133
+ });
45
134
  export { RtPromptSuggestionComponent };
46
- //# sourceMappingURL=rt-tools-ui-kit-v2-prompt-suggestion.mjs.map
135
+
136
+ //# sourceMappingURL=rt-tools-ui-kit-v2-prompt-suggestion.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-prompt-suggestion.mjs","sources":["../../../projects/ui-kit-v2/src/lib/components/prompt-suggestion/rt-prompt-suggestion.component.ts","../../../projects/ui-kit-v2/src/lib/components/prompt-suggestion/rt-prompt-suggestion.component.html","../../../projects/ui-kit-v2/src/lib/components/prompt-suggestion/rt-tools-ui-kit-v2-prompt-suggestion.ts"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RtIconComponent } from '@rt-tools/ui-kit-v2/icon';\n\nconst BEM_BLOCK: string = 'rt-prompt-suggestion';\n\n/**\n * Карточка готового вопроса на пустом экране ассистента: подпись слева, стрелка справа на\n * одинаковом отступе. Нажатие сообщает текст подсказки наружу — что с ним делать, решает\n * приложение.\n */\n@Component({\n selector: 'rt-prompt-suggestion',\n templateUrl: './rt-prompt-suggestion.component.html',\n styleUrl: './rt-prompt-suggestion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // standalone components / directives\n BlockDirective,\n ElemDirective,\n RtIconComponent,\n ],\n host: {\n class: BEM_BLOCK,\n },\n})\nexport class RtPromptSuggestionComponent {\n /** Текст вопроса: он и на карточке, и в выходе. */\n public readonly label: InputSignal<string> = input.required<string>();\n\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Карточку нажали; значение — текст вопроса. */\n public readonly picked: OutputEmitterRef<string> = output<string>();\n\n protected onClick(): void {\n this.picked.emit(this.label());\n }\n}\n","<button rtBlock=\"rt-prompt-suggestion\" type=\"button\" qa-dataid=\"prompt-suggestion\" [disabled]=\"disabled()\" (click)=\"onClick()\">\n <span rtElem=\"label\" qa-dataid=\"prompt-suggestion-label\">{{ label() }}</span>\n <rt-icon rtElem=\"arrow\" name=\"arrow-right\" size=\"sm\" aria-hidden=\"true\" />\n</button>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAiBA,MAAM,SAAS,GAAW,sBAAsB;AAEhD;;;;AAIG;MAiBU,2BAA2B,CAAA;AAhBxC,IAAA,WAAA,GAAA;;QAkBoB,IAAA,CAAA,KAAK,GAAwB,KAAK,CAAC,QAAQ;kFAAU;QAErD,IAAA,CAAA,QAAQ,GAAoD,KAAK,CAAwB,KAAK,gFAC1G,SAAS,EAAE,gBAAgB,EAAA,CAC7B;;QAGc,IAAA,CAAA,MAAM,GAA6B,MAAM,EAAU;AAKtE,IAAA;IAHa,OAAO,GAAA;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClC;8GAbS,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,qaCxCxC,uUAIA,EAAA,MAAA,EAAA,CAAA,41CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA;;gBD4BQ,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,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAMV,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAhBvC,SAAS;+BACI,sBAAsB,EAAA,eAAA,EAGf,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B;;wBAEL,cAAc;wBACd,aAAa;wBACb,eAAe;qBAClB,EAAA,IAAA,EACK;AACF,wBAAA,KAAK,EAAE,SAAS;AACnB,qBAAA,EAAA,QAAA,EAAA,uUAAA,EAAA,MAAA,EAAA,CAAA,41CAAA,CAAA,EAAA;;;AEtCL;;AAEG;;;;"}
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-prompt-suggestion.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/prompt-suggestion/rt-prompt-suggestion.component.ts","../../../projects/ui-kit-v2/src/lib/components/prompt-suggestion/rt-prompt-suggestion.component.html"],"sourcesContent":["import { BooleanInput } from '@angular/cdk/coercion';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective } from '@rt-tools/core';\n\nimport { RtIconComponent } from '@rt-tools/ui-kit-v2/icon';\n\nconst BEM_BLOCK: string = 'rt-prompt-suggestion';\n\n/**\n * Карточка готового вопроса на пустом экране ассистента: подпись слева, стрелка справа на\n * одинаковом отступе. Нажатие сообщает текст подсказки наружу — что с ним делать, решает\n * приложение.\n */\n@Component({\n selector: 'rt-prompt-suggestion',\n templateUrl: './rt-prompt-suggestion.component.html',\n styleUrl: './rt-prompt-suggestion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n // standalone components / directives\n BlockDirective,\n ElemDirective,\n RtIconComponent,\n ],\n host: {\n class: BEM_BLOCK,\n },\n})\nexport class RtPromptSuggestionComponent {\n /** Текст вопроса: он и на карточке, и в выходе. */\n public readonly label: InputSignal<string> = input.required<string>();\n\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Карточку нажали; значение — текст вопроса. */\n public readonly picked: OutputEmitterRef<string> = output<string>();\n\n protected onClick(): void {\n this.picked.emit(this.label());\n }\n}\n","<button rtBlock=\"rt-prompt-suggestion\" type=\"button\" qa-dataid=\"prompt-suggestion\" [disabled]=\"disabled()\" (click)=\"onClick()\">\n <span rtElem=\"label\" qa-dataid=\"prompt-suggestion-label\">{{ label() }}</span>\n <rt-icon rtElem=\"arrow\" name=\"arrow-right\" size=\"sm\" aria-hidden=\"true\" />\n</button>\n"],"mappings":";;;;AAiBA,MAAM,YAAoB;AAuB1B,IAAa,8BAAb,MAAa,4BAA2B;CAhBxC,cAAA;EAkBoB,KAAA,QAA6B,MAAM,SAAkB,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAErD,KAAA,WAA4D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;GAC1G,WAAW;EAAgB,CAAA;EAIf,KAAA,SAAmC,OAAM;CAK5D;CAHa,UAAO;EACb,KAAK,OAAO,KAAK,KAAK,MAAK,CAAE;CACjC;CAbS;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAA2B,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAA3B;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAA2B,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA,EAAA,QAAA,SAAA;GAAA,MAAA,EAAA,gBAAA,uBAAA;GAAA,UAAA;GAAA,UCxCxC;GAIA,QAAA,CAAA,41CAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MD4BQ;KAAc,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACd;KAAa,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MACb;KAAe,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAMV,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAA2B,YAAA,CAAA;EAhBvC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAsB,iBAGf,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,SAC5B;IAEL;IACA;IACA;GACH;GAAA,MACK,EACF,OAAO,UACV;GAAA,UAAA;GAAA,QAAA,CAAA,41CAAA;EAAA,CAAA"}