@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs'), require('@angular/forms'), require('rxjs/operators'), require('@angular/core'), require('@angular/material/autocomplete'), require('@angular/cdk/portal'), require('@angular/common'), require('@angular/material/button'), require('@angular/material/button-toggle'), require('@angular/material/checkbox'), require('@angular/material/chips'), require('@angular/material/datepicker'), require('@angular/material/form-field'), require('@angular/material/icon'), require('@angular/material/input'), require('@angular/material/radio'), require('@angular/material/select'), require('@angular/material/slide-toggle'), require('@angular/material/slider'), require('@angular/material/tooltip'), require('@angular/material/divider'), require('@angular/material/progress-bar'), require('@tft/form-validation-handler'), require('@angular/material-moment-adapter')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@tft/crispr-forms', ['exports', 'rxjs', '@angular/forms', 'rxjs/operators', '@angular/core', '@angular/material/autocomplete', '@angular/cdk/portal', '@angular/common', '@angular/material/button', '@angular/material/button-toggle', '@angular/material/checkbox', '@angular/material/chips', '@angular/material/datepicker', '@angular/material/form-field', '@angular/material/icon', '@angular/material/input', '@angular/material/radio', '@angular/material/select', '@angular/material/slide-toggle', '@angular/material/slider', '@angular/material/tooltip', '@angular/material/divider', '@angular/material/progress-bar', '@tft/form-validation-handler', '@angular/material-moment-adapter'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.tft = global.tft || {}, global.tft['crispr-forms'] = {}), global.rxjs, global.ng.forms, global.rxjs.operators, global.ng.core, global.ng.material.autocomplete, global.ng.cdk.portal, global.ng.common, global.ng.material.button, global.ng.material.buttonToggle, global.ng.material.checkbox, global.ng.material.chips, global.ng.material.datepicker, global.ng.material.formField, global.ng.material.icon, global.ng.material.input, global.ng.material.radio, global.ng.material.select, global.ng.material.slideToggle, global.ng.material.slider, global.ng.material.tooltip, global.ng.material.divider, global.ng.material.progressBar, global.formValidationHandler, global.ng.materialMomentAdapter));
|
|
5
|
-
}(this, (function (exports, rxjs, forms, operators, core, autocomplete, portal, common, button, buttonToggle, checkbox, chips, datepicker, formField, icon, input, radio, select, slideToggle, slider, tooltip, divider, progressBar, formValidationHandler, materialMomentAdapter) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs'), require('@angular/forms'), require('rxjs/operators'), require('@angular/core'), require('@angular/material/autocomplete'), require('@angular/cdk/keycodes'), require('@angular/cdk/portal'), require('@angular/common'), require('@angular/material/button'), require('@angular/material/button-toggle'), require('@angular/material/checkbox'), require('@angular/material/chips'), require('@angular/material/datepicker'), require('@angular/material/form-field'), require('@angular/material/icon'), require('@angular/material/input'), require('@angular/material/radio'), require('@angular/material/select'), require('@angular/material/slide-toggle'), require('@angular/material/slider'), require('@angular/material/tooltip'), require('@angular/material/divider'), require('@angular/material/progress-bar'), require('@tft/form-validation-handler'), require('@angular/material-moment-adapter')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@tft/crispr-forms', ['exports', 'rxjs', '@angular/forms', 'rxjs/operators', '@angular/core', '@angular/material/autocomplete', '@angular/cdk/keycodes', '@angular/cdk/portal', '@angular/common', '@angular/material/button', '@angular/material/button-toggle', '@angular/material/checkbox', '@angular/material/chips', '@angular/material/datepicker', '@angular/material/form-field', '@angular/material/icon', '@angular/material/input', '@angular/material/radio', '@angular/material/select', '@angular/material/slide-toggle', '@angular/material/slider', '@angular/material/tooltip', '@angular/material/divider', '@angular/material/progress-bar', '@tft/form-validation-handler', '@angular/material-moment-adapter'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.tft = global.tft || {}, global.tft['crispr-forms'] = {}), global.rxjs, global.ng.forms, global.rxjs.operators, global.ng.core, global.ng.material.autocomplete, global.ng.cdk.keycodes, global.ng.cdk.portal, global.ng.common, global.ng.material.button, global.ng.material.buttonToggle, global.ng.material.checkbox, global.ng.material.chips, global.ng.material.datepicker, global.ng.material.formField, global.ng.material.icon, global.ng.material.input, global.ng.material.radio, global.ng.material.select, global.ng.material.slideToggle, global.ng.material.slider, global.ng.material.tooltip, global.ng.material.divider, global.ng.material.progressBar, global.formValidationHandler, global.ng.materialMomentAdapter));
|
|
5
|
+
}(this, (function (exports, rxjs, forms, operators, core, autocomplete, keycodes, portal, common, button, buttonToggle, checkbox, chips, datepicker, formField, icon, input, radio, select, slideToggle, slider, tooltip, divider, progressBar, formValidationHandler, materialMomentAdapter) { 'use strict';
|
|
6
6
|
|
|
7
7
|
var DEFAULT_EMPTY_OPTIONS_MESSAGE = 'No Items';
|
|
8
8
|
|
|
@@ -164,7 +164,7 @@
|
|
|
164
164
|
* @param options the options passed in from the config
|
|
165
165
|
* @param emptyMessageOption the message to display when the array is empty
|
|
166
166
|
*/
|
|
167
|
-
function observablifyOptions(options, parentGroup, searchString
|
|
167
|
+
function observablifyOptions(options, parentGroup, searchString) {
|
|
168
168
|
var calledOptions = callOptionsIfFunction(options, parentGroup, searchString);
|
|
169
169
|
// if options are a promise
|
|
170
170
|
return calledOptions instanceof Promise
|
|
@@ -178,13 +178,8 @@
|
|
|
178
178
|
: rxjs.isObservable(calledOptions)
|
|
179
179
|
// return it
|
|
180
180
|
? calledOptions
|
|
181
|
-
// else
|
|
182
|
-
: rxjs.of([
|
|
183
|
-
{
|
|
184
|
-
label: emptyOptionsMessage || DEFAULT_EMPTY_OPTIONS_MESSAGE,
|
|
185
|
-
value: null
|
|
186
|
-
}
|
|
187
|
-
]);
|
|
181
|
+
// else an empty array
|
|
182
|
+
: rxjs.of([]);
|
|
188
183
|
}
|
|
189
184
|
/**
|
|
190
185
|
* Determines if the field config is for a form control (not a divider, heading or other non-control field)
|
|
@@ -621,9 +616,9 @@
|
|
|
621
616
|
_super.prototype.ngOnInit.call(this);
|
|
622
617
|
this.group.addControl(this.config.controlName, new forms.FormControl());
|
|
623
618
|
// filter options by the search string using either the default filter function or one passed in through config
|
|
624
|
-
this.options$ = this.autocompleteInputControl.valueChanges.pipe(
|
|
625
|
-
|
|
626
|
-
}));
|
|
619
|
+
this.options$ = this.autocompleteInputControl.valueChanges.pipe(
|
|
620
|
+
// this is needed to have the options panel to open on focus
|
|
621
|
+
operators.startWith(''), operators.debounceTime(this.config.typeDebounceTime), operators.distinctUntilChanged(), operators.map(function (searchText) { return searchText || ''; }), operators.switchMap(function (searchText) { return observablifyOptions(_this.config.options, _this.group, searchText); }));
|
|
627
622
|
};
|
|
628
623
|
return AbstractAutocompleteComponent;
|
|
629
624
|
}(AbstractAutocompleteFieldMixin));
|
|
@@ -705,7 +700,8 @@
|
|
|
705
700
|
|
|
706
701
|
var defaultConfig$8 = {
|
|
707
702
|
autoActiveFirstOption: true,
|
|
708
|
-
typeDebounceTime: 500
|
|
703
|
+
typeDebounceTime: 500,
|
|
704
|
+
emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE
|
|
709
705
|
};
|
|
710
706
|
var AutocompleteFieldComponent = /** @class */ (function (_super) {
|
|
711
707
|
__extends(AutocompleteFieldComponent, _super);
|
|
@@ -716,13 +712,12 @@
|
|
|
716
712
|
}
|
|
717
713
|
AutocompleteFieldComponent.prototype.ngOnInit = function () {
|
|
718
714
|
_super.prototype.ngOnInit.call(this);
|
|
719
|
-
this.setControlValue(this.value);
|
|
720
715
|
};
|
|
721
716
|
AutocompleteFieldComponent.prototype.setControlValue = function (value) {
|
|
722
|
-
if (
|
|
717
|
+
if (this.control && value) {
|
|
723
718
|
// sets the initial value on the control if one is passed
|
|
724
|
-
this.control.setValue(value.value
|
|
725
|
-
this.autocompleteInputControl.setValue(value.label);
|
|
719
|
+
this.control.setValue(value.value || '');
|
|
720
|
+
this.autocompleteInputControl.setValue(value.label || '');
|
|
726
721
|
}
|
|
727
722
|
};
|
|
728
723
|
/**
|
|
@@ -744,23 +739,12 @@
|
|
|
744
739
|
this.control.setValue(event.option.value);
|
|
745
740
|
this.autoInputRef.nativeElement.blur();
|
|
746
741
|
};
|
|
747
|
-
/**
|
|
748
|
-
* To follow ARIA standards we want to select the active option on blur.
|
|
749
|
-
* We do this by selecting the MatAutoCompleteTrigger, which triggers the select event
|
|
750
|
-
* @param event blur event that triggers the handle blur, TODO: remove this parameter if not used by 7/4/19
|
|
751
|
-
*/
|
|
752
|
-
AutocompleteFieldComponent.prototype.handleTab = function (_event) {
|
|
753
|
-
if (this.autoInput.activeOption) {
|
|
754
|
-
this.autoInput.activeOption.select();
|
|
755
|
-
this.control.setValue(this.autoInput.activeOption.value);
|
|
756
|
-
}
|
|
757
|
-
};
|
|
758
742
|
return AutocompleteFieldComponent;
|
|
759
743
|
}(AbstractAutocompleteComponent));
|
|
760
744
|
AutocompleteFieldComponent.decorators = [
|
|
761
745
|
{ type: core.Component, args: [{
|
|
762
746
|
selector: 'crispr-autocomplete-field',
|
|
763
|
-
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
|
|
747
|
+
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",
|
|
764
748
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
765
749
|
styles: [""]
|
|
766
750
|
},] }
|
|
@@ -770,14 +754,18 @@
|
|
|
770
754
|
autoInputRef: [{ type: core.ViewChild, args: ['autoInput',] }]
|
|
771
755
|
};
|
|
772
756
|
|
|
757
|
+
var ɵ0 = function (chip, option) { return chip.value === option.value; };
|
|
773
758
|
var defaultConfig$7 = {
|
|
774
759
|
chipsSelectable: true,
|
|
775
760
|
areChipsRemovable: true,
|
|
776
|
-
|
|
761
|
+
tabToSelect: true,
|
|
777
762
|
autoActiveFirstOption: true,
|
|
778
763
|
imageUrlParam: 'image',
|
|
779
764
|
typeDebounceTime: 500,
|
|
780
|
-
allowDuplicates: false
|
|
765
|
+
allowDuplicates: false,
|
|
766
|
+
duplicateCompareFunction: ɵ0,
|
|
767
|
+
separatorKeyCodes: [keycodes.ENTER],
|
|
768
|
+
emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE,
|
|
781
769
|
};
|
|
782
770
|
var AutocompleteChiplistFieldComponent = /** @class */ (function (_super) {
|
|
783
771
|
__extends(AutocompleteChiplistFieldComponent, _super);
|
|
@@ -796,12 +784,12 @@
|
|
|
796
784
|
this.remainingOptions$ = rxjs.combineLatest([
|
|
797
785
|
this.chips$,
|
|
798
786
|
this.options$
|
|
799
|
-
]).pipe(operators.map(function (
|
|
800
|
-
var
|
|
787
|
+
]).pipe(operators.map(function (_b) {
|
|
788
|
+
var _c = __read(_b, 2), chips = _c[0], options = _c[1];
|
|
801
789
|
return _this.config.allowDuplicates
|
|
802
790
|
? options
|
|
803
|
-
: options.filter(function (option) {
|
|
804
|
-
return !chips.some(function (chip) { return chip
|
|
791
|
+
: options === null || options === void 0 ? void 0 : options.filter(function (option) {
|
|
792
|
+
return !chips.some(function (chip) { return _this.config.duplicateCompareFunction(chip, option); });
|
|
805
793
|
});
|
|
806
794
|
}));
|
|
807
795
|
};
|
|
@@ -810,20 +798,38 @@
|
|
|
810
798
|
this.chips$.next(value);
|
|
811
799
|
}
|
|
812
800
|
};
|
|
801
|
+
// handles mat selecting
|
|
813
802
|
AutocompleteChiplistFieldComponent.prototype.handleSelect = function (event) {
|
|
803
|
+
var _this = this;
|
|
814
804
|
var selectedOption = event.option.value;
|
|
815
805
|
this.chips$.next(__spreadArray(__spreadArray([], __read(this.chips$.value)), [selectedOption]));
|
|
816
806
|
this.chipInputRef.nativeElement.value = '';
|
|
817
807
|
this.autocompleteInputControl.setValue('');
|
|
808
|
+
// setTimeout needed because the panel thinks it's still open at this point
|
|
809
|
+
setTimeout(function () { return _this.chipInput.openPanel(); });
|
|
818
810
|
};
|
|
819
811
|
/**
|
|
820
812
|
* To follow ARIA standards we want to select the active option on blur.
|
|
821
|
-
*
|
|
813
|
+
* matChipInputAddOnBlur should do this but it causes buggy behaviour
|
|
814
|
+
* @param event blur event that triggers the handle blur
|
|
822
815
|
*/
|
|
823
816
|
AutocompleteChiplistFieldComponent.prototype.handleTab = function (_event) {
|
|
817
|
+
if (this.chipInput.activeOption && (this.config.tabToSelect || this.config.addChipOnBlur)) {
|
|
818
|
+
var chip = this.chipInput.activeOption.value;
|
|
819
|
+
this.chips$.next(__spreadArray(__spreadArray([], __read(this.chips$.value)), [chip]));
|
|
820
|
+
}
|
|
821
|
+
};
|
|
822
|
+
/**
|
|
823
|
+
* Handles selection via key tokens passed through separatorKeyCodes propert
|
|
824
|
+
* NOTE: If TAB is used focus does not move on to next component
|
|
825
|
+
* @param event
|
|
826
|
+
*/
|
|
827
|
+
AutocompleteChiplistFieldComponent.prototype.handleTokenEnd = function (event) {
|
|
828
|
+
var _a;
|
|
824
829
|
if (this.chipInput.activeOption) {
|
|
825
830
|
this.chipInput.activeOption.select();
|
|
826
831
|
}
|
|
832
|
+
(_a = event.chipInput) === null || _a === void 0 ? void 0 : _a.clear();
|
|
827
833
|
};
|
|
828
834
|
AutocompleteChiplistFieldComponent.prototype.mapToLabel = function (option) {
|
|
829
835
|
return option ? option.label : '';
|
|
@@ -832,17 +838,14 @@
|
|
|
832
838
|
var remainingChips = this.chips$.value.filter(function (chip) { return chip !== removedChip; });
|
|
833
839
|
this.chips$.next(remainingChips);
|
|
834
840
|
};
|
|
835
|
-
AutocompleteChiplistFieldComponent.prototype.inputFilter = function (stringToCheck, searchString) {
|
|
836
|
-
return stringToCheck.toLowerCase().includes(searchString.trim().toLowerCase());
|
|
837
|
-
};
|
|
838
841
|
return AutocompleteChiplistFieldComponent;
|
|
839
842
|
}(AbstractAutocompleteComponent));
|
|
840
843
|
AutocompleteChiplistFieldComponent.decorators = [
|
|
841
844
|
{ type: core.Component, args: [{
|
|
842
845
|
selector: 'crispr-autocomplete-chiplist-field',
|
|
843
|
-
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=\"
|
|
846
|
+
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",
|
|
844
847
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
845
|
-
styles: [""]
|
|
848
|
+
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}"]
|
|
846
849
|
},] }
|
|
847
850
|
];
|
|
848
851
|
AutocompleteChiplistFieldComponent.propDecorators = {
|
|
@@ -1299,7 +1302,7 @@
|
|
|
1299
1302
|
OptionComponent.decorators = [
|
|
1300
1303
|
{ type: core.Component, args: [{
|
|
1301
1304
|
selector: 'crispr-option',
|
|
1302
|
-
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",
|
|
1305
|
+
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",
|
|
1303
1306
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
1304
1307
|
styles: [""]
|
|
1305
1308
|
},] }
|
|
@@ -1496,9 +1499,9 @@
|
|
|
1496
1499
|
FormGroupListComponent.decorators = [
|
|
1497
1500
|
{ type: core.Component, args: [{
|
|
1498
1501
|
selector: 'crispr-form-group-list',
|
|
1499
|
-
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-
|
|
1502
|
+
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",
|
|
1500
1503
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
1501
|
-
styles: [""]
|
|
1504
|
+
styles: [".item-header{display:flex;justify-content:space-between}.group-footer{display:flex;justify-content:flex-end}.group-footer button.add{margin-bottom:16px}"]
|
|
1502
1505
|
},] }
|
|
1503
1506
|
];
|
|
1504
1507
|
|
|
@@ -1680,6 +1683,7 @@
|
|
|
1680
1683
|
exports.filterOptionsByLabel = filterOptionsByLabel;
|
|
1681
1684
|
exports.isControlConfig = isControlConfig;
|
|
1682
1685
|
exports.observablifyOptions = observablifyOptions;
|
|
1686
|
+
exports.ɵ0 = ɵ0;
|
|
1683
1687
|
exports.ɵa = MaterialModule;
|
|
1684
1688
|
exports.ɵb = FieldContainerComponent;
|
|
1685
1689
|
exports.ɵc = InputFieldComponent;
|