@frame-kit/ui-ng 0.0.1
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/COMPONENTS.md +683 -0
- package/DEVELOPMENT_GUIDE.md +1102 -0
- package/LICENSE +21 -0
- package/README.md +69 -0
- package/THEMING.md +130 -0
- package/core/headline/README.md +121 -0
- package/core/icon/README.md +173 -0
- package/core/image/README.md +210 -0
- package/core/link/README.md +297 -0
- package/core/separator/README.md +145 -0
- package/core/text/README.md +240 -0
- package/directives/infinite-scroll/README.md +102 -0
- package/directives/spotlight/README.md +154 -0
- package/directives/tooltip/README.md +147 -0
- package/docs/endpoint-link/README.md +142 -0
- package/docs/method-badge/README.md +154 -0
- package/fesm2022/frame-kit-ui-ng-core-headline.mjs +122 -0
- package/fesm2022/frame-kit-ui-ng-core-headline.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-icon.mjs +189 -0
- package/fesm2022/frame-kit-ui-ng-core-icon.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-image.mjs +123 -0
- package/fesm2022/frame-kit-ui-ng-core-image.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-link.mjs +369 -0
- package/fesm2022/frame-kit-ui-ng-core-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-separator.mjs +59 -0
- package/fesm2022/frame-kit-ui-ng-core-separator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-core-text.mjs +204 -0
- package/fesm2022/frame-kit-ui-ng-core-text.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs +74 -0
- package/fesm2022/frame-kit-ui-ng-directives-infinite-scroll.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs +76 -0
- package/fesm2022/frame-kit-ui-ng-directives-spotlight.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs +425 -0
- package/fesm2022/frame-kit-ui-ng-directives-tooltip.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs +63 -0
- package/fesm2022/frame-kit-ui-ng-docs-endpoint-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs +43 -0
- package/fesm2022/frame-kit-ui-ng-docs-method-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-forms.mjs +3632 -0
- package/fesm2022/frame-kit-ui-ng-forms.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs +239 -0
- package/fesm2022/frame-kit-ui-ng-layouts-app-shell.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs +132 -0
- package/fesm2022/frame-kit-ui-ng-layouts-content-split.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs +133 -0
- package/fesm2022/frame-kit-ui-ng-services-overlay-orchestrator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs +60 -0
- package/fesm2022/frame-kit-ui-ng-services-spotlight.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-services-toast.mjs +166 -0
- package/fesm2022/frame-kit-ui-ng-services-toast.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs +214 -0
- package/fesm2022/frame-kit-ui-ng-ui-accordion.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-alert.mjs +82 -0
- package/fesm2022/frame-kit-ui-ng-ui-alert.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs +76 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar-stack.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-avatar.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-badge.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs +68 -0
- package/fesm2022/frame-kit-ui-ng-ui-breadcrumb.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-button.mjs +108 -0
- package/fesm2022/frame-kit-ui-ng-ui-button.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-callout.mjs +58 -0
- package/fesm2022/frame-kit-ui-ng-ui-callout.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-card.mjs +70 -0
- package/fesm2022/frame-kit-ui-ng-ui-card.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs +113 -0
- package/fesm2022/frame-kit-ui-ng-ui-copyable-field.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs +1288 -0
- package/fesm2022/frame-kit-ui-ng-ui-data-table.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs +456 -0
- package/fesm2022/frame-kit-ui-ng-ui-dialog.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs +398 -0
- package/fesm2022/frame-kit-ui-ng-ui-drawer.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs +398 -0
- package/fesm2022/frame-kit-ui-ng-ui-dropdown-menu.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs +125 -0
- package/fesm2022/frame-kit-ui-ng-ui-editable-field.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs +113 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-badge.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs +111 -0
- package/fesm2022/frame-kit-ui-ng-ui-icon-list.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs +103 -0
- package/fesm2022/frame-kit-ui-ng-ui-inline-edit.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs +135 -0
- package/fesm2022/frame-kit-ui-ng-ui-list-editor.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-loader.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-loader.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs +79 -0
- package/fesm2022/frame-kit-ui-ng-ui-menu-item.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs +40 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-brand.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs +110 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-group.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs +91 -0
- package/fesm2022/frame-kit-ui-ng-ui-nav-separator.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs +86 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree-breadcrumb.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs +443 -0
- package/fesm2022/frame-kit-ui-ng-ui-node-tree.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-note.mjs +56 -0
- package/fesm2022/frame-kit-ui-ng-ui-note.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs +105 -0
- package/fesm2022/frame-kit-ui-ng-ui-numbered-list.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs +110 -0
- package/fesm2022/frame-kit-ui-ng-ui-pagination.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs +129 -0
- package/fesm2022/frame-kit-ui-ng-ui-progress-bar.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs +42 -0
- package/fesm2022/frame-kit-ui-ng-ui-sidenav-link.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs +894 -0
- package/fesm2022/frame-kit-ui-ng-ui-tabs.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs +81 -0
- package/fesm2022/frame-kit-ui-ng-ui-timeline.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-toast.mjs +179 -0
- package/fesm2022/frame-kit-ui-ng-ui-toast.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs +143 -0
- package/fesm2022/frame-kit-ui-ng-ui-user-menu.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs +191 -0
- package/fesm2022/frame-kit-ui-ng-ui-wizard-dialog.mjs.map +1 -0
- package/fesm2022/frame-kit-ui-ng.mjs +58 -0
- package/fesm2022/frame-kit-ui-ng.mjs.map +1 -0
- package/layouts/app-shell/README.md +357 -0
- package/layouts/content-split/README.md +180 -0
- package/package.json +253 -0
- package/services/overlay-orchestrator/README.md +184 -0
- package/services/spotlight/README.md +61 -0
- package/services/toast/README.md +118 -0
- package/types/frame-kit-ui-ng-core-headline.d.ts +38 -0
- package/types/frame-kit-ui-ng-core-icon.d.ts +74 -0
- package/types/frame-kit-ui-ng-core-image.d.ts +93 -0
- package/types/frame-kit-ui-ng-core-link.d.ts +251 -0
- package/types/frame-kit-ui-ng-core-separator.d.ts +28 -0
- package/types/frame-kit-ui-ng-core-text.d.ts +186 -0
- package/types/frame-kit-ui-ng-directives-infinite-scroll.d.ts +42 -0
- package/types/frame-kit-ui-ng-directives-spotlight.d.ts +51 -0
- package/types/frame-kit-ui-ng-directives-tooltip.d.ts +70 -0
- package/types/frame-kit-ui-ng-docs-endpoint-link.d.ts +43 -0
- package/types/frame-kit-ui-ng-docs-method-badge.d.ts +30 -0
- package/types/frame-kit-ui-ng-forms.d.ts +1674 -0
- package/types/frame-kit-ui-ng-layouts-app-shell.d.ts +75 -0
- package/types/frame-kit-ui-ng-layouts-content-split.d.ts +43 -0
- package/types/frame-kit-ui-ng-services-overlay-orchestrator.d.ts +96 -0
- package/types/frame-kit-ui-ng-services-spotlight.d.ts +32 -0
- package/types/frame-kit-ui-ng-services-toast.d.ts +100 -0
- package/types/frame-kit-ui-ng-ui-accordion.d.ts +86 -0
- package/types/frame-kit-ui-ng-ui-alert.d.ts +34 -0
- package/types/frame-kit-ui-ng-ui-avatar-stack.d.ts +38 -0
- package/types/frame-kit-ui-ng-ui-avatar.d.ts +36 -0
- package/types/frame-kit-ui-ng-ui-badge.d.ts +33 -0
- package/types/frame-kit-ui-ng-ui-breadcrumb.d.ts +45 -0
- package/types/frame-kit-ui-ng-ui-button.d.ts +48 -0
- package/types/frame-kit-ui-ng-ui-callout.d.ts +26 -0
- package/types/frame-kit-ui-ng-ui-card.d.ts +30 -0
- package/types/frame-kit-ui-ng-ui-copyable-field.d.ts +62 -0
- package/types/frame-kit-ui-ng-ui-data-table.d.ts +482 -0
- package/types/frame-kit-ui-ng-ui-dialog.d.ts +166 -0
- package/types/frame-kit-ui-ng-ui-drawer.d.ts +130 -0
- package/types/frame-kit-ui-ng-ui-dropdown-menu.d.ts +77 -0
- package/types/frame-kit-ui-ng-ui-editable-field.d.ts +65 -0
- package/types/frame-kit-ui-ng-ui-icon-badge.d.ts +45 -0
- package/types/frame-kit-ui-ng-ui-icon-list.d.ts +67 -0
- package/types/frame-kit-ui-ng-ui-inline-edit.d.ts +44 -0
- package/types/frame-kit-ui-ng-ui-list-editor.d.ts +56 -0
- package/types/frame-kit-ui-ng-ui-loader.d.ts +32 -0
- package/types/frame-kit-ui-ng-ui-menu-item.d.ts +27 -0
- package/types/frame-kit-ui-ng-ui-nav-brand.d.ts +25 -0
- package/types/frame-kit-ui-ng-ui-nav-group.d.ts +60 -0
- package/types/frame-kit-ui-ng-ui-nav-separator.d.ts +33 -0
- package/types/frame-kit-ui-ng-ui-node-tree-breadcrumb.d.ts +35 -0
- package/types/frame-kit-ui-ng-ui-node-tree.d.ts +135 -0
- package/types/frame-kit-ui-ng-ui-note.d.ts +22 -0
- package/types/frame-kit-ui-ng-ui-numbered-list.d.ts +52 -0
- package/types/frame-kit-ui-ng-ui-pagination.d.ts +49 -0
- package/types/frame-kit-ui-ng-ui-progress-bar.d.ts +50 -0
- package/types/frame-kit-ui-ng-ui-sidenav-link.d.ts +24 -0
- package/types/frame-kit-ui-ng-ui-tabs.d.ts +266 -0
- package/types/frame-kit-ui-ng-ui-timeline.d.ts +42 -0
- package/types/frame-kit-ui-ng-ui-toast.d.ts +56 -0
- package/types/frame-kit-ui-ng-ui-user-menu.d.ts +87 -0
- package/types/frame-kit-ui-ng-ui-wizard-dialog.d.ts +116 -0
- package/types/frame-kit-ui-ng.d.ts +53 -0
- package/ui/accordion/README.md +261 -0
- package/ui/alert/README.md +211 -0
- package/ui/avatar/README.md +167 -0
- package/ui/avatar-stack/README.md +164 -0
- package/ui/badge/README.md +162 -0
- package/ui/breadcrumb/README.md +240 -0
- package/ui/button/README.md +184 -0
- package/ui/callout/README.md +159 -0
- package/ui/card/README.md +174 -0
- package/ui/copyable-field/README.md +235 -0
- package/ui/data-table/README.md +408 -0
- package/ui/dialog/README.md +222 -0
- package/ui/drawer/README.md +274 -0
- package/ui/dropdown-menu/README.md +336 -0
- package/ui/editable-field/README.md +171 -0
- package/ui/icon-badge/README.md +131 -0
- package/ui/icon-list/README.md +205 -0
- package/ui/inline-edit/README.md +135 -0
- package/ui/list-editor/README.md +162 -0
- package/ui/loader/README.md +160 -0
- package/ui/menu-item/README.md +204 -0
- package/ui/nav-brand/README.md +111 -0
- package/ui/nav-group/README.md +145 -0
- package/ui/nav-separator/README.md +44 -0
- package/ui/node-tree/README.md +278 -0
- package/ui/node-tree-breadcrumb/README.md +164 -0
- package/ui/note/README.md +146 -0
- package/ui/numbered-list/README.md +187 -0
- package/ui/pagination/README.md +174 -0
- package/ui/progress-bar/README.md +223 -0
- package/ui/sidenav-link/README.md +214 -0
- package/ui/tabs/README.md +204 -0
- package/ui/timeline/README.md +285 -0
- package/ui/toast/README.md +243 -0
- package/ui/user-menu/README.md +260 -0
- package/ui/wizard-dialog/README.md +283 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import * as _frame_kit_ui_ng_ui_tabs from '@frame-kit/ui-ng/ui/tabs';
|
|
2
|
+
import * as _angular_core from '@angular/core';
|
|
3
|
+
import { OnInit, OnChanges, TemplateRef, SimpleChanges, InjectionToken, AfterViewInit, ElementRef } from '@angular/core';
|
|
4
|
+
|
|
5
|
+
declare class FkTabComponent implements OnInit, OnChanges {
|
|
6
|
+
private readonly service;
|
|
7
|
+
private readonly elementRef;
|
|
8
|
+
private readonly destroyRef;
|
|
9
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
10
|
+
/** Unique value that identifies this tab and links it to its `fk-tab-panel`. */
|
|
11
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
12
|
+
/** When true, the tab is non-interactive and cannot be selected. */
|
|
13
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
14
|
+
/** When true, renders a close button on the tab trigger. */
|
|
15
|
+
readonly closable: _angular_core.InputSignal<boolean>;
|
|
16
|
+
/** Optional badge content (string or number) rendered in the top-right corner of the trigger. */
|
|
17
|
+
readonly badge: _angular_core.InputSignal<string | number | undefined>;
|
|
18
|
+
/** Optional icon — either an icon name string or a `TemplateRef` — shown before the label. */
|
|
19
|
+
readonly icon: _angular_core.InputSignal<string | TemplateRef<unknown> | undefined>;
|
|
20
|
+
readonly closeIconRef: _angular_core.Signal<_frame_kit_ui_ng_ui_tabs.FkTabCloseIconDirective | undefined>;
|
|
21
|
+
readonly tabId: _angular_core.WritableSignal<string>;
|
|
22
|
+
readonly panelId: _angular_core.WritableSignal<string>;
|
|
23
|
+
readonly isActive: _angular_core.Signal<boolean>;
|
|
24
|
+
readonly classes: _angular_core.Signal<string>;
|
|
25
|
+
get hostClass(): string;
|
|
26
|
+
readonly role = "tab";
|
|
27
|
+
get hostId(): string;
|
|
28
|
+
get ariaSelected(): boolean;
|
|
29
|
+
get ariaControls(): string;
|
|
30
|
+
get tabIndex(): 0 | -1;
|
|
31
|
+
get ariaDisabled(): true | null;
|
|
32
|
+
onClick(): void;
|
|
33
|
+
onFocus(): void;
|
|
34
|
+
private initialized;
|
|
35
|
+
constructor();
|
|
36
|
+
ngOnInit(): void;
|
|
37
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
38
|
+
isTemplateRef(val: unknown): val is TemplateRef<unknown>;
|
|
39
|
+
onClose(event: MouseEvent): void;
|
|
40
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkTabComponent, never>;
|
|
41
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FkTabComponent, "fk-tab", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, ["closeIconRef"], ["*", "[fkTabCloseIcon]"], true, never>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
declare const FK_TAB_CLOSE_ICON: InjectionToken<FkTabCloseIconDirective>;
|
|
45
|
+
declare const FK_TAB_SCROLL_START_ICON: InjectionToken<FkTabScrollStartIconDirective>;
|
|
46
|
+
declare const FK_TAB_SCROLL_END_ICON: InjectionToken<FkTabScrollEndIconDirective>;
|
|
47
|
+
declare class FkTabCloseIconDirective {
|
|
48
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkTabCloseIconDirective, never>;
|
|
49
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkTabCloseIconDirective, "[fkTabCloseIcon]", never, {}, {}, never, never, true, never>;
|
|
50
|
+
}
|
|
51
|
+
declare class FkTabScrollStartIconDirective {
|
|
52
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkTabScrollStartIconDirective, never>;
|
|
53
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkTabScrollStartIconDirective, "[fkTabScrollStartIcon]", never, {}, {}, never, never, true, never>;
|
|
54
|
+
}
|
|
55
|
+
declare class FkTabScrollEndIconDirective {
|
|
56
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkTabScrollEndIconDirective, never>;
|
|
57
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FkTabScrollEndIconDirective, "[fkTabScrollEndIcon]", never, {}, {}, never, never, true, never>;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
type FkTabsOrientation = 'horizontal' | 'vertical';
|
|
61
|
+
type FkTabsActivationMode = 'automatic' | 'manual';
|
|
62
|
+
type FkTabsVariant = 'underline' | 'pill' | 'contained';
|
|
63
|
+
type FkTabsSize = 'sm' | 'md' | 'lg';
|
|
64
|
+
interface FkTabRegistration {
|
|
65
|
+
value: string;
|
|
66
|
+
disabled: boolean;
|
|
67
|
+
element: HTMLElement;
|
|
68
|
+
tabId: string;
|
|
69
|
+
panelId: string;
|
|
70
|
+
}
|
|
71
|
+
interface FkPanelRegistration {
|
|
72
|
+
value: string;
|
|
73
|
+
panelId: string;
|
|
74
|
+
tabId: string;
|
|
75
|
+
}
|
|
76
|
+
interface FkTabChangeEvent {
|
|
77
|
+
previousValue: string | null;
|
|
78
|
+
value: string;
|
|
79
|
+
}
|
|
80
|
+
interface FkTabCloseEvent {
|
|
81
|
+
value: string;
|
|
82
|
+
}
|
|
83
|
+
interface FkTabIndicatorState {
|
|
84
|
+
visible: boolean;
|
|
85
|
+
offset: number;
|
|
86
|
+
size: number;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
declare class TabsService {
|
|
90
|
+
private tabIdCounter;
|
|
91
|
+
createTabIds(value: string): {
|
|
92
|
+
tabId: string;
|
|
93
|
+
panelId: string;
|
|
94
|
+
};
|
|
95
|
+
private _orientationFn;
|
|
96
|
+
private _activationModeFn;
|
|
97
|
+
private _variantFn;
|
|
98
|
+
private _lazyFn;
|
|
99
|
+
private _keepMountedFn;
|
|
100
|
+
private _scrollableFn;
|
|
101
|
+
private _showScrollButtonsFn;
|
|
102
|
+
readonly orientation: _angular_core.Signal<FkTabsOrientation>;
|
|
103
|
+
readonly activationMode: _angular_core.Signal<FkTabsActivationMode>;
|
|
104
|
+
readonly variant: _angular_core.Signal<FkTabsVariant>;
|
|
105
|
+
readonly lazy: _angular_core.Signal<boolean>;
|
|
106
|
+
readonly keepMounted: _angular_core.Signal<boolean>;
|
|
107
|
+
readonly scrollable: _angular_core.Signal<boolean>;
|
|
108
|
+
readonly showScrollButtons: _angular_core.Signal<boolean>;
|
|
109
|
+
setConfig(config: {
|
|
110
|
+
orientation: () => FkTabsOrientation;
|
|
111
|
+
activationMode: () => FkTabsActivationMode;
|
|
112
|
+
variant: () => FkTabsVariant;
|
|
113
|
+
lazy: () => boolean;
|
|
114
|
+
keepMounted: () => boolean;
|
|
115
|
+
scrollable: () => boolean;
|
|
116
|
+
showScrollButtons: () => boolean;
|
|
117
|
+
}): void;
|
|
118
|
+
private _controlledValueFn;
|
|
119
|
+
setControlledValue(fn: () => string | undefined): void;
|
|
120
|
+
private readonly _internalActiveValue;
|
|
121
|
+
readonly activeValue: _angular_core.Signal<string | null>;
|
|
122
|
+
setActiveValue(value: string | null): void;
|
|
123
|
+
readonly focusedValue: _angular_core.WritableSignal<string | null>;
|
|
124
|
+
readonly tabs: _angular_core.WritableSignal<FkTabRegistration[]>;
|
|
125
|
+
readonly panels: _angular_core.WritableSignal<FkPanelRegistration[]>;
|
|
126
|
+
readonly activatedPanels: _angular_core.WritableSignal<Set<string>>;
|
|
127
|
+
readonly enabledTabs: _angular_core.Signal<FkTabRegistration[]>;
|
|
128
|
+
readonly activeTab: _angular_core.Signal<FkTabRegistration | undefined>;
|
|
129
|
+
onTabChange: ((event: FkTabChangeEvent) => void) | null;
|
|
130
|
+
onValueChange: ((value: string) => void) | null;
|
|
131
|
+
onTabClose: ((value: string) => void) | null;
|
|
132
|
+
registerTab(reg: FkTabRegistration): void;
|
|
133
|
+
unregisterTab(value: string): void;
|
|
134
|
+
registerPanel(reg: FkPanelRegistration): void;
|
|
135
|
+
unregisterPanel(value: string): void;
|
|
136
|
+
selectTab(value: string): void;
|
|
137
|
+
focusTab(value: string): void;
|
|
138
|
+
handleKeydown(event: KeyboardEvent): void;
|
|
139
|
+
fallbackSelect(): void;
|
|
140
|
+
private getNextIndex;
|
|
141
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsService, never>;
|
|
142
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<TabsService>;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
declare class FkTabListComponent implements AfterViewInit {
|
|
146
|
+
readonly service: TabsService;
|
|
147
|
+
private readonly ngZone;
|
|
148
|
+
private readonly destroyRef;
|
|
149
|
+
private readonly platformId;
|
|
150
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
151
|
+
/** Accessible label for the `tablist` role element. */
|
|
152
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
153
|
+
readonly scrollStartIconRef: _angular_core.Signal<_frame_kit_ui_ng_ui_tabs.FkTabScrollStartIconDirective | undefined>;
|
|
154
|
+
readonly scrollEndIconRef: _angular_core.Signal<_frame_kit_ui_ng_ui_tabs.FkTabScrollEndIconDirective | undefined>;
|
|
155
|
+
readonly scrollContainer: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
|
|
156
|
+
readonly indicatorState: _angular_core.WritableSignal<FkTabIndicatorState>;
|
|
157
|
+
readonly canScrollStart: _angular_core.WritableSignal<boolean>;
|
|
158
|
+
readonly canScrollEnd: _angular_core.WritableSignal<boolean>;
|
|
159
|
+
readonly classes: _angular_core.Signal<string>;
|
|
160
|
+
get hostClass(): string;
|
|
161
|
+
readonly role = "tablist";
|
|
162
|
+
get ariaOrientation(): _frame_kit_ui_ng_ui_tabs.FkTabsOrientation;
|
|
163
|
+
get hostAriaLabel(): string | null;
|
|
164
|
+
readonly indicatorStyles: _angular_core.Signal<{
|
|
165
|
+
opacity: string;
|
|
166
|
+
height?: undefined;
|
|
167
|
+
transform?: undefined;
|
|
168
|
+
width?: undefined;
|
|
169
|
+
} | {
|
|
170
|
+
opacity: string;
|
|
171
|
+
height: string;
|
|
172
|
+
transform: string;
|
|
173
|
+
width?: undefined;
|
|
174
|
+
} | {
|
|
175
|
+
opacity: string;
|
|
176
|
+
width: string;
|
|
177
|
+
transform: string;
|
|
178
|
+
height?: undefined;
|
|
179
|
+
}>;
|
|
180
|
+
readonly showIndicator: _angular_core.Signal<boolean>;
|
|
181
|
+
private resizeObserver;
|
|
182
|
+
private activeTabResizeObserver;
|
|
183
|
+
onKeydown(event: KeyboardEvent): void;
|
|
184
|
+
constructor();
|
|
185
|
+
ngAfterViewInit(): void;
|
|
186
|
+
/** Scrolls the active tab into view inside the scroll container. */
|
|
187
|
+
scrollToActiveTab(): void;
|
|
188
|
+
/** Scrolls the tab list by 80% of its visible width in the given direction (+1 or −1). */
|
|
189
|
+
scrollBy(direction: number): void;
|
|
190
|
+
onScroll(): void;
|
|
191
|
+
/** Recalculates the sliding indicator position and size based on the active tab element. */
|
|
192
|
+
updateIndicator(): void;
|
|
193
|
+
private updateScrollState;
|
|
194
|
+
private setupResizeObservers;
|
|
195
|
+
private observeActiveTab;
|
|
196
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkTabListComponent, never>;
|
|
197
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FkTabListComponent, "fk-tab-list", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["scrollStartIconRef", "scrollEndIconRef"], ["[fkTabScrollStartIcon]", "*", "[fkTabScrollEndIcon]"], true, never>;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
declare class FkTabPanelComponent implements OnInit {
|
|
201
|
+
private readonly service;
|
|
202
|
+
private readonly destroyRef;
|
|
203
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
204
|
+
/** Unique value matching the corresponding `fk-tab`'s value; determines which panel to show. */
|
|
205
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
206
|
+
readonly panelId: _angular_core.WritableSignal<string>;
|
|
207
|
+
readonly tabId: _angular_core.WritableSignal<string>;
|
|
208
|
+
readonly isActive: _angular_core.Signal<boolean>;
|
|
209
|
+
readonly shouldRender: _angular_core.Signal<boolean>;
|
|
210
|
+
readonly classes: _angular_core.Signal<string>;
|
|
211
|
+
get hostClass(): string;
|
|
212
|
+
readonly role = "tabpanel";
|
|
213
|
+
get hostId(): string;
|
|
214
|
+
get ariaLabelledby(): string;
|
|
215
|
+
get isHidden(): true | null;
|
|
216
|
+
readonly tabindex = 0;
|
|
217
|
+
constructor();
|
|
218
|
+
ngOnInit(): void;
|
|
219
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkTabPanelComponent, never>;
|
|
220
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FkTabPanelComponent, "fk-tab-panel", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
declare class FkTabsComponent implements OnInit {
|
|
224
|
+
private readonly service;
|
|
225
|
+
private readonly destroyRef;
|
|
226
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
227
|
+
/** Controlled active tab value; when set, the parent owns the active state. */
|
|
228
|
+
readonly value: _angular_core.InputSignal<string | undefined>;
|
|
229
|
+
/** Initial active tab value used in uncontrolled mode. */
|
|
230
|
+
readonly defaultValue: _angular_core.InputSignal<string | undefined>;
|
|
231
|
+
/** Layout direction of the tab list. */
|
|
232
|
+
readonly orientation: _angular_core.InputSignal<FkTabsOrientation>;
|
|
233
|
+
/** Whether tabs activate on focus (automatic) or only on click/Enter (manual). */
|
|
234
|
+
readonly activationMode: _angular_core.InputSignal<FkTabsActivationMode>;
|
|
235
|
+
/** Visual style of the tab strip. */
|
|
236
|
+
readonly variant: _angular_core.InputSignal<FkTabsVariant>;
|
|
237
|
+
/** Size of the tab triggers. */
|
|
238
|
+
readonly size: _angular_core.InputSignal<FkTabsSize>;
|
|
239
|
+
/** When true, tab panels are not rendered until first activated. */
|
|
240
|
+
readonly lazy: _angular_core.InputSignal<boolean>;
|
|
241
|
+
/** When true (and `lazy` is true), panels remain mounted in the DOM after their first activation. */
|
|
242
|
+
readonly keepMounted: _angular_core.InputSignal<boolean>;
|
|
243
|
+
/** When true, each tab trigger stretches to fill an equal share of the tab list. */
|
|
244
|
+
readonly stretch: _angular_core.InputSignal<boolean>;
|
|
245
|
+
/** When true, the tab list spans the full width of its container. */
|
|
246
|
+
readonly fullWidth: _angular_core.InputSignal<boolean>;
|
|
247
|
+
/** When true, the tab list scrolls horizontally/vertically when tabs overflow. */
|
|
248
|
+
readonly scrollable: _angular_core.InputSignal<boolean>;
|
|
249
|
+
/** When true (and `scrollable` is true), arrow buttons appear at the edges of the tab list. */
|
|
250
|
+
readonly showScrollButtons: _angular_core.InputSignal<boolean>;
|
|
251
|
+
/** Fires when the active tab changes, emitting the new tab value. */
|
|
252
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
253
|
+
/** Fires when the active tab changes, emitting the full change event including previous and next values. */
|
|
254
|
+
readonly tabChange: _angular_core.OutputEmitterRef<FkTabChangeEvent>;
|
|
255
|
+
/** Fires when a closable tab's close button is clicked, emitting the tab value. */
|
|
256
|
+
readonly tabClose: _angular_core.OutputEmitterRef<FkTabCloseEvent>;
|
|
257
|
+
readonly classes: _angular_core.Signal<string>;
|
|
258
|
+
get hostClass(): string;
|
|
259
|
+
constructor();
|
|
260
|
+
ngOnInit(): void;
|
|
261
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FkTabsComponent, never>;
|
|
262
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FkTabsComponent, "fk-tabs", never, { "className": { "alias": "className"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "keepMounted": { "alias": "keepMounted"; "required": false; "isSignal": true; }; "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "showScrollButtons": { "alias": "showScrollButtons"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "tabChange": "tabChange"; "tabClose": "tabClose"; }, never, ["*"], true, never>;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
export { FK_TAB_CLOSE_ICON, FK_TAB_SCROLL_END_ICON, FK_TAB_SCROLL_START_ICON, FkTabCloseIconDirective, FkTabComponent, FkTabListComponent, FkTabPanelComponent, FkTabScrollEndIconDirective, FkTabScrollStartIconDirective, FkTabsComponent, TabsService };
|
|
266
|
+
export type { FkPanelRegistration, FkTabChangeEvent, FkTabCloseEvent, FkTabIndicatorState, FkTabRegistration, FkTabsActivationMode, FkTabsOrientation, FkTabsSize, FkTabsVariant };
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
type TimelineOrientation = 'vertical' | 'horizontal';
|
|
4
|
+
type TimelineAlign = 'start' | 'end' | 'alternate';
|
|
5
|
+
type TimelineSize = 'sm' | 'md' | 'lg';
|
|
6
|
+
type TimelineItemStatus = 'default' | 'active' | 'completed' | 'error' | 'warning';
|
|
7
|
+
interface TimelineItemData {
|
|
8
|
+
id?: string;
|
|
9
|
+
title?: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
timestamp?: string;
|
|
12
|
+
icon?: string;
|
|
13
|
+
status?: TimelineItemStatus;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare class TimelineComponent {
|
|
17
|
+
/** Array of timeline item data objects rendered in order. */
|
|
18
|
+
readonly items: _angular_core.InputSignal<TimelineItemData[]>;
|
|
19
|
+
/** Direction the timeline runs — vertical stacks items top-to-bottom, horizontal left-to-right. */
|
|
20
|
+
readonly orientation: _angular_core.InputSignal<TimelineOrientation>;
|
|
21
|
+
/** Alignment of the item content relative to the connector line. */
|
|
22
|
+
readonly align: _angular_core.InputSignal<TimelineAlign>;
|
|
23
|
+
/** Size variant controlling the dot and spacing of each item. */
|
|
24
|
+
readonly size: _angular_core.InputSignal<TimelineSize>;
|
|
25
|
+
/** When true, the items array is rendered in reverse order. */
|
|
26
|
+
readonly reverse: _angular_core.InputSignal<boolean>;
|
|
27
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
28
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
29
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
30
|
+
readonly orderedItems: _angular_core.Signal<TimelineItemData[]>;
|
|
31
|
+
readonly classes: _angular_core.Signal<string>;
|
|
32
|
+
get hostClass(): string;
|
|
33
|
+
get hostRole(): string;
|
|
34
|
+
get hostAriaLabel(): string | null;
|
|
35
|
+
get hostAriaOrientation(): TimelineOrientation;
|
|
36
|
+
get hostId(): string | null;
|
|
37
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimelineComponent, never>;
|
|
38
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimelineComponent, "fk-timeline", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "reverse": { "alias": "reverse"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { TimelineComponent };
|
|
42
|
+
export type { TimelineAlign, TimelineItemData, TimelineItemStatus, TimelineOrientation, TimelineSize };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import * as _angular_platform_browser from '@angular/platform-browser';
|
|
2
|
+
import * as _angular_core from '@angular/core';
|
|
3
|
+
import { OnDestroy } from '@angular/core';
|
|
4
|
+
import { ToastSeverity, ToastService, Toast } from '@frame-kit/ui-ng/services/toast';
|
|
5
|
+
|
|
6
|
+
declare class ToastComponent {
|
|
7
|
+
private readonly registry;
|
|
8
|
+
private readonly config;
|
|
9
|
+
/** Severity level that drives the toast icon and color. */
|
|
10
|
+
readonly severity: _angular_core.InputSignal<ToastSeverity>;
|
|
11
|
+
/** Primary message text shown in the toast. */
|
|
12
|
+
readonly summary: _angular_core.InputSignal<string>;
|
|
13
|
+
/** Optional secondary detail text shown below the summary. */
|
|
14
|
+
readonly detail: _angular_core.InputSignal<string | undefined>;
|
|
15
|
+
/** When true, renders the dismiss button so the user can close the toast. */
|
|
16
|
+
readonly dismissible: _angular_core.InputSignal<boolean>;
|
|
17
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
18
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
19
|
+
/** Fires when the user clicks the dismiss button. */
|
|
20
|
+
readonly dismiss: _angular_core.OutputEmitterRef<void>;
|
|
21
|
+
readonly classes: _angular_core.Signal<string>;
|
|
22
|
+
readonly iconSvg: _angular_core.Signal<_angular_platform_browser.SafeHtml | null>;
|
|
23
|
+
readonly role: _angular_core.Signal<"alert" | "status">;
|
|
24
|
+
get hostClass(): string;
|
|
25
|
+
get hostId(): string | null;
|
|
26
|
+
get hostRole(): "alert" | "status";
|
|
27
|
+
onDismiss(): void;
|
|
28
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
|
|
29
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "fk-toast", never, { "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "summary": { "alias": "summary"; "required": false; "isSignal": true; }; "detail": { "alias": "detail"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, { "dismiss": "dismiss"; }, never, never, true, never>;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
type ToastPosition = 'top-right' | 'top-center' | 'top-left' | 'bottom-right' | 'bottom-center' | 'bottom-left';
|
|
33
|
+
declare class ToastContainerComponent implements OnDestroy {
|
|
34
|
+
protected readonly toastService: ToastService;
|
|
35
|
+
private readonly appRef;
|
|
36
|
+
private readonly injector;
|
|
37
|
+
private readonly elRef;
|
|
38
|
+
private readonly customRefs;
|
|
39
|
+
/** Screen position where toasts are stacked. */
|
|
40
|
+
readonly position: _angular_core.InputSignal<ToastPosition>;
|
|
41
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
42
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
43
|
+
readonly defaultToasts: _angular_core.Signal<Toast[]>;
|
|
44
|
+
readonly classes: _angular_core.Signal<string>;
|
|
45
|
+
get hostClass(): string;
|
|
46
|
+
get hostId(): string | null;
|
|
47
|
+
constructor();
|
|
48
|
+
ngOnDestroy(): void;
|
|
49
|
+
onDismiss(id: string): void;
|
|
50
|
+
private createCustomToast;
|
|
51
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastContainerComponent, never>;
|
|
52
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastContainerComponent, "fk-toast-container", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export { ToastComponent, ToastContainerComponent };
|
|
56
|
+
export type { ToastPosition };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { AvatarStatus, AvatarSize } from '@frame-kit/ui-ng/ui/avatar';
|
|
3
|
+
import { DropdownMenuComponent } from '@frame-kit/ui-ng/ui/dropdown-menu';
|
|
4
|
+
|
|
5
|
+
interface MenuItem {
|
|
6
|
+
label: string;
|
|
7
|
+
value: string;
|
|
8
|
+
icon?: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
danger?: boolean;
|
|
11
|
+
separator?: boolean;
|
|
12
|
+
}
|
|
13
|
+
type UserMenuVariant = 'dropdown' | 'popover';
|
|
14
|
+
type MenuPlacement = 'bottom-start' | 'bottom-end';
|
|
15
|
+
type InfoPlacement = 'start' | 'end';
|
|
16
|
+
|
|
17
|
+
declare class UserMenuComponent {
|
|
18
|
+
/** Full display name of the user shown in the avatar and optional info section. */
|
|
19
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
20
|
+
/** User's email address shown in the optional info section. */
|
|
21
|
+
readonly email: _angular_core.InputSignal<string | null>;
|
|
22
|
+
/** URL of the user's avatar image. */
|
|
23
|
+
readonly avatarUrl: _angular_core.InputSignal<string | null>;
|
|
24
|
+
/** Explicit two-character initials that override the name-derived fallback. */
|
|
25
|
+
readonly initials: _angular_core.InputSignal<string | null>;
|
|
26
|
+
/** Optional user ID displayed in the info section for debugging or display. */
|
|
27
|
+
readonly userId: _angular_core.InputSignal<string | null>;
|
|
28
|
+
/** Online/offline/away status reflected on the avatar indicator dot. */
|
|
29
|
+
readonly status: _angular_core.InputSignal<AvatarStatus | null>;
|
|
30
|
+
/** When true, renders the status indicator dot on the avatar. */
|
|
31
|
+
readonly showStatus: _angular_core.InputSignal<boolean>;
|
|
32
|
+
/** Array of menu item configurations rendered in the dropdown. */
|
|
33
|
+
readonly menuItems: _angular_core.InputSignal<MenuItem[]>;
|
|
34
|
+
/** Preferred placement of the dropdown panel relative to the trigger. */
|
|
35
|
+
readonly placement: _angular_core.InputSignal<MenuPlacement>;
|
|
36
|
+
/** Size of the avatar trigger. */
|
|
37
|
+
readonly size: _angular_core.InputSignal<AvatarSize>;
|
|
38
|
+
/** Layout variant — "dropdown" renders a full avatar menu, "compact" renders a minimal trigger. */
|
|
39
|
+
readonly variant: _angular_core.InputSignal<UserMenuVariant>;
|
|
40
|
+
/** When true, renders the user's display name next to the avatar. */
|
|
41
|
+
readonly showName: _angular_core.InputSignal<boolean>;
|
|
42
|
+
/** When true, renders the user's email next to the avatar. */
|
|
43
|
+
readonly showEmail: _angular_core.InputSignal<boolean>;
|
|
44
|
+
/** When true, renders a chevron indicator showing the menu is expandable. */
|
|
45
|
+
readonly showChevron: _angular_core.InputSignal<boolean>;
|
|
46
|
+
/** Side where the name/email info block appears relative to the avatar. */
|
|
47
|
+
readonly infoPlacement: _angular_core.InputSignal<InfoPlacement>;
|
|
48
|
+
/** Optional badge text overlaid on the avatar. */
|
|
49
|
+
readonly badge: _angular_core.InputSignal<string | null>;
|
|
50
|
+
/** When true, prevents the menu from opening. */
|
|
51
|
+
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
52
|
+
/** When true, shows a loading state on the trigger. */
|
|
53
|
+
readonly loading: _angular_core.InputSignal<boolean>;
|
|
54
|
+
readonly className: _angular_core.InputSignal<string>;
|
|
55
|
+
readonly id: _angular_core.InputSignal<string | null>;
|
|
56
|
+
readonly ariaLabel: _angular_core.InputSignal<string | null>;
|
|
57
|
+
/** Fires when the user clicks the avatar trigger to open the menu. */
|
|
58
|
+
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
59
|
+
/** Fires when the dropdown menu opens. */
|
|
60
|
+
readonly menuOpen: _angular_core.OutputEmitterRef<void>;
|
|
61
|
+
/** Fires when the dropdown menu closes. */
|
|
62
|
+
readonly menuClose: _angular_core.OutputEmitterRef<void>;
|
|
63
|
+
/** Fires when the user selects a menu item, emitting the selected `MenuItem`. */
|
|
64
|
+
readonly menuItemClick: _angular_core.OutputEmitterRef<MenuItem>;
|
|
65
|
+
/** Fires when the user selects the item with `value === "logout"`. */
|
|
66
|
+
readonly logoutClick: _angular_core.OutputEmitterRef<void>;
|
|
67
|
+
readonly dropdownRef: _angular_core.Signal<DropdownMenuComponent | undefined>;
|
|
68
|
+
readonly isOpen: _angular_core.Signal<boolean>;
|
|
69
|
+
readonly classes: _angular_core.Signal<string>;
|
|
70
|
+
get hostClass(): string;
|
|
71
|
+
get hostId(): string | null;
|
|
72
|
+
/** Emits `menuItemClick` (and `logoutClick` when applicable) for the given menu item. */
|
|
73
|
+
selectItem(item: MenuItem): void;
|
|
74
|
+
onMenuOpen(): void;
|
|
75
|
+
onMenuClose(): void;
|
|
76
|
+
/** Opens the user-menu dropdown programmatically. */
|
|
77
|
+
open(): void;
|
|
78
|
+
/** Closes the user-menu dropdown programmatically. */
|
|
79
|
+
close(): void;
|
|
80
|
+
/** Toggles the user-menu dropdown programmatically. */
|
|
81
|
+
toggle(): void;
|
|
82
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserMenuComponent, never>;
|
|
83
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserMenuComponent, "fk-user-menu", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "email": { "alias": "email"; "required": false; "isSignal": true; }; "avatarUrl": { "alias": "avatarUrl"; "required": false; "isSignal": true; }; "initials": { "alias": "initials"; "required": false; "isSignal": true; }; "userId": { "alias": "userId"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "showStatus": { "alias": "showStatus"; "required": false; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showName": { "alias": "showName"; "required": false; "isSignal": true; }; "showEmail": { "alias": "showEmail"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; "infoPlacement": { "alias": "infoPlacement"; "required": false; "isSignal": true; }; "badge": { "alias": "badge"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "avatarClick": "avatarClick"; "menuOpen": "menuOpen"; "menuClose": "menuClose"; "menuItemClick": "menuItemClick"; "logoutClick": "logoutClick"; }, never, never, true, never>;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export { UserMenuComponent };
|
|
87
|
+
export type { InfoPlacement, MenuItem, MenuPlacement, UserMenuVariant };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { Type, AfterViewInit } from '@angular/core';
|
|
3
|
+
import { DialogConfig, DialogRef } from '@frame-kit/ui-ng/ui/dialog';
|
|
4
|
+
import { Observable } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
interface WizardDialogStep {
|
|
7
|
+
/** Step title shown in the stepper. */
|
|
8
|
+
title: string;
|
|
9
|
+
/** Key to match a `<ng-template fkWizardStepContent="key">` for custom content. */
|
|
10
|
+
contentKey: string;
|
|
11
|
+
/** Whether this step is optional (shown in stepper). */
|
|
12
|
+
optional?: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface WizardDialogConfig<TData = unknown> extends Pick<DialogConfig<TData>, 'size' | 'closable' | 'closeOnEscape' | 'closeOnBackdrop' | 'animation' | 'header' | 'fullscreenMobile' | 'className' | 'ariaLabel' | 'ariaDescribedBy' | 'data'> {
|
|
15
|
+
/** Wizard step definitions. */
|
|
16
|
+
steps: WizardDialogStep[];
|
|
17
|
+
/** Enforce sequential step navigation. Default: `true`. */
|
|
18
|
+
linear?: boolean;
|
|
19
|
+
/** Label for the final submit button. Default: `"Submit"`. */
|
|
20
|
+
submitLabel?: string;
|
|
21
|
+
/** Label for the cancel button (first step). Default: `"Cancel"`. */
|
|
22
|
+
cancelLabel?: string;
|
|
23
|
+
/** Label for the next button. Default: `"Next"`. */
|
|
24
|
+
nextLabel?: string;
|
|
25
|
+
/** Label for the back button. Default: `"Back"`. */
|
|
26
|
+
backLabel?: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Optional extra footer button the consumer can surface on any step
|
|
31
|
+
* — typically a "View X" jump-off on the results/last step. Sits
|
|
32
|
+
* between Back and Submit in the wizard's footer. Set via
|
|
33
|
+
* `WizardDialogRef.extraAction.set(...)` on step entry; clear with
|
|
34
|
+
* `null` on step exit (or just rely on swapping it out).
|
|
35
|
+
*/
|
|
36
|
+
interface WizardExtraAction {
|
|
37
|
+
/** Button label, e.g. "View Identities". */
|
|
38
|
+
label: string;
|
|
39
|
+
/** Visual variant. Defaults to `"outline"` so the extra action
|
|
40
|
+
* doesn't compete with the primary Submit button. */
|
|
41
|
+
variant?: 'primary' | 'outline' | 'secondary' | 'danger';
|
|
42
|
+
/** Click handler — typically closes the wizard with a sentinel. */
|
|
43
|
+
onClick: () => void;
|
|
44
|
+
}
|
|
45
|
+
declare const WIZARD_DIALOG_REF: unique symbol;
|
|
46
|
+
declare class WizardDialogRef<TResult = unknown, TData = unknown> {
|
|
47
|
+
private dialogRef;
|
|
48
|
+
private readonly consumerData;
|
|
49
|
+
private readonly submitSubject;
|
|
50
|
+
private readonly stepChangeSubject;
|
|
51
|
+
readonly steps: WizardDialogStep[];
|
|
52
|
+
readonly linear: boolean;
|
|
53
|
+
readonly submitLabel: string;
|
|
54
|
+
readonly cancelLabel: string;
|
|
55
|
+
readonly nextLabel: string;
|
|
56
|
+
readonly backLabel: string;
|
|
57
|
+
readonly currentIndex: _angular_core.WritableSignal<number>;
|
|
58
|
+
readonly highestVisitedIndex: _angular_core.WritableSignal<number>;
|
|
59
|
+
readonly totalSteps: _angular_core.Signal<number>;
|
|
60
|
+
readonly isFirstStep: _angular_core.Signal<boolean>;
|
|
61
|
+
readonly isLastStep: _angular_core.Signal<boolean>;
|
|
62
|
+
readonly currentStep: _angular_core.Signal<WizardDialogStep>;
|
|
63
|
+
readonly submitDisabled: _angular_core.WritableSignal<boolean>;
|
|
64
|
+
readonly nextDisabled: _angular_core.WritableSignal<boolean>;
|
|
65
|
+
readonly chromeVisible: _angular_core.WritableSignal<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Optional third footer button. When non-null, the wizard chrome
|
|
68
|
+
* renders an additional `<fk-button>` between Back and Submit
|
|
69
|
+
* using this metadata. Consumers typically wire this in an
|
|
70
|
+
* `effect` keyed on `currentIndex` so the button only appears on
|
|
71
|
+
* the step(s) that need it.
|
|
72
|
+
*/
|
|
73
|
+
readonly extraAction: _angular_core.WritableSignal<WizardExtraAction | null>;
|
|
74
|
+
readonly submitted: Observable<void>;
|
|
75
|
+
readonly stepChanged: Observable<number>;
|
|
76
|
+
constructor(config: WizardDialogConfig<TData>);
|
|
77
|
+
get data(): TData | undefined;
|
|
78
|
+
next(): boolean;
|
|
79
|
+
previous(): boolean;
|
|
80
|
+
goTo(index: number): boolean;
|
|
81
|
+
private updateHighestVisited;
|
|
82
|
+
close(result?: TResult): void;
|
|
83
|
+
afterClosed(): Observable<TResult | undefined>;
|
|
84
|
+
/** @internal Called by container when submit button is clicked. */
|
|
85
|
+
emitSubmit(): void;
|
|
86
|
+
/** @internal Called by WizardDialogService after dialog is opened. */
|
|
87
|
+
setDialogRef(ref: DialogRef<TResult>): void;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
interface WizardDialogContainerData {
|
|
91
|
+
wizardRef: WizardDialogRef;
|
|
92
|
+
contentComponent: Type<unknown>;
|
|
93
|
+
}
|
|
94
|
+
declare class WizardDialogService {
|
|
95
|
+
private readonly dialogService;
|
|
96
|
+
open<TResult = unknown, TData = unknown>(content: Type<unknown>, config: WizardDialogConfig<TData>): WizardDialogRef<TResult, TData>;
|
|
97
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardDialogService, never>;
|
|
98
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<WizardDialogService>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
declare class WizardDialogContainerComponent implements AfterViewInit {
|
|
102
|
+
private readonly data;
|
|
103
|
+
private readonly injector;
|
|
104
|
+
private readonly bodyOutlet;
|
|
105
|
+
readonly ref: WizardDialogRef;
|
|
106
|
+
readonly classes: _angular_core.Signal<string>;
|
|
107
|
+
get hostClass(): string;
|
|
108
|
+
ngAfterViewInit(): void;
|
|
109
|
+
onCancel(): void;
|
|
110
|
+
onSubmit(): void;
|
|
111
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardDialogContainerComponent, never>;
|
|
112
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardDialogContainerComponent, "fk-wizard-dialog-container", never, {}, {}, never, never, true, never>;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export { WIZARD_DIALOG_REF, WizardDialogContainerComponent, WizardDialogRef, WizardDialogService };
|
|
116
|
+
export type { WizardDialogConfig, WizardDialogContainerData, WizardDialogStep, WizardExtraAction };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export * from '@frame-kit/ui-ng/core/headline';
|
|
2
|
+
export * from '@frame-kit/ui-ng/core/icon';
|
|
3
|
+
export * from '@frame-kit/ui-ng/core/image';
|
|
4
|
+
export * from '@frame-kit/ui-ng/core/link';
|
|
5
|
+
export * from '@frame-kit/ui-ng/core/separator';
|
|
6
|
+
export * from '@frame-kit/ui-ng/core/text';
|
|
7
|
+
export * from '@frame-kit/ui-ng/directives/infinite-scroll';
|
|
8
|
+
export * from '@frame-kit/ui-ng/directives/spotlight';
|
|
9
|
+
export * from '@frame-kit/ui-ng/directives/tooltip';
|
|
10
|
+
export * from '@frame-kit/ui-ng/docs/endpoint-link';
|
|
11
|
+
export * from '@frame-kit/ui-ng/docs/method-badge';
|
|
12
|
+
export * from '@frame-kit/ui-ng/forms';
|
|
13
|
+
export * from '@frame-kit/ui-ng/layouts/app-shell';
|
|
14
|
+
export * from '@frame-kit/ui-ng/layouts/content-split';
|
|
15
|
+
export * from '@frame-kit/ui-ng/services/overlay-orchestrator';
|
|
16
|
+
export * from '@frame-kit/ui-ng/services/spotlight';
|
|
17
|
+
export * from '@frame-kit/ui-ng/services/toast';
|
|
18
|
+
export * from '@frame-kit/ui-ng/ui/accordion';
|
|
19
|
+
export * from '@frame-kit/ui-ng/ui/alert';
|
|
20
|
+
export * from '@frame-kit/ui-ng/ui/avatar';
|
|
21
|
+
export * from '@frame-kit/ui-ng/ui/avatar-stack';
|
|
22
|
+
export * from '@frame-kit/ui-ng/ui/badge';
|
|
23
|
+
export * from '@frame-kit/ui-ng/ui/breadcrumb';
|
|
24
|
+
export * from '@frame-kit/ui-ng/ui/button';
|
|
25
|
+
export * from '@frame-kit/ui-ng/ui/callout';
|
|
26
|
+
export * from '@frame-kit/ui-ng/ui/card';
|
|
27
|
+
export * from '@frame-kit/ui-ng/ui/copyable-field';
|
|
28
|
+
export * from '@frame-kit/ui-ng/ui/data-table';
|
|
29
|
+
export * from '@frame-kit/ui-ng/ui/dialog';
|
|
30
|
+
export * from '@frame-kit/ui-ng/ui/drawer';
|
|
31
|
+
export * from '@frame-kit/ui-ng/ui/dropdown-menu';
|
|
32
|
+
export * from '@frame-kit/ui-ng/ui/editable-field';
|
|
33
|
+
export * from '@frame-kit/ui-ng/ui/icon-badge';
|
|
34
|
+
export * from '@frame-kit/ui-ng/ui/icon-list';
|
|
35
|
+
export * from '@frame-kit/ui-ng/ui/inline-edit';
|
|
36
|
+
export * from '@frame-kit/ui-ng/ui/list-editor';
|
|
37
|
+
export * from '@frame-kit/ui-ng/ui/loader';
|
|
38
|
+
export * from '@frame-kit/ui-ng/ui/menu-item';
|
|
39
|
+
export * from '@frame-kit/ui-ng/ui/nav-brand';
|
|
40
|
+
export * from '@frame-kit/ui-ng/ui/nav-group';
|
|
41
|
+
export * from '@frame-kit/ui-ng/ui/nav-separator';
|
|
42
|
+
export * from '@frame-kit/ui-ng/ui/node-tree';
|
|
43
|
+
export * from '@frame-kit/ui-ng/ui/node-tree-breadcrumb';
|
|
44
|
+
export * from '@frame-kit/ui-ng/ui/note';
|
|
45
|
+
export * from '@frame-kit/ui-ng/ui/numbered-list';
|
|
46
|
+
export * from '@frame-kit/ui-ng/ui/pagination';
|
|
47
|
+
export * from '@frame-kit/ui-ng/ui/progress-bar';
|
|
48
|
+
export * from '@frame-kit/ui-ng/ui/sidenav-link';
|
|
49
|
+
export * from '@frame-kit/ui-ng/ui/tabs';
|
|
50
|
+
export * from '@frame-kit/ui-ng/ui/timeline';
|
|
51
|
+
export * from '@frame-kit/ui-ng/ui/toast';
|
|
52
|
+
export * from '@frame-kit/ui-ng/ui/user-menu';
|
|
53
|
+
export * from '@frame-kit/ui-ng/ui/wizard-dialog';
|