@revolist/revogrid 4.2.0-next.1 → 4.2.0-next.2

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 (33) hide show
  1. package/custom-element/revo-grid.js +10 -4
  2. package/custom-element/revogr-focus2.js +8 -2
  3. package/custom-element/revogr-overlay-selection2.js +17 -15
  4. package/custom-element/revogr-row-headers2.js +2 -0
  5. package/dist/cjs/loader.cjs.js +1 -1
  6. package/dist/cjs/revo-grid.cjs.js +1 -1
  7. package/dist/cjs/revo-grid_11.cjs.entry.js +34 -20
  8. package/dist/collection/components/overlay/revogr-overlay-selection.js +17 -15
  9. package/dist/collection/components/revoGrid/revo-grid.d.ts +8 -0
  10. package/dist/collection/components/revoGrid/revo-grid.js +42 -1
  11. package/dist/collection/components/revoGrid/viewport.section.d.ts +2 -1
  12. package/dist/collection/components/revoGrid/viewport.section.js +2 -2
  13. package/dist/collection/components/rowHeaders/revogr-row-headers.js +1 -1
  14. package/dist/collection/components/selectionFocus/revogr-focus.d.ts +1 -0
  15. package/dist/collection/components/selectionFocus/revogr-focus.js +26 -1
  16. package/dist/collection/components.d.ts +11 -0
  17. package/dist/collection/interfaces.d.ts +5 -4
  18. package/dist/collection/plugins/stretchPlugin.js +1 -1
  19. package/dist/collection/store/viewPort/viewport.store.js +2 -0
  20. package/dist/collection/{components/rowHeaders → utils}/row-header-utils.d.ts +1 -1
  21. package/dist/collection/{components/rowHeaders → utils}/row-header-utils.js +0 -0
  22. package/dist/esm/loader.js +1 -1
  23. package/dist/esm/revo-grid.js +1 -1
  24. package/dist/esm/revo-grid_11.entry.js +34 -20
  25. package/dist/revo-grid/revo-grid.esm.js +1 -1
  26. package/dist/revo-grid/revo-grid_11.entry.js +1 -1
  27. package/dist/types/components/revoGrid/revo-grid.d.ts +8 -0
  28. package/dist/types/components/revoGrid/viewport.section.d.ts +2 -1
  29. package/dist/types/components/selectionFocus/revogr-focus.d.ts +1 -0
  30. package/dist/types/components.d.ts +11 -0
  31. package/dist/types/interfaces.d.ts +5 -4
  32. package/dist/types/{components/rowHeaders → utils}/row-header-utils.d.ts +1 -1
  33. package/package.json +1 -1
@@ -2645,7 +2645,7 @@ class ViewportService {
2645
2645
  * First we render vertical parts - pinned start, data, pinned end
2646
2646
  * Per each column we render data collections: headers, pinned top, center data, pinned bottom
2647
2647
  */
2648
- const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll }) => {
2648
+ const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll, focusTemplate }) => {
2649
2649
  const viewPortHtml = [];
2650
2650
  /** render viewports columns */
2651
2651
  for (let view of columns) {
@@ -2657,7 +2657,7 @@ const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns,
2657
2657
  const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { slot: data.slot, selectionStore: data.segmentSelectionStore, editors: editors, readonly: readonly, range: range, useClipboard: useClipboard, applyChangesOnClose: applyEditorChangesOnClose, onSetEdit: ({ detail }) => onEdit(detail) }),
2658
2658
  h("revogr-data", Object.assign({}, data, { [UUID]: data.uuid }, { key: key, readonly: readonly, range: range, rowClass: rowClass, rowSelectionStore: data.rowSelectionStore, slot: DATA_SLOT })),
2659
2659
  h("revogr-temp-range", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }),
2660
- h("revogr-focus", { rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
2660
+ h("revogr-focus", { focusTemplate: focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
2661
2661
  dataViews.push(dataView);
2662
2662
  });
2663
2663
  viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => registerElement(el, view.prop.key), onScrollViewport: e => onScroll(e.detail, view.prop.key) }), dataViews));
@@ -3076,6 +3076,7 @@ let RevoGridComponent = class extends HTMLElement {
3076
3076
  this.beforerowdefinition = createEvent(this, "beforerowdefinition", 7);
3077
3077
  this.filterconfigchanged = createEvent(this, "filterconfigchanged", 7);
3078
3078
  this.mergechanged = createEvent(this, "mergechanged", 7);
3079
+ this.rowheaderschanged = createEvent(this, "rowheaderschanged", 7);
3079
3080
  /**
3080
3081
  * Defines how many rows/columns should be rendered outside visible area.
3081
3082
  */
@@ -3575,6 +3576,9 @@ let RevoGridComponent = class extends HTMLElement {
3575
3576
  mergeChange(mergeVal) {
3576
3577
  this.mergechanged.emit(mergeVal);
3577
3578
  }
3579
+ rowHeadersChange(rowHeaders) {
3580
+ this.rowheaderschanged.emit(rowHeaders);
3581
+ }
3578
3582
  dataSourceApply(source = [], type = 'rgRow') {
3579
3583
  const beforesourceset = this.beforeAnySource.emit({
3580
3584
  type,
@@ -3683,7 +3687,7 @@ let RevoGridComponent = class extends HTMLElement {
3683
3687
  if (!event.defaultPrevented) {
3684
3688
  this.selectionStoreConnector.setEdit(detail.isCancel ? false : detail.val);
3685
3689
  }
3686
- }, registerElement: (e, k) => this.scrollingService.registerElement(e, k), onScroll: (details, k) => this.scrollingService.onScroll(details, k) }));
3690
+ }, registerElement: (e, k) => this.scrollingService.registerElement(e, k), onScroll: (details, k) => this.scrollingService.onScroll(details, k), focusTemplate: this.focusTemplate }));
3687
3691
  return (h(Host, Object.assign({}, { [`${UUID}`]: this.uuid }), h(RevoViewPort, { viewports: this.viewportProvider.stores, dimensions: this.dimensionProvider.stores, orderRef: e => (this.orderService = e), registerElement: (e, k) => this.scrollingService.registerElement(e, k), nakedClick: () => this.viewport.clearEdit(), onScroll: details => this.scrollingService.onScroll(details) }, views), this.extraElements));
3688
3692
  }
3689
3693
  get element() { return this; }
@@ -3698,7 +3702,8 @@ let RevoGridComponent = class extends HTMLElement {
3698
3702
  "grouping": ["groupingChanged"],
3699
3703
  "stretch": ["applyStretch"],
3700
3704
  "filter": ["applyFilter"],
3701
- "merged": ["mergeChange"]
3705
+ "merged": ["mergeChange"],
3706
+ "rowHeaders": ["rowHeadersChange"]
3702
3707
  }; }
3703
3708
  static get style() { return revoGridStyleCss; }
3704
3709
  };
@@ -3725,6 +3730,7 @@ RevoGridComponent = /*@__PURE__*/ proxyCustomElement(RevoGridComponent, [0, "rev
3725
3730
  "rowClass": [513, "row-class"],
3726
3731
  "autoSizeColumn": [4, "auto-size-column"],
3727
3732
  "filter": [4],
3733
+ "focusTemplate": [16],
3728
3734
  "canMoveColumns": [4, "can-move-columns"],
3729
3735
  "trimmedRows": [16],
3730
3736
  "exporting": [4],
@@ -20,6 +20,10 @@ let RevogrFocus = class extends HTMLElement {
20
20
  this.el && this.changed(this.el);
21
21
  }
22
22
  render() {
23
+ const editCell = this.selectionStore.get('edit');
24
+ if (editCell) {
25
+ return;
26
+ }
23
27
  const data = this.selectionStore.get('focus');
24
28
  if (data) {
25
29
  const event = this.beforeFocusRender.emit({
@@ -32,7 +36,8 @@ let RevogrFocus = class extends HTMLElement {
32
36
  }
33
37
  const { detail } = event;
34
38
  const style = getElStyle(detail.range, this.dimensionRow.state, this.dimensionCol.state);
35
- return h(Host, { class: FOCUS_CLASS, style: style });
39
+ const extra = this.focusTemplate && this.focusTemplate(h, detail);
40
+ return h(Host, { class: FOCUS_CLASS, style: style }, extra);
36
41
  }
37
42
  }
38
43
  get el() { return this; }
@@ -43,7 +48,8 @@ RevogrFocus = /*@__PURE__*/ proxyCustomElement(RevogrFocus, [0, "revogr-focus",
43
48
  "dimensionRow": [16],
44
49
  "dimensionCol": [16],
45
50
  "colType": [1, "col-type"],
46
- "rowType": [1, "row-type"]
51
+ "rowType": [1, "row-type"],
52
+ "focusTemplate": [16]
47
53
  }]);
48
54
  function defineCustomElement() {
49
55
  if (typeof customElements === "undefined") {
@@ -560,13 +560,13 @@ let OverlaySelection = class extends HTMLElement {
560
560
  // if can edit
561
561
  const editCell = this.selectionStore.get('edit');
562
562
  if (this.readonly || !editCell) {
563
- return;
563
+ return null;
564
564
  }
565
565
  const val = editCell.val || this.columnService.getCellData(editCell.y, editCell.x);
566
566
  const editable = Object.assign(Object.assign({}, editCell), this.columnService.getSaveData(editCell.y, editCell.x, val));
567
567
  const renderEvent = this.beforeEditRender.emit(Object.assign({ range: Object.assign(Object.assign({}, editCell), { x1: editCell.x, y1: editCell.y }) }, this.types));
568
568
  if (renderEvent.defaultPrevented) {
569
- return;
569
+ return null;
570
570
  }
571
571
  const { detail: { range } } = renderEvent;
572
572
  const style = getElStyle(range, this.dimensionRow.state, this.dimensionCol.state);
@@ -584,24 +584,26 @@ let OverlaySelection = class extends HTMLElement {
584
584
  }, editCell: editable, saveOnClose: this.applyChangesOnClose, column: this.columnService.columns[editCell.x], editor: this.columnService.getCellEditor(editCell.y, editCell.x, this.editors), style: style }));
585
585
  }
586
586
  render() {
587
- const range = this.selectionStoreService.ranged;
588
- const selectionFocus = this.selectionStoreService.focused;
589
587
  const els = [];
590
588
  const editCell = this.renderEditCell();
591
- if ((range || selectionFocus) && !editCell && this.useClipboard) {
592
- els.push(this.clipboardService.renderClipboard());
593
- }
594
- if (range) {
595
- els.push(...this.renderRange(range));
596
- }
597
589
  if (editCell) {
598
590
  els.push(editCell);
599
591
  }
600
- if (selectionFocus && !this.readonly && !editCell && this.range) {
601
- els.push(this.autoFillService.renderAutofill(range, selectionFocus));
602
- }
603
- if (this.canDrag) {
604
- els.push(h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onInternalRowDragStart: e => this.onRowDragStart(e) }));
592
+ else {
593
+ const range = this.selectionStoreService.ranged;
594
+ const selectionFocus = this.selectionStoreService.focused;
595
+ if ((range || selectionFocus) && this.useClipboard) {
596
+ els.push(this.clipboardService.renderClipboard());
597
+ }
598
+ if (range) {
599
+ els.push(...this.renderRange(range));
600
+ }
601
+ if (selectionFocus && !this.readonly && this.range) {
602
+ els.push(this.autoFillService.renderAutofill(range, selectionFocus));
603
+ }
604
+ if (this.canDrag) {
605
+ els.push(h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onInternalRowDragStart: e => this.onRowDragStart(e) }));
606
+ }
605
607
  }
606
608
  return (h(Host, { onDblClick: () => this.doEdit(), onMouseDown: (e) => this.onElementMouseDown(e) }, els, h("slot", { name: "data" })));
607
609
  }
@@ -280,11 +280,13 @@ class ViewportStore {
280
280
  }
281
281
  // change size
282
282
  const size = sizes[item.itemIndex];
283
+ // size found
283
284
  if (size) {
284
285
  const changedSize = size - item.size;
285
286
  changedCoordinate += changedSize;
286
287
  item.size = size;
287
288
  item.end = item.start + size;
289
+ // size lost
288
290
  }
289
291
  // loop by start index
290
292
  start++;
@@ -28,7 +28,7 @@ const patchEsm = () => {
28
28
  const defineCustomElements = (win, options) => {
29
29
  if (typeof window === 'undefined') return Promise.resolve();
30
30
  return patchEsm().then(() => {
31
- return index.bootstrapLazy([["revogr-clipboard.cjs",[[0,"revogr-clipboard",{"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"]]]]],["revogr-filter-panel.cjs",[[0,"revogr-filter-panel",{"uuid":[1537],"filterItems":[16],"filterTypes":[16],"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revo-grid_11.cjs",[[0,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyEditorChangesOnClose":[4,"apply-editor-changes-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"merged":[16],"extraElements":[32],"refresh":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"registerVNode":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64]},[[0,"internalRowDragStart","onRowDragStarted"],[0,"internalRowDragEnd","onRowDragEnd"],[0,"internalRowDrag","onRowDrag"],[0,"internalRowMouseMove","onRowMouseMove"],[0,"internalCellEdit","onBeforeEdit"],[0,"internalRangeDataApply","onBeforeRangeEdit"],[0,"internalSelectionChanged","onRangeChanged"],[0,"initialRowDropped","onRowDropped"],[0,"initialHeaderClick","onHeaderClick"],[0,"beforeFocusCell","onCellFocus"]]],[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"uiid":[1],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16]}],[4,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"]},[[5,"mousemove","onMouseMove"],[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"],[0,"dragStartCell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]]],[0,"revogr-focus",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"colType":[1,"col-type"],"rowType":[1,"row-type"]}],[0,"revogr-scroll-virtual",{"dimension":[1],"viewportStore":[16],"dimensionStore":[16],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[1]}],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"cancel":[64]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"parent":[1],"groups":[16],"groupingDepth":[2,"grouping-depth"],"canResize":[4,"can-resize"],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"dragStart":[64],"endOrder":[64],"clearOrder":[64]},[[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"]]],[4,"revogr-viewport-scroll",{"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"setScroll":[64],"changeScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]]]]], options);
31
+ return index.bootstrapLazy([["revogr-clipboard.cjs",[[0,"revogr-clipboard",{"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"]]]]],["revogr-filter-panel.cjs",[[0,"revogr-filter-panel",{"uuid":[1537],"filterItems":[16],"filterTypes":[16],"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revo-grid_11.cjs",[[0,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyEditorChangesOnClose":[4,"apply-editor-changes-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"merged":[16],"extraElements":[32],"refresh":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"registerVNode":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64]},[[0,"internalRowDragStart","onRowDragStarted"],[0,"internalRowDragEnd","onRowDragEnd"],[0,"internalRowDrag","onRowDrag"],[0,"internalRowMouseMove","onRowMouseMove"],[0,"internalCellEdit","onBeforeEdit"],[0,"internalRangeDataApply","onBeforeRangeEdit"],[0,"internalSelectionChanged","onRangeChanged"],[0,"initialRowDropped","onRowDropped"],[0,"initialHeaderClick","onHeaderClick"],[0,"beforeFocusCell","onCellFocus"]]],[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"uiid":[1],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16]}],[4,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"]},[[5,"mousemove","onMouseMove"],[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"],[0,"dragStartCell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]]],[0,"revogr-focus",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"colType":[1,"col-type"],"rowType":[1,"row-type"],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"viewportStore":[16],"dimensionStore":[16],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[1]}],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"cancel":[64]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"parent":[1],"groups":[16],"groupingDepth":[2,"grouping-depth"],"canResize":[4,"can-resize"],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"dragStart":[64],"endOrder":[64],"clearOrder":[64]},[[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"]]],[4,"revogr-viewport-scroll",{"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"setScroll":[64],"changeScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]]]]], options);
32
32
  });
33
33
  };
34
34
 
@@ -72,5 +72,5 @@ const patchDynamicImport = (base, orgScriptElm) => {
72
72
  };
73
73
 
74
74
  patchBrowser().then(options => {
75
- return index.bootstrapLazy([["revogr-clipboard.cjs",[[0,"revogr-clipboard",{"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"]]]]],["revogr-filter-panel.cjs",[[0,"revogr-filter-panel",{"uuid":[1537],"filterItems":[16],"filterTypes":[16],"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revo-grid_11.cjs",[[0,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyEditorChangesOnClose":[4,"apply-editor-changes-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"merged":[16],"extraElements":[32],"refresh":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"registerVNode":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64]},[[0,"internalRowDragStart","onRowDragStarted"],[0,"internalRowDragEnd","onRowDragEnd"],[0,"internalRowDrag","onRowDrag"],[0,"internalRowMouseMove","onRowMouseMove"],[0,"internalCellEdit","onBeforeEdit"],[0,"internalRangeDataApply","onBeforeRangeEdit"],[0,"internalSelectionChanged","onRangeChanged"],[0,"initialRowDropped","onRowDropped"],[0,"initialHeaderClick","onHeaderClick"],[0,"beforeFocusCell","onCellFocus"]]],[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"uiid":[1],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16]}],[4,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"]},[[5,"mousemove","onMouseMove"],[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"],[0,"dragStartCell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]]],[0,"revogr-focus",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"colType":[1,"col-type"],"rowType":[1,"row-type"]}],[0,"revogr-scroll-virtual",{"dimension":[1],"viewportStore":[16],"dimensionStore":[16],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[1]}],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"cancel":[64]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"parent":[1],"groups":[16],"groupingDepth":[2,"grouping-depth"],"canResize":[4,"can-resize"],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"dragStart":[64],"endOrder":[64],"clearOrder":[64]},[[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"]]],[4,"revogr-viewport-scroll",{"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"setScroll":[64],"changeScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]]]]], options);
75
+ return index.bootstrapLazy([["revogr-clipboard.cjs",[[0,"revogr-clipboard",{"doCopy":[64]},[[4,"paste","onPaste"],[4,"copy","copyStarted"]]]]],["revogr-filter-panel.cjs",[[0,"revogr-filter-panel",{"uuid":[1537],"filterItems":[16],"filterTypes":[16],"filterNames":[16],"filterEntities":[16],"filterCaptions":[16],"disableDynamicFiltering":[4,"disable-dynamic-filtering"],"isFilterIdSet":[32],"filterId":[32],"currentFilterId":[32],"currentFilterType":[32],"changes":[32],"show":[64],"getChanges":[64]},[[5,"mousedown","onMouseDown"]]]]],["revo-grid_11.cjs",[[0,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"applyEditorChangesOnClose":[4,"apply-editor-changes-on-close"],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"focusTemplate":[16],"canMoveColumns":[4,"can-move-columns"],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"merged":[16],"extraElements":[32],"refresh":[64],"scrollToRow":[64],"scrollToColumnIndex":[64],"scrollToColumnProp":[64],"updateColumns":[64],"addTrimmed":[64],"scrollToCoordinate":[64],"setCellEdit":[64],"setCellsFocus":[64],"registerVNode":[64],"getSource":[64],"getVisibleSource":[64],"getSourceStore":[64],"getColumnStore":[64],"updateColumnSorting":[64],"clearSorting":[64],"getColumns":[64],"clearFocus":[64],"getPlugins":[64],"getFocused":[64],"getContentSize":[64],"getSelectedRange":[64]},[[0,"internalRowDragStart","onRowDragStarted"],[0,"internalRowDragEnd","onRowDragEnd"],[0,"internalRowDrag","onRowDrag"],[0,"internalRowMouseMove","onRowMouseMove"],[0,"internalCellEdit","onBeforeEdit"],[0,"internalRangeDataApply","onBeforeRangeEdit"],[0,"internalSelectionChanged","onRangeChanged"],[0,"initialRowDropped","onRowDropped"],[0,"initialHeaderClick","onHeaderClick"],[0,"beforeFocusCell","onCellFocus"]]],[0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"uiid":[1],"rowClass":[1,"row-class"],"resize":[4],"rowHeaderColumn":[16]}],[4,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16],"applyChangesOnClose":[4,"apply-changes-on-close"]},[[5,"mousemove","onMouseMove"],[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"],[0,"dragStartCell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]]],[0,"revogr-focus",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"colType":[1,"col-type"],"rowType":[1,"row-type"],"focusTemplate":[16]}],[0,"revogr-scroll-virtual",{"dimension":[1],"viewportStore":[16],"dimensionStore":[16],"setScroll":[64],"changeScroll":[64]}],[0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}],[0,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[1]}],[0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16],"saveOnClose":[4,"save-on-close"],"cancel":[64]}],[0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"parent":[1],"groups":[16],"groupingDepth":[2,"grouping-depth"],"canResize":[4,"can-resize"],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1]}],[0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"dragStart":[64],"endOrder":[64],"clearOrder":[64]},[[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"]]],[4,"revogr-viewport-scroll",{"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"],"setScroll":[64],"changeScroll":[64]},[[0,"mousewheel-vertical","mousewheelVertical"],[0,"mousewheel-horizontal","mousewheelHorizontal"],[0,"scroll-coordinate","scrollApply"]]]]]], options);
76
76
  });
@@ -22007,11 +22007,13 @@ class ViewportStore {
22007
22007
  }
22008
22008
  // change size
22009
22009
  const size = sizes[item.itemIndex];
22010
+ // size found
22010
22011
  if (size) {
22011
22012
  const changedSize = size - item.size;
22012
22013
  changedCoordinate += changedSize;
22013
22014
  item.size = size;
22014
22015
  item.end = item.start + size;
22016
+ // size lost
22015
22017
  }
22016
22018
  // loop by start index
22017
22019
  start++;
@@ -24641,7 +24643,7 @@ class ViewportService {
24641
24643
  * First we render vertical parts - pinned start, data, pinned end
24642
24644
  * Per each column we render data collections: headers, pinned top, center data, pinned bottom
24643
24645
  */
24644
- const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll }) => {
24646
+ const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll, focusTemplate }) => {
24645
24647
  const viewPortHtml = [];
24646
24648
  /** render viewports columns */
24647
24649
  for (let view of columns) {
@@ -24653,7 +24655,7 @@ const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns,
24653
24655
  const dataView = (index.h("revogr-overlay-selection", Object.assign({}, data, { slot: data.slot, selectionStore: data.segmentSelectionStore, editors: editors, readonly: readonly, range: range, useClipboard: useClipboard, applyChangesOnClose: applyEditorChangesOnClose, onSetEdit: ({ detail }) => onEdit(detail) }),
24654
24656
  index.h("revogr-data", Object.assign({}, data, { [UUID]: data.uuid }, { key: key, readonly: readonly, range: range, rowClass: rowClass, rowSelectionStore: data.rowSelectionStore, slot: DATA_SLOT })),
24655
24657
  index.h("revogr-temp-range", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }),
24656
- index.h("revogr-focus", { rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
24658
+ index.h("revogr-focus", { focusTemplate: focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
24657
24659
  dataViews.push(dataView);
24658
24660
  });
24659
24661
  viewPortHtml.push(index.h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => registerElement(el, view.prop.key), onScrollViewport: e => onScroll(e.detail, view.prop.key) }), dataViews));
@@ -25089,6 +25091,7 @@ let RevoGridComponent = class {
25089
25091
  this.beforerowdefinition = index.createEvent(this, "beforerowdefinition", 7);
25090
25092
  this.filterconfigchanged = index.createEvent(this, "filterconfigchanged", 7);
25091
25093
  this.mergechanged = index.createEvent(this, "mergechanged", 7);
25094
+ this.rowheaderschanged = index.createEvent(this, "rowheaderschanged", 7);
25092
25095
  /**
25093
25096
  * Defines how many rows/columns should be rendered outside visible area.
25094
25097
  */
@@ -25588,6 +25591,9 @@ let RevoGridComponent = class {
25588
25591
  mergeChange(mergeVal) {
25589
25592
  this.mergechanged.emit(mergeVal);
25590
25593
  }
25594
+ rowHeadersChange(rowHeaders) {
25595
+ this.rowheaderschanged.emit(rowHeaders);
25596
+ }
25591
25597
  dataSourceApply(source = [], type = 'rgRow') {
25592
25598
  const beforesourceset = this.beforeAnySource.emit({
25593
25599
  type,
@@ -25696,7 +25702,7 @@ let RevoGridComponent = class {
25696
25702
  if (!event.defaultPrevented) {
25697
25703
  this.selectionStoreConnector.setEdit(detail.isCancel ? false : detail.val);
25698
25704
  }
25699
- }, registerElement: (e, k) => this.scrollingService.registerElement(e, k), onScroll: (details, k) => this.scrollingService.onScroll(details, k) }));
25705
+ }, registerElement: (e, k) => this.scrollingService.registerElement(e, k), onScroll: (details, k) => this.scrollingService.onScroll(details, k), focusTemplate: this.focusTemplate }));
25700
25706
  return (index.h(index.Host, Object.assign({}, { [`${UUID}`]: this.uuid }), index.h(RevoViewPort, { viewports: this.viewportProvider.stores, dimensions: this.dimensionProvider.stores, orderRef: e => (this.orderService = e), registerElement: (e, k) => this.scrollingService.registerElement(e, k), nakedClick: () => this.viewport.clearEdit(), onScroll: details => this.scrollingService.onScroll(details) }, views), this.extraElements));
25701
25707
  }
25702
25708
  get element() { return index.getElement(this); }
@@ -25711,7 +25717,8 @@ let RevoGridComponent = class {
25711
25717
  "grouping": ["groupingChanged"],
25712
25718
  "stretch": ["applyStretch"],
25713
25719
  "filter": ["applyFilter"],
25714
- "merged": ["mergeChange"]
25720
+ "merged": ["mergeChange"],
25721
+ "rowHeaders": ["rowHeadersChange"]
25715
25722
  }; }
25716
25723
  };
25717
25724
  RevoGridComponent.style = revoGridStyleCss;
@@ -26666,6 +26673,10 @@ let RevogrFocus$1 = class {
26666
26673
  this.el && this.changed(this.el);
26667
26674
  }
26668
26675
  render() {
26676
+ const editCell = this.selectionStore.get('edit');
26677
+ if (editCell) {
26678
+ return;
26679
+ }
26669
26680
  const data = this.selectionStore.get('focus');
26670
26681
  if (data) {
26671
26682
  const event = this.beforeFocusRender.emit({
@@ -26678,7 +26689,8 @@ let RevogrFocus$1 = class {
26678
26689
  }
26679
26690
  const { detail } = event;
26680
26691
  const style = getElStyle(detail.range, this.dimensionRow.state, this.dimensionCol.state);
26681
- return index.h(index.Host, { class: FOCUS_CLASS, style: style });
26692
+ const extra = this.focusTemplate && this.focusTemplate(index.h, detail);
26693
+ return index.h(index.Host, { class: FOCUS_CLASS, style: style }, extra);
26682
26694
  }
26683
26695
  }
26684
26696
  get el() { return index.getElement(this); }
@@ -27944,13 +27956,13 @@ let OverlaySelection = class {
27944
27956
  // if can edit
27945
27957
  const editCell = this.selectionStore.get('edit');
27946
27958
  if (this.readonly || !editCell) {
27947
- return;
27959
+ return null;
27948
27960
  }
27949
27961
  const val = editCell.val || this.columnService.getCellData(editCell.y, editCell.x);
27950
27962
  const editable = Object.assign(Object.assign({}, editCell), this.columnService.getSaveData(editCell.y, editCell.x, val));
27951
27963
  const renderEvent = this.beforeEditRender.emit(Object.assign({ range: Object.assign(Object.assign({}, editCell), { x1: editCell.x, y1: editCell.y }) }, this.types));
27952
27964
  if (renderEvent.defaultPrevented) {
27953
- return;
27965
+ return null;
27954
27966
  }
27955
27967
  const { detail: { range } } = renderEvent;
27956
27968
  const style = getElStyle(range, this.dimensionRow.state, this.dimensionCol.state);
@@ -27968,24 +27980,26 @@ let OverlaySelection = class {
27968
27980
  }, editCell: editable, saveOnClose: this.applyChangesOnClose, column: this.columnService.columns[editCell.x], editor: this.columnService.getCellEditor(editCell.y, editCell.x, this.editors), style: style }));
27969
27981
  }
27970
27982
  render() {
27971
- const range = this.selectionStoreService.ranged;
27972
- const selectionFocus = this.selectionStoreService.focused;
27973
27983
  const els = [];
27974
27984
  const editCell = this.renderEditCell();
27975
- if ((range || selectionFocus) && !editCell && this.useClipboard) {
27976
- els.push(this.clipboardService.renderClipboard());
27977
- }
27978
- if (range) {
27979
- els.push(...this.renderRange(range));
27980
- }
27981
27985
  if (editCell) {
27982
27986
  els.push(editCell);
27983
27987
  }
27984
- if (selectionFocus && !this.readonly && !editCell && this.range) {
27985
- els.push(this.autoFillService.renderAutofill(range, selectionFocus));
27986
- }
27987
- if (this.canDrag) {
27988
- els.push(index.h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onInternalRowDragStart: e => this.onRowDragStart(e) }));
27988
+ else {
27989
+ const range = this.selectionStoreService.ranged;
27990
+ const selectionFocus = this.selectionStoreService.focused;
27991
+ if ((range || selectionFocus) && this.useClipboard) {
27992
+ els.push(this.clipboardService.renderClipboard());
27993
+ }
27994
+ if (range) {
27995
+ els.push(...this.renderRange(range));
27996
+ }
27997
+ if (selectionFocus && !this.readonly && this.range) {
27998
+ els.push(this.autoFillService.renderAutofill(range, selectionFocus));
27999
+ }
28000
+ if (this.canDrag) {
28001
+ els.push(index.h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onInternalRowDragStart: e => this.onRowDragStart(e) }));
28002
+ }
27989
28003
  }
27990
28004
  return (index.h(index.Host, { onDblClick: () => this.doEdit(), onMouseDown: (e) => this.onElementMouseDown(e) }, els, index.h("slot", { name: "data" })));
27991
28005
  }
@@ -145,13 +145,13 @@ export class OverlaySelection {
145
145
  // if can edit
146
146
  const editCell = this.selectionStore.get('edit');
147
147
  if (this.readonly || !editCell) {
148
- return;
148
+ return null;
149
149
  }
150
150
  const val = editCell.val || this.columnService.getCellData(editCell.y, editCell.x);
151
151
  const editable = Object.assign(Object.assign({}, editCell), this.columnService.getSaveData(editCell.y, editCell.x, val));
152
152
  const renderEvent = this.beforeEditRender.emit(Object.assign({ range: Object.assign(Object.assign({}, editCell), { x1: editCell.x, y1: editCell.y }) }, this.types));
153
153
  if (renderEvent.defaultPrevented) {
154
- return;
154
+ return null;
155
155
  }
156
156
  const { detail: { range } } = renderEvent;
157
157
  const style = getElStyle(range, this.dimensionRow.state, this.dimensionCol.state);
@@ -169,24 +169,26 @@ export class OverlaySelection {
169
169
  }, editCell: editable, saveOnClose: this.applyChangesOnClose, column: this.columnService.columns[editCell.x], editor: this.columnService.getCellEditor(editCell.y, editCell.x, this.editors), style: style }));
170
170
  }
171
171
  render() {
172
- const range = this.selectionStoreService.ranged;
173
- const selectionFocus = this.selectionStoreService.focused;
174
172
  const els = [];
175
173
  const editCell = this.renderEditCell();
176
- if ((range || selectionFocus) && !editCell && this.useClipboard) {
177
- els.push(this.clipboardService.renderClipboard());
178
- }
179
- if (range) {
180
- els.push(...this.renderRange(range));
181
- }
182
174
  if (editCell) {
183
175
  els.push(editCell);
184
176
  }
185
- if (selectionFocus && !this.readonly && !editCell && this.range) {
186
- els.push(this.autoFillService.renderAutofill(range, selectionFocus));
187
- }
188
- if (this.canDrag) {
189
- els.push(h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onInternalRowDragStart: e => this.onRowDragStart(e) }));
177
+ else {
178
+ const range = this.selectionStoreService.ranged;
179
+ const selectionFocus = this.selectionStoreService.focused;
180
+ if ((range || selectionFocus) && this.useClipboard) {
181
+ els.push(this.clipboardService.renderClipboard());
182
+ }
183
+ if (range) {
184
+ els.push(...this.renderRange(range));
185
+ }
186
+ if (selectionFocus && !this.readonly && this.range) {
187
+ els.push(this.autoFillService.renderAutofill(range, selectionFocus));
188
+ }
189
+ if (this.canDrag) {
190
+ els.push(h("revogr-order-editor", { ref: e => (this.orderEditor = e), dataStore: this.dataStore, dimensionRow: this.dimensionRow, dimensionCol: this.dimensionCol, parent: this.element, onInternalRowDragStart: e => this.onRowDragStart(e) }));
191
+ }
190
192
  }
191
193
  return (h(Host, { onDblClick: () => this.doEdit(), onMouseDown: (e) => this.onElementMouseDown(e) },
192
194
  els,
@@ -93,6 +93,12 @@ export declare class RevoGridComponent {
93
93
  * Can be filter collection
94
94
  */
95
95
  filter: boolean | ColumnFilterConfig;
96
+ /**
97
+ * Apply changes typed in editor on editor close except Escape cases
98
+ * If custom editor in use @method getValue required
99
+ * Check interfaces.d.ts @EditorBase for more info
100
+ */
101
+ focusTemplate: RevoGrid.FocusTemplateFunc;
96
102
  /**
97
103
  * Enables column move plugin
98
104
  * Can be boolean
@@ -450,6 +456,8 @@ export declare class RevoGridComponent {
450
456
  /** External subscribe */
451
457
  mergechanged: EventEmitter<any[] | undefined>;
452
458
  mergeChange(mergeVal: any[] | undefined): void;
459
+ rowheaderschanged: EventEmitter;
460
+ rowHeadersChange(rowHeaders?: RevoGrid.RowHeaders | boolean): void;
453
461
  private dataSourceApply;
454
462
  connectedCallback(): void;
455
463
  disconnectedCallback(): void;
@@ -523,6 +523,9 @@ export class RevoGridComponent {
523
523
  mergeChange(mergeVal) {
524
524
  this.mergechanged.emit(mergeVal);
525
525
  }
526
+ rowHeadersChange(rowHeaders) {
527
+ this.rowheaderschanged.emit(rowHeaders);
528
+ }
526
529
  dataSourceApply(source = [], type = 'rgRow') {
527
530
  const beforesourceset = this.beforeAnySource.emit({
528
531
  type,
@@ -631,7 +634,7 @@ export class RevoGridComponent {
631
634
  if (!event.defaultPrevented) {
632
635
  this.selectionStoreConnector.setEdit(detail.isCancel ? false : detail.val);
633
636
  }
634
- }, registerElement: (e, k) => this.scrollingService.registerElement(e, k), onScroll: (details, k) => this.scrollingService.onScroll(details, k) }));
637
+ }, registerElement: (e, k) => this.scrollingService.registerElement(e, k), onScroll: (details, k) => this.scrollingService.onScroll(details, k), focusTemplate: this.focusTemplate }));
635
638
  return (h(Host, Object.assign({}, { [`${UUID}`]: this.uuid }),
636
639
  h(RevoViewPort, { viewports: this.viewportProvider.stores, dimensions: this.dimensionProvider.stores, orderRef: e => (this.orderService = e), registerElement: (e, k) => this.scrollingService.registerElement(e, k), nakedClick: () => this.viewport.clearEdit(), onScroll: details => this.scrollingService.onScroll(details) }, views),
637
640
  this.extraElements));
@@ -1082,6 +1085,26 @@ export class RevoGridComponent {
1082
1085
  "reflect": false,
1083
1086
  "defaultValue": "false"
1084
1087
  },
1088
+ "focusTemplate": {
1089
+ "type": "unknown",
1090
+ "mutable": false,
1091
+ "complexType": {
1092
+ "original": "RevoGrid.FocusTemplateFunc",
1093
+ "resolved": "(createElement: HyperFunc<VNode>, detail: FocusRenderEvent) => any",
1094
+ "references": {
1095
+ "RevoGrid": {
1096
+ "location": "import",
1097
+ "path": "../../interfaces"
1098
+ }
1099
+ }
1100
+ },
1101
+ "required": false,
1102
+ "optional": false,
1103
+ "docs": {
1104
+ "tags": [],
1105
+ "text": "Apply changes typed in editor on editor close except Escape cases\nIf custom editor in use @method getValue required\nCheck interfaces.d.ts @EditorBase for more info"
1106
+ }
1107
+ },
1085
1108
  "canMoveColumns": {
1086
1109
  "type": "boolean",
1087
1110
  "mutable": false,
@@ -1797,6 +1820,21 @@ export class RevoGridComponent {
1797
1820
  "resolved": "any[]",
1798
1821
  "references": {}
1799
1822
  }
1823
+ }, {
1824
+ "method": "rowheaderschanged",
1825
+ "name": "rowheaderschanged",
1826
+ "bubbles": true,
1827
+ "cancelable": true,
1828
+ "composed": true,
1829
+ "docs": {
1830
+ "tags": [],
1831
+ "text": ""
1832
+ },
1833
+ "complexType": {
1834
+ "original": "any",
1835
+ "resolved": "any",
1836
+ "references": {}
1837
+ }
1800
1838
  }]; }
1801
1839
  static get methods() { return {
1802
1840
  "refresh": {
@@ -2386,6 +2424,9 @@ export class RevoGridComponent {
2386
2424
  }, {
2387
2425
  "propName": "merged",
2388
2426
  "methodName": "mergeChange"
2427
+ }, {
2428
+ "propName": "rowHeaders",
2429
+ "methodName": "rowHeadersChange"
2389
2430
  }]; }
2390
2431
  static get listeners() { return [{
2391
2432
  "name": "internalRowDragStart",
@@ -12,6 +12,7 @@ declare type Props = {
12
12
  resize: boolean;
13
13
  columns: ViewportProps[];
14
14
  columnFilter: boolean;
15
+ focusTemplate: RevoGrid.FocusTemplateFunc;
15
16
  onScroll(e: RevoGrid.ViewPortScrollEvent, key?: RevoGrid.DimensionColPin | string): void;
16
17
  onEdit(edit: Edition.BeforeEdit): void;
17
18
  registerElement(el: ElementScroll | null, key: string): void;
@@ -21,5 +22,5 @@ declare type Props = {
21
22
  * First we render vertical parts - pinned start, data, pinned end
22
23
  * Per each column we render data collections: headers, pinned top, center data, pinned bottom
23
24
  */
24
- export declare const ViewPortSections: ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll }: Props) => VNode[];
25
+ export declare const ViewPortSections: ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll, focusTemplate }: Props) => VNode[];
25
26
  export {};
@@ -6,7 +6,7 @@ import { DATA_SLOT, HEADER_SLOT } from './viewport.helpers';
6
6
  * First we render vertical parts - pinned start, data, pinned end
7
7
  * Per each column we render data collections: headers, pinned top, center data, pinned bottom
8
8
  */
9
- export const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll }) => {
9
+ export const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns, useClipboard, columnFilter, applyEditorChangesOnClose, registerElement, onEdit, onScroll, focusTemplate }) => {
10
10
  const viewPortHtml = [];
11
11
  /** render viewports columns */
12
12
  for (let view of columns) {
@@ -18,7 +18,7 @@ export const ViewPortSections = ({ resize, editors, rowClass, readonly, range, c
18
18
  const dataView = (h("revogr-overlay-selection", Object.assign({}, data, { slot: data.slot, selectionStore: data.segmentSelectionStore, editors: editors, readonly: readonly, range: range, useClipboard: useClipboard, applyChangesOnClose: applyEditorChangesOnClose, onSetEdit: ({ detail }) => onEdit(detail) }),
19
19
  h("revogr-data", Object.assign({}, data, { [UUID]: data.uuid }, { key: key, readonly: readonly, range: range, rowClass: rowClass, rowSelectionStore: data.rowSelectionStore, slot: DATA_SLOT })),
20
20
  h("revogr-temp-range", { selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol }),
21
- h("revogr-focus", { rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
21
+ h("revogr-focus", { focusTemplate: focusTemplate, rowType: data.type, colType: view.type, selectionStore: data.segmentSelectionStore, dimensionRow: data.dimensionRow, dimensionCol: data.dimensionCol })));
22
22
  dataViews.push(dataView);
23
23
  });
24
24
  viewPortHtml.push(h("revogr-viewport-scroll", Object.assign({}, view.prop, { ref: el => registerElement(el, view.prop.key), onScrollViewport: e => onScroll(e.detail, view.prop.key) }), dataViews));
@@ -4,7 +4,7 @@ import DataStore from '../../store/dataSource/data.store';
4
4
  import ViewportStore from '../../store/viewPort/viewport.store';
5
5
  import { ROW_HEADER_TYPE, UUID } from '../../utils/consts';
6
6
  import { RowHeaderRender } from './row-header-render';
7
- import { calculateRowHeaderSize } from './row-header-utils';
7
+ import { calculateRowHeaderSize } from '../../utils/row-header-utils';
8
8
  import { HEADER_SLOT } from '../revoGrid/viewport.helpers';
9
9
  /**
10
10
  * Row headers component
@@ -8,6 +8,7 @@ export declare class RevogrFocus {
8
8
  dimensionCol: Observable<RevoGrid.DimensionSettingsState>;
9
9
  colType: RevoGrid.DimensionCols;
10
10
  rowType: RevoGrid.DimensionRows;
11
+ focusTemplate: RevoGrid.FocusTemplateFunc | null;
11
12
  beforeFocusRender: EventEmitter<FocusRenderEvent>;
12
13
  private changed;
13
14
  componentDidRender(): void;
@@ -12,6 +12,10 @@ export class RevogrFocus {
12
12
  this.el && this.changed(this.el);
13
13
  }
14
14
  render() {
15
+ const editCell = this.selectionStore.get('edit');
16
+ if (editCell) {
17
+ return;
18
+ }
15
19
  const data = this.selectionStore.get('focus');
16
20
  if (data) {
17
21
  const event = this.beforeFocusRender.emit({
@@ -24,7 +28,8 @@ export class RevogrFocus {
24
28
  }
25
29
  const { detail } = event;
26
30
  const style = getElStyle(detail.range, this.dimensionRow.state, this.dimensionCol.state);
27
- return h(Host, { class: FOCUS_CLASS, style: style });
31
+ const extra = this.focusTemplate && this.focusTemplate(h, detail);
32
+ return h(Host, { class: FOCUS_CLASS, style: style }, extra);
28
33
  }
29
34
  }
30
35
  static get is() { return "revogr-focus"; }
@@ -150,6 +155,26 @@ export class RevogrFocus {
150
155
  },
151
156
  "attribute": "row-type",
152
157
  "reflect": false
158
+ },
159
+ "focusTemplate": {
160
+ "type": "unknown",
161
+ "mutable": false,
162
+ "complexType": {
163
+ "original": "RevoGrid.FocusTemplateFunc | null",
164
+ "resolved": "(createElement: HyperFunc<VNode>, detail: FocusRenderEvent) => any",
165
+ "references": {
166
+ "RevoGrid": {
167
+ "location": "import",
168
+ "path": "../../interfaces"
169
+ }
170
+ }
171
+ },
172
+ "required": false,
173
+ "optional": false,
174
+ "docs": {
175
+ "tags": [],
176
+ "text": ""
177
+ }
153
178
  }
154
179
  }; }
155
180
  static get events() { return [{