@tft/crispr-forms 12.2.16 → 12.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/bundles/tft-crispr-forms.umd.js +16 -11
  2. package/bundles/tft-crispr-forms.umd.js.map +1 -1
  3. package/esm2015/lib/crispr-forms.module.ngfactory.js.map +1 -1
  4. package/esm2015/lib/form-group-list/form-group-list.component.js +9 -7
  5. package/esm2015/lib/form-group-list/form-group-list.component.js.map +1 -1
  6. package/esm2015/lib/form-group-list/form-group-list.component.metadata.json +1 -1
  7. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js +6 -3
  8. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.js.map +1 -1
  9. package/esm2015/lib/material/autocomplete-chiplist-field/autocomplete-chiplist-field.component.metadata.json +1 -1
  10. package/esm2015/lib/material/material.module.ngfactory.js.map +1 -1
  11. package/esm2015/lib/material/option/option.component.js +1 -1
  12. package/esm2015/lib/material/option/option.component.js.map +1 -1
  13. package/esm2015/lib/material/option/option.component.metadata.json +1 -1
  14. package/esm2015/lib/models/autocomplete-chiplist-field.config.js.map +1 -1
  15. package/esm2015/lib/models/form-group-list.config.js.map +1 -1
  16. package/fesm2015/tft-crispr-forms.js +16 -12
  17. package/fesm2015/tft-crispr-forms.js.map +1 -1
  18. package/lib/models/autocomplete-chiplist-field.config.d.ts +2 -1
  19. package/lib/models/form-group-list.config.d.ts +8 -1
  20. package/package.json +1 -1
  21. package/tft-crispr-forms-12.2.20.tgz +0 -0
  22. package/tft-crispr-forms.metadata.json +1 -1
  23. package/tft-crispr-forms-12.2.16.tgz +0 -0
@@ -754,14 +754,16 @@
754
754
  autoInputRef: [{ type: core.ViewChild, args: ['autoInput',] }]
755
755
  };
756
756
 
757
+ var ɵ0 = function (chip, option) { return chip.value === option.value; };
757
758
  var defaultConfig$7 = {
758
759
  chipsSelectable: true,
759
760
  areChipsRemovable: true,
760
761
  tabToSelect: true,
761
- autoActiveFirstOption: false,
762
+ autoActiveFirstOption: true,
762
763
  imageUrlParam: 'image',
763
764
  typeDebounceTime: 500,
764
765
  allowDuplicates: false,
766
+ duplicateCompareFunction: ɵ0,
765
767
  separatorKeyCodes: [keycodes.ENTER],
766
768
  emptyOptionsMessage: DEFAULT_EMPTY_OPTIONS_MESSAGE,
767
769
  };
@@ -787,7 +789,7 @@
787
789
  return _this.config.allowDuplicates
788
790
  ? options
789
791
  : options === null || options === void 0 ? void 0 : options.filter(function (option) {
790
- return !chips.some(function (chip) { return chip.value === option.value; });
792
+ return !chips.some(function (chip) { return _this.config.duplicateCompareFunction(chip, option); });
791
793
  });
792
794
  }));
793
795
  };
@@ -841,7 +843,7 @@
841
843
  AutocompleteChiplistFieldComponent.decorators = [
842
844
  { type: core.Component, args: [{
843
845
  selector: 'crispr-autocomplete-chiplist-field',
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",
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",
845
847
  changeDetection: core.ChangeDetectionStrategy.OnPush,
846
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}"]
847
849
  },] }
@@ -1300,7 +1302,7 @@
1300
1302
  OptionComponent.decorators = [
1301
1303
  { type: core.Component, args: [{
1302
1304
  selector: 'crispr-option',
1303
- 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",
1304
1306
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1305
1307
  styles: [""]
1306
1308
  },] }
@@ -1460,7 +1462,7 @@
1460
1462
  };
1461
1463
 
1462
1464
  var defaultConfig = {
1463
- addItemLabel: 'ADD ITEM',
1465
+ addButtonLabel: 'ADD ITEM',
1464
1466
  minListLength: 1,
1465
1467
  };
1466
1468
  var FormGroupListMixin = crisprControlMixin(CrisprFieldComponent);
@@ -1478,11 +1480,13 @@
1478
1480
  };
1479
1481
  FormGroupListComponent.prototype.setControlValue = function (values) {
1480
1482
  var _this = this;
1481
- if (values && this.control) {
1482
- values.forEach(function (value) { return _this.addGroup(value); });
1483
- }
1484
- else if (this.config.minListLength > 0) {
1485
- this.addGroup();
1483
+ if (this.control) {
1484
+ if ((values === null || values === void 0 ? void 0 : values.length) > 0) {
1485
+ values.forEach(function (value) { return _this.addGroup(value); });
1486
+ }
1487
+ else if (this.config.displayInitialItem) {
1488
+ this.addGroup();
1489
+ }
1486
1490
  }
1487
1491
  };
1488
1492
  FormGroupListComponent.prototype.addGroup = function (value) {
@@ -1497,7 +1501,7 @@
1497
1501
  FormGroupListComponent.decorators = [
1498
1502
  { type: core.Component, args: [{
1499
1503
  selector: 'crispr-form-group-list',
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 <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",
1504
+ 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 && 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 || config.addButtonLabel}}\n </button>\n </div>\n\n</crispr-field-container>\n",
1501
1505
  changeDetection: core.ChangeDetectionStrategy.OnPush,
1502
1506
  styles: [".item-header{display:flex;justify-content:space-between}.group-footer{display:flex;justify-content:flex-end}.group-footer button.add{margin-bottom:16px}"]
1503
1507
  },] }
@@ -1681,6 +1685,7 @@
1681
1685
  exports.filterOptionsByLabel = filterOptionsByLabel;
1682
1686
  exports.isControlConfig = isControlConfig;
1683
1687
  exports.observablifyOptions = observablifyOptions;
1688
+ exports.ɵ0 = ɵ0;
1684
1689
  exports.ɵa = MaterialModule;
1685
1690
  exports.ɵb = FieldContainerComponent;
1686
1691
  exports.ɵc = InputFieldComponent;