@datorama/core 22.9.1-rc.1 → 22.9.1

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 (41) hide show
  1. package/bundles/datorama-core.umd.js +68 -78
  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 +21 -5
  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/rich-text/rich-text.directive.js +33 -15
  16. package/esm2015/lib/select/select.component.js +10 -5
  17. package/esm2015/lib/version.js +2 -2
  18. package/esm5/datorama-core.js +1 -2
  19. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  20. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  21. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +2 -5
  22. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +25 -5
  23. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  24. package/esm5/lib/grid-v2/grid-store/grid.service.js +2 -3
  25. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
  26. package/esm5/lib/rich-text/rich-text.directive.js +34 -16
  27. package/esm5/lib/select/select.component.js +10 -5
  28. package/esm5/lib/version.js +2 -2
  29. package/fesm2015/datorama-core.js +64 -70
  30. package/fesm2015/datorama-core.js.map +1 -1
  31. package/fesm5/datorama-core.js +69 -78
  32. package/fesm5/datorama-core.js.map +1 -1
  33. package/lib/grid-v2/grid/grid-v2.types.d.ts +2 -1
  34. package/lib/grid-v2/grid-filter/grid-filter.component.d.ts +4 -1
  35. package/lib/grid-v2/grid-settings.d.ts +2 -2
  36. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
  37. package/lib/rich-text/rich-text.directive.d.ts +6 -4
  38. package/package.json +1 -1
  39. package/esm2015/lib/rich-text/rich-text.service.js +0 -50
  40. package/esm5/lib/rich-text/rich-text.service.js +0 -51
  41. 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
  }
@@ -13219,7 +13239,7 @@
13219
13239
  return this.defaultConditional;
13220
13240
  }
13221
13241
  return this.fb.group({
13222
- operator: [conditional.operator],
13242
+ operator: [this.inputConditionsOperator || conditional.operator],
13223
13243
  conditions: this.fb.array(this.buildConditions(conditional.conditions))
13224
13244
  });
13225
13245
  };
@@ -13389,10 +13409,15 @@
13389
13409
  { type: DatoTranslateService },
13390
13410
  { type: core.ChangeDetectorRef }
13391
13411
  ]; };
13412
+ __decorate([
13413
+ core.ViewChildren('operatorToggler'),
13414
+ __metadata("design:type", core.QueryList),
13415
+ __metadata("design:paramtypes", [core.QueryList])
13416
+ ], DatoGridFilterComponent.prototype, "operatorToggler", null);
13392
13417
  DatoGridFilterComponent = __decorate([
13393
13418
  core.Component({
13394
13419
  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",
13420
+ 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
13421
  changeDetection: core.ChangeDetectionStrategy.OnPush,
13397
13422
  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
13423
  }),
@@ -14554,8 +14579,7 @@
14554
14579
  this.updateSettings({ gridAlignment: gridAlignment, columnsSizes: null });
14555
14580
  };
14556
14581
  GridService.prototype.saveSettingsToServer = function (settings) {
14557
- var isGlobal = this.gridQuery.getGridOptions().isGlobalSettings;
14558
- this.storageAPI.set(this.gridName, settings, isGlobal);
14582
+ this.storageAPI.set(this.gridName, settings);
14559
14583
  };
14560
14584
  /**
14561
14585
  * @internal used to log grid events to the platform's logging service
@@ -15560,10 +15584,7 @@
15560
15584
  .pipe(operators.switchMap(function () {
15561
15585
  _this.gridOptions = _this.normalizeOptions();
15562
15586
  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);
15587
+ var settingsLoader = _this.gridOptions.saveSettings === false ? rxjs.of(null) : _this.storageAPI.get(_this.gridOptions.gridName);
15567
15588
  return rxjs.combineLatest([agGrid.gridReady, settingsLoader]);
15568
15589
  }), ngxTakeUntilDestroy.untilDestroyed(this))
15569
15590
  .subscribe(function (_a) {
@@ -16845,18 +16866,6 @@
16845
16866
  this.registerGroupListeners();
16846
16867
  this.subscribeRowsSelectionData();
16847
16868
  };
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
16869
  DatoGridV2ToolbarComponent.prototype.onActionClick = function (action) {
16861
16870
  if (isFunction(action.onClick)) {
16862
16871
  var selectedRowsCount = this.gridController.gridQuery.getSelectedRowsCount();
@@ -21332,40 +21341,6 @@
21332
21341
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
21333
21342
  */
21334
21343
 
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
21344
  /**
21370
21345
  * @license
21371
21346
  * Copyright Datorama. All Rights Reserved.
@@ -21379,12 +21354,12 @@
21379
21354
  var ɵ0$3 = getTinymce;
21380
21355
  var DatoRichTextDirective = /** @class */ (function (_super) {
21381
21356
  __extends(DatoRichTextDirective, _super);
21382
- function DatoRichTextDirective(ngZone, richTextService, config, host) {
21357
+ function DatoRichTextDirective(ngZone, http, host, config) {
21383
21358
  var _this = _super.call(this) || this;
21384
21359
  _this.ngZone = ngZone;
21385
- _this.richTextService = richTextService;
21386
- _this.config = config;
21360
+ _this.http = http;
21387
21361
  _this.host = host;
21362
+ _this.config = config;
21388
21363
  _this.autocompleteOptions = {};
21389
21364
  _this.forcePlainTextPasting = false;
21390
21365
  _this.format = 'html';
@@ -21418,11 +21393,28 @@
21418
21393
  base: this.config.paths.richText,
21419
21394
  query: ''
21420
21395
  };
21421
- this.richTextService
21422
- .getLib(appendScript, appendStyle)
21423
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
21424
- .subscribe(function () {
21425
- _this.init.call(_this);
21396
+ /**
21397
+ * We support only one instance in load time
21398
+ */
21399
+ if (window.tinymce) {
21400
+ this.init.call(this);
21401
+ }
21402
+ else {
21403
+ this.loadLib().subscribe(function (lib) {
21404
+ appendScript(lib, 'rich-text-editor');
21405
+ _this.init.call(_this);
21406
+ _this.loadAutoCompleteStyle();
21407
+ });
21408
+ }
21409
+ };
21410
+ DatoRichTextDirective.prototype.loadLib = function () {
21411
+ return this.http.get(this.config.paths.richText + "/index.js", { responseType: 'text' });
21412
+ };
21413
+ DatoRichTextDirective.prototype.loadAutoCompleteStyle = function () {
21414
+ this.http
21415
+ .get(this.config.paths.richText + "/plugins/autocomplete/plugin.css", { responseType: 'text' })
21416
+ .subscribe(function (style) {
21417
+ appendStyle(style, 'tinymce-autocomplete');
21426
21418
  });
21427
21419
  };
21428
21420
  DatoRichTextDirective.prototype.initEditor = function (_, editor) {
@@ -21515,9 +21507,9 @@
21515
21507
  var DatoRichTextDirective_1;
21516
21508
  DatoRichTextDirective.ctorParameters = function () { return [
21517
21509
  { type: core.NgZone },
21518
- { type: RichTextService },
21519
- { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] },
21520
- { type: core.ElementRef }
21510
+ { type: http.HttpClient },
21511
+ { type: core.ElementRef },
21512
+ { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] }
21521
21513
  ]; };
21522
21514
  __decorate([
21523
21515
  core.Input(),
@@ -21583,9 +21575,10 @@
21583
21575
  }
21584
21576
  ]
21585
21577
  }),
21586
- __param(2, core.Inject(DATO_CORE_CONFIG)),
21578
+ __param(3, core.Inject(DATO_CORE_CONFIG)),
21587
21579
  __metadata("design:paramtypes", [core.NgZone,
21588
- RichTextService, Object, core.ElementRef])
21580
+ http.HttpClient,
21581
+ core.ElementRef, Object])
21589
21582
  ], DatoRichTextDirective);
21590
21583
  return DatoRichTextDirective;
21591
21584
  }(BaseCustomControl));
@@ -24108,9 +24101,7 @@
24108
24101
  };
24109
24102
  DatoBreadcrumbsComponent.prototype.initEditableHeader = function () {
24110
24103
  var _this = this;
24111
- this.headerControl.valueChanges
24112
- .pipe(operators.debounceTime(300), ngxTakeUntilDestroy.untilDestroyed(this))
24113
- .subscribe(function (res) {
24104
+ this.headerControl.valueChanges.pipe(operators.debounceTime(300), ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function (res) {
24114
24105
  _this.updateEditableText.emit(res);
24115
24106
  _this.cdr.detectChanges();
24116
24107
  });
@@ -25473,7 +25464,7 @@
25473
25464
  };
25474
25465
  }
25475
25466
 
25476
- window.coreVersion = '22.9.1-rc.';
25467
+ window.coreVersion = '22.9.1';
25477
25468
 
25478
25469
  exports.APP_TRANSLATE = APP_TRANSLATE;
25479
25470
  exports.AceService = AceService;
@@ -25915,7 +25906,6 @@
25915
25906
  exports.ɵl = DatoGridItemsCountCellComponent;
25916
25907
  exports.ɵm = DatoGridV2ToolbarMoreMenuComponent;
25917
25908
  exports.ɵn = DatoGridSearchBarComponent;
25918
- exports.ɵo = RichTextService;
25919
25909
 
25920
25910
  Object.defineProperty(exports, '__esModule', { value: true });
25921
25911