@rt-tools/ui-kit-v2 0.23.2 → 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 +10 -0
- package/src/lib/components/toolbar/rt-toolbar.component.scss +18 -0
- 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,41 @@
|
|
|
1
|
+
# `rt-inline-edit`
|
|
2
|
+
|
|
3
|
+
```html
|
|
4
|
+
<rt-inline-edit placeholder="Название отчёта" [value]="report.name" (saved)="rename($event)" />
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Входы — `value`, `placeholder`, `look`, `size`, `fieldLabel`, `disabled`, `saving`, `allowEmpty`,
|
|
8
|
+
`closeOnSave`, `blurAction`, `fieldIcon`, `truncate` и двусторонний `editing`. Выходы — `saved` и `cancelled`.
|
|
9
|
+
|
|
10
|
+
Описание — `docs/specs/ui-kit-v2/inline-edit/`; здесь только устройство папки.
|
|
11
|
+
|
|
12
|
+
## Главное, что нужно знать
|
|
13
|
+
|
|
14
|
+
**Значение принадлежит приложению.** Компонент отдаёт новое выходом и сам его не хранит: в покое
|
|
15
|
+
всегда видно то, что пришло во вход `value`.
|
|
16
|
+
|
|
17
|
+
**Черновик — в форме, а не в двусторонней привязке.** Форма пишет значение в поле в том же проходе
|
|
18
|
+
отрисовки; двусторонняя привязка писала его тиком позже, и выделение текста при открытии заставало
|
|
19
|
+
пустое поле.
|
|
20
|
+
|
|
21
|
+
**Что сохранять, решает чистая функция.** `inlineEditOutcome` обрезает черновик, отказывает пустому
|
|
22
|
+
и закрывает поле без события, если черновик равен значению. `inlineEditLeaves` отличает уход фокуса
|
|
23
|
+
от перехода на свои кнопки.
|
|
24
|
+
|
|
25
|
+
## Края
|
|
26
|
+
|
|
27
|
+
- Открытие входом `editing` ведёт себя как нажатие: черновик берёт значение, фокус встаёт в поле.
|
|
28
|
+
- Escape гасится в поле и не закрывает окно или панель вокруг.
|
|
29
|
+
- Пока `saving`, ни Escape, ни уход фокуса, ни кнопки поле не закрывают.
|
|
30
|
+
- Погашенное на время сохранения поле роняет фокус в никуда. Отметка `#focusInside` помнит, что он
|
|
31
|
+
был внутри, и после отказа или закрытия фокус возвращается; ушедший на другой элемент не трогается.
|
|
32
|
+
- Плашка-поле `look="chip-field"` — отдельная ветка шаблона: тот же черновик в форме, но без покоя,
|
|
33
|
+
кнопок и `editing`. Ширину ей задаёт невидимая копия текста в одной клетке с полем. Enter и Escape
|
|
34
|
+
сохраняют сами и снимают фокус под отметкой `#chipLeaving`, чтобы уход не сохранил второй раз.
|
|
35
|
+
- Корень шаблона — `ng-container`: класс блока висит только на хосте.
|
|
36
|
+
- Цвета, зазоры и плашка — свойства `--rt-inline-edit-*` на корне блока. Материальный набор
|
|
37
|
+
переназначает пять из них в том же файле стилей, вид кита от этого не меняется.
|
|
38
|
+
|
|
39
|
+
## Рядом
|
|
40
|
+
|
|
41
|
+
- `rt-dynamic-input` с `editable` — правка строк списка выбора, своя внутри списка.
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-inline-edit — правка короткого значения на месте. ViewEncapsulation.None.
|
|
3
|
+
Host несёт класс блока; в покое — кнопка со значением, при правке — поле кита и две кнопки.
|
|
4
|
+
Высота покоя равна высоте поля: строка не прыгает при открытии.
|
|
5
|
+
Цвета, зазоры и плашка — свойства блока: приложение перекрашивает правку своим правилом на
|
|
6
|
+
блок. Умолчания — прежние ступени, вид без свойств не меняется. */
|
|
7
|
+
|
|
8
|
+
.rt-inline-edit {
|
|
9
|
+
--rt-inline-edit-height: var(--rt-input-height-sm);
|
|
10
|
+
--rt-inline-edit-field-width: var(--rt-size-64);
|
|
11
|
+
--rt-inline-edit-radius: var(--rt-radius-sm);
|
|
12
|
+
--rt-inline-edit-border-width: var(--rt-border-width-thin);
|
|
13
|
+
--rt-inline-edit-duration: var(--rt-duration-fast);
|
|
14
|
+
--rt-inline-edit-gap: var(--rt-space-2xs);
|
|
15
|
+
--rt-inline-edit-value-padding-x: var(--rt-space-xs);
|
|
16
|
+
--rt-inline-edit-value-gap: var(--rt-space-xs);
|
|
17
|
+
--rt-inline-edit-value-bg-hover: var(--rt-color-bg-hover);
|
|
18
|
+
--rt-inline-edit-empty-color: var(--rt-color-text-muted);
|
|
19
|
+
--rt-inline-edit-disabled-color: var(--rt-color-text-disabled);
|
|
20
|
+
--rt-inline-edit-pencil-color: var(--rt-color-text-muted);
|
|
21
|
+
--rt-inline-edit-chip-radius: var(--rt-radius-sm);
|
|
22
|
+
--rt-inline-edit-chip-bg: var(--rt-color-bg-subtle);
|
|
23
|
+
--rt-inline-edit-chip-color: var(--rt-color-text-primary);
|
|
24
|
+
--rt-inline-edit-chip-border-color: var(--rt-color-border-default);
|
|
25
|
+
--rt-inline-edit-chip-border-color-hover: var(--rt-color-action-primary-on-surface);
|
|
26
|
+
--rt-inline-edit-chip-font-size: var(--rt-text-xs);
|
|
27
|
+
--rt-inline-edit-chip-font-weight: var(--rt-font-weight-semibold);
|
|
28
|
+
--rt-inline-edit-chip-field-max-width: calc(var(--rt-size-64) + var(--rt-size-64) / 2);
|
|
29
|
+
--rt-inline-edit-chip-field-bg: var(--rt-inline-edit-chip-bg);
|
|
30
|
+
--rt-inline-edit-chip-field-color: var(--rt-inline-edit-chip-color);
|
|
31
|
+
--rt-inline-edit-chip-field-icon-color: var(--rt-inline-edit-pencil-color);
|
|
32
|
+
--rt-inline-edit-chip-field-border-color: var(--rt-inline-edit-chip-border-color);
|
|
33
|
+
--rt-inline-edit-chip-field-border-color-focus: var(--rt-inline-edit-chip-border-color-hover);
|
|
34
|
+
|
|
35
|
+
display: inline-flex;
|
|
36
|
+
min-width: 0;
|
|
37
|
+
max-width: 100%;
|
|
38
|
+
align-items: center;
|
|
39
|
+
gap: var(--rt-inline-edit-gap);
|
|
40
|
+
vertical-align: middle;
|
|
41
|
+
|
|
42
|
+
&--size-md {
|
|
43
|
+
--rt-inline-edit-height: var(--rt-input-height-md);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&--size-lg {
|
|
47
|
+
--rt-inline-edit-height: var(--rt-input-height-lg);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* Материальный набор повторяет плашку приложения: скругление 6px, светлая серая подложка
|
|
51
|
+
и тонкая рамка без цвета действия. Цвет подписи остаётся основным — серый на серой
|
|
52
|
+
подложке не набирает 4.5 контраста для мелкого текста. */
|
|
53
|
+
:is(.rt-preset-material, [data-preset='material']) & {
|
|
54
|
+
--rt-inline-edit-chip-radius: var(--rt-radius-ms);
|
|
55
|
+
--rt-inline-edit-chip-bg: var(--rt-color-bg-surface-subtle-2);
|
|
56
|
+
--rt-inline-edit-chip-border-color: var(--rt-color-border-subtle);
|
|
57
|
+
--rt-inline-edit-chip-border-color-hover: var(--rt-color-border-strong);
|
|
58
|
+
--rt-inline-edit-value-padding-x: var(--rt-space-2);
|
|
59
|
+
|
|
60
|
+
/* Плашка-поле приложения: светлая подложка, рамка, текст и значок — основной цвет темы. */
|
|
61
|
+
--rt-inline-edit-chip-field-bg: var(--rt-mat-neutral-5);
|
|
62
|
+
--rt-inline-edit-chip-field-color: var(--mat-sys-primary, var(--rt-color-action-primary));
|
|
63
|
+
--rt-inline-edit-chip-field-icon-color: var(--mat-sys-primary, var(--rt-color-action-primary));
|
|
64
|
+
--rt-inline-edit-chip-field-border-color: var(--mat-sys-primary-fixed-dim, var(--rt-brand-200));
|
|
65
|
+
--rt-inline-edit-chip-field-border-color-focus: var(--mat-sys-primary, var(--rt-color-action-primary));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Значение в покое: подпись режется многоточием, полный текст — в подсказке. */
|
|
69
|
+
&__value {
|
|
70
|
+
display: inline-flex;
|
|
71
|
+
min-width: 0;
|
|
72
|
+
max-width: 100%;
|
|
73
|
+
min-height: var(--rt-inline-edit-height);
|
|
74
|
+
box-sizing: border-box;
|
|
75
|
+
align-items: center;
|
|
76
|
+
padding: 0 var(--rt-inline-edit-value-padding-x);
|
|
77
|
+
border: var(--rt-inline-edit-border-width) solid transparent;
|
|
78
|
+
border-radius: var(--rt-inline-edit-radius);
|
|
79
|
+
background: transparent;
|
|
80
|
+
color: inherit;
|
|
81
|
+
cursor: pointer;
|
|
82
|
+
font: inherit;
|
|
83
|
+
gap: var(--rt-inline-edit-value-gap);
|
|
84
|
+
text-align: start;
|
|
85
|
+
transition:
|
|
86
|
+
background-color var(--rt-inline-edit-duration) ease,
|
|
87
|
+
border-color var(--rt-inline-edit-duration) ease;
|
|
88
|
+
|
|
89
|
+
&:hover:not(:disabled) {
|
|
90
|
+
background: var(--rt-inline-edit-value-bg-hover);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
&:focus-visible {
|
|
94
|
+
outline: var(--rt-focus-ring-width) solid var(--rt-focus-ring-color);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&--empty {
|
|
98
|
+
color: var(--rt-inline-edit-empty-color);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
&:disabled {
|
|
102
|
+
color: var(--rt-inline-edit-disabled-color);
|
|
103
|
+
cursor: default;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&__text {
|
|
108
|
+
overflow: hidden;
|
|
109
|
+
min-width: 0;
|
|
110
|
+
text-overflow: ellipsis;
|
|
111
|
+
white-space: nowrap;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&__pencil {
|
|
115
|
+
flex-shrink: 0;
|
|
116
|
+
color: var(--rt-inline-edit-pencil-color);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
&__field {
|
|
120
|
+
width: var(--rt-inline-edit-field-width);
|
|
121
|
+
min-width: 0;
|
|
122
|
+
flex: 0 1 auto;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
&__save,
|
|
126
|
+
&__cancel {
|
|
127
|
+
flex-shrink: 0;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Плашка: светлая подложка, рамка, мелкий жирный шрифт — цвета нейтральной плашки rt-tag.
|
|
131
|
+
Цвет действия на этой подложке не набирает 4.5 контраста, поэтому он только у рамки при
|
|
132
|
+
наведении. Плашка только в покое — поле при правке читается полем в обоих видах. */
|
|
133
|
+
&--chip &__value {
|
|
134
|
+
border-color: var(--rt-inline-edit-chip-border-color);
|
|
135
|
+
border-radius: var(--rt-inline-edit-chip-radius);
|
|
136
|
+
background: var(--rt-inline-edit-chip-bg);
|
|
137
|
+
color: var(--rt-inline-edit-chip-color);
|
|
138
|
+
font-size: var(--rt-inline-edit-chip-font-size);
|
|
139
|
+
font-weight: var(--rt-inline-edit-chip-font-weight);
|
|
140
|
+
|
|
141
|
+
&:hover:not(:disabled) {
|
|
142
|
+
border-color: var(--rt-inline-edit-chip-border-color-hover);
|
|
143
|
+
background: var(--rt-inline-edit-chip-bg);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
&--chip &__value--empty {
|
|
148
|
+
color: var(--rt-inline-edit-empty-color);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
&--chip &__value:disabled {
|
|
152
|
+
color: var(--rt-inline-edit-disabled-color);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/* Плашка-поле: сама плашка — поле. Значок слева, рамка темнеет в фокусе; ширина идёт за
|
|
156
|
+
текстом до предела, длинный текст прокручивается в поле и целиком виден в подсказке. */
|
|
157
|
+
&__chip-field {
|
|
158
|
+
display: inline-flex;
|
|
159
|
+
min-width: 0;
|
|
160
|
+
max-width: min(100%, var(--rt-inline-edit-chip-field-max-width));
|
|
161
|
+
min-height: var(--rt-inline-edit-height);
|
|
162
|
+
box-sizing: border-box;
|
|
163
|
+
align-items: center;
|
|
164
|
+
padding: 0 var(--rt-inline-edit-value-padding-x);
|
|
165
|
+
border: var(--rt-inline-edit-border-width) solid var(--rt-inline-edit-chip-field-border-color);
|
|
166
|
+
border-radius: var(--rt-inline-edit-chip-radius);
|
|
167
|
+
background: var(--rt-inline-edit-chip-field-bg);
|
|
168
|
+
color: var(--rt-inline-edit-chip-field-color);
|
|
169
|
+
cursor: text;
|
|
170
|
+
font-size: var(--rt-inline-edit-chip-font-size);
|
|
171
|
+
font-weight: var(--rt-inline-edit-chip-font-weight);
|
|
172
|
+
gap: var(--rt-inline-edit-value-gap);
|
|
173
|
+
transition: border-color var(--rt-inline-edit-duration) ease;
|
|
174
|
+
|
|
175
|
+
&:focus-within {
|
|
176
|
+
border-color: var(--rt-inline-edit-chip-field-border-color-focus);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
&--disabled {
|
|
180
|
+
color: var(--rt-inline-edit-disabled-color);
|
|
181
|
+
cursor: default;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
&__chip-icon {
|
|
186
|
+
flex-shrink: 0;
|
|
187
|
+
color: var(--rt-inline-edit-chip-field-icon-color);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
&__chip-field--disabled &__chip-icon {
|
|
191
|
+
color: var(--rt-inline-edit-disabled-color);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/* Копия текста и поле лежат в одной клетке: копия задаёт ширину, поле её занимает. */
|
|
195
|
+
&__sizer {
|
|
196
|
+
display: inline-grid;
|
|
197
|
+
overflow: hidden;
|
|
198
|
+
min-width: 0;
|
|
199
|
+
grid-template-columns: minmax(0, auto);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
&__mirror,
|
|
203
|
+
&__middle,
|
|
204
|
+
&__chip-input {
|
|
205
|
+
padding: 0;
|
|
206
|
+
font: inherit;
|
|
207
|
+
grid-area: 1 / 1;
|
|
208
|
+
letter-spacing: inherit;
|
|
209
|
+
white-space: pre;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
&__mirror {
|
|
213
|
+
visibility: hidden;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* Слой обрезки посередине лежит над полем, пока плашка не в фокусе: поле под ним держит
|
|
217
|
+
текст прозрачным. В фокусе слой прячется, и поле показывает текст целиком. */
|
|
218
|
+
&__middle {
|
|
219
|
+
display: flex;
|
|
220
|
+
overflow: hidden;
|
|
221
|
+
min-width: 0;
|
|
222
|
+
pointer-events: none;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
&__head {
|
|
226
|
+
overflow: hidden;
|
|
227
|
+
min-width: 0;
|
|
228
|
+
text-overflow: ellipsis;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
&__tail {
|
|
232
|
+
flex-shrink: 0;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/* Условие стоит фокусом, а не его отрицанием: витрина переписывает состояния в классы, и
|
|
236
|
+
отрицание там выполнялось бы всегда. */
|
|
237
|
+
&__middle ~ &__chip-input {
|
|
238
|
+
color: transparent;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
&__chip-field:focus-within &__middle {
|
|
242
|
+
visibility: hidden;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
&__chip-field:focus-within &__middle ~ &__chip-input {
|
|
246
|
+
color: inherit;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
&__chip-input {
|
|
250
|
+
width: 100%;
|
|
251
|
+
min-width: var(--rt-space-xs);
|
|
252
|
+
border: 0;
|
|
253
|
+
background: transparent;
|
|
254
|
+
color: inherit;
|
|
255
|
+
outline: none;
|
|
256
|
+
|
|
257
|
+
&::placeholder {
|
|
258
|
+
color: var(--rt-inline-edit-empty-color);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
&:disabled {
|
|
262
|
+
cursor: default;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/* Светлая подложка плашки-поля приложения в тёмной теме светлее страницы: там плашка берёт
|
|
268
|
+
подложку плашки набора, которую тёмная тема отвечает сама. */
|
|
269
|
+
[data-theme='dark'] :is(.rt-preset-material, [data-preset='material']) .rt-inline-edit,
|
|
270
|
+
:is(.rt-preset-material, [data-preset='material']) [data-theme='dark'] .rt-inline-edit,
|
|
271
|
+
html.rt-theme-dark :is(.rt-preset-material, [data-preset='material']) .rt-inline-edit {
|
|
272
|
+
--rt-inline-edit-chip-field-bg: var(--rt-inline-edit-chip-bg);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
@@ -46,6 +46,9 @@
|
|
|
46
46
|
остаётся недостижимым.
|
|
47
47
|
- `rtPopoverPanelClass` добавляется **к** базовому `rt-popover-panel`, а не вместо него.
|
|
48
48
|
- Escape и клик мимо закрывают панель во всех режимах.
|
|
49
|
+
- `rtPopoverPositions` даёт свои места вокруг host'а — первое главное, остальные запасные. Заданные
|
|
50
|
+
читаются при каждом открытии; без входа у панели прежние два места, под host'ом и над ним. Так
|
|
51
|
+
`rt-speed-menu` ставит действия по сторонам кнопки.
|
|
49
52
|
|
|
50
53
|
## Рядом
|
|
51
54
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# `rt-speed-menu`
|
|
2
|
+
|
|
3
|
+
```html
|
|
4
|
+
<rt-speed-menu label="Масштаб" icon="zoom_in" [actions]="zoomActions" (actionSelect)="zoom($event)" />
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
Входы — `actions`, `icon`, `label`, `direction`, `size`, `variant`, `closeOnSelect` и `disabled`.
|
|
8
|
+
Выходы — `actionSelect` и `openChange`.
|
|
9
|
+
|
|
10
|
+
Описание — `docs/specs/ui-kit-v2/speed-menu/`; здесь только устройство папки.
|
|
11
|
+
|
|
12
|
+
## Главное, что нужно знать
|
|
13
|
+
|
|
14
|
+
**Панель — `rtPopover` на кнопке меню.** Триггер у панели ручной: открывает и закрывает её кнопка.
|
|
15
|
+
Места вокруг кнопки задаёт вход панели `rtPopoverPositions`; без него у панели прежние два места.
|
|
16
|
+
|
|
17
|
+
**Клавиатуру узнают по счёту щелчков.** Нажатие с клавиатуры приходит с `detail` ноль, и тогда фокус
|
|
18
|
+
встаёт на первое доступное действие. Мышиное нажатие оставляет фокус на кнопке.
|
|
19
|
+
|
|
20
|
+
**Ходьбу по действиям решает чистая функция.** `speedMenuNextIndex` знает стрелки, Home и End;
|
|
21
|
+
недоступные кнопки отбираются по нативному `disabled` кнопки кита.
|
|
22
|
+
|
|
23
|
+
## Края
|
|
24
|
+
|
|
25
|
+
- Escape и Tab в панели ловит сама панель: закрывает меню и ставит фокус на кнопку. Escape на кнопке
|
|
26
|
+
меню закрывает панель её собственным обработчиком.
|
|
27
|
+
- Шаг входа действия задан правилами `nth-child` до восьми действий; девятое и дальше входят вместе
|
|
28
|
+
с восьмым.
|
|
29
|
+
- Порядок входа считается с конца у столбца вверх и у ряда к началу: ближнее к кнопке там последнее.
|
|
30
|
+
- Корень шаблона — `ng-container`: класс блока висит только на хосте.
|
|
31
|
+
|
|
32
|
+
## Рядом
|
|
33
|
+
|
|
34
|
+
- `rt-icon-button` — его вход `expanded` пишет `aria-expanded` кнопки меню.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-speed-menu — быстрое меню у круглой кнопки. ViewEncapsulation.None.
|
|
3
|
+
Host несёт класс блока и кнопку меню; действия лежат в плавающей панели кита в конце
|
|
4
|
+
страницы, вне блока, поэтому свои свойства панель объявляет на себе. */
|
|
5
|
+
|
|
6
|
+
.rt-speed-menu {
|
|
7
|
+
--rt-speed-menu-shadow: var(--rt-shadow-md);
|
|
8
|
+
|
|
9
|
+
display: inline-flex;
|
|
10
|
+
vertical-align: middle;
|
|
11
|
+
|
|
12
|
+
/* Тень покоя кнопка-значок объявляет на своём корне, и ручку переписывает правило сильнее. */
|
|
13
|
+
&__trigger .rt-icon-button {
|
|
14
|
+
--rt-icon-button-shadow: var(--rt-speed-menu-shadow);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.rt-speed-menu__panel {
|
|
19
|
+
--rt-speed-menu-gap: var(--rt-space-sm);
|
|
20
|
+
--rt-speed-menu-inset: var(--rt-speed-menu-gap);
|
|
21
|
+
--rt-speed-menu-action-shadow: var(--rt-shadow-md);
|
|
22
|
+
--rt-speed-menu-action-shadow-hover: var(--rt-speed-menu-action-shadow);
|
|
23
|
+
--rt-speed-menu-action-bg: var(--rt-color-bg-surface);
|
|
24
|
+
--rt-speed-menu-action-color: var(--rt-color-text-primary);
|
|
25
|
+
--rt-speed-menu-action-radius: var(--rt-radius-full);
|
|
26
|
+
--rt-speed-menu-duration: var(--rt-duration-fast);
|
|
27
|
+
--rt-speed-menu-stagger: var(--rt-duration-fast);
|
|
28
|
+
|
|
29
|
+
display: flex;
|
|
30
|
+
align-items: center;
|
|
31
|
+
padding: var(--rt-speed-menu-inset);
|
|
32
|
+
gap: var(--rt-speed-menu-gap);
|
|
33
|
+
|
|
34
|
+
/* Материальный набор повторяет меню приложения — mat-mini-fab: круг цвета primary-container
|
|
35
|
+
темы со значком on-primary-container 24px, подъём 3 Material (под указателем — 4), действия
|
|
36
|
+
через 16px и в 28px от кнопки, вход 100 мс со сдвигом 50 мс. Без темы Material круг серый.
|
|
37
|
+
Значок действия кнопки меню `lg` — ступень `md`, и набор переписывает её размер.
|
|
38
|
+
Панель живёт в слое поверх страницы, и признак набора несёт сама подложка слоя. */
|
|
39
|
+
:is(.rt-preset-material, [data-preset='material']) & {
|
|
40
|
+
--rt-speed-menu-gap: var(--rt-size-4);
|
|
41
|
+
--rt-speed-menu-inset: calc(var(--rt-size-6) + var(--rt-size-1));
|
|
42
|
+
--rt-speed-menu-action-bg: var(--mat-sys-primary-container, var(--rt-mat-neutral-25));
|
|
43
|
+
--rt-speed-menu-action-color: var(--mat-sys-on-primary-container, var(--rt-color-text-primary));
|
|
44
|
+
--rt-icon-step-md: var(--rt-size-6);
|
|
45
|
+
--rt-speed-menu-action-shadow: var(--mat-sys-level3, var(--rt-mat-shadow-fab));
|
|
46
|
+
--rt-speed-menu-action-shadow-hover: var(--mat-sys-level4, var(--rt-mat-shadow-fab-hover));
|
|
47
|
+
--rt-speed-menu-duration: calc(var(--rt-duration-fast) * 5 / 6);
|
|
48
|
+
--rt-speed-menu-stagger: calc(var(--rt-duration-fast) * 5 / 12);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&--up,
|
|
52
|
+
&--down {
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&--start,
|
|
57
|
+
&--end {
|
|
58
|
+
flex-direction: row;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* Подложка цвета поверхности: действие висит над картой или таблицей, а заливка второй палитры
|
|
63
|
+
кнопки-значка прозрачна. Наведение и недоступность кнопка рисует поверх подложки сама.
|
|
64
|
+
Действия входят по одному, ближнее к кнопке первым: в столбце вверх и в ряду к началу
|
|
65
|
+
ближнее — последнее, поэтому там шаг считается с конца. Вход — переход от начального стиля, а
|
|
66
|
+
не анимация по кадрам: браузер съёмки оставлял анимацию в первом кадре, и действия выходили
|
|
67
|
+
прозрачными; переход доводится до конца так же, как у раскрывающейся панели. */
|
|
68
|
+
.rt-speed-menu__action {
|
|
69
|
+
--rt-speed-menu-step: 0;
|
|
70
|
+
|
|
71
|
+
border-radius: var(--rt-speed-menu-action-radius);
|
|
72
|
+
background-color: var(--rt-speed-menu-action-bg);
|
|
73
|
+
opacity: 1;
|
|
74
|
+
transform: scale(1);
|
|
75
|
+
transition:
|
|
76
|
+
opacity var(--rt-speed-menu-duration) ease-out,
|
|
77
|
+
transform var(--rt-speed-menu-duration) ease-out;
|
|
78
|
+
transition-delay: calc(var(--rt-speed-menu-step) * var(--rt-speed-menu-stagger));
|
|
79
|
+
|
|
80
|
+
@starting-style {
|
|
81
|
+
opacity: 0;
|
|
82
|
+
transform: scale(0.5);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Цвет значка — свойство меню; по умолчанию тот же цвет текста, что ставит вид `secondary`. */
|
|
87
|
+
.rt-speed-menu__action .rt-icon-button {
|
|
88
|
+
--rt-icon-button-shadow: var(--rt-speed-menu-action-shadow);
|
|
89
|
+
|
|
90
|
+
color: var(--rt-speed-menu-action-color);
|
|
91
|
+
|
|
92
|
+
&:hover {
|
|
93
|
+
--rt-icon-button-shadow: var(--rt-speed-menu-action-shadow-hover);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* Тёмная заливка материального действия: тема Material отвечает тёмным сама, без неё — тёмная
|
|
98
|
+
ступень первого кита. */
|
|
99
|
+
:root[data-theme='dark'] :is(.rt-preset-material, [data-preset='material']) .rt-speed-menu__panel,
|
|
100
|
+
html.rt-theme-dark :is(.rt-preset-material, [data-preset='material']) .rt-speed-menu__panel {
|
|
101
|
+
--rt-speed-menu-action-bg: var(--mat-sys-primary-container, var(--rt-mat-dark-20));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
@for $step from 1 through 7 {
|
|
105
|
+
.rt-speed-menu__panel--down .rt-speed-menu__action:nth-child(#{$step + 1}),
|
|
106
|
+
.rt-speed-menu__panel--end .rt-speed-menu__action:nth-child(#{$step + 1}),
|
|
107
|
+
.rt-speed-menu__panel--up .rt-speed-menu__action:nth-last-child(#{$step + 1}),
|
|
108
|
+
.rt-speed-menu__panel--start .rt-speed-menu__action:nth-last-child(#{$step + 1}) {
|
|
109
|
+
--rt-speed-menu-step: #{$step};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@media (prefers-reduced-motion: reduce) {
|
|
114
|
+
.rt-speed-menu__action {
|
|
115
|
+
transition: none;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
--rt-tag-severity-text: var(--rt-neutral-700);
|
|
29
29
|
--rt-tag-size-padding-block: var(--rt-space-1);
|
|
30
30
|
--rt-tag-size-padding-inline: var(--rt-space-2);
|
|
31
|
+
--rt-tag-match-bg: var(--rt-yellow-400);
|
|
32
|
+
--rt-tag-match-color: var(--rt-neutral-950);
|
|
33
|
+
--rt-tag-match-radius: var(--rt-radius-xs);
|
|
31
34
|
|
|
32
35
|
display: inline-flex;
|
|
33
36
|
max-width: 100%;
|
|
@@ -126,6 +129,15 @@
|
|
|
126
129
|
white-space: nowrap;
|
|
127
130
|
}
|
|
128
131
|
|
|
132
|
+
/* Найденное слово поиска — тем же цветом, что в подписи дерева и в поиске меню. */
|
|
133
|
+
&__part {
|
|
134
|
+
&--match {
|
|
135
|
+
border-radius: var(--rt-tag-match-radius);
|
|
136
|
+
background: var(--rt-tag-match-bg);
|
|
137
|
+
color: var(--rt-tag-match-color);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
129
141
|
&__close {
|
|
130
142
|
margin-inline-start: var(--rt-space-0-5);
|
|
131
143
|
}
|
|
@@ -52,3 +52,4 @@
|
|
|
52
52
|
- Кнопка фильтров рисуется, только если объявлен шаблон `[rtThreadListFilters]`;
|
|
53
53
|
`filtersActive` рисует на ней точку.
|
|
54
54
|
- Собственное поле поиска можно заменить шаблоном `[rtThreadListSearch]`.
|
|
55
|
+
- Поле поиска занимает всю шапку до кнопки фильтров, потолка ширины у него нет.
|
|
@@ -27,9 +27,10 @@
|
|
|
27
27
|
padding-inline: var(--rt-space-4);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
// Поиск занимает всю шапку до кнопки фильтров: в широкой колонке потолок оставлял
|
|
31
|
+
// пустое место справа, и шапка читалась недорисованной
|
|
30
32
|
&__search {
|
|
31
33
|
flex: 1 1 auto;
|
|
32
|
-
max-inline-size: 400px;
|
|
33
34
|
min-inline-size: 0;
|
|
34
35
|
}
|
|
35
36
|
|
|
@@ -24,6 +24,16 @@
|
|
|
24
24
|
**Отступ полосы сверху и снизу — свойства блока** `--rt-toolbar-padding-top` и
|
|
25
25
|
`--rt-toolbar-padding-bottom`, по умолчанию 8px. Список ставит им свои имена.
|
|
26
26
|
|
|
27
|
+
**Поле ввода в левой части берёт ширину из свойства блока `--rt-toolbar-field-width`**, по
|
|
28
|
+
умолчанию 400px (`--rt-size-100`), и не бывает шире самой части. Своей ширины у `rt-input` нет, и
|
|
29
|
+
без этого поиск списка сжимался до подсказки. Выпадающие отборы `rt-select` слева держат ширину по
|
|
30
|
+
содержимому: они стоят рядами, и по 400px каждый растягивали строку и вылезали за узкий экран. В
|
|
31
|
+
центре поле и отбор по-прежнему занимают всю ширину центра. Ширину берёт только поле, стоящее в
|
|
32
|
+
левой части прямо: поле внутри своего компонента приложения остаётся по содержимому, иначе обёртка
|
|
33
|
+
растёт до 400px и не сжимается, и несколько отборов не влезают в строку. На узком экране левая
|
|
34
|
+
часть стекает в колонку и не шире окна: у неё `min-width: 0`, иначе её наименьшая ширина бралась по
|
|
35
|
+
полю в 400px, и оно уходило за правый край.
|
|
36
|
+
|
|
27
37
|
**Плотная полоса остаётся строкой на любой ширине, и её левая часть сжимается.** Длинный
|
|
28
38
|
заголовок в ней переносится по словам и не выходит за правый край. Кнопки справа держат свою
|
|
29
39
|
ширину. Обычная полоса левую часть не сжимает: на узком экране она стекает в колонку.
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
--rt-toolbar-gap: var(--rt-space-2);
|
|
11
11
|
--rt-toolbar-center-justify: flex-end;
|
|
12
12
|
--rt-toolbar-center-overflow: visible;
|
|
13
|
+
--rt-toolbar-field-width: var(--rt-size-100);
|
|
13
14
|
|
|
14
15
|
display: block;
|
|
15
16
|
|
|
@@ -34,8 +35,25 @@
|
|
|
34
35
|
// прижимает right-бар к краю. Раньше каждый list-page переопределял
|
|
35
36
|
// эти три флекса через ::ng-deep — теперь поведение зашито здесь.
|
|
36
37
|
&--left {
|
|
38
|
+
min-width: 0;
|
|
37
39
|
flex: 0 0 auto;
|
|
38
40
|
gap: var(--rt-space-2);
|
|
41
|
+
|
|
42
|
+
// Поле слева — поиск списка — берёт ширину из свойства блока, а не по подсказке:
|
|
43
|
+
// своей ширины у поля нет, и в полосе по содержимому оно сжималось до подсказки.
|
|
44
|
+
// Шире самой полосы поле не становится — на узком экране оно её не распирает.
|
|
45
|
+
// Для этого у части min-width: 0: иначе её наименьшая ширина берётся по ширине
|
|
46
|
+
// поля, процент max-width в этом счёте не участвует, и в колонке узкого экрана
|
|
47
|
+
// часть уходила за правый край окна.
|
|
48
|
+
// Выпадающие отборы сюда не входят: они стоят здесь рядами и держат ширину по
|
|
49
|
+
// содержимому, а по 400 px каждый растягивали строку и вылезали за узкий экран.
|
|
50
|
+
// Ширина — только у поля, стоящего в части прямо. Поле внутри своего компонента
|
|
51
|
+
// приложения ширину не берёт: обёртка растёт по нему до 400px, её не сжать, и три
|
|
52
|
+
// таких отбора не влезали в строку и вылезали за край узкого экрана.
|
|
53
|
+
> rt-input {
|
|
54
|
+
width: var(--rt-toolbar-field-width);
|
|
55
|
+
max-width: 100%;
|
|
56
|
+
}
|
|
39
57
|
}
|
|
40
58
|
|
|
41
59
|
&--center {
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
| `rtTooltip` | `string \| null \| undefined` | `''` |
|
|
11
11
|
| `rtTooltipPlacement` | `'top' \| 'bottom' \| 'left' \| 'right' \| null` | `null` — сверху, под материальным набором снизу |
|
|
12
12
|
| `rtTooltipWhenTruncated` | `boolean` | `false` — подсказка только у обрезанного текста |
|
|
13
|
+
| `rtTooltipHideOnClick` | `boolean` | `true` — клик прячет открытую подсказку |
|
|
13
14
|
|
|
14
15
|
Выходов нет. Панель — `rt-tooltip` в оверлее CDK, `role="tooltip"`.
|
|
15
16
|
|
|
@@ -27,9 +28,15 @@ no-op, а не пустая панель под курсором. Поэтому
|
|
|
27
28
|
|
|
28
29
|
- Показывают и наведение, и фокус с клавиатуры; прячут уход курсора, потеря фокуса и **клик**
|
|
29
30
|
(панель мешала бы смотреть на результат нажатия).
|
|
31
|
+
- У переключателя ставят `rtTooltipHideOnClick="false"`: клик оставляет подсказку, а новый текст
|
|
32
|
+
`[rtTooltip]` («Включить» → «Выключить») появляется в открытой панели на месте. Отложенный показ клик
|
|
33
|
+
снимает при любом значении, поэтому касание на тач-экране подсказку не показывает.
|
|
34
|
+
- Смена текста при открытой подсказке меняет его на месте при любом значении входа; пустой текст её
|
|
35
|
+
прячет.
|
|
30
36
|
- Фокус, поставленный мышью или кодом, подсказку не показывает: меню возвращает фокус кнопке после
|
|
31
37
|
выбора пункта, и подсказка кнопки всплывала бы поверх того, что пункт открыл.
|
|
32
|
-
- `rt-icon-button` уже несёт эту директиву — там достаточно входа `tooltip
|
|
38
|
+
- `rt-icon-button` уже несёт эту директиву — там достаточно входа `tooltip`, а поведение по клику
|
|
39
|
+
задаёт его вход `tooltipHideOnClick`.
|
|
33
40
|
- Подсказка не заменяет `aria-label`: она вспомогательная, а имя контрола задаётся отдельно.
|
|
34
41
|
|
|
35
42
|
## Рядом
|