@egose/shadcn-theme-ng 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +1 -1
  2. package/autocomplete/fesm2022/autocomplete.mjs +1 -1
  3. package/checkbox/fesm2022/checkbox.mjs +6 -7
  4. package/checkbox/types/checkbox.d.ts +1 -1
  5. package/combobox/fesm2022/combobox.mjs +1 -1
  6. package/date-picker/README.md +15 -11
  7. package/date-picker/fesm2022/date-picker.mjs +148 -30
  8. package/date-picker/types/date-picker.d.ts +102 -9
  9. package/form-autocomplete/README.md +178 -0
  10. package/form-autocomplete/fesm2022/form-autocomplete.mjs +159 -0
  11. package/form-autocomplete/package.json +24 -0
  12. package/form-autocomplete/types/form-autocomplete.d.ts +81 -0
  13. package/form-checkbox/README.md +29 -18
  14. package/form-checkbox/fesm2022/form-checkbox.mjs +59 -17
  15. package/form-checkbox/types/form-checkbox.d.ts +43 -4
  16. package/form-combobox/README.md +203 -0
  17. package/form-combobox/fesm2022/form-combobox.mjs +181 -0
  18. package/form-combobox/package.json +24 -0
  19. package/form-combobox/types/form-combobox.d.ts +93 -0
  20. package/form-date-picker/README.md +49 -22
  21. package/form-date-picker/fesm2022/form-date-picker.mjs +74 -19
  22. package/form-date-picker/types/form-date-picker.d.ts +37 -1
  23. package/form-date-picker-multi/README.md +192 -0
  24. package/form-date-picker-multi/fesm2022/form-date-picker-multi.mjs +158 -0
  25. package/form-date-picker-multi/package.json +24 -0
  26. package/form-date-picker-multi/types/form-date-picker-multi.d.ts +78 -0
  27. package/form-date-range-picker/README.md +254 -0
  28. package/form-date-range-picker/fesm2022/form-date-range-picker.mjs +159 -0
  29. package/form-date-range-picker/package.json +24 -0
  30. package/form-date-range-picker/types/form-date-range-picker.d.ts +75 -0
  31. package/form-field/README.md +9 -0
  32. package/form-field/fesm2022/form-field.mjs +80 -5
  33. package/form-field/types/form-field.d.ts +50 -2
  34. package/form-field-simple/fesm2022/form-field-simple.mjs +15 -1
  35. package/form-field-simple/types/form-field-simple.d.ts +9 -2
  36. package/form-input-otp/README.md +195 -0
  37. package/form-input-otp/fesm2022/form-input-otp.mjs +140 -0
  38. package/form-input-otp/package.json +24 -0
  39. package/form-input-otp/types/form-input-otp.d.ts +78 -0
  40. package/form-month-year-picker/README.md +189 -0
  41. package/form-month-year-picker/fesm2022/form-month-year-picker.mjs +154 -0
  42. package/form-month-year-picker/package.json +24 -0
  43. package/form-month-year-picker/types/form-month-year-picker.d.ts +73 -0
  44. package/form-native-select/README.md +206 -0
  45. package/form-native-select/fesm2022/form-native-select.mjs +132 -0
  46. package/form-native-select/package.json +24 -0
  47. package/form-native-select/types/form-native-select.d.ts +77 -0
  48. package/form-phone-input/README.md +189 -0
  49. package/form-phone-input/fesm2022/form-phone-input.mjs +142 -0
  50. package/form-phone-input/package.json +24 -0
  51. package/form-phone-input/types/form-phone-input.d.ts +78 -0
  52. package/form-radio-group/README.md +199 -0
  53. package/form-radio-group/fesm2022/form-radio-group.mjs +140 -0
  54. package/form-radio-group/package.json +24 -0
  55. package/form-radio-group/types/form-radio-group.d.ts +83 -0
  56. package/form-searchable-multiselect/README.md +28 -17
  57. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +57 -19
  58. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +39 -2
  59. package/form-select/README.md +30 -19
  60. package/form-select/fesm2022/form-select.mjs +57 -19
  61. package/form-select/types/form-select.d.ts +39 -2
  62. package/form-slider/README.md +183 -0
  63. package/form-slider/fesm2022/form-slider.mjs +140 -0
  64. package/form-slider/package.json +24 -0
  65. package/form-slider/types/form-slider.d.ts +80 -0
  66. package/form-switch/README.md +174 -0
  67. package/form-switch/fesm2022/form-switch.mjs +129 -0
  68. package/form-switch/package.json +24 -0
  69. package/form-switch/types/form-switch.d.ts +70 -0
  70. package/form-text-input/README.md +37 -26
  71. package/form-text-input/fesm2022/form-text-input.mjs +57 -19
  72. package/form-text-input/types/form-text-input.d.ts +39 -2
  73. package/form-textarea/README.md +33 -22
  74. package/form-textarea/fesm2022/form-textarea.mjs +57 -19
  75. package/form-textarea/types/form-textarea.d.ts +39 -2
  76. package/form-toggle/README.md +187 -0
  77. package/form-toggle/fesm2022/form-toggle.mjs +193 -0
  78. package/form-toggle/package.json +24 -0
  79. package/form-toggle/types/form-toggle.d.ts +100 -0
  80. package/form-toggle-group/README.md +177 -0
  81. package/form-toggle-group/fesm2022/form-toggle-group.mjs +145 -0
  82. package/form-toggle-group/package.json +24 -0
  83. package/form-toggle-group/types/form-toggle-group.d.ts +85 -0
  84. package/input-group/fesm2022/input-group.mjs +19 -9
  85. package/input-group/types/input-group.d.ts +4 -1
  86. package/native-select/fesm2022/native-select.mjs +18 -6
  87. package/native-select/types/native-select.d.ts +7 -2
  88. package/package.json +57 -1
  89. package/phone-input/README.md +114 -0
  90. package/phone-input/fesm2022/phone-input.mjs +191 -0
  91. package/phone-input/package.json +24 -0
  92. package/phone-input/types/phone-input.d.ts +67 -0
  93. package/radio-group/types/radio-group.d.ts +1 -1
  94. package/switch/fesm2022/switch.mjs +7 -5
  95. package/switch/types/switch.d.ts +2 -1
  96. package/typography/types/typography.d.ts +8 -8
package/README.md CHANGED
@@ -138,7 +138,7 @@ Import by component name. Component `NameX` is reachable at `@egose/shadcn-theme
138
138
 
139
139
  <!-- BEGIN GENERATED SUBPATHS -->
140
140
 
141
- `accordion`, `alert`, `alert-dialog`, `aspect-ratio`, `autocomplete`, `avatar`, `badge`, `basic-alert`, `breadcrumb`, `button`, `button-group`, `calendar`, `card`, `carousel`, `checkbox`, `collapsible`, `combobox`, `command`, `confirmation-dialog`, `context-menu`, `date-picker`, `dialog`, `drawer`, `dropdown-menu`, `empty`, `field`, `form-checkbox`, `form-date-picker`, `form-field`, `form-field-simple`, `form-searchable-multiselect`, `form-select`, `form-text-input`, `form-textarea`, `hover-card`, `icon`, `input`, `input-group`, `input-otp`, `item`, `kbd`, `label`, `layout-simple`, `menu`, `menubar`, `native-select`, `navigation-menu`, `pagination`, `popover`, `progress`, `radio-group`, `resizable`, `scroll-area`, `searchable-multiselect`, `select`, `separator`, `sheet`, `sidebar`, `skeleton`, `slider`, `sonner`, `spinner`, `switch`, `table`, `tabs`, `textarea`, `toggle`, `toggle-group`, `tooltip`, `typography`, `utils`.
141
+ `accordion`, `alert`, `alert-dialog`, `aspect-ratio`, `autocomplete`, `avatar`, `badge`, `basic-alert`, `breadcrumb`, `button`, `button-group`, `calendar`, `card`, `carousel`, `checkbox`, `collapsible`, `combobox`, `command`, `confirmation-dialog`, `context-menu`, `date-picker`, `dialog`, `drawer`, `dropdown-menu`, `empty`, `field`, `form-autocomplete`, `form-checkbox`, `form-combobox`, `form-date-picker`, `form-date-picker-multi`, `form-date-range-picker`, `form-field`, `form-field-simple`, `form-input-otp`, `form-month-year-picker`, `form-native-select`, `form-phone-input`, `form-radio-group`, `form-searchable-multiselect`, `form-select`, `form-slider`, `form-switch`, `form-text-input`, `form-textarea`, `form-toggle`, `form-toggle-group`, `hover-card`, `icon`, `input`, `input-group`, `input-otp`, `item`, `kbd`, `label`, `layout-simple`, `menu`, `menubar`, `native-select`, `navigation-menu`, `pagination`, `phone-input`, `popover`, `progress`, `radio-group`, `resizable`, `scroll-area`, `searchable-multiselect`, `select`, `separator`, `sheet`, `sidebar`, `skeleton`, `slider`, `sonner`, `spinner`, `switch`, `table`, `tabs`, `textarea`, `toggle`, `toggle-group`, `tooltip`, `typography`, `utils`.
142
142
 
143
143
  <!-- END GENERATED SUBPATHS -->
144
144
 
@@ -146,7 +146,7 @@ class HlmAutocompleteInput {
146
146
  </hlm-input-group-addon>
147
147
  }
148
148
  <ng-content />
149
- `, isInline: true, dependencies: [{ kind: "directive", type: i2$1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i2$1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type"] }, { kind: "directive", type: i2$1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: BrnAutocompleteClear, selector: "[brnAutocompleteClear]" }, { kind: "directive", type: BrnAutocompleteInput, selector: "input[brnAutocompleteInput]", inputs: ["id", "aria-invalid", "forceInvalid"], exportAs: ["brnAutocompleteInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
149
+ `, isInline: true, dependencies: [{ kind: "directive", type: i2$1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i2$1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type", "class"] }, { kind: "directive", type: i2$1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: BrnAutocompleteClear, selector: "[brnAutocompleteClear]" }, { kind: "directive", type: BrnAutocompleteInput, selector: "input[brnAutocompleteInput]", inputs: ["id", "aria-invalid", "forceInvalid"], exportAs: ["brnAutocompleteInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
150
150
  }
151
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmAutocompleteInput, decorators: [{
152
152
  type: Component,
@@ -44,13 +44,12 @@ class HlmCheckbox {
44
44
  changed = output();
45
45
  _onChange;
46
46
  _onTouched;
47
- _handleChange() {
47
+ _handleCheckedChange(checked) {
48
48
  if (this.disabledState())
49
49
  return;
50
- const previousChecked = this.checked();
51
- this.checked.set(previousChecked === 'indeterminate' ? true : !previousChecked);
52
- this._onChange?.(!previousChecked);
53
- this.changed.emit(!previousChecked);
50
+ this.checked.set(checked);
51
+ this._onChange?.(checked);
52
+ this.changed.emit(checked);
54
53
  }
55
54
  /** CONTROL VALUE ACCESSOR */
56
55
  writeValue(value) {
@@ -66,14 +65,14 @@ class HlmCheckbox {
66
65
  this.formDisabled.set(isDisabled);
67
66
  }
68
67
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCheckbox, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmCheckbox, isStandalone: true, selector: "hlm-checkbox", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, wrapperDisabled: { classPropertyName: "wrapperDisabled", publicName: "wrapperDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", changed: "changed" }, host: { properties: { "attr.id": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null", "attr.data-disabled": "disabledState() ? \"\" : null" }, classAttribute: "contents peer" }, providers: [HLM_CHECKBOX_VALUE_ACCESSOR], ngImport: i0, template: "\n <brn-checkbox\n [id]=\"id()\"\n [name]=\"name()\"\n [class]=\"_computedClass()\"\n [checked]=\"checked()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [aria-label]=\"ariaLabel()\"\n [aria-labelledby]=\"ariaLabelledby()\"\n [aria-describedby]=\"ariaDescribedby()\"\n (changed)=\"_handleChange()\"\n (touched)=\"_onTouched?.()\"\n >\n @if (checked()) {\n <span class=\"flex items-center justify-center text-current transition-none\">\n <ng-icon hlm size=\"14px\" name=\"lucideCheck\" />\n </span>\n }\n </brn-checkbox>\n ", isInline: true, dependencies: [{ kind: "component", type: BrnCheckbox, selector: "brn-checkbox", inputs: ["checked", "indeterminate", "id", "name", "class", "hostStyles", "aria-label", "aria-labelledby", "aria-describedby", "required", "disabled", "forceInvalid"], outputs: ["checkedChange", "indeterminateChange", "touched"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }], viewProviders: [provideIcons({ lucideCheck })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
68
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmCheckbox, isStandalone: true, selector: "hlm-checkbox", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, wrapperDisabled: { classPropertyName: "wrapperDisabled", publicName: "wrapperDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", changed: "changed" }, host: { properties: { "attr.id": "null", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null", "attr.data-disabled": "disabledState() ? \"\" : null" }, classAttribute: "contents peer" }, providers: [HLM_CHECKBOX_VALUE_ACCESSOR], ngImport: i0, template: "\n <brn-checkbox\n [id]=\"id()\"\n [name]=\"name()\"\n [class]=\"_computedClass()\"\n [checked]=\"checked()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [aria-label]=\"ariaLabel()\"\n [aria-labelledby]=\"ariaLabelledby()\"\n [aria-describedby]=\"ariaDescribedby()\"\n (checkedChange)=\"_handleCheckedChange($event)\"\n (touched)=\"_onTouched?.()\"\n >\n @if (checked()) {\n <span class=\"flex items-center justify-center text-current transition-none\">\n <ng-icon hlm size=\"14px\" name=\"lucideCheck\" />\n </span>\n }\n </brn-checkbox>\n ", isInline: true, dependencies: [{ kind: "component", type: BrnCheckbox, selector: "brn-checkbox", inputs: ["checked", "indeterminate", "id", "name", "class", "hostStyles", "aria-label", "aria-labelledby", "aria-describedby", "required", "disabled", "forceInvalid"], outputs: ["checkedChange", "indeterminateChange", "touched"] }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: HlmIcon, selector: "ng-icon[hlm]", inputs: ["size"] }], viewProviders: [provideIcons({ lucideCheck })], changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
69
  }
71
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmCheckbox, decorators: [{
72
71
  type: Component,
73
72
  args: [{
74
73
  selector: 'hlm-checkbox',
75
74
  imports: [BrnCheckbox, NgIcon, HlmIcon],
76
- template: "\n <brn-checkbox\n [id]=\"id()\"\n [name]=\"name()\"\n [class]=\"_computedClass()\"\n [checked]=\"checked()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [aria-label]=\"ariaLabel()\"\n [aria-labelledby]=\"ariaLabelledby()\"\n [aria-describedby]=\"ariaDescribedby()\"\n (changed)=\"_handleChange()\"\n (touched)=\"_onTouched?.()\"\n >\n @if (checked()) {\n <span class=\"flex items-center justify-center text-current transition-none\">\n <ng-icon hlm size=\"14px\" name=\"lucideCheck\" />\n </span>\n }\n </brn-checkbox>\n ",
75
+ template: "\n <brn-checkbox\n [id]=\"id()\"\n [name]=\"name()\"\n [class]=\"_computedClass()\"\n [checked]=\"checked()\"\n [disabled]=\"disabledState()\"\n [required]=\"required()\"\n [aria-label]=\"ariaLabel()\"\n [aria-labelledby]=\"ariaLabelledby()\"\n [aria-describedby]=\"ariaDescribedby()\"\n (checkedChange)=\"_handleCheckedChange($event)\"\n (touched)=\"_onTouched?.()\"\n >\n @if (checked()) {\n <span class=\"flex items-center justify-center text-current transition-none\">\n <ng-icon hlm size=\"14px\" name=\"lucideCheck\" />\n </span>\n }\n </brn-checkbox>\n ",
77
76
  host: {
78
77
  class: 'contents peer',
79
78
  '[attr.id]': 'null',
@@ -35,7 +35,7 @@ declare class HlmCheckbox implements ControlValueAccessor {
35
35
  readonly changed: _angular_core.OutputEmitterRef<boolean>;
36
36
  protected _onChange?: ChangeFn<CheckboxValue>;
37
37
  protected _onTouched?: TouchFn;
38
- protected _handleChange(): void;
38
+ protected _handleCheckedChange(checked: boolean): void;
39
39
  /** CONTROL VALUE ACCESSOR */
40
40
  writeValue(value: CheckboxValue): void;
41
41
  registerOnChange(fn: ChangeFn<CheckboxValue>): void;
@@ -221,7 +221,7 @@ class HlmComboboxInput {
221
221
  classes(() => "w-auto");
222
222
  }
223
223
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmComboboxInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
224
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmComboboxInput, isStandalone: true, selector: "hlm-combobox-input", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, showTrigger: { classPropertyName: "showTrigger", publicName: "showTrigger", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, forceInvalid: { classPropertyName: "forceInvalid", publicName: "forceInvalid", isSignal: true, isRequired: false, transformFunction: null }, ariaInvalidOverride: { classPropertyName: "ariaInvalidOverride", publicName: "aria-invalid", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideChevronDown, lucideX })], hostDirectives: [{ directive: i1.BrnComboboxAnchor }, { directive: i2$1.HlmInputGroup }], ngImport: i0, template: "\n <input\n brnComboboxInput\n #comboboxInput=\"brnComboboxInput\"\n brnComboboxPopoverTrigger\n [closeOnTriggerClick]=\"false\"\n hlmInputGroupInput\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [forceInvalid]=\"forceInvalid()\"\n [aria-invalid]=\"ariaInvalidOverride()\"\n />\n\n <hlm-input-group-addon align=\"inline-end\">\n @if (showTrigger()) {\n <button\n brnComboboxPopoverTrigger\n hlmInputGroupButton\n data-slot=\"input-group-button\"\n [disabled]=\"comboboxInput.disabled()\"\n size=\"icon-xs\"\n variant=\"ghost\"\n class=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n >\n <ng-icon name=\"lucideChevronDown\" />\n </button>\n }\n\n @if (showClear()) {\n <button\n *brnComboboxClear\n hlmInputGroupButton\n data-slot=\"combobox-clear\"\n [disabled]=\"comboboxInput.disabled()\"\n size=\"icon-xs\"\n variant=\"ghost\"\n >\n <ng-icon name=\"lucideX\" />\n </button>\n }\n </hlm-input-group-addon>\n\n <ng-content />\n ", isInline: true, dependencies: [{ kind: "directive", type: i2$1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i2$1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type"] }, { kind: "directive", type: i2$1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i1.BrnComboboxClear, selector: "[brnComboboxClear]" }, { kind: "directive", type: i1.BrnComboboxInput, selector: "input[brnComboboxInput]", inputs: ["id", "aria-invalid", "forceInvalid"], exportAs: ["brnComboboxInput"] }, { kind: "directive", type: i1.BrnComboboxPopoverTrigger, selector: "[brnComboboxPopoverTrigger]", inputs: ["closeOnTriggerClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
224
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmComboboxInput, isStandalone: true, selector: "hlm-combobox-input", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, showTrigger: { classPropertyName: "showTrigger", publicName: "showTrigger", isSignal: true, isRequired: false, transformFunction: null }, showClear: { classPropertyName: "showClear", publicName: "showClear", isSignal: true, isRequired: false, transformFunction: null }, forceInvalid: { classPropertyName: "forceInvalid", publicName: "forceInvalid", isSignal: true, isRequired: false, transformFunction: null }, ariaInvalidOverride: { classPropertyName: "ariaInvalidOverride", publicName: "aria-invalid", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideChevronDown, lucideX })], hostDirectives: [{ directive: i1.BrnComboboxAnchor }, { directive: i2$1.HlmInputGroup }], ngImport: i0, template: "\n <input\n brnComboboxInput\n #comboboxInput=\"brnComboboxInput\"\n brnComboboxPopoverTrigger\n [closeOnTriggerClick]=\"false\"\n hlmInputGroupInput\n [id]=\"inputId()\"\n [placeholder]=\"placeholder()\"\n [forceInvalid]=\"forceInvalid()\"\n [aria-invalid]=\"ariaInvalidOverride()\"\n />\n\n <hlm-input-group-addon align=\"inline-end\">\n @if (showTrigger()) {\n <button\n brnComboboxPopoverTrigger\n hlmInputGroupButton\n data-slot=\"input-group-button\"\n [disabled]=\"comboboxInput.disabled()\"\n size=\"icon-xs\"\n variant=\"ghost\"\n class=\"group-has-data-[slot=combobox-clear]/input-group:hidden data-pressed:bg-transparent\"\n >\n <ng-icon name=\"lucideChevronDown\" />\n </button>\n }\n\n @if (showClear()) {\n <button\n *brnComboboxClear\n hlmInputGroupButton\n data-slot=\"combobox-clear\"\n [disabled]=\"comboboxInput.disabled()\"\n size=\"icon-xs\"\n variant=\"ghost\"\n >\n <ng-icon name=\"lucideX\" />\n </button>\n }\n </hlm-input-group-addon>\n\n <ng-content />\n ", isInline: true, dependencies: [{ kind: "directive", type: i2$1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i2$1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type", "class"] }, { kind: "directive", type: i2$1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }, { kind: "directive", type: i1.BrnComboboxClear, selector: "[brnComboboxClear]" }, { kind: "directive", type: i1.BrnComboboxInput, selector: "input[brnComboboxInput]", inputs: ["id", "aria-invalid", "forceInvalid"], exportAs: ["brnComboboxInput"] }, { kind: "directive", type: i1.BrnComboboxPopoverTrigger, selector: "[brnComboboxPopoverTrigger]", inputs: ["closeOnTriggerClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
225
225
  }
226
226
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmComboboxInput, decorators: [{
227
227
  type: Component,
@@ -234,7 +234,11 @@ Outputs/methods mirror `HlmDatePicker` (`dateChange: T | null`, `updateDate`, `o
234
234
  | -------------------------------------- | ------------------------------------------------------------------------------- | --------------------------------- | ---------------------------------------------------------------------- |
235
235
  | `parseDate` | `(value: string) => T \| null` (or `T[] \| null` / `[T,T] \| null` per variant) | from matching `provideHlm*Config` | Return `null` for invalid text; picker clears while text is preserved. |
236
236
  | `formatInputDate` / `formatInputDates` | `(date) => string` | from config | Edit format shown while focused. |
237
- | `ariaLabel` / `ariaDescribedby` | `string` | — | Only on `HlmDatePickerInput`. |
237
+ | `ariaLabel` / `ariaDescribedby` | `string` | — | Accessible labelling for the inner `<input>`. |
238
+ | `name` | `string \| undefined` | — | Native `name` forwarded to the inner `<input>`. |
239
+ | `readonly` | `boolean` | `false` | Native `readonly` forwarded to the inner `<input>`. |
240
+ | `class` | `ClassValue` | `''` | Extra classes on the host group container. |
241
+ | `inputClass` | `ClassValue` | `''` | Extra classes on the inner `<input>` (e.g. text size). |
238
242
 
239
243
  ### `HlmDatePickerTrigger` — `hlm-date-picker-trigger`
240
244
 
@@ -256,16 +260,16 @@ Button trigger showing the formatted date or projected placeholder.
256
260
 
257
261
  ### Config tokens
258
262
 
259
- | Symbol | Description |
260
- | --------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
261
- | `HlmDatePickerConfig<T>` | `{ autoCloseOnSelect, formatDate, formatInputDate, transformDate, parseDate }`. Default parse: `new Date(value)`, `null` when invalid. |
262
- | `provideHlmDatePickerConfig<T>(partial)` / `injectHlmDatePickerConfig<T>()` | Provide / read the single-date config. |
263
- | `HlmDatePickerMultiConfig<T>` | `{ autoCloseOnMaxSelection, formatDates, formatInputDates, transformDates, parseDate }`. Default multi parse: comma-separated `DD/MM/YYYY`. |
264
- | `provideHlmDatePickerMultiConfig` / `injectHlmDatePickerMultiConfig` | Multi config DI. |
265
- | `HlmDateRangePickerConfig<T>` | `{ autoCloseOnEndSelection, formatDates, formatInputDates, transformDates, parseDate }`. Default range parse: `"a - b"` via `new Date(part)`. |
266
- | `provideHlmDateRangePickerConfig` / `injectHlmDateRangePickerConfig` | Range config DI. |
267
- | `HlmMonthYearPickerConfig<T>` | `{ autoCloseOnSelect, formatDate, formatInputDate, transformDate, parseDate }`. Default parse: `MM/YYYY`. |
268
- | `provideHlmMonthYearPickerConfig` / `injectHlmMonthYearPickerConfig` | Month/year config DI. |
263
+ | Symbol | Description |
264
+ | --------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
265
+ | `HlmDatePickerConfig<T>` | `{ autoCloseOnSelect, formatDate, formatInputDate, transformDate, parseDate }` plus optional global class defaults `{ labelClass?, pickerClass?, inputClass?, errorClass?, hintClass? }` (merged under per-instance `*Class` in `eg-form-date-picker`). Default parse: `new Date(value)`, `null` when invalid. |
266
+ | `provideHlmDatePickerConfig<T>(partial)` / `injectHlmDatePickerConfig<T>()` | Provide / read the single-date config. |
267
+ | `HlmDatePickerMultiConfig<T>` | `{ autoCloseOnMaxSelection, formatDates, formatInputDates, transformDates, parseDate }` plus the same optional class-default keys. Default multi parse: comma-separated `DD/MM/YYYY`. |
268
+ | `provideHlmDatePickerMultiConfig` / `injectHlmDatePickerMultiConfig` | Multi config DI. |
269
+ | `HlmDateRangePickerConfig<T>` | `{ autoCloseOnEndSelection, formatDates, formatInputDates, transformDates, parseDate }` plus the same optional class-default keys. Default range parse: `"a - b"` via `new Date(part)`. |
270
+ | `provideHlmDateRangePickerConfig` / `injectHlmDateRangePickerConfig` | Range config DI. |
271
+ | `HlmMonthYearPickerConfig<T>` | `{ autoCloseOnSelect, formatDate, formatInputDate, transformDate, parseDate }` plus the same optional class-default keys. Default parse: `MM/YYYY`. |
272
+ | `provideHlmMonthYearPickerConfig` / `injectHlmMonthYearPickerConfig` | Month/year config DI. |
269
273
 
270
274
  ## Examples
271
275
 
@@ -1,10 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, input, ChangeDetectionStrategy, Component, forwardRef, viewChild, contentChild, booleanAttribute, linkedSignal, signal, computed, output, ElementRef, effect, Directive, numberAttribute, untracked, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, input, booleanAttribute, computed, ChangeDetectionStrategy, Component, forwardRef, viewChild, contentChild, linkedSignal, signal, output, ElementRef, effect, Directive, numberAttribute, untracked, NgModule } from '@angular/core';
3
3
  import { NgIcon, provideIcons } from '@ng-icons/core';
4
4
  import { lucideX, lucideCalendar, lucideChevronDown } from '@ng-icons/lucide';
5
5
  import { BrnDateInput, provideBrnDatePickerTrigger, BrnDatePickerTriggerToken, provideBrnDatePicker, injectBrnDatePicker } from '@spartan-ng/brain/date-picker';
6
6
  import * as i1 from '@egose/shadcn-theme-ng/input-group';
7
7
  import { HlmInputGroup, HlmInputGroupImports } from '@egose/shadcn-theme-ng/input-group';
8
+ import { hlm, classes } from '@egose/shadcn-theme-ng/utils';
8
9
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
10
  import * as i1$1 from '@spartan-ng/brain/field';
10
11
  import { provideBrnLabelable, BrnFieldControl, BrnFieldControlDescribedBy } from '@spartan-ng/brain/field';
@@ -16,7 +17,6 @@ import { HlmPopoverImports, HlmPopoverTrigger } from '@egose/shadcn-theme-ng/pop
16
17
  import { BrnOverlay } from '@spartan-ng/brain/overlay';
17
18
  import * as i1$2 from '@egose/shadcn-theme-ng/button';
18
19
  import { HlmButtonImports } from '@egose/shadcn-theme-ng/button';
19
- import { hlm } from '@egose/shadcn-theme-ng/utils';
20
20
 
21
21
  function getDefaultConfig$3() {
22
22
  return {
@@ -70,6 +70,26 @@ function injectHlmDatePickerMultiConfig() {
70
70
 
71
71
  class HlmDateMultiInput extends BrnDateInput {
72
72
  _config = injectHlmDatePickerMultiConfig();
73
+ /** Native `name` attribute forwarded to the inner `<input>`. */
74
+ name = input(undefined, /* @ts-ignore */
75
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
76
+ /** Native `readonly` state forwarded to the inner `<input>`. */
77
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
78
+ ariaLabel = input(undefined, /* @ts-ignore */
79
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
80
+ ariaDescribedby = input(null, /* @ts-ignore */
81
+ ...(ngDevMode ? [{ debugName: "ariaDescribedby" }] : /* istanbul ignore next */ []));
82
+ /** Extra classes merged onto the host group container (over the `HlmInputGroup` base). */
83
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
84
+ /** Extra classes merged onto the inner `<input>` (over the input-group input base). */
85
+ inputClass = input('', /* @ts-ignore */
86
+ ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
87
+ $inputClass = computed(() => hlm(this.inputClass()), /* @ts-ignore */
88
+ ...(ngDevMode ? [{ debugName: "$inputClass" }] : /* istanbul ignore next */ []));
89
+ constructor() {
90
+ super();
91
+ classes(() => [this.userClass()]);
92
+ }
73
93
  /**
74
94
  * Parses input text into dates. Return `null` for invalid input - the
75
95
  * picker's dates are cleared while the text is preserved so the user can
@@ -93,16 +113,21 @@ class HlmDateMultiInput extends BrnDateInput {
93
113
  formatInputValue(value) {
94
114
  return this.formatInputDates()(value);
95
115
  }
96
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateMultiInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
97
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmDateMultiInput, isStandalone: true, selector: "hlm-date-multi-input", inputs: { parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDates: { classPropertyName: "formatInputDates", publicName: "formatInputDates", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDateMultiInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
116
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateMultiInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
117
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmDateMultiInput, isStandalone: true, selector: "hlm-date-multi-input", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDates: { classPropertyName: "formatInputDates", publicName: "formatInputDates", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDateMultiInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
98
118
  <input
99
119
  #input
100
120
  hlmInputGroupInput
101
121
  [value]="_inputValue()"
102
122
  [id]="inputId()"
123
+ [attr.name]="name()"
124
+ [attr.aria-label]="ariaLabel()"
125
+ [attr.aria-describedby]="ariaDescribedby()"
103
126
  [placeholder]="placeholder()"
127
+ [readonly]="readonly()"
104
128
  [disabled]="_disabled()"
105
129
  [forceInvalid]="forceInvalid()"
130
+ [class]="$inputClass()"
106
131
  (click)="_handleClick()"
107
132
  (keydown.arrowDown)="_open()"
108
133
  (keydown.enter)="_handleEnter($event)"
@@ -133,7 +158,7 @@ class HlmDateMultiInput extends BrnDateInput {
133
158
  <ng-icon name="lucideCalendar" />
134
159
  </button>
135
160
  </hlm-input-group-addon>
136
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
161
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type", "class"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
137
162
  }
138
163
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateMultiInput, decorators: [{
139
164
  type: Component,
@@ -149,9 +174,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
149
174
  hlmInputGroupInput
150
175
  [value]="_inputValue()"
151
176
  [id]="inputId()"
177
+ [attr.name]="name()"
178
+ [attr.aria-label]="ariaLabel()"
179
+ [attr.aria-describedby]="ariaDescribedby()"
152
180
  [placeholder]="placeholder()"
181
+ [readonly]="readonly()"
153
182
  [disabled]="_disabled()"
154
183
  [forceInvalid]="forceInvalid()"
184
+ [class]="$inputClass()"
155
185
  (click)="_handleClick()"
156
186
  (keydown.arrowDown)="_open()"
157
187
  (keydown.enter)="_handleEnter($event)"
@@ -184,7 +214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
184
214
  </hlm-input-group-addon>
185
215
  `,
186
216
  }]
187
- }], propDecorators: { parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDates", required: false }] }] } });
217
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedby", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], inputClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputClass", required: false }] }], parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDates", required: false }] }] } });
188
218
 
189
219
  function getDefaultConfig$2() {
190
220
  return {
@@ -365,6 +395,22 @@ class HlmDatePickerInput extends BrnDateInput {
365
395
  ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
366
396
  ariaDescribedby = input(null, /* @ts-ignore */
367
397
  ...(ngDevMode ? [{ debugName: "ariaDescribedby" }] : /* istanbul ignore next */ []));
398
+ /** Native `name` attribute forwarded to the inner `<input>`. */
399
+ name = input(undefined, /* @ts-ignore */
400
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
401
+ /** Native `readonly` state forwarded to the inner `<input>`. */
402
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
403
+ /** Extra classes merged onto the host group container (over the `HlmInputGroup` base). */
404
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
405
+ /** Extra classes merged onto the inner `<input>` (over the input-group input base). */
406
+ inputClass = input('', /* @ts-ignore */
407
+ ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
408
+ $inputClass = computed(() => hlm(this.inputClass()), /* @ts-ignore */
409
+ ...(ngDevMode ? [{ debugName: "$inputClass" }] : /* istanbul ignore next */ []));
410
+ constructor() {
411
+ super();
412
+ classes(() => [this.userClass()]);
413
+ }
368
414
  /**
369
415
  * Parses input text into a date value. Return `null` for invalid
370
416
  * input - the picker's date is cleared while the text is preserved so
@@ -388,18 +434,21 @@ class HlmDatePickerInput extends BrnDateInput {
388
434
  formatInputValue(value) {
389
435
  return this.formatInputDate()(value);
390
436
  }
391
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDatePickerInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
392
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmDatePickerInput, isStandalone: true, selector: "hlm-date-picker-input", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDate: { classPropertyName: "formatInputDate", publicName: "formatInputDate", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDatePickerInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
437
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDatePickerInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
438
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmDatePickerInput, isStandalone: true, selector: "hlm-date-picker-input", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDate: { classPropertyName: "formatInputDate", publicName: "formatInputDate", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDatePickerInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
393
439
  <input
394
440
  #input
395
441
  hlmInputGroupInput
396
442
  [value]="_inputValue()"
397
443
  [id]="inputId()"
444
+ [attr.name]="name()"
398
445
  [attr.aria-label]="ariaLabel()"
399
446
  [attr.aria-describedby]="ariaDescribedby()"
400
447
  [placeholder]="placeholder()"
448
+ [readonly]="readonly()"
401
449
  [disabled]="_disabled()"
402
450
  [forceInvalid]="forceInvalid()"
451
+ [class]="$inputClass()"
403
452
  (click)="_handleClick()"
404
453
  (keydown.arrowDown)="_open()"
405
454
  (keydown.enter)="_handleEnter($event)"
@@ -430,7 +479,7 @@ class HlmDatePickerInput extends BrnDateInput {
430
479
  <ng-icon name="lucideCalendar" />
431
480
  </button>
432
481
  </hlm-input-group-addon>
433
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
482
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type", "class"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
434
483
  }
435
484
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDatePickerInput, decorators: [{
436
485
  type: Component,
@@ -446,11 +495,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
446
495
  hlmInputGroupInput
447
496
  [value]="_inputValue()"
448
497
  [id]="inputId()"
498
+ [attr.name]="name()"
449
499
  [attr.aria-label]="ariaLabel()"
450
500
  [attr.aria-describedby]="ariaDescribedby()"
451
501
  [placeholder]="placeholder()"
502
+ [readonly]="readonly()"
452
503
  [disabled]="_disabled()"
453
504
  [forceInvalid]="forceInvalid()"
505
+ [class]="$inputClass()"
454
506
  (click)="_handleClick()"
455
507
  (keydown.arrowDown)="_open()"
456
508
  (keydown.enter)="_handleEnter($event)"
@@ -483,7 +535,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
483
535
  </hlm-input-group-addon>
484
536
  `,
485
537
  }]
486
- }], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedby", required: false }] }], parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDate", required: false }] }] } });
538
+ }], ctorParameters: () => [], propDecorators: { ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedby", required: false }] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], inputClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputClass", required: false }] }], parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDate", required: false }] }] } });
487
539
 
488
540
  const HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR = {
489
541
  provide: NG_VALUE_ACCESSOR,
@@ -526,10 +578,12 @@ class HlmDatePickerMulti {
526
578
  ...(ngDevMode ? [{ debugName: "transformDates" }] : /* istanbul ignore next */ []));
527
579
  _popoverState = signal(null, /* @ts-ignore */
528
580
  ...(ngDevMode ? [{ debugName: "_popoverState" }] : /* istanbul ignore next */ []));
529
- _disabled = linkedSignal(this.disabled, /* @ts-ignore */
530
- ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
581
+ _formDisabled = signal(false, /* @ts-ignore */
582
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
531
583
  /** @internal The disabled state as a readonly signal */
532
- disabledState = this._disabled.asReadonly();
584
+ disabledState = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
585
+ ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
586
+ _disabled = this.disabledState;
533
587
  formattedDate = computed(() => {
534
588
  const dates = this._mutableDate();
535
589
  return dates ? this.formatDates()(dates) : undefined;
@@ -590,7 +644,7 @@ class HlmDatePickerMulti {
590
644
  this._onTouched = fn;
591
645
  }
592
646
  setDisabledState(isDisabled) {
593
- this._disabled.set(isDisabled);
647
+ this._formDisabled.set(isDisabled);
594
648
  }
595
649
  open() {
596
650
  this._popoverState.set('open');
@@ -708,6 +762,26 @@ function injectHlmDateRangePickerConfig() {
708
762
 
709
763
  class HlmDateRangeInput extends BrnDateInput {
710
764
  _config = injectHlmDateRangePickerConfig();
765
+ /** Native `name` attribute forwarded to the inner `<input>`. */
766
+ name = input(undefined, /* @ts-ignore */
767
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
768
+ /** Native `readonly` state forwarded to the inner `<input>`. */
769
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
770
+ ariaLabel = input(undefined, /* @ts-ignore */
771
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
772
+ ariaDescribedby = input(null, /* @ts-ignore */
773
+ ...(ngDevMode ? [{ debugName: "ariaDescribedby" }] : /* istanbul ignore next */ []));
774
+ /** Extra classes merged onto the host group container (over the `HlmInputGroup` base). */
775
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
776
+ /** Extra classes merged onto the inner `<input>` (over the input-group input base). */
777
+ inputClass = input('', /* @ts-ignore */
778
+ ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
779
+ $inputClass = computed(() => hlm(this.inputClass()), /* @ts-ignore */
780
+ ...(ngDevMode ? [{ debugName: "$inputClass" }] : /* istanbul ignore next */ []));
781
+ constructor() {
782
+ super();
783
+ classes(() => [this.userClass()]);
784
+ }
711
785
  /**
712
786
  * Parses input text into a date range. Return `null` for invalid
713
787
  * input - the picker's range is cleared while the text is preserved so
@@ -731,16 +805,21 @@ class HlmDateRangeInput extends BrnDateInput {
731
805
  formatInputValue(value) {
732
806
  return this.formatInputDates()(value);
733
807
  }
734
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateRangeInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
735
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmDateRangeInput, isStandalone: true, selector: "hlm-date-range-input", inputs: { parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDates: { classPropertyName: "formatInputDates", publicName: "formatInputDates", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDateRangeInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
808
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateRangeInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
809
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmDateRangeInput, isStandalone: true, selector: "hlm-date-range-input", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDates: { classPropertyName: "formatInputDates", publicName: "formatInputDates", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmDateRangeInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
736
810
  <input
737
811
  #input
738
812
  hlmInputGroupInput
739
813
  [value]="_inputValue()"
740
814
  [id]="inputId()"
815
+ [attr.name]="name()"
816
+ [attr.aria-label]="ariaLabel()"
817
+ [attr.aria-describedby]="ariaDescribedby()"
741
818
  [placeholder]="placeholder()"
819
+ [readonly]="readonly()"
742
820
  [disabled]="_disabled()"
743
821
  [forceInvalid]="forceInvalid()"
822
+ [class]="$inputClass()"
744
823
  (click)="_handleClick()"
745
824
  (keydown.arrowDown)="_open()"
746
825
  (keydown.enter)="_handleEnter($event)"
@@ -771,7 +850,7 @@ class HlmDateRangeInput extends BrnDateInput {
771
850
  <ng-icon name="lucideCalendar" />
772
851
  </button>
773
852
  </hlm-input-group-addon>
774
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
853
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type", "class"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
775
854
  }
776
855
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateRangeInput, decorators: [{
777
856
  type: Component,
@@ -787,9 +866,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
787
866
  hlmInputGroupInput
788
867
  [value]="_inputValue()"
789
868
  [id]="inputId()"
869
+ [attr.name]="name()"
870
+ [attr.aria-label]="ariaLabel()"
871
+ [attr.aria-describedby]="ariaDescribedby()"
790
872
  [placeholder]="placeholder()"
873
+ [readonly]="readonly()"
791
874
  [disabled]="_disabled()"
792
875
  [forceInvalid]="forceInvalid()"
876
+ [class]="$inputClass()"
793
877
  (click)="_handleClick()"
794
878
  (keydown.arrowDown)="_open()"
795
879
  (keydown.enter)="_handleEnter($event)"
@@ -822,7 +906,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
822
906
  </hlm-input-group-addon>
823
907
  `,
824
908
  }]
825
- }], propDecorators: { parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDates", required: false }] }] } });
909
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedby", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], inputClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputClass", required: false }] }], parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDates", required: false }] }] } });
826
910
 
827
911
  const HLM_DATE_RANGE_PICKER_VALUE_ACCESSOR = {
828
912
  provide: NG_VALUE_ACCESSOR,
@@ -865,10 +949,12 @@ class HlmDateRangePicker {
865
949
  ...(ngDevMode ? [{ debugName: "transformDates" }] : /* istanbul ignore next */ []));
866
950
  _popoverState = signal(null, /* @ts-ignore */
867
951
  ...(ngDevMode ? [{ debugName: "_popoverState" }] : /* istanbul ignore next */ []));
868
- _disabled = linkedSignal(this.disabled, /* @ts-ignore */
869
- ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
952
+ _formDisabled = signal(false, /* @ts-ignore */
953
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
870
954
  /** @internal The disabled state as a readonly signal */
871
- disabledState = this._disabled.asReadonly();
955
+ disabledState = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
956
+ ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
957
+ _disabled = this.disabledState;
872
958
  formattedDate = computed(() => {
873
959
  const start = this._start();
874
960
  const end = this._end();
@@ -954,7 +1040,7 @@ class HlmDateRangePicker {
954
1040
  this._onTouched = fn;
955
1041
  }
956
1042
  setDisabledState(isDisabled) {
957
- this._disabled.set(isDisabled);
1043
+ this._formDisabled.set(isDisabled);
958
1044
  }
959
1045
  open() {
960
1046
  this._popoverState.set('open');
@@ -1039,6 +1125,26 @@ function injectHlmMonthYearPickerConfig() {
1039
1125
 
1040
1126
  class HlmMonthYearInput extends BrnDateInput {
1041
1127
  _config = injectHlmMonthYearPickerConfig();
1128
+ /** Native `name` attribute forwarded to the inner `<input>`. */
1129
+ name = input(undefined, /* @ts-ignore */
1130
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
1131
+ /** Native `readonly` state forwarded to the inner `<input>`. */
1132
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1133
+ ariaLabel = input(undefined, /* @ts-ignore */
1134
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
1135
+ ariaDescribedby = input(null, /* @ts-ignore */
1136
+ ...(ngDevMode ? [{ debugName: "ariaDescribedby" }] : /* istanbul ignore next */ []));
1137
+ /** Extra classes merged onto the host group container (over the `HlmInputGroup` base). */
1138
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
1139
+ /** Extra classes merged onto the inner `<input>` (over the input-group input base). */
1140
+ inputClass = input('', /* @ts-ignore */
1141
+ ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
1142
+ $inputClass = computed(() => hlm(this.inputClass()), /* @ts-ignore */
1143
+ ...(ngDevMode ? [{ debugName: "$inputClass" }] : /* istanbul ignore next */ []));
1144
+ constructor() {
1145
+ super();
1146
+ classes(() => [this.userClass()]);
1147
+ }
1042
1148
  /**
1043
1149
  * Parses input text into a date value. Return `null` for invalid
1044
1150
  * input - the picker's date is cleared while the text is preserved so
@@ -1062,16 +1168,21 @@ class HlmMonthYearInput extends BrnDateInput {
1062
1168
  formatInputValue(value) {
1063
1169
  return this.formatInputDate()(value);
1064
1170
  }
1065
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
1066
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmMonthYearInput, isStandalone: true, selector: "hlm-month-year-input", inputs: { parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDate: { classPropertyName: "formatInputDate", publicName: "formatInputDate", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmMonthYearInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
1171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
1172
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.3", type: HlmMonthYearInput, isStandalone: true, selector: "hlm-month-year-input", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, inputClass: { classPropertyName: "inputClass", publicName: "inputClass", isSignal: true, isRequired: false, transformFunction: null }, parseDate: { classPropertyName: "parseDate", publicName: "parseDate", isSignal: true, isRequired: false, transformFunction: null }, formatInputDate: { classPropertyName: "formatInputDate", publicName: "formatInputDate", isSignal: true, isRequired: false, transformFunction: null } }, providers: [provideIcons({ lucideCalendar, lucideX }), provideBrnDatePickerTrigger(HlmMonthYearInput)], usesInheritance: true, hostDirectives: [{ directive: i1.HlmInputGroup }], ngImport: i0, template: `
1067
1173
  <input
1068
1174
  #input
1069
1175
  hlmInputGroupInput
1070
1176
  [value]="_inputValue()"
1071
1177
  [id]="inputId()"
1178
+ [attr.name]="name()"
1179
+ [attr.aria-label]="ariaLabel()"
1180
+ [attr.aria-describedby]="ariaDescribedby()"
1072
1181
  [placeholder]="placeholder()"
1182
+ [readonly]="readonly()"
1073
1183
  [disabled]="_disabled()"
1074
1184
  [forceInvalid]="forceInvalid()"
1185
+ [class]="$inputClass()"
1075
1186
  (click)="_handleClick()"
1076
1187
  (keydown.arrowDown)="_open()"
1077
1188
  (keydown.enter)="_handleEnter($event)"
@@ -1102,7 +1213,7 @@ class HlmMonthYearInput extends BrnDateInput {
1102
1213
  <ng-icon name="lucideCalendar" />
1103
1214
  </button>
1104
1215
  </hlm-input-group-addon>
1105
- `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1216
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.HlmInputGroupAddon, selector: "[hlmInputGroupAddon],hlm-input-group-addon", inputs: ["align"] }, { kind: "directive", type: i1.HlmInputGroupButton, selector: "button[hlmInputGroupButton]", inputs: ["size", "type", "class"] }, { kind: "directive", type: i1.HlmInputGroupInput, selector: "input[hlmInputGroupInput]" }, { kind: "component", type: NgIcon, selector: "ng-icon", inputs: ["name", "svg", "size", "strokeWidth", "color"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1106
1217
  }
1107
1218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearInput, decorators: [{
1108
1219
  type: Component,
@@ -1118,9 +1229,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
1118
1229
  hlmInputGroupInput
1119
1230
  [value]="_inputValue()"
1120
1231
  [id]="inputId()"
1232
+ [attr.name]="name()"
1233
+ [attr.aria-label]="ariaLabel()"
1234
+ [attr.aria-describedby]="ariaDescribedby()"
1121
1235
  [placeholder]="placeholder()"
1236
+ [readonly]="readonly()"
1122
1237
  [disabled]="_disabled()"
1123
1238
  [forceInvalid]="forceInvalid()"
1239
+ [class]="$inputClass()"
1124
1240
  (click)="_handleClick()"
1125
1241
  (keydown.arrowDown)="_open()"
1126
1242
  (keydown.enter)="_handleEnter($event)"
@@ -1153,7 +1269,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
1153
1269
  </hlm-input-group-addon>
1154
1270
  `,
1155
1271
  }]
1156
- }], propDecorators: { parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDate", required: false }] }] } });
1272
+ }], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaDescribedby", required: false }] }], userClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], inputClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputClass", required: false }] }], parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDate", required: false }] }] } });
1157
1273
 
1158
1274
  const HLM_MONTH_YEAR_PICKER_VALUE_ACCESSOR = {
1159
1275
  provide: NG_VALUE_ACCESSOR,
@@ -1192,10 +1308,12 @@ class HlmMonthYearPicker {
1192
1308
  ...(ngDevMode ? [{ debugName: "transformDate" }] : /* istanbul ignore next */ []));
1193
1309
  _popoverState = signal(null, /* @ts-ignore */
1194
1310
  ...(ngDevMode ? [{ debugName: "_popoverState" }] : /* istanbul ignore next */ []));
1195
- _disabled = linkedSignal(this.disabled, /* @ts-ignore */
1196
- ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
1311
+ _formDisabled = signal(false, /* @ts-ignore */
1312
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
1197
1313
  /** @internal The disabled state as a readonly signal */
1198
- disabledState = this._disabled.asReadonly();
1314
+ disabledState = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
1315
+ ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
1316
+ _disabled = this.disabledState;
1199
1317
  formattedDate = computed(() => {
1200
1318
  const date = this._mutableDate();
1201
1319
  return date ? this.formatDate()(date) : undefined;
@@ -1252,7 +1370,7 @@ class HlmMonthYearPicker {
1252
1370
  this._onTouched?.();
1253
1371
  }
1254
1372
  setDisabledState(isDisabled) {
1255
- this._disabled.set(isDisabled);
1373
+ this._formDisabled.set(isDisabled);
1256
1374
  }
1257
1375
  open() {
1258
1376
  this._popoverState.set('open');