@koobiq/components 20.1.0 → 20.3.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 +6 -2
- package/accordion/accordion-tokens.scss +3 -0
- package/accordion/{accordion-trigger.component.scss → accordion-trigger.scss} +10 -0
- package/accordion/accordion.scss +71 -0
- package/accordion/index.d.ts +264 -121
- package/actions-panel/index.d.ts +25 -13
- package/alert/_alert-theme.scss +14 -0
- package/alert/alert.component.scss +24 -13
- package/alert/index.d.ts +63 -29
- package/app-switcher/app-switcher-dropdown-app.scss +7 -5
- package/app-switcher/app-switcher-dropdown-site.scss +6 -4
- package/app-switcher/index.d.ts +41 -4
- package/app-switcher/kbq-app-switcher-list-item.scss +6 -8
- package/autocomplete/autocomplete.scss +2 -1
- package/autocomplete/index.d.ts +58 -37
- package/badge/index.d.ts +2 -3
- package/breadcrumbs/index.d.ts +1 -1
- package/button/index.d.ts +2 -2
- package/button-toggle/button-toggle-tokens.scss +2 -0
- package/button-toggle/button-toggle.scss +9 -0
- package/button-toggle/index.d.ts +5 -0
- package/checkbox/index.d.ts +33 -29
- package/clamped-text/index.d.ts +3 -2
- package/code-block/index.d.ts +24 -19
- package/content-panel/index.d.ts +1 -1
- package/core/index.d.ts +1217 -186
- package/core/option/_action-container-mixins.scss +28 -0
- package/core/option/_option-theme.scss +24 -0
- package/core/option/action.scss +7 -0
- package/core/styles/_core.scss +2 -0
- package/core/styles/_koobiq-theme.scss +2 -0
- package/core/styles/_tokens.scss +1 -0
- package/core/styles/common/_animation.scss +31 -24
- package/core/styles/common/_connected-overlay.scss +39 -0
- package/core/styles/common/_select.scss +19 -2
- package/core/styles/common/_tokens.scss +0 -9
- package/core/styles/theming/_index.scss +0 -1
- package/core/styles/theming/_theming.scss +34 -5
- package/datepicker/index.d.ts +46 -15
- package/dl/dl.scss +26 -0
- package/dl/index.d.ts +8 -1
- package/dropdown/_dropdown-theme.scss +28 -2
- package/dropdown/dropdown-item.scss +29 -0
- package/dropdown/dropdown-tokens.scss +2 -1
- package/dropdown/dropdown.scss +16 -1
- package/dropdown/index.d.ts +331 -17
- package/dynamic-translation/index.d.ts +1 -1
- package/fesm2022/koobiq-components-accordion.mjs +480 -317
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +57 -46
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-alert.mjs +98 -58
- package/fesm2022/koobiq-components-alert.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +233 -38
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-autocomplete.mjs +89 -52
- package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +18 -17
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +25 -25
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +17 -12
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-button.mjs +25 -25
- package/fesm2022/koobiq-components-checkbox.mjs +69 -92
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +18 -13
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +56 -69
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +29 -29
- package/fesm2022/koobiq-components-core.mjs +2485 -735
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +168 -126
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +7 -7
- package/fesm2022/koobiq-components-dl.mjs +23 -15
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +814 -136
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-dynamic-translation.mjs +13 -13
- package/fesm2022/koobiq-components-ellipsis-center.mjs +7 -7
- package/fesm2022/koobiq-components-empty-state.mjs +19 -19
- package/fesm2022/koobiq-components-file-upload.mjs +74 -42
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +783 -199
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +7 -7
- package/fesm2022/koobiq-components-form-field.mjs +350 -162
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +52 -25
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +175 -28
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +41 -24
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-link.mjs +8 -8
- package/fesm2022/koobiq-components-list.mjs +657 -143
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-loader-overlay.mjs +16 -16
- package/fesm2022/koobiq-components-markdown.mjs +14 -11
- package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +59 -35
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +177 -67
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +40 -24
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +16 -17
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +31 -21
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-progress-bar.mjs +13 -13
- package/fesm2022/koobiq-components-progress-spinner.mjs +13 -13
- package/fesm2022/koobiq-components-radio.mjs +10 -10
- package/fesm2022/koobiq-components-resizer.mjs +33 -14
- package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
- package/fesm2022/koobiq-components-scrollbar.mjs +10 -10
- package/fesm2022/koobiq-components-search-expandable.mjs +49 -14
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +450 -146
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidebar.mjs +14 -14
- package/fesm2022/koobiq-components-sidepanel.mjs +26 -26
- package/fesm2022/koobiq-components-skeleton.mjs +10 -10
- package/fesm2022/koobiq-components-split-button.mjs +10 -17
- package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +17 -17
- package/fesm2022/koobiq-components-table.mjs +15 -13
- package/fesm2022/koobiq-components-table.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +80 -68
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +283 -122
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +13 -8
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +29 -24
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +61 -30
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +77 -42
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-title.mjs +7 -7
- package/fesm2022/koobiq-components-toast.mjs +51 -26
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +72 -64
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +219 -28
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +13 -13
- package/fesm2022/koobiq-components-tree-select.mjs +222 -80
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +302 -81
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/fesm2022/koobiq-components-username.mjs +27 -27
- package/file-upload/index.d.ts +25 -6
- package/file-upload/multiple-file-upload.component.scss +14 -0
- package/filter-bar/_filter-bar-theme.scss +0 -10
- package/filter-bar/filter-bar-tokens.scss +3 -0
- package/filter-bar/filters.scss +3 -2
- package/filter-bar/index.d.ts +281 -9
- package/filter-bar/pipes/base-pipe.scss +0 -11
- package/filter-bar/pipes/pipe-input.scss +10 -0
- package/filter-bar/pipes/pipe-multi-tree-select.scss +0 -6
- package/filter-bar/pipes/pipe-multiselect.scss +0 -6
- package/filter-bar/pipes/pipe-tree-select.scss +0 -6
- package/form-field/_form-field-theme.scss +76 -20
- package/form-field/fieldset.scss +10 -0
- package/form-field/form-field-tokens.scss +15 -1
- package/form-field/form-field.scss +15 -19
- package/form-field/index.d.ts +147 -65
- package/icon/icon-button.scss +3 -1
- package/icon/index.d.ts +45 -7
- package/inline-edit/index.d.ts +57 -4
- package/inline-edit/inline-edit.scss +10 -0
- package/input/index.d.ts +17 -2
- package/list/_list-theme.scss +42 -10
- package/list/index.d.ts +326 -79
- package/list/list-tokens.scss +43 -8
- package/list/list.scss +186 -12
- package/markdown/index.d.ts +1 -1
- package/modal/index.d.ts +21 -4
- package/modal/modal-tokens.scss +1 -1
- package/navbar/_navbar-item_vertical.scss +7 -5
- package/navbar/index.d.ts +54 -5
- package/navbar/navbar-brand.scss +23 -7
- package/navbar/vertical-navbar.scss +6 -0
- package/notification-center/index.d.ts +2 -1
- package/notification-center/notification-item.scss +6 -0
- package/package.json +3 -6
- package/popover/index.d.ts +2 -2
- package/prebuilt-themes/dark-theme.css +1 -1
- package/prebuilt-themes/light-theme.css +1 -1
- package/prebuilt-themes/theme.css +1 -1
- package/resizer/index.d.ts +12 -0
- package/schematics/collection.json +10 -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/deprecated-icons/README.md +29 -4
- package/schematics/migrations/deprecated-icons/data.js +7 -0
- package/schematics/migrations/deprecated-icons/index.js +62 -35
- package/schematics/migrations/filter-bar-signals/README.md +1 -1
- package/schematics/migrations/new-icons-pack/README.md +37 -2
- package/schematics/migrations/new-icons-pack/data.js +8 -0
- package/schematics/migrations/new-icons-pack/index.js +144 -53
- package/schematics/migrations.json +11 -1
- package/schematics/ng-add/index.js +3 -3
- package/schematics/utils/angular-parsing.js +41 -14
- package/schematics/utils/ast.js +31 -0
- package/schematics/utils/icon-migration.js +530 -0
- package/schematics/utils/typescript.js +44 -0
- package/scrollbar/index.d.ts +1 -1
- package/search-expandable/index.d.ts +3 -0
- package/select/index.d.ts +212 -40
- package/select/select-tokens.scss +0 -1
- package/select/select.scss +0 -2
- package/splitter/index.d.ts +1 -1
- package/table/_table-theme.scss +4 -0
- package/table/index.d.ts +2 -1
- package/table/table.scss +8 -0
- package/tabs/_tabs-common.scss +60 -31
- package/tabs/_tabs-theme.scss +12 -0
- package/tabs/index.d.ts +2 -2
- package/tabs/tab-header.scss +14 -0
- package/tabs/tab-nav-bar.scss +4 -0
- package/tabs/tabs-tokens.scss +1 -0
- package/tags/index.d.ts +128 -29
- package/textarea/index.d.ts +5 -0
- package/time-range/index.d.ts +1 -1
- package/timepicker/index.d.ts +4 -0
- package/timezone/index.d.ts +10 -8
- package/toast/index.d.ts +26 -3
- package/toggle/index.d.ts +34 -14
- package/tooltip/index.d.ts +119 -7
- package/tree/_tree-theme.scss +25 -5
- package/tree/index.d.ts +71 -3
- package/tree/tree-option.scss +2 -8
- package/tree-select/_tree-select-theme.scss +22 -0
- package/tree-select/index.d.ts +127 -36
- package/accordion/accordion.component.scss +0 -50
- package/core/styles/_tokens.kbq.import.scss +0 -4
- package/core/styles/theming/_components-theming.scss +0 -1927
- package/filter-bar/pipes/pipe-select.scss +0 -5
- package/overflow-items/overflow-items.scss +0 -20
package/tabs/_tabs-common.scss
CHANGED
|
@@ -33,25 +33,6 @@
|
|
|
33
33
|
|
|
34
34
|
outline: none;
|
|
35
35
|
|
|
36
|
-
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
|
|
37
|
-
padding-left: 14px;
|
|
38
|
-
padding-right: 14px;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical).kbq-tab-label_with-icon-left {
|
|
42
|
-
padding-left: tokens.kbq-difference-series-css-variables(
|
|
43
|
-
[tabs-size-tab-item-padding-horizontal,
|
|
44
|
-
tabs-size-tab-item-focus-outline-width]
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical).kbq-tab-label_with-icon-right {
|
|
49
|
-
padding-right: tokens.kbq-difference-series-css-variables(
|
|
50
|
-
[tabs-size-tab-item-padding-horizontal,
|
|
51
|
-
tabs-size-tab-item-focus-outline-width]
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
36
|
&.kbq-selected {
|
|
56
37
|
cursor: default;
|
|
57
38
|
}
|
|
@@ -75,30 +56,63 @@
|
|
|
75
56
|
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical):before {
|
|
76
57
|
content: '';
|
|
77
58
|
position: absolute;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
59
|
+
inset: calc(-1 * (var(--kbq-size-s) + var(--kbq-tabs-size-tab-item-focus-outline-width)))
|
|
60
|
+
calc(-1 * var(--kbq-tabs-size-tab-item-focus-outline-width));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical):not(.kbq-tab-label_icon-only):after {
|
|
64
|
+
content: '';
|
|
65
|
+
position: absolute;
|
|
66
|
+
left: calc(
|
|
67
|
+
var(--kbq-tabs-size-tab-item-padding-horizontal) - var(--kbq-tabs-size-tab-item-focus-outline-width)
|
|
68
|
+
);
|
|
69
|
+
right: calc(
|
|
70
|
+
var(--kbq-tabs-size-tab-item-padding-horizontal) - var(--kbq-tabs-size-tab-item-focus-outline-width)
|
|
71
|
+
);
|
|
72
|
+
bottom: calc(-1 * (var(--kbq-size-s) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
73
|
+
height: 3px;
|
|
74
|
+
border-radius: var(--kbq-size-3xs) var(--kbq-size-3xs) 0 0;
|
|
75
|
+
background: transparent;
|
|
76
|
+
transition: background 0.2s ease-in-out;
|
|
77
|
+
pointer-events: none;
|
|
82
78
|
}
|
|
83
79
|
|
|
84
80
|
&.kbq-tab-label_icon-only {
|
|
85
81
|
width: var(--kbq-size-3xl);
|
|
86
82
|
height: var(--kbq-size-3xl);
|
|
87
83
|
padding: 0 !important;
|
|
88
|
-
margin-inline: var(--kbq-size-
|
|
84
|
+
margin-inline: var(--kbq-size-xxs);
|
|
89
85
|
box-sizing: content-box;
|
|
90
86
|
|
|
91
|
-
|
|
87
|
+
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
|
|
88
|
+
width: var(--kbq-tabs-size-tab-item-underlined-icon-only-size);
|
|
89
|
+
height: var(--kbq-tabs-size-tab-item-underlined-icon-only-size);
|
|
90
|
+
|
|
91
|
+
&:before {
|
|
92
|
+
left: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
93
|
+
right: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
&:after {
|
|
97
|
+
top: auto;
|
|
98
|
+
bottom: calc(-1 * (var(--kbq-size-s) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
99
|
+
height: 3px;
|
|
100
|
+
left: calc(-1 * var(--kbq-tabs-size-tab-item-focus-outline-width));
|
|
101
|
+
right: calc(-1 * var(--kbq-tabs-size-tab-item-focus-outline-width));
|
|
102
|
+
border-radius: var(--kbq-size-3xs) var(--kbq-size-3xs) 0 0;
|
|
103
|
+
transition: background 0.2s ease-in-out;
|
|
104
|
+
pointer-events: none;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
92
108
|
&:not(.kbq-tab-label_vertical):after {
|
|
93
109
|
content: '';
|
|
94
110
|
display: block;
|
|
95
111
|
position: absolute;
|
|
96
112
|
top: 0;
|
|
97
113
|
bottom: 0;
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
left: calc(-1 * (var(--kbq-size-xs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
101
|
-
right: calc(-1 * (var(--kbq-size-xs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
114
|
+
left: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
115
|
+
right: calc(-1 * (var(--kbq-size-xxs) + var(--kbq-tabs-size-tab-item-focus-outline-width)));
|
|
102
116
|
background: transparent;
|
|
103
117
|
}
|
|
104
118
|
}
|
|
@@ -144,7 +158,18 @@
|
|
|
144
158
|
}
|
|
145
159
|
|
|
146
160
|
.kbq-tab-header_underlined:not(.kbq-tab-header_vertical) .kbq-tab-list__content {
|
|
147
|
-
padding:
|
|
161
|
+
padding: var(--kbq-size-s) 0;
|
|
162
|
+
|
|
163
|
+
// Negative margin shifts the first tab left so the focus frame can extend beyond the
|
|
164
|
+
// container edge (instead of padding-left:0 which would clip it under overflow:hidden).
|
|
165
|
+
> .kbq-tab-label:first-child:not(.kbq-tab-label_icon-only),
|
|
166
|
+
> .kbq-tab-link:first-child {
|
|
167
|
+
margin-inline-start: calc(-1 * var(--kbq-tabs-size-tab-item-padding-horizontal));
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
> .kbq-tab-label_icon-only:first-child {
|
|
171
|
+
margin-inline-start: 0;
|
|
172
|
+
}
|
|
148
173
|
}
|
|
149
174
|
|
|
150
175
|
.kbq-tab-header_underlined:not(.kbq-tab-header_vertical):after {
|
|
@@ -166,8 +191,12 @@
|
|
|
166
191
|
position: absolute;
|
|
167
192
|
bottom: 0;
|
|
168
193
|
height: 3px;
|
|
169
|
-
border-radius:
|
|
194
|
+
border-radius: var(--kbq-size-3xs) var(--kbq-size-3xs) 0 0;
|
|
170
195
|
background: var(--kbq-line-contrast);
|
|
171
196
|
transition: all 0.2s ease-in-out;
|
|
197
|
+
|
|
198
|
+
&.kbq-disabled {
|
|
199
|
+
background: var(--kbq-states-icon-disabled);
|
|
200
|
+
}
|
|
172
201
|
}
|
|
173
202
|
}
|
package/tabs/_tabs-theme.scss
CHANGED
|
@@ -16,6 +16,14 @@
|
|
|
16
16
|
|
|
17
17
|
&:is(:hover, .kbq-hover):not(.kbq-disabled) {
|
|
18
18
|
@include kbq-tab-item-state($type, $sub-type, states-hover);
|
|
19
|
+
|
|
20
|
+
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
|
|
21
|
+
background: transparent;
|
|
22
|
+
|
|
23
|
+
&:not(.kbq-selected)::after {
|
|
24
|
+
background: var(--kbq-line-contrast-fade);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
19
27
|
}
|
|
20
28
|
|
|
21
29
|
&.kbq-tab-label_empty {
|
|
@@ -27,6 +35,10 @@
|
|
|
27
35
|
|
|
28
36
|
&.kbq-tab-label_underlined:not(.kbq-tab-label_vertical) {
|
|
29
37
|
background: none;
|
|
38
|
+
|
|
39
|
+
&::after {
|
|
40
|
+
background: transparent;
|
|
41
|
+
}
|
|
30
42
|
}
|
|
31
43
|
|
|
32
44
|
&:is(:hover, .kbq-hover) {
|
package/tabs/index.d.ts
CHANGED
|
@@ -409,10 +409,9 @@ declare class KbqTabHeader extends KbqPaginatedTabHeader {
|
|
|
409
409
|
readonly nextPaginator: ElementRef<HTMLElement>;
|
|
410
410
|
readonly previousPaginator: ElementRef<HTMLElement>;
|
|
411
411
|
private readonly isBrowser;
|
|
412
|
-
/** Width of the active tab, adjusted for icon-only tab margins. */
|
|
413
412
|
protected get activeTabOffsetWidth(): number | undefined;
|
|
414
|
-
/** Left offset of the active tab, adjusted for icon-only tab margins. */
|
|
415
413
|
protected get activeTabOffsetLeft(): number | undefined;
|
|
414
|
+
protected get activeTabDisabled(): boolean;
|
|
416
415
|
protected itemSelected(event: KeyboardEvent): void;
|
|
417
416
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqTabHeader, never>;
|
|
418
417
|
static ɵcmp: i0.ɵɵComponentDeclaration<KbqTabHeader, "kbq-tab-header", never, { "underlined": { "alias": "underlined"; "required": false; "isSignal": true; }; }, { "selectFocusedIndex": "selectFocusedIndex"; "indexFocused": "indexFocused"; }, ["items"], ["*"], true, never>;
|
|
@@ -568,6 +567,7 @@ declare class KbqTabNavBar extends KbqPaginatedTabHeader implements AfterContent
|
|
|
568
567
|
get role(): string | null;
|
|
569
568
|
protected get activeTabOffsetWidth(): number | undefined;
|
|
570
569
|
protected get activeTabOffsetLeft(): number | undefined;
|
|
570
|
+
protected get activeTabDisabled(): boolean;
|
|
571
571
|
ngAfterContentInit(): void;
|
|
572
572
|
protected itemSelected(): void;
|
|
573
573
|
/** Notifies the component that the active link has been changed. */
|
package/tabs/tab-header.scss
CHANGED
|
@@ -9,6 +9,16 @@
|
|
|
9
9
|
position: relative;
|
|
10
10
|
flex-shrink: 0;
|
|
11
11
|
border-radius: var(--kbq-tabs-size-tab-stack-horizontal-border-radius);
|
|
12
|
+
|
|
13
|
+
&.kbq-tab-header_underlined {
|
|
14
|
+
.kbq-tab-group:not(.kbq-tab-group_on-surface) & {
|
|
15
|
+
border-radius: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&:not(.kbq-tab-header__pagination-controls_enabled) {
|
|
19
|
+
overflow: visible;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
12
22
|
}
|
|
13
23
|
|
|
14
24
|
.kbq-tab-list__content {
|
|
@@ -32,6 +42,10 @@
|
|
|
32
42
|
flex-grow: 1;
|
|
33
43
|
z-index: 1;
|
|
34
44
|
overflow: hidden;
|
|
45
|
+
|
|
46
|
+
.kbq-tab-header_underlined:not(.kbq-tab-header__pagination-controls_enabled) & {
|
|
47
|
+
overflow: visible;
|
|
48
|
+
}
|
|
35
49
|
}
|
|
36
50
|
|
|
37
51
|
.kbq-tab-list {
|
package/tabs/tab-nav-bar.scss
CHANGED
package/tabs/tabs-tokens.scss
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
--kbq-tabs-size-tab-item-focus-outline-width: var(--kbq-size-3xs);
|
|
8
8
|
--kbq-tabs-size-tab-stack-horizontal-border-radius: var(--kbq-size-border-radius);
|
|
9
9
|
--kbq-tabs-size-tab-stack-vertical-content-gap-vertical: var(--kbq-size-s);
|
|
10
|
+
--kbq-tabs-size-tab-item-underlined-icon-only-size: calc(var(--kbq-size-3xl) - var(--kbq-size-xxs));
|
|
10
11
|
/* THEME TOKENS */
|
|
11
12
|
--kbq-tabs-tab-item-filled-on-background-default-background: transparent;
|
|
12
13
|
--kbq-tabs-tab-item-filled-on-background-default-text-color: var(--kbq-foreground-contrast);
|
package/tags/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { OnDestroy, AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, DoCheck, QueryList, OnChanges,
|
|
2
|
+
import { Signal, OnDestroy, AfterContentInit, AfterViewInit, ChangeDetectorRef, ElementRef, DoCheck, QueryList, InjectionToken, OnChanges, Provider } from '@angular/core';
|
|
3
3
|
import { NgControl, ControlValueAccessor, NgForm, FormGroupDirective } from '@angular/forms';
|
|
4
4
|
import { KbqAutocompleteTrigger } from '@koobiq/components/autocomplete';
|
|
5
5
|
import * as i2 from '@angular/cdk/drag-drop';
|
|
@@ -12,14 +12,23 @@ import { FocusOrigin } from '@angular/cdk/a11y';
|
|
|
12
12
|
import { KbqIcon } from '@koobiq/components/icon';
|
|
13
13
|
import * as i1$1 from '@angular/cdk/platform';
|
|
14
14
|
|
|
15
|
-
/**
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Interface for a text control that is used to drive interaction with a kbq-tag-list.
|
|
17
|
+
*
|
|
18
|
+
* @docs-private
|
|
19
|
+
*/
|
|
17
20
|
interface KbqTagTextControl {
|
|
18
21
|
id: string;
|
|
19
22
|
placeholder: string;
|
|
20
23
|
focused: boolean;
|
|
21
24
|
empty: boolean;
|
|
22
|
-
|
|
25
|
+
/** Whether the control's value was filled in by the browser. */
|
|
26
|
+
autofilled?: Signal<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated Unused by the library: validation lives on the `<kbq-tag-list>` control.
|
|
29
|
+
* Will be removed in a future major release.
|
|
30
|
+
*/
|
|
31
|
+
ngControl?: NgControl | null;
|
|
23
32
|
focus(): void;
|
|
24
33
|
}
|
|
25
34
|
|
|
@@ -389,6 +398,13 @@ declare class KbqTagList implements KbqFormFieldControl<any>, ControlValueAccess
|
|
|
389
398
|
private _placeholder;
|
|
390
399
|
/** Whether any tags or the kbqTagInput inside of this tag-list has focus. */
|
|
391
400
|
get focused(): boolean;
|
|
401
|
+
/**
|
|
402
|
+
* Implemented as part of KbqFormFieldControl. Forwarded from the registered `kbqTagInput`, which
|
|
403
|
+
* is the element the browser actually autofills — the tag list itself is not an input.
|
|
404
|
+
*
|
|
405
|
+
* @docs-private
|
|
406
|
+
*/
|
|
407
|
+
readonly autofilled: _angular_core.Signal<boolean>;
|
|
392
408
|
/**
|
|
393
409
|
* Implemented as part of KbqFormFieldControl.
|
|
394
410
|
* @docs-private
|
|
@@ -469,8 +485,15 @@ declare class KbqTagList implements KbqFormFieldControl<any>, ControlValueAccess
|
|
|
469
485
|
errorState: boolean;
|
|
470
486
|
/** The tag input to add more tags */
|
|
471
487
|
private tagInput;
|
|
488
|
+
/**
|
|
489
|
+
* The same control as `tagInput`, kept in a signal so `autofilled` can track it reactively —
|
|
490
|
+
* `registerInput()` runs after the first read.
|
|
491
|
+
*/
|
|
492
|
+
private readonly registeredInput;
|
|
472
493
|
/** True when the next `tags.changes` emission is triggered by a UI action, not programmatic update. */
|
|
473
494
|
private pendingUIChange;
|
|
495
|
+
/** Shared range selection state used by pointer and keyboard interactions. */
|
|
496
|
+
private rangeSelection;
|
|
474
497
|
/**
|
|
475
498
|
* When a tag is destroyed, we store the index of the destroyed tag until the tags
|
|
476
499
|
* query list notifies about the update. This is necessary because we cannot determine an
|
|
@@ -530,6 +553,12 @@ declare class KbqTagList implements KbqFormFieldControl<any>, ControlValueAccess
|
|
|
530
553
|
* @docs-private
|
|
531
554
|
*/
|
|
532
555
|
focusInput(): void;
|
|
556
|
+
/**
|
|
557
|
+
* Establishes a range origin or extends the current range to the specified tag.
|
|
558
|
+
*
|
|
559
|
+
* @docs-private
|
|
560
|
+
*/
|
|
561
|
+
handleSelectionInteraction(tag: KbqTag, extendRange: boolean): void;
|
|
533
562
|
/**
|
|
534
563
|
* Pass events to the keyboard manager. Available here for tests.
|
|
535
564
|
*
|
|
@@ -576,6 +605,8 @@ declare class KbqTagList implements KbqFormFieldControl<any>, ControlValueAccess
|
|
|
576
605
|
* @docs-private
|
|
577
606
|
*/
|
|
578
607
|
removeSelected(): void;
|
|
608
|
+
/** Whether the rendered tags no longer match the value this control last reported. */
|
|
609
|
+
private hasTagsValueChanged;
|
|
579
610
|
private propagateTagsChanges;
|
|
580
611
|
private resetTags;
|
|
581
612
|
/** Listens to user-generated selection events on each tag. */
|
|
@@ -588,6 +619,8 @@ declare class KbqTagList implements KbqFormFieldControl<any>, ControlValueAccess
|
|
|
588
619
|
private setupDropListInitialProperties;
|
|
589
620
|
private syncDropListDisabledState;
|
|
590
621
|
private setupFocusMonitor;
|
|
622
|
+
private extendSelectionTo;
|
|
623
|
+
private setRangeOrigin;
|
|
591
624
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqTagList, never>;
|
|
592
625
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqTagList, "kbq-tag-list", ["kbqTagList"], { "value": { "alias": "value"; "required": false; }; "required": { "alias": "required"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "draggable": { "alias": "draggable"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; }, { "dropped": "dropped"; "valueChange": "valueChange"; "change": "change"; }, ["cleaner", "tags"], ["*", "kbq-cleaner"], true, [{ directive: typeof i2.CdkDropList; inputs: {}; outputs: {}; }]>;
|
|
593
626
|
static ngAcceptInputType_disabled: unknown;
|
|
@@ -602,10 +635,42 @@ interface KbqTagInputEvent {
|
|
|
602
635
|
/** The value of the input. */
|
|
603
636
|
value: string;
|
|
604
637
|
}
|
|
638
|
+
/** Contexts a `KbqTagSeparator` can be active in. */
|
|
639
|
+
type KbqTagSeparatorContext = 'input' | 'paste';
|
|
640
|
+
/** Defines a character or pattern that ends a tag, and the contexts in which it applies. */
|
|
605
641
|
interface KbqTagSeparator {
|
|
642
|
+
/** Regular expression used to match/split this separator in text. */
|
|
606
643
|
symbol: RegExp;
|
|
607
|
-
|
|
644
|
+
/**
|
|
645
|
+
* `KeyboardEvent.key` that triggers this separator while typing.
|
|
646
|
+
* Omit for separators with no single-keystroke equivalent (e.g. a run of whitespace) —
|
|
647
|
+
* those are implicitly paste-only, since they can never match a `keydown`.
|
|
648
|
+
*/
|
|
649
|
+
key?: string;
|
|
650
|
+
/**
|
|
651
|
+
* Numeric key code gating whether this separator is enabled, set via `kbqTagInputSeparatorKeyCodes`.
|
|
652
|
+
* Omit together with `key` for separators that should always be active regardless of that input.
|
|
653
|
+
*/
|
|
654
|
+
keyCode?: number;
|
|
655
|
+
/**
|
|
656
|
+
* Contexts this separator applies to.
|
|
657
|
+
* @default ['input', 'paste']
|
|
658
|
+
*/
|
|
659
|
+
appliesTo?: KbqTagSeparatorContext[];
|
|
660
|
+
}
|
|
661
|
+
/** Default options for the tags module that can be overridden. */
|
|
662
|
+
interface KbqTagsDefaultOptions {
|
|
663
|
+
/** The list of key codes that will trigger a tagEnd event. */
|
|
664
|
+
separatorKeyCodes: number[];
|
|
665
|
+
/** Custom separator definitions to use instead of the built-in defaults. */
|
|
666
|
+
separators?: KbqTagSeparator[];
|
|
667
|
+
/** Whether the tagEnd event will be emitted when text is pasted. */
|
|
668
|
+
addOnPaste?: boolean;
|
|
608
669
|
}
|
|
670
|
+
/** Injection token to be used to override the default options. */
|
|
671
|
+
declare const KBQ_TAGS_DEFAULT_OPTIONS: InjectionToken<KbqTagsDefaultOptions>;
|
|
672
|
+
/** Utility provider for `KBQ_TAGS_DEFAULT_OPTIONS`. */
|
|
673
|
+
declare const kbqTagsDefaultOptionsProvider: (options: Partial<KbqTagsDefaultOptions>) => Provider;
|
|
609
674
|
/**
|
|
610
675
|
* Directive that adds tag-specific behaviors to an input element inside `<kbq-form-field>`.
|
|
611
676
|
* May be placed inside or outside of an `<kbq-tag-list>`.
|
|
@@ -614,10 +679,28 @@ declare class KbqTagInput implements KbqTagTextControl, OnChanges {
|
|
|
614
679
|
private elementRef;
|
|
615
680
|
private defaultOptions;
|
|
616
681
|
private trimDirective;
|
|
617
|
-
|
|
682
|
+
/**
|
|
683
|
+
* The form control instance bound to the input, if any.
|
|
684
|
+
*
|
|
685
|
+
* @deprecated Read only, and unused by the library: validation lives on the `<kbq-tag-list>`
|
|
686
|
+
* control. Binding `[formControl]`/`[ngModel]` to the input itself stays supported — it is what
|
|
687
|
+
* `kbqAutocomplete` drives the input through — only its validators are not consulted.
|
|
688
|
+
* Will be removed in a future major release.
|
|
689
|
+
* @docs-private
|
|
690
|
+
*/
|
|
691
|
+
ngControl: NgControl | null;
|
|
692
|
+
/**
|
|
693
|
+
* The autocomplete trigger attached to the input, if any.
|
|
694
|
+
* @docs-private
|
|
695
|
+
*/
|
|
618
696
|
autocompleteTrigger?: KbqAutocompleteTrigger | null | undefined;
|
|
619
|
-
/**
|
|
697
|
+
/**
|
|
698
|
+
* Whether the control is focused.
|
|
699
|
+
* @docs-private
|
|
700
|
+
*/
|
|
620
701
|
focused: boolean;
|
|
702
|
+
/** Whether the control's value was filled in by the browser. */
|
|
703
|
+
readonly autofilled: _angular_core.Signal<boolean>;
|
|
621
704
|
/**
|
|
622
705
|
* The list of key codes that will trigger a tagEnd event.
|
|
623
706
|
*
|
|
@@ -625,7 +708,12 @@ declare class KbqTagInput implements KbqTagTextControl, OnChanges {
|
|
|
625
708
|
*/
|
|
626
709
|
set separatorKeyCodes(value: number[]);
|
|
627
710
|
private _separatorKeyCodes;
|
|
628
|
-
/**
|
|
711
|
+
/**
|
|
712
|
+
* The effective set of separators: entries gated by `keyCode` are included only when that
|
|
713
|
+
* code is present in `separatorKeyCodes`; entries without a `keyCode` (no single-keystroke
|
|
714
|
+
* equivalent, e.g. a run of whitespace) are always included.
|
|
715
|
+
* @docs-private
|
|
716
|
+
*/
|
|
629
717
|
get separators(): KbqTagSeparator[];
|
|
630
718
|
private _separators;
|
|
631
719
|
/** Emitted when a tag is to be added. */
|
|
@@ -662,45 +750,56 @@ declare class KbqTagInput implements KbqTagTextControl, OnChanges {
|
|
|
662
750
|
ngOnChanges(): void;
|
|
663
751
|
/** @docs-private */
|
|
664
752
|
onKeydown(event: KeyboardEvent): void;
|
|
665
|
-
/**
|
|
753
|
+
/**
|
|
754
|
+
* Checks to see if the blur should emit the (tagEnd) event.
|
|
755
|
+
* @docs-private
|
|
756
|
+
*/
|
|
666
757
|
blur(event: FocusEvent): void;
|
|
758
|
+
/**
|
|
759
|
+
* @deprecated No-op. Validation belongs to the `<kbq-tag-list>` form control, which
|
|
760
|
+
* revalidates itself whenever its value changes. Will be removed in a future major release.
|
|
761
|
+
* @docs-private
|
|
762
|
+
*/
|
|
667
763
|
triggerValidation(): void;
|
|
668
|
-
/**
|
|
764
|
+
/**
|
|
765
|
+
* Checks to see if the (tagEnd) event needs to be emitted.
|
|
766
|
+
* @docs-private
|
|
767
|
+
*/
|
|
669
768
|
emitTagEnd(): void;
|
|
769
|
+
/**
|
|
770
|
+
* Whether the current input value duplicates an existing tag.
|
|
771
|
+
* @docs-private
|
|
772
|
+
*/
|
|
670
773
|
get hasDuplicates(): boolean;
|
|
774
|
+
/** @docs-private */
|
|
671
775
|
onInput(): void;
|
|
776
|
+
/** @docs-private */
|
|
672
777
|
onPaste($event: ClipboardEvent): void;
|
|
673
778
|
/** @docs-private */
|
|
674
779
|
onFocus(): void;
|
|
675
780
|
/** Focuses the input. */
|
|
676
781
|
focus(): void;
|
|
677
|
-
private
|
|
782
|
+
private getPasteSeparatorPatterns;
|
|
783
|
+
/**
|
|
784
|
+
* Single path for adding a tag, shared by typed input, blur and paste.
|
|
785
|
+
* `existingValues` is `null` unless `distinct` is on, and is mutated as values are accepted.
|
|
786
|
+
*/
|
|
787
|
+
private addTag;
|
|
788
|
+
/** Values to dedupe against, or `null` when duplicates are allowed. */
|
|
789
|
+
private existingTagValues;
|
|
790
|
+
private tagValues;
|
|
678
791
|
private trimValue;
|
|
679
|
-
|
|
680
|
-
private
|
|
681
|
-
/** Checks whether a keycode is one of the configured separators. */
|
|
682
|
-
private isSeparatorKey;
|
|
792
|
+
/** Checks whether a keydown event matches a separator that applies to typed input. */
|
|
793
|
+
private matchesInputSeparator;
|
|
683
794
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqTagInput, never>;
|
|
684
795
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqTagInput, "input[kbqTagInputFor]", ["kbqTagInput", "kbqTagInputFor"], { "separatorKeyCodes": { "alias": "kbqTagInputSeparatorKeyCodes"; "required": false; }; "distinct": { "alias": "distinct"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "id": { "alias": "id"; "required": false; }; "tagList": { "alias": "kbqTagInputFor"; "required": false; }; "addOnBlur": { "alias": "kbqTagInputAddOnBlur"; "required": false; }; "addOnPaste": { "alias": "kbqTagInputAddOnPaste"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "tagEnd": "kbqTagInputTokenEnd"; }, never, never, true, [{ directive: typeof i1.KbqFieldSizingContent; inputs: {}; outputs: {}; }]>;
|
|
685
796
|
}
|
|
686
797
|
|
|
687
|
-
/** Default options, for the chips module, that can be overridden. */
|
|
688
|
-
interface KbqTagsDefaultOptions {
|
|
689
|
-
/** The list of key codes that will trigger a chipEnd event. */
|
|
690
|
-
separatorKeyCodes: number[];
|
|
691
|
-
separators?: {
|
|
692
|
-
[key: number]: KbqTagSeparator;
|
|
693
|
-
};
|
|
694
|
-
addOnPaste?: boolean;
|
|
695
|
-
}
|
|
696
|
-
/** Injection token to be used to override the default options for the chips module. */
|
|
697
|
-
declare const KBQ_TAGS_DEFAULT_OPTIONS: InjectionToken<KbqTagsDefaultOptions>;
|
|
698
|
-
|
|
699
798
|
declare class KbqTagsModule {
|
|
700
799
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqTagsModule, never>;
|
|
701
800
|
static ɵmod: _angular_core.ɵɵNgModuleDeclaration<KbqTagsModule, never, [typeof i1$1.PlatformModule, typeof KbqTagEditSubmit, typeof KbqTagEditInput, typeof KbqTagList, typeof KbqTag, typeof KbqTagInput, typeof KbqTagTrailingIcon, typeof KbqTagAvatar, typeof KbqTagRemove], [typeof KbqTagList, typeof KbqTag, typeof KbqTagInput, typeof KbqTagTrailingIcon, typeof KbqTagAvatar, typeof KbqTagRemove, typeof KbqTagEditSubmit, typeof KbqTagEditInput]>;
|
|
702
801
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<KbqTagsModule>;
|
|
703
802
|
}
|
|
704
803
|
|
|
705
|
-
export { KBQ_TAGS_DEFAULT_OPTIONS, KbqTag, KbqTagAvatar, KbqTagEditChange, KbqTagEditInput, KbqTagEditSubmit, KbqTagInput, KbqTagList, KbqTagListChange, KbqTagRemove, KbqTagSelectionChange, KbqTagTrailingIcon, KbqTagsModule };
|
|
706
|
-
export type { KbqTagDragData, KbqTagEvent, KbqTagFocusEvent, KbqTagInputEvent, KbqTagListDroppedEvent, KbqTagSeparator, KbqTagsDefaultOptions };
|
|
804
|
+
export { KBQ_TAGS_DEFAULT_OPTIONS, KbqTag, KbqTagAvatar, KbqTagEditChange, KbqTagEditInput, KbqTagEditSubmit, KbqTagInput, KbqTagList, KbqTagListChange, KbqTagRemove, KbqTagSelectionChange, KbqTagTrailingIcon, KbqTagsModule, kbqTagsDefaultOptionsProvider };
|
|
805
|
+
export type { KbqTagDragData, KbqTagEvent, KbqTagFocusEvent, KbqTagInputEvent, KbqTagListDroppedEvent, KbqTagSeparator, KbqTagSeparatorContext, KbqTagsDefaultOptions };
|
package/textarea/index.d.ts
CHANGED
|
@@ -38,6 +38,11 @@ declare class KbqTextarea implements KbqFormFieldControl<any>, OnInit, OnChanges
|
|
|
38
38
|
* @docs-private
|
|
39
39
|
*/
|
|
40
40
|
focused: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Implemented as part of KbqFormFieldControl.
|
|
43
|
+
* @docs-private
|
|
44
|
+
*/
|
|
45
|
+
readonly autofilled: i0.Signal<boolean>;
|
|
41
46
|
/**
|
|
42
47
|
* Implemented as part of KbqFormFieldControl.
|
|
43
48
|
* @docs-private
|
package/time-range/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { InjectionToken, OnInit, TemplateRef, WritableSignal, Provider, Injector } from '@angular/core';
|
|
3
3
|
import { ValidatorFn, ControlValueAccessor, NgControl, FormControl, Validator, FormGroup, AbstractControl, FormGroupDirective, NgForm, ValidationErrors } from '@angular/forms';
|
|
4
|
-
import { DateAdapter, DateFormatter, PopUpSizes, PopUpPlacements,
|
|
4
|
+
import { DateAdapter, DateFormatter, KbqTimeRangeLocaleConfig, PopUpSizes, PopUpPlacements, ErrorStateMatcher } from '@koobiq/components/core';
|
|
5
5
|
import { KbqPopoverTrigger } from '@koobiq/components/popover';
|
|
6
6
|
import { DurationObjectUnits, DurationUnit } from '@koobiq/date-adapter';
|
|
7
7
|
import { KbqTimepicker, TimeFormats } from '@koobiq/components/timepicker';
|
package/timepicker/index.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ declare class KbqTimepicker<D> implements KbqFormFieldControl<D>, ControlValueAc
|
|
|
42
42
|
private renderer;
|
|
43
43
|
private dateAdapter;
|
|
44
44
|
private localeService;
|
|
45
|
+
private readonly timezoneService;
|
|
45
46
|
/**
|
|
46
47
|
* Implemented as part of KbqFormFieldControl.
|
|
47
48
|
* @docs-private
|
|
@@ -149,6 +150,8 @@ declare class KbqTimepicker<D> implements KbqFormFieldControl<D>, ControlValueAc
|
|
|
149
150
|
private formatUserInput;
|
|
150
151
|
private replaceSymbols;
|
|
151
152
|
private replaceNumbers;
|
|
153
|
+
/** Clamps a time part to the allowed maximum and trims it to two digits */
|
|
154
|
+
private normalizeTimePart;
|
|
152
155
|
/** Checks whether the input is invalid based on the native validation. */
|
|
153
156
|
private isBadInput;
|
|
154
157
|
private spaceKeyHandler;
|
|
@@ -174,6 +177,7 @@ declare class KbqTimepicker<D> implements KbqFormFieldControl<D>, ControlValueAc
|
|
|
174
177
|
private maxValidator;
|
|
175
178
|
private getValidDateOrNull;
|
|
176
179
|
private setViewValue;
|
|
180
|
+
private setSelection;
|
|
177
181
|
private updateView;
|
|
178
182
|
/** @docs-private */
|
|
179
183
|
updateErrorState(): void;
|
package/timezone/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { KbqOption } from '@koobiq/components/core';
|
|
|
5
5
|
import * as i6 from '@koobiq/components/tooltip';
|
|
6
6
|
import { KbqTooltipTrigger } from '@koobiq/components/tooltip';
|
|
7
7
|
import * as i3 from '@koobiq/components/select';
|
|
8
|
-
import { KbqSelect
|
|
8
|
+
import { KbqSelect } from '@koobiq/components/select';
|
|
9
9
|
import * as i1 from '@angular/cdk/overlay';
|
|
10
10
|
import * as i4 from '@koobiq/components/icon';
|
|
11
11
|
import * as i5 from '@koobiq/components/tags';
|
|
@@ -33,13 +33,15 @@ interface KbqTimezonesByCountry {
|
|
|
33
33
|
declare class KbqTimezoneOption extends KbqOption {
|
|
34
34
|
readonly tooltipContentWrapper: i0.Signal<ElementRef<HTMLElement>>;
|
|
35
35
|
readonly tooltipContent: i0.Signal<ElementRef<HTMLElement>>;
|
|
36
|
-
readonly highlightText: i0.InputSignal<string>;
|
|
36
|
+
readonly highlightText: i0.InputSignal<string | readonly string[]>;
|
|
37
|
+
/** Whether `highlightText` was matched with diacritic folding (e.g. via `createSearchPredicate`) — see `kbqHighlightBackground`. */
|
|
38
|
+
readonly foldDiacritics: i0.InputSignal<boolean>;
|
|
37
39
|
get timezone(): KbqTimezoneZone;
|
|
38
40
|
set timezone(zone: KbqTimezoneZone);
|
|
39
41
|
private _timezone;
|
|
40
42
|
get viewValue(): string;
|
|
41
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqTimezoneOption, never>;
|
|
42
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqTimezoneOption, "kbq-timezone-option", ["kbqTimezoneOption"], { "highlightText": { "alias": "highlightText"; "required": false; "isSignal": true; }; "timezone": { "alias": "timezone"; "required": false; }; }, {}, never, never, true, never>;
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqTimezoneOption, "kbq-timezone-option", ["kbqTimezoneOption"], { "highlightText": { "alias": "highlightText"; "required": false; "isSignal": true; }; "foldDiacritics": { "alias": "foldDiacritics"; "required": false; "isSignal": true; }; "timezone": { "alias": "timezone"; "required": false; }; }, {}, never, never, true, never>;
|
|
43
45
|
}
|
|
44
46
|
|
|
45
47
|
declare const TOOLTIP_VISIBLE_ROWS_COUNT = 3;
|
|
@@ -69,8 +71,6 @@ declare class KbqTimezoneSelectTrigger {
|
|
|
69
71
|
}
|
|
70
72
|
declare class KbqTimezoneSelect extends KbqSelect implements AfterContentInit {
|
|
71
73
|
readonly customTrigger: i0.Signal<KbqTimezoneSelectTrigger | undefined>;
|
|
72
|
-
panelWidth: KbqSelectPanelWidth;
|
|
73
|
-
panelMinWidth: number;
|
|
74
74
|
ngAfterContentInit(): void;
|
|
75
75
|
private updateLocaleParamsForSearch;
|
|
76
76
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqTimezoneSelect, never>;
|
|
@@ -86,7 +86,7 @@ declare class UtcOffsetPipe implements PipeTransform {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
declare class CitiesByFilterPipe implements PipeTransform {
|
|
89
|
-
transform(value: string, searchPattern?: string): string;
|
|
89
|
+
transform(value: string, searchPattern?: string | readonly string[]): string;
|
|
90
90
|
static ɵfac: i0.ɵɵFactoryDeclaration<CitiesByFilterPipe, never>;
|
|
91
91
|
static ɵpipe: i0.ɵɵPipeDeclaration<CitiesByFilterPipe, "citiesByFilter", true>;
|
|
92
92
|
}
|
|
@@ -115,9 +115,11 @@ declare function offsetFormatterAsObject(value: string): {
|
|
|
115
115
|
*/
|
|
116
116
|
declare function timezonesSortComparator(first: KbqTimezoneZone, second: KbqTimezoneZone): number;
|
|
117
117
|
/**
|
|
118
|
-
* Filtering timezone cities by search string
|
|
118
|
+
* Filtering timezone cities by search string. Accepts a single pattern or several (matching a
|
|
119
|
+
* city if it satisfies any one of them) — patterns that look like a bare UTC offset (e.g. `+3`)
|
|
120
|
+
* are ignored here, since they describe the zone rather than a city name.
|
|
119
121
|
*/
|
|
120
|
-
declare function filterCitiesBySearchString(cities: string, searchPattern?: string): string;
|
|
122
|
+
declare function filterCitiesBySearchString(cities: string, searchPattern?: string | readonly string[]): string;
|
|
121
123
|
|
|
122
124
|
export { KbqTimezoneModule, KbqTimezoneOption, KbqTimezoneOptionTooltip, KbqTimezoneSelect, KbqTimezoneSelectTrigger, TOOLTIP_VISIBLE_ROWS_COUNT, filterCitiesBySearchString, getZonesGroupedByCountry, offset, offsetFormatter, offsetFormatterAsObject, parseOffset, timezonesSortComparator };
|
|
123
125
|
export type { KbqTimezoneGroup, KbqTimezoneZone, KbqTimezonesByCountry };
|
package/toast/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { InjectionToken, TemplateRef, Provider, OnDestroy, ElementRef, ComponentRef, EmbeddedViewRef, ViewContainerRef, ViewRef, Injector } from '@angular/core';
|
|
3
3
|
import { CdkScrollable } from '@angular/cdk/overlay';
|
|
4
4
|
import * as rxjs from 'rxjs';
|
|
5
|
-
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import { BehaviorSubject, Observable } from 'rxjs';
|
|
6
6
|
import { AnimationEvent } from '@angular/animations';
|
|
7
7
|
import * as i1 from '@koobiq/components/core';
|
|
8
8
|
import { KbqReadStateDirective, ThemePalette } from '@koobiq/components/core';
|
|
@@ -144,11 +144,34 @@ declare class KbqToastContainerComponent extends CdkScrollable {
|
|
|
144
144
|
private changeDetectorRef;
|
|
145
145
|
readonly service: KbqToastService<any>;
|
|
146
146
|
readonly viewContainer: i0.Signal<ViewContainerRef>;
|
|
147
|
-
|
|
147
|
+
/**
|
|
148
|
+
* Emits while the stack re-lays-out. Toasts are ordinary flow children, so removing one slides the
|
|
149
|
+
* rest for as long as its height animates — and an overlay opened from inside a toast is anchored to
|
|
150
|
+
* a trigger that is moving. CDK only re-measures the origin on a scroll or a viewport resize, so the
|
|
151
|
+
* stack has to say when it moved.
|
|
152
|
+
*
|
|
153
|
+
* The container's own box tracks the reflow exactly: continuously while a leaving toast animates its
|
|
154
|
+
* height away, and once for a removal that is not animated at all, such as a template toast.
|
|
155
|
+
*/
|
|
156
|
+
private readonly reflowed;
|
|
157
|
+
/**
|
|
158
|
+
* `ScrollDispatcher` subscribes to this method when the container registers itself, so merging the
|
|
159
|
+
* reflow signal in re-broadcasts it to every overlay that repositions on scroll — which is what
|
|
160
|
+
* `kbq-select` and the dropdown trigger do by default.
|
|
161
|
+
*/
|
|
162
|
+
elementScrolled(): Observable<Event>;
|
|
148
163
|
createToast<C>(data: KbqToastData, componentType: any, onTop: boolean): ComponentRef<C>;
|
|
149
164
|
createTemplate<C>(data: KbqToastData, template: TemplateRef<any>, onTop: boolean): EmbeddedViewRef<C>;
|
|
150
165
|
remove(viewRef: ViewRef): void;
|
|
151
166
|
getInjector(data: KbqToastData): Injector;
|
|
167
|
+
/**
|
|
168
|
+
* Fakes a scroll on the container so that overlays anchored inside a toast are repositioned by their
|
|
169
|
+
* `RepositionScrollStrategy` when the stack shifts.
|
|
170
|
+
*
|
|
171
|
+
* @deprecated The container reports its own reflow through `elementScrolled()`, so nothing calls this.
|
|
172
|
+
* It is kept only for callers that already hold a container reference — the instance created by
|
|
173
|
+
* `KbqToastService` is not exposed.
|
|
174
|
+
*/
|
|
152
175
|
dispatchScrollEvent: () => void;
|
|
153
176
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqToastContainerComponent, never>;
|
|
154
177
|
static ɵcmp: i0.ɵɵComponentDeclaration<KbqToastContainerComponent, "kbq-toast-container", never, {}, {}, never, never, true, never>;
|