@ngneers/controls 0.0.1-next.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/fesm2022/ngneers-controls-accordion.mjs +234 -0
- package/fesm2022/ngneers-controls-accordion.mjs.map +1 -0
- package/fesm2022/ngneers-controls-api-ng.mjs +959 -0
- package/fesm2022/ngneers-controls-api-ng.mjs.map +1 -0
- package/fesm2022/ngneers-controls-api-resize.mjs +712 -0
- package/fesm2022/ngneers-controls-api-resize.mjs.map +1 -0
- package/fesm2022/ngneers-controls-api.mjs +347 -0
- package/fesm2022/ngneers-controls-api.mjs.map +1 -0
- package/fesm2022/ngneers-controls-avatar.mjs +77 -0
- package/fesm2022/ngneers-controls-avatar.mjs.map +1 -0
- package/fesm2022/ngneers-controls-base.mjs +620 -0
- package/fesm2022/ngneers-controls-base.mjs.map +1 -0
- package/fesm2022/ngneers-controls-breadcrumb.mjs +100 -0
- package/fesm2022/ngneers-controls-breadcrumb.mjs.map +1 -0
- package/fesm2022/ngneers-controls-button-group.mjs +110 -0
- package/fesm2022/ngneers-controls-button-group.mjs.map +1 -0
- package/fesm2022/ngneers-controls-button.mjs +83 -0
- package/fesm2022/ngneers-controls-button.mjs.map +1 -0
- package/fesm2022/ngneers-controls-calendar-time-CJT5AFlA.mjs +74 -0
- package/fesm2022/ngneers-controls-calendar-time-CJT5AFlA.mjs.map +1 -0
- package/fesm2022/ngneers-controls-calendar.mjs +801 -0
- package/fesm2022/ngneers-controls-calendar.mjs.map +1 -0
- package/fesm2022/ngneers-controls-checkbox.mjs +63 -0
- package/fesm2022/ngneers-controls-checkbox.mjs.map +1 -0
- package/fesm2022/ngneers-controls-chip.mjs +55 -0
- package/fesm2022/ngneers-controls-chip.mjs.map +1 -0
- package/fesm2022/ngneers-controls-default-icons.mjs +82 -0
- package/fesm2022/ngneers-controls-default-icons.mjs.map +1 -0
- package/fesm2022/ngneers-controls-defer.mjs +72 -0
- package/fesm2022/ngneers-controls-defer.mjs.map +1 -0
- package/fesm2022/ngneers-controls-dialog.mjs +407 -0
- package/fesm2022/ngneers-controls-dialog.mjs.map +1 -0
- package/fesm2022/ngneers-controls-directives.mjs +498 -0
- package/fesm2022/ngneers-controls-directives.mjs.map +1 -0
- package/fesm2022/ngneers-controls-drawer.mjs +271 -0
- package/fesm2022/ngneers-controls-drawer.mjs.map +1 -0
- package/fesm2022/ngneers-controls-edit-inplace.mjs +127 -0
- package/fesm2022/ngneers-controls-edit-inplace.mjs.map +1 -0
- package/fesm2022/ngneers-controls-errors.mjs +329 -0
- package/fesm2022/ngneers-controls-errors.mjs.map +1 -0
- package/fesm2022/ngneers-controls-filter.mjs +708 -0
- package/fesm2022/ngneers-controls-filter.mjs.map +1 -0
- package/fesm2022/ngneers-controls-hint.mjs +153 -0
- package/fesm2022/ngneers-controls-hint.mjs.map +1 -0
- package/fesm2022/ngneers-controls-i18n-translations-de.mjs +170 -0
- package/fesm2022/ngneers-controls-i18n-translations-de.mjs.map +1 -0
- package/fesm2022/ngneers-controls-i18n-translations-en.mjs +170 -0
- package/fesm2022/ngneers-controls-i18n-translations-en.mjs.map +1 -0
- package/fesm2022/ngneers-controls-i18n.mjs +57 -0
- package/fesm2022/ngneers-controls-i18n.mjs.map +1 -0
- package/fesm2022/ngneers-controls-icon.mjs +195 -0
- package/fesm2022/ngneers-controls-icon.mjs.map +1 -0
- package/fesm2022/ngneers-controls-inplace.mjs +150 -0
- package/fesm2022/ngneers-controls-inplace.mjs.map +1 -0
- package/fesm2022/ngneers-controls-input-field.mjs +165 -0
- package/fesm2022/ngneers-controls-input-field.mjs.map +1 -0
- package/fesm2022/ngneers-controls-input.mjs +72 -0
- package/fesm2022/ngneers-controls-input.mjs.map +1 -0
- package/fesm2022/ngneers-controls-item-view.mjs +473 -0
- package/fesm2022/ngneers-controls-item-view.mjs.map +1 -0
- package/fesm2022/ngneers-controls-list-box.mjs +281 -0
- package/fesm2022/ngneers-controls-list-box.mjs.map +1 -0
- package/fesm2022/ngneers-controls-mask-input.mjs +888 -0
- package/fesm2022/ngneers-controls-mask-input.mjs.map +1 -0
- package/fesm2022/ngneers-controls-menu.mjs +371 -0
- package/fesm2022/ngneers-controls-menu.mjs.map +1 -0
- package/fesm2022/ngneers-controls-message.mjs +30 -0
- package/fesm2022/ngneers-controls-message.mjs.map +1 -0
- package/fesm2022/ngneers-controls-number-input.mjs +366 -0
- package/fesm2022/ngneers-controls-number-input.mjs.map +1 -0
- package/fesm2022/ngneers-controls-paginator.mjs +129 -0
- package/fesm2022/ngneers-controls-paginator.mjs.map +1 -0
- package/fesm2022/ngneers-controls-popover.mjs +215 -0
- package/fesm2022/ngneers-controls-popover.mjs.map +1 -0
- package/fesm2022/ngneers-controls-progress.mjs +98 -0
- package/fesm2022/ngneers-controls-progress.mjs.map +1 -0
- package/fesm2022/ngneers-controls-radio.mjs +152 -0
- package/fesm2022/ngneers-controls-radio.mjs.map +1 -0
- package/fesm2022/ngneers-controls-roving-focus.mjs +323 -0
- package/fesm2022/ngneers-controls-roving-focus.mjs.map +1 -0
- package/fesm2022/ngneers-controls-scroll-shadow.mjs +65 -0
- package/fesm2022/ngneers-controls-scroll-shadow.mjs.map +1 -0
- package/fesm2022/ngneers-controls-scroller.mjs +308 -0
- package/fesm2022/ngneers-controls-scroller.mjs.map +1 -0
- package/fesm2022/ngneers-controls-select-button.mjs +58 -0
- package/fesm2022/ngneers-controls-select-button.mjs.map +1 -0
- package/fesm2022/ngneers-controls-select.mjs +417 -0
- package/fesm2022/ngneers-controls-select.mjs.map +1 -0
- package/fesm2022/ngneers-controls-slider.mjs +167 -0
- package/fesm2022/ngneers-controls-slider.mjs.map +1 -0
- package/fesm2022/ngneers-controls-snackbar.mjs +414 -0
- package/fesm2022/ngneers-controls-snackbar.mjs.map +1 -0
- package/fesm2022/ngneers-controls-spin-buttons.mjs +126 -0
- package/fesm2022/ngneers-controls-spin-buttons.mjs.map +1 -0
- package/fesm2022/ngneers-controls-spinner.mjs +184 -0
- package/fesm2022/ngneers-controls-spinner.mjs.map +1 -0
- package/fesm2022/ngneers-controls-splitter.mjs +604 -0
- package/fesm2022/ngneers-controls-splitter.mjs.map +1 -0
- package/fesm2022/ngneers-controls-state.mjs +185 -0
- package/fesm2022/ngneers-controls-state.mjs.map +1 -0
- package/fesm2022/ngneers-controls-switch.mjs +39 -0
- package/fesm2022/ngneers-controls-switch.mjs.map +1 -0
- package/fesm2022/ngneers-controls-table.mjs +2634 -0
- package/fesm2022/ngneers-controls-table.mjs.map +1 -0
- package/fesm2022/ngneers-controls-tabs.mjs +336 -0
- package/fesm2022/ngneers-controls-tabs.mjs.map +1 -0
- package/fesm2022/ngneers-controls-tag.mjs +30 -0
- package/fesm2022/ngneers-controls-tag.mjs.map +1 -0
- package/fesm2022/ngneers-controls-toast.mjs +350 -0
- package/fesm2022/ngneers-controls-toast.mjs.map +1 -0
- package/fesm2022/ngneers-controls-toggle-button.mjs +70 -0
- package/fesm2022/ngneers-controls-toggle-button.mjs.map +1 -0
- package/fesm2022/ngneers-controls-tooltip.mjs +506 -0
- package/fesm2022/ngneers-controls-tooltip.mjs.map +1 -0
- package/fesm2022/ngneers-controls-tree.mjs +599 -0
- package/fesm2022/ngneers-controls-tree.mjs.map +1 -0
- package/fesm2022/ngneers-controls-upload.mjs +377 -0
- package/fesm2022/ngneers-controls-upload.mjs.map +1 -0
- package/fesm2022/ngneers-controls-utils-ng.mjs +411 -0
- package/fesm2022/ngneers-controls-utils-ng.mjs.map +1 -0
- package/fesm2022/ngneers-controls-utils.mjs +261 -0
- package/fesm2022/ngneers-controls-utils.mjs.map +1 -0
- package/fesm2022/ngneers-controls.mjs +6 -0
- package/fesm2022/ngneers-controls.mjs.map +1 -0
- package/package.json +302 -0
- package/types/ngneers-controls-accordion.d.ts +139 -0
- package/types/ngneers-controls-api-ng.d.ts +364 -0
- package/types/ngneers-controls-api-resize.d.ts +318 -0
- package/types/ngneers-controls-api.d.ts +145 -0
- package/types/ngneers-controls-avatar.d.ts +54 -0
- package/types/ngneers-controls-base.d.ts +277 -0
- package/types/ngneers-controls-breadcrumb.d.ts +272 -0
- package/types/ngneers-controls-button-group.d.ts +46 -0
- package/types/ngneers-controls-button.d.ts +48 -0
- package/types/ngneers-controls-calendar.d.ts +466 -0
- package/types/ngneers-controls-checkbox.d.ts +40 -0
- package/types/ngneers-controls-chip.d.ts +202 -0
- package/types/ngneers-controls-default-icons.d.ts +5 -0
- package/types/ngneers-controls-defer.d.ts +48 -0
- package/types/ngneers-controls-dialog.d.ts +399 -0
- package/types/ngneers-controls-directives.d.ts +171 -0
- package/types/ngneers-controls-drawer.d.ts +308 -0
- package/types/ngneers-controls-edit-inplace.d.ts +263 -0
- package/types/ngneers-controls-errors.d.ts +155 -0
- package/types/ngneers-controls-filter.d.ts +609 -0
- package/types/ngneers-controls-hint.d.ts +88 -0
- package/types/ngneers-controls-i18n-translations-de.d.ts +164 -0
- package/types/ngneers-controls-i18n-translations-en.d.ts +164 -0
- package/types/ngneers-controls-i18n.d.ts +186 -0
- package/types/ngneers-controls-icon.d.ts +68 -0
- package/types/ngneers-controls-inplace.d.ts +98 -0
- package/types/ngneers-controls-input-field.d.ts +248 -0
- package/types/ngneers-controls-input.d.ts +30 -0
- package/types/ngneers-controls-item-view.d.ts +215 -0
- package/types/ngneers-controls-list-box.d.ts +334 -0
- package/types/ngneers-controls-mask-input.d.ts +434 -0
- package/types/ngneers-controls-menu.d.ts +192 -0
- package/types/ngneers-controls-message.d.ts +21 -0
- package/types/ngneers-controls-number-input.d.ts +146 -0
- package/types/ngneers-controls-paginator.d.ts +255 -0
- package/types/ngneers-controls-popover.d.ts +116 -0
- package/types/ngneers-controls-progress.d.ts +49 -0
- package/types/ngneers-controls-radio.d.ts +91 -0
- package/types/ngneers-controls-roving-focus.d.ts +107 -0
- package/types/ngneers-controls-scroll-shadow.d.ts +25 -0
- package/types/ngneers-controls-scroller.d.ts +151 -0
- package/types/ngneers-controls-select-button.d.ts +51 -0
- package/types/ngneers-controls-select.d.ts +409 -0
- package/types/ngneers-controls-slider.d.ts +57 -0
- package/types/ngneers-controls-snackbar.d.ts +330 -0
- package/types/ngneers-controls-spin-buttons.d.ts +69 -0
- package/types/ngneers-controls-spinner.d.ts +117 -0
- package/types/ngneers-controls-splitter.d.ts +465 -0
- package/types/ngneers-controls-state.d.ts +102 -0
- package/types/ngneers-controls-switch.d.ts +18 -0
- package/types/ngneers-controls-table.d.ts +3127 -0
- package/types/ngneers-controls-tabs.d.ts +118 -0
- package/types/ngneers-controls-tag.d.ts +21 -0
- package/types/ngneers-controls-toast.d.ts +298 -0
- package/types/ngneers-controls-toggle-button.d.ts +48 -0
- package/types/ngneers-controls-tooltip.d.ts +189 -0
- package/types/ngneers-controls-tree.d.ts +409 -0
- package/types/ngneers-controls-upload.d.ts +347 -0
- package/types/ngneers-controls-utils-ng.d.ts +129 -0
- package/types/ngneers-controls-utils.d.ts +130 -0
- package/types/ngneers-controls.d.ts +2 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
|
|
2
|
+
import { PositioningSizeConstraints, TooltipOptions } from '@ngneers/controls/api/ng';
|
|
3
|
+
import * as _ngneers_controls_themes from '@ngneers/controls-themes';
|
|
4
|
+
import * as _angular_core from '@angular/core';
|
|
5
|
+
import { OnDestroy, TemplateRef } from '@angular/core';
|
|
6
|
+
import { NgnBase } from '@ngneers/controls/base';
|
|
7
|
+
import { TimeSpan } from '@ngneers/controls/utils';
|
|
8
|
+
import { Placement } from '@floating-ui/dom';
|
|
9
|
+
|
|
10
|
+
type RelativeAnchorElementPositionData = {
|
|
11
|
+
start: number;
|
|
12
|
+
center: number;
|
|
13
|
+
end: number;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @category control
|
|
18
|
+
*/
|
|
19
|
+
declare class NgnTooltip extends NgnBase<'tooltip'> implements OnDestroy {
|
|
20
|
+
protected readonly theme: null;
|
|
21
|
+
private readonly _viewContainerRef;
|
|
22
|
+
private readonly _config;
|
|
23
|
+
private readonly _tooltip;
|
|
24
|
+
/**
|
|
25
|
+
* The content of the tooltip, can be a string or a TemplateRef.
|
|
26
|
+
* If the value is falsy, the tooltip will not be shown.
|
|
27
|
+
* @alias ngnTooltip
|
|
28
|
+
*/
|
|
29
|
+
readonly content: _angular_core.InputSignal<string | TemplateRef<unknown> | null | undefined>;
|
|
30
|
+
/**
|
|
31
|
+
* If set to `true`, the tooltip will only be shown if the anchor element is truncated. `""` is equivalent to `true`.
|
|
32
|
+
* @alias ngnTooltipShowOnlyIfTruncated
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
readonly showOnlyIfTruncated: _angular_core.InputSignal<boolean | "">;
|
|
36
|
+
/**
|
|
37
|
+
* The size constraints for the tooltip.
|
|
38
|
+
* This can be used to limit the width and height of the tooltip.
|
|
39
|
+
* If not provided, the tooltip is only constrained by the size of the screen.
|
|
40
|
+
* @alias ngnTooltipSize
|
|
41
|
+
*/
|
|
42
|
+
readonly size: _angular_core.InputSignal<PositioningSizeConstraints | null | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* The options for the tooltip.
|
|
45
|
+
* This is a shorthand for setting multiple options at once.
|
|
46
|
+
* The individual options take precedence over the options set here.
|
|
47
|
+
* @alias ngnTooltipOptions
|
|
48
|
+
*/
|
|
49
|
+
readonly options: _angular_core.InputSignal<Partial<TooltipOptions> | null | undefined>;
|
|
50
|
+
/**
|
|
51
|
+
* The placement of the tooltip relative to the anchor element.
|
|
52
|
+
* @alias ngnTooltipPlacement
|
|
53
|
+
* @default 'bottom'
|
|
54
|
+
*/
|
|
55
|
+
readonly placement: _angular_core.InputSignal<Placement | null | undefined>;
|
|
56
|
+
/**
|
|
57
|
+
* The offset in Pixels of the tooltip from the anchor element.
|
|
58
|
+
* @alias ngnTooltipOffset
|
|
59
|
+
* @default 4
|
|
60
|
+
*/
|
|
61
|
+
readonly offset: _angular_core.InputSignal<number | null | undefined>;
|
|
62
|
+
/**
|
|
63
|
+
* The delay before the tooltip is shown. If a number is provided, it is interpreted as milliseconds.
|
|
64
|
+
* @alias ngnTooltipShowDelay
|
|
65
|
+
* @default '0.5s'
|
|
66
|
+
*/
|
|
67
|
+
readonly showDelay: _angular_core.InputSignal<TimeSpan | null | undefined>;
|
|
68
|
+
/**
|
|
69
|
+
* The delay before the tooltip is hidden. If a number is provided, it is interpreted as milliseconds.
|
|
70
|
+
* @alias ngnTooltipHideDelay
|
|
71
|
+
* @default '0.1s'
|
|
72
|
+
*/
|
|
73
|
+
readonly hideDelay: _angular_core.InputSignal<TimeSpan | null | undefined>;
|
|
74
|
+
/**
|
|
75
|
+
* Whether to show an arrow pointing to the anchor element. `""` is equivalent to `true`.
|
|
76
|
+
* @alias ngnTooltipShowArrow
|
|
77
|
+
* @default true
|
|
78
|
+
*/
|
|
79
|
+
readonly showArrow: _angular_core.InputSignal<boolean | "" | null | undefined>;
|
|
80
|
+
/**
|
|
81
|
+
* Shows the tooltip on hover.
|
|
82
|
+
* @alias ngnTooltipShowOnHover
|
|
83
|
+
* @default true
|
|
84
|
+
*/
|
|
85
|
+
readonly showOnHover: _angular_core.InputSignal<boolean | "" | null | undefined>;
|
|
86
|
+
/**
|
|
87
|
+
* Shows the tooltip on focus.
|
|
88
|
+
* @alias ngnTooltipShowOnFocus
|
|
89
|
+
* @default true
|
|
90
|
+
*/
|
|
91
|
+
readonly showOnFocus: _angular_core.InputSignal<boolean | "" | null | undefined>;
|
|
92
|
+
/**
|
|
93
|
+
* Hides the tooltip (without delay) when the mouse hovers over the tooltip.
|
|
94
|
+
* @alias ngnTooltipHideOnTooltipHover
|
|
95
|
+
* @default false
|
|
96
|
+
*/
|
|
97
|
+
readonly hideOnTooltipHover: _angular_core.InputSignal<boolean | "" | null | undefined>;
|
|
98
|
+
/**
|
|
99
|
+
* Hides the tooltip (without delay) when the user clicks on the tooltip.
|
|
100
|
+
* @alias ngnTooltipHideOnClick
|
|
101
|
+
* @default true
|
|
102
|
+
*/
|
|
103
|
+
readonly hideOnClick: _angular_core.InputSignal<boolean | "" | null | undefined>;
|
|
104
|
+
/**
|
|
105
|
+
* Whether to automatically manage ARIA attributes for the tooltip.
|
|
106
|
+
* @alias ngnTooltipAutoAriaMode
|
|
107
|
+
* @default 'description'
|
|
108
|
+
*/
|
|
109
|
+
readonly autoAriaMode: _angular_core.InputSignal<"label" | "description" | "none" | null | undefined>;
|
|
110
|
+
readonly effectiveOptions: _angular_core.Signal<TooltipOptions>;
|
|
111
|
+
readonly tooltip: _angular_core.Signal<TooltipComponent | undefined>;
|
|
112
|
+
constructor();
|
|
113
|
+
ngOnDestroy(): void;
|
|
114
|
+
show(): void;
|
|
115
|
+
hide(): void;
|
|
116
|
+
protected onMouseEnter(): void;
|
|
117
|
+
protected onMouseLeave(): void;
|
|
118
|
+
protected onFocus(): void;
|
|
119
|
+
protected onBlur(): void;
|
|
120
|
+
private getTooltip;
|
|
121
|
+
private updateContent;
|
|
122
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnTooltip, never>;
|
|
123
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgnTooltip, "[ngnTooltip]", ["ngnTooltip"], { "content": { "alias": "ngnTooltip"; "required": false; "isSignal": true; }; "showOnlyIfTruncated": { "alias": "ngnTooltipShowOnlyIfTruncated"; "required": false; "isSignal": true; }; "size": { "alias": "ngnTooltipSize"; "required": false; "isSignal": true; }; "options": { "alias": "ngnTooltipOptions"; "required": false; "isSignal": true; }; "placement": { "alias": "ngnTooltipPlacement"; "required": false; "isSignal": true; }; "offset": { "alias": "ngnTooltipOffset"; "required": false; "isSignal": true; }; "showDelay": { "alias": "ngnTooltipShowDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "ngnTooltipHideDelay"; "required": false; "isSignal": true; }; "showArrow": { "alias": "ngnTooltipShowArrow"; "required": false; "isSignal": true; }; "showOnHover": { "alias": "ngnTooltipShowOnHover"; "required": false; "isSignal": true; }; "showOnFocus": { "alias": "ngnTooltipShowOnFocus"; "required": false; "isSignal": true; }; "hideOnTooltipHover": { "alias": "ngnTooltipHideOnTooltipHover"; "required": false; "isSignal": true; }; "hideOnClick": { "alias": "ngnTooltipHideOnClick"; "required": false; "isSignal": true; }; "autoAriaMode": { "alias": "ngnTooltipAutoAriaMode"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
124
|
+
}
|
|
125
|
+
declare class TooltipComponent extends NgnBase<'tooltip'> {
|
|
126
|
+
private _showHideTimeout?;
|
|
127
|
+
protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"tooltip", ["root", "content", "text", "with-arrow", "closing", "fade-in", "fade-out", "top", "bottom", "left", "right", "start", "end"], readonly []>>;
|
|
128
|
+
private readonly _config;
|
|
129
|
+
/**
|
|
130
|
+
* The anchor element to which the tooltip is attached.
|
|
131
|
+
*/
|
|
132
|
+
readonly anchor: _angular_core.InputSignal<HTMLElement>;
|
|
133
|
+
/**
|
|
134
|
+
* The text content of the tooltip.
|
|
135
|
+
*/
|
|
136
|
+
readonly text: _angular_core.InputSignal<string | null | undefined>;
|
|
137
|
+
/**
|
|
138
|
+
* The content template of the tooltip.
|
|
139
|
+
*/
|
|
140
|
+
readonly content: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
|
|
141
|
+
/**
|
|
142
|
+
* If set to `true`, the tooltip will only be shown if the anchor element is truncated. `""` is equivalent to `true`.
|
|
143
|
+
* @default `false`
|
|
144
|
+
*/
|
|
145
|
+
readonly showOnlyIfTruncated: _angular_core.InputSignal<boolean | "">;
|
|
146
|
+
/**
|
|
147
|
+
* The size constraints for the tooltip.
|
|
148
|
+
* This can be used to limit the width and height of the tooltip.
|
|
149
|
+
* If not provided, the tooltip is only constrained by the size of the screen.
|
|
150
|
+
*/
|
|
151
|
+
readonly size: _angular_core.InputSignal<PositioningSizeConstraints | null | undefined>;
|
|
152
|
+
/**
|
|
153
|
+
* The options for the tooltip.
|
|
154
|
+
*
|
|
155
|
+
*/
|
|
156
|
+
readonly options: _angular_core.InputSignal<TooltipOptions>;
|
|
157
|
+
protected readonly showDelayMs: _angular_core.Signal<number>;
|
|
158
|
+
protected readonly hideDelayMs: _angular_core.Signal<number>;
|
|
159
|
+
protected readonly position: _angular_core.WritableSignal<{
|
|
160
|
+
x: number;
|
|
161
|
+
y: number;
|
|
162
|
+
}>;
|
|
163
|
+
protected readonly positionClass: _angular_core.WritableSignal<string>;
|
|
164
|
+
protected readonly relativeAnchorElementPosition: _angular_core.WritableSignal<RelativeAnchorElementPositionData | undefined>;
|
|
165
|
+
private readonly _isShown;
|
|
166
|
+
private readonly _isClosing;
|
|
167
|
+
readonly id: string;
|
|
168
|
+
readonly isShown: _angular_core.Signal<boolean>;
|
|
169
|
+
readonly isClosing: _angular_core.Signal<boolean>;
|
|
170
|
+
private readonly _defaultContentTemplate;
|
|
171
|
+
protected readonly contentTemplate: _angular_core.Signal<TemplateRef<unknown>>;
|
|
172
|
+
private readonly _autoPos;
|
|
173
|
+
private readonly onDocumentKeyDownBound;
|
|
174
|
+
constructor();
|
|
175
|
+
show(skipDelay?: boolean): void;
|
|
176
|
+
hide(skipDelay?: boolean): void;
|
|
177
|
+
protected onMouseEnter(): void;
|
|
178
|
+
protected onMouseLeave(): void;
|
|
179
|
+
protected onClick(event: PointerEvent): void;
|
|
180
|
+
protected onDocumentKeyDown(event: KeyboardEvent): void;
|
|
181
|
+
protected onShow(): void;
|
|
182
|
+
protected onHide(): void;
|
|
183
|
+
protected onToggle(event: Event): void;
|
|
184
|
+
protected toPixels(value: number | undefined): string | undefined;
|
|
185
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TooltipComponent, never>;
|
|
186
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TooltipComponent, "ngn-tooltip", never, { "anchor": { "alias": "anchor"; "required": true; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "showOnlyIfTruncated": { "alias": "showOnlyIfTruncated"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export { NgnTooltip, TooltipComponent };
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { TemplateRef, OnInit } from '@angular/core';
|
|
3
|
+
import * as _ngneers_controls_api_ng from '@ngneers/controls/api/ng';
|
|
4
|
+
import { NgnStorageKind } from '@ngneers/controls/api/ng';
|
|
5
|
+
import * as _ngneers_controls_themes from '@ngneers/controls-themes';
|
|
6
|
+
import * as _ngneers_signal_translate from '@ngneers/signal-translate';
|
|
7
|
+
import { NgnTreeItem, NgnTreeItemsValue, FilterConfig } from '@ngneers/controls/api';
|
|
8
|
+
import { InputGeneric, maybeCallback } from '@ngneers/controls/utils';
|
|
9
|
+
import { ValueControlBase } from '@ngneers/controls/base';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Value type for the tree control.
|
|
13
|
+
* * When `multiple` is `true`, the value is an array of node values.
|
|
14
|
+
* * Otherwise it is a single node value.
|
|
15
|
+
*
|
|
16
|
+
* Uses {@link NgnTreeItemsValue} (branch + leaf values) rather than the
|
|
17
|
+
* leaf-only `NgnItemsValue`, since a branch node can be selected too.
|
|
18
|
+
*/
|
|
19
|
+
type ValueType<Items extends readonly NgnTreeItem[], Multiple extends boolean> = InputGeneric<Multiple, false> extends true ? NgnTreeItemsValue<Items>[] : NgnTreeItemsValue<Items>;
|
|
20
|
+
declare abstract class TreeTemplates<Items extends readonly NgnTreeItem[], Multiple extends boolean> extends ValueControlBase<'tree', ValueType<Items, Multiple> | null> {
|
|
21
|
+
private readonly _defaultItemTemplate;
|
|
22
|
+
private readonly _userItemTemplate;
|
|
23
|
+
/**
|
|
24
|
+
* Set a custom template for a tree node.
|
|
25
|
+
* Can also be set via an `<ng-template #item>` element. A per-node
|
|
26
|
+
* `item.template` takes precedence over this global template.
|
|
27
|
+
*/
|
|
28
|
+
readonly templateItem: _angular_core.InputSignal<TemplateRef<{
|
|
29
|
+
$implicit: Items[number] | undefined;
|
|
30
|
+
level: number;
|
|
31
|
+
expanded: boolean;
|
|
32
|
+
hasChildren: boolean;
|
|
33
|
+
}> | null>;
|
|
34
|
+
protected readonly itemTemplate: _angular_core.Signal<TemplateRef<{
|
|
35
|
+
$implicit: Items[number] | undefined;
|
|
36
|
+
level: number;
|
|
37
|
+
expanded: boolean;
|
|
38
|
+
hasChildren: boolean;
|
|
39
|
+
}>>;
|
|
40
|
+
private readonly _defaultEmptyTemplate;
|
|
41
|
+
private readonly _userEmptyTemplate;
|
|
42
|
+
/**
|
|
43
|
+
* Set a custom template for the empty state.
|
|
44
|
+
* Can also be set via an `<ng-template #empty>` element.
|
|
45
|
+
*/
|
|
46
|
+
readonly templateEmpty: _angular_core.InputSignal<TemplateRef<unknown> | null>;
|
|
47
|
+
protected readonly emptyTemplate: _angular_core.Signal<TemplateRef<unknown>>;
|
|
48
|
+
readonly templateTypes: {
|
|
49
|
+
item: {
|
|
50
|
+
$implicit: Items[number] | undefined;
|
|
51
|
+
level: number;
|
|
52
|
+
expanded: boolean;
|
|
53
|
+
hasChildren: boolean;
|
|
54
|
+
};
|
|
55
|
+
} & {
|
|
56
|
+
$implicit: {
|
|
57
|
+
item: Partial<{
|
|
58
|
+
$implicit: Items[number] | undefined;
|
|
59
|
+
level: number;
|
|
60
|
+
expanded: boolean;
|
|
61
|
+
hasChildren: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeTemplates<any, any>, never>;
|
|
66
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TreeTemplates<any, any>, never, never, { "templateItem": { "alias": "templateItem"; "required": false; "isSignal": true; }; "templateEmpty": { "alias": "templateEmpty"; "required": false; "isSignal": true; }; }, {}, ["_userItemTemplate", "_userEmptyTemplate"], never, true, never>;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
interface FlatTreeNode<T = any, V = any> {
|
|
70
|
+
item: NgnTreeItem<T, V>;
|
|
71
|
+
/** 0-based depth. */
|
|
72
|
+
level: number;
|
|
73
|
+
/** Number of siblings at this level (aria-setsize). */
|
|
74
|
+
setSize: number;
|
|
75
|
+
/** 1-based position among siblings (aria-posinset). */
|
|
76
|
+
posInSet: number;
|
|
77
|
+
hasChildren: boolean;
|
|
78
|
+
expanded: boolean;
|
|
79
|
+
/** True when an ancestor is disabled (disable cascades to the subtree). */
|
|
80
|
+
parentDisabled: boolean;
|
|
81
|
+
}
|
|
82
|
+
/** Walk the tree, emitting only expanded + visible nodes as a flat list. */
|
|
83
|
+
declare function flattenTree<T, V>(items: readonly NgnTreeItem<T, V>[], expanded: ReadonlySet<V>, level?: number, parentDisabled?: boolean): FlatTreeNode<T, V>[];
|
|
84
|
+
/**
|
|
85
|
+
* Inject lazily-loaded children (keyed by node value) into the tree, returning
|
|
86
|
+
* a new forest where resolved lazy nodes carry their loaded `items` and are no
|
|
87
|
+
* longer marked `lazy`. Returns the input unchanged when nothing is loaded.
|
|
88
|
+
*/
|
|
89
|
+
declare function applyLoadedChildren<T, V>(items: readonly NgnTreeItem<T, V>[], loaded: ReadonlyMap<V, readonly NgnTreeItem<T, V>[]>): readonly NgnTreeItem<T, V>[];
|
|
90
|
+
/** All selectable, enabled leaf values under (and including) an item. */
|
|
91
|
+
declare function collectLeafValues<T, V>(item: NgnTreeItem<T, V>, parentDisabled?: boolean): V[];
|
|
92
|
+
/** All branch values in the forest (used to auto-expand while filtering). */
|
|
93
|
+
declare function collectBranchValues<T, V>(items: readonly NgnTreeItem<T, V>[]): V[];
|
|
94
|
+
/** Add/remove all of a node's enabled leaf values against the current value set. */
|
|
95
|
+
declare function cascadeCheck<T, V>(node: NgnTreeItem<T, V>, shouldCheck: boolean, currentValue: readonly V[]): V[];
|
|
96
|
+
/** Derive a node's tri-state from which of its leaves are in the value set. */
|
|
97
|
+
declare function computeNodeState<T, V>(item: NgnTreeItem<T, V>, valueSet: ReadonlySet<V>): 'checked' | 'unchecked' | 'indeterminate';
|
|
98
|
+
|
|
99
|
+
/** The individual pieces of tree state that can be persisted. */
|
|
100
|
+
type NgnTreeStorageState = 'value' | 'expanded';
|
|
101
|
+
/**
|
|
102
|
+
* Configuration for persisting tree state (expansion + selection).
|
|
103
|
+
* Pass to the `storage` input, e.g. `{ key: 'my-tree' }` or
|
|
104
|
+
* `{ key: 'my-tree', kind: 'sessionstorage' }`.
|
|
105
|
+
*/
|
|
106
|
+
interface NgnTreeStorageConfig {
|
|
107
|
+
/** The storage key under which the state is saved. */
|
|
108
|
+
key: string;
|
|
109
|
+
/**
|
|
110
|
+
* Where/how to persist. Accepts `'localstorage'`, `'sessionstorage'`, or a
|
|
111
|
+
* custom `{ initialize, update }` adapter. Defaults to `'localstorage'`.
|
|
112
|
+
*/
|
|
113
|
+
kind?: NgnStorageKind<Record<string, unknown>>;
|
|
114
|
+
/**
|
|
115
|
+
* Which states to persist. When omitted, all states are saved. When
|
|
116
|
+
* provided, only the listed states are saved/restored.
|
|
117
|
+
*/
|
|
118
|
+
states?: NgnTreeStorageState[];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* @category control
|
|
122
|
+
*/
|
|
123
|
+
declare class NgnTree<Items extends readonly NgnTreeItem[], Multiple extends boolean = false> extends TreeTemplates<Items, Multiple> implements OnInit {
|
|
124
|
+
protected readonly i18n: _ngneers_signal_translate.TranslationsSignal<{
|
|
125
|
+
calendar: {
|
|
126
|
+
today: string;
|
|
127
|
+
input: string;
|
|
128
|
+
selectYear: string;
|
|
129
|
+
selectMonth: string;
|
|
130
|
+
previousMonth: string;
|
|
131
|
+
nextMonth: string;
|
|
132
|
+
weekdays: {
|
|
133
|
+
monday: string;
|
|
134
|
+
tuesday: string;
|
|
135
|
+
wednesday: string;
|
|
136
|
+
thursday: string;
|
|
137
|
+
friday: string;
|
|
138
|
+
saturday: string;
|
|
139
|
+
sunday: string;
|
|
140
|
+
};
|
|
141
|
+
weekdaysShort: {
|
|
142
|
+
monday: string;
|
|
143
|
+
tuesday: string;
|
|
144
|
+
wednesday: string;
|
|
145
|
+
thursday: string;
|
|
146
|
+
friday: string;
|
|
147
|
+
saturday: string;
|
|
148
|
+
sunday: string;
|
|
149
|
+
};
|
|
150
|
+
months: {
|
|
151
|
+
january: string;
|
|
152
|
+
february: string;
|
|
153
|
+
march: string;
|
|
154
|
+
april: string;
|
|
155
|
+
may: string;
|
|
156
|
+
june: string;
|
|
157
|
+
july: string;
|
|
158
|
+
august: string;
|
|
159
|
+
september: string;
|
|
160
|
+
october: string;
|
|
161
|
+
november: string;
|
|
162
|
+
december: string;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
editInplace: {
|
|
166
|
+
placeholder: string;
|
|
167
|
+
confirm: string;
|
|
168
|
+
};
|
|
169
|
+
filter: {
|
|
170
|
+
noFilter: string;
|
|
171
|
+
addCondition: string;
|
|
172
|
+
removeCondition: string;
|
|
173
|
+
operator: string;
|
|
174
|
+
value: string;
|
|
175
|
+
clear: string;
|
|
176
|
+
apply: string;
|
|
177
|
+
cancel: string;
|
|
178
|
+
matchModeLabel: string;
|
|
179
|
+
match: {
|
|
180
|
+
all: string;
|
|
181
|
+
any: string;
|
|
182
|
+
and: string;
|
|
183
|
+
or: string;
|
|
184
|
+
};
|
|
185
|
+
selected: string;
|
|
186
|
+
conditions: string;
|
|
187
|
+
operators: {
|
|
188
|
+
isEqual: string;
|
|
189
|
+
isNotEqual: string;
|
|
190
|
+
contains: string;
|
|
191
|
+
startsWith: string;
|
|
192
|
+
endsWith: string;
|
|
193
|
+
in: string;
|
|
194
|
+
isEmpty: string;
|
|
195
|
+
isNotEmpty: string;
|
|
196
|
+
greaterThan: string;
|
|
197
|
+
greaterThanOrEqual: string;
|
|
198
|
+
lessThan: string;
|
|
199
|
+
lessThanOrEqual: string;
|
|
200
|
+
after: string;
|
|
201
|
+
onOrAfter: string;
|
|
202
|
+
before: string;
|
|
203
|
+
onOrBefore: string;
|
|
204
|
+
isTrue: string;
|
|
205
|
+
isFalse: string;
|
|
206
|
+
custom: string;
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
splitter: {
|
|
210
|
+
handleLabel: string;
|
|
211
|
+
};
|
|
212
|
+
inputField: {
|
|
213
|
+
clearInput: string;
|
|
214
|
+
};
|
|
215
|
+
maskInput: {
|
|
216
|
+
roleDescription: string;
|
|
217
|
+
segmentRange: string;
|
|
218
|
+
optionSeparator: string;
|
|
219
|
+
};
|
|
220
|
+
drawer: {
|
|
221
|
+
close: string;
|
|
222
|
+
};
|
|
223
|
+
dialog: {
|
|
224
|
+
close: string;
|
|
225
|
+
};
|
|
226
|
+
chip: {
|
|
227
|
+
close: string;
|
|
228
|
+
};
|
|
229
|
+
breadcrumb: {
|
|
230
|
+
overflow: string;
|
|
231
|
+
};
|
|
232
|
+
toast: {
|
|
233
|
+
close: string;
|
|
234
|
+
region: string;
|
|
235
|
+
};
|
|
236
|
+
snackbar: {
|
|
237
|
+
close: string;
|
|
238
|
+
region: string;
|
|
239
|
+
severity: {
|
|
240
|
+
error: string;
|
|
241
|
+
warning: string;
|
|
242
|
+
success: string;
|
|
243
|
+
info: string;
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
upload: {
|
|
247
|
+
upload: string;
|
|
248
|
+
uploadNamed: string;
|
|
249
|
+
retryNamed: string;
|
|
250
|
+
cancelNamed: string;
|
|
251
|
+
removeNamed: string;
|
|
252
|
+
progressNamed: string;
|
|
253
|
+
};
|
|
254
|
+
select: {
|
|
255
|
+
filterOptions: string;
|
|
256
|
+
};
|
|
257
|
+
paginator: {
|
|
258
|
+
previousPage: string;
|
|
259
|
+
nextPage: string;
|
|
260
|
+
};
|
|
261
|
+
listBox: {
|
|
262
|
+
noItemsFound: string;
|
|
263
|
+
};
|
|
264
|
+
tree: {
|
|
265
|
+
noItemsFound: string;
|
|
266
|
+
};
|
|
267
|
+
table: {
|
|
268
|
+
selectAllRows: string;
|
|
269
|
+
selectRow: string;
|
|
270
|
+
sortedBy: string;
|
|
271
|
+
sortAscending: string;
|
|
272
|
+
sortDescending: string;
|
|
273
|
+
sortCleared: string;
|
|
274
|
+
selectedCount: string;
|
|
275
|
+
page: string;
|
|
276
|
+
resultCount: string;
|
|
277
|
+
};
|
|
278
|
+
state: {
|
|
279
|
+
loading: string;
|
|
280
|
+
success: string;
|
|
281
|
+
warning: string;
|
|
282
|
+
error: string;
|
|
283
|
+
cancelled: string;
|
|
284
|
+
};
|
|
285
|
+
}, "_">;
|
|
286
|
+
protected readonly theme: _ngneers_controls_api_ng.ControlTemplateInfo<_ngneers_controls_themes.ControlTemplate<"tree", ["root", "empty", "invalid", "item", "group", "default-item", "toggle", "toggle-placeholder", "toggle-icon", "toggle-arrow", "item-checkbox-placeholder", "item-selectable", "item-selected", "item-highlighted", "item-disabled", "item-expanded"], readonly [{
|
|
287
|
+
readonly class: "scroller";
|
|
288
|
+
readonly template: _ngneers_controls_themes.ControlTemplate<"scroller", ["root", "virtual", "item", "item-sticky"], readonly []>;
|
|
289
|
+
}, {
|
|
290
|
+
readonly class: "item-checkbox";
|
|
291
|
+
readonly template: _ngneers_controls_themes.ControlTemplate<"checkbox", ["root", "input", "box", "box-checked", "box-indeterminate", "box-icon", "box-icon-visible", "invalid"], readonly []>;
|
|
292
|
+
}]>>;
|
|
293
|
+
private readonly _scroller;
|
|
294
|
+
/** The tree items to render, as a nested list of {@link NgnTreeItem} objects. */
|
|
295
|
+
readonly items: _angular_core.InputSignal<Items>;
|
|
296
|
+
/**
|
|
297
|
+
* Whether nodes can be selected/checked.
|
|
298
|
+
* @default true
|
|
299
|
+
*/
|
|
300
|
+
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
301
|
+
/**
|
|
302
|
+
* Whether the tree is focusable and participates in keyboard navigation.
|
|
303
|
+
* @default true
|
|
304
|
+
*/
|
|
305
|
+
readonly focussable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
306
|
+
/**
|
|
307
|
+
* Whether the tree is virtualized. When enabled, provide {@link itemHeight}.
|
|
308
|
+
* @default false
|
|
309
|
+
*/
|
|
310
|
+
readonly virtual: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
311
|
+
/**
|
|
312
|
+
* When {@link virtual} is enabled, this defines the height of each node in the list.
|
|
313
|
+
*/
|
|
314
|
+
readonly itemHeight: _angular_core.InputSignal<number | undefined>;
|
|
315
|
+
/**
|
|
316
|
+
* Enable this to allow selecting multiple nodes. The value then becomes an array of node values.
|
|
317
|
+
* @default false
|
|
318
|
+
*/
|
|
319
|
+
readonly multiple: _angular_core.InputSignal<Multiple | undefined>;
|
|
320
|
+
/**
|
|
321
|
+
* Whether to render checkboxes. Defaults to `multiple()`.
|
|
322
|
+
* @default multiple()
|
|
323
|
+
*/
|
|
324
|
+
readonly checkbox: _angular_core.InputSignal<boolean | undefined>;
|
|
325
|
+
/**
|
|
326
|
+
* Boolean to enable filtering, or a `FilterConfig` to customize it.
|
|
327
|
+
* @default false
|
|
328
|
+
*/
|
|
329
|
+
readonly filter: _angular_core.InputSignal<boolean | FilterConfig<Items[number]>>;
|
|
330
|
+
/** Manually set the filter text. */
|
|
331
|
+
readonly filterText: _angular_core.InputSignal<string | null>;
|
|
332
|
+
/** Values of expanded branch nodes (two-way). */
|
|
333
|
+
readonly expandedValues: _angular_core.ModelSignal<NgnTreeItemsValue<Items>[]>;
|
|
334
|
+
/**
|
|
335
|
+
* Persist expansion + selection state across reloads. Provide a key and,
|
|
336
|
+
* optionally, an `NgnStorageKind` (defaults to `'localstorage'`).
|
|
337
|
+
*/
|
|
338
|
+
readonly storage: _angular_core.InputSignal<NgnTreeStorageConfig | null>;
|
|
339
|
+
private _storage?;
|
|
340
|
+
/**
|
|
341
|
+
* Loads the children of a `lazy` node the first time it is expanded.
|
|
342
|
+
* The returned items are cached internally and merged into the tree.
|
|
343
|
+
*/
|
|
344
|
+
readonly loadChildren: _angular_core.InputSignal<((item: NgnTreeItem) => readonly NgnTreeItem[] | Promise<readonly NgnTreeItem[]>) | undefined>;
|
|
345
|
+
/** Emitted with the node's value whenever a node is clicked/selected. */
|
|
346
|
+
readonly itemClicked: _angular_core.OutputEmitterRef<NgnTreeItemsValue<Items>>;
|
|
347
|
+
/** Emitted when a branch is expanded (fires before any lazy load resolves). */
|
|
348
|
+
readonly nodeExpand: _angular_core.OutputEmitterRef<NgnTreeItem<any, any>>;
|
|
349
|
+
protected readonly maybeCallback: typeof maybeCallback;
|
|
350
|
+
/** Lazily-loaded children, keyed by node value. */
|
|
351
|
+
private readonly _loadedChildren;
|
|
352
|
+
/** Node values currently awaiting their lazy children. */
|
|
353
|
+
private readonly _loadingNodes;
|
|
354
|
+
protected readonly filteredItems: {
|
|
355
|
+
(): readonly NgnTreeItem<any, any>[];
|
|
356
|
+
isRunning: _angular_core.Signal<boolean>;
|
|
357
|
+
firstRunCompleted: _angular_core.Signal<boolean>;
|
|
358
|
+
};
|
|
359
|
+
private readonly _appliedFilterOptions;
|
|
360
|
+
protected readonly filterIsExecuting: _angular_core.Signal<boolean>;
|
|
361
|
+
/** While filtering, auto-expand every branch that survived the filter. */
|
|
362
|
+
private readonly _autoExpanded;
|
|
363
|
+
private readonly _expandedSet;
|
|
364
|
+
/** Filtered items with any lazily-loaded children merged in. */
|
|
365
|
+
private readonly _effectiveItems;
|
|
366
|
+
readonly flatNodes: _angular_core.Signal<FlatTreeNode<any, any>[]>;
|
|
367
|
+
protected readonly valueArray: _angular_core.Signal<NgnTreeItemsValue<Items>[]>;
|
|
368
|
+
private readonly _valueSet;
|
|
369
|
+
readonly currentHighlightedValue: _angular_core.WritableSignal<NgnTreeItemsValue<Items> | null>;
|
|
370
|
+
protected readonly showCheckboxes: _angular_core.Signal<boolean>;
|
|
371
|
+
constructor();
|
|
372
|
+
/**
|
|
373
|
+
* Create the store and restore persisted state before the first view check
|
|
374
|
+
* (so it also feeds the SSR render for the `cookie` kind without triggering
|
|
375
|
+
* ExpressionChangedAfterItHasBeenChecked).
|
|
376
|
+
*
|
|
377
|
+
* This is the common path: the `storage` config is normally bound before
|
|
378
|
+
* init, so the restore happens pre-render. When the config only becomes
|
|
379
|
+
* available after init (e.g. an async binding, or a dynamic host that applies
|
|
380
|
+
* inputs after creating the component), the constructor effect below picks it
|
|
381
|
+
* up instead — `_initStorage` is idempotent, so at most one of them runs.
|
|
382
|
+
*/
|
|
383
|
+
ngOnInit(): void;
|
|
384
|
+
/** Create the store and restore persisted state. Runs at most once. */
|
|
385
|
+
private _initStorage;
|
|
386
|
+
/** Whether the given state should be persisted (all states when unset). */
|
|
387
|
+
private _persistsState;
|
|
388
|
+
/** Derived tri-state for a node's checkbox / aria-checked. */
|
|
389
|
+
protected nodeState(item: NgnTreeItem): 'checked' | 'unchecked' | 'indeterminate';
|
|
390
|
+
/** Whether a node can be selected/checked right now. */
|
|
391
|
+
protected isSelectable(node: FlatTreeNode): boolean;
|
|
392
|
+
/** Whether a lazy node is currently loading its children. */
|
|
393
|
+
protected isLoading(item: NgnTreeItem): boolean;
|
|
394
|
+
protected toggleExpand(item: NgnTreeItem): Promise<void>;
|
|
395
|
+
protected onRowClick(node: FlatTreeNode): void;
|
|
396
|
+
protected onSelect(item: NgnTreeItem): void;
|
|
397
|
+
scrollToIndex(index: number): void;
|
|
398
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
399
|
+
private _currentNode;
|
|
400
|
+
private _moveHighlight;
|
|
401
|
+
private _expandOrEnter;
|
|
402
|
+
private _collapseOrLeave;
|
|
403
|
+
private _typeahead;
|
|
404
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgnTree<any, any>, never>;
|
|
405
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgnTree<any, any>, "ngn-tree", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "focussable": { "alias": "focussable"; "required": false; "isSignal": true; }; "virtual": { "alias": "virtual"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "checkbox": { "alias": "checkbox"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterText": { "alias": "filterText"; "required": false; "isSignal": true; }; "expandedValues": { "alias": "expandedValues"; "required": false; "isSignal": true; }; "storage": { "alias": "storage"; "required": false; "isSignal": true; }; "loadChildren": { "alias": "loadChildren"; "required": false; "isSignal": true; }; }, { "expandedValues": "expandedValuesChange"; "itemClicked": "itemClicked"; "nodeExpand": "nodeExpand"; }, never, never, true, never>;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
export { NgnTree, TreeTemplates, applyLoadedChildren, cascadeCheck, collectBranchValues, collectLeafValues, computeNodeState, flattenTree };
|
|
409
|
+
export type { FlatTreeNode, NgnTreeStorageConfig, NgnTreeStorageState, ValueType };
|