@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.
- package/atoms/form/form-field/action/action.directive.d.ts +9 -0
- package/atoms/form/form-field/form-field/form-field.component.d.ts +33 -1
- package/atoms/form/form-field/form-field.d.ts +2 -1
- package/atoms/form/form-field/public_api.d.ts +1 -0
- package/button/README.md +58 -42
- package/button/button/button-base.directive.d.ts +10 -4
- package/button/button.d.ts +22 -1
- package/button/public_api.d.ts +1 -1
- package/button/src/button/button-base.scss +0 -1
- package/button/src/button/raised/raised-theme.scss +3 -3
- package/core/statusable/statusable.directive.d.ts +22 -2
- package/fesm2022/daffodil-design-article.mjs +2 -2
- package/fesm2022/daffodil-design-article.mjs.map +1 -1
- package/fesm2022/daffodil-design-button.mjs +58 -16
- package/fesm2022/daffodil-design-button.mjs.map +1 -1
- package/fesm2022/daffodil-design-form-field-examples.mjs +95 -0
- package/fesm2022/daffodil-design-form-field-examples.mjs.map +1 -0
- package/fesm2022/daffodil-design-input-examples.mjs +5 -5
- package/fesm2022/daffodil-design-input-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-input.mjs +11 -15
- package/fesm2022/daffodil-design-input.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal-examples.mjs +3 -2
- package/fesm2022/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal.mjs +12 -11
- package/fesm2022/daffodil-design-modal.mjs.map +1 -1
- package/fesm2022/daffodil-design-notification-examples.mjs +3 -3
- package/fesm2022/daffodil-design-notification-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-quantity-field-examples.mjs +4 -4
- package/fesm2022/daffodil-design-quantity-field-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-select-examples.mjs +117 -0
- package/fesm2022/daffodil-design-select-examples.mjs.map +1 -0
- package/fesm2022/daffodil-design-select.mjs +431 -0
- package/fesm2022/daffodil-design-select.mjs.map +1 -0
- package/fesm2022/daffodil-design-textarea-examples.mjs +66 -0
- package/fesm2022/daffodil-design-textarea-examples.mjs.map +1 -0
- package/fesm2022/daffodil-design-textarea.mjs +124 -0
- package/fesm2022/daffodil-design-textarea.mjs.map +1 -0
- package/fesm2022/daffodil-design.mjs +135 -11
- package/fesm2022/daffodil-design.mjs.map +1 -1
- package/form-field/examples/examples.d.ts +3 -0
- package/form-field/examples/form-field-appearances/form-field-appearances.component.d.ts +7 -0
- package/form-field/examples/form-field-with-action/form-field-with-action.component.d.ts +9 -0
- package/form-field/examples/form-field-with-prefix/form-field-with-prefix.component.d.ts +6 -0
- package/form-field/examples/form-field-with-suffix/form-field-with-suffix.component.d.ts +6 -0
- package/form-field/examples/index.d.ts +1 -0
- package/form-field/examples/public_api.d.ts +1 -0
- package/input/input.component.d.ts +4 -8
- package/modal/modal/modal.component.d.ts +5 -3
- package/notification/src/notification-theme.scss +34 -18
- package/package.json +1 -1
- package/scss/theme.scss +8 -0
- package/scss/theming/illuminate/illuminate.scss +2 -0
- package/select/README.md +8 -0
- package/select/animation/select-animation-state.d.ts +7 -0
- package/select/animation/select-animation.d.ts +4 -0
- package/select/animation/state.enum.d.ts +4 -0
- package/select/examples/default-select/default-select.component.d.ts +8 -0
- package/select/examples/disabled-select/disabled-select.component.d.ts +8 -0
- package/select/examples/index.d.ts +1 -0
- package/select/examples/models/address.type.d.ts +7 -0
- package/select/examples/models/addresses.d.ts +2 -0
- package/select/examples/public_api.d.ts +3 -0
- package/select/examples/select-with-error/select-with-error.component.d.ts +8 -0
- package/select/examples/skeleton-select/skeleton-select.component.d.ts +8 -0
- package/select/index.d.ts +1 -0
- package/select/option/context.type.d.ts +17 -0
- package/select/option/option.directive.d.ts +11 -0
- package/select/public_api.d.ts +4 -0
- package/select/select/select.component.d.ts +170 -0
- package/select/select.d.ts +4 -0
- package/select/src/select-theme.scss +75 -0
- package/src/atoms/form/form-field/form-field/form-field-theme.scss +35 -8
- package/textarea/README.md +28 -0
- package/textarea/examples/basic-textarea/basic-textarea.component.d.ts +5 -0
- package/textarea/examples/examples.d.ts +2 -0
- package/textarea/examples/index.d.ts +1 -0
- package/textarea/examples/public_api.d.ts +1 -0
- package/textarea/examples/textarea-disabled/textarea-disabled.component.d.ts +7 -0
- package/textarea/examples/textarea-error/textarea-error.component.d.ts +7 -0
- package/textarea/index.d.ts +1 -0
- package/textarea/public_api.d.ts +1 -0
- 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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"}
|