yukit-web 0.0.5 → 0.0.7
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/.npm/_cacache/content-v2/sha512/5a/aa/e6eb8f34547c03e7232495fb5fb7f23f3f76e86284edf588acf560055d5103b5458b1902736d287263f5b96d60abb9118b2c0f1cce104dc085be463d463d +1 -0
- package/.npm/_cacache/index-v5/64/dc/73c7a26f2e6eb0c711133d96c247da5ecf0eba708cd37c450a7b3c7cb488 +1 -1
- package/.npm/_logs/{2026-08-25T12_25_25_519Z-debug-0.log → 2026-08-26T14_56_59_444Z-debug-0.log} +10 -10
- package/.npm/_logs/{2026-08-25T12_25_26_005Z-debug-0.log → 2026-08-26T14_56_59_966Z-debug-0.log} +2 -2
- package/fesm2022/yukit-web.mjs +714 -184
- package/fesm2022/yukit-web.mjs.map +1 -1
- package/package.json +1 -1
- package/types/yukit-web.d.ts +218 -36
- package/.npm/_cacache/content-v2/sha512/4f/1b/f689c8ddedb8797ff60d136bd61b5ed80207bbc30853891a131b94e7318092e7d0a1af4e19f6e699e04bb6e9b29ade310e757f6e1d8b4d3827c222f2f8be +0 -1
package/package.json
CHANGED
package/types/yukit-web.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ import { HlmAttachmentAction } from 'yukit-web/helm/attachment';
|
|
|
30
30
|
import { RouterLink } from '@angular/router';
|
|
31
31
|
import * as i1$d from 'yukit-web/helm/sidebar';
|
|
32
32
|
export { HlmSidebarConfig as YuwSidebarConfigDto, HlmSidebarService as YuwSidebarService, SidebarVariant as YuwSidebarServiceVariantDto, provideHlmSidebarConfig as provideYuwSidebarConfig } from 'yukit-web/helm/sidebar';
|
|
33
|
+
import * as i2$1 from 'yukit-web/helm/hover-card';
|
|
33
34
|
|
|
34
35
|
/**
|
|
35
36
|
* Merges class lists the shadcn/Spartan way: `clsx` resolves conditionals/arrays, `twMerge`
|
|
@@ -766,6 +767,8 @@ type YuwSearchInputCollapseFromDto = 'left' | 'right';
|
|
|
766
767
|
* app is responsible for translating.
|
|
767
768
|
* - `expandedWidth`: CSS width the field animates out to, e.g. `'18rem'`. Default is `'16rem'`.
|
|
768
769
|
* Collapsible mode only.
|
|
770
|
+
* - `size`: Control height, matching the `<yuw-button>` of the same name. While collapsed the
|
|
771
|
+
* control is a square of that height.
|
|
769
772
|
* - `transparent`: Removes the field's resting border and background so it sits directly on its
|
|
770
773
|
* container — for search inside a toolbar or a colored surface. The focus and invalid rings stay.
|
|
771
774
|
* - `class`: Extra classes merged onto the input group.
|
|
@@ -811,6 +814,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
|
|
|
811
814
|
readonly collapseFrom: _angular_core.InputSignal<YuwSearchInputCollapseFromDto | undefined>;
|
|
812
815
|
readonly expandedWidth: _angular_core.InputSignal<string>;
|
|
813
816
|
readonly expandAriaLabel: _angular_core.InputSignal<string | undefined>;
|
|
817
|
+
readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
|
|
814
818
|
readonly transparent: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
815
819
|
readonly userClass: _angular_core.InputSignal<string>;
|
|
816
820
|
private readonly _open;
|
|
@@ -829,6 +833,8 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
|
|
|
829
833
|
protected readonly _iconClasses: _angular_core.Signal<string>;
|
|
830
834
|
protected readonly _fieldClasses: _angular_core.Signal<string>;
|
|
831
835
|
protected readonly _showExpandButton: _angular_core.Signal<boolean>;
|
|
836
|
+
/** Geometry for the collapsed expand button, which the helm's capped `size` input cannot express. */
|
|
837
|
+
protected readonly _expandButtonClasses: _angular_core.Signal<string>;
|
|
832
838
|
protected readonly _showClear: _angular_core.Signal<boolean>;
|
|
833
839
|
protected _emptyValue(): string;
|
|
834
840
|
protected onInput(event: Event): void;
|
|
@@ -852,7 +858,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
|
|
|
852
858
|
protected onEscape(): void;
|
|
853
859
|
protected onBlur(): void;
|
|
854
860
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSearchInputComponent, never>;
|
|
855
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSearchInputComponent, "yuw-search-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "collapseFrom": { "alias": "collapseFrom"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searched": "searched"; "committed": "committed"; }, never, never, true, never>;
|
|
861
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwSearchInputComponent, "yuw-search-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; "isSignal": true; }; "collapseFrom": { "alias": "collapseFrom"; "required": false; "isSignal": true; }; "expandedWidth": { "alias": "expandedWidth"; "required": false; "isSignal": true; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searched": "searched"; "committed": "committed"; }, never, never, true, never>;
|
|
856
862
|
}
|
|
857
863
|
|
|
858
864
|
/**
|
|
@@ -860,6 +866,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
|
|
|
860
866
|
*
|
|
861
867
|
* Inputs / Models:
|
|
862
868
|
* - `value`: Two-way password string.
|
|
869
|
+
* - `size`: Control height, matching the `<yuw-button>` of the same name.
|
|
863
870
|
* - `inputId`: `id` applied to the native input, for external `<label for>` association.
|
|
864
871
|
* - `disabled`: Disables input interaction.
|
|
865
872
|
* - `readonly`: Makes the field read-only.
|
|
@@ -884,6 +891,7 @@ declare class YuwSearchInputComponent extends YuwValueAccessorBase<string> imple
|
|
|
884
891
|
declare class YuwPasswordInputComponent extends YuwValueAccessorBase<string> implements YuwTextFieldContract {
|
|
885
892
|
readonly value: _angular_core.ModelSignal<string>;
|
|
886
893
|
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
894
|
+
readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
|
|
887
895
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
888
896
|
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
889
897
|
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -905,7 +913,7 @@ declare class YuwPasswordInputComponent extends YuwValueAccessorBase<string> imp
|
|
|
905
913
|
protected onChange(): void;
|
|
906
914
|
protected onToggleReveal(): void;
|
|
907
915
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwPasswordInputComponent, never>;
|
|
908
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPasswordInputComponent, "yuw-password-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "revealAriaLabel": { "alias": "revealAriaLabel"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; "masked": "maskedChange"; }, never, never, true, never>;
|
|
916
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwPasswordInputComponent, "yuw-password-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "revealAriaLabel": { "alias": "revealAriaLabel"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "masked": { "alias": "masked"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "committed": "committed"; "masked": "maskedChange"; }, never, never, true, never>;
|
|
909
917
|
}
|
|
910
918
|
|
|
911
919
|
/**
|
|
@@ -936,6 +944,7 @@ type YuwInputOtpModeDto = 'numeric' | 'text';
|
|
|
936
944
|
* - `groupSizes`: Slot counts per visual group (`number[]`). A separator renders between groups, e.g. `[3, 3]` gives `000-000`. Default is `[6]`.
|
|
937
945
|
* - `mode`: Virtual-keyboard hint (`'numeric'`, `'text'`). Default is `'numeric'`.
|
|
938
946
|
* - `disabled`: Disables input interaction.
|
|
947
|
+
* - `size`: Cell size, matching the `<yuw-button>` of the same name.
|
|
939
948
|
* - `invalid`: Forces invalid styling.
|
|
940
949
|
* - `autofocus`: Focuses the field on init. Appropriate on dedicated verification screens.
|
|
941
950
|
* - `transformPaste`: Normalizes pasted text before it fills the slots.
|
|
@@ -955,6 +964,7 @@ declare class YuwInputOtpComponent extends YuwValueAccessorBase<string> {
|
|
|
955
964
|
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
956
965
|
readonly groupSizes: _angular_core.InputSignal<readonly number[]>;
|
|
957
966
|
readonly mode: _angular_core.InputSignal<YuwInputOtpModeDto>;
|
|
967
|
+
readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
|
|
958
968
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
959
969
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
960
970
|
readonly autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -970,7 +980,7 @@ declare class YuwInputOtpComponent extends YuwValueAccessorBase<string> {
|
|
|
970
980
|
protected _emptyValue(): string;
|
|
971
981
|
protected onValueChange(next: string): void;
|
|
972
982
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwInputOtpComponent, never>;
|
|
973
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
|
|
983
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwInputOtpComponent, "yuw-input-otp", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "groupSizes": { "alias": "groupSizes"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "transformPaste": { "alias": "transformPaste"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
|
|
974
984
|
}
|
|
975
985
|
|
|
976
986
|
/**
|
|
@@ -1072,7 +1082,8 @@ declare class YuwCheckboxComponent extends YuwValueAccessorBase<boolean> {
|
|
|
1072
1082
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwCheckboxComponent, "yuw-checkbox", never, { "value": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; "isSignal": true; }; "secondary": { "alias": "secondary"; "required": false; "isSignal": true; }; }, { "value": "checkedChange"; "indeterminate": "indeterminateChange"; }, never, ["*"], true, never>;
|
|
1073
1083
|
}
|
|
1074
1084
|
|
|
1075
|
-
type YuwSwitchSizeDto = 'default' | 'sm';
|
|
1085
|
+
type YuwSwitchSizeDto = 'default' | 'xs' | 'sm' | 'lg';
|
|
1086
|
+
|
|
1076
1087
|
/**
|
|
1077
1088
|
* Toggle switch control for binary settings and immediate state changes.
|
|
1078
1089
|
*
|
|
@@ -1082,7 +1093,8 @@ type YuwSwitchSizeDto = 'default' | 'sm';
|
|
|
1082
1093
|
*
|
|
1083
1094
|
* Inputs / Models:
|
|
1084
1095
|
* - `checked` (alias for `value`): Two-way boolean on/off state. Bind as `[(checked)]`.
|
|
1085
|
-
* - `size`: Track size
|
|
1096
|
+
* - `size`: Track size (`'default'`, `'xs'`, `'sm'`, `'lg'`). Named to match the rest of the
|
|
1097
|
+
* library; the pixel values keep a switch's own proportions rather than the field heights.
|
|
1086
1098
|
* - `disabled`: Disables switch interaction.
|
|
1087
1099
|
* - `inputId`: HTML `id` for the underlying control, enabling external `<label for="...">` association.
|
|
1088
1100
|
* - `ariaLabel`: Accessible name for switches with no visible adjacent label.
|
|
@@ -1096,6 +1108,8 @@ type YuwSwitchSizeDto = 'default' | 'sm';
|
|
|
1096
1108
|
declare class YuwSwitchComponent extends YuwValueAccessorBase<boolean> {
|
|
1097
1109
|
readonly value: _angular_core.ModelSignal<boolean>;
|
|
1098
1110
|
readonly size: _angular_core.InputSignal<YuwSwitchSizeDto>;
|
|
1111
|
+
protected readonly _helmSize: _angular_core.Signal<"default" | "sm">;
|
|
1112
|
+
protected readonly _switchClass: _angular_core.Signal<string>;
|
|
1099
1113
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1100
1114
|
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
1101
1115
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
@@ -1520,6 +1534,10 @@ type YuwDatepickerModeDto = 'single' | 'range' | 'multiple' | 'monthYear';
|
|
|
1520
1534
|
* ```
|
|
1521
1535
|
*/
|
|
1522
1536
|
declare class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerValue> {
|
|
1537
|
+
private readonly _singleConfig;
|
|
1538
|
+
private readonly _rangeConfig;
|
|
1539
|
+
private readonly _multiConfig;
|
|
1540
|
+
private readonly _monthYearConfig;
|
|
1523
1541
|
readonly mode: _angular_core.InputSignal<YuwDatepickerModeDto>;
|
|
1524
1542
|
readonly value: _angular_core.ModelSignal<YuwDatepickerValue>;
|
|
1525
1543
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
@@ -1529,16 +1547,14 @@ declare class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerV
|
|
|
1529
1547
|
readonly captionLayout: _angular_core.InputSignal<"dropdown" | "label" | "dropdown-months" | "dropdown-years">;
|
|
1530
1548
|
readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
|
|
1531
1549
|
readonly buttonId: _angular_core.InputSignal<string | undefined>;
|
|
1550
|
+
readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
|
|
1532
1551
|
readonly userClass: _angular_core.InputSignal<string>;
|
|
1533
1552
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1534
1553
|
readonly formatDate: _angular_core.InputSignal<((date: Date) => string) | undefined>;
|
|
1535
|
-
protected readonly _disabled: _angular_core.Signal<boolean>;
|
|
1536
1554
|
private readonly _generatedButtonId;
|
|
1555
|
+
protected readonly _triggerClass: _angular_core.Signal<string>;
|
|
1556
|
+
protected readonly _disabled: _angular_core.Signal<boolean>;
|
|
1537
1557
|
protected readonly _buttonId: _angular_core.Signal<string>;
|
|
1538
|
-
private readonly _singleConfig;
|
|
1539
|
-
private readonly _rangeConfig;
|
|
1540
|
-
private readonly _multiConfig;
|
|
1541
|
-
private readonly _monthYearConfig;
|
|
1542
1558
|
protected readonly _formatSingle: _angular_core.Signal<(date: Date) => string>;
|
|
1543
1559
|
protected readonly _formatMonthYear: _angular_core.Signal<(date: Date) => string>;
|
|
1544
1560
|
protected readonly _formatRange: _angular_core.Signal<(dates: [Date | null, Date | null]) => string>;
|
|
@@ -1549,7 +1565,7 @@ declare class YuwDatepickerComponent extends YuwValueAccessorBase<YuwDatepickerV
|
|
|
1549
1565
|
protected _emptyValue(): YuwDatepickerValue;
|
|
1550
1566
|
protected onValueChange(next: YuwDatepickerValue): void;
|
|
1551
1567
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDatepickerComponent, never>;
|
|
1552
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatepickerComponent, "yuw-datepicker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "captionLayout": { "alias": "captionLayout"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "buttonId": { "alias": "buttonId"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "formatDate": { "alias": "formatDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1568
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatepickerComponent, "yuw-datepicker", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; "captionLayout": { "alias": "captionLayout"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "buttonId": { "alias": "buttonId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "userClass": { "alias": "class"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "formatDate": { "alias": "formatDate"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1553
1569
|
}
|
|
1554
1570
|
|
|
1555
1571
|
/**
|
|
@@ -1771,9 +1787,21 @@ declare class YuwDatatableComponent<TData extends RowData> implements OnInit {
|
|
|
1771
1787
|
readonly columnVisibility: _angular_core.ModelSignal<ColumnVisibilityState>;
|
|
1772
1788
|
readonly rowSelection: _angular_core.ModelSignal<RowSelectionState>;
|
|
1773
1789
|
readonly pagination: _angular_core.ModelSignal<PaginationState>;
|
|
1790
|
+
protected rowClicked: _angular_core.OutputEmitterRef<TData>;
|
|
1791
|
+
protected readonly _ariaSort: Record<'asc' | 'desc', 'ascending' | 'descending'>;
|
|
1792
|
+
protected readonly _sortIcon: Record<'asc' | 'desc' | 'none', string>;
|
|
1774
1793
|
protected readonly currentPage: _angular_core.WritableSignal<number>;
|
|
1775
|
-
|
|
1776
|
-
protected
|
|
1794
|
+
protected readonly _isEmpty: _angular_core.Signal<boolean>;
|
|
1795
|
+
protected readonly _columnCount: _angular_core.Signal<number>;
|
|
1796
|
+
protected readonly _skeletonRows: _angular_core.Signal<number[]>;
|
|
1797
|
+
protected readonly _tableClass: _angular_core.Signal<string>;
|
|
1798
|
+
protected readonly _containerClass: _angular_core.Signal<string>;
|
|
1799
|
+
protected readonly _headClass: _angular_core.Signal<string>;
|
|
1800
|
+
protected readonly _rowClass: _angular_core.Signal<string>;
|
|
1801
|
+
protected readonly _cellClasses: _angular_core.Signal<Map<string, {
|
|
1802
|
+
readonly header: string;
|
|
1803
|
+
readonly cell: string;
|
|
1804
|
+
}>>;
|
|
1777
1805
|
private readonly _options;
|
|
1778
1806
|
protected readonly table: _tanstack_angular_table.AngularTable<YuwDatatableFeatures, TData>;
|
|
1779
1807
|
private readonly _selectedRows;
|
|
@@ -1793,21 +1821,20 @@ declare class YuwDatatableComponent<TData extends RowData> implements OnInit {
|
|
|
1793
1821
|
* which by then is past its mount guard.
|
|
1794
1822
|
*/
|
|
1795
1823
|
ngOnInit(): void;
|
|
1796
|
-
protected
|
|
1797
|
-
protected
|
|
1798
|
-
protected readonly _skeletonRows: _angular_core.Signal<number[]>;
|
|
1799
|
-
protected readonly _tableClass: _angular_core.Signal<string>;
|
|
1800
|
-
protected readonly _containerClass: _angular_core.Signal<string>;
|
|
1801
|
-
protected readonly _headClass: _angular_core.Signal<string>;
|
|
1802
|
-
protected readonly _rowClass: _angular_core.Signal<string>;
|
|
1803
|
-
protected readonly _cellClasses: _angular_core.Signal<Map<string, {
|
|
1804
|
-
readonly header: string;
|
|
1805
|
-
readonly cell: string;
|
|
1806
|
-
}>>;
|
|
1807
|
-
protected readonly _ariaSort: Record<'asc' | 'desc', 'ascending' | 'descending'>;
|
|
1808
|
-
protected readonly _sortIcon: Record<'asc' | 'desc' | 'none', string>;
|
|
1824
|
+
protected onPageChange(page: number): void;
|
|
1825
|
+
protected onRowClick(row: TData): void;
|
|
1809
1826
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDatatableComponent<any>, never>;
|
|
1810
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableComponent<any>, "yuw-datatable", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": true; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": true; "isSignal": true; }; "paginationEllipsisSrText": { "alias": "paginationEllipsisSrText"; "required": true; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": true; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "columnFilters": { "alias": "columnFilters"; "required": false; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; }, { "sorting": "sortingChange"; "columnFilters": "columnFiltersChange"; "columnVisibility": "columnVisibilityChange"; "rowSelection": "rowSelectionChange"; "pagination": "paginationChange"; "selectedRowsChange": "selectedRowsChange"; }, never, never, true, never>;
|
|
1827
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableComponent<any>, "yuw-datatable", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "paginated": { "alias": "paginated"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "loadingRows": { "alias": "loadingRows"; "required": false; "isSignal": true; }; "previousPageLabel": { "alias": "previousPageLabel"; "required": true; "isSignal": true; }; "nextPageLabel": { "alias": "nextPageLabel"; "required": true; "isSignal": true; }; "paginationEllipsisSrText": { "alias": "paginationEllipsisSrText"; "required": true; "isSignal": true; }; "paginationAriaLabel": { "alias": "paginationAriaLabel"; "required": true; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "tableClass": { "alias": "tableClass"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "sorting": { "alias": "sorting"; "required": false; "isSignal": true; }; "columnFilters": { "alias": "columnFilters"; "required": false; "isSignal": true; }; "columnVisibility": { "alias": "columnVisibility"; "required": false; "isSignal": true; }; "rowSelection": { "alias": "rowSelection"; "required": false; "isSignal": true; }; "pagination": { "alias": "pagination"; "required": false; "isSignal": true; }; }, { "sorting": "sortingChange"; "columnFilters": "columnFiltersChange"; "columnVisibility": "columnVisibilityChange"; "rowSelection": "rowSelectionChange"; "pagination": "paginationChange"; "rowClicked": "rowClicked"; "selectedRowsChange": "selectedRowsChange"; }, never, never, true, never>;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
declare class YuwDatatableRowSelect {
|
|
1831
|
+
readonly checked: _angular_core.InputSignal<boolean>;
|
|
1832
|
+
readonly indeterminate: _angular_core.InputSignal<boolean>;
|
|
1833
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1834
|
+
readonly onToggle: _angular_core.InputSignal<() => void>;
|
|
1835
|
+
protected toggle(): void;
|
|
1836
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwDatatableRowSelect, never>;
|
|
1837
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwDatatableRowSelect, "yuw-datatable-row-select", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "onToggle": { "alias": "onToggle"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1811
1838
|
}
|
|
1812
1839
|
|
|
1813
1840
|
/** A single entry in `<yuw-avatar>`'s `group` input, which turns it into a stack of overlapping avatars. */
|
|
@@ -2447,6 +2474,7 @@ type YuwTabsActivationModeDto = 'automatic' | 'manual';
|
|
|
2447
2474
|
* - `tabs`: The tab definitions (`YuwTabItemDto[]`) rendered as triggers, in order.
|
|
2448
2475
|
* - `activeTab`: Two-way id of the selected tab. Drive via `[(activeTab)]` to control it
|
|
2449
2476
|
* programmatically; listen to `activeTabChange` to react to activations.
|
|
2477
|
+
* - `size`: Tab-list height, matching the `<yuw-button>` of the same name.
|
|
2450
2478
|
* - `variant`: Trigger list style (`'default'` filled, `'line'` underlined). Default is `'default'`.
|
|
2451
2479
|
* - `orientation`: Layout direction (`'horizontal'`, `'vertical'`). Default is `'horizontal'`.
|
|
2452
2480
|
* - `activationMode`: How keyboard focus activates tabs (`'automatic'` activates on focus,
|
|
@@ -2464,12 +2492,14 @@ declare class YuwTabsComponent {
|
|
|
2464
2492
|
readonly tabs: _angular_core.InputSignal<YuwTabItemDto[]>;
|
|
2465
2493
|
readonly activeTab: _angular_core.ModelSignal<string>;
|
|
2466
2494
|
readonly variant: _angular_core.InputSignal<YuwTabsVariantDto>;
|
|
2495
|
+
readonly size: _angular_core.InputSignal<YuwFieldSizeDto>;
|
|
2496
|
+
protected readonly _listClass: _angular_core.Signal<string>;
|
|
2467
2497
|
readonly orientation: _angular_core.InputSignal<YuwTabsOrientationDto>;
|
|
2468
2498
|
readonly activationMode: _angular_core.InputSignal<YuwTabsActivationModeDto>;
|
|
2469
2499
|
protected readonly panels: _angular_core.Signal<readonly YuwTabPanelDirective[]>;
|
|
2470
2500
|
protected onTabActivated(tabId: string): void;
|
|
2471
2501
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwTabsComponent, never>;
|
|
2472
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwTabsComponent, "yuw-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["panels"], never, true, never>;
|
|
2502
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<YuwTabsComponent, "yuw-tabs", never, { "tabs": { "alias": "tabs"; "required": true; "isSignal": true; }; "activeTab": { "alias": "activeTab"; "required": true; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "activationMode": { "alias": "activationMode"; "required": false; "isSignal": true; }; }, { "activeTab": "activeTabChange"; }, ["panels"], never, true, never>;
|
|
2473
2503
|
}
|
|
2474
2504
|
|
|
2475
2505
|
/**
|
|
@@ -2594,6 +2624,11 @@ interface YuwSidebarSubItemDto extends YuwSidebarNavigationDto {
|
|
|
2594
2624
|
* Renders an anchor when it carries a `route` or `href`, and a `<button>` otherwise — the data says
|
|
2595
2625
|
* which it is, so there is no `kind` field to keep in sync with it.
|
|
2596
2626
|
*
|
|
2627
|
+
* An entry with `children` and no target of its own is a pure accordion header: it renders as a
|
|
2628
|
+
* `<button>` that only toggles its submenu and never reports through `itemClicked`, because a click
|
|
2629
|
+
* on it means "open this", not "run an action". Give it a `route` or `href` too and it both
|
|
2630
|
+
* navigates and toggles.
|
|
2631
|
+
*
|
|
2597
2632
|
* - `label`: text of the entry, supplied already translated — the sidebar owns no user-facing copy.
|
|
2598
2633
|
* - `icon`: name of a registered `@ng-icons` icon. Because the *consumer* chooses this name, the
|
|
2599
2634
|
* consuming app is responsible for `provideIcons()`-ing it; `provideIcons` is a component-level
|
|
@@ -2601,7 +2636,12 @@ interface YuwSidebarSubItemDto extends YuwSidebarNavigationDto {
|
|
|
2601
2636
|
* injector chain. Same contract as `<yuw-spinner icon="…">`.
|
|
2602
2637
|
* - `badge`: short trailing count or status, hidden automatically while collapsed to icons.
|
|
2603
2638
|
* - `tooltip`: label shown while collapsed to icons, where `label` is not visible. Falls back to
|
|
2604
|
-
* `label` when absent, so the common case needs no second field.
|
|
2639
|
+
* `label` when absent, so the common case needs no second field. Ignored on an entry with
|
|
2640
|
+
* `children`, which shows its flyout on hover instead — the two would fire on the same gesture at
|
|
2641
|
+
* the same screen position.
|
|
2642
|
+
* - `expanded`: whether the submenu starts open, for an entry with `children`. A seed for the
|
|
2643
|
+
* initial state only, not live state: the user's own toggling lives in the sidebar and survives
|
|
2644
|
+
* the consumer replacing this object. An entry holding the active route opens regardless.
|
|
2605
2645
|
*/
|
|
2606
2646
|
interface YuwSidebarItemDto extends YuwSidebarNavigationDto {
|
|
2607
2647
|
id: string;
|
|
@@ -2611,6 +2651,7 @@ interface YuwSidebarItemDto extends YuwSidebarNavigationDto {
|
|
|
2611
2651
|
tooltip?: string;
|
|
2612
2652
|
disabled?: boolean;
|
|
2613
2653
|
children?: YuwSidebarSubItemDto[];
|
|
2654
|
+
expanded?: boolean;
|
|
2614
2655
|
}
|
|
2615
2656
|
/**
|
|
2616
2657
|
* A titled section of the sidebar.
|
|
@@ -2638,17 +2679,18 @@ interface YuwSidebarContentDto {
|
|
|
2638
2679
|
* What `<yuw-sidebar>` emits from `itemClicked`.
|
|
2639
2680
|
*
|
|
2640
2681
|
* Only entries with neither `route` nor `href` emit: a navigating entry's click is the router's or
|
|
2641
|
-
* the browser's to handle.
|
|
2682
|
+
* the browser's to handle. An entry whose only job is to hold `children` does not emit either — its
|
|
2683
|
+
* click toggles the submenu. Carries the `id` rather than the whole entry, matching
|
|
2642
2684
|
* `YuwButtonGroupClickDto`.
|
|
2643
2685
|
*/
|
|
2644
2686
|
interface YuwSidebarItemClickDto {
|
|
2645
2687
|
id: string;
|
|
2646
2688
|
event: MouseEvent;
|
|
2647
2689
|
}
|
|
2648
|
-
|
|
2649
2690
|
type YuwSidebarSideDto = 'left' | 'right';
|
|
2650
2691
|
type YuwSidebarVariantDto = 'sidebar' | 'floating' | 'inset';
|
|
2651
2692
|
type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
|
|
2693
|
+
|
|
2652
2694
|
/**
|
|
2653
2695
|
* Collapsible navigation sidebar. Renders as a fixed panel on desktop and as a slide-in sheet on
|
|
2654
2696
|
* mobile, and reads its colors from the `--sidebar-*` theme tokens.
|
|
@@ -2667,7 +2709,10 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
|
|
|
2667
2709
|
* markup. Groups → items → optional one level of children. An item with a `route` becomes a
|
|
2668
2710
|
* `[routerLink]` anchor whose active state, `aria-current` and pointer-lock resolve automatically
|
|
2669
2711
|
* from `routerLinkActive`; one with an `href` becomes a plain anchor; one with neither becomes a
|
|
2670
|
-
* button that reports through `itemClicked`.
|
|
2712
|
+
* button that reports through `itemClicked`. An item with `children` gets a submenu that follows
|
|
2713
|
+
* the sidebar's own state: an accordion while the panel is open, and a hover flyout to the side
|
|
2714
|
+
* once it is collapsed to icons, so nested entries stay reachable from the rail. Its `expanded`
|
|
2715
|
+
* field seeds the accordion; the item holding the active route opens on its own.
|
|
2671
2716
|
* - `footer`: The same, rendered into the footer region.
|
|
2672
2717
|
*
|
|
2673
2718
|
* Outputs:
|
|
@@ -2713,7 +2758,7 @@ type YuwSidebarCollapsibleDto = 'offcanvas' | 'icon' | 'none';
|
|
|
2713
2758
|
* label: 'Gestión',
|
|
2714
2759
|
* items: [
|
|
2715
2760
|
* {id: 'orders', label: 'Pedidos', icon: 'lucideReceipt', route: '/orders', badge: '12'},
|
|
2716
|
-
* {id: 'reports', label: 'Informes', icon: 'lucideChartLine', children: [
|
|
2761
|
+
* {id: 'reports', label: 'Informes', icon: 'lucideChartLine', expanded: true, children: [
|
|
2717
2762
|
* {id: 'sales', label: 'Ventas', route: '/reports/sales'},
|
|
2718
2763
|
* ]},
|
|
2719
2764
|
* {id: 'sync', label: 'Sincronizar'},
|
|
@@ -2858,8 +2903,29 @@ declare class YuwSidebarMenuItemDirective {
|
|
|
2858
2903
|
* from an expression.
|
|
2859
2904
|
*
|
|
2860
2905
|
* Carries `yuwSidebarMenuButtonClass`, our hover/expanded colouring and collapsed-to-icon geometry.
|
|
2861
|
-
* The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own,
|
|
2862
|
-
* classes
|
|
2906
|
+
* The `classes()` registration below runs after the composed `HlmSidebarMenuButton`'s own, and
|
|
2907
|
+
* `classes()` merges its sources in registration order through `twMerge`, so each of our classes
|
|
2908
|
+
* displaces the helm class of the same Tailwind group and modifier stack without `!important`.
|
|
2909
|
+
*
|
|
2910
|
+
* Those classes sit on the button rather than on `li[yuwSidebarMenuItem]` because every selector in
|
|
2911
|
+
* them resolves against the button's own box or subtree: the `<li>` is not the hovered control, never
|
|
2912
|
+
* carries `aria-expanded`, and its `> span:last-child` is the badge, not the label.
|
|
2913
|
+
*
|
|
2914
|
+
* Three details of the collapsed-to-icon block are load-bearing:
|
|
2915
|
+
*
|
|
2916
|
+
* - `size-auto!`, `w-full!` and `justify-center!` keep their `!` because the helm declarations they
|
|
2917
|
+
* replace (`size-8!`, `p-2!`) are themselves `!important`, which `twMerge` cannot outrank on
|
|
2918
|
+
* specificity alone. The helm pins the button to a square; ours fills the rail width and centres
|
|
2919
|
+
* the icon.
|
|
2920
|
+
* - `[&>span]:hidden` drops the label while collapsed, leaving the icon alone — the tooltip carries
|
|
2921
|
+
* the name in that state, or the flyout does for an entry with children. Matched by element rather
|
|
2922
|
+
* than by `:last-child` (which is what the helm's own `truncate` uses): an expandable entry ends
|
|
2923
|
+
* with a trailing chevron, so the label is no longer the last child and a positional selector
|
|
2924
|
+
* would skip exactly those entries. `span` is unambiguous here — the label is the only one a menu
|
|
2925
|
+
* button has, with the badge living outside the button on the `<li>`.
|
|
2926
|
+
* - `text-[length:--spacing(6)]` bumps the icon from the helm's 4 units to 6. The `length:` hint is
|
|
2927
|
+
* not optional: `text-[…]` is ambiguous between colour and size, and Tailwind resolves the bare
|
|
2928
|
+
* form as a colour, so the icon would never resize.
|
|
2863
2929
|
*/
|
|
2864
2930
|
declare class YuwSidebarMenuButtonDirective {
|
|
2865
2931
|
constructor();
|
|
@@ -2886,6 +2952,122 @@ declare class YuwSidebarMenuSubButtonDirective {
|
|
|
2886
2952
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarMenuSubButtonDirective, never>;
|
|
2887
2953
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarMenuSubButtonDirective, "a[yuwSidebarMenuSubButton], button[yuwSidebarMenuSubButton]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarMenuSubButton; inputs: { "size": "size"; "isActive": "isActive"; "closeMobileSidebarOnClick": "closeMobileSidebarOnClick"; }; outputs: {}; }]>;
|
|
2888
2954
|
}
|
|
2955
|
+
/**
|
|
2956
|
+
* Host of a collapsed-state flyout: the element that scopes the overlay for one entry. Apply
|
|
2957
|
+
* alongside `[yuwSidebarMenuItem]` on the `<li>` holding the entry and its panel.
|
|
2958
|
+
*
|
|
2959
|
+
* Provides `BrnHoverCardContentService` itself instead of composing `HlmHoverCard`. The service has
|
|
2960
|
+
* to be scoped per `<li>` — it holds the single overlay and its content, so a shared one would have
|
|
2961
|
+
* every entry in the sidebar fighting over the same panel — and providing it here is all that is
|
|
2962
|
+
* needed for that. What `HlmHoverCard` adds on top is a `contentChild` pairing that assigns the
|
|
2963
|
+
* trigger's content in `ngAfterContentInit`, and that pairing is actively harmful here: it writes
|
|
2964
|
+
* into the same writable signal the trigger's own input feeds, so its one-time value outlives and
|
|
2965
|
+
* overrides the binding that is supposed to turn the flyout off while the sidebar is expanded.
|
|
2966
|
+
*/
|
|
2967
|
+
declare class YuwSidebarFlyoutHostDirective {
|
|
2968
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutHostDirective, never>;
|
|
2969
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutHostDirective, "[yuwSidebarFlyoutHost]", never, {}, {}, never, never, true, never>;
|
|
2970
|
+
}
|
|
2971
|
+
/**
|
|
2972
|
+
* The entry whose hover opens a flyout. Apply to the same element as `[yuwSidebarMenuButton]`, bound
|
|
2973
|
+
* to the panel's `<ng-template>` reference — or to `undefined` to switch the flyout off entirely,
|
|
2974
|
+
* which is how an expanded sidebar keeps its submenus inline.
|
|
2975
|
+
*
|
|
2976
|
+
* Drives `BrnHoverCardContentService` directly instead of composing `BrnHoverCardTrigger`. The brain
|
|
2977
|
+
* trigger has no way to be turned off once it has run: it feeds the panel to the service through an
|
|
2978
|
+
* effect that ignores falsy values, and the service's `show()` consults only its stored content, so
|
|
2979
|
+
* a trigger that was ever enabled keeps opening its overlay forever. Rebinding to `undefined` cannot
|
|
2980
|
+
* undo it, and neither can `hide()`, which detaches the overlay but leaves the content in place.
|
|
2981
|
+
* Owning the wiring here is what makes an unbound panel mean "inert".
|
|
2982
|
+
*
|
|
2983
|
+
* The `effect` is the whole lifecycle: it runs when a panel arrives, and its `onCleanup` closes the
|
|
2984
|
+
* overlay and drops the subscription when the panel goes away or the entry is destroyed. Nothing
|
|
2985
|
+
* else tracks teardown, which is why there is no `DestroyRef` or `takeUntilDestroyed` here — a second
|
|
2986
|
+
* mechanism would only be able to disagree with this one.
|
|
2987
|
+
*
|
|
2988
|
+
* Delays are read inside `switchMap` rather than captured when the effect runs, so retuning them
|
|
2989
|
+
* does not tear down and rebuild the subscription.
|
|
2990
|
+
*
|
|
2991
|
+
* `distinctUntilChanged` before the timer is load-bearing, and not as an optimisation: the five
|
|
2992
|
+
* merged sources overlap, so crossing from the entry to the panel emits a `mouseleave` and the
|
|
2993
|
+
* panel's own hover almost together, and `mouseenter` and `focusin` both fire on the same pointer
|
|
2994
|
+
* arriving. Each duplicate would restart `switchMap` and cancel the timer already in flight, so a
|
|
2995
|
+
* repeat during the show delay could keep the panel from ever opening.
|
|
2996
|
+
*
|
|
2997
|
+
* It cannot dedupe the crossing itself, though — that genuinely alternates `false` then `true`, so
|
|
2998
|
+
* both values are distinct and both survive. `toggle` is therefore guarded against the state it is
|
|
2999
|
+
* already in, because `show()` is not idempotent: it calls `detach()` then `attach()`, tearing the
|
|
3000
|
+
* panel down and rebuilding it. Re-showing an open panel replays its enter animation, which is the
|
|
3001
|
+
* flicker you get when the pointer moves from the rail into the flyout.
|
|
3002
|
+
*
|
|
3003
|
+
* Note there is no click handling. `BrnHoverCardTrigger` maps a click to `false`, which is right for
|
|
3004
|
+
* a hover card — clicking the trigger dismisses it — and wrong for a nav rail, where the entry's own
|
|
3005
|
+
* click has nothing to collapse while collapsed and closing the panel would take away the links the
|
|
3006
|
+
* pointer is travelling to. Activating a child closes the flyout anyway, since the pointer leaves
|
|
3007
|
+
* the panel as the page changes.
|
|
3008
|
+
*
|
|
3009
|
+
* `align` is `'right'` for a sidebar flyout rather than the hover card's own `'bottom'`. It is set as
|
|
3010
|
+
* an input rather than through `provideBrnHoverCardDefaultOptions` because that provider types its
|
|
3011
|
+
* `align` as `'top' | 'bottom'`, even though the position map handles all four sides.
|
|
3012
|
+
*/
|
|
3013
|
+
declare class YuwSidebarFlyoutTriggerDirective {
|
|
3014
|
+
private readonly element;
|
|
3015
|
+
private readonly viewContainerRef;
|
|
3016
|
+
private readonly service;
|
|
3017
|
+
readonly panel: _angular_core.InputSignal<TemplateRef<unknown> | undefined>;
|
|
3018
|
+
readonly align: _angular_core.InputSignal<"left" | "right" | "top" | "bottom">;
|
|
3019
|
+
readonly sideOffset: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
3020
|
+
readonly showDelay: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
3021
|
+
readonly hideDelay: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
3022
|
+
private readonly pointerOver;
|
|
3023
|
+
constructor();
|
|
3024
|
+
private toggle;
|
|
3025
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutTriggerDirective, never>;
|
|
3026
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutTriggerDirective, "[yuwSidebarFlyoutTrigger]", never, { "panel": { "alias": "yuwSidebarFlyoutTrigger"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; "showDelay": { "alias": "showDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3027
|
+
}
|
|
3028
|
+
/**
|
|
3029
|
+
* Marks the `<ng-template>` holding a flyout's markup, and is what `[yuwSidebarFlyoutTrigger]` is
|
|
3030
|
+
* bound to. Exported as `yuwSidebarFlyoutPanel` so the template can name it.
|
|
3031
|
+
*
|
|
3032
|
+
* Structural — the composed primitive injects the `TemplateRef`, which is what lets the panel be
|
|
3033
|
+
* portalled into a CDK overlay instead of rendering inside the rail.
|
|
3034
|
+
*
|
|
3035
|
+
* The trigger is bound to the template's own `#ref` (a `TemplateRef`, which its input accepts), so
|
|
3036
|
+
* this directive is never referenced by name — but it cannot be dropped: it is the sole provider of
|
|
3037
|
+
* the exposed state and side tokens that `[yuwSidebarFlyout]` injects from its host, and without it
|
|
3038
|
+
* the panel throws NG0201 the moment the overlay instantiates it.
|
|
3039
|
+
*/
|
|
3040
|
+
declare class YuwSidebarFlyoutPanelDirective {
|
|
3041
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutPanelDirective, never>;
|
|
3042
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutPanelDirective, "ng-template[yuwSidebarFlyoutPanel]", never, {}, {}, never, never, true, [{ directive: typeof i2$1.HlmHoverCardPortal; inputs: {}; outputs: {}; }]>;
|
|
3043
|
+
}
|
|
3044
|
+
/**
|
|
3045
|
+
* The flyout's visible surface. Apply to the single root element inside a `[yuwSidebarFlyoutPanel]`
|
|
3046
|
+
* template.
|
|
3047
|
+
*
|
|
3048
|
+
* Separate from the panel marker because the two sit on different nodes: the marker is the
|
|
3049
|
+
* `<ng-template>`, this is the element the overlay renders. Carries the popover surface of the
|
|
3050
|
+
* composed helm content plus `yuwSidebarFlyoutClass`.
|
|
3051
|
+
*
|
|
3052
|
+
* That class layer exists because the panel lives in the overlay, outside the sidebar's DOM subtree,
|
|
3053
|
+
* and so is no longer a descendant of the `group/sidebar-wrapper` element. Every
|
|
3054
|
+
* `group-data-[collapsible=…]` selector therefore resolves against nothing and stays inert —
|
|
3055
|
+
* including the `hidden` that `HlmSidebarMenuSub` and `HlmSidebarMenuSubButton` apply to themselves
|
|
3056
|
+
* in exactly this state, which is why the submenu markup renders visible in here with no override.
|
|
3057
|
+
* What the layer undoes instead is the indentation and vertical rule those primitives carry for the
|
|
3058
|
+
* inline case, which make no sense in a panel.
|
|
3059
|
+
*
|
|
3060
|
+
* The gap between rail and panel is that layer's `ms-2`, not the trigger's `sideOffset`, which is
|
|
3061
|
+
* deliberately `0`. An offset moves the overlay away from the trigger and leaves dead space between
|
|
3062
|
+
* them: crossing it slowly means the pointer is over neither element, and the hover card closes
|
|
3063
|
+
* mid-journey. A margin keeps the same visual gap inside the overlay's own box, so the pointer never
|
|
3064
|
+
* leaves the hover target on its way in.
|
|
3065
|
+
*/
|
|
3066
|
+
declare class YuwSidebarFlyoutDirective {
|
|
3067
|
+
constructor();
|
|
3068
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarFlyoutDirective, never>;
|
|
3069
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarFlyoutDirective, "[yuwSidebarFlyout]", never, {}, {}, never, never, true, [{ directive: typeof i2$1.HlmHoverCardContent; inputs: {}; outputs: {}; }]>;
|
|
3070
|
+
}
|
|
2889
3071
|
/** Divider between sidebar sections. */
|
|
2890
3072
|
declare class YuwSidebarSeparatorDirective {
|
|
2891
3073
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<YuwSidebarSeparatorDirective, never>;
|
|
@@ -2907,5 +3089,5 @@ declare class YuwSidebarInsetDirective {
|
|
|
2907
3089
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<YuwSidebarInsetDirective, "main[yuwSidebarInset]", never, {}, {}, never, never, true, [{ directive: typeof i1$d.HlmSidebarInset; inputs: {}; outputs: {}; }]>;
|
|
2908
3090
|
}
|
|
2909
3091
|
|
|
2910
|
-
export { DATATABLE_ALIGN_CLASS, YUW_DATATABLE_FEATURES, YUW_PASSWORD_REVEAL_STATES, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwButtonComponent, YuwButtonGroupTextDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwComboboxComponent, YuwComboboxItemDirective, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwInputAddonImports, YuwInputComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarSeparatorDirective, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, buildInputOtpGroups, cn, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength };
|
|
3092
|
+
export { DATATABLE_ALIGN_CLASS, YUW_DATATABLE_FEATURES, YUW_PASSWORD_REVEAL_STATES, YuwAccordion, YuwAccordionContentComponent, YuwAccordionImports, YuwAccordionItem, YuwAccordionTriggerComponent, YuwAlertActionDirective, YuwAlertComponent, YuwAlertDescriptionDirective, YuwAlertDialogComponent, YuwAlertDialogMediaDirective, YuwAlertDialogTriggerDirective, YuwAlertImports, YuwAlertTitleDirective, YuwAttachmentActionDirective, YuwAttachmentActionsDirective, YuwAttachmentContentDirective, YuwAttachmentDescriptionDirective, YuwAttachmentDirective, YuwAttachmentGroupDirective, YuwAttachmentMediaDirective, YuwAttachmentTitleDirective, YuwAttachmentTriggerDirective, YuwAvatarComponent, YuwBadgeComponent, YuwBreadcrumbComponent, YuwButtonComponent, YuwButtonGroupTextDirective, YuwCaptionDirective, YuwCardActionDirective, YuwCardContentDirective, YuwCardDescriptionDirective, YuwCardDirective, YuwCardFooterDirective, YuwCardHeaderDirective, YuwCardImports, YuwCardTitleDirective, YuwCheckboxComponent, YuwComboboxComponent, YuwComboboxItemDirective, YuwContextMenuCheckboxDirective, YuwContextMenuCheckboxIndicatorComponent, YuwContextMenuDirective, YuwContextMenuGroupDirective, YuwContextMenuImports, YuwContextMenuItemDirective, YuwContextMenuLabelDirective, YuwContextMenuRadioDirective, YuwContextMenuRadioIndicatorComponent, YuwContextMenuSeparatorDirective, YuwContextMenuShortcutDirective, YuwContextMenuSubDirective, YuwContextMenuSubIndicatorComponent, YuwContextMenuSubTriggerDirective, YuwContextMenuTriggerDirective, YuwDatatableComponent, YuwDatatableRowSelect, YuwDatepickerComponent, YuwDialogCloseDirective, YuwDialogComponent, YuwDialogFooterDirective, YuwDialogImports, YuwDialogTriggerDirective, YuwEmptyContentDirective, YuwEmptyDescriptionDirective, YuwEmptyDirective, YuwEmptyHeaderDirective, YuwEmptyImports, YuwEmptyMediaDirective, YuwEmptyTitleDirective, YuwInputAddonImports, YuwInputComponent, YuwInputOtpComponent, YuwItemActionsDirective, YuwItemContentDirective, YuwItemDescriptionDirective, YuwItemDirective, YuwItemFooterDirective, YuwItemGroupDirective, YuwItemHeaderDirective, YuwItemImports, YuwItemMediaDirective, YuwItemSeparatorDirective, YuwItemTitleDirective, YuwLabel, YuwLeftAddonDirective, YuwPaginationComponent, YuwPasswordInputComponent, YuwPopoverComponent, YuwPopoverTriggerDirective, YuwRadioGroupComponent, YuwRightAddonDirective, YuwSearchInputComponent, YuwSheetCloseDirective, YuwSheetComponent, YuwSheetFooterDirective, YuwSheetImports, YuwSheetTriggerDirective, YuwSidebarComponent, YuwSidebarContentDirective, YuwSidebarContentExtraDirective, YuwSidebarFlyoutDirective, YuwSidebarFlyoutHostDirective, YuwSidebarFlyoutPanelDirective, YuwSidebarFlyoutTriggerDirective, YuwSidebarFooterDirective, YuwSidebarFooterExtraDirective, YuwSidebarGroupContentDirective, YuwSidebarGroupDirective, YuwSidebarGroupLabelDirective, YuwSidebarHeaderDirective, YuwSidebarInsetDirective, YuwSidebarMenuBadgeDirective, YuwSidebarMenuButtonDirective, YuwSidebarMenuDirective, YuwSidebarMenuItemDirective, YuwSidebarMenuSubButtonDirective, YuwSidebarMenuSubDirective, YuwSidebarMenuSubItemDirective, YuwSidebarRailDirective, YuwSidebarSeparatorDirective, YuwSidebarTriggerComponent, YuwSidebarWrapperDirective, YuwSkeletonDirective, YuwSpinnerComponent, YuwSwitchComponent, YuwTBodyDirective, YuwTFootDirective, YuwTHeadDirective, YuwTabPanelDirective, YuwTableContainerDirective, YuwTableDirective, YuwTableImports, YuwTabsComponent, YuwTdDirective, YuwTextareaComponent, YuwThDirective, YuwToasterComponent, YuwTooltipDirective, YuwTrDirective, YuwValueAccessorBase, buildInputOtpGroups, cn, datatableCellVariants, datatableContainerVariants, datatableHeadVariants, datatableHeaderCellVariants, datatableRowVariants, getPaginationRange, provideValueAccessor, totalInputOtpLength };
|
|
2911
3093
|
export type { YuwAlertDialogSizeDto, YuwAlertVariantDto, YuwAvatarGroupItemDto, YuwAvatarSizeDto, YuwBreadcrumbItemDto, YuwButtonGroupClickDto, YuwButtonGroupEntryDto, YuwButtonGroupItemDto, YuwButtonGroupTextDto, YuwColorDto, YuwComboboxItemContext, YuwComboboxOptionDto, YuwComboboxValue, YuwDatatableAlign, YuwDatatableAppearanceDto, YuwDatatableColumnDef, YuwDatatableColumnMeta, YuwDatatableFeatures, YuwDatepickerModeDto, YuwDatepickerValue, YuwFieldSizeDto, YuwInputModeDto, YuwInputOtpGroupDto, YuwInputOtpModeDto, YuwInputTypeDto, YuwPaginationRangeItem, YuwPaginationSizeDto, YuwPasswordRevealStateDto, YuwPopoverAlignDto, YuwRadioOptionDto, YuwSearchInputCollapseFromDto, YuwSheetSideDto, YuwSidebarCollapsibleDto, YuwSidebarContentDto, YuwSidebarGroupDto, YuwSidebarItemClickDto, YuwSidebarItemDto, YuwSidebarSideDto, YuwSidebarSubItemDto, YuwSidebarVariantDto, YuwSwitchSizeDto, YuwTabItemDto, YuwTabsActivationModeDto, YuwTabsOrientationDto, YuwTabsVariantDto, YuwTextFieldContract, YuwToasterPositionDto, YuwToasterThemeDto, YuwTooltipPositionDto };
|