@one-grid-core/angular 0.5.3 → 0.5.5

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.
@@ -107,6 +107,7 @@ export declare class OneGridComponent<T> implements OnInit, OnChanges, AfterView
107
107
  editType: 'fullRow' | null;
108
108
  onGridReady: EventEmitter<OneGridReadyEvent<T>>;
109
109
  onRowGotoDetail: EventEmitter<OneGridRowActionEvent<T>>;
110
+ onRowDetail: EventEmitter<OneGridRowActionEvent<T>>;
110
111
  onRowAddNew: EventEmitter<OneGridRowActionEvent<T>>;
111
112
  onRowView: EventEmitter<OneGridRowActionEvent<T>>;
112
113
  onRowLocation: EventEmitter<OneGridRowActionEvent<T>>;
@@ -240,6 +241,7 @@ export declare class OneGridComponent<T> implements OnInit, OnChanges, AfterView
240
241
  * Bind Row Action Events to Parent Component
241
242
  */
242
243
  invokeRowActionGotoDetail(event: OneGridRowActionEvent<T>): void;
244
+ invokeRowActionDetail(event: OneGridRowActionEvent<T>): void;
243
245
  invokeRowActionAddNew(event: OneGridRowActionEvent<T>): void;
244
246
  invokeRowActionView(event: OneGridRowActionEvent<T>): void;
245
247
  invokeRowActionLocation(event: OneGridRowActionEvent<T>): void;
@@ -290,5 +292,5 @@ export declare class OneGridComponent<T> implements OnInit, OnChanges, AfterView
290
292
  */
291
293
  ngOnDestroy(): void;
292
294
  static ɵfac: i0.ɵɵFactoryDeclaration<OneGridComponent<any>, never>;
293
- static ɵcmp: i0.ɵɵComponentDeclaration<OneGridComponent<any>, "one-grid", never, { "rowNumber": { "alias": "rowNumber"; "required": false; }; "allowedEdit": { "alias": "allowedEdit"; "required": false; }; "submitted": { "alias": "submitted"; "required": false; }; "context": { "alias": "context"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "rowSelection": { "alias": "rowSelection"; "required": false; }; "gridLabel": { "alias": "gridLabel"; "required": false; }; "enableGroupColumnDefs": { "alias": "enableGroupColumnDefs"; "required": false; }; "groupColumnDefs": { "alias": "groupColumnDefs"; "required": false; }; "defaultColumnDef": { "alias": "defaultColumnDef"; "required": false; }; "columnDefs": { "alias": "columnDefs"; "required": false; }; "pinnedTopRowData": { "alias": "pinnedTopRowData"; "required": false; }; "pinnedBottomRowData": { "alias": "pinnedBottomRowData"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "masterDetail": { "alias": "masterDetail"; "required": false; }; "masterNode": { "alias": "masterNode"; "required": false; }; "detailCellRendererParams": { "alias": "detailCellRendererParams"; "required": false; }; "detailRendererComponent": { "alias": "detailRendererComponent"; "required": false; }; "treeData": { "alias": "treeData"; "required": false; }; "treeDataChildrenField": { "alias": "treeDataChildrenField"; "required": false; }; "autoGroupColumnDef": { "alias": "autoGroupColumnDef"; "required": false; }; "groupDefaultExpanded": { "alias": "groupDefaultExpanded"; "required": false; }; "headerMenu": { "alias": "headerMenu"; "required": false; }; "filterRow": { "alias": "filterRow"; "required": false; }; "undoRedoCellEditing": { "alias": "undoRedoCellEditing"; "required": false; }; "undoRedoCellEditingLimit": { "alias": "undoRedoCellEditingLimit"; "required": false; }; "editType": { "alias": "editType"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "paginate": { "alias": "paginate"; "required": false; }; "clientSidePagination": { "alias": "clientSidePagination"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "rowDragEnd": "rowDragEnd"; "headerMenuClick": "headerMenuClick"; "onGridReady": "onGridReady"; "onRowGotoDetail": "onRowGotoDetail"; "onRowAddNew": "onRowAddNew"; "onRowView": "onRowView"; "onRowLocation": "onRowLocation"; "onRowDocument": "onRowDocument"; "onRowCopy": "onRowCopy"; "onRowDelete": "onRowDelete"; "onRowGotoList": "onRowGotoList"; "onRowEdit": "onRowEdit"; "onRowPrint": "onRowPrint"; "onRowHistory": "onRowHistory"; "onRowOption": "onRowOption"; "onRowLanguage": "onRowLanguage"; "onRowSelection": "onRowSelection"; "onShiftDoubleClick": "onShiftDoubleClick"; "rowCountChanged": "rowCountChanged"; "selectionChanged": "selectionChanged"; "expansionChanged": "expansionChanged"; "sortChanged": "sortChanged"; "cellValueChanged": "cellValueChanged"; "columnMoved": "columnMoved"; "columnResized": "columnResized"; "cellOptionSelect": "cellOptionSelect"; "onRowCellOption": "onRowCellOption"; "goToFirst": "goToFirst"; "goToPrevious": "goToPrevious"; "goToNext": "goToNext"; "goToLast": "goToLast"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
295
+ static ɵcmp: i0.ɵɵComponentDeclaration<OneGridComponent<any>, "one-grid", never, { "rowNumber": { "alias": "rowNumber"; "required": false; }; "allowedEdit": { "alias": "allowedEdit"; "required": false; }; "submitted": { "alias": "submitted"; "required": false; }; "context": { "alias": "context"; "required": false; }; "rowData": { "alias": "rowData"; "required": false; }; "rowSelection": { "alias": "rowSelection"; "required": false; }; "gridLabel": { "alias": "gridLabel"; "required": false; }; "enableGroupColumnDefs": { "alias": "enableGroupColumnDefs"; "required": false; }; "groupColumnDefs": { "alias": "groupColumnDefs"; "required": false; }; "defaultColumnDef": { "alias": "defaultColumnDef"; "required": false; }; "columnDefs": { "alias": "columnDefs"; "required": false; }; "pinnedTopRowData": { "alias": "pinnedTopRowData"; "required": false; }; "pinnedBottomRowData": { "alias": "pinnedBottomRowData"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "masterDetail": { "alias": "masterDetail"; "required": false; }; "masterNode": { "alias": "masterNode"; "required": false; }; "detailCellRendererParams": { "alias": "detailCellRendererParams"; "required": false; }; "detailRendererComponent": { "alias": "detailRendererComponent"; "required": false; }; "treeData": { "alias": "treeData"; "required": false; }; "treeDataChildrenField": { "alias": "treeDataChildrenField"; "required": false; }; "autoGroupColumnDef": { "alias": "autoGroupColumnDef"; "required": false; }; "groupDefaultExpanded": { "alias": "groupDefaultExpanded"; "required": false; }; "headerMenu": { "alias": "headerMenu"; "required": false; }; "filterRow": { "alias": "filterRow"; "required": false; }; "undoRedoCellEditing": { "alias": "undoRedoCellEditing"; "required": false; }; "undoRedoCellEditingLimit": { "alias": "undoRedoCellEditingLimit"; "required": false; }; "editType": { "alias": "editType"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "paginate": { "alias": "paginate"; "required": false; }; "clientSidePagination": { "alias": "clientSidePagination"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; }, { "rowDragEnd": "rowDragEnd"; "headerMenuClick": "headerMenuClick"; "onGridReady": "onGridReady"; "onRowGotoDetail": "onRowGotoDetail"; "onRowDetail": "onRowDetail"; "onRowAddNew": "onRowAddNew"; "onRowView": "onRowView"; "onRowLocation": "onRowLocation"; "onRowDocument": "onRowDocument"; "onRowCopy": "onRowCopy"; "onRowDelete": "onRowDelete"; "onRowGotoList": "onRowGotoList"; "onRowEdit": "onRowEdit"; "onRowPrint": "onRowPrint"; "onRowHistory": "onRowHistory"; "onRowOption": "onRowOption"; "onRowLanguage": "onRowLanguage"; "onRowSelection": "onRowSelection"; "onShiftDoubleClick": "onShiftDoubleClick"; "rowCountChanged": "rowCountChanged"; "selectionChanged": "selectionChanged"; "expansionChanged": "expansionChanged"; "sortChanged": "sortChanged"; "cellValueChanged": "cellValueChanged"; "columnMoved": "columnMoved"; "columnResized": "columnResized"; "cellOptionSelect": "cellOptionSelect"; "onRowCellOption": "onRowCellOption"; "goToFirst": "goToFirst"; "goToPrevious": "goToPrevious"; "goToNext": "goToNext"; "goToLast": "goToLast"; "pageSizeChange": "pageSizeChange"; }, never, never, true, never>;
294
296
  }
@@ -77,6 +77,7 @@ export declare class OneGridBodyComponent<T> implements OnInit, AfterViewInit, O
77
77
  * Passing Row Action Events to Parent
78
78
  */
79
79
  onRowGotoDetail: EventEmitter<OneGridRowActionEvent<T>>;
80
+ onRowDetail: EventEmitter<OneGridRowActionEvent<T>>;
80
81
  onRowAddNew: EventEmitter<OneGridRowActionEvent<T>>;
81
82
  onRowView: EventEmitter<OneGridRowActionEvent<T>>;
82
83
  onRowCopy: EventEmitter<OneGridRowActionEvent<T>>;
@@ -166,6 +167,7 @@ export declare class OneGridBodyComponent<T> implements OnInit, AfterViewInit, O
166
167
  * Binding Events Row Action to Parent
167
168
  */
168
169
  invokeRowActionGotoDetail(event: OneGridRowActionEvent<T>): void;
170
+ invokeRowActionDetail(event: OneGridRowActionEvent<T>): void;
169
171
  invokeRowActionAddNew(event: OneGridRowActionEvent<T>): void;
170
172
  invokeRowActionView(event: OneGridRowActionEvent<T>): void;
171
173
  invokeRowActionLocation(event: OneGridRowActionEvent<T>): void;
@@ -390,5 +392,5 @@ export declare class OneGridBodyComponent<T> implements OnInit, AfterViewInit, O
390
392
  private refreshRowDragSuppressed;
391
393
  ngOnDestroy(): void;
392
394
  static ɵfac: i0.ɵɵFactoryDeclaration<OneGridBodyComponent<any>, never>;
393
- static ɵcmp: i0.ɵɵComponentDeclaration<OneGridBodyComponent<any>, "one-grid-body", never, { "rowData": { "alias": "rowData"; "required": true; }; "rowNumber": { "alias": "rowNumber"; "required": false; }; "api": { "alias": "api"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "allowedEdit": { "alias": "allowedEdit"; "required": false; }; "enableGroupColumnDefs": { "alias": "enableGroupColumnDefs"; "required": false; }; "submitted": { "alias": "submitted"; "required": false; }; "editType": { "alias": "editType"; "required": false; }; "context": { "alias": "context"; "required": false; }; "getRowId": { "alias": "getRowId"; "required": false; }; "gridCopy$": { "alias": "gridCopy$"; "required": true; }; "pinnedTopRowData": { "alias": "pinnedTopRowData"; "required": false; }; "pinnedBottomRowData": { "alias": "pinnedBottomRowData"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "masterDetail": { "alias": "masterDetail"; "required": false; }; "masterNode": { "alias": "masterNode"; "required": false; }; "detailRowMaxHeight": { "alias": "detailRowMaxHeight"; "required": false; }; "detailCellRendererParams": { "alias": "detailCellRendererParams"; "required": false; }; "detailGridTemplate": { "alias": "detailGridTemplate"; "required": false; }; "detailRendererComponent": { "alias": "detailRendererComponent"; "required": false; }; "treeData": { "alias": "treeData"; "required": false; }; "treeDataChildrenField": { "alias": "treeDataChildrenField"; "required": false; }; "autoGroupColumnDef": { "alias": "autoGroupColumnDef"; "required": false; }; "groupDefaultExpanded": { "alias": "groupDefaultExpanded"; "required": false; }; }, { "onRowGotoDetail": "onRowGotoDetail"; "onRowAddNew": "onRowAddNew"; "onRowView": "onRowView"; "onRowCopy": "onRowCopy"; "onRowLocation": "onRowLocation"; "onRowDocument": "onRowDocument"; "onRowDelete": "onRowDelete"; "onRowGotoList": "onRowGotoList"; "onRowEdit": "onRowEdit"; "onRowPrint": "onRowPrint"; "onRowHistory": "onRowHistory"; "onRowOption": "onRowOption"; "onRowLanguage": "onRowLanguage"; "onRowCellOption": "onRowCellOption"; "onRowSelection": "onRowSelection"; "onShiftDoubleClick": "onShiftDoubleClick"; "rowCountChanged": "rowCountChanged"; "expansionChanged": "expansionChanged"; "bodyScroll": "bodyScroll"; "cellOptionSelect": "cellOptionSelect"; "rowDragEnd": "rowDragEnd"; }, never, never, true, never>;
395
+ static ɵcmp: i0.ɵɵComponentDeclaration<OneGridBodyComponent<any>, "one-grid-body", never, { "rowData": { "alias": "rowData"; "required": true; }; "rowNumber": { "alias": "rowNumber"; "required": false; }; "api": { "alias": "api"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "allowedEdit": { "alias": "allowedEdit"; "required": false; }; "enableGroupColumnDefs": { "alias": "enableGroupColumnDefs"; "required": false; }; "submitted": { "alias": "submitted"; "required": false; }; "editType": { "alias": "editType"; "required": false; }; "context": { "alias": "context"; "required": false; }; "getRowId": { "alias": "getRowId"; "required": false; }; "gridCopy$": { "alias": "gridCopy$"; "required": true; }; "pinnedTopRowData": { "alias": "pinnedTopRowData"; "required": false; }; "pinnedBottomRowData": { "alias": "pinnedBottomRowData"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "masterDetail": { "alias": "masterDetail"; "required": false; }; "masterNode": { "alias": "masterNode"; "required": false; }; "detailRowMaxHeight": { "alias": "detailRowMaxHeight"; "required": false; }; "detailCellRendererParams": { "alias": "detailCellRendererParams"; "required": false; }; "detailGridTemplate": { "alias": "detailGridTemplate"; "required": false; }; "detailRendererComponent": { "alias": "detailRendererComponent"; "required": false; }; "treeData": { "alias": "treeData"; "required": false; }; "treeDataChildrenField": { "alias": "treeDataChildrenField"; "required": false; }; "autoGroupColumnDef": { "alias": "autoGroupColumnDef"; "required": false; }; "groupDefaultExpanded": { "alias": "groupDefaultExpanded"; "required": false; }; }, { "onRowGotoDetail": "onRowGotoDetail"; "onRowDetail": "onRowDetail"; "onRowAddNew": "onRowAddNew"; "onRowView": "onRowView"; "onRowCopy": "onRowCopy"; "onRowLocation": "onRowLocation"; "onRowDocument": "onRowDocument"; "onRowDelete": "onRowDelete"; "onRowGotoList": "onRowGotoList"; "onRowEdit": "onRowEdit"; "onRowPrint": "onRowPrint"; "onRowHistory": "onRowHistory"; "onRowOption": "onRowOption"; "onRowLanguage": "onRowLanguage"; "onRowCellOption": "onRowCellOption"; "onRowSelection": "onRowSelection"; "onShiftDoubleClick": "onShiftDoubleClick"; "rowCountChanged": "rowCountChanged"; "expansionChanged": "expansionChanged"; "bodyScroll": "bodyScroll"; "cellOptionSelect": "cellOptionSelect"; "rowDragEnd": "rowDragEnd"; }, never, never, true, never>;
394
396
  }
@@ -21,6 +21,7 @@ export declare class OneGridRowActionComponent<T> implements OnInit {
21
21
  * Bind Event to Parent Component
22
22
  */
23
23
  onRowGotoDetail: EventEmitter<OneGridRowActionEvent<T>>;
24
+ onRowDetail: EventEmitter<OneGridRowActionEvent<T>>;
24
25
  onRowAddNew: EventEmitter<OneGridRowActionEvent<T>>;
25
26
  onRowView: EventEmitter<OneGridRowActionEvent<T>>;
26
27
  onRowLocation: EventEmitter<OneGridRowActionEvent<T>>;
@@ -36,7 +37,9 @@ export declare class OneGridRowActionComponent<T> implements OnInit {
36
37
  onRowCellOption: EventEmitter<OneGridRowActionEvent<T>>;
37
38
  protected detailActiveExcludeLevels: Set<number>;
38
39
  protected gotoDetailExcludeLevels: Set<number>;
40
+ protected detailExcludeLevels: Set<number>;
39
41
  protected addNewExcludeLevels: Set<number>;
42
+ protected gotoListExcludeLevels: Set<number>;
40
43
  /**
41
44
  * Accessible names for the action buttons.
42
45
  *
@@ -45,6 +48,7 @@ export declare class OneGridRowActionComponent<T> implements OnInit {
45
48
  * These are also the `title`, so the icons are identifiable by pointer too.
46
49
  */
47
50
  protected readonly labels: {
51
+ readonly detail: "Detail";
48
52
  readonly gotoDetail: "Open detail";
49
53
  readonly addNew: "Add new row";
50
54
  readonly view: "View row";
@@ -85,6 +89,7 @@ export declare class OneGridRowActionComponent<T> implements OnInit {
85
89
  */
86
90
  invokeRowToggleDetailActiveExpand(node: OneRowNode): void;
87
91
  invokeRowActionGotoDetail(node: OneRowNode<T>, column: OneColumnDef<T>): void;
92
+ invokeRowActionDetail(node: OneRowNode<T>, column: OneColumnDef<T>): void;
88
93
  invokeRowActionAddNew(node: OneRowNode<T>, column: OneColumnDef<T>): void;
89
94
  invokeRowActionView(node: OneRowNode<T>, column: OneColumnDef<T>): void;
90
95
  invokeRowActionLocation(node: OneRowNode<T>, column: OneColumnDef<T>): void;
@@ -99,5 +104,5 @@ export declare class OneGridRowActionComponent<T> implements OnInit {
99
104
  invokeRowActionLanguage(node: OneRowNode<T>, column: OneColumnDef<T>): void;
100
105
  invokeRowActionCellOption(node: OneRowNode<T>, column: OneColumnDef<T>): void;
101
106
  static ɵfac: i0.ɵɵFactoryDeclaration<OneGridRowActionComponent<any>, never>;
102
- static ɵcmp: i0.ɵɵComponentDeclaration<OneGridRowActionComponent<any>, "one-grid-row-action", never, { "column": { "alias": "column"; "required": true; }; "node": { "alias": "node"; "required": true; }; "allowedEdit": { "alias": "allowedEdit"; "required": true; }; "masterDetail": { "alias": "masterDetail"; "required": false; }; "masterNode": { "alias": "masterNode"; "required": false; }; "cellRendererParams": { "alias": "cellRendererParams"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "context": { "alias": "context"; "required": false; }; }, { "onRowGotoDetail": "onRowGotoDetail"; "onRowAddNew": "onRowAddNew"; "onRowView": "onRowView"; "onRowLocation": "onRowLocation"; "onRowDocument": "onRowDocument"; "onRowCopy": "onRowCopy"; "onRowDelete": "onRowDelete"; "onRowGotoList": "onRowGotoList"; "onRowEdit": "onRowEdit"; "onRowPrint": "onRowPrint"; "onRowHistory": "onRowHistory"; "onRowOption": "onRowOption"; "onRowLanguage": "onRowLanguage"; "onRowCellOption": "onRowCellOption"; }, never, never, true, never>;
107
+ static ɵcmp: i0.ɵɵComponentDeclaration<OneGridRowActionComponent<any>, "one-grid-row-action", never, { "column": { "alias": "column"; "required": true; }; "node": { "alias": "node"; "required": true; }; "allowedEdit": { "alias": "allowedEdit"; "required": true; }; "masterDetail": { "alias": "masterDetail"; "required": false; }; "masterNode": { "alias": "masterNode"; "required": false; }; "cellRendererParams": { "alias": "cellRendererParams"; "required": false; }; "gridType": { "alias": "gridType"; "required": false; }; "context": { "alias": "context"; "required": false; }; }, { "onRowGotoDetail": "onRowGotoDetail"; "onRowDetail": "onRowDetail"; "onRowAddNew": "onRowAddNew"; "onRowView": "onRowView"; "onRowLocation": "onRowLocation"; "onRowDocument": "onRowDocument"; "onRowCopy": "onRowCopy"; "onRowDelete": "onRowDelete"; "onRowGotoList": "onRowGotoList"; "onRowEdit": "onRowEdit"; "onRowPrint": "onRowPrint"; "onRowHistory": "onRowHistory"; "onRowOption": "onRowOption"; "onRowLanguage": "onRowLanguage"; "onRowCellOption": "onRowCellOption"; }, never, never, true, never>;
103
108
  }
@@ -90,6 +90,8 @@ export interface OneCellRendererParams<T = any> {
90
90
  detailActiveExcludeLevels?: number[];
91
91
  gotoDetailButtonStatus?: OneCellStatus;
92
92
  gotoDetailExcludeLevels?: number[];
93
+ detailButtonStatus?: OneCellStatus;
94
+ detailExcludeLevels?: number[];
93
95
  addNewButtonStatus?: OneCellStatus;
94
96
  addNewExcludeLevels?: number[];
95
97
  viewButtonStatus?: OneCellStatus;
@@ -98,6 +100,7 @@ export interface OneCellRendererParams<T = any> {
98
100
  copyButtonStatus?: OneCellStatus;
99
101
  deleteButtonStatus?: OneCellStatus;
100
102
  gotoListButtonStatus?: OneCellStatus;
103
+ gotoListExcludeLevels?: number[];
101
104
  optionButtonStatus?: OneCellStatus;
102
105
  languageButtonStatus?: OneCellStatus;
103
106
  editButtonStatus?: OneCellStatus;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@one-grid-core/angular",
3
- "version": "0.5.3",
3
+ "version": "0.5.5",
4
4
  "description": "OneGrid — a feature-rich Angular data grid component with tree data, master/detail, editing, selection, pagination, and virtual scrolling.",
5
5
  "keywords": [
6
6
  "angular",
@@ -57,9 +57,22 @@ $row-drag-indicator-size: 2px !default;
57
57
 
58
58
  // Master / detail
59
59
  //
60
- // The detail area is a continuation of the row that opened it, so it sits
61
- // flush by default. Set this to inset it.
62
- $detail-padding: 0 !default;
60
+ // The inset around a detail row's nested grid one step of the spacing scale
61
+ // (the same 8px as `$cell-item-space`, declared literally because that
62
+ // variable comes later in this file).
63
+ //
64
+ // A gap this size is what separates the nested grid from the master rows above
65
+ // and below it without turning it into a card: it reads as content belonging
66
+ // to its row, and the left inset indents it the way nesting is read everywhere
67
+ // else in the grid. Anything larger starts to float; anything smaller stops
68
+ // registering as deliberate.
69
+ //
70
+ // It costs height. `node.detailRowHeight` is the nested grid's own height, and
71
+ // the block around it is that plus this inset top and bottom, which the body's
72
+ // fixed-`itemSize` virtual scroller cannot see — the same drift an expanded
73
+ // row already causes, 2 × this larger. Set it to `0` for a flush detail area
74
+ // that adds nothing at all.
75
+ $detail-padding: 8px !default;
63
76
 
64
77
  // Cell
65
78
  $cell-height: 30px !default;
@@ -531,17 +544,18 @@ $_og-defaults: (
531
544
  outline-offset: -2px;
532
545
  }
533
546
 
534
- // A detail row is a continuation of the master row above it, not a
535
- // card floating inside the grid, so it sits flush: its left edge
536
- // lines up with the master grid's and it occupies exactly the
537
- // height the API reserved.
547
+ // A detail row belongs to the master row above it, so it is inset
548
+ // rather than boxed: `detail-padding` all round separates it from
549
+ // the rows either side and indents it, and the body background
550
+ // shows through the gap instead of a border or a card surface.
538
551
  //
539
- // That reserved height is the reason the default is 0 rather than
540
- // a taste call. `node.detailRowHeight` is what the grid computes
541
- // for an open row, and the body's virtual-scroll viewport is
542
- // configured with a single fixed `itemSize` any padding here is
543
- // height the scroller cannot see, so it becomes scroll drift on
544
- // top of the drift an expanded row already causes.
552
+ // The inset is the only height this box adds. The nested grid
553
+ // keeps exactly the height the API reserved for it — padding is
554
+ // never taken out of it, which would clip its last row — so the
555
+ // block is `node.detailRowHeight` plus the inset top and bottom.
556
+ // The body's virtual-scroll viewport runs on a single fixed
557
+ // `itemSize` and cannot see any of it; `--one-grid-detail-padding: 0`
558
+ // restores a flush detail area that adds nothing beyond the grid.
545
559
  //
546
560
  // `height: inherit` used to sit here. It resolved to `auto`, since
547
561
  // that is the content wrapper's computed height, so it never did