@tft/crispr-forms 12.2.11 → 12.2.15
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 +57 -50
- 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 +1 -1
- 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 +28 -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/datepicker-field/datepicker-field.component.js +9 -3
- package/esm2015/lib/material/datepicker-field/datepicker-field.component.js.map +1 -1
- package/esm2015/lib/material/datepicker-field/datepicker-field.component.metadata.json +1 -1
- package/esm2015/lib/material/material.module.ngfactory.js.map +1 -1
- package/esm2015/lib/models/autocomplete-chiplist-field.config.js.map +1 -1
- package/esm2015/lib/models/datepicker-field.config.js.map +1 -1
- package/esm2015/lib/pipes/initial-control-value.pipe.js +2 -2
- package/esm2015/lib/pipes/initial-control-value.pipe.js.map +1 -1
- package/fesm2015/tft-crispr-forms.js +51 -44
- 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 +9 -1
- package/lib/models/datepicker-field.config.d.ts +4 -1
- package/package.json +1 -1
- package/tft-crispr-forms-12.2.15.tgz +0 -0
- package/tft-crispr-forms.metadata.json +1 -1
- package/tft-crispr-forms-12.2.11.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
|
},] }
|
|
@@ -773,11 +757,13 @@
|
|
|
773
757
|
var defaultConfig$7 = {
|
|
774
758
|
chipsSelectable: true,
|
|
775
759
|
areChipsRemovable: true,
|
|
776
|
-
|
|
777
|
-
autoActiveFirstOption:
|
|
760
|
+
tabToSelect: true,
|
|
761
|
+
autoActiveFirstOption: false,
|
|
778
762
|
imageUrlParam: 'image',
|
|
779
763
|
typeDebounceTime: 500,
|
|
780
|
-
allowDuplicates: false
|
|
764
|
+
allowDuplicates: false,
|
|
765
|
+
separatorKeyCodes: [keycodes.ENTER],
|
|
766
|
+
emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE,
|
|
781
767
|
};
|
|
782
768
|
var AutocompleteChiplistFieldComponent = /** @class */ (function (_super) {
|
|
783
769
|
__extends(AutocompleteChiplistFieldComponent, _super);
|
|
@@ -796,11 +782,11 @@
|
|
|
796
782
|
this.remainingOptions$ = rxjs.combineLatest([
|
|
797
783
|
this.chips$,
|
|
798
784
|
this.options$
|
|
799
|
-
]).pipe(operators.map(function (
|
|
800
|
-
var
|
|
785
|
+
]).pipe(operators.map(function (_b) {
|
|
786
|
+
var _c = __read(_b, 2), chips = _c[0], options = _c[1];
|
|
801
787
|
return _this.config.allowDuplicates
|
|
802
788
|
? options
|
|
803
|
-
: options.filter(function (option) {
|
|
789
|
+
: options === null || options === void 0 ? void 0 : options.filter(function (option) {
|
|
804
790
|
return !chips.some(function (chip) { return chip.value === option.value; });
|
|
805
791
|
});
|
|
806
792
|
}));
|
|
@@ -810,20 +796,38 @@
|
|
|
810
796
|
this.chips$.next(value);
|
|
811
797
|
}
|
|
812
798
|
};
|
|
799
|
+
// handles mat selecting
|
|
813
800
|
AutocompleteChiplistFieldComponent.prototype.handleSelect = function (event) {
|
|
801
|
+
var _this = this;
|
|
814
802
|
var selectedOption = event.option.value;
|
|
815
803
|
this.chips$.next(__spreadArray(__spreadArray([], __read(this.chips$.value)), [selectedOption]));
|
|
816
804
|
this.chipInputRef.nativeElement.value = '';
|
|
817
805
|
this.autocompleteInputControl.setValue('');
|
|
806
|
+
// setTimeout needed because the panel thinks it's still open at this point
|
|
807
|
+
setTimeout(function () { return _this.chipInput.openPanel(); });
|
|
818
808
|
};
|
|
819
809
|
/**
|
|
820
810
|
* To follow ARIA standards we want to select the active option on blur.
|
|
821
|
-
*
|
|
811
|
+
* matChipInputAddOnBlur should do this but it causes buggy behaviour
|
|
812
|
+
* @param event blur event that triggers the handle blur
|
|
822
813
|
*/
|
|
823
814
|
AutocompleteChiplistFieldComponent.prototype.handleTab = function (_event) {
|
|
815
|
+
if (this.chipInput.activeOption && (this.config.tabToSelect || this.config.addChipOnBlur)) {
|
|
816
|
+
var chip = this.chipInput.activeOption.value;
|
|
817
|
+
this.chips$.next(__spreadArray(__spreadArray([], __read(this.chips$.value)), [chip]));
|
|
818
|
+
}
|
|
819
|
+
};
|
|
820
|
+
/**
|
|
821
|
+
* Handles selection via key tokens passed through separatorKeyCodes propert
|
|
822
|
+
* NOTE: If TAB is used focus does not move on to next component
|
|
823
|
+
* @param event
|
|
824
|
+
*/
|
|
825
|
+
AutocompleteChiplistFieldComponent.prototype.handleTokenEnd = function (event) {
|
|
826
|
+
var _a;
|
|
824
827
|
if (this.chipInput.activeOption) {
|
|
825
828
|
this.chipInput.activeOption.select();
|
|
826
829
|
}
|
|
830
|
+
(_a = event.chipInput) === null || _a === void 0 ? void 0 : _a.clear();
|
|
827
831
|
};
|
|
828
832
|
AutocompleteChiplistFieldComponent.prototype.mapToLabel = function (option) {
|
|
829
833
|
return option ? option.label : '';
|
|
@@ -832,17 +836,14 @@
|
|
|
832
836
|
var remainingChips = this.chips$.value.filter(function (chip) { return chip !== removedChip; });
|
|
833
837
|
this.chips$.next(remainingChips);
|
|
834
838
|
};
|
|
835
|
-
AutocompleteChiplistFieldComponent.prototype.inputFilter = function (stringToCheck, searchString) {
|
|
836
|
-
return stringToCheck.toLowerCase().includes(searchString.trim().toLowerCase());
|
|
837
|
-
};
|
|
838
839
|
return AutocompleteChiplistFieldComponent;
|
|
839
840
|
}(AbstractAutocompleteComponent));
|
|
840
841
|
AutocompleteChiplistFieldComponent.decorators = [
|
|
841
842
|
{ type: core.Component, args: [{
|
|
842
843
|
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=\"
|
|
844
|
+
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=\"\">\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
845
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
845
|
-
styles: [""]
|
|
846
|
+
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
847
|
},] }
|
|
847
848
|
];
|
|
848
849
|
AutocompleteChiplistFieldComponent.propDecorators = {
|
|
@@ -974,6 +975,12 @@
|
|
|
974
975
|
var _this = _super.apply(this, __spreadArray([], __read(arguments))) || this;
|
|
975
976
|
_this.defaultConfig = defaultConfig$3;
|
|
976
977
|
return _this;
|
|
978
|
+
// handleSelectedChange(event, picker: MatDatepicker<unknown>) {
|
|
979
|
+
// console.log({event, picker})
|
|
980
|
+
// if(this.config.selectedChange) {
|
|
981
|
+
// this.config.selectedChange(event, picker);
|
|
982
|
+
// }
|
|
983
|
+
// }
|
|
977
984
|
}
|
|
978
985
|
DatepickerFieldComponent.prototype.ngOnInit = function () {
|
|
979
986
|
var _a, _b;
|
|
@@ -987,8 +994,8 @@
|
|
|
987
994
|
this.dateClass$ = this.config.dateClass ? (_b = this.config) === null || _b === void 0 ? void 0 : _b.dateClass(this.group) : rxjs.of(function () { return ''; });
|
|
988
995
|
};
|
|
989
996
|
DatepickerFieldComponent.prototype.ngAfterContentInit = function () {
|
|
990
|
-
if (this.config.
|
|
991
|
-
this.calendarFooterPortal = new portal.ComponentPortal(this.config.
|
|
997
|
+
if (this.config.datepickerActions) {
|
|
998
|
+
this.calendarFooterPortal = new portal.ComponentPortal(this.config.datepickerActions);
|
|
992
999
|
}
|
|
993
1000
|
};
|
|
994
1001
|
return DatepickerFieldComponent;
|
|
@@ -996,7 +1003,7 @@
|
|
|
996
1003
|
DatepickerFieldComponent.decorators = [
|
|
997
1004
|
{ type: core.Component, args: [{
|
|
998
1005
|
selector: 'crispr-datepicker-field',
|
|
999
|
-
template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"config.datepickerFilter\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n [touchUi]=\"config.touchUi\"\n [startView]=\"config.startView\"\n [startAt]=\"startAt$ | async\"\n [dateClass]=\"dateClass || (dateClass$ | async)\"\n #picker>\n <mat-datepicker-actions>\n <ng-template [cdkPortalOutlet]=\"calendarFooterPortal\"></ng-template>\n </mat-datepicker-actions>\n </mat-datepicker>\n\n </mat-form-field>\n</crispr-field-container>\n\n",
|
|
1006
|
+
template: "<crispr-field-container\n [config]=\"config\"\n [group]=\"group\">\n <mat-form-field\n [color]=\"config.color\"\n [appearance]=\"config.appearance\"\n [formGroup]=\"group\">\n <mat-label *ngIf=\"config.label\">\n {{config.label}}\n </mat-label>\n <input\n matInput\n [formControlName]=\"config.controlName\"\n [min]=\"config.min\"\n [max]=\"config.max\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"config.datepickerFilter\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker\n [touchUi]=\"config.touchUi\"\n [startView]=\"config.startView\"\n [startAt]=\"startAt$ | async\"\n [dateClass]=\"dateClass || (dateClass$ | async)\"\n #picker>\n <mat-datepicker-actions *ngIf=\"calendarFooterPortal\">\n <ng-template [cdkPortalOutlet]=\"calendarFooterPortal\"></ng-template>\n </mat-datepicker-actions>\n </mat-datepicker>\n\n </mat-form-field>\n</crispr-field-container>\n\n",
|
|
1000
1007
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
1001
1008
|
styles: [""]
|
|
1002
1009
|
},] }
|
|
@@ -1490,7 +1497,7 @@
|
|
|
1490
1497
|
FormGroupListComponent.decorators = [
|
|
1491
1498
|
{ type: core.Component, args: [{
|
|
1492
1499
|
selector: 'crispr-form-group-list',
|
|
1493
|
-
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-h3\" *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 [formGroupName]=\"i\">\n <ng-container\n *ngFor=\"let field of config.itemConfig.fields;\"\n crisprField\n [config]=\"field\"\n [value]=\"value | initialControlValue : field\"\n [group]=\"control\">\n </ng-container>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"addGroup()\">\n {{config.addItemLabel}}\n </button>\n\n</crispr-field-container>\n",
|
|
1500
|
+
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-h3\" *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 [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\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"addGroup()\">\n {{config.addItemLabel}}\n </button>\n\n</crispr-field-container>\n",
|
|
1494
1501
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
1495
1502
|
styles: [""]
|
|
1496
1503
|
},] }
|
|
@@ -1598,8 +1605,8 @@
|
|
|
1598
1605
|
}
|
|
1599
1606
|
// TODO: does changing any to unknown break anything?
|
|
1600
1607
|
InitialControlValuePipe.prototype.transform = function (initialFormValue, fieldConfig) {
|
|
1601
|
-
return initialFormValue && isControlConfig(fieldConfig)
|
|
1602
|
-
? initialFormValue[fieldConfig.controlName]
|
|
1608
|
+
return (initialFormValue && isControlConfig(fieldConfig))
|
|
1609
|
+
? initialFormValue[fieldConfig.controlName] || null
|
|
1603
1610
|
: null;
|
|
1604
1611
|
};
|
|
1605
1612
|
return InitialControlValuePipe;
|