@magmonium/one 0.4.100 → 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.
Files changed (65) hide show
  1. package/fesm2022/{magmonium-one-attribute-value-CPh-lJPV.mjs → magmonium-one-attribute-value-BXEWw7xP.mjs} +3 -3
  2. package/fesm2022/{magmonium-one-attribute-value-CPh-lJPV.mjs.map → magmonium-one-attribute-value-BXEWw7xP.mjs.map} +1 -1
  3. package/fesm2022/{magmonium-one-base-checkbox-LdM6dqF_.mjs → magmonium-one-base-checkbox-CIUMxkzu.mjs} +2 -2
  4. package/fesm2022/{magmonium-one-base-checkbox-LdM6dqF_.mjs.map → magmonium-one-base-checkbox-CIUMxkzu.mjs.map} +1 -1
  5. package/fesm2022/{magmonium-one-base-dropdown-xhoyZ8I5.mjs → magmonium-one-base-dropdown-BMsV5USo.mjs} +9 -11
  6. package/fesm2022/magmonium-one-base-dropdown-BMsV5USo.mjs.map +1 -0
  7. package/fesm2022/{magmonium-one-size-converter-BqkALIWA.mjs → magmonium-one-base-input-BeyBAbV4.mjs} +190 -3
  8. package/fesm2022/magmonium-one-base-input-BeyBAbV4.mjs.map +1 -0
  9. package/fesm2022/{magmonium-one-base-text-ChjG3GNw.mjs → magmonium-one-base-text-BBeMl8XM.mjs} +2 -2
  10. package/fesm2022/{magmonium-one-base-text-ChjG3GNw.mjs.map → magmonium-one-base-text-BBeMl8XM.mjs.map} +1 -1
  11. package/fesm2022/{magmonium-one-button-BPIU6Ww0.mjs → magmonium-one-button-DC_fLy-J.mjs} +7 -7
  12. package/fesm2022/{magmonium-one-button-BPIU6Ww0.mjs.map → magmonium-one-button-DC_fLy-J.mjs.map} +1 -1
  13. package/fesm2022/{magmonium-one-checkbox-BXNvtkzo.mjs → magmonium-one-checkbox-C85FEuTs.mjs} +5 -6
  14. package/fesm2022/magmonium-one-checkbox-C85FEuTs.mjs.map +1 -0
  15. package/fesm2022/{magmonium-one-color-utl-BA51l-Rw.mjs → magmonium-one-color-utl-DMLkkE-z.mjs} +2 -2
  16. package/fesm2022/{magmonium-one-color-utl-BA51l-Rw.mjs.map → magmonium-one-color-utl-DMLkkE-z.mjs.map} +1 -1
  17. package/fesm2022/{magmonium-one-directives-hJ7wkmQn.mjs → magmonium-one-directives-CJK7xDPK.mjs} +4 -4
  18. package/fesm2022/{magmonium-one-directives-hJ7wkmQn.mjs.map → magmonium-one-directives-CJK7xDPK.mjs.map} +1 -1
  19. package/fesm2022/{magmonium-one-group-mOaqnb5q.mjs → magmonium-one-group-qu3xLiI8.mjs} +7 -7
  20. package/fesm2022/{magmonium-one-group-mOaqnb5q.mjs.map → magmonium-one-group-qu3xLiI8.mjs.map} +1 -1
  21. package/fesm2022/{magmonium-one-header-Cz3oggF7.mjs → magmonium-one-header-BC-74GOn.mjs} +4 -4
  22. package/fesm2022/{magmonium-one-header-Cz3oggF7.mjs.map → magmonium-one-header-BC-74GOn.mjs.map} +1 -1
  23. package/fesm2022/{magmonium-one-icon-CH-g8CUR.mjs → magmonium-one-icon-CXFTG4mD.mjs} +4 -4
  24. package/fesm2022/{magmonium-one-icon-CH-g8CUR.mjs.map → magmonium-one-icon-CXFTG4mD.mjs.map} +1 -1
  25. package/fesm2022/{magmonium-one-image-editor-D40RzxsY.mjs → magmonium-one-image-editor-BAF7cdC2.mjs} +4 -4
  26. package/fesm2022/{magmonium-one-image-editor-D40RzxsY.mjs.map → magmonium-one-image-editor-BAF7cdC2.mjs.map} +1 -1
  27. package/fesm2022/{magmonium-one-label-D-wnA_Fl.mjs → magmonium-one-label-BNxbDSwc.mjs} +2 -2
  28. package/fesm2022/{magmonium-one-label-D-wnA_Fl.mjs.map → magmonium-one-label-BNxbDSwc.mjs.map} +1 -1
  29. package/fesm2022/{magmonium-one-m-ref-DLIAzywu.mjs → magmonium-one-m-ref-CoK96ogW.mjs} +2 -2
  30. package/fesm2022/{magmonium-one-m-ref-DLIAzywu.mjs.map → magmonium-one-m-ref-CoK96ogW.mjs.map} +1 -1
  31. package/fesm2022/{magmonium-one-menu-eSnsKCez.mjs → magmonium-one-menu-D_HAqfel.mjs} +6 -6
  32. package/fesm2022/{magmonium-one-menu-eSnsKCez.mjs.map → magmonium-one-menu-D_HAqfel.mjs.map} +1 -1
  33. package/fesm2022/{magmonium-one-multi-range-C0S7udf5.mjs → magmonium-one-multi-range-DqtW4U_x.mjs} +5 -4
  34. package/fesm2022/magmonium-one-multi-range-DqtW4U_x.mjs.map +1 -0
  35. package/fesm2022/{magmonium-one-options-asset-BNd1hbLw.mjs → magmonium-one-options-asset-DWjdYQe0.mjs} +2 -2
  36. package/fesm2022/{magmonium-one-options-asset-BNd1hbLw.mjs.map → magmonium-one-options-asset-DWjdYQe0.mjs.map} +1 -1
  37. package/fesm2022/{magmonium-one-otp-CeSz8ZZ2.mjs → magmonium-one-otp-DOPvjYJz.mjs} +5 -5
  38. package/fesm2022/{magmonium-one-otp-CeSz8ZZ2.mjs.map → magmonium-one-otp-DOPvjYJz.mjs.map} +1 -1
  39. package/fesm2022/{magmonium-one-password-CSNZtS__.mjs → magmonium-one-password-BqdyEDF6.mjs} +6 -6
  40. package/fesm2022/{magmonium-one-password-CSNZtS__.mjs.map → magmonium-one-password-BqdyEDF6.mjs.map} +1 -1
  41. package/fesm2022/{magmonium-one-radio-DlS31qJG.mjs → magmonium-one-radio-DGTbRRXb.mjs} +3 -3
  42. package/fesm2022/{magmonium-one-radio-DlS31qJG.mjs.map → magmonium-one-radio-DGTbRRXb.mjs.map} +1 -1
  43. package/fesm2022/{magmonium-one-range-CR8go24u.mjs → magmonium-one-range-Dw4YACtP.mjs} +4 -4
  44. package/fesm2022/{magmonium-one-range-CR8go24u.mjs.map → magmonium-one-range-Dw4YACtP.mjs.map} +1 -1
  45. package/fesm2022/{magmonium-one-selector-BK48N5us.mjs → magmonium-one-selector-QB49Ju9l.mjs} +4 -4
  46. package/fesm2022/{magmonium-one-selector-BK48N5us.mjs.map → magmonium-one-selector-QB49Ju9l.mjs.map} +1 -1
  47. package/fesm2022/{magmonium-one-text-4zWYsKpH.mjs → magmonium-one-text-CMULvvAr.mjs} +6 -7
  48. package/fesm2022/{magmonium-one-text-4zWYsKpH.mjs.map → magmonium-one-text-CMULvvAr.mjs.map} +1 -1
  49. package/fesm2022/{magmonium-one-text-output-E6pe3IOL.mjs → magmonium-one-text-output-DiA4R1pw.mjs} +4 -4
  50. package/fesm2022/{magmonium-one-text-output-E6pe3IOL.mjs.map → magmonium-one-text-output-DiA4R1pw.mjs.map} +1 -1
  51. package/fesm2022/magmonium-one-theme-DEgFM1wD.mjs +1 -0
  52. package/fesm2022/{magmonium-one-toggle-BPInV6K-.mjs → magmonium-one-toggle-sUSXzxMl.mjs} +3 -5
  53. package/fesm2022/magmonium-one-toggle-sUSXzxMl.mjs.map +1 -0
  54. package/fesm2022/magmonium-one.mjs +40 -43
  55. package/fesm2022/magmonium-one.mjs.map +1 -1
  56. package/package.json +1 -1
  57. package/types/magmonium-one.d.ts +39 -39
  58. package/fesm2022/magmonium-one-base-dropdown-xhoyZ8I5.mjs.map +0 -1
  59. package/fesm2022/magmonium-one-base-input-B92NOmxz.mjs +0 -183
  60. package/fesm2022/magmonium-one-base-input-B92NOmxz.mjs.map +0 -1
  61. package/fesm2022/magmonium-one-checkbox-BXNvtkzo.mjs.map +0 -1
  62. package/fesm2022/magmonium-one-multi-range-C0S7udf5.mjs.map +0 -1
  63. package/fesm2022/magmonium-one-size-converter-BqkALIWA.mjs.map +0 -1
  64. package/fesm2022/magmonium-one-theme-BtQyLRdQ.mjs +0 -1
  65. package/fesm2022/magmonium-one-toggle-BPInV6K-.mjs.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmonium/one",
3
- "version": "0.4.100",
3
+ "version": "0.4.101",
4
4
  "description": "Magmonium One — Angular design-system primitives for mm Apps",
5
5
  "author": "magmonium",
6
6
  "license": "MIT",
@@ -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<"ew-resize" | "ns-resize" | "move">;
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
  /**
@@ -2925,7 +2925,7 @@ export declare class ButtonComponent extends ReactiveElementComponent<Button> {
2925
2925
  navParams: import("@angular/core").InputSignal<Record<string, string | number> | undefined>;
2926
2926
  href: import("@angular/core").InputSignal<string | undefined>;
2927
2927
  disabled: import("@angular/core").InputSignal<boolean | undefined>;
2928
- variant: import("@angular/core").InputSignal<"primary" | "ghost" | "secondary" | "tab" | undefined>;
2928
+ variant: import("@angular/core").InputSignal<"ghost" | "primary" | "secondary" | "tab" | undefined>;
2929
2929
  name: import("@angular/core").InputSignal<string | undefined>;
2930
2930
  baseUrl: import("@angular/core").InputSignal<string | undefined>;
2931
2931
  one: import("@angular/core").InputSignal<boolean | undefined>;
@@ -2938,7 +2938,7 @@ export declare class ButtonComponent extends ReactiveElementComponent<Button> {
2938
2938
  icon: import("@angular/core").InputSignal<string | undefined>;
2939
2939
  isRightIcon: import("@angular/core").InputSignal<string | boolean | undefined>;
2940
2940
  iconOnly: import("@angular/core").InputSignal<string | boolean | undefined>;
2941
- size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
2941
+ size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
2942
2942
  stacked: import("@angular/core").InputSignal<string | boolean | undefined>;
2943
2943
  imgSrc: import("@angular/core").InputSignal<string | undefined>;
2944
2944
  nonClickable: import("@angular/core").InputSignal<string | boolean | undefined>;
@@ -3555,7 +3555,7 @@ export declare class ButtonGroupComponent extends ConfigComponent<ButtonGroup> {
3555
3555
  color?: string | keyof import("dist/libs/cli/src").ThemeColor;
3556
3556
  align?: ConfigAlign;
3557
3557
  isLoading?: boolean;
3558
- variant?: "primary" | "ghost" | "secondary" | "tab" | undefined;
3558
+ variant?: "ghost" | "primary" | "secondary" | "tab" | undefined;
3559
3559
  label?: string;
3560
3560
  noTranslate?: boolean;
3561
3561
  params?: Record<string, string>;
@@ -4359,6 +4359,11 @@ declare class BaseInputComponent<T extends Input = Input> {
4359
4359
  "touched": "touchedChange";
4360
4360
  }, never, never, true, never>;
4361
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;
4362
4367
  declare class BaseTextInputComponent<T extends Input = TextInput> extends BaseInputComponent<T> implements FormValueControl<string> {
4363
4368
  value: ModelSignal<string>;
4364
4369
  private inputElement;
@@ -4367,7 +4372,7 @@ declare class BaseTextInputComponent<T extends Input = TextInput> extends BaseIn
4367
4372
  private autofocused;
4368
4373
  constructor();
4369
4374
  readonly isFocused: import("@angular/core").WritableSignal<boolean>;
4370
- readonly iconColor: import("@angular/core").Signal<"error" | "border" | "focus">;
4375
+ readonly iconColor: import("@angular/core").Signal<"error" | "focus" | "border">;
4371
4376
  protected readonly setValue: (value: string) => void;
4372
4377
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseTextInputComponent<any>, never>;
4373
4378
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseTextInputComponent<any>, never, never, {
@@ -4988,7 +4993,7 @@ export declare class SectionFilterGroupComponent {
4988
4993
  readonly paddingX: import("@angular/core").InputSignal<boolean | undefined>;
4989
4994
  readonly paddingY: import("@angular/core").InputSignal<boolean | undefined>;
4990
4995
  readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
4991
- readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
4996
+ readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
4992
4997
  readonly config: import("@angular/core").InputSignal<SectionFilterGroupConfig | undefined>;
4993
4998
  /**
4994
4999
  * The whole group's selection, keyed by each Filter's `name` — one key per
@@ -5006,7 +5011,7 @@ export declare class SectionFilterGroupComponent {
5006
5011
  protected readonly resolvedPadding: import("@angular/core").Signal<boolean>;
5007
5012
  protected readonly resolvedPaddingX: import("@angular/core").Signal<boolean>;
5008
5013
  protected readonly resolvedPaddingY: import("@angular/core").Signal<boolean>;
5009
- protected readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right">;
5014
+ protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
5010
5015
  protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
5011
5016
  protected readonly noBorder: import("@angular/core").Signal<boolean>;
5012
5017
  /**
@@ -5111,7 +5116,7 @@ export declare class SectionStepperComponent implements OnDestroy {
5111
5116
  readonly lg: import("@angular/core").InputSignal<number | undefined>;
5112
5117
  readonly xl: import("@angular/core").InputSignal<number | undefined>;
5113
5118
  readonly xxl: import("@angular/core").InputSignal<number | undefined>;
5114
- readonly orientation: import("@angular/core").InputSignal<"vertical" | "horizontal" | undefined>;
5119
+ readonly orientation: import("@angular/core").InputSignal<"horizontal" | "vertical" | undefined>;
5115
5120
  readonly stepChange: import("@angular/core").OutputEmitterRef<number>;
5116
5121
  private readonly isCompact;
5117
5122
  private readonly mediaMatched;
@@ -5185,7 +5190,7 @@ export declare class SectionStepperComponent implements OnDestroy {
5185
5190
  export declare class SectionBadgesComponent {
5186
5191
  readonly wrap: import("@angular/core").InputSignal<boolean>;
5187
5192
  readonly border: import("@angular/core").InputSignal<boolean>;
5188
- readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5193
+ readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5189
5194
  private readonly sectionContext;
5190
5195
  protected readonly hasBorder: import("@angular/core").Signal<boolean>;
5191
5196
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionBadgesComponent, never>;
@@ -5333,7 +5338,7 @@ export declare class SectionPaginationComponent {
5333
5338
  * Entries that are not positive numbers drop rather than throw.
5334
5339
  */
5335
5340
  readonly perPageOptions: import("@angular/core").InputSignal<string | undefined>;
5336
- readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
5341
+ readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
5337
5342
  readonly showPerPage: import("@angular/core").InputSignal<boolean>;
5338
5343
  /** Hides the band outright once everything fits one page. */
5339
5344
  readonly hideOnSinglePage: import("@angular/core").InputSignal<boolean>;
@@ -5671,7 +5676,7 @@ export declare class SectionComponent extends ConfigComponent<SectionConfig> {
5671
5676
  readonly align: import("@angular/core").InputSignal<SectionAlign | undefined>;
5672
5677
  readonly alignX: import("@angular/core").InputSignal<GridAlignX | undefined>;
5673
5678
  readonly alignY: import("@angular/core").InputSignal<GridAlignY | undefined>;
5674
- readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
5679
+ readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
5675
5680
  private readonly parentSize;
5676
5681
  readonly resolvedSize: import("@angular/core").Signal<Size>;
5677
5682
  protected readonly sizeLength: import("@angular/core").Signal<string>;
@@ -5842,8 +5847,8 @@ export declare class SectionHeaderComponent {
5842
5847
  readonly visibilityRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
5843
5848
  readonly disableRule: import("@angular/core").InputSignal<((key: string, data?: unknown) => boolean) | undefined>;
5844
5849
  readonly extraData: import("@angular/core").InputSignal<unknown>;
5845
- readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
5846
- readonly alignment: import("@angular/core").Signal<"center" | "left" | "right">;
5850
+ readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
5851
+ readonly alignment: import("@angular/core").Signal<"left" | "center" | "right">;
5847
5852
  readonly badge: import("@angular/core").InputSignal<BadgeCount | undefined>;
5848
5853
  readonly showBack: import("@angular/core").InputSignal<boolean>;
5849
5854
  readonly actionButton: import("@angular/core").InputSignal<string | undefined>;
@@ -5862,7 +5867,7 @@ export declare class SectionHeaderComponent {
5862
5867
  protected readonly sidepanel: import("@angular/core").Signal<boolean>;
5863
5868
  protected readonly noBorder: import("@angular/core").Signal<boolean>;
5864
5869
  protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
5865
- protected readonly boxAlign: import("@angular/core").Signal<"center" | "left" | "right">;
5870
+ protected readonly boxAlign: import("@angular/core").Signal<"left" | "center" | "right">;
5866
5871
  protected readonly iconBox: import("@angular/core").Signal<string>;
5867
5872
  protected readonly stickyOn: import("@angular/core").Signal<boolean>;
5868
5873
  protected readonly isSticky: import("@angular/core").Signal<boolean>;
@@ -6010,7 +6015,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
6010
6015
  readonly vertical: import("@angular/core").InputSignal<boolean | undefined>;
6011
6016
  readonly align: import("@angular/core").InputSignal<ConfigAlign>;
6012
6017
  readonly variant: import("@angular/core").InputSignal<"spaced" | "joined" | undefined>;
6013
- readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
6018
+ readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
6014
6019
  readonly fullWidth: import("@angular/core").InputSignal<boolean | undefined>;
6015
6020
  private readonly parentSize;
6016
6021
  readonly resolvedSize: import("@angular/core").Signal<Size>;
@@ -6018,7 +6023,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
6018
6023
  protected readonly resolvedFullWidth: import("@angular/core").Signal<boolean>;
6019
6024
  protected readonly resolvedVertical: import("@angular/core").Signal<boolean>;
6020
6025
  protected readonly resolvedVariant: import("@angular/core").Signal<"spaced" | "joined">;
6021
- protected readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right" | "bottom" | "top">;
6026
+ protected readonly resolvedAlign: import("@angular/core").Signal<"left" | "top" | "bottom" | "center" | "right">;
6022
6027
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionButtonGroupComponent, never>;
6023
6028
  static ɵcmp: i0.ɵɵComponentDeclaration<SectionButtonGroupComponent, "m-section-button-group", never, {
6024
6029
  "vertical": {
@@ -6050,7 +6055,7 @@ export declare class SectionButtonGroupComponent extends ConfigComponent<Section
6050
6055
  }
6051
6056
  export declare class SectionFooterComponent {
6052
6057
  readonly sticky: import("@angular/core").InputSignal<boolean>;
6053
- readonly align: import("@angular/core").InputSignal<"center" | "left" | "right">;
6058
+ readonly align: import("@angular/core").InputSignal<"left" | "center" | "right">;
6054
6059
  readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
6055
6060
  readonly fullWidth: import("@angular/core").InputSignal<boolean>;
6056
6061
  private readonly isDesignMode;
@@ -6061,7 +6066,7 @@ export declare class SectionFooterComponent {
6061
6066
  protected readonly sidepanel: import("@angular/core").Signal<boolean>;
6062
6067
  protected readonly noBorder: import("@angular/core").Signal<boolean>;
6063
6068
  protected readonly resolvedMaxWidth: import("@angular/core").Signal<string | undefined>;
6064
- protected readonly boxAlign: import("@angular/core").Signal<"center" | "left" | "right">;
6069
+ protected readonly boxAlign: import("@angular/core").Signal<"left" | "center" | "right">;
6065
6070
  static ɵfac: i0.ɵɵFactoryDeclaration<SectionFooterComponent, never>;
6066
6071
  static ɵcmp: i0.ɵɵComponentDeclaration<SectionFooterComponent, "m-section-footer", never, {
6067
6072
  "sticky": {
@@ -7797,7 +7802,6 @@ export declare class TextInputComponent extends BaseTextInputComponent<TextOrNum
7797
7802
  touched: import("@angular/core").ModelSignal<boolean>;
7798
7803
  focused: import("@angular/core").InputSignal<boolean>;
7799
7804
  errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
7800
- showErrors: import("@angular/core").Signal<boolean>;
7801
7805
  readonly hideErrors: import("@angular/core").InputSignal<boolean>;
7802
7806
  protected readonly isNumber: import("@angular/core").Signal<boolean>;
7803
7807
  protected onInput(event: Event): void;
@@ -7863,7 +7867,6 @@ export declare class ClearableInputComponent extends BaseTextInputComponent {
7863
7867
  focused: import("@angular/core").InputSignal<boolean>;
7864
7868
  touched: import("@angular/core").ModelSignal<boolean>;
7865
7869
  errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
7866
- showErrors: import("@angular/core").Signal<boolean>;
7867
7870
  icon: import("@angular/core").InputSignal<string | undefined>;
7868
7871
  placeholder: import("@angular/core").InputSignal<string>;
7869
7872
  type: import("@angular/core").InputSignal<string>;
@@ -8124,7 +8127,6 @@ export declare class CheckboxInputComponent extends BaseCheckboxInputComponent i
8124
8127
  touched: ModelSignal<boolean>;
8125
8128
  focused: import("@angular/core").InputSignal<boolean>;
8126
8129
  errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
8127
- showErrors: import("@angular/core").Signal<boolean>;
8128
8130
  readonly optionValue: import("@angular/core").InputSignal<string | undefined>;
8129
8131
  readonly label: import("@angular/core").InputSignal<string | undefined>;
8130
8132
  readonly noTranslate: import("@angular/core").InputSignal<string | boolean | undefined>;
@@ -8432,7 +8434,7 @@ declare class DropdownBoxComponent {
8432
8434
  }
8433
8435
  /** The trigger both option Fields draw: a searchable text input and a chevron. */
8434
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";
8435
- declare const DROPDOWN_IMPORTS: (typeof ButtonComponent | typeof LabelComponent | typeof SelectorDirective | typeof TextOutputComponent | typeof TextInputComponent)[];
8437
+ declare const DROPDOWN_IMPORTS: (typeof LabelComponent | typeof TextOutputComponent | typeof TextInputComponent | typeof ButtonComponent | typeof SelectorDirective)[];
8436
8438
  /**
8437
8439
  * Everything a Dropdown and a Multiselect share: the options, the search, the
8438
8440
  * keyboard walk and the panel. What differs is only what the Field holds — one
@@ -8447,7 +8449,6 @@ declare abstract class BaseDropdownComponent extends BaseInputComponent<Dropdown
8447
8449
  touched: import("@angular/core").ModelSignal<boolean>;
8448
8450
  focused: import("@angular/core").InputSignal<boolean>;
8449
8451
  errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
8450
- showErrors: Signal<boolean>;
8451
8452
  readonly options: import("@angular/core").InputSignal<DropdownOption<DropdownValue>[] | Signal<DropdownOption<DropdownValue>[]> | undefined>;
8452
8453
  readonly dir: import("@angular/core").InputSignal<Direction$2 | undefined>;
8453
8454
  readonly toggle: import("@angular/core").ModelSignal<boolean>;
@@ -8616,7 +8617,7 @@ declare class ColorPickerBoxComponent implements AfterViewInit, OnDestroy {
8616
8617
  protected readonly _eyedropperConfig: import("@magmonium/one").Button;
8617
8618
  protected readonly _headerContextMenu: ContextMenu;
8618
8619
  protected readonly themeSwatches: import("@angular/core").Signal<{
8619
- key: "text" | "error" | "focus" | "mm" | "mmLite" | "mmDark" | "background" | "border" | "textSecondary" | "errorLight" | "warning" | "successLite" | "success" | "highlight" | "wealth";
8620
+ key: "error" | "focus" | "border" | "background" | "text" | "textSecondary" | "mm" | "mmLite" | "mmDark" | "errorLight" | "warning" | "successLite" | "success" | "highlight" | "wealth";
8620
8621
  color: string;
8621
8622
  }[]>;
8622
8623
  hue: import("@angular/core").WritableSignal<number>;
@@ -9185,7 +9186,6 @@ export declare class RatingInputComponent extends BaseInputComponent<RatingInput
9185
9186
  touched: import("@angular/core").ModelSignal<boolean>;
9186
9187
  focused: import("@angular/core").InputSignal<boolean>;
9187
9188
  errors: import("@angular/core").InputSignal<readonly WithOptionalFieldTree<ValidationError>[]>;
9188
- showErrors: import("@angular/core").Signal<boolean>;
9189
9189
  private readonly themeStore;
9190
9190
  protected readonly stars: number[];
9191
9191
  /** Selected-star fill; undefined leaves the stylesheet's gold in place. */
@@ -9361,7 +9361,7 @@ export declare class FileUploadInputComponent extends BaseInputComponent<FileUpl
9361
9361
  private readonly editorSize;
9362
9362
  private readonly maxSize;
9363
9363
  protected readonly isLocked: import("@angular/core").Signal<boolean>;
9364
- protected readonly dropZoneIconColor: import("@angular/core").Signal<"error" | "border" | "focus">;
9364
+ protected readonly dropZoneIconColor: import("@angular/core").Signal<"error" | "focus" | "border">;
9365
9365
  /** Object URLs of the previews on show, keyed by what the value holds. */
9366
9366
  private readonly previews;
9367
9367
  protected readonly heldFiles: import("@angular/core").Signal<HeldFile[]>;
@@ -9815,17 +9815,17 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
9815
9815
  protected readonly resolvesConfigAsset = false;
9816
9816
  readonly variant: import("@angular/core").InputSignal<string | undefined>;
9817
9817
  readonly maxWidth: import("@angular/core").InputSignal<string | undefined>;
9818
- readonly heightMode: import("@angular/core").InputSignal<"fixed" | "full" | undefined>;
9818
+ readonly heightMode: import("@angular/core").InputSignal<"full" | "fixed" | undefined>;
9819
9819
  readonly maxHeight: import("@angular/core").InputSignal<string | number | undefined>;
9820
9820
  readonly height: import("@angular/core").InputSignal<string | number | undefined>;
9821
- readonly align: import("@angular/core").InputSignal<"center" | "left" | "right" | undefined>;
9821
+ readonly align: import("@angular/core").InputSignal<"left" | "center" | "right" | undefined>;
9822
9822
  readonly padding: import("@angular/core").InputSignal<string | number | undefined>;
9823
9823
  readonly paddingX: import("@angular/core").InputSignal<string | number | undefined>;
9824
9824
  readonly paddingY: import("@angular/core").InputSignal<string | number | undefined>;
9825
9825
  readonly margin: import("@angular/core").InputSignal<string | number | undefined>;
9826
9826
  readonly marginX: import("@angular/core").InputSignal<string | number | undefined>;
9827
9827
  readonly marginY: import("@angular/core").InputSignal<string | number | undefined>;
9828
- readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | Size | undefined>;
9828
+ readonly size: import("@angular/core").InputSignal<Size | "sm" | "md" | "lg" | undefined>;
9829
9829
  readonly autofocus: import("@angular/core").InputSignal<boolean>;
9830
9830
  data: import("@angular/core").InputSignal<T | undefined>;
9831
9831
  readonly dataChange: import("@angular/core").OutputEmitterRef<T>;
@@ -9870,7 +9870,7 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
9870
9870
  protected readonly handleSubmit: (event: Event) => void;
9871
9871
  readonly resolvedSize: import("@angular/core").Signal<Size>;
9872
9872
  protected readonly sizeLength: import("@angular/core").Signal<string | null>;
9873
- readonly resolvedAlign: import("@angular/core").Signal<"center" | "left" | "right">;
9873
+ readonly resolvedAlign: import("@angular/core").Signal<"left" | "center" | "right">;
9874
9874
  readonly resolvedVariant: import("@angular/core").Signal<string | undefined>;
9875
9875
  readonly resolvedMaxWidth: import("@angular/core").Signal<string | number | undefined>;
9876
9876
  private readonly resolvedPadding;
@@ -9882,7 +9882,7 @@ export declare class SectionFormComponent<T extends object = Record<string, unkn
9882
9882
  readonly resolvedMinHeight: import("@angular/core").Signal<string | undefined>;
9883
9883
  readonly resolvedMinWidth: import("@angular/core").Signal<string | undefined>;
9884
9884
  readonly resolvedMaxHeight: import("@angular/core").Signal<string | number | undefined>;
9885
- readonly resolvedHeightMode: import("@angular/core").Signal<"fixed" | "full" | undefined>;
9885
+ readonly resolvedHeightMode: import("@angular/core").Signal<"full" | "fixed" | undefined>;
9886
9886
  readonly isFullHeight: import("@angular/core").Signal<boolean>;
9887
9887
  readonly cssMaxHeight: import("@angular/core").Signal<string | undefined>;
9888
9888
  constructor();
@@ -10552,7 +10552,7 @@ export declare class StepperComponent extends ConfigComponent<Stepper> {
10552
10552
  constructor();
10553
10553
  protected readonly isReadonly: import("@angular/core").Signal<boolean>;
10554
10554
  protected readonly stepperDisabled: import("@angular/core").Signal<boolean>;
10555
- protected readonly orientation: import("@angular/core").Signal<"compact" | "vertical">;
10555
+ protected readonly orientation: import("@angular/core").Signal<"vertical" | "compact">;
10556
10556
  protected readonly currentStepLabel: import("@angular/core").Signal<string>;
10557
10557
  protected readonly nextStepLabel: import("@angular/core").Signal<string>;
10558
10558
  protected readonly isLastStep: import("@angular/core").Signal<boolean>;
@@ -10736,7 +10736,7 @@ export declare class ComponentStepperComponent {
10736
10736
  components: import("@angular/core").InputSignal<Type<unknown>[]>;
10737
10737
  labels: import("@angular/core").InputSignal<string[] | undefined>;
10738
10738
  currentIndex: import("@angular/core").InputSignal<number>;
10739
- variant: import("@angular/core").InputSignal<"vertical" | "horizontal">;
10739
+ variant: import("@angular/core").InputSignal<"horizontal" | "vertical">;
10740
10740
  context: import("@angular/core").InputSignal<Record<string, unknown> | undefined>;
10741
10741
  readonly stepChange: import("@angular/core").OutputEmitterRef<number>;
10742
10742
  static ɵfac: i0.ɵɵFactoryDeclaration<ComponentStepperComponent, never>;
@@ -12161,7 +12161,7 @@ export declare class ScoreSetItemComponent {
12161
12161
  private readonly themeStore;
12162
12162
  protected readonly tipId: string;
12163
12163
  protected readonly tipDismissed: import("@angular/core").WritableSignal<boolean>;
12164
- protected readonly shape: import("@angular/core").Signal<"none" | "row" | "primary">;
12164
+ protected readonly shape: import("@angular/core").Signal<"primary" | "none" | "row">;
12165
12165
  protected readonly tone: import("@angular/core").Signal<string | null>;
12166
12166
  protected readonly model: import("@angular/core").Signal<{
12167
12167
  value: number | null;
@@ -12475,7 +12475,7 @@ export declare class PriceLadderComponent {
12475
12475
  protected readonly current: import("@angular/core").Signal<number | null>;
12476
12476
  /** The forecast point: a `forecast` mark, else the `target` input. */
12477
12477
  private readonly targetPoint;
12478
- protected readonly shownAs: import("@angular/core").Signal<"line" | "list">;
12478
+ protected readonly shownAs: import("@angular/core").Signal<"list" | "line">;
12479
12479
  /** Every drawable mark, the `current` and `forecast` stand-ins included. */
12480
12480
  private readonly everyMark;
12481
12481
  /** The reference levels drawn as ticks and labels. */
@@ -12818,7 +12818,7 @@ export declare class ScaleComponent {
12818
12818
  private readonly formatter;
12819
12819
  /** A value as text: a `percent` value is already in percent (12.5 → 12.5%). */
12820
12820
  readonly formatValue: (v: number) => string;
12821
- protected readonly shownAs: import("@angular/core").Signal<"vertical" | "horizontal">;
12821
+ protected readonly shownAs: import("@angular/core").Signal<"horizontal" | "vertical">;
12822
12822
  private readonly marks;
12823
12823
  protected readonly primary: import("@angular/core").Signal<Mark | null>;
12824
12824
  private readonly relations;
@@ -13569,7 +13569,7 @@ export type DocAiPhase = 'idle' | 'asking' | 'question' | 'outline' | 'writing'
13569
13569
  */
13570
13570
  export declare class DocEditorComponent implements ControlValueAccessor {
13571
13571
  protected readonly groups: readonly import("@magmonium/one").DocToolbarGroup[];
13572
- protected readonly icons: Record<"code" | "link" | "table" | "strike" | "list" | "bold" | "heading" | "italic" | "quote", string>;
13572
+ protected readonly icons: Record<"bold" | "italic" | "strike" | "heading" | "list" | "quote" | "link" | "code" | "table", string>;
13573
13573
  protected readonly docActionKey: typeof docActionKey;
13574
13574
  private readonly translate;
13575
13575
  protected readonly value: import("@angular/core").WritableSignal<string>;
@@ -15578,7 +15578,7 @@ export declare class ConfirmComponent {
15578
15578
  * every confirmation drawn before this.
15579
15579
  */
15580
15580
  params: import("@angular/core").InputSignal<Record<string, string>>;
15581
- type: import("@angular/core").InputSignal<"warning" | "success" | "info" | "danger">;
15581
+ type: import("@angular/core").InputSignal<"warning" | "success" | "danger" | "info">;
15582
15582
  /**
15583
15583
  * Whether the question can be refused. `yes` is an acknowledgement — the one
15584
15584
  * button commits and there is nothing else to press — and stays the default,
@@ -15595,7 +15595,7 @@ export declare class ConfirmComponent {
15595
15595
  cancelLabel: import("@angular/core").InputSignal<string>;
15596
15596
  protected readonly confirmText: import("@angular/core").Signal<string>;
15597
15597
  protected readonly cancelText: import("@angular/core").Signal<string>;
15598
- protected readonly accent: import("@angular/core").Signal<"error" | "mm" | "success" | "warning">;
15598
+ protected readonly accent: import("@angular/core").Signal<"error" | "warning" | "success" | "mm">;
15599
15599
  protected readonly iconName: import("@angular/core").Signal<"exclamation-triangle" | "info" | "trash" | "check-circle">;
15600
15600
  protected accept(): void;
15601
15601
  protected decline(): void;
@@ -1 +0,0 @@
1
- {"version":3,"file":"magmonium-one-base-dropdown-xhoyZ8I5.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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"}
@@ -1,183 +0,0 @@
1
- import { i as resolveSize } from "./magmonium-one-size-converter-BqkALIWA.mjs";
2
- import * as i0 from "@angular/core";
3
- import { Directive, ElementRef, computed, effect, inject, input, model } from "@angular/core";
4
- var BaseInputComponent = class BaseInputComponent {
5
- focused = input(false, ...ngDevMode ? [{ debugName: "focused" }] : /* istanbul ignore next */ []);
6
- errors = input([], ...ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []);
7
- config = input(...ngDevMode ? [void 0, { debugName: "config" }] : /* istanbul ignore next */ []);
8
- required = input(false, ...ngDevMode ? [{ debugName: "required" }] : /* istanbul ignore next */ []);
9
- disabled = input(false, ...ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []);
10
- invalid = input(false, ...ngDevMode ? [{ debugName: "invalid" }] : /* istanbul ignore next */ []);
11
- touched = model(false, ...ngDevMode ? [{ debugName: "touched" }] : /* istanbul ignore next */ []);
12
- readonly = input(false, ...ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []);
13
- elementRef = inject(ElementRef);
14
- applyConfigSize = effect(() => {
15
- const size = this.config()?.size;
16
- const el = this.elementRef.nativeElement;
17
- if (size) {
18
- const resolved = resolveSize(size);
19
- el.style.setProperty("--input-size", resolved);
20
- el.style.fontSize = resolved;
21
- } else {
22
- el.style.removeProperty("--input-size");
23
- el.style.removeProperty("font-size");
24
- }
25
- }, ...ngDevMode ? [{ debugName: "applyConfigSize" }] : /* istanbul ignore next */ []);
26
- showErrors = computed(() => (this.touched() === true || this.touched() + "" === "true") && (this.invalid() === true || this.invalid() + "" === "true"), ...ngDevMode ? [{ debugName: "showErrors" }] : /* istanbul ignore next */ []);
27
- static ɵfac = i0.ɵɵngDeclareFactory({
28
- minVersion: "12.0.0",
29
- version: "22.2.1",
30
- ngImport: i0,
31
- type: BaseInputComponent,
32
- deps: [],
33
- target: i0.ɵɵFactoryTarget.Directive
34
- });
35
- static ɵdir = i0.ɵɵngDeclareDirective({
36
- minVersion: "17.1.0",
37
- version: "22.2.1",
38
- type: BaseInputComponent,
39
- isStandalone: true,
40
- inputs: {
41
- focused: {
42
- classPropertyName: "focused",
43
- publicName: "focused",
44
- isSignal: true,
45
- isRequired: false,
46
- transformFunction: null
47
- },
48
- errors: {
49
- classPropertyName: "errors",
50
- publicName: "errors",
51
- isSignal: true,
52
- isRequired: false,
53
- transformFunction: null
54
- },
55
- config: {
56
- classPropertyName: "config",
57
- publicName: "config",
58
- isSignal: true,
59
- isRequired: false,
60
- transformFunction: null
61
- },
62
- required: {
63
- classPropertyName: "required",
64
- publicName: "required",
65
- isSignal: true,
66
- isRequired: false,
67
- transformFunction: null
68
- },
69
- disabled: {
70
- classPropertyName: "disabled",
71
- publicName: "disabled",
72
- isSignal: true,
73
- isRequired: false,
74
- transformFunction: null
75
- },
76
- invalid: {
77
- classPropertyName: "invalid",
78
- publicName: "invalid",
79
- isSignal: true,
80
- isRequired: false,
81
- transformFunction: null
82
- },
83
- touched: {
84
- classPropertyName: "touched",
85
- publicName: "touched",
86
- isSignal: true,
87
- isRequired: false,
88
- transformFunction: null
89
- },
90
- readonly: {
91
- classPropertyName: "readonly",
92
- publicName: "readonly",
93
- isSignal: true,
94
- isRequired: false,
95
- transformFunction: null
96
- }
97
- },
98
- outputs: { touched: "touchedChange" },
99
- ngImport: i0
100
- });
101
- };
102
- i0.ɵɵngDeclareClassMetadata({
103
- minVersion: "12.0.0",
104
- version: "22.2.1",
105
- ngImport: i0,
106
- type: BaseInputComponent,
107
- decorators: [{
108
- type: Directive,
109
- args: [{}]
110
- }],
111
- propDecorators: {
112
- focused: [{
113
- type: i0.Input,
114
- args: [{
115
- isSignal: true,
116
- alias: "focused",
117
- required: false
118
- }]
119
- }],
120
- errors: [{
121
- type: i0.Input,
122
- args: [{
123
- isSignal: true,
124
- alias: "errors",
125
- required: false
126
- }]
127
- }],
128
- config: [{
129
- type: i0.Input,
130
- args: [{
131
- isSignal: true,
132
- alias: "config",
133
- required: false
134
- }]
135
- }],
136
- required: [{
137
- type: i0.Input,
138
- args: [{
139
- isSignal: true,
140
- alias: "required",
141
- required: false
142
- }]
143
- }],
144
- disabled: [{
145
- type: i0.Input,
146
- args: [{
147
- isSignal: true,
148
- alias: "disabled",
149
- required: false
150
- }]
151
- }],
152
- invalid: [{
153
- type: i0.Input,
154
- args: [{
155
- isSignal: true,
156
- alias: "invalid",
157
- required: false
158
- }]
159
- }],
160
- touched: [{
161
- type: i0.Input,
162
- args: [{
163
- isSignal: true,
164
- alias: "touched",
165
- required: false
166
- }]
167
- }, {
168
- type: i0.Output,
169
- args: ["touchedChange"]
170
- }],
171
- readonly: [{
172
- type: i0.Input,
173
- args: [{
174
- isSignal: true,
175
- alias: "readonly",
176
- required: false
177
- }]
178
- }]
179
- }
180
- });
181
- export { BaseInputComponent as t };
182
-
183
- //# sourceMappingURL=magmonium-one-base-input-B92NOmxz.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"magmonium-one-base-input-B92NOmxz.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/lib/base-input.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n effect,\n inject,\n input,\n model,\n computed,\n InputSignal,\n ModelSignal,\n} from '@angular/core';\nimport { ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { Size } from '../../../enum/scaling/size';\nimport { Input } from '../model/input';\nimport { resolveSize } from '../../../functions/size/size-converter';\n\n@Directive({})\nexport class BaseInputComponent<T extends Input = Input> {\n public focused: InputSignal<boolean> = input<boolean>(false);\n public errors: InputSignal<readonly WithOptionalFieldTree<ValidationError>[]> =\n input<readonly WithOptionalFieldTree<ValidationError>[]>([]);\n public config: InputSignal<Partial<T> | undefined> = input<\n Partial<T> | undefined\n >();\n public required: InputSignal<boolean> = input<boolean>(false);\n public disabled: InputSignal<boolean> = input<boolean>(false);\n public invalid: InputSignal<boolean> = input<boolean>(false);\n public touched: ModelSignal<boolean> = model<boolean>(false);\n public readonly: InputSignal<boolean> = input<boolean>(false);\n\n protected readonly elementRef = inject(ElementRef);\n\n // SectionFormItem stamps Size onto config; inputs scale via CSS var\n // so size changes update without destroying the field. Uses CSS var because\n // host may have display: contents, but CSS vars still inherit to children.\n private readonly applyConfigSize = effect(() => {\n const configWithSize = this.config() as Partial<Input> & { size?: Size };\n const size = configWithSize?.size;\n const el = this.elementRef.nativeElement as HTMLElement;\n if (size) {\n const resolved = resolveSize(size);\n el.style.setProperty('--input-size', resolved);\n // Some input variants declare their own font-size on the rendered\n // control. Keep the actual input text synchronized with the size that\n // drives its geometry instead of relying only on inherited variables.\n el.style.fontSize = resolved;\n } else {\n el.style.removeProperty('--input-size');\n el.style.removeProperty('font-size');\n }\n });\n\n public showErrors = computed(() => \n (this.touched() === true || this.touched() + '' === 'true') && \n (this.invalid() === true || this.invalid() + '' === 'true')\n );\n}\n"],"mappings":";;;AAiBA,IAAa,qBAAb,MAAa,mBAAkB;CACtB,UAAgC,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACrD,SACL,MAAyD,CAAA,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CACvD,SAA8C,MAElD,GAAA,YAAA,CAAA,QAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;CACI,WAAiC,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACtD,WAAiC,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CACtD,UAAgC,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACrD,UAAgC,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;CACrD,WAAiC,MAAe,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,WAAA,CAAA,+BAAA,CAAA,CAAA;CAE1C,aAAa,OAAO,UAAU;CAKhC,kBAAkB,aAAY;EAE7C,MAAM,OADiB,KAAK,OACf,CAAA,EAAgB;EAC7B,MAAM,KAAK,KAAK,WAAW;EAC3B,IAAI,MAAM;GACR,MAAM,WAAW,YAAY,IAAI;GACjC,GAAG,MAAM,YAAY,gBAAgB,QAAQ;GAI7C,GAAG,MAAM,WAAW;EACtB,OAAO;GACL,GAAG,MAAM,eAAe,cAAc;GACtC,GAAG,MAAM,eAAe,WAAW;EACrC;CACF,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,kBAAA,CAAA,+BAAA,CAAA,CAAA;CAEK,aAAa,gBACjB,KAAK,QAAO,MAAO,QAAQ,KAAK,QAAO,IAAK,OAAO,YACnD,KAAK,QAAO,MAAO,QAAQ,KAAK,QAAO,IAAK,OAAO,SACrD,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;CAtCU,OAAA,OAAA,GAAA,mBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,UAAA;EAAA,MAAA;EAAkB,MAAA,CAAA;EAAA,QAAA,GAAA,gBAAA;CAAA,CAAA;CAAlB,OAAA,OAAA,GAAA,qBAAA;EAAA,YAAA;EAAA,SAAA;EAAA,MAAA;EAAkB,cAAA;EAAA,QAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,QAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,SAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;GAAA,UAAA;IAAA,mBAAA;IAAA,YAAA;IAAA,UAAA;IAAA,YAAA;IAAA,mBAAA;GAAA;EAAA;EAAA,SAAA,EAAA,SAAA,gBAAA;EAAA,UAAA;CAAA,CAAA;;AAAlB,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAkB,YAAA,CAAA;EAD9B,MAAA;EAAU,MAAA,CAAA,CAAA,CAAE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"magmonium-one-checkbox-BXNvtkzo.mjs","names":[],"sources":["../../../../libs/one/src/lib/shared/ui/input/lib/placed-checkbox.token.ts","../../../../libs/one/src/lib/shared/ui/input/ui/checkbox/checkbox.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\nimport { DropdownOption } from '../model/input';\n\n/**\n * An `m-checkbox` placed between a SectionFormItem's tags as one option of its\n * CheckboxGroup (libs/one ADR 0039). Provided by the checkbox itself so the\n * item can collect its children without importing the checkbox chunk it only\n * lazy-loads. `undefined` until the checkbox names a `value`.\n */\nexport type PlacedCheckbox = {\n readonly option: Signal<DropdownOption | undefined>;\n};\n\nexport const PLACED_CHECKBOX = new InjectionToken<PlacedCheckbox>(\n 'PLACED_CHECKBOX'\n);\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n model,\n ModelSignal,\n} from '@angular/core';\nimport { BaseCheckboxInputComponent } from './base-checkbox';\nimport { LabelComponent } from '../label';\nimport { TextOutputComponent } from '../../../text-output';\nimport { ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { DropdownOption, Input } from '../../model/input';\nimport {\n PLACED_CHECKBOX,\n PlacedCheckbox,\n} from '../../lib/placed-checkbox.token';\nimport { toAttrBool } from '../../../../functions/config/attribute-value';\n\n@Component({\n selector: 'm-checkbox',\n template: `\n @if (config(); as checkbox) {\n <div class=\"checkbox\">\n <input\n [checked]=\"checked()\"\n #inputElement\n [class.error]=\"showErrors()\"\n [disabled]=\"disabled()\"\n (change)=\"onChange($event)\"\n type=\"checkbox\"\n [id]=\"checkbox.name\"\n />\n @if (labelText(); as text) {\n <m-label\n [for]=\"checkbox.name\"\n [placeholder]=\"text\"\n [params]=\"checkbox.params\"\n [noTranslate]=\"isNoTranslate()\"\n [required]=\"required()\"\n [disabled]=\"disabled()\"\n />\n }\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 imports: [LabelComponent, TextOutputComponent],\n styleUrl: './checkbox.sass',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n { provide: PLACED_CHECKBOX, useExisting: CheckboxInputComponent },\n ],\n})\nexport class CheckboxInputComponent\n extends BaseCheckboxInputComponent\n implements PlacedCheckbox\n{\n public override value = undefined;\n public override checked = model<boolean>(false) as ModelSignal<boolean>;\n public override config = input<Partial<Input> | 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 // What a checkbox placed inside a CheckboxGroup's SectionFormItem says about\n // the option it stands for, written on its own tag (ADR 0010, ADR 0039).\n // `value` is the attribute because it is the option's value; the member is\n // named apart because FormCheckboxControl pins `value` itself to undefined —\n // a checkbox control's value is `checked`.\n /* eslint-disable @angular-eslint/no-input-rename */\n public readonly optionValue = input<string | undefined>(undefined, {\n alias: 'value',\n });\n /* eslint-enable @angular-eslint/no-input-rename */\n public readonly label = input<string | undefined>();\n public readonly noTranslate = input<boolean | string | undefined>();\n\n protected readonly labelText = computed(\n () => this.label() ?? this.config()?.label\n );\n protected readonly isNoTranslate = computed(\n () => toAttrBool(this.noTranslate()) === true\n );\n\n public readonly option = computed((): DropdownOption | undefined => {\n const value = this.optionValue();\n if (!value) return undefined;\n return {\n value,\n label: this.label() ?? value,\n disabled: this.disabled() || undefined,\n noTranslate: this.isNoTranslate() || undefined,\n };\n });\n\n protected onChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.setValue(target?.checked ?? false);\n }\n}\n"],"mappings":"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"}