@rt-tools/ui-kit-v2 0.23.3 → 0.23.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +142 -71
- package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +467 -231
- package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +260 -91
- package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +80 -46
- package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +984 -697
- package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +452 -210
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +143 -52
- package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +158 -83
- package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +335 -0
- package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs +437 -363
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +430 -149
- package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-card.mjs +155 -71
- package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs +155 -0
- package/fesm2022/rt-tools-ui-kit-v2-carousel.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +215 -110
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +158 -75
- package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +769 -0
- package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +462 -253
- package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1276 -1316
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +185 -80
- package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2309 -2619
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +100 -44
- package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +290 -155
- package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +2097 -858
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +2247 -1176
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +1043 -705
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +810 -525
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +158 -138
- package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +177 -67
- package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +550 -477
- package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +185 -168
- package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +116 -43
- package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +585 -0
- package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +755 -259
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +3266 -1115
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +190 -55
- package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +283 -103
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs +393 -177
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +399 -207
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +288 -212
- package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +262 -116
- package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +57 -31
- package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +258 -90
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +249 -215
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-header.mjs +199 -71
- package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +231 -0
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +336 -0
- package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +451 -162
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +931 -686
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +664 -491
- package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +574 -222
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +150 -36
- package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +606 -0
- package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +461 -355
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs +338 -143
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +135 -48
- package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +166 -92
- package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +118 -56
- package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1054 -527
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-message.mjs +230 -104
- package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +210 -70
- package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +532 -311
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +125 -50
- package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-note.mjs +73 -43
- package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +161 -53
- package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +491 -310
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +374 -174
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +202 -159
- package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +438 -309
- package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs +135 -45
- package/fesm2022/rt-tools-ui-kit-v2-prompt-suggestion.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +293 -171
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +62 -55
- package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +3379 -1466
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +114 -116
- package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +406 -299
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +137 -36
- package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs +687 -468
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +2195 -1569
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +187 -48
- package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +242 -122
- package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +439 -0
- package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +218 -69
- package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +292 -91
- package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +225 -138
- package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +150 -116
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs +2462 -1583
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +647 -346
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +335 -121
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +217 -84
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +151 -72
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +697 -226
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +92 -38
- package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +752 -338
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +310 -129
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +286 -158
- package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +270 -134
- package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +322 -202
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +908 -0
- package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +785 -0
- package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +118 -63
- package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +783 -262
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +633 -294
- package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2.mjs +100 -103
- package/package.json +41 -1
- package/src/assets/icons/collapse-all.svg +9 -0
- package/src/assets/icons/expand-all.svg +9 -0
- package/src/assets/icons-material/collapse-all.fill.svg +5 -0
- package/src/assets/icons-material/collapse-all.svg +5 -0
- package/src/assets/icons-material/expand-all.fill.svg +5 -0
- package/src/assets/icons-material/expand-all.svg +5 -0
- package/src/assets/icons-material/undo.fill.svg +5 -0
- package/src/assets/icons-material/undo.svg +5 -0
- package/src/lib/components/bottom-sheet/CONTEXT.md +20 -2
- package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +35 -1
- package/src/lib/components/breadcrumbs/CONTEXT.md +37 -0
- package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +205 -0
- package/src/lib/components/carousel/CONTEXT.md +42 -0
- package/src/lib/components/carousel/rt-carousel.component.scss +117 -0
- package/src/lib/components/checkbox/CONTEXT.md +3 -0
- package/src/lib/components/checkbox/rt-checkbox.component.scss +9 -3
- package/src/lib/components/color-palette/CONTEXT.md +49 -0
- package/src/lib/components/color-palette/picker/rt-color-picker.component.scss +161 -0
- package/src/lib/components/color-palette/rt-color-palette.component.scss +132 -0
- package/src/lib/components/draggable-tree/CONTEXT.md +54 -0
- package/src/lib/components/draggable-tree/rt-draggable-tree.component.scss +219 -0
- package/src/lib/components/hybrid-tree/CONTEXT.md +31 -0
- package/src/lib/components/hybrid-tree-selector/CONTEXT.md +25 -0
- package/src/lib/components/icon-button/CONTEXT.md +3 -0
- package/src/lib/components/inline-edit/CONTEXT.md +41 -0
- package/src/lib/components/inline-edit/rt-inline-edit.component.scss +274 -0
- package/src/lib/components/popover/CONTEXT.md +3 -0
- package/src/lib/components/speed-menu/CONTEXT.md +34 -0
- package/src/lib/components/speed-menu/rt-speed-menu.component.scss +118 -0
- package/src/lib/components/tag/rt-tag.component.scss +12 -0
- package/src/lib/components/thread-list/CONTEXT.md +1 -0
- package/src/lib/components/thread-list/rt-thread-list.component.scss +2 -1
- package/src/lib/components/toolbar/CONTEXT.md +9 -4
- package/src/lib/components/toolbar/rt-toolbar.component.scss +10 -2
- package/src/lib/components/tooltip/CONTEXT.md +8 -1
- package/src/lib/components/tree/CONTEXT.md +66 -0
- package/src/lib/components/tree/rt-tree.component.scss +313 -0
- package/src/lib/components/tree-selector/CONTEXT.md +47 -0
- package/src/lib/components/tree-selector/rt-tree-selector.component.scss +121 -0
- package/src/styles/_primitives.scss +4 -0
- package/styles/tokens.css +3 -0
- package/types/rt-tools-ui-kit-v2-accordion.d.ts +31 -24
- package/types/rt-tools-ui-kit-v2-action-bar.d.ts +112 -91
- package/types/rt-tools-ui-kit-v2-ai-run-status.d.ts +64 -40
- package/types/rt-tools-ui-kit-v2-aside-section.d.ts +13 -10
- package/types/rt-tools-ui-kit-v2-aside.d.ts +268 -206
- package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +102 -61
- package/types/rt-tools-ui-kit-v2-bar-list.d.ts +39 -27
- package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +31 -20
- package/types/rt-tools-ui-kit-v2-breadcrumbs.d.ts +89 -0
- package/types/rt-tools-ui-kit-v2-button.d.ts +119 -59
- package/types/rt-tools-ui-kit-v2-calendar.d.ts +151 -86
- package/types/rt-tools-ui-kit-v2-card.d.ts +42 -21
- package/types/rt-tools-ui-kit-v2-carousel.d.ts +76 -0
- package/types/rt-tools-ui-kit-v2-checkbox.d.ts +48 -24
- package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +28 -20
- package/types/rt-tools-ui-kit-v2-color-palette.d.ts +208 -0
- package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +104 -47
- package/types/rt-tools-ui-kit-v2-container.d.ts +278 -221
- package/types/rt-tools-ui-kit-v2-copy-value.d.ts +39 -24
- package/types/rt-tools-ui-kit-v2-core.d.ts +856 -865
- package/types/rt-tools-ui-kit-v2-counter-row.d.ts +20 -12
- package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -38
- package/types/rt-tools-ui-kit-v2-data-list.d.ts +429 -264
- package/types/rt-tools-ui-kit-v2-data-table.d.ts +500 -351
- package/types/rt-tools-ui-kit-v2-date-picker.d.ts +164 -138
- package/types/rt-tools-ui-kit-v2-date-range.d.ts +102 -84
- package/types/rt-tools-ui-kit-v2-delta-view.d.ts +16 -13
- package/types/rt-tools-ui-kit-v2-detail-list.d.ts +23 -16
- package/types/rt-tools-ui-kit-v2-dialog.d.ts +130 -101
- package/types/rt-tools-ui-kit-v2-dot-field.d.ts +10 -13
- package/types/rt-tools-ui-kit-v2-download-link.d.ts +22 -17
- package/types/rt-tools-ui-kit-v2-draggable-tree.d.ts +132 -0
- package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +185 -96
- package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +904 -404
- package/types/rt-tools-ui-kit-v2-empty-state.d.ts +48 -19
- package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +67 -39
- package/types/rt-tools-ui-kit-v2-field.d.ts +90 -49
- package/types/rt-tools-ui-kit-v2-file-card.d.ts +115 -75
- package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -48
- package/types/rt-tools-ui-kit-v2-file-input.d.ts +53 -36
- package/types/rt-tools-ui-kit-v2-file-list.d.ts +5 -8
- package/types/rt-tools-ui-kit-v2-filter-control.d.ts +83 -49
- package/types/rt-tools-ui-kit-v2-form-control.d.ts +102 -74
- package/types/rt-tools-ui-kit-v2-header.d.ts +40 -22
- package/types/rt-tools-ui-kit-v2-hybrid-tree-selector.d.ts +14 -0
- package/types/rt-tools-ui-kit-v2-hybrid-tree.d.ts +72 -0
- package/types/rt-tools-ui-kit-v2-icon-button.d.ts +190 -90
- package/types/rt-tools-ui-kit-v2-icon.d.ts +160 -129
- package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +151 -111
- package/types/rt-tools-ui-kit-v2-image-upload.d.ts +159 -85
- package/types/rt-tools-ui-kit-v2-info-item.d.ts +26 -13
- package/types/rt-tools-ui-kit-v2-inline-edit.d.ts +194 -0
- package/types/rt-tools-ui-kit-v2-input-number.d.ts +102 -53
- package/types/rt-tools-ui-kit-v2-input.d.ts +82 -43
- package/types/rt-tools-ui-kit-v2-live-badge.d.ts +30 -17
- package/types/rt-tools-ui-kit-v2-logo.d.ts +49 -32
- package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +26 -17
- package/types/rt-tools-ui-kit-v2-menu.d.ts +272 -155
- package/types/rt-tools-ui-kit-v2-message.d.ts +59 -33
- package/types/rt-tools-ui-kit-v2-money-list.d.ts +36 -18
- package/types/rt-tools-ui-kit-v2-multiselect.d.ts +114 -80
- package/types/rt-tools-ui-kit-v2-night-grid.d.ts +34 -25
- package/types/rt-tools-ui-kit-v2-note.d.ts +12 -9
- package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +37 -16
- package/types/rt-tools-ui-kit-v2-page-header.d.ts +218 -150
- package/types/rt-tools-ui-kit-v2-pagination.d.ts +99 -63
- package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +61 -66
- package/types/rt-tools-ui-kit-v2-popover.d.ts +116 -55
- package/types/rt-tools-ui-kit-v2-prompt-suggestion.d.ts +26 -16
- package/types/rt-tools-ui-kit-v2-radio-button.d.ts +85 -43
- package/types/rt-tools-ui-kit-v2-radius.d.ts +18 -15
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +931 -590
- package/types/rt-tools-ui-kit-v2-ripple.d.ts +28 -25
- package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +60 -58
- package/types/rt-tools-ui-kit-v2-section-nav.d.ts +32 -22
- package/types/rt-tools-ui-kit-v2-select.d.ts +182 -139
- package/types/rt-tools-ui-kit-v2-side-menu.d.ts +452 -349
- package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +53 -20
- package/types/rt-tools-ui-kit-v2-skeleton.d.ts +55 -26
- package/types/rt-tools-ui-kit-v2-speed-menu.d.ts +131 -0
- package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -28
- package/types/rt-tools-ui-kit-v2-split-button.d.ts +96 -55
- package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +88 -60
- package/types/rt-tools-ui-kit-v2-stepper.d.ts +50 -37
- package/types/rt-tools-ui-kit-v2-table.d.ts +631 -480
- package/types/rt-tools-ui-kit-v2-tabs.d.ts +198 -113
- package/types/rt-tools-ui-kit-v2-tag.d.ts +106 -53
- package/types/rt-tools-ui-kit-v2-textarea.d.ts +48 -25
- package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +28 -26
- package/types/rt-tools-ui-kit-v2-thread-list.d.ts +154 -94
- package/types/rt-tools-ui-kit-v2-timeline.d.ts +30 -28
- package/types/rt-tools-ui-kit-v2-toast.d.ts +174 -98
- package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +132 -86
- package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +88 -50
- package/types/rt-tools-ui-kit-v2-toolbar.d.ts +30 -27
- package/types/rt-tools-ui-kit-v2-tooltip.d.ts +65 -41
- package/types/rt-tools-ui-kit-v2-tree-selector.d.ts +257 -0
- package/types/rt-tools-ui-kit-v2-tree.d.ts +282 -0
- package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +21 -24
- package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +195 -124
- package/types/rt-tools-ui-kit-v2-workspace.d.ts +122 -79
- package/types/rt-tools-ui-kit-v2.d.ts +100 -90
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +0 -1
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# `rt-tree`
|
|
2
|
+
|
|
3
|
+
```html
|
|
4
|
+
<rt-tree [nodes]="regions" [searchTerm]="term()" [showSelectAll]="true" [(value)]="chosen" (picked)="open($event)">
|
|
5
|
+
<ng-template rtTreeNodeEnd let-node>
|
|
6
|
+
<rt-tag size="sm" [value]="node.description ?? ''" />
|
|
7
|
+
</ng-template>
|
|
8
|
+
</rt-tree>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
| вход | тип | умолчание |
|
|
12
|
+
| --------------- | ------------------------------------- | -------------- |
|
|
13
|
+
| `nodes` | `ReadonlyArray<IRtTree.Node<TValue>>` | **обязателен** |
|
|
14
|
+
| `value` (model) | `ReadonlyArray<TValue>` | `[]` |
|
|
15
|
+
| `mode` | `'multiple' \| 'single' \| 'none'` | `'multiple'` |
|
|
16
|
+
| `cascade` | `boolean` | `true` |
|
|
17
|
+
| `searchTerm` | `string` | `''` |
|
|
18
|
+
| `showSelectAll` | `boolean` | `false` |
|
|
19
|
+
| `ariaLabel` | `string \| null` | `null` |
|
|
20
|
+
|
|
21
|
+
| выход | тип |
|
|
22
|
+
| ------------- | ----------------------- |
|
|
23
|
+
| `valueChange` | `ReadonlyArray<TValue>` |
|
|
24
|
+
| `picked` | `IRtTree.Node<TValue>` |
|
|
25
|
+
|
|
26
|
+
Публичные методы: `handleKeydown(event)`, `expandAll()`, `collapseAll()`, `clearHighlight()`.
|
|
27
|
+
|
|
28
|
+
## Главное, что нужно знать
|
|
29
|
+
|
|
30
|
+
**Дерево считает тот же модуль, что дерево вариантов у `rt-select` и `rt-multiselect`.** Строки,
|
|
31
|
+
листья, отметки ветвей, отбор по слову и боковые стрелки — функции `rt-select-tree.ts`. Свою копию
|
|
32
|
+
логики дерево не держит: две копии разошлись бы на первой правке.
|
|
33
|
+
|
|
34
|
+
**Узлы не меняются никогда.** Выбор живёт в `value`, каждый клик даёт новый массив. В каскаде
|
|
35
|
+
выбор держит только листья, а отметка ветки выводится из них.
|
|
36
|
+
|
|
37
|
+
## Края
|
|
38
|
+
|
|
39
|
+
- Без каскада клик меняет только сам узел, и в выборе может лежать значение ветки.
|
|
40
|
+
- В одиночном режиме повторный клик по выбранному узлу его не снимает.
|
|
41
|
+
- В режиме без отметок клик по листу отдаёт `picked`, клик по ветке её раскрывает.
|
|
42
|
+
- Выключенный узел не меняется ни кликом, ни «выбрать всё».
|
|
43
|
+
- Выключенное дерево не меняет выбор ничем и уходит из порядка Tab. Стрелка у ветки раскрывает её
|
|
44
|
+
и в нём: раскрытие — не выбор.
|
|
45
|
+
- `handleKeydown` отвечает, взята ли клавиша: незнакомую дерево не трогает, и приложение может
|
|
46
|
+
отдавать сюда каждую клавишу своего поля поиска.
|
|
47
|
+
- Ветки над выбранным раскрыты, когда дерево появилось. Дальше раскрытие меняют только человек
|
|
48
|
+
и методы: первый же выбор фиксирует его, и отметка ветки её не сворачивает.
|
|
49
|
+
- Отметку рисуют `rt-checkbox` и `rt-radio-button` кита. Они стоят с `inert`: фокус и нажатие
|
|
50
|
+
берёт строка, а контрол только показывает отметку.
|
|
51
|
+
- Подпись и описание строки обрезаются многоточием, и тогда полный текст показывает подсказка кита
|
|
52
|
+
в режиме `rtTooltipWhenTruncated`; у поместившегося текста подсказки нет.
|
|
53
|
+
- Расчёт выбора открыт наследнику четырьмя методами: `rowState`, `selectAllMarkOf`,
|
|
54
|
+
`selectAllChoice` и `nextChoice`. Так `rt-hybrid-tree` берёт эту разметку и стили целиком и меняет
|
|
55
|
+
только правила выбора. Число в конце строки рисуется, когда `rowState` его отдаёт; само дерево
|
|
56
|
+
отдаёт `null`.
|
|
57
|
+
- `emptyIcon` ставит значок кита над подписью пустого дерева; без него пустота — одна подпись.
|
|
58
|
+
- `nodeEndTemplate` и `nodeMetaTemplate` отдают разметку строки входом и сильнее директив
|
|
59
|
+
`rtTreeNodeEnd` и `rtTreeNodeMeta`: так её передаёт `rt-tree-selector`, у которого дерево внутри.
|
|
60
|
+
- Каждое значение вида — свойство `--rt-tree-*` с прежним шагом по умолчанию. Материальный набор
|
|
61
|
+
переназначает их по деревьям приложения: строка 32px со скруглением 6px и зазором 5px, отступ
|
|
62
|
+
46px с линией, стрелка и плашка числа основного цвета, флажок 16px, совпадение на жёлтом. Высота
|
|
63
|
+
32px считается вместе с полями: `--rt-tree-row-box-sizing` в наборе — `border-box`. Размер и
|
|
64
|
+
рамку квадрата дерево передаёт через `--rt-checkbox-box-size` и `--rt-checkbox-box-border-color`
|
|
65
|
+
на хосте флажка: 14px внутри, 16px с рамкой, серая рамка приложения. Своего материального вида у
|
|
66
|
+
флажка нет.
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-tree — дерево выбора; его же разметку и стили берёт rt-hybrid-tree. ViewEncapsulation.None.
|
|
3
|
+
Каждое значение вида — свойство блока: приложение перенастраивает строки, отступ уровня, стрелку,
|
|
4
|
+
отметку, совпадение и счётчик, не трогая общих шагов кита. Умолчания — прежние шаги, вид без
|
|
5
|
+
свойств не меняется. */
|
|
6
|
+
|
|
7
|
+
.rt-tree {
|
|
8
|
+
--rt-tree-font-size: var(--rt-input-font-size);
|
|
9
|
+
--rt-tree-color: var(--rt-color-text-primary);
|
|
10
|
+
--rt-tree-indent: var(--rt-space-lg);
|
|
11
|
+
--rt-tree-row-padding-block: var(--rt-space-sm);
|
|
12
|
+
--rt-tree-row-padding-inline: var(--rt-space-md);
|
|
13
|
+
--rt-tree-row-gap: var(--rt-space-sm);
|
|
14
|
+
--rt-tree-row-spacing: var(--rt-space-0);
|
|
15
|
+
--rt-tree-row-min-height: auto;
|
|
16
|
+
--rt-tree-row-box-sizing: content-box;
|
|
17
|
+
--rt-tree-row-radius: var(--rt-radius-none);
|
|
18
|
+
--rt-tree-row-bg-hover: var(--rt-color-bg-hover);
|
|
19
|
+
--rt-tree-row-bg-highlighted: var(--rt-color-bg-hover);
|
|
20
|
+
--rt-tree-row-bg-chosen: var(--rt-color-action-primary-subtle);
|
|
21
|
+
--rt-tree-guide-width: var(--rt-border-width-thin);
|
|
22
|
+
--rt-tree-guide-color: transparent;
|
|
23
|
+
--rt-tree-toggle-size: var(--rt-input-icon-size);
|
|
24
|
+
--rt-tree-toggle-color: var(--rt-neutral-600);
|
|
25
|
+
--rt-tree-leaf-space-display: inline-flex;
|
|
26
|
+
--rt-tree-check-size: calc(var(--rt-size-4) + var(--rt-space-0-5));
|
|
27
|
+
--rt-tree-check-border-color: var(--rt-color-border-strong);
|
|
28
|
+
--rt-tree-match-bg: var(--rt-yellow-400);
|
|
29
|
+
--rt-tree-match-color: var(--rt-neutral-950);
|
|
30
|
+
--rt-tree-match-radius: var(--rt-radius-xs);
|
|
31
|
+
--rt-tree-match-font-weight: var(--rt-font-weight-regular);
|
|
32
|
+
--rt-tree-count-color: var(--rt-color-text-muted);
|
|
33
|
+
--rt-tree-count-bg: transparent;
|
|
34
|
+
--rt-tree-count-font-size: var(--rt-text-sm);
|
|
35
|
+
--rt-tree-count-padding-inline: var(--rt-space-0);
|
|
36
|
+
--rt-tree-count-min-size: auto;
|
|
37
|
+
--rt-tree-count-radius: var(--rt-radius-none);
|
|
38
|
+
--rt-tree-select-all-font-size: var(--rt-tree-font-size);
|
|
39
|
+
--rt-tree-select-all-font-weight: var(--rt-font-weight-regular);
|
|
40
|
+
--rt-tree-empty-color: var(--rt-color-text-muted);
|
|
41
|
+
--rt-tree-empty-gap: var(--rt-space-sm);
|
|
42
|
+
--rt-tree-focus-shadow: var(--rt-shadow-focus-ring);
|
|
43
|
+
--rt-tree-border-width: var(--rt-border-width-thin);
|
|
44
|
+
--rt-tree-bg: var(--rt-color-bg-surface);
|
|
45
|
+
--rt-tree-select-all-bg: var(--rt-tree-bg);
|
|
46
|
+
|
|
47
|
+
/* Ярус липкой строки «выбрать всё» — внутри дерева: `isolation` не пускает её над страницей. */
|
|
48
|
+
--rt-tree-select-all-z: var(--rt-z-sticky);
|
|
49
|
+
|
|
50
|
+
display: block;
|
|
51
|
+
background-color: var(--rt-tree-bg);
|
|
52
|
+
color: var(--rt-tree-color);
|
|
53
|
+
font-size: var(--rt-tree-font-size);
|
|
54
|
+
isolation: isolate;
|
|
55
|
+
outline: none;
|
|
56
|
+
|
|
57
|
+
/* Под пальцем строка не ниже контрола кита: высота переназначается свойством, а не правилом. */
|
|
58
|
+
@media (pointer: coarse) {
|
|
59
|
+
--rt-tree-row-min-height: var(--rt-control-height-lg);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* Материальный набор повторяет деревья приложения: строка 32px со скруглением 6px, 12px по
|
|
63
|
+
бокам и 5px до следующей; между стрелкой или отметкой и подписью 10px; уровень отступает на
|
|
64
|
+
46px, и под стрелкой предка идёт линия; у листа нет места под стрелку. Стрелка, флажок и
|
|
65
|
+
плашка счётчика — основного цвета темы, флажок 16px, совпадение — полужирное на жёлтом
|
|
66
|
+
первого кита, «выбрать всё» — 14px средней насыщенности. 32px — внешняя высота строки,
|
|
67
|
+
поэтому строка считается с полями; квадрат флажка задан без рамки — 14px внутри, 16px
|
|
68
|
+
снаружи. */
|
|
69
|
+
:is(.rt-preset-material, [data-preset='material']) & {
|
|
70
|
+
--rt-tree-indent: calc(var(--rt-size-12) - var(--rt-space-0-5));
|
|
71
|
+
--rt-tree-row-padding-block: var(--rt-space-1);
|
|
72
|
+
--rt-tree-row-padding-inline: calc(var(--rt-space-2) + var(--rt-space-1));
|
|
73
|
+
--rt-tree-row-gap: calc(var(--rt-space-2) + var(--rt-space-0-5));
|
|
74
|
+
--rt-tree-row-spacing: calc(var(--rt-space-1) + var(--rt-space-0-5) / 2);
|
|
75
|
+
--rt-tree-row-min-height: var(--rt-size-8);
|
|
76
|
+
--rt-tree-row-box-sizing: border-box;
|
|
77
|
+
--rt-tree-row-radius: var(--rt-radius-ms);
|
|
78
|
+
--rt-tree-guide-color: var(--mat-sys-outline-variant, var(--rt-color-border-subtle));
|
|
79
|
+
--rt-tree-toggle-color: var(--rt-color-action-primary);
|
|
80
|
+
--rt-tree-leaf-space-display: none;
|
|
81
|
+
--rt-tree-check-size: calc(var(--rt-size-4) - 2 * var(--rt-input-border-width));
|
|
82
|
+
--rt-tree-check-border-color: var(--rt-mat-neutral-40);
|
|
83
|
+
--rt-tree-match-bg: var(--rt-mat-yellow-100);
|
|
84
|
+
--rt-tree-match-font-weight: var(--rt-font-weight-semibold);
|
|
85
|
+
--rt-tree-count-bg: var(--rt-color-action-primary);
|
|
86
|
+
--rt-tree-count-color: var(--mat-sys-on-primary, var(--rt-color-text-inverse));
|
|
87
|
+
--rt-tree-count-font-size: var(--rt-text-xs);
|
|
88
|
+
--rt-tree-count-padding-inline: calc(var(--rt-space-1) + var(--rt-space-0-5));
|
|
89
|
+
--rt-tree-count-min-size: var(--rt-size-5);
|
|
90
|
+
--rt-tree-count-radius: var(--rt-radius-full);
|
|
91
|
+
--rt-tree-select-all-font-size: var(--rt-text-sm);
|
|
92
|
+
--rt-tree-select-all-font-weight: var(--rt-font-weight-medium);
|
|
93
|
+
|
|
94
|
+
@media (pointer: coarse) {
|
|
95
|
+
--rt-tree-row-min-height: var(--rt-control-height-lg);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
&:focus-visible {
|
|
100
|
+
box-shadow: var(--rt-tree-focus-shadow);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&__select-all,
|
|
104
|
+
&__row {
|
|
105
|
+
/* Уровень строки ставит разметка на саму строку; ноль — верхний уровень. */
|
|
106
|
+
--rt-tree-level: 0;
|
|
107
|
+
|
|
108
|
+
display: flex;
|
|
109
|
+
box-sizing: var(--rt-tree-row-box-sizing);
|
|
110
|
+
align-items: center;
|
|
111
|
+
padding: var(--rt-tree-row-padding-block) var(--rt-tree-row-padding-inline);
|
|
112
|
+
border-radius: var(--rt-tree-row-radius);
|
|
113
|
+
cursor: pointer;
|
|
114
|
+
gap: var(--rt-tree-row-gap);
|
|
115
|
+
min-block-size: var(--rt-tree-row-min-height);
|
|
116
|
+
padding-inline-start: calc(var(--rt-tree-row-padding-inline) + var(--rt-tree-indent) * var(--rt-tree-level));
|
|
117
|
+
|
|
118
|
+
&:hover {
|
|
119
|
+
background-color: var(--rt-tree-row-bg-hover);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* Строка прилипает к верху места, которое прокручивает дерево; фон непрозрачный, иначе под
|
|
124
|
+
ней видны уехавшие строки. Наведение ложится поверх фона, а не вместо него. */
|
|
125
|
+
&__select-all {
|
|
126
|
+
position: sticky;
|
|
127
|
+
z-index: var(--rt-tree-select-all-z);
|
|
128
|
+
top: 0;
|
|
129
|
+
border-bottom: var(--rt-tree-border-width) solid var(--rt-color-border-default);
|
|
130
|
+
background-color: var(--rt-tree-select-all-bg);
|
|
131
|
+
|
|
132
|
+
&:hover {
|
|
133
|
+
background-color: var(--rt-tree-select-all-bg);
|
|
134
|
+
background-image: linear-gradient(var(--rt-tree-row-bg-hover), var(--rt-tree-row-bg-hover));
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
&--disabled {
|
|
138
|
+
cursor: not-allowed;
|
|
139
|
+
opacity: var(--rt-input-disabled-opacity);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
&__select-all &__label {
|
|
144
|
+
font-size: var(--rt-tree-select-all-font-size);
|
|
145
|
+
font-weight: var(--rt-tree-select-all-font-weight);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
&__row {
|
|
149
|
+
position: relative;
|
|
150
|
+
|
|
151
|
+
& + & {
|
|
152
|
+
margin-block-start: var(--rt-tree-row-spacing);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* Линии уровней: по одной под стрелкой каждого предка. Полоса тянется и через зазор над
|
|
156
|
+
строкой, чтобы линия шла сплошной; у верхнего уровня её ширина ноль. Без своего цвета
|
|
157
|
+
линия прозрачна, и вид кита её не показывает. */
|
|
158
|
+
&:before {
|
|
159
|
+
position: absolute;
|
|
160
|
+
background: repeating-linear-gradient(
|
|
161
|
+
to right,
|
|
162
|
+
var(--rt-tree-guide-color) 0 var(--rt-tree-guide-width),
|
|
163
|
+
transparent var(--rt-tree-guide-width) var(--rt-tree-indent)
|
|
164
|
+
);
|
|
165
|
+
content: '';
|
|
166
|
+
inline-size: calc(var(--rt-tree-indent) * var(--rt-tree-level));
|
|
167
|
+
inset-block: calc(-1 * var(--rt-tree-row-spacing)) 0;
|
|
168
|
+
inset-inline-start: calc(var(--rt-tree-row-padding-inline) + (var(--rt-tree-toggle-size) - var(--rt-tree-guide-width)) / 2);
|
|
169
|
+
pointer-events: none;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
&--highlighted {
|
|
173
|
+
background-color: var(--rt-tree-row-bg-highlighted);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
&--chosen {
|
|
177
|
+
background-color: var(--rt-tree-row-bg-chosen);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
&--disabled {
|
|
181
|
+
cursor: not-allowed;
|
|
182
|
+
opacity: var(--rt-input-disabled-opacity);
|
|
183
|
+
|
|
184
|
+
&:hover {
|
|
185
|
+
background-color: transparent;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/* Стрелка ветки и пустое место под неё у листа: шаг отступа равен их ширине с зазором,
|
|
191
|
+
и стрелка дочерней строки встаёт под подписью родителя. */
|
|
192
|
+
&__toggle,
|
|
193
|
+
&__toggle-space {
|
|
194
|
+
display: inline-flex;
|
|
195
|
+
flex-shrink: 0;
|
|
196
|
+
block-size: var(--rt-tree-toggle-size);
|
|
197
|
+
inline-size: var(--rt-tree-toggle-size);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* Место под стрелку у листа: материальный вид его убирает, и отметка листа встаёт под
|
|
201
|
+
стрелкой соседней группы, как в приложении. Над первой строкой-листом «выбрать всё»
|
|
202
|
+
убирает своё место вместе с ней. */
|
|
203
|
+
&__row > &__toggle-space,
|
|
204
|
+
&__select-all--over-leaf > &__toggle-space {
|
|
205
|
+
display: var(--rt-tree-leaf-space-display);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/* Цвет стрелки идёт в значок через его же свойство приглушённого цвета. */
|
|
209
|
+
&__toggle {
|
|
210
|
+
--rt-icon-color-muted: var(--rt-tree-toggle-color);
|
|
211
|
+
|
|
212
|
+
align-items: center;
|
|
213
|
+
justify-content: center;
|
|
214
|
+
padding: 0;
|
|
215
|
+
border: 0;
|
|
216
|
+
background: transparent;
|
|
217
|
+
cursor: pointer;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/* Размер квадрата флажка: класс элемента стоит на хосте флажка и перекрывает его свойство,
|
|
221
|
+
объявленное по имени тега. Умолчание дерева равно размеру самого флажка. */
|
|
222
|
+
&__check {
|
|
223
|
+
--rt-checkbox-box-size: var(--rt-tree-check-size);
|
|
224
|
+
--rt-checkbox-box-border-color: var(--rt-tree-check-border-color);
|
|
225
|
+
|
|
226
|
+
flex-shrink: 0;
|
|
227
|
+
margin: 0;
|
|
228
|
+
pointer-events: none;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
&__text {
|
|
232
|
+
display: flex;
|
|
233
|
+
min-width: 0;
|
|
234
|
+
flex: 1 1 auto;
|
|
235
|
+
flex-direction: column;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
&__label {
|
|
239
|
+
overflow: hidden;
|
|
240
|
+
text-overflow: ellipsis;
|
|
241
|
+
white-space: nowrap;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
&__description {
|
|
245
|
+
overflow: hidden;
|
|
246
|
+
color: var(--rt-color-text-muted);
|
|
247
|
+
font-size: var(--rt-text-sm);
|
|
248
|
+
text-overflow: ellipsis;
|
|
249
|
+
white-space: nowrap;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* Метки узла и разметка приложения под подписью: строка переносится, а не вылезает. */
|
|
253
|
+
&__meta {
|
|
254
|
+
display: flex;
|
|
255
|
+
min-width: 0;
|
|
256
|
+
flex-wrap: wrap;
|
|
257
|
+
align-items: center;
|
|
258
|
+
gap: var(--rt-space-1);
|
|
259
|
+
margin-block-start: var(--rt-space-1);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
&__part {
|
|
263
|
+
&--match {
|
|
264
|
+
border-radius: var(--rt-tree-match-radius);
|
|
265
|
+
background: var(--rt-tree-match-bg);
|
|
266
|
+
color: var(--rt-tree-match-color);
|
|
267
|
+
font-weight: var(--rt-tree-match-font-weight);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/* Число выбранного под группой без отметки — в конце строки, перед разметкой приложения.
|
|
272
|
+
В материальном виде это плашка: фон, скругление и поля приходят свойствами. */
|
|
273
|
+
&__count {
|
|
274
|
+
display: inline-flex;
|
|
275
|
+
flex-shrink: 0;
|
|
276
|
+
align-items: center;
|
|
277
|
+
justify-content: center;
|
|
278
|
+
border-radius: var(--rt-tree-count-radius);
|
|
279
|
+
background: var(--rt-tree-count-bg);
|
|
280
|
+
color: var(--rt-tree-count-color);
|
|
281
|
+
font-size: var(--rt-tree-count-font-size);
|
|
282
|
+
font-variant-numeric: tabular-nums;
|
|
283
|
+
min-block-size: var(--rt-tree-count-min-size);
|
|
284
|
+
min-inline-size: var(--rt-tree-count-min-size);
|
|
285
|
+
padding-inline: var(--rt-tree-count-padding-inline);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
&__end {
|
|
289
|
+
display: inline-flex;
|
|
290
|
+
flex-shrink: 0;
|
|
291
|
+
align-items: center;
|
|
292
|
+
margin-inline-start: auto;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
&__empty {
|
|
296
|
+
padding: var(--rt-space-md);
|
|
297
|
+
color: var(--rt-tree-empty-color);
|
|
298
|
+
text-align: center;
|
|
299
|
+
|
|
300
|
+
/* Значок приложения стоит над подписью. */
|
|
301
|
+
&--with-icon {
|
|
302
|
+
display: flex;
|
|
303
|
+
flex-direction: column;
|
|
304
|
+
align-items: center;
|
|
305
|
+
gap: var(--rt-tree-empty-gap);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
&__empty-icon {
|
|
310
|
+
flex-shrink: 0;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# `rt-tree-selector`
|
|
2
|
+
|
|
3
|
+
```html
|
|
4
|
+
<rt-tree-selector
|
|
5
|
+
confirm
|
|
6
|
+
expandControls
|
|
7
|
+
revertable
|
|
8
|
+
multiToggle
|
|
9
|
+
[emptyAllowed]="false"
|
|
10
|
+
[nodes]="hotels"
|
|
11
|
+
[(value)]="hotelIds"
|
|
12
|
+
(applied)="close()" />
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Входы и выходы — на странице обзора `Overview.mdx` рядом. Договорённость —
|
|
16
|
+
`docs/specs/ui-kit-v2/tree-selector/spec.md`.
|
|
17
|
+
|
|
18
|
+
## Главное, что нужно знать
|
|
19
|
+
|
|
20
|
+
**Строки рисует `rt-tree`, селектор только отбирает узлы и держит выбор.** Отбор по словам — в
|
|
21
|
+
`rt-tree-selector.logic.ts`; дереву уходят отобранные узлы с `filter = false`, а строка поиска — для
|
|
22
|
+
подсветки слов.
|
|
23
|
+
|
|
24
|
+
**Черновик — `linkedSignal` от `value`.** Смена выбора снаружи сбрасывает черновик; в прямой форме
|
|
25
|
+
каждое изменение пишется и в черновик, и в `value`.
|
|
26
|
+
|
|
27
|
+
**Поле поиска передаёт клавиши дереву.** Фокус ставится в поле после первой отрисовки; раскрытие на
|
|
28
|
+
старте и раскрытие под строкой поиска зовут `expandAll` и `collapseAll` дерева после отрисовки.
|
|
29
|
+
|
|
30
|
+
## Края
|
|
31
|
+
|
|
32
|
+
- Выбор всегда новый массив, узлы не правятся.
|
|
33
|
+
- «Очистить выбор» оставляет выключенные выбранные узлы.
|
|
34
|
+
- Кнопки строки контролов иконочные и все необязательные. Откат стоит только в подтверждаемой форме.
|
|
35
|
+
- Порядок значений при сравнении черновика с выбором не учитывается.
|
|
36
|
+
- Выключенный селектор выключает поле, кнопки, переключатель и дерево, и «Применить» тогда не
|
|
37
|
+
проходит. Фокус на старте он в поле не ставит.
|
|
38
|
+
- Наследник `rt-hybrid-tree-selector` ставит флаг `hybrid`, и разметка рисует `rt-hybrid-tree` вместо
|
|
39
|
+
`rt-tree`. Ссылка `tree` берёт то дерево, какое стоит.
|
|
40
|
+
- `rtTreeSelectorUnderSearch` — разметка приложения между полем поиска и строкой контролов.
|
|
41
|
+
- Шаблоны `rtTreeNodeEnd` и `rtTreeNodeMeta` из содержимого селектора уходят дереву внутри входами
|
|
42
|
+
`nodeEndTemplate` и `nodeMetaTemplate`: своим содержимым дерево их не видит.
|
|
43
|
+
- `matchHighlight` выключает отметку найденных слов: дерево получает пустое слово, а отбор узлов
|
|
44
|
+
идёт по строке поиска как прежде. `emptyIcon` ставит значок над «ничего не найдено» и отдаётся
|
|
45
|
+
дереву внутри.
|
|
46
|
+
- В материальном наборе между головой и деревом 10px (`--rt-tree-selector-gap`); строки дерева
|
|
47
|
+
берут материальный вид `rt-tree`.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-tree-selector — поиск, контролы и дерево. ViewEncapsulation.None.
|
|
3
|
+
Высоту задаёт место, куда приложение ставит селектор: дерево прокручивается внутри,
|
|
4
|
+
поле поиска и подвал стоят на месте. */
|
|
5
|
+
|
|
6
|
+
.rt-tree-selector {
|
|
7
|
+
--rt-tree-selector-border-width: var(--rt-border-width-thin);
|
|
8
|
+
--rt-tree-selector-bg: var(--rt-color-bg-surface);
|
|
9
|
+
--rt-tree-selector-gap: var(--rt-space-sm);
|
|
10
|
+
--rt-tree-selector-empty-color: var(--rt-color-text-muted);
|
|
11
|
+
--rt-tree-selector-empty-gap: var(--rt-space-sm);
|
|
12
|
+
|
|
13
|
+
display: flex;
|
|
14
|
+
min-height: 0;
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
background-color: var(--rt-tree-selector-bg);
|
|
18
|
+
color: var(--rt-color-text-primary);
|
|
19
|
+
gap: var(--rt-tree-selector-gap);
|
|
20
|
+
|
|
21
|
+
/* Материальный набор повторяет выбор деревом приложения: над списком 10px. Строки дерева
|
|
22
|
+
внутри берут свой материальный вид сами. */
|
|
23
|
+
:is(.rt-preset-material, [data-preset='material']) & {
|
|
24
|
+
--rt-tree-selector-gap: calc(var(--rt-space-2) + var(--rt-space-0-5));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&__head {
|
|
28
|
+
display: flex;
|
|
29
|
+
flex-direction: column;
|
|
30
|
+
gap: var(--rt-space-sm);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
&__label {
|
|
34
|
+
font-size: var(--rt-text-sm);
|
|
35
|
+
font-weight: var(--rt-font-weight-semibold);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&__search {
|
|
39
|
+
display: block;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&__controls {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-direction: column;
|
|
45
|
+
gap: var(--rt-space-sm);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Контролы переносятся на вторую строку на узком экране: обрезка спрятала бы кнопку.
|
|
49
|
+
&__row {
|
|
50
|
+
display: flex;
|
|
51
|
+
flex-wrap: wrap;
|
|
52
|
+
align-items: center;
|
|
53
|
+
gap: var(--rt-space-xs);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&__control {
|
|
57
|
+
flex: 0 0 auto;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Контролы приложения прижаты к правому краю строки, кнопки дерева — к левому.
|
|
61
|
+
&__own {
|
|
62
|
+
display: flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
gap: var(--rt-space-xs);
|
|
65
|
+
margin-inline-start: auto;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&__multi {
|
|
69
|
+
display: flex;
|
|
70
|
+
align-items: center;
|
|
71
|
+
gap: var(--rt-space-sm);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&__multi-label {
|
|
75
|
+
font-size: var(--rt-text-sm);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
&__multi-hint-icon {
|
|
79
|
+
color: var(--rt-color-text-muted);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
&__tree {
|
|
83
|
+
min-height: 0;
|
|
84
|
+
flex: 1 1 auto;
|
|
85
|
+
overflow-y: auto;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
&__empty {
|
|
89
|
+
flex: 1 1 auto;
|
|
90
|
+
padding: var(--rt-space-md);
|
|
91
|
+
color: var(--rt-tree-selector-empty-color);
|
|
92
|
+
text-align: center;
|
|
93
|
+
|
|
94
|
+
/* Значок приложения стоит над подписью. */
|
|
95
|
+
&--with-icon {
|
|
96
|
+
display: flex;
|
|
97
|
+
flex-direction: column;
|
|
98
|
+
align-items: center;
|
|
99
|
+
gap: var(--rt-tree-selector-empty-gap);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
&__empty-icon {
|
|
104
|
+
flex-shrink: 0;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/* Разметка приложения под полем поиска — во всю ширину головы. */
|
|
108
|
+
&__under-search {
|
|
109
|
+
display: block;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
&__foot {
|
|
113
|
+
display: flex;
|
|
114
|
+
align-items: center;
|
|
115
|
+
justify-content: flex-end;
|
|
116
|
+
border-top: var(--rt-tree-selector-border-width) solid var(--rt-color-border-subtle);
|
|
117
|
+
gap: var(--rt-space-sm);
|
|
118
|
+
padding-block-start: var(--rt-space-sm);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -358,6 +358,10 @@
|
|
|
358
358
|
цветность те же): это ближайшая к виду первого кита ступень, что берёт порог текста. */
|
|
359
359
|
--rt-mat-green-120: #008465;
|
|
360
360
|
|
|
361
|
+
/* Материальный набор: жёлтая подсветка найденного — фон совпадения в деревьях первого кита
|
|
362
|
+
и приложения. */
|
|
363
|
+
--rt-mat-yellow-100: #ffeb3b;
|
|
364
|
+
|
|
361
365
|
/* Материальный набор: марка первого кита и подложка его обвязки */
|
|
362
366
|
--rt-mat-navy-100: #0d1c2b;
|
|
363
367
|
|
package/styles/tokens.css
CHANGED
|
@@ -404,6 +404,9 @@
|
|
|
404
404
|
успеха ею не читается. Ступень 120 взята от 100 двумя шагами светлоты вниз (OKLCH, тон и
|
|
405
405
|
цветность те же): это ближайшая к виду первого кита ступень, что берёт порог текста. */
|
|
406
406
|
--rt-mat-green-120: #008465;
|
|
407
|
+
/* Материальный набор: жёлтая подсветка найденного — фон совпадения в деревьях первого кита
|
|
408
|
+
и приложения. */
|
|
409
|
+
--rt-mat-yellow-100: #ffeb3b;
|
|
407
410
|
/* Материальный набор: марка первого кита и подложка его обвязки */
|
|
408
411
|
--rt-mat-navy-100: #0d1c2b;
|
|
409
412
|
/* Прозрачные оттенки считаются от своих ступеней, а не повторяют их коды цвета. */
|
|
@@ -1,30 +1,37 @@
|
|
|
1
|
-
import * as i0 from
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { InputSignal, WritableSignal } from "@angular/core";
|
|
3
|
+
export declare namespace IRtAccordion {
|
|
4
|
+
/** Пункт аккордеона: заголовок раскрывает текст под собой. Строки приходят уже переведёнными. */
|
|
5
|
+
interface Item {
|
|
6
|
+
readonly title: string;
|
|
7
|
+
readonly text: string;
|
|
8
|
+
}
|
|
10
9
|
}
|
|
11
|
-
|
|
12
10
|
/**
|
|
13
11
|
* Список пунктов, у каждого заголовок-кнопка и текст под ней. Нажатие раскрывает или сворачивает
|
|
14
12
|
* пункт, соседи остаются как были. Предмета показа аккордеон не знает: пункты приходят входом уже
|
|
15
13
|
* переведёнными.
|
|
16
14
|
*/
|
|
17
|
-
declare class RtAccordionComponent {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
export declare class RtAccordionComponent {
|
|
16
|
+
/** Основа id кнопок и панелей: два аккордеона на одной странице не ссылаются на чужие панели. */
|
|
17
|
+
protected readonly idBase: string;
|
|
18
|
+
/** Пришёл новый список — раскрытие начинается заново с пункта из входа. */
|
|
19
|
+
protected readonly open: WritableSignal<ReadonlySet<number>>;
|
|
20
|
+
readonly items: InputSignal<readonly IRtAccordion.Item[]>;
|
|
21
|
+
/** Пункт, раскрытый при входе. `null` оставляет все свёрнутыми. */
|
|
22
|
+
readonly openIndex: InputSignal<number | null>;
|
|
23
|
+
protected toggle(index: number): void;
|
|
24
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAccordionComponent, never>;
|
|
25
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAccordionComponent, "rt-accordion", never, {
|
|
26
|
+
"items": {
|
|
27
|
+
"alias": "items";
|
|
28
|
+
"required": true;
|
|
29
|
+
"isSignal": true;
|
|
30
|
+
};
|
|
31
|
+
"openIndex": {
|
|
32
|
+
"alias": "openIndex";
|
|
33
|
+
"required": false;
|
|
34
|
+
"isSignal": true;
|
|
35
|
+
};
|
|
36
|
+
}, {}, never, never, true, never>;
|
|
37
|
+
}
|