@rt-tools/ui-kit-v2 0.23.3 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +2321 -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-profile-menu.mjs +295 -0
- package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -0
- 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 +45 -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 +36 -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/profile-menu/CONTEXT.md +32 -0
- package/src/lib/components/profile-menu/rt-profile-menu.component.scss +104 -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/src/styles/_semantic.scss +5 -0
- package/styles/tokens.css +43 -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 +862 -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-profile-menu.d.ts +103 -0
- 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,32 @@
|
|
|
1
|
+
# `rt-profile-menu`
|
|
2
|
+
|
|
3
|
+
Содержимое попапа профиля в шапке `rt-page-header`: человек, организация, действия, язык и тема.
|
|
4
|
+
|
|
5
|
+
```html
|
|
6
|
+
<rt-profile-menu organizationChange="allowed" [userName]="name" [organizationName]="org" (signOut)="signOut()" />
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
| вход | тип | умолчание |
|
|
10
|
+
| -------------------- | -------------------------------------- | ---------- |
|
|
11
|
+
| `userName` | `string` | `''` |
|
|
12
|
+
| `organizationName` | `string` | `''` |
|
|
13
|
+
| `organizationChange` | `'hidden' \| 'denied' \| 'allowed'` | `'hidden'` |
|
|
14
|
+
| `passwordChange` | `boolean` | `false` |
|
|
15
|
+
| `locales` | `ReadonlyArray<IRtProfileMenu.Locale>` | `[]` |
|
|
16
|
+
| `locale` | `string` | `''` |
|
|
17
|
+
| `signOutDisabled` | `boolean` | `false` |
|
|
18
|
+
|
|
19
|
+
Выходы: `changeOrganization`, `changePassword`, `localeChange` (код языка), `signOut`.
|
|
20
|
+
|
|
21
|
+
## Главное, что нужно знать
|
|
22
|
+
|
|
23
|
+
**Панель рисует само меню.** У поповера кита оформления нет, и голые пункты меню в попапе шапки
|
|
24
|
+
легли бы прямо поверх страницы. Стили без инкапсуляции: попап живёт в перекрытии у конца `<body>`.
|
|
25
|
+
|
|
26
|
+
**Тему переключает `ThemeService`**, как у `rt-theme-toggle`: значок показывает тему, к которой
|
|
27
|
+
переведёт нажатие.
|
|
28
|
+
|
|
29
|
+
## Края
|
|
30
|
+
|
|
31
|
+
- Пустое название организации убирает её строку, пустой список языков — переключатель языка.
|
|
32
|
+
- Смена организации в режиме `denied` стоит приглушённой и объясняет причину подсказкой.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
@layer rt-kit.components {
|
|
2
|
+
/* rt-profile-menu — ViewEncapsulation.None: попап рисуется в перекрытии у конца `<body>`, и
|
|
3
|
+
правило по классу блока достаёт до него. Отсюда же красится круг под значком темы: он
|
|
4
|
+
рисуется разметкой `rt-menu-item`, и заскоупленное правило до чужого шаблона не дотянулось бы.
|
|
5
|
+
Подложку блок берёт у панели навигации кита, а тень своя: узкой панели нужен очерченный край. */
|
|
6
|
+
|
|
7
|
+
.rt-profile-menu {
|
|
8
|
+
display: flex;
|
|
9
|
+
min-width: var(--rt-profile-menu-min-width);
|
|
10
|
+
box-sizing: border-box;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
padding: var(--rt-profile-menu-padding);
|
|
13
|
+
border: var(--rt-profile-menu-border-width) solid var(--rt-nav-panel-color-border);
|
|
14
|
+
border-radius: var(--rt-profile-menu-radius);
|
|
15
|
+
background-color: var(--rt-nav-panel-color-bg);
|
|
16
|
+
box-shadow: var(--rt-profile-menu-shadow);
|
|
17
|
+
gap: var(--rt-space-2);
|
|
18
|
+
|
|
19
|
+
&__user {
|
|
20
|
+
display: flex;
|
|
21
|
+
flex-direction: column;
|
|
22
|
+
padding-bottom: var(--rt-space-2);
|
|
23
|
+
gap: var(--rt-space-2);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
&__avatar {
|
|
27
|
+
display: inline-flex;
|
|
28
|
+
width: var(--rt-profile-avatar-size);
|
|
29
|
+
height: var(--rt-profile-avatar-size);
|
|
30
|
+
align-items: center;
|
|
31
|
+
justify-content: center;
|
|
32
|
+
border: var(--rt-profile-avatar-border-width) solid var(--rt-nav-header-color-bg);
|
|
33
|
+
border-radius: var(--rt-profile-avatar-radius);
|
|
34
|
+
color: var(--rt-color-text-primary);
|
|
35
|
+
font-size: var(--rt-profile-avatar-font-size);
|
|
36
|
+
font-weight: var(--rt-font-weight-semibold);
|
|
37
|
+
line-height: var(--rt-leading-none);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&__name {
|
|
41
|
+
color: var(--rt-color-text-primary);
|
|
42
|
+
font-size: var(--rt-text-md);
|
|
43
|
+
font-weight: var(--rt-font-weight-semibold);
|
|
44
|
+
line-height: var(--rt-leading-tight);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Название заведения и слово-пояснение стоят в одной строке: без него непонятно, что это за
|
|
48
|
+
// вторая строка под именем.
|
|
49
|
+
&__organization {
|
|
50
|
+
color: var(--rt-nav-panel-item-color);
|
|
51
|
+
font-size: var(--rt-text-md);
|
|
52
|
+
font-weight: var(--rt-font-weight-regular);
|
|
53
|
+
line-height: var(--rt-leading-tight);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&__organization-label {
|
|
57
|
+
color: var(--rt-nav-panel-group-color);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Строки выступают за содержимое панели на половину её отступа: подсветка на наведении иначе
|
|
61
|
+
// упирается в рамку. Выступ и горизонтальный отступ строки — одно число, поэтому значок
|
|
62
|
+
// стоит на краю содержимого панели.
|
|
63
|
+
&__nav {
|
|
64
|
+
display: flex;
|
|
65
|
+
width: calc(100% + var(--rt-profile-row-inset) + var(--rt-profile-row-inset));
|
|
66
|
+
flex-direction: column;
|
|
67
|
+
margin-left: calc(-1 * var(--rt-profile-row-inset));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Строки просторнее и крупнее пунктов обычного меню кита: их четыре, и они читаются как
|
|
71
|
+
// список действий, а не как выпадающее меню.
|
|
72
|
+
// Правила строк идут потомком блока: свои умолчания кит объявляет одним классом, и без
|
|
73
|
+
// лишнего веса исход решал бы порядок подключения стилей.
|
|
74
|
+
& &__item,
|
|
75
|
+
& &__theme {
|
|
76
|
+
border-radius: var(--rt-profile-item-radius);
|
|
77
|
+
color: var(--rt-nav-panel-item-color);
|
|
78
|
+
font-size: var(--rt-profile-item-font-size);
|
|
79
|
+
font-weight: var(--rt-profile-item-font-weight);
|
|
80
|
+
gap: var(--rt-profile-item-content-gap);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
& &__item {
|
|
84
|
+
padding: var(--rt-profile-item-padding-y) var(--rt-profile-row-inset);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Переключатель темы выделен из списка акцентом: значок садится в круг на подложке акцента,
|
|
88
|
+
// подпись красится им же. Круг набирается отступом по content-box — размер самого значка
|
|
89
|
+
// приходит инлайном от `rt-icon`.
|
|
90
|
+
& &__theme {
|
|
91
|
+
width: calc(100% + var(--rt-profile-row-inset) + var(--rt-profile-row-inset));
|
|
92
|
+
padding: var(--rt-profile-row-inset);
|
|
93
|
+
margin-left: calc(-1 * var(--rt-profile-row-inset));
|
|
94
|
+
color: var(--rt-color-action-primary);
|
|
95
|
+
|
|
96
|
+
.rt-menu-item__icon {
|
|
97
|
+
box-sizing: content-box;
|
|
98
|
+
padding: var(--rt-profile-theme-icon-padding);
|
|
99
|
+
border-radius: var(--rt-profile-theme-icon-radius);
|
|
100
|
+
background-color: var(--rt-color-action-primary-subtle);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -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
|
|