@skyux/ag-grid 11.43.1 → 11.44.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.
@@ -2105,79 +2105,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
2105
2105
  * @internal
2106
2106
  */
2107
2107
  class SkyAgGridCellValidatorTooltipComponent {
2108
+ constructor() {
2109
+ this.popoverMessageStream = new Subject();
2110
+ }
2108
2111
  set params(value) {
2109
2112
  this.cellRendererParams = value;
2110
- /*istanbul ignore next*/
2111
- this.cellRendererParams?.api?.addEventListener('cellFocused', (eventParams) => {
2113
+ value?.api?.addEventListener('cellFocused', (eventParams) => {
2112
2114
  // We want to close any popovers that are opened when other cells are focused, but open a popover if the current cell is focused.
2113
- if (eventParams.column.getColId() !==
2114
- this.cellRendererParams?.column?.getColId() ||
2115
- eventParams.rowIndex !== this.cellRendererParams?.node?.rowIndex) {
2116
- this.hidePopover();
2117
- }
2118
- });
2119
- /*istanbul ignore next*/
2120
- this.cellRendererParams?.eGridCell?.addEventListener('keyup', (event) => {
2121
- if (['ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp'].includes(event.key)) {
2115
+ if (eventParams.column.getColId() ===
2116
+ value?.column?.getColId() &&
2117
+ eventParams.rowIndex === value?.node?.rowIndex) {
2122
2118
  this.showPopover();
2123
2119
  }
2120
+ else {
2121
+ this.hidePopover();
2122
+ }
2124
2123
  });
2125
- this.cellRendererParams?.eGridCell?.addEventListener('mouseenter', () => {
2126
- this.#scheduleDelayedPopover();
2127
- });
2128
- this.cellRendererParams?.eGridCell?.addEventListener('mouseleave', () => {
2129
- this.hidePopover();
2130
- });
2131
- /*istanbul ignore next*/
2132
- this.cellRendererParams?.api?.addEventListener('cellEditingStarted', () => {
2124
+ value?.api?.addEventListener('cellEditingStarted', () => {
2133
2125
  this.hidePopover();
2134
2126
  });
2135
- if (typeof this.cellRendererParams?.skyComponentProperties
2136
- ?.validatorMessage === 'function') {
2137
- this.validatorMessage =
2138
- this.cellRendererParams.skyComponentProperties.validatorMessage(this.cellRendererParams.value, this.cellRendererParams.data, this.cellRendererParams?.node?.rowIndex ?? undefined);
2127
+ if (typeof value?.skyComponentProperties?.validatorMessage === 'function') {
2128
+ this.validatorMessage = value.skyComponentProperties.validatorMessage(value.value, value.data, value?.node?.rowIndex);
2139
2129
  }
2140
2130
  else {
2141
- this.validatorMessage =
2142
- this.cellRendererParams?.skyComponentProperties?.validatorMessage;
2131
+ this.validatorMessage = value?.skyComponentProperties?.validatorMessage;
2143
2132
  }
2144
- this.#changeDetector.markForCheck();
2145
- }
2146
- #hoverTimeout;
2147
- #changeDetector;
2148
- constructor(changeDetector) {
2149
- this.popoverMessageStream = new Subject();
2150
- this.#changeDetector = changeDetector;
2151
2133
  }
2152
2134
  hidePopover() {
2153
- this.#cancelDelayedPopover();
2154
2135
  this.popoverMessageStream.next({ type: SkyPopoverMessageType.Close });
2155
2136
  }
2156
2137
  showPopover() {
2157
- this.#cancelDelayedPopover();
2158
- this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });
2159
- }
2160
- #scheduleDelayedPopover() {
2161
- /* istanbul ignore else */
2162
- if (!this.#hoverTimeout) {
2163
- this.#hoverTimeout = window.setTimeout(() => {
2164
- this.showPopover();
2165
- }, 300);
2138
+ if (this.#shouldShowPopover()) {
2139
+ this.popoverMessageStream.next({ type: SkyPopoverMessageType.Open });
2166
2140
  }
2167
2141
  }
2168
- #cancelDelayedPopover() {
2169
- if (this.#hoverTimeout) {
2170
- window.clearTimeout(this.#hoverTimeout);
2171
- this.#hoverTimeout = undefined;
2142
+ #shouldShowPopover() {
2143
+ if (!this.validatorMessage) {
2144
+ return false;
2145
+ }
2146
+ const editingCells = this.cellRendererParams?.api.getEditingCells() ?? [];
2147
+ if (editingCells.length > 0) {
2148
+ return false;
2149
+ }
2150
+ if (typeof this.cellRendererParams?.skyComponentProperties?.validator ===
2151
+ 'function') {
2152
+ return !this.cellRendererParams.skyComponentProperties.validator(this.cellRendererParams.value, this.cellRendererParams.data, this.cellRendererParams.node?.rowIndex);
2153
+ }
2154
+ else {
2155
+ return true;
2172
2156
  }
2173
2157
  }
2174
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridCellValidatorTooltipComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SkyAgGridCellValidatorTooltipComponent, selector: "sky-ag-grid-cell-validator-tooltip", inputs: { params: "params" }, ngImport: i0, template: "<div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n>\n <ng-content />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n</div>\n<sky-popover #validatorPopover popoverType=\"danger\">\n {{ validatorMessage }}\n</sky-popover>\n", styles: [":host div.sky-validator-cell{height:100%;width:100%}:host div.sky-validator-cell:focus{outline:none}\n"], dependencies: [{ kind: "component", type: i1$5.λ6, selector: "sky-popover", inputs: ["alignment", "placement", "popoverTitle", "popoverType"], outputs: ["popoverClosed", "popoverOpened"] }, { kind: "directive", type: i1$5.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { kind: "component", type: i2$3.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription", "helpPopoverContent", "helpPopoverTitle", "helpKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridCellValidatorTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SkyAgGridCellValidatorTooltipComponent, selector: "sky-ag-grid-cell-validator-tooltip", inputs: { params: "params" }, ngImport: i0, template: "<div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n>\n <ng-content />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n</div>\n<sky-popover\n #validatorPopover\n data-sky-id=\"validatorPopover\"\n popoverType=\"danger\"\n>\n {{ validatorMessage }}\n</sky-popover>\n", styles: [":host{display:contents}:host div.sky-validator-cell{height:100%;min-height:var(--ag-row-height);width:100%}:host div.sky-validator-cell:focus{outline:none}\n"], dependencies: [{ kind: "component", type: i1$5.λ6, selector: "sky-popover", inputs: ["alignment", "placement", "popoverTitle", "popoverType"], outputs: ["popoverClosed", "popoverOpened"] }, { kind: "directive", type: i1$5.λ7, selector: "[skyPopover]", inputs: ["skyPopover", "skyPopoverAlignment", "skyPopoverMessageStream", "skyPopoverPlacement", "skyPopoverTrigger"] }, { kind: "component", type: i2$3.λ10, selector: "sky-status-indicator", inputs: ["indicatorType", "descriptionType", "customDescription", "helpPopoverContent", "helpPopoverTitle", "helpKey"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2176
2160
  }
2177
2161
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridCellValidatorTooltipComponent, decorators: [{
2178
2162
  type: Component,
2179
- args: [{ selector: 'sky-ag-grid-cell-validator-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n>\n <ng-content />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n</div>\n<sky-popover #validatorPopover popoverType=\"danger\">\n {{ validatorMessage }}\n</sky-popover>\n", styles: [":host div.sky-validator-cell{height:100%;width:100%}:host div.sky-validator-cell:focus{outline:none}\n"] }]
2180
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { params: [{
2163
+ args: [{ selector: 'sky-ag-grid-cell-validator-tooltip', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n skyPopoverTrigger=\"mouseenter\"\n class=\"sky-validator-cell\"\n [skyPopover]=\"validatorPopover\"\n [skyPopoverMessageStream]=\"popoverMessageStream\"\n>\n <ng-content />\n <sky-status-indicator\n descriptionType=\"none\"\n indicatorType=\"danger\"\n class=\"sky-pull-right\"\n />\n</div>\n<sky-popover\n #validatorPopover\n data-sky-id=\"validatorPopover\"\n popoverType=\"danger\"\n>\n {{ validatorMessage }}\n</sky-popover>\n", styles: [":host{display:contents}:host div.sky-validator-cell{height:100%;min-height:var(--ag-row-height);width:100%}:host div.sky-validator-cell:focus{outline:none}\n"] }]
2164
+ }], propDecorators: { params: [{
2181
2165
  type: Input
2182
2166
  }] } });
2183
2167
 
@@ -2207,34 +2191,31 @@ class SkyAgGridCellRendererCurrencyComponent {
2207
2191
  this.agInit(value);
2208
2192
  }
2209
2193
  /**
2210
- * agInit is called by agGrid once after the renderer is created and provides the renderer with the information it needs.
2211
- * @param params The cell renderer params that include data about the cell, column, row, and grid.
2194
+ * agInit is called by AG Grid once after the renderer is created and provides the renderer with the information it needs.
2212
2195
  */
2213
2196
  agInit(params) {
2214
2197
  this.#updateProperties(params);
2215
2198
  }
2216
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2199
+ /**
2200
+ * refresh is called by AG Grid to update the cell without destroying and recreating the component.
2201
+ */
2217
2202
  refresh(params) {
2203
+ this.agInit(params);
2218
2204
  return false;
2219
2205
  }
2220
2206
  #updateProperties(params) {
2221
2207
  this.value = params.value;
2222
- this.columnWidth = params.column?.getActualWidth();
2223
- this.rowHeightWithoutBorders =
2224
- typeof params.node?.rowHeight === 'number'
2225
- ? params.node?.rowHeight - 4
2226
- : undefined;
2227
2208
  this.skyComponentProperties = params.skyComponentProperties || {};
2228
2209
  this.skyComponentProperties.format = 'currency';
2229
2210
  this.skyComponentProperties.minDigits = 2;
2230
2211
  this.skyComponentProperties.truncate = false;
2231
2212
  }
2232
2213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridCellRendererCurrencyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SkyAgGridCellRendererCurrencyComponent, selector: "sky-ag-grid-cell-renderer-currency", inputs: { params: "params" }, ngImport: i0, template: "<span\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n>\n {{\n value === undefined\n ? undefined\n : (value | skyNumeric: skyComponentProperties)\n }}\n</span>\n", styles: ["input{border:none;padding-left:11px}\n"], dependencies: [{ kind: "pipe", type: i1.SkyNumericPipe, name: "skyNumeric" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2214
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SkyAgGridCellRendererCurrencyComponent, selector: "sky-ag-grid-cell-renderer-currency", inputs: { params: "params" }, ngImport: i0, template: "{{\n value === undefined ? undefined : (value | skyNumeric: skyComponentProperties)\n}}\n", styles: [":host{display:contents}input{border:none;padding-left:11px}\n"], dependencies: [{ kind: "pipe", type: i1.SkyNumericPipe, name: "skyNumeric" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2234
2215
  }
2235
2216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridCellRendererCurrencyComponent, decorators: [{
2236
2217
  type: Component,
2237
- args: [{ selector: 'sky-ag-grid-cell-renderer-currency', changeDetection: ChangeDetectionStrategy.OnPush, template: "<span\n [style.width.px]=\"columnWidth\"\n [style.height.px]=\"rowHeightWithoutBorders\"\n>\n {{\n value === undefined\n ? undefined\n : (value | skyNumeric: skyComponentProperties)\n }}\n</span>\n", styles: ["input{border:none;padding-left:11px}\n"] }]
2218
+ args: [{ selector: 'sky-ag-grid-cell-renderer-currency', changeDetection: ChangeDetectionStrategy.OnPush, template: "{{\n value === undefined ? undefined : (value | skyNumeric: skyComponentProperties)\n}}\n", styles: [":host{display:contents}input{border:none;padding-left:11px}\n"] }]
2238
2219
  }], propDecorators: { params: [{
2239
2220
  type: Input
2240
2221
  }] } });
@@ -2267,11 +2248,11 @@ class SkyAgGridCellRendererCurrencyValidatorComponent {
2267
2248
  return false;
2268
2249
  }
2269
2250
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridCellRendererCurrencyValidatorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
2270
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyAgGridCellRendererCurrencyValidatorComponent, selector: "sky-ag-grid-cell-renderer-currency-validator", inputs: { parameters: "parameters" }, ngImport: i0, template: "@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n", dependencies: [{ kind: "component", type: SkyAgGridCellValidatorTooltipComponent, selector: "sky-ag-grid-cell-validator-tooltip", inputs: ["params"] }, { kind: "component", type: SkyAgGridCellRendererCurrencyComponent, selector: "sky-ag-grid-cell-renderer-currency", inputs: ["params"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SkyAgGridCellRendererCurrencyValidatorComponent, selector: "sky-ag-grid-cell-renderer-currency-validator", inputs: { parameters: "parameters" }, ngImport: i0, template: "@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "component", type: SkyAgGridCellValidatorTooltipComponent, selector: "sky-ag-grid-cell-validator-tooltip", inputs: ["params"] }, { kind: "component", type: SkyAgGridCellRendererCurrencyComponent, selector: "sky-ag-grid-cell-renderer-currency", inputs: ["params"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2271
2252
  }
2272
2253
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SkyAgGridCellRendererCurrencyValidatorComponent, decorators: [{
2273
2254
  type: Component,
2274
- args: [{ selector: 'sky-ag-grid-cell-renderer-currency-validator', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n" }]
2255
+ args: [{ selector: 'sky-ag-grid-cell-renderer-currency-validator', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (cellRendererParams) {\n <sky-ag-grid-cell-validator-tooltip [params]=\"cellRendererParams\">\n @if (isNumeric(cellRendererParams.value)) {\n <sky-ag-grid-cell-renderer-currency [params]=\"cellRendererParams\" />\n } @else {\n {{ cellRendererParams.value }}\n }\n </sky-ag-grid-cell-validator-tooltip>\n}\n", styles: [":host{display:contents}\n"] }]
2275
2256
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { parameters: [{
2276
2257
  type: Input
2277
2258
  }] } });
@@ -3060,6 +3041,7 @@ var SkyCellClass;
3060
3041
  SkyCellClass["Template"] = "sky-ag-grid-cell-template";
3061
3042
  SkyCellClass["Text"] = "sky-ag-grid-cell-text";
3062
3043
  SkyCellClass["Uneditable"] = "sky-ag-grid-cell-uneditable";
3044
+ SkyCellClass["Validator"] = "sky-ag-grid-cell-validator";
3063
3045
  })(SkyCellClass || (SkyCellClass = {}));
3064
3046
 
3065
3047
  /**
@@ -3113,7 +3095,8 @@ function getValidatorCellRendererSelector(component, fallback) {
3113
3095
  if (params.colDef &&
3114
3096
  typeof params.colDef.cellRendererParams?.skyComponentProperties
3115
3097
  ?.validator === 'function') {
3116
- if (!params.colDef.cellRendererParams.skyComponentProperties.validator(params.value, params.data, params?.node?.rowIndex)) {
3098
+ if (params.column?.isCellEditable(params.node) ||
3099
+ !params.colDef.cellRendererParams.skyComponentProperties.validator(params.value, params.data, params?.node?.rowIndex)) {
3117
3100
  return {
3118
3101
  component,
3119
3102
  params: {
@@ -3293,6 +3276,7 @@ class SkyAgGridService {
3293
3276
  }
3294
3277
  const validatorCellClassRules = {
3295
3278
  [SkyCellClass.Invalid]: getValidatorFn(),
3279
+ [SkyCellClass.Validator]: cellClassRuleTrueExpression,
3296
3280
  };
3297
3281
  function getHeaderClass(...classNames) {
3298
3282
  return (params) => {