@rt-tools/ui-kit-v2 0.16.0 → 0.18.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/README.md +25 -0
- package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs +79 -0
- package/fesm2022/rt-tools-ui-kit-v2-accordion.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +227 -0
- package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs +47 -0
- package/fesm2022/rt-tools-ui-kit-v2-aside-section.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +702 -0
- package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +214 -0
- package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs +53 -0
- package/fesm2022/rt-tools-ui-kit-v2-bar-list.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs +88 -0
- package/fesm2022/rt-tools-ui-kit-v2-bottom-sheet.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs +365 -0
- package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +152 -0
- package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-card.mjs +72 -0
- package/fesm2022/rt-tools-ui-kit-v2-card.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +111 -0
- package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs +76 -0
- package/fesm2022/rt-tools-ui-kit-v2-collapsible-text.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs +255 -0
- package/fesm2022/rt-tools-ui-kit-v2-confirm-popover.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs +1326 -0
- package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs +2590 -0
- package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs +45 -0
- package/fesm2022/rt-tools-ui-kit-v2-counter-row.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +158 -0
- package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +894 -0
- package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +1217 -0
- package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +779 -0
- package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +573 -0
- package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs +141 -0
- package/fesm2022/rt-tools-ui-kit-v2-delta-view.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs +68 -0
- package/fesm2022/rt-tools-ui-kit-v2-detail-list.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +478 -0
- package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs +183 -0
- package/fesm2022/rt-tools-ui-kit-v2-dot-field.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs +44 -0
- package/fesm2022/rt-tools-ui-kit-v2-download-link.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +260 -0
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +937 -0
- package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs +56 -0
- package/fesm2022/rt-tools-ui-kit-v2-empty-state.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +107 -0
- package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs +183 -0
- package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +219 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs +214 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-drop.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs +117 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-input.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs +32 -0
- package/fesm2022/rt-tools-ui-kit-v2-file-list.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +91 -0
- package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +220 -0
- package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-header.mjs +72 -0
- package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +163 -0
- package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs +674 -0
- package/fesm2022/rt-tools-ui-kit-v2-icon.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs +540 -0
- package/fesm2022/rt-tools-ui-kit-v2-image-cropper.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +227 -0
- package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs +37 -0
- package/fesm2022/rt-tools-ui-kit-v2-info-item.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +361 -0
- package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs +143 -0
- package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs +49 -0
- package/fesm2022/rt-tools-ui-kit-v2-live-badge.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-logo.mjs +97 -0
- package/fesm2022/rt-tools-ui-kit-v2-logo.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +57 -0
- package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +537 -0
- package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-message.mjs +105 -0
- package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs +71 -0
- package/fesm2022/rt-tools-ui-kit-v2-money-list.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +315 -0
- package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs +51 -0
- package/fesm2022/rt-tools-ui-kit-v2-night-grid.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-note.mjs +44 -0
- package/fesm2022/rt-tools-ui-kit-v2-note.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs +54 -0
- package/fesm2022/rt-tools-ui-kit-v2-notifications-bell.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +339 -0
- package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +187 -0
- package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +170 -0
- package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-popover.mjs +312 -0
- package/fesm2022/rt-tools-ui-kit-v2-popover.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +174 -0
- package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-radius.mjs +56 -0
- package/fesm2022/rt-tools-ui-kit-v2-radius.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +96 -41
- package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
- package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs +118 -0
- package/fesm2022/rt-tools-ui-kit-v2-ripple.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +290 -0
- package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs +37 -0
- package/fesm2022/rt-tools-ui-kit-v2-section-nav.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs +495 -0
- package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +1493 -0
- package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs +49 -0
- package/fesm2022/rt-tools-ui-kit-v2-skeleton-wrapper.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs +123 -0
- package/fesm2022/rt-tools-ui-kit-v2-skeleton.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs +70 -0
- package/fesm2022/rt-tools-ui-kit-v2-spinner.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs +92 -0
- package/fesm2022/rt-tools-ui-kit-v2-split-button.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs +147 -0
- package/fesm2022/rt-tools-ui-kit-v2-stat-tile.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +117 -0
- package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs +1636 -0
- package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +350 -0
- package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +122 -0
- package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +85 -0
- package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +73 -0
- package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +196 -0
- package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs +39 -0
- package/fesm2022/rt-tools-ui-kit-v2-timeline.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +338 -0
- package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +132 -0
- package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs +162 -0
- package/fesm2022/rt-tools-ui-kit-v2-toggle-switch.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs +135 -0
- package/fesm2022/rt-tools-ui-kit-v2-toolbar.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +214 -0
- package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs +64 -0
- package/fesm2022/rt-tools-ui-kit-v2-welcome-dialog.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +263 -0
- package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +296 -0
- package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -0
- package/fesm2022/rt-tools-ui-kit-v2.mjs +91 -23164
- package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
- package/package.json +349 -1
- package/rt-tools-ui-kit-v2-0.18.0.tgz +0 -0
- package/src/lib/components/action-bar/CONTEXT.md +5 -0
- package/src/lib/components/action-bar/rt-action-bar.component.scss +30 -16
- package/src/lib/components/aside/CONTEXT.md +9 -1
- package/src/lib/components/aside/footer/rt-aside-footer.component.scss +7 -8
- package/src/lib/components/aside/header/rt-aside-header.component.scss +16 -1
- package/src/lib/components/aside/rt-aside.component.scss +17 -1
- package/src/lib/components/button/CONTEXT.md +12 -11
- package/src/lib/components/button/rt-button.directive.scss +36 -0
- package/src/lib/components/data-list/settings/rt-data-list-settings-aside.component.scss +2 -2
- package/src/lib/components/data-table/cell/rt-data-table-cell.component.scss +1 -1
- package/src/lib/components/data-table/filter-cell/rt-data-table-filter-cell.component.scss +1 -1
- package/src/lib/components/data-table/rt-data-table.component.scss +1 -1
- package/src/lib/components/dialog/CONTEXT.md +9 -0
- package/src/lib/components/dialog/content/rt-dialog-content.component.scss +20 -0
- package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +18 -2
- package/src/lib/components/dialog/header/rt-dialog-header.component.scss +21 -3
- package/src/lib/components/dialog/rt-dialog.component.scss +9 -3
- package/src/lib/components/dot-field/CONTEXT.md +31 -0
- package/src/lib/components/dot-field/rt-dot-field.component.scss +20 -0
- package/src/lib/components/dot-field/stories/component/CONTEXT.md +14 -0
- package/src/lib/components/dot-field/stories/component/test-dot-field.component.scss +31 -0
- package/src/lib/components/dynamic-selector/CONTEXT.md +6 -0
- package/src/lib/components/field/CONTEXT.md +18 -2
- package/src/lib/components/header/CONTEXT.md +2 -2
- package/src/lib/components/icon/CONTEXT.md +11 -7
- package/src/lib/components/icon/rt-icon.component.scss +47 -0
- package/src/lib/components/icon-button/CONTEXT.md +27 -20
- package/src/lib/components/icon-button/rt-icon-button.component.scss +51 -25
- package/src/lib/components/image-upload/CONTEXT.md +20 -15
- package/src/lib/components/image-upload/rt-image-upload.component.scss +14 -2
- package/src/lib/components/pagination/rt-pagination.component.scss +1 -1
- package/src/lib/components/scroll-area/CONTEXT.md +2 -0
- package/src/lib/components/scroll-area/rt-scroll-area.component.scss +20 -3
- package/src/lib/components/select/rt-select.component.scss +4 -0
- package/src/lib/components/side-menu/CONTEXT.md +7 -2
- package/src/lib/components/spinner/CONTEXT.md +15 -8
- package/src/lib/components/spinner/rt-spinner.component.scss +108 -9
- package/src/lib/components/tag/rt-tag.component.scss +43 -23
- package/src/lib/components/toast/CONTEXT.md +8 -0
- package/src/lib/components/toast/rt-toast.component.scss +74 -15
- package/src/lib/components/toast/rt-toaster.component.scss +5 -1
- package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -37
- package/src/lib/components/toggle-switch/CONTEXT.md +11 -3
- package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +53 -14
- package/src/lib/components/toolbar/rt-toolbar.component.scss +15 -4
- package/src/lib/components/tooltip/CONTEXT.md +5 -5
- package/src/rich-editor/lib/components/chat/CONTEXT.md +7 -2
- package/src/rich-editor/lib/components/chat/rt-chat.component.scss +25 -0
- package/src/styles/_semantic.scss +1 -1
- package/styles/tokens.css +43 -8
- package/types/rt-tools-ui-kit-v2-accordion.d.ts +30 -0
- package/types/rt-tools-ui-kit-v2-action-bar.d.ts +140 -0
- package/types/rt-tools-ui-kit-v2-aside-section.d.ts +25 -0
- package/types/rt-tools-ui-kit-v2-aside.d.ts +436 -0
- package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +78 -0
- package/types/rt-tools-ui-kit-v2-bar-list.d.ts +41 -0
- package/types/rt-tools-ui-kit-v2-bottom-sheet.d.ts +20 -0
- package/types/rt-tools-ui-kit-v2-button.d.ts +76 -0
- package/types/rt-tools-ui-kit-v2-calendar.d.ts +96 -0
- package/types/rt-tools-ui-kit-v2-card.d.ts +38 -0
- package/types/rt-tools-ui-kit-v2-checkbox.d.ts +46 -0
- package/types/rt-tools-ui-kit-v2-collapsible-text.d.ts +20 -0
- package/types/rt-tools-ui-kit-v2-confirm-popover.d.ts +85 -0
- package/types/rt-tools-ui-kit-v2-container.d.ts +425 -0
- package/types/rt-tools-ui-kit-v2-core.d.ts +1222 -0
- package/types/rt-tools-ui-kit-v2-counter-row.d.ts +22 -0
- package/types/rt-tools-ui-kit-v2-counter.d.ts +70 -0
- package/types/rt-tools-ui-kit-v2-data-list.d.ts +334 -0
- package/types/rt-tools-ui-kit-v2-data-table.d.ts +494 -0
- package/types/rt-tools-ui-kit-v2-date-picker.d.ts +181 -0
- package/types/rt-tools-ui-kit-v2-date-range.d.ts +98 -0
- package/types/rt-tools-ui-kit-v2-delta-view.d.ts +20 -0
- package/types/rt-tools-ui-kit-v2-detail-list.d.ts +33 -0
- package/types/rt-tools-ui-kit-v2-dialog.d.ts +287 -0
- package/types/rt-tools-ui-kit-v2-dot-field.d.ts +17 -0
- package/types/rt-tools-ui-kit-v2-download-link.d.ts +17 -0
- package/types/rt-tools-ui-kit-v2-dynamic-list.d.ts +139 -0
- package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +384 -0
- package/types/rt-tools-ui-kit-v2-empty-state.d.ts +29 -0
- package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +57 -0
- package/types/rt-tools-ui-kit-v2-field.d.ts +82 -0
- package/types/rt-tools-ui-kit-v2-file-card.d.ts +114 -0
- package/types/rt-tools-ui-kit-v2-file-drop.d.ts +75 -0
- package/types/rt-tools-ui-kit-v2-file-input.d.ts +48 -0
- package/types/rt-tools-ui-kit-v2-file-list.d.ts +13 -0
- package/types/rt-tools-ui-kit-v2-filter-control.d.ts +72 -0
- package/types/rt-tools-ui-kit-v2-form-control.d.ts +74 -0
- package/types/rt-tools-ui-kit-v2-header.d.ts +40 -0
- package/types/rt-tools-ui-kit-v2-icon-button.d.ts +113 -0
- package/types/rt-tools-ui-kit-v2-icon.d.ts +238 -0
- package/types/rt-tools-ui-kit-v2-image-cropper.d.ts +168 -0
- package/types/rt-tools-ui-kit-v2-image-upload.d.ts +102 -0
- package/types/rt-tools-ui-kit-v2-info-item.d.ts +13 -0
- package/types/rt-tools-ui-kit-v2-input-number.d.ts +67 -0
- package/types/rt-tools-ui-kit-v2-input.d.ts +54 -0
- package/types/rt-tools-ui-kit-v2-live-badge.d.ts +23 -0
- package/types/rt-tools-ui-kit-v2-logo.d.ts +58 -0
- package/types/rt-tools-ui-kit-v2-markdown-text.d.ts +30 -0
- package/types/rt-tools-ui-kit-v2-menu.d.ts +217 -0
- package/types/rt-tools-ui-kit-v2-message.d.ts +56 -0
- package/types/rt-tools-ui-kit-v2-money-list.d.ts +34 -0
- package/types/rt-tools-ui-kit-v2-multiselect.d.ts +93 -0
- package/types/rt-tools-ui-kit-v2-night-grid.d.ts +39 -0
- package/types/rt-tools-ui-kit-v2-note.d.ts +21 -0
- package/types/rt-tools-ui-kit-v2-notifications-bell.d.ts +23 -0
- package/types/rt-tools-ui-kit-v2-page-header.d.ts +173 -0
- package/types/rt-tools-ui-kit-v2-pagination.d.ts +64 -0
- package/types/rt-tools-ui-kit-v2-photo-viewer.d.ts +98 -0
- package/types/rt-tools-ui-kit-v2-popover.d.ts +79 -0
- package/types/rt-tools-ui-kit-v2-radio-button.d.ts +61 -0
- package/types/rt-tools-ui-kit-v2-radius.d.ts +37 -0
- package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +16 -20
- package/types/rt-tools-ui-kit-v2-ripple.d.ts +39 -0
- package/types/rt-tools-ui-kit-v2-scroll-area.d.ts +91 -0
- package/types/rt-tools-ui-kit-v2-section-nav.d.ts +23 -0
- package/types/rt-tools-ui-kit-v2-select.d.ts +215 -0
- package/types/rt-tools-ui-kit-v2-side-menu.d.ts +483 -0
- package/types/rt-tools-ui-kit-v2-skeleton-wrapper.d.ts +32 -0
- package/types/rt-tools-ui-kit-v2-skeleton.d.ts +41 -0
- package/types/rt-tools-ui-kit-v2-spinner.d.ts +56 -0
- package/types/rt-tools-ui-kit-v2-split-button.d.ts +72 -0
- package/types/rt-tools-ui-kit-v2-stat-tile.d.ts +81 -0
- package/types/rt-tools-ui-kit-v2-stepper.d.ts +51 -0
- package/types/rt-tools-ui-kit-v2-table.d.ts +739 -0
- package/types/rt-tools-ui-kit-v2-tabs.d.ts +153 -0
- package/types/rt-tools-ui-kit-v2-tag.d.ts +70 -0
- package/types/rt-tools-ui-kit-v2-textarea.d.ts +36 -0
- package/types/rt-tools-ui-kit-v2-theme-toggle.d.ts +43 -0
- package/types/rt-tools-ui-kit-v2-thread-list.d.ts +111 -0
- package/types/rt-tools-ui-kit-v2-timeline.d.ts +35 -0
- package/types/rt-tools-ui-kit-v2-toast.d.ts +103 -0
- package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +109 -0
- package/types/rt-tools-ui-kit-v2-toggle-switch.d.ts +85 -0
- package/types/rt-tools-ui-kit-v2-toolbar.d.ts +66 -0
- package/types/rt-tools-ui-kit-v2-tooltip.d.ts +74 -0
- package/types/rt-tools-ui-kit-v2-welcome-dialog.d.ts +33 -0
- package/types/rt-tools-ui-kit-v2-workspace-details.d.ts +128 -0
- package/types/rt-tools-ui-kit-v2-workspace.d.ts +84 -0
- package/types/rt-tools-ui-kit-v2.d.ts +87 -9290
- package/rt-tools-ui-kit-v2-0.16.0.tgz +0 -0
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Signal, ElementRef, InputSignal, InputSignalWithTransform, WritableSignal, Renderer2, Injector, InjectionToken, OutputEmitterRef } from '@angular/core';
|
|
4
|
+
import { OverlayRef, ComponentType } from '@angular/cdk/overlay';
|
|
5
|
+
import { Subject, Observable } from 'rxjs';
|
|
6
|
+
import { TRtRadius, IRtIcon, TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';
|
|
7
|
+
import { IRtTag } from '@rt-tools/ui-kit-v2/tag';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Варианты ширины side-sheet:
|
|
11
|
+
* - `sm` — 400px (`--rt-aside-width-sm`)
|
|
12
|
+
* - `md` — 540px (`--rt-aside-width-md`, дефолт)
|
|
13
|
+
* - `lg` — 720px (`--rt-aside-width-lg`)
|
|
14
|
+
*/
|
|
15
|
+
type TRtAsideSize = 'sm' | 'md' | 'lg';
|
|
16
|
+
/**
|
|
17
|
+
* Раскладка контентной зоны side-sheet:
|
|
18
|
+
* - `default` — контентная зона сама скроллится при overflow (штатный режим);
|
|
19
|
+
* - `tabs` — контент — это `rt-tabs`: внешняя зона перестаёт быть скроллером,
|
|
20
|
+
* полоса вкладок прибита, скроллится только контент активной вкладки
|
|
21
|
+
* (`rt-tabs__content`).
|
|
22
|
+
*/
|
|
23
|
+
type TRtAsideContentLayout = 'default' | 'tabs';
|
|
24
|
+
/**
|
|
25
|
+
* Презентационный styled-frame для side-sheet.
|
|
26
|
+
*
|
|
27
|
+
* Видимость / backdrop / scroll-block / ESC / slide-in анимация — НЕ внутренняя
|
|
28
|
+
* ответственность компонента. Это обеспечивает CDK Overlay через
|
|
29
|
+
* `RtAsideService.open()`. rt-aside здесь — стилизованная "рамка" с size-вариантами
|
|
30
|
+
* и тремя слотами: `rt-aside-header`, содержимое и `rt-aside-footer`.
|
|
31
|
+
*
|
|
32
|
+
* Содержимое лежит в одной зоне `.rt-aside__content` — она и держит инсет панели,
|
|
33
|
+
* и прокручивается. Пока зоны не было, каждый корневой узел содержимого получал
|
|
34
|
+
* инсет и прокрутку сам по себе: разделы делили высоту панели между собой, а
|
|
35
|
+
* обводка фокуса поля срезалась краем такого мини-скроллера.
|
|
36
|
+
*
|
|
37
|
+
* Семантика — `role="complementary"` (mirror rt-dialog имеет `role="dialog"`,
|
|
38
|
+
* aside — другая роль, side-sheet не обязательно блокирующий).
|
|
39
|
+
*
|
|
40
|
+
* `ViewEncapsulation.None` — стили префиксованы `.rt-aside`, чтобы соседние
|
|
41
|
+
* rt-aside-header / rt-aside-footer работали с одним BEM-блоком без
|
|
42
|
+
* cross-encapsulation хака.
|
|
43
|
+
*/
|
|
44
|
+
declare class RtAsideComponent {
|
|
45
|
+
#private;
|
|
46
|
+
protected readonly frame: Signal<ElementRef<HTMLElement>>;
|
|
47
|
+
protected readonly hasRequestError: Signal<boolean>;
|
|
48
|
+
readonly size: InputSignal<TRtAsideSize>;
|
|
49
|
+
readonly contentLayout: InputSignal<TRtAsideContentLayout>;
|
|
50
|
+
readonly width: InputSignal<string | null>;
|
|
51
|
+
readonly ariaLabel: InputSignal<string | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Ошибка неудавшегося запроса. Пока она есть, между шапкой и содержимым стоит блок ошибки с
|
|
54
|
+
* кнопкой копирования; `null` и `undefined` — ошибки нет, любое другое значение её показывает.
|
|
55
|
+
*/
|
|
56
|
+
readonly requestError: InputSignal<unknown>;
|
|
57
|
+
/**
|
|
58
|
+
* Держать Tab внутри панели. При включении фокус уходит на `[cdkFocusInitial]` или первый
|
|
59
|
+
* элемент под Tab, а когда панель уходит или вход гаснет, возвращается туда, где стоял.
|
|
60
|
+
*/
|
|
61
|
+
readonly trapFocus: InputSignalWithTransform<boolean, BooleanInput>;
|
|
62
|
+
/** Идёт запрос: панель накрыта слоем с крутилкой и помечена занятой. */
|
|
63
|
+
readonly pending: InputSignalWithTransform<boolean, BooleanInput>;
|
|
64
|
+
constructor();
|
|
65
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideComponent, never>;
|
|
66
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideComponent, "rt-aside", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "contentLayout": { "alias": "contentLayout"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "requestError": { "alias": "requestError"; "required": false; "isSignal": true; }; "trapFocus": { "alias": "trapFocus"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; }, {}, never, ["rt-aside-header", "*", "rt-aside-footer"], true, never>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Жест закрытия, на который панель не закрылась: `Escape` или нажатие по подложке. Панель
|
|
71
|
+
* отказывает в нём под `disableClose()` и когда жест выключен настройкой открытия.
|
|
72
|
+
*/
|
|
73
|
+
type TRtAsideCloseRequest = 'escape' | 'backdrop';
|
|
74
|
+
/**
|
|
75
|
+
* Хэндл к программно открытой side-sheet (через `RtAsideService.open()`).
|
|
76
|
+
*
|
|
77
|
+
* Контент-компонент инжектит `RtAsideRef` и закрывает aside через `.close(result?)`.
|
|
78
|
+
* Родитель ждёт результата через `.afterClosed()`.
|
|
79
|
+
*
|
|
80
|
+
* Generic `<T>` — тип результата `close(result)`. Дефолт `unknown` — если результат
|
|
81
|
+
* не нужен, оставляй generic пустым.
|
|
82
|
+
*
|
|
83
|
+
* Lifecycle close():
|
|
84
|
+
* 1. Race-guard `#isClosing` гарантирует один эмит даже при двойном вызове.
|
|
85
|
+
* 2. Снимает `rt-aside-overlay--open` и ставит `rt-aside-overlay--leaving` на host —
|
|
86
|
+
* CSS-transition (200ms) играет slide-out.
|
|
87
|
+
* 3. Эмиттит result в `afterClosed()` СРАЗУ (consumer не ждёт анимацию).
|
|
88
|
+
* 4. Через `setTimeout(200ms)` зовёт `overlayRef.dispose()` — overlay убран после анимации.
|
|
89
|
+
*
|
|
90
|
+
* Слой, снятый без `close()` — переходом по адресу (`disposeOnNavigation`) или уничтожением
|
|
91
|
+
* хозяина, — тоже завершает `afterClosed()`: подписчик получает `undefined`.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* \`\`\`ts
|
|
95
|
+
* // в контент-компоненте
|
|
96
|
+
* private readonly asideRef = inject(RtAsideRef<{ saved: boolean }>);
|
|
97
|
+
* onSave(): void { this.asideRef.close({ saved: true }); }
|
|
98
|
+
*
|
|
99
|
+
* // в родителе
|
|
100
|
+
* asideService.open(EditAsideComponent).afterClosed().subscribe(result => {...});
|
|
101
|
+
* \`\`\`
|
|
102
|
+
*/
|
|
103
|
+
declare class RtAsideRef<T = unknown> {
|
|
104
|
+
#private;
|
|
105
|
+
/**
|
|
106
|
+
* Runtime-флаг, блокирующий close() через ESC / backdrop click.
|
|
107
|
+
*
|
|
108
|
+
* Default `false`. Включай (`asideRef.disableClose.set(true)`) на время
|
|
109
|
+
* in-flight submit'а, чтобы юзер не потерял введённые в форму данные.
|
|
110
|
+
* Программный `close(result)` гейтом не задет — он всегда закрывает.
|
|
111
|
+
*/
|
|
112
|
+
readonly disableClose: WritableSignal<boolean>;
|
|
113
|
+
/**
|
|
114
|
+
* `closeRequestsSource` наполняет служба: она слушает жесты и знает, отказала ли в них панель.
|
|
115
|
+
* Хэндл только завершает поток вместе с панелью.
|
|
116
|
+
*/
|
|
117
|
+
constructor(overlayRef: OverlayRef, renderer: Renderer2, closeRequestsSource?: Subject<TRtAsideCloseRequest>);
|
|
118
|
+
/** Закрывает overlay со slide-out анимацией; эмиттит result в `afterClosed()` синхронно. */
|
|
119
|
+
close(result?: T): void;
|
|
120
|
+
/** Эмиттит один раз — результат `close(result)` или `undefined` при снятом слое — и завершается. */
|
|
121
|
+
afterClosed(): Observable<T | undefined>;
|
|
122
|
+
/**
|
|
123
|
+
* Жесты закрытия, в которых панель отказала: `Escape` и нажатие по подложке под
|
|
124
|
+
* `disableClose()` или выключенные настройкой. Завершается вместе с панелью.
|
|
125
|
+
*/
|
|
126
|
+
closeRequests(): Observable<TRtAsideCloseRequest>;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Позиционирование side-sheet — у какого края viewport "приклеена" панель.
|
|
131
|
+
*/
|
|
132
|
+
type TRtAsidePosition = 'right' | 'left';
|
|
133
|
+
/**
|
|
134
|
+
* Конфигурация открытия side-sheet через `RtAsideService.open()`.
|
|
135
|
+
*/
|
|
136
|
+
interface IRtAsideConfig<TData = unknown> {
|
|
137
|
+
/** Данные, доступные внутри aside'а через `inject(RT_ASIDE_DATA)`. */
|
|
138
|
+
data?: TData;
|
|
139
|
+
/** Дополнительный CSS-класс для backdrop (поверх стандартного `rt-aside-backdrop`). */
|
|
140
|
+
backdropClass?: string | string[];
|
|
141
|
+
/** Дополнительный CSS-класс для panel-обёртки overlay (поверх `rt-aside-overlay`). */
|
|
142
|
+
panelClass?: string | string[];
|
|
143
|
+
/** Закрывать aside по клику на backdrop. По дефолту `true`. */
|
|
144
|
+
closeOnBackdropClick?: boolean;
|
|
145
|
+
/** Закрывать aside по ESC. По дефолту `true`. */
|
|
146
|
+
closeOnEscape?: boolean;
|
|
147
|
+
/** К какому краю viewport "приклеить" панель. По дефолту `"right"`. */
|
|
148
|
+
position?: TRtAsidePosition;
|
|
149
|
+
/**
|
|
150
|
+
* Injector хозяина панели — обычно `inject(Injector)` открывающего компонента. Он становится
|
|
151
|
+
* родителем портала: содержимое видит провайдеры хозяина. Уничтожение хозяина закрывает
|
|
152
|
+
* панель через `close()`. Без него родитель — корневой injector, и панель живёт сама по себе.
|
|
153
|
+
*/
|
|
154
|
+
injector?: Injector;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Программный API для открытия side-sheet поверх CDK Overlay.
|
|
158
|
+
*
|
|
159
|
+
* Архитектурно зеркалит `RtDialogService`, отличаясь только positionStrategy
|
|
160
|
+
* (edge-anchored: `right('0')` / `left('0')` + `top('0')`) и slide-in анимацией,
|
|
161
|
+
* которая триггерится через CSS-классы на overlay host (`Renderer2` инжектится
|
|
162
|
+
* через `RendererFactory2`, потому что в service нет ComponentRef).
|
|
163
|
+
*
|
|
164
|
+
* Lifecycle:
|
|
165
|
+
* 1. `overlay.create({ panelClass: [..., '--entering'] })` — host получает initial
|
|
166
|
+
* CSS-стейт (translateX(±100%)).
|
|
167
|
+
* 2. `overlayRef.attach(portal)` — контент-компонент монтируется в host.
|
|
168
|
+
* 3. На следующий paint (`requestAnimationFrame`) сервис снимает `--entering` и
|
|
169
|
+
* добавляет `--open` — CSS-transition сделает slide-in.
|
|
170
|
+
* 4. На `ref.close(result)` ref добавляет `--leaving`, эмиттит result синхронно,
|
|
171
|
+
* deferred `dispose()` через 200ms (длительность анимации).
|
|
172
|
+
*
|
|
173
|
+
* Альтернатива rt-dialog — для длинных форм / мастеров / side-panels, где
|
|
174
|
+
* центрированная модалка ощущается тесной. Не предназначено для подтверждений
|
|
175
|
+
* или коротких диалогов (для этого — `RtDialogService`).
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* \`\`\`ts
|
|
179
|
+
* private readonly asideService = inject(RtAsideService);
|
|
180
|
+
*
|
|
181
|
+
* openProfile(userId: number): void {
|
|
182
|
+
* const ref = this.asideService.open<GuestProfileAsideComponent, { userId: number }, void>(
|
|
183
|
+
* GuestProfileAsideComponent,
|
|
184
|
+
* { data: { userId }, position: "right" }
|
|
185
|
+
* );
|
|
186
|
+
* ref.afterClosed().subscribe(() => this.reloadList());
|
|
187
|
+
* }
|
|
188
|
+
*
|
|
189
|
+
* // контент-компонент
|
|
190
|
+
* @Component({ ... })
|
|
191
|
+
* export class GuestProfileAsideComponent {
|
|
192
|
+
* readonly data = inject(RT_ASIDE_DATA) as { userId: number };
|
|
193
|
+
* readonly #ref = inject(RtAsideRef);
|
|
194
|
+
* close(): void { this.#ref.close(); }
|
|
195
|
+
* }
|
|
196
|
+
* \`\`\`
|
|
197
|
+
*/
|
|
198
|
+
declare class RtAsideService {
|
|
199
|
+
#private;
|
|
200
|
+
constructor();
|
|
201
|
+
open<TComponent, TData = unknown, TResult = unknown>(component: ComponentType<TComponent>, config?: IRtAsideConfig<TData>): RtAsideRef<TResult>;
|
|
202
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideService, never>;
|
|
203
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Injection token для передачи данных в side-sheet, открытую через `RtAsideService.open()`.
|
|
208
|
+
*
|
|
209
|
+
* Пользовательский компонент-контент aside'а инжектит токен и получает данные,
|
|
210
|
+
* переданные в `IRtAsideConfig.data`. Тип значения задаётся generic'ом — `inject(RT_ASIDE_DATA)`
|
|
211
|
+
* вернёт `unknown`, прокастуй через `inject(RT_ASIDE_DATA) as MyDataType` ИЛИ
|
|
212
|
+
* объяви токен с конкретным generic'ом в feature-либе.
|
|
213
|
+
*
|
|
214
|
+
* Намеренно отдельный токен от `RT_DIALOG_DATA`, чтобы type-checker не путал контексты
|
|
215
|
+
* (rt-dialog vs rt-aside) — оба сервиса могут существовать в одном DI-дереве.
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* \`\`\`ts
|
|
219
|
+
* @Component({...})
|
|
220
|
+
* export class GuestProfileAsideComponent {
|
|
221
|
+
* readonly data = inject(RT_ASIDE_DATA) as { userId: number };
|
|
222
|
+
* }
|
|
223
|
+
*
|
|
224
|
+
* // parent
|
|
225
|
+
* asideService.open(GuestProfileAsideComponent, { data: { userId: 42 } });
|
|
226
|
+
* \`\`\`
|
|
227
|
+
*/
|
|
228
|
+
declare const RT_ASIDE_DATA: InjectionToken<unknown>;
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Контракты `rt-aside-header`. Один корневой неймспейс с
|
|
232
|
+
* префиксом `I`. `Badge` описывает один тег в ряду под заголовком — обёртка
|
|
233
|
+
* над `rt-tag`-инпутами с дефолтами, чтобы потребитель задавал только нужное.
|
|
234
|
+
*/
|
|
235
|
+
declare namespace IRtAsideHeader {
|
|
236
|
+
/** Конфиг одного бэйджа в ряду под заголовком (проксирует инпуты `rt-tag`). */
|
|
237
|
+
interface Badge {
|
|
238
|
+
/** Текст бэйджа. */
|
|
239
|
+
value: string;
|
|
240
|
+
/** Палитра. Дефолт потребления — `neutral`. */
|
|
241
|
+
severity?: IRtTag.Severity;
|
|
242
|
+
/** Вид заливки. Дефолт потребления — `solid`. */
|
|
243
|
+
appearance?: IRtTag.Appearance;
|
|
244
|
+
/** Шаг скругления метки. Пусто — `md`. */
|
|
245
|
+
radius?: TRtRadius | null;
|
|
246
|
+
/** Префикс-иконка. */
|
|
247
|
+
icon?: IRtIcon.Name | null;
|
|
248
|
+
/**
|
|
249
|
+
* Ссылка-назначение. Если задана — бэйдж рендерится якорем и открывает
|
|
250
|
+
* URL в новой вкладке (`target="_blank"`); иначе это обычный тег.
|
|
251
|
+
*/
|
|
252
|
+
href?: string;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Заголовок side-sheet'а; работает в двух modes:
|
|
258
|
+
*
|
|
259
|
+
* 1. **Programmatic** (через `RtAsideService.open()`) — `RtAsideRef` провайдится
|
|
260
|
+
* оверлей-инжектором; стрелка «назад» дёргает `asideRef.close()` напрямую,
|
|
261
|
+
* consumer подписан на `afterClosed()`.
|
|
262
|
+
* 2. **Route-driven** (через `[rtContainerRightSidenavPanel]` driver в
|
|
263
|
+
* rt-container'е) — `RtAsideRef` НЕ провайдится (overlay принадлежит
|
|
264
|
+
* rt-container'у, не RtAsideService). Consumer слушает `(dismiss)` output и
|
|
265
|
+
* сам зовёт `panel.close()`.
|
|
266
|
+
*
|
|
267
|
+
* Оба пути живут одновременно: `onDismiss()` сперва эмитит output, затем (если
|
|
268
|
+
* есть) дёргает optional `asideRef.close()`.
|
|
269
|
+
*
|
|
270
|
+
* Доменные действия (отклонить / удалить / снять с публикации и т.п.)
|
|
271
|
+
* проецируются в слот `[asideActions]` как ряд `rt-icon-button` справа от title.
|
|
272
|
+
*
|
|
273
|
+
* Слот `[asideHeaderContent]` — строка под заголовком на всю ширину шапки: поиск, вкладки,
|
|
274
|
+
* сводка. Пустой слот места не занимает.
|
|
275
|
+
*
|
|
276
|
+
* `ViewEncapsulation.None` — для единообразия с rt-dialog-header (стили
|
|
277
|
+
* префиксованы `.rt-aside-header`).
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```html
|
|
281
|
+
* <rt-aside-header title="Профиль пользователя" />
|
|
282
|
+
* <rt-aside-header title="Создание записи" [closable]="false" />
|
|
283
|
+
* <rt-aside-header title="Детали" (dismiss)="onClose()">
|
|
284
|
+
* <rt-icon-button asideActions icon="ico-error" variant="danger"
|
|
285
|
+
* ariaLabel="Отклонить" (clicked)="reject()" />
|
|
286
|
+
* </rt-aside-header>
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
declare class RtAsideHeaderComponent {
|
|
290
|
+
#private;
|
|
291
|
+
/** Текст заголовка — рендерится в `<h2>`. Null/пустая строка вместе с
|
|
292
|
+
* `[loading]=true` показывают skeleton вместо title. */
|
|
293
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
294
|
+
readonly title: InputSignal<string | null>;
|
|
295
|
+
/**
|
|
296
|
+
* Мелкий приглушённый надзаголовок НАД основным title (контекст действия:
|
|
297
|
+
* «Создание записи», «Запись № 6»). Null (дефолт) — обычный
|
|
298
|
+
* однострочный хедер. Overline не участвует в skeleton-режиме — это
|
|
299
|
+
* статичный текст, известный до загрузки данных.
|
|
300
|
+
*/
|
|
301
|
+
readonly overline: InputSignal<string | null>;
|
|
302
|
+
/**
|
|
303
|
+
* Приглушённая подпись ПОД заголовком: что делается в панели. Null (дефолт) —
|
|
304
|
+
* строки нет. Как надзаголовок, в skeleton-режиме не участвует.
|
|
305
|
+
*/
|
|
306
|
+
readonly subtitle: InputSignal<string | null>;
|
|
307
|
+
/**
|
|
308
|
+
* Ряд бэйджей (`rt-tag`) под заголовком — контекст сущности (статус, метка
|
|
309
|
+
* записи и т.п.). Пустой массив (дефолт) — ряд не рендерится. Async-данные:
|
|
310
|
+
* потребитель отдаёт `[]` пока сущность не зарезолвилась.
|
|
311
|
+
*/
|
|
312
|
+
readonly badges: InputSignal<readonly IRtAsideHeader.Badge[]>;
|
|
313
|
+
/** Показывать кнопку закрытия в углу заголовка. Дефолт `true`. */
|
|
314
|
+
readonly closable: InputSignalWithTransform<boolean, BooleanInput>;
|
|
315
|
+
/** Показывать skeleton вместо title (loading-state aside'а пока данные
|
|
316
|
+
* резолвятся через async fasade). Дефолт `false`. */
|
|
317
|
+
readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
|
|
318
|
+
/**
|
|
319
|
+
* Эмитится при клике по стрелке «назад» — намерение пользователя закрыть
|
|
320
|
+
* aside (intent, не «закрыто»). Route-driven consumer слушает этот output и
|
|
321
|
+
* дёргает `panel.close()` сам. Имя `dismiss` вместо `close` — ESLint
|
|
322
|
+
* `@angular-eslint/no-output-native` блокирует output с именем стандартного
|
|
323
|
+
* DOM-события (`close`).
|
|
324
|
+
*/
|
|
325
|
+
readonly dismiss: OutputEmitterRef<void>;
|
|
326
|
+
protected onDismiss(): void;
|
|
327
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideHeaderComponent, never>;
|
|
328
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideHeaderComponent, "rt-aside-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "overline": { "alias": "overline"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "badges": { "alias": "badges"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, ["[asideActions]", "[asideHeaderContent]"], true, never>;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Footer-слот для композиции внутри `<rt-aside>`. Две зоны через именованные
|
|
333
|
+
* слоты: `[asideDismiss]` (слева — «Закрыть», `appearance="text"`, всегда) и
|
|
334
|
+
* `[asidePrimary]` (справа — единственный позитивный глагол: Сохранить /
|
|
335
|
+
* Отправить / Опубликовать, если есть). Раскладка `justify-content:
|
|
336
|
+
* space-between`. Доменные/деструктивные действия в футер не кладём — они
|
|
337
|
+
* проецируются иконками в `<rt-aside-header>` слот `[asideActions]`.
|
|
338
|
+
*
|
|
339
|
+
* Только две именованные зоны — безатрибутный контент НЕ проецируется (контент
|
|
340
|
+
* без `asideDismiss`/`asidePrimary` не отрендерится).
|
|
341
|
+
*
|
|
342
|
+
* `ViewEncapsulation.None` — для единообразия с rt-aside.
|
|
343
|
+
*
|
|
344
|
+
* @example
|
|
345
|
+
* \`\`\`html
|
|
346
|
+
* <rt-aside-footer>
|
|
347
|
+
* <button rtButton asideDismiss appearance="text" (click)="onClose()">Закрыть</button>
|
|
348
|
+
* <button rtButton asidePrimary theme="primary" (click)="save()">Сохранить</button>
|
|
349
|
+
* </rt-aside-footer>
|
|
350
|
+
* \`\`\`
|
|
351
|
+
*/
|
|
352
|
+
declare class RtAsideFooterComponent {
|
|
353
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideFooterComponent, never>;
|
|
354
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideFooterComponent, "rt-aside-footer", never, {}, {}, never, ["[asideDismiss]", "[asidePrimary]"], true, never>;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* Блок ошибки запроса боковой панели: надпись и кнопка, которая кладёт в буфер обмена время и
|
|
359
|
+
* ошибку. Перенос `rtui-aside-error-box` первого кита без Material.
|
|
360
|
+
*
|
|
361
|
+
* Обычно его рисует сама панель по входу `requestError`; отдельно он нужен приложению, которое
|
|
362
|
+
* показывает ошибку в другом месте.
|
|
363
|
+
*/
|
|
364
|
+
declare class RtAsideErrorBoxComponent {
|
|
365
|
+
#private;
|
|
366
|
+
protected readonly title: Signal<string>;
|
|
367
|
+
protected readonly copied: WritableSignal<boolean>;
|
|
368
|
+
protected readonly buttonLabel: Signal<string>;
|
|
369
|
+
protected readonly buttonIcon: Signal<string | null>;
|
|
370
|
+
/** Ошибка, пришедшая от неудавшегося запроса: уходит в копию как JSON. */
|
|
371
|
+
readonly error: InputSignal<unknown>;
|
|
372
|
+
constructor();
|
|
373
|
+
protected onCopy(): void;
|
|
374
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideErrorBoxComponent, never>;
|
|
375
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideErrorBoxComponent, "rt-aside-error-box", never, { "error": { "alias": "error"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Окно, которое видит пользователь, закрывая панель с несохранёнными правками. Три
|
|
380
|
+
* исхода: закрыть без сохранения, закрыть с сохранением, остаться. Открывает его
|
|
381
|
+
* общая основа асайда, поэтому наружу компонент не экспортируется.
|
|
382
|
+
*
|
|
383
|
+
* Отказ от правок подан красной кнопкой: это единственный исход, после которого
|
|
384
|
+
* введённое не вернуть.
|
|
385
|
+
*/
|
|
386
|
+
declare class RtAsideUnsavedDialogComponent {
|
|
387
|
+
#private;
|
|
388
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
389
|
+
protected onDiscard(): void;
|
|
390
|
+
protected onSave(): void;
|
|
391
|
+
protected onStay(): void;
|
|
392
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideUnsavedDialogComponent, never>;
|
|
393
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAsideUnsavedDialogComponent, "rt-aside-unsaved-dialog", never, {}, {}, never, never, true, never>;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/** Что делает панель, когда её просят закрыться. */
|
|
397
|
+
declare enum ERtAsideCloseIntent {
|
|
398
|
+
/** Ничего: идёт запись, и закрытие посреди неё потеряло бы её результат. */
|
|
399
|
+
Ignore = "ignore",
|
|
400
|
+
/** Закрыться сразу: терять нечего. */
|
|
401
|
+
Close = "close",
|
|
402
|
+
/** Спросить, что сделать с несохранёнными правками. */
|
|
403
|
+
Ask = "ask"
|
|
404
|
+
}
|
|
405
|
+
/** Исход окна с несохранёнными правками. */
|
|
406
|
+
declare enum ERtAsideUnsavedOutcome {
|
|
407
|
+
/** Закрыть без сохранения. */
|
|
408
|
+
Discard = "discard",
|
|
409
|
+
/** Закрыть с сохранением. */
|
|
410
|
+
Save = "save",
|
|
411
|
+
/** Остаться в панели. */
|
|
412
|
+
Stay = "stay"
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Гард закрытия, который панель ставит на себя: признак нетронутости формы и
|
|
416
|
+
* запись, которую зовёт исход «закрыть с сохранением».
|
|
417
|
+
*/
|
|
418
|
+
interface IRtAsideUnsavedGuard {
|
|
419
|
+
pristine: Signal<boolean>;
|
|
420
|
+
save: () => void;
|
|
421
|
+
}
|
|
422
|
+
/** Состояние панели на момент намерения закрыть её. */
|
|
423
|
+
interface IRtAsideCloseState {
|
|
424
|
+
submitting: boolean;
|
|
425
|
+
guarded: boolean;
|
|
426
|
+
pristine: boolean;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Решение по намерению закрыть панель. Одно на все четыре пути закрытия: кнопку
|
|
430
|
+
* в шапке, кнопку в футере, нажатие мимо панели и клавишу Esc — иначе Esc обошёл
|
|
431
|
+
* бы то, что ловит кнопка.
|
|
432
|
+
*/
|
|
433
|
+
declare function resolveCloseIntent(state: IRtAsideCloseState): ERtAsideCloseIntent;
|
|
434
|
+
|
|
435
|
+
export { ERtAsideCloseIntent, ERtAsideUnsavedOutcome, IRtAsideHeader, RT_ASIDE_DATA, RtAsideComponent, RtAsideErrorBoxComponent, RtAsideFooterComponent, RtAsideHeaderComponent, RtAsideRef, RtAsideService, RtAsideUnsavedDialogComponent, resolveCloseIntent };
|
|
436
|
+
export type { IRtAsideCloseState, IRtAsideConfig, IRtAsideUnsavedGuard, TRtAsideCloseRequest, TRtAsideContentLayout, TRtAsidePosition, TRtAsideSize };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Signal, ElementRef, WritableSignal, InputSignal, InputSignalWithTransform, TemplateRef, OutputEmitterRef } from '@angular/core';
|
|
4
|
+
import { TRtKitLabelMap, IRtIcon } from '@rt-tools/ui-kit-v2/core';
|
|
5
|
+
import { RtFormControlBase } from '@rt-tools/ui-kit-v2/form-control';
|
|
6
|
+
import { RtPopoverDirective } from '@rt-tools/ui-kit-v2/popover';
|
|
7
|
+
import * as i1 from '@rt-tools/ui-kit-v2/radius';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Модель `<rt-autocomplete>`: один корневой неймспейс с префиксом
|
|
11
|
+
* `I`. Generic-параметр `TItem` — тип каждой подсказки и selected value.
|
|
12
|
+
*/
|
|
13
|
+
declare namespace IRtAutocomplete {
|
|
14
|
+
/**
|
|
15
|
+
* Событие запроса подсказок. Подписчик использует `query` для server-side
|
|
16
|
+
* фильтрации (HTTP-запрос → patchState suggestions); `originalEvent`
|
|
17
|
+
* прокидывается для случаев, когда нужно отличить `input` от `focus`-trigger.
|
|
18
|
+
*/
|
|
19
|
+
interface CompleteEvent {
|
|
20
|
+
query: string;
|
|
21
|
+
originalEvent: Event;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Typeahead/autocomplete с server-side filter через `(complete)` event.
|
|
27
|
+
*
|
|
28
|
+
* Panel рендерится через CDK Overlay (`[rtPopover]` trigger="manual" на input'е)
|
|
29
|
+
* — открывается по набору текста (не click/hover), не обрезается overflow.
|
|
30
|
+
* Подписчик получает `(complete)` с текущей строкой и сам грузит подсказки.
|
|
31
|
+
*
|
|
32
|
+
* CVA через общий `RtFormControlBase`. Generic `TItem` — тип подсказки и
|
|
33
|
+
* selected value. Крестик (`clearable`) виден при непустом тексте — очищает и
|
|
34
|
+
* текст, и выбранный объект. Keyboard-nav (activedescendant): ArrowUp/Down —
|
|
35
|
+
* highlight, Enter — выбрать активную, Escape — закрыть. Home/End — deferred.
|
|
36
|
+
*/
|
|
37
|
+
declare class RtAutocompleteComponent<TItem> extends RtFormControlBase<TItem | null> {
|
|
38
|
+
#private;
|
|
39
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
40
|
+
protected readonly panelId: string;
|
|
41
|
+
protected readonly popover: Signal<RtPopoverDirective>;
|
|
42
|
+
protected readonly fieldEl: Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
43
|
+
protected readonly inputText: WritableSignal<string>;
|
|
44
|
+
protected readonly activeIndex: WritableSignal<number>;
|
|
45
|
+
protected readonly isOpen: Signal<boolean>;
|
|
46
|
+
/** Идентификатор подсвеченной опции — тот же, что уходит в `aria-activedescendant`. */
|
|
47
|
+
protected readonly activeOptionId: Signal<string | null>;
|
|
48
|
+
protected readonly hasValue: Signal<boolean>;
|
|
49
|
+
readonly displayText: Signal<string>;
|
|
50
|
+
readonly suggestions: InputSignal<ReadonlyArray<TItem>>;
|
|
51
|
+
readonly displayWith: InputSignal<(item: TItem | null) => string>;
|
|
52
|
+
readonly placeholder: InputSignal<string>;
|
|
53
|
+
readonly minLength: InputSignal<number>;
|
|
54
|
+
/** Префикс-иконка слева в поле (например, `map` для поиска). */
|
|
55
|
+
readonly iconLeft: InputSignal<IRtIcon.Name | null>;
|
|
56
|
+
readonly openOnFocus: InputSignalWithTransform<boolean, BooleanInput>;
|
|
57
|
+
readonly itemTemplate: InputSignal<TemplateRef<{
|
|
58
|
+
$implicit: TItem;
|
|
59
|
+
}> | null>;
|
|
60
|
+
readonly complete: OutputEmitterRef<IRtAutocomplete.CompleteEvent>;
|
|
61
|
+
readonly itemSelect: OutputEmitterRef<TItem>;
|
|
62
|
+
constructor();
|
|
63
|
+
writeValue(value: TItem | null): void;
|
|
64
|
+
setDisabledState(disabled: boolean): void;
|
|
65
|
+
protected getEmptyValue(): TItem | null;
|
|
66
|
+
protected focusAfterClear(): void;
|
|
67
|
+
protected clearValue(): void;
|
|
68
|
+
protected onInput(event: Event): void;
|
|
69
|
+
protected onFocus(): void;
|
|
70
|
+
protected onBlur(): void;
|
|
71
|
+
protected onClosed(): void;
|
|
72
|
+
protected onSelect(item: TItem): void;
|
|
73
|
+
protected onInputKeydown(event: KeyboardEvent): void;
|
|
74
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtAutocompleteComponent<any>, never>;
|
|
75
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtAutocompleteComponent<any>, "rt-autocomplete", never, { "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "displayWith": { "alias": "displayWith"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "iconLeft": { "alias": "iconLeft"; "required": false; "isSignal": true; }; "openOnFocus": { "alias": "openOnFocus"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; }, { "complete": "complete"; "itemSelect": "itemSelect"; }, never, never, true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export { IRtAutocomplete, RtAutocompleteComponent };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Signal, InputSignal } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Контракты `rt-bar-list` — список «топ-N» со шкалой доли.
|
|
6
|
+
* Компонент ничего не считает: доля приходит посчитанной, значение — строкой.
|
|
7
|
+
*/
|
|
8
|
+
declare namespace IRtBarList {
|
|
9
|
+
interface Row {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly title: string;
|
|
12
|
+
/** Уточнение под заголовком; пусто — строка не рендерится. */
|
|
13
|
+
readonly meta?: string;
|
|
14
|
+
/** Уже отформатированное значение справа. */
|
|
15
|
+
readonly value: string;
|
|
16
|
+
/** Длина шкалы, 0…100. */
|
|
17
|
+
readonly sharePercent: number;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Список «топ-N» со шкалой доли: заголовок, необязательное уточнение, значение
|
|
23
|
+
* справа и полоса под строкой. Заменяет самодельные бары — третьей реализации
|
|
24
|
+
* в проекте быть не должно.
|
|
25
|
+
*
|
|
26
|
+
* Компонент ничего не считает и не форматирует: доля приходит числом 0…100,
|
|
27
|
+
* значение — готовой строкой. Так список одинаково годится и для денег, и для
|
|
28
|
+
* счётчиков визитов.
|
|
29
|
+
*/
|
|
30
|
+
declare class RtBarListComponent {
|
|
31
|
+
#private;
|
|
32
|
+
protected readonly emptyMessage: Signal<string>;
|
|
33
|
+
readonly rows: InputSignal<ReadonlyArray<IRtBarList.Row>>;
|
|
34
|
+
readonly title: InputSignal<string>;
|
|
35
|
+
/** Пусто — берётся переведённая подпись по умолчанию */
|
|
36
|
+
readonly emptyText: InputSignal<string>;
|
|
37
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtBarListComponent, never>;
|
|
38
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtBarListComponent, "rt-bar-list", never, { "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { IRtBarList, RtBarListComponent };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BooleanInput } from '@angular/cdk/coercion';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { Signal, WritableSignal, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
|
|
4
|
+
import { TRtKitLabelMap } from '@rt-tools/ui-kit-v2/core';
|
|
5
|
+
import * as i1 from '@rt-tools/ui-kit-v2/radius';
|
|
6
|
+
|
|
7
|
+
declare class RtBottomSheetComponent {
|
|
8
|
+
#private;
|
|
9
|
+
protected readonly t: Signal<TRtKitLabelMap>;
|
|
10
|
+
protected readonly dragDeltaY: WritableSignal<number>;
|
|
11
|
+
protected readonly dragging: WritableSignal<boolean>;
|
|
12
|
+
readonly open: InputSignalWithTransform<boolean, BooleanInput>;
|
|
13
|
+
readonly openChange: OutputEmitterRef<boolean>;
|
|
14
|
+
protected onDragStart(event: PointerEvent): void;
|
|
15
|
+
protected dismiss(): void;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtBottomSheetComponent, never>;
|
|
17
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RtBottomSheetComponent, "rt-bottom-sheet", never, { "open": { "alias": "open"; "required": true; "isSignal": true; }; }, { "openChange": "openChange"; }, never, ["[sheetHeader]", "*"], true, [{ directive: typeof i1.RtRadiusDirective; inputs: { "radius": "radius"; }; outputs: {}; }]>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { RtBottomSheetComponent };
|