@tft/crispr-forms 12.2.13 → 12.2.17
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/bundles/tft-crispr-forms.umd.js +51 -47
- package/bundles/tft-crispr-forms.umd.js.map +1 -1
- package/esm2015/lib/abstracts/autocomplete-field.abstract.js +4 -4
- package/esm2015/lib/abstracts/autocomplete-field.abstract.js.map +1 -1
- package/esm2015/lib/crispr-forms.module.ngfactory.js.map +1 -1
- package/esm2015/lib/form-group-list/form-group-list.component.js +2 -2
- package/esm2015/lib/form-group-list/form-group-list.component.js.map +1 -1
- package/esm2015/lib/form-group-list/form-group-list.component.metadata.json +1 -1
- package/esm2015/lib/form.helpers.js +4 -9
- package/esm2015/lib/form.helpers.js.map +1 -1
- package/esm2015/lib/form.helpers.metadata.json +1 -1
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js +31 -10
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js.map +1 -1
- package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.metadata.json +1 -1
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.js +7 -17
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.js.map +1 -1
- package/esm2015/lib/material/autocomplete-field/autocomplete-field.component.metadata.json +1 -1
- package/esm2015/lib/material/material.module.ngfactory.js.map +1 -1
- package/esm2015/lib/material/option/option.component.js +1 -1
- package/esm2015/lib/material/option/option.component.js.map +1 -1
- package/esm2015/lib/material/option/option.component.metadata.json +1 -1
- package/esm2015/lib/models/autocomplete-chiplist-field.config.js.map +1 -1
- package/esm2015/lib/models/form-group-list.config.js.map +1 -1
- package/fesm2015/tft-crispr-forms.js +45 -42
- package/fesm2015/tft-crispr-forms.js.map +1 -1
- package/lib/form.helpers.d.ts +1 -1
- package/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.d.ts +11 -4
- package/lib/material/autocomplete-field/autocomplete-field.component.d.ts +0 -6
- package/lib/models/autocomplete-chiplist-field.config.d.ts +11 -2
- package/lib/models/form-group-list.config.d.ts +2 -0
- package/package.json +1 -1
- package/tft-crispr-forms-12.2.17.tgz +0 -0
- package/tft-crispr-forms.metadata.json +1 -1
- package/tft-crispr-forms-12.2.13.tgz +0 -0
|
@@ -4,6 +4,7 @@ import { map, startWith, debounceTime, distinctUntilChanged, switchMap, tap } fr
|
|
|
4
4
|
import { Directive, Component, ChangeDetectionStrategy, ViewChild, Optional, Self, Input, EventEmitter, Output, HostListener, NgModule, ComponentFactoryResolver, ViewContainerRef, Renderer2, Pipe } from '@angular/core';
|
|
5
5
|
import { MatSelectModule } from '@angular/material/select';
|
|
6
6
|
import { MatAutocompleteTrigger, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
7
|
+
import { ENTER } from '@angular/cdk/keycodes';
|
|
7
8
|
import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
8
9
|
import { CommonModule } from '@angular/common';
|
|
9
10
|
import { MatButtonModule } from '@angular/material/button';
|
|
@@ -183,7 +184,7 @@ function callOptionsIfFunction(options, parentGroup, searchString) {
|
|
|
183
184
|
* @param options the options passed in from the config
|
|
184
185
|
* @param emptyMessageOption the message to display when the array is empty
|
|
185
186
|
*/
|
|
186
|
-
function observablifyOptions(options, parentGroup, searchString
|
|
187
|
+
function observablifyOptions(options, parentGroup, searchString) {
|
|
187
188
|
const calledOptions = callOptionsIfFunction(options, parentGroup, searchString);
|
|
188
189
|
// if options are a promise
|
|
189
190
|
return calledOptions instanceof Promise
|
|
@@ -197,13 +198,8 @@ function observablifyOptions(options, parentGroup, searchString, emptyOptionsMes
|
|
|
197
198
|
: isObservable(calledOptions)
|
|
198
199
|
// return it
|
|
199
200
|
? calledOptions
|
|
200
|
-
// else
|
|
201
|
-
: of([
|
|
202
|
-
{
|
|
203
|
-
label: emptyOptionsMessage || DEFAULT_EMPTY_OPTIONS_MESSAGE,
|
|
204
|
-
value: null
|
|
205
|
-
}
|
|
206
|
-
]);
|
|
201
|
+
// else an empty array
|
|
202
|
+
: of([]);
|
|
207
203
|
}
|
|
208
204
|
/**
|
|
209
205
|
* Determines if the field config is for a form control (not a divider, heading or other non-control field)
|
|
@@ -309,9 +305,9 @@ class AbstractAutocompleteComponent extends AbstractAutocompleteFieldMixin {
|
|
|
309
305
|
super.ngOnInit();
|
|
310
306
|
this.group.addControl(this.config.controlName, new FormControl());
|
|
311
307
|
// filter options by the search string using either the default filter function or one passed in through config
|
|
312
|
-
this.options$ = this.autocompleteInputControl.valueChanges.pipe(
|
|
313
|
-
|
|
314
|
-
|
|
308
|
+
this.options$ = this.autocompleteInputControl.valueChanges.pipe(
|
|
309
|
+
// this is needed to have the options panel to open on focus
|
|
310
|
+
startWith(''), debounceTime(this.config.typeDebounceTime), distinctUntilChanged(), map(searchText => searchText || ''), switchMap((searchText) => observablifyOptions(this.config.options, this.group, searchText)));
|
|
315
311
|
}
|
|
316
312
|
}
|
|
317
313
|
AbstractAutocompleteComponent.decorators = [
|
|
@@ -386,7 +382,8 @@ SelectFieldComponent.propDecorators = {
|
|
|
386
382
|
|
|
387
383
|
const defaultConfig$8 = {
|
|
388
384
|
autoActiveFirstOption: true,
|
|
389
|
-
typeDebounceTime: 500
|
|
385
|
+
typeDebounceTime: 500,
|
|
386
|
+
emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE
|
|
390
387
|
};
|
|
391
388
|
class AutocompleteFieldComponent extends AbstractAutocompleteComponent {
|
|
392
389
|
constructor() {
|
|
@@ -395,13 +392,12 @@ class AutocompleteFieldComponent extends AbstractAutocompleteComponent {
|
|
|
395
392
|
}
|
|
396
393
|
ngOnInit() {
|
|
397
394
|
super.ngOnInit();
|
|
398
|
-
this.setControlValue(this.value);
|
|
399
395
|
}
|
|
400
396
|
setControlValue(value) {
|
|
401
|
-
if (
|
|
397
|
+
if (this.control && value) {
|
|
402
398
|
// sets the initial value on the control if one is passed
|
|
403
|
-
this.control.setValue(value.value
|
|
404
|
-
this.autocompleteInputControl.setValue(value.label);
|
|
399
|
+
this.control.setValue(value.value || '');
|
|
400
|
+
this.autocompleteInputControl.setValue(value.label || '');
|
|
405
401
|
}
|
|
406
402
|
}
|
|
407
403
|
/**
|
|
@@ -423,22 +419,11 @@ class AutocompleteFieldComponent extends AbstractAutocompleteComponent {
|
|
|
423
419
|
this.control.setValue(event.option.value);
|
|
424
420
|
this.autoInputRef.nativeElement.blur();
|
|
425
421
|
}
|
|
426
|
-
/**
|
|
427
|
-
* To follow ARIA standards we want to select the active option on blur.
|
|
428
|
-
* We do this by selecting the MatAutoCompleteTrigger, which triggers the select event
|
|
429
|
-
* @param event blur event that triggers the handle blur, TODO: remove this parameter if not used by 7/4/19
|
|
430
|
-
*/
|
|
431
|
-
handleTab(_event) {
|
|
432
|
-
if (this.autoInput.activeOption) {
|
|
433
|
-
this.autoInput.activeOption.select();
|
|
434
|
-
this.control.setValue(this.autoInput.activeOption.value);
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
422
|
}
|
|
438
423
|
AutocompleteFieldComponent.decorators = [
|
|
439
424
|
{ type: Component, args: [{
|
|
440
425
|
selector: 'crispr-autocomplete-field',
|
|
441
|
-
template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matAutocomplete]=\"auto\"\n
|
|
426
|
+
template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matAutocomplete]=\"auto\"\n role=\"textbox\"\n type=\"textbox\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n #autoInput>\n\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info \">\n </crispr-info>\n\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [autoActiveFirstOption]=\"config.autoActiveFirstOption\"\n (optionSelected)=\"handleSelect($event)\"\n [displayWith]=\"displayLabel(options$ | async)\">\n\n <ng-container *ngIf=\"options$ | async as options; else emptyOption\">\n <ng-container *ngIf=\"options.length > 0; else emptyOption\">\n <mat-option\n *ngFor=\"let option of options$ | async\"\n [value]=\"option.value\">\n <crispr-option [option]=\"option\"></crispr-option>\n </mat-option>\n </ng-container>\n\n </ng-container>\n <ng-template #emptyOption>\n <mat-option disabled=\"true\">\n {{config.emptyOptionsMessage}}\n </mat-option>\n </ng-template>\n\n </mat-autocomplete>\n </mat-form-field>\n</crispr-field-container>\n",
|
|
442
427
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
443
428
|
styles: [""]
|
|
444
429
|
},] }
|
|
@@ -448,14 +433,18 @@ AutocompleteFieldComponent.propDecorators = {
|
|
|
448
433
|
autoInputRef: [{ type: ViewChild, args: ['autoInput',] }]
|
|
449
434
|
};
|
|
450
435
|
|
|
436
|
+
const ɵ0 = (chip, option) => chip.value === option.value;
|
|
451
437
|
const defaultConfig$7 = {
|
|
452
438
|
chipsSelectable: true,
|
|
453
439
|
areChipsRemovable: true,
|
|
454
|
-
|
|
440
|
+
tabToSelect: true,
|
|
455
441
|
autoActiveFirstOption: true,
|
|
456
442
|
imageUrlParam: 'image',
|
|
457
443
|
typeDebounceTime: 500,
|
|
458
|
-
allowDuplicates: false
|
|
444
|
+
allowDuplicates: false,
|
|
445
|
+
duplicateCompareFunction: ɵ0,
|
|
446
|
+
separatorKeyCodes: [ENTER],
|
|
447
|
+
emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE,
|
|
459
448
|
};
|
|
460
449
|
class AutocompleteChiplistFieldComponent extends AbstractAutocompleteComponent {
|
|
461
450
|
constructor() {
|
|
@@ -474,8 +463,8 @@ class AutocompleteChiplistFieldComponent extends AbstractAutocompleteComponent {
|
|
|
474
463
|
]).pipe(map(([chips, options]) => {
|
|
475
464
|
return this.config.allowDuplicates
|
|
476
465
|
? options
|
|
477
|
-
: options.filter(option => {
|
|
478
|
-
return !chips.some(chip => chip
|
|
466
|
+
: options === null || options === void 0 ? void 0 : options.filter(option => {
|
|
467
|
+
return !chips.some(chip => this.config.duplicateCompareFunction(chip, option));
|
|
479
468
|
});
|
|
480
469
|
}));
|
|
481
470
|
}
|
|
@@ -484,20 +473,37 @@ class AutocompleteChiplistFieldComponent extends AbstractAutocompleteComponent {
|
|
|
484
473
|
this.chips$.next(value);
|
|
485
474
|
}
|
|
486
475
|
}
|
|
476
|
+
// handles mat selecting
|
|
487
477
|
handleSelect(event) {
|
|
488
478
|
const selectedOption = event.option.value;
|
|
489
479
|
this.chips$.next([...this.chips$.value, selectedOption]);
|
|
490
480
|
this.chipInputRef.nativeElement.value = '';
|
|
491
481
|
this.autocompleteInputControl.setValue('');
|
|
482
|
+
// setTimeout needed because the panel thinks it's still open at this point
|
|
483
|
+
setTimeout(() => this.chipInput.openPanel());
|
|
492
484
|
}
|
|
493
485
|
/**
|
|
494
486
|
* To follow ARIA standards we want to select the active option on blur.
|
|
495
|
-
*
|
|
487
|
+
* matChipInputAddOnBlur should do this but it causes buggy behaviour
|
|
488
|
+
* @param event blur event that triggers the handle blur
|
|
496
489
|
*/
|
|
497
490
|
handleTab(_event) {
|
|
491
|
+
if (this.chipInput.activeOption && (this.config.tabToSelect || this.config.addChipOnBlur)) {
|
|
492
|
+
const chip = this.chipInput.activeOption.value;
|
|
493
|
+
this.chips$.next([...this.chips$.value, chip]);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Handles selection via key tokens passed through separatorKeyCodes propert
|
|
498
|
+
* NOTE: If TAB is used focus does not move on to next component
|
|
499
|
+
* @param event
|
|
500
|
+
*/
|
|
501
|
+
handleTokenEnd(event) {
|
|
502
|
+
var _a;
|
|
498
503
|
if (this.chipInput.activeOption) {
|
|
499
504
|
this.chipInput.activeOption.select();
|
|
500
505
|
}
|
|
506
|
+
(_a = event.chipInput) === null || _a === void 0 ? void 0 : _a.clear();
|
|
501
507
|
}
|
|
502
508
|
mapToLabel(option) {
|
|
503
509
|
return option ? option.label : '';
|
|
@@ -506,16 +512,13 @@ class AutocompleteChiplistFieldComponent extends AbstractAutocompleteComponent {
|
|
|
506
512
|
const remainingChips = this.chips$.value.filter(chip => chip !== removedChip);
|
|
507
513
|
this.chips$.next(remainingChips);
|
|
508
514
|
}
|
|
509
|
-
inputFilter(stringToCheck, searchString) {
|
|
510
|
-
return stringToCheck.toLowerCase().includes(searchString.trim().toLowerCase());
|
|
511
|
-
}
|
|
512
515
|
}
|
|
513
516
|
AutocompleteChiplistFieldComponent.decorators = [
|
|
514
517
|
{ type: Component, args: [{
|
|
515
518
|
selector: 'crispr-autocomplete-chiplist-field',
|
|
516
|
-
template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n\n <mat-chip-list\n #chipList>\n <mat-chip\n class=\"refinement-chip\"\n *ngFor=\"let chip of controlValue$ | async\"\n [selectable]=\"config.chipsSelectable\"\n [removable]=\"config.areChipsRemovable\"\n (removed)=\"removeChip(chip)\">\n {{chip.label}}\n <mat-icon\n matChipRemove\n *ngIf=\"config.areChipsRemovable\">\n cancel\n </mat-icon>\n </mat-chip>\n\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matChipInputFor]=\"chipList\"\n [matAutocomplete]=\"auto\"\n (keydown.tab)=\"handleTab($event)\"\n role=\"
|
|
519
|
+
template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n\n <mat-chip-list\n #chipList>\n <mat-chip\n class=\"refinement-chip\"\n *ngFor=\"let chip of controlValue$ | async\"\n [selectable]=\"config.chipsSelectable\"\n [removable]=\"config.areChipsRemovable\"\n (removed)=\"removeChip(chip)\">\n <span *ngIf=\"chip.imageUrl as imageUrl\" class=\"image-container\">\n <img [src]=\"imageUrl\" alt=\"image of {{chip.label}}\">\n </span>\n {{chip.label}}\n <mat-icon\n matChipRemove\n *ngIf=\"config.areChipsRemovable\">\n cancel\n </mat-icon>\n </mat-chip>\n\n <input\n matInput\n [formControl]=\"autocompleteInputControl\"\n [placeholder]=\"config.placeholder\"\n [matChipInputFor]=\"chipList\"\n [matAutocomplete]=\"auto\"\n (keydown.tab)=\"handleTab($event)\"\n [matChipInputSeparatorKeyCodes]=\"config.separatorKeyCodes\"\n (matChipInputTokenEnd)=\"handleTokenEnd($event)\"\n role=\"searchbox\"\n type=\"text\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n spellcheck=\"false\"\n #autoInput/>\n <span *ngIf=\"config.fieldSuffix\" matSuffix>{{config.fieldSuffix}}</span>\n <crispr-info\n *ngIf=\"config.info\"\n matSuffix\n [info]=\"config.info \">\n </crispr-info>\n\n </mat-chip-list>\n <mat-autocomplete\n #auto=\"matAutocomplete\"\n [autoActiveFirstOption]=\"this.config.autoActiveFirstOption\"\n (optionSelected)=\"handleSelect($event)\"\n [displayWith]=\"mapToLabel\">\n <ng-container *ngIf=\"remainingOptions$ | async as remainingOptions; else emptyOption\">\n <ng-container *ngIf=\"remainingOptions.length > 0; else emptyOption\">\n <mat-option\n *ngFor=\"let option of remainingOptions$ | async\"\n [value]=\"option\">\n <crispr-option [option]=\"option\"></crispr-option>\n </mat-option>\n </ng-container>\n\n </ng-container>\n <ng-template #emptyOption>\n <mat-option disabled=\"true\">\n {{config.emptyOptionsMessage}}\n </mat-option>\n </ng-template>\n </mat-autocomplete>\n\n\n </mat-form-field>\n</crispr-field-container>\n",
|
|
517
520
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
518
|
-
styles: [""]
|
|
521
|
+
styles: [".refinement-chip .image-container{width:26px;height:26px;border-radius:50%;overflow:hidden;margin:-2px 4px -2px -8px}.refinement-chip .image-container img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}"]
|
|
519
522
|
},] }
|
|
520
523
|
];
|
|
521
524
|
AutocompleteChiplistFieldComponent.propDecorators = {
|
|
@@ -923,7 +926,7 @@ class OptionComponent {
|
|
|
923
926
|
OptionComponent.decorators = [
|
|
924
927
|
{ type: Component, args: [{
|
|
925
928
|
selector: 'crispr-option',
|
|
926
|
-
template: "<img\n *ngIf=\"option.imageUrl\"\n [src]=\"option.imageUrl\"\n style=\"vertical-align:middle;\"\n aria-hidden\n height=\"25\"/>\n{{ option.label }}\n",
|
|
929
|
+
template: "<img\n *ngIf=\"option.imageUrl\"\n [src]=\"option.imageUrl\"\n alt=\"image of {{option.label}}\"\n style=\"vertical-align:middle;\"\n aria-hidden\n height=\"25\"/>\n{{ option.label }}\n",
|
|
927
930
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
928
931
|
styles: [""]
|
|
929
932
|
},] }
|
|
@@ -1112,9 +1115,9 @@ class FormGroupListComponent extends FormGroupListMixin {
|
|
|
1112
1115
|
FormGroupListComponent.decorators = [
|
|
1113
1116
|
{ type: Component, args: [{
|
|
1114
1117
|
selector: 'crispr-form-group-list',
|
|
1115
|
-
template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n <!-- TODO: add sortBy function -->\n <div *ngFor=\"let control of formArray?.controls; let i = index;\">\n <!-- TODO: use content projection to allow custom item label component -->\n <span class=\"mat-
|
|
1118
|
+
template: "\n<crispr-field-container\n [config]=\"config\"\n [group]=\"group\"\n [formGroup]=\"group\">\n\n <div [formArrayName]=\"config.controlName\">\n <!-- TODO: add sortBy function -->\n <div *ngFor=\"let control of formArray?.controls; let i = index;\">\n <!-- TODO: use content projection to allow custom item label component -->\n <div class=\"item-header\">\n <span class=\"mat-h2\" *ngIf=\"config.itemLabelBuilder\"> {{ config.itemLabelBuilder(i) }} </span>\n <button\n mat-icon-button\n *ngIf=\"i + 1 > config.minListLength\">\n <mat-icon (click)=\"deleteGroup(i)\">delete</mat-icon>\n </button>\n </div>\n <div\n [formGroupName]=\"i\">\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [config]=\"field\"\n [value]=\"value[i] | initialControlValue : field\"\n [group]=\"control\">\n </ng-container>\n </div>\n </div>\n </div>\n <div class=\"group-footer\">\n <button\n type=\"button\"\n class=\"add\"\n mat-raised-button\n [color]=\"config.addButtonColor\"\n (click)=\"addGroup()\">\n {{config.addItemLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n",
|
|
1116
1119
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1117
|
-
styles: [""]
|
|
1120
|
+
styles: [".item-header{display:flex;justify-content:space-between}.group-footer{display:flex;justify-content:flex-end}.group-footer button.add{margin-bottom:16px}"]
|
|
1118
1121
|
},] }
|
|
1119
1122
|
];
|
|
1120
1123
|
|
|
@@ -1254,5 +1257,5 @@ CrisprFormsModule.decorators = [
|
|
|
1254
1257
|
* Generated bundle index. Do not edit.
|
|
1255
1258
|
*/
|
|
1256
1259
|
|
|
1257
|
-
export { AbstractAutocompleteComponent, AutocompleteChiplistFieldComponent, AutocompleteFieldComponent, ButtonComponent, CheckboxFieldComponent, ControlType, CrisprFieldComponent, CrisprFormComponent, CrisprFormsModule, DEFAULT_EMPTY_OPTIONS_MESSAGE, DatepickerFieldComponent, DividerComponent, FileUploadComponent, HeadingComponent, InputFieldComponent, RadioFieldComponent, SelectFieldComponent, SliderFieldComponent, TextareaFieldComponent, UnitConversionFieldComponent, buildFormGroupFromConfig, callOptionsIfFunction, checkControlForValues, checkControlsForValues, computeValueFromFields, createControlForType, crisprControlMixin, filterOptionsByLabel, isControlConfig, observablifyOptions, MaterialModule as ɵa, FieldContainerComponent as ɵb, InputFieldComponent as ɵc, SelectFieldComponent as ɵd, RadioFieldComponent as ɵe, AutocompleteFieldComponent as ɵf, AbstractAutocompleteComponent as ɵg, AutocompleteChiplistFieldComponent as ɵh, CheckboxFieldComponent as ɵi, TextareaFieldComponent as ɵj, DatepickerFieldComponent as ɵk, SliderFieldComponent as ɵl, ButtonComponent as ɵm, CrisprFieldComponent as ɵn, HeadingComponent as ɵo, DividerComponent as ɵp, FileUploadComponent as ɵq, UnitConversionFieldComponent as ɵr, InfoComponent as ɵs, OptionComponent as ɵt, SelectedFileComponent as ɵu, FileDropzoneDirective as ɵv, CrisprFieldDirective as ɵw, FormGroupListComponent as ɵx, InitialControlValuePipe as ɵy, SubGroupComponent as ɵz };
|
|
1260
|
+
export { AbstractAutocompleteComponent, AutocompleteChiplistFieldComponent, AutocompleteFieldComponent, ButtonComponent, CheckboxFieldComponent, ControlType, CrisprFieldComponent, CrisprFormComponent, CrisprFormsModule, DEFAULT_EMPTY_OPTIONS_MESSAGE, DatepickerFieldComponent, DividerComponent, FileUploadComponent, HeadingComponent, InputFieldComponent, RadioFieldComponent, SelectFieldComponent, SliderFieldComponent, TextareaFieldComponent, UnitConversionFieldComponent, buildFormGroupFromConfig, callOptionsIfFunction, checkControlForValues, checkControlsForValues, computeValueFromFields, createControlForType, crisprControlMixin, filterOptionsByLabel, isControlConfig, observablifyOptions, ɵ0, MaterialModule as ɵa, FieldContainerComponent as ɵb, InputFieldComponent as ɵc, SelectFieldComponent as ɵd, RadioFieldComponent as ɵe, AutocompleteFieldComponent as ɵf, AbstractAutocompleteComponent as ɵg, AutocompleteChiplistFieldComponent as ɵh, CheckboxFieldComponent as ɵi, TextareaFieldComponent as ɵj, DatepickerFieldComponent as ɵk, SliderFieldComponent as ɵl, ButtonComponent as ɵm, CrisprFieldComponent as ɵn, HeadingComponent as ɵo, DividerComponent as ɵp, FileUploadComponent as ɵq, UnitConversionFieldComponent as ɵr, InfoComponent as ɵs, OptionComponent as ɵt, SelectedFileComponent as ɵu, FileDropzoneDirective as ɵv, CrisprFieldDirective as ɵw, FormGroupListComponent as ɵx, InitialControlValuePipe as ɵy, SubGroupComponent as ɵz };
|
|
1258
1261
|
//# sourceMappingURL=tft-crispr-forms.js.map
|