@raintonic/formaui 0.3.1 → 0.9.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/CHANGELOG.md +80 -35
- package/README.md +22 -26
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs +39 -41
- package/fesm2022/raintonic-formaui-cdk-drag-drop.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs +207 -3
- package/fesm2022/raintonic-formaui-cdk-form-field.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs +27 -2
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs +5 -12
- package/fesm2022/raintonic-formaui-cdk-virtual-scroll.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-accordion.mjs +8 -5
- package/fesm2022/raintonic-formaui-components-accordion.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-alert.mjs +16 -2
- package/fesm2022/raintonic-formaui-components-alert.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs +255 -462
- package/fesm2022/raintonic-formaui-components-autocomplete.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-avatar.mjs +34 -59
- package/fesm2022/raintonic-formaui-components-avatar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-badge.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-badge.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-button-group.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-button-group.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-button.mjs +15 -20
- package/fesm2022/raintonic-formaui-components-button.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-card.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-card.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-checkbox.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-checkbox.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-chip.mjs +97 -0
- package/fesm2022/raintonic-formaui-components-chip.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-data-table.mjs +69 -29
- package/fesm2022/raintonic-formaui-components-data-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +223 -144
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-divider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-divider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-drawer.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-drawer.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs +888 -0
- package/fesm2022/raintonic-formaui-components-dropdown-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs +774 -0
- package/fesm2022/raintonic-formaui-components-dual-tier-navigation.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-empty-state.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-empty-state.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-file-upload.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-file-upload.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-form-field.mjs +81 -50
- package/fesm2022/raintonic-formaui-components-form-field.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-icon.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-icon.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-input.mjs +47 -12
- package/fesm2022/raintonic-formaui-components-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-list.mjs +4 -4
- package/fesm2022/raintonic-formaui-components-list.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-number-input.mjs +20 -12
- package/fesm2022/raintonic-formaui-components-number-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-password-input.mjs +35 -110
- package/fesm2022/raintonic-formaui-components-password-input.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-popover.mjs +3 -2
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-progressbar.mjs +3 -2
- package/fesm2022/raintonic-formaui-components-progressbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-radio.mjs +5 -6
- package/fesm2022/raintonic-formaui-components-radio.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-select.mjs +257 -412
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-side-panel.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-side-panel.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs +525 -0
- package/fesm2022/raintonic-formaui-components-sidebar-nav-menu.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-skeleton.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-skeleton.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-slider.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-slider.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-spinner.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-spinner.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-stepper.mjs +50 -45
- package/fesm2022/raintonic-formaui-components-stepper.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-strength-meter.mjs +149 -0
- package/fesm2022/raintonic-formaui-components-strength-meter.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tab.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tab.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +194 -154
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs +302 -0
- package/fesm2022/raintonic-formaui-components-toggle-group.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-toggle.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-toggle.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-toolbar.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-toolbar.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tooltip.mjs +10 -4
- package/fesm2022/raintonic-formaui-components-tooltip.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-topbar.mjs +60 -0
- package/fesm2022/raintonic-formaui-components-topbar.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-components-tree-select.mjs +59 -69
- package/fesm2022/raintonic-formaui-components-tree-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree-table.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-tree-table.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-tree.mjs +31 -5
- package/fesm2022/raintonic-formaui-components-tree.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-core.mjs +279 -1
- package/fesm2022/raintonic-formaui-core.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-breakpoint.mjs +93 -0
- package/fesm2022/raintonic-formaui-services-breakpoint.mjs.map +1 -0
- package/fesm2022/raintonic-formaui-services-dialog.mjs +314 -16
- package/fesm2022/raintonic-formaui-services-dialog.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-notification.mjs +93 -29
- package/fesm2022/raintonic-formaui-services-notification.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-services-theme.mjs +46 -196
- package/fesm2022/raintonic-formaui-services-theme.mjs.map +1 -1
- package/fesm2022/raintonic-formaui.mjs +1 -1
- package/fesm2022/raintonic-formaui.mjs.map +1 -1
- package/llms-full.txt +2329 -450
- package/llms.txt +36 -33
- package/package.json +42 -19
- package/styles/fonts/Geist-Bold.woff2 +0 -0
- package/styles/fonts/Geist-Italic.woff2 +0 -0
- package/styles/fonts/Geist-Light.woff2 +0 -0
- package/styles/fonts/Geist-Medium.woff2 +0 -0
- package/styles/fonts/Geist-Regular.woff2 +0 -0
- package/styles/fonts/Geist-SemiBold.woff2 +0 -0
- package/styles/fonts/GeistMono-Regular.woff2 +0 -0
- package/styles/generated/_tokens.scss +906 -0
- package/styles/index.scss +11 -10
- package/styles/partials/_brand.scss +46 -0
- package/styles/partials/_constants.scss +22 -20
- package/styles/partials/_fonts.scss +54 -10
- package/styles/partials/_grid.scss +29 -18
- package/styles/partials/_mixins.scss +69 -27
- package/styles/partials/_motion.scss +28 -33
- package/styles/partials/_theme.scss +28 -255
- package/styles/partials/_type.scss +117 -0
- package/styles/partials/_typography.scss +45 -45
- package/styles/partials/_utilities.scss +198 -98
- package/styles/partials/components/_button.scss +144 -75
- package/styles/partials/components/_dialog.scss +181 -180
- package/styles/partials/components/_overlay.scss +87 -87
- package/styles/partials/themes/_dark.scss +3 -268
- package/styles/partials/themes/_light.scss +4 -268
- package/styles/styles.css +7744 -0
- package/styles/styles.entry.scss +3 -0
- package/styles/utilities.css +4802 -0
- package/styles/utilities.entry.scss +3 -0
- package/types/raintonic-formaui-cdk-drag-drop.d.ts +0 -1
- package/types/raintonic-formaui-cdk-drag-drop.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-form-field.d.ts +118 -2
- package/types/raintonic-formaui-cdk-form-field.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-overlay.d.ts +2 -0
- package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -1
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts +0 -1
- package/types/raintonic-formaui-cdk-virtual-scroll.d.ts.map +1 -1
- package/types/raintonic-formaui-components-accordion.d.ts +1 -1
- package/types/raintonic-formaui-components-accordion.d.ts.map +1 -1
- package/types/raintonic-formaui-components-alert.d.ts +6 -1
- package/types/raintonic-formaui-components-alert.d.ts.map +1 -1
- package/types/raintonic-formaui-components-autocomplete.d.ts +73 -116
- package/types/raintonic-formaui-components-autocomplete.d.ts.map +1 -1
- package/types/raintonic-formaui-components-avatar.d.ts +13 -31
- package/types/raintonic-formaui-components-avatar.d.ts.map +1 -1
- package/types/raintonic-formaui-components-button.d.ts +4 -10
- package/types/raintonic-formaui-components-button.d.ts.map +1 -1
- package/types/raintonic-formaui-components-chip.d.ts +43 -0
- package/types/raintonic-formaui-components-chip.d.ts.map +1 -0
- package/types/raintonic-formaui-components-data-table.d.ts +48 -11
- package/types/raintonic-formaui-components-data-table.d.ts.map +1 -1
- package/types/raintonic-formaui-components-date-picker.d.ts +59 -23
- package/types/raintonic-formaui-components-date-picker.d.ts.map +1 -1
- package/types/raintonic-formaui-components-dropdown-menu.d.ts +394 -0
- package/types/raintonic-formaui-components-dropdown-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-dual-tier-navigation.d.ts +87 -0
- package/types/raintonic-formaui-components-dual-tier-navigation.d.ts.map +1 -0
- package/types/raintonic-formaui-components-form-field.d.ts +51 -21
- package/types/raintonic-formaui-components-form-field.d.ts.map +1 -1
- package/types/raintonic-formaui-components-input.d.ts +20 -11
- package/types/raintonic-formaui-components-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-number-input.d.ts +5 -3
- package/types/raintonic-formaui-components-number-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-password-input.d.ts +18 -32
- package/types/raintonic-formaui-components-password-input.d.ts.map +1 -1
- package/types/raintonic-formaui-components-popover.d.ts.map +1 -1
- package/types/raintonic-formaui-components-progressbar.d.ts +1 -1
- package/types/raintonic-formaui-components-progressbar.d.ts.map +1 -1
- package/types/raintonic-formaui-components-radio.d.ts +1 -2
- package/types/raintonic-formaui-components-radio.d.ts.map +1 -1
- package/types/raintonic-formaui-components-select.d.ts +107 -76
- package/types/raintonic-formaui-components-select.d.ts.map +1 -1
- package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts +223 -0
- package/types/raintonic-formaui-components-sidebar-nav-menu.d.ts.map +1 -0
- package/types/raintonic-formaui-components-stepper.d.ts +4 -2
- package/types/raintonic-formaui-components-stepper.d.ts.map +1 -1
- package/types/raintonic-formaui-components-strength-meter.d.ts +78 -0
- package/types/raintonic-formaui-components-strength-meter.d.ts.map +1 -0
- package/types/raintonic-formaui-components-time-picker.d.ts +44 -24
- package/types/raintonic-formaui-components-time-picker.d.ts.map +1 -1
- package/types/raintonic-formaui-components-toggle-group.d.ts +100 -0
- package/types/raintonic-formaui-components-toggle-group.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tooltip.d.ts +2 -1
- package/types/raintonic-formaui-components-tooltip.d.ts.map +1 -1
- package/types/raintonic-formaui-components-topbar.d.ts +48 -0
- package/types/raintonic-formaui-components-topbar.d.ts.map +1 -0
- package/types/raintonic-formaui-components-tree-select.d.ts +25 -9
- package/types/raintonic-formaui-components-tree-select.d.ts.map +1 -1
- package/types/raintonic-formaui-components-tree.d.ts +12 -1
- package/types/raintonic-formaui-components-tree.d.ts.map +1 -1
- package/types/raintonic-formaui-core.d.ts +243 -5
- package/types/raintonic-formaui-core.d.ts.map +1 -1
- package/types/raintonic-formaui-services-breakpoint.d.ts +44 -0
- package/types/raintonic-formaui-services-breakpoint.d.ts.map +1 -0
- package/types/raintonic-formaui-services-dialog.d.ts +141 -2
- package/types/raintonic-formaui-services-dialog.d.ts.map +1 -1
- package/types/raintonic-formaui-services-notification.d.ts +24 -2
- package/types/raintonic-formaui-services-notification.d.ts.map +1 -1
- package/types/raintonic-formaui-services-theme.d.ts +13 -103
- package/types/raintonic-formaui-services-theme.d.ts.map +1 -1
- package/types/raintonic-formaui.d.ts +1 -1
- package/fesm2022/raintonic-formaui-components-big-menu.mjs +0 -86
- package/fesm2022/raintonic-formaui-components-big-menu.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-menu.mjs +0 -896
- package/fesm2022/raintonic-formaui-components-menu.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-sidebar.mjs +0 -275
- package/fesm2022/raintonic-formaui-components-sidebar.mjs.map +0 -1
- package/fesm2022/raintonic-formaui-components-tag.mjs +0 -95
- package/fesm2022/raintonic-formaui-components-tag.mjs.map +0 -1
- package/styles/_fonts-entry.scss +0 -3
- package/styles/fonts/inter-tight-latin-italic.woff2 +0 -0
- package/styles/fonts/inter-tight-latin.woff2 +0 -0
- package/types/raintonic-formaui-components-big-menu.d.ts +0 -73
- package/types/raintonic-formaui-components-big-menu.d.ts.map +0 -1
- package/types/raintonic-formaui-components-menu.d.ts +0 -403
- package/types/raintonic-formaui-components-menu.d.ts.map +0 -1
- package/types/raintonic-formaui-components-sidebar.d.ts +0 -185
- package/types/raintonic-formaui-components-sidebar.d.ts.map +0 -1
- package/types/raintonic-formaui-components-tag.d.ts +0 -43
- package/types/raintonic-formaui-components-tag.d.ts.map +0 -1
|
@@ -1,49 +1,29 @@
|
|
|
1
|
+
import * as _raintonic_formaui_components_select from '@raintonic/formaui/components/select';
|
|
1
2
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
+
import { InjectionToken, OnDestroy, InputSignal, OutputEmitterRef, WritableSignal, ElementRef, Signal, AfterContentInit, AfterViewInit } from '@angular/core';
|
|
3
4
|
import { Subject } from 'rxjs';
|
|
4
5
|
import { ControlValueAccessor, NgControl } from '@angular/forms';
|
|
5
6
|
import { FuiFormFieldControl, ErrorStateMatcher } from '@raintonic/formaui/core';
|
|
7
|
+
import * as i1 from '@raintonic/formaui/cdk/form-field';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* Individual option component for use within fui-select.
|
|
11
|
-
* Works like Angular Material's mat-option with full accessibility support.
|
|
12
|
-
*
|
|
13
|
-
* ## Features
|
|
14
|
-
* - Disabled state support
|
|
15
|
-
* - Selection state management
|
|
16
|
-
* - Full accessibility support (ARIA attributes)
|
|
17
|
-
* - Keyboard navigation support
|
|
18
|
-
* - Custom content projection
|
|
19
|
-
* - Smooth hover animations
|
|
10
|
+
* Injection token for querying all option-like components
|
|
11
|
+
* via contentChildren from parent components.
|
|
20
12
|
*
|
|
21
|
-
*
|
|
13
|
+
* FuiOptionComponent provides this token so a single
|
|
14
|
+
* contentChildren(FUI_OPTION) query captures all options.
|
|
15
|
+
*/
|
|
16
|
+
declare const FUI_OPTION: InjectionToken<FuiOptionBase>;
|
|
17
|
+
/**
|
|
18
|
+
* Abstract base class for FuiOptionComponent.
|
|
22
19
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* <fui-select placeholder="Select a status">
|
|
26
|
-
* <fui-option value="active">Active</fui-option>
|
|
27
|
-
* <fui-option value="inactive">Inactive</fui-option>
|
|
28
|
-
* <fui-option value="pending" [disabled]="true">Pending (Disabled)</fui-option>
|
|
29
|
-
* </fui-select>
|
|
30
|
-
* ```
|
|
20
|
+
* Defines the contract that parent components rely on.
|
|
21
|
+
* FuiOptionComponent provides FUI_OPTION for DI-based querying.
|
|
31
22
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* <fui-select placeholder="Select a country">
|
|
35
|
-
* <fui-option value="us">
|
|
36
|
-
* <fui-icon name="flag-us"></fui-icon>
|
|
37
|
-
* United States
|
|
38
|
-
* </fui-option>
|
|
39
|
-
* <fui-option value="ca">
|
|
40
|
-
* <fui-icon name="flag-ca"></fui-icon>
|
|
41
|
-
* Canada
|
|
42
|
-
* </fui-option>
|
|
43
|
-
* </fui-select>
|
|
44
|
-
* ```
|
|
23
|
+
* Uses @Directive() so Angular recognises input()/output()/signal()/HostListener
|
|
24
|
+
* calls as valid (they are only valid on @Component or @Directive classes).
|
|
45
25
|
*/
|
|
46
|
-
declare class
|
|
26
|
+
declare abstract class FuiOptionBase implements OnDestroy {
|
|
47
27
|
static nextId: number;
|
|
48
28
|
/**
|
|
49
29
|
* The value of the option
|
|
@@ -58,17 +38,15 @@ declare class FuiOptionComponent implements OnDestroy, AfterViewInit {
|
|
|
58
38
|
* Event emitted when the option is selected
|
|
59
39
|
*/
|
|
60
40
|
readonly selectionChange: OutputEmitterRef<{
|
|
61
|
-
source:
|
|
41
|
+
source: FuiOptionBase;
|
|
62
42
|
value: unknown;
|
|
63
43
|
}>;
|
|
64
44
|
readonly _selected: WritableSignal<boolean>;
|
|
65
45
|
readonly _active: WritableSignal<boolean>;
|
|
66
46
|
readonly stateChanges: Subject<void>;
|
|
67
|
-
|
|
68
|
-
|
|
47
|
+
protected readonly _element: ElementRef<HTMLElement>;
|
|
48
|
+
protected readonly _parentSelect: _raintonic_formaui_components_select.FuiSelectParent | null;
|
|
69
49
|
readonly id: string;
|
|
70
|
-
readonly _showCheckmark: WritableSignal<boolean>;
|
|
71
|
-
ngAfterViewInit(): void;
|
|
72
50
|
ngOnDestroy(): void;
|
|
73
51
|
get viewValue(): string;
|
|
74
52
|
_handleClick(event: Event): void;
|
|
@@ -102,12 +80,67 @@ declare class FuiOptionComponent implements OnDestroy, AfterViewInit {
|
|
|
102
80
|
* Gets the host element
|
|
103
81
|
*/
|
|
104
82
|
_getHostElement(): HTMLElement;
|
|
105
|
-
/** Update checkmark visibility based on selection and multiple mode */
|
|
106
|
-
private _updateCheckmarkVisibility;
|
|
107
83
|
/** Emits the selection change event */
|
|
108
84
|
private _emitSelectionChangeEvent;
|
|
85
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FuiOptionBase, never>;
|
|
86
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<FuiOptionBase, never, never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selectionChange": "selectionChange"; }, never, never, true, never>;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* # FuiOption Component
|
|
91
|
+
*
|
|
92
|
+
* Individual option component for use within fui-select.
|
|
93
|
+
* Works like Angular Material's mat-option with full accessibility support.
|
|
94
|
+
*
|
|
95
|
+
* ## Features
|
|
96
|
+
* - Disabled state support
|
|
97
|
+
* - Selection state management
|
|
98
|
+
* - Full accessibility support (ARIA attributes)
|
|
99
|
+
* - Keyboard navigation support
|
|
100
|
+
* - Custom content projection
|
|
101
|
+
* - Smooth hover animations
|
|
102
|
+
*
|
|
103
|
+
* ## Usage
|
|
104
|
+
*
|
|
105
|
+
* ### Basic Option
|
|
106
|
+
* ```html
|
|
107
|
+
* <fui-select placeholder="Select a status">
|
|
108
|
+
* <fui-option value="active">Active</fui-option>
|
|
109
|
+
* <fui-option value="inactive">Inactive</fui-option>
|
|
110
|
+
* <fui-option value="pending" [disabled]="true">Pending (Disabled)</fui-option>
|
|
111
|
+
* </fui-select>
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* ### Option with Custom Content
|
|
115
|
+
* ```html
|
|
116
|
+
* <fui-select placeholder="Select a country">
|
|
117
|
+
* <fui-option value="us">
|
|
118
|
+
* <fui-icon name="flag-us"></fui-icon>
|
|
119
|
+
* United States
|
|
120
|
+
* </fui-option>
|
|
121
|
+
* <fui-option value="ca">
|
|
122
|
+
* <fui-icon name="flag-ca"></fui-icon>
|
|
123
|
+
* Canada
|
|
124
|
+
* </fui-option>
|
|
125
|
+
* </fui-select>
|
|
126
|
+
* ```
|
|
127
|
+
*
|
|
128
|
+
* ### Multi-Select Options
|
|
129
|
+
* When `fui-select` has `[multiple]="true"`, `<fui-option>` automatically renders
|
|
130
|
+
* a checkbox indicator:
|
|
131
|
+
* ```html
|
|
132
|
+
* <fui-select [multiple]="true" placeholder="Select skills">
|
|
133
|
+
* <fui-option value="js">JavaScript</fui-option>
|
|
134
|
+
* <fui-option value="ts">TypeScript</fui-option>
|
|
135
|
+
* <fui-option value="py">Python</fui-option>
|
|
136
|
+
* </fui-select>
|
|
137
|
+
* ```
|
|
138
|
+
*/
|
|
139
|
+
declare class FuiOptionComponent extends FuiOptionBase {
|
|
140
|
+
/** Whether the parent select is in multi-select mode */
|
|
141
|
+
readonly _isMultiParent: Signal<boolean>;
|
|
109
142
|
static ɵfac: i0.ɵɵFactoryDeclaration<FuiOptionComponent, never>;
|
|
110
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FuiOptionComponent, "fui-option", never, {
|
|
143
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FuiOptionComponent, "fui-option", never, {}, {}, never, ["*"], true, never>;
|
|
111
144
|
}
|
|
112
145
|
|
|
113
146
|
/**
|
|
@@ -197,33 +230,34 @@ interface FuiSelectChange {
|
|
|
197
230
|
* </fui-form-field>
|
|
198
231
|
* ```
|
|
199
232
|
*/
|
|
200
|
-
declare class FuiSelectComponent implements ControlValueAccessor, FuiFormFieldControl,
|
|
233
|
+
declare class FuiSelectComponent implements ControlValueAccessor, FuiFormFieldControl, OnDestroy, AfterContentInit, AfterViewInit {
|
|
201
234
|
static nextId: number;
|
|
202
235
|
readonly controlType = "fui-select";
|
|
236
|
+
private readonly _popup;
|
|
237
|
+
private readonly _formSync;
|
|
238
|
+
private readonly _parentFormField;
|
|
203
239
|
readonly placeholderInput: InputSignal<string>;
|
|
204
240
|
readonly disabledInput: InputSignal<boolean>;
|
|
205
|
-
readonly
|
|
241
|
+
readonly readonlyInput: InputSignal<boolean>;
|
|
206
242
|
readonly multiple: InputSignal<boolean>;
|
|
207
|
-
readonly errorStateMatcher: InputSignal<ErrorStateMatcher | null>;
|
|
208
243
|
/**
|
|
209
|
-
*
|
|
244
|
+
* Comparison function for option values.
|
|
245
|
+
* Defaults to strict equality (`===`). Override when options use object
|
|
246
|
+
* values and you need to match by a property (e.g. comparing by `id`).
|
|
210
247
|
*/
|
|
211
248
|
readonly compareWith: InputSignal<(o1: unknown, o2: unknown) => boolean>;
|
|
249
|
+
readonly errorStateMatcher: InputSignal<ErrorStateMatcher | null>;
|
|
212
250
|
readonly valueChange: OutputEmitterRef<unknown>;
|
|
213
251
|
readonly selectionChange: OutputEmitterRef<FuiSelectChange>;
|
|
214
252
|
readonly openedChange: OutputEmitterRef<boolean>;
|
|
215
253
|
private readonly _value;
|
|
216
254
|
private readonly _focused;
|
|
217
255
|
private readonly _disabled;
|
|
218
|
-
readonly _readOnly: WritableSignal<boolean>;
|
|
219
256
|
readonly stateChanges: Subject<void>;
|
|
220
257
|
private _uid;
|
|
221
258
|
_ariaDescribedby: string | null;
|
|
222
259
|
private readonly _errorState;
|
|
223
260
|
readonly errorState: WritableSignal<boolean>;
|
|
224
|
-
private _parentForm;
|
|
225
|
-
private _parentFormGroup;
|
|
226
|
-
private _defaultErrorStateMatcher;
|
|
227
261
|
private readonly _ngControlRef;
|
|
228
262
|
get ngControl(): NgControl | null;
|
|
229
263
|
readonly placeholder: Signal<string>;
|
|
@@ -233,49 +267,52 @@ declare class FuiSelectComponent implements ControlValueAccessor, FuiFormFieldCo
|
|
|
233
267
|
readonly focused: WritableSignal<boolean>;
|
|
234
268
|
private readonly _ngControlDisabled;
|
|
235
269
|
readonly disabled: Signal<boolean>;
|
|
270
|
+
readonly readonly: Signal<boolean>;
|
|
236
271
|
readonly empty: Signal<boolean>;
|
|
237
272
|
readonly id: string;
|
|
238
273
|
trigger?: ElementRef<HTMLDivElement>;
|
|
239
274
|
panel?: ElementRef<HTMLDivElement>;
|
|
240
|
-
readonly options: Signal<readonly
|
|
241
|
-
readonly panelOpen:
|
|
275
|
+
readonly options: Signal<readonly FuiOptionBase[]>;
|
|
276
|
+
readonly panelOpen: Signal<boolean>;
|
|
242
277
|
private readonly _activeOptionIndex;
|
|
243
278
|
readonly activeOptionIndex: Signal<number>;
|
|
244
279
|
readonly _liveAnnouncement: WritableSignal<string>;
|
|
245
|
-
private
|
|
246
|
-
private
|
|
247
|
-
private readonly _overlayService;
|
|
248
|
-
private readonly _elementRef;
|
|
249
|
-
private readonly _document;
|
|
250
|
-
private readonly _ngZone;
|
|
251
|
-
private _outsideClickSub?;
|
|
252
|
-
private _typeaheadBuffer;
|
|
253
|
-
private _typeaheadTimeout;
|
|
280
|
+
private readonly _typeaheadBuffer;
|
|
281
|
+
private _typeaheadResetTimer;
|
|
254
282
|
private readonly TYPE_AHEAD_DEBOUNCE;
|
|
255
283
|
private _onChange;
|
|
256
284
|
private _onTouched;
|
|
257
285
|
readonly displayValue: Signal<string>;
|
|
258
286
|
constructor();
|
|
259
|
-
ngDoCheck(): void;
|
|
260
287
|
ngOnDestroy(): void;
|
|
261
288
|
ngAfterContentInit(): void;
|
|
289
|
+
ngAfterViewInit(): void;
|
|
290
|
+
/** Sets the select value from the form model. Null/undefined coerces to null. */
|
|
262
291
|
writeValue(value: unknown): void;
|
|
292
|
+
/** Registers the callback Angular calls when the value should propagate to the model. */
|
|
263
293
|
registerOnChange(fn: (value: unknown) => void): void;
|
|
294
|
+
/** Registers the callback Angular calls when the control should be marked as touched. */
|
|
264
295
|
registerOnTouched(fn: () => void): void;
|
|
296
|
+
/** Enables or disables the control programmatically; mirrors the `disabled` form-control state. */
|
|
265
297
|
setDisabledState(isDisabled: boolean): void;
|
|
298
|
+
/** Opens the panel when the form-field container is clicked, unless disabled or readonly. */
|
|
266
299
|
onContainerClick(_event: MouseEvent): void;
|
|
300
|
+
/** Stores the space-separated list of IDs for the aria-describedby attribute. */
|
|
267
301
|
setDescribedByIds(ids: string[]): void;
|
|
268
|
-
setReadOnly(readOnly: boolean): void;
|
|
269
302
|
private _syncOptionsSelection;
|
|
270
303
|
_onFocus(): void;
|
|
271
304
|
_onBlur(event?: FocusEvent): void;
|
|
305
|
+
/** Focuses the select trigger element. */
|
|
272
306
|
focus(): void;
|
|
307
|
+
/** Blurs the select trigger element. */
|
|
273
308
|
blur(): void;
|
|
309
|
+
/** Toggles the select panel. No-op if disabled. */
|
|
274
310
|
toggle(): void;
|
|
311
|
+
/** Opens the select panel. No-op if disabled, readonly, or already open. */
|
|
275
312
|
open(): void;
|
|
313
|
+
/** Closes the select panel and restores focus to the trigger unless `restoreFocus` is false. No-op if already closed. */
|
|
276
314
|
close(restoreFocus?: boolean): void;
|
|
277
|
-
_onOptionSelected(option:
|
|
278
|
-
_getDisplayValue(): string;
|
|
315
|
+
_onOptionSelected(option: FuiOptionBase): void;
|
|
279
316
|
_handleKeydown(event: KeyboardEvent): void;
|
|
280
317
|
private _handleClosedKeydown;
|
|
281
318
|
private _handleOpenKeydown;
|
|
@@ -287,21 +324,15 @@ declare class FuiSelectComponent implements ControlValueAccessor, FuiFormFieldCo
|
|
|
287
324
|
private _selectFirstOption;
|
|
288
325
|
private _selectLastOption;
|
|
289
326
|
private _getEnabledOptions;
|
|
290
|
-
private _listenForOutsideClicks;
|
|
291
|
-
private _createOverlay;
|
|
292
|
-
private _disposeOverlay;
|
|
293
327
|
_getActiveDescendant(): string | null;
|
|
294
|
-
/**
|
|
295
|
-
* Announces a message to screen readers via the aria-live region.
|
|
296
|
-
* Clears the message after a brief delay to allow repeated announcements.
|
|
297
|
-
*/
|
|
298
328
|
private _announce;
|
|
299
329
|
get selected(): Signal<unknown>;
|
|
330
|
+
/** @internal Helper to check if a value is an array. Used by tests. */
|
|
300
331
|
isArray(value: unknown): value is unknown[];
|
|
301
332
|
static ɵfac: i0.ɵɵFactoryDeclaration<FuiSelectComponent, never>;
|
|
302
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FuiSelectComponent, "fui-select", never, { "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "
|
|
333
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FuiSelectComponent, "fui-select", never, { "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonlyInput": { "alias": "readonly"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "compareWith": { "alias": "compareWith"; "required": false; "isSignal": true; }; "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "selectionChange": "selectionChange"; "openedChange": "openedChange"; }, ["options"], ["*"], true, [{ directive: typeof i1.FuiPopupOverlayDirective; inputs: { "positions": "positions"; "panelClass": "panelClass"; "backdropClass": "backdropClass"; "scrollStrategy": "scrollStrategy"; "minWidthFromTrigger": "minWidthFromTrigger"; }; outputs: { "openedChange": "openedChange"; "escapeKey": "escapeKey"; }; }, { directive: typeof i1.FuiFormControlSyncDirective; inputs: {}; outputs: {}; }]>;
|
|
303
334
|
}
|
|
304
335
|
|
|
305
|
-
export { FUI_SELECT, FuiOptionComponent, FuiSelectComponent };
|
|
336
|
+
export { FUI_OPTION, FUI_SELECT, FuiOptionBase, FuiOptionComponent, FuiSelectComponent };
|
|
306
337
|
export type { FuiSelectChange, FuiSelectParent, FuiSelectSize, FuiSelectVariant };
|
|
307
338
|
//# sourceMappingURL=raintonic-formaui-components-select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raintonic-formaui-components-select.d.ts","sources":["../../../lib/components/select/option.component.ts","../../../lib/components/select/select-tokens.ts","../../../lib/components/select/select.component.ts"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-select.d.ts","sources":["../../../lib/components/select/option-base.ts","../../../lib/components/select/option.component.ts","../../../lib/components/select/select-tokens.ts","../../../lib/components/select/select.component.ts"],"mappings":";;;;;;;;AAkBA;;;;;;AAMG;AACH,cAAa,UAAU,EAAA,cAAA,CAAA,aAAA;AAEvB;;;;;;;;AAQG;AACH,uBACsB,aAAc,YAAW,SAAS;;AAGtD;;AAEG;AACH,oBAAgB,WAAW;AAE3B;;;AAGG;AACH,uBAAmB,WAAW;AAE9B;;AAEG;AACH,8BAA0B,gBAAgB;gBAAW,aAAa;;AAAkB;AAGpF,wBAAoB,cAAc;AAClC,sBAAkB,cAAc;2BACX,OAAA;iCAGQ,UAAU,CAAC,WAAW;AAGnD,sCAAgC,oCAAA,CAAA,eAAA;;AAKhC;;AAUA,wBAAoB,KAAK;AAgBzB;AAOA;AAIA;;AAEG;AACH;AAOA;;AAEG;AACH;AAOA;;AAEG;AACH;AAOA;;AAEG;AACH;AAOA;;AAEG;AACH;AAOA;;AAEG;AACH;AAIA;;AAEG;AACH,uBAAmB,WAAW;;AAK9B;yCAvIoB,aAAa;2CAAb,aAAa;AA0IlC;;AC1KD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDG;AACH,cAuCa,kBAAmB,SAAQ,aAAa;;AAEnD,6BAAyB,MAAM;yCAFpB,kBAAkB;2CAAlB,kBAAkB;AAG9B;;AC/FD;;;AAGG;UACc,eAAe;;AAE9B;AACD;AAED;;AAEG;AACH,cAAa,UAAU,EAAA,cAAA,CAAA,eAAA;;ACkCvB;;AAEG;AACG,KAAM,aAAa;AAEzB;;AAEG;KACS,gBAAgB;AAE5B;;AAEG;UACc,eAAe;YACtB,kBAAkB;;AAE3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DG;AACH,cAyCa,kBACX,YAAW,oBAAoB,EAAE,mBAAmB,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa;;;AAOhG;AACA;AAGA;AAGA,+BAA2B,WAAW;AACtC,4BAAwB,WAAW;AACnC,4BAAwB,WAAW;AACnC,uBAAmB,WAAW;AAE9B;;;;AAIG;AACH,0BAAsB,WAAW;gCAIL,WAAW,CAAC,iBAAiB;AAGzD,0BAAsB,gBAAgB;AACtC,8BAA0B,gBAAgB,CAAC,eAAe;AAC1D,2BAAuB,gBAAgB;AAGvC;AACA;AACA;2BAEqB,OAAA;;AAErB;AAGA;yBACmB,cAAA;AAGnB;AACA,qBAAiB,SAAS;0BAKN,MAAA;AACpB;uBACiB,cAAA;oBAEH,cAAA;sBAEE,cAAA;AAEhB;uBACiB,MAAA;uBACA,MAAA;oBAEH,MAAA;;AAK0B,cAAU,UAAU,CAAC,cAAc;AACrC,YAAQ,UAAU,CAAC,cAAc;sBAGvD,MAAA,UAAA,aAAA;wBAGE,MAAA;AAGlB;gCAC0B,MAAA;AAG1B,gCAA4B,cAAc;AAG1C;;AAEA;;;AAWA,2BAAuB,MAAM;;AAqC7B;AAOA;AAKA;;AAoCA;;;;AAWA;;AAKA;;AAOA,6BAAyB,UAAU;;AAOnC;AAKA;AAKA;AAKA,oBAAgB,UAAU;;AAmB1B;;AAKA;;AAKA;;AAUA;;AAcA;AAiBA,8BAA0B,aAAa;AAqBvC,0BAAsB,aAAa;AAanC;AA6BA;AA6DA;AAOA;AAwBA;AAYA;AAQA;AA2BA;AAQA;AAQA;;AASA;AAKA,oBAAgB,MAAM;;;yCAvhBX,kBAAkB;2CAAlB,kBAAkB,mqBAAA,EAAA,CAAA,wBAAA,wRAAA,EAAA,CAAA,2BAAA;AA+hB9B;;;;","names":[]}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { MenuItem, FuiIntlBase } from '@raintonic/formaui/core';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* # FuiSidebarNavMenuComponent
|
|
6
|
+
*
|
|
7
|
+
* A standalone sidebar navigation menu component with recursive,
|
|
8
|
+
* multi-level submenus. Inspired by PrimeNG's TieredMenu model
|
|
9
|
+
* with a minimal, structural approach.
|
|
10
|
+
*
|
|
11
|
+
* ## Features
|
|
12
|
+
* - Unlimited nesting depth via recursive submenu template
|
|
13
|
+
* - Inline expand/collapse submenus
|
|
14
|
+
* - Built-in search input with clear button
|
|
15
|
+
* - Routing integration via `routerLink` with automatic active detection
|
|
16
|
+
* - Keyboard navigation (Arrow keys, Enter/Space, Home/End)
|
|
17
|
+
* - Full ARIA support (`role="navigation"`, `aria-expanded`, `aria-haspopup`)
|
|
18
|
+
*
|
|
19
|
+
* ## Usage
|
|
20
|
+
*
|
|
21
|
+
* ```html
|
|
22
|
+
* <fui-sidebar-nav-menu
|
|
23
|
+
* [items]="menuItems"
|
|
24
|
+
* [(filterString)]="myFilter"
|
|
25
|
+
* (itemClick)="onMenuItemClick($event)"
|
|
26
|
+
* />
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* ```typescript
|
|
30
|
+
* import { FuiSidebarNavMenuComponent, MenuItem } from '@raintonic/formaui/components/sidebar-nav-menu';
|
|
31
|
+
*
|
|
32
|
+
* @Component({
|
|
33
|
+
* standalone: true,
|
|
34
|
+
* imports: [FuiSidebarNavMenuComponent],
|
|
35
|
+
* template: `...`,
|
|
36
|
+
* })
|
|
37
|
+
* export class MyLayout {
|
|
38
|
+
* menuItems: MenuItem[] = [
|
|
39
|
+
* { label: 'Dashboard', icon: 'house', routerLink: '/dashboard' },
|
|
40
|
+
* {
|
|
41
|
+
* label: 'Products',
|
|
42
|
+
* icon: 'package',
|
|
43
|
+
* items: [
|
|
44
|
+
* { label: 'List', routerLink: '/products' },
|
|
45
|
+
* { label: 'Categories', routerLink: '/categories' },
|
|
46
|
+
* ],
|
|
47
|
+
* },
|
|
48
|
+
* { separator: true },
|
|
49
|
+
* { label: 'Logout', command: () => this.logout() },
|
|
50
|
+
* ];
|
|
51
|
+
*
|
|
52
|
+
* onMenuItemClick(item: MenuItem): void {
|
|
53
|
+
* console.log('Menu item:', item.label);
|
|
54
|
+
* }
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
declare class FuiSidebarNavMenuComponent {
|
|
59
|
+
/**
|
|
60
|
+
* Array of menu items to render.
|
|
61
|
+
*/
|
|
62
|
+
readonly items: _angular_core.InputSignal<MenuItem[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Accessible label for the navigation region.
|
|
65
|
+
* @default 'Sidebar menu'
|
|
66
|
+
*/
|
|
67
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
68
|
+
/**
|
|
69
|
+
* Optional filter string. When set, the menu displays only items whose label
|
|
70
|
+
* contains the filter text (case-insensitive, substring match). Parent items
|
|
71
|
+
* with matching descendants remain visible so the filtered child can be reached.
|
|
72
|
+
* Separators and section headers are hidden during filtering.
|
|
73
|
+
*
|
|
74
|
+
* This is a two-way bindable model signal — set it programmatically or wire it
|
|
75
|
+
* to the built-in search component.
|
|
76
|
+
*/
|
|
77
|
+
readonly filterString: _angular_core.ModelSignal<string>;
|
|
78
|
+
/**
|
|
79
|
+
* Emitted when any clickable menu item is activated.
|
|
80
|
+
*/
|
|
81
|
+
readonly itemClick: _angular_core.OutputEmitterRef<MenuItem>;
|
|
82
|
+
/**
|
|
83
|
+
* Pure derivation that assigns unique IDs without mutating consumer data.
|
|
84
|
+
* Each item is shallow-copied; the tree is walked recursively.
|
|
85
|
+
*/
|
|
86
|
+
readonly _readyItems: _angular_core.Signal<MenuItem[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Filtered items based on `filterString`. When the filter is non-empty,
|
|
89
|
+
* items are kept if their label matches (case-insensitive substring) or
|
|
90
|
+
* if any descendant matches. Separators and section headers are hidden
|
|
91
|
+
* during filtering.
|
|
92
|
+
*/
|
|
93
|
+
readonly _filteredItems: _angular_core.Signal<MenuItem[]>;
|
|
94
|
+
/** @internal Pass-through handler from submenu */
|
|
95
|
+
_onItemClick(item: MenuItem): void;
|
|
96
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiSidebarNavMenuComponent, never>;
|
|
97
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiSidebarNavMenuComponent, "fui-sidebar-nav-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "filterString": { "alias": "filterString"; "required": false; "isSignal": true; }; }, { "filterString": "filterStringChange"; "itemClick": "itemClick"; }, never, ["[fuiSidebarNavHeader]", "[fuiSidebarNavFooter]"], true, never>;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Recursive submenu component for rendering nested menu items.
|
|
102
|
+
*
|
|
103
|
+
* Used internally by FuiSidebarNavMenuComponent. Renders a flat list
|
|
104
|
+
* of items and recurses via <sidebar-nav-submenu> in the template
|
|
105
|
+
* when an item has children.
|
|
106
|
+
*
|
|
107
|
+
* Keyboard navigation follows WAI-ARIA menu patterns:
|
|
108
|
+
* - ArrowDown / ArrowUp: navigate between siblings
|
|
109
|
+
* - ArrowRight: expand submenu
|
|
110
|
+
* - ArrowLeft: collapse submenu / move focus to parent
|
|
111
|
+
* - Enter / Space: activate item
|
|
112
|
+
* - Home / End: first / last item
|
|
113
|
+
*/
|
|
114
|
+
declare class SidebarNavSubmenuComponent {
|
|
115
|
+
/** Menu items to render (IDs already assigned by parent) */
|
|
116
|
+
readonly items: _angular_core.InputSignal<MenuItem[]>;
|
|
117
|
+
/** Accessible label for this submenu group */
|
|
118
|
+
readonly submenuLabel: _angular_core.InputSignal<string>;
|
|
119
|
+
/** Whether this is the root level (applies root-level styles) */
|
|
120
|
+
readonly isRoot: _angular_core.InputSignal<boolean>;
|
|
121
|
+
/** Nesting depth (0 = root). Used to compute aria-level on section headers. */
|
|
122
|
+
readonly depth: _angular_core.InputSignal<number>;
|
|
123
|
+
/** Emitted when any clickable item is activated */
|
|
124
|
+
readonly itemClick: _angular_core.OutputEmitterRef<MenuItem>;
|
|
125
|
+
readonly _expanded: _angular_core.WritableSignal<Set<string>>;
|
|
126
|
+
constructor();
|
|
127
|
+
/** @internal Whether the item has child submenu items */
|
|
128
|
+
hasChildren(item: MenuItem): boolean;
|
|
129
|
+
/** @internal Whether the item's submenu is currently expanded */
|
|
130
|
+
isExpanded(item: MenuItem): boolean;
|
|
131
|
+
/** @internal Toggle submenu open/closed */
|
|
132
|
+
toggleExpand(event: Event, item: MenuItem): void;
|
|
133
|
+
/** @internal Handle click on a leaf (non-parent) item */
|
|
134
|
+
onLeafClick(event: Event, item: MenuItem): void;
|
|
135
|
+
/** @internal Keyboard event handler */
|
|
136
|
+
onKeydown(event: KeyboardEvent, item: MenuItem): void;
|
|
137
|
+
private _focusItemAt;
|
|
138
|
+
private _hasParentSubmenu;
|
|
139
|
+
private _focusParent;
|
|
140
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SidebarNavSubmenuComponent, never>;
|
|
141
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SidebarNavSubmenuComponent, "fui-sidebar-nav-submenu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "submenuLabel": { "alias": "submenuLabel"; "required": false; "isSignal": true; }; "isRoot": { "alias": "isRoot"; "required": false; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
declare class FuiSidebarNavSearchIntl extends FuiIntlBase {
|
|
145
|
+
/** Placeholder text for the search input. */
|
|
146
|
+
searchPlaceholder: string;
|
|
147
|
+
/** aria-label for the search input. */
|
|
148
|
+
searchInputAriaLabel: string;
|
|
149
|
+
/** aria-label for the clear-search button. */
|
|
150
|
+
clearSearchAriaLabel: string;
|
|
151
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiSidebarNavSearchIntl, never>;
|
|
152
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<FuiSidebarNavSearchIntl>;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* # FuiSidebarNavSearchComponent
|
|
157
|
+
*
|
|
158
|
+
* A standalone search input component designed to be placed inside the sidebar
|
|
159
|
+
* navigation menu. Emits the current filter string so the parent component can
|
|
160
|
+
* reactively filter menu items.
|
|
161
|
+
*
|
|
162
|
+
* ## Features
|
|
163
|
+
* - Search input with magnifying-glass icon
|
|
164
|
+
* - Clear button that appears when a query is entered
|
|
165
|
+
* - Configurable placeholder text (falls back to `FuiSidebarNavSearchIntl` default)
|
|
166
|
+
* - Two-way binding via `filterString` model
|
|
167
|
+
* - Aria labels via `FuiSidebarNavSearchIntl` (overridable via DI)
|
|
168
|
+
*
|
|
169
|
+
* ## Usage
|
|
170
|
+
*
|
|
171
|
+
* ```html
|
|
172
|
+
* <fui-sidebar-nav-search
|
|
173
|
+
* [(filterString)]="myFilter"
|
|
174
|
+
* placeholder="Search…"
|
|
175
|
+
* />
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
declare class FuiSidebarNavSearchComponent {
|
|
179
|
+
readonly intl: FuiSidebarNavSearchIntl;
|
|
180
|
+
private readonly _cdr;
|
|
181
|
+
constructor();
|
|
182
|
+
/**
|
|
183
|
+
* The current filter string. Two-way bindable.
|
|
184
|
+
*/
|
|
185
|
+
readonly filterString: _angular_core.ModelSignal<string>;
|
|
186
|
+
/**
|
|
187
|
+
* Placeholder text for the search input.
|
|
188
|
+
* Falls back to the Intl default when not set.
|
|
189
|
+
*/
|
|
190
|
+
readonly placeholder: _angular_core.InputSignal<string | undefined>;
|
|
191
|
+
/** Resolved placeholder: input override -> Intl default. */
|
|
192
|
+
readonly resolvedPlaceholder: _angular_core.Signal<string>;
|
|
193
|
+
/** Resolved search-input aria-label: Intl default. */
|
|
194
|
+
readonly resolvedSearchInputAriaLabel: _angular_core.Signal<string>;
|
|
195
|
+
/** Resolved clear-button aria-label: Intl default. */
|
|
196
|
+
readonly resolvedClearSearchAriaLabel: _angular_core.Signal<string>;
|
|
197
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiSidebarNavSearchComponent, never>;
|
|
198
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiSidebarNavSearchComponent, "fui-sidebar-nav-search", never, { "filterString": { "alias": "filterString"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "filterString": "filterStringChange"; }, never, never, true, never>;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Walk a menu item tree and set `expanded: true` on every parent whose
|
|
203
|
+
* descendant chain contains a `routerLink` that matches the current URL.
|
|
204
|
+
*
|
|
205
|
+
* The function is **immutable** — it clones items only when it needs to mutate
|
|
206
|
+
* them, returning the same reference for untouched subtrees.
|
|
207
|
+
*
|
|
208
|
+
* ## Usage
|
|
209
|
+
*
|
|
210
|
+
* ```typescript
|
|
211
|
+
* import { expandMenuItems } from '@raintonic/formaui/components/sidebar-nav-menu';
|
|
212
|
+
*
|
|
213
|
+
* const items = expandMenuItems(myMenuItems, '/products/categories');
|
|
214
|
+
* ```
|
|
215
|
+
*
|
|
216
|
+
* @param items - Menu item tree
|
|
217
|
+
* @param currentUrl - The current URL path (e.g. `'/products/categories'`)
|
|
218
|
+
* @returns A new tree with `expanded` set on matching parent items
|
|
219
|
+
*/
|
|
220
|
+
declare function expandMenuItems(items: readonly MenuItem[], currentUrl: string): MenuItem[];
|
|
221
|
+
|
|
222
|
+
export { FuiSidebarNavMenuComponent, FuiSidebarNavSearchComponent, SidebarNavSubmenuComponent, expandMenuItems };
|
|
223
|
+
//# sourceMappingURL=raintonic-formaui-components-sidebar-nav-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-sidebar-nav-menu.d.ts","sources":["../../../lib/components/sidebar-nav-menu/sidebar-nav-menu.component.ts","../../../lib/components/sidebar-nav-menu/sidebar-nav-submenu.component.ts","../../../lib/components/sidebar-nav-menu/sidebar-nav-search.intl.ts","../../../lib/components/sidebar-nav-menu/sidebar-nav-search.component.ts","../../../lib/components/sidebar-nav-menu/expand-menu-items.ts"],"mappings":";;;AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDG;AACH,cAaa,0BAA0B;AACrC;;AAEG;oBACW,aAAA,CAAA,WAAA,CAAA,QAAA;AAEd;;;AAGG;wBACe,aAAA,CAAA,WAAA;AAElB;;;;;;;;AAQG;2BACkB,aAAA,CAAA,WAAA;AAErB;;AAEG;wBACe,aAAA,CAAA,gBAAA,CAAA,QAAA;AAElB;;;AAGG;0BACiB,aAAA,CAAA,MAAA,CAAA,QAAA;AAWpB;;;;;AAKG;6BACoB,aAAA,CAAA,MAAA,CAAA,QAAA;;AAsBvB,uBAAmB,QAAQ;oDAvEhB,0BAA0B;sDAA1B,0BAA0B;AA0EtC;;AC7ID;;;;;;;;;;;;;AAaG;AACH,cAOa,0BAA0B;;oBAEvB,aAAA,CAAA,WAAA,CAAA,QAAA;;2BAGO,aAAA,CAAA,WAAA;;qBAGN,aAAA,CAAA,WAAA;;oBAGD,aAAA,CAAA,WAAA;;wBAGI,aAAA,CAAA,gBAAA,CAAA,QAAA;wBAGA,aAAA,CAAA,cAAA,CAAA,GAAA;;;AA4BlB,sBAAkB,QAAQ;;AAK1B,qBAAiB,QAAQ;;wBAML,KAAK,QAAQ,QAAQ;;uBAiCtB,KAAK,QAAQ,QAAQ;;qBAcvB,aAAa,QAAQ,QAAQ;AAwE9C;AAWA;AAIA;oDA9LW,0BAA0B;sDAA1B,0BAA0B;AAsMtC;;AC7ND,cACa,uBAAwB,SAAQ,WAAW;;AAEtD;;AAEA;;AAEA;oDANW,uBAAuB;wDAAvB,uBAAuB;AAOnC;;ACJD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACH,cA8Ba,4BAA4B;mBAC1B,uBAAA;AACb;;AAQA;;AAEG;2BACkB,aAAA,CAAA,WAAA;AAErB;;;AAGG;0BACiB,aAAA,CAAA,WAAA;;kCAGQ,aAAA,CAAA,MAAA;;2CAGS,aAAA,CAAA,MAAA;;2CAGA,aAAA,CAAA,MAAA;oDA5B1B,4BAA4B;sDAA5B,4BAA4B;AA6BxC;;ACvFD;;;;;;;;;;;;;;;;;;AAkBG;AACH,iBAAgB,eAAe,iBAAiB,QAAQ,yBAAyB,QAAQ;;;;","names":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { InjectionToken, WritableSignal, Signal, TemplateRef } from '@angular/core';
|
|
2
|
+
import { InjectionToken, WritableSignal, Signal, TemplateRef, ElementRef } from '@angular/core';
|
|
3
3
|
import { AbstractControl } from '@angular/forms';
|
|
4
4
|
|
|
5
5
|
type StepperOrientation = 'horizontal' | 'vertical';
|
|
@@ -40,6 +40,7 @@ declare class FuiStepComponent {
|
|
|
40
40
|
readonly errorMessage: _angular_core.InputSignal<string>;
|
|
41
41
|
readonly stepControl: _angular_core.InputSignal<AbstractControl<any, any, any> | null>;
|
|
42
42
|
readonly optional: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
43
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
43
44
|
readonly _interacted: WritableSignal<boolean>;
|
|
44
45
|
readonly contentTemplate: Signal<TemplateRef<unknown> | undefined>;
|
|
45
46
|
readonly hasError: Signal<boolean>;
|
|
@@ -49,7 +50,7 @@ declare class FuiStepComponent {
|
|
|
49
50
|
/** Reset the step to its initial state. */
|
|
50
51
|
reset(): void;
|
|
51
52
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FuiStepComponent, never>;
|
|
52
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiStepComponent, "fui-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "completed": { "alias": "completed"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "stepControl": { "alias": "stepControl"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
53
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FuiStepComponent, "fui-step", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "completed": { "alias": "completed"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "stepControl": { "alias": "stepControl"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
/**
|
|
@@ -97,6 +98,7 @@ declare class FuiStepperComponent {
|
|
|
97
98
|
readonly selectionChange: _angular_core.OutputEmitterRef<StepSelectionChange>;
|
|
98
99
|
readonly animationDone: _angular_core.OutputEmitterRef<void>;
|
|
99
100
|
readonly steps: _angular_core.Signal<readonly FuiStepComponent[]>;
|
|
101
|
+
readonly stepHeaderButtons: _angular_core.Signal<readonly ElementRef<any>[]>;
|
|
100
102
|
readonly _selectedIndex: WritableSignal<number>;
|
|
101
103
|
readonly _uniqueId: number;
|
|
102
104
|
readonly _selectedStep: _angular_core.Signal<FuiStepComponent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raintonic-formaui-components-stepper.d.ts","sources":["../../../lib/components/stepper/stepper.types.ts","../../../lib/components/stepper/step.component.ts","../../../lib/components/stepper/stepper.component.ts"],"mappings":";;;;KAEY,kBAAkB;AACxB,KAAM,SAAS;UAEJ,mBAAmB;;;;;AAKnC;AAED,cAAa,eAAe,EAAA,cAAA;;ACI5B;;;;;;;;;;;;;;;;;;AAkBG;AACH,cAOa,gBAAgB;oBAEb,aAAA,CAAA,WAAA;0BACM,aAAA,CAAA,WAAA;mBACP,aAAA,CAAA,WAAA;wBACK,aAAA,CAAA,wBAAA;uBACD,aAAA,CAAA,wBAAA;2BACI,aAAA,CAAA,WAAA;0BACD,aAAA,CAAA,WAAA,CAAA,eAAA;uBACH,aAAA,CAAA,wBAAA;AAGjB,0BAAsB,cAAc;AAGpC,8BAA0B,MAAM,CAAC,WAAW;AAG5C,uBAAmB,MAAM;AASzB,oBAAgB,MAAM,CAAC,SAAS;;
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-stepper.d.ts","sources":["../../../lib/components/stepper/stepper.types.ts","../../../lib/components/stepper/step.component.ts","../../../lib/components/stepper/stepper.component.ts"],"mappings":";;;;KAEY,kBAAkB;AACxB,KAAM,SAAS;UAEJ,mBAAmB;;;;;AAKnC;AAED,cAAa,eAAe,EAAA,cAAA;;ACI5B;;;;;;;;;;;;;;;;;;AAkBG;AACH,cAOa,gBAAgB;oBAEb,aAAA,CAAA,WAAA;0BACM,aAAA,CAAA,WAAA;mBACP,aAAA,CAAA,WAAA;wBACK,aAAA,CAAA,wBAAA;uBACD,aAAA,CAAA,wBAAA;2BACI,aAAA,CAAA,WAAA;0BACD,aAAA,CAAA,WAAA,CAAA,eAAA;uBACH,aAAA,CAAA,wBAAA;uBACA,aAAA,CAAA,wBAAA;AAGjB,0BAAsB,cAAc;AAGpC,8BAA0B,MAAM,CAAC,WAAW;AAG5C,uBAAmB,MAAM;AASzB,oBAAgB,MAAM,CAAC,SAAS;;AAchC;;AAKA;oDA/CW,gBAAgB;sDAAhB,gBAAgB;AAsD5B;;AC1ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCG;AACH,cAgBa,mBAAmB;0BAEV,aAAA,CAAA,WAAA,CAAA,kBAAA;qBACL,aAAA,CAAA,wBAAA;4BACO,aAAA,CAAA,WAAA;8BAGE,aAAA,CAAA,gBAAA,CAAA,mBAAA;4BACF,aAAA,CAAA,gBAAA;oBAGR,aAAA,CAAA,MAAA,UAAA,gBAAA;gCAGY,aAAA,CAAA,MAAA,UAAA,UAAA;AAG1B,6BAAyB,cAAc;;4BAMjB,aAAA,CAAA,MAAA,CAAA,gBAAA;;;AAsBtB;;AAMA;;AAMA;;AAuBA;;AAQA;;AAKA;;4BA2CwB,aAAa;;AA8CrC;oDAtLW,mBAAmB;sDAAnB,mBAAmB;AA+M/B;;;;","names":[]}
|