@slickgrid-universal/row-detail-view-plugin 4.1.0 → 4.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"slickRowDetailView.d.ts","sourceRoot":"","sources":["../../src/slickRowDetailView.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slickRowDetailView.d.ts","sourceRoot":"","sources":["../../src/slickRowDetailView.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slickgrid-universal/row-detail-view-plugin",
3
- "version": "4.1.0",
3
+ "version": "4.3.0",
4
4
  "description": "SlickRowDetail plugin - A plugin to add Row Detail Panel",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -45,8 +45,8 @@
45
45
  "not dead"
46
46
  ],
47
47
  "dependencies": {
48
- "@slickgrid-universal/common": "~4.1.0",
49
- "@slickgrid-universal/utils": "~4.1.0"
48
+ "@slickgrid-universal/common": "~4.3.0",
49
+ "@slickgrid-universal/utils": "~4.3.0"
50
50
  },
51
- "gitHead": "1cfc2658f5d70e66c096e5ea77d1827dd44e0292"
51
+ "gitHead": "42fb4d8bbf9a0199c99658c344c912ac3aaa9772"
52
52
  }
@@ -1,6 +1,6 @@
1
+ import { createDomElement, SlickEvent, SlickEventHandler, Utils as SlickUtils } from '@slickgrid-universal/common';
1
2
  import type {
2
3
  Column,
3
- DOMMouseOrTouchEvent,
4
4
  ExternalResource,
5
5
  FormatterResultWithHtml,
6
6
  GridOption,
@@ -19,8 +19,7 @@ import type {
19
19
  SlickEventData,
20
20
  UsabilityOverrideFn,
21
21
  } from '@slickgrid-universal/common';
22
- import { createDomElement, SlickEvent, SlickEventHandler, } from '@slickgrid-universal/common';
23
- import { objectAssignAndExtend } from '@slickgrid-universal/utils';
22
+ import { extend } from '@slickgrid-universal/utils';
24
23
 
25
24
  /**
26
25
  * A plugin to add Row Detail Panel View (for example providing order detail info when clicking on the order row in the grid)
@@ -34,22 +33,22 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
34
33
  pluginName = 'RowDetailView' as const;
35
34
 
36
35
  /** Fired when the async response finished */
37
- onAsyncEndUpdate = new SlickEvent<OnRowDetailAsyncEndUpdateArgs>();
36
+ onAsyncEndUpdate = new SlickEvent<OnRowDetailAsyncEndUpdateArgs>('onAsyncEndUpdate');
38
37
 
39
38
  /** This event must be used with the "notify" by the end user once the Asynchronous Server call returns the item detail */
40
- onAsyncResponse = new SlickEvent<OnRowDetailAsyncResponseArgs>();
39
+ onAsyncResponse = new SlickEvent<OnRowDetailAsyncResponseArgs>('onAsyncResponse');
41
40
 
42
41
  /** Fired after the row detail gets toggled */
43
- onAfterRowDetailToggle = new SlickEvent<OnAfterRowDetailToggleArgs>();
42
+ onAfterRowDetailToggle = new SlickEvent<OnAfterRowDetailToggleArgs>('onAfterRowDetailToggle');
44
43
 
45
44
  /** Fired before the row detail gets toggled */
46
- onBeforeRowDetailToggle = new SlickEvent<OnBeforeRowDetailToggleArgs>();
45
+ onBeforeRowDetailToggle = new SlickEvent<OnBeforeRowDetailToggleArgs>('onBeforeRowDetailToggle');
47
46
 
48
47
  /** Fired after the row detail gets toggled */
49
- onRowBackToViewportRange = new SlickEvent<OnRowBackToViewportRangeArgs>();
48
+ onRowBackToViewportRange = new SlickEvent<OnRowBackToViewportRangeArgs>('onRowBackToViewportRange');
50
49
 
51
50
  /** Fired after a row becomes out of viewport range (when user can't see the row anymore) */
52
- onRowOutOfViewportRange = new SlickEvent<OnRowOutOfViewportRangeArgs>();
51
+ onRowOutOfViewportRange = new SlickEvent<OnRowOutOfViewportRangeArgs>('onRowOutOfViewportRange');
53
52
 
54
53
  // --
55
54
  // protected props
@@ -77,6 +76,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
77
76
  keyPrefix: '_',
78
77
  loadOnce: false,
79
78
  maxRows: undefined,
79
+ reorderable: false,
80
80
  saveDetailViewOnScroll: true,
81
81
  singleRowExpand: false,
82
82
  useSimpleViewportCalc: false,
@@ -140,22 +140,26 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
140
140
  this._grid = grid;
141
141
  this._gridUid = grid.getUID();
142
142
  if (!this._addonOptions) {
143
- this._addonOptions = objectAssignAndExtend(this.gridOptions.rowDetailView, this._defaults) as RowDetailView;
143
+ this._addonOptions = extend(true, {}, this._defaults, this.gridOptions.rowDetailView) as RowDetailView;
144
144
  }
145
145
  this._keyPrefix = this._addonOptions?.keyPrefix || '_';
146
146
 
147
+ // add PubSub instance to all SlickEvent
148
+ SlickUtils.addSlickEventPubSubWhenDefined(this.pubSubService, this);
149
+
147
150
  // Update the minRowBuffer so that the view doesn't disappear when it's at top of screen + the original default 3
148
151
  this._gridRowBuffer = this.gridOptions.minRowBuffer || 0;
149
152
  this.gridOptions.minRowBuffer = this._addonOptions.panelRows + 3;
150
153
 
151
154
  this._eventHandler
152
- .subscribe(this._grid.onClick, this.handleClick.bind(this) as EventListener)
155
+ .subscribe(this._grid.onClick, this.handleClick.bind(this))
153
156
  .subscribe(this._grid.onBeforeEditCell, () => this.collapseAll())
154
- .subscribe(this._grid.onScroll, this.handleScroll.bind(this) as EventListener);
157
+ .subscribe(this._grid.onScroll, this.handleScroll.bind(this));
155
158
 
156
159
  // Sort will, by default, Collapse all of the open items (unless user implements his own onSort which deals with open row and padding)
157
160
  if (this._addonOptions.collapseAllOnSort) {
158
- this._eventHandler.subscribe(this._grid.onSort, this.collapseAll.bind(this));
161
+ // sort event can be triggered by column header click or from header menu
162
+ this.pubSubService.subscribe('onSortChanged', () => this.collapseAll());
159
163
  this._expandedRows = [];
160
164
  this._rowIdsOutOfViewport = [];
161
165
  }
@@ -200,7 +204,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
200
204
  throw new Error('[Slickgrid-Universal] The Row Detail View requires options to be passed via the "rowDetailView" property of the Grid Options');
201
205
  }
202
206
 
203
- this._addonOptions = objectAssignAndExtend(gridOptions.rowDetailView, this._defaults) as RowDetailView;
207
+ this._addonOptions = extend(true, {}, this._defaults, gridOptions.rowDetailView) as RowDetailView;
204
208
 
205
209
  // user could override the expandable icon logic from within the options or after instantiating the plugin
206
210
  if (typeof this._addonOptions.expandableOverride === 'function') {
@@ -239,7 +243,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
239
243
 
240
244
  /** set or change some of the plugin options */
241
245
  setOptions(options: Partial<RowDetailViewOption>) {
242
- this._addonOptions = objectAssignAndExtend(options, this._addonOptions);
246
+ this._addonOptions = extend(true, {}, this._addonOptions, options) as RowDetailView;
243
247
  if (this._addonOptions?.singleRowExpand) {
244
248
  this.collapseAll();
245
249
  }
@@ -248,9 +252,9 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
248
252
  /** Collapse all of the open items */
249
253
  collapseAll() {
250
254
  this.dataView.beginUpdate();
251
- for (const expandedRow of this._expandedRows) {
255
+ this._expandedRows.forEach(expandedRow => {
252
256
  this.collapseDetailView(expandedRow, true);
253
- }
257
+ });
254
258
  this.dataView.endUpdate();
255
259
  }
256
260
 
@@ -302,7 +306,8 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
302
306
  this.onAsyncResponse.notify({
303
307
  item,
304
308
  itemDetail: item,
305
- detailView: item[`${this._keyPrefix}detailContent`]
309
+ detailView: item[`${this._keyPrefix}detailContent`],
310
+ grid: this._grid
306
311
  });
307
312
  this.applyTemplateNewLineHeight(item);
308
313
  this.dataView.updateItem(item[this._dataViewIdProperty], item);
@@ -331,7 +336,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
331
336
  * subscribe to the onAsyncResponse so that the plugin knows when the user server side calls finished
332
337
  * the response has to be as "args.item" (or "args.itemDetail") with it's data back
333
338
  */
334
- handleOnAsyncResponse(_e: Event, args: { item: any; itemDetail: any; detailView?: any; }) {
339
+ handleOnAsyncResponse(e: SlickEventData, args: { item: any; itemDetail: any; detailView?: any; }) {
335
340
  if (!args || (!args.item && !args.itemDetail)) {
336
341
  console.error('SlickRowDetailView plugin requires the onAsyncResponse() to supply "args.item" property.');
337
342
  return;
@@ -350,7 +355,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
350
355
  grid: this._grid,
351
356
  item: itemDetail,
352
357
  itemDetail,
353
- });
358
+ }, e, this);
354
359
  }
355
360
 
356
361
  /**
@@ -384,6 +389,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
384
389
  excludeFromQuery: true,
385
390
  excludeFromHeaderMenu: true,
386
391
  formatter: this.detailSelectionFormatter.bind(this),
392
+ reorderable: this._addonOptions.reorderable,
387
393
  resizable: false,
388
394
  sortable: false,
389
395
  toolTip: this._addonOptions.toolTip,
@@ -605,7 +611,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
605
611
  }
606
612
 
607
613
  /** The Formatter of the toggling icon of the Row Detail */
608
- protected detailSelectionFormatter(row: number, cell: number, value: any, columnDef: Column, dataContext: any, grid: SlickGrid): FormatterResultWithHtml | HTMLElement | '' {
614
+ protected detailSelectionFormatter(row: number, _cell: number, _val: any, _colDef: Column, dataContext: any, grid: SlickGrid): FormatterResultWithHtml | HTMLElement | '' {
609
615
  if (!this.checkExpandableOverride(row, dataContext, grid)) {
610
616
  return '';
611
617
  } else {
@@ -648,13 +654,17 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
648
654
  });
649
655
  const innerContainerElm = createDomElement('div', { className: `detail-container detailViewContainer_${dataContext[this._dataViewIdProperty]}` });
650
656
  const innerDetailViewElm = createDomElement('div', { className: `innerDetailView_${dataContext[this._dataViewIdProperty]}` });
651
- innerDetailViewElm.innerHTML = this._grid.sanitizeHtmlString(dataContext[`${this._keyPrefix}detailContent`]);
657
+ if (dataContext[`${this._keyPrefix}detailContent`] instanceof HTMLElement) {
658
+ innerDetailViewElm.appendChild(dataContext[`${this._keyPrefix}detailContent`]);
659
+ } else {
660
+ innerDetailViewElm.innerHTML = this._grid.sanitizeHtmlString(dataContext[`${this._keyPrefix}detailContent`]);
661
+ }
652
662
 
653
663
  innerContainerElm.appendChild(innerDetailViewElm);
654
664
  cellDetailContainerElm.appendChild(innerContainerElm);
655
665
 
656
666
  const result: FormatterResultWithHtml = {
657
- html: createDomElement('div', { className: expandedClasses }),
667
+ html: createDomElement('div', { className: expandedClasses.trim() }),
658
668
  insertElementAfterTarget: cellDetailContainerElm,
659
669
  };
660
670
 
@@ -676,12 +686,13 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
676
686
  }
677
687
 
678
688
  /** Handle mouse click event */
679
- protected handleClick(e: DOMMouseOrTouchEvent<HTMLDivElement>, args: { row: number; cell: number; }) {
689
+ protected handleClick(e: SlickEventData, args: { row: number; cell: number; }) {
680
690
  const dataContext = this._grid.getDataItem(args.row);
691
+
681
692
  if (this.checkExpandableOverride(args.row, dataContext, this._grid)) {
682
693
  // clicking on a row select checkbox
683
694
  const columnDef = this._grid.getColumns()[args.cell];
684
- if (this._addonOptions.useRowClick || (columnDef.id === this._addonOptions.columnId && e.target.classList.contains(this._addonOptions.cssClass || ''))) {
695
+ if (this._addonOptions.useRowClick || (columnDef.id === this._addonOptions.columnId && e.target!.classList.contains(this._addonOptions.cssClass || ''))) {
685
696
  // if editing, try to commit
686
697
  if (this._grid.getEditorLock().isActive() && !this._grid.getEditorLock().commitCurrentEdit()) {
687
698
  e.preventDefault();
@@ -690,10 +701,11 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
690
701
  }
691
702
 
692
703
  // trigger an event before toggling
693
- this.onBeforeRowDetailToggle.notify({
694
- grid: this._grid,
695
- item: dataContext
696
- });
704
+ // user could cancel the Row Detail opening when event is returning false
705
+ const ignorePrevEventDataValue = true; // click event might return false from Row Selection canCellBeActive() validation, we need to ignore that
706
+ if (this.onBeforeRowDetailToggle.notify({ grid: this._grid, item: dataContext }, e, this, ignorePrevEventDataValue).getReturnValue() === false) {
707
+ return;
708
+ }
697
709
 
698
710
  this.toggleRowSelection(args.row, dataContext);
699
711
 
@@ -702,7 +714,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
702
714
  grid: this._grid,
703
715
  item: dataContext,
704
716
  expandedRows: this._expandedRows,
705
- });
717
+ }, e, this);
706
718
 
707
719
  e.stopPropagation();
708
720
  e.stopImmediatePropagation();
@@ -728,7 +740,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
728
740
  rowIndex,
729
741
  expandedRows: this._expandedRows,
730
742
  rowIdsOutOfViewport: this.syncOutOfViewportArray(rowId, true)
731
- });
743
+ }, null, this);
732
744
  }
733
745
 
734
746
  protected notifyBackToViewportWhenDomExist(item: any, rowId: number | string) {
@@ -744,7 +756,7 @@ export class SlickRowDetailView implements ExternalResource, UniversalRowDetailV
744
756
  rowIndex,
745
757
  expandedRows: this._expandedRows,
746
758
  rowIdsOutOfViewport: this.syncOutOfViewportArray(rowId, false)
747
- });
759
+ }, null, this);
748
760
  }
749
761
  }, 100);
750
762
  }