@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,573 +1,858 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, computed, linkedSignal, signal, input, booleanAttribute, output, ViewEncapsulation, ChangeDetectionStrategy, Component, viewChild, forwardRef } from '@angular/core';
3
- import { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';
4
- import { RT_KIT_LOCALE, RT_KIT_LABELS, rtKitLabel, BreakpointsService } from '@rt-tools/ui-kit-v2/core';
5
- import { RtBottomSheetComponent } from '@rt-tools/ui-kit-v2/bottom-sheet';
6
- import { rtDateAddMonths, rtDateRead, rtDateInBounds, rtDateMonth, rtDateText, rtDateShape, rtDateParse, rtDateFirstDay, rtDateWeekdays, rtDateNow, rtDateCanPage, rtDateGridKey, rtDateLayout } from '@rt-tools/ui-kit-v2/date-picker';
7
- import { RtFormControlBase } from '@rt-tools/ui-kit-v2/form-control';
8
- import { RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';
9
- import { RtPopoverDirective } from '@rt-tools/ui-kit-v2/popover';
10
- import * as i1 from '@rt-tools/ui-kit-v2/radius';
11
- import { RtRadiusDirective } from '@rt-tools/ui-kit-v2/radius';
12
- import { RtButtonDirective } from '@rt-tools/ui-kit-v2/button';
13
- import { ERtCalendarDayState, RtCalendarComponent } from '@rt-tools/ui-kit-v2/calendar';
14
-
15
- /** Быстрый вариант диапазона в панели поля. */
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, booleanAttribute, computed, forwardRef, inject, input, linkedSignal, output, signal, viewChild } from "@angular/core";
3
+ import { BlockDirective, ElemDirective, ModDirective } from "@rt-tools/core";
4
+ import { BreakpointsService, RT_KIT_LABELS, RT_KIT_LOCALE, rtKitLabel } from "@rt-tools/ui-kit-v2/core";
5
+ import { RtBottomSheetComponent } from "@rt-tools/ui-kit-v2/bottom-sheet";
6
+ import { rtDateAddMonths, rtDateCanPage, rtDateFirstDay, rtDateGridKey, rtDateInBounds, rtDateLayout, rtDateMonth, rtDateNow, rtDateParse, rtDateRead, rtDateShape, rtDateText, rtDateWeekdays } from "@rt-tools/ui-kit-v2/date-picker";
7
+ import { RtFormControlBase } from "@rt-tools/ui-kit-v2/form-control";
8
+ import { RtIconButtonComponent } from "@rt-tools/ui-kit-v2/icon-button";
9
+ import { RtPopoverDirective } from "@rt-tools/ui-kit-v2/popover";
10
+ import * as i1 from "@rt-tools/ui-kit-v2/radius";
11
+ import { RtRadiusDirective } from "@rt-tools/ui-kit-v2/radius";
12
+ import { RtButtonDirective } from "@rt-tools/ui-kit-v2/button";
13
+ import { ERtCalendarDayState, RtCalendarComponent } from "@rt-tools/ui-kit-v2/calendar";
16
14
  var ERtDateRangePreset;
17
- (function (ERtDateRangePreset) {
18
- ERtDateRangePreset["Today"] = "today";
19
- ERtDateRangePreset["Yesterday"] = "yesterday";
20
- ERtDateRangePreset["Last7"] = "last-7";
21
- ERtDateRangePreset["Last30"] = "last-30";
22
- ERtDateRangePreset["ThisMonth"] = "this-month";
23
- ERtDateRangePreset["LastMonth"] = "last-month";
15
+ (function(ERtDateRangePreset) {
16
+ ERtDateRangePreset["Today"] = "today";
17
+ ERtDateRangePreset["Yesterday"] = "yesterday";
18
+ ERtDateRangePreset["Last7"] = "last-7";
19
+ ERtDateRangePreset["Last30"] = "last-30";
20
+ ERtDateRangePreset["ThisMonth"] = "this-month";
21
+ ERtDateRangePreset["LastMonth"] = "last-month";
24
22
  })(ERtDateRangePreset || (ERtDateRangePreset = {}));
25
-
26
- /**
27
- * Чистая логика поля диапазона дат: порядок двух дней, состояния дней месяца, быстрые варианты,
28
- * итог и текст поля. Сегодняшний день приходит параметром — компонент читает часы сам.
29
- *
30
- * Дни — строки `YYYY-MM-DD`: строки одной формы сравниваются как текст в порядке дат.
31
- */
32
- const DAY_LENGTH_MS = 86_400_000;
23
+ const DAY_LENGTH_MS = 864e5;
33
24
  const DAY_LEN = 10;
34
25
  const MONTH_LEN$1 = 7;
35
26
  const YEAR_LEN = 4;
36
- const LAST_WEEK_DAYS = 7;
37
- const LAST_MONTH_DAYS = 30;
38
- /** Знак между датами в тексте поля. */
39
- const DASH = ' — ';
40
- /** Тире между датами набранного текста: длинное или короткое, дефис — только между пробелами. */
27
+ const DASH = " — ";
41
28
  const DASH_RE = /[—–]|\s-\s/;
42
29
  function dayToMs(day) {
43
- const [y, m, d] = day.split('-').map(Number);
44
- return Date.UTC(y, m - 1, d);
30
+ const [y, m, d] = day.split("-").map(Number);
31
+ return Date.UTC(y, m - 1, d);
45
32
  }
46
33
  function msToDay(ms) {
47
- return new Date(ms).toISOString().slice(0, DAY_LEN);
34
+ return new Date(ms).toISOString().slice(0, DAY_LEN);
48
35
  }
49
36
  function addDays(day, delta) {
50
- return msToDay(dayToMs(day) + delta * DAY_LENGTH_MS);
37
+ return msToDay(dayToMs(day) + delta * DAY_LENGTH_MS);
51
38
  }
52
39
  function lastDayOf(month) {
53
- return addDays(`${rtDateAddMonths(month, 1)}-01`, -1);
40
+ return addDays(`${rtDateAddMonths(month, 1)}-01`, -1);
54
41
  }
55
42
  function dayState(day, low, high) {
56
- if (high === null || low === high) {
57
- return day === low ? ERtCalendarDayState.Chosen : ERtCalendarDayState.Free;
58
- }
59
- if (day === low) {
60
- return ERtCalendarDayState.Start;
61
- }
62
- if (day === high) {
63
- return ERtCalendarDayState.End;
64
- }
65
- const ms = dayToMs(day);
66
- return low !== null && ms > dayToMs(low) && ms < dayToMs(high) ? ERtCalendarDayState.InRange : ERtCalendarDayState.Free;
43
+ if (high === null || low === high) return day === low ? ERtCalendarDayState.Chosen : ERtCalendarDayState.Free;
44
+ if (day === low) return ERtCalendarDayState.Start;
45
+ if (day === high) return ERtCalendarDayState.End;
46
+ const ms = dayToMs(day);
47
+ return low !== null && ms > dayToMs(low) && ms < dayToMs(high) ? ERtCalendarDayState.InRange : ERtCalendarDayState.Free;
67
48
  }
68
- /** Два дня по порядку: второй раньше первого — они меняются местами. */
69
49
  function rtRangeOrder(a, b) {
70
- return dayToMs(a) <= dayToMs(b) ? { start: a, end: b } : { start: b, end: a };
50
+ return dayToMs(a) <= dayToMs(b) ? {
51
+ start: a,
52
+ end: b
53
+ } : {
54
+ start: b,
55
+ end: a
56
+ };
71
57
  }
72
- /** Значение поля из того, что пришло из формы; не пара дней по порядку — `null`. */
73
58
  function rtRangeRead(value) {
74
- if (typeof value !== 'object' || value === null) {
75
- return null;
76
- }
77
- const start = Reflect.get(value, 'start');
78
- const end = Reflect.get(value, 'end');
79
- if (typeof start !== 'string' || typeof end !== 'string') {
80
- return null;
81
- }
82
- const ok = rtDateRead(start, 'date') !== null && rtDateRead(end, 'date') !== null && dayToMs(start) <= dayToMs(end);
83
- return ok ? { start, end } : null;
59
+ if (typeof value !== "object" || value === null) return null;
60
+ const start = Reflect.get(value, "start");
61
+ const end = Reflect.get(value, "end");
62
+ if (typeof start !== "string" || typeof end !== "string") return null;
63
+ return rtDateRead(start, "date") !== null && rtDateRead(end, "date") !== null && dayToMs(start) <= dayToMs(end) ? {
64
+ start,
65
+ end
66
+ } : null;
84
67
  }
85
- /** Диапазон лежит в границах целиком. */
86
68
  function rtRangeInBounds(range, min, max) {
87
- return rtDateInBounds(range.start, min, max) && rtDateInBounds(range.end, min, max);
69
+ return rtDateInBounds(range.start, min, max) && rtDateInBounds(range.end, min, max);
88
70
  }
89
- /**
90
- * Месяц `YYYY-MM` для календаря: дни черновика — начало, конец и дни между ними. Пока выбрано только
91
- * начало, будущий диапазон тянется до дня под указателем, и этот день светлый, как дни между краями:
92
- * залит только выбранный край.
93
- */
94
71
  function rtRangeMonth(month, ctx) {
95
- const base = rtDateMonth(month, { locale: ctx.locale, today: ctx.today, chosen: null, min: ctx.min, max: ctx.max });
96
- const other = ctx.end ?? ctx.hover;
97
- const range = ctx.start === null || other === null ? null : rtRangeOrder(ctx.start, other);
98
- const low = range?.start ?? ctx.start;
99
- const high = range?.end ?? null;
100
- const preview = ctx.end === null && ctx.hover !== ctx.start ? ctx.hover : null;
101
- return {
102
- ...base,
103
- days: base.days.map((day) => {
104
- const state = dayState(day.key, low, high);
105
- return { ...day, state: day.key === preview ? ERtCalendarDayState.InRange : state };
106
- }),
107
- };
72
+ const base = rtDateMonth(month, {
73
+ locale: ctx.locale,
74
+ today: ctx.today,
75
+ chosen: null,
76
+ min: ctx.min,
77
+ max: ctx.max
78
+ });
79
+ const other = ctx.end ?? ctx.hover;
80
+ const range = ctx.start === null || other === null ? null : rtRangeOrder(ctx.start, other);
81
+ const low = range?.start ?? ctx.start;
82
+ const high = range?.end ?? null;
83
+ const preview = ctx.end === null && ctx.hover !== ctx.start ? ctx.hover : null;
84
+ return {
85
+ ...base,
86
+ days: base.days.map((day) => {
87
+ const state = dayState(day.key, low, high);
88
+ return {
89
+ ...day,
90
+ state: day.key === preview ? ERtCalendarDayState.InRange : state
91
+ };
92
+ })
93
+ };
108
94
  }
109
- /** Диапазоны быстрых вариантов от сегодняшнего дня. */
110
95
  function rtRangePresets(today) {
111
- const month = today.slice(0, MONTH_LEN$1);
112
- const lastMonth = rtDateAddMonths(month, -1);
113
- const yesterday = addDays(today, -1);
114
- return {
115
- [ERtDateRangePreset.Today]: { start: today, end: today },
116
- [ERtDateRangePreset.Yesterday]: { start: yesterday, end: yesterday },
117
- [ERtDateRangePreset.Last7]: { start: addDays(today, 1 - LAST_WEEK_DAYS), end: today },
118
- [ERtDateRangePreset.Last30]: { start: addDays(today, 1 - LAST_MONTH_DAYS), end: today },
119
- [ERtDateRangePreset.ThisMonth]: { start: `${month}-01`, end: today },
120
- [ERtDateRangePreset.LastMonth]: { start: `${lastMonth}-01`, end: lastDayOf(lastMonth) },
121
- };
96
+ const month = today.slice(0, MONTH_LEN$1);
97
+ const lastMonth = rtDateAddMonths(month, -1);
98
+ const yesterday = addDays(today, -1);
99
+ return {
100
+ [ERtDateRangePreset.Today]: {
101
+ start: today,
102
+ end: today
103
+ },
104
+ [ERtDateRangePreset.Yesterday]: {
105
+ start: yesterday,
106
+ end: yesterday
107
+ },
108
+ [ERtDateRangePreset.Last7]: {
109
+ start: addDays(today, -6),
110
+ end: today
111
+ },
112
+ [ERtDateRangePreset.Last30]: {
113
+ start: addDays(today, -29),
114
+ end: today
115
+ },
116
+ [ERtDateRangePreset.ThisMonth]: {
117
+ start: `${month}-01`,
118
+ end: today
119
+ },
120
+ [ERtDateRangePreset.LastMonth]: {
121
+ start: `${lastMonth}-01`,
122
+ end: lastDayOf(lastMonth)
123
+ }
124
+ };
122
125
  }
123
- /** Быстрые варианты в порядке панели; вариант, не лежащий в границах целиком, выключен. */
124
126
  function rtRangePresetCells(today, min, max) {
125
- const ranges = rtRangePresets(today);
126
- return Object.values(ERtDateRangePreset).map((preset) => ({
127
- preset,
128
- range: ranges[preset],
129
- disabled: !rtRangeInBounds(ranges[preset], min, max),
130
- }));
127
+ const ranges = rtRangePresets(today);
128
+ return Object.values(ERtDateRangePreset).map((preset) => ({
129
+ preset,
130
+ range: ranges[preset],
131
+ disabled: !rtRangeInBounds(ranges[preset], min, max)
132
+ }));
131
133
  }
132
- /** Вариант, чей диапазон совпадает с черновиком; иначе `null`. */
133
134
  function rtRangePresetOf(range, today) {
134
- if (range === null) {
135
- return null;
136
- }
137
- const ranges = rtRangePresets(today);
138
- const found = Object.values(ERtDateRangePreset).find((preset) => ranges[preset].start === range.start && ranges[preset].end === range.end);
139
- return found ?? null;
135
+ if (range === null) return null;
136
+ const ranges = rtRangePresets(today);
137
+ return Object.values(ERtDateRangePreset).find((preset) => ranges[preset].start === range.start && ranges[preset].end === range.end) ?? null;
140
138
  }
141
- /** Число дней диапазона, оба края включены. */
142
139
  function rtRangeDays(range) {
143
- return Math.round((dayToMs(range.end) - dayToMs(range.start)) / DAY_LENGTH_MS) + 1;
140
+ return Math.round((dayToMs(range.end) - dayToMs(range.start)) / DAY_LENGTH_MS) + 1;
144
141
  }
145
- /** Форма числа по правилам локали; `zero` и `two` идут подписью `other`. */
146
142
  function rtRangePlural(count, locale) {
147
- const form = new Intl.PluralRules(locale).select(count);
148
- return form === 'one' || form === 'few' || form === 'many' ? form : 'other';
143
+ const form = new Intl.PluralRules(locale).select(count);
144
+ return form === "one" || form === "few" || form === "many" ? form : "other";
149
145
  }
150
- /** Даты итога по локали: `12–15 октября`; год пишется, когда края в разных годах. */
151
146
  function rtRangeDates(range, locale) {
152
- const sameYear = range.start.slice(0, YEAR_LEN) === range.end.slice(0, YEAR_LEN);
153
- const options = sameYear
154
- ? { day: 'numeric', month: 'long', timeZone: 'UTC' }
155
- : { day: 'numeric', month: 'long', year: 'numeric', timeZone: 'UTC' };
156
- return new Intl.DateTimeFormat(locale, options).formatRange(dayToMs(range.start), dayToMs(range.end));
147
+ const options = range.start.slice(0, YEAR_LEN) === range.end.slice(0, YEAR_LEN) ? {
148
+ day: "numeric",
149
+ month: "long",
150
+ timeZone: "UTC"
151
+ } : {
152
+ day: "numeric",
153
+ month: "long",
154
+ year: "numeric",
155
+ timeZone: "UTC"
156
+ };
157
+ return new Intl.DateTimeFormat(locale, options).formatRange(dayToMs(range.start), dayToMs(range.end));
157
158
  }
158
- /** Текст поля: две даты в порядке локали через тире; пусто — пустой текст. */
159
159
  function rtRangeText(value, layout) {
160
- return value === null ? '' : `${rtDateText(value.start, 'date', layout)}${DASH}${rtDateText(value.end, 'date', layout)}`;
160
+ return value === null ? "" : `${rtDateText(value.start, "date", layout)}${DASH}${rtDateText(value.end, "date", layout)}`;
161
161
  }
162
- /** Подсказка формы текста буквами кита: `дд.мм.гггг — дд.мм.гггг`. */
163
162
  function rtRangeShape(layout, letters) {
164
- const day = rtDateShape('date', layout, letters);
165
- return `${day}${DASH}${day}`;
163
+ const day = rtDateShape("date", layout, letters);
164
+ return `${day}${DASH}${day}`;
166
165
  }
167
- /**
168
- * Читает набранный текст в диапазон; `null` — текст не две даты. Даты читаются в порядке локали,
169
- * форма значения тоже; даты в обратном порядке ставятся по порядку.
170
- */
171
166
  function rtRangeParse(text, layout) {
172
- const parts = text.trim().split(DASH_RE);
173
- if (parts.length !== 2) {
174
- return null;
175
- }
176
- const start = rtDateParse(parts[0].trim(), 'date', layout);
177
- const end = rtDateParse(parts[1].trim(), 'date', layout);
178
- return start === null || end === null ? null : rtRangeOrder(start, end);
167
+ const parts = text.trim().split(DASH_RE);
168
+ if (parts.length !== 2) return null;
169
+ const start = rtDateParse(parts[0].trim(), "date", layout);
170
+ const end = rtDateParse(parts[1].trim(), "date", layout);
171
+ return start === null || end === null ? null : rtRangeOrder(start, end);
179
172
  }
180
-
181
- const BEM_BLOCK$1 = 'rt-date-range-panel';
173
+ const BEM_BLOCK$1 = "rt-date-range-panel";
182
174
  const MONTH_LEN = 7;
183
- /** Подпись каждого быстрого варианта в наборе кита. */
184
175
  const PRESET_LABELS = {
185
- [ERtDateRangePreset.Today]: 'uiToday',
186
- [ERtDateRangePreset.Yesterday]: 'uiYesterday',
187
- [ERtDateRangePreset.Last7]: 'uiLast7Days',
188
- [ERtDateRangePreset.Last30]: 'uiLast30Days',
189
- [ERtDateRangePreset.ThisMonth]: 'uiThisMonth',
190
- [ERtDateRangePreset.LastMonth]: 'uiLastMonth',
176
+ [ERtDateRangePreset.Today]: "uiToday",
177
+ [ERtDateRangePreset.Yesterday]: "uiYesterday",
178
+ [ERtDateRangePreset.Last7]: "uiLast7Days",
179
+ [ERtDateRangePreset.Last30]: "uiLast30Days",
180
+ [ERtDateRangePreset.ThisMonth]: "uiThisMonth",
181
+ [ERtDateRangePreset.LastMonth]: "uiLastMonth"
191
182
  };
192
- /** Подпись числа дней для каждой формы множественного числа. */
193
183
  const DAY_LABELS = {
194
- one: 'uiDaysOne',
195
- few: 'uiDaysFew',
196
- many: 'uiDaysMany',
197
- other: 'uiDaysOther',
184
+ one: "uiDaysOne",
185
+ few: "uiDaysFew",
186
+ many: "uiDaysMany",
187
+ other: "uiDaysOther"
198
188
  };
199
- /**
200
- * Панель rt-date-range: быстрые варианты, два месяца рядом (в шторке — один) и подвал с итогом,
201
- * «Сбросить» и «Применить».
202
- *
203
- * Панель не пишет в форму: готовый диапазон уходит событием `picked`, просьба закрыться — `closed`.
204
- * Черновик живёт, пока панель открыта; поле создаёт её заново на каждое открытие. Вся арифметика
205
- * диапазона — в `rt-date-range.logic`.
206
- */
207
- class RtDateRangePanelComponent {
208
- constructor() {
209
- /** Локаль кита: названия месяцев, дней недели, даты итога и форма числа дней идут по ней. */
210
- this.#locale = inject(RT_KIT_LOCALE);
211
- /** Минута открытия панели: от неё считается «сегодня», когда вход `now` не задан. */
212
- this.#openedAt = new Date();
213
- this.#firstDay = computed(() => rtDateFirstDay(this.#locale()), /* @ts-ignore */
214
- ...(ngDevMode ? [{ debugName: "#firstDay" }] : /* istanbul ignore next */ []));
215
- this.t = inject(RT_KIT_LABELS);
216
- this.weekdays = computed(() => rtDateWeekdays(this.#locale()), /* @ts-ignore */
217
- ...(ngDevMode ? [{ debugName: "weekdays" }] : /* istanbul ignore next */ []));
218
- this.today = computed(() => rtDateNow(this.now() ?? this.#openedAt, 1).day, /* @ts-ignore */
219
- ...(ngDevMode ? [{ debugName: "today" }] : /* istanbul ignore next */ []));
220
- this.start = linkedSignal(() => this.value()?.start ?? null, /* @ts-ignore */
221
- ...(ngDevMode ? [{ debugName: "start" }] : /* istanbul ignore next */ []));
222
- this.end = linkedSignal(() => this.value()?.end ?? null, /* @ts-ignore */
223
- ...(ngDevMode ? [{ debugName: "end" }] : /* istanbul ignore next */ []));
224
- /** День под указателем: пока выбрано только начало, до него рисуется будущий диапазон. */
225
- this.hover = signal(null, /* @ts-ignore */
226
- ...(ngDevMode ? [{ debugName: "hover" }] : /* istanbul ignore next */ []));
227
- this.activeKey = signal(null, /* @ts-ignore */
228
- ...(ngDevMode ? [{ debugName: "activeKey" }] : /* istanbul ignore next */ []));
229
- this.shownMonth = linkedSignal(() => (this.value()?.start ?? this.today()).slice(0, MONTH_LEN), /* @ts-ignore */
230
- ...(ngDevMode ? [{ debugName: "shownMonth" }] : /* istanbul ignore next */ []));
231
- /** Готовый черновик: оба края выбраны. */
232
- this.draft = computed(() => {
233
- const start = this.start();
234
- const end = this.end();
235
- return start === null || end === null ? null : { start, end };
236
- }, /* @ts-ignore */
237
- ...(ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []));
238
- this.months = computed(() => {
239
- const ctx = {
240
- locale: this.#locale(),
241
- today: this.today(),
242
- start: this.start(),
243
- end: this.end(),
244
- hover: this.hover(),
245
- min: this.min(),
246
- max: this.max(),
247
- };
248
- return this.#shown().map((month) => rtRangeMonth(month, ctx));
249
- }, /* @ts-ignore */
250
- ...(ngDevMode ? [{ debugName: "months" }] : /* istanbul ignore next */ []));
251
- this.canPrev = computed(() => rtDateCanPage(this.shownMonth(), -1, this.min(), this.max()), /* @ts-ignore */
252
- ...(ngDevMode ? [{ debugName: "canPrev" }] : /* istanbul ignore next */ []));
253
- /** Вперёд листается, пока последний показанный месяц не упёрся в границу. */
254
- this.canNext = computed(() => rtDateCanPage(this.#lastShown(), 1, this.min(), this.max()), /* @ts-ignore */
255
- ...(ngDevMode ? [{ debugName: "canNext" }] : /* istanbul ignore next */ []));
256
- this.presets = computed(() => {
257
- const labels = this.t();
258
- const chosen = rtRangePresetOf(this.draft(), this.today());
259
- return rtRangePresetCells(this.today(), this.min(), this.max()).map((cell) => ({
260
- cell,
261
- label: labels[PRESET_LABELS[cell.preset]],
262
- chosen: cell.preset === chosen,
263
- }));
264
- }, /* @ts-ignore */
265
- ...(ngDevMode ? [{ debugName: "presets" }] : /* istanbul ignore next */ []));
266
- /** Число дней черновика подписью кита по форме множественного числа локали. */
267
- this.daysText = rtKitLabel(computed(() => {
268
- const draft = this.draft();
269
- return draft === null ? '' : DAY_LABELS[rtRangePlural(rtRangeDays(draft), this.#locale())];
270
- }), computed(() => {
271
- const draft = this.draft();
272
- return { count: draft === null ? 0 : rtRangeDays(draft) };
273
- }));
274
- /** Итог подвала: даты и число дней, в шторке — только число; с одним началом — просьба о конце. */
275
- this.summary = computed(() => {
276
- const draft = this.draft();
277
- if (draft === null) {
278
- return this.start() === null ? this.t().uiPickStartDate : this.t().uiPickEndDate;
279
- }
280
- return this.sheet() ? this.daysText() : `${rtRangeDates(draft, this.#locale())} · ${this.daysText()}`;
281
- }, /* @ts-ignore */
282
- ...(ngDevMode ? [{ debugName: "summary" }] : /* istanbul ignore next */ []));
283
- /** Значение поля: с него начинается черновик. */
284
- this.value = input(null, /* @ts-ignore */
285
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
286
- this.min = input(null, /* @ts-ignore */
287
- ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
288
- this.max = input(null, /* @ts-ignore */
289
- ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
290
- /** Раскладка нижней шторки: один месяц, варианты строкой сверху, дни под палец. */
291
- this.sheet = input(false, { ...(ngDevMode ? { debugName: "sheet" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
292
- /**
293
- * Момент, от которого считаются «сегодня» и быстрые варианты. Поле его не задаёт — панель
294
- * читает часы сама; задаёт витрина, чтобы кадр не менялся день ото дня.
295
- */
296
- this.now = input(null, /* @ts-ignore */
297
- ...(ngDevMode ? [{ debugName: "now" }] : /* istanbul ignore next */ []));
298
- /** Готовый диапазон: панель просит поле его записать. */
299
- this.picked = output();
300
- /** Панель просит закрыть себя. */
301
- this.closed = output();
302
- }
303
- /** Локаль кита: названия месяцев, дней недели, даты итога и форма числа дней идут по ней. */
304
- #locale;
305
- /** Минута открытия панели: от неё считается «сегодня», когда вход `now` не задан. */
306
- #openedAt;
307
- #firstDay;
308
- /** Первый выбор — начало, второй — конец; выбор после готового диапазона начинает новый. */
309
- pickDay(day) {
310
- this.activeKey.set(day.key);
311
- const start = this.start();
312
- if (start === null || this.end() !== null) {
313
- this.start.set(day.key);
314
- this.end.set(null);
315
- return;
316
- }
317
- const range = rtRangeOrder(start, day.key);
318
- this.start.set(range.start);
319
- this.end.set(range.end);
320
- this.hover.set(null);
321
- }
322
- onHover(day) {
323
- this.hover.set(day?.key ?? null);
324
- }
325
- pickPreset(cell) {
326
- if (cell.disabled) {
327
- return;
328
- }
329
- this.start.set(cell.range.start);
330
- this.end.set(cell.range.end);
331
- this.hover.set(null);
332
- this.shownMonth.set(cell.range.start.slice(0, MONTH_LEN));
333
- }
334
- /** Клавиша сетки: фокус переходит на день, и месяцы листаются, если он ушёл за показанные. */
335
- onGridKey(event) {
336
- const next = rtDateGridKey(event.key, event.day.key, this.#firstDay(), this.min(), this.max());
337
- if (next === null) {
338
- return;
339
- }
340
- const month = next.slice(0, MONTH_LEN);
341
- if (!this.#shown().includes(month)) {
342
- const before = Number(month.replace('-', '')) < Number(this.shownMonth().replace('-', ''));
343
- this.shownMonth.set(before ? month : rtDateAddMonths(month, 1 - this.#shown().length));
344
- }
345
- this.activeKey.set(next);
346
- this.hover.set(next);
347
- }
348
- page(delta) {
349
- this.shownMonth.set(rtDateAddMonths(this.shownMonth(), delta));
350
- }
351
- reset() {
352
- this.start.set(null);
353
- this.end.set(null);
354
- this.hover.set(null);
355
- }
356
- /** «Применить»: готовый черновик уходит значением, панель закрывается. */
357
- apply() {
358
- const draft = this.draft();
359
- if (draft !== null) {
360
- this.picked.emit(draft);
361
- this.closed.emit();
362
- }
363
- }
364
- /** Показанные месяцы `YYYY-MM`: два рядом, в шторке — один. */
365
- #shown() {
366
- const first = this.shownMonth();
367
- return this.sheet() ? [first] : [first, rtDateAddMonths(first, 1)];
368
- }
369
- #lastShown() {
370
- const shown = this.#shown();
371
- return shown[shown.length - 1];
372
- }
373
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDateRangePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
374
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: RtDateRangePanelComponent, isStandalone: true, selector: "rt-date-range-panel", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, sheet: { classPropertyName: "sheet", publicName: "sheet", isSignal: true, isRequired: false, transformFunction: null }, now: { classPropertyName: "now", publicName: "now", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { picked: "picked", closed: "closed" }, host: { listeners: { "keydown.escape": "closed.emit()" }, properties: { "class.rt-date-range-panel--sheet": "sheet()" }, classAttribute: "rt-date-range-panel" }, ngImport: i0, template: "<ng-container rtBlock=\"rt-date-range-panel\">\n @if (sheet()) {\n <p rtElem=\"title\" qa-dataid=\"date-range-title\">{{ t().uiPeriod }}</p>\n }\n\n <div rtElem=\"body\">\n <div rtElem=\"presets\" qa-dataid=\"date-range-presets\" role=\"group\" [attr.aria-label]=\"t().uiQuickRanges\">\n @for (item of presets(); track item.cell.preset) {\n <button\n rtButton\n rtElem=\"preset\"\n qa-dataid=\"date-range-preset\"\n type=\"button\"\n size=\"sm\"\n [theme]=\"item.chosen ? 'primary' : 'secondary'\"\n [appearance]=\"sheet() ? 'outlined' : 'text'\"\n [attr.data-preset]=\"item.cell.preset\"\n [label]=\"item.label\"\n [attr.aria-label]=\"item.label\"\n [pressed]=\"item.chosen\"\n [disabled]=\"item.cell.disabled\"\n (click)=\"pickPreset(item.cell)\"></button>\n }\n </div>\n\n <rt-calendar\n rtElem=\"calendar\"\n qa-dataid=\"date-range-calendar\"\n grid\n [months]=\"months()\"\n [weekdayLabels]=\"weekdays()\"\n [canPrev]=\"canPrev()\"\n [canNext]=\"canNext()\"\n [activeKey]=\"activeKey()\"\n [prevAriaLabel]=\"t().uiPrevMonth\"\n [nextAriaLabel]=\"t().uiNextMonth\"\n (prevMonth)=\"page(-1)\"\n (nextMonth)=\"page(1)\"\n (dayClick)=\"pickDay($event)\"\n (dayHover)=\"onHover($event)\"\n (gridKey)=\"onGridKey($event)\" />\n </div>\n\n <div rtElem=\"footer\">\n <span rtElem=\"summary\" qa-dataid=\"date-range-summary\" aria-live=\"polite\">{{ summary() }}</span>\n <button\n rtButton\n qa-dataid=\"date-range-reset\"\n theme=\"primary\"\n appearance=\"text\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiReset\"\n [attr.aria-label]=\"t().uiReset\"\n (click)=\"reset()\"></button>\n <button\n rtButton\n qa-dataid=\"date-range-apply\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiApply\"\n [attr.aria-label]=\"t().uiApply\"\n [disabled]=\"draft() === null\"\n (click)=\"apply()\"></button>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range-panel{--rt-date-range-panel-sheet-day-size: calc(var(--rt-size-10) + var(--rt-size-1));--rt-date-range-panel-divider-width: var(--rt-border-width-thin);display:flex;flex-direction:column;padding:var(--rt-space-4);gap:var(--rt-space-4)}.rt-date-range-panel__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-lg);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-date-range-panel__body{display:flex;align-items:flex-start;gap:var(--rt-space-4)}.rt-date-range-panel__presets{display:flex;flex:0 0 auto;flex-direction:column;align-self:stretch;padding-right:var(--rt-space-4);border-right:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-1)}.rt-date-range-panel__preset{justify-content:flex-start;white-space:nowrap}.rt-date-range-panel .rt-date-range-panel__calendar{--rt-calendar-day-justify: center;--rt-calendar-column-gap: 0;--rt-calendar-range-inner-radius: 0;flex:1 1 auto;min-inline-size:calc(var(--rt-size-10) * 14 + var(--rt-space-6))}.rt-date-range-panel__footer{display:flex;align-items:center;padding-top:var(--rt-space-2);border-top:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-2)}.rt-date-range-panel__summary{flex:1 1 auto;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-date-range-panel--sheet{padding-inline:0}.rt-date-range-panel--sheet .rt-date-range-panel__body{flex-direction:column;align-items:stretch}.rt-date-range-panel--sheet .rt-date-range-panel__presets{flex-direction:row;padding-right:0;padding-bottom:var(--rt-space-1);border-right:none;gap:var(--rt-space-2);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.rt-date-range-panel--sheet .rt-date-range-panel__preset{flex:0 0 auto}.rt-date-range-panel--sheet .rt-date-range-panel__calendar{--rt-calendar-month-count: 1;--rt-calendar-day-size: var(--rt-date-range-panel-sheet-day-size);min-inline-size:0}}\n"], dependencies: [{ kind: "directive", type:
375
- // rt-tools
376
- BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type:
377
- // components
378
- RtButtonDirective, selector: "button[rtButton], a[rtButton]", inputs: ["label", "icon", "iconPos", "theme", "appearance", "size", "loading", "loadingIcon", "loadingLabel", "pressed"] }, { kind: "component", type: RtCalendarComponent, selector: "rt-calendar", inputs: ["months", "weekdayLabels", "canPrev", "canNext", "prevAriaLabel", "nextAriaLabel", "sublabelsLoading", "grid", "activeKey", "titleAction", "headerTitle"], outputs: ["prevMonth", "nextMonth", "dayClick", "gridKey", "titleClick", "dayHover"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
379
- }
380
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDateRangePanelComponent, decorators: [{
381
- type: Component,
382
- args: [{ selector: 'rt-date-range-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
383
- // rt-tools
384
- BlockDirective,
385
- ElemDirective,
386
- // components
387
- RtButtonDirective,
388
- RtCalendarComponent,
389
- ], host: {
390
- class: BEM_BLOCK$1,
391
- '[class.rt-date-range-panel--sheet]': 'sheet()',
392
- '(keydown.escape)': 'closed.emit()',
393
- }, template: "<ng-container rtBlock=\"rt-date-range-panel\">\n @if (sheet()) {\n <p rtElem=\"title\" qa-dataid=\"date-range-title\">{{ t().uiPeriod }}</p>\n }\n\n <div rtElem=\"body\">\n <div rtElem=\"presets\" qa-dataid=\"date-range-presets\" role=\"group\" [attr.aria-label]=\"t().uiQuickRanges\">\n @for (item of presets(); track item.cell.preset) {\n <button\n rtButton\n rtElem=\"preset\"\n qa-dataid=\"date-range-preset\"\n type=\"button\"\n size=\"sm\"\n [theme]=\"item.chosen ? 'primary' : 'secondary'\"\n [appearance]=\"sheet() ? 'outlined' : 'text'\"\n [attr.data-preset]=\"item.cell.preset\"\n [label]=\"item.label\"\n [attr.aria-label]=\"item.label\"\n [pressed]=\"item.chosen\"\n [disabled]=\"item.cell.disabled\"\n (click)=\"pickPreset(item.cell)\"></button>\n }\n </div>\n\n <rt-calendar\n rtElem=\"calendar\"\n qa-dataid=\"date-range-calendar\"\n grid\n [months]=\"months()\"\n [weekdayLabels]=\"weekdays()\"\n [canPrev]=\"canPrev()\"\n [canNext]=\"canNext()\"\n [activeKey]=\"activeKey()\"\n [prevAriaLabel]=\"t().uiPrevMonth\"\n [nextAriaLabel]=\"t().uiNextMonth\"\n (prevMonth)=\"page(-1)\"\n (nextMonth)=\"page(1)\"\n (dayClick)=\"pickDay($event)\"\n (dayHover)=\"onHover($event)\"\n (gridKey)=\"onGridKey($event)\" />\n </div>\n\n <div rtElem=\"footer\">\n <span rtElem=\"summary\" qa-dataid=\"date-range-summary\" aria-live=\"polite\">{{ summary() }}</span>\n <button\n rtButton\n qa-dataid=\"date-range-reset\"\n theme=\"primary\"\n appearance=\"text\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiReset\"\n [attr.aria-label]=\"t().uiReset\"\n (click)=\"reset()\"></button>\n <button\n rtButton\n qa-dataid=\"date-range-apply\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiApply\"\n [attr.aria-label]=\"t().uiApply\"\n [disabled]=\"draft() === null\"\n (click)=\"apply()\"></button>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range-panel{--rt-date-range-panel-sheet-day-size: calc(var(--rt-size-10) + var(--rt-size-1));--rt-date-range-panel-divider-width: var(--rt-border-width-thin);display:flex;flex-direction:column;padding:var(--rt-space-4);gap:var(--rt-space-4)}.rt-date-range-panel__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-lg);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-date-range-panel__body{display:flex;align-items:flex-start;gap:var(--rt-space-4)}.rt-date-range-panel__presets{display:flex;flex:0 0 auto;flex-direction:column;align-self:stretch;padding-right:var(--rt-space-4);border-right:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-1)}.rt-date-range-panel__preset{justify-content:flex-start;white-space:nowrap}.rt-date-range-panel .rt-date-range-panel__calendar{--rt-calendar-day-justify: center;--rt-calendar-column-gap: 0;--rt-calendar-range-inner-radius: 0;flex:1 1 auto;min-inline-size:calc(var(--rt-size-10) * 14 + var(--rt-space-6))}.rt-date-range-panel__footer{display:flex;align-items:center;padding-top:var(--rt-space-2);border-top:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-2)}.rt-date-range-panel__summary{flex:1 1 auto;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-date-range-panel--sheet{padding-inline:0}.rt-date-range-panel--sheet .rt-date-range-panel__body{flex-direction:column;align-items:stretch}.rt-date-range-panel--sheet .rt-date-range-panel__presets{flex-direction:row;padding-right:0;padding-bottom:var(--rt-space-1);border-right:none;gap:var(--rt-space-2);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.rt-date-range-panel--sheet .rt-date-range-panel__preset{flex:0 0 auto}.rt-date-range-panel--sheet .rt-date-range-panel__calendar{--rt-calendar-month-count: 1;--rt-calendar-day-size: var(--rt-date-range-panel-sheet-day-size);min-inline-size:0}}\n"] }]
394
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], sheet: [{ type: i0.Input, args: [{ isSignal: true, alias: "sheet", required: false }] }], now: [{ type: i0.Input, args: [{ isSignal: true, alias: "now", required: false }] }], picked: [{ type: i0.Output, args: ["picked"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
395
-
396
- const BEM_BLOCK = 'rt-date-range';
397
- /**
398
- * Поле диапазона дат со своей панелью кита, визуально и по токенам идентичное rt-input (host — box
399
- * `--rt-input-*`, input — прозрачный `__field`). Кнопка в конце поля открывает
400
- * `rt-date-range-panel`: на широком экране в поповере, на узком — в нижней шторке. CVA через общий
401
- * `RtFormControlBase`: clearable, авто-подсветка invalid, read-only представление.
402
- *
403
- * `value` — пара дней `{ start, end }` в форме `YYYY-MM-DD` или `null`. Текст в поле — две даты в
404
- * порядке языка интерфейса через тире (`12.10.2026 — 15.10.2026` под `ru`); набирается так же.
405
- * Нечитаемый или лежащий за границами текст оставляет значение прежним и помечает поле ошибкой.
406
- */
407
- class RtDateRangeComponent extends RtFormControlBase {
408
- constructor() {
409
- super(...arguments);
410
- /** Локаль кита: приложение, меняющее язык на ходу, меняет её, и текст поля пересчитывается. */
411
- this.#locale = inject(RT_KIT_LOCALE);
412
- /** Порядок дня, месяца и года в тексте поля — по локали кита. */
413
- this.#layout = computed(() => rtDateLayout(this.#locale()), /* @ts-ignore */
414
- ...(ngDevMode ? [{ debugName: "#layout" }] : /* istanbul ignore next */ []));
415
- this.t = inject(RT_KIT_LABELS);
416
- /** Узкий экран: панель открывается в нижней шторке, а не в поповере. */
417
- this.narrow = inject(BreakpointsService).narrow;
418
- this.fieldEl = viewChild('fieldEl', /* @ts-ignore */
419
- ...(ngDevMode ? [{ debugName: "fieldEl" }] : /* istanbul ignore next */ []));
420
- this.popover = viewChild(RtPopoverDirective, /* @ts-ignore */
421
- ...(ngDevMode ? [{ debugName: "popover" }] : /* istanbul ignore next */ []));
422
- /** Набранный текст не читается как диапазон в границах: поле помечено ошибкой. */
423
- this.textInvalid = signal(false, /* @ts-ignore */
424
- ...(ngDevMode ? [{ debugName: "textInvalid" }] : /* istanbul ignore next */ []));
425
- this.sheetOpen = signal(false, /* @ts-ignore */
426
- ...(ngDevMode ? [{ debugName: "sheetOpen" }] : /* istanbul ignore next */ []));
427
- /** Подсказка формы текста буквами кита: `дд.мм.гггг — дд.мм.гггг` под русскими метками. */
428
- this.shape = computed(() => {
429
- const labels = this.t();
430
- return rtRangeShape(this.#layout(), {
431
- day: labels.uiShapeDay,
432
- month: labels.uiShapeMonth,
433
- year: labels.uiShapeYear,
434
- hour: labels.uiShapeHour,
435
- minute: labels.uiShapeMinute,
436
- });
437
- }, /* @ts-ignore */
438
- ...(ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []));
439
- /** Значение, прочитанное из формы: не пара дней по порядку поле показывает пустой. */
440
- this.range = computed(() => rtRangeRead(this.value()), /* @ts-ignore */
441
- ...(ngDevMode ? [{ debugName: "range" }] : /* istanbul ignore next */ []));
442
- this.text = computed(() => rtRangeText(this.range(), this.#layout()), /* @ts-ignore */
443
- ...(ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []));
444
- this.hasValue = computed(() => this.range() !== null, /* @ts-ignore */
445
- ...(ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []));
446
- /** Ширина поля в знаках — по длине формы значения, как у поля даты. */
447
- this.fieldSize = computed(() => this.shape().length, /* @ts-ignore */
448
- ...(ngDevMode ? [{ debugName: "fieldSize" }] : /* istanbul ignore next */ []));
449
- /** Подсказка обрезается многоточием в узком поле, поэтому шаблон целиком виден при наведении. */
450
- this.shapeTitle = computed(() => (this.hasValue() ? null : this.shape()), /* @ts-ignore */
451
- ...(ngDevMode ? [{ debugName: "shapeTitle" }] : /* istanbul ignore next */ []));
452
- /** Вид рамки: `outline` — рамка со всех сторон, `fill` — залитое поле с чертой снизу. */
453
- this.appearance = input('outline', /* @ts-ignore */
454
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
455
- this.displayText = computed(() => this.#format(this.range()), /* @ts-ignore */
456
- ...(ngDevMode ? [{ debugName: "displayText" }] : /* istanbul ignore next */ []));
457
- /** Первый допустимый день `YYYY-MM-DD`. */
458
- this.min = input(null, /* @ts-ignore */
459
- ...(ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []));
460
- /** Последний допустимый день `YYYY-MM-DD`. */
461
- this.max = input(null, /* @ts-ignore */
462
- ...(ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []));
463
- }
464
- /** Локаль кита: приложение, меняющее язык на ходу, меняет её, и текст поля пересчитывается. */
465
- #locale;
466
- /** Порядок дня, месяца и года в тексте поля — по локали кита. */
467
- #layout;
468
- /** Значение из формы снимает ошибку набора: в поле теперь стоит оно. */
469
- writeValue(value) {
470
- super.writeValue(value);
471
- this.textInvalid.set(false);
472
- }
473
- getEmptyValue() {
474
- return null;
475
- }
476
- focusAfterClear() {
477
- this.fieldEl()?.nativeElement.focus();
478
- }
479
- clearValue() {
480
- super.clearValue();
481
- this.#accept(null);
482
- }
483
- /** Набор текста: значение меняется, только когда текст читается как диапазон в границах. */
484
- onTyped(event) {
485
- const text = event.target.value;
486
- if (text.trim() === '') {
487
- this.#commit(null);
488
- return;
489
- }
490
- const read = rtRangeParse(text, this.#layout());
491
- if (read === null || !rtRangeInBounds(read, this.min(), this.max())) {
492
- this.textInvalid.set(true);
493
- return;
494
- }
495
- this.#commit(read);
496
- }
497
- /** Кнопка в конце поля: на узком экране открывает шторку, на широком поповер открывает сам. */
498
- openPanel() {
499
- if (this.narrow() && !this.isDisabled()) {
500
- this.sheetOpen.set(true);
501
- }
502
- }
503
- closePanel() {
504
- this.sheetOpen.set(false);
505
- this.popover()?.close();
506
- }
507
- onPicked(value) {
508
- this.#commit(value);
509
- this.markTouched();
510
- }
511
- onBlur() {
512
- this.markTouched();
513
- }
514
- #commit(value) {
515
- this.value.set(value);
516
- this.emitChange(value);
517
- this.#accept(value);
518
- }
519
- /** Текст в поле — принятое значение, ошибки набора нет. */
520
- #accept(value) {
521
- this.textInvalid.set(false);
522
- const node = this.fieldEl()?.nativeElement;
523
- if (node !== undefined) {
524
- node.value = rtRangeText(value, this.#layout());
525
- }
526
- }
527
- /** Плоский текст для режима чтения: диапазон по локали, `15 – 20 мар. 2026 г.` под `ru`. */
528
- #format(range) {
529
- if (range === null) {
530
- return '';
531
- }
532
- return new Intl.DateTimeFormat(this.#locale(), { dateStyle: 'medium', timeZone: 'UTC' }).formatRange(Date.parse(range.start), Date.parse(range.end));
533
- }
534
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDateRangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
535
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: RtDateRangeComponent, isStandalone: true, selector: "rt-date-range", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.rt-date-range--disabled": "isDisabled()", "class.rt-date-range--invalid": "isInvalid() || textInvalid()", "class.rt-date-range--readonly": "isReadonly()", "class.rt-date-range--borderless": "!bordered()", "class.rt-date-range--appearance--fill": "appearance() === 'fill'", "class.rt-date-range--size--sm": "size() === 'sm'", "class.rt-date-range--size--lg": "size() === 'lg'" }, classAttribute: "rt-date-range" }, providers: [
536
- // Алиас базового токена — для contentChild(RtFormControlBase) в rt-field.
537
- { provide: RtFormControlBase, useExisting: forwardRef(() => RtDateRangeComponent) },
538
- ], viewQueries: [{ propertyName: "fieldEl", first: true, predicate: ["fieldEl"], descendants: true, isSignal: true }, { propertyName: "popover", first: true, predicate: RtPopoverDirective, descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.RtRadiusDirective, inputs: ["radius", "radius"] }], ngImport: i0, template: "<ng-container rtBlock=\"rt-date-range\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"date-range-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <input\n #fieldEl\n rtElem=\"field\"\n qa-dataid=\"date-range-control\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [value]=\"text()\"\n [disabled]=\"isDisabled()\"\n [attr.placeholder]=\"shape()\"\n [attr.title]=\"shapeTitle()\"\n [attr.size]=\"fieldSize()\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"isInvalid() || textInvalid() || null\"\n (input)=\"onTyped($event)\"\n (blur)=\"onBlur()\" />\n @if (showClearButton()) {\n <rt-icon-button\n rtElem=\"clear\"\n qa-dataid=\"date-range-clear\"\n icon=\"ico-close\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n [ariaLabel]=\"t().uiClear\"\n [tabIndex]=\"-1\"\n (clicked)=\"clear($event)\" />\n }\n <rt-icon-button\n rtElem=\"open\"\n qa-dataid=\"date-range-open\"\n icon=\"ico-calendar\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n rtPopoverAlign=\"end\"\n [ariaLabel]=\"t().uiOpenCalendar\"\n [disabled]=\"isDisabled()\"\n [rtPopover]=\"panelTpl\"\n [rtPopoverDisabled]=\"narrow() || isDisabled()\"\n (clicked)=\"openPanel()\" />\n\n <ng-template #panelTpl>\n <div rtElem=\"popup\" qa-dataid=\"date-range-popup\">\n <rt-date-range-panel [value]=\"range()\" [min]=\"min()\" [max]=\"max()\" (picked)=\"onPicked($event)\" (closed)=\"closePanel()\" />\n </div>\n </ng-template>\n\n @if (narrow()) {\n <rt-bottom-sheet qa-dataid=\"date-range-sheet\" [open]=\"sheetOpen()\" (openChange)=\"sheetOpen.set($event)\">\n @if (sheetOpen()) {\n <rt-date-range-panel\n sheet\n [value]=\"range()\"\n [min]=\"min()\"\n [max]=\"max()\"\n (picked)=\"onPicked($event)\"\n (closed)=\"closePanel()\" />\n }\n </rt-bottom-sheet>\n }\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range{--rt-date-range-radius: var(--rt-input-radius);--rt-date-range-fill-radius: var(--rt-radius-sm);position:relative;display:inline-flex;width:100%;min-height:var(--rt-input-height);box-sizing:border-box;align-items:center;padding:var(--rt-input-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-date-range-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);cursor:text;font-size:var(--rt-input-font-size);gap:var(--rt-space-sm);line-height:var(--rt-input-line-height);transition:var(--rt-input-transition)}.rt-date-range:focus-within{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-date-range--borderless{border-color:transparent}.rt-date-range--appearance--fill{border-color:transparent;border-radius:var(--rt-date-range-fill-radius) var(--rt-date-range-fill-radius) 0 0;border-bottom-color:var(--rt-color-field-fill-underline);background-color:var(--rt-color-bg-surface-subtle-2)}.rt-date-range--invalid{border-color:var(--rt-input-color-border-error)}.rt-date-range--invalid:focus-within{box-shadow:var(--rt-input-focus-shadow-error)}.rt-date-range--disabled{cursor:not-allowed;opacity:var(--rt-input-disabled-opacity)}.rt-date-range--size--sm{min-height:var(--rt-input-height-sm)}.rt-date-range--size--lg{min-height:var(--rt-input-height-lg)}.rt-date-range--readonly{padding-right:0;padding-left:0;border-color:transparent;background-color:transparent;cursor:default}.rt-date-range__readonly{color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size)}.rt-date-range__readonly--empty{color:var(--rt-field-value-empty-color)}.rt-date-range__field{min-width:0;flex:1 1 auto;padding:0;border:none;background:transparent;color:inherit;font:inherit;outline:none;text-overflow:ellipsis}.rt-date-range__field:disabled{cursor:not-allowed}.rt-date-range__clear,.rt-date-range__open{flex-shrink:0}.rt-date-range__popup{border:var(--rt-overlay-select-panel-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-overlay-select-radius);background-color:var(--rt-color-bg-surface);box-shadow:var(--rt-overlay-select-shadow)}.rt-date-range[data-rt-radius=none]{--rt-date-range-radius: var(--rt-radius-none)}.rt-date-range[data-rt-radius=xs]{--rt-date-range-radius: var(--rt-radius-xs)}.rt-date-range[data-rt-radius=sm]{--rt-date-range-radius: var(--rt-radius-sm)}.rt-date-range[data-rt-radius=ms]{--rt-date-range-radius: var(--rt-radius-ms)}.rt-date-range[data-rt-radius=md]{--rt-date-range-radius: var(--rt-radius-md)}.rt-date-range[data-rt-radius=lg]{--rt-date-range-radius: var(--rt-radius-lg)}.rt-date-range[data-rt-radius=xl]{--rt-date-range-radius: var(--rt-radius-xl)}.rt-date-range[data-rt-radius=\"2xl\"]{--rt-date-range-radius: var(--rt-radius-2xl)}.rt-date-range[data-rt-radius=full]{--rt-date-range-radius: var(--rt-radius-full)}}\n"], dependencies: [{ kind: "component", type:
539
- // standalone components / directives
540
- RtBottomSheetComponent, selector: "rt-bottom-sheet", inputs: ["open"], outputs: ["openChange"] }, { kind: "component", type: RtDateRangePanelComponent, selector: "rt-date-range-panel", inputs: ["value", "min", "max", "sheet", "now"], outputs: ["picked", "closed"] }, { kind: "component", type: RtIconButtonComponent, selector: "rt-icon-button", inputs: ["icon", "glyph", "ariaLabel", "variant", "iconColor", "iconFill", "size", "iconSize", "type", "tooltip", "tabIndex", "loading", "disabled", "active", "indicator"], outputs: ["clicked"] }, { kind: "directive", type: RtPopoverDirective, selector: "[rtPopover]", inputs: ["rtPopover", "rtPopoverTrigger", "rtPopoverWidth", "rtPopoverAlign", "rtPopoverFitViewport", "rtPopoverContext", "rtPopoverPanelClass", "rtPopoverDisabled", "rtPopoverOffsetY", "rtPopoverOffsetX"], outputs: ["rtPopoverOpened", "rtPopoverClosed"], exportAs: ["rtPopover"] }, { kind: "directive", type: BlockDirective, selector: "[rtBlock]", inputs: ["rtMod"] }, { kind: "directive", type: ElemDirective, selector: "[rtElem]", inputs: ["rtMod"] }, { kind: "directive", type: ModDirective, selector: "[rtMod]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
541
- }
542
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: RtDateRangeComponent, decorators: [{
543
- type: Component,
544
- args: [{ selector: 'rt-date-range', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [
545
- // standalone components / directives
546
- RtBottomSheetComponent,
547
- RtDateRangePanelComponent,
548
- RtIconButtonComponent,
549
- RtPopoverDirective,
550
- BlockDirective,
551
- ElemDirective,
552
- ModDirective,
553
- ], providers: [
554
- // Алиас базового токена — для contentChild(RtFormControlBase) в rt-field.
555
- { provide: RtFormControlBase, useExisting: forwardRef(() => RtDateRangeComponent) },
556
- ], hostDirectives: [{ directive: RtRadiusDirective, inputs: ['radius'] }], host: {
557
- class: BEM_BLOCK,
558
- '[class.rt-date-range--disabled]': 'isDisabled()',
559
- '[class.rt-date-range--invalid]': 'isInvalid() || textInvalid()',
560
- '[class.rt-date-range--readonly]': 'isReadonly()',
561
- '[class.rt-date-range--borderless]': '!bordered()',
562
- '[class.rt-date-range--appearance--fill]': "appearance() === 'fill'",
563
- '[class.rt-date-range--size--sm]': "size() === 'sm'",
564
- '[class.rt-date-range--size--lg]': "size() === 'lg'",
565
- }, template: "<ng-container rtBlock=\"rt-date-range\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"date-range-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '\u2014' }}</span>\n } @else {\n <input\n #fieldEl\n rtElem=\"field\"\n qa-dataid=\"date-range-control\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [value]=\"text()\"\n [disabled]=\"isDisabled()\"\n [attr.placeholder]=\"shape()\"\n [attr.title]=\"shapeTitle()\"\n [attr.size]=\"fieldSize()\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"isInvalid() || textInvalid() || null\"\n (input)=\"onTyped($event)\"\n (blur)=\"onBlur()\" />\n @if (showClearButton()) {\n <rt-icon-button\n rtElem=\"clear\"\n qa-dataid=\"date-range-clear\"\n icon=\"ico-close\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n [ariaLabel]=\"t().uiClear\"\n [tabIndex]=\"-1\"\n (clicked)=\"clear($event)\" />\n }\n <rt-icon-button\n rtElem=\"open\"\n qa-dataid=\"date-range-open\"\n icon=\"ico-calendar\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n rtPopoverAlign=\"end\"\n [ariaLabel]=\"t().uiOpenCalendar\"\n [disabled]=\"isDisabled()\"\n [rtPopover]=\"panelTpl\"\n [rtPopoverDisabled]=\"narrow() || isDisabled()\"\n (clicked)=\"openPanel()\" />\n\n <ng-template #panelTpl>\n <div rtElem=\"popup\" qa-dataid=\"date-range-popup\">\n <rt-date-range-panel [value]=\"range()\" [min]=\"min()\" [max]=\"max()\" (picked)=\"onPicked($event)\" (closed)=\"closePanel()\" />\n </div>\n </ng-template>\n\n @if (narrow()) {\n <rt-bottom-sheet qa-dataid=\"date-range-sheet\" [open]=\"sheetOpen()\" (openChange)=\"sheetOpen.set($event)\">\n @if (sheetOpen()) {\n <rt-date-range-panel\n sheet\n [value]=\"range()\"\n [min]=\"min()\"\n [max]=\"max()\"\n (picked)=\"onPicked($event)\"\n (closed)=\"closePanel()\" />\n }\n </rt-bottom-sheet>\n }\n }\n</ng-container>\n", styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range{--rt-date-range-radius: var(--rt-input-radius);--rt-date-range-fill-radius: var(--rt-radius-sm);position:relative;display:inline-flex;width:100%;min-height:var(--rt-input-height);box-sizing:border-box;align-items:center;padding:var(--rt-input-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-date-range-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);cursor:text;font-size:var(--rt-input-font-size);gap:var(--rt-space-sm);line-height:var(--rt-input-line-height);transition:var(--rt-input-transition)}.rt-date-range:focus-within{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-date-range--borderless{border-color:transparent}.rt-date-range--appearance--fill{border-color:transparent;border-radius:var(--rt-date-range-fill-radius) var(--rt-date-range-fill-radius) 0 0;border-bottom-color:var(--rt-color-field-fill-underline);background-color:var(--rt-color-bg-surface-subtle-2)}.rt-date-range--invalid{border-color:var(--rt-input-color-border-error)}.rt-date-range--invalid:focus-within{box-shadow:var(--rt-input-focus-shadow-error)}.rt-date-range--disabled{cursor:not-allowed;opacity:var(--rt-input-disabled-opacity)}.rt-date-range--size--sm{min-height:var(--rt-input-height-sm)}.rt-date-range--size--lg{min-height:var(--rt-input-height-lg)}.rt-date-range--readonly{padding-right:0;padding-left:0;border-color:transparent;background-color:transparent;cursor:default}.rt-date-range__readonly{color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size)}.rt-date-range__readonly--empty{color:var(--rt-field-value-empty-color)}.rt-date-range__field{min-width:0;flex:1 1 auto;padding:0;border:none;background:transparent;color:inherit;font:inherit;outline:none;text-overflow:ellipsis}.rt-date-range__field:disabled{cursor:not-allowed}.rt-date-range__clear,.rt-date-range__open{flex-shrink:0}.rt-date-range__popup{border:var(--rt-overlay-select-panel-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-overlay-select-radius);background-color:var(--rt-color-bg-surface);box-shadow:var(--rt-overlay-select-shadow)}.rt-date-range[data-rt-radius=none]{--rt-date-range-radius: var(--rt-radius-none)}.rt-date-range[data-rt-radius=xs]{--rt-date-range-radius: var(--rt-radius-xs)}.rt-date-range[data-rt-radius=sm]{--rt-date-range-radius: var(--rt-radius-sm)}.rt-date-range[data-rt-radius=ms]{--rt-date-range-radius: var(--rt-radius-ms)}.rt-date-range[data-rt-radius=md]{--rt-date-range-radius: var(--rt-radius-md)}.rt-date-range[data-rt-radius=lg]{--rt-date-range-radius: var(--rt-radius-lg)}.rt-date-range[data-rt-radius=xl]{--rt-date-range-radius: var(--rt-radius-xl)}.rt-date-range[data-rt-radius=\"2xl\"]{--rt-date-range-radius: var(--rt-radius-2xl)}.rt-date-range[data-rt-radius=full]{--rt-date-range-radius: var(--rt-radius-full)}}\n"] }]
566
- }], propDecorators: { fieldEl: [{ type: i0.ViewChild, args: ['fieldEl', { isSignal: true }] }], popover: [{ type: i0.ViewChild, args: [i0.forwardRef(() => RtPopoverDirective), { isSignal: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
567
-
568
- /**
569
- * Generated bundle index. Do not edit.
570
- */
571
-
189
+ var RtDateRangePanelComponent = class RtDateRangePanelComponent {
190
+ constructor() {
191
+ this.#locale = inject(RT_KIT_LOCALE);
192
+ this.#openedAt = /* @__PURE__ */ new Date();
193
+ this.#firstDay = computed(() => rtDateFirstDay(this.#locale()), ...ngDevMode ? [{ debugName: "#firstDay" }] : /* istanbul ignore next */ []);
194
+ this.t = inject(RT_KIT_LABELS);
195
+ this.weekdays = computed(() => rtDateWeekdays(this.#locale()), ...ngDevMode ? [{ debugName: "weekdays" }] : /* istanbul ignore next */ []);
196
+ this.today = computed(() => rtDateNow(this.now() ?? this.#openedAt, 1).day, ...ngDevMode ? [{ debugName: "today" }] : /* istanbul ignore next */ []);
197
+ this.start = linkedSignal(() => this.value()?.start ?? null, ...ngDevMode ? [{ debugName: "start" }] : /* istanbul ignore next */ []);
198
+ this.end = linkedSignal(() => this.value()?.end ?? null, ...ngDevMode ? [{ debugName: "end" }] : /* istanbul ignore next */ []);
199
+ this.hover = signal(null, ...ngDevMode ? [{ debugName: "hover" }] : /* istanbul ignore next */ []);
200
+ this.activeKey = signal(null, ...ngDevMode ? [{ debugName: "activeKey" }] : /* istanbul ignore next */ []);
201
+ this.shownMonth = linkedSignal(() => (this.value()?.start ?? this.today()).slice(0, MONTH_LEN), ...ngDevMode ? [{ debugName: "shownMonth" }] : /* istanbul ignore next */ []);
202
+ this.draft = computed(() => {
203
+ const start = this.start();
204
+ const end = this.end();
205
+ return start === null || end === null ? null : {
206
+ start,
207
+ end
208
+ };
209
+ }, ...ngDevMode ? [{ debugName: "draft" }] : /* istanbul ignore next */ []);
210
+ this.months = computed(() => {
211
+ const ctx = {
212
+ locale: this.#locale(),
213
+ today: this.today(),
214
+ start: this.start(),
215
+ end: this.end(),
216
+ hover: this.hover(),
217
+ min: this.min(),
218
+ max: this.max()
219
+ };
220
+ return this.#shown().map((month) => rtRangeMonth(month, ctx));
221
+ }, ...ngDevMode ? [{ debugName: "months" }] : /* istanbul ignore next */ []);
222
+ this.canPrev = computed(() => rtDateCanPage(this.shownMonth(), -1, this.min(), this.max()), ...ngDevMode ? [{ debugName: "canPrev" }] : /* istanbul ignore next */ []);
223
+ this.canNext = computed(() => rtDateCanPage(this.#lastShown(), 1, this.min(), this.max()), ...ngDevMode ? [{ debugName: "canNext" }] : /* istanbul ignore next */ []);
224
+ this.presets = computed(() => {
225
+ const labels = this.t();
226
+ const chosen = rtRangePresetOf(this.draft(), this.today());
227
+ return rtRangePresetCells(this.today(), this.min(), this.max()).map((cell) => ({
228
+ cell,
229
+ label: labels[PRESET_LABELS[cell.preset]],
230
+ chosen: cell.preset === chosen
231
+ }));
232
+ }, ...ngDevMode ? [{ debugName: "presets" }] : /* istanbul ignore next */ []);
233
+ this.daysText = rtKitLabel(computed(() => {
234
+ const draft = this.draft();
235
+ return draft === null ? "" : DAY_LABELS[rtRangePlural(rtRangeDays(draft), this.#locale())];
236
+ }), computed(() => {
237
+ const draft = this.draft();
238
+ return { count: draft === null ? 0 : rtRangeDays(draft) };
239
+ }));
240
+ this.summary = computed(() => {
241
+ const draft = this.draft();
242
+ if (draft === null) return this.start() === null ? this.t().uiPickStartDate : this.t().uiPickEndDate;
243
+ return this.sheet() ? this.daysText() : `${rtRangeDates(draft, this.#locale())} · ${this.daysText()}`;
244
+ }, ...ngDevMode ? [{ debugName: "summary" }] : /* istanbul ignore next */ []);
245
+ this.value = input(null, ...ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []);
246
+ this.min = input(null, ...ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []);
247
+ this.max = input(null, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
248
+ this.sheet = input(false, {
249
+ ...ngDevMode ? { debugName: "sheet" } : /* istanbul ignore next */ {},
250
+ transform: booleanAttribute
251
+ });
252
+ this.now = input(null, ...ngDevMode ? [{ debugName: "now" }] : /* istanbul ignore next */ []);
253
+ this.picked = output();
254
+ this.closed = output();
255
+ }
256
+ #locale;
257
+ #openedAt;
258
+ #firstDay;
259
+ pickDay(day) {
260
+ this.activeKey.set(day.key);
261
+ const start = this.start();
262
+ if (start === null || this.end() !== null) {
263
+ this.start.set(day.key);
264
+ this.end.set(null);
265
+ return;
266
+ }
267
+ const range = rtRangeOrder(start, day.key);
268
+ this.start.set(range.start);
269
+ this.end.set(range.end);
270
+ this.hover.set(null);
271
+ }
272
+ onHover(day) {
273
+ this.hover.set(day?.key ?? null);
274
+ }
275
+ pickPreset(cell) {
276
+ if (cell.disabled) return;
277
+ this.start.set(cell.range.start);
278
+ this.end.set(cell.range.end);
279
+ this.hover.set(null);
280
+ this.shownMonth.set(cell.range.start.slice(0, MONTH_LEN));
281
+ }
282
+ onGridKey(event) {
283
+ const next = rtDateGridKey(event.key, event.day.key, this.#firstDay(), this.min(), this.max());
284
+ if (next === null) return;
285
+ const month = next.slice(0, MONTH_LEN);
286
+ if (!this.#shown().includes(month)) {
287
+ const before = Number(month.replace("-", "")) < Number(this.shownMonth().replace("-", ""));
288
+ this.shownMonth.set(before ? month : rtDateAddMonths(month, 1 - this.#shown().length));
289
+ }
290
+ this.activeKey.set(next);
291
+ this.hover.set(next);
292
+ }
293
+ page(delta) {
294
+ this.shownMonth.set(rtDateAddMonths(this.shownMonth(), delta));
295
+ }
296
+ reset() {
297
+ this.start.set(null);
298
+ this.end.set(null);
299
+ this.hover.set(null);
300
+ }
301
+ apply() {
302
+ const draft = this.draft();
303
+ if (draft !== null) {
304
+ this.picked.emit(draft);
305
+ this.closed.emit();
306
+ }
307
+ }
308
+ #shown() {
309
+ const first = this.shownMonth();
310
+ return this.sheet() ? [first] : [first, rtDateAddMonths(first, 1)];
311
+ }
312
+ #lastShown() {
313
+ const shown = this.#shown();
314
+ return shown[shown.length - 1];
315
+ }
316
+ static {
317
+ this.ɵfac = i0.ɵɵngDeclareFactory({
318
+ minVersion: "12.0.0",
319
+ version: "22.2.2",
320
+ ngImport: i0,
321
+ type: RtDateRangePanelComponent,
322
+ deps: [],
323
+ target: i0.ɵɵFactoryTarget.Component
324
+ });
325
+ }
326
+ static {
327
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
328
+ minVersion: "17.0.0",
329
+ version: "22.2.2",
330
+ type: RtDateRangePanelComponent,
331
+ isStandalone: true,
332
+ selector: "rt-date-range-panel",
333
+ inputs: {
334
+ value: {
335
+ classPropertyName: "value",
336
+ publicName: "value",
337
+ isSignal: true,
338
+ isRequired: false,
339
+ transformFunction: null
340
+ },
341
+ min: {
342
+ classPropertyName: "min",
343
+ publicName: "min",
344
+ isSignal: true,
345
+ isRequired: false,
346
+ transformFunction: null
347
+ },
348
+ max: {
349
+ classPropertyName: "max",
350
+ publicName: "max",
351
+ isSignal: true,
352
+ isRequired: false,
353
+ transformFunction: null
354
+ },
355
+ sheet: {
356
+ classPropertyName: "sheet",
357
+ publicName: "sheet",
358
+ isSignal: true,
359
+ isRequired: false,
360
+ transformFunction: null
361
+ },
362
+ now: {
363
+ classPropertyName: "now",
364
+ publicName: "now",
365
+ isSignal: true,
366
+ isRequired: false,
367
+ transformFunction: null
368
+ }
369
+ },
370
+ outputs: {
371
+ picked: "picked",
372
+ closed: "closed"
373
+ },
374
+ host: {
375
+ listeners: { "keydown.escape": "closed.emit()" },
376
+ properties: { "class.rt-date-range-panel--sheet": "sheet()" },
377
+ classAttribute: "rt-date-range-panel"
378
+ },
379
+ ngImport: i0,
380
+ template: "<ng-container rtBlock=\"rt-date-range-panel\">\n @if (sheet()) {\n <p rtElem=\"title\" qa-dataid=\"date-range-title\">{{ t().uiPeriod }}</p>\n }\n\n <div rtElem=\"body\">\n <div rtElem=\"presets\" qa-dataid=\"date-range-presets\" role=\"group\" [attr.aria-label]=\"t().uiQuickRanges\">\n @for (item of presets(); track item.cell.preset) {\n <button\n rtButton\n rtElem=\"preset\"\n qa-dataid=\"date-range-preset\"\n type=\"button\"\n size=\"sm\"\n [theme]=\"item.chosen ? 'primary' : 'secondary'\"\n [appearance]=\"sheet() ? 'outlined' : 'text'\"\n [attr.data-preset]=\"item.cell.preset\"\n [label]=\"item.label\"\n [attr.aria-label]=\"item.label\"\n [pressed]=\"item.chosen\"\n [disabled]=\"item.cell.disabled\"\n (click)=\"pickPreset(item.cell)\"></button>\n }\n </div>\n\n <rt-calendar\n rtElem=\"calendar\"\n qa-dataid=\"date-range-calendar\"\n grid\n [months]=\"months()\"\n [weekdayLabels]=\"weekdays()\"\n [canPrev]=\"canPrev()\"\n [canNext]=\"canNext()\"\n [activeKey]=\"activeKey()\"\n [prevAriaLabel]=\"t().uiPrevMonth\"\n [nextAriaLabel]=\"t().uiNextMonth\"\n (prevMonth)=\"page(-1)\"\n (nextMonth)=\"page(1)\"\n (dayClick)=\"pickDay($event)\"\n (dayHover)=\"onHover($event)\"\n (gridKey)=\"onGridKey($event)\" />\n </div>\n\n <div rtElem=\"footer\">\n <span rtElem=\"summary\" qa-dataid=\"date-range-summary\" aria-live=\"polite\">{{ summary() }}</span>\n <button\n rtButton\n qa-dataid=\"date-range-reset\"\n theme=\"primary\"\n appearance=\"text\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiReset\"\n [attr.aria-label]=\"t().uiReset\"\n (click)=\"reset()\"></button>\n <button\n rtButton\n qa-dataid=\"date-range-apply\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiApply\"\n [attr.aria-label]=\"t().uiApply\"\n [disabled]=\"draft() === null\"\n (click)=\"apply()\"></button>\n </div>\n</ng-container>\n",
381
+ styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range-panel{--rt-date-range-panel-sheet-day-size: calc(var(--rt-size-10) + var(--rt-size-1));--rt-date-range-panel-divider-width: var(--rt-border-width-thin);display:flex;flex-direction:column;padding:var(--rt-space-4);gap:var(--rt-space-4)}.rt-date-range-panel__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-lg);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-date-range-panel__body{display:flex;align-items:flex-start;gap:var(--rt-space-4)}.rt-date-range-panel__presets{display:flex;flex:0 0 auto;flex-direction:column;align-self:stretch;padding-right:var(--rt-space-4);border-right:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-1)}.rt-date-range-panel__preset{justify-content:flex-start;white-space:nowrap}.rt-date-range-panel .rt-date-range-panel__calendar{--rt-calendar-day-justify: center;--rt-calendar-column-gap: 0;--rt-calendar-range-inner-radius: 0;flex:1 1 auto;min-inline-size:calc(var(--rt-size-10) * 14 + var(--rt-space-6))}.rt-date-range-panel__footer{display:flex;align-items:center;padding-top:var(--rt-space-2);border-top:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-2)}.rt-date-range-panel__summary{flex:1 1 auto;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-date-range-panel--sheet{padding-inline:0}.rt-date-range-panel--sheet .rt-date-range-panel__body{flex-direction:column;align-items:stretch}.rt-date-range-panel--sheet .rt-date-range-panel__presets{flex-direction:row;padding-right:0;padding-bottom:var(--rt-space-1);border-right:none;gap:var(--rt-space-2);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.rt-date-range-panel--sheet .rt-date-range-panel__preset{flex:0 0 auto}.rt-date-range-panel--sheet .rt-date-range-panel__calendar{--rt-calendar-month-count: 1;--rt-calendar-day-size: var(--rt-date-range-panel-sheet-day-size);min-inline-size:0}}\n"],
382
+ dependencies: [
383
+ {
384
+ kind: "directive",
385
+ type: BlockDirective,
386
+ selector: "[rtBlock]",
387
+ inputs: ["rtMod"]
388
+ },
389
+ {
390
+ kind: "directive",
391
+ type: ElemDirective,
392
+ selector: "[rtElem]",
393
+ inputs: ["rtMod"]
394
+ },
395
+ {
396
+ kind: "directive",
397
+ type: RtButtonDirective,
398
+ selector: "button[rtButton], a[rtButton]",
399
+ inputs: [
400
+ "label",
401
+ "icon",
402
+ "iconPos",
403
+ "theme",
404
+ "appearance",
405
+ "size",
406
+ "loading",
407
+ "loadingIcon",
408
+ "loadingLabel",
409
+ "pressed"
410
+ ]
411
+ },
412
+ {
413
+ kind: "component",
414
+ type: RtCalendarComponent,
415
+ selector: "rt-calendar",
416
+ inputs: [
417
+ "months",
418
+ "weekdayLabels",
419
+ "canPrev",
420
+ "canNext",
421
+ "prevAriaLabel",
422
+ "nextAriaLabel",
423
+ "sublabelsLoading",
424
+ "grid",
425
+ "activeKey",
426
+ "titleAction",
427
+ "headerTitle"
428
+ ],
429
+ outputs: [
430
+ "prevMonth",
431
+ "nextMonth",
432
+ "dayClick",
433
+ "gridKey",
434
+ "titleClick",
435
+ "dayHover"
436
+ ]
437
+ }
438
+ ],
439
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
440
+ encapsulation: i0.ViewEncapsulation.None
441
+ });
442
+ }
443
+ };
444
+ i0.ɵɵngDeclareClassMetadata({
445
+ minVersion: "12.0.0",
446
+ version: "22.2.2",
447
+ ngImport: i0,
448
+ type: RtDateRangePanelComponent,
449
+ decorators: [{
450
+ type: Component,
451
+ args: [{
452
+ selector: "rt-date-range-panel",
453
+ changeDetection: ChangeDetectionStrategy.OnPush,
454
+ encapsulation: ViewEncapsulation.None,
455
+ imports: [
456
+ BlockDirective,
457
+ ElemDirective,
458
+ RtButtonDirective,
459
+ RtCalendarComponent
460
+ ],
461
+ host: {
462
+ class: BEM_BLOCK$1,
463
+ "[class.rt-date-range-panel--sheet]": "sheet()",
464
+ "(keydown.escape)": "closed.emit()"
465
+ },
466
+ template: "<ng-container rtBlock=\"rt-date-range-panel\">\n @if (sheet()) {\n <p rtElem=\"title\" qa-dataid=\"date-range-title\">{{ t().uiPeriod }}</p>\n }\n\n <div rtElem=\"body\">\n <div rtElem=\"presets\" qa-dataid=\"date-range-presets\" role=\"group\" [attr.aria-label]=\"t().uiQuickRanges\">\n @for (item of presets(); track item.cell.preset) {\n <button\n rtButton\n rtElem=\"preset\"\n qa-dataid=\"date-range-preset\"\n type=\"button\"\n size=\"sm\"\n [theme]=\"item.chosen ? 'primary' : 'secondary'\"\n [appearance]=\"sheet() ? 'outlined' : 'text'\"\n [attr.data-preset]=\"item.cell.preset\"\n [label]=\"item.label\"\n [attr.aria-label]=\"item.label\"\n [pressed]=\"item.chosen\"\n [disabled]=\"item.cell.disabled\"\n (click)=\"pickPreset(item.cell)\"></button>\n }\n </div>\n\n <rt-calendar\n rtElem=\"calendar\"\n qa-dataid=\"date-range-calendar\"\n grid\n [months]=\"months()\"\n [weekdayLabels]=\"weekdays()\"\n [canPrev]=\"canPrev()\"\n [canNext]=\"canNext()\"\n [activeKey]=\"activeKey()\"\n [prevAriaLabel]=\"t().uiPrevMonth\"\n [nextAriaLabel]=\"t().uiNextMonth\"\n (prevMonth)=\"page(-1)\"\n (nextMonth)=\"page(1)\"\n (dayClick)=\"pickDay($event)\"\n (dayHover)=\"onHover($event)\"\n (gridKey)=\"onGridKey($event)\" />\n </div>\n\n <div rtElem=\"footer\">\n <span rtElem=\"summary\" qa-dataid=\"date-range-summary\" aria-live=\"polite\">{{ summary() }}</span>\n <button\n rtButton\n qa-dataid=\"date-range-reset\"\n theme=\"primary\"\n appearance=\"text\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiReset\"\n [attr.aria-label]=\"t().uiReset\"\n (click)=\"reset()\"></button>\n <button\n rtButton\n qa-dataid=\"date-range-apply\"\n size=\"sm\"\n type=\"button\"\n [label]=\"t().uiApply\"\n [attr.aria-label]=\"t().uiApply\"\n [disabled]=\"draft() === null\"\n (click)=\"apply()\"></button>\n </div>\n</ng-container>\n",
467
+ styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range-panel{--rt-date-range-panel-sheet-day-size: calc(var(--rt-size-10) + var(--rt-size-1));--rt-date-range-panel-divider-width: var(--rt-border-width-thin);display:flex;flex-direction:column;padding:var(--rt-space-4);gap:var(--rt-space-4)}.rt-date-range-panel__title{margin:0;color:var(--rt-color-text-primary);font-size:var(--rt-text-lg);font-weight:var(--rt-font-weight-semibold);text-align:center}.rt-date-range-panel__body{display:flex;align-items:flex-start;gap:var(--rt-space-4)}.rt-date-range-panel__presets{display:flex;flex:0 0 auto;flex-direction:column;align-self:stretch;padding-right:var(--rt-space-4);border-right:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-1)}.rt-date-range-panel__preset{justify-content:flex-start;white-space:nowrap}.rt-date-range-panel .rt-date-range-panel__calendar{--rt-calendar-day-justify: center;--rt-calendar-column-gap: 0;--rt-calendar-range-inner-radius: 0;flex:1 1 auto;min-inline-size:calc(var(--rt-size-10) * 14 + var(--rt-space-6))}.rt-date-range-panel__footer{display:flex;align-items:center;padding-top:var(--rt-space-2);border-top:var(--rt-date-range-panel-divider-width) solid var(--rt-color-border-subtle);gap:var(--rt-space-2)}.rt-date-range-panel__summary{flex:1 1 auto;color:var(--rt-color-text-muted);font-size:var(--rt-text-sm)}.rt-date-range-panel--sheet{padding-inline:0}.rt-date-range-panel--sheet .rt-date-range-panel__body{flex-direction:column;align-items:stretch}.rt-date-range-panel--sheet .rt-date-range-panel__presets{flex-direction:row;padding-right:0;padding-bottom:var(--rt-space-1);border-right:none;gap:var(--rt-space-2);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none}.rt-date-range-panel--sheet .rt-date-range-panel__preset{flex:0 0 auto}.rt-date-range-panel--sheet .rt-date-range-panel__calendar{--rt-calendar-month-count: 1;--rt-calendar-day-size: var(--rt-date-range-panel-sheet-day-size);min-inline-size:0}}\n"]
468
+ }]
469
+ }],
470
+ propDecorators: {
471
+ value: [{
472
+ type: i0.Input,
473
+ args: [{
474
+ isSignal: true,
475
+ alias: "value",
476
+ required: false
477
+ }]
478
+ }],
479
+ min: [{
480
+ type: i0.Input,
481
+ args: [{
482
+ isSignal: true,
483
+ alias: "min",
484
+ required: false
485
+ }]
486
+ }],
487
+ max: [{
488
+ type: i0.Input,
489
+ args: [{
490
+ isSignal: true,
491
+ alias: "max",
492
+ required: false
493
+ }]
494
+ }],
495
+ sheet: [{
496
+ type: i0.Input,
497
+ args: [{
498
+ isSignal: true,
499
+ alias: "sheet",
500
+ required: false
501
+ }]
502
+ }],
503
+ now: [{
504
+ type: i0.Input,
505
+ args: [{
506
+ isSignal: true,
507
+ alias: "now",
508
+ required: false
509
+ }]
510
+ }],
511
+ picked: [{
512
+ type: i0.Output,
513
+ args: ["picked"]
514
+ }],
515
+ closed: [{
516
+ type: i0.Output,
517
+ args: ["closed"]
518
+ }]
519
+ }
520
+ });
521
+ const BEM_BLOCK = "rt-date-range";
522
+ var RtDateRangeComponent = class RtDateRangeComponent extends RtFormControlBase {
523
+ constructor() {
524
+ super(...arguments);
525
+ this.#locale = inject(RT_KIT_LOCALE);
526
+ this.#layout = computed(() => rtDateLayout(this.#locale()), ...ngDevMode ? [{ debugName: "#layout" }] : /* istanbul ignore next */ []);
527
+ this.t = inject(RT_KIT_LABELS);
528
+ this.narrow = inject(BreakpointsService).narrow;
529
+ this.fieldEl = viewChild("fieldEl", ...ngDevMode ? [{ debugName: "fieldEl" }] : /* istanbul ignore next */ []);
530
+ this.popover = viewChild(RtPopoverDirective, ...ngDevMode ? [{ debugName: "popover" }] : /* istanbul ignore next */ []);
531
+ this.textInvalid = signal(false, ...ngDevMode ? [{ debugName: "textInvalid" }] : /* istanbul ignore next */ []);
532
+ this.sheetOpen = signal(false, ...ngDevMode ? [{ debugName: "sheetOpen" }] : /* istanbul ignore next */ []);
533
+ this.shape = computed(() => {
534
+ const labels = this.t();
535
+ return rtRangeShape(this.#layout(), {
536
+ day: labels.uiShapeDay,
537
+ month: labels.uiShapeMonth,
538
+ year: labels.uiShapeYear,
539
+ hour: labels.uiShapeHour,
540
+ minute: labels.uiShapeMinute
541
+ });
542
+ }, ...ngDevMode ? [{ debugName: "shape" }] : /* istanbul ignore next */ []);
543
+ this.range = computed(() => rtRangeRead(this.value()), ...ngDevMode ? [{ debugName: "range" }] : /* istanbul ignore next */ []);
544
+ this.text = computed(() => rtRangeText(this.range(), this.#layout()), ...ngDevMode ? [{ debugName: "text" }] : /* istanbul ignore next */ []);
545
+ this.hasValue = computed(() => this.range() !== null, ...ngDevMode ? [{ debugName: "hasValue" }] : /* istanbul ignore next */ []);
546
+ this.fieldSize = computed(() => this.shape().length, ...ngDevMode ? [{ debugName: "fieldSize" }] : /* istanbul ignore next */ []);
547
+ this.shapeTitle = computed(() => this.hasValue() ? null : this.shape(), ...ngDevMode ? [{ debugName: "shapeTitle" }] : /* istanbul ignore next */ []);
548
+ this.appearance = input("outline", ...ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []);
549
+ this.displayText = computed(() => this.#format(this.range()), ...ngDevMode ? [{ debugName: "displayText" }] : /* istanbul ignore next */ []);
550
+ this.min = input(null, ...ngDevMode ? [{ debugName: "min" }] : /* istanbul ignore next */ []);
551
+ this.max = input(null, ...ngDevMode ? [{ debugName: "max" }] : /* istanbul ignore next */ []);
552
+ }
553
+ #locale;
554
+ #layout;
555
+ writeValue(value) {
556
+ super.writeValue(value);
557
+ this.textInvalid.set(false);
558
+ }
559
+ getEmptyValue() {
560
+ return null;
561
+ }
562
+ focusAfterClear() {
563
+ this.fieldEl()?.nativeElement.focus();
564
+ }
565
+ clearValue() {
566
+ super.clearValue();
567
+ this.#accept(null);
568
+ }
569
+ onTyped(event) {
570
+ const text = event.target.value;
571
+ if (text.trim() === "") {
572
+ this.#commit(null);
573
+ return;
574
+ }
575
+ const read = rtRangeParse(text, this.#layout());
576
+ if (read === null || !rtRangeInBounds(read, this.min(), this.max())) {
577
+ this.textInvalid.set(true);
578
+ return;
579
+ }
580
+ this.#commit(read);
581
+ }
582
+ openPanel() {
583
+ if (this.narrow() && !this.isDisabled()) this.sheetOpen.set(true);
584
+ }
585
+ closePanel() {
586
+ this.sheetOpen.set(false);
587
+ this.popover()?.close();
588
+ }
589
+ onPicked(value) {
590
+ this.#commit(value);
591
+ this.markTouched();
592
+ }
593
+ onBlur() {
594
+ this.markTouched();
595
+ }
596
+ #commit(value) {
597
+ this.value.set(value);
598
+ this.emitChange(value);
599
+ this.#accept(value);
600
+ }
601
+ #accept(value) {
602
+ this.textInvalid.set(false);
603
+ const node = this.fieldEl()?.nativeElement;
604
+ if (node !== void 0) node.value = rtRangeText(value, this.#layout());
605
+ }
606
+ #format(range) {
607
+ if (range === null) return "";
608
+ return new Intl.DateTimeFormat(this.#locale(), {
609
+ dateStyle: "medium",
610
+ timeZone: "UTC"
611
+ }).formatRange(Date.parse(range.start), Date.parse(range.end));
612
+ }
613
+ static {
614
+ this.ɵfac = i0.ɵɵngDeclareFactory({
615
+ minVersion: "12.0.0",
616
+ version: "22.2.2",
617
+ ngImport: i0,
618
+ type: RtDateRangeComponent,
619
+ deps: null,
620
+ target: i0.ɵɵFactoryTarget.Component
621
+ });
622
+ }
623
+ static {
624
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
625
+ minVersion: "17.0.0",
626
+ version: "22.2.2",
627
+ type: RtDateRangeComponent,
628
+ isStandalone: true,
629
+ selector: "rt-date-range",
630
+ inputs: {
631
+ appearance: {
632
+ classPropertyName: "appearance",
633
+ publicName: "appearance",
634
+ isSignal: true,
635
+ isRequired: false,
636
+ transformFunction: null
637
+ },
638
+ min: {
639
+ classPropertyName: "min",
640
+ publicName: "min",
641
+ isSignal: true,
642
+ isRequired: false,
643
+ transformFunction: null
644
+ },
645
+ max: {
646
+ classPropertyName: "max",
647
+ publicName: "max",
648
+ isSignal: true,
649
+ isRequired: false,
650
+ transformFunction: null
651
+ }
652
+ },
653
+ host: {
654
+ properties: {
655
+ "class.rt-date-range--disabled": "isDisabled()",
656
+ "class.rt-date-range--invalid": "isInvalid() || textInvalid()",
657
+ "class.rt-date-range--readonly": "isReadonly()",
658
+ "class.rt-date-range--borderless": "!bordered()",
659
+ "class.rt-date-range--appearance--fill": "appearance() === 'fill'",
660
+ "class.rt-date-range--size--sm": "size() === 'sm'",
661
+ "class.rt-date-range--size--lg": "size() === 'lg'"
662
+ },
663
+ classAttribute: "rt-date-range"
664
+ },
665
+ providers: [{
666
+ provide: RtFormControlBase,
667
+ useExisting: forwardRef(() => RtDateRangeComponent)
668
+ }],
669
+ viewQueries: [{
670
+ propertyName: "fieldEl",
671
+ first: true,
672
+ predicate: ["fieldEl"],
673
+ descendants: true,
674
+ isSignal: true
675
+ }, {
676
+ propertyName: "popover",
677
+ first: true,
678
+ predicate: RtPopoverDirective,
679
+ descendants: true,
680
+ isSignal: true
681
+ }],
682
+ usesInheritance: true,
683
+ hostDirectives: [{
684
+ directive: i1.RtRadiusDirective,
685
+ inputs: ["radius", "radius"]
686
+ }],
687
+ ngImport: i0,
688
+ template: "<ng-container rtBlock=\"rt-date-range\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"date-range-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '—' }}</span>\n } @else {\n <input\n #fieldEl\n rtElem=\"field\"\n qa-dataid=\"date-range-control\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [value]=\"text()\"\n [disabled]=\"isDisabled()\"\n [attr.placeholder]=\"shape()\"\n [attr.title]=\"shapeTitle()\"\n [attr.size]=\"fieldSize()\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"isInvalid() || textInvalid() || null\"\n (input)=\"onTyped($event)\"\n (blur)=\"onBlur()\" />\n @if (showClearButton()) {\n <rt-icon-button\n rtElem=\"clear\"\n qa-dataid=\"date-range-clear\"\n icon=\"ico-close\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n [ariaLabel]=\"t().uiClear\"\n [tabIndex]=\"-1\"\n (clicked)=\"clear($event)\" />\n }\n <rt-icon-button\n rtElem=\"open\"\n qa-dataid=\"date-range-open\"\n icon=\"ico-calendar\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n rtPopoverAlign=\"end\"\n [ariaLabel]=\"t().uiOpenCalendar\"\n [disabled]=\"isDisabled()\"\n [rtPopover]=\"panelTpl\"\n [rtPopoverDisabled]=\"narrow() || isDisabled()\"\n (clicked)=\"openPanel()\" />\n\n <ng-template #panelTpl>\n <div rtElem=\"popup\" qa-dataid=\"date-range-popup\">\n <rt-date-range-panel [value]=\"range()\" [min]=\"min()\" [max]=\"max()\" (picked)=\"onPicked($event)\" (closed)=\"closePanel()\" />\n </div>\n </ng-template>\n\n @if (narrow()) {\n <rt-bottom-sheet qa-dataid=\"date-range-sheet\" [open]=\"sheetOpen()\" (openChange)=\"sheetOpen.set($event)\">\n @if (sheetOpen()) {\n <rt-date-range-panel\n sheet\n [value]=\"range()\"\n [min]=\"min()\"\n [max]=\"max()\"\n (picked)=\"onPicked($event)\"\n (closed)=\"closePanel()\" />\n }\n </rt-bottom-sheet>\n }\n }\n</ng-container>\n",
689
+ styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range{--rt-date-range-radius: var(--rt-input-radius);--rt-date-range-fill-radius: var(--rt-radius-sm);position:relative;display:inline-flex;width:100%;min-height:var(--rt-input-height);box-sizing:border-box;align-items:center;padding:var(--rt-input-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-date-range-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);cursor:text;font-size:var(--rt-input-font-size);gap:var(--rt-space-sm);line-height:var(--rt-input-line-height);transition:var(--rt-input-transition)}.rt-date-range:focus-within{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-date-range--borderless{border-color:transparent}.rt-date-range--appearance--fill{border-color:transparent;border-radius:var(--rt-date-range-fill-radius) var(--rt-date-range-fill-radius) 0 0;border-bottom-color:var(--rt-color-field-fill-underline);background-color:var(--rt-color-bg-surface-subtle-2)}.rt-date-range--invalid{border-color:var(--rt-input-color-border-error)}.rt-date-range--invalid:focus-within{box-shadow:var(--rt-input-focus-shadow-error)}.rt-date-range--disabled{cursor:not-allowed;opacity:var(--rt-input-disabled-opacity)}.rt-date-range--size--sm{min-height:var(--rt-input-height-sm)}.rt-date-range--size--lg{min-height:var(--rt-input-height-lg)}.rt-date-range--readonly{padding-right:0;padding-left:0;border-color:transparent;background-color:transparent;cursor:default}.rt-date-range__readonly{color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size)}.rt-date-range__readonly--empty{color:var(--rt-field-value-empty-color)}.rt-date-range__field{min-width:0;flex:1 1 auto;padding:0;border:none;background:transparent;color:inherit;font:inherit;outline:none;text-overflow:ellipsis}.rt-date-range__field:disabled{cursor:not-allowed}.rt-date-range__clear,.rt-date-range__open{flex-shrink:0}.rt-date-range__popup{border:var(--rt-overlay-select-panel-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-overlay-select-radius);background-color:var(--rt-color-bg-surface);box-shadow:var(--rt-overlay-select-shadow)}.rt-date-range[data-rt-radius=none]{--rt-date-range-radius: var(--rt-radius-none)}.rt-date-range[data-rt-radius=xs]{--rt-date-range-radius: var(--rt-radius-xs)}.rt-date-range[data-rt-radius=sm]{--rt-date-range-radius: var(--rt-radius-sm)}.rt-date-range[data-rt-radius=ms]{--rt-date-range-radius: var(--rt-radius-ms)}.rt-date-range[data-rt-radius=md]{--rt-date-range-radius: var(--rt-radius-md)}.rt-date-range[data-rt-radius=lg]{--rt-date-range-radius: var(--rt-radius-lg)}.rt-date-range[data-rt-radius=xl]{--rt-date-range-radius: var(--rt-radius-xl)}.rt-date-range[data-rt-radius=\"2xl\"]{--rt-date-range-radius: var(--rt-radius-2xl)}.rt-date-range[data-rt-radius=full]{--rt-date-range-radius: var(--rt-radius-full)}}\n"],
690
+ dependencies: [
691
+ {
692
+ kind: "component",
693
+ type: RtBottomSheetComponent,
694
+ selector: "rt-bottom-sheet",
695
+ inputs: ["open"],
696
+ outputs: ["openChange"]
697
+ },
698
+ {
699
+ kind: "component",
700
+ type: RtDateRangePanelComponent,
701
+ selector: "rt-date-range-panel",
702
+ inputs: [
703
+ "value",
704
+ "min",
705
+ "max",
706
+ "sheet",
707
+ "now"
708
+ ],
709
+ outputs: ["picked", "closed"]
710
+ },
711
+ {
712
+ kind: "component",
713
+ type: RtIconButtonComponent,
714
+ selector: "rt-icon-button",
715
+ inputs: [
716
+ "icon",
717
+ "glyph",
718
+ "ariaLabel",
719
+ "variant",
720
+ "iconColor",
721
+ "iconFill",
722
+ "size",
723
+ "iconSize",
724
+ "type",
725
+ "tooltip",
726
+ "tooltipHideOnClick",
727
+ "tabIndex",
728
+ "loading",
729
+ "disabled",
730
+ "active",
731
+ "expanded",
732
+ "indicator"
733
+ ],
734
+ outputs: ["clicked"]
735
+ },
736
+ {
737
+ kind: "directive",
738
+ type: RtPopoverDirective,
739
+ selector: "[rtPopover]",
740
+ inputs: [
741
+ "rtPopover",
742
+ "rtPopoverTrigger",
743
+ "rtPopoverWidth",
744
+ "rtPopoverAlign",
745
+ "rtPopoverFitViewport",
746
+ "rtPopoverContext",
747
+ "rtPopoverPanelClass",
748
+ "rtPopoverDisabled",
749
+ "rtPopoverOffsetY",
750
+ "rtPopoverOffsetX",
751
+ "rtPopoverPositions"
752
+ ],
753
+ outputs: ["rtPopoverOpened", "rtPopoverClosed"],
754
+ exportAs: ["rtPopover"]
755
+ },
756
+ {
757
+ kind: "directive",
758
+ type: BlockDirective,
759
+ selector: "[rtBlock]",
760
+ inputs: ["rtMod"]
761
+ },
762
+ {
763
+ kind: "directive",
764
+ type: ElemDirective,
765
+ selector: "[rtElem]",
766
+ inputs: ["rtMod"]
767
+ },
768
+ {
769
+ kind: "directive",
770
+ type: ModDirective,
771
+ selector: "[rtMod]"
772
+ }
773
+ ],
774
+ changeDetection: i0.ChangeDetectionStrategy.OnPush,
775
+ encapsulation: i0.ViewEncapsulation.None
776
+ });
777
+ }
778
+ };
779
+ i0.ɵɵngDeclareClassMetadata({
780
+ minVersion: "12.0.0",
781
+ version: "22.2.2",
782
+ ngImport: i0,
783
+ type: RtDateRangeComponent,
784
+ decorators: [{
785
+ type: Component,
786
+ args: [{
787
+ selector: "rt-date-range",
788
+ changeDetection: ChangeDetectionStrategy.OnPush,
789
+ encapsulation: ViewEncapsulation.None,
790
+ imports: [
791
+ RtBottomSheetComponent,
792
+ RtDateRangePanelComponent,
793
+ RtIconButtonComponent,
794
+ RtPopoverDirective,
795
+ BlockDirective,
796
+ ElemDirective,
797
+ ModDirective
798
+ ],
799
+ providers: [{
800
+ provide: RtFormControlBase,
801
+ useExisting: forwardRef(() => RtDateRangeComponent)
802
+ }],
803
+ hostDirectives: [{
804
+ directive: RtRadiusDirective,
805
+ inputs: ["radius"]
806
+ }],
807
+ host: {
808
+ class: BEM_BLOCK,
809
+ "[class.rt-date-range--disabled]": "isDisabled()",
810
+ "[class.rt-date-range--invalid]": "isInvalid() || textInvalid()",
811
+ "[class.rt-date-range--readonly]": "isReadonly()",
812
+ "[class.rt-date-range--borderless]": "!bordered()",
813
+ "[class.rt-date-range--appearance--fill]": "appearance() === 'fill'",
814
+ "[class.rt-date-range--size--sm]": "size() === 'sm'",
815
+ "[class.rt-date-range--size--lg]": "size() === 'lg'"
816
+ },
817
+ template: "<ng-container rtBlock=\"rt-date-range\">\n @if (isReadonly()) {\n <span rtElem=\"readonly\" qa-dataid=\"date-range-readonly\" [rtMod]=\"{ empty: !displayText() }\">{{ displayText() || '—' }}</span>\n } @else {\n <input\n #fieldEl\n rtElem=\"field\"\n qa-dataid=\"date-range-control\"\n type=\"text\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n [value]=\"text()\"\n [disabled]=\"isDisabled()\"\n [attr.placeholder]=\"shape()\"\n [attr.title]=\"shapeTitle()\"\n [attr.size]=\"fieldSize()\"\n [attr.id]=\"effectiveControlId()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-invalid]=\"isInvalid() || textInvalid() || null\"\n (input)=\"onTyped($event)\"\n (blur)=\"onBlur()\" />\n @if (showClearButton()) {\n <rt-icon-button\n rtElem=\"clear\"\n qa-dataid=\"date-range-clear\"\n icon=\"ico-close\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n [ariaLabel]=\"t().uiClear\"\n [tabIndex]=\"-1\"\n (clicked)=\"clear($event)\" />\n }\n <rt-icon-button\n rtElem=\"open\"\n qa-dataid=\"date-range-open\"\n icon=\"ico-calendar\"\n size=\"sm\"\n variant=\"ghost\"\n iconColor=\"muted\"\n rtPopoverAlign=\"end\"\n [ariaLabel]=\"t().uiOpenCalendar\"\n [disabled]=\"isDisabled()\"\n [rtPopover]=\"panelTpl\"\n [rtPopoverDisabled]=\"narrow() || isDisabled()\"\n (clicked)=\"openPanel()\" />\n\n <ng-template #panelTpl>\n <div rtElem=\"popup\" qa-dataid=\"date-range-popup\">\n <rt-date-range-panel [value]=\"range()\" [min]=\"min()\" [max]=\"max()\" (picked)=\"onPicked($event)\" (closed)=\"closePanel()\" />\n </div>\n </ng-template>\n\n @if (narrow()) {\n <rt-bottom-sheet qa-dataid=\"date-range-sheet\" [open]=\"sheetOpen()\" (openChange)=\"sheetOpen.set($event)\">\n @if (sheetOpen()) {\n <rt-date-range-panel\n sheet\n [value]=\"range()\"\n [min]=\"min()\"\n [max]=\"max()\"\n (picked)=\"onPicked($event)\"\n (closed)=\"closePanel()\" />\n }\n </rt-bottom-sheet>\n }\n }\n</ng-container>\n",
818
+ styles: ["@charset \"UTF-8\";@layer rt-kit.components{.rt-date-range{--rt-date-range-radius: var(--rt-input-radius);--rt-date-range-fill-radius: var(--rt-radius-sm);position:relative;display:inline-flex;width:100%;min-height:var(--rt-input-height);box-sizing:border-box;align-items:center;padding:var(--rt-input-padding-y) var(--rt-input-padding-x);border:var(--rt-input-border-width) solid var(--rt-input-color-border);border-radius:var(--rt-date-range-radius);background-color:var(--rt-input-color-bg);color:var(--rt-input-color-text);cursor:text;font-size:var(--rt-input-font-size);gap:var(--rt-space-sm);line-height:var(--rt-input-line-height);transition:var(--rt-input-transition)}.rt-date-range:focus-within{border-color:var(--rt-input-color-border-focus);box-shadow:var(--rt-input-focus-shadow);outline:2px solid transparent;outline-offset:var(--rt-input-focus-outline-offset)}.rt-date-range--borderless{border-color:transparent}.rt-date-range--appearance--fill{border-color:transparent;border-radius:var(--rt-date-range-fill-radius) var(--rt-date-range-fill-radius) 0 0;border-bottom-color:var(--rt-color-field-fill-underline);background-color:var(--rt-color-bg-surface-subtle-2)}.rt-date-range--invalid{border-color:var(--rt-input-color-border-error)}.rt-date-range--invalid:focus-within{box-shadow:var(--rt-input-focus-shadow-error)}.rt-date-range--disabled{cursor:not-allowed;opacity:var(--rt-input-disabled-opacity)}.rt-date-range--size--sm{min-height:var(--rt-input-height-sm)}.rt-date-range--size--lg{min-height:var(--rt-input-height-lg)}.rt-date-range--readonly{padding-right:0;padding-left:0;border-color:transparent;background-color:transparent;cursor:default}.rt-date-range__readonly{color:var(--rt-field-value-color);font-size:var(--rt-field-value-font-size)}.rt-date-range__readonly--empty{color:var(--rt-field-value-empty-color)}.rt-date-range__field{min-width:0;flex:1 1 auto;padding:0;border:none;background:transparent;color:inherit;font:inherit;outline:none;text-overflow:ellipsis}.rt-date-range__field:disabled{cursor:not-allowed}.rt-date-range__clear,.rt-date-range__open{flex-shrink:0}.rt-date-range__popup{border:var(--rt-overlay-select-panel-border-width) solid var(--rt-color-border-subtle);border-radius:var(--rt-overlay-select-radius);background-color:var(--rt-color-bg-surface);box-shadow:var(--rt-overlay-select-shadow)}.rt-date-range[data-rt-radius=none]{--rt-date-range-radius: var(--rt-radius-none)}.rt-date-range[data-rt-radius=xs]{--rt-date-range-radius: var(--rt-radius-xs)}.rt-date-range[data-rt-radius=sm]{--rt-date-range-radius: var(--rt-radius-sm)}.rt-date-range[data-rt-radius=ms]{--rt-date-range-radius: var(--rt-radius-ms)}.rt-date-range[data-rt-radius=md]{--rt-date-range-radius: var(--rt-radius-md)}.rt-date-range[data-rt-radius=lg]{--rt-date-range-radius: var(--rt-radius-lg)}.rt-date-range[data-rt-radius=xl]{--rt-date-range-radius: var(--rt-radius-xl)}.rt-date-range[data-rt-radius=\"2xl\"]{--rt-date-range-radius: var(--rt-radius-2xl)}.rt-date-range[data-rt-radius=full]{--rt-date-range-radius: var(--rt-radius-full)}}\n"]
819
+ }]
820
+ }],
821
+ propDecorators: {
822
+ fieldEl: [{
823
+ type: i0.ViewChild,
824
+ args: ["fieldEl", { isSignal: true }]
825
+ }],
826
+ popover: [{
827
+ type: i0.ViewChild,
828
+ args: [i0.forwardRef(() => RtPopoverDirective), { isSignal: true }]
829
+ }],
830
+ appearance: [{
831
+ type: i0.Input,
832
+ args: [{
833
+ isSignal: true,
834
+ alias: "appearance",
835
+ required: false
836
+ }]
837
+ }],
838
+ min: [{
839
+ type: i0.Input,
840
+ args: [{
841
+ isSignal: true,
842
+ alias: "min",
843
+ required: false
844
+ }]
845
+ }],
846
+ max: [{
847
+ type: i0.Input,
848
+ args: [{
849
+ isSignal: true,
850
+ alias: "max",
851
+ required: false
852
+ }]
853
+ }]
854
+ }
855
+ });
572
856
  export { ERtDateRangePreset, RtDateRangeComponent };
573
- //# sourceMappingURL=rt-tools-ui-kit-v2-date-range.mjs.map
857
+
858
+ //# sourceMappingURL=rt-tools-ui-kit-v2-date-range.mjs.map