@datorama/core 22.9.2-rc.4 → 22.9.3

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 (44) hide show
  1. package/bundles/datorama-core.umd.js +77 -84
  2. package/bundles/datorama-core.umd.js.map +1 -1
  3. package/bundles/datorama-core.umd.min.js +14 -14
  4. package/bundles/datorama-core.umd.min.js.map +1 -1
  5. package/datorama-core.d.ts +0 -1
  6. package/datorama-core.metadata.json +1 -1
  7. package/esm2015/datorama-core.js +1 -2
  8. package/esm2015/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  9. package/esm2015/lib/grid-v2/grid/grid-v2.types.js +1 -1
  10. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +2 -5
  11. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +22 -6
  12. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  13. package/esm2015/lib/grid-v2/grid-store/grid.service.js +2 -3
  14. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
  15. package/esm2015/lib/icon/icon.types.js +1 -1
  16. package/esm2015/lib/rich-text/rich-text.directive.js +38 -20
  17. package/esm2015/lib/select/select.component.js +10 -5
  18. package/esm2015/lib/version.js +2 -2
  19. package/esm5/datorama-core.js +1 -2
  20. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  21. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  22. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +2 -5
  23. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +29 -6
  24. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  25. package/esm5/lib/grid-v2/grid-store/grid.service.js +2 -3
  26. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
  27. package/esm5/lib/icon/icon.types.js +1 -1
  28. package/esm5/lib/rich-text/rich-text.directive.js +39 -21
  29. package/esm5/lib/select/select.component.js +10 -5
  30. package/esm5/lib/version.js +2 -2
  31. package/fesm2015/datorama-core.js +70 -76
  32. package/fesm2015/datorama-core.js.map +1 -1
  33. package/fesm5/datorama-core.js +78 -84
  34. package/fesm5/datorama-core.js.map +1 -1
  35. package/lib/grid-v2/grid/grid-v2.types.d.ts +2 -1
  36. package/lib/grid-v2/grid-filter/grid-filter.component.d.ts +4 -1
  37. package/lib/grid-v2/grid-settings.d.ts +2 -2
  38. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
  39. package/lib/icon/icon.types.d.ts +1 -1
  40. package/lib/rich-text/rich-text.directive.d.ts +6 -4
  41. package/package.json +1 -1
  42. package/esm2015/lib/rich-text/rich-text.service.js +0 -50
  43. package/esm5/lib/rich-text/rich-text.service.js +0 -51
  44. package/lib/rich-text/rich-text.service.d.ts +0 -10
@@ -8748,8 +8748,9 @@
8748
8748
  DatoSelectComponent.prototype.writeValue = function (activeOptions) {
8749
8749
  this._model = activeOptions ? akita.coerceArray(activeOptions) : [];
8750
8750
  if (this.options) {
8751
+ var overTheLimit = this.limitSelectedTo && this.isMulti && this._model.length >= this.limitSelectedTo;
8751
8752
  this.markAsActive(this._model, { deselectAll: true });
8752
- this.limitSelectedTo && this.updateDisabledState();
8753
+ overTheLimit && this.updateDisabledState();
8753
8754
  }
8754
8755
  /** For later updates */
8755
8756
  this.cdr.markForCheck();
@@ -8786,7 +8787,7 @@
8786
8787
  */
8787
8788
  if (this.hasValue && this._initialOpen) {
8788
8789
  this.markAsActive(this._model);
8789
- if (this.limitSelectedTo) {
8790
+ if (this.limitSelectedTo && this._model.length === this.limitSelectedTo) {
8790
8791
  this.updateDisabledState();
8791
8792
  }
8792
8793
  this._initialOpen = false;
@@ -8875,6 +8876,7 @@
8875
8876
  };
8876
8877
  DatoSelectComponent.prototype.removeOption = function (option) {
8877
8878
  var _this = this;
8879
+ var updateDisabled = this.limitSelectedTo && this._model.length === this.limitSelectedTo;
8878
8880
  this._model = this._model.filter(function (current) { return current[_this.idKey] !== option[_this.idKey]; });
8879
8881
  var optionToRemove = this.options.find(function (datoOption) { return datoOption.option && datoOption.option[_this.idKey] === option[_this.idKey]; });
8880
8882
  /**
@@ -8884,7 +8886,7 @@
8884
8886
  if (optionToRemove) {
8885
8887
  optionToRemove.active = false;
8886
8888
  }
8887
- this.limitSelectedTo && this.updateDisabledState();
8889
+ updateDisabled && this.updateDisabledState();
8888
8890
  this.onChange(this._model);
8889
8891
  this.cdr.markForCheck();
8890
8892
  this.asyncUpdateDropdownPosition();
@@ -9232,6 +9234,9 @@
9232
9234
  if (!datoOption) {
9233
9235
  return;
9234
9236
  }
9237
+ var modelLength = this._model.length;
9238
+ var updateDisabled = this.limitSelectedTo &&
9239
+ (modelLength === this.limitSelectedTo || (modelLength === this.limitSelectedTo - 1 && !datoOption.active));
9235
9240
  datoOption.active = !datoOption.active;
9236
9241
  var rawOption = datoOption.option;
9237
9242
  if (datoOption.active) {
@@ -9240,7 +9245,7 @@
9240
9245
  else {
9241
9246
  this._model = this._model.filter(function (current) { return current[_this.idKey] !== rawOption[_this.idKey]; });
9242
9247
  }
9243
- this.limitSelectedTo && this.updateDisabledState();
9248
+ updateDisabled && this.updateDisabledState();
9244
9249
  this.onChange(this._model);
9245
9250
  this.cdr.markForCheck();
9246
9251
  this.asyncUpdateDropdownPosition();
@@ -12045,7 +12050,7 @@
12045
12050
  return contextActions;
12046
12051
  }
12047
12052
 
12048
- var DATO_GRID_STORAGE_API = new core.InjectionToken('DATO_GRID_STORAGE_AP');
12053
+ var DATO_GRID_STORAGE_API = new core.InjectionToken('DATO_GRID_STORAGE_API');
12049
12054
 
12050
12055
  var defaultEditableColumnRenderer = function (params) {
12051
12056
  return params && params.value ? "<div class=\"value-wrapper ellipsis\">" + params.value + "</div>" : null;
@@ -12770,6 +12775,20 @@
12770
12775
  this.showClearFiltersButton = true;
12771
12776
  this.excludedValues = new Set();
12772
12777
  }
12778
+ Object.defineProperty(DatoGridFilterComponent.prototype, "operatorToggler", {
12779
+ set: function (togglers) {
12780
+ if (togglers && this.inputConditionsOperator) {
12781
+ togglers.forEach(function (toggler) {
12782
+ if (!toggler.isDisabled) {
12783
+ toggler.setDisabledState(true);
12784
+ }
12785
+ });
12786
+ this.cdr.detectChanges();
12787
+ }
12788
+ },
12789
+ enumerable: true,
12790
+ configurable: true
12791
+ });
12773
12792
  Object.defineProperty(DatoGridFilterComponent.prototype, "byValueControl", {
12774
12793
  get: function () {
12775
12794
  return this.filterForm.get('byValue');
@@ -12813,7 +12832,7 @@
12813
12832
  Object.defineProperty(DatoGridFilterComponent.prototype, "defaultConditional", {
12814
12833
  get: function () {
12815
12834
  return this.fb.group({
12816
- operator: [exports.OperatorTypes.AND],
12835
+ operator: [this.inputConditionsOperator || exports.OperatorTypes.AND],
12817
12836
  conditions: this.fb.array([this.defaultOperand])
12818
12837
  });
12819
12838
  },
@@ -12882,6 +12901,7 @@
12882
12901
  var colFilter = filter || colDef.filter;
12883
12902
  var filterOptions = DatoGridFilterOptionsMap[colFilter];
12884
12903
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
12904
+ this.inputConditionsOperator = filtersConfig.inputConditionsOperator;
12885
12905
  if (!isNil(filtersConfig.showClearFiltersButton)) {
12886
12906
  this.showClearFiltersButton = filtersConfig.showClearFiltersButton;
12887
12907
  }
@@ -12926,7 +12946,10 @@
12926
12946
  this.listOptions = rawValues.map(mapToListItem);
12927
12947
  }
12928
12948
  else {
12929
- var columnValues = this.getColumnValues();
12949
+ var columnValues = this.getColumnValues().filter(function (_a) {
12950
+ var value = _a.value;
12951
+ return !isNil(value);
12952
+ });
12930
12953
  this.columnValues = columnValues.map(function (_a) {
12931
12954
  var value = _a.value;
12932
12955
  return !isNil(_this.pivotColumn) && value ? value[_this.colField] : value;
@@ -13219,7 +13242,7 @@
13219
13242
  return this.defaultConditional;
13220
13243
  }
13221
13244
  return this.fb.group({
13222
- operator: [conditional.operator],
13245
+ operator: [this.inputConditionsOperator || conditional.operator],
13223
13246
  conditions: this.fb.array(this.buildConditions(conditional.conditions))
13224
13247
  });
13225
13248
  };
@@ -13389,10 +13412,15 @@
13389
13412
  { type: DatoTranslateService },
13390
13413
  { type: core.ChangeDetectorRef }
13391
13414
  ]; };
13415
+ __decorate([
13416
+ core.ViewChildren('operatorToggler'),
13417
+ __metadata("design:type", core.QueryList),
13418
+ __metadata("design:paramtypes", [core.QueryList])
13419
+ ], DatoGridFilterComponent.prototype, "operatorToggler", null);
13392
13420
  DatoGridFilterComponent = __decorate([
13393
13421
  core.Component({
13394
13422
  selector: 'dato-grid-filter',
13395
- template: "<form class=\"container primary-0-background-color\" [formGroup]=\"filterForm\" datoForm\n *datoSubscribe=\"hasFilter$ as hasFilter\">\n <ng-container>\n <dato-accordion closeOthers=\"true\" class=\"filter-options\" [activeIds]=\"activeAccordionId\">\n <ng-container *ngIf=\"filterSections.Conditional\">\n\n <dato-accordion-group>\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"conditional-filters\"\n [class.primary-100-background-color]=\"header_1.isOpen\" #header_1>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex-grow d-flex align-start-center\">{{'core.filterByCondition' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_1.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #conditionalContent>\n <div class=\"conditional-content-container d-flex-column\" formGroupName=\"conditional\"\n [class.multi-conditions]=\"conditionsControls.length > 1\">\n <div class=\"operand d-flex-column mb-10\"\n [attr.data-auto-id]=\"'condition-' + i\"\n *ngFor=\"let operand of conditionsControls; index as i; last as last\">\n <div class=\"d-flex\">\n <div class=\"d-flex-column d-flex-grow min-width-0\">\n <ng-container formArrayName=\"conditions\">\n\n <ng-container [formGroupName]=\"i\">\n <dato-select datoSize=\"sm\" class=\"mb-10\" [attr.data-auto-id]=\"'condition-' + i + '-operand'\" formControlName=\"type\"\n datoSelectClass=\"operand-select\"\n [dataSet]=\"conditionalFilterOptions\"\n [isCombo]=\"false\" #select>\n <dato-option *ngFor=\"let option of select.data; index as index\"\n [option]=\"option\">\n {{ option.label }}\n </dato-option>\n </dato-select>\n <ng-container [ngSwitch]=\"filterType\">\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Date\">\n <dato-date-picker [attr.data-auto-id]=\"'condition-date-' + i + '-value'\"\n formControlName=\"value\" class=\"d-flex-grow range-calendar\">\n <ng-template>\n <dato-date-picker-range *ngIf=\"getOperandType(i) === rangeOperand; else singleDate\"></dato-date-picker-range>\n <ng-template #singleDate>\n <dato-date-picker-single></dato-date-picker-single>\n </ng-template>\n </ng-template>\n </dato-date-picker>\n </div>\n <ng-container *ngIf=\"!isConditionalEmpty(operand)\">\n <dato-input *ngSwitchCase=\"gridFilterTypes.String\" datoSize=\"sm\"\n (keydown.enter.stop.prevent)=\"closePopUp()\"\n datoControlErrors [attr.data-auto-id]=\"'condition-string-' + i + '-value'\"\n [datoControlErrorsOnBlur]=\"false\"\n class=\"condition-value\"\n placeholder=\"core.filter\" formControlName=\"value\"\n [isFocused]=\"conditionalContent._expanded\"\n ></dato-input>\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Number\">\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\" [showControls]=\"false\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"value\" [attr.data-auto-id]=\"'condition-number-' + i + '-value'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors [datoAutoFocus]=\"conditionalContent._expanded\"\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n <ng-container *ngIf=\"getOperandType(i) === rangeOperand\">\n <div class=\"mx-5\">-</div>\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"rangeEnd\" [attr.data-auto-id]=\"'condition-number-' + i + '-range-end'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div>\n\n <dato-icon-button datoSize=\"md\"\n datoType=\"none\" icon=\"trash\"\n class=\"overflow-hidden delete\"\n datoTooltip=\"core.deleteFilterCondition\"\n [attr.data-auto-id]=\"'condition-' + i + '-remove'\"\n (click)=\"removeCondition(i)\"\n datoTooltipPosition=\"right-start\"></dato-icon-button>\n </div>\n </div>\n <dato-operator-toggler class=\"mt-10 justify-center width-100 d-flex\" data-auto-id=\"operator-toggler\"\n expanded=\"true\" [datoTogglerValue]=\"conditionsOperator\"\n *ngIf=\"conditionsControls.length > 1 && !last\"\n formControlName=\"operator\"></dato-operator-toggler>\n </div>\n <div class=\"d-flex align-center\">\n <dato-link *ngIf=\"conditionsControls.length < 3\" class=\"no-select\" datoSize=\"sm\" data-auto-id=\"add-condition\"\n datoType=\"secondary\" (click)=\"addCondition()\">\n <dato-icon height=\"10px\" width=\"10px\" icon=\"plus-simple\"></dato-icon>\n {{ 'core.condition' | translate }}\n </dato-link>\n </div>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n <ng-container *ngIf=\"filterSections.By_Value\">\n <dato-accordion-group class=\"list-content\">\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"by-value-filters\"\n [class.primary-100-background-color]=\"header_2.isOpen\" #header_2>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex d-flex-grow align-start-center\">{{'core.filterByValue' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_2.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #byValueContent>\n <div class=\"value-content-container d-flex-column\">\n <dato-input datoSize=\"sm\" placeholder=\"core.search-all-values\" [debounceTime]=\"300\" #search [formControl]=\"listSearchControl\" [isFocused]=\"byValueContent._expanded\"></dato-input>\n <dato-list-v2 class=\"primary-0-background-color\"\n containerHeight=\"195px\"\n [withSelectAll]=\"true\"\n [clientSearch]=\"isClientSideGrid\"\n [sortByKey]=\"listSortByKey\"\n [labelType]=\"listLabelType\"\n [searchController]=\"search\"\n [options]=\"listOptions\"\n [isSortList]=\"!keepPredefinedListOriginalOrder\"\n [loading]=\"loadingList\"\n [noDataTpl]=\"isClientSideGrid ? null : noData\"\n formControlName=\"byValue\"\n data-auto-id=\"by-value-filters-list\">\n </dato-list-v2>\n <ng-template #noData>\n <div *ngIf=\"serverSearchErrored; else noResults\" class=\"mb-10 d-flex-1 d-flex-column align-center\" data-auto-id=\"by-value-server-error\">\n <img class=\"mt-20\" datoStaticSrc=\"core/grid/filter-server-error.svg\"/>\n <p class=\"dato-note-bold mt-10 mb-10 primary-300-color\">{{ 'core.something-went-wrong' | translate }}</p>\n <p class=\"dato-note-italic primary-300-color\">{{ 'core.try-again-later' | translate }}</p>\n </div>\n <ng-template #noResults>\n <dato-list-no-result class=\"mb-10 block\" data-auto-id=\"by-value-no-results\"></dato-list-no-result>\n </ng-template>\n </ng-template>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n </dato-accordion>\n </ng-container>\n <div class=\"actions no-select px-10 py-12 d-flex align-end-center\">\n <dato-link *ngIf=\"showClearFiltersButton\" class=\"mr-30\" datoType=\"secondary\" datoSize=\"sm\"\n (click)=\"clearFilters()\" data-auto-id=\"clear-filters\" [disabled]=\"!hasFilter\">\n {{ 'core.clearFilters' | translate }}\n </dato-link>\n <dato-button datoSize=\"sm\" [datoTooltip]=\"hotKeyTooltip\" [datoHotkeys]=\"applyHotKeyConfig\" (click)=\"closePopUp()\" data-auto-id=\"apply-filters\">{{'core.apply' | translate}}</dato-button>\n </div>\n</form>\n",
13423
+ template: "<form class=\"container primary-0-background-color\" [formGroup]=\"filterForm\" datoForm\n *datoSubscribe=\"hasFilter$ as hasFilter\">\n <ng-container>\n <dato-accordion closeOthers=\"true\" class=\"filter-options\" [activeIds]=\"activeAccordionId\">\n <ng-container *ngIf=\"filterSections.Conditional\">\n\n <dato-accordion-group>\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"conditional-filters\"\n [class.primary-100-background-color]=\"header_1.isOpen\" #header_1>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex-grow d-flex align-start-center\">{{'core.filterByCondition' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_1.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #conditionalContent>\n <div class=\"conditional-content-container d-flex-column\" formGroupName=\"conditional\"\n [class.multi-conditions]=\"conditionsControls.length > 1\">\n <div class=\"operand d-flex-column mb-10\"\n [attr.data-auto-id]=\"'condition-' + i\"\n *ngFor=\"let operand of conditionsControls; index as i; last as last\">\n <div class=\"d-flex\">\n <div class=\"d-flex-column d-flex-grow min-width-0\">\n <ng-container formArrayName=\"conditions\">\n\n <ng-container [formGroupName]=\"i\">\n <dato-select datoSize=\"sm\" class=\"mb-10\" [attr.data-auto-id]=\"'condition-' + i + '-operand'\" formControlName=\"type\"\n datoSelectClass=\"operand-select\"\n [dataSet]=\"conditionalFilterOptions\"\n [isCombo]=\"false\" #select>\n <dato-option *ngFor=\"let option of select.data; index as index\"\n [option]=\"option\">\n {{ option.label }}\n </dato-option>\n </dato-select>\n <ng-container [ngSwitch]=\"filterType\">\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Date\">\n <dato-date-picker [attr.data-auto-id]=\"'condition-date-' + i + '-value'\"\n formControlName=\"value\" class=\"d-flex-grow range-calendar\">\n <ng-template>\n <dato-date-picker-range *ngIf=\"getOperandType(i) === rangeOperand; else singleDate\"></dato-date-picker-range>\n <ng-template #singleDate>\n <dato-date-picker-single></dato-date-picker-single>\n </ng-template>\n </ng-template>\n </dato-date-picker>\n </div>\n <ng-container *ngIf=\"!isConditionalEmpty(operand)\">\n <dato-input *ngSwitchCase=\"gridFilterTypes.String\" datoSize=\"sm\"\n (keydown.enter.stop.prevent)=\"closePopUp()\"\n datoControlErrors [attr.data-auto-id]=\"'condition-string-' + i + '-value'\"\n [datoControlErrorsOnBlur]=\"false\"\n class=\"condition-value\"\n placeholder=\"core.filter\" formControlName=\"value\"\n [isFocused]=\"conditionalContent._expanded\"\n ></dato-input>\n <div class=\"d-flex\" *ngSwitchCase=\"gridFilterTypes.Number\">\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\" [showControls]=\"false\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"value\" [attr.data-auto-id]=\"'condition-number-' + i + '-value'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors [datoAutoFocus]=\"conditionalContent._expanded\"\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n <ng-container *ngIf=\"getOperandType(i) === rangeOperand\">\n <div class=\"mx-5\">-</div>\n <dato-input-number (keydown.enter.stop.prevent)=\"closePopUp()\"\n class=\"width-100 condition-value\" allowNegative=\"true\">\n <input type=\"number\" formControlName=\"rangeEnd\" [attr.data-auto-id]=\"'condition-number-' + i + '-range-end'\"\n datoInputNumber datoSize=\"sm\" datoControlErrors\n [datoControlErrorsOnBlur]=\"false\"/>\n </dato-input-number>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n <div>\n\n <dato-icon-button datoSize=\"md\"\n datoType=\"none\" icon=\"trash\"\n class=\"overflow-hidden delete\"\n datoTooltip=\"core.deleteFilterCondition\"\n [attr.data-auto-id]=\"'condition-' + i + '-remove'\"\n (click)=\"removeCondition(i)\"\n datoTooltipPosition=\"right-start\"></dato-icon-button>\n </div>\n </div>\n <dato-operator-toggler class=\"mt-10 justify-center width-100 d-flex\" data-auto-id=\"operator-toggler\"\n expanded=\"true\" [datoTogglerValue]=\"conditionsOperator\"\n *ngIf=\"conditionsControls.length > 1 && !last\"\n formControlName=\"operator\" #operatorToggler></dato-operator-toggler>\n </div>\n <div class=\"d-flex align-center\">\n <dato-link *ngIf=\"conditionsControls.length < 3\" class=\"no-select\" datoSize=\"sm\" data-auto-id=\"add-condition\"\n datoType=\"secondary\" (click)=\"addCondition()\">\n <dato-icon height=\"10px\" width=\"10px\" icon=\"plus-simple\"></dato-icon>\n {{ 'core.condition' | translate }}\n </dato-link>\n </div>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n <ng-container *ngIf=\"filterSections.By_Value\">\n <dato-accordion-group class=\"list-content\">\n <dato-accordion-header class=\"dato-note-bold primary-600-color\" data-auto-id=\"by-value-filters\"\n [class.primary-100-background-color]=\"header_2.isOpen\" #header_2>\n <div class=\"px-10 d-flex align-start-center\">\n <div class=\"filter-title d-flex d-flex-grow align-start-center\">{{'core.filterByValue' | translate}}</div>\n <dato-icon class=\"primary-200-color\" height=\"18px\"\n [icon]=\"header_2.isOpen ? 'collapse' : 'expand'\"></dato-icon>\n </div>\n </dato-accordion-header>\n <dato-accordion-content #byValueContent>\n <div class=\"value-content-container d-flex-column\">\n <dato-input datoSize=\"sm\" placeholder=\"core.search-all-values\" [debounceTime]=\"300\" #search [formControl]=\"listSearchControl\" [isFocused]=\"byValueContent._expanded\"></dato-input>\n <dato-list-v2 class=\"primary-0-background-color\"\n containerHeight=\"195px\"\n [withSelectAll]=\"true\"\n [clientSearch]=\"isClientSideGrid\"\n [sortByKey]=\"listSortByKey\"\n [labelType]=\"listLabelType\"\n [searchController]=\"search\"\n [options]=\"listOptions\"\n [isSortList]=\"!keepPredefinedListOriginalOrder\"\n [loading]=\"loadingList\"\n [noDataTpl]=\"isClientSideGrid ? null : noData\"\n formControlName=\"byValue\"\n data-auto-id=\"by-value-filters-list\">\n </dato-list-v2>\n <ng-template #noData>\n <div *ngIf=\"serverSearchErrored; else noResults\" class=\"mb-10 d-flex-1 d-flex-column align-center\" data-auto-id=\"by-value-server-error\">\n <img class=\"mt-20\" datoStaticSrc=\"core/grid/filter-server-error.svg\"/>\n <p class=\"dato-note-bold mt-10 mb-10 primary-300-color\">{{ 'core.something-went-wrong' | translate }}</p>\n <p class=\"dato-note-italic primary-300-color\">{{ 'core.try-again-later' | translate }}</p>\n </div>\n <ng-template #noResults>\n <dato-list-no-result class=\"mb-10 block\" data-auto-id=\"by-value-no-results\"></dato-list-no-result>\n </ng-template>\n </ng-template>\n </div>\n </dato-accordion-content>\n </dato-accordion-group>\n <div class=\"separator\"></div>\n </ng-container>\n </dato-accordion>\n </ng-container>\n <div class=\"actions no-select px-10 py-12 d-flex align-end-center\">\n <dato-link *ngIf=\"showClearFiltersButton\" class=\"mr-30\" datoType=\"secondary\" datoSize=\"sm\"\n (click)=\"clearFilters()\" data-auto-id=\"clear-filters\" [disabled]=\"!hasFilter\">\n {{ 'core.clearFilters' | translate }}\n </dato-link>\n <dato-button datoSize=\"sm\" [datoTooltip]=\"hotKeyTooltip\" [datoHotkeys]=\"applyHotKeyConfig\" (click)=\"closePopUp()\" data-auto-id=\"apply-filters\">{{'core.apply' | translate}}</dato-button>\n </div>\n</form>\n",
13396
13424
  changeDetection: core.ChangeDetectionStrategy.OnPush,
13397
13425
  styles: [":host dato-accordion-header{transition:background-color .2s ease-in-out}:host>.container{width:242px}:host .value-content-container dato-input{padding:10px}:host .conditional-content-container{padding:10px;transition:padding-right .2s ease-in-out}:host .conditional-content-container.multi-conditions{padding-right:0}:host .conditional-content-container.multi-conditions .delete{width:24px}:host .filter-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;height:40px;transition:color .2s ease-in-out}:host .separator{height:1px;width:100%}:host .delete{transition:width .2s ease-in-out;width:0}"]
13398
13426
  }),
@@ -14554,8 +14582,7 @@
14554
14582
  this.updateSettings({ gridAlignment: gridAlignment, columnsSizes: null });
14555
14583
  };
14556
14584
  GridService.prototype.saveSettingsToServer = function (settings) {
14557
- var isGlobal = this.gridQuery.getGridOptions().isGlobalSettings;
14558
- this.storageAPI.set(this.gridName, settings, isGlobal);
14585
+ this.storageAPI.set(this.gridName, settings);
14559
14586
  };
14560
14587
  /**
14561
14588
  * @internal used to log grid events to the platform's logging service
@@ -15560,10 +15587,7 @@
15560
15587
  .pipe(operators.switchMap(function () {
15561
15588
  _this.gridOptions = _this.normalizeOptions();
15562
15589
  agGrid.gridOptions = _this.gridOptions;
15563
- var isGlobal = _this.gridOptions.isGlobalSettings;
15564
- var settingsLoader = _this.gridOptions.saveSettings === false
15565
- ? rxjs.of(null)
15566
- : _this.storageAPI.get(_this.gridOptions.gridName, isGlobal);
15590
+ var settingsLoader = _this.gridOptions.saveSettings === false ? rxjs.of(null) : _this.storageAPI.get(_this.gridOptions.gridName);
15567
15591
  return rxjs.combineLatest([agGrid.gridReady, settingsLoader]);
15568
15592
  }), ngxTakeUntilDestroy.untilDestroyed(this))
15569
15593
  .subscribe(function (_a) {
@@ -16845,18 +16869,6 @@
16845
16869
  this.registerGroupListeners();
16846
16870
  this.subscribeRowsSelectionData();
16847
16871
  };
16848
- DatoGridV2ToolbarComponent.prototype.getCellValueChangeEvent = function () {
16849
- var _this = this;
16850
- return this.gridController.gridQuery.waitForGrid(function () {
16851
- return _this.gridQuery.gridRef.cellValueChanged.pipe(operators.debounceTime(100), ngxTakeUntilDestroy.untilDestroyed(_this));
16852
- });
16853
- };
16854
- DatoGridV2ToolbarComponent.prototype.getRowDataUpdatedEvent = function () {
16855
- var _this = this;
16856
- return this.gridController.gridQuery.waitForGrid(function () {
16857
- return _this.gridQuery.gridRef.rowDataUpdated.pipe(operators.debounceTime(100), ngxTakeUntilDestroy.untilDestroyed(_this));
16858
- });
16859
- };
16860
16872
  DatoGridV2ToolbarComponent.prototype.onActionClick = function (action) {
16861
16873
  if (isFunction(action.onClick)) {
16862
16874
  var selectedRowsCount = this.gridController.gridQuery.getSelectedRowsCount();
@@ -21332,40 +21344,6 @@
21332
21344
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
21333
21345
  */
21334
21346
 
21335
- var RichTextService = /** @class */ (function () {
21336
- function RichTextService(http, config) {
21337
- this.http = http;
21338
- this.config = config;
21339
- }
21340
- RichTextService.prototype.getLib = function (appendScriptFunc, appendStyleFunc) {
21341
- if (!this.richTextScript$) {
21342
- this.initLib(appendScriptFunc, appendStyleFunc);
21343
- }
21344
- return this.richTextScript$;
21345
- };
21346
- RichTextService.prototype.initLib = function (appendScriptFunc, appendStyleFunc) {
21347
- this.richTextScript$ = rxjs.combineLatest([
21348
- this.http
21349
- .get(this.config.paths.richText + "/index.js", { responseType: 'text' })
21350
- .pipe(operators.tap(function (lib) { return appendScriptFunc(lib, 'rich-text-editor'); })),
21351
- this.http
21352
- .get(this.config.paths.richText + "/plugins/autocomplete/plugin.css", { responseType: 'text' })
21353
- .pipe(operators.tap(function (style) { return appendStyleFunc(style, 'tinymce-autocomplete'); }))
21354
- ]).pipe(operators.shareReplay(1));
21355
- };
21356
- RichTextService.ctorParameters = function () { return [
21357
- { type: http.HttpClient },
21358
- { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] }
21359
- ]; };
21360
- RichTextService.ɵprov = core.ɵɵdefineInjectable({ factory: function RichTextService_Factory() { return new RichTextService(core.ɵɵinject(http.HttpClient), core.ɵɵinject(DATO_CORE_CONFIG)); }, token: RichTextService, providedIn: "root" });
21361
- RichTextService = __decorate([
21362
- core.Injectable({ providedIn: 'root' }),
21363
- __param(1, core.Inject(DATO_CORE_CONFIG)),
21364
- __metadata("design:paramtypes", [http.HttpClient, Object])
21365
- ], RichTextService);
21366
- return RichTextService;
21367
- }());
21368
-
21369
21347
  /**
21370
21348
  * @license
21371
21349
  * Copyright Datorama. All Rights Reserved.
@@ -21379,20 +21357,20 @@
21379
21357
  var ɵ0$3 = getTinymce;
21380
21358
  var DatoRichTextDirective = /** @class */ (function (_super) {
21381
21359
  __extends(DatoRichTextDirective, _super);
21382
- function DatoRichTextDirective(ngZone, richTextService, config, host) {
21360
+ function DatoRichTextDirective(ngZone, http, host, config) {
21383
21361
  var _this = _super.call(this) || this;
21384
21362
  _this.ngZone = ngZone;
21385
- _this.richTextService = richTextService;
21386
- _this.config = config;
21363
+ _this.http = http;
21387
21364
  _this.host = host;
21365
+ _this.config = config;
21388
21366
  _this.autocompleteOptions = {};
21389
21367
  _this.forcePlainTextPasting = false;
21390
21368
  _this.format = 'html';
21391
21369
  _this.isOneLine = false;
21392
21370
  _this.initialValue = '';
21393
- _this.defaultPlugins = 'link fullscreen image lists table autocomplete';
21371
+ _this.defaultPlugins = 'link fullscreen textcolor colorpicker image lists table textpattern autocomplete';
21394
21372
  _this.defaultToolbar = [
21395
- 'fontfamily fontsize forecolor backcolor bold italic underline link',
21373
+ 'fontselect fontsizeselect forecolor backcolor bold italic underline link',
21396
21374
  'alignleft aligncenter alignright alignjustify outdent indent | table numlist bullist | image fullscreen'
21397
21375
  ];
21398
21376
  return _this;
@@ -21418,11 +21396,28 @@
21418
21396
  base: this.config.paths.richText,
21419
21397
  query: ''
21420
21398
  };
21421
- this.richTextService
21422
- .getLib(appendScript, appendStyle)
21423
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
21424
- .subscribe(function () {
21425
- _this.init.call(_this);
21399
+ /**
21400
+ * We support only one instance in load time
21401
+ */
21402
+ if (window.tinymce) {
21403
+ this.init.call(this);
21404
+ }
21405
+ else {
21406
+ this.loadLib().subscribe(function (lib) {
21407
+ appendScript(lib, 'rich-text-editor');
21408
+ _this.init.call(_this);
21409
+ _this.loadAutoCompleteStyle();
21410
+ });
21411
+ }
21412
+ };
21413
+ DatoRichTextDirective.prototype.loadLib = function () {
21414
+ return this.http.get(this.config.paths.richText + "/index.js", { responseType: 'text' });
21415
+ };
21416
+ DatoRichTextDirective.prototype.loadAutoCompleteStyle = function () {
21417
+ this.http
21418
+ .get(this.config.paths.richText + "/plugins/autocomplete/plugin.css", { responseType: 'text' })
21419
+ .subscribe(function (style) {
21420
+ appendStyle(style, 'tinymce-autocomplete');
21426
21421
  });
21427
21422
  };
21428
21423
  DatoRichTextDirective.prototype.initEditor = function (_, editor) {
@@ -21446,6 +21441,8 @@
21446
21441
  target: this.host.nativeElement,
21447
21442
  width: this.width || 600,
21448
21443
  height: this.height || 300,
21444
+ force_br_newlines: true,
21445
+ force_p_newlines: false,
21449
21446
  resize: 'both',
21450
21447
  branding: false,
21451
21448
  inline: this.inline,
@@ -21453,12 +21450,10 @@
21453
21450
  readonly: this.disabled,
21454
21451
  plugins: this.plugins || this.defaultPlugins,
21455
21452
  toolbar: isNil(this.toolbar) ? this.defaultToolbar : this.toolbar,
21456
- font_size_formats: '8px 10px 12px 14px 18px 24px 36px',
21453
+ fontsize_formats: '8px 10px 12px 14px 18px 24px 36px',
21457
21454
  min_width: 480,
21458
21455
  menubar: false,
21459
21456
  autocomplete: this.autocompleteOptions,
21460
- suffix: '.min',
21461
- skin: 'tinymce-5',
21462
21457
  setup: function (editor) {
21463
21458
  _this.editor = editor;
21464
21459
  editor.on('init', function (e) {
@@ -21515,9 +21510,9 @@
21515
21510
  var DatoRichTextDirective_1;
21516
21511
  DatoRichTextDirective.ctorParameters = function () { return [
21517
21512
  { type: core.NgZone },
21518
- { type: RichTextService },
21519
- { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] },
21520
- { type: core.ElementRef }
21513
+ { type: http.HttpClient },
21514
+ { type: core.ElementRef },
21515
+ { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] }
21521
21516
  ]; };
21522
21517
  __decorate([
21523
21518
  core.Input(),
@@ -21583,9 +21578,10 @@
21583
21578
  }
21584
21579
  ]
21585
21580
  }),
21586
- __param(2, core.Inject(DATO_CORE_CONFIG)),
21581
+ __param(3, core.Inject(DATO_CORE_CONFIG)),
21587
21582
  __metadata("design:paramtypes", [core.NgZone,
21588
- RichTextService, Object, core.ElementRef])
21583
+ http.HttpClient,
21584
+ core.ElementRef, Object])
21589
21585
  ], DatoRichTextDirective);
21590
21586
  return DatoRichTextDirective;
21591
21587
  }(BaseCustomControl));
@@ -24108,9 +24104,7 @@
24108
24104
  };
24109
24105
  DatoBreadcrumbsComponent.prototype.initEditableHeader = function () {
24110
24106
  var _this = this;
24111
- this.headerControl.valueChanges
24112
- .pipe(operators.debounceTime(300), ngxTakeUntilDestroy.untilDestroyed(this))
24113
- .subscribe(function (res) {
24107
+ this.headerControl.valueChanges.pipe(operators.debounceTime(300), ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function (res) {
24114
24108
  _this.updateEditableText.emit(res);
24115
24109
  _this.cdr.detectChanges();
24116
24110
  });
@@ -25473,7 +25467,7 @@
25473
25467
  };
25474
25468
  }
25475
25469
 
25476
- window.coreVersion = '22.9.2-rc.';
25470
+ window.coreVersion = '22.9.3';
25477
25471
 
25478
25472
  exports.APP_TRANSLATE = APP_TRANSLATE;
25479
25473
  exports.AceService = AceService;
@@ -25915,7 +25909,6 @@
25915
25909
  exports.ɵl = DatoGridItemsCountCellComponent;
25916
25910
  exports.ɵm = DatoGridV2ToolbarMoreMenuComponent;
25917
25911
  exports.ɵn = DatoGridSearchBarComponent;
25918
- exports.ɵo = RichTextService;
25919
25912
 
25920
25913
  Object.defineProperty(exports, '__esModule', { value: true });
25921
25914