@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,1222 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, EnvironmentProviders, Signal, PipeTransform, InputSignal, OnDestroy, InputSignalWithTransform, OutputEmitterRef } from '@angular/core';
|
|
3
|
+
import { FormControl } from '@angular/forms';
|
|
4
|
+
import { ISortModel, TFilterOperatorType, IFilterModel } from '@rt-tools/utils';
|
|
5
|
+
import { Observable, MonoTypeOperatorFunction } from 'rxjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Типы и варианты для директивы `[rtButton]`.
|
|
9
|
+
*
|
|
10
|
+
* Собственный `rt-button` без внешних зависимостей — палитра определяется
|
|
11
|
+
* CSS-переменными `--rt-color-*` в стилях либы.
|
|
12
|
+
*/
|
|
13
|
+
declare namespace IButton {
|
|
14
|
+
/** Семантическая палитра. По умолчанию — `primary`. */
|
|
15
|
+
type Theme = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'info';
|
|
16
|
+
/** Внешний вид: filled (заливка), outlined (контур), text (без фона). */
|
|
17
|
+
type Appearance = 'filled' | 'outlined' | 'text';
|
|
18
|
+
/** Размер по высоте: sm — 30px, md — 40px (default), lg — 50px, xl — 60px, 2xl — 70px. */
|
|
19
|
+
type Size = 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
20
|
+
/** Положение иконки относительно лейбла. */
|
|
21
|
+
type IconPos = 'left' | 'right';
|
|
22
|
+
/**
|
|
23
|
+
* Подпись во время загрузки: `keep` — спиннер рядом с подписью, `hide` — подпись и иконка
|
|
24
|
+
* невидимы, но держат ширину кнопки, а спиннер стоит по центру.
|
|
25
|
+
*/
|
|
26
|
+
type LoadingLabel = 'keep' | 'hide';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Контракты `rt-data-table` — таблицы первого кита во втором, рядом с `rt-table` и вместо неё не
|
|
31
|
+
* встающей.
|
|
32
|
+
*
|
|
33
|
+
* Описание колонки перенесено из первого кита поле в поле, вместе с полями, которых таблица не
|
|
34
|
+
* рисует: экран приложения переезжает без правок описаний колонок и сохранённых настроек,
|
|
35
|
+
* меняются только имена. Значения перечислений те же строки, что в первом ките.
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
/** Вид колонки: решает, чем рисуется значение ячейки. */
|
|
39
|
+
declare enum ERtDataTableColumnType {
|
|
40
|
+
DATE = "date",
|
|
41
|
+
PERCENT = "percent",
|
|
42
|
+
ARRAY = "array",
|
|
43
|
+
BOOLEAN = "boolean",
|
|
44
|
+
TEXT = "text",
|
|
45
|
+
CURRENCY = "currency",
|
|
46
|
+
CUSTOM = "custom"
|
|
47
|
+
}
|
|
48
|
+
/** Чем колонка отбирает в строке отбора. */
|
|
49
|
+
declare enum ERtDataTableFilterType {
|
|
50
|
+
TEXT = "text",
|
|
51
|
+
NUMBER = "number",
|
|
52
|
+
SELECT = "select",
|
|
53
|
+
DATE = "date"
|
|
54
|
+
}
|
|
55
|
+
/** Цвет значка ячейки. */
|
|
56
|
+
declare enum ERtDataTableCellColor {
|
|
57
|
+
NEUTRAL = "neutral",
|
|
58
|
+
DANGER = "danger",
|
|
59
|
+
WARNING = "warning",
|
|
60
|
+
SUCCESS = "success",
|
|
61
|
+
EMPTY = "empty"
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Условия отбора таблицы. Ключ — имя свойства колонки, а не ключ записи: отбирают по колонке.
|
|
65
|
+
*/
|
|
66
|
+
type TRtDataTableFilters<T> = Array<IFilterModel<Extract<keyof T, string>>>;
|
|
67
|
+
/**
|
|
68
|
+
* Класс материального набора на узле. Стоит на хосте семьи и уходит панелям, которые семья открывает
|
|
69
|
+
* поверх страницы: вне хоста признак вида до них иначе не доходит.
|
|
70
|
+
*/
|
|
71
|
+
declare const RT_PRESET_MATERIAL_CLASS: string;
|
|
72
|
+
/**
|
|
73
|
+
* Набор оформления таблице даёт узел вокруг неё. Так делает список: класс набора стоит на нём, и
|
|
74
|
+
* таблица внутри себе класс не ставит. Поставь она его, кусок набора объявил бы на ней весь набор
|
|
75
|
+
* назначений заново, и значение, заданное приложением на списке, до таблицы бы не дошло.
|
|
76
|
+
*/
|
|
77
|
+
declare const RT_DATA_TABLE_PRESET_FROM_HOST: InjectionToken<boolean>;
|
|
78
|
+
declare namespace IRtDataTable {
|
|
79
|
+
/**
|
|
80
|
+
* Вид семьи: `material` — вид первого кита, материальный набор на самом узле; `own` — свой вид
|
|
81
|
+
* второго кита. Умолчание — вид первого кита: семья переехала оттуда и выглядит как там.
|
|
82
|
+
*/
|
|
83
|
+
type Look = 'material' | 'own';
|
|
84
|
+
type CellColor = `${ERtDataTableCellColor}`;
|
|
85
|
+
type ColumnType = `${ERtDataTableColumnType}`;
|
|
86
|
+
type FilterType = `${ERtDataTableFilterType}`;
|
|
87
|
+
type Align = 'right' | 'left' | 'center';
|
|
88
|
+
interface Column<T = Record<string, unknown>> extends Record<string, unknown> {
|
|
89
|
+
align: IRtDataTable.Align;
|
|
90
|
+
propName: Extract<keyof T, string>;
|
|
91
|
+
type: IRtDataTable.ColumnType;
|
|
92
|
+
copyable: boolean;
|
|
93
|
+
header: IRtDataTable.Header;
|
|
94
|
+
sorting?: ISortModel<NonNullable<Extract<keyof T, string>>>;
|
|
95
|
+
/** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */
|
|
96
|
+
filtering?: boolean;
|
|
97
|
+
/** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */
|
|
98
|
+
filteringMultiple?: boolean;
|
|
99
|
+
copyBtnAlign?: 'right' | 'left';
|
|
100
|
+
width?: string;
|
|
101
|
+
minWidth?: string;
|
|
102
|
+
icon?: IRtDataTable.Icon;
|
|
103
|
+
iconTransform?: (value: T[keyof T]) => string;
|
|
104
|
+
/** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */
|
|
105
|
+
href?: string;
|
|
106
|
+
/** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */
|
|
107
|
+
className?: string;
|
|
108
|
+
tooltip?: string;
|
|
109
|
+
transform?: (value: T[keyof T]) => string | number;
|
|
110
|
+
filterType?: IRtDataTable.FilterType;
|
|
111
|
+
defaultFilterOperator?: TFilterOperatorType;
|
|
112
|
+
filterOperators?: TFilterOperatorType[];
|
|
113
|
+
filterSelectOptions?: string[];
|
|
114
|
+
displayName?: string;
|
|
115
|
+
orderIndex?: number;
|
|
116
|
+
hidden?: boolean;
|
|
117
|
+
/** Объявлено первым китом и таблицей не читается; держится ради переезда без правок. */
|
|
118
|
+
fixed?: boolean;
|
|
119
|
+
}
|
|
120
|
+
interface ColumnFilter {
|
|
121
|
+
propName: string;
|
|
122
|
+
value: string;
|
|
123
|
+
}
|
|
124
|
+
interface Header {
|
|
125
|
+
align: IRtDataTable.Align;
|
|
126
|
+
label: string;
|
|
127
|
+
className?: string;
|
|
128
|
+
tooltip?: string;
|
|
129
|
+
icon?: IRtDataTable.Icon;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Значок колонки. Имя — имя первого кита; рисует его набор кита через перечень соответствий,
|
|
133
|
+
* а шаблон значка, отданный приложением, рисует его сам.
|
|
134
|
+
*/
|
|
135
|
+
interface Icon {
|
|
136
|
+
glyph: string;
|
|
137
|
+
color?: IRtDataTable.CellColor;
|
|
138
|
+
tooltip?: string;
|
|
139
|
+
visible?: boolean;
|
|
140
|
+
placement?: 'left' | 'right';
|
|
141
|
+
/**
|
|
142
|
+
* Контурный рисунок вместо залитого, как у первого кита: без признака значок колонки залит.
|
|
143
|
+
* Заливку рисует материальный набор; свой набор кита рисует значок одним рисунком.
|
|
144
|
+
*/
|
|
145
|
+
outlined?: boolean;
|
|
146
|
+
}
|
|
147
|
+
namespace Config {
|
|
148
|
+
/** Сохранённые настройки таблицы: та же форма, что у первого кита, — их читает и новое семейство. */
|
|
149
|
+
interface Data<T> {
|
|
150
|
+
isVerticalScrollbarShown: boolean;
|
|
151
|
+
isHorizontalScrollbarShown: boolean;
|
|
152
|
+
columns: Array<IRtDataTable.Column<T>>;
|
|
153
|
+
}
|
|
154
|
+
interface Form<T> {
|
|
155
|
+
isVerticalScrollbarShown: FormControl<boolean>;
|
|
156
|
+
isHorizontalScrollbarShown: FormControl<boolean>;
|
|
157
|
+
columns: FormControl<(keyof T)[]>;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Модель `<rt-input>`: один корневой неймспейс с префиксом `I`.
|
|
164
|
+
*/
|
|
165
|
+
declare namespace IRtInput {
|
|
166
|
+
/**
|
|
167
|
+
* Допустимые HTML-типы инпута.
|
|
168
|
+
*
|
|
169
|
+
* `time` заведён под режим работы пользователя: браузер сам отдаёт `HH:MM` и
|
|
170
|
+
* раскладку под локаль, а разбор строки руками означал бы своё поле ввода
|
|
171
|
+
* времени рядом с китом.
|
|
172
|
+
*/
|
|
173
|
+
type Type = 'text' | 'password' | 'email' | 'time' | 'url';
|
|
174
|
+
/** Размерный вариант поля (высота). Общий для всего input-семейства. */
|
|
175
|
+
type Size = 'sm' | 'md' | 'lg';
|
|
176
|
+
/**
|
|
177
|
+
* Вид рамки поля — два вида материального поля первого кита. `outline` — рамка со всех
|
|
178
|
+
* сторон, `fill` — залитое поле с чертой снизу.
|
|
179
|
+
*/
|
|
180
|
+
type Appearance = 'outline' | 'fill';
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/** Один шаг шкалы скругления. Значения шагов лежат в токенах `--rt-radius-<шаг>`. */
|
|
184
|
+
type TRtRadius = 'none' | 'xs' | 'sm' | 'ms' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
|
|
185
|
+
/** Шаги скругления кита — вся шкала, от квадрата до полного круга, по порядку. */
|
|
186
|
+
declare const RT_RADIUS_STEPS: readonly TRtRadius[];
|
|
187
|
+
/**
|
|
188
|
+
* Шаг, который компонент берёт, когда вход скругления пуст.
|
|
189
|
+
*
|
|
190
|
+
* Большинству компонентов он не нужен: их скругление по умолчанию стоит в их
|
|
191
|
+
* собственных стилях. Токен нужен тому, у кого умолчание задаёт приложение, —
|
|
192
|
+
* кнопке, чья настройка кита называет шаг для всех кнопок сразу.
|
|
193
|
+
*/
|
|
194
|
+
declare const RT_RADIUS_DEFAULT: InjectionToken<TRtRadius | null>;
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Тема оформления. Выбор и вид — две разные вещи, и кит их не смешивает.
|
|
198
|
+
*
|
|
199
|
+
* Выбор человека хранится, вид применяется к `<html data-theme="...">`.
|
|
200
|
+
* «За машиной» — выбор наравне с двумя другими, а не отсутствие выбора: он
|
|
201
|
+
* разрешается в один из двух видов, и третьего признака на корне не бывает.
|
|
202
|
+
* Хранение — через `StorageService` из `@rt-tools/core` (см. `ThemeService`).
|
|
203
|
+
*/
|
|
204
|
+
declare namespace ITheme {
|
|
205
|
+
/** Вид, в котором страница нарисована. Третьего не бывает. */
|
|
206
|
+
type Mode = 'light' | 'dark';
|
|
207
|
+
/** Что выбрано: два вида и «идти за настройкой машины». */
|
|
208
|
+
type Choice = Mode | 'auto';
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Настройки кита: то, чем приложение задаёт вид на старте.
|
|
213
|
+
*
|
|
214
|
+
* Всё необязательное — и сам объект, и каждое его поле. Кит, которому не дали
|
|
215
|
+
* ни одной настройки, рисует ровно то же, что рисовал до их появления.
|
|
216
|
+
*/
|
|
217
|
+
declare namespace IRtKitConfig {
|
|
218
|
+
/** Умолчания на весь кит. */
|
|
219
|
+
interface Global {
|
|
220
|
+
/** Тема первой прорисовки, пока человек ничего не выбирал. Годится и «за машиной». */
|
|
221
|
+
theme?: ITheme.Choice;
|
|
222
|
+
}
|
|
223
|
+
/** Умолчания кнопки. Названы только те виды, которые у кнопки уже есть входом. */
|
|
224
|
+
interface Button {
|
|
225
|
+
appearance?: IButton.Appearance;
|
|
226
|
+
size?: IButton.Size;
|
|
227
|
+
/** Шаг скругления всех кнопок, пока на кнопке не назван свой. */
|
|
228
|
+
radius?: TRtRadius;
|
|
229
|
+
}
|
|
230
|
+
/** Умолчания шторы. */
|
|
231
|
+
interface Aside {
|
|
232
|
+
/**
|
|
233
|
+
* Закрывает ли `Escape` открытую штору.
|
|
234
|
+
*
|
|
235
|
+
* Умолчание кита — закрывает. Приложению, которому это мешает, иначе
|
|
236
|
+
* пришлось бы писать отказ на каждом вызове, и забытый вызов отличался
|
|
237
|
+
* бы от остальных.
|
|
238
|
+
*/
|
|
239
|
+
closeOnEscape?: boolean;
|
|
240
|
+
}
|
|
241
|
+
/** Умолчания таблицы первого кита — и отдельной, и той, что стоит внутри списка. */
|
|
242
|
+
interface DataTable {
|
|
243
|
+
/** Вид семьи. Умолчание кита — вид первого кита. */
|
|
244
|
+
look?: IRtDataTable.Look;
|
|
245
|
+
}
|
|
246
|
+
/** Умолчания списка первого кита. */
|
|
247
|
+
interface DataList {
|
|
248
|
+
/** Вид поля поиска. Умолчание кита — `fill`, как у поля Material первого кита. */
|
|
249
|
+
appearance?: IRtInput.Appearance;
|
|
250
|
+
/** Вид полей отбора. Умолчание кита — `outline`, как у первого кита. */
|
|
251
|
+
filterAppearance?: IRtInput.Appearance;
|
|
252
|
+
}
|
|
253
|
+
/** Умолчания по узлам: каждое действует на одну семью и перебивает общее. */
|
|
254
|
+
interface Components {
|
|
255
|
+
button?: Button;
|
|
256
|
+
aside?: Aside;
|
|
257
|
+
dataTable?: DataTable;
|
|
258
|
+
dataList?: DataList;
|
|
259
|
+
}
|
|
260
|
+
/** Весь объект настроек целиком. */
|
|
261
|
+
interface Config {
|
|
262
|
+
global?: Global;
|
|
263
|
+
components?: Components;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Настройки кита, которые приложение дало на старте.
|
|
269
|
+
*
|
|
270
|
+
* Токен объявлен **значением**, а не сигналом, и этим отличается от подписей и
|
|
271
|
+
* от темы: настройки — снимок старта. Их читают один раз, когда узел создан, и
|
|
272
|
+
* поздняя подмена на уже нарисованное не действует. Тому, что меняется на живой
|
|
273
|
+
* странице, место во входе узла или в службе темы.
|
|
274
|
+
*
|
|
275
|
+
* Умолчание — пустой объект: кит без единой настройки рисует то же, что рисовал
|
|
276
|
+
* до их появления.
|
|
277
|
+
*/
|
|
278
|
+
declare const RT_KIT_CONFIG: InjectionToken<IRtKitConfig.Config>;
|
|
279
|
+
/**
|
|
280
|
+
* Разрешение умолчания — одно место на весь кит, а не повтор в каждом узле.
|
|
281
|
+
*
|
|
282
|
+
* Порядок от частного к общему: вход на месте вызова, умолчание узла, общее
|
|
283
|
+
* умолчание, умолчание кита. Первый найденный ответ выигрывает, поиск на нём
|
|
284
|
+
* останавливается. Вход на месте сюда не приходит вовсе — он перебивает всё
|
|
285
|
+
* тем, что значение отсюда становится лишь тем, **с чего вход стартует**.
|
|
286
|
+
*
|
|
287
|
+
* Зовётся в поле класса: там есть контекст внедрения.
|
|
288
|
+
*
|
|
289
|
+
* ```typescript
|
|
290
|
+
* readonly #size: IButton.Size = rtKitDefault('button', (it: IRtKitConfig.Button): IButton.Size | undefined => it.size, 'md');
|
|
291
|
+
* public readonly size: InputSignal<IButton.Size> = input<IButton.Size>(this.#size);
|
|
292
|
+
* ```
|
|
293
|
+
*
|
|
294
|
+
* @param node Имя узла — ключ раздела умолчаний по узлам.
|
|
295
|
+
* @param pick Что взять из умолчаний этого узла.
|
|
296
|
+
* @param fallback Умолчание кита: то, что рисуется, когда не сказано ничего.
|
|
297
|
+
* @param pickCommon Что взять из общих умолчаний, если поле живёт и там. Поля,
|
|
298
|
+
* стоящего на обоих уровнях, сегодня нет ни одного — ступень объявлена под
|
|
299
|
+
* поле, которое назовёт владелец, и до тех пор не зовётся.
|
|
300
|
+
*/
|
|
301
|
+
declare function rtKitDefault<NODE extends keyof IRtKitConfig.Components, VALUE>(node: NODE, pick: (settings: NonNullable<IRtKitConfig.Components[NODE]>) => VALUE | undefined, fallback: VALUE, pickCommon?: (settings: IRtKitConfig.Global) => VALUE | undefined): VALUE;
|
|
302
|
+
/**
|
|
303
|
+
* Отдаёт киту настройки приложения.
|
|
304
|
+
*
|
|
305
|
+
* Раздача необязательна: без неё работают умолчания кита. Частично заданный
|
|
306
|
+
* объект не обнуляет остальное — неназванное поле проваливается на уровень
|
|
307
|
+
* выше.
|
|
308
|
+
*
|
|
309
|
+
* ```typescript
|
|
310
|
+
* export const appConfig: ApplicationConfig = {
|
|
311
|
+
* providers: [
|
|
312
|
+
* provideRtKit({
|
|
313
|
+
* global: { theme: 'auto' },
|
|
314
|
+
* components: { button: { size: 'lg' }, aside: { closeOnEscape: false } },
|
|
315
|
+
* }),
|
|
316
|
+
* ],
|
|
317
|
+
* };
|
|
318
|
+
* ```
|
|
319
|
+
*
|
|
320
|
+
* @param config Настройки целиком. Всё в них необязательно.
|
|
321
|
+
*/
|
|
322
|
+
declare function provideRtKit(config: IRtKitConfig.Config): EnvironmentProviders;
|
|
323
|
+
|
|
324
|
+
declare const RT_KIT_LABELS_EN: {
|
|
325
|
+
readonly asideCopyErrorInfo: "Copy error info";
|
|
326
|
+
readonly asideRequestError: "Request Error";
|
|
327
|
+
readonly bottomSheetClose: "Close";
|
|
328
|
+
readonly chatAttachAria: "Attach a file";
|
|
329
|
+
readonly chatAttachTooltip: "Attach a file";
|
|
330
|
+
readonly chatAttachmentFallback: "Attachment";
|
|
331
|
+
readonly chatCollapse: "Collapse chat";
|
|
332
|
+
readonly chatComposerAria: "Message input";
|
|
333
|
+
readonly chatComposerHint: "Enter to send, Shift + Enter for a new line";
|
|
334
|
+
readonly chatDeleteAria: "Delete message";
|
|
335
|
+
readonly chatDeleteTooltip: "Delete";
|
|
336
|
+
readonly chatDropOverlay: "Drop the files to attach them to your message";
|
|
337
|
+
readonly chatEmptyHint: "Chat is not available yet.";
|
|
338
|
+
readonly chatEmptyThread: "No messages yet.";
|
|
339
|
+
readonly chatExpand: "Expand chat to full screen";
|
|
340
|
+
readonly chatMessageDeleted: "Message deleted";
|
|
341
|
+
readonly chatPlaceholder: "Type a message";
|
|
342
|
+
readonly chatRefreshAria: "Refresh messages";
|
|
343
|
+
readonly chatRefreshTooltip: "Refresh messages";
|
|
344
|
+
readonly chatRetryAria: "Send again";
|
|
345
|
+
readonly chatRetryTooltip: "Retry";
|
|
346
|
+
readonly chatSendAria: "Send message";
|
|
347
|
+
readonly chatSendLabel: "Send";
|
|
348
|
+
readonly chatStatusFailed: "Not sent";
|
|
349
|
+
readonly chatStatusRead: "Read";
|
|
350
|
+
readonly chatStatusSending: "Sending";
|
|
351
|
+
readonly chatStatusSent: "Delivered";
|
|
352
|
+
readonly chatStopAria: "Stop the answer";
|
|
353
|
+
readonly chatStopLabel: "Stop";
|
|
354
|
+
readonly chatTitle: "Chat";
|
|
355
|
+
readonly counterDecrease: "Decrease";
|
|
356
|
+
readonly counterIncrease: "Increase";
|
|
357
|
+
readonly dataListClearFilters: "Clear filters";
|
|
358
|
+
readonly dataListHorizontalScrollbar: "Horizontal scrollbar shown";
|
|
359
|
+
readonly dataListPlaceholder: "No Data Found";
|
|
360
|
+
readonly dataListRefresh: "Refresh";
|
|
361
|
+
readonly dataListSearchPlaceholder: "Search...";
|
|
362
|
+
readonly dataListSelectAll: "Select all";
|
|
363
|
+
readonly dataListSelected: "Selected: {{count}}";
|
|
364
|
+
readonly dataListSettingsHint: "Change columns visibility and order, show(hide) scrollbar";
|
|
365
|
+
readonly dataListSettingsTitle: "Edit table configuration";
|
|
366
|
+
readonly dataListTableConfig: "Table configuration";
|
|
367
|
+
readonly dataListVerticalScrollbar: "Vertical scrollbar shown";
|
|
368
|
+
readonly dynamicInputPlaceholder: "Type and press Enter";
|
|
369
|
+
readonly dynamicSelectorAdd: "Add";
|
|
370
|
+
readonly dynamicSelectorApply: "Apply";
|
|
371
|
+
readonly dynamicSelectorClear: "Clear list";
|
|
372
|
+
readonly dynamicSelectorDrag: "Hold to drag";
|
|
373
|
+
readonly dynamicSelectorEdit: "Edit";
|
|
374
|
+
readonly dynamicSelectorMulti: "Multi selection";
|
|
375
|
+
readonly dynamicSelectorMultiHint: "Hold Ctrl or Cmd to tick several rows";
|
|
376
|
+
readonly dynamicSelectorNoResults: "No results";
|
|
377
|
+
readonly dynamicSelectorNothingToChoose: "There are no available items to choose";
|
|
378
|
+
readonly dynamicSelectorRemove: "Remove the item";
|
|
379
|
+
readonly dynamicSelectorReset: "Reset to initial list";
|
|
380
|
+
readonly dynamicSelectorSearch: "Search...";
|
|
381
|
+
readonly dataTableActions: "Actions";
|
|
382
|
+
readonly dataTableCopied: "Copied!";
|
|
383
|
+
readonly dataTableCopy: "Copy";
|
|
384
|
+
readonly dataTableFilterClear: "Clear filter";
|
|
385
|
+
readonly dataTableFilterOperatorContains: "Contains";
|
|
386
|
+
readonly dataTableFilterOperatorEquals: "Equal";
|
|
387
|
+
readonly dataTableFilterOperatorGreaterThan: "More than";
|
|
388
|
+
readonly dataTableFilterOperatorLessThan: "Less than";
|
|
389
|
+
readonly dataTableFilterOperatorNotEquals: "Not equal";
|
|
390
|
+
readonly dataTableFilterSelectPlaceholder: "Chose filter";
|
|
391
|
+
readonly dataTableFilterValuePlaceholder: "Type in filter value";
|
|
392
|
+
readonly dataTableSelectPage: "Select the rows of this page";
|
|
393
|
+
readonly dataTableSelectRow: "Select row";
|
|
394
|
+
readonly fieldErrorEmail: "Invalid email";
|
|
395
|
+
readonly fieldErrorMax: "Value is too large";
|
|
396
|
+
readonly fieldErrorMaxLength: "Value is too long";
|
|
397
|
+
readonly fieldErrorMin: "Value is too small";
|
|
398
|
+
readonly fieldErrorMinLength: "Value is too short";
|
|
399
|
+
readonly fieldErrorPattern: "Invalid format";
|
|
400
|
+
readonly fieldErrorRequired: "Required field";
|
|
401
|
+
readonly photoViewerClose: "Close viewer";
|
|
402
|
+
readonly photoViewerNext: "Next photo";
|
|
403
|
+
readonly photoViewerPrev: "Previous photo";
|
|
404
|
+
readonly sideMenuBack: "Main menu";
|
|
405
|
+
readonly sideMenuFavoriteAdd: "Add to favourites";
|
|
406
|
+
readonly sideMenuFavoriteDrag: "Hold button to drag";
|
|
407
|
+
readonly sideMenuFavoriteRemove: "Remove from favourites";
|
|
408
|
+
readonly sideMenuFavorites: "Favourites";
|
|
409
|
+
readonly sideMenuFavoritesCollapse: "Collapse favourites";
|
|
410
|
+
readonly sideMenuFavoritesExpand: "Expand favourites";
|
|
411
|
+
readonly sideMenuNothingFound: "Nothing found";
|
|
412
|
+
readonly sideMenuPin: "Pin submenu";
|
|
413
|
+
readonly sideMenuResize: "Resize submenu";
|
|
414
|
+
readonly sideMenuSearch: "Search";
|
|
415
|
+
readonly sideMenuUnpin: "Unpin submenu";
|
|
416
|
+
readonly themeToggleLabel: "Switch theme";
|
|
417
|
+
readonly uiActions: "Actions";
|
|
418
|
+
readonly uiApply: "Apply";
|
|
419
|
+
readonly uiAuditEmptyHint: "Deal events will appear here — stage changes and other actions.";
|
|
420
|
+
readonly uiBack: "Back";
|
|
421
|
+
readonly uiBackToList: "Back to list";
|
|
422
|
+
readonly uiBaseline: "was {{value}}";
|
|
423
|
+
readonly uiCancel: "Cancel";
|
|
424
|
+
readonly uiChangeAgent: "Change agent";
|
|
425
|
+
readonly uiChooseFile: "Choose file";
|
|
426
|
+
readonly uiChooseMonth: "Choose month and year";
|
|
427
|
+
readonly uiClear: "Clear";
|
|
428
|
+
readonly uiClearFilters: "Clear filters";
|
|
429
|
+
readonly uiClose: "Close";
|
|
430
|
+
readonly uiCollapse: "Collapse";
|
|
431
|
+
readonly uiColumnLocked: "Column is pinned";
|
|
432
|
+
readonly uiColumnSettings: "Column settings";
|
|
433
|
+
readonly uiColumnSettingsTitle: "Configure columns";
|
|
434
|
+
readonly uiCommentOptional: "Comment (optional)";
|
|
435
|
+
readonly uiConfirm: "Confirm";
|
|
436
|
+
readonly uiConfirmAction: "Confirm action";
|
|
437
|
+
readonly uiContinue: "Continue";
|
|
438
|
+
readonly uiCopied: "Copied";
|
|
439
|
+
readonly uiCopy: "Copy";
|
|
440
|
+
readonly uiCurrentStage: "Current stage";
|
|
441
|
+
readonly uiDate: "Date";
|
|
442
|
+
readonly uiDaysFew: string;
|
|
443
|
+
readonly uiDaysMany: string;
|
|
444
|
+
readonly uiDaysOne: "{{count}} day";
|
|
445
|
+
readonly uiDaysOther: string;
|
|
446
|
+
readonly uiDetails: "Details";
|
|
447
|
+
readonly uiDiscardChanges: "Discard Changes";
|
|
448
|
+
readonly uiDone: "Done";
|
|
449
|
+
readonly uiDownload: "Download";
|
|
450
|
+
readonly uiDownloadFile: "Download: {{name}}";
|
|
451
|
+
readonly uiDragColumn: "Drag column";
|
|
452
|
+
readonly uiExpand: "Expand";
|
|
453
|
+
readonly uiFileDropOverlay: "Drop the files to attach them";
|
|
454
|
+
readonly uiFilterChoose: "Choose";
|
|
455
|
+
readonly uiFilterContains: "Contains";
|
|
456
|
+
readonly uiFilterEndsWith: "Ends with";
|
|
457
|
+
readonly uiFilterEquals: "Equals";
|
|
458
|
+
readonly uiFilterGreaterThan: "Greater than";
|
|
459
|
+
readonly uiFilterLessThan: "Less than";
|
|
460
|
+
readonly uiFilterNotEquals: "Does not equal";
|
|
461
|
+
readonly uiFilterStartsWith: "Starts with";
|
|
462
|
+
readonly uiFilterValue: "Filter value";
|
|
463
|
+
readonly uiFilters: "Filters";
|
|
464
|
+
readonly uiForward: "Forward";
|
|
465
|
+
readonly uiHide: "Hide";
|
|
466
|
+
readonly uiHideColumn: "Hide column";
|
|
467
|
+
readonly uiHidePassword: "Hide password";
|
|
468
|
+
readonly uiHint: "Hint";
|
|
469
|
+
readonly uiHistory: "History";
|
|
470
|
+
readonly uiHours: "Hours";
|
|
471
|
+
readonly uiImageCropperFrame: "Crop frame";
|
|
472
|
+
readonly uiImageCropperHandleE: "Right edge of the crop frame";
|
|
473
|
+
readonly uiImageCropperHandleN: "Top edge of the crop frame";
|
|
474
|
+
readonly uiImageCropperHandleNe: "Top right corner of the crop frame";
|
|
475
|
+
readonly uiImageCropperHandleNw: "Top left corner of the crop frame";
|
|
476
|
+
readonly uiImageCropperHandleS: "Bottom edge of the crop frame";
|
|
477
|
+
readonly uiImageCropperHandleSe: "Bottom right corner of the crop frame";
|
|
478
|
+
readonly uiImageCropperHandleSw: "Bottom left corner of the crop frame";
|
|
479
|
+
readonly uiImageCropperHandleW: "Left edge of the crop frame";
|
|
480
|
+
readonly uiImageCropperPlaceholder: "Choose an image to crop";
|
|
481
|
+
readonly uiImageCropperRefusal: "The image could not be read";
|
|
482
|
+
readonly uiImageUploadApply: "Apply";
|
|
483
|
+
readonly uiImageUploadCancel: "Cancel";
|
|
484
|
+
readonly uiImageUploadChange: "Click to change the image";
|
|
485
|
+
readonly uiImageUploadChoose: "Choose file";
|
|
486
|
+
readonly uiImageUploadDrop: "Drag and drop an image here or";
|
|
487
|
+
readonly uiImageUploadImage: "Current image";
|
|
488
|
+
readonly uiInviteUser: "Invite user";
|
|
489
|
+
readonly uiItemsPerPage: "Items per page";
|
|
490
|
+
readonly uiLast30Days: "Last 30 days";
|
|
491
|
+
readonly uiLast7Days: "Last 7 days";
|
|
492
|
+
readonly uiLastMonth: "Last month";
|
|
493
|
+
readonly uiLiveOnSite: "On the site now";
|
|
494
|
+
readonly uiLoadMore: "Load more";
|
|
495
|
+
readonly uiMainNav: "Main navigation";
|
|
496
|
+
readonly uiMinutes: "Minutes";
|
|
497
|
+
readonly uiMore: "More";
|
|
498
|
+
readonly uiMoreActions: "More actions";
|
|
499
|
+
readonly uiMoveStage: "Move";
|
|
500
|
+
readonly uiMoveStageAria: "Move stage";
|
|
501
|
+
readonly uiNavMenu: "Navigation menu";
|
|
502
|
+
readonly uiNavUnread: "Unread";
|
|
503
|
+
readonly uiNextMonth: "Next month";
|
|
504
|
+
readonly uiNextPage: "Next page";
|
|
505
|
+
readonly uiNextYear: "Next year";
|
|
506
|
+
readonly uiNightGridAria: "Occupancy grid";
|
|
507
|
+
readonly uiNoData: "No data yet";
|
|
508
|
+
readonly uiNoOptions: "No options";
|
|
509
|
+
readonly uiNoRows: "No data";
|
|
510
|
+
readonly uiNothingFound: "Nothing found";
|
|
511
|
+
readonly uiNotifications: "Notifications";
|
|
512
|
+
readonly uiNow: "Now";
|
|
513
|
+
readonly uiOpenCalendar: "Open the calendar";
|
|
514
|
+
readonly uiPageOf: "Page {{page}} of {{last}}";
|
|
515
|
+
readonly uiPagination: "Pagination";
|
|
516
|
+
readonly uiPerPage: "Items per page:";
|
|
517
|
+
readonly uiPeriod: "Period";
|
|
518
|
+
readonly uiPickAgent: "Select an agent";
|
|
519
|
+
readonly uiPickAnotherAgent: "Select a different agent";
|
|
520
|
+
readonly uiPickEndDate: "Pick the end date";
|
|
521
|
+
readonly uiPickStartDate: "Pick the start date";
|
|
522
|
+
readonly uiPickTransition: "Select a transition";
|
|
523
|
+
readonly uiPrevMonth: "Previous month";
|
|
524
|
+
readonly uiPrevPage: "Previous page";
|
|
525
|
+
readonly uiPrevYear: "Previous year";
|
|
526
|
+
readonly uiProfile: "Profile";
|
|
527
|
+
readonly uiQuickRanges: "Quick ranges";
|
|
528
|
+
readonly uiRangeEmpty: "0 of 0";
|
|
529
|
+
readonly uiRangeOf: "{{from}}–{{to}} of {{total}}";
|
|
530
|
+
readonly uiRemove: "Delete";
|
|
531
|
+
readonly uiRename: "Rename";
|
|
532
|
+
readonly uiReplace: "Replace";
|
|
533
|
+
readonly uiReplaceAgentTitle: "Replace agent";
|
|
534
|
+
readonly uiReset: "Reset";
|
|
535
|
+
readonly uiResetDefaults: "Reset to defaults";
|
|
536
|
+
readonly uiResizeDetails: "Resize details pane";
|
|
537
|
+
readonly uiResizeList: "Resize list pane";
|
|
538
|
+
readonly uiRefresh: "Refresh";
|
|
539
|
+
readonly uiRevert: "Revert";
|
|
540
|
+
readonly uiSave: "Save";
|
|
541
|
+
readonly uiSaveNewAgent: "Save the new agent";
|
|
542
|
+
readonly uiScrollDown: "Scroll down";
|
|
543
|
+
readonly uiSearch: "Search";
|
|
544
|
+
readonly uiSectionInProgress: "{{label}} — section under development";
|
|
545
|
+
readonly uiSelectAll: "Select all";
|
|
546
|
+
readonly uiSelectValues: "Select values";
|
|
547
|
+
readonly uiSelectedCount: "Selected: {{count}}";
|
|
548
|
+
readonly uiSelectedOf: "Selected: {{count}} of {{total}}";
|
|
549
|
+
readonly uiShapeDay: "dd";
|
|
550
|
+
readonly uiShapeHour: "hh";
|
|
551
|
+
readonly uiShapeMinute: "mm";
|
|
552
|
+
readonly uiShapeMonth: "mm";
|
|
553
|
+
readonly uiShapeYear: "yyyy";
|
|
554
|
+
readonly uiShow: "Show";
|
|
555
|
+
readonly uiShowColumn: "Show column";
|
|
556
|
+
readonly uiShowDetails: "Show details";
|
|
557
|
+
readonly uiShowPassword: "Show password";
|
|
558
|
+
readonly uiStageNoteHint: "Internal note — the client will not see it.";
|
|
559
|
+
readonly uiStageTransition: "Stage transition";
|
|
560
|
+
readonly uiSubscribeNotifications: "Subscribe to notifications";
|
|
561
|
+
readonly uiTabInvalid: "This tab contains errors";
|
|
562
|
+
readonly uiTargetStage: "Target stage";
|
|
563
|
+
readonly uiTargetStageRequired: "Select a target stage.";
|
|
564
|
+
readonly uiThisMonth: "This month";
|
|
565
|
+
readonly uiThreadListEmptyHint: "New threads will appear here.";
|
|
566
|
+
readonly uiTime: "Time";
|
|
567
|
+
readonly uiToList: "To list";
|
|
568
|
+
readonly uiToday: "Today";
|
|
569
|
+
readonly uiUnsavedDiscard: "Close without saving";
|
|
570
|
+
readonly uiUnsavedMessage: "The panel has edits that have not been saved yet. Choose what to do with them.";
|
|
571
|
+
readonly uiUnsavedSave: "Save and close";
|
|
572
|
+
readonly uiUnsavedStay: "Stay";
|
|
573
|
+
readonly uiUnsavedTitle: "Unsaved changes";
|
|
574
|
+
readonly uiWelcomeAria: "Welcome message for a new user";
|
|
575
|
+
readonly uiYearOverYear: "YoY";
|
|
576
|
+
readonly uiYesterday: "Yesterday";
|
|
577
|
+
};
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* Ключ подписи кита. Перечень выводится из английского набора — того самого,
|
|
581
|
+
* что стоит умолчанием, — поэтому ключа, которого кит не рисует, не существует,
|
|
582
|
+
* а опечатка не доживает до рантайма.
|
|
583
|
+
*/
|
|
584
|
+
type TRtKitLabelKey = keyof typeof RT_KIT_LABELS_EN;
|
|
585
|
+
/**
|
|
586
|
+
* Подстановки в места вида `{{name}}`. Их просят пять подписей: строка
|
|
587
|
+
* сравнения, имя скачиваемого файла, «страница N из M», диапазон записей и
|
|
588
|
+
* подпись раздела в разработке.
|
|
589
|
+
*/
|
|
590
|
+
type TRtKitLabelParams = Readonly<Record<string, string | number>>;
|
|
591
|
+
/**
|
|
592
|
+
* Чем кит получает подпись. Даёт её приложение — оно одно знает и язык
|
|
593
|
+
* продукта, и его формулировки.
|
|
594
|
+
*
|
|
595
|
+
* Возвращать функция обязана готовую строку: подстановки уже сделаны, ключа на
|
|
596
|
+
* экране не бывает. Вернувшая пустое считается не давшей ответа — кит возьмёт
|
|
597
|
+
* английское умолчание, потому что пустая `aria`-подпись означает кнопку без
|
|
598
|
+
* имени для скринридера, а это хуже чужого языка.
|
|
599
|
+
*/
|
|
600
|
+
type TRtKitTranslator = (key: TRtKitLabelKey, params?: TRtKitLabelParams) => string;
|
|
601
|
+
/**
|
|
602
|
+
* Все подписи разом, ключ → готовая строка.
|
|
603
|
+
*
|
|
604
|
+
* Компонент читает карту целиком (`t().uiClose`), а не ключ по одному: одно поле
|
|
605
|
+
* на компонент вместо десятка, и при смене языка перерисовывается всё сразу.
|
|
606
|
+
* Подписи с подстановками в карту не входят — им нужны параметры, и они берутся
|
|
607
|
+
* через `rtKitLabel()`.
|
|
608
|
+
*/
|
|
609
|
+
type TRtKitLabelMap = Readonly<Record<TRtKitLabelKey, string>>;
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* Функция, которой кит получает подписи. Её отдаёт приложение —
|
|
613
|
+
* `provideRtKitLabels()`.
|
|
614
|
+
*
|
|
615
|
+
* Токен объявлен **сигналом**, а не просто функцией: приложение, меняющее язык
|
|
616
|
+
* на ходу, кладёт в него новую функцию, и всё, что от неё считано,
|
|
617
|
+
* пересчитывается само.
|
|
618
|
+
*/
|
|
619
|
+
declare const RT_KIT_TRANSLATOR: InjectionToken<Signal<TRtKitTranslator>>;
|
|
620
|
+
/**
|
|
621
|
+
* Активная локаль. Ею кит форматирует даты — больше ни для чего она ему не
|
|
622
|
+
* нужна.
|
|
623
|
+
*
|
|
624
|
+
* Данные локали для `DatePipe` регистрирует приложение: без них пайп падает
|
|
625
|
+
* `Missing locale data`, и кит за это не отвечает.
|
|
626
|
+
*/
|
|
627
|
+
declare const RT_KIT_LOCALE: InjectionToken<Signal<string>>;
|
|
628
|
+
/**
|
|
629
|
+
* Все подписи кита разом, ключ → готовая строка.
|
|
630
|
+
*
|
|
631
|
+
* Этим пользуются компоненты: `t().uiClose` вместо ключа по одному. Карта
|
|
632
|
+
* строится один раз на приложение (`providedIn: 'root'`) и пересчитывается,
|
|
633
|
+
* только когда приложение сменило функцию-переводчик.
|
|
634
|
+
*
|
|
635
|
+
* Подпись, которой переводчик не дал (вернул пустое или упал), берётся
|
|
636
|
+
* английской: пустая `aria`-подпись означает кнопку без имени для скринридера.
|
|
637
|
+
*/
|
|
638
|
+
declare const RT_KIT_LABELS: InjectionToken<Signal<TRtKitLabelMap>>;
|
|
639
|
+
/**
|
|
640
|
+
* Одна подпись, а не вся карта.
|
|
641
|
+
*
|
|
642
|
+
* Карте не годятся две вещи: подпись с подстановками (параметры приходят из
|
|
643
|
+
* состояния компонента) и подпись, ключ которой выбирается на ходу — кнопка
|
|
644
|
+
* «свернуть ↔ развернуть», текст ошибки поля по сработавшему валидатору. Обе
|
|
645
|
+
* берутся отсюда. Зовётся в поле класса, в инъекционном контексте.
|
|
646
|
+
*
|
|
647
|
+
* ```typescript
|
|
648
|
+
* readonly #range: Signal<string> = rtKitLabel('uiRangeOf', this.#rangeParams);
|
|
649
|
+
* readonly #expand: Signal<string> = rtKitLabel(computed(() => (this.expanded() ? 'chatCollapse' : 'chatExpand')));
|
|
650
|
+
* ```
|
|
651
|
+
*
|
|
652
|
+
* @param key Ключ подписи — значением или сигналом, если он меняется. Пустой
|
|
653
|
+
* ключ даёт пустую строку: у поля без сработавшего валидатора подписи нет, и
|
|
654
|
+
* умолчание тут показало бы ошибку там, где её не случилось.
|
|
655
|
+
* @param params Подстановки — значением или сигналом, если они меняются.
|
|
656
|
+
*/
|
|
657
|
+
declare function rtKitLabel(key: TRtKitLabelKey | '' | Signal<TRtKitLabelKey | ''>, params?: TRtKitLabelParams | Signal<TRtKitLabelParams>): Signal<string>;
|
|
658
|
+
/**
|
|
659
|
+
* Отдаёт киту подписи приложения.
|
|
660
|
+
*
|
|
661
|
+
* Без него кит работает на английском умолчании — оно вшито и покрывает все
|
|
662
|
+
* ключи, поэтому пустой кнопки на экране не бывает никогда.
|
|
663
|
+
*
|
|
664
|
+
* ```typescript
|
|
665
|
+
* export const appConfig: ApplicationConfig = {
|
|
666
|
+
* providers: [
|
|
667
|
+
* provideRtKitLabels({
|
|
668
|
+
* translator: computed(() => (key, params) => transloco.translate(`rtKit.${key}`, params)),
|
|
669
|
+
* locale: toSignal(transloco.langChanges$, { initialValue: transloco.getActiveLang() }),
|
|
670
|
+
* }),
|
|
671
|
+
* ],
|
|
672
|
+
* };
|
|
673
|
+
* ```
|
|
674
|
+
*
|
|
675
|
+
* Способ доставки — дело приложения: Transloco, `$localize`, собственный
|
|
676
|
+
* словарь. Кит знает только ключи и то, что на них отвечают строкой.
|
|
677
|
+
*
|
|
678
|
+
* @param source Функция-переводчик и активная локаль. Локаль необязательна —
|
|
679
|
+
* без неё кит форматирует даты по-английски.
|
|
680
|
+
*/
|
|
681
|
+
declare function provideRtKitLabels(source: {
|
|
682
|
+
readonly translator: Signal<TRtKitTranslator>;
|
|
683
|
+
readonly locale?: Signal<string>;
|
|
684
|
+
}): EnvironmentProviders;
|
|
685
|
+
|
|
686
|
+
/**
|
|
687
|
+
* Подпись кита по ключу — для значений, приходящих из контекста шаблона.
|
|
688
|
+
*
|
|
689
|
+
* Шаблон не зовёт методов: имя раздела приходит элементом цикла, и посчитать подпись заранее
|
|
690
|
+
* нечем. Пайп чистый, поэтому функция-переводчик передаётся ему вторым доводом — сменившись,
|
|
691
|
+
* она пересчитывает подпись сама.
|
|
692
|
+
*/
|
|
693
|
+
declare class RtKitLabelPipe implements PipeTransform {
|
|
694
|
+
transform(key: TRtKitLabelKey, translator: TRtKitTranslator, params?: TRtKitLabelParams): string;
|
|
695
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtKitLabelPipe, never>;
|
|
696
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<RtKitLabelPipe, "rtKitLabel", true>;
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
/**
|
|
700
|
+
* Обёртка над CDK `BreakpointObserver` — публикует reactive signals для
|
|
701
|
+
* mobile/tablet/desktop матчей. `toSignal()` обёртывает CDK Observable в Signal
|
|
702
|
+
* с `initialValue` для CSR-safe рендера.
|
|
703
|
+
*/
|
|
704
|
+
declare class BreakpointsService {
|
|
705
|
+
#private;
|
|
706
|
+
readonly mobile: Signal<boolean>;
|
|
707
|
+
readonly tablet: Signal<boolean>;
|
|
708
|
+
readonly desktop: Signal<boolean>;
|
|
709
|
+
/**
|
|
710
|
+
* Узкий вьюпорт (≤1080px, планшет + мобила) — единый порог для компонентов,
|
|
711
|
+
* которые на узком экране подменяют развёрнутый контрол на компактный
|
|
712
|
+
* (напр. `rt-filter-control`: сегменты → `rt-select`). Совпадает с
|
|
713
|
+
* брейкпоинтом 1080px из SCSS-конвенции кита. `initialValue: false` — на
|
|
714
|
+
* SSR/CSR до первого matchMedia рендерим desktop-вариант.
|
|
715
|
+
*/
|
|
716
|
+
readonly narrow: Signal<boolean>;
|
|
717
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BreakpointsService, never>;
|
|
718
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
719
|
+
}
|
|
720
|
+
|
|
721
|
+
/**
|
|
722
|
+
* Базовое событие шины: дискриминируется строковым `type`. Конкретные шины
|
|
723
|
+
* сужают `T` до своего union'а типов событий, а полезную нагрузку добавляют
|
|
724
|
+
* наследники интерфейса.
|
|
725
|
+
*/
|
|
726
|
+
interface IMessageBusEvent<T = string> {
|
|
727
|
+
readonly type: T;
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* Лёгкая типизированная pub/sub-шина поверх RxJS `Subject`. Не зависит от
|
|
731
|
+
* Angular DI и UI: эмиттер (например, стор) и потребитель (например, layout-
|
|
732
|
+
* контейнер) развязаны — отправитель не знает, кто и как отрисует событие.
|
|
733
|
+
*
|
|
734
|
+
* - `emit` — опубликовать событие;
|
|
735
|
+
* - `onEmit` — поток всех событий;
|
|
736
|
+
* - `ofType` — поток событий конкретного типа (для точечной подписки).
|
|
737
|
+
*/
|
|
738
|
+
declare class MessageBus<E extends IMessageBusEvent> {
|
|
739
|
+
#private;
|
|
740
|
+
emit(event: E): void;
|
|
741
|
+
onEmit(): Observable<E>;
|
|
742
|
+
ofType<T extends E['type']>(type: T): Observable<Extract<E, {
|
|
743
|
+
type: T;
|
|
744
|
+
}>>;
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* Имена иконок rt-icon. Набор лежит в `assets/icons` пакета, откуда сборка
|
|
749
|
+
* приложения кладёт его туда, куда указывает `provideRtIcons()`. Большинство
|
|
750
|
+
* файлов пришло из фрейма iconsLib
|
|
751
|
+
* (https://www.figma.com/design/x1rxhwomHt1pQRUcM3Zqjb?node-id=2922-7969).
|
|
752
|
+
*
|
|
753
|
+
* При добавлении новой иконки: положить SVG в `assets/icons` пакета, добавить
|
|
754
|
+
* slug сюда, прогнать pnpm exec eslint --fix + pnpm exec prettier --write по этому файлу.
|
|
755
|
+
* Имя без файла гасит только свой значок: реестр ходит за каждым именем отдельно, и промах
|
|
756
|
+
* виден пустым местом на экране, а не отказом в прогоне.
|
|
757
|
+
*
|
|
758
|
+
* Аннотация типа намеренно не указывается: явный `readonly string[]` потерял бы узкий
|
|
759
|
+
* литеральный тип, нужный для `IRtIcon.Name` (см. `rt-icon.model.ts`). `as const`
|
|
760
|
+
* сохраняет литеральные ключи.
|
|
761
|
+
*/
|
|
762
|
+
declare const iconsName: readonly ["alarm-clock", "align-center", "align-justify", "align-left", "align-right", "angle-double-down", "angle-double-left", "angle-double-right", "angle-double-up", "angle-down", "angle-left", "angle-right", "angle-up", "arrow-bottom-old", "arrow-circle-down", "arrow-circle-left", "arrow-circle-right", "arrow-circle-up", "arrow-down", "arrow-down-left", "arrow-down-long", "arrow-down-right", "arrow-left", "arrow-left-old", "arrow-leftlong", "arrow-right", "arrow-right-old", "arrow-rightlong", "arrow-top-old", "arrow-up", "arrow-up-left", "arrow-up-long", "arrow-up-right", "arrows", "arrows-h", "arrows-v", "at", "attach-docx-doc", "attach-eml", "attach-folder", "attach-jpg-png", "attach-msg", "attach-other", "attach-pdf", "attach-ppt-pptx", "attach-txt", "attach-webp", "attach-xlsx-xls", "attach-zip-rar", "ban", "bars", "bell", "bolt", "book", "bookmark", "bookmark-fill", "bot", "box", "briefcase", "building", "burger", "calendar", "calendar-minus", "calendar-plus", "calendar-times", "camera", "chart-bar", "chart-line", "chart-line-2", "chart-pie", "chat-error", "check", "check-circle", "check-double", "check-square", "chevron-circle-down", "chevron-circle-left", "chevron-circle-right", "chevron-circle-up", "chevron-down", "chevron-left", "chevron-right", "chevron-up", "chevron-up-down", "clock", "clone", "close", "cloud", "cloud-download", "cloud-upload", "code", "cog", "comment", "comments", "copy", "credit-card", "database", "desktop", "directions", "directions-alt", "doc-success", "docBox", "ellipsis-h", "ellipsis-v", "email", "equals", "exclamation-circle", "external-link", "eye", "eye-slash", "file", "file-excel", "file-o", "file-pdf", "filter", "filter-fill", "filter-slash", "flag", "flag-fill", "flagman-a", "flagman-b", "flagman-c", "flagman-q", "folder", "folder-open", "fork-spoon", "fullscreen", "globe", "groupen", "hashtag", "heart", "heart-fill", "help", "history", "historyUpdate", "home", "ico-age", "ico-alert", "ico-b", "ico-babyPacifier", "ico-bank", "ico-bill", "ico-bill-striked", "ico-bookmark-right", "ico-books", "ico-burger", "ico-businessman", "ico-c", "ico-calendar", "ico-case", "ico-change", "ico-change-2", "ico-check", "ico-checked", "ico-checked-alert", "ico-cheker", "ico-chevron", "ico-chevron-down", "ico-close", "ico-config", "ico-contragents", "ico-control", "ico-copy", "ico-counterparty", "ico-coworkers", "ico-debt", "ico-director", "ico-doc", "ico-docDocprimary", "ico-docs", "ico-door", "ico-dotted-more-horizontal", "ico-doubleArrows", "ico-download", "ico-eagle", "ico-edit", "ico-edo", "ico-email", "ico-email1", "ico-error", "ico-exit", "ico-eye", "ico-eyeClose", "ico-faq", "ico-farm", "ico-filter", "ico-fine", "ico-gasket", "ico-generator", "ico-grade", "ico-grade-2", "ico-ground-area-transport", "ico-groundArea", "ico-groupen", "ico-hands", "ico-help", "ico-ico-history", "ico-info", "ico-infoFill", "ico-invite", "ico-key", "ico-keyFill", "ico-letter", "ico-level", "ico-level-down", "ico-level-up", "ico-licence", "ico-limit", "ico-link", "ico-link-2", "ico-listadd", "ico-listing", "ico-lock", "ico-locked", "ico-megafon", "ico-new-window", "ico-notification", "ico-notificationOff", "ico-percent-alert", "ico-plus", "ico-referal", "ico-repeat", "ico-reset", "ico-return", "ico-search", "ico-setting", "ico-settings", "ico-site", "ico-snowflake", "ico-spec", "ico-statement", "ico-subuser", "ico-sun", "ico-sunrise", "ico-support", "ico-target", "ico-team", "ico-tech", "ico-telegram", "ico-time", "ico-trash", "ico-try", "ico-txt", "ico-unlock", "ico-upload", "ico-user", "ico-user-2", "ico-users", "ico-users-2", "ico-video-play", "ico-warning", "ico-warranty", "ico-warranty-shield", "ico-xml", "id-card", "image", "images", "inbox", "info", "info-circle", "layers", "link", "list", "lock", "lock-open", "map", "mapYandex", "microsoft", "minus", "minus-circle", "mobile", "money-bill", "moon", "paperclip", "pause", "pencil", "percentage", "phone", "pie-chart", "pin", "plus-circle", "power-off", "print", "qrcode", "question-circle", "refresh", "replay", "reply", "reset", "search", "search-minus", "search-plus", "send", "server", "share-alt", "shield", "sitemap", "sliders-v", "social-facebook", "social-instagram", "social-kakaotalk", "social-line", "social-naver", "social-pinterest", "social-tiktok", "social-vk", "social-wechat", "social-x", "social-xiaohongshu", "social-youtube", "sort-alpha-alt-down", "sort-alpha-alt-up", "sort-alpha-down", "sort-alpha-up", "sort-alt", "sort-alt-slash", "sort-amount-down", "sort-amount-down-alt", "sort-amount-up", "sort-amount-up-alt", "sort-numeric-alt-down", "sort-numeric-alt-up", "sort-numeric-down", "sort-numeric-up", "spinner", "star", "star-fill", "stock", "stop", "sync", "table", "tablet", "tag", "tags", "telegram", "th-large", "ticket", "times-circle", "trash", "troubleshoot", "undo", "unlock", "user", "user-edit", "user-minus", "user-off", "user-plus", "users", "video", "volume-down", "volume-off", "volume-up", "wallet", "warning", "wifi", "window-maximize", "window-minimize"];
|
|
763
|
+
|
|
764
|
+
/**
|
|
765
|
+
* Модель `<rt-icon>`: один корневой неймспейс с префиксом `I`.
|
|
766
|
+
* Внутри — подтипы для имён/размеров/цветов компонента.
|
|
767
|
+
*/
|
|
768
|
+
declare namespace IRtIcon {
|
|
769
|
+
/** Допустимые имена иконок. Литеральный union из {@link iconsName}. */
|
|
770
|
+
type Name = (typeof iconsName)[number];
|
|
771
|
+
/** Доступные размеры. Маппинг на пиксели — в `rt-icon.component.ts`. */
|
|
772
|
+
type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
773
|
+
/** Набор рисунков: свой набор кита либо материальный. */
|
|
774
|
+
type Preset = 'base' | 'material';
|
|
775
|
+
/**
|
|
776
|
+
* Рисунок, за которым идёт реестр: свой, материальный контурный или материальный залитый.
|
|
777
|
+
* Заливка есть только у материального набора — так её рисует первый кит.
|
|
778
|
+
*/
|
|
779
|
+
type Drawing = Preset | 'material-fill';
|
|
780
|
+
/** Семантические цвета. Маппинг на CSS-переменные `--rt-icon-color-*` — в `rt-icon.component.ts`. */
|
|
781
|
+
type Color = 'current' | 'muted' | 'info' | 'success' | 'warning' | 'danger' | 'inverse';
|
|
782
|
+
/** Размер на входе значка: ступень или пиксели. */
|
|
783
|
+
type SizeInput = Size | number;
|
|
784
|
+
/**
|
|
785
|
+
* Как значок рисует имя Material: `map-first` — пара из перечня кита, без пары шрифт;
|
|
786
|
+
* `font` — шрифт для любого имени.
|
|
787
|
+
*/
|
|
788
|
+
type GlyphStrategy = 'map-first' | 'font';
|
|
789
|
+
/** Итог разбора имени: рисунок кита либо лигатура шрифта Material. */
|
|
790
|
+
type Resolved = {
|
|
791
|
+
readonly kind: 'kit';
|
|
792
|
+
readonly name: Name;
|
|
793
|
+
} | {
|
|
794
|
+
readonly kind: 'font';
|
|
795
|
+
readonly glyph: string;
|
|
796
|
+
};
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* Контракт уведомлений (toast'ов). Отправитель кладёт в событие готовый текст и
|
|
801
|
+
* семантику — потребитель (`rt-toaster`) отрисовывает, ничего не зная о том,
|
|
802
|
+
* кто событие послал.
|
|
803
|
+
*/
|
|
804
|
+
declare namespace INotification {
|
|
805
|
+
/** Семантическая палитра уведомления; совпадает по значениям с `rt-message`. */
|
|
806
|
+
type Severity = 'info' | 'success' | 'warning' | 'danger';
|
|
807
|
+
interface Action {
|
|
808
|
+
readonly label: string;
|
|
809
|
+
readonly handler: () => void;
|
|
810
|
+
}
|
|
811
|
+
/** Полезная нагрузка toast'а. */
|
|
812
|
+
interface Payload {
|
|
813
|
+
readonly message: string;
|
|
814
|
+
readonly severity: Severity;
|
|
815
|
+
readonly description?: string;
|
|
816
|
+
/** Надстрочник над сообщением: автор, источник и время события */
|
|
817
|
+
readonly meta?: string;
|
|
818
|
+
readonly action?: Action;
|
|
819
|
+
/**
|
|
820
|
+
* Второе действие. Событию журнала их нужно два — перейти к записи и
|
|
821
|
+
* отметить прочитанным, не переходя, — и одного тоста на оба не хватает.
|
|
822
|
+
*/
|
|
823
|
+
readonly secondaryAction?: Action;
|
|
824
|
+
readonly filled?: boolean;
|
|
825
|
+
/**
|
|
826
|
+
* Сколько тост живёт, в миллисекундах. Не задано — столько, сколько велит тостер;
|
|
827
|
+
* `null` — таймера нет, тост держится до крестика.
|
|
828
|
+
*/
|
|
829
|
+
readonly duration?: number | null;
|
|
830
|
+
/** Полоса срока под тостом: сжимается вместе с таймером и встаёт вместе с ним. */
|
|
831
|
+
readonly progress?: boolean;
|
|
832
|
+
/** Свой значок вместо значка severity; `null` — тост без значка. */
|
|
833
|
+
readonly icon?: IRtIcon.Name | null;
|
|
834
|
+
}
|
|
835
|
+
type Options = Pick<Payload, 'description' | 'meta' | 'action' | 'secondaryAction' | 'filled' | 'duration' | 'progress' | 'icon'>;
|
|
836
|
+
/**
|
|
837
|
+
* Событие шины уведомлений. `type` — строковый дискриминатор (доменные
|
|
838
|
+
* action-перечисления вроде «обновление записи успешно»/«ошибка загрузки
|
|
839
|
+
* списка» приводятся к строке), `payload` несёт текст и severity.
|
|
840
|
+
*/
|
|
841
|
+
interface Event extends IMessageBusEvent<string> {
|
|
842
|
+
readonly payload: Payload;
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
/**
|
|
847
|
+
* Шина уведомлений приложения. Эмиттеры (сторы) публикуют сюда событие с
|
|
848
|
+
* готовым текстом и severity и больше ничего не знают об отрисовке. Подписчик
|
|
849
|
+
* (`rt-toaster`) слушает `onEmit()` и показывает toast'ы.
|
|
850
|
+
*
|
|
851
|
+
* Convenience-методы `success/info/warning/error` собирают событие: первым
|
|
852
|
+
* аргументом — текст для пользователя, вторым (необязательно) — доменный
|
|
853
|
+
* action-тип для точечной фильтрации через `ofType`. Если тип не передан,
|
|
854
|
+
* подставляется значение severity.
|
|
855
|
+
*/
|
|
856
|
+
declare class NotificationBus {
|
|
857
|
+
#private;
|
|
858
|
+
emit(event: INotification.Event): void;
|
|
859
|
+
onEmit(): Observable<INotification.Event>;
|
|
860
|
+
ofType(type: string): Observable<INotification.Event>;
|
|
861
|
+
success(message: string, type?: string, options?: INotification.Options): void;
|
|
862
|
+
info(message: string, type?: string, options?: INotification.Options): void;
|
|
863
|
+
warning(message: string, type?: string, options?: INotification.Options): void;
|
|
864
|
+
error(message: string, type?: string, options?: INotification.Options): void;
|
|
865
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NotificationBus, never>;
|
|
866
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
/**
|
|
870
|
+
* Местный кусок темы: узел рисует своё поддерево в своей теме, а страница
|
|
871
|
+
* вокруг остаётся как была.
|
|
872
|
+
*
|
|
873
|
+
* Работает в обе стороны — тёмная карточка внутри светлой страницы и светлая
|
|
874
|
+
* внутри тёмной, — и переключает весь набор свойств, а не часть: фон, текст,
|
|
875
|
+
* рамки, тени. Ближний признак выигрывает у дальнего, повторённый внутри
|
|
876
|
+
* такого же ничего не меняет, а снятый возвращает поддерево к теме страницы.
|
|
877
|
+
*
|
|
878
|
+
* Выбора человека и хранилища не трогает вовсе: это слово разметки об одном
|
|
879
|
+
* месте, а не переключение темы.
|
|
880
|
+
*
|
|
881
|
+
* ```html
|
|
882
|
+
* <section [rtTheme]="'dark'">…</section>
|
|
883
|
+
* ```
|
|
884
|
+
*
|
|
885
|
+
* Пустое значение темой не считается и признака не ставит.
|
|
886
|
+
*/
|
|
887
|
+
declare class RtThemeScopeDirective {
|
|
888
|
+
readonly rtTheme: InputSignal<ITheme.Mode | ''>;
|
|
889
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtThemeScopeDirective, never>;
|
|
890
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtThemeScopeDirective, "[rtTheme]", never, { "rtTheme": { "alias": "rtTheme"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* Ключи браузерного хранилища, которые кит занимает под себя. Единый реестр
|
|
895
|
+
* вместо констант, разбросанных по компонентам: так видно весь занятый
|
|
896
|
+
* неймспейс и не возникает двух ключей на одно и то же. Значения читает и пишет
|
|
897
|
+
* только `StorageService` из `@rt-tools/core`.
|
|
898
|
+
*
|
|
899
|
+
* Неймспейс `rt.` отделяет их от ключей приложения-потребителя.
|
|
900
|
+
*/
|
|
901
|
+
declare enum ERtStorageKeys {
|
|
902
|
+
/** Выбранная тема оформления: переживает перезагрузку и смену пользователя */
|
|
903
|
+
Theme = "rt.theme",
|
|
904
|
+
/** Префикс, а не полный ключ: итоговый вид — `rt.table.columns.<tableId>`. */
|
|
905
|
+
TableColumnsPrefix = "rt.table.columns.",
|
|
906
|
+
/** Настройки боковых меню: один объект, в нём каждое меню под своим номером. */
|
|
907
|
+
SideMenu = "rt.side-menu"
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
/**
|
|
911
|
+
* Глобальный сервис темы. Применяет `data-theme` к `<html>` через DOM-эффект,
|
|
912
|
+
* персистит выбор под единственным device-level ключом. Тема не привязана к
|
|
913
|
+
* пользователю: на одном устройстве последняя выставленная тема переживает
|
|
914
|
+
* вход, выход и перезагрузку.
|
|
915
|
+
*
|
|
916
|
+
* Хранится **выбор**, а не вид, в который он разрешился: «за машиной»,
|
|
917
|
+
* записанное тёмным видом, перестало бы идти за машиной с первой же
|
|
918
|
+
* перезагрузки, и на экране ничто бы об этом не сказало.
|
|
919
|
+
*/
|
|
920
|
+
declare class ThemeService {
|
|
921
|
+
#private;
|
|
922
|
+
/** Что выбрано: два вида и «за машиной». Хранится именно это. */
|
|
923
|
+
readonly choice: Signal<ITheme.Choice>;
|
|
924
|
+
/** Вид, в котором страница нарисована. «За машиной» разрешается здесь. */
|
|
925
|
+
readonly current: Signal<ITheme.Mode>;
|
|
926
|
+
readonly isDark: Signal<boolean>;
|
|
927
|
+
constructor();
|
|
928
|
+
/**
|
|
929
|
+
* Переключает светлое и тёмное.
|
|
930
|
+
*
|
|
931
|
+
* Из «за машиной» уходит в противоположность тому, что сейчас на экране:
|
|
932
|
+
* человек жмёт переключатель, глядя на нарисованное, и ждёт обратного ему.
|
|
933
|
+
*/
|
|
934
|
+
toggle(): void;
|
|
935
|
+
setTheme(theme: ITheme.Choice): void;
|
|
936
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThemeService, never>;
|
|
937
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
/**
|
|
941
|
+
* Штамп последнего взаимодействия для превью списков чатов: событие за сегодня
|
|
942
|
+
* показывается временем («14:05»), за вчера и ранее — датой («18.07.2026»), чтобы
|
|
943
|
+
* старые чаты не выглядели сегодняшними (G121).
|
|
944
|
+
*/
|
|
945
|
+
declare class RtDayStampPipe implements PipeTransform {
|
|
946
|
+
#private;
|
|
947
|
+
transform(value: Date | string | null): string;
|
|
948
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtDayStampPipe, never>;
|
|
949
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<RtDayStampPipe, "rtDayStamp", true>;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* Триггер бесконечной прокрутки. Вешается на элемент-«маяк» в конце списка;
|
|
954
|
+
* когда маяк приближается к области видимости — эмитит `(loadMore)`, чтобы
|
|
955
|
+
* потребитель догрузил следующую страницу и ДОБАВИЛ её к уже показанным
|
|
956
|
+
* сущностям (а не перезаписал).
|
|
957
|
+
*
|
|
958
|
+
* Использует `IntersectionObserver`, поэтому не зависит от того, какой предок
|
|
959
|
+
* владеет вертикальным скроллом: контент скроллится в `.rt-container__content`
|
|
960
|
+
* shell'а, а не в самом feature-компоненте, и браузер сам клипует маяк
|
|
961
|
+
* скроллящими предками при расчёте пересечения.
|
|
962
|
+
*
|
|
963
|
+
* `rootMargin` расширяет нижнюю кромку корня, чтобы триггерить догрузку
|
|
964
|
+
* ЗАРАНЕЕ (по умолчанию за половину вьюпорта до низа) — страница успевает
|
|
965
|
+
* подгрузиться прежде, чем пользователь упрётся в конец списка. Пока идёт
|
|
966
|
+
* запрос или страниц больше нет, потребитель ставит `[disabled]="true"` —
|
|
967
|
+
* наблюдение приостанавливается.
|
|
968
|
+
*/
|
|
969
|
+
declare class RtInfiniteScrollDirective implements OnDestroy {
|
|
970
|
+
#private;
|
|
971
|
+
/** Пауза наблюдения: `true`, пока идёт догрузка или страниц больше нет. */
|
|
972
|
+
readonly disabled: InputSignalWithTransform<boolean, boolean | string>;
|
|
973
|
+
/**
|
|
974
|
+
* Запас корня снизу — за сколько до низа триггерить догрузку. CSS-формат
|
|
975
|
+
* `rootMargin` (px или %). Default `50%` — половина вьюпорта заранее.
|
|
976
|
+
*/
|
|
977
|
+
readonly rootMargin: InputSignal<string>;
|
|
978
|
+
readonly loadMore: OutputEmitterRef<void>;
|
|
979
|
+
constructor();
|
|
980
|
+
ngOnDestroy(): void;
|
|
981
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RtInfiniteScrollDirective, never>;
|
|
982
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<RtInfiniteScrollDirective, "[rtInfiniteScroll]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "rootMargin": { "alias": "rootMargin"; "required": false; "isSignal": true; }; }, { "loadMore": "loadMore"; }, never, never, true, never>;
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
/** The name of a styling property the kit declares itself. */
|
|
986
|
+
type TRtDesignTokenName = '--rt-amber-400' | '--rt-border-width-medium' | '--rt-border-width-thick' | '--rt-border-width-thin' | '--rt-bp-lg' | '--rt-bp-md' | '--rt-bp-sm' | '--rt-bp-xl' | '--rt-brand-100' | '--rt-brand-200' | '--rt-brand-300' | '--rt-brand-400' | '--rt-brand-50' | '--rt-brand-500' | '--rt-brand-600' | '--rt-brand-700' | '--rt-brand-800' | '--rt-brand-900' | '--rt-brand-950' | '--rt-btn-tint-active' | '--rt-btn-tint-hover' | '--rt-charcoal-700' | '--rt-charcoal-800' | '--rt-charcoal-900' | '--rt-charcoal-950' | '--rt-charcoal-border' | '--rt-charcoal-border-strong' | '--rt-chat-bubble-date' | '--rt-chat-bubble-in-author' | '--rt-chat-bubble-in-bg' | '--rt-chat-bubble-own-author' | '--rt-chat-bubble-own-bg' | '--rt-chat-status-read' | '--rt-color-action-danger' | '--rt-color-action-danger-active' | '--rt-color-action-danger-hover' | '--rt-color-action-danger-on-surface' | '--rt-color-action-disabled' | '--rt-color-action-info' | '--rt-color-action-info-active' | '--rt-color-action-info-hover' | '--rt-color-action-info-on-surface' | '--rt-color-action-on-danger' | '--rt-color-action-on-disabled' | '--rt-color-action-on-info' | '--rt-color-action-on-primary' | '--rt-color-action-on-secondary' | '--rt-color-action-on-success' | '--rt-color-action-on-warning' | '--rt-color-action-primary' | '--rt-color-action-primary-active' | '--rt-color-action-primary-hover' | '--rt-color-action-primary-on-surface' | '--rt-color-action-primary-soft' | '--rt-color-action-primary-subtle' | '--rt-color-action-secondary' | '--rt-color-action-secondary-active' | '--rt-color-action-secondary-hover' | '--rt-color-action-secondary-on-surface' | '--rt-color-action-success' | '--rt-color-action-success-active' | '--rt-color-action-success-hover' | '--rt-color-action-success-on-surface' | '--rt-color-action-warning' | '--rt-color-action-warning-active' | '--rt-color-action-warning-hover' | '--rt-color-action-warning-on-surface' | '--rt-color-bg-hover' | '--rt-color-bg-inverse' | '--rt-color-bg-nav' | '--rt-color-bg-overlay' | '--rt-color-bg-page' | '--rt-color-bg-page-auth' | '--rt-color-bg-subtle' | '--rt-color-bg-surface' | '--rt-color-bg-surface-auth-card' | '--rt-color-bg-surface-subtle' | '--rt-color-bg-surface-subtle-2' | '--rt-color-border-default' | '--rt-color-border-focus' | '--rt-color-border-strong' | '--rt-color-border-subtle' | '--rt-color-field-fill-underline' | '--rt-color-skeleton-base' | '--rt-color-skeleton-wave' | '--rt-color-state-danger' | '--rt-color-state-danger-bg' | '--rt-color-state-error-text' | '--rt-color-state-info' | '--rt-color-state-info-bg' | '--rt-color-state-success' | '--rt-color-state-success-bg' | '--rt-color-state-success-text' | '--rt-color-state-warning' | '--rt-color-state-warning-bg' | '--rt-color-state-warning-text' | '--rt-color-stepper-current' | '--rt-color-stepper-current-subtle' | '--rt-color-stepper-progress' | '--rt-color-stepper-track' | '--rt-color-table-head-bg' | '--rt-color-text-disabled' | '--rt-color-text-inverse' | '--rt-color-text-link' | '--rt-color-text-link-hover' | '--rt-color-text-muted' | '--rt-color-text-primary' | '--rt-control-height-2xl' | '--rt-control-height-lg' | '--rt-control-height-md' | '--rt-control-height-sm' | '--rt-control-height-xl' | '--rt-control-max-width' | '--rt-control-panel-max-height' | '--rt-control-textarea-min-height-lg' | '--rt-control-textarea-min-height-md' | '--rt-control-textarea-min-height-sm' | '--rt-counter-gap' | '--rt-counter-row-color-border' | '--rt-counter-row-gap' | '--rt-counter-row-hint-color' | '--rt-counter-row-hint-font-size' | '--rt-counter-row-label-color' | '--rt-counter-row-label-font-size' | '--rt-counter-row-padding-y' | '--rt-counter-value-color' | '--rt-counter-value-font-size' | '--rt-counter-value-min-width' | '--rt-danger-50' | '--rt-danger-500' | '--rt-danger-600' | '--rt-danger-700' | '--rt-duration-base' | '--rt-duration-fast' | '--rt-duration-slow' | '--rt-duration-slower' | '--rt-field-error-color' | '--rt-field-error-font-size' | '--rt-field-gap' | '--rt-field-hint-color' | '--rt-field-hint-font-size' | '--rt-field-label-color' | '--rt-field-label-font-size' | '--rt-field-label-font-weight' | '--rt-field-label-help-gap' | '--rt-field-required-color' | '--rt-field-value-color' | '--rt-field-value-empty-color' | '--rt-field-value-font-size' | '--rt-focus-ring-color' | '--rt-focus-ring-color-danger' | '--rt-focus-ring-offset' | '--rt-focus-ring-width' | '--rt-font-family-mono' | '--rt-font-family-sans' | '--rt-font-weight-bold' | '--rt-font-weight-medium' | '--rt-font-weight-regular' | '--rt-font-weight-semibold' | '--rt-gray-350' | '--rt-icon-button-color-bg-hover' | '--rt-icon-button-disabled-color' | '--rt-icon-button-disabled-fill' | '--rt-icon-button-disabled-opacity' | '--rt-info-50' | '--rt-info-500' | '--rt-info-600' | '--rt-info-700' | '--rt-input-border-width' | '--rt-input-color-bg' | '--rt-input-color-bg-disabled' | '--rt-input-color-bg-hover' | '--rt-input-color-border' | '--rt-input-color-border-error' | '--rt-input-color-border-focus' | '--rt-input-color-text' | '--rt-input-color-text-placeholder' | '--rt-input-disabled-opacity' | '--rt-input-focus-outline-offset' | '--rt-input-focus-shadow' | '--rt-input-focus-shadow-error' | '--rt-input-font-size' | '--rt-input-gap' | '--rt-input-height' | '--rt-input-height-lg' | '--rt-input-height-md' | '--rt-input-height-sm' | '--rt-input-icon-color' | '--rt-input-icon-size' | '--rt-input-line-height' | '--rt-input-max-width' | '--rt-input-padding-x' | '--rt-input-padding-y' | '--rt-input-panel-max-height' | '--rt-input-radius' | '--rt-input-transition' | '--rt-leading-none' | '--rt-leading-normal' | '--rt-leading-relaxed' | '--rt-leading-snug' | '--rt-leading-tight' | '--rt-letter-spacing-wide' | '--rt-list-action-color' | '--rt-list-action-color-bg-hover' | '--rt-list-action-color-hover' | '--rt-list-action-divider-height' | '--rt-list-action-gap' | '--rt-list-action-icon-size' | '--rt-list-action-radius' | '--rt-list-action-shadow' | '--rt-list-action-shadow-hover' | '--rt-list-content-padding-bottom' | '--rt-list-copy-button-bg' | '--rt-list-copy-button-bg-hover' | '--rt-list-copy-button-color' | '--rt-list-copy-button-radius' | '--rt-list-copy-button-size' | '--rt-list-empty-icon-size' | '--rt-list-empty-icon-wrap-bg' | '--rt-list-empty-icon-wrap-size' | '--rt-list-empty-title-size' | '--rt-list-empty-title-weight' | '--rt-list-filter-line-height' | '--rt-list-placeholder-grow' | '--rt-list-placeholder-min-height' | '--rt-list-search-color-bg' | '--rt-list-search-color-border' | '--rt-list-search-color-placeholder' | '--rt-list-search-font-size' | '--rt-list-search-gap' | '--rt-list-search-height' | '--rt-list-search-icon-color' | '--rt-list-search-icon-size' | '--rt-list-search-padding-x' | '--rt-list-search-radius' | '--rt-list-search-width' | '--rt-list-selector-label-color' | '--rt-list-settings-icon-color' | '--rt-list-settings-item-bg' | '--rt-list-settings-item-radius' | '--rt-list-table-button-radius' | '--rt-list-table-button-size' | '--rt-list-table-head-divider-color' | '--rt-list-table-icon-color' | '--rt-list-table-icon-size' | '--rt-list-toolbar-gap' | '--rt-list-toolbar-padding-bottom' | '--rt-list-toolbar-padding-top' | '--rt-mat-blue-100' | '--rt-mat-blue-20' | '--rt-mat-blue-40' | '--rt-mat-blue-60' | '--rt-mat-blue-80' | '--rt-mat-blue-active' | '--rt-mat-blue-hover' | '--rt-mat-dark-10' | '--rt-mat-dark-20' | '--rt-mat-dark-30' | '--rt-mat-dark-40' | '--rt-mat-green-10' | '--rt-mat-green-100' | '--rt-mat-green-120' | '--rt-mat-green-20' | '--rt-mat-green-40' | '--rt-mat-green-60' | '--rt-mat-green-80' | '--rt-mat-green-active' | '--rt-mat-green-hover' | '--rt-mat-menu-min-width' | '--rt-mat-menu-sm-icon-size' | '--rt-mat-menu-sm-item-height' | '--rt-mat-navy-100' | '--rt-mat-neutral-0' | '--rt-mat-neutral-10' | '--rt-mat-neutral-100' | '--rt-mat-neutral-15' | '--rt-mat-neutral-20' | '--rt-mat-neutral-25' | '--rt-mat-neutral-30' | '--rt-mat-neutral-35' | '--rt-mat-neutral-40' | '--rt-mat-neutral-5' | '--rt-mat-neutral-60' | '--rt-mat-neutral-80' | '--rt-mat-neutral-active' | '--rt-mat-neutral-hover' | '--rt-mat-orange-10' | '--rt-mat-orange-100' | '--rt-mat-orange-20' | '--rt-mat-orange-40' | '--rt-mat-orange-5' | '--rt-mat-orange-60' | '--rt-mat-orange-70' | '--rt-mat-orange-80' | '--rt-mat-orange-active' | '--rt-mat-orange-hover' | '--rt-mat-overlay-black-32' | '--rt-mat-overlay-black-4' | '--rt-mat-overlay-blue-24' | '--rt-mat-overlay-blue-8' | '--rt-mat-radius-4' | '--rt-mat-radius-5' | '--rt-mat-red-10' | '--rt-mat-red-100' | '--rt-mat-red-20' | '--rt-mat-red-40' | '--rt-mat-red-60' | '--rt-mat-red-80' | '--rt-mat-red-active' | '--rt-mat-red-hover' | '--rt-mat-shadow-fab' | '--rt-mat-shadow-fab-hover' | '--rt-mat-shadow-level-2' | '--rt-nav-caret-size' | '--rt-nav-color-disabled' | '--rt-nav-color-focus' | '--rt-nav-header-color-bg' | '--rt-nav-header-padding' | '--rt-nav-item-color' | '--rt-nav-item-color-bg' | '--rt-nav-item-color-bg-active' | '--rt-nav-item-color-border' | '--rt-nav-item-color-caret' | '--rt-nav-item-color-hover' | '--rt-nav-item-color-pressed' | '--rt-nav-item-content-gap' | '--rt-nav-item-font-size' | '--rt-nav-item-font-weight' | '--rt-nav-item-gap' | '--rt-nav-item-height' | '--rt-nav-item-line-height' | '--rt-nav-item-padding' | '--rt-nav-marker-color' | '--rt-nav-marker-size' | '--rt-nav-panel-color-bg' | '--rt-nav-panel-color-border' | '--rt-nav-panel-column-gap' | '--rt-nav-panel-column-width' | '--rt-nav-panel-columns' | '--rt-nav-panel-group-color' | '--rt-nav-panel-group-content-gap' | '--rt-nav-panel-group-font-size' | '--rt-nav-panel-group-font-weight' | '--rt-nav-panel-group-gap' | '--rt-nav-panel-item-color' | '--rt-nav-panel-item-color-active' | '--rt-nav-panel-item-color-bg-active' | '--rt-nav-panel-item-color-bg-hover' | '--rt-nav-panel-item-content-gap' | '--rt-nav-panel-item-font-size' | '--rt-nav-panel-item-font-weight' | '--rt-nav-panel-item-gap' | '--rt-nav-panel-item-height' | '--rt-nav-panel-item-padding' | '--rt-nav-panel-padding' | '--rt-nav-panel-padding-y' | '--rt-nav-panel-shadow' | '--rt-navy-600' | '--rt-navy-900' | '--rt-neutral-0' | '--rt-neutral-100' | '--rt-neutral-200' | '--rt-neutral-300' | '--rt-neutral-400' | '--rt-neutral-50' | '--rt-neutral-500' | '--rt-neutral-600' | '--rt-neutral-700' | '--rt-neutral-800' | '--rt-neutral-900' | '--rt-neutral-950' | '--rt-opacity-disabled' | '--rt-overlay-amber-16' | '--rt-overlay-black-4' | '--rt-overlay-black-50' | '--rt-overlay-black-8' | '--rt-overlay-brand-24' | '--rt-overlay-brand-8' | '--rt-overlay-danger-16' | '--rt-overlay-menu-bg' | '--rt-overlay-menu-current-bg' | '--rt-overlay-menu-danger-color' | '--rt-overlay-menu-danger-label-color' | '--rt-overlay-menu-item-icon-size' | '--rt-overlay-menu-item-min-height' | '--rt-overlay-menu-item-padding-x' | '--rt-overlay-menu-item-padding-y' | '--rt-overlay-menu-item-weight' | '--rt-overlay-menu-min-width' | '--rt-overlay-menu-padding-y' | '--rt-overlay-menu-radius' | '--rt-overlay-menu-shadow' | '--rt-overlay-menu-sm-item-icon-size' | '--rt-overlay-menu-sm-item-min-height' | '--rt-overlay-navy-70' | '--rt-overlay-select-check-display' | '--rt-overlay-select-option-font-size' | '--rt-overlay-select-option-min-height' | '--rt-overlay-select-panel-border-width' | '--rt-overlay-select-radius' | '--rt-overlay-select-selected-bg' | '--rt-overlay-select-selected-weight' | '--rt-overlay-select-shadow' | '--rt-overlay-tooltip-radius' | '--rt-overlay-tooltip-shadow' | '--rt-overlay-white-25' | '--rt-overlay-white-4' | '--rt-overlay-white-40' | '--rt-overlay-white-50' | '--rt-overlay-white-8' | '--rt-pagination-arrow-color' | '--rt-pagination-arrow-radius' | '--rt-pagination-arrow-shadow' | '--rt-pagination-arrow-size' | '--rt-pagination-box-color-border' | '--rt-pagination-box-color-text' | '--rt-pagination-box-current-color-bg' | '--rt-pagination-box-current-color-border' | '--rt-pagination-box-current-color-text' | '--rt-pagination-box-current-font-weight' | '--rt-pagination-box-radius' | '--rt-pagination-box-size' | '--rt-pagination-field-color-bg' | '--rt-pagination-field-color-border' | '--rt-pagination-field-color-text' | '--rt-pagination-field-height' | '--rt-pagination-field-padding-x' | '--rt-pagination-field-radius' | '--rt-pagination-gap' | '--rt-pagination-justify' | '--rt-pagination-nav-gap' | '--rt-pagination-padding-x' | '--rt-pagination-padding-y' | '--rt-pagination-per-page-gap' | '--rt-pagination-per-page-label-white-space' | '--rt-pagination-range-display' | '--rt-profile-avatar-font-size' | '--rt-profile-avatar-size' | '--rt-profile-item-content-gap' | '--rt-profile-item-font-size' | '--rt-profile-item-font-weight' | '--rt-profile-item-padding-y' | '--rt-profile-item-radius' | '--rt-profile-menu-min-width' | '--rt-profile-menu-padding' | '--rt-profile-menu-shadow' | '--rt-profile-row-inset' | '--rt-profile-theme-icon-padding' | '--rt-radius-2xl' | '--rt-radius-control' | '--rt-radius-full' | '--rt-radius-lg' | '--rt-radius-md' | '--rt-radius-ms' | '--rt-radius-none' | '--rt-radius-sm' | '--rt-radius-xl' | '--rt-radius-xs' | '--rt-shadow-card' | '--rt-shadow-card-soft' | '--rt-shadow-dialog' | '--rt-shadow-focus-ring' | '--rt-shadow-focus-ring-danger' | '--rt-shadow-lg' | '--rt-shadow-md' | '--rt-shadow-nav-panel' | '--rt-shadow-none' | '--rt-shadow-profile-menu' | '--rt-shadow-sm' | '--rt-shadow-status-dot' | '--rt-shadow-step-indicator' | '--rt-shadow-xl' | '--rt-size-1' | '--rt-size-10' | '--rt-size-100' | '--rt-size-12' | '--rt-size-16' | '--rt-size-2' | '--rt-size-20' | '--rt-size-24' | '--rt-size-3' | '--rt-size-30' | '--rt-size-4' | '--rt-size-40' | '--rt-size-5' | '--rt-size-6' | '--rt-size-60' | '--rt-size-64' | '--rt-size-8' | '--rt-slate-300' | '--rt-space-0' | '--rt-space-0-5' | '--rt-space-1' | '--rt-space-10' | '--rt-space-12' | '--rt-space-16' | '--rt-space-2' | '--rt-space-20' | '--rt-space-24' | '--rt-space-2xl' | '--rt-space-2xs' | '--rt-space-3xl' | '--rt-space-4' | '--rt-space-5' | '--rt-space-6' | '--rt-space-8' | '--rt-space-lg' | '--rt-space-md' | '--rt-space-sm' | '--rt-space-xl' | '--rt-space-xs' | '--rt-success-100' | '--rt-success-400' | '--rt-success-50' | '--rt-success-500' | '--rt-success-600' | '--rt-success-700' | '--rt-text-2xl' | '--rt-text-2xs' | '--rt-text-3xl' | '--rt-text-3xs' | '--rt-text-4xl' | '--rt-text-base' | '--rt-text-lg' | '--rt-text-md' | '--rt-text-sm' | '--rt-text-xl' | '--rt-text-xs' | '--rt-textarea-line-height' | '--rt-textarea-min-height' | '--rt-textarea-min-height-lg' | '--rt-textarea-min-height-md' | '--rt-textarea-min-height-sm' | '--rt-textarea-padding-y' | '--rt-toggle-color-border' | '--rt-toggle-color-icon' | '--rt-toggle-color-thumb' | '--rt-toggle-color-track' | '--rt-toggle-color-track-on' | '--rt-toggle-shadow-border' | '--rt-toggle-shadow-thumb' | '--rt-warning-50' | '--rt-warning-500' | '--rt-warning-600' | '--rt-warning-700' | '--rt-yellow-400' | '--rt-z-base' | '--rt-z-dropdown' | '--rt-z-fixed' | '--rt-z-modal' | '--rt-z-modal-backdrop' | '--rt-z-popover' | '--rt-z-sticky' | '--rt-z-tooltip';
|
|
987
|
+
/** The name of a consumer's handle — a property the kit deliberately does not declare. */
|
|
988
|
+
type TRtConsumerHandleName = '--rt-action-bar-menu-bg' | '--rt-action-bar-menu-color' | '--rt-action-bar-menu-radius' | '--rt-action-bar-menu-shadow' | '--rt-aside-bg' | '--rt-aside-content-inset' | '--rt-aside-error-margin-block' | '--rt-aside-footer-gap' | '--rt-aside-footer-inset' | '--rt-aside-footer-justify' | '--rt-aside-footer-margin' | '--rt-aside-header-inset' | '--rt-aside-header-title-leading' | '--rt-aside-width' | '--rt-data-table-scrollbar-color' | '--rt-data-table-scrollbar-horizontal-height' | '--rt-data-table-scrollbar-vertical-width' | '--rt-data-table-scrollbar-width' | '--rt-dialog-bg' | '--rt-dialog-border' | '--rt-dialog-content-max-height' | '--rt-dialog-content-padding' | '--rt-dialog-footer-border' | '--rt-dialog-footer-padding' | '--rt-dialog-header-border' | '--rt-dialog-header-padding' | '--rt-dialog-title-font-size' | '--rt-dialog-title-transform' | '--rt-dialog-title-weight' | '--rt-dialog-width' | '--rt-header-content-max-width' | '--rt-header-height' | '--rt-icon-button-bg' | '--rt-icon-button-bg-hover' | '--rt-icon-button-size' | '--rt-icon-glyph-font' | '--rt-logo-tagline' | '--rt-logo-tagline-dark' | '--rt-logo-wordmark' | '--rt-logo-wordmark-dark' | '--rt-page-header-bg' | '--rt-table-actions-bg' | '--rt-tag-color-bg' | '--rt-tag-color-border' | '--rt-tag-color-text' | '--rt-tag-letter-spacing' | '--rt-tag-padding-block' | '--rt-tag-padding-inline' | '--rt-toast-action-color' | '--rt-toast-bg' | '--rt-toast-border-color' | '--rt-toast-close-color' | '--rt-toast-color' | '--rt-toast-filled-danger-bg' | '--rt-toast-filled-danger-border-color' | '--rt-toast-filled-danger-color' | '--rt-toast-filled-info-bg' | '--rt-toast-filled-info-border-color' | '--rt-toast-filled-info-color' | '--rt-toast-filled-success-bg' | '--rt-toast-filled-success-border-color' | '--rt-toast-filled-success-color' | '--rt-toast-filled-warning-bg' | '--rt-toast-filled-warning-border-color' | '--rt-toast-filled-warning-color' | '--rt-toast-icon-color' | '--rt-toast-progress-color' | '--rt-toast-progress-height' | '--rt-workspace-aside-size' | '--rt-workspace-list-size';
|
|
989
|
+
/** All the styling properties declared by the kit. */
|
|
990
|
+
declare const RT_DESIGN_TOKEN_NAMES: readonly TRtDesignTokenName[];
|
|
991
|
+
/** All the consumer's handles: the value comes from the application, until then the fallback works. */
|
|
992
|
+
declare const RT_CONSUMER_HANDLE_NAMES: readonly TRtConsumerHandleName[];
|
|
993
|
+
|
|
994
|
+
/**
|
|
995
|
+
* Извлекает имя файла из URL: последний сегмент пути без query/fragment,
|
|
996
|
+
* декодированный из percent-encoding. Нужен для вложений, у которых источник
|
|
997
|
+
* отдаёт только ссылку на скачивание без метаданных (имени/размера).
|
|
998
|
+
*
|
|
999
|
+
* @param url Ссылка на файл. Пустая/`null` → `fallback`.
|
|
1000
|
+
* @param fallback Что вернуть, если сегмент пустой или URL не распарсился.
|
|
1001
|
+
*/
|
|
1002
|
+
declare function fileNameFromUrl(url: string | null | undefined, fallback?: string): string;
|
|
1003
|
+
|
|
1004
|
+
/**
|
|
1005
|
+
* Форматирует размер файла в байтах в человекочитаемую строку (SI, base-1000).
|
|
1006
|
+
*
|
|
1007
|
+
* Используется десятичная система (1 кБ = 1000 Б), а не двоичная (KiB), —
|
|
1008
|
+
* так размер совпадает с тем, что показывает большинство ОС и файловых менеджеров.
|
|
1009
|
+
* Единицы — латиницей (`B` / `kB` / `MB` / `GB`), как в макете карточки файла.
|
|
1010
|
+
*
|
|
1011
|
+
* @param bytes Размер в байтах. `null`/`undefined`/`NaN`/отрицательное → пустая строка
|
|
1012
|
+
* (caller сам решает, скрывать бейдж или нет).
|
|
1013
|
+
* @returns Строка вида `"82 kB"`, `"1.4 MB"` или `""`, если размер неизвестен.
|
|
1014
|
+
*/
|
|
1015
|
+
declare function formatFileSize(bytes: number | null | undefined): string;
|
|
1016
|
+
|
|
1017
|
+
/**
|
|
1018
|
+
* Дерево узлов показа разметки: то, во что разборщик переводит присланный текст.
|
|
1019
|
+
*
|
|
1020
|
+
* Перечень узлов закрыт. Разборщик не умеет строить ничего, кроме перечисленного здесь, —
|
|
1021
|
+
* поэтому сырой HTML, картинки и адреса чужих схем в вывод не попадают вовсе: для них тут
|
|
1022
|
+
* просто нет узла, и они остаются видимым текстом.
|
|
1023
|
+
*/
|
|
1024
|
+
/** Род блока — то, чем текст разделён по вертикали. */
|
|
1025
|
+
declare enum ERtMarkdownBlock {
|
|
1026
|
+
Heading = "heading",
|
|
1027
|
+
Paragraph = "paragraph",
|
|
1028
|
+
List = "list",
|
|
1029
|
+
Quote = "quote",
|
|
1030
|
+
Code = "code",
|
|
1031
|
+
Table = "table"
|
|
1032
|
+
}
|
|
1033
|
+
/** Род куска строки — то, чем текст размечен внутри абзаца. */
|
|
1034
|
+
declare enum ERtMarkdownInline {
|
|
1035
|
+
Text = "text",
|
|
1036
|
+
Strong = "strong",
|
|
1037
|
+
Emphasis = "emphasis",
|
|
1038
|
+
Strike = "strike",
|
|
1039
|
+
Code = "code",
|
|
1040
|
+
Link = "link",
|
|
1041
|
+
Break = "break"
|
|
1042
|
+
}
|
|
1043
|
+
/** Кусок строки: либо сам текст, либо разметка вокруг вложенных кусков. */
|
|
1044
|
+
interface IRtMarkdownInlineNode {
|
|
1045
|
+
readonly kind: ERtMarkdownInline;
|
|
1046
|
+
/** Текст куска. У разметки вокруг вложенного — пустая строка. */
|
|
1047
|
+
readonly text: string;
|
|
1048
|
+
/** Вложенные куски у жирного, курсива и зачёркнутого; у остальных пусто. */
|
|
1049
|
+
readonly children: readonly IRtMarkdownInlineNode[];
|
|
1050
|
+
/** Адрес ссылки. Стоит только у ссылки и только разрешённой схемы. */
|
|
1051
|
+
readonly href: string | null;
|
|
1052
|
+
}
|
|
1053
|
+
/** Пункт списка: свои куски строки и уровень вложенности, считая от нуля. */
|
|
1054
|
+
interface IRtMarkdownListItem {
|
|
1055
|
+
readonly level: number;
|
|
1056
|
+
/**
|
|
1057
|
+
* Тот же уровень строкой — для модификатора разметки.
|
|
1058
|
+
*
|
|
1059
|
+
* Директива модификатора числа не принимает: любое нестроковое значение она сводит к
|
|
1060
|
+
* признаку и даёт класс без значения, то есть один и тот же на все уровни.
|
|
1061
|
+
*/
|
|
1062
|
+
readonly levelName: string;
|
|
1063
|
+
readonly content: readonly IRtMarkdownInlineNode[];
|
|
1064
|
+
}
|
|
1065
|
+
/** Блок показа. Поля, которых у этого рода нет, стоят пустыми. */
|
|
1066
|
+
interface IRtMarkdownBlockNode {
|
|
1067
|
+
readonly kind: ERtMarkdownBlock;
|
|
1068
|
+
/** Уровень заголовка, от 1 до 6. У остальных родов — 0. */
|
|
1069
|
+
readonly level: number;
|
|
1070
|
+
/** Тот же уровень строкой — для модификатора разметки; у остальных родов пусто. */
|
|
1071
|
+
readonly levelName: string;
|
|
1072
|
+
/** Куски строки у заголовка, абзаца и цитаты. */
|
|
1073
|
+
readonly content: readonly IRtMarkdownInlineNode[];
|
|
1074
|
+
/** Пункты списка. */
|
|
1075
|
+
readonly items: readonly IRtMarkdownListItem[];
|
|
1076
|
+
/** Признак нумерованного списка. */
|
|
1077
|
+
readonly ordered: boolean;
|
|
1078
|
+
/** Текст блока кода как есть, без разбора разметки внутри. */
|
|
1079
|
+
readonly code: string;
|
|
1080
|
+
/** Слово языка у ограды блока кода. Разбирается, но на вид не влияет. */
|
|
1081
|
+
readonly language: string | null;
|
|
1082
|
+
/** Строка заголовка таблицы: ячейка — свои куски строки. */
|
|
1083
|
+
readonly head: readonly (readonly IRtMarkdownInlineNode[])[];
|
|
1084
|
+
/** Прочие строки таблицы. */
|
|
1085
|
+
readonly rows: readonly (readonly (readonly IRtMarkdownInlineNode[])[])[];
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
/** Перенос строки внутри абзаца: одиночный перенос остаётся переносом. */
|
|
1089
|
+
declare function breakNode(): IRtMarkdownInlineNode;
|
|
1090
|
+
/**
|
|
1091
|
+
* Разбирает строку на куски показа.
|
|
1092
|
+
*
|
|
1093
|
+
* @param source Строка без переносов.
|
|
1094
|
+
* @returns Куски строки по порядку; у строки без разметки — один кусок текста.
|
|
1095
|
+
*/
|
|
1096
|
+
declare function parseInline(source: string): IRtMarkdownInlineNode[];
|
|
1097
|
+
|
|
1098
|
+
/**
|
|
1099
|
+
* Разбирает текст груза в дерево узлов показа.
|
|
1100
|
+
*
|
|
1101
|
+
* @param source Текст записи. Пустота и отсутствие значения дают пустой список блоков.
|
|
1102
|
+
* @returns Блоки показа по порядку.
|
|
1103
|
+
*/
|
|
1104
|
+
declare function parseMarkdown(source: string | null | undefined): IRtMarkdownBlockNode[];
|
|
1105
|
+
|
|
1106
|
+
/**
|
|
1107
|
+
* Готовая начинка `<picture>`: источники по форматам и запасной кадр на `<img>`.
|
|
1108
|
+
*
|
|
1109
|
+
* Кит не знает про хранилище и не решает, какие форматы существуют и какой из
|
|
1110
|
+
* них запасной, — адреса собирает вызывающая сторона. Разделение неслучайно:
|
|
1111
|
+
* шаблон рисует не N источников, а N−1 источник плюс `<img>`, и знание «avif
|
|
1112
|
+
* идёт первым, webp остаётся запасным» иначе пришлось бы повторить в каждом
|
|
1113
|
+
* шаблоне.
|
|
1114
|
+
*/
|
|
1115
|
+
interface IRtPictureSource {
|
|
1116
|
+
/** MIME-тип формата: попадает в `<source type="…">` */
|
|
1117
|
+
readonly type: string;
|
|
1118
|
+
readonly srcset: string;
|
|
1119
|
+
}
|
|
1120
|
+
interface IRtPicture {
|
|
1121
|
+
readonly sources: readonly IRtPictureSource[];
|
|
1122
|
+
readonly fallbackType: string;
|
|
1123
|
+
readonly fallbackSrcset: string;
|
|
1124
|
+
readonly fallbackSrc: string;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
/**
|
|
1128
|
+
* Тело сообщения чата в rich-формате Quill delta. Форма и whitelist атрибутов
|
|
1129
|
+
* зафиксированы контрактом бэка: только текстовые вставки + ограниченный набор
|
|
1130
|
+
* форматирования, никаких ссылок и вложенных объектов (анонимность).
|
|
1131
|
+
*/
|
|
1132
|
+
/** Атрибуты форматирования Quill delta — строго whitelist (без link/media). */
|
|
1133
|
+
interface IQuillDeltaAttributes {
|
|
1134
|
+
bold?: true;
|
|
1135
|
+
italic?: true;
|
|
1136
|
+
underline?: true;
|
|
1137
|
+
strike?: true;
|
|
1138
|
+
blockquote?: true;
|
|
1139
|
+
'code-block'?: true;
|
|
1140
|
+
list?: 'ordered' | 'bullet';
|
|
1141
|
+
header?: 1 | 2 | 3;
|
|
1142
|
+
}
|
|
1143
|
+
/** Одна операция delta: текстовая вставка + опциональные атрибуты. */
|
|
1144
|
+
interface IQuillDeltaOp {
|
|
1145
|
+
insert: string;
|
|
1146
|
+
attributes?: IQuillDeltaAttributes;
|
|
1147
|
+
}
|
|
1148
|
+
/** Тело сообщения в rich-формате Quill delta. */
|
|
1149
|
+
interface IQuillDelta {
|
|
1150
|
+
ops: IQuillDeltaOp[];
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
/**
|
|
1154
|
+
* Приводит сырой вывод Quill 2 к контракту `IQuillDelta`. Quill 2 хранит в
|
|
1155
|
+
* `code-block` язык подсветки (по умолчанию строку `"plain"`), тогда как контракт
|
|
1156
|
+
* и бэк ждут флаг `true`; без приведения бэк отвергает delta как
|
|
1157
|
+
* `invalid_message_delta`. Остальные атрибуты уже в нужной форме — их не трогаем.
|
|
1158
|
+
*/
|
|
1159
|
+
declare function coerceQuillDeltaOutput(delta: IQuillDelta): IQuillDelta;
|
|
1160
|
+
/**
|
|
1161
|
+
* Defensive-нормализация тела rich-сообщения: пропускает только строго валидную
|
|
1162
|
+
* форму (top-level `{ops}`, `ops` непустой массив, `insert` — строка, `attributes`
|
|
1163
|
+
* непустой и из whitelist), иначе `null` — сообщение отрендерится plain-фолбэком
|
|
1164
|
+
* по `message`. Бэк гарантирует форму, но рендер не доверяет входу вслепую.
|
|
1165
|
+
*/
|
|
1166
|
+
declare function normalizeQuillDelta(raw: unknown): IQuillDelta | null;
|
|
1167
|
+
|
|
1168
|
+
/** Единый дебаунс полей поиска (мс) — одинаковый по всему киту. */
|
|
1169
|
+
declare const SEARCH_DEBOUNCE_MS: number;
|
|
1170
|
+
/**
|
|
1171
|
+
* Дебаунс поля поиска с мгновенным сбросом. Непустой ввод откладывается на
|
|
1172
|
+
* SEARCH_DEBOUNCE_MS (не бить фильтром/запросом на каждый символ), пустое
|
|
1173
|
+
* значение — очистка крестиком или удаление до конца — применяется сразу,
|
|
1174
|
+
* без задержки. Иначе сброс поиска ощущается лагающим.
|
|
1175
|
+
*/
|
|
1176
|
+
declare function searchDebounce(): MonoTypeOperatorFunction<string>;
|
|
1177
|
+
|
|
1178
|
+
/** Признак материального набора в разметке: атрибут или класс, которые ставит приложение. */
|
|
1179
|
+
declare const RT_MATERIAL_PRESET_SELECTOR: string;
|
|
1180
|
+
/** Класс набора, который несёт узел вне поддерева, где набор объявлен. */
|
|
1181
|
+
declare const RT_MATERIAL_PRESET_CLASS: string;
|
|
1182
|
+
/**
|
|
1183
|
+
* Классы набора для панели наложения, открытой от `origin`. Панель лежит в конце страницы, вне
|
|
1184
|
+
* контейнера с признаком набора, и назначения набора до неё не доходят: она берёт класс набора
|
|
1185
|
+
* сама, если признак стоит над узлом, от которого она открыта. Кит читает признак приложения, а не
|
|
1186
|
+
* ставит свой.
|
|
1187
|
+
*/
|
|
1188
|
+
declare function materialPresetClassesOf(origin: Element): string[];
|
|
1189
|
+
/**
|
|
1190
|
+
* Классы набора для панели, которую открывает сервис без узла-источника: диалог, боковая панель.
|
|
1191
|
+
* Источником служит узел в фокусе в момент открытия — нажатая кнопка. Панель, открытая не по
|
|
1192
|
+
* нажатию, набор от фокуса не берёт; для неё остаётся `panelClass` приложения.
|
|
1193
|
+
*/
|
|
1194
|
+
declare function materialPresetClassesOfFocus(document: Document): string[];
|
|
1195
|
+
/** Атрибут местного куска темы — его ставит `rtTheme` и читают правила куска в стилях кита. */
|
|
1196
|
+
declare const RT_THEME_SCOPE_ATTRIBUTE: string;
|
|
1197
|
+
/**
|
|
1198
|
+
* Тема местного куска, от которого открыта панель, — значение ближайшего `data-theme` над `origin`.
|
|
1199
|
+
* Панель лежит в конце страницы, вне куска, и без этого рисуется темой страницы: список тёмной
|
|
1200
|
+
* карточки на светлой странице выходил светлым. Тема корня страницы не возвращается: её панель
|
|
1201
|
+
* наследует и так, а признак на панели повторил бы весь набор назначений ещё раз.
|
|
1202
|
+
*/
|
|
1203
|
+
declare function themeScopeOf(origin: Element): string | null;
|
|
1204
|
+
/**
|
|
1205
|
+
* Переносит тему куска `origin` на коробку панели или снимает её, если кусок ушёл. Зовётся на
|
|
1206
|
+
* каждом открытии: коробка переживает закрытие, а кусок вокруг источника мог смениться.
|
|
1207
|
+
*/
|
|
1208
|
+
declare function carryThemeScope(pane: HTMLElement, origin: Element): void;
|
|
1209
|
+
/**
|
|
1210
|
+
* Тема местного куска для панели, которую открывает сервис без узла-источника: диалог, боковая
|
|
1211
|
+
* панель. Источником служит узел в фокусе в момент открытия — нажатая кнопка, как у
|
|
1212
|
+
* `materialPresetClassesOfFocus`. Без фокуса, как и под темой корня, возвращает `null`.
|
|
1213
|
+
*/
|
|
1214
|
+
declare function themeScopeOfFocus(document: Document): string | null;
|
|
1215
|
+
/**
|
|
1216
|
+
* Переносит на коробку панели тему куска, где стоит фокус. Зовётся до того, как панель заберёт
|
|
1217
|
+
* фокус себе: после этого `activeElement` уже внутри панели, в конце страницы, вне куска.
|
|
1218
|
+
*/
|
|
1219
|
+
declare function carryThemeScopeOfFocus(pane: HTMLElement, document: Document): void;
|
|
1220
|
+
|
|
1221
|
+
export { BreakpointsService, ERtDataTableCellColor, ERtDataTableColumnType, ERtDataTableFilterType, ERtMarkdownBlock, ERtMarkdownInline, ERtStorageKeys, IButton, INotification, IRtDataTable, IRtIcon, IRtInput, IRtKitConfig, ITheme, MessageBus, NotificationBus, RT_CONSUMER_HANDLE_NAMES, RT_DATA_TABLE_PRESET_FROM_HOST, RT_DESIGN_TOKEN_NAMES, RT_KIT_CONFIG, RT_KIT_LABELS, RT_KIT_LABELS_EN, RT_KIT_LOCALE, RT_KIT_TRANSLATOR, RT_MATERIAL_PRESET_CLASS, RT_MATERIAL_PRESET_SELECTOR, RT_PRESET_MATERIAL_CLASS, RT_RADIUS_DEFAULT, RT_RADIUS_STEPS, RT_THEME_SCOPE_ATTRIBUTE, RtDayStampPipe, RtInfiniteScrollDirective, RtKitLabelPipe, RtThemeScopeDirective, SEARCH_DEBOUNCE_MS, ThemeService, breakNode, carryThemeScope, carryThemeScopeOfFocus, coerceQuillDeltaOutput, fileNameFromUrl, formatFileSize, iconsName, materialPresetClassesOf, materialPresetClassesOfFocus, normalizeQuillDelta, parseInline, parseMarkdown, provideRtKit, provideRtKitLabels, rtKitDefault, rtKitLabel, searchDebounce, themeScopeOf, themeScopeOfFocus };
|
|
1222
|
+
export type { IMessageBusEvent, IQuillDelta, IQuillDeltaAttributes, IQuillDeltaOp, IRtMarkdownBlockNode, IRtMarkdownInlineNode, IRtMarkdownListItem, IRtPicture, IRtPictureSource, TRtConsumerHandleName, TRtDataTableFilters, TRtDesignTokenName, TRtKitLabelKey, TRtKitLabelMap, TRtKitLabelParams, TRtKitTranslator, TRtRadius };
|