@koobiq/components 21.0.1 → 21.1.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/badge/_badge-theme.scss +31 -0
- package/breadcrumbs/breadcrumbs.scss +5 -1
- package/checkbox/_checkbox-theme.scss +0 -17
- package/checkbox/checkbox-tokens.scss +0 -4
- package/code-block/_code-block-theme.scss +7 -6
- package/code-block/code-block-tokens.scss +8 -4
- package/code-block/code-block.scss +54 -32
- package/content-panel/content-panel-header.scss +2 -3
- package/content-panel/content-panel.scss +3 -0
- package/core/selection/pseudo-checkbox/pseudo-checkbox-tokens.scss +0 -2
- package/fesm2022/koobiq-components-accordion.mjs +4 -4
- package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
- package/fesm2022/koobiq-components-actions-panel.mjs +10 -2
- package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs +1 -1
- package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
- package/fesm2022/koobiq-components-badge.mjs +2 -2
- package/fesm2022/koobiq-components-badge.mjs.map +1 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs +1 -1
- package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-checkbox.mjs +18 -8
- package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
- package/fesm2022/koobiq-components-clamped-text.mjs +78 -10
- package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
- package/fesm2022/koobiq-components-code-block.mjs +63 -379
- package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
- package/fesm2022/koobiq-components-content-panel.mjs +4 -4
- package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +300 -37
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-datepicker.mjs +151 -60
- package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-divider.mjs +3 -3
- package/fesm2022/koobiq-components-divider.mjs.map +1 -1
- package/fesm2022/koobiq-components-dropdown.mjs +3 -3
- package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
- package/fesm2022/koobiq-components-file-upload.mjs +17 -8
- package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
- package/fesm2022/koobiq-components-filter-bar.mjs +115 -36
- package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-flag.mjs +3 -3
- package/fesm2022/koobiq-components-flag.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +90 -27
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-icon.mjs +2 -2
- package/fesm2022/koobiq-components-icon.mjs.map +1 -1
- package/fesm2022/koobiq-components-inline-edit.mjs +19 -2
- package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
- package/fesm2022/koobiq-components-input.mjs +76 -17
- package/fesm2022/koobiq-components-input.mjs.map +1 -1
- package/fesm2022/koobiq-components-list.mjs +1 -1
- package/fesm2022/koobiq-components-list.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +3 -3
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-navbar.mjs +86 -25
- package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
- package/fesm2022/koobiq-components-notification-center.mjs +4 -4
- package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +116 -38
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-popover.mjs +86 -7
- package/fesm2022/koobiq-components-popover.mjs.map +1 -1
- package/fesm2022/koobiq-components-radio.mjs +41 -19
- package/fesm2022/koobiq-components-radio.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +29 -17
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +49 -12
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-sidepanel.mjs +198 -186
- package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
- package/fesm2022/koobiq-components-splitter.mjs +49 -25
- package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +30 -11
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tags.mjs +1 -1
- package/fesm2022/koobiq-components-tags.mjs.map +1 -1
- package/fesm2022/koobiq-components-textarea.mjs +28 -11
- package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
- package/fesm2022/koobiq-components-time-range.mjs +2 -2
- package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
- package/fesm2022/koobiq-components-timepicker.mjs +71 -16
- package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
- package/fesm2022/koobiq-components-timezone.mjs +2 -2
- package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
- package/fesm2022/koobiq-components-toast.mjs +2 -2
- package/fesm2022/koobiq-components-toast.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +25 -9
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tooltip.mjs +90 -17
- package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
- package/fesm2022/koobiq-components-top-bar.mjs +27 -7
- package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +4 -4
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +71 -27
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/file-upload/_file-upload-theme.scss +0 -12
- package/file-upload/file-upload-tokens.scss +0 -1
- package/file-upload/file-upload.scss +0 -1
- package/filter-bar/_filter-bar-theme.scss +7 -8
- package/filter-bar/filter-bar.scss +0 -1
- package/filter-bar/pipes/base-pipe.scss +36 -2
- package/filter-bar/pipes/pipe-multi-tree-select.scss +27 -0
- package/form-field/_fieldset-theme.scss +2 -7
- package/form-field/_form-field-theme.scss +9 -22
- package/form-field/_hint-theme.scss +20 -0
- package/form-field/fieldset-tokens.scss +0 -1
- package/form-field/fieldset.scss +0 -3
- package/form-field/form-field-tokens.scss +1 -1
- package/form-field/form-field.scss +9 -0
- package/form-field/hint-tokens.scss +3 -0
- package/modal/modal.scss +2 -0
- package/navbar/_navbar-item_vertical.scss +48 -2
- package/navbar/_navbar-theme.scss +11 -3
- package/navbar/navbar-item.scss +17 -0
- package/navbar/navbar-tokens.scss +3 -0
- package/package.json +4 -4
- package/popover/popover.scss +1 -1
- package/radio/_radio-theme.scss +0 -30
- package/radio/radio-tokens.scss +0 -2
- package/schematics/migrations/deprecated-icons/README.md +21 -5
- package/schematics/migrations/deprecated-icons/index.cjs +8 -22
- package/schematics/migrations/deprecated-icons/schema.json +1 -1
- package/schematics/migrations/icons-replacement/README.md +16 -2
- package/schematics/migrations/icons-replacement/index.cjs +18 -16
- package/schematics/migrations/icons-replacement/schema.json +12 -3
- package/schematics/migrations/new-icons-pack/README.md +37 -25
- package/schematics/migrations/new-icons-pack/index.cjs +22 -32
- package/schematics/migrations/new-icons-pack/replacement.json +2 -14
- package/schematics/migrations/new-icons-pack/schema.json +3 -3
- package/schematics/ng-add/index.cjs +4 -4
- package/schematics/utils/custom-data.cjs +64 -0
- package/schematics/utils/icon-migration.cjs +9 -3
- package/schematics/utils/messages.cjs +4 -0
- package/schematics/utils/package-config.cjs +19 -0
- package/select/select.scss +7 -0
- package/tabs/_tabs-common.scss +23 -0
- package/textarea/textarea-tokens.scss +4 -1
- package/toast/toast.component.scss +1 -0
- package/toggle/_toggle-theme.scss +0 -17
- package/tooltip/tooltip.scss +1 -1
- package/top-bar/top-bar-tokens.scss +1 -0
- package/top-bar/top-bar.scss +10 -0
- package/types/koobiq-components-accordion.d.ts +25 -0
- package/types/koobiq-components-button-toggle.d.ts +6 -0
- package/types/koobiq-components-checkbox.d.ts +30 -0
- package/types/koobiq-components-clamped-text.d.ts +16 -3
- package/types/koobiq-components-code-block.d.ts +17 -3
- package/types/koobiq-components-core.d.ts +226 -13
- package/types/koobiq-components-datepicker.d.ts +28 -1
- package/types/koobiq-components-divider.d.ts +28 -10
- package/types/koobiq-components-dropdown.d.ts +19 -0
- package/types/koobiq-components-filter-bar.d.ts +77 -4
- package/types/koobiq-components-flag.d.ts +18 -0
- package/types/koobiq-components-form-field.d.ts +87 -6
- package/types/koobiq-components-icon.d.ts +15 -0
- package/types/koobiq-components-inline-edit.d.ts +8 -1
- package/types/koobiq-components-input.d.ts +22 -3
- package/types/koobiq-components-list.d.ts +6 -0
- package/types/koobiq-components-modal.d.ts +7 -0
- package/types/koobiq-components-navbar.d.ts +71 -7
- package/types/koobiq-components-notification-center.d.ts +13 -0
- package/types/koobiq-components-overflow-items.d.ts +26 -2
- package/types/koobiq-components-popover.d.ts +38 -3
- package/types/koobiq-components-radio.d.ts +30 -0
- package/types/koobiq-components-search-expandable.d.ts +10 -0
- package/types/koobiq-components-select.d.ts +36 -4
- package/types/koobiq-components-sidepanel.d.ts +52 -1
- package/types/koobiq-components-splitter.d.ts +13 -4
- package/types/koobiq-components-tabs.d.ts +4 -0
- package/types/koobiq-components-tags.d.ts +6 -0
- package/types/koobiq-components-textarea.d.ts +9 -2
- package/types/koobiq-components-timepicker.d.ts +15 -0
- package/types/koobiq-components-toggle.d.ts +30 -0
- package/types/koobiq-components-tooltip.d.ts +55 -10
- package/types/koobiq-components-top-bar.d.ts +11 -3
- package/types/koobiq-components-tree-select.d.ts +12 -0
- package/types/koobiq-components-tree.d.ts +37 -2
|
@@ -149,6 +149,18 @@ interface KbqPipe {
|
|
|
149
149
|
value: unknown | null;
|
|
150
150
|
search?: boolean;
|
|
151
151
|
selectAll?: boolean;
|
|
152
|
+
/**
|
|
153
|
+
* `multiselect` / `multi-tree-select` pipes only: shows a counter of the elements "Select all" would
|
|
154
|
+
* toggle next to its row — all of them, or only the ones matching the search while searching. Locked
|
|
155
|
+
* values are not counted. Ignored by other pipe types. Default is `false`.
|
|
156
|
+
*/
|
|
157
|
+
selectAllCounter?: boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Tree-based pipes only (`tree-select`, `multi-tree-select`): whether the panel opens with every
|
|
160
|
+
* branch expanded. When `false`, all branches start collapsed except the ancestors of the selected
|
|
161
|
+
* node(s). Default is `true`.
|
|
162
|
+
*/
|
|
163
|
+
defaultExpanded?: boolean;
|
|
152
164
|
openOnAdd?: boolean;
|
|
153
165
|
openOnReset?: boolean;
|
|
154
166
|
/**
|
|
@@ -188,6 +200,12 @@ interface KbqPipeData<V> extends KbqPipe {
|
|
|
188
200
|
}
|
|
189
201
|
interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {
|
|
190
202
|
values?: unknown[];
|
|
203
|
+
/**
|
|
204
|
+
* Custom option content for `select` and `multiselect`, or custom leaf and branch content for
|
|
205
|
+
* `tree-select` and `multi-tree-select`. Tree templates receive a {@link KbqMultiTreeSelectValueTemplateContext} with the
|
|
206
|
+
* original `option` and current `search`; filtering and the trigger still use the node's `name`.
|
|
207
|
+
* Ignored by other pipe types.
|
|
208
|
+
*/
|
|
191
209
|
valueTemplate?: TemplateRef<any> | string;
|
|
192
210
|
/**
|
|
193
211
|
* Custom equality comparator forwarded to the underlying `kbq-select` of the `select` /
|
|
@@ -220,8 +238,9 @@ interface KbqPipeTemplate extends Omit<KbqPipe, 'value'> {
|
|
|
220
238
|
panelMaxHeight?: KbqPanelMaxHeight;
|
|
221
239
|
/**
|
|
222
240
|
* Whether option names and captions in the dropdown wrap instead of being truncated to one line.
|
|
223
|
-
* Applies to the `select` and `
|
|
224
|
-
* `KbqSelect.multiline`, which lays the
|
|
241
|
+
* Applies to the `select`, `multiselect`, `tree-select` and `multi-tree-select` pipes independently of
|
|
242
|
+
* `valueTemplate`; ignored by the other pipe types. Unrelated to `KbqSelect.multiline`, which lays the
|
|
243
|
+
* trigger's values out in rows.
|
|
225
244
|
*/
|
|
226
245
|
multilineOptions?: boolean;
|
|
227
246
|
/**
|
|
@@ -283,11 +302,15 @@ declare class KbqTreeSelectFlatNode {
|
|
|
283
302
|
level: number;
|
|
284
303
|
expandable: boolean;
|
|
285
304
|
parent?: KbqTreeSelectFlatNode;
|
|
305
|
+
/** Second line under `name` in the dropdown of the tree-select pipes. */
|
|
306
|
+
caption?: string;
|
|
286
307
|
}
|
|
287
308
|
interface KbqTreeSelectNode {
|
|
288
309
|
children: KbqTreeSelectNode[] | null;
|
|
289
310
|
name: string;
|
|
290
311
|
value: unknown;
|
|
312
|
+
/** Second line under `name` in the dropdown of the tree-select pipes. Ignored when `valueTemplate` is used. */
|
|
313
|
+
caption?: string;
|
|
291
314
|
}
|
|
292
315
|
/**
|
|
293
316
|
* Build the file structure tree. The `value` is the Json object, or a sub-tree of a Json object.
|
|
@@ -706,7 +729,7 @@ declare abstract class KbqBasePipe<V> implements AfterViewInit {
|
|
|
706
729
|
protected panelMaxHeight?: KbqPanelMaxHeight;
|
|
707
730
|
/**
|
|
708
731
|
* Whether the dropdown's option names and captions wrap instead of being truncated, forwarded from
|
|
709
|
-
* the pipe template. Only consumed by the select
|
|
732
|
+
* the pipe template. Only consumed by the select-family pipe components.
|
|
710
733
|
*/
|
|
711
734
|
protected multilineOptions?: boolean;
|
|
712
735
|
/**
|
|
@@ -1159,6 +1182,8 @@ declare class KbqPipeInputComponent extends KbqBasePipe<string | null> implement
|
|
|
1159
1182
|
declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]> implements AfterViewInit, OnInit {
|
|
1160
1183
|
/** control for search options */
|
|
1161
1184
|
readonly searchControl: FormControl<string | null>;
|
|
1185
|
+
/** Query tokens for option highlighting: tokenized like the filter, so every matched token is marked. */
|
|
1186
|
+
readonly searchTokens: Signal<string[]>;
|
|
1162
1187
|
/**
|
|
1163
1188
|
* Options of the pipe template that match the search query. Follows the templates too, so options
|
|
1164
1189
|
* supplied after initialization render on first open.
|
|
@@ -1174,6 +1199,8 @@ declare class KbqPipeMultiSelectComponent extends KbqBasePipe<KbqSelectValue[]>
|
|
|
1174
1199
|
get isEmpty(): boolean;
|
|
1175
1200
|
/** state for checkbox 'select all'. */
|
|
1176
1201
|
get checkboxState(): KbqPseudoCheckboxState;
|
|
1202
|
+
/** Number of options the "select all" action would toggle right now — template-only. */
|
|
1203
|
+
protected get selectAllCount(): number;
|
|
1177
1204
|
/** true if all visible options selected */
|
|
1178
1205
|
get allVisibleOptionsSelected(): boolean;
|
|
1179
1206
|
/** true if all options selected */
|
|
@@ -1231,6 +1258,7 @@ declare abstract class KbqTreeSelectPipeBase<V> extends KbqBasePipe<V> implement
|
|
|
1231
1258
|
treeControl: FlatTreeControl<KbqTreeSelectFlatNode>;
|
|
1232
1259
|
treeFlattener: KbqTreeFlattener<KbqTreeSelectNode, KbqTreeSelectFlatNode>;
|
|
1233
1260
|
dataSource: KbqTreeFlatDataSource<KbqTreeSelectNode, KbqTreeSelectFlatNode>;
|
|
1261
|
+
private readonly sourceNodes;
|
|
1234
1262
|
/** @docs-private */
|
|
1235
1263
|
readonly select: _angular_core.Signal<KbqTreeSelect<KbqTreeSelectFlatNode, KbqTreeSelectFlatNode>>;
|
|
1236
1264
|
constructor();
|
|
@@ -1242,6 +1270,22 @@ declare abstract class KbqTreeSelectPipeBase<V> extends KbqBasePipe<V> implement
|
|
|
1242
1270
|
open(): void;
|
|
1243
1271
|
/** @docs-private */
|
|
1244
1272
|
onOpen(): void;
|
|
1273
|
+
/**
|
|
1274
|
+
* Values of the currently selected nodes, in the shape `treeControl.compareValues` understands.
|
|
1275
|
+
* Read from the pipe's own state rather than the select's selection model: the select applies a
|
|
1276
|
+
* value written ahead of its data only once the options render, which is after `onOpen` fires.
|
|
1277
|
+
*
|
|
1278
|
+
* @docs-private
|
|
1279
|
+
*/
|
|
1280
|
+
protected abstract getSelectedValues(): KbqSelectValue[];
|
|
1281
|
+
/**
|
|
1282
|
+
* Expands the ancestors of every selected node. Selected values are matched against the current
|
|
1283
|
+
* `dataNodes` by `compareValues`, not by flat-node reference: re-assigning `dataSource.data` rebuilds
|
|
1284
|
+
* the flat nodes, so a stale node reference would miss.
|
|
1285
|
+
*/
|
|
1286
|
+
private expandSelectedNodeAncestors;
|
|
1287
|
+
/** @docs-private */
|
|
1288
|
+
protected getSourceNode(node: KbqTreeSelectFlatNode): KbqTreeSelectNode;
|
|
1245
1289
|
protected transformer: (node: KbqTreeSelectNode, level: number, parent: KbqTreeSelectFlatNode | null) => KbqTreeSelectFlatNode;
|
|
1246
1290
|
protected getLevel: (node: KbqTreeSelectFlatNode) => number;
|
|
1247
1291
|
protected isExpandable: (node: KbqTreeSelectFlatNode) => boolean;
|
|
@@ -1252,6 +1296,15 @@ declare abstract class KbqTreeSelectPipeBase<V> extends KbqBasePipe<V> implement
|
|
|
1252
1296
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqTreeSelectPipeBase<any>, never, never, {}, {}, never, never, true, never>;
|
|
1253
1297
|
}
|
|
1254
1298
|
|
|
1299
|
+
/** Context available to a custom `multi-tree-select` value template. */
|
|
1300
|
+
interface KbqMultiTreeSelectValueTemplateContext<T extends KbqTreeSelectNode = KbqTreeSelectNode> {
|
|
1301
|
+
/** Pipe component instance, matching the implicit context of the flat select pipes. */
|
|
1302
|
+
$implicit: KbqPipeMultiTreeSelectComponent;
|
|
1303
|
+
/** Original node, including consumer-defined fields omitted from the flattened tree model. */
|
|
1304
|
+
option: T;
|
|
1305
|
+
/** Current search query. Defaults to `null`. */
|
|
1306
|
+
search: string | null;
|
|
1307
|
+
}
|
|
1255
1308
|
declare class KbqPipeMultiTreeSelectComponent extends KbqTreeSelectPipeBase<KbqSelectValue[]> implements OnInit {
|
|
1256
1309
|
/** @docs-private */
|
|
1257
1310
|
readonly tree: _angular_core.Signal<KbqTreeSelection<KbqTreeSelectFlatNode, KbqTreeSelectFlatNode>>;
|
|
@@ -1260,6 +1313,12 @@ declare class KbqPipeMultiTreeSelectComponent extends KbqTreeSelectPipeBase<KbqS
|
|
|
1260
1313
|
/** Whether the current pipe is empty. */
|
|
1261
1314
|
get isEmpty(): boolean;
|
|
1262
1315
|
get selectAllCheckboxState(): KbqPseudoCheckboxState;
|
|
1316
|
+
/**
|
|
1317
|
+
* Number of leaf nodes "select all" would toggle right now — template-only. Searching counts only
|
|
1318
|
+
* the matching leaves among the rendered options; the group ancestors shown for context are not
|
|
1319
|
+
* leaves and drop out of the count by construction.
|
|
1320
|
+
*/
|
|
1321
|
+
protected get selectAllCount(): number;
|
|
1263
1322
|
get numberOfSelectedLeaves(): number;
|
|
1264
1323
|
/** true if all options selected */
|
|
1265
1324
|
get allOptionsSelected(): boolean;
|
|
@@ -1285,6 +1344,16 @@ declare class KbqPipeMultiTreeSelectComponent extends KbqTreeSelectPipeBase<KbqS
|
|
|
1285
1344
|
ngOnInit(): void;
|
|
1286
1345
|
ngAfterViewInit(): void;
|
|
1287
1346
|
isNodeSelectAll(_: number, nodeData: KbqTreeSelectFlatNode): boolean;
|
|
1347
|
+
/**
|
|
1348
|
+
* The committed value rather than `multiSelect.selected`: that snapshot is only refreshed on
|
|
1349
|
+
* initialization, clearing and a full selection, so a user-made partial selection would leave
|
|
1350
|
+
* the ancestors of the current value collapsed on reopen.
|
|
1351
|
+
*
|
|
1352
|
+
* @docs-private
|
|
1353
|
+
*/
|
|
1354
|
+
protected getSelectedValues(): KbqSelectValue[];
|
|
1355
|
+
/** @docs-private */
|
|
1356
|
+
protected getValueTemplateContext(node: KbqTreeSelectFlatNode): KbqMultiTreeSelectValueTemplateContext;
|
|
1288
1357
|
onSelect({ value: option }: {
|
|
1289
1358
|
value: any;
|
|
1290
1359
|
}): void;
|
|
@@ -1325,6 +1394,8 @@ declare class KbqPipeReadonlyComponent extends KbqBasePipe<string | null> {
|
|
|
1325
1394
|
declare class KbqPipeSelectComponent extends KbqBasePipe<KbqSelectValue> implements AfterViewInit {
|
|
1326
1395
|
/** control for search options */
|
|
1327
1396
|
readonly searchControl: FormControl<string | null>;
|
|
1397
|
+
/** Query tokens for option highlighting: tokenized like the filter, so every matched token is marked. */
|
|
1398
|
+
readonly searchTokens: Signal<string[]>;
|
|
1328
1399
|
/**
|
|
1329
1400
|
* Options of the pipe template that match the search query. Follows the templates too, so options
|
|
1330
1401
|
* supplied after initialization render on first open.
|
|
@@ -1374,6 +1445,8 @@ declare class KbqPipeTreeSelectComponent extends KbqTreeSelectPipeBase<KbqSelect
|
|
|
1374
1445
|
/** Whether the current pipe is empty. */
|
|
1375
1446
|
get isEmpty(): boolean;
|
|
1376
1447
|
constructor();
|
|
1448
|
+
/** @docs-private */
|
|
1449
|
+
protected getSelectedValues(): KbqSelectValue[];
|
|
1377
1450
|
onSelect(item: KbqTreeOption): void;
|
|
1378
1451
|
/**
|
|
1379
1452
|
* Populates the tree data source from the pipe template. The shared `values`/`valueTemplate`
|
|
@@ -1386,4 +1459,4 @@ declare class KbqPipeTreeSelectComponent extends KbqTreeSelectPipeBase<KbqSelect
|
|
|
1386
1459
|
}
|
|
1387
1460
|
|
|
1388
1461
|
export { KBQ_FILTERS, KBQ_FILTER_BAR_CONFIGURATION, KBQ_FILTER_BAR_DEFAULT_CONFIGURATION, KBQ_FILTER_BAR_DEFAULT_LOCALE_CONFIGURATION, KBQ_FILTER_BAR_HOST, KBQ_FILTER_BAR_LOCALE_CONFIGURATION, KBQ_FILTER_BAR_PIPES, KBQ_PIPE_DATA, KbqBasePipe, KbqFilterBar, KbqFilterBarButton, KbqFilterBarModule, KbqFilterRefresher, KbqFilterReset, KbqFilterSavePopover, KbqFilters, KbqPipeAdd, KbqPipeButton, KbqPipeDateBaseComponent, KbqPipeDateComponent, KbqPipeDatetimeComponent, KbqPipeDirective, KbqPipeInputComponent, KbqPipeMultiSelectComponent, KbqPipeMultiTreeSelectComponent, KbqPipeReadonlyComponent, KbqPipeSelectComponent, KbqPipeState, KbqPipeTextComponent, KbqPipeTreeSelectComponent, KbqPipeTypes, KbqSaveFilterStatuses, KbqTreeSelectFlatNode, KbqTreeSelectPipeBase, defaultFilterBarPipes, getId, kbqBuildTree, kbqFilterBarLocaleConfigurationProvider, kbqFilterBarPipesProvider };
|
|
1389
|
-
export type { KbqDateTimeValue, KbqFilter, KbqFilterBarHost, KbqFilterBarPipeState, KbqFilterBarState, KbqFiltersHost, KbqPipe, KbqPipeData, KbqPipeTemplate, KbqPipeType, KbqSaveFilterError, KbqSaveFilterEvent, KbqSelectValue, KbqTreeSelectNode };
|
|
1462
|
+
export type { KbqDateTimeValue, KbqFilter, KbqFilterBarHost, KbqFilterBarPipeState, KbqFilterBarState, KbqFiltersHost, KbqMultiTreeSelectValueTemplateContext, KbqPipe, KbqPipeData, KbqPipeTemplate, KbqPipeType, KbqSaveFilterError, KbqSaveFilterEvent, KbqSelectValue, KbqTreeSelectNode };
|
|
@@ -53,6 +53,24 @@ declare class KbqFlag {
|
|
|
53
53
|
* projected image (`alt`, `<title>`) has to repeat it here.
|
|
54
54
|
*/
|
|
55
55
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
56
|
+
/**
|
|
57
|
+
* Value of `role`.
|
|
58
|
+
*
|
|
59
|
+
* @docs-private
|
|
60
|
+
*/
|
|
61
|
+
protected readonly resolvedRole: _angular_core.Signal<"img" | null>;
|
|
62
|
+
/**
|
|
63
|
+
* Value of `aria-label`.
|
|
64
|
+
*
|
|
65
|
+
* @docs-private
|
|
66
|
+
*/
|
|
67
|
+
protected readonly resolvedAriaLabel: _angular_core.Signal<string | null>;
|
|
68
|
+
/**
|
|
69
|
+
* Value of `aria-hidden`.
|
|
70
|
+
*
|
|
71
|
+
* @docs-private
|
|
72
|
+
*/
|
|
73
|
+
protected readonly resolvedAriaHidden: _angular_core.Signal<"true" | null>;
|
|
56
74
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqFlag, never>;
|
|
57
75
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<KbqFlag, "kbq-flag", ["kbqFlag"], { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "svg": { "alias": "svg"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
58
76
|
}
|
|
@@ -33,6 +33,13 @@ declare abstract class KbqFormFieldControl<T> {
|
|
|
33
33
|
readonly disabled: Signal<boolean>;
|
|
34
34
|
/** Whether the control is in an error state. */
|
|
35
35
|
readonly errorState: Signal<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Whether the control is read-only: it can be focused and its value selected and copied, but not changed.
|
|
38
|
+
*
|
|
39
|
+
* Implement it only on a control that has a read-only state. `KbqFormField` then hides the cleaner and adds
|
|
40
|
+
* the `kbq-form-field_readonly` class.
|
|
41
|
+
*/
|
|
42
|
+
readonly readonly?: Signal<boolean>;
|
|
36
43
|
/**
|
|
37
44
|
* Whether the control's value was filled in by the browser.
|
|
38
45
|
*
|
|
@@ -138,19 +145,57 @@ declare class KbqCleaner extends KbqIconButton implements AfterContentInit {
|
|
|
138
145
|
static ɵcmp: i0.ɵɵComponentDeclaration<KbqCleaner, "kbq-cleaner", ["kbqCleaner"], { "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.KbqLocaleOverridesDirective; inputs: { "kbqLocaleOverrides": "localeOverrides"; }; outputs: {}; }]>;
|
|
139
146
|
}
|
|
140
147
|
|
|
148
|
+
/**
|
|
149
|
+
* State that a control gives to the hints projected into it. A hint's own input can only add to it: `[compact]="false"`
|
|
150
|
+
* does not cancel `compact` of the control.
|
|
151
|
+
*
|
|
152
|
+
* @docs-private
|
|
153
|
+
*/
|
|
154
|
+
interface KbqHintParentConfig {
|
|
155
|
+
/** Makes the hints smaller, as `KbqHint.compact` does. */
|
|
156
|
+
compact?: Signal<boolean>;
|
|
157
|
+
/** Disables `color` for the hint text, as `KbqHint.fillTextOff` does. */
|
|
158
|
+
fillTextOff?: Signal<boolean>;
|
|
159
|
+
/**
|
|
160
|
+
* Whether the control is disabled. Its hints then show in the disabled color what no `color` paints: a hint
|
|
161
|
+
* without `color` with its icons that have no color of their own, and the text of a hint with `fillTextOff`. A
|
|
162
|
+
* color set on the hint or on its icon wins. A hint has no `disabled` of its own: it is not interactive, so only the
|
|
163
|
+
* state of its control applies.
|
|
164
|
+
*/
|
|
165
|
+
disabled?: Signal<boolean>;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Lets a control set the state of the hints projected into it, so that it does not restyle them.
|
|
169
|
+
*
|
|
170
|
+
* @docs-private
|
|
171
|
+
*/
|
|
172
|
+
declare const KBQ_HINT_PARENT: InjectionToken<KbqHintParentConfig>;
|
|
173
|
+
/**
|
|
174
|
+
* Provides `KBQ_HINT_PARENT`. The factory runs in the injection context of the control, so it can inject the control.
|
|
175
|
+
*
|
|
176
|
+
* @docs-private
|
|
177
|
+
*/
|
|
178
|
+
declare const kbqHintParentFactoryProvider: (factory: () => KbqHintParentConfig) => Provider;
|
|
141
179
|
/** Hint text to be shown below the form field control. */
|
|
142
180
|
declare class KbqHint extends KbqColorDirective {
|
|
181
|
+
private readonly parent;
|
|
143
182
|
/** Unique ID for the hint. Referenced by the `aria-describedby` of the form field control. */
|
|
144
183
|
readonly id: i0.InputSignal<string>;
|
|
145
184
|
/** Disables `color` for the hint text. */
|
|
146
185
|
readonly fillTextOff: i0.InputSignalWithTransform<boolean, unknown>;
|
|
147
186
|
/** Makes the hint size smaller. */
|
|
148
187
|
readonly compact: i0.InputSignalWithTransform<boolean, unknown>;
|
|
188
|
+
/** @docs-private */
|
|
189
|
+
protected readonly isFillTextOff: Signal<boolean>;
|
|
190
|
+
/** @docs-private */
|
|
191
|
+
protected readonly isCompact: Signal<boolean>;
|
|
192
|
+
/** @docs-private */
|
|
193
|
+
protected readonly isDisabled: Signal<boolean>;
|
|
149
194
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqHint, never>;
|
|
150
195
|
static ɵcmp: i0.ɵɵComponentDeclaration<KbqHint, "kbq-hint", ["kbqHint"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "fillTextOff": { "alias": "fillTextOff"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, ["[kbq-icon]", "*"], true, never>;
|
|
151
196
|
}
|
|
152
197
|
|
|
153
|
-
/** Error text to be shown below the form field control. */
|
|
198
|
+
/** Error text to be shown below the form field control. It keeps the error color under a disabled control too. */
|
|
154
199
|
declare class KbqError extends KbqHint {
|
|
155
200
|
constructor();
|
|
156
201
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqError, never>;
|
|
@@ -256,6 +301,8 @@ type KbqStepperControl = {
|
|
|
256
301
|
readonly controlType: 'input-number';
|
|
257
302
|
/** Read by the template, so it has to be backed by a signal for the stepper to follow it. */
|
|
258
303
|
readonly disabled: boolean;
|
|
304
|
+
/** Whether the field is read-only: the stepper stays visible but does not step. */
|
|
305
|
+
readonly readonly: Signal<boolean>;
|
|
259
306
|
/** A signal since the input review: `step` is an `input()` on `KbqNumberInput`. */
|
|
260
307
|
readonly step: Signal<number>;
|
|
261
308
|
stepUp: (step: number) => void;
|
|
@@ -287,6 +334,12 @@ declare class KbqStepper {
|
|
|
287
334
|
* @docs-private
|
|
288
335
|
*/
|
|
289
336
|
protected readonly control: Signal<KbqStepperControl>;
|
|
337
|
+
/**
|
|
338
|
+
* Whether the steps are blocked. A read-only field keeps the stepper visible, as a disabled one does.
|
|
339
|
+
*
|
|
340
|
+
* @docs-private
|
|
341
|
+
*/
|
|
342
|
+
protected readonly inactive: Signal<boolean>;
|
|
290
343
|
constructor();
|
|
291
344
|
/** @docs-private */
|
|
292
345
|
onStepUp(event: MouseEvent): void;
|
|
@@ -324,6 +377,8 @@ type KbqFormFieldDefaultOptions = Partial<{
|
|
|
324
377
|
labelClass: string | string[] | Set<string>;
|
|
325
378
|
/** Additional CSS classes applied to the content wrapper element. */
|
|
326
379
|
contentClass: string | string[] | Set<string>;
|
|
380
|
+
/** Whether the label of a required control ends with the `*` marker. */
|
|
381
|
+
showRequiredMarker: boolean;
|
|
327
382
|
}>;
|
|
328
383
|
/**
|
|
329
384
|
* Injection token that can be used to configure the default options for all kbq-form-field's.
|
|
@@ -341,6 +396,8 @@ declare const KBQ_FORM_FIELD_DEFAULT_OPTIONS: InjectionToken<Partial<{
|
|
|
341
396
|
labelClass: string | string[] | Set<string>;
|
|
342
397
|
/** Additional CSS classes applied to the content wrapper element. */
|
|
343
398
|
contentClass: string | string[] | Set<string>;
|
|
399
|
+
/** Whether the label of a required control ends with the `*` marker. */
|
|
400
|
+
showRequiredMarker: boolean;
|
|
344
401
|
}>>;
|
|
345
402
|
/** Utility provider for `KBQ_FORM_FIELD_DEFAULT_OPTIONS`. */
|
|
346
403
|
declare const kbqFormFieldDefaultOptionsProvider: (options: KbqFormFieldDefaultOptions) => Provider;
|
|
@@ -365,6 +422,11 @@ declare class KbqFormField extends KbqColorDirective implements AfterContentInit
|
|
|
365
422
|
readonly labelClass: i0.InputSignal<string | string[] | Set<string> | undefined>;
|
|
366
423
|
/** Additional CSS classes applied to the content wrapper element. */
|
|
367
424
|
readonly contentClass: i0.InputSignal<string | string[] | Set<string> | undefined>;
|
|
425
|
+
/**
|
|
426
|
+
* Whether the label of a required control ends with the `*` marker. A control is required by its `required`
|
|
427
|
+
* state or by `Validators.required` on its form control.
|
|
428
|
+
*/
|
|
429
|
+
readonly showRequiredMarker: i0.InputSignalWithTransform<boolean, unknown>;
|
|
368
430
|
/**
|
|
369
431
|
* The form field control.
|
|
370
432
|
*
|
|
@@ -427,6 +489,17 @@ declare class KbqFormField extends KbqColorDirective implements AfterContentInit
|
|
|
427
489
|
* @docs-private
|
|
428
490
|
*/
|
|
429
491
|
protected readonly hasLabel: Signal<boolean>;
|
|
492
|
+
/**
|
|
493
|
+
* Whether the bound form control has `Validators.required`. Re-read on every content check: the validators of a
|
|
494
|
+
* control notify nothing a signal could follow.
|
|
495
|
+
*/
|
|
496
|
+
private readonly requiredByValidator;
|
|
497
|
+
/**
|
|
498
|
+
* Whether the label ends with the required marker.
|
|
499
|
+
*
|
|
500
|
+
* @docs-private
|
|
501
|
+
*/
|
|
502
|
+
protected readonly hasRequiredMarker: Signal<boolean>;
|
|
430
503
|
/**
|
|
431
504
|
* Id of the rendered label, or `null` when the form field has no label.
|
|
432
505
|
*
|
|
@@ -491,13 +564,15 @@ declare class KbqFormField extends KbqColorDirective implements AfterContentInit
|
|
|
491
564
|
get hasFocus(): boolean;
|
|
492
565
|
/**
|
|
493
566
|
* Whether the cleaner can be displayed: it requires a projected `kbq-cleaner`, an enabled control
|
|
494
|
-
* and a value that is not empty.
|
|
567
|
+
* that is not read-only and a value that is not empty.
|
|
495
568
|
*
|
|
496
569
|
* @docs-private
|
|
497
570
|
*/
|
|
498
571
|
get canShowCleaner(): boolean;
|
|
499
572
|
/** Whether the form field is disabled. */
|
|
500
573
|
get disabled(): boolean;
|
|
574
|
+
/** Whether the form field control is read-only. */
|
|
575
|
+
readonly readonly: Signal<boolean>;
|
|
501
576
|
/**
|
|
502
577
|
* Whether the form field control's value was filled in by the browser. Controls that cannot be
|
|
503
578
|
* autofilled do not implement `autofilled`, and report `false` here.
|
|
@@ -563,7 +638,7 @@ declare class KbqFormField extends KbqColorDirective implements AfterContentInit
|
|
|
563
638
|
/** Initializes the form field control. */
|
|
564
639
|
private initializeControl;
|
|
565
640
|
static ɵfac: i0.ɵɵFactoryDeclaration<KbqFormField, never>;
|
|
566
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KbqFormField, "kbq-form-field", ["kbqFormField"], { "noBorders": { "alias": "noBorders"; "required": false; "isSignal": true; }; "inOverlay": { "alias": "inOverlay"; "required": false; "isSignal": true; }; "horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; "labelClass": { "alias": "labelClass"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; }, { "inOverlay": "inOverlayChange"; }, ["control", "stepper", "cleaner", "passwordToggle", "hint", "suffix", "prefix", "controlElementRef", "reactivePasswordHint", "error", "label"], ["kbq-label", "[kbqPrefix]", "*", "kbq-cleaner", "kbq-password-toggle, kbq-stepper, [kbqSuffix]", "kbq-error", "kbq-hint, kbq-reactive-password-hint"], true, never>;
|
|
641
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KbqFormField, "kbq-form-field", ["kbqFormField"], { "noBorders": { "alias": "noBorders"; "required": false; "isSignal": true; }; "inOverlay": { "alias": "inOverlay"; "required": false; "isSignal": true; }; "horizontal": { "alias": "horizontal"; "required": false; "isSignal": true; }; "labelClass": { "alias": "labelClass"; "required": false; "isSignal": true; }; "contentClass": { "alias": "contentClass"; "required": false; "isSignal": true; }; "showRequiredMarker": { "alias": "showRequiredMarker"; "required": false; "isSignal": true; }; }, { "inOverlay": "inOverlayChange"; }, ["control", "stepper", "cleaner", "passwordToggle", "hint", "suffix", "prefix", "controlElementRef", "reactivePasswordHint", "error", "label"], ["kbq-label", "[kbqPrefix]", "*", "kbq-cleaner", "kbq-password-toggle, kbq-stepper, [kbqSuffix]", "kbq-error", "kbq-hint, kbq-reactive-password-hint"], true, never>;
|
|
567
642
|
}
|
|
568
643
|
/**
|
|
569
644
|
* Trims the value of `kbqInput` and `kbqTextarea` before it reaches the model.
|
|
@@ -602,12 +677,18 @@ declare class KbqReactivePasswordHint extends KbqHint {
|
|
|
602
677
|
readonly hasError: i0.InputSignalWithTransform<boolean, unknown>;
|
|
603
678
|
/** Disables `color` for the hint text. */
|
|
604
679
|
readonly fillTextOff: i0.InputSignalWithTransform<boolean, unknown>;
|
|
680
|
+
/**
|
|
681
|
+
* A password hint keeps its size under any control, so `compact` of the control does not apply to it.
|
|
682
|
+
*
|
|
683
|
+
* @docs-private
|
|
684
|
+
*/
|
|
685
|
+
protected readonly isCompact: Signal<boolean>;
|
|
605
686
|
/**
|
|
606
687
|
* The form field hint icon.
|
|
607
688
|
*
|
|
608
689
|
* @docs-private
|
|
609
690
|
*/
|
|
610
|
-
protected readonly icon:
|
|
691
|
+
protected readonly icon: Signal<"kbq-xmark-s_16" | "kbq-check-s_16">;
|
|
611
692
|
constructor();
|
|
612
693
|
private updateColor;
|
|
613
694
|
private makeColor;
|
|
@@ -621,5 +702,5 @@ declare class KbqFormFieldModule {
|
|
|
621
702
|
static ɵinj: i0.ɵɵInjectorDeclaration<KbqFormFieldModule>;
|
|
622
703
|
}
|
|
623
704
|
|
|
624
|
-
export { KBQ_CLEANER_CONTEXT, KBQ_FORM_FIELD, KBQ_FORM_FIELD_DEFAULT_OPTIONS, KbqCleaner, KbqError, KbqFieldset, KbqFieldsetItem, KbqFormField, KbqFormFieldControl, KbqFormFieldModule, KbqHint, KbqLabel, KbqLegend, KbqPasswordToggle, KbqPrefix, KbqReactivePasswordHint, KbqStepper, KbqSuffix, KbqTrim, kbqCleanerFactoryProvider, kbqFormFieldDefaultOptionsProvider };
|
|
625
|
-
export type { KbqCleanerContext, KbqCleanerContextBase, KbqFormFieldDefaultOptions };
|
|
705
|
+
export { KBQ_CLEANER_CONTEXT, KBQ_FORM_FIELD, KBQ_FORM_FIELD_DEFAULT_OPTIONS, KBQ_HINT_PARENT, KbqCleaner, KbqError, KbqFieldset, KbqFieldsetItem, KbqFormField, KbqFormFieldControl, KbqFormFieldModule, KbqHint, KbqLabel, KbqLegend, KbqPasswordToggle, KbqPrefix, KbqReactivePasswordHint, KbqStepper, KbqSuffix, KbqTrim, kbqCleanerFactoryProvider, kbqFormFieldDefaultOptionsProvider, kbqHintParentFactoryProvider };
|
|
706
|
+
export type { KbqCleanerContext, KbqCleanerContextBase, KbqFormFieldDefaultOptions, KbqHintParentConfig };
|
|
@@ -42,6 +42,13 @@ declare class KbqIconRegistry {
|
|
|
42
42
|
* Accepts "namespace:name" syntax.
|
|
43
43
|
*/
|
|
44
44
|
getNamedSvgIcon(name: string, namespace?: string): Observable<SVGElement>;
|
|
45
|
+
/**
|
|
46
|
+
* `getNamedSvgIcon` without the error for a miss: `null` when nothing registered can resolve the name. Every font
|
|
47
|
+
* icon is looked up, and an error per miss would cost a stack trace each.
|
|
48
|
+
*
|
|
49
|
+
* @docs-private
|
|
50
|
+
*/
|
|
51
|
+
findSvgIcon(name: string, namespace?: string): Observable<SVGElement> | null;
|
|
45
52
|
private cacheIcon;
|
|
46
53
|
private loadIcon;
|
|
47
54
|
private registerIconSet;
|
|
@@ -105,6 +112,14 @@ declare class KbqIcon extends KbqColorDirective implements AfterContentInit, OnC
|
|
|
105
112
|
*/
|
|
106
113
|
protected get autoColorError(): boolean;
|
|
107
114
|
private readonly hostErrorState;
|
|
115
|
+
/**
|
|
116
|
+
* Whether `color` is the error color. A signal of its own because the color class binding already reads
|
|
117
|
+
* `color`: the host bindings of every icon in a view run in that view's reactive consumer, which finds a
|
|
118
|
+
* signal read a second time by scanning all it has read so far, O(N²) per check across N icons.
|
|
119
|
+
*
|
|
120
|
+
* @docs-private
|
|
121
|
+
*/
|
|
122
|
+
protected readonly colorIsError: _angular_core.Signal<boolean>;
|
|
108
123
|
/** Name of an icon within a `@koobiq/icons`. Accepts "namespace:name" syntax. */
|
|
109
124
|
iconName: string | undefined;
|
|
110
125
|
/** @docs-private */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_cdk_overlay from '@angular/cdk/overlay';
|
|
2
|
-
import { ScrollStrategy, CdkConnectedOverlay } from '@angular/cdk/overlay';
|
|
2
|
+
import { ScrollStrategy, CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';
|
|
3
3
|
import * as _angular_core from '@angular/core';
|
|
4
4
|
import { InjectionToken, ElementRef, TemplateRef } from '@angular/core';
|
|
5
5
|
import * as _koobiq_components_core from '@koobiq/components/core';
|
|
@@ -192,6 +192,13 @@ declare class KbqInlineEdit implements KbqConnectedOverlayOriginProvider, KbqInl
|
|
|
192
192
|
protected readonly overlayWidth: _angular_core.WritableSignal<string | number>;
|
|
193
193
|
/** Distance the panel is pulled up by so that it covers the view it replaces. */
|
|
194
194
|
protected readonly overlayOffsetY: _angular_core.WritableSignal<number>;
|
|
195
|
+
/**
|
|
196
|
+
* Single overlay position that keeps the panel anchored to the view mode element. Fallback positions are
|
|
197
|
+
* intentionally omitted so the panel does not flip or get pushed away from the origin when space is tight.
|
|
198
|
+
*
|
|
199
|
+
* @docs-private
|
|
200
|
+
*/
|
|
201
|
+
protected readonly overlayPositions: ConnectedPosition[];
|
|
195
202
|
/**
|
|
196
203
|
* Built on first read rather than in the field initializer: a list of inline edits would otherwise
|
|
197
204
|
* allocate one strategy per row, including the rows nobody ever opens.
|
|
@@ -107,6 +107,11 @@ declare class KbqNumberInput implements ControlValueAccessor, OnDestroy {
|
|
|
107
107
|
/** Whether the field is disabled, bound with `[disabled]` or set by a form control. */
|
|
108
108
|
get disabled(): boolean;
|
|
109
109
|
private readonly disabledState;
|
|
110
|
+
/**
|
|
111
|
+
* Whether the field is read-only: the arrow keys, `kbq-stepper` and a paste leave the value as it is.
|
|
112
|
+
* `KbqInput` on the same element binds the native attribute. Defaults to `false`.
|
|
113
|
+
*/
|
|
114
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
110
115
|
focused: boolean;
|
|
111
116
|
get nativeElement(): HTMLInputElement;
|
|
112
117
|
get viewValue(): string;
|
|
@@ -130,6 +135,8 @@ declare class KbqNumberInput implements ControlValueAccessor, OnDestroy {
|
|
|
130
135
|
protected get fractionSeparator(): KbqInputNumberLocaleConfiguration['fractionSeparator'];
|
|
131
136
|
protected get groupSeparator(): KbqInputNumberLocaleConfiguration['groupSeparator'];
|
|
132
137
|
private get config();
|
|
138
|
+
private get stepMin();
|
|
139
|
+
private get stepMax();
|
|
133
140
|
private readonly localeConfiguration;
|
|
134
141
|
private valueFromPaste;
|
|
135
142
|
/** Pending `onInput` reformats by timer handle: cancelled on destroy, run at once before a step. */
|
|
@@ -172,6 +179,8 @@ declare class KbqNumberInput implements ControlValueAccessor, OnDestroy {
|
|
|
172
179
|
*/
|
|
173
180
|
private correctCaretForSeparator;
|
|
174
181
|
private setViewValue;
|
|
182
|
+
private isBeyondSafeRange;
|
|
183
|
+
private clampToSafeRange;
|
|
175
184
|
/** Writes a value from outside the field: reformats it and reports the change. */
|
|
176
185
|
private setValue;
|
|
177
186
|
private setDisabled;
|
|
@@ -180,7 +189,7 @@ declare class KbqNumberInput implements ControlValueAccessor, OnDestroy {
|
|
|
180
189
|
private formatNumber;
|
|
181
190
|
private createLocalizedNumberFromParts;
|
|
182
191
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqNumberInput, never>;
|
|
183
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqNumberInput, "input[kbqNumberInput]", ["kbqNumberInput", "kbqNumericalInput"], { "integer": { "alias": "integer"; "required": false; "isSignal": true; }; "bigStep": { "alias": "bigStep"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "withThousandSeparator": { "alias": "withThousandSeparator"; "required": false; "isSignal": true; }; "startFormattingFrom": { "alias": "startFormattingFrom"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.KbqLocaleOverridesDirective; inputs: { "kbqLocaleOverrides": "localeOverrides"; }; outputs: {}; }]>;
|
|
192
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqNumberInput, "input[kbqNumberInput]", ["kbqNumberInput", "kbqNumericalInput"], { "integer": { "alias": "integer"; "required": false; "isSignal": true; }; "bigStep": { "alias": "bigStep"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "withThousandSeparator": { "alias": "withThousandSeparator"; "required": false; "isSignal": true; }; "startFormattingFrom": { "alias": "startFormattingFrom"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.KbqLocaleOverridesDirective; inputs: { "kbqLocaleOverrides": "localeOverrides"; }; outputs: {}; }]>;
|
|
184
193
|
}
|
|
185
194
|
|
|
186
195
|
declare class KbqInput implements KbqFormFieldControl<any>, DoCheck, CanUpdateErrorState {
|
|
@@ -234,6 +243,11 @@ declare class KbqInput implements KbqFormFieldControl<any>, DoCheck, CanUpdateEr
|
|
|
234
243
|
* @docs-private
|
|
235
244
|
*/
|
|
236
245
|
readonly disabled: _angular_core.Signal<boolean>;
|
|
246
|
+
/**
|
|
247
|
+
* Whether the input is read-only: its value can be selected and copied, but not changed. A read-only
|
|
248
|
+
* input shows no placeholder. Defaults to `false`.
|
|
249
|
+
*/
|
|
250
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
237
251
|
/** @docs-private */
|
|
238
252
|
readonly idInput: _angular_core.InputSignal<string | undefined>;
|
|
239
253
|
/**
|
|
@@ -302,7 +316,7 @@ declare class KbqInput implements KbqFormFieldControl<any>, DoCheck, CanUpdateEr
|
|
|
302
316
|
protected isBadInput(): boolean;
|
|
303
317
|
private isEmpty;
|
|
304
318
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqInput, never>;
|
|
305
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqInput, "input[kbqInput],input[kbqNumberInput]", ["kbqInput"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "typeInput": { "alias": "type"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
319
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqInput, "input[kbqInput],input[kbqNumberInput]", ["kbqInput"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "typeInput": { "alias": "type"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
306
320
|
}
|
|
307
321
|
declare class KbqInputMono {
|
|
308
322
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqInputMono, never>;
|
|
@@ -400,6 +414,11 @@ declare class KbqInputPassword implements KbqFormFieldControl<any>, DoCheck, Can
|
|
|
400
414
|
* @docs-private
|
|
401
415
|
*/
|
|
402
416
|
readonly disabled: _angular_core.Signal<boolean>;
|
|
417
|
+
/**
|
|
418
|
+
* Whether the input is read-only: its value can be selected and copied, but not changed. A read-only
|
|
419
|
+
* input shows no placeholder. Defaults to `false`.
|
|
420
|
+
*/
|
|
421
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
403
422
|
/** @docs-private */
|
|
404
423
|
readonly idInput: _angular_core.InputSignal<string | undefined>;
|
|
405
424
|
/**
|
|
@@ -461,7 +480,7 @@ declare class KbqInputPassword implements KbqFormFieldControl<any>, DoCheck, Can
|
|
|
461
480
|
protected isBadInput(): boolean;
|
|
462
481
|
private isEmpty;
|
|
463
482
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<KbqInputPassword, never>;
|
|
464
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqInputPassword, "input[kbqInputPassword]", ["kbqInputPassword"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
483
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<KbqInputPassword, "input[kbqInputPassword]", ["kbqInputPassword"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "idInput": { "alias": "id"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
465
484
|
}
|
|
466
485
|
|
|
467
486
|
declare const KBQ_INPUT_VALUE_ACCESSOR: InjectionToken<{
|
|
@@ -536,6 +536,12 @@ declare class KbqListOption<T = any> implements OnDestroy, OnInit, IFocusableOpt
|
|
|
536
536
|
/** Whether the option is disabled, through its own input, its group or the list. */
|
|
537
537
|
get disabled(): boolean;
|
|
538
538
|
private readonly disabledState;
|
|
539
|
+
/**
|
|
540
|
+
* Value of `aria-disabled`: the disabled state, but a signal of its own, since `kbq-disabled` reads that one.
|
|
541
|
+
*
|
|
542
|
+
* @docs-private
|
|
543
|
+
*/
|
|
544
|
+
protected readonly ariaDisabled: _angular_core.Signal<true | null>;
|
|
539
545
|
/** @docs-private */
|
|
540
546
|
readonly draggableInput: _angular_core.InputSignalWithTransform<boolean, string | boolean | null | undefined>;
|
|
541
547
|
/**
|
|
@@ -211,6 +211,13 @@ declare class KbqModalComponent<T = any, R = any> extends KbqModalRef<T, R> impl
|
|
|
211
211
|
private focusMonitor;
|
|
212
212
|
private readonly inputModalityDetector;
|
|
213
213
|
private readonly injector;
|
|
214
|
+
/**
|
|
215
|
+
* Whether the dialog and its dim layer move without motion. Read from the dialog's own injector, under
|
|
216
|
+
* `options.injector` when the service opened it.
|
|
217
|
+
*
|
|
218
|
+
* @docs-private
|
|
219
|
+
*/
|
|
220
|
+
readonly animationsDisabled: boolean;
|
|
214
221
|
/** Accessible name for the icon-only close button. */
|
|
215
222
|
protected readonly a11yLocaleConfiguration: _angular_core.Signal<i1.KbqA11yLocaleConfiguration>;
|
|
216
223
|
protected readonly document: Document;
|