ngx-st-tables 17.0.112 → 17.0.113

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.
@@ -19,6 +19,7 @@ export declare class MaterialTableRowCellComponent implements OnInit, AfterViewI
19
19
  canDeleteRowValidator: import("@angular/core").InputSignal<(row: any) => boolean>;
20
20
  selectRowOnlyOne: import("@angular/core").InputSignal<boolean>;
21
21
  isFirstEditableColumn: import("@angular/core").InputSignal<boolean>;
22
+ autoSaveOnChange: import("@angular/core").InputSignal<boolean>;
22
23
  set rowEditing(data: boolean);
23
24
  get rowEditing(): boolean;
24
25
  private _rowEditing;
@@ -29,6 +30,10 @@ export declare class MaterialTableRowCellComponent implements OnInit, AfterViewI
29
30
  editRowEmitter: import("@angular/core").OutputEmitterRef<void>;
30
31
  deleteRowEmitter: import("@angular/core").OutputEmitterRef<void>;
31
32
  selectRowChange: import("@angular/core").OutputEmitterRef<boolean>;
33
+ fieldValueChanged: import("@angular/core").OutputEmitterRef<{
34
+ field: string;
35
+ value: any;
36
+ }>;
32
37
  mobileView: boolean;
33
38
  actionIconColorDef: {
34
39
  [key: string]: 'primary' | 'warn';
@@ -48,8 +53,9 @@ export declare class MaterialTableRowCellComponent implements OnInit, AfterViewI
48
53
  selectRow(event: {
49
54
  checked: boolean;
50
55
  }): void;
56
+ onFieldChange(field: string, value: any): void;
51
57
  private checkWidthSize;
52
58
  private getDynamicSelectData;
53
59
  static ɵfac: i0.ɵɵFactoryDeclaration<MaterialTableRowCellComponent, never>;
54
- static ɵcmp: i0.ɵɵComponentDeclaration<MaterialTableRowCellComponent, "st-material-table-row-cell", never, { "column": { "alias": "column"; "required": true; "isSignal": true; }; "rowData": { "alias": "rowData"; "required": true; "isSignal": true; }; "rowIndex": { "alias": "rowIndex"; "required": true; "isSignal": true; }; "rowDataCopy": { "alias": "rowDataCopy"; "required": false; "isSignal": true; }; "canEditRowValidator": { "alias": "canEditRowValidator"; "required": false; "isSignal": true; }; "canDeleteRowValidator": { "alias": "canDeleteRowValidator"; "required": false; "isSignal": true; }; "selectRowOnlyOne": { "alias": "selectRowOnlyOne"; "required": false; "isSignal": true; }; "isFirstEditableColumn": { "alias": "isFirstEditableColumn"; "required": false; "isSignal": true; }; "rowEditing": { "alias": "rowEditing"; "required": false; }; "rowIsSelected": { "alias": "rowIsSelected"; "required": false; "isSignal": true; }; "rowIsExpanded": { "alias": "rowIsExpanded"; "required": false; "isSignal": true; }; }, { "saveEditRowEmitter": "saveEditRowEmitter"; "cancelEditRowEmitter": "cancelEditRowEmitter"; "editRowEmitter": "editRowEmitter"; "deleteRowEmitter": "deleteRowEmitter"; "selectRowChange": "selectRowChange"; }, never, never, false, never>;
60
+ static ɵcmp: i0.ɵɵComponentDeclaration<MaterialTableRowCellComponent, "st-material-table-row-cell", never, { "column": { "alias": "column"; "required": true; "isSignal": true; }; "rowData": { "alias": "rowData"; "required": true; "isSignal": true; }; "rowIndex": { "alias": "rowIndex"; "required": true; "isSignal": true; }; "rowDataCopy": { "alias": "rowDataCopy"; "required": false; "isSignal": true; }; "canEditRowValidator": { "alias": "canEditRowValidator"; "required": false; "isSignal": true; }; "canDeleteRowValidator": { "alias": "canDeleteRowValidator"; "required": false; "isSignal": true; }; "selectRowOnlyOne": { "alias": "selectRowOnlyOne"; "required": false; "isSignal": true; }; "isFirstEditableColumn": { "alias": "isFirstEditableColumn"; "required": false; "isSignal": true; }; "autoSaveOnChange": { "alias": "autoSaveOnChange"; "required": false; "isSignal": true; }; "rowEditing": { "alias": "rowEditing"; "required": false; }; "rowIsSelected": { "alias": "rowIsSelected"; "required": false; "isSignal": true; }; "rowIsExpanded": { "alias": "rowIsExpanded"; "required": false; "isSignal": true; }; }, { "saveEditRowEmitter": "saveEditRowEmitter"; "cancelEditRowEmitter": "cancelEditRowEmitter"; "editRowEmitter": "editRowEmitter"; "deleteRowEmitter": "deleteRowEmitter"; "selectRowChange": "selectRowChange"; "fieldValueChanged": "fieldValueChanged"; }, never, never, false, never>;
55
61
  }
@@ -29,10 +29,22 @@ export declare class MaterialTableComponent extends StSubscribeDestroyComponent
29
29
  isLoading: import("@angular/core").InputSignal<boolean>;
30
30
  initColumns: import("@angular/core").InputSignal<StMaterialTableColumnModel[]>;
31
31
  rowClickAction: import("@angular/core").InputSignal<((row: any) => void) | undefined>;
32
+ /**
33
+ * Immutable Data Pattern:
34
+ * Creates a deep copy of incoming data to prevent mutations of parent data.
35
+ * IDs are generated on the copy, not on the original parent data.
36
+ * This ensures the parent maintains control of their data while the library
37
+ * manages its own working copy for UI operations.
38
+ */
32
39
  set data(data: any[]);
33
40
  get data(): any[];
34
41
  allowEditRow: import("@angular/core").InputSignal<boolean>;
35
42
  showEditAllRows: import("@angular/core").InputSignal<boolean>;
43
+ /**
44
+ * When true, field changes are saved immediately without requiring save/cancel buttons.
45
+ * Perfect for quantity inputs, toggles, or selection tables where instant updates are needed.
46
+ */
47
+ autoSaveOnChange: import("@angular/core").InputSignal<boolean>;
36
48
  canEditRowValidator: import("@angular/core").InputSignal<(row: any) => boolean>;
37
49
  canDeleteRowValidator: import("@angular/core").InputSignal<(row: any) => boolean>;
38
50
  allowSelectRow: import("@angular/core").InputSignal<boolean>;
@@ -57,6 +69,15 @@ export declare class MaterialTableComponent extends StSubscribeDestroyComponent
57
69
  index: number;
58
70
  }>;
59
71
  selectRowChange: import("@angular/core").OutputEmitterRef<any[]>;
72
+ /**
73
+ * Emitted when a field value changes and autoSaveOnChange is enabled.
74
+ * Parent should update their data immediately.
75
+ */
76
+ fieldValueChanged: import("@angular/core").OutputEmitterRef<{
77
+ row: any;
78
+ field: string;
79
+ value: any;
80
+ }>;
60
81
  private _data;
61
82
  initLocalColumns: import("@angular/core").WritableSignal<StMaterialTableColumnModel[]>;
62
83
  expandedRow: import("@angular/core").WritableSignal<any>;
@@ -88,11 +109,36 @@ export declare class MaterialTableComponent extends StSubscribeDestroyComponent
88
109
  turnOnAllEditRows(): void;
89
110
  captionDataChanged(event: ICaptionDataChanged): void;
90
111
  resetTableSettings(): void;
112
+ /**
113
+ * Adds a new row to the local table copy only.
114
+ * The row is tracked in activeRowsCreating until saved.
115
+ * When saved, the parent receives the event through saveNewCreatedRow output.
116
+ * The parent decides whether to accept and add to their data array.
117
+ */
91
118
  addNewRow(): void;
92
119
  editRow(row: any, column: ViewStMaterialTableColumnModel): void;
93
120
  deleteRow(row: any, column: ViewStMaterialTableColumnModel, index: number): void;
121
+ /**
122
+ * Validates and saves a row (either new or edited).
123
+ * Emits the validated row to the parent through either:
124
+ * - saveNewCreatedRow: for newly created rows
125
+ * - saveNewRow: for edited existing rows
126
+ *
127
+ * The parent is responsible for:
128
+ * - Persisting the change (e.g., API call)
129
+ * - Updating their data array
130
+ * - Handling errors/rejections
131
+ *
132
+ * The library updates its local copy optimistically.
133
+ */
94
134
  saveEditRow(row: any, column: ViewStMaterialTableColumnModel): void;
95
135
  cancelEditRow(row: any, column: ViewStMaterialTableColumnModel): void;
136
+ /**
137
+ * Handles immediate field value changes for auto-save mode.
138
+ * In auto-save mode, ngModel is bound directly to rowData, so we don't need to update it.
139
+ * We only emit to parent so they can update their data copy.
140
+ */
141
+ onFieldValueChanged(row: any, column: ViewStMaterialTableColumnModel, value: any): void;
96
142
  isAllSelected(): boolean;
97
143
  toggleAllRows(): void;
98
144
  removeSelectedRow(row: any): void;
@@ -113,7 +159,7 @@ export declare class MaterialTableComponent extends StSubscribeDestroyComponent
113
159
  private setNewEmptyLocalStorageData;
114
160
  isFirstEditableColumn(column: ViewStMaterialTableColumnModel): boolean;
115
161
  static ɵfac: i0.ɵɵFactoryDeclaration<MaterialTableComponent, never>;
116
- static ɵcmp: i0.ɵɵComponentDeclaration<MaterialTableComponent, "ngx-st-material-table", never, { "showGlobalSearch": { "alias": "showGlobalSearch"; "required": false; "isSignal": true; }; "tableTitle": { "alias": "tableTitle"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "dataLength": { "alias": "dataLength"; "required": false; "isSignal": true; }; "allowPickColumns": { "alias": "allowPickColumns"; "required": false; "isSignal": true; }; "allowReorderColumns": { "alias": "allowReorderColumns"; "required": false; "isSignal": true; }; "localStorageName": { "alias": "localStorageName"; "required": false; "isSignal": true; }; "lazyLoading": { "alias": "lazyLoading"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "initColumns": { "alias": "initColumns"; "required": false; "isSignal": true; }; "rowClickAction": { "alias": "rowClickAction"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; }; "allowEditRow": { "alias": "allowEditRow"; "required": false; "isSignal": true; }; "showEditAllRows": { "alias": "showEditAllRows"; "required": false; "isSignal": true; }; "canEditRowValidator": { "alias": "canEditRowValidator"; "required": false; "isSignal": true; }; "canDeleteRowValidator": { "alias": "canDeleteRowValidator"; "required": false; "isSignal": true; }; "allowSelectRow": { "alias": "allowSelectRow"; "required": false; "isSignal": true; }; "selectionFieldLabel": { "alias": "selectionFieldLabel"; "required": false; "isSignal": true; }; "selectRowOnlyOne": { "alias": "selectRowOnlyOne"; "required": false; "isSignal": true; }; "showCreateButton": { "alias": "showCreateButton"; "required": false; "isSignal": true; }; "createButtonLabel": { "alias": "createButtonLabel"; "required": false; "isSignal": true; }; "createButtonAction": { "alias": "createButtonAction"; "required": false; "isSignal": true; }; "disableCreateButton": { "alias": "disableCreateButton"; "required": false; "isSignal": true; }; "createButtonUseAddRow": { "alias": "createButtonUseAddRow"; "required": false; "isSignal": true; }; "allowExtendRow": { "alias": "allowExtendRow"; "required": false; "isSignal": true; }; "extendedRowTemplate": { "alias": "extendedRowTemplate"; "required": false; "isSignal": true; }; "initSelectedRow": { "alias": "initSelectedRow"; "required": false; "isSignal": true; }; "extraCustomFilter": { "alias": "extraCustomFilter"; "required": false; "isSignal": true; }; }, { "loadData": "loadData"; "saveNewRow": "saveNewRow"; "saveNewCreatedRow": "saveNewCreatedRow"; "rowDeleted": "rowDeleted"; "selectRowChange": "selectRowChange"; }, never, never, false, never>;
162
+ static ɵcmp: i0.ɵɵComponentDeclaration<MaterialTableComponent, "ngx-st-material-table", never, { "showGlobalSearch": { "alias": "showGlobalSearch"; "required": false; "isSignal": true; }; "tableTitle": { "alias": "tableTitle"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "dataLength": { "alias": "dataLength"; "required": false; "isSignal": true; }; "allowPickColumns": { "alias": "allowPickColumns"; "required": false; "isSignal": true; }; "allowReorderColumns": { "alias": "allowReorderColumns"; "required": false; "isSignal": true; }; "localStorageName": { "alias": "localStorageName"; "required": false; "isSignal": true; }; "lazyLoading": { "alias": "lazyLoading"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "initColumns": { "alias": "initColumns"; "required": false; "isSignal": true; }; "rowClickAction": { "alias": "rowClickAction"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; }; "allowEditRow": { "alias": "allowEditRow"; "required": false; "isSignal": true; }; "showEditAllRows": { "alias": "showEditAllRows"; "required": false; "isSignal": true; }; "autoSaveOnChange": { "alias": "autoSaveOnChange"; "required": false; "isSignal": true; }; "canEditRowValidator": { "alias": "canEditRowValidator"; "required": false; "isSignal": true; }; "canDeleteRowValidator": { "alias": "canDeleteRowValidator"; "required": false; "isSignal": true; }; "allowSelectRow": { "alias": "allowSelectRow"; "required": false; "isSignal": true; }; "selectionFieldLabel": { "alias": "selectionFieldLabel"; "required": false; "isSignal": true; }; "selectRowOnlyOne": { "alias": "selectRowOnlyOne"; "required": false; "isSignal": true; }; "showCreateButton": { "alias": "showCreateButton"; "required": false; "isSignal": true; }; "createButtonLabel": { "alias": "createButtonLabel"; "required": false; "isSignal": true; }; "createButtonAction": { "alias": "createButtonAction"; "required": false; "isSignal": true; }; "disableCreateButton": { "alias": "disableCreateButton"; "required": false; "isSignal": true; }; "createButtonUseAddRow": { "alias": "createButtonUseAddRow"; "required": false; "isSignal": true; }; "allowExtendRow": { "alias": "allowExtendRow"; "required": false; "isSignal": true; }; "extendedRowTemplate": { "alias": "extendedRowTemplate"; "required": false; "isSignal": true; }; "initSelectedRow": { "alias": "initSelectedRow"; "required": false; "isSignal": true; }; "extraCustomFilter": { "alias": "extraCustomFilter"; "required": false; "isSignal": true; }; }, { "loadData": "loadData"; "saveNewRow": "saveNewRow"; "saveNewCreatedRow": "saveNewCreatedRow"; "rowDeleted": "rowDeleted"; "selectRowChange": "selectRowChange"; "fieldValueChanged": "fieldValueChanged"; }, never, never, false, never>;
117
163
  }
118
164
  export interface StMaterialTableLoadData {
119
165
  first: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-st-tables",
3
- "version": "17.0.112",
3
+ "version": "17.0.113",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.12",
6
6
  "@angular/core": "^17.3.12",