@koobiq/components 20.0.0 → 20.2.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/accordion/_accordion-theme.scss +1 -1
- package/accordion/accordion-tokens.scss +1 -0
- package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +4 -18
- package/accordion/{accordion.component.scss → accordion.scss} +12 -5
- package/accordion/index.d.ts +215 -119
- package/actions-panel/index.d.ts +1 -0
- package/alert/_alert-theme.scss +14 -4
- package/alert/alert-tokens.scss +4 -4
- package/alert/alert.component.scss +24 -13
- package/alert/index.d.ts +63 -29
- package/app-switcher/app-switcher-dropdown-app.scss +2 -0
- package/autocomplete/autocomplete.scss +2 -1
- package/autocomplete/index.d.ts +35 -29
- package/badge/index.d.ts +2 -3
- package/breadcrumbs/breadcrumbs.scss +4 -0
- package/breadcrumbs/index.d.ts +2 -1
- package/button/button-group.scss +42 -2
- package/button-toggle/button-toggle.scss +23 -0
- package/button-toggle/index.d.ts +3 -1
- package/checkbox/checkbox.scss +5 -4
- package/clamped-text/index.d.ts +4 -2
- package/core/index.d.ts +515 -21
- package/core/styles/_core.scss +2 -0
- package/core/styles/common/_animation.scss +35 -24
- package/core/styles/common/_connected-overlay.scss +36 -0
- package/core/styles/common/_select.scss +7 -2
- package/core/styles/theming/_components-theming.scss +1 -1
- package/core/styles/theming/_scrollbar-theme.scss +4 -0
- package/datepicker/_datepicker-theme.scss +1 -1
- package/datepicker/datepicker-toggle.scss +3 -3
- package/dl/index.d.ts +1 -0
- package/dropdown/dropdown-item.scss +16 -0
- package/dropdown/dropdown-tokens.scss +2 -1
- package/dropdown/dropdown.scss +11 -2
- package/dropdown/index.d.ts +73 -6
- package/fesm2022/koobiq-components-accordion.mjs +406 -303
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +15 -6
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +88 -48
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +7 -7
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +37 -23
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +5 -4
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +6 -4
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +9 -6
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +4 -4
- package/fesm2022/koobiq-components-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +2 -2
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +9 -0
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +5 -1
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +544 -113
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +13 -10
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +3 -2
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +105 -31
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +33 -22
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +1169 -782
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +66 -0
- package/fesm2022/koobiq-components-flag.mjs.map +1 -0
- package/fesm2022/koobiq-components-form-field.mjs +6 -6
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +16 -7
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +30 -7
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +39 -20
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +2 -2
- package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +9 -5
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +123 -27
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +193 -19
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +12 -4
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +9 -4
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +2 -2
- package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-spinner.mjs +2 -2
- package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +3 -7
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +43 -8
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +72 -59
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +4 -0
- package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +3 -3
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-skeleton.mjs +2 -2
- package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
- package/fesm2022/koobiq-components-split-button.mjs +5 -12
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +6 -2
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-table.mjs +8 -6
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +42 -18
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +8 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +7 -14
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +4 -4
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +3 -4
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +9 -5
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +132 -14
- package/fesm2022/koobiq-components-title.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +1 -1
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +2 -2
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +168 -8
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +79 -38
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +67 -41
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +16 -3
- package/fesm2022/koobiq-components-username.mjs.map +1 -1
- package/file-upload/file-upload-tokens.scss +1 -0
- package/file-upload/index.d.ts +10 -7
- package/filter-bar/_filter-bar-theme.scss +82 -0
- package/filter-bar/filter-bar-tokens.scss +9 -0
- package/filter-bar/filter-bar.scss +10 -4
- package/filter-bar/filter-refresher.scss +1 -1
- package/filter-bar/filters.scss +25 -20
- package/filter-bar/index.d.ts +764 -336
- package/filter-bar/pipes/base-pipe.scss +12 -44
- package/filter-bar/pipes/pipe-date.scss +20 -14
- package/filter-bar/pipes/pipe-input.scss +10 -0
- package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
- package/filter-bar/pipes/pipe-multiselect.scss +5 -3
- package/filter-bar/pipes/pipe-readonly.scss +4 -13
- package/filter-bar/pipes/pipe-select.scss +3 -1
- package/filter-bar/pipes/pipe-tree-select.scss +3 -1
- package/flag/flag.scss +53 -0
- package/flag/index.d.ts +44 -0
- package/icon/icon-button.scss +3 -1
- package/icon/icon-item-tokens.scss +1 -1
- package/icon/index.d.ts +15 -2
- package/inline-edit/index.d.ts +5 -0
- package/inline-edit/inline-edit.scss +7 -7
- package/link/link-tokens.scss +2 -2
- package/list/index.d.ts +11 -2
- package/loader-overlay/loader-overlay-tokens.scss +1 -1
- package/modal/_modal-animation.scss +6 -6
- package/modal/_modal-theme.scss +5 -0
- package/modal/index.d.ts +3 -1
- package/modal/modal.scss +15 -0
- package/navbar/_navbar-item_vertical.scss +7 -5
- package/navbar/index.d.ts +39 -4
- package/navbar/navbar-brand.scss +17 -7
- package/navbar/navbar-item.scss +9 -0
- package/notification-center/_notification-center-theme.scss +2 -1
- package/notification-center/index.d.ts +89 -3
- package/notification-center/notification-center.scss +42 -4
- package/notification-center/notification-item.scss +3 -2
- package/overflow-items/index.d.ts +1 -0
- package/package.json +7 -3
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/progress-bar/progress-bar.scss +4 -0
- package/progress-spinner/progress-spinner.scss +5 -1
- package/radio/index.d.ts +1 -5
- package/radio/radio.scss +18 -4
- package/schematics/collection.json +15 -0
- package/schematics/migrations/alert-signals/README.md +64 -0
- package/schematics/migrations/alert-signals/data.js +70 -0
- package/schematics/migrations/alert-signals/index.js +350 -0
- package/schematics/migrations/alert-signals/schema.json +20 -0
- package/schematics/migrations/autocomplete-panel-width-auto/README.md +68 -0
- package/schematics/migrations/autocomplete-panel-width-auto/index.js +70 -0
- package/schematics/migrations/autocomplete-panel-width-auto/schema.json +15 -0
- package/schematics/migrations/filter-bar-signals/README.md +66 -0
- package/schematics/migrations/filter-bar-signals/data.js +72 -0
- package/schematics/migrations/filter-bar-signals/index.js +316 -0
- package/schematics/migrations/filter-bar-signals/schema.json +20 -0
- package/schematics/migrations.json +15 -0
- package/schematics/ng-add/index.js +1 -1
- package/schematics/utils/angular-parsing.js +11 -2
- package/search-expandable/index.d.ts +3 -0
- package/select/index.d.ts +59 -24
- package/sidebar/index.d.ts +1 -0
- package/skeleton/skeleton.scss +4 -0
- package/split-button/_split-button-theme.scss +2 -2
- package/splitter/_splitter-theme.scss +2 -2
- package/splitter/index.d.ts +1 -0
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +3 -2
- package/tabs/_tabs-common.scss +60 -31
- package/tabs/_tabs-theme.scss +12 -0
- package/tabs/index.d.ts +4 -2
- package/tabs/tab-header.scss +15 -0
- package/tabs/tab-nav-bar.scss +4 -0
- package/tabs/tabs-tokens.scss +2 -1
- package/textarea/index.d.ts +0 -1
- package/time-range/time-range.scss +0 -8
- package/timepicker/timepicker.scss +2 -2
- package/timezone/index.d.ts +2 -3
- package/title/index.d.ts +92 -2
- package/tooltip/index.d.ts +124 -7
- package/tree/_tree-theme.scss +2 -7
- package/tree/index.d.ts +19 -4
- package/tree/toggle.scss +5 -0
- package/tree/tree-option.scss +0 -4
- package/tree-select/_tree-select-theme.scss +1 -1
- package/tree-select/index.d.ts +53 -22
- package/username/index.d.ts +20 -2
package/modal/index.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ interface ModalOptions<C = any, R = any> {
|
|
|
32
32
|
kbqClassName?: string;
|
|
33
33
|
kbqStyle?: object;
|
|
34
34
|
kbqTitle?: string | TemplateRef<{}>;
|
|
35
|
+
kbqCaption?: string | TemplateRef<{}>;
|
|
35
36
|
kbqContent?: string | TemplateRef<{}> | Type<C>;
|
|
36
37
|
kbqComponent?: Type<C>;
|
|
37
38
|
kbqClosable?: boolean;
|
|
@@ -105,6 +106,7 @@ declare class KbqModalComponent<T = any, R = any> extends KbqModalRef<T, R> impl
|
|
|
105
106
|
kbqClassName: string;
|
|
106
107
|
kbqStyle: object;
|
|
107
108
|
kbqTitle: string | TemplateRef<{}>;
|
|
109
|
+
kbqCaption: string | TemplateRef<{}>;
|
|
108
110
|
kbqCloseByESC: boolean;
|
|
109
111
|
get kbqClosable(): boolean;
|
|
110
112
|
set kbqClosable(value: boolean);
|
|
@@ -204,7 +206,7 @@ declare class KbqModalComponent<T = any, R = any> extends KbqModalRef<T, R> impl
|
|
|
204
206
|
*/
|
|
205
207
|
private changeBodyOverflow;
|
|
206
208
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqModalComponent<any, any>, never>;
|
|
207
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqModalComponent<any, any>, "kbq-modal", never, { "kbqModalType": { "alias": "kbqModalType"; "required": false; }; "kbqComponent": { "alias": "kbqComponent"; "required": false; }; "kbqContent": { "alias": "kbqContent"; "required": false; }; "kbqFooter": { "alias": "kbqFooter"; "required": false; }; "kbqVisible": { "alias": "kbqVisible"; "required": false; }; "kbqWidth": { "alias": "kbqWidth"; "required": false; }; "kbqSize": { "alias": "kbqSize"; "required": false; }; "kbqWrapClassName": { "alias": "kbqWrapClassName"; "required": false; }; "kbqClassName": { "alias": "kbqClassName"; "required": false; }; "kbqStyle": { "alias": "kbqStyle"; "required": false; }; "kbqTitle": { "alias": "kbqTitle"; "required": false; }; "kbqCloseByESC": { "alias": "kbqCloseByESC"; "required": false; }; "kbqClosable": { "alias": "kbqClosable"; "required": false; }; "kbqMask": { "alias": "kbqMask"; "required": false; }; "kbqMaskClosable": { "alias": "kbqMaskClosable"; "required": false; }; "kbqMaskStyle": { "alias": "kbqMaskStyle"; "required": false; }; "kbqBodyStyle": { "alias": "kbqBodyStyle"; "required": false; }; "kbqOkText": { "alias": "kbqOkText"; "required": false; }; "kbqOkType": { "alias": "kbqOkType"; "required": false; }; "kbqRestoreFocus": { "alias": "kbqRestoreFocus"; "required": false; }; "kbqOkLoading": { "alias": "kbqOkLoading"; "required": false; }; "kbqOnOk": { "alias": "kbqOnOk"; "required": false; }; "kbqCancelText": { "alias": "kbqCancelText"; "required": false; }; "kbqCancelLoading": { "alias": "kbqCancelLoading"; "required": false; }; "kbqOnCancel": { "alias": "kbqOnCancel"; "required": false; }; "kbqGetContainer": { "alias": "kbqGetContainer"; "required": false; }; }, { "kbqVisibleChange": "kbqVisibleChange"; "kbqAfterOpen": "kbqAfterOpen"; "kbqAfterClose": "kbqAfterClose"; "kbqBeforeClose": "kbqBeforeClose"; "kbqOnOk": "kbqOnOk"; "kbqOnCancel": "kbqOnCancel"; }, never, ["*"], true, never>;
|
|
209
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqModalComponent<any, any>, "kbq-modal", never, { "kbqModalType": { "alias": "kbqModalType"; "required": false; }; "kbqComponent": { "alias": "kbqComponent"; "required": false; }; "kbqContent": { "alias": "kbqContent"; "required": false; }; "kbqFooter": { "alias": "kbqFooter"; "required": false; }; "kbqVisible": { "alias": "kbqVisible"; "required": false; }; "kbqWidth": { "alias": "kbqWidth"; "required": false; }; "kbqSize": { "alias": "kbqSize"; "required": false; }; "kbqWrapClassName": { "alias": "kbqWrapClassName"; "required": false; }; "kbqClassName": { "alias": "kbqClassName"; "required": false; }; "kbqStyle": { "alias": "kbqStyle"; "required": false; }; "kbqTitle": { "alias": "kbqTitle"; "required": false; }; "kbqCaption": { "alias": "kbqCaption"; "required": false; }; "kbqCloseByESC": { "alias": "kbqCloseByESC"; "required": false; }; "kbqClosable": { "alias": "kbqClosable"; "required": false; }; "kbqMask": { "alias": "kbqMask"; "required": false; }; "kbqMaskClosable": { "alias": "kbqMaskClosable"; "required": false; }; "kbqMaskStyle": { "alias": "kbqMaskStyle"; "required": false; }; "kbqBodyStyle": { "alias": "kbqBodyStyle"; "required": false; }; "kbqOkText": { "alias": "kbqOkText"; "required": false; }; "kbqOkType": { "alias": "kbqOkType"; "required": false; }; "kbqRestoreFocus": { "alias": "kbqRestoreFocus"; "required": false; }; "kbqOkLoading": { "alias": "kbqOkLoading"; "required": false; }; "kbqOnOk": { "alias": "kbqOnOk"; "required": false; }; "kbqCancelText": { "alias": "kbqCancelText"; "required": false; }; "kbqCancelLoading": { "alias": "kbqCancelLoading"; "required": false; }; "kbqOnCancel": { "alias": "kbqOnCancel"; "required": false; }; "kbqGetContainer": { "alias": "kbqGetContainer"; "required": false; }; }, { "kbqVisibleChange": "kbqVisibleChange"; "kbqAfterOpen": "kbqAfterOpen"; "kbqAfterClose": "kbqAfterClose"; "kbqBeforeClose": "kbqBeforeClose"; "kbqOnOk": "kbqOnOk"; "kbqOnCancel": "kbqOnCancel"; }, never, ["*"], true, never>;
|
|
208
210
|
}
|
|
209
211
|
|
|
210
212
|
/**
|
package/modal/modal.scss
CHANGED
|
@@ -102,6 +102,21 @@
|
|
|
102
102
|
padding-bottom: var(--kbq-size-3xs);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
.kbq-modal-header-content {
|
|
106
|
+
display: flex;
|
|
107
|
+
flex: 1;
|
|
108
|
+
flex-direction: column;
|
|
109
|
+
min-width: 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.kbq-modal-caption {
|
|
113
|
+
display: -webkit-box;
|
|
114
|
+
-webkit-box-orient: vertical;
|
|
115
|
+
-webkit-line-clamp: 2;
|
|
116
|
+
overflow: hidden;
|
|
117
|
+
text-overflow: ellipsis;
|
|
118
|
+
}
|
|
119
|
+
|
|
105
120
|
.kbq-modal-body {
|
|
106
121
|
display: block;
|
|
107
122
|
overflow-y: auto;
|
|
@@ -55,17 +55,19 @@
|
|
|
55
55
|
&.kbq-navbar-bento .kbq-navbar-item__title {
|
|
56
56
|
margin-left: -8px;
|
|
57
57
|
opacity: 0;
|
|
58
|
+
|
|
59
|
+
transition:
|
|
60
|
+
opacity 150ms ease-out,
|
|
61
|
+
margin-left 150ms ease-out;
|
|
58
62
|
}
|
|
59
63
|
|
|
60
64
|
&.kbq-navbar-bento:hover,
|
|
61
|
-
&.kbq-navbar-bento.cdk-keyboard-focused
|
|
65
|
+
&.kbq-navbar-bento.cdk-keyboard-focused,
|
|
66
|
+
&.kbq-navbar-bento.kbq-active,
|
|
67
|
+
&.kbq-navbar-bento.kbq-pressed {
|
|
62
68
|
& .kbq-navbar-item__title {
|
|
63
69
|
margin-left: 0;
|
|
64
70
|
opacity: 1;
|
|
65
|
-
|
|
66
|
-
transition:
|
|
67
|
-
opacity 150ms ease-out,
|
|
68
|
-
margin-left 150ms ease-out;
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
}
|
package/navbar/index.d.ts
CHANGED
|
@@ -31,11 +31,19 @@ declare class KbqNavbarTitle implements AfterViewInit {
|
|
|
31
31
|
private readonly window;
|
|
32
32
|
readonly hovered: Subject<boolean>;
|
|
33
33
|
outerElementWidth: number;
|
|
34
|
-
isTextOverflown: boolean;
|
|
35
34
|
get text(): string;
|
|
35
|
+
/** Whether the text is clipped horizontally (e.g. by `text-overflow: ellipsis`). */
|
|
36
36
|
get isOverflown(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Whether the text is clipped vertically (e.g. by `-webkit-line-clamp`).
|
|
39
|
+
*
|
|
40
|
+
* Kept separate from `isOverflown` on purpose: wrapped text never exceeds its width, so only this
|
|
41
|
+
* check catches a clamped title. `isOverflown` is also read by `KbqNavbarItem`, whose titles are
|
|
42
|
+
* always `nowrap` — folding the two together would let sub-pixel line-height rounding enable
|
|
43
|
+
* tooltips on every navbar item.
|
|
44
|
+
*/
|
|
45
|
+
get isClamped(): boolean;
|
|
37
46
|
getOuterElementWidth(): number;
|
|
38
|
-
checkTextOverflown(): void;
|
|
39
47
|
ngAfterViewInit(): void;
|
|
40
48
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqNavbarTitle, never>;
|
|
41
49
|
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqNavbarTitle, "kbq-navbar-title, [kbq-navbar-title]", never, {}, {}, never, never, true, never>;
|
|
@@ -143,10 +151,26 @@ declare class KbqNavbarBrand extends KbqTooltipTrigger implements AfterContentIn
|
|
|
143
151
|
protected readonly rectangleElement: KbqNavbarRectangleElement;
|
|
144
152
|
/** @docs-private */
|
|
145
153
|
protected readonly navbarFocusableItem: KbqNavbarFocusableItem;
|
|
154
|
+
private readonly isBrowser;
|
|
155
|
+
private readonly resizeObserver;
|
|
156
|
+
private readonly contentObserver;
|
|
157
|
+
private readonly document;
|
|
158
|
+
private readonly injector;
|
|
159
|
+
private readonly debounceInterval;
|
|
146
160
|
/** @docs-private */
|
|
147
161
|
readonly title: i0.Signal<KbqNavbarTitle | undefined>;
|
|
148
|
-
/**
|
|
149
|
-
readonly
|
|
162
|
+
/** Whether the title has been measured as not fitting into a single line. */
|
|
163
|
+
private readonly autoLongTitle;
|
|
164
|
+
/**
|
|
165
|
+
* Alternative display of the brand name in two lines.
|
|
166
|
+
*
|
|
167
|
+
* @deprecated The mode is now detected automatically when the title does not fit into a single line.
|
|
168
|
+
* Leave unset for auto-detection; `true` and `false` force the mode on and off respectively.
|
|
169
|
+
* Will be removed in the next major release.
|
|
170
|
+
*/
|
|
171
|
+
readonly longTitle: i0.InputSignal<boolean | undefined>;
|
|
172
|
+
/** @docs-private */
|
|
173
|
+
protected readonly longTitleEnabled: i0.Signal<boolean>;
|
|
150
174
|
/** text that will be displayed in the tooltip. By default, the text is taken from kbq-navbar-title. */
|
|
151
175
|
get collapsedText(): string;
|
|
152
176
|
set collapsedText(value: string);
|
|
@@ -168,6 +192,16 @@ declare class KbqNavbarBrand extends KbqTooltipTrigger implements AfterContentIn
|
|
|
168
192
|
constructor();
|
|
169
193
|
ngAfterContentInit(): void;
|
|
170
194
|
private updateTooltip;
|
|
195
|
+
private observeLongTitle;
|
|
196
|
+
private updateAutoLongTitle;
|
|
197
|
+
/**
|
|
198
|
+
* Measures whether the title fits into a single line in the *default* presentation.
|
|
199
|
+
*
|
|
200
|
+
* Removing and restoring the class within a single task is safe: the browser does not paint mid-task, and
|
|
201
|
+
* Angular's host binding only writes to the DOM when its value changes, which it does not here. Both rely
|
|
202
|
+
* on there being no CSS transition on the title - add one and this starts to flicker.
|
|
203
|
+
*/
|
|
204
|
+
private measureNeedsLongTitle;
|
|
171
205
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqNavbarBrand, never>;
|
|
172
206
|
static ɵcmp: i0.ɵɵComponentDeclaration<KbqNavbarBrand, "kbq-navbar-brand, [kbq-navbar-brand]", ["kbqNavbarBrand"], { "longTitle": { "alias": "longTitle"; "required": false; "isSignal": true; }; "collapsedText": { "alias": "collapsedText"; "required": false; }; }, {}, ["title"], ["*"], true, never>;
|
|
173
207
|
}
|
|
@@ -210,6 +244,7 @@ declare class KbqNavbar extends KbqFocusableComponent implements AfterViewInit,
|
|
|
210
244
|
protected readonly elementRef: ElementRef<HTMLElement>;
|
|
211
245
|
protected readonly changeDetectorRef: ChangeDetectorRef;
|
|
212
246
|
protected readonly focusMonitor: FocusMonitor;
|
|
247
|
+
private readonly platform;
|
|
213
248
|
readonly rectangleElements: i0.Signal<readonly any[]>;
|
|
214
249
|
readonly navbarItems: i0.Signal<readonly any[]>;
|
|
215
250
|
readonly resizeStream: Subject<Event>;
|
package/navbar/navbar-brand.scss
CHANGED
|
@@ -46,6 +46,8 @@ a.kbq-navbar-brand {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
& .kbq-navbar-title {
|
|
49
|
+
max-width: 154px;
|
|
50
|
+
|
|
49
51
|
padding-right: var(--kbq-size-m);
|
|
50
52
|
}
|
|
51
53
|
}
|
|
@@ -85,14 +87,19 @@ a.kbq-navbar-brand {
|
|
|
85
87
|
display: none !important;
|
|
86
88
|
}
|
|
87
89
|
}
|
|
90
|
+
}
|
|
88
91
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
// Must stay below the per-orientation rules: `.kbq-vertical` sets `display: block` on the title at the very
|
|
93
|
+
// same specificity, so moving this up lets that win and silently kills the clamp - `-webkit-line-clamp` does
|
|
94
|
+
// nothing without `-webkit-box`, and the title then wraps to an unbounded number of lines with no ellipsis.
|
|
95
|
+
// `.kbq-collapsed` still wins over it via `!important`.
|
|
96
|
+
.kbq-navbar-brand.kbq-navbar-brand_long-title .kbq-navbar-title {
|
|
97
|
+
display: -webkit-box;
|
|
98
|
+
|
|
99
|
+
-webkit-box-orient: vertical;
|
|
100
|
+
-webkit-line-clamp: 2;
|
|
101
|
+
line-clamp: 2;
|
|
102
|
+
white-space: normal;
|
|
96
103
|
}
|
|
97
104
|
|
|
98
105
|
@mixin kbq-navbar-brand-theme() {
|
|
@@ -145,8 +152,11 @@ a.kbq-navbar-brand {
|
|
|
145
152
|
@include kbq-typography-level-to-styles-css-variables(typography, navbar-title);
|
|
146
153
|
}
|
|
147
154
|
|
|
155
|
+
// Both orientations: two lines of the 18px/28px default would grow the navbar (48px -> 72px
|
|
156
|
+
// horizontally), which is what the compact type exists to prevent.
|
|
148
157
|
&.kbq-navbar-brand_long-title .kbq-navbar-title {
|
|
149
158
|
@include kbq-typography-level-to-styles-css-variables(typography, text-normal-strong);
|
|
159
|
+
line-height: 16px;
|
|
150
160
|
}
|
|
151
161
|
}
|
|
152
162
|
}
|
package/navbar/navbar-item.scss
CHANGED
|
@@ -20,6 +20,15 @@
|
|
|
20
20
|
min-height: var(--kbq-size-l);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
// Filled fade-contrast only: its background is a semi-transparent tint, so the
|
|
24
|
+
// navbar icon shows through. Composite the tint over an opaque bg-tertiary substrate.
|
|
25
|
+
// The outline variant is intentionally left untouched — it stays a clean transparent outline.
|
|
26
|
+
& .kbq-badge-filled.kbq-badge_fade-contrast {
|
|
27
|
+
background:
|
|
28
|
+
linear-gradient(var(--kbq-background-contrast-fade), var(--kbq-background-contrast-fade)),
|
|
29
|
+
var(--kbq-background-bg-tertiary);
|
|
30
|
+
}
|
|
31
|
+
|
|
23
32
|
& .kbq-button-icon {
|
|
24
33
|
position: absolute;
|
|
25
34
|
padding-left: var(--kbq-size-xs);
|
|
@@ -12,6 +12,8 @@ import { AnimationTriggerMetadata } from '@angular/animations';
|
|
|
12
12
|
|
|
13
13
|
interface KbqNotificationItem extends Omit<KbqToastData, 'closeButton'> {
|
|
14
14
|
id?: string;
|
|
15
|
+
/** Numeric id of the shown toast, set by `push()` and consumed by `hideToast()`. */
|
|
16
|
+
toastId?: number;
|
|
15
17
|
title?: string | TemplateRef<unknown>;
|
|
16
18
|
style?: string | KbqToastStyle;
|
|
17
19
|
icon?: boolean | TemplateRef<unknown>;
|
|
@@ -27,6 +29,13 @@ type KbqNotificationsGroup = {
|
|
|
27
29
|
title: string;
|
|
28
30
|
items: KbqNotificationItem[];
|
|
29
31
|
};
|
|
32
|
+
/** Payload emitted by `KbqNotificationCenterService.onDelete`. */
|
|
33
|
+
type KbqNotificationDeleteEvent = {
|
|
34
|
+
/** What was removed: a single item, a whole date group, or all notifications. */
|
|
35
|
+
type: 'item' | 'group' | 'all';
|
|
36
|
+
/** The notification items that were removed. */
|
|
37
|
+
items: KbqNotificationItem[];
|
|
38
|
+
};
|
|
30
39
|
declare class KbqNotificationCenterService {
|
|
31
40
|
/** @docs-private */
|
|
32
41
|
private readonly adapter;
|
|
@@ -40,12 +49,36 @@ declare class KbqNotificationCenterService {
|
|
|
40
49
|
readonly loadingMode: BehaviorSubject<boolean>;
|
|
41
50
|
/** @docs-private */
|
|
42
51
|
readonly errorMode: BehaviorSubject<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Whether the bottom "load more" spinner is shown while the next page is being loaded.
|
|
54
|
+
* Note: this is the infinite-scroll indicator and is distinct from `loadingMode`,
|
|
55
|
+
* which renders the full-screen loader instead of the list.
|
|
56
|
+
*/
|
|
57
|
+
readonly loadingMore: BehaviorSubject<boolean>;
|
|
58
|
+
/**
|
|
59
|
+
* Whether the bottom "load more" error row (with a retry button) is shown.
|
|
60
|
+
* Distinct from `errorMode`, which replaces the whole list with the full-screen error state.
|
|
61
|
+
*/
|
|
62
|
+
readonly loadMoreErrorMode: BehaviorSubject<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Whether there are more notifications to load. While `true`, scrolling to the bottom
|
|
65
|
+
* emits `onNextPage`; set it to `false` to stop further infinite-scroll requests.
|
|
66
|
+
*/
|
|
67
|
+
readonly hasMore: BehaviorSubject<boolean>;
|
|
43
68
|
/** @docs-private */
|
|
44
69
|
readonly onRead: BehaviorSubject<KbqNotificationItem | null>;
|
|
45
70
|
/** Triggers an event when the user presses the reload button. */
|
|
46
71
|
readonly onReload: EventEmitter<void>;
|
|
72
|
+
/** Triggers an event when the list is scrolled to the bottom and the next page should be loaded. */
|
|
73
|
+
readonly onNextPage: EventEmitter<void>;
|
|
74
|
+
/** Triggers an event when an item, a group, or all notifications are removed. */
|
|
75
|
+
readonly onDelete: EventEmitter<KbqNotificationDeleteEvent>;
|
|
47
76
|
private originalItems;
|
|
48
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Grouped notifications, always ordered from newest to oldest: day groups are sorted by date
|
|
79
|
+
* descending, and notifications within each day are sorted by date descending.
|
|
80
|
+
* @docs-private
|
|
81
|
+
*/
|
|
49
82
|
readonly groupedItems: Observable<KbqNotificationsGroup[]>;
|
|
50
83
|
/** Emits an event whenever the changes. */
|
|
51
84
|
readonly changes: Observable<boolean | KbqNotificationItem | KbqNotificationItem[] | null>;
|
|
@@ -63,8 +96,16 @@ declare class KbqNotificationCenterService {
|
|
|
63
96
|
setLoadingMode(value: boolean): void;
|
|
64
97
|
/** Set error mode */
|
|
65
98
|
setErrorMode(value: boolean): void;
|
|
99
|
+
/** Set the bottom "load more" spinner visibility. */
|
|
100
|
+
setLoadingMore(value: boolean): void;
|
|
101
|
+
/** Set the bottom "load more" error state visibility. */
|
|
102
|
+
setLoadMoreErrorMode(value: boolean): void;
|
|
103
|
+
/** Set whether there are more notifications to load via infinite scroll. */
|
|
104
|
+
setHasMore(value: boolean): void;
|
|
66
105
|
/** Push new notification item in center */
|
|
67
106
|
push(item: KbqNotificationItem): void;
|
|
107
|
+
/** Hides the toast that corresponds to the given notification item. */
|
|
108
|
+
hideToast(item: KbqNotificationItem): void;
|
|
68
109
|
/** Remove notification item */
|
|
69
110
|
remove(removedItem: KbqNotificationItem): void;
|
|
70
111
|
/** Remove group of notification items */
|
|
@@ -72,6 +113,8 @@ declare class KbqNotificationCenterService {
|
|
|
72
113
|
/** Remove all notification items */
|
|
73
114
|
removeAll(): void;
|
|
74
115
|
private makeGroup;
|
|
116
|
+
/** Compares two notifications by date so the newest comes first. */
|
|
117
|
+
private compareByDateDesc;
|
|
75
118
|
private setIds;
|
|
76
119
|
private setReadState;
|
|
77
120
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqNotificationCenterService, never>;
|
|
@@ -87,6 +130,7 @@ declare const KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION: {
|
|
|
87
130
|
noNotifications: string;
|
|
88
131
|
failedToLoadNotifications: string;
|
|
89
132
|
repeat: string;
|
|
133
|
+
loadingMore: string;
|
|
90
134
|
};
|
|
91
135
|
/** Injection Token for providing configuration of notification-center */
|
|
92
136
|
declare const KBQ_NOTIFICATION_CENTER_CONFIGURATION: InjectionToken<unknown>;
|
|
@@ -114,6 +158,11 @@ declare class KbqNotificationCenterComponent extends KbqPopUp implements AfterVi
|
|
|
114
158
|
configuration: any;
|
|
115
159
|
/** @docs-private */
|
|
116
160
|
protected popoverMode: boolean;
|
|
161
|
+
/** Distance in pixels from the bottom of the list at which the next page is requested.
|
|
162
|
+
* @docs-private */
|
|
163
|
+
protected scrolledToBottomOffset: number;
|
|
164
|
+
/** Emits on every scroll of the list container; drives the scroll-to-bottom check. */
|
|
165
|
+
private readonly scroll$;
|
|
117
166
|
/** localized data
|
|
118
167
|
* @docs-private */
|
|
119
168
|
get localeData(): any;
|
|
@@ -124,11 +173,45 @@ declare class KbqNotificationCenterComponent extends KbqPopUp implements AfterVi
|
|
|
124
173
|
/** @docs-private */
|
|
125
174
|
isTrapFocus: boolean;
|
|
126
175
|
readonly switcher: i0.Signal<KbqButton>;
|
|
176
|
+
/** Scrollable list container; used to measure scroll position for infinite scroll. */
|
|
177
|
+
private readonly scrollContainer;
|
|
127
178
|
get popoverHeight(): string;
|
|
128
179
|
set popoverHeight(value: string);
|
|
129
180
|
private _popoverHeight;
|
|
130
181
|
constructor();
|
|
131
182
|
ngAfterViewInit(): void;
|
|
183
|
+
/** Handles the list container scroll: feeds the scroll-to-bottom check that drives infinite scroll.
|
|
184
|
+
* Overflow shadows are handled declaratively by the `kbqOverflowShadow*` directives.
|
|
185
|
+
* @docs-private */
|
|
186
|
+
protected onContainerScroll(): void;
|
|
187
|
+
/** Retries loading the next page from the bottom error row.
|
|
188
|
+
* @docs-private */
|
|
189
|
+
protected retryLoadMore(): void;
|
|
190
|
+
/**
|
|
191
|
+
* Requests the next page (via `service.onNextPage`) once the list is scrolled to within
|
|
192
|
+
* `scrolledToBottomOffset` pixels of the bottom. Two triggers feed it: the user scrolling, and a
|
|
193
|
+
* page finishing loading. The latter keeps paging when a freshly loaded page is too short to
|
|
194
|
+
* overflow the viewport — otherwise no further scroll event would fire and pagination would
|
|
195
|
+
* stall. Suppressed while a load is in flight, errored, or when there is nothing more to load.
|
|
196
|
+
*/
|
|
197
|
+
private subscribeToScrolledToBottom;
|
|
198
|
+
/** Whether the list is scrolled to within `scrolledToBottomOffset` pixels of the bottom.
|
|
199
|
+
* Sub-pixel measurement error is absorbed by `SCROLLED_TO_BOTTOM_TOLERANCE`. */
|
|
200
|
+
private isScrolledToBottom;
|
|
201
|
+
/** Emits `onNextPage` unless a load is already in flight, errored, or there is nothing more to load. */
|
|
202
|
+
private requestNextPage;
|
|
203
|
+
/**
|
|
204
|
+
* Reveals the bottom "load more" spinner / error row when it first appears. Both rows are appended
|
|
205
|
+
* below the last item and can land outside the viewport (the next page is requested while the user
|
|
206
|
+
* is up to `scrolledToBottomOffset` px above the true bottom). Only a genuine false->true transition
|
|
207
|
+
* reveals the row: the BehaviorSubject's replayed current value is ignored (`pairwise` needs two
|
|
208
|
+
* emissions), so the panel always opens scrolled to the top — reopening it while a load-more error
|
|
209
|
+
* is still set never jumps to the bottom.
|
|
210
|
+
*/
|
|
211
|
+
private subscribeToRevealLoadMoreRow;
|
|
212
|
+
/** Scrolls the list container to its bottom so a freshly-appended bottom row becomes visible. */
|
|
213
|
+
private scrollToBottom;
|
|
214
|
+
private focusScrollContainer;
|
|
132
215
|
/** @docs-private */
|
|
133
216
|
updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues): void;
|
|
134
217
|
/** @docs-private */
|
|
@@ -169,6 +252,8 @@ declare class KbqNotificationCenterTrigger extends KbqPopUpTrigger<KbqNotificati
|
|
|
169
252
|
panelClass: string;
|
|
170
253
|
/** Offset of popUp */
|
|
171
254
|
offset: number | null;
|
|
255
|
+
/** Distance in pixels from the bottom of the list at which the next page is requested via `onNextPage`. */
|
|
256
|
+
scrolledToBottomOffset: number;
|
|
172
257
|
/** Use popover or not */
|
|
173
258
|
get popoverMode(): boolean;
|
|
174
259
|
set popoverMode(value: boolean);
|
|
@@ -216,8 +301,9 @@ declare class KbqNotificationCenterTrigger extends KbqPopUpTrigger<KbqNotificati
|
|
|
216
301
|
/** @docs-private */
|
|
217
302
|
closingActions(): rxjs.Observable<void | _angular_cdk_scrolling_module_d.CdkScrollable | MouseEvent>;
|
|
218
303
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqNotificationCenterTrigger, never>;
|
|
219
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqNotificationCenterTrigger, "[kbqNotificationCenterTrigger]", ["kbqNotificationCenterTrigger"], { "placement": { "alias": "kbqNotificationCenterPlacement"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "panelClass": { "alias": "kbqNotificationCenterPanelClass"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "popoverMode": { "alias": "popoverMode"; "required": false; }; "popoverHeight": { "alias": "popoverHeight"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "stickToWindow": { "alias": "stickToWindow"; "required": false; }; "container": { "alias": "container"; "required": false; }; }, { "placementChange": "kbqPlacementChange"; "visibleChange": "kbqVisibleChange"; }, never, never, true, never>;
|
|
304
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<KbqNotificationCenterTrigger, "[kbqNotificationCenterTrigger]", ["kbqNotificationCenterTrigger"], { "placement": { "alias": "kbqNotificationCenterPlacement"; "required": false; }; "backdropClass": { "alias": "backdropClass"; "required": false; }; "panelClass": { "alias": "kbqNotificationCenterPanelClass"; "required": false; }; "offset": { "alias": "offset"; "required": false; }; "scrolledToBottomOffset": { "alias": "scrolledToBottomOffset"; "required": false; }; "popoverMode": { "alias": "popoverMode"; "required": false; }; "popoverHeight": { "alias": "popoverHeight"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "stickToWindow": { "alias": "stickToWindow"; "required": false; }; "container": { "alias": "container"; "required": false; }; }, { "placementChange": "kbqPlacementChange"; "visibleChange": "kbqVisibleChange"; }, never, never, true, never>;
|
|
220
305
|
static ngAcceptInputType_offset: unknown;
|
|
306
|
+
static ngAcceptInputType_scrolledToBottomOffset: unknown;
|
|
221
307
|
static ngAcceptInputType_popoverMode: unknown;
|
|
222
308
|
static ngAcceptInputType_disabled: unknown;
|
|
223
309
|
}
|
|
@@ -234,4 +320,4 @@ declare class KbqNotificationCenterModule {
|
|
|
234
320
|
}
|
|
235
321
|
|
|
236
322
|
export { KBQ_NOTIFICATION_CENTER_CONFIGURATION, KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION, KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY, KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER, KbqNotificationCenterAnimations, KbqNotificationCenterComponent, KbqNotificationCenterModule, KbqNotificationCenterService, KbqNotificationCenterTrigger, kbqNotificationCenterScrollStrategyFactory, maxUnreadItemsLength };
|
|
237
|
-
export type { KbqNotificationItem };
|
|
323
|
+
export type { KbqNotificationDeleteEvent, KbqNotificationItem };
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
justify-content: space-between;
|
|
38
38
|
|
|
39
|
-
padding: var(--kbq-size-
|
|
39
|
+
padding: var(--kbq-size-m) var(--kbq-size-xl) var(--kbq-size-xxs) var(--kbq-size-xxl);
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.kbq-notification-center-title {
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
display: flex;
|
|
68
68
|
flex-direction: row;
|
|
69
69
|
|
|
70
|
-
padding: var(--kbq-size-s) var(--kbq-size-
|
|
70
|
+
padding: var(--kbq-size-s) var(--kbq-size-xl);
|
|
71
71
|
|
|
72
72
|
& .kbq-notification-center-sub-header__button {
|
|
73
73
|
position: absolute;
|
|
@@ -78,7 +78,8 @@
|
|
|
78
78
|
display: none;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
&:hover .kbq-notification-center-sub-header__button
|
|
81
|
+
&:hover .kbq-notification-center-sub-header__button,
|
|
82
|
+
&:focus-within .kbq-notification-center-sub-header__button {
|
|
82
83
|
display: flex;
|
|
83
84
|
}
|
|
84
85
|
}
|
|
@@ -88,13 +89,50 @@
|
|
|
88
89
|
|
|
89
90
|
border-radius: inherit;
|
|
90
91
|
|
|
91
|
-
padding-bottom: var(--kbq-size-
|
|
92
|
+
padding-bottom: var(--kbq-size-xl);
|
|
93
|
+
|
|
94
|
+
// Smoothly reveal the just-appended "load more" spinner / error row. The row is scrolled into
|
|
95
|
+
// view via KbqScrollbar.scrollTo(), which calls a behavior-less scroll on the overlayscrollbars
|
|
96
|
+
// viewport — so `scroll-behavior` on the viewport controls the animation. Disabled for users who
|
|
97
|
+
// prefer reduced motion.
|
|
98
|
+
& [data-overlayscrollbars-viewport] {
|
|
99
|
+
scroll-behavior: smooth;
|
|
100
|
+
|
|
101
|
+
@media (prefers-reduced-motion: reduce) {
|
|
102
|
+
scroll-behavior: auto;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
92
105
|
|
|
93
106
|
& .kbq-loader-overlay_parent {
|
|
94
107
|
border-radius: inherit;
|
|
95
108
|
}
|
|
96
109
|
}
|
|
97
110
|
|
|
111
|
+
.kbq-notification-center-load-more {
|
|
112
|
+
display: flex;
|
|
113
|
+
|
|
114
|
+
align-items: center;
|
|
115
|
+
justify-content: center;
|
|
116
|
+
|
|
117
|
+
padding: 26px 0;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.kbq-notification-center-load-more-error {
|
|
121
|
+
display: flex;
|
|
122
|
+
flex-direction: column;
|
|
123
|
+
|
|
124
|
+
align-items: center;
|
|
125
|
+
justify-content: center;
|
|
126
|
+
|
|
127
|
+
padding: var(--kbq-size-xxs) var(--kbq-size-xxl);
|
|
128
|
+
|
|
129
|
+
text-align: center;
|
|
130
|
+
|
|
131
|
+
& .kbq-button {
|
|
132
|
+
margin-top: var(--kbq-size-s);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
98
136
|
.kbq-notification-center-empty-container,
|
|
99
137
|
.kbq-notification-center-error-container {
|
|
100
138
|
display: flex;
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
margin-left: var(--kbq-size-m);
|
|
14
14
|
margin-right: var(--kbq-size-m);
|
|
15
15
|
|
|
16
|
-
&:hover
|
|
16
|
+
&:hover,
|
|
17
|
+
&:focus-within {
|
|
17
18
|
& .kbq-notification-item-time {
|
|
18
19
|
visibility: hidden;
|
|
19
20
|
}
|
|
@@ -46,7 +47,7 @@
|
|
|
46
47
|
flex: 1;
|
|
47
48
|
|
|
48
49
|
padding-top: var(--kbq-size-m);
|
|
49
|
-
padding-right: var(--kbq-size-
|
|
50
|
+
padding-right: var(--kbq-size-s);
|
|
50
51
|
padding-bottom: var(--kbq-size-m);
|
|
51
52
|
|
|
52
53
|
overflow: hidden;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koobiq/components",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.2.0",
|
|
4
4
|
"description": "koobiq",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"@angular/cdk": ">=20.0.0",
|
|
26
26
|
"@angular/core": ">=20.0.0",
|
|
27
27
|
"@angular/forms": ">=20.0.0",
|
|
28
|
-
"@koobiq/angular-moment-adapter": "20.
|
|
29
|
-
"@koobiq/angular-luxon-adapter": "20.
|
|
28
|
+
"@koobiq/angular-moment-adapter": "20.2.0",
|
|
29
|
+
"@koobiq/angular-luxon-adapter": "20.2.0",
|
|
30
30
|
"@koobiq/date-formatter": "^3.2.3",
|
|
31
31
|
"@koobiq/icons": "^11.1.3",
|
|
32
32
|
"@koobiq/design-tokens": "^3.14.0"
|
|
@@ -153,6 +153,10 @@
|
|
|
153
153
|
"types": "./filter-bar/index.d.ts",
|
|
154
154
|
"default": "./fesm2022/koobiq-components-filter-bar.mjs"
|
|
155
155
|
},
|
|
156
|
+
"./flag": {
|
|
157
|
+
"types": "./flag/index.d.ts",
|
|
158
|
+
"default": "./fesm2022/koobiq-components-flag.mjs"
|
|
159
|
+
},
|
|
156
160
|
"./form-field": {
|
|
157
161
|
"types": "./form-field/index.d.ts",
|
|
158
162
|
"default": "./fesm2022/koobiq-components-form-field.mjs"
|