@daffodil/design 0.85.0 → 0.86.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 (60) hide show
  1. package/atoms/form/error-message/error-message.component.d.ts +6 -0
  2. package/atoms/form/form-field/form-field/form-field.component.d.ts +83 -13
  3. package/atoms/form/form-field/form-field-control.d.ts +2 -0
  4. package/atoms/form/form-field/form-field.d.ts +2 -1
  5. package/atoms/form/form-field/label/label.directive.d.ts +5 -0
  6. package/atoms/form/form-field/public_api.d.ts +1 -0
  7. package/atoms/form/form-label/form-label.directive.d.ts +3 -0
  8. package/atoms/form/hint/hint.component.d.ts +1 -1
  9. package/button/README.md +3 -3
  10. package/button/button/button-base.directive.d.ts +1 -2
  11. package/button/src/button/button-base.scss +0 -18
  12. package/core/compactable/compactable.directive.d.ts +3 -0
  13. package/core/openable/openable.directive.d.ts +1 -1
  14. package/core/selectable/selectable.directive.d.ts +3 -1
  15. package/core/sizable/sizable.directive.d.ts +2 -2
  16. package/core/skeletonable/public_api.d.ts +0 -1
  17. package/core/skeletonable/skeletonable.directive.d.ts +3 -0
  18. package/core/text-alignable/text-alignable.directive.d.ts +9 -5
  19. package/fesm2022/daffodil-design-article.mjs +2 -2
  20. package/fesm2022/daffodil-design-breadcrumb.mjs +2 -2
  21. package/fesm2022/daffodil-design-breadcrumb.mjs.map +1 -1
  22. package/fesm2022/daffodil-design-button-examples.mjs +12 -12
  23. package/fesm2022/daffodil-design-button-examples.mjs.map +1 -1
  24. package/fesm2022/daffodil-design-button.mjs +15 -39
  25. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  26. package/fesm2022/daffodil-design-image.mjs +2 -2
  27. package/fesm2022/daffodil-design-image.mjs.map +1 -1
  28. package/fesm2022/daffodil-design-input-examples.mjs +10 -10
  29. package/fesm2022/daffodil-design-input-examples.mjs.map +1 -1
  30. package/fesm2022/daffodil-design-input.mjs +48 -5
  31. package/fesm2022/daffodil-design-input.mjs.map +1 -1
  32. package/fesm2022/daffodil-design-media-gallery.mjs +2 -2
  33. package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
  34. package/fesm2022/daffodil-design-quantity-field-examples.mjs +4 -4
  35. package/fesm2022/daffodil-design-quantity-field-examples.mjs.map +1 -1
  36. package/fesm2022/daffodil-design-toast-examples.mjs +0 -59
  37. package/fesm2022/daffodil-design-toast-examples.mjs.map +1 -1
  38. package/fesm2022/daffodil-design-toast.mjs +52 -40
  39. package/fesm2022/daffodil-design-toast.mjs.map +1 -1
  40. package/fesm2022/daffodil-design.mjs +228 -98
  41. package/fesm2022/daffodil-design.mjs.map +1 -1
  42. package/input/input.component.d.ts +21 -5
  43. package/package.json +1 -1
  44. package/scss/state/skeleton/_mixins.scss +4 -1
  45. package/scss/theming/contrast/luminance/luminance.scss +3 -3
  46. package/src/atoms/form/form-field/form-field/form-field-theme.scss +7 -2
  47. package/toast/README.md +21 -1
  48. package/toast/examples/public_api.d.ts +1 -2
  49. package/toast/helpers/toast-position.d.ts +8 -0
  50. package/toast/interfaces/toast-options.d.ts +19 -0
  51. package/toast/interfaces/toast.d.ts +1 -1
  52. package/toast/public_api.d.ts +2 -2
  53. package/toast/service/position-strategy.d.ts +1 -1
  54. package/toast/service/position.service.d.ts +1 -1
  55. package/toast/service/toast.service.d.ts +1 -1
  56. package/toast/toast/toast-provider.d.ts +16 -4
  57. package/toast/toast/toast-template.component.d.ts +1 -1
  58. package/core/skeletonable/skeletonable.d.ts +0 -6
  59. package/toast/examples/toast-positions/toast-positions.component.d.ts +0 -20
  60. package/toast/options/daff-toast-options.d.ts +0 -14
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { HostBinding, Directive, Input, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule, HostListener, Optional, Self, EventEmitter, ElementRef, Output, ViewChild, ContentChildren, Injectable, InjectionToken, inject, PLATFORM_ID, Inject, makeEnvironmentProviders, provideAppInitializer, isDevMode } from '@angular/core';
2
+ import { HostBinding, Directive, Input, ChangeDetectionStrategy, Component, isDevMode, ContentChild, ViewEncapsulation, NgModule, HostListener, Optional, Self, EventEmitter, ElementRef, Output, ViewChild, ContentChildren, Injectable, InjectionToken, inject, PLATFORM_ID, Inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';
3
3
  import { BehaviorSubject, of, fromEventPattern, Subject, merge, fromEvent, EMPTY, combineLatest } from 'rxjs';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { CommonModule, isPlatformBrowser, DOCUMENT } from '@angular/common';
@@ -107,6 +107,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
107
107
  */
108
108
  class DaffSkeletonableDirective {
109
109
  constructor() {
110
+ /**
111
+ * Controls whether the component displays a skeleton loading state.
112
+ */
110
113
  this.skeleton = false;
111
114
  }
112
115
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffSkeletonableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -116,7 +119,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
116
119
  type: Directive,
117
120
  args: [{
118
121
  selector: '[daffSkeletonable]',
119
- standalone: true,
120
122
  }]
121
123
  }], propDecorators: { skeleton: [{
122
124
  type: Input
@@ -125,6 +127,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
125
127
  args: ['class.daff-skeleton']
126
128
  }] } });
127
129
 
130
+ class DaffErrorMessageComponent {
131
+ constructor() {
132
+ /**
133
+ * @docs-private
134
+ */
135
+ this.class = true;
136
+ /**
137
+ * @docs-private
138
+ *
139
+ * Sets the aria-live of an error message to polite.
140
+ */
141
+ this.ariaLive = 'polite';
142
+ }
143
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffErrorMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
144
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffErrorMessageComponent, isStandalone: true, selector: "daff-error-message", host: { properties: { "class.daff-error-message": "this.class", "attr.aria-live": "this.ariaLive" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block;font-size:.875rem;line-height:1rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
145
+ }
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffErrorMessageComponent, decorators: [{
147
+ type: Component,
148
+ args: [{ selector: 'daff-error-message', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;font-size:.875rem;line-height:1rem}\n"] }]
149
+ }], propDecorators: { class: [{
150
+ type: HostBinding,
151
+ args: ['class.daff-error-message']
152
+ }], ariaLive: [{
153
+ type: HostBinding,
154
+ args: ['attr.aria-live']
155
+ }] } });
156
+
157
+ /**
158
+ * @deprecated in favor of the {@link DaffFormFieldLabelDirective}. It will be removed in v1.0.0. Deprecated in version 0.86.0. Will be removed in version 0.89.0.
159
+ */
160
+ class DaffFormLabelDirective {
161
+ constructor() {
162
+ /**
163
+ * @docs-private
164
+ */
165
+ this.class = true;
166
+ }
167
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
168
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: DaffFormLabelDirective, isStandalone: true, selector: "[daffFormLabel]", host: { properties: { "class.daff-form-label": "this.class" } }, ngImport: i0 }); }
169
+ }
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormLabelDirective, decorators: [{
171
+ type: Directive,
172
+ args: [{
173
+ selector: '[daffFormLabel]',
174
+ }]
175
+ }], propDecorators: { class: [{
176
+ type: HostBinding,
177
+ args: ['class.daff-form-label']
178
+ }] } });
179
+
180
+ class DaffHintComponent {
181
+ constructor() {
182
+ /**
183
+ * @docs-private
184
+ */
185
+ this.class = true;
186
+ /**
187
+ * Displays a validated hint UI.
188
+ * */
189
+ this.validated = false;
190
+ }
191
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
192
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffHintComponent, isStandalone: true, selector: "daff-hint", inputs: { validated: "validated" }, host: { properties: { "class.daff-hint": "this.class", "class.validated": "this.validated" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:flex;gap:.25rem;font-size:.875rem;line-height:1rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
193
+ }
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffHintComponent, decorators: [{
195
+ type: Component,
196
+ args: [{ selector: 'daff-hint', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [":host{display:flex;gap:.25rem;font-size:.875rem;line-height:1rem}\n"] }]
197
+ }], propDecorators: { class: [{
198
+ type: HostBinding,
199
+ args: ['class.daff-hint']
200
+ }], validated: [{
201
+ type: Input
202
+ }, {
203
+ type: HostBinding,
204
+ args: ['class.validated']
205
+ }] } });
206
+
128
207
  /**
129
208
  *
130
209
  * The class that a form control must **implement** in order to be
@@ -143,6 +222,7 @@ class DaffFormFieldControl {
143
222
  ;
144
223
  constructor(ngControl) {
145
224
  this.ngControl = ngControl;
225
+ this.supportsAutoLabelling = true;
146
226
  this._stateChanges = new BehaviorSubject({
147
227
  focused: false,
148
228
  filled: false,
@@ -168,51 +248,93 @@ class DaffFormFieldControl {
168
248
 
169
249
  const DaffFormFieldMissingControlMessage = 'A DaffFormFieldComponent must contain a DaffFormFieldControl';
170
250
 
251
+ class DaffFormFieldLabelDirective {
252
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormFieldLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
253
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: DaffFormFieldLabelDirective, isStandalone: true, selector: "daff-form-label", ngImport: i0 }); }
254
+ }
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormFieldLabelDirective, decorators: [{
256
+ type: Directive,
257
+ args: [{
258
+ // eslint-disable-next-line @angular-eslint/directive-selector
259
+ selector: 'daff-form-label',
260
+ }]
261
+ }] });
262
+
263
+ let daffFormFieldId = 0;
171
264
  class DaffFormFieldComponent {
172
265
  /** @docs-private */
173
266
  get isSelectField() {
174
267
  return this._control.controlType === 'native-select';
175
268
  }
176
- /**
177
- * @docs-private
178
- */
179
- get errorClass() {
180
- return this.isError;
181
- }
182
- /**
183
- * @docs-private
184
- */
185
- get disabledClass() {
186
- return this.isDisabled;
187
- }
188
- /**
189
- * @docs-private
190
- */
191
- get validClass() {
192
- return this.isValid;
193
- }
194
269
  constructor(cd) {
195
270
  this.cd = cd;
196
271
  /** @docs-private */
197
272
  this.class = true;
198
273
  /**
274
+ * @docs-private
275
+ *
199
276
  * Tracking property to keep a record of whether or not the
200
277
  * form field should be marked as error.
201
278
  */
202
279
  this.isError = false;
203
280
  /**
281
+ * @docs-private
282
+ *
204
283
  * Tracking property to keep a record of whether or not the
205
284
  * form field contains any user input.
206
285
  */
207
286
  this.isFilled = false;
287
+ /**
288
+ * @docs-private
289
+ *
290
+ * Tracking property to keep a record of whether or not the
291
+ * form field should be marked as disabled.
292
+ */
208
293
  this.isDisabled = false;
209
294
  /**
295
+ * @docs-private
296
+ *
210
297
  * Tracking property to keep a record of whether or not the
211
298
  * form field should be marked as valid.
212
299
  */
213
300
  this.isValid = false;
301
+ /**
302
+ * The unique id of the form field. Defaults to an autogenerated value. When using this,
303
+ * it's your responsibility to ensure that the id for each form field is unique.
304
+ *
305
+ * It gets assigned to the `for` attribute on the `<label>` inside of the form field.
306
+ */
307
+ this.id = 'daff-form-field-' + ++daffFormFieldId;
308
+ /**
309
+ * @docs-private
310
+ */
311
+ this.hintId = this.id + '-hint';
312
+ /**
313
+ * @docs-private
314
+ */
315
+ this.errorMessageId = this.id + '-error';
214
316
  }
215
317
  /**
318
+ * @docs-private
319
+ */
320
+ get errorClass() {
321
+ return this.isError;
322
+ }
323
+ /**
324
+ * @docs-private
325
+ */
326
+ get disabledClass() {
327
+ return this.isDisabled;
328
+ }
329
+ /**
330
+ * @docs-private
331
+ */
332
+ get validClass() {
333
+ return this.isValid;
334
+ }
335
+ /**
336
+ * @docs-private
337
+ *
216
338
  * Determines whether or not the form field should display its focused state.
217
339
  */
218
340
  get isFocused() {
@@ -231,7 +353,46 @@ class DaffFormFieldComponent {
231
353
  return this._control?.raised || this.isFilled;
232
354
  }
233
355
  /**
234
- * Validate whether or not the FormField is in a "usable" state.
356
+ * @docs-private
357
+ */
358
+ hasHint() {
359
+ return this._hint ? true : false;
360
+ }
361
+ /**
362
+ * @docs-private
363
+ */
364
+ hasErrorMessage() {
365
+ return this._error ? true : false;
366
+ }
367
+ /**
368
+ * @docs-private
369
+ */
370
+ get autoLabelId() {
371
+ return this._control.supportsAutoLabelling ? this.id : null;
372
+ }
373
+ /**
374
+ * @docs-private
375
+ */
376
+ get customId() {
377
+ return this._control.supportsAutoLabelling ? null : this.id;
378
+ }
379
+ /**
380
+ * @docs-private
381
+ *
382
+ * Displays a console warning if the `DaffFormFieldLabelDirective` is not used on controls (native HTML control elements) that support auto-labelling.
383
+ */
384
+ ngAfterViewInit() {
385
+ if (isDevMode()) {
386
+ if (!this._formFieldLabelDirective && this._control.supportsAutoLabelling && !(this._control.id)) {
387
+ console.warn(`Accessibility Warning: The form field with id "${this.id}" uses a control that supports auto-labelling, but no <daff-form-label> component was found.\n\n` +
388
+ `1. Add a <daff-form-label> component (recommended)\n` +
389
+ `2. OR manually set an 'id' on your input and matching 'for' attribute on your <label>.\n\n` +
390
+ `Why this matters: Proper labelling ensures assistive technologies can identify form fields correctly.`);
391
+ }
392
+ }
393
+ }
394
+ /**
395
+ * Validates whether or not the form field is in a "usable" state.
235
396
  */
236
397
  _validateFormControl() {
237
398
  if (!this._control) {
@@ -239,11 +400,11 @@ class DaffFormFieldComponent {
239
400
  }
240
401
  }
241
402
  /**
242
- * Life cycle hook to verify that the form field has an acceptable
403
+ * @docs-private
404
+ *
405
+ * Lifecycle hook to verify that the form field has an acceptable
243
406
  * child control instance. Mostly useful for development-time
244
407
  * validation of usage.
245
- *
246
- * @docs-private
247
408
  */
248
409
  ngAfterContentInit() {
249
410
  this._validateFormControl();
@@ -256,17 +417,17 @@ class DaffFormFieldComponent {
256
417
  });
257
418
  }
258
419
  /**
259
- * Life cycle hook to verify that the form field has an acceptable
420
+ * @docs-private
421
+ *
422
+ * Lifecycle hook to verify that the form field has an acceptable
260
423
  * child control instance. Mostly useful for development-time
261
424
  * validation of usage.
262
- *
263
- * @docs-private
264
425
  */
265
426
  ngAfterContentChecked() {
266
427
  this._validateFormControl();
267
428
  }
268
429
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormFieldComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
269
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffFormFieldComponent, isStandalone: true, selector: "daff-form-field", host: { properties: { "class.daff-form-field": "this.class", "class.daff-error": "this.errorClass", "class.daff-disabled": "this.disabledClass", "class.daff-valid": "this.validClass", "class.daff-focused": "this.focusedClass", "class.daff-raised": "this.raisedClass" } }, queries: [{ propertyName: "_prefix", first: true, predicate: DaffPrefixDirective, descendants: true }, { propertyName: "_suffix", first: true, predicate: DaffSuffixDirective, descendants: true }, { propertyName: "_control", first: true, predicate: DaffFormFieldControl, descendants: true }], hostDirectives: [{ directive: DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "<div class=\"daff-form-field__control\">\n\t@if (_prefix) {\n\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t}\n\t<div class=\"daff-form-field__form-wrapper\">\n\t\t<ng-content select=\"label[daffFormLabel]\"></ng-content>\n\t\t<ng-content></ng-content>\n\t\t@if (isSelectField) {\n\t\t\t<div class=\"daff-form-field__icon\"></div>\n\t\t}\n\t</div>\n @if (_suffix) {\n\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t}\n</div>\n<ng-content select=\"daff-hint\"></ng-content>\n<ng-content select=\"daff-error-message\"></ng-content>", styles: [".daff-form-field{display:block;position:relative}.daff-form-field .daff-hint,.daff-form-field .daff-error-message{margin-top:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;position:relative;width:100%}.daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field__control input,.daff-form-field__control textarea,.daff-form-field__control select{font-size:1rem;line-height:1.5rem;padding:1rem}.daff-form-field__control .daff-form-label{position:absolute;left:1rem;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s}.daff-form-field__control .daff-form-label+input,.daff-form-field__control .daff-form-label+textarea,.daff-form-field__control .daff-form-label+select{padding:1.5rem 1rem .5rem}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field.daff-raised .daff-form-label{transform:translateY(-75%) scale(.75)}.daff-form-field.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__icon{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-form-field__form-wrapper{flex-grow:1;position:relative}.daff-form-field .daff-prefix{padding-left:1rem}.daff-form-field .daff-suffix{padding-right:1rem}.daff-form-field.daff-skeleton{display:flex;position:relative}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
430
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffFormFieldComponent, isStandalone: true, selector: "daff-form-field", inputs: { id: "id" }, host: { properties: { "class.daff-form-field": "this.class", "class.daff-error": "this.errorClass", "class.daff-disabled": "this.disabledClass", "class.daff-valid": "this.validClass", "class.daff-focused": "this.focusedClass", "class.daff-raised": "this.raisedClass" } }, queries: [{ propertyName: "_prefix", first: true, predicate: DaffPrefixDirective, descendants: true }, { propertyName: "_suffix", first: true, predicate: DaffSuffixDirective, descendants: true }, { propertyName: "_control", first: true, predicate: DaffFormFieldControl, descendants: true }, { propertyName: "_formLabelDirective", first: true, predicate: DaffFormLabelDirective, descendants: true }, { propertyName: "_formFieldLabelDirective", first: true, predicate: DaffFormFieldLabelDirective, descendants: true }, { propertyName: "_hint", first: true, predicate: DaffHintComponent, descendants: true }, { propertyName: "_error", first: true, predicate: DaffErrorMessageComponent, descendants: true }], hostDirectives: [{ directive: DaffSkeletonableDirective, inputs: ["skeleton", "skeleton"] }], ngImport: i0, template: "<div class=\"daff-form-field__control\">\n\t@if (_prefix) {\n\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t}\n\t<div class=\"daff-form-field__form-wrapper\">\n\t\t@if (_formLabelDirective) {\n\t\t\t<ng-content select=\"label[daffFormLabel]\"></ng-content>\n\t\t} @else if(_formFieldLabelDirective) {\n\t\t\t<label class=\"daff-form-field__label\"\n\t\t\t\t[attr.for]=\"autoLabelId\"\n\t\t\t\t[attr.id]=\"customId\">\n\t\t\t\t<ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t</label>\n\t\t} @else {\n\t\t\t<ng-content select=\"label\"></ng-content>\n\t\t}\n\t\t<ng-content></ng-content>\n\t\t@if (isSelectField) {\n\t\t\t<div class=\"daff-form-field__icon\"></div>\n\t\t}\n\t</div>\n @if (_suffix) {\n\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}", styles: [".daff-form-field{display:flex;flex-direction:column;gap:.25rem;position:relative}.daff-form-field__hint-wrapper,.daff-form-field__error-wrapper{display:flex;flex-direction:column;gap:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;position:relative;width:100%}.daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field input,.daff-form-field textarea,.daff-form-field select{font-size:1rem;line-height:1.5rem;padding:1rem}.daff-form-field label,.daff-form-field .daff-form-label,.daff-form-field__label{position:absolute;left:1rem;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s}.daff-form-field label+input,.daff-form-field label+textarea,.daff-form-field label+select,.daff-form-field .daff-form-label+input,.daff-form-field .daff-form-label+textarea,.daff-form-field .daff-form-label+select,.daff-form-field__label+input,.daff-form-field__label+textarea,.daff-form-field__label+select{padding:1.5rem 1rem .5rem}.daff-form-field.daff-raised label,.daff-form-field.daff-raised .daff-form-label,.daff-form-field.daff-raised .daff-form-field__label{transform:translateY(-75%) scale(.75)}.daff-form-field.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__icon{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-form-field__form-wrapper{flex-grow:1;position:relative;overflow:hidden}.daff-form-field .daff-prefix{padding-left:1rem}.daff-form-field .daff-suffix{padding-right:1rem}.daff-form-field.daff-skeleton{display:flex;position:relative;height:3.5rem;width:100%;border-radius:.25rem}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
270
431
  }
271
432
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormFieldComponent, decorators: [{
272
433
  type: Component,
@@ -275,7 +436,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
275
436
  directive: DaffSkeletonableDirective,
276
437
  inputs: ['skeleton'],
277
438
  },
278
- ], template: "<div class=\"daff-form-field__control\">\n\t@if (_prefix) {\n\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t}\n\t<div class=\"daff-form-field__form-wrapper\">\n\t\t<ng-content select=\"label[daffFormLabel]\"></ng-content>\n\t\t<ng-content></ng-content>\n\t\t@if (isSelectField) {\n\t\t\t<div class=\"daff-form-field__icon\"></div>\n\t\t}\n\t</div>\n @if (_suffix) {\n\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t}\n</div>\n<ng-content select=\"daff-hint\"></ng-content>\n<ng-content select=\"daff-error-message\"></ng-content>", styles: [".daff-form-field{display:block;position:relative}.daff-form-field .daff-hint,.daff-form-field .daff-error-message{margin-top:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;position:relative;width:100%}.daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field__control input,.daff-form-field__control textarea,.daff-form-field__control select{font-size:1rem;line-height:1.5rem;padding:1rem}.daff-form-field__control .daff-form-label{position:absolute;left:1rem;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s}.daff-form-field__control .daff-form-label+input,.daff-form-field__control .daff-form-label+textarea,.daff-form-field__control .daff-form-label+select{padding:1.5rem 1rem .5rem}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field.daff-raised .daff-form-label{transform:translateY(-75%) scale(.75)}.daff-form-field.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__icon{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-form-field__form-wrapper{flex-grow:1;position:relative}.daff-form-field .daff-prefix{padding-left:1rem}.daff-form-field .daff-suffix{padding-right:1rem}.daff-form-field.daff-skeleton{display:flex;position:relative}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"] }]
439
+ ], template: "<div class=\"daff-form-field__control\">\n\t@if (_prefix) {\n\t\t<ng-content select=\"[daffPrefix]\"></ng-content>\n\t}\n\t<div class=\"daff-form-field__form-wrapper\">\n\t\t@if (_formLabelDirective) {\n\t\t\t<ng-content select=\"label[daffFormLabel]\"></ng-content>\n\t\t} @else if(_formFieldLabelDirective) {\n\t\t\t<label class=\"daff-form-field__label\"\n\t\t\t\t[attr.for]=\"autoLabelId\"\n\t\t\t\t[attr.id]=\"customId\">\n\t\t\t\t<ng-content select=\"daff-form-label\"></ng-content>\n\t\t\t</label>\n\t\t} @else {\n\t\t\t<ng-content select=\"label\"></ng-content>\n\t\t}\n\t\t<ng-content></ng-content>\n\t\t@if (isSelectField) {\n\t\t\t<div class=\"daff-form-field__icon\"></div>\n\t\t}\n\t</div>\n @if (_suffix) {\n\t\t<ng-content select=\"[daffSuffix]\"></ng-content>\n\t}\n</div>\n@if (hasHint()) {\n\t<div\n\t\tclass=\"daff-form-field__hint-wrapper\"\n\t\t[id]=\"hintId\">\n\t\t<ng-content select=\"daff-hint\"></ng-content>\n\t</div>\n}\n@if (hasErrorMessage()) {\n\t<div\n\t\tclass=\"daff-form-field__error-wrapper\"\n\t\t[id]=\"errorMessageId\">\n\t\t<ng-content select=\"daff-error-message\"></ng-content>\n\t</div>\n}", styles: [".daff-form-field{display:flex;flex-direction:column;gap:.25rem;position:relative}.daff-form-field__hint-wrapper,.daff-form-field__error-wrapper{display:flex;flex-direction:column;gap:.25rem}.daff-form-field__control{display:flex;align-items:center;border-radius:.25rem;font-size:1rem;line-height:1rem;position:relative;width:100%}.daff-form-field__control * ::-webkit-input-placeholder{opacity:0}.daff-form-field__control+.daff-hint,.daff-form-field__control+.daff-error-message{margin-top:.5rem}.daff-form-field input,.daff-form-field textarea,.daff-form-field select{font-size:1rem;line-height:1.5rem;padding:1rem}.daff-form-field label,.daff-form-field .daff-form-label,.daff-form-field__label{position:absolute;left:1rem;top:1.25rem;pointer-events:none;transform-origin:left top;transition:transform .15s}.daff-form-field label+input,.daff-form-field label+textarea,.daff-form-field label+select,.daff-form-field .daff-form-label+input,.daff-form-field .daff-form-label+textarea,.daff-form-field .daff-form-label+select,.daff-form-field__label+input,.daff-form-field__label+textarea,.daff-form-field__label+select{padding:1.5rem 1rem .5rem}.daff-form-field.daff-raised label,.daff-form-field.daff-raised .daff-form-label,.daff-form-field.daff-raised .daff-form-field__label{transform:translateY(-75%) scale(.75)}.daff-form-field.daff-raised * ::-webkit-input-placeholder{opacity:1}.daff-form-field.daff-disabled{cursor:not-allowed;opacity:.5}.daff-form-field__icon{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-form-field__form-wrapper{flex-grow:1;position:relative;overflow:hidden}.daff-form-field .daff-prefix{padding-left:1rem}.daff-form-field .daff-suffix{padding-right:1rem}.daff-form-field.daff-skeleton{display:flex;position:relative;height:3.5rem;width:100%;border-radius:.25rem}.daff-form-field.daff-skeleton:before{animation-name:loading;animation-duration:1s;animation-timing-function:linear;animation-iteration-count:infinite;animation-direction:alternate;content:\"\";height:3.5rem;width:100%;position:absolute;top:0;left:0}@keyframes loading{0%{opacity:.5}to{opacity:1}}.daff-form-field.daff-skeleton>*{visibility:hidden}\n"] }]
279
440
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { class: [{
280
441
  type: HostBinding,
281
442
  args: ['class.daff-form-field']
@@ -288,6 +449,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
288
449
  }], _control: [{
289
450
  type: ContentChild,
290
451
  args: [DaffFormFieldControl]
452
+ }], _formLabelDirective: [{
453
+ type: ContentChild,
454
+ args: [DaffFormLabelDirective]
455
+ }], _formFieldLabelDirective: [{
456
+ type: ContentChild,
457
+ args: [DaffFormFieldLabelDirective]
458
+ }], _hint: [{
459
+ type: ContentChild,
460
+ args: [DaffHintComponent]
461
+ }], _error: [{
462
+ type: ContentChild,
463
+ args: [DaffErrorMessageComponent]
291
464
  }], errorClass: [{
292
465
  type: HostBinding,
293
466
  args: ['class.daff-error']
@@ -303,24 +476,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
303
476
  }], raisedClass: [{
304
477
  type: HostBinding,
305
478
  args: ['class.daff-raised']
306
- }] } });
307
-
308
- class DaffErrorMessageComponent {
309
- constructor() {
310
- /**
311
- * @docs-private
312
- */
313
- this.class = true;
314
- }
315
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffErrorMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
316
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffErrorMessageComponent, isStandalone: true, selector: "daff-error-message", host: { properties: { "class.daff-error-message": "this.class" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:block;font-size:.875rem;line-height:1rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
317
- }
318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffErrorMessageComponent, decorators: [{
319
- type: Component,
320
- args: [{ selector: 'daff-error-message', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, styles: [":host{display:block;font-size:.875rem;line-height:1rem}\n"] }]
321
- }], propDecorators: { class: [{
322
- type: HostBinding,
323
- args: ['class.daff-error-message']
479
+ }], id: [{
480
+ type: Input
324
481
  }] } });
325
482
 
326
483
  /**
@@ -343,26 +500,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
343
500
  }]
344
501
  }] });
345
502
 
346
- class DaffFormLabelDirective {
347
- constructor() {
348
- /**
349
- * @docs-private
350
- */
351
- this.class = true;
352
- }
353
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
354
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: DaffFormLabelDirective, isStandalone: true, selector: "[daffFormLabel]", host: { properties: { "class.daff-form-label": "this.class" } }, ngImport: i0 }); }
355
- }
356
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffFormLabelDirective, decorators: [{
357
- type: Directive,
358
- args: [{
359
- selector: '[daffFormLabel]',
360
- }]
361
- }], propDecorators: { class: [{
362
- type: HostBinding,
363
- args: ['class.daff-form-label']
364
- }] } });
365
-
366
503
  /**
367
504
  * @deprecated in favor of standalone components. Deprecated in version 0.84.0. Will be removed in version 1.0.0.
368
505
  */
@@ -413,33 +550,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
413
550
  }]
414
551
  }] });
415
552
 
416
- class DaffHintComponent {
417
- constructor() {
418
- /**
419
- * @docs-private
420
- */
421
- this.class = true;
422
- /**
423
- * Whether or not the hint has been validated
424
- * */
425
- this.validated = false;
426
- }
427
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffHintComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
428
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: DaffHintComponent, isStandalone: true, selector: "daff-hint", inputs: { validated: "validated" }, host: { properties: { "class.daff-hint": "this.class", "class.validated": "this.validated" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [":host{display:flex;gap:.25rem;font-size:.875rem;line-height:1rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
429
- }
430
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffHintComponent, decorators: [{
431
- type: Component,
432
- args: [{ selector: 'daff-hint', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [":host{display:flex;gap:.25rem;font-size:.875rem;line-height:1rem}\n"] }]
433
- }], propDecorators: { class: [{
434
- type: HostBinding,
435
- args: ['class.daff-hint']
436
- }], validated: [{
437
- type: Input
438
- }, {
439
- type: HostBinding,
440
- args: ['class.validated']
441
- }] } });
442
-
443
553
  /**
444
554
  * @docs-private
445
555
  */
@@ -450,6 +560,7 @@ const DAFF_FORM_FIELD_COMPONENTS = [
450
560
  DaffHintComponent,
451
561
  DaffPrefixDirective,
452
562
  DaffSuffixDirective,
563
+ DaffFormFieldLabelDirective,
453
564
  ];
454
565
 
455
566
  class DaffNativeSelectComponent extends DaffFormFieldControl {
@@ -1475,6 +1586,12 @@ var DaffTextAlignmentEnum;
1475
1586
  DaffTextAlignmentEnum["Right"] = "right";
1476
1587
  })(DaffTextAlignmentEnum || (DaffTextAlignmentEnum = {}));
1477
1588
 
1589
+ const textAlignmentValues = (textAlignment) => Object.values(DaffTextAlignmentEnum).includes(textAlignment);
1590
+ const validateTextAlignment = (textAlignment) => {
1591
+ if (textAlignment !== undefined && !textAlignmentValues(textAlignment)) {
1592
+ console.warn(`'${textAlignment}' is not a valid value of the textAlignment property. The available values are: left, center, or right.`);
1593
+ }
1594
+ };
1478
1595
  /**
1479
1596
  * `DaffTextAlignableDirective` allows for dynamic text alignment of a component by
1480
1597
  * setting CSS classes based on the specified text alignment. This directive is
@@ -1540,6 +1657,15 @@ class DaffTextAlignableDirective {
1540
1657
  this.textAlignment = this.defaultAlignment;
1541
1658
  }
1542
1659
  }
1660
+ /**
1661
+ * @docs-private
1662
+ */
1663
+ ngOnInit() {
1664
+ validateTextAlignment(this.textAlignment);
1665
+ if (!this.textAlignment) {
1666
+ this.textAlignment = this.defaultAlignment;
1667
+ }
1668
+ }
1543
1669
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffTextAlignableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1544
1670
  /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: DaffTextAlignableDirective, isStandalone: true, selector: "[daffTextAlignable]", inputs: { textAlignment: "textAlignment" }, host: { properties: { "class": "this.class" } }, usesOnChanges: true, ngImport: i0 }); }
1545
1671
  }
@@ -1547,7 +1673,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
1547
1673
  type: Directive,
1548
1674
  args: [{
1549
1675
  selector: '[daffTextAlignable]',
1550
- standalone: true,
1551
1676
  }]
1552
1677
  }], propDecorators: { class: [{
1553
1678
  type: HostBinding,
@@ -1602,6 +1727,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
1602
1727
  */
1603
1728
  class DaffCompactableDirective {
1604
1729
  constructor() {
1730
+ /**
1731
+ * Controls whether the component is compact.
1732
+ */
1605
1733
  this.compact = false;
1606
1734
  }
1607
1735
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffCompactableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
@@ -2212,7 +2340,7 @@ const DaffOpenableStateError = '`open` cannot be set as an input property on the
2212
2340
  */
2213
2341
  class DaffOpenableDirective {
2214
2342
  constructor() {
2215
- /** Whether or not a component implementing the directive is open */
2343
+ /** Controls whether the component is open. */
2216
2344
  this.open = false;
2217
2345
  /** Whether or not a component should handle state
2218
2346
  *
@@ -2291,7 +2419,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
2291
2419
  class DaffSelectableDirective {
2292
2420
  constructor(cd) {
2293
2421
  this.cd = cd;
2294
- /** Whether or not a component implementing the directive is selected */
2422
+ /**
2423
+ * Controls whether the component is selected.
2424
+ */
2295
2425
  this.selected = false;
2296
2426
  /**
2297
2427
  * An event that fires after the media element becomes selected.
@@ -2343,5 +2473,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImpo
2343
2473
  * Generated bundle index. Do not edit.
2344
2474
  */
2345
2475
 
2346
- export { DAFF_FORM_FIELD_COMPONENTS, DAFF_THEME_INITIALIZER, DaffArticleEncapsulatedDirective, DaffBreakpoints, DaffCheckboxComponent, DaffCheckboxControlValueAccessorDirective, DaffCheckboxModule, DaffCheckboxSetComponent, DaffColorableDirective, DaffCompactableDirective, DaffErrorMessageComponent, DaffErrorMessageModule, DaffErrorStateMatcher, DaffFocusStackService, DaffFormFieldComponent, DaffFormFieldControl, DaffFormFieldModule, DaffFormLabelDirective, DaffFormLabelModule, DaffHintComponent, DaffManageContainerLayoutDirective, DaffNativeSelectComponent, DaffNativeSelectModule, DaffOpenableDirective, DaffPrefixDirective, DaffPrefixSuffixModule, DaffRadioComponent, DaffRadioControlValueAccessorDirective, DaffRadioModule, DaffRadioSetComponent, DaffSelectableDirective, DaffSizableDirective, DaffSizableEnum, DaffSkeletonableDirective, DaffStatusEnum, DaffStatusableDirective, DaffSuffixDirective, DaffTextAlignableDirective, DaffTextAlignmentEnum, DaffTheme, DaffThemingService, NoopBreakpointObserver, SERVER_SAFE_BREAKPOINT_OBSERVER, daffFocusableElementsSelector };
2476
+ export { DAFF_FORM_FIELD_COMPONENTS, DAFF_THEME_INITIALIZER, DaffArticleEncapsulatedDirective, DaffBreakpoints, DaffCheckboxComponent, DaffCheckboxControlValueAccessorDirective, DaffCheckboxModule, DaffCheckboxSetComponent, DaffColorableDirective, DaffCompactableDirective, DaffErrorMessageComponent, DaffErrorMessageModule, DaffErrorStateMatcher, DaffFocusStackService, DaffFormFieldComponent, DaffFormFieldControl, DaffFormFieldLabelDirective, DaffFormFieldModule, DaffFormLabelDirective, DaffFormLabelModule, DaffHintComponent, DaffManageContainerLayoutDirective, DaffNativeSelectComponent, DaffNativeSelectModule, DaffOpenableDirective, DaffPrefixDirective, DaffPrefixSuffixModule, DaffRadioComponent, DaffRadioControlValueAccessorDirective, DaffRadioModule, DaffRadioSetComponent, DaffSelectableDirective, DaffSizableDirective, DaffSizableEnum, DaffSkeletonableDirective, DaffStatusEnum, DaffStatusableDirective, DaffSuffixDirective, DaffTextAlignableDirective, DaffTextAlignmentEnum, DaffTheme, DaffThemingService, NoopBreakpointObserver, SERVER_SAFE_BREAKPOINT_OBSERVER, daffFocusableElementsSelector };
2347
2477
  //# sourceMappingURL=daffodil-design.mjs.map