@egose/shadcn-theme-ng-tw 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 (97) hide show
  1. package/README.md +1 -1
  2. package/alert/fesm2022/alert.mjs +1 -1
  3. package/autocomplete/fesm2022/autocomplete.mjs +1 -1
  4. package/button/fesm2022/button.mjs +3 -3
  5. package/checkbox/fesm2022/checkbox.mjs +6 -7
  6. package/checkbox/types/checkbox.d.ts +1 -1
  7. package/combobox/fesm2022/combobox.mjs +1 -1
  8. package/date-picker/README.md +15 -11
  9. package/date-picker/fesm2022/date-picker.mjs +148 -30
  10. package/date-picker/types/date-picker.d.ts +102 -9
  11. package/form-autocomplete/README.md +178 -0
  12. package/form-autocomplete/fesm2022/form-autocomplete.mjs +243 -0
  13. package/form-autocomplete/package.json +24 -0
  14. package/form-autocomplete/types/form-autocomplete.d.ts +81 -0
  15. package/form-checkbox/README.md +29 -18
  16. package/form-checkbox/fesm2022/form-checkbox.mjs +62 -22
  17. package/form-checkbox/types/form-checkbox.d.ts +43 -4
  18. package/form-combobox/README.md +203 -0
  19. package/form-combobox/fesm2022/form-combobox.mjs +305 -0
  20. package/form-combobox/package.json +24 -0
  21. package/form-combobox/types/form-combobox.d.ts +93 -0
  22. package/form-date-picker/README.md +49 -22
  23. package/form-date-picker/fesm2022/form-date-picker.mjs +100 -29
  24. package/form-date-picker/types/form-date-picker.d.ts +37 -1
  25. package/form-date-picker-multi/README.md +192 -0
  26. package/form-date-picker-multi/fesm2022/form-date-picker-multi.mjs +266 -0
  27. package/form-date-picker-multi/package.json +24 -0
  28. package/form-date-picker-multi/types/form-date-picker-multi.d.ts +78 -0
  29. package/form-date-range-picker/README.md +254 -0
  30. package/form-date-range-picker/fesm2022/form-date-range-picker.mjs +263 -0
  31. package/form-date-range-picker/package.json +24 -0
  32. package/form-date-range-picker/types/form-date-range-picker.d.ts +75 -0
  33. package/form-field/README.md +9 -0
  34. package/form-field/fesm2022/form-field.mjs +80 -5
  35. package/form-field/types/form-field.d.ts +50 -2
  36. package/form-field-simple/fesm2022/form-field-simple.mjs +15 -1
  37. package/form-field-simple/types/form-field-simple.d.ts +9 -2
  38. package/form-input-otp/README.md +195 -0
  39. package/form-input-otp/fesm2022/form-input-otp.mjs +226 -0
  40. package/form-input-otp/package.json +24 -0
  41. package/form-input-otp/types/form-input-otp.d.ts +78 -0
  42. package/form-month-year-picker/README.md +189 -0
  43. package/form-month-year-picker/fesm2022/form-month-year-picker.mjs +256 -0
  44. package/form-month-year-picker/package.json +24 -0
  45. package/form-month-year-picker/types/form-month-year-picker.d.ts +73 -0
  46. package/form-native-select/README.md +206 -0
  47. package/form-native-select/fesm2022/form-native-select.mjs +226 -0
  48. package/form-native-select/package.json +24 -0
  49. package/form-native-select/types/form-native-select.d.ts +77 -0
  50. package/form-phone-input/README.md +189 -0
  51. package/form-phone-input/fesm2022/form-phone-input.mjs +230 -0
  52. package/form-phone-input/package.json +24 -0
  53. package/form-phone-input/types/form-phone-input.d.ts +78 -0
  54. package/form-radio-group/README.md +199 -0
  55. package/form-radio-group/fesm2022/form-radio-group.mjs +238 -0
  56. package/form-radio-group/package.json +24 -0
  57. package/form-radio-group/types/form-radio-group.d.ts +83 -0
  58. package/form-searchable-multiselect/README.md +28 -17
  59. package/form-searchable-multiselect/fesm2022/form-searchable-multiselect.mjs +60 -24
  60. package/form-searchable-multiselect/types/form-searchable-multiselect.d.ts +39 -2
  61. package/form-select/README.md +30 -19
  62. package/form-select/fesm2022/form-select.mjs +65 -29
  63. package/form-select/types/form-select.d.ts +39 -2
  64. package/form-slider/README.md +183 -0
  65. package/form-slider/fesm2022/form-slider.mjs +218 -0
  66. package/form-slider/package.json +24 -0
  67. package/form-slider/types/form-slider.d.ts +80 -0
  68. package/form-switch/README.md +174 -0
  69. package/form-switch/fesm2022/form-switch.mjs +205 -0
  70. package/form-switch/package.json +24 -0
  71. package/form-switch/types/form-switch.d.ts +70 -0
  72. package/form-text-input/README.md +37 -26
  73. package/form-text-input/fesm2022/form-text-input.mjs +60 -24
  74. package/form-text-input/types/form-text-input.d.ts +39 -2
  75. package/form-textarea/README.md +33 -22
  76. package/form-textarea/fesm2022/form-textarea.mjs +60 -24
  77. package/form-textarea/types/form-textarea.d.ts +39 -2
  78. package/form-toggle/README.md +187 -0
  79. package/form-toggle/fesm2022/form-toggle.mjs +275 -0
  80. package/form-toggle/package.json +24 -0
  81. package/form-toggle/types/form-toggle.d.ts +100 -0
  82. package/form-toggle-group/README.md +177 -0
  83. package/form-toggle-group/fesm2022/form-toggle-group.mjs +243 -0
  84. package/form-toggle-group/package.json +24 -0
  85. package/form-toggle-group/types/form-toggle-group.d.ts +85 -0
  86. package/input-group/fesm2022/input-group.mjs +20 -10
  87. package/input-group/types/input-group.d.ts +4 -1
  88. package/native-select/fesm2022/native-select.mjs +18 -6
  89. package/native-select/types/native-select.d.ts +7 -2
  90. package/package.json +57 -1
  91. package/phone-input/README.md +114 -0
  92. package/phone-input/fesm2022/phone-input.mjs +191 -0
  93. package/phone-input/package.json +24 -0
  94. package/phone-input/types/phone-input.d.ts +67 -0
  95. package/sheet/fesm2022/sheet.mjs +1 -1
  96. package/switch/fesm2022/switch.mjs +7 -5
  97. package/switch/types/switch.d.ts +2 -1
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
 
@@ -68,7 +68,7 @@ const alertVariants = cva('tw:relative tw:w-full tw:items-start tw:gap-y-0.5 tw:
68
68
  class: 'tw:bg-dark/20 tw:text-dark tw:[&>[hlmAlertDescription]]:text-dark',
69
69
  },
70
70
  {
71
- variant: "tw:accent",
71
+ variant: 'accent',
72
72
  appearance: 'light',
73
73
  class: 'tw:bg-accent/20 tw:text-accent tw:[&>[hlmAlertDescription]]:text-accent',
74
74
  },
@@ -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,
@@ -132,17 +132,17 @@ const buttonVariants = cva([
132
132
  compoundVariants: Object.keys(toneTextClasses).flatMap((variant) => [
133
133
  {
134
134
  variant,
135
- appearance: ["tw:outline", "tw:outline-filled", 'ghost', 'link'],
135
+ appearance: ['outline', 'outline-filled', 'ghost', 'link'],
136
136
  class: toneTextClasses[variant],
137
137
  },
138
138
  {
139
139
  variant,
140
- appearance: ["tw:outline", "tw:outline-filled", 'ghost'],
140
+ appearance: ['outline', 'outline-filled', 'ghost'],
141
141
  class: outlineClasses[variant],
142
142
  },
143
143
  {
144
144
  variant,
145
- appearance: "tw:outline-filled",
145
+ appearance: 'outline-filled',
146
146
  class: outlineFilledClasses[variant],
147
147
  },
148
148
  ]),
@@ -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) {
@@ -77,7 +76,7 @@ class HlmCheckbox {
77
76
  [aria-label]="ariaLabel()"
78
77
  [aria-labelledby]="ariaLabelledby()"
79
78
  [aria-describedby]="ariaDescribedby()"
80
- (changed)="_handleChange()"
79
+ (checkedChange)="_handleCheckedChange($event)"
81
80
  (touched)="_onTouched?.()"
82
81
  >
83
82
  @if (checked()) {
@@ -104,7 +103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
104
103
  [aria-label]="ariaLabel()"
105
104
  [aria-labelledby]="ariaLabelledby()"
106
105
  [aria-describedby]="ariaDescribedby()"
107
- (changed)="_handleChange()"
106
+ (checkedChange)="_handleCheckedChange($event)"
108
107
  (touched)="_onTouched?.()"
109
108
  >
110
109
  @if (checked()) {
@@ -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;
@@ -264,7 +264,7 @@ class HlmComboboxInput {
264
264
  </hlm-input-group-addon>
265
265
 
266
266
  <ng-content />
267
- `, 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 });
267
+ `, 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 });
268
268
  }
269
269
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmComboboxInput, decorators: [{
270
270
  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-tw/input-group';
7
7
  import { HlmInputGroup, HlmInputGroupImports } from '@egose/shadcn-theme-ng-tw/input-group';
8
+ import { hlm, classes } from '@egose/shadcn-theme-ng-tw/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-tw/
16
17
  import { BrnOverlay } from '@spartan-ng/brain/overlay';
17
18
  import * as i1$2 from '@egose/shadcn-theme-ng-tw/button';
18
19
  import { HlmButtonImports } from '@egose/shadcn-theme-ng-tw/button';
19
- import { hlm } from '@egose/shadcn-theme-ng-tw/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 {
@@ -403,6 +433,22 @@ class HlmDatePickerInput extends BrnDateInput {
403
433
  ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
404
434
  ariaDescribedby = input(null, /* @ts-ignore */
405
435
  ...(ngDevMode ? [{ debugName: "ariaDescribedby" }] : /* istanbul ignore next */ []));
436
+ /** Native `name` attribute forwarded to the inner `<input>`. */
437
+ name = input(undefined, /* @ts-ignore */
438
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
439
+ /** Native `readonly` state forwarded to the inner `<input>`. */
440
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
441
+ /** Extra classes merged onto the host group container (over the `HlmInputGroup` base). */
442
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
443
+ /** Extra classes merged onto the inner `<input>` (over the input-group input base). */
444
+ inputClass = input('', /* @ts-ignore */
445
+ ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
446
+ $inputClass = computed(() => hlm(this.inputClass()), /* @ts-ignore */
447
+ ...(ngDevMode ? [{ debugName: "$inputClass" }] : /* istanbul ignore next */ []));
448
+ constructor() {
449
+ super();
450
+ classes(() => [this.userClass()]);
451
+ }
406
452
  /**
407
453
  * Parses input text into a date value. Return `null` for invalid
408
454
  * input - the picker's date is cleared while the text is preserved so
@@ -426,18 +472,21 @@ class HlmDatePickerInput extends BrnDateInput {
426
472
  formatInputValue(value) {
427
473
  return this.formatInputDate()(value);
428
474
  }
429
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDatePickerInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
430
- 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: `
475
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDatePickerInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
476
+ 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: `
431
477
  <input
432
478
  #input
433
479
  hlmInputGroupInput
434
480
  [value]="_inputValue()"
435
481
  [id]="inputId()"
482
+ [attr.name]="name()"
436
483
  [attr.aria-label]="ariaLabel()"
437
484
  [attr.aria-describedby]="ariaDescribedby()"
438
485
  [placeholder]="placeholder()"
486
+ [readonly]="readonly()"
439
487
  [disabled]="_disabled()"
440
488
  [forceInvalid]="forceInvalid()"
489
+ [class]="$inputClass()"
441
490
  (click)="_handleClick()"
442
491
  (keydown.arrowDown)="_open()"
443
492
  (keydown.enter)="_handleEnter($event)"
@@ -468,7 +517,7 @@ class HlmDatePickerInput extends BrnDateInput {
468
517
  <ng-icon name="lucideCalendar" />
469
518
  </button>
470
519
  </hlm-input-group-addon>
471
- `, 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 });
520
+ `, 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 });
472
521
  }
473
522
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDatePickerInput, decorators: [{
474
523
  type: Component,
@@ -484,11 +533,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
484
533
  hlmInputGroupInput
485
534
  [value]="_inputValue()"
486
535
  [id]="inputId()"
536
+ [attr.name]="name()"
487
537
  [attr.aria-label]="ariaLabel()"
488
538
  [attr.aria-describedby]="ariaDescribedby()"
489
539
  [placeholder]="placeholder()"
540
+ [readonly]="readonly()"
490
541
  [disabled]="_disabled()"
491
542
  [forceInvalid]="forceInvalid()"
543
+ [class]="$inputClass()"
492
544
  (click)="_handleClick()"
493
545
  (keydown.arrowDown)="_open()"
494
546
  (keydown.enter)="_handleEnter($event)"
@@ -521,7 +573,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
521
573
  </hlm-input-group-addon>
522
574
  `,
523
575
  }]
524
- }], 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 }] }] } });
576
+ }], 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 }] }] } });
525
577
 
526
578
  const HLM_DATE_PICKER_MUTLI_VALUE_ACCESSOR = {
527
579
  provide: NG_VALUE_ACCESSOR,
@@ -564,10 +616,12 @@ class HlmDatePickerMulti {
564
616
  ...(ngDevMode ? [{ debugName: "transformDates" }] : /* istanbul ignore next */ []));
565
617
  _popoverState = signal(null, /* @ts-ignore */
566
618
  ...(ngDevMode ? [{ debugName: "_popoverState" }] : /* istanbul ignore next */ []));
567
- _disabled = linkedSignal(this.disabled, /* @ts-ignore */
568
- ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
619
+ _formDisabled = signal(false, /* @ts-ignore */
620
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
569
621
  /** @internal The disabled state as a readonly signal */
570
- disabledState = this._disabled.asReadonly();
622
+ disabledState = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
623
+ ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
624
+ _disabled = this.disabledState;
571
625
  formattedDate = computed(() => {
572
626
  const dates = this._mutableDate();
573
627
  return dates ? this.formatDates()(dates) : undefined;
@@ -628,7 +682,7 @@ class HlmDatePickerMulti {
628
682
  this._onTouched = fn;
629
683
  }
630
684
  setDisabledState(isDisabled) {
631
- this._disabled.set(isDisabled);
685
+ this._formDisabled.set(isDisabled);
632
686
  }
633
687
  open() {
634
688
  this._popoverState.set('open');
@@ -846,6 +900,26 @@ function injectHlmDateRangePickerConfig() {
846
900
 
847
901
  class HlmDateRangeInput extends BrnDateInput {
848
902
  _config = injectHlmDateRangePickerConfig();
903
+ /** Native `name` attribute forwarded to the inner `<input>`. */
904
+ name = input(undefined, /* @ts-ignore */
905
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
906
+ /** Native `readonly` state forwarded to the inner `<input>`. */
907
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
908
+ ariaLabel = input(undefined, /* @ts-ignore */
909
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
910
+ ariaDescribedby = input(null, /* @ts-ignore */
911
+ ...(ngDevMode ? [{ debugName: "ariaDescribedby" }] : /* istanbul ignore next */ []));
912
+ /** Extra classes merged onto the host group container (over the `HlmInputGroup` base). */
913
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
914
+ /** Extra classes merged onto the inner `<input>` (over the input-group input base). */
915
+ inputClass = input('', /* @ts-ignore */
916
+ ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
917
+ $inputClass = computed(() => hlm(this.inputClass()), /* @ts-ignore */
918
+ ...(ngDevMode ? [{ debugName: "$inputClass" }] : /* istanbul ignore next */ []));
919
+ constructor() {
920
+ super();
921
+ classes(() => [this.userClass()]);
922
+ }
849
923
  /**
850
924
  * Parses input text into a date range. Return `null` for invalid
851
925
  * input - the picker's range is cleared while the text is preserved so
@@ -869,16 +943,21 @@ class HlmDateRangeInput extends BrnDateInput {
869
943
  formatInputValue(value) {
870
944
  return this.formatInputDates()(value);
871
945
  }
872
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateRangeInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
873
- 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: `
946
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateRangeInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
947
+ 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: `
874
948
  <input
875
949
  #input
876
950
  hlmInputGroupInput
877
951
  [value]="_inputValue()"
878
952
  [id]="inputId()"
953
+ [attr.name]="name()"
954
+ [attr.aria-label]="ariaLabel()"
955
+ [attr.aria-describedby]="ariaDescribedby()"
879
956
  [placeholder]="placeholder()"
957
+ [readonly]="readonly()"
880
958
  [disabled]="_disabled()"
881
959
  [forceInvalid]="forceInvalid()"
960
+ [class]="$inputClass()"
882
961
  (click)="_handleClick()"
883
962
  (keydown.arrowDown)="_open()"
884
963
  (keydown.enter)="_handleEnter($event)"
@@ -909,7 +988,7 @@ class HlmDateRangeInput extends BrnDateInput {
909
988
  <ng-icon name="lucideCalendar" />
910
989
  </button>
911
990
  </hlm-input-group-addon>
912
- `, 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 });
991
+ `, 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 });
913
992
  }
914
993
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmDateRangeInput, decorators: [{
915
994
  type: Component,
@@ -925,9 +1004,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
925
1004
  hlmInputGroupInput
926
1005
  [value]="_inputValue()"
927
1006
  [id]="inputId()"
1007
+ [attr.name]="name()"
1008
+ [attr.aria-label]="ariaLabel()"
1009
+ [attr.aria-describedby]="ariaDescribedby()"
928
1010
  [placeholder]="placeholder()"
1011
+ [readonly]="readonly()"
929
1012
  [disabled]="_disabled()"
930
1013
  [forceInvalid]="forceInvalid()"
1014
+ [class]="$inputClass()"
931
1015
  (click)="_handleClick()"
932
1016
  (keydown.arrowDown)="_open()"
933
1017
  (keydown.enter)="_handleEnter($event)"
@@ -960,7 +1044,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
960
1044
  </hlm-input-group-addon>
961
1045
  `,
962
1046
  }]
963
- }], propDecorators: { parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDates: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDates", required: false }] }] } });
1047
+ }], 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 }] }] } });
964
1048
 
965
1049
  const HLM_DATE_RANGE_PICKER_VALUE_ACCESSOR = {
966
1050
  provide: NG_VALUE_ACCESSOR,
@@ -1003,10 +1087,12 @@ class HlmDateRangePicker {
1003
1087
  ...(ngDevMode ? [{ debugName: "transformDates" }] : /* istanbul ignore next */ []));
1004
1088
  _popoverState = signal(null, /* @ts-ignore */
1005
1089
  ...(ngDevMode ? [{ debugName: "_popoverState" }] : /* istanbul ignore next */ []));
1006
- _disabled = linkedSignal(this.disabled, /* @ts-ignore */
1007
- ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
1090
+ _formDisabled = signal(false, /* @ts-ignore */
1091
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
1008
1092
  /** @internal The disabled state as a readonly signal */
1009
- disabledState = this._disabled.asReadonly();
1093
+ disabledState = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
1094
+ ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
1095
+ _disabled = this.disabledState;
1010
1096
  formattedDate = computed(() => {
1011
1097
  const start = this._start();
1012
1098
  const end = this._end();
@@ -1092,7 +1178,7 @@ class HlmDateRangePicker {
1092
1178
  this._onTouched = fn;
1093
1179
  }
1094
1180
  setDisabledState(isDisabled) {
1095
- this._disabled.set(isDisabled);
1181
+ this._formDisabled.set(isDisabled);
1096
1182
  }
1097
1183
  open() {
1098
1184
  this._popoverState.set('open');
@@ -1217,6 +1303,26 @@ function injectHlmMonthYearPickerConfig() {
1217
1303
 
1218
1304
  class HlmMonthYearInput extends BrnDateInput {
1219
1305
  _config = injectHlmMonthYearPickerConfig();
1306
+ /** Native `name` attribute forwarded to the inner `<input>`. */
1307
+ name = input(undefined, /* @ts-ignore */
1308
+ ...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
1309
+ /** Native `readonly` state forwarded to the inner `<input>`. */
1310
+ readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1311
+ ariaLabel = input(undefined, /* @ts-ignore */
1312
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
1313
+ ariaDescribedby = input(null, /* @ts-ignore */
1314
+ ...(ngDevMode ? [{ debugName: "ariaDescribedby" }] : /* istanbul ignore next */ []));
1315
+ /** Extra classes merged onto the host group container (over the `HlmInputGroup` base). */
1316
+ userClass = input('', { ...(ngDevMode ? { debugName: "userClass" } : /* istanbul ignore next */ {}), alias: 'class' });
1317
+ /** Extra classes merged onto the inner `<input>` (over the input-group input base). */
1318
+ inputClass = input('', /* @ts-ignore */
1319
+ ...(ngDevMode ? [{ debugName: "inputClass" }] : /* istanbul ignore next */ []));
1320
+ $inputClass = computed(() => hlm(this.inputClass()), /* @ts-ignore */
1321
+ ...(ngDevMode ? [{ debugName: "$inputClass" }] : /* istanbul ignore next */ []));
1322
+ constructor() {
1323
+ super();
1324
+ classes(() => [this.userClass()]);
1325
+ }
1220
1326
  /**
1221
1327
  * Parses input text into a date value. Return `null` for invalid
1222
1328
  * input - the picker's date is cleared while the text is preserved so
@@ -1240,16 +1346,21 @@ class HlmMonthYearInput extends BrnDateInput {
1240
1346
  formatInputValue(value) {
1241
1347
  return this.formatInputDate()(value);
1242
1348
  }
1243
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
1244
- 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: `
1349
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
1350
+ 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: `
1245
1351
  <input
1246
1352
  #input
1247
1353
  hlmInputGroupInput
1248
1354
  [value]="_inputValue()"
1249
1355
  [id]="inputId()"
1356
+ [attr.name]="name()"
1357
+ [attr.aria-label]="ariaLabel()"
1358
+ [attr.aria-describedby]="ariaDescribedby()"
1250
1359
  [placeholder]="placeholder()"
1360
+ [readonly]="readonly()"
1251
1361
  [disabled]="_disabled()"
1252
1362
  [forceInvalid]="forceInvalid()"
1363
+ [class]="$inputClass()"
1253
1364
  (click)="_handleClick()"
1254
1365
  (keydown.arrowDown)="_open()"
1255
1366
  (keydown.enter)="_handleEnter($event)"
@@ -1280,7 +1391,7 @@ class HlmMonthYearInput extends BrnDateInput {
1280
1391
  <ng-icon name="lucideCalendar" />
1281
1392
  </button>
1282
1393
  </hlm-input-group-addon>
1283
- `, 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 });
1394
+ `, 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 });
1284
1395
  }
1285
1396
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImport: i0, type: HlmMonthYearInput, decorators: [{
1286
1397
  type: Component,
@@ -1296,9 +1407,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
1296
1407
  hlmInputGroupInput
1297
1408
  [value]="_inputValue()"
1298
1409
  [id]="inputId()"
1410
+ [attr.name]="name()"
1411
+ [attr.aria-label]="ariaLabel()"
1412
+ [attr.aria-describedby]="ariaDescribedby()"
1299
1413
  [placeholder]="placeholder()"
1414
+ [readonly]="readonly()"
1300
1415
  [disabled]="_disabled()"
1301
1416
  [forceInvalid]="forceInvalid()"
1417
+ [class]="$inputClass()"
1302
1418
  (click)="_handleClick()"
1303
1419
  (keydown.arrowDown)="_open()"
1304
1420
  (keydown.enter)="_handleEnter($event)"
@@ -1331,7 +1447,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.3", ngImpor
1331
1447
  </hlm-input-group-addon>
1332
1448
  `,
1333
1449
  }]
1334
- }], propDecorators: { parseDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "parseDate", required: false }] }], formatInputDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "formatInputDate", required: false }] }] } });
1450
+ }], 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 }] }] } });
1335
1451
 
1336
1452
  const HLM_MONTH_YEAR_PICKER_VALUE_ACCESSOR = {
1337
1453
  provide: NG_VALUE_ACCESSOR,
@@ -1370,10 +1486,12 @@ class HlmMonthYearPicker {
1370
1486
  ...(ngDevMode ? [{ debugName: "transformDate" }] : /* istanbul ignore next */ []));
1371
1487
  _popoverState = signal(null, /* @ts-ignore */
1372
1488
  ...(ngDevMode ? [{ debugName: "_popoverState" }] : /* istanbul ignore next */ []));
1373
- _disabled = linkedSignal(this.disabled, /* @ts-ignore */
1374
- ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
1489
+ _formDisabled = signal(false, /* @ts-ignore */
1490
+ ...(ngDevMode ? [{ debugName: "_formDisabled" }] : /* istanbul ignore next */ []));
1375
1491
  /** @internal The disabled state as a readonly signal */
1376
- disabledState = this._disabled.asReadonly();
1492
+ disabledState = computed(() => this.disabled() || this._formDisabled(), /* @ts-ignore */
1493
+ ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
1494
+ _disabled = this.disabledState;
1377
1495
  formattedDate = computed(() => {
1378
1496
  const date = this._mutableDate();
1379
1497
  return date ? this.formatDate()(date) : undefined;
@@ -1430,7 +1548,7 @@ class HlmMonthYearPicker {
1430
1548
  this._onTouched?.();
1431
1549
  }
1432
1550
  setDisabledState(isDisabled) {
1433
- this._disabled.set(isDisabled);
1551
+ this._formDisabled.set(isDisabled);
1434
1552
  }
1435
1553
  open() {
1436
1554
  this._popoverState.set('open');