@datorama/core 22.8.2-rc.1 → 22.9.0

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 (47) hide show
  1. package/bundles/datorama-core.umd.js +113 -116
  2. package/bundles/datorama-core.umd.js.map +1 -1
  3. package/bundles/datorama-core.umd.min.js +15 -15
  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-column-header/grid-column-header.component.js +9 -3
  11. package/esm2015/lib/grid-v2/grid-controller/grid-controller.component.js +3 -8
  12. package/esm2015/lib/grid-v2/grid-filter/grid-filter.component.js +20 -4
  13. package/esm2015/lib/grid-v2/grid-settings.js +2 -2
  14. package/esm2015/lib/grid-v2/grid-store/grid.query.js +20 -17
  15. package/esm2015/lib/grid-v2/grid-store/grid.service.js +19 -22
  16. package/esm2015/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -7
  17. package/esm2015/lib/rich-text/rich-text.directive.js +33 -15
  18. package/esm2015/lib/select/select.component.js +10 -5
  19. package/esm2015/lib/version.js +2 -2
  20. package/esm5/datorama-core.js +1 -2
  21. package/esm5/lib/breadcrumbs/breadcrumbs.component.js +2 -4
  22. package/esm5/lib/grid-v2/grid/grid-v2.types.js +1 -1
  23. package/esm5/lib/grid-v2/grid-column-header/grid-column-header.component.js +9 -3
  24. package/esm5/lib/grid-v2/grid-controller/grid-controller.component.js +3 -8
  25. package/esm5/lib/grid-v2/grid-filter/grid-filter.component.js +24 -4
  26. package/esm5/lib/grid-v2/grid-settings.js +2 -2
  27. package/esm5/lib/grid-v2/grid-store/grid.query.js +21 -17
  28. package/esm5/lib/grid-v2/grid-store/grid.service.js +19 -22
  29. package/esm5/lib/grid-v2/grid-toolbar/grid-toolbar.component.js +1 -13
  30. package/esm5/lib/rich-text/rich-text.directive.js +34 -16
  31. package/esm5/lib/select/select.component.js +10 -5
  32. package/esm5/lib/version.js +2 -2
  33. package/fesm2015/datorama-core.js +108 -108
  34. package/fesm2015/datorama-core.js.map +1 -1
  35. package/fesm5/datorama-core.js +114 -116
  36. package/fesm5/datorama-core.js.map +1 -1
  37. package/lib/grid-v2/grid/grid-v2.types.d.ts +2 -1
  38. package/lib/grid-v2/grid-filter/grid-filter.component.d.ts +4 -1
  39. package/lib/grid-v2/grid-settings.d.ts +2 -2
  40. package/lib/grid-v2/grid-store/grid.query.d.ts +2 -2
  41. package/lib/grid-v2/grid-store/grid.service.d.ts +1 -0
  42. package/lib/grid-v2/grid-toolbar/grid-toolbar.component.d.ts +0 -2
  43. package/lib/rich-text/rich-text.directive.d.ts +6 -4
  44. package/package.json +1 -1
  45. package/esm2015/lib/rich-text/rich-text.service.js +0 -50
  46. package/esm5/lib/rich-text/rich-text.service.js +0 -51
  47. 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();
@@ -11581,7 +11586,7 @@
11581
11586
  var storeSettings = this.getValue().settings;
11582
11587
  var settings = {
11583
11588
  gridAlignment: storeSettings.gridAlignment,
11584
- sort: this.getGridOptions().sortByStore ? this.getSort() : this.getSortModel(),
11589
+ sort: this.getGridOptions().sortByStore ? this.getSavedSort() : this.getSortModel(),
11585
11590
  hiddenColumns: hiddenColumns,
11586
11591
  groupedColumns: groupedColumns.map(toColId),
11587
11592
  filter: this.getFilter(),
@@ -11598,25 +11603,29 @@
11598
11603
  GridQuery.prototype.getSortModel = function () {
11599
11604
  return this.api.grid.getSortModel().pop();
11600
11605
  };
11601
- GridQuery.prototype.getSort = function () {
11606
+ GridQuery.prototype.getSavedSort = function () {
11602
11607
  return this.getValue().settings.sort || this.getSortModel();
11603
11608
  };
11604
- GridQuery.prototype.getExternalSort = function () {
11605
- var _a = this.getSort() || {}, sort = _a.sort, colId = _a.colId, savedSortIndex = _a.sortIndex;
11606
- var column = this.api.columns.getColumn(colId);
11607
- var allColumns = this.api.columns.getAllGridColumns();
11608
- if (column) {
11609
- var field = getColField(column.getColDef());
11610
- return { colId: colId, sort: sort, field: field };
11611
- }
11612
- else {
11613
- var secondaryColumn = this.getSecondaryColumn(colId);
11614
- if (secondaryColumn) {
11615
- var sortIndex = savedSortIndex || allColumns.indexOf(secondaryColumn);
11616
- var field = getColField(secondaryColumn.getColDef());
11617
- return { colId: colId, sort: sort, field: field, sortIndex: sortIndex };
11609
+ GridQuery.prototype.getSort = function (savedSort) {
11610
+ if (savedSort === void 0) { savedSort = this.getSavedSort(); }
11611
+ if (savedSort) {
11612
+ var colId = savedSort.colId, sort = savedSort.sort, sortIndex = savedSort.sortIndex;
11613
+ var column = this.api.columns.getColumn(colId);
11614
+ var allColumns = this.api.columns.getAllGridColumns();
11615
+ if (column) {
11616
+ var field = getColField(column.getColDef());
11617
+ return { colId: colId, sort: sort, field: field };
11618
+ }
11619
+ else {
11620
+ var secondaryColumn = this.getSecondaryColumn(colId);
11621
+ if (secondaryColumn) {
11622
+ var columnIndex = sortIndex || allColumns.indexOf(secondaryColumn);
11623
+ var field = getColField(secondaryColumn.getColDef());
11624
+ return { colId: colId, sort: sort, field: field, sortIndex: columnIndex };
11625
+ }
11618
11626
  }
11619
11627
  }
11628
+ return { colId: null, sort: null };
11620
11629
  };
11621
11630
  /* @internal */
11622
11631
  GridQuery.prototype._setApi = function (api, gridRef) {
@@ -12041,7 +12050,7 @@
12041
12050
  return contextActions;
12042
12051
  }
12043
12052
 
12044
- 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');
12045
12054
 
12046
12055
  var defaultEditableColumnRenderer = function (params) {
12047
12056
  return params && params.value ? "<div class=\"value-wrapper ellipsis\">" + params.value + "</div>" : null;
@@ -12766,6 +12775,20 @@
12766
12775
  this.showClearFiltersButton = true;
12767
12776
  this.excludedValues = new Set();
12768
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
+ });
12769
12792
  Object.defineProperty(DatoGridFilterComponent.prototype, "byValueControl", {
12770
12793
  get: function () {
12771
12794
  return this.filterForm.get('byValue');
@@ -12878,6 +12901,7 @@
12878
12901
  var colFilter = filter || colDef.filter;
12879
12902
  var filterOptions = DatoGridFilterOptionsMap[colFilter];
12880
12903
  this.pivotColumn = gridQuery.api.columns.getSecondaryPivotColumn(pivotKeys, pivotValueColumn);
12904
+ this.inputConditionsOperator = filtersConfig.inputConditionsOperator;
12881
12905
  if (!isNil(filtersConfig.showClearFiltersButton)) {
12882
12906
  this.showClearFiltersButton = filtersConfig.showClearFiltersButton;
12883
12907
  }
@@ -13215,7 +13239,7 @@
13215
13239
  return this.defaultConditional;
13216
13240
  }
13217
13241
  return this.fb.group({
13218
- operator: [conditional.operator],
13242
+ operator: [this.inputConditionsOperator || conditional.operator],
13219
13243
  conditions: this.fb.array(this.buildConditions(conditional.conditions))
13220
13244
  });
13221
13245
  };
@@ -13385,10 +13409,15 @@
13385
13409
  { type: DatoTranslateService },
13386
13410
  { type: core.ChangeDetectorRef }
13387
13411
  ]; };
13412
+ __decorate([
13413
+ core.ViewChildren('operatorToggler'),
13414
+ __metadata("design:type", core.QueryList),
13415
+ __metadata("design:paramtypes", [core.QueryList])
13416
+ ], DatoGridFilterComponent.prototype, "operatorToggler", null);
13388
13417
  DatoGridFilterComponent = __decorate([
13389
13418
  core.Component({
13390
13419
  selector: 'dato-grid-filter',
13391
- 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",
13392
13421
  changeDetection: core.ChangeDetectionStrategy.OnPush,
13393
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}"]
13394
13423
  }),
@@ -13491,6 +13520,7 @@
13491
13520
  var sortingOrder = _this.column.getColDef() ? _this.column.getColDef().sortingOrder : null;
13492
13521
  var sort;
13493
13522
  var currentSort = _this.column.getSort();
13523
+ var colId = _this.column.getColId();
13494
13524
  if (sortingOrder && sortingOrder.length > 0) {
13495
13525
  var currentSortIndex = sortingOrder.indexOf(currentSort);
13496
13526
  var newSortIndex = void 0;
@@ -13507,10 +13537,15 @@
13507
13537
  }
13508
13538
  gridService._logEvent("Grids - Column Action" /* GRID_COLUMN_ACTION */, {
13509
13539
  action: 'Sort',
13510
- column: _this.column.getColId()
13540
+ column: colId
13511
13541
  });
13512
13542
  gridQuery.isServerSide && gridService.setLoading(true);
13513
- _this.params.setSort(sort);
13543
+ if (gridQuery.getGridOptions().sortByStore) {
13544
+ gridService.setSortByColumn(colId, sort);
13545
+ }
13546
+ else {
13547
+ _this.params.setSort(sort);
13548
+ }
13514
13549
  });
13515
13550
  this.sortingInfo$ = gridQuery
13516
13551
  .waitForGrid(function () { return gridQuery.gridRef.sortChanged; })
@@ -14457,38 +14492,36 @@
14457
14492
  this.notifyFilterUpdate();
14458
14493
  }
14459
14494
  };
14495
+ GridService.prototype.setSortByColumn = function (colId, sort) {
14496
+ var sortToSet = this.gridQuery.getSort({ colId: colId, sort: sort });
14497
+ this.setGridSort(sortToSet);
14498
+ };
14460
14499
  GridService.prototype.setGridSort = function (gridSort) {
14461
14500
  if (gridSort && this.api && this.api.grid.getDisplayedRowCount() > 0) {
14462
14501
  var colId_1 = gridSort.colId, sort = gridSort.sort, sortIndex = gridSort.sortIndex;
14463
- var sortToApply = gridSort;
14464
- if (!isNil(sortIndex)) {
14465
- var gridColumns = this.api.columns.getAllGridColumns();
14466
- if (gridColumns) {
14502
+ var gridColumns = this.api.columns.getAllGridColumns();
14503
+ if (gridColumns) {
14504
+ var sortToApply = gridSort;
14505
+ /** Sort by column id */
14506
+ var columnById = gridColumns.find(function (col) {
14507
+ return (col.getColDef().showRowGroup || col.getColId()) === colId_1;
14508
+ });
14509
+ if (columnById) {
14510
+ sortToApply = { colId: columnById.getColId(), sort: sort };
14511
+ }
14512
+ else if (!isNil(sortIndex)) {
14467
14513
  var valueColumns = this.api.columns.getValueColumns();
14468
14514
  var valueColumn = valueColumns.find(function (col) { return col.getColId() === colId_1; });
14469
14515
  var isPivotColId = colId_1.startsWith('pivot');
14470
14516
  if (isPivotColId || valueColumn) {
14471
14517
  /** Column is pivot value column, sort by index */
14472
14518
  var columnByIndex = gridColumns[sortIndex];
14473
- // const pivotValueColumn = columnByIndex && columnByIndex.getColDef().pivotValueColumn;
14474
- // const pivotValueColumnId = pivotValueColumn && pivotValueColumn.getColId();
14475
- // if (pivotValueColumnId === colId) {
14476
14519
  sortToApply = { colId: columnByIndex.getColId(), sort: sort, sortIndex: sortIndex };
14477
- // }
14478
- }
14479
- else {
14480
- /** Sort by column id */
14481
- var columnById = gridColumns.find(function (col) {
14482
- return (col.getColDef().showRowGroup || col.getColId()) === colId_1;
14483
- });
14484
- if (columnById) {
14485
- sortToApply = { colId: columnById.getColId(), sort: sort };
14486
- }
14487
14520
  }
14488
14521
  }
14522
+ this.updateSettings({ sort: sortToApply });
14523
+ this.api.grid.setSortModel([sortToApply]);
14489
14524
  }
14490
- this.updateSettings({ sort: sortToApply });
14491
- this.api.grid.setSortModel([sortToApply]);
14492
14525
  }
14493
14526
  };
14494
14527
  GridService.prototype.updateFilter = function (column, filter) {
@@ -14546,8 +14579,7 @@
14546
14579
  this.updateSettings({ gridAlignment: gridAlignment, columnsSizes: null });
14547
14580
  };
14548
14581
  GridService.prototype.saveSettingsToServer = function (settings) {
14549
- var isGlobal = this.gridQuery.getGridOptions().isGlobalSettings;
14550
- this.storageAPI.set(this.gridName, settings, isGlobal);
14582
+ this.storageAPI.set(this.gridName, settings);
14551
14583
  };
14552
14584
  /**
14553
14585
  * @internal used to log grid events to the platform's logging service
@@ -15552,10 +15584,7 @@
15552
15584
  .pipe(operators.switchMap(function () {
15553
15585
  _this.gridOptions = _this.normalizeOptions();
15554
15586
  agGrid.gridOptions = _this.gridOptions;
15555
- var isGlobal = _this.gridOptions.isGlobalSettings;
15556
- var settingsLoader = _this.gridOptions.saveSettings === false
15557
- ? rxjs.of(null)
15558
- : _this.storageAPI.get(_this.gridOptions.gridName, isGlobal);
15587
+ var settingsLoader = _this.gridOptions.saveSettings === false ? rxjs.of(null) : _this.storageAPI.get(_this.gridOptions.gridName);
15559
15588
  return rxjs.combineLatest([agGrid.gridReady, settingsLoader]);
15560
15589
  }), ngxTakeUntilDestroy.untilDestroyed(this))
15561
15590
  .subscribe(function (_a) {
@@ -15669,11 +15698,10 @@
15669
15698
  var data = _this.getGridData();
15670
15699
  _this.onGridChange.emit({
15671
15700
  filter: _this.gridQuery.getExternalFilter(),
15672
- sort: _this.gridQuery.getExternalSort(),
15701
+ sort: _this.gridQuery.getSort(),
15673
15702
  type: type,
15674
15703
  data: data
15675
15704
  });
15676
- triggerWindowResize();
15677
15705
  });
15678
15706
  };
15679
15707
  DatoGridControllerComponent.prototype.listenToStoreSettingsChanges = function () {
@@ -16838,18 +16866,6 @@
16838
16866
  this.registerGroupListeners();
16839
16867
  this.subscribeRowsSelectionData();
16840
16868
  };
16841
- DatoGridV2ToolbarComponent.prototype.getCellValueChangeEvent = function () {
16842
- var _this = this;
16843
- return this.gridController.gridQuery.waitForGrid(function () {
16844
- return _this.gridQuery.gridRef.cellValueChanged.pipe(operators.debounceTime(100), ngxTakeUntilDestroy.untilDestroyed(_this));
16845
- });
16846
- };
16847
- DatoGridV2ToolbarComponent.prototype.getRowDataUpdatedEvent = function () {
16848
- var _this = this;
16849
- return this.gridController.gridQuery.waitForGrid(function () {
16850
- return _this.gridQuery.gridRef.rowDataUpdated.pipe(operators.debounceTime(100), ngxTakeUntilDestroy.untilDestroyed(_this));
16851
- });
16852
- };
16853
16869
  DatoGridV2ToolbarComponent.prototype.onActionClick = function (action) {
16854
16870
  if (isFunction(action.onClick)) {
16855
16871
  var selectedRowsCount = this.gridController.gridQuery.getSelectedRowsCount();
@@ -21325,40 +21341,6 @@
21325
21341
  * found in the LICENSE file at https://github.com/datorama/client-core/blob/master/LICENSE
21326
21342
  */
21327
21343
 
21328
- var RichTextService = /** @class */ (function () {
21329
- function RichTextService(http, config) {
21330
- this.http = http;
21331
- this.config = config;
21332
- }
21333
- RichTextService.prototype.getLib = function (appendScriptFunc, appendStyleFunc) {
21334
- if (!this.richTextScript$) {
21335
- this.initLib(appendScriptFunc, appendStyleFunc);
21336
- }
21337
- return this.richTextScript$;
21338
- };
21339
- RichTextService.prototype.initLib = function (appendScriptFunc, appendStyleFunc) {
21340
- this.richTextScript$ = rxjs.combineLatest([
21341
- this.http
21342
- .get(this.config.paths.richText + "/index.js", { responseType: 'text' })
21343
- .pipe(operators.tap(function (lib) { return appendScriptFunc(lib, 'rich-text-editor'); })),
21344
- this.http
21345
- .get(this.config.paths.richText + "/plugins/autocomplete/plugin.css", { responseType: 'text' })
21346
- .pipe(operators.tap(function (style) { return appendStyleFunc(style, 'tinymce-autocomplete'); }))
21347
- ]).pipe(operators.shareReplay(1));
21348
- };
21349
- RichTextService.ctorParameters = function () { return [
21350
- { type: http.HttpClient },
21351
- { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] }
21352
- ]; };
21353
- RichTextService.ɵprov = core.ɵɵdefineInjectable({ factory: function RichTextService_Factory() { return new RichTextService(core.ɵɵinject(http.HttpClient), core.ɵɵinject(DATO_CORE_CONFIG)); }, token: RichTextService, providedIn: "root" });
21354
- RichTextService = __decorate([
21355
- core.Injectable({ providedIn: 'root' }),
21356
- __param(1, core.Inject(DATO_CORE_CONFIG)),
21357
- __metadata("design:paramtypes", [http.HttpClient, Object])
21358
- ], RichTextService);
21359
- return RichTextService;
21360
- }());
21361
-
21362
21344
  /**
21363
21345
  * @license
21364
21346
  * Copyright Datorama. All Rights Reserved.
@@ -21372,12 +21354,12 @@
21372
21354
  var ɵ0$3 = getTinymce;
21373
21355
  var DatoRichTextDirective = /** @class */ (function (_super) {
21374
21356
  __extends(DatoRichTextDirective, _super);
21375
- function DatoRichTextDirective(ngZone, richTextService, config, host) {
21357
+ function DatoRichTextDirective(ngZone, http, host, config) {
21376
21358
  var _this = _super.call(this) || this;
21377
21359
  _this.ngZone = ngZone;
21378
- _this.richTextService = richTextService;
21379
- _this.config = config;
21360
+ _this.http = http;
21380
21361
  _this.host = host;
21362
+ _this.config = config;
21381
21363
  _this.autocompleteOptions = {};
21382
21364
  _this.forcePlainTextPasting = false;
21383
21365
  _this.format = 'html';
@@ -21411,11 +21393,28 @@
21411
21393
  base: this.config.paths.richText,
21412
21394
  query: ''
21413
21395
  };
21414
- this.richTextService
21415
- .getLib(appendScript, appendStyle)
21416
- .pipe(ngxTakeUntilDestroy.untilDestroyed(this))
21417
- .subscribe(function () {
21418
- _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');
21419
21418
  });
21420
21419
  };
21421
21420
  DatoRichTextDirective.prototype.initEditor = function (_, editor) {
@@ -21508,9 +21507,9 @@
21508
21507
  var DatoRichTextDirective_1;
21509
21508
  DatoRichTextDirective.ctorParameters = function () { return [
21510
21509
  { type: core.NgZone },
21511
- { type: RichTextService },
21512
- { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] },
21513
- { type: core.ElementRef }
21510
+ { type: http.HttpClient },
21511
+ { type: core.ElementRef },
21512
+ { type: undefined, decorators: [{ type: core.Inject, args: [DATO_CORE_CONFIG,] }] }
21514
21513
  ]; };
21515
21514
  __decorate([
21516
21515
  core.Input(),
@@ -21576,9 +21575,10 @@
21576
21575
  }
21577
21576
  ]
21578
21577
  }),
21579
- __param(2, core.Inject(DATO_CORE_CONFIG)),
21578
+ __param(3, core.Inject(DATO_CORE_CONFIG)),
21580
21579
  __metadata("design:paramtypes", [core.NgZone,
21581
- RichTextService, Object, core.ElementRef])
21580
+ http.HttpClient,
21581
+ core.ElementRef, Object])
21582
21582
  ], DatoRichTextDirective);
21583
21583
  return DatoRichTextDirective;
21584
21584
  }(BaseCustomControl));
@@ -24101,9 +24101,7 @@
24101
24101
  };
24102
24102
  DatoBreadcrumbsComponent.prototype.initEditableHeader = function () {
24103
24103
  var _this = this;
24104
- this.headerControl.valueChanges
24105
- .pipe(operators.debounceTime(300), ngxTakeUntilDestroy.untilDestroyed(this))
24106
- .subscribe(function (res) {
24104
+ this.headerControl.valueChanges.pipe(operators.debounceTime(300), ngxTakeUntilDestroy.untilDestroyed(this)).subscribe(function (res) {
24107
24105
  _this.updateEditableText.emit(res);
24108
24106
  _this.cdr.detectChanges();
24109
24107
  });
@@ -25466,7 +25464,7 @@
25466
25464
  };
25467
25465
  }
25468
25466
 
25469
- window.coreVersion = '22.8.2-rc.';
25467
+ window.coreVersion = '22.9.0';
25470
25468
 
25471
25469
  exports.APP_TRANSLATE = APP_TRANSLATE;
25472
25470
  exports.AceService = AceService;
@@ -25908,7 +25906,6 @@
25908
25906
  exports.ɵl = DatoGridItemsCountCellComponent;
25909
25907
  exports.ɵm = DatoGridV2ToolbarMoreMenuComponent;
25910
25908
  exports.ɵn = DatoGridSearchBarComponent;
25911
- exports.ɵo = RichTextService;
25912
25909
 
25913
25910
  Object.defineProperty(exports, '__esModule', { value: true });
25914
25911