@magmonium/one 0.4.99 → 0.4.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{magmonium-one-attribute-value-CPh-lJPV.mjs → magmonium-one-attribute-value-BXEWw7xP.mjs} +3 -3
- package/fesm2022/{magmonium-one-attribute-value-CPh-lJPV.mjs.map → magmonium-one-attribute-value-BXEWw7xP.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-checkbox-LdM6dqF_.mjs → magmonium-one-base-checkbox-CIUMxkzu.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-checkbox-LdM6dqF_.mjs.map → magmonium-one-base-checkbox-CIUMxkzu.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-base-dropdown-CmUfiOAb.mjs → magmonium-one-base-dropdown-BMsV5USo.mjs} +9 -11
- package/fesm2022/magmonium-one-base-dropdown-BMsV5USo.mjs.map +1 -0
- package/fesm2022/{magmonium-one-size-converter-BqkALIWA.mjs → magmonium-one-base-input-BeyBAbV4.mjs} +190 -3
- package/fesm2022/magmonium-one-base-input-BeyBAbV4.mjs.map +1 -0
- package/fesm2022/{magmonium-one-base-text-ChjG3GNw.mjs → magmonium-one-base-text-BBeMl8XM.mjs} +2 -2
- package/fesm2022/{magmonium-one-base-text-ChjG3GNw.mjs.map → magmonium-one-base-text-BBeMl8XM.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-button-C5dk4R_m.mjs → magmonium-one-button-DC_fLy-J.mjs} +34 -8
- package/fesm2022/magmonium-one-button-DC_fLy-J.mjs.map +1 -0
- package/fesm2022/{magmonium-one-checkbox-BXNvtkzo.mjs → magmonium-one-checkbox-C85FEuTs.mjs} +5 -6
- package/fesm2022/magmonium-one-checkbox-C85FEuTs.mjs.map +1 -0
- package/fesm2022/{magmonium-one-color-utl-BA51l-Rw.mjs → magmonium-one-color-utl-DMLkkE-z.mjs} +2 -2
- package/fesm2022/{magmonium-one-color-utl-BA51l-Rw.mjs.map → magmonium-one-color-utl-DMLkkE-z.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-directives-hJ7wkmQn.mjs → magmonium-one-directives-CJK7xDPK.mjs} +4 -4
- package/fesm2022/{magmonium-one-directives-hJ7wkmQn.mjs.map → magmonium-one-directives-CJK7xDPK.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-group-bRamdzPO.mjs → magmonium-one-group-qu3xLiI8.mjs} +16 -9
- package/fesm2022/magmonium-one-group-qu3xLiI8.mjs.map +1 -0
- package/fesm2022/{magmonium-one-header-BZzD8uTJ.mjs → magmonium-one-header-BC-74GOn.mjs} +5 -4
- package/fesm2022/{magmonium-one-header-BZzD8uTJ.mjs.map → magmonium-one-header-BC-74GOn.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-icon-CH-g8CUR.mjs → magmonium-one-icon-CXFTG4mD.mjs} +4 -4
- package/fesm2022/{magmonium-one-icon-CH-g8CUR.mjs.map → magmonium-one-icon-CXFTG4mD.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-image-editor-BV0x-SA3.mjs → magmonium-one-image-editor-BAF7cdC2.mjs} +5 -4
- package/fesm2022/{magmonium-one-image-editor-BV0x-SA3.mjs.map → magmonium-one-image-editor-BAF7cdC2.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-label-D-wnA_Fl.mjs → magmonium-one-label-BNxbDSwc.mjs} +2 -2
- package/fesm2022/{magmonium-one-label-D-wnA_Fl.mjs.map → magmonium-one-label-BNxbDSwc.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-m-ref-DLIAzywu.mjs → magmonium-one-m-ref-CoK96ogW.mjs} +2 -2
- package/fesm2022/{magmonium-one-m-ref-DLIAzywu.mjs.map → magmonium-one-m-ref-CoK96ogW.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-menu-CJjjxFfu.mjs → magmonium-one-menu-D_HAqfel.mjs} +7 -6
- package/fesm2022/{magmonium-one-menu-CJjjxFfu.mjs.map → magmonium-one-menu-D_HAqfel.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-multi-range-C0S7udf5.mjs → magmonium-one-multi-range-DqtW4U_x.mjs} +5 -4
- package/fesm2022/magmonium-one-multi-range-DqtW4U_x.mjs.map +1 -0
- package/fesm2022/{magmonium-one-options-asset-BNd1hbLw.mjs → magmonium-one-options-asset-DWjdYQe0.mjs} +2 -2
- package/fesm2022/{magmonium-one-options-asset-BNd1hbLw.mjs.map → magmonium-one-options-asset-DWjdYQe0.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-otp-CeSz8ZZ2.mjs → magmonium-one-otp-DOPvjYJz.mjs} +5 -5
- package/fesm2022/{magmonium-one-otp-CeSz8ZZ2.mjs.map → magmonium-one-otp-DOPvjYJz.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-password-BKdXAZ_p.mjs → magmonium-one-password-BqdyEDF6.mjs} +7 -6
- package/fesm2022/{magmonium-one-password-BKdXAZ_p.mjs.map → magmonium-one-password-BqdyEDF6.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-radio-DlS31qJG.mjs → magmonium-one-radio-DGTbRRXb.mjs} +3 -3
- package/fesm2022/{magmonium-one-radio-DlS31qJG.mjs.map → magmonium-one-radio-DGTbRRXb.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-range-CR8go24u.mjs → magmonium-one-range-Dw4YACtP.mjs} +4 -4
- package/fesm2022/{magmonium-one-range-CR8go24u.mjs.map → magmonium-one-range-Dw4YACtP.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-selector-BK48N5us.mjs → magmonium-one-selector-QB49Ju9l.mjs} +4 -4
- package/fesm2022/{magmonium-one-selector-BK48N5us.mjs.map → magmonium-one-selector-QB49Ju9l.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-text-4zWYsKpH.mjs → magmonium-one-text-CMULvvAr.mjs} +6 -7
- package/fesm2022/{magmonium-one-text-4zWYsKpH.mjs.map → magmonium-one-text-CMULvvAr.mjs.map} +1 -1
- package/fesm2022/{magmonium-one-text-output-E6pe3IOL.mjs → magmonium-one-text-output-DiA4R1pw.mjs} +4 -4
- package/fesm2022/{magmonium-one-text-output-E6pe3IOL.mjs.map → magmonium-one-text-output-DiA4R1pw.mjs.map} +1 -1
- package/fesm2022/magmonium-one-theme-DEgFM1wD.mjs +1 -0
- package/fesm2022/{magmonium-one-toggle-BPInV6K-.mjs → magmonium-one-toggle-sUSXzxMl.mjs} +3 -5
- package/fesm2022/magmonium-one-toggle-sUSXzxMl.mjs.map +1 -0
- package/fesm2022/magmonium-one.mjs +109 -47
- package/fesm2022/magmonium-one.mjs.map +1 -1
- package/package.json +1 -1
- package/types/magmonium-one.d.ts +64 -38
- package/fesm2022/magmonium-one-base-dropdown-CmUfiOAb.mjs.map +0 -1
- package/fesm2022/magmonium-one-base-input-B92NOmxz.mjs +0 -183
- package/fesm2022/magmonium-one-base-input-B92NOmxz.mjs.map +0 -1
- package/fesm2022/magmonium-one-button-C5dk4R_m.mjs.map +0 -1
- package/fesm2022/magmonium-one-checkbox-BXNvtkzo.mjs.map +0 -1
- package/fesm2022/magmonium-one-group-bRamdzPO.mjs.map +0 -1
- package/fesm2022/magmonium-one-multi-range-C0S7udf5.mjs.map +0 -1
- package/fesm2022/magmonium-one-size-converter-BqkALIWA.mjs.map +0 -1
- package/fesm2022/magmonium-one-theme-BtQyLRdQ.mjs +0 -1
- package/fesm2022/magmonium-one-toggle-BPInV6K-.mjs.map +0 -1
package/package.json
CHANGED
package/types/magmonium-one.d.ts
CHANGED
|
@@ -1622,7 +1622,7 @@ export declare class DraggableDirective {
|
|
|
1622
1622
|
readonly max: import("@angular/core").InputSignal<Position | undefined>;
|
|
1623
1623
|
readonly dragStart: import("@angular/core").OutputEmitterRef<void>;
|
|
1624
1624
|
readonly dragEnd: import("@angular/core").OutputEmitterRef<void>;
|
|
1625
|
-
protected readonly cursor: import("@angular/core").Signal<"
|
|
1625
|
+
protected readonly cursor: import("@angular/core").Signal<"move" | "ew-resize" | "ns-resize">;
|
|
1626
1626
|
protected state: DraggableState;
|
|
1627
1627
|
set pos(position: Position);
|
|
1628
1628
|
/**
|
|
@@ -2892,6 +2892,7 @@ type Button = Config & {
|
|
|
2892
2892
|
routerLink?: string | readonly (string | number)[];
|
|
2893
2893
|
fullWidth?: boolean;
|
|
2894
2894
|
iconOnly?: boolean;
|
|
2895
|
+
size?: Size | 'sm' | 'md' | 'lg';
|
|
2895
2896
|
stacked?: boolean;
|
|
2896
2897
|
badge?: ButtonBadge;
|
|
2897
2898
|
imgSrc?: string;
|
|
@@ -2924,7 +2925,7 @@ export declare class ButtonComponent extends ReactiveElementComponent<Button> {
|
|
|
2924
2925
|
navParams: import("@angular/core").InputSignal<Record<string, string | number> | undefined>;
|
|
2925
2926
|
href: import("@angular/core").InputSignal<string | undefined>;
|
|
2926
2927
|
disabled: import("@angular/core").InputSignal<boolean | undefined>;
|
|
2927
|
-
variant: import("@angular/core").InputSignal<"
|
|
2928
|
+
variant: import("@angular/core").InputSignal<"ghost" | "primary" | "secondary" | "tab" | undefined>;
|
|
2928
2929
|
name: import("@angular/core").InputSignal<string | undefined>;
|
|
2929
2930
|
baseUrl: import("@angular/core").InputSignal<string | undefined>;
|
|
2930
2931
|
one: import("@angular/core").InputSignal<boolean | undefined>;
|
|
@@ -2937,6 +2938,7 @@ export declare class ButtonComponent extends ReactiveElementComponent<Button> {
|
|
|
2937
2938
|
icon: import("@angular/core").InputSignal<string | undefined>;
|
|
2938
2939
|
isRightIcon: import("@angular/core").InputSignal<string | boolean | undefined>;
|
|
2939
2940
|
iconOnly: import("@angular/core").InputSignal<string | boolean | undefined>;
|
|
2941
|
+
size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
|
|
2940
2942
|
stacked: import("@angular/core").InputSignal<string | boolean | undefined>;
|
|
2941
2943
|
imgSrc: import("@angular/core").InputSignal<string | undefined>;
|
|
2942
2944
|
nonClickable: import("@angular/core").InputSignal<string | boolean | undefined>;
|
|
@@ -2948,6 +2950,8 @@ export declare class ButtonComponent extends ReactiveElementComponent<Button> {
|
|
|
2948
2950
|
protected element: import("@angular/core").Signal<ElementRef<any> | undefined>;
|
|
2949
2951
|
protected readonly className: import("@angular/core").Signal<string>;
|
|
2950
2952
|
private readonly navRef;
|
|
2953
|
+
private readonly inGroup;
|
|
2954
|
+
protected readonly ownSizeLength: import("@angular/core").Signal<string | null>;
|
|
2951
2955
|
protected readonly resolvesConfigAsset: boolean;
|
|
2952
2956
|
readonly routerLinkRef: RouterLink | null;
|
|
2953
2957
|
private readonly sectionForm;
|
|
@@ -3070,6 +3074,11 @@ export declare class ButtonComponent extends ReactiveElementComponent<Button> {
|
|
|
3070
3074
|
"required": false;
|
|
3071
3075
|
"isSignal": true;
|
|
3072
3076
|
};
|
|
3077
|
+
"size": {
|
|
3078
|
+
"alias": "size";
|
|
3079
|
+
"required": false;
|
|
3080
|
+
"isSignal": true;
|
|
3081
|
+
};
|
|
3073
3082
|
"stacked": {
|
|
3074
3083
|
"alias": "stacked";
|
|
3075
3084
|
"required": false;
|
|
@@ -3546,7 +3555,7 @@ export declare class ButtonGroupComponent extends ConfigComponent<ButtonGroup> {
|
|
|
3546
3555
|
color?: string | keyof import("dist/libs/cli/src").ThemeColor;
|
|
3547
3556
|
align?: ConfigAlign;
|
|
3548
3557
|
isLoading?: boolean;
|
|
3549
|
-
variant?: "
|
|
3558
|
+
variant?: "ghost" | "primary" | "secondary" | "tab" | undefined;
|
|
3550
3559
|
label?: string;
|
|
3551
3560
|
noTranslate?: boolean;
|
|
3552
3561
|
params?: Record<string, string>;
|
|
@@ -3560,6 +3569,7 @@ export declare class ButtonGroupComponent extends ConfigComponent<ButtonGroup> {
|
|
|
3560
3569
|
routerLink?: string | readonly (string | number)[];
|
|
3561
3570
|
fullWidth?: boolean;
|
|
3562
3571
|
iconOnly?: boolean;
|
|
3572
|
+
size?: Size | "sm" | "md" | "lg";
|
|
3563
3573
|
stacked?: boolean;
|
|
3564
3574
|
badge?: ButtonBadge;
|
|
3565
3575
|
imgSrc?: string;
|
|
@@ -3741,6 +3751,16 @@ declare function deriveGroupClass(group?: Partial<ButtonGroup>): string;
|
|
|
3741
3751
|
* was never written.
|
|
3742
3752
|
*/
|
|
3743
3753
|
declare const ACTION_BUTTON_HOST: InjectionToken<true>;
|
|
3754
|
+
/**
|
|
3755
|
+
* Published by `<m-button-group>` and `<m-section-button-group>` — the one
|
|
3756
|
+
* ButtonGroup seat (ADR 0008) — for the Buttons inside them.
|
|
3757
|
+
*
|
|
3758
|
+
* A standalone iconOnly Button may declare a Size of its own; one inside a
|
|
3759
|
+
* group may not, the group's Size being the one its Buttons share. This flag
|
|
3760
|
+
* is how a Button tells the two apart: SIZE_CONTEXT cannot, because a Section
|
|
3761
|
+
* provides it too.
|
|
3762
|
+
*/
|
|
3763
|
+
declare const BUTTON_GROUP_HOST: InjectionToken<true>;
|
|
3744
3764
|
type GridAlignX = 'left' | 'center' | 'right';
|
|
3745
3765
|
type GridAlignY = 'top' | 'center' | 'bottom';
|
|
3746
3766
|
type ColVariant = 'noBorder' | 'withBorder';
|
|
@@ -4339,6 +4359,11 @@ declare class BaseInputComponent<T extends Input = Input> {
|
|
|
4339
4359
|
"touched": "touchedChange";
|
|
4340
4360
|
}, never, never, true, never>;
|
|
4341
4361
|
}
|
|
4362
|
+
/**
|
|
4363
|
+
* Whether a field holds something a rule can judge. A boolean is never filled:
|
|
4364
|
+
* an unchecked required box is the empty case, not a prefill.
|
|
4365
|
+
*/
|
|
4366
|
+
declare const isFilledValue: (value: unknown) => boolean;
|
|
4342
4367
|
declare class BaseTextInputComponent<T extends Input = TextInput> extends BaseInputComponent<T> implements FormValueControl<string> {
|
|
4343
4368
|
value: ModelSignal<string>;
|
|
4344
4369
|
private inputElement;
|
|
@@ -4347,7 +4372,7 @@ declare class BaseTextInputComponent<T extends Input = TextInput> extends BaseIn
|
|
|
4347
4372
|
private autofocused;
|
|
4348
4373
|
constructor();
|
|
4349
4374
|
readonly isFocused: import("@angular/core").WritableSignal<boolean>;
|
|
4350
|
-
readonly iconColor: import("@angular/core").Signal<"error" | "
|
|
4375
|
+
readonly iconColor: import("@angular/core").Signal<"error" | "focus" | "border">;
|
|
4351
4376
|
protected readonly setValue: (value: string) => void;
|
|
4352
4377
|
static ɵfac: i0.ɵɵFactoryDeclaration<BaseTextInputComponent<any>, never>;
|
|
4353
4378
|
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseTextInputComponent<any>, never, never, {
|
|
@@ -4968,7 +4993,7 @@ export declare class SectionFilterGroupComponent {
|
|
|
4968
4993
|
readonly paddingX: import("@angular/core").InputSignal<boolean | undefined>;
|
|
4969
4994
|
readonly paddingY: import("@angular/core").InputSignal<boolean | undefined>;
|
|
4970
4995
|
readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
|
|
4971
|
-
readonly align: import("@angular/core").InputSignal<"
|
|
4996
|
+
readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
|
|
4972
4997
|
readonly config: import("@angular/core").InputSignal<SectionFilterGroupConfig | undefined>;
|
|
4973
4998
|
/**
|
|
4974
4999
|
* The whole group's selection, keyed by each Filter's `name` — one key per
|
|
@@ -4986,7 +5011,7 @@ export declare class SectionFilterGroupComponent {
|
|
|
4986
5011
|
protected readonly resolvedPadding: import("@angular/core").Signal<boolean>;
|
|
4987
5012
|
protected readonly resolvedPaddingX: import("@angular/core").Signal<boolean>;
|
|
4988
5013
|
protected readonly resolvedPaddingY: import("@angular/core").Signal<boolean>;
|
|
4989
|
-
protected readonly resolvedAlign: import("@angular/core").Signal<"
|
|
5014
|
+
protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
|
|
4990
5015
|
protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
|
|
4991
5016
|
protected readonly noBorder: import("@angular/core").Signal<boolean>;
|
|
4992
5017
|
/**
|
|
@@ -5091,7 +5116,7 @@ export declare class SectionStepperComponent implements OnDestroy {
|
|
|
5091
5116
|
readonly lg: import("@angular/core").InputSignal<number | undefined>;
|
|
5092
5117
|
readonly xl: import("@angular/core").InputSignal<number | undefined>;
|
|
5093
5118
|
readonly xxl: import("@angular/core").InputSignal<number | undefined>;
|
|
5094
|
-
readonly orientation: import("@angular/core").InputSignal<"
|
|
5119
|
+
readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical" | undefined>;
|
|
5095
5120
|
readonly stepChange: import("@angular/core").OutputEmitterRef<number>;
|
|
5096
5121
|
private readonly isCompact;
|
|
5097
5122
|
private readonly mediaMatched;
|
|
@@ -5165,7 +5190,7 @@ export declare class SectionStepperComponent implements OnDestroy {
|
|
|
5165
5190
|
export declare class SectionBadgesComponent {
|
|
5166
5191
|
readonly wrap: import("@angular/core").InputSignal<boolean>;
|
|
5167
5192
|
readonly border: import("@angular/core").InputSignal<boolean>;
|
|
5168
|
-
readonly align: import("@angular/core").InputSignal<"
|
|
5193
|
+
readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
|
|
5169
5194
|
private readonly sectionContext;
|
|
5170
5195
|
protected readonly hasBorder: import("@angular/core").Signal<boolean>;
|
|
5171
5196
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionBadgesComponent, never>;
|
|
@@ -5313,7 +5338,7 @@ export declare class SectionPaginationComponent {
|
|
|
5313
5338
|
* Entries that are not positive numbers drop rather than throw.
|
|
5314
5339
|
*/
|
|
5315
5340
|
readonly perPageOptions: import("@angular/core").InputSignal<string | undefined>;
|
|
5316
|
-
readonly align: import("@angular/core").InputSignal<"
|
|
5341
|
+
readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
|
|
5317
5342
|
readonly showPerPage: import("@angular/core").InputSignal<boolean>;
|
|
5318
5343
|
/** Hides the band outright once everything fits one page. */
|
|
5319
5344
|
readonly hideOnSinglePage: import("@angular/core").InputSignal<boolean>;
|
|
@@ -5651,7 +5676,7 @@ export declare class SectionComponent extends ConfigComponent<SectionConfig> {
|
|
|
5651
5676
|
readonly align: import("@angular/core").InputSignal<SectionAlign | undefined>;
|
|
5652
5677
|
readonly alignX: import("@angular/core").InputSignal<GridAlignX | undefined>;
|
|
5653
5678
|
readonly alignY: import("@angular/core").InputSignal<GridAlignY | undefined>;
|
|
5654
|
-
readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" |
|
|
5679
|
+
readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
|
|
5655
5680
|
private readonly parentSize;
|
|
5656
5681
|
readonly resolvedSize: import("@angular/core").Signal<Size>;
|
|
5657
5682
|
protected readonly sizeLength: import("@angular/core").Signal<string>;
|
|
@@ -5822,8 +5847,8 @@ export declare class SectionHeaderComponent {
|
|
|
5822
5847
|
readonly visibilityRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
|
|
5823
5848
|
readonly disableRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
|
|
5824
5849
|
readonly extraData: import("@angular/core").InputSignal<unknown>;
|
|
5825
|
-
readonly align: import("@angular/core").InputSignal<"
|
|
5826
|
-
readonly alignment: import("@angular/core").Signal<"
|
|
5850
|
+
readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
|
|
5851
|
+
readonly alignment: import("@angular/core").Signal<"left" | "center" | "right">;
|
|
5827
5852
|
readonly badge: import("@angular/core").InputSignal<BadgeCount | undefined>;
|
|
5828
5853
|
readonly showBack: import("@angular/core").InputSignal<boolean>;
|
|
5829
5854
|
readonly actionButton: import("@angular/core").InputSignal<string | undefined>;
|
|
@@ -5842,7 +5867,7 @@ export declare class SectionHeaderComponent {
|
|
|
5842
5867
|
protected readonly sidepanel: import("@angular/core").Signal<boolean>;
|
|
5843
5868
|
protected readonly noBorder: import("@angular/core").Signal<boolean>;
|
|
5844
5869
|
protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
|
|
5845
|
-
protected readonly boxAlign: import("@angular/core").Signal<"
|
|
5870
|
+
protected readonly boxAlign: import("@angular/core").Signal<"left" | "center" | "right">;
|
|
5846
5871
|
protected readonly iconBox: import("@angular/core").Signal<string>;
|
|
5847
5872
|
protected readonly stickyOn: import("@angular/core").Signal<boolean>;
|
|
5848
5873
|
protected readonly isSticky: import("@angular/core").Signal<boolean>;
|
|
@@ -5990,7 +6015,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
|
|
|
5990
6015
|
readonly vertical: import("@angular/core").InputSignal<boolean | undefined>;
|
|
5991
6016
|
readonly align: import("@angular/core").InputSignal<ConfigAlign>;
|
|
5992
6017
|
readonly variant: import("@angular/core").InputSignal<"spaced" | "joined" | undefined>;
|
|
5993
|
-
readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" |
|
|
6018
|
+
readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
|
|
5994
6019
|
readonly fullWidth: import("@angular/core").InputSignal<boolean | undefined>;
|
|
5995
6020
|
private readonly parentSize;
|
|
5996
6021
|
readonly resolvedSize: import("@angular/core").Signal<Size>;
|
|
@@ -5998,7 +6023,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
|
|
|
5998
6023
|
protected readonly resolvedFullWidth: import("@angular/core").Signal<boolean>;
|
|
5999
6024
|
protected readonly resolvedVertical: import("@angular/core").Signal<boolean>;
|
|
6000
6025
|
protected readonly resolvedVariant: import("@angular/core").Signal<"spaced" | "joined">;
|
|
6001
|
-
protected readonly resolvedAlign: import("@angular/core").Signal<"
|
|
6026
|
+
protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "top" | "bottom" | "center" | "right">;
|
|
6002
6027
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionButtonGroupComponent, never>;
|
|
6003
6028
|
static ɵcmp: i0.ɵɵComponentDeclaration<SectionButtonGroupComponent, "m-section-button-group", never, {
|
|
6004
6029
|
"vertical": {
|
|
@@ -6030,7 +6055,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
|
|
|
6030
6055
|
}
|
|
6031
6056
|
export declare class SectionFooterComponent {
|
|
6032
6057
|
readonly sticky: import("@angular/core").InputSignal<boolean>;
|
|
6033
|
-
readonly align: import("@angular/core").InputSignal<"
|
|
6058
|
+
readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
|
|
6034
6059
|
readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
|
|
6035
6060
|
readonly fullWidth: import("@angular/core").InputSignal<boolean>;
|
|
6036
6061
|
private readonly isDesignMode;
|
|
@@ -6041,7 +6066,7 @@ export declare class SectionFooterComponent {
|
|
|
6041
6066
|
protected readonly sidepanel: import("@angular/core").Signal<boolean>;
|
|
6042
6067
|
protected readonly noBorder: import("@angular/core").Signal<boolean>;
|
|
6043
6068
|
protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
|
|
6044
|
-
protected readonly boxAlign: import("@angular/core").Signal<"
|
|
6069
|
+
protected readonly boxAlign: import("@angular/core").Signal<"left" | "center" | "right">;
|
|
6045
6070
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionFooterComponent, never>;
|
|
6046
6071
|
static ɵcmp: i0.ɵɵComponentDeclaration<SectionFooterComponent, "m-section-footer", never, {
|
|
6047
6072
|
"sticky": {
|
|
@@ -6156,10 +6181,16 @@ export declare class SectionTableComponent<Id extends string = string> extends C
|
|
|
6156
6181
|
* where it was written, never by a setting here.
|
|
6157
6182
|
*/
|
|
6158
6183
|
export declare class SectionTableRowComponent {
|
|
6184
|
+
/**
|
|
6185
|
+
* A click that lands on one of these inside a cell is that control's own
|
|
6186
|
+
* action, not the row's: a cell's button or link must not also follow the row.
|
|
6187
|
+
*/
|
|
6188
|
+
private static readonly OWN_CLICK;
|
|
6159
6189
|
/** The Repeat item codegen gives a repeated row; absent for a static row. */
|
|
6160
6190
|
readonly item: import("@angular/core").InputSignal<unknown>;
|
|
6161
6191
|
/** The repeated row's item, or `undefined` for a static row. */
|
|
6162
6192
|
readonly rowClick: import("@angular/core").OutputEmitterRef<unknown>;
|
|
6193
|
+
protected readonly onClick: (event: MouseEvent) => void;
|
|
6163
6194
|
static ɵfac: i0.ɵɵFactoryDeclaration<SectionTableRowComponent, never>;
|
|
6164
6195
|
static ɵcmp: i0.ɵɵComponentDeclaration<SectionTableRowComponent, "tr[m-section-table-row]", never, {
|
|
6165
6196
|
"item": {
|
|
@@ -7771,7 +7802,6 @@ export declare class TextInputComponent extends BaseTextInputComponent<TextOrNum
|
|
|
7771
7802
|
touched: import("@angular/core").ModelSignal<boolean>;
|
|
7772
7803
|
focused: import("@angular/core").InputSignal<boolean>;
|
|
7773
7804
|
errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
|
|
7774
|
-
showErrors: import("@angular/core").Signal<boolean>;
|
|
7775
7805
|
readonly hideErrors: import("@angular/core").InputSignal<boolean>;
|
|
7776
7806
|
protected readonly isNumber: import("@angular/core").Signal<boolean>;
|
|
7777
7807
|
protected onInput(event: Event): void;
|
|
@@ -7837,7 +7867,6 @@ export declare class ClearableInputComponent extends BaseTextInputComponent {
|
|
|
7837
7867
|
focused: import("@angular/core").InputSignal<boolean>;
|
|
7838
7868
|
touched: import("@angular/core").ModelSignal<boolean>;
|
|
7839
7869
|
errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
|
|
7840
|
-
showErrors: import("@angular/core").Signal<boolean>;
|
|
7841
7870
|
icon: import("@angular/core").InputSignal<string | undefined>;
|
|
7842
7871
|
placeholder: import("@angular/core").InputSignal<string>;
|
|
7843
7872
|
type: import("@angular/core").InputSignal<string>;
|
|
@@ -8098,7 +8127,6 @@ export declare class CheckboxInputComponent extends BaseCheckboxInputComponent i
|
|
|
8098
8127
|
touched: ModelSignal<boolean>;
|
|
8099
8128
|
focused: import("@angular/core").InputSignal<boolean>;
|
|
8100
8129
|
errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
|
|
8101
|
-
showErrors: import("@angular/core").Signal<boolean>;
|
|
8102
8130
|
readonly optionValue: import("@angular/core").InputSignal<string | undefined>;
|
|
8103
8131
|
readonly label: import("@angular/core").InputSignal<string | undefined>;
|
|
8104
8132
|
readonly noTranslate: import("@angular/core").InputSignal<string | boolean | undefined>;
|
|
@@ -8406,7 +8434,7 @@ declare class DropdownBoxComponent {
|
|
|
8406
8434
|
}
|
|
8407
8435
|
/** The trigger both option Fields draw: a searchable text input and a chevron. */
|
|
8408
8436
|
declare const DROPDOWN_TEMPLATE = "\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n";
|
|
8409
|
-
declare const DROPDOWN_IMPORTS: (typeof
|
|
8437
|
+
declare const DROPDOWN_IMPORTS: (typeof LabelComponent | typeof TextOutputComponent | typeof TextInputComponent | typeof ButtonComponent | typeof SelectorDirective)[];
|
|
8410
8438
|
/**
|
|
8411
8439
|
* Everything a Dropdown and a Multiselect share: the options, the search, the
|
|
8412
8440
|
* keyboard walk and the panel. What differs is only what the Field holds — one
|
|
@@ -8421,7 +8449,6 @@ declare abstract class BaseDropdownComponent extends BaseInputComponent<Dropdown
|
|
|
8421
8449
|
touched: import("@angular/core").ModelSignal<boolean>;
|
|
8422
8450
|
focused: import("@angular/core").InputSignal<boolean>;
|
|
8423
8451
|
errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
|
|
8424
|
-
showErrors: Signal<boolean>;
|
|
8425
8452
|
readonly options: import("@angular/core").InputSignal<DropdownOption<DropdownValue>[] | Signal<DropdownOption<DropdownValue>[]> | undefined>;
|
|
8426
8453
|
readonly dir: import("@angular/core").InputSignal<Direction$2 | undefined>;
|
|
8427
8454
|
readonly toggle: import("@angular/core").ModelSignal<boolean>;
|
|
@@ -8590,7 +8617,7 @@ declare class ColorPickerBoxComponent implements AfterViewInit, OnDestroy {
|
|
|
8590
8617
|
protected readonly _eyedropperConfig: import("@magmonium/one").Button;
|
|
8591
8618
|
protected readonly _headerContextMenu: ContextMenu;
|
|
8592
8619
|
protected readonly themeSwatches: import("@angular/core").Signal<{
|
|
8593
|
-
key: "
|
|
8620
|
+
key: "error" | "focus" | "border" | "background" | "text" | "textSecondary" | "mm" | "mmLite" | "mmDark" | "errorLight" | "warning" | "successLite" | "success" | "highlight" | "wealth";
|
|
8594
8621
|
color: string;
|
|
8595
8622
|
}[]>;
|
|
8596
8623
|
hue: import("@angular/core").WritableSignal<number>;
|
|
@@ -9159,7 +9186,6 @@ export declare class RatingInputComponent extends BaseInputComponent<RatingInput
|
|
|
9159
9186
|
touched: import("@angular/core").ModelSignal<boolean>;
|
|
9160
9187
|
focused: import("@angular/core").InputSignal<boolean>;
|
|
9161
9188
|
errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
|
|
9162
|
-
showErrors: import("@angular/core").Signal<boolean>;
|
|
9163
9189
|
private readonly themeStore;
|
|
9164
9190
|
protected readonly stars: number[];
|
|
9165
9191
|
/** Selected-star fill; undefined leaves the stylesheet's gold in place. */
|
|
@@ -9335,7 +9361,7 @@ export declare class FileUploadInputComponent extends BaseInputComponent<FileUpl
|
|
|
9335
9361
|
private readonly editorSize;
|
|
9336
9362
|
private readonly maxSize;
|
|
9337
9363
|
protected readonly isLocked: import("@angular/core").Signal<boolean>;
|
|
9338
|
-
protected readonly dropZoneIconColor: import("@angular/core").Signal<"error" | "
|
|
9364
|
+
protected readonly dropZoneIconColor: import("@angular/core").Signal<"error" | "focus" | "border">;
|
|
9339
9365
|
/** Object URLs of the previews on show, keyed by what the value holds. */
|
|
9340
9366
|
private readonly previews;
|
|
9341
9367
|
protected readonly heldFiles: import("@angular/core").Signal<HeldFile[]>;
|
|
@@ -9789,17 +9815,17 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
|
|
|
9789
9815
|
protected readonly resolvesConfigAsset = false;
|
|
9790
9816
|
readonly variant: import("@angular/core").InputSignal<string | undefined>;
|
|
9791
9817
|
readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
|
|
9792
|
-
readonly heightMode: import("@angular/core").InputSignal<"
|
|
9818
|
+
readonly heightMode: import("@angular/core").InputSignal<"full" | "fixed" | undefined>;
|
|
9793
9819
|
readonly maxHeight: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9794
9820
|
readonly height: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9795
|
-
readonly align: import("@angular/core").InputSignal<"
|
|
9821
|
+
readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
|
|
9796
9822
|
readonly padding: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9797
9823
|
readonly paddingX: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9798
9824
|
readonly paddingY: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9799
9825
|
readonly margin: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9800
9826
|
readonly marginX: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9801
9827
|
readonly marginY: import("@angular/core").InputSignal<string | number | undefined>;
|
|
9802
|
-
readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" |
|
|
9828
|
+
readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
|
|
9803
9829
|
readonly autofocus: import("@angular/core").InputSignal<boolean>;
|
|
9804
9830
|
data: import("@angular/core").InputSignal<T | undefined>;
|
|
9805
9831
|
readonly dataChange: import("@angular/core").OutputEmitterRef<T>;
|
|
@@ -9844,7 +9870,7 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
|
|
|
9844
9870
|
protected readonly handleSubmit: (event: Event) => void;
|
|
9845
9871
|
readonly resolvedSize: import("@angular/core").Signal<Size>;
|
|
9846
9872
|
protected readonly sizeLength: import("@angular/core").Signal<string | null>;
|
|
9847
|
-
readonly resolvedAlign: import("@angular/core").Signal<"
|
|
9873
|
+
readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
|
|
9848
9874
|
readonly resolvedVariant: import("@angular/core").Signal<string | undefined>;
|
|
9849
9875
|
readonly resolvedMaxWidth: import("@angular/core").Signal<string | number | undefined>;
|
|
9850
9876
|
private readonly resolvedPadding;
|
|
@@ -9856,7 +9882,7 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
|
|
|
9856
9882
|
readonly resolvedMinHeight: import("@angular/core").Signal<string | undefined>;
|
|
9857
9883
|
readonly resolvedMinWidth: import("@angular/core").Signal<string | undefined>;
|
|
9858
9884
|
readonly resolvedMaxHeight: import("@angular/core").Signal<string | number | undefined>;
|
|
9859
|
-
readonly resolvedHeightMode: import("@angular/core").Signal<"
|
|
9885
|
+
readonly resolvedHeightMode: import("@angular/core").Signal<"full" | "fixed" | undefined>;
|
|
9860
9886
|
readonly isFullHeight: import("@angular/core").Signal<boolean>;
|
|
9861
9887
|
readonly cssMaxHeight: import("@angular/core").Signal<string | undefined>;
|
|
9862
9888
|
constructor();
|
|
@@ -10526,7 +10552,7 @@ export declare class StepperComponent extends ConfigComponent<Stepper> {
|
|
|
10526
10552
|
constructor();
|
|
10527
10553
|
protected readonly isReadonly: import("@angular/core").Signal<boolean>;
|
|
10528
10554
|
protected readonly stepperDisabled: import("@angular/core").Signal<boolean>;
|
|
10529
|
-
protected readonly orientation: import("@angular/core").Signal<"
|
|
10555
|
+
protected readonly orientation: import("@angular/core").Signal<"vertical" | "compact">;
|
|
10530
10556
|
protected readonly currentStepLabel: import("@angular/core").Signal<string>;
|
|
10531
10557
|
protected readonly nextStepLabel: import("@angular/core").Signal<string>;
|
|
10532
10558
|
protected readonly isLastStep: import("@angular/core").Signal<boolean>;
|
|
@@ -10710,7 +10736,7 @@ export declare class ComponentStepperComponent {
|
|
|
10710
10736
|
components: import("@angular/core").InputSignal<Type<unknown>[]>;
|
|
10711
10737
|
labels: import("@angular/core").InputSignal<string[] | undefined>;
|
|
10712
10738
|
currentIndex: import("@angular/core").InputSignal<number>;
|
|
10713
|
-
variant: import("@angular/core").InputSignal<"
|
|
10739
|
+
variant: import("@angular/core").InputSignal<"horizontal" | "vertical">;
|
|
10714
10740
|
context: import("@angular/core").InputSignal<Record<string, unknown> | undefined>;
|
|
10715
10741
|
readonly stepChange: import("@angular/core").OutputEmitterRef<number>;
|
|
10716
10742
|
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentStepperComponent, never>;
|
|
@@ -12135,7 +12161,7 @@ export declare class ScoreSetItemComponent {
|
|
|
12135
12161
|
private readonly themeStore;
|
|
12136
12162
|
protected readonly tipId: string;
|
|
12137
12163
|
protected readonly tipDismissed: import("@angular/core").WritableSignal<boolean>;
|
|
12138
|
-
protected readonly shape: import("@angular/core").Signal<"
|
|
12164
|
+
protected readonly shape: import("@angular/core").Signal<"primary" | "none" | "row">;
|
|
12139
12165
|
protected readonly tone: import("@angular/core").Signal<string | null>;
|
|
12140
12166
|
protected readonly model: import("@angular/core").Signal<{
|
|
12141
12167
|
value: number | null;
|
|
@@ -12449,7 +12475,7 @@ export declare class PriceLadderComponent {
|
|
|
12449
12475
|
protected readonly current: import("@angular/core").Signal<number | null>;
|
|
12450
12476
|
/** The forecast point: a `forecast` mark, else the `target` input. */
|
|
12451
12477
|
private readonly targetPoint;
|
|
12452
|
-
protected readonly shownAs: import("@angular/core").Signal<"
|
|
12478
|
+
protected readonly shownAs: import("@angular/core").Signal<"list" | "line">;
|
|
12453
12479
|
/** Every drawable mark, the `current` and `forecast` stand-ins included. */
|
|
12454
12480
|
private readonly everyMark;
|
|
12455
12481
|
/** The reference levels drawn as ticks and labels. */
|
|
@@ -12792,7 +12818,7 @@ export declare class ScaleComponent {
|
|
|
12792
12818
|
private readonly formatter;
|
|
12793
12819
|
/** A value as text: a `percent` value is already in percent (12.5 → 12.5%). */
|
|
12794
12820
|
readonly formatValue: (v: number) => string;
|
|
12795
|
-
protected readonly shownAs: import("@angular/core").Signal<"
|
|
12821
|
+
protected readonly shownAs: import("@angular/core").Signal<"horizontal" | "vertical">;
|
|
12796
12822
|
private readonly marks;
|
|
12797
12823
|
protected readonly primary: import("@angular/core").Signal<Mark | null>;
|
|
12798
12824
|
private readonly relations;
|
|
@@ -13543,7 +13569,7 @@ export type DocAiPhase = 'idle' | 'asking' | 'question' | 'outline' | 'writing'
|
|
|
13543
13569
|
*/
|
|
13544
13570
|
export declare class DocEditorComponent implements ControlValueAccessor {
|
|
13545
13571
|
protected readonly groups: readonly import("@magmonium/one").DocToolbarGroup[];
|
|
13546
|
-
protected readonly icons: Record<"
|
|
13572
|
+
protected readonly icons: Record<"bold" | "italic" | "strike" | "heading" | "list" | "quote" | "link" | "code" | "table", string>;
|
|
13547
13573
|
protected readonly docActionKey: typeof docActionKey;
|
|
13548
13574
|
private readonly translate;
|
|
13549
13575
|
protected readonly value: import("@angular/core").WritableSignal<string>;
|
|
@@ -15552,7 +15578,7 @@ export declare class ConfirmComponent {
|
|
|
15552
15578
|
* every confirmation drawn before this.
|
|
15553
15579
|
*/
|
|
15554
15580
|
params: import("@angular/core").InputSignal<Record<string, string>>;
|
|
15555
|
-
type: import("@angular/core").InputSignal<"warning" | "success" | "
|
|
15581
|
+
type: import("@angular/core").InputSignal<"warning" | "success" | "danger" | "info">;
|
|
15556
15582
|
/**
|
|
15557
15583
|
* Whether the question can be refused. `yes` is an acknowledgement — the one
|
|
15558
15584
|
* button commits and there is nothing else to press — and stays the default,
|
|
@@ -15569,7 +15595,7 @@ export declare class ConfirmComponent {
|
|
|
15569
15595
|
cancelLabel: import("@angular/core").InputSignal<string>;
|
|
15570
15596
|
protected readonly confirmText: import("@angular/core").Signal<string>;
|
|
15571
15597
|
protected readonly cancelText: import("@angular/core").Signal<string>;
|
|
15572
|
-
protected readonly accent: import("@angular/core").Signal<"error" | "
|
|
15598
|
+
protected readonly accent: import("@angular/core").Signal<"error" | "warning" | "success" | "mm">;
|
|
15573
15599
|
protected readonly iconName: import("@angular/core").Signal<"exclamation-triangle" | "info" | "trash" | "check-circle">;
|
|
15574
15600
|
protected accept(): void;
|
|
15575
15601
|
protected decline(): void;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"magmonium-one-base-dropdown-CmUfiOAb.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/ui/dropdown/dropdown-box.ts","../../../../libs/one/src/lib/shared/ui/input/ui/dropdown/base-dropdown.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { TranslatePipe } from '../../../../pipe/translate';\nimport { DropdownOption, DropdownValue } from '../../model/input';\n\n@Component({\n selector: 'm-dropdown-box',\n imports: [TranslatePipe],\n template: `\n <ul class=\"dropdown-box\" role=\"listbox\">\n @for (option of options(); track option.value; let i = $index) {\n @let selectedState = isSelected(option.value);\n <li\n class=\"dropdown-box__option\"\n [class.dropdown-box__option--selected]=\"selectedState\"\n [class.dropdown-box__option--disabled]=\"option.disabled\"\n [class.dropdown-box__option--active]=\"i === activeIndex()\"\n [style.--m-dropdown-option-depth]=\"option.depth\"\n role=\"option\"\n [attr.aria-selected]=\"selectedState\"\n [attr.data-value]=\"option.value\"\n (click)=\"selectOption(option)\"\n (keydown.enter)=\"selectOption(option)\"\n tabindex=\"0\"\n >\n <!-- A group header is a row, never a choice: no box to tick. -->\n @if (multiple() && !option.disabled) {\n <input\n type=\"checkbox\"\n class=\"dropdown-box__checkbox\"\n [checked]=\"selectedState\"\n tabindex=\"-1\"\n (click)=\"$event.preventDefault()\"\n />\n }\n @if (option.noTranslate) {\n {{ option.label }}\n } @else {\n {{ option.label | translate }}\n }\n </li>\n } @empty {\n <li class=\"dropdown-box__empty\">\n {{ 'no-results-found' | translate }}\n </li>\n }\n </ul>\n `,\n styleUrl: './dropdown-box.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DropdownBoxComponent {\n readonly options = input<DropdownOption<DropdownValue>[]>([]);\n /** The values ticked, as a list whichever Field drew the panel. */\n readonly selected = input<readonly DropdownValue[]>([]);\n readonly multiple = input<boolean>(false);\n readonly activeIndex = input<number>(-1);\n readonly action = output<DropdownOption<DropdownValue>>();\n\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // Keep the keyboard-active option in view as ↑/↓ walk a scrolled list.\n constructor() {\n effect(() => {\n const index = this.activeIndex();\n if (index < 0) return;\n this.host.nativeElement\n .querySelectorAll('.dropdown-box__option')\n [index]?.scrollIntoView?.({ block: 'nearest' });\n });\n }\n\n protected readonly isSelected = (value: DropdownValue): boolean =>\n this.selected().includes(value);\n\n // Only emit a selection event for enabled options.\n protected readonly selectOption = (\n option: DropdownOption<DropdownValue>\n ): void => {\n if (option.disabled) return;\n this.action.emit(option);\n };\n}\n","import {\n computed,\n Directive,\n ElementRef,\n inject,\n input,\n inputBinding,\n linkedSignal,\n model,\n outputBinding,\n Signal,\n signal,\n viewChild,\n} from '@angular/core';\nimport { ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { BaseInputComponent } from '../../lib/base-input';\nimport { Button } from '../../../button/type/button';\nimport { ButtonComponent } from '../../../button/ui/button';\nimport { TranslateService } from '../../../../services';\nimport { SelectorConfig, SelectorDirective } from '../../../../directives';\nimport { Direction } from '../../../../directives/selector/selector-type';\nimport { DropdownBoxComponent } from './dropdown-box';\nimport {\n DropdownInput,\n DropdownOption,\n DropdownValue,\n TextInput,\n} from '../../model/input';\nimport { TextInputComponent } from '../text/text';\nimport { assetOptions } from '../../lib/options-asset';\n\n/** The trigger both option Fields draw: a searchable text input and a chevron. */\nexport const DROPDOWN_TEMPLATE = `\n @if (config(); as dropdown) {\n @if (dropdown.label) {\n <m-label\n [for]=\"dropdown.name ?? ''\"\n [placeholder]=\"dropdown.label\"\n [params]=\"dropdown.params\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\n <div\n class=\"trigger-wrap\"\n #wrapper\n [mSelector]=\"selectorConfig()\"\n [disabled]=\"disabled() || readonly() || !!config()?.readonly\"\n (opened)=\"onOpened()\"\n (closed)=\"onClosed()\"\n (focusin)=\"isFocused.set(true)\"\n (focusout)=\"isFocused.set(false)\"\n >\n <m-text-input\n [config]=\"triggerInputConfig()\"\n [value]=\"displayValue()\"\n [disabled]=\"disabled()\"\n [invalid]=\"invalid()\"\n [hideErrors]=\"true\"\n [(touched)]=\"touched\"\n [focused]=\"focused()\"\n (valueChange)=\"onInput($event)\"\n (click)=\"preventToggleWhenOpen($event)\"\n (keydown.space)=\"$event.stopPropagation()\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.arrowdown)=\"onArrow($event, 1)\"\n (keydown.arrowup)=\"onArrow($event, -1)\"\n (keydown.tab)=\"$event.stopPropagation()\"\n />\n <m-button [disabled]=\"disabled()\" [config]=\"chevron()\" />\n </div>\n @if (showErrors()) {\n @for (error of errors(); track $index) {\n <m-text-output\n variant=\"footer\"\n color=\"error\"\n [label]=\"error.message\"\n />\n }\n }\n }\n`;\n\nexport const DROPDOWN_IMPORTS = [\n LabelComponent,\n TextOutputComponent,\n TextInputComponent,\n ButtonComponent,\n SelectorDirective,\n];\n\n/**\n * Everything a Dropdown and a Multiselect share: the options, the search, the\n * keyboard walk and the panel. What differs is only what the Field holds — one\n * value or a list — so a subclass says which values are selected and what a\n * pick does to them.\n */\n@Directive()\nexport abstract class BaseDropdownComponent extends BaseInputComponent<DropdownInput> {\n public override config = input<Partial<DropdownInput> | undefined>();\n public override required = input<boolean>(false);\n public override disabled = input<boolean>(false);\n public override invalid = input<boolean>(false);\n public override touched = model<boolean>(false);\n public override focused = input<boolean>(false);\n public override errors = input<readonly WithOptionalFieldTree<ValidationError>[]>(\n []\n );\n public override showErrors = computed(() => this.touched() && this.invalid());\n\n readonly options = input<\n DropdownOption<DropdownValue>[] | Signal<DropdownOption<DropdownValue>[]>\n >();\n readonly dir = input<Direction>();\n readonly toggle = model(false);\n readonly searchTerm = signal('');\n readonly isFocused = signal(false);\n readonly chevron = computed(\n () =>\n <Button>{\n icon: this.toggle() ? 'chevron-up' : 'chevron-down',\n one: true,\n variant: 'ghost',\n // In-Field control, never the form's submit — without this the Button\n // reads as the submit control and greys out while the form is invalid.\n type: 'button',\n // Chevron tracks the trigger's border like the text input's own icon:\n // red while the Field shows errors, focus tint while focused, border at rest.\n color: this.showErrors()\n ? 'error'\n : this.isFocused()\n ? 'focus'\n : 'border',\n // The trigger input is the Field's tab stop; the chevron only repeats\n // what clicking that input already does, so Tab walks past it.\n tabindex: -1,\n }\n );\n\n /** The values the Field holds now, as a list whichever kind it is. */\n protected abstract readonly selectedValues: Signal<readonly DropdownValue[]>;\n /** Whether the panel ticks rows and stays open across picks. */\n protected abstract readonly multiple: boolean;\n /** What picking `option` does to the Field's value. */\n protected abstract selectOption(option: DropdownOption<DropdownValue>): void;\n\n protected readonly triggerInputConfig = computed(() => {\n const dropdown = this.config() as DropdownInput | undefined;\n return <Partial<TextInput>>{\n name: dropdown?.name,\n icon: dropdown?.icon,\n one: dropdown?.one,\n placeholder: this.placeholderText(),\n readonly: this.readonly() || !!dropdown?.readonly,\n };\n });\n\n protected readonly dropdownOptions = computed(\n (): DropdownOption<DropdownValue>[] => {\n const runtimeOptions = this.options();\n const source =\n runtimeOptions ?? (this.config() as DropdownInput | undefined)?.options;\n if (typeof source === 'function') return source();\n if (source?.length) return source;\n return this.assetOptions();\n }\n );\n\n private readonly translateService = inject(TranslateService);\n\n protected readonly assetOptions = assetOptions(\n () => (this.config() as DropdownInput | undefined)?.optionsAsset\n );\n\n /** An option's text: authored as it stands, a key translated. */\n private readonly optionLabel = (\n option?: DropdownOption<DropdownValue>\n ): string => {\n if (!option?.label) return '';\n return option.noTranslate\n ? option.label\n : this.translateService.translate(option.label);\n };\n\n protected readonly filteredOptions = computed(\n (): DropdownOption<DropdownValue>[] => {\n const search = this.searchTerm().toLowerCase();\n if (!search) return this.dropdownOptions();\n return this.dropdownOptions().filter((o) => {\n const label = this.optionLabel(o).toLowerCase();\n return (\n label.includes(search) ||\n String(o.value).toLowerCase().includes(search)\n );\n });\n }\n );\n\n /** The option ↑/↓ point at while the panel is open; -1 is none. Reset as the search narrows the list. */\n protected readonly activeIndex = linkedSignal<\n DropdownOption<DropdownValue>[],\n number\n >({\n source: this.filteredOptions,\n computation: (options) =>\n this.searchTerm() ? this.nextEnabled(options, -1, 1) : -1,\n });\n\n /** The enabled option `step` rows past `from`, wrapping; `from` itself when none. */\n private readonly nextEnabled = (\n options: DropdownOption<DropdownValue>[],\n from: number,\n step: 1 | -1\n ): number => {\n for (let i = 1; i <= options.length; i++) {\n const index =\n (((from + step * i) % options.length) + options.length) %\n options.length;\n if (!options[index].disabled) return index;\n }\n return from;\n };\n\n /** One pick reads as its option's label, several as a count. */\n private readonly selectionLabel = computed((): string => {\n const values = this.selectedValues();\n if (values.length === 0) return '';\n if (values.length === 1) {\n return this.optionLabel(\n this.dropdownOptions().find((o) => o.value === values[0])\n );\n }\n const translation = this.translateService.translate(\n `selected?count=${values.length}`\n );\n return translation.includes('selected')\n ? `${values.length} Selected`\n : translation;\n });\n\n protected readonly displayValue = computed((): string =>\n this.toggle() ? this.searchTerm() : this.selectionLabel()\n );\n\n protected readonly placeholderText = computed((): string => {\n if (this.toggle()) {\n const label = this.selectionLabel();\n if (label) return label;\n }\n const placeholder = (this.config() as DropdownInput | undefined)\n ?.placeholder;\n return placeholder ? this.translateService.translate(placeholder) : '';\n });\n\n private readonly wrapperRef =\n viewChild<ElementRef<HTMLDivElement>>('wrapper');\n\n protected readonly selectorConfig = computed<\n SelectorConfig<DropdownBoxComponent>\n >(() => ({\n component: DropdownBoxComponent,\n base: 'm-dropdown-input',\n matchTriggerWidth: true,\n toggle: true,\n dir: this.dir(),\n bindings: [\n inputBinding('options', this.filteredOptions),\n inputBinding('selected', this.selectedValues),\n inputBinding('multiple', () => this.multiple),\n inputBinding('activeIndex', this.activeIndex),\n outputBinding<DropdownOption<DropdownValue>>('action', (option) =>\n this.selectOption(option)\n ),\n ],\n }));\n\n /** Shuts the panel after a pick, the way a click on the trigger would. */\n protected readonly closePanel = (): void => {\n this.toggle.set(false);\n this.searchTerm.set('');\n setTimeout(() => this.wrapperRef()?.nativeElement.click(), 0);\n };\n\n protected readonly onOpened = (): void => {\n this.toggle.set(true);\n this.searchTerm.set('');\n const current = this.selectedValues()[0];\n this.activeIndex.set(\n this.filteredOptions().findIndex((o) => o.value === current)\n );\n };\n\n // Focus stays in the trigger input (it is the search box), so ↑/↓ move the\n // active option rather than DOM focus. Closed, ArrowDown bubbles on to\n // SelectorDirective, which opens the panel.\n protected readonly onArrow = (event: Event, step: 1 | -1): void => {\n if (!this.toggle()) return;\n event.preventDefault();\n this.activeIndex.update((index) =>\n this.nextEnabled(this.filteredOptions(), index, step)\n );\n };\n\n // Enter never reaches SelectorDirective (it would toggle the panel); open,\n // it picks the active option.\n protected readonly onEnter = (event: Event): void => {\n event.stopPropagation();\n if (!this.toggle()) return;\n event.preventDefault();\n const option = this.filteredOptions()[this.activeIndex()];\n if (option && !option.disabled) this.selectOption(option);\n };\n\n protected readonly onClosed = (): void => {\n this.toggle.set(false);\n this.searchTerm.set('');\n };\n\n protected readonly onInput = (value: string): void => {\n this.searchTerm.set(value);\n };\n\n protected readonly preventToggleWhenOpen = (event: Event): void => {\n if (this.toggle() || this.readonly() || this.config()?.readonly) {\n event.stopPropagation();\n }\n };\n}\n"],"mappings":"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"}
|