@daffodil/design 0.86.0 → 0.87.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 (82) hide show
  1. package/atoms/form/form-field/action/action.directive.d.ts +9 -0
  2. package/atoms/form/form-field/form-field/form-field.component.d.ts +33 -1
  3. package/atoms/form/form-field/form-field.d.ts +2 -1
  4. package/atoms/form/form-field/public_api.d.ts +1 -0
  5. package/button/README.md +58 -42
  6. package/button/button/button-base.directive.d.ts +10 -4
  7. package/button/button.d.ts +22 -1
  8. package/button/public_api.d.ts +1 -1
  9. package/button/src/button/button-base.scss +0 -1
  10. package/button/src/button/raised/raised-theme.scss +3 -3
  11. package/core/statusable/statusable.directive.d.ts +22 -2
  12. package/fesm2022/daffodil-design-article.mjs +2 -2
  13. package/fesm2022/daffodil-design-article.mjs.map +1 -1
  14. package/fesm2022/daffodil-design-button.mjs +58 -16
  15. package/fesm2022/daffodil-design-button.mjs.map +1 -1
  16. package/fesm2022/daffodil-design-form-field-examples.mjs +95 -0
  17. package/fesm2022/daffodil-design-form-field-examples.mjs.map +1 -0
  18. package/fesm2022/daffodil-design-input-examples.mjs +5 -5
  19. package/fesm2022/daffodil-design-input-examples.mjs.map +1 -1
  20. package/fesm2022/daffodil-design-input.mjs +11 -15
  21. package/fesm2022/daffodil-design-input.mjs.map +1 -1
  22. package/fesm2022/daffodil-design-modal-examples.mjs +3 -2
  23. package/fesm2022/daffodil-design-modal-examples.mjs.map +1 -1
  24. package/fesm2022/daffodil-design-modal.mjs +12 -11
  25. package/fesm2022/daffodil-design-modal.mjs.map +1 -1
  26. package/fesm2022/daffodil-design-notification-examples.mjs +3 -3
  27. package/fesm2022/daffodil-design-notification-examples.mjs.map +1 -1
  28. package/fesm2022/daffodil-design-quantity-field-examples.mjs +4 -4
  29. package/fesm2022/daffodil-design-quantity-field-examples.mjs.map +1 -1
  30. package/fesm2022/daffodil-design-select-examples.mjs +117 -0
  31. package/fesm2022/daffodil-design-select-examples.mjs.map +1 -0
  32. package/fesm2022/daffodil-design-select.mjs +431 -0
  33. package/fesm2022/daffodil-design-select.mjs.map +1 -0
  34. package/fesm2022/daffodil-design-textarea-examples.mjs +66 -0
  35. package/fesm2022/daffodil-design-textarea-examples.mjs.map +1 -0
  36. package/fesm2022/daffodil-design-textarea.mjs +124 -0
  37. package/fesm2022/daffodil-design-textarea.mjs.map +1 -0
  38. package/fesm2022/daffodil-design.mjs +135 -11
  39. package/fesm2022/daffodil-design.mjs.map +1 -1
  40. package/form-field/examples/examples.d.ts +3 -0
  41. package/form-field/examples/form-field-appearances/form-field-appearances.component.d.ts +7 -0
  42. package/form-field/examples/form-field-with-action/form-field-with-action.component.d.ts +9 -0
  43. package/form-field/examples/form-field-with-prefix/form-field-with-prefix.component.d.ts +6 -0
  44. package/form-field/examples/form-field-with-suffix/form-field-with-suffix.component.d.ts +6 -0
  45. package/form-field/examples/index.d.ts +1 -0
  46. package/form-field/examples/public_api.d.ts +1 -0
  47. package/input/input.component.d.ts +4 -8
  48. package/modal/modal/modal.component.d.ts +5 -3
  49. package/notification/src/notification-theme.scss +34 -18
  50. package/package.json +1 -1
  51. package/scss/theme.scss +8 -0
  52. package/scss/theming/illuminate/illuminate.scss +2 -0
  53. package/select/README.md +8 -0
  54. package/select/animation/select-animation-state.d.ts +7 -0
  55. package/select/animation/select-animation.d.ts +4 -0
  56. package/select/animation/state.enum.d.ts +4 -0
  57. package/select/examples/default-select/default-select.component.d.ts +8 -0
  58. package/select/examples/disabled-select/disabled-select.component.d.ts +8 -0
  59. package/select/examples/index.d.ts +1 -0
  60. package/select/examples/models/address.type.d.ts +7 -0
  61. package/select/examples/models/addresses.d.ts +2 -0
  62. package/select/examples/public_api.d.ts +3 -0
  63. package/select/examples/select-with-error/select-with-error.component.d.ts +8 -0
  64. package/select/examples/skeleton-select/skeleton-select.component.d.ts +8 -0
  65. package/select/index.d.ts +1 -0
  66. package/select/option/context.type.d.ts +17 -0
  67. package/select/option/option.directive.d.ts +11 -0
  68. package/select/public_api.d.ts +4 -0
  69. package/select/select/select.component.d.ts +170 -0
  70. package/select/select.d.ts +4 -0
  71. package/select/src/select-theme.scss +75 -0
  72. package/src/atoms/form/form-field/form-field/form-field-theme.scss +35 -8
  73. package/textarea/README.md +28 -0
  74. package/textarea/examples/basic-textarea/basic-textarea.component.d.ts +5 -0
  75. package/textarea/examples/examples.d.ts +2 -0
  76. package/textarea/examples/index.d.ts +1 -0
  77. package/textarea/examples/public_api.d.ts +1 -0
  78. package/textarea/examples/textarea-disabled/textarea-disabled.component.d.ts +7 -0
  79. package/textarea/examples/textarea-error/textarea-error.component.d.ts +7 -0
  80. package/textarea/index.d.ts +1 -0
  81. package/textarea/public_api.d.ts +1 -0
  82. package/textarea/textarea.component.d.ts +59 -0
@@ -0,0 +1,431 @@
1
+ import * as i2 from '@angular/cdk/overlay';
2
+ import { OverlayModule } from '@angular/cdk/overlay';
3
+ import * as i4 from '@angular/cdk/portal';
4
+ import { PortalModule } from '@angular/cdk/portal';
5
+ import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
6
+ import * as i0 from '@angular/core';
7
+ import { Optional, Directive, ElementRef, ContentChild, ViewChild, Input, HostBinding, Inject, Self, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
8
+ import * as i1 from '@angular/forms';
9
+ import { Subject, merge, of, map, takeUntil, delay } from 'rxjs';
10
+ import * as i3 from '@daffodil/design';
11
+ import { DaffFormFieldControl, DaffOpenableDirective, DaffErrorMessageComponent, DaffFormLabelDirective } from '@daffodil/design';
12
+ import { trigger, state, style } from '@angular/animations';
13
+
14
+ var DaffSelectAnimationState;
15
+ (function (DaffSelectAnimationState) {
16
+ DaffSelectAnimationState["OPEN"] = "open";
17
+ DaffSelectAnimationState["CLOSED"] = "closed";
18
+ })(DaffSelectAnimationState || (DaffSelectAnimationState = {}));
19
+ ;
20
+
21
+ const daffSelectAnimations = {
22
+ openSelect: trigger('openSelect', [
23
+ state(DaffSelectAnimationState.OPEN, style({
24
+ height: '*',
25
+ })),
26
+ state(DaffSelectAnimationState.CLOSED, style({
27
+ height: '0',
28
+ })),
29
+ ]),
30
+ };
31
+
32
+ /**
33
+ * Turns a boolean into a string of 'open' or 'close'.
34
+ *
35
+ * @param open A boolean representing the open status of an select.
36
+ */
37
+ const getAnimationState = (open) => {
38
+ if (open) {
39
+ return DaffSelectAnimationState.OPEN;
40
+ }
41
+ else {
42
+ return DaffSelectAnimationState.CLOSED;
43
+ }
44
+ };
45
+
46
+ /**
47
+ * The directive provides the template for a list of options inside the select dropdown.
48
+ */
49
+ class DaffSelectOptionDirective {
50
+ constructor(templateRef) {
51
+ this.templateRef = templateRef;
52
+ }
53
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffSelectOptionDirective, deps: [{ token: i0.TemplateRef, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
54
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.11", type: DaffSelectOptionDirective, isStandalone: true, selector: "[daffSelectOption]", ngImport: i0 }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffSelectOptionDirective, decorators: [{
57
+ type: Directive,
58
+ args: [{
59
+ selector: '[daffSelectOption]',
60
+ }]
61
+ }], ctorParameters: () => [{ type: i0.TemplateRef, decorators: [{
62
+ type: Optional
63
+ }] }] });
64
+
65
+ let daffSelectOtionsId = 0;
66
+ /**
67
+ * DaffSelectComponent is a form control component that presents a list of selectable options,
68
+ * similar to the native `<select>` element we call `<daff-native-select>`.
69
+ *
70
+ */
71
+ class DaffSelectComponent extends DaffFormFieldControl {
72
+ /**
73
+ * @docs-private
74
+ */
75
+ get focused() {
76
+ return this.document.activeElement === this.buttonElement?.nativeElement || this.document.activeElement === this.optionsElement?.nativeElement;
77
+ }
78
+ /**
79
+ * @docs-private
80
+ */
81
+ get raised() {
82
+ return this.focused && this.isOpen;
83
+ }
84
+ /** @docs-private */
85
+ focus() {
86
+ this.buttonElement?.nativeElement?.focus();
87
+ this.emitState();
88
+ }
89
+ /** @docs-private */
90
+ blur() {
91
+ this.buttonElement?.nativeElement?.blur();
92
+ this.emitState();
93
+ }
94
+ /**
95
+ * @docs-private
96
+ */
97
+ get isOpen() {
98
+ return this.openDirective.open;
99
+ }
100
+ /**
101
+ * @docs-private
102
+ */
103
+ get disabledClass() {
104
+ return this.disabled || this._disabled;
105
+ }
106
+ constructor(cd, document, ngControl, overlay, openDirective, formField) {
107
+ super(ngControl);
108
+ this.cd = cd;
109
+ this.document = document;
110
+ this.ngControl = ngControl;
111
+ this.overlay = overlay;
112
+ this.openDirective = openDirective;
113
+ this.formField = formField;
114
+ /** @docs-private */
115
+ this.controlType = 'custom-select';
116
+ /**
117
+ * @docs-private
118
+ */
119
+ this.supportsAutoLabelling = false;
120
+ this._destroyed = new Subject();
121
+ this._value = null;
122
+ this._highlighted = 0;
123
+ this._animationFinishCallbackQueue = [];
124
+ /**
125
+ * @docs-private
126
+ */
127
+ this._disabled = false;
128
+ this.disabled = false;
129
+ this.options = [];
130
+ /**
131
+ * @docs-private
132
+ */
133
+ this.class = true;
134
+ /**
135
+ * @docs-private
136
+ *
137
+ * `aria-labelledby` for the select.
138
+ */
139
+ this.ariaLabelledBy = '';
140
+ /**
141
+ * The unique id of the select options. Defaults to an autogenerated value.
142
+ */
143
+ this.optionsId = 'daff-select-options' + '-' + ++daffSelectOtionsId;
144
+ this.ariaLabelledBy = this.formField.id;
145
+ this.openDirective.stateless = false;
146
+ this.document.addEventListener('keydown', (event) => {
147
+ if (event.key === 'Tab' && this.isOpen) {
148
+ event.preventDefault();
149
+ event.stopPropagation();
150
+ this.focusOptionsList();
151
+ }
152
+ });
153
+ if (this.ngControl != null) {
154
+ this.ngControl.valueAccessor = this;
155
+ }
156
+ }
157
+ /**
158
+ * @docs-private
159
+ */
160
+ get animationState() {
161
+ return this._animationState;
162
+ }
163
+ /**
164
+ * @docs-private
165
+ */
166
+ get value() {
167
+ return this._value;
168
+ }
169
+ /**
170
+ * @docs-private
171
+ */
172
+ get highlighted() {
173
+ return this._highlighted;
174
+ }
175
+ set highlighted(val) {
176
+ this._highlighted = val;
177
+ this.cd.markForCheck();
178
+ }
179
+ focusOptionsList() {
180
+ this.optionsElement?.nativeElement.focus();
181
+ }
182
+ focusButton() {
183
+ this.buttonElement?.nativeElement.focus();
184
+ }
185
+ /**
186
+ * @docs-private
187
+ */
188
+ ngOnDestroy() {
189
+ this._destroyed.next(true);
190
+ this._overlay?.dispose();
191
+ }
192
+ onChange(value) { }
193
+ ;
194
+ onTouched(value) { }
195
+ ;
196
+ /**
197
+ * @docs-private
198
+ */
199
+ writeValue(value) {
200
+ this._value = value;
201
+ this.cd.markForCheck();
202
+ }
203
+ /**
204
+ * @docs-private
205
+ */
206
+ registerOnChange(fn) {
207
+ this.onChange = fn;
208
+ }
209
+ /**
210
+ * @docs-private
211
+ */
212
+ registerOnTouched(fn) {
213
+ this.onTouched = fn;
214
+ }
215
+ /**
216
+ * @docs-private
217
+ */
218
+ setDisabledState(isDisabled) {
219
+ this._disabled = isDisabled;
220
+ }
221
+ /**
222
+ * @docs-private
223
+ */
224
+ flushValue() {
225
+ this.ngControl?.control?.setValue(this._value);
226
+ }
227
+ /**
228
+ * @docs-private
229
+ */
230
+ ngOnInit() {
231
+ this.stateChanges = merge(this._stateChanges.asObservable(), this.ngControl ? this.ngControl.statusChanges : of(undefined)).pipe(map(() => this.state));
232
+ this._animationState = getAnimationState(this.openDirective.open);
233
+ }
234
+ /**
235
+ * @docs-private
236
+ */
237
+ animationFinished() {
238
+ this._animationFinishCallbackQueue.forEach((cb) => {
239
+ cb();
240
+ });
241
+ this._animationFinishCallbackQueue = [];
242
+ }
243
+ /**
244
+ * Opens the options list.
245
+ */
246
+ open(event) {
247
+ event?.preventDefault();
248
+ event?.stopPropagation();
249
+ if (!this.openDirective.open) {
250
+ this.openDirective.open = true;
251
+ this._animationState = getAnimationState(this.openDirective.open);
252
+ if (this._value) {
253
+ this._highlighted = this.options.findIndex((v) => v === this._value);
254
+ }
255
+ // Get the width of the button element to use for the overlay
256
+ const buttonWidth = this.buttonElement.nativeElement.getBoundingClientRect().width;
257
+ this._overlay = this.overlay.create({
258
+ hasBackdrop: true,
259
+ backdropClass: 'cdk-overlay-transparent-backdrop',
260
+ scrollStrategy: this.overlay.scrollStrategies.block(),
261
+ disposeOnNavigation: true,
262
+ width: `${buttonWidth}px`, // Set the exact width of the button element
263
+ positionStrategy: this.overlay
264
+ .position()
265
+ .flexibleConnectedTo(this.buttonElement)
266
+ .withPositions([
267
+ {
268
+ originX: 'start',
269
+ originY: 'bottom',
270
+ overlayX: 'start',
271
+ overlayY: 'top',
272
+ offsetY: 2,
273
+ },
274
+ {
275
+ originX: 'start',
276
+ originY: 'top',
277
+ overlayX: 'start',
278
+ overlayY: 'bottom',
279
+ offsetY: -2,
280
+ },
281
+ ]),
282
+ });
283
+ this._overlay.attachments().pipe(takeUntil(this._destroyed), delay(0)).subscribe(() => {
284
+ this.focusOptionsList();
285
+ });
286
+ this._overlay.attach(this.optionsTemplatePortal);
287
+ this._overlay.backdropClick().pipe(takeUntil(this._destroyed)).subscribe(() => {
288
+ this.close();
289
+ });
290
+ this.cd.markForCheck();
291
+ }
292
+ }
293
+ /**
294
+ * Closes the options list.
295
+ */
296
+ close(event) {
297
+ event?.preventDefault();
298
+ event?.stopPropagation();
299
+ if (this.openDirective.open) {
300
+ this.openDirective.open = false;
301
+ this._animationState = getAnimationState(this.openDirective.open);
302
+ this.cd.markForCheck();
303
+ // do we actually have to dispose and recreate the overlay every time we want to close the dropdown?
304
+ this._animationFinishCallbackQueue.push(() => {
305
+ this._overlay?.dispose();
306
+ this._overlay = null;
307
+ this.focusButton();
308
+ });
309
+ }
310
+ }
311
+ /**
312
+ * Selects the value in a particular position in the options list.
313
+ */
314
+ selectValueInPosition(position) {
315
+ if (position >= 0 && position < this.options.length) {
316
+ this.writeValue(this.options[position]);
317
+ }
318
+ this.close();
319
+ }
320
+ /**
321
+ * Selects an option.
322
+ */
323
+ selectOption(option) {
324
+ if (this.ngControl?.control) {
325
+ this.ngControl.control.setValue(option);
326
+ }
327
+ else {
328
+ this.writeValue(option);
329
+ }
330
+ this.close();
331
+ }
332
+ /**
333
+ * Selects the option referenced by the highlighted index.
334
+ */
335
+ selectHighlighted(event) {
336
+ event?.preventDefault();
337
+ event?.stopPropagation();
338
+ this.selectValueInPosition(this._highlighted);
339
+ this.onChange(this._value);
340
+ }
341
+ /**
342
+ * Highlights the next option in the list.
343
+ */
344
+ highlightNext(event) {
345
+ event?.preventDefault();
346
+ event?.stopPropagation();
347
+ this._highlighted = this._highlighted < this.options.length - 1 ? this._highlighted + 1 : 0;
348
+ (event?.target).children[this._highlighted].scrollIntoView();
349
+ }
350
+ /**
351
+ * Highlights the previous option in the list.
352
+ */
353
+ highlightPrevious(event) {
354
+ event?.preventDefault();
355
+ event?.stopPropagation();
356
+ this._highlighted = this._highlighted > 0 ? this._highlighted - 1 : this.options.length - 1;
357
+ (event?.target).children[this._highlighted].scrollIntoView();
358
+ }
359
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: i1.NgControl, optional: true, self: true }, { token: i2.Overlay }, { token: i3.DaffOpenableDirective }, { token: i3.DaffFormFieldComponent }], target: i0.ɵɵFactoryTarget.Component }); }
360
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: DaffSelectComponent, isStandalone: true, selector: "daff-select", inputs: { disabled: "disabled", options: "options", optionsId: "optionsId" }, host: { properties: { "class.daff-select": "this.class", "class.disabled": "this.disabledClass", "attr.aria-labelledby": "this.ariaLabelledBy" } }, providers: [
361
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
362
+ { provide: DaffFormFieldControl, useExisting: DaffSelectComponent },
363
+ ], queries: [{ propertyName: "optionTemplate", first: true, predicate: DaffSelectOptionDirective, descendants: true }], viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["field"], descendants: true }, { propertyName: "optionsTemplatePortal", first: true, predicate: ["optionsTemplate"], descendants: true }, { propertyName: "optionsElement", first: true, predicate: ["optionsEl"], descendants: true, read: (ElementRef) }], usesInheritance: true, hostDirectives: [{ directive: i3.DaffOpenableDirective }], ngImport: i0, template: "<button #field class=\"daff-select__field\"\n type=\"button\"\n (click)=\"open($event)\"\n (focus)=\"focus()\"\n (blur)=\"blur()\"\n [disabled]=\"disabled || _disabled\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"optionsId\"\n (keydown.arrowdown)=\"open($event)\"\n (keydown.arrowup)=\"open($event)\"\n (keydown.alt.arrowup)=\"open($event)\"\n (keydown.alt.arrowdown)=\"open($event)\"\n (keydown.space)=\"open($event)\"\n (keydown.enter)=\"open($event)\">\n @if (value) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{option: value}\"><div></div>\n </ng-container>\n }\n</button>\n<ng-template cdkPortal #optionsTemplate=\"cdkPortal\">\n <div class=\"daff-select__options\" #optionsEl\n [id]=\"optionsId\"\n tabindex=\"0\"\n role=\"listbox\"\n [@openSelect]=\"animationState\"\n (@openSelect.done)=\"animationFinished()\"\n (keydown.enter)=\"selectHighlighted($event)\"\n (keydown.space)=\"selectHighlighted($event)\"\n (keydown.escape)=\"close($event)\"\n (keydown.arrowdown)=\"highlightNext($event)\"\n (keydown.arrowup)=\"highlightPrevious($event)\">\n @for (option of options; track $index; let i = $index) {\n <div class=\"daff-select__option\"\n [class.selected]=\"value === option\"\n [class.highlighted]=\"highlighted === i\"\n (click)=\"selectOption(option)\">\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{\n isSelected: value === option,\n isHighlighted: highlighted === i,\n option\n }\">\n </ng-container>\n </div>\n }\n </div>\n</ng-template>\n", styles: [".daff-select{display:inline-block;width:100%}.daff-select.daff-open .daff-select__field:after{top:56%;transform:translateY(-50%) rotate(225deg)}.daff-select.disabled .daff-select__field{cursor:not-allowed}.daff-select__field{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;appearance:none;background:none;border:none;font-size:1rem;line-height:1.25rem;min-height:3.5rem;margin:0;padding:1.5rem 1rem .5rem;text-align:left;width:100%;position:relative}.daff-select__field:after{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-select__options{width:100%}.daff-select__option{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:block;appearance:none;background:none;border:none;font-size:1rem;line-height:1.25rem;margin:0;padding:.5rem;text-align:left;width:100%}.daff-select__option:first-of-type{border-radius:.25rem .25rem 0 0}.daff-select__option:last-of-type{border-radius:0 0 .25rem .25rem}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i4.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }], animations: [
364
+ daffSelectAnimations.openSelect,
365
+ ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
366
+ }
367
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: DaffSelectComponent, decorators: [{
368
+ type: Component,
369
+ args: [{ selector: 'daff-select', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [
370
+ daffSelectAnimations.openSelect,
371
+ ], hostDirectives: [
372
+ {
373
+ directive: DaffOpenableDirective,
374
+ },
375
+ ], providers: [
376
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
377
+ { provide: DaffFormFieldControl, useExisting: DaffSelectComponent },
378
+ ], imports: [
379
+ NgTemplateOutlet,
380
+ OverlayModule,
381
+ PortalModule,
382
+ ], template: "<button #field class=\"daff-select__field\"\n type=\"button\"\n (click)=\"open($event)\"\n (focus)=\"focus()\"\n (blur)=\"blur()\"\n [disabled]=\"disabled || _disabled\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"optionsId\"\n (keydown.arrowdown)=\"open($event)\"\n (keydown.arrowup)=\"open($event)\"\n (keydown.alt.arrowup)=\"open($event)\"\n (keydown.alt.arrowdown)=\"open($event)\"\n (keydown.space)=\"open($event)\"\n (keydown.enter)=\"open($event)\">\n @if (value) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{option: value}\"><div></div>\n </ng-container>\n }\n</button>\n<ng-template cdkPortal #optionsTemplate=\"cdkPortal\">\n <div class=\"daff-select__options\" #optionsEl\n [id]=\"optionsId\"\n tabindex=\"0\"\n role=\"listbox\"\n [@openSelect]=\"animationState\"\n (@openSelect.done)=\"animationFinished()\"\n (keydown.enter)=\"selectHighlighted($event)\"\n (keydown.space)=\"selectHighlighted($event)\"\n (keydown.escape)=\"close($event)\"\n (keydown.arrowdown)=\"highlightNext($event)\"\n (keydown.arrowup)=\"highlightPrevious($event)\">\n @for (option of options; track $index; let i = $index) {\n <div class=\"daff-select__option\"\n [class.selected]=\"value === option\"\n [class.highlighted]=\"highlighted === i\"\n (click)=\"selectOption(option)\">\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{\n isSelected: value === option,\n isHighlighted: highlighted === i,\n option\n }\">\n </ng-container>\n </div>\n }\n </div>\n</ng-template>\n", styles: [".daff-select{display:inline-block;width:100%}.daff-select.daff-open .daff-select__field:after{top:56%;transform:translateY(-50%) rotate(225deg)}.daff-select.disabled .daff-select__field{cursor:not-allowed}.daff-select__field{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;appearance:none;background:none;border:none;font-size:1rem;line-height:1.25rem;min-height:3.5rem;margin:0;padding:1.5rem 1rem .5rem;text-align:left;width:100%;position:relative}.daff-select__field:after{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-select__options{width:100%}.daff-select__option{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:block;appearance:none;background:none;border:none;font-size:1rem;line-height:1.25rem;margin:0;padding:.5rem;text-align:left;width:100%}.daff-select__option:first-of-type{border-radius:.25rem .25rem 0 0}.daff-select__option:last-of-type{border-radius:0 0 .25rem .25rem}\n"] }]
383
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: Document, decorators: [{
384
+ type: Inject,
385
+ args: [DOCUMENT]
386
+ }] }, { type: i1.NgControl, decorators: [{
387
+ type: Optional
388
+ }, {
389
+ type: Self
390
+ }] }, { type: i2.Overlay }, { type: i3.DaffOpenableDirective }, { type: i3.DaffFormFieldComponent }], propDecorators: { disabled: [{
391
+ type: Input
392
+ }], options: [{
393
+ type: Input
394
+ }], class: [{
395
+ type: HostBinding,
396
+ args: ['class.daff-select']
397
+ }], disabledClass: [{
398
+ type: HostBinding,
399
+ args: ['class.disabled']
400
+ }], ariaLabelledBy: [{
401
+ type: HostBinding,
402
+ args: ['attr.aria-labelledby']
403
+ }], optionsId: [{
404
+ type: Input
405
+ }], buttonElement: [{
406
+ type: ViewChild,
407
+ args: ['field']
408
+ }], optionsTemplatePortal: [{
409
+ type: ViewChild,
410
+ args: ['optionsTemplate']
411
+ }], optionsElement: [{
412
+ type: ViewChild,
413
+ args: ['optionsEl', { read: (ElementRef) }]
414
+ }], optionTemplate: [{
415
+ type: ContentChild,
416
+ args: [DaffSelectOptionDirective]
417
+ }] } });
418
+
419
+ const DAFF_SELECT_COMPONENTS = [
420
+ DaffSelectComponent,
421
+ DaffSelectOptionDirective,
422
+ DaffErrorMessageComponent,
423
+ DaffFormLabelDirective,
424
+ ];
425
+
426
+ /**
427
+ * Generated bundle index. Do not edit.
428
+ */
429
+
430
+ export { DAFF_SELECT_COMPONENTS, DaffSelectComponent, DaffSelectOptionDirective };
431
+ //# sourceMappingURL=daffodil-design-select.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daffodil-design-select.mjs","sources":["../../../libs/design/select/src/animation/state.enum.ts","../../../libs/design/select/src/animation/select-animation.ts","../../../libs/design/select/src/animation/select-animation-state.ts","../../../libs/design/select/src/option/option.directive.ts","../../../libs/design/select/src/select/select.component.ts","../../../libs/design/select/src/select/select.component.html","../../../libs/design/select/src/select.ts","../../../libs/design/select/src/daffodil-design-select.ts"],"sourcesContent":["export enum DaffSelectAnimationState {\n OPEN = 'open',\n CLOSED = 'closed'\n};\n","import {\n state,\n style,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\nimport { DaffSelectAnimationState } from './state.enum';\n\nexport const daffSelectAnimations: {\n readonly openSelect: AnimationTriggerMetadata;\n} = {\n openSelect: trigger('openSelect', [\n state(DaffSelectAnimationState.OPEN, style({\n height: '*',\n })),\n state(DaffSelectAnimationState.CLOSED, style({\n height: '0',\n })),\n ]),\n};\n","import { DaffSelectAnimationState } from './state.enum';\n\n/**\n * Turns a boolean into a string of 'open' or 'close'.\n *\n * @param open A boolean representing the open status of an select.\n */\nexport const getAnimationState = (open: boolean): DaffSelectAnimationState => {\n if (open) {\n return DaffSelectAnimationState.OPEN;\n } else {\n return DaffSelectAnimationState.CLOSED;\n }\n};\n","import {\n Directive,\n Optional,\n TemplateRef,\n} from '@angular/core';\n\n/**\n * The directive provides the template for a list of options inside the select dropdown.\n */\n@Directive({\n selector: '[daffSelectOption]',\n})\nexport class DaffSelectOptionDirective {\n constructor(@Optional() public templateRef?: TemplateRef<unknown>) {}\n}\n","import {\n Overlay,\n OverlayModule,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport {\n PortalModule,\n TemplatePortal,\n} from '@angular/cdk/portal';\nimport {\n DOCUMENT,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n HostBinding,\n ChangeDetectorRef,\n OnInit,\n ElementRef,\n Inject,\n Optional,\n Self,\n ContentChild,\n ViewChild,\n OnDestroy,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n} from '@angular/forms';\nimport {\n Subject,\n delay,\n map,\n merge,\n of,\n takeUntil,\n} from 'rxjs';\n\nimport {\n DaffFormFieldComponent,\n DaffFormFieldControl,\n DaffOpenableDirective,\n} from '@daffodil/design';\n\nimport { daffSelectAnimations } from '../animation/select-animation';\nimport { getAnimationState } from '../animation/select-animation-state';\nimport { DaffSelectAnimationState } from '../animation/state.enum';\nimport { DaffSelectOptionDirective } from '../option/option.directive';\n\nlet daffSelectOtionsId = 0;\n\n/**\n * DaffSelectComponent is a form control component that presents a list of selectable options,\n * similar to the native `<select>` element we call `<daff-native-select>`.\n *\n */\n@Component({\n selector: 'daff-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n daffSelectAnimations.openSelect,\n ],\n hostDirectives: [\n {\n directive: DaffOpenableDirective,\n },\n ],\n providers: [\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n { provide: DaffFormFieldControl, useExisting: DaffSelectComponent },\n ],\n imports: [\n NgTemplateOutlet,\n OverlayModule,\n PortalModule,\n ],\n})\nexport class DaffSelectComponent<T = unknown> extends DaffFormFieldControl<string> implements DaffFormFieldControl<string>, OnInit, OnDestroy, ControlValueAccessor {\n /** @docs-private */\n controlType = 'custom-select';\n\n /**\n * @docs-private\n */\n supportsAutoLabelling = false;\n\n private _destroyed = new Subject<boolean>();\n private _overlay: OverlayRef;\n private _value = null;\n private _highlighted = 0;\n private _animationState: DaffSelectAnimationState;\n private _animationFinishCallbackQueue: Array<() => void> = [];\n\n /**\n * @docs-private\n */\n get focused() {\n return this.document.activeElement === this.buttonElement?.nativeElement || this.document.activeElement === this.optionsElement?.nativeElement;\n }\n\n /**\n * @docs-private\n */\n get raised() {\n return this.focused && this.isOpen;\n }\n\n /** @docs-private */\n focus() {\n (<HTMLElement>this.buttonElement?.nativeElement)?.focus();\n this.emitState();\n }\n\n /** @docs-private */\n blur() {\n (<HTMLElement>this.buttonElement?.nativeElement)?.blur();\n this.emitState();\n }\n\n /**\n * @docs-private\n */\n _disabled = false;\n @Input() disabled = false;\n\n @Input() options: T[] = [];\n\n /**\n * @docs-private\n */\n get isOpen() {\n return this.openDirective.open;\n }\n\n /**\n * @docs-private\n */\n @HostBinding('class.daff-select') class = true;\n\n\n /**\n * @docs-private\n */\n @HostBinding('class.disabled') get disabledClass() {\n return this.disabled || this._disabled;\n }\n\n /**\n * @docs-private\n *\n * `aria-labelledby` for the select.\n */\n @HostBinding('attr.aria-labelledby') ariaLabelledBy = '';\n\n /**\n * The unique id of the select options. Defaults to an autogenerated value.\n */\n @Input() optionsId: string = 'daff-select-options' + '-' + ++daffSelectOtionsId;\n\n constructor(\n private cd: ChangeDetectorRef,\n @Inject(DOCUMENT) private document: Document,\n @Optional() @Self() public ngControl: NgControl,\n private overlay: Overlay,\n private openDirective: DaffOpenableDirective,\n private formField: DaffFormFieldComponent,\n ) {\n super(ngControl);\n\n this.ariaLabelledBy = this.formField.id;\n\n this.openDirective.stateless = false;\n\n this.document.addEventListener('keydown', (event) => {\n if (event.key === 'Tab' && this.isOpen) {\n event.preventDefault();\n event.stopPropagation();\n\n this.focusOptionsList();\n }\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /**\n * @docs-private\n */\n @ViewChild('field') buttonElement: ElementRef<HTMLButtonElement>;\n /**\n * @docs-private\n */\n @ViewChild('optionsTemplate') optionsTemplatePortal: TemplatePortal<unknown>;\n /**\n * @docs-private\n */\n @ViewChild('optionsEl', { read: ElementRef<HTMLDivElement> }) optionsElement: ElementRef<HTMLDivElement>;\n\n /**\n * @docs-private\n */\n @ContentChild(DaffSelectOptionDirective) optionTemplate?: DaffSelectOptionDirective;\n\n /**\n * @docs-private\n */\n get animationState() {\n return this._animationState;\n }\n\n /**\n * @docs-private\n */\n get value() {\n return this._value;\n }\n\n /**\n * @docs-private\n */\n get highlighted(): number {\n return this._highlighted;\n }\n\n set highlighted(val: number) {\n this._highlighted = val;\n this.cd.markForCheck();\n }\n\n private focusOptionsList() {\n this.optionsElement?.nativeElement.focus();\n }\n\n private focusButton() {\n this.buttonElement?.nativeElement.focus();\n }\n\n /**\n * @docs-private\n */\n ngOnDestroy(): void {\n this._destroyed.next(true);\n this._overlay?.dispose();\n }\n\n private onChange(value: T): void {};\n private onTouched(value: T): void {};\n\n /**\n * @docs-private\n */\n writeValue(value: T): void {\n this._value = value;\n this.cd.markForCheck();\n }\n\n /**\n * @docs-private\n */\n registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n\n /**\n * @docs-private\n */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this._disabled = isDisabled;\n }\n\n /**\n * @docs-private\n */\n flushValue() {\n this.ngControl?.control?.setValue(this._value);\n }\n\n /**\n * @docs-private\n */\n ngOnInit() {\n this.stateChanges = merge(\n this._stateChanges.asObservable(),\n this.ngControl ? this.ngControl.statusChanges : of(undefined),\n ).pipe(\n map(() => this.state),\n );\n this._animationState = getAnimationState(this.openDirective.open);\n }\n\n /**\n * @docs-private\n */\n animationFinished() {\n this._animationFinishCallbackQueue.forEach((cb) => {\n cb();\n });\n this._animationFinishCallbackQueue = [];\n }\n\n /**\n * Opens the options list.\n */\n open(event?: KeyboardEvent | MouseEvent) {\n event?.preventDefault();\n event?.stopPropagation();\n\n if (!this.openDirective.open) {\n this.openDirective.open = true;\n this._animationState = getAnimationState(this.openDirective.open);\n if (this._value) {\n this._highlighted = this.options.findIndex((v) => v === this._value);\n }\n\n // Get the width of the button element to use for the overlay\n const buttonWidth = this.buttonElement.nativeElement.getBoundingClientRect().width;\n\n this._overlay = this.overlay.create({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.block(),\n disposeOnNavigation: true,\n width: `${buttonWidth}px`, // Set the exact width of the button element\n positionStrategy: this.overlay\n .position()\n .flexibleConnectedTo(this.buttonElement)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 2,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -2,\n },\n ]),\n });\n this._overlay.attachments().pipe(\n takeUntil(this._destroyed),\n delay(0),\n ).subscribe(() => {\n this.focusOptionsList();\n });\n this._overlay.attach(this.optionsTemplatePortal);\n\n this._overlay.backdropClick().pipe(\n takeUntil(this._destroyed),\n ).subscribe(() => {\n this.close();\n });\n\n this.cd.markForCheck();\n }\n }\n\n /**\n * Closes the options list.\n */\n close(event?: KeyboardEvent | MouseEvent) {\n event?.preventDefault();\n event?.stopPropagation();\n\n if (this.openDirective.open) {\n this.openDirective.open = false;\n this._animationState = getAnimationState(this.openDirective.open);\n this.cd.markForCheck();\n // do we actually have to dispose and recreate the overlay every time we want to close the dropdown?\n this._animationFinishCallbackQueue.push(() => {\n this._overlay?.dispose();\n this._overlay = null;\n this.focusButton();\n });\n }\n }\n\n /**\n * Selects the value in a particular position in the options list.\n */\n private selectValueInPosition(position: number) {\n if (position >= 0 && position < this.options.length) {\n this.writeValue(this.options[position]);\n }\n\n this.close();\n }\n\n /**\n * Selects an option.\n */\n selectOption(option: T) {\n if (this.ngControl?.control) {\n this.ngControl.control.setValue(option);\n } else {\n this.writeValue(option);\n }\n\n this.close();\n }\n\n /**\n * Selects the option referenced by the highlighted index.\n */\n selectHighlighted(event?: KeyboardEvent | MouseEvent) {\n event?.preventDefault();\n event?.stopPropagation();\n this.selectValueInPosition(this._highlighted);\n\n this.onChange(this._value);\n }\n\n /**\n * Highlights the next option in the list.\n */\n highlightNext(event?: KeyboardEvent | MouseEvent) {\n event?.preventDefault();\n event?.stopPropagation();\n this._highlighted = this._highlighted < this.options.length - 1 ? this._highlighted + 1 : 0;\n (<HTMLElement>event?.target).children[this._highlighted].scrollIntoView();\n }\n\n /**\n * Highlights the previous option in the list.\n */\n highlightPrevious(event?: KeyboardEvent | MouseEvent) {\n event?.preventDefault();\n event?.stopPropagation();\n this._highlighted = this._highlighted > 0 ? this._highlighted - 1 : this.options.length - 1;\n (<HTMLElement>event?.target).children[this._highlighted].scrollIntoView();\n }\n}\n","<button #field class=\"daff-select__field\"\n type=\"button\"\n (click)=\"open($event)\"\n (focus)=\"focus()\"\n (blur)=\"blur()\"\n [disabled]=\"disabled || _disabled\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-controls]=\"optionsId\"\n (keydown.arrowdown)=\"open($event)\"\n (keydown.arrowup)=\"open($event)\"\n (keydown.alt.arrowup)=\"open($event)\"\n (keydown.alt.arrowdown)=\"open($event)\"\n (keydown.space)=\"open($event)\"\n (keydown.enter)=\"open($event)\">\n @if (value) {\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{option: value}\"><div></div>\n </ng-container>\n }\n</button>\n<ng-template cdkPortal #optionsTemplate=\"cdkPortal\">\n <div class=\"daff-select__options\" #optionsEl\n [id]=\"optionsId\"\n tabindex=\"0\"\n role=\"listbox\"\n [@openSelect]=\"animationState\"\n (@openSelect.done)=\"animationFinished()\"\n (keydown.enter)=\"selectHighlighted($event)\"\n (keydown.space)=\"selectHighlighted($event)\"\n (keydown.escape)=\"close($event)\"\n (keydown.arrowdown)=\"highlightNext($event)\"\n (keydown.arrowup)=\"highlightPrevious($event)\">\n @for (option of options; track $index; let i = $index) {\n <div class=\"daff-select__option\"\n [class.selected]=\"value === option\"\n [class.highlighted]=\"highlighted === i\"\n (click)=\"selectOption(option)\">\n <ng-container\n [ngTemplateOutlet]=\"optionTemplate?.templateRef\"\n [ngTemplateOutletContext]=\"{\n isSelected: value === option,\n isHighlighted: highlighted === i,\n option\n }\">\n </ng-container>\n </div>\n }\n </div>\n</ng-template>\n","import {\n DaffErrorMessageComponent,\n DaffFormLabelDirective,\n} from '@daffodil/design';\n\nimport { DaffSelectOptionDirective } from './option/option.directive';\nimport { DaffSelectComponent } from './select/select.component';\n\nexport const DAFF_SELECT_COMPONENTS = <const> [\n DaffSelectComponent,\n DaffSelectOptionDirective,\n DaffErrorMessageComponent,\n DaffFormLabelDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import * as i0 from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import * as i1 from '@daffodil/design';
4
+ import { DAFF_FORM_FIELD_COMPONENTS } from '@daffodil/design';
5
+ import { DaffTextareaComponent } from '@daffodil/design/textarea';
6
+ import * as i2 from '@angular/forms';
7
+ import { UntypedFormControl, ReactiveFormsModule, Validators } from '@angular/forms';
8
+
9
+ class BasicTextareaComponent {
10
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: BasicTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: BasicTextareaComponent, isStandalone: true, selector: "basic-textarea", ngImport: i0, template: "<daff-form-field>\n\t<daff-form-label for=\"comments\">Comments</daff-form-label>\n\t<textarea daff-textarea type=\"text\" name=\"comments\"></textarea>\n</daff-form-field>", dependencies: [{ kind: "component", type: DaffTextareaComponent, selector: "textarea[daff-textarea]" }, { kind: "component", type: i1.DaffFormFieldComponent, selector: "daff-form-field", inputs: ["appearance", "id"] }, { kind: "directive", type: i1.DaffFormFieldLabelDirective, selector: "daff-form-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: BasicTextareaComponent, decorators: [{
14
+ type: Component,
15
+ args: [{ selector: 'basic-textarea', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
16
+ DaffTextareaComponent,
17
+ DAFF_FORM_FIELD_COMPONENTS,
18
+ ], template: "<daff-form-field>\n\t<daff-form-label for=\"comments\">Comments</daff-form-label>\n\t<textarea daff-textarea type=\"text\" name=\"comments\"></textarea>\n</daff-form-field>" }]
19
+ }] });
20
+
21
+ class TextareaDisabledComponent {
22
+ constructor() {
23
+ this.disabled = new UntypedFormControl({ value: '', disabled: true });
24
+ }
25
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TextareaDisabledComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
26
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.11", type: TextareaDisabledComponent, isStandalone: true, selector: "textarea-disabled", ngImport: i0, template: "<daff-form-field>\n <daff-form-label>Comments</daff-form-label>\n <textarea daff-textarea type=\"text\" name=\"comments\" [formControl]=\"disabled\"></textarea>\n</daff-form-field>", styles: ["daff-form-field{max-width:320px}\n"], dependencies: [{ kind: "component", type: i1.DaffFormFieldComponent, selector: "daff-form-field", inputs: ["appearance", "id"] }, { kind: "directive", type: i1.DaffFormFieldLabelDirective, selector: "daff-form-label" }, { kind: "component", type: DaffTextareaComponent, selector: "textarea[daff-textarea]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TextareaDisabledComponent, decorators: [{
29
+ type: Component,
30
+ args: [{ selector: 'textarea-disabled', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
31
+ DAFF_FORM_FIELD_COMPONENTS,
32
+ DaffTextareaComponent,
33
+ ReactiveFormsModule,
34
+ ], template: "<daff-form-field>\n <daff-form-label>Comments</daff-form-label>\n <textarea daff-textarea type=\"text\" name=\"comments\" [formControl]=\"disabled\"></textarea>\n</daff-form-field>", styles: ["daff-form-field{max-width:320px}\n"] }]
35
+ }] });
36
+
37
+ class TextareaErrorComponent {
38
+ constructor() {
39
+ this.control = new UntypedFormControl('', [
40
+ Validators.required,
41
+ ]);
42
+ }
43
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TextareaErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
44
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.11", type: TextareaErrorComponent, isStandalone: true, selector: "textarea-error", ngImport: i0, template: "<daff-form-field>\n <daff-form-label for=\"error-textarea\">Comments</daff-form-label>\n <textarea daff-textarea type=\"text\" placeholder=\"Comments\" name=\"comments\" [formControl]=\"control\"></textarea>\n @if (control.errors?.required) {\n <daff-error-message>Comments is a required field.</daff-error-message>\n }\n</daff-form-field>\n", styles: ["daff-form-field{max-width:320px}\n"], dependencies: [{ kind: "component", type: i1.DaffFormFieldComponent, selector: "daff-form-field", inputs: ["appearance", "id"] }, { kind: "component", type: i1.DaffErrorMessageComponent, selector: "daff-error-message" }, { kind: "directive", type: i1.DaffFormFieldLabelDirective, selector: "daff-form-label" }, { kind: "component", type: DaffTextareaComponent, selector: "textarea[daff-textarea]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.11", ngImport: i0, type: TextareaErrorComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'textarea-error', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
49
+ DAFF_FORM_FIELD_COMPONENTS,
50
+ DaffTextareaComponent,
51
+ ReactiveFormsModule,
52
+ ], template: "<daff-form-field>\n <daff-form-label for=\"error-textarea\">Comments</daff-form-label>\n <textarea daff-textarea type=\"text\" placeholder=\"Comments\" name=\"comments\" [formControl]=\"control\"></textarea>\n @if (control.errors?.required) {\n <daff-error-message>Comments is a required field.</daff-error-message>\n }\n</daff-form-field>\n", styles: ["daff-form-field{max-width:320px}\n"] }]
53
+ }] });
54
+
55
+ const TEXTAREA_EXAMPLES = [
56
+ BasicTextareaComponent,
57
+ TextareaErrorComponent,
58
+ TextareaDisabledComponent,
59
+ ];
60
+
61
+ /**
62
+ * Generated bundle index. Do not edit.
63
+ */
64
+
65
+ export { TEXTAREA_EXAMPLES };
66
+ //# sourceMappingURL=daffodil-design-textarea-examples.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daffodil-design-textarea-examples.mjs","sources":["../../../libs/design/textarea/examples/src/basic-textarea/basic-textarea.component.ts","../../../libs/design/textarea/examples/src/basic-textarea/basic-textarea.component.html","../../../libs/design/textarea/examples/src/textarea-disabled/textarea-disabled.component.ts","../../../libs/design/textarea/examples/src/textarea-disabled/textarea-disabled.component.html","../../../libs/design/textarea/examples/src/textarea-error/textarea-error.component.ts","../../../libs/design/textarea/examples/src/textarea-error/textarea-error.component.html","../../../libs/design/textarea/examples/src/examples.ts","../../../libs/design/textarea/examples/src/daffodil-design-textarea-examples.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\n\nimport { DAFF_FORM_FIELD_COMPONENTS } from '@daffodil/design';\nimport { DaffTextareaComponent } from '@daffodil/design/textarea';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'basic-textarea',\n templateUrl: './basic-textarea.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DaffTextareaComponent,\n DAFF_FORM_FIELD_COMPONENTS,\n ],\n})\nexport class BasicTextareaComponent {\n\n}\n","<daff-form-field>\n\t<daff-form-label for=\"comments\">Comments</daff-form-label>\n\t<textarea daff-textarea type=\"text\" name=\"comments\"></textarea>\n</daff-form-field>","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport {\n ReactiveFormsModule,\n UntypedFormControl,\n} from '@angular/forms';\n\nimport { DAFF_FORM_FIELD_COMPONENTS } from '@daffodil/design';\nimport { DaffTextareaComponent } from '@daffodil/design/textarea';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea-disabled',\n templateUrl: './textarea-disabled.component.html',\n styles: [`\n daff-form-field {\n max-width: 320px;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DAFF_FORM_FIELD_COMPONENTS,\n DaffTextareaComponent,\n ReactiveFormsModule,\n ],\n})\nexport class TextareaDisabledComponent {\n disabled = new UntypedFormControl({ value : '' , disabled: true });\n}\n","<daff-form-field>\n <daff-form-label>Comments</daff-form-label>\n <textarea daff-textarea type=\"text\" name=\"comments\" [formControl]=\"disabled\"></textarea>\n</daff-form-field>","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport {\n UntypedFormControl,\n Validators,\n ReactiveFormsModule,\n} from '@angular/forms';\n\nimport { DAFF_FORM_FIELD_COMPONENTS } from '@daffodil/design';\nimport { DaffTextareaComponent } from '@daffodil/design/textarea';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'textarea-error',\n templateUrl: './textarea-error.component.html',\n styles: [`\n daff-form-field {\n max-width: 320px;\n }\n `],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n DAFF_FORM_FIELD_COMPONENTS,\n DaffTextareaComponent,\n ReactiveFormsModule,\n ],\n})\nexport class TextareaErrorComponent {\n control: UntypedFormControl = new UntypedFormControl('', [\n Validators.required,\n ]);\n}\n","<daff-form-field>\n <daff-form-label for=\"error-textarea\">Comments</daff-form-label>\n <textarea daff-textarea type=\"text\" placeholder=\"Comments\" name=\"comments\" [formControl]=\"control\"></textarea>\n @if (control.errors?.required) {\n <daff-error-message>Comments is a required field.</daff-error-message>\n }\n</daff-form-field>\n","import { BasicTextareaComponent } from './basic-textarea/basic-textarea.component';\nimport { TextareaDisabledComponent } from './textarea-disabled/textarea-disabled.component';\nimport { TextareaErrorComponent } from './textarea-error/textarea-error.component';\n\nexport const TEXTAREA_EXAMPLES = [\n BasicTextareaComponent,\n TextareaErrorComponent,\n TextareaDisabledComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}