@vsn-ux/ngx-gaia 0.9.4 → 0.9.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/DOCS.md CHANGED
@@ -328,6 +328,10 @@ Directive for connecting form controls to form field labels.
328
328
 
329
329
  - `aria-labelledby: string | null` - Override aria-labelledby attribute
330
330
 
331
+ ### Providers:
332
+
333
+ - `provideGaFormErrors(config: GaFormErrorsConfig)` - Configure global form error messages that display when no specific gaError directive template is provided
334
+
331
335
  ### Examples:
332
336
 
333
337
  Complete form field
@@ -362,6 +366,46 @@ Form control with custom labelling
362
366
  <input gaInput gaLabelledByFormField [(ngModel)]="value" />
363
367
  ```
364
368
 
369
+ Global error messages configuration
370
+
371
+ ```typescript
372
+ // Static configuration
373
+ provideGaFormErrors({
374
+ required: 'This field is required',
375
+ email: 'Please enter a valid email address',
376
+ minlength: 'Input is too short',
377
+ });
378
+
379
+ // Dynamic configuration with error data access
380
+ provideGaFormErrors({
381
+ required: 'This field is required',
382
+ minlength: (error) => `Minimum ${error.requiredLength} characters required`,
383
+ pattern: (error) =>
384
+ `Input format is invalid. Expected pattern: ${error.requiredPattern}`,
385
+ });
386
+
387
+ // Factory function with injection context access
388
+ provideGaFormErrors(() => {
389
+ const translateService = inject(MyTranslateService);
390
+ return {
391
+ required: translateService.get('errors.required'),
392
+ email: translateService.get('errors.email'),
393
+ };
394
+ });
395
+ ```
396
+
397
+ Global error override behavior
398
+
399
+ ```html
400
+ <ga-form-field>
401
+ <ga-label>Password</ga-label>
402
+ <input gaFormControl gaInput [(ngModel)]="password" required minlength="8" />
403
+ <!-- This custom template overrides the global 'required' error -->
404
+ <ng-template gaError="required">Password is required</ng-template>
405
+ <!-- The 'minlength' error will use the global message if configured -->
406
+ </ga-form-field>
407
+ ```
408
+
365
409
  ## Icon
366
410
 
367
411
  Icon component for displaying Lucide icons.
@@ -608,7 +608,7 @@ function injectNgControlState({ implicitChildNgControl, explicitNgControl, expli
608
608
  }
609
609
  const ngControl = explicitNgControl ??
610
610
  implicitChildNgControl?.() ??
611
- injector.get(NgControl, null, { self: true, optional: true });
611
+ injector.get(NgControl, null, { optional: true });
612
612
  if (ngControl?.control) {
613
613
  const updateStatuses = () => {
614
614
  ngControlErrors.set(ngControl.errors);
@@ -1254,6 +1254,7 @@ class GaFormFieldConnector {
1254
1254
  controlDisabled = signal(false);
1255
1255
  controlId = signal(null);
1256
1256
  labelId = signal(null);
1257
+ control = signal(null);
1257
1258
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormFieldConnector, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1258
1259
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormFieldConnector });
1259
1260
  }
@@ -2039,49 +2040,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
2039
2040
  }]
2040
2041
  }] });
2041
2042
 
2042
- const GA_FORM_FIELD_ID = new InjectionToken('ga-form-field-id');
2043
-
2044
- class GaFormControlDirective {
2045
- formFieldId = inject(GA_FORM_FIELD_ID, { optional: true });
2046
- ngControlInput = input(undefined, {
2047
- alias: 'gaFormControl',
2048
- });
2049
- explicitNgControl = computed(() => {
2050
- const ngControl = this.ngControlInput();
2051
- if (ngControl instanceof NgControl) {
2052
- return ngControl;
2053
- }
2054
- return null;
2055
- });
2056
- ngControlState = injectNgControlState({
2057
- explicitNgControl: this.explicitNgControl,
2058
- });
2059
- inError = this.ngControlState.inError;
2060
- errors = this.ngControlState.errors;
2061
- ariaErrorMessageId = computed(() => {
2062
- if (!this.formFieldId || !this.inError()) {
2063
- return null;
2064
- }
2065
- return `${this.formFieldId}-callout`;
2066
- });
2067
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2068
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.4", type: GaFormControlDirective, isStandalone: true, selector: "[gaFormControl]", inputs: { ngControlInput: { classPropertyName: "ngControlInput", publicName: "gaFormControl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-invalid": "inError() ? \"true\" : null", "attr.aria-errormessage": "ariaErrorMessageId()" } }, exportAs: ["gaFormControl"], ngImport: i0 });
2043
+ const GA_FORM_ERRORS = new InjectionToken('GA_FORM_ERRORS', { providedIn: 'root', factory: () => ({}) });
2044
+ /**
2045
+ * Provides global form error messages that can be used across the application.
2046
+ * These errors will be displayed when a form control has validation errors
2047
+ * but no specific gaError directive template is provided.
2048
+ *
2049
+ * @param config - Either a static record of error messages or a factory function
2050
+ * @returns EnvironmentProviders for configuring global form errors
2051
+ *
2052
+ * @example
2053
+ * ```ts
2054
+ * // Static configuration
2055
+ * provideGaFormErrors({
2056
+ * required: 'This field is required',
2057
+ * email: 'Please enter a valid email address',
2058
+ * minlength: 'Input is too short'
2059
+ * })
2060
+ *
2061
+ * // Dynamic configuration with functions that access error data
2062
+ * provideGaFormErrors({
2063
+ * required: 'This field is required',
2064
+ * minlength: (error) => `Minimum ${error.requiredLength} characters required`,
2065
+ * pattern: (error) => `Input format is invalid. Expected pattern: ${error.requiredPattern}`
2066
+ * })
2067
+ *
2068
+ * // Factory function for lazy evaluation
2069
+ * provideGaFormErrors(() => ({
2070
+ * required: translateService.get('errors.required'),
2071
+ * email: translateService.get('errors.email')
2072
+ * }))
2073
+ * ```
2074
+ */
2075
+ function provideGaFormErrors(config) {
2076
+ return makeEnvironmentProviders([
2077
+ typeof config === 'function'
2078
+ ? { provide: GA_FORM_ERRORS, useFactory: config }
2079
+ : { provide: GA_FORM_ERRORS, useValue: config },
2080
+ ]);
2069
2081
  }
2070
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormControlDirective, decorators: [{
2071
- type: Directive,
2072
- args: [{
2073
- exportAs: 'gaFormControl',
2074
- selector: '[gaFormControl]',
2075
- host: {
2076
- '[attr.aria-invalid]': 'inError() ? "true" : null',
2077
- '[attr.aria-errormessage]': 'ariaErrorMessageId()',
2078
- },
2079
- }]
2080
- }] });
2081
2082
 
2082
2083
  class GaFieldCalloutComponent {
2083
2084
  icons = { OctagonAlert };
2084
2085
  formField = inject(GaFormFieldComponent);
2086
+ globalErrors = inject(GA_FORM_ERRORS);
2085
2087
  id = this.formField.uniqueId + '-callout';
2086
2088
  shouldShowError = computed(() => {
2087
2089
  const formControl = this.formField.formControl();
@@ -2099,20 +2101,40 @@ class GaFieldCalloutComponent {
2099
2101
  .fieldErrors()
2100
2102
  .filter((err) => err.key());
2101
2103
  const controlErrorKeys = Object.keys(formControl.errors());
2102
- return registeredErrors
2104
+ const errors = [];
2105
+ // First, add errors that have matching gaError directives
2106
+ const registeredErrorKeys = new Set(registeredErrors.map((err) => err.key()));
2107
+ registeredErrors
2103
2108
  .filter((err) => controlErrorKeys.includes(err.key()))
2104
- .map((err) => {
2109
+ .forEach((err) => {
2105
2110
  const errorKey = err.key();
2106
- return {
2111
+ errors.push({
2107
2112
  key: errorKey,
2108
2113
  templateRef: err.templateRef,
2109
2114
  error: formControl.errors()[errorKey],
2110
- };
2115
+ });
2116
+ });
2117
+ // Then, add global errors for keys that don't have gaError directives
2118
+ controlErrorKeys
2119
+ .filter((key) => !registeredErrorKeys.has(key))
2120
+ .forEach((key) => {
2121
+ const errorMessage = this.globalErrors[key];
2122
+ if (errorMessage) {
2123
+ const message = typeof errorMessage === 'function'
2124
+ ? errorMessage(formControl.errors()[key])
2125
+ : errorMessage;
2126
+ errors.push({
2127
+ key,
2128
+ error: formControl.errors()[key],
2129
+ message,
2130
+ });
2131
+ }
2111
2132
  });
2133
+ return errors;
2112
2134
  });
2113
2135
  hasCallout = computed(() => !!this.formField.fieldInfo() || this.shouldShowError());
2114
2136
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFieldCalloutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2115
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: GaFieldCalloutComponent, isStandalone: true, selector: "ga-field-callout", host: { properties: { "attr.id": "id", "style.display": "hasCallout() ? null : \"none\"" }, classAttribute: "ga-form-field__info" }, ngImport: i0, template: "@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span\n ><ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />&nbsp;</span\n >\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2137
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: GaFieldCalloutComponent, isStandalone: true, selector: "ga-field-callout", host: { properties: { "attr.id": "id", "style.display": "hasCallout() ? null : \"none\"" }, classAttribute: "ga-form-field__info" }, ngImport: i0, template: "@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span>\n @if (error.templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />\n } @else {\n {{ error.message }}\n }\n @if (!last) {\n &nbsp;\n }\n </span>\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: GaIconModule }, { kind: "component", type: GaIconComponent, selector: "ga-icon", inputs: ["icon", "size", "color", "strokeWidth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2116
2138
  }
2117
2139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFieldCalloutComponent, decorators: [{
2118
2140
  type: Component,
@@ -2120,7 +2142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
2120
2142
  class: 'ga-form-field__info',
2121
2143
  '[attr.id]': 'id',
2122
2144
  '[style.display]': 'hasCallout() ? null : "none"',
2123
- }, template: "@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span\n ><ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />&nbsp;</span\n >\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n" }]
2145
+ }, template: "@if (shouldShowError()) {\n <ga-icon\n [icon]=\"icons.OctagonAlert\"\n class=\"ga-icon\"\n style=\"color: var(--ga-color-icon-error)\"\n size=\"16\"\n />\n <div>\n @for (error of overlappingErrors(); track error.key; let last = $last) {\n <span>\n @if (error.templateRef) {\n <ng-container\n [ngTemplateOutlet]=\"error.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: error.error }\"\n />\n } @else {\n {{ error.message }}\n }\n @if (!last) {\n &nbsp;\n }\n </span>\n }\n </div>\n} @else if (formField.fieldInfo()) {\n <ng-container [ngTemplateOutlet]=\"formField.fieldInfo()!.templateRef()\" />\n}\n" }]
2124
2146
  }] });
2125
2147
 
2126
2148
  class GaFieldInfoComponent {
@@ -2153,6 +2175,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
2153
2175
  }]
2154
2176
  }] });
2155
2177
 
2178
+ const GA_FORM_FIELD_ID = new InjectionToken('ga-form-field-id');
2179
+
2156
2180
  let nextUniqueId$6 = 0;
2157
2181
  class GaFormFieldComponent {
2158
2182
  uniqueId = inject(GA_FORM_FIELD_ID);
@@ -2164,9 +2188,7 @@ class GaFormFieldComponent {
2164
2188
  disabled = computed(() => {
2165
2189
  return this.disabledInput() ?? this.formFieldConnector.controlDisabled();
2166
2190
  });
2167
- formControl = contentChild(GaFormControlDirective, {
2168
- descendants: true,
2169
- });
2191
+ formControl = this.formFieldConnector.control.asReadonly();
2170
2192
  fieldInfo = contentChild(GaFieldInfoComponent);
2171
2193
  fieldErrors = contentChildren(GaFieldErrorDirective);
2172
2194
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -2176,7 +2198,7 @@ class GaFormFieldComponent {
2176
2198
  useFactory: () => `ga-form-field-${++nextUniqueId$6}`,
2177
2199
  },
2178
2200
  GaFormFieldConnector,
2179
- ], queries: [{ propertyName: "formControl", first: true, predicate: GaFormControlDirective, descendants: true, isSignal: true }, { propertyName: "fieldInfo", first: true, predicate: GaFieldInfoComponent, descendants: true, isSignal: true }, { propertyName: "fieldErrors", predicate: GaFieldErrorDirective, isSignal: true }], exportAs: ["gaFormField"], ngImport: i0, template: "<ng-content select=\"ga-label\" />\n<ng-content />\n<ga-field-callout />\n", dependencies: [{ kind: "component", type: GaFieldCalloutComponent, selector: "ga-field-callout" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2201
+ ], queries: [{ propertyName: "fieldInfo", first: true, predicate: GaFieldInfoComponent, descendants: true, isSignal: true }, { propertyName: "fieldErrors", predicate: GaFieldErrorDirective, isSignal: true }], exportAs: ["gaFormField"], ngImport: i0, template: "<ng-content select=\"ga-label\" />\n<ng-content />\n<ga-field-callout />\n", dependencies: [{ kind: "component", type: GaFieldCalloutComponent, selector: "ga-field-callout" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2180
2202
  }
2181
2203
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormFieldComponent, decorators: [{
2182
2204
  type: Component,
@@ -2638,6 +2660,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
2638
2660
  }, template: "<!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events -->\n<label\n [attr.id]=\"id()\"\n [attr.for]=\"controlId()\"\n class=\"ga-form-field__label\"\n [class.ga-form-field__label--defined]=\"!!definition()\"\n [class.ga-form-field__label--disabled]=\"formField.disabled()\"\n (click)=\"focusControl()\"\n [attr.tabindex]=\"definition() ? 0 : -1\"\n>\n <span\n class=\"ga-form-field__label-text\"\n [gaTooltip]=\"definition()\"\n gaTooltipPlacement=\"top-start\"\n ><ng-content\n /></span>\n @if (state()) {\n <span class=\"ga-form-field__label-state\">{{ state() }}</span>\n }\n</label>\n" }]
2639
2661
  }], ctorParameters: () => [] });
2640
2662
 
2663
+ class GaFormControlDirective {
2664
+ formFieldId = inject(GA_FORM_FIELD_ID, { optional: true });
2665
+ formFieldConnector = inject(GaFormFieldConnector, {
2666
+ optional: true,
2667
+ });
2668
+ ngControlInput = input(undefined, {
2669
+ alias: 'gaFormControl',
2670
+ });
2671
+ explicitNgControl = computed(() => {
2672
+ const ngControl = this.ngControlInput();
2673
+ if (ngControl instanceof NgControl) {
2674
+ return ngControl;
2675
+ }
2676
+ return null;
2677
+ });
2678
+ ngControlState = injectNgControlState({
2679
+ explicitNgControl: this.explicitNgControl,
2680
+ });
2681
+ inError = this.ngControlState.inError;
2682
+ errors = this.ngControlState.errors;
2683
+ ariaErrorMessageId = computed(() => {
2684
+ if (!this.formFieldId || !this.inError()) {
2685
+ return null;
2686
+ }
2687
+ return `${this.formFieldId}-callout`;
2688
+ });
2689
+ ngOnInit() {
2690
+ this.formFieldConnector?.control.set(this);
2691
+ }
2692
+ ngOnDestroy() {
2693
+ this.formFieldConnector?.control.set(null);
2694
+ }
2695
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormControlDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2696
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.4", type: GaFormControlDirective, isStandalone: true, selector: "[gaFormControl]", inputs: { ngControlInput: { classPropertyName: "ngControlInput", publicName: "gaFormControl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-invalid": "inError() ? \"true\" : null", "attr.aria-errormessage": "ariaErrorMessageId()" } }, exportAs: ["gaFormControl"], ngImport: i0 });
2697
+ }
2698
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: GaFormControlDirective, decorators: [{
2699
+ type: Directive,
2700
+ args: [{
2701
+ exportAs: 'gaFormControl',
2702
+ selector: '[gaFormControl]',
2703
+ host: {
2704
+ '[attr.aria-invalid]': 'inError() ? "true" : null',
2705
+ '[attr.aria-errormessage]': 'ariaErrorMessageId()',
2706
+ },
2707
+ }]
2708
+ }] });
2709
+
2641
2710
  class GaLabelledByFormFieldDirective {
2642
2711
  formFieldConnector = inject(GaFormFieldConnector, {
2643
2712
  optional: true,
@@ -4511,5 +4580,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
4511
4580
  * Generated bundle index. Do not edit.
4512
4581
  */
4513
4582
 
4514
- export { CHECKBOX_CONTROL_VALUE_ACCESSOR, DEFAULT_MODAL_OPTIONS, GA_ALERT_I18N_FACTORY, GA_BASE_FONT_SIZE, GA_BUTTON_I18N_FACTORY, GA_CHECKBOX_REQUIRED_VALIDATOR, GA_DATEPICKER_I18N_FACTORY, GA_DATEPICKER_PARSER_FORMATTER_FACTORY, GA_DATEPICKER_VALUE_ADAPTER_FACTORY, GA_DATE_PARSER_FORMATTER_CONFIG, GA_DEFAULT_DATEPICKER_FORMATS, GA_FORM_CONTROL_ADAPTER, GA_ICON_DEFAULT_SIZE, GA_MODAL_DATA, GA_MODAL_I18N_FACTORY, GA_SELECT_I18N_FACTORY, GA_SELECT_REQUIRED_VALIDATOR, GA_TOOLTIP_DEFAULT_OFFSET, GaAlertComponent, GaAlertI18n, GaAlertI18nDefault, GaAlertModule, GaAlertTitleActionsComponent, GaAlertTitleComponent, GaBadgeComponent, GaBadgeModule, GaButtonDirective, GaButtonI18n, GaButtonI18nDefault, GaButtonModule, GaCardComponent, GaCardModule, GaCheckboxComponent, GaCheckboxModule, GaCheckboxRequiredValidator, GaDatepickerComponent, GaDatepickerI18n, GaDatepickerI18nDefault, GaDatepickerInputDirective, GaDatepickerModule, GaDatepickerNativeUtcIsoValueAdapter, GaDatepickerNativeUtcValueAdapter, GaDatepickerParserFormatter, GaDatepickerParserFormatterDefault, GaDatepickerStructValueAdapter, GaDatepickerToggleComponent, GaDatepickerValueAdapter, GaFieldErrorDirective, GaFieldInfoComponent, GaFieldLabelComponent, GaFormControlDirective, GaFormControlErrorsDirective, GaFormFieldComponent, GaFormFieldConnector, GaFormFieldModule, GaIconButtonDirective, GaIconComponent, GaIconModule, GaInputComponent, GaInputDirective, GaInputModule, GaLabelledByFormFieldDirective, GaLinkDirective, GaLinkModule, GaMenuComponent, GaMenuItemComponent, GaMenuModule, GaMenuSeparatorComponent, GaMenuTitleComponent, GaMenuTriggerDirective, GaMenuTriggerIconComponent, GaModalActionsComponent, GaModalCloseDirective, GaModalComponent, GaModalContentComponent, GaModalDescriptionComponent, GaModalDescriptionDirective, GaModalHeaderComponent, GaModalI18n, GaModalI18nDefault, GaModalLabelDirective, GaModalModule, GaModalOptions, GaModalRef, GaModalService, GaModalTitleDirective, GaOptgroupComponent, GaOptionComponent, GaRadioButtonComponent, GaRadioGroupComponent, GaRadioModule, GaSegmentedControlButtonDirective, GaSegmentedControlComponent, GaSegmentedControlIconButtonComponent, GaSegmentedControlModule, GaSegmentedControlTextButtonComponent, GaSelectComponent, GaSelectDropdownComponent, GaSelectDropdownSpinnerComponent, GaSelectI18n, GaSelectI18nDefault, GaSelectModule, GaSelectRequiredValidator, GaSelectValueComponent, GaSpinnerComponent, GaSpinnerModule, GaSwitchComponent, GaSwitchModule, GaTextAreaDirective, GaTextAreaModule, GaTooltipComponent, GaTooltipDirective, GaTooltipModule, RADIO_CONTROL_VALUE_ACCESSOR, SWITCH_CONTROL_VALUE_ACCESSOR, compareStructs, extendGaDateParserFormatter, injectNgControlState, provideGaAlertI18n, provideGaBaseFontSize, provideGaButtonI18n, provideGaDatepickerI18n, provideGaDatepickerParserFormatter, provideGaDatepickerValueAdapter, provideGaModalI18n, provideGaModalOptions, provideGaSelectI18n };
4583
+ export { CHECKBOX_CONTROL_VALUE_ACCESSOR, DEFAULT_MODAL_OPTIONS, GA_ALERT_I18N_FACTORY, GA_BASE_FONT_SIZE, GA_BUTTON_I18N_FACTORY, GA_CHECKBOX_REQUIRED_VALIDATOR, GA_DATEPICKER_I18N_FACTORY, GA_DATEPICKER_PARSER_FORMATTER_FACTORY, GA_DATEPICKER_VALUE_ADAPTER_FACTORY, GA_DATE_PARSER_FORMATTER_CONFIG, GA_DEFAULT_DATEPICKER_FORMATS, GA_FORM_CONTROL_ADAPTER, GA_FORM_ERRORS, GA_ICON_DEFAULT_SIZE, GA_MODAL_DATA, GA_MODAL_I18N_FACTORY, GA_SELECT_I18N_FACTORY, GA_SELECT_REQUIRED_VALIDATOR, GA_TOOLTIP_DEFAULT_OFFSET, GaAlertComponent, GaAlertI18n, GaAlertI18nDefault, GaAlertModule, GaAlertTitleActionsComponent, GaAlertTitleComponent, GaBadgeComponent, GaBadgeModule, GaButtonDirective, GaButtonI18n, GaButtonI18nDefault, GaButtonModule, GaCardComponent, GaCardModule, GaCheckboxComponent, GaCheckboxModule, GaCheckboxRequiredValidator, GaDatepickerComponent, GaDatepickerI18n, GaDatepickerI18nDefault, GaDatepickerInputDirective, GaDatepickerModule, GaDatepickerNativeUtcIsoValueAdapter, GaDatepickerNativeUtcValueAdapter, GaDatepickerParserFormatter, GaDatepickerParserFormatterDefault, GaDatepickerStructValueAdapter, GaDatepickerToggleComponent, GaDatepickerValueAdapter, GaFieldErrorDirective, GaFieldInfoComponent, GaFieldLabelComponent, GaFormControlDirective, GaFormControlErrorsDirective, GaFormFieldComponent, GaFormFieldConnector, GaFormFieldModule, GaIconButtonDirective, GaIconComponent, GaIconModule, GaInputComponent, GaInputDirective, GaInputModule, GaLabelledByFormFieldDirective, GaLinkDirective, GaLinkModule, GaMenuComponent, GaMenuItemComponent, GaMenuModule, GaMenuSeparatorComponent, GaMenuTitleComponent, GaMenuTriggerDirective, GaMenuTriggerIconComponent, GaModalActionsComponent, GaModalCloseDirective, GaModalComponent, GaModalContentComponent, GaModalDescriptionComponent, GaModalDescriptionDirective, GaModalHeaderComponent, GaModalI18n, GaModalI18nDefault, GaModalLabelDirective, GaModalModule, GaModalOptions, GaModalRef, GaModalService, GaModalTitleDirective, GaOptgroupComponent, GaOptionComponent, GaRadioButtonComponent, GaRadioGroupComponent, GaRadioModule, GaSegmentedControlButtonDirective, GaSegmentedControlComponent, GaSegmentedControlIconButtonComponent, GaSegmentedControlModule, GaSegmentedControlTextButtonComponent, GaSelectComponent, GaSelectDropdownComponent, GaSelectDropdownSpinnerComponent, GaSelectI18n, GaSelectI18nDefault, GaSelectModule, GaSelectRequiredValidator, GaSelectValueComponent, GaSpinnerComponent, GaSpinnerModule, GaSwitchComponent, GaSwitchModule, GaTextAreaDirective, GaTextAreaModule, GaTooltipComponent, GaTooltipDirective, GaTooltipModule, RADIO_CONTROL_VALUE_ACCESSOR, SWITCH_CONTROL_VALUE_ACCESSOR, compareStructs, extendGaDateParserFormatter, injectNgControlState, provideGaAlertI18n, provideGaBaseFontSize, provideGaButtonI18n, provideGaDatepickerI18n, provideGaDatepickerParserFormatter, provideGaDatepickerValueAdapter, provideGaFormErrors, provideGaModalI18n, provideGaModalOptions, provideGaSelectI18n };
4515
4584
  //# sourceMappingURL=vsn-ux-ngx-gaia.mjs.map