neo.mjs 8.7.1 → 8.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 (34) hide show
  1. package/apps/ServiceWorker.mjs +2 -2
  2. package/apps/portal/index.html +1 -1
  3. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  4. package/examples/ServiceWorker.mjs +2 -2
  5. package/examples/grid/nestedRecordFields/EditUserDialog.mjs +154 -0
  6. package/examples/grid/nestedRecordFields/MainModel.mjs +54 -0
  7. package/examples/grid/nestedRecordFields/MainStore.mjs +54 -0
  8. package/examples/grid/nestedRecordFields/Viewport.mjs +152 -0
  9. package/examples/grid/nestedRecordFields/ViewportStateProvider.mjs +62 -0
  10. package/examples/grid/nestedRecordFields/app.mjs +6 -0
  11. package/examples/grid/nestedRecordFields/index.html +11 -0
  12. package/examples/grid/nestedRecordFields/neo-config.json +8 -0
  13. package/examples/table/nestedRecordFields/{MainContainer.mjs → Viewport.mjs} +50 -21
  14. package/examples/table/nestedRecordFields/{MainContainerStateProvider.mjs → ViewportStateProvider.mjs} +5 -5
  15. package/examples/table/nestedRecordFields/app.mjs +3 -3
  16. package/examples/table/nestedRecordFields/neo-config.json +2 -1
  17. package/package.json +1 -1
  18. package/resources/scss/src/grid/View.scss +16 -0
  19. package/resources/scss/src/grid/header/Button.scss +3 -1
  20. package/resources/scss/src/table/View.scss +2 -2
  21. package/resources/scss/src/table/header/Button.scss +1 -2
  22. package/resources/scss/theme-dark/grid/View.scss +2 -0
  23. package/resources/scss/theme-dark/table/View.scss +2 -0
  24. package/resources/scss/theme-light/grid/View.scss +2 -0
  25. package/resources/scss/theme-light/table/View.scss +2 -0
  26. package/resources/scss/theme-neo-light/grid/View.scss +2 -0
  27. package/resources/scss/theme-neo-light/table/View.scss +2 -0
  28. package/src/DefaultConfig.mjs +2 -2
  29. package/src/Neo.mjs +48 -19
  30. package/src/component/Base.mjs +16 -4
  31. package/src/container/Base.mjs +16 -0
  32. package/src/data/RecordFactory.mjs +41 -48
  33. package/src/grid/View.mjs +23 -5
  34. package/src/table/View.mjs +1 -1
package/src/grid/View.mjs CHANGED
@@ -72,6 +72,10 @@ class GridView extends Component {
72
72
  * @protected
73
73
  */
74
74
  columnPositions_: [],
75
+ /**
76
+ * @member {Boolean} highlightModifiedCells_=false
77
+ */
78
+ highlightModifiedCells_: false,
75
79
  /**
76
80
  * @member {Boolean} isScrolling_=false
77
81
  */
@@ -432,6 +436,12 @@ class GridView extends Component {
432
436
  cellCls.push('neo-' + column.cellAlign)
433
437
  }
434
438
 
439
+ if (me.highlightModifiedCells) {
440
+ if (record.isModifiedField(dataField)) {
441
+ cellCls.push('neo-is-modified')
442
+ }
443
+ }
444
+
435
445
  if (!cellId) {
436
446
  cellId = me.getCellId(record, column.dataField)
437
447
  }
@@ -803,9 +813,9 @@ class GridView extends Component {
803
813
  fieldNames = fields.map(field => field.name),
804
814
  needsUpdate = false,
805
815
  {gridContainer} = me,
806
- {selectionModel} = gridContainer,
816
+ {selectionModel} = gridContainer.view,
807
817
  {vdom} = me,
808
- cellId, cellNode, column, index, scope;
818
+ cellId, cellNode, cellStyle, cellVdom, column, index;
809
819
 
810
820
  if (fieldNames.includes(me.colspanField)) {
811
821
  index = me.store.indexOf(record);
@@ -821,14 +831,22 @@ class GridView extends Component {
821
831
  cellId = me.getCellId(record, field.name);
822
832
  cellNode = VDomUtil.find(vdom, cellId);
823
833
 
824
- // the vdom might not exist yet => nothing to do in this case
834
+ // The vdom might not exist yet => nothing to do in this case
825
835
  if (cellNode?.vdom) {
836
+ cellStyle = cellNode.vdom.style;
826
837
  column = me.getColumn(field.name);
827
838
  index = cellNode.index;
839
+ cellVdom = me.applyRendererOutput({cellId, column, gridContainer, index, record});
828
840
  needsUpdate = true;
829
- scope = column.rendererScope || gridContainer;
830
841
 
831
- cellNode.parentNode.cn[index] = me.applyRendererOutput({cellId, column, gridContainer, index, record})
842
+ // The cell-positioning logic happens outside applyRendererOutput()
843
+ // We need to preserve these styles
844
+ Object.assign(cellVdom.style, {
845
+ left : cellStyle.left,
846
+ width: cellStyle.width
847
+ });
848
+
849
+ cellNode.parentNode.cn[index] = cellVdom
832
850
  }
833
851
  }
834
852
  })
@@ -154,7 +154,7 @@ class View extends Component {
154
154
  cellCls.push('neo-' + column.cellAlign)
155
155
  }
156
156
 
157
- if (me.highlightModifiedCells && me.store.model.trackModifiedFields) {
157
+ if (me.highlightModifiedCells) {
158
158
  if (record.isModifiedField(dataField)) {
159
159
  cellCls.push('neo-is-modified')
160
160
  }