@one-paragon/angular-utilities 2.8.4 → 2.8.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.
Files changed (203) hide show
  1. package/fesm2022/one-paragon-angular-utilities.mjs +7350 -0
  2. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -0
  3. package/package.json +27 -15
  4. package/types/one-paragon-angular-utilities.d.ts +2211 -0
  5. package/karma.conf.js +0 -43
  6. package/ng-package.json +0 -7
  7. package/src/action-state/action-state-spinner/action-state-spinner.component.css +0 -16
  8. package/src/action-state/action-state-spinner/action-state-spinner.component.html +0 -7
  9. package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +0 -25
  10. package/src/action-state/action-state-spinner/action-state-spinner.component.ts +0 -26
  11. package/src/action-state/action-state-ui/action-state-ui.module.ts +0 -13
  12. package/src/action-state/index.ts +0 -8
  13. package/src/action-state/ngrx-ext/ngrx-ext.module.ts +0 -14
  14. package/src/action-state/ngrx.ts +0 -69
  15. package/src/http-request-state/RequestStateFactory.ts +0 -56
  16. package/src/http-request-state/RequestStateStore.ts +0 -360
  17. package/src/http-request-state/deprecated.ts +0 -20
  18. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +0 -29
  19. package/src/http-request-state/directives/http-error-state-directive.ts +0 -21
  20. package/src/http-request-state/directives/http-inProgress-state-directive.ts +0 -19
  21. package/src/http-request-state/directives/http-notStarted-state-directive.ts +0 -19
  22. package/src/http-request-state/directives/http-success-state-directive.ts +0 -29
  23. package/src/http-request-state/directives/index.ts +0 -5
  24. package/src/http-request-state/directives/request-state-directive.spec.ts +0 -73
  25. package/src/http-request-state/directives/request-state-directive.ts +0 -78
  26. package/src/http-request-state/documentation/CREATE-REQUESTOR.md +0 -667
  27. package/src/http-request-state/documentation/README.md +0 -191
  28. package/src/http-request-state/documentation/REQUEST-STATE-STORE-CONFIG.md +0 -648
  29. package/src/http-request-state/documentation/REQUESTOR.md +0 -616
  30. package/src/http-request-state/helpers.ts +0 -30
  31. package/src/http-request-state/http-state-module.ts +0 -23
  32. package/src/http-request-state/index.ts +0 -7
  33. package/src/http-request-state/models/view-context.ts +0 -18
  34. package/src/http-request-state/observable.spec.ts +0 -43
  35. package/src/http-request-state/request-state.ts +0 -66
  36. package/src/http-request-state/rxjs/getRequestorBody.ts +0 -10
  37. package/src/http-request-state/rxjs/getRequestorState.ts +0 -8
  38. package/src/http-request-state/rxjs/index.ts +0 -4
  39. package/src/http-request-state/rxjs/tapError.ts +0 -16
  40. package/src/http-request-state/rxjs/tapSuccess.ts +0 -16
  41. package/src/http-request-state/strategies.spec.ts +0 -42
  42. package/src/http-request-state/types.ts +0 -54
  43. package/src/ngrx/actionable-selector.ts +0 -189
  44. package/src/ngrx/index.ts +0 -1
  45. package/src/public-api.ts +0 -40
  46. package/src/rxjs/defaultShareReplay.ts +0 -8
  47. package/src/rxjs/index.ts +0 -5
  48. package/src/rxjs/mapError.ts +0 -8
  49. package/src/rxjs/rxjs-operators.ts +0 -130
  50. package/src/rxjs/subjectifier.ts +0 -17
  51. package/src/rxjs/subscriber.directive.ts +0 -57
  52. package/src/specs/clickSubject.spec.ts +0 -99
  53. package/src/specs/dialog.spec.ts +0 -101
  54. package/src/specs/toggleGroupDirective.spec.ts +0 -229
  55. package/src/table-builder/classes/DefaultSettings.ts +0 -11
  56. package/src/table-builder/classes/MatTableObservableDataSource.ts +0 -23
  57. package/src/table-builder/classes/TableBuilderConfig.ts +0 -49
  58. package/src/table-builder/classes/TableBuilderDataSource.ts +0 -64
  59. package/src/table-builder/classes/TableState.ts +0 -96
  60. package/src/table-builder/classes/data-store.ts +0 -10
  61. package/src/table-builder/classes/display-col.ts +0 -5
  62. package/src/table-builder/classes/filter-info.ts +0 -129
  63. package/src/table-builder/classes/table-builder-general-settings.ts +0 -233
  64. package/src/table-builder/classes/table-builder.ts +0 -105
  65. package/src/table-builder/classes/table-store.helpers.ts +0 -109
  66. package/src/table-builder/classes/table-store.ts +0 -540
  67. package/src/table-builder/components/array-column.component.ts +0 -34
  68. package/src/table-builder/components/column-builder/column-builder.component.html +0 -109
  69. package/src/table-builder/components/column-builder/column-builder.component.scss +0 -43
  70. package/src/table-builder/components/column-builder/column-builder.component.spec.ts +0 -49
  71. package/src/table-builder/components/column-builder/column-builder.component.ts +0 -130
  72. package/src/table-builder/components/column-builder/column-helpers.ts +0 -54
  73. package/src/table-builder/components/column-header-menu/column-header-menu.component.html +0 -128
  74. package/src/table-builder/components/column-header-menu/column-header-menu.component.scss +0 -97
  75. package/src/table-builder/components/column-header-menu/column-header-menu.component.ts +0 -113
  76. package/src/table-builder/components/date-filter/date-filter.component.html +0 -39
  77. package/src/table-builder/components/date-filter/date-filter.component.ts +0 -33
  78. package/src/table-builder/components/date-time-filter/date-time-filter.component.html +0 -25
  79. package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +0 -33
  80. package/src/table-builder/components/filter/filter.component.html +0 -120
  81. package/src/table-builder/components/filter/filter.component.scss +0 -60
  82. package/src/table-builder/components/filter/filter.component.spec.ts +0 -86
  83. package/src/table-builder/components/filter/filter.component.ts +0 -73
  84. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +0 -171
  85. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +0 -60
  86. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +0 -57
  87. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +0 -44
  88. package/src/table-builder/components/generic-table/generic-table.component.html +0 -140
  89. package/src/table-builder/components/generic-table/generic-table.component.scss +0 -45
  90. package/src/table-builder/components/generic-table/generic-table.component.ts +0 -531
  91. package/src/table-builder/components/generic-table/paginator.component.ts +0 -125
  92. package/src/table-builder/components/group-by-list/group-by-list.component.css +0 -24
  93. package/src/table-builder/components/group-by-list/group-by-list.component.html +0 -21
  94. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +0 -23
  95. package/src/table-builder/components/group-by-list/group-by-list.component.ts +0 -26
  96. package/src/table-builder/components/in-filter/in-filter.component.css +0 -22
  97. package/src/table-builder/components/in-filter/in-filter.component.html +0 -38
  98. package/src/table-builder/components/in-filter/in-filter.component.ts +0 -66
  99. package/src/table-builder/components/index.ts +0 -9
  100. package/src/table-builder/components/initialization-component/initialization.component.html +0 -78
  101. package/src/table-builder/components/initialization-component/initialization.component.ts +0 -28
  102. package/src/table-builder/components/link-column.component.ts +0 -42
  103. package/src/table-builder/components/number-filter/number-filter.component.css +0 -10
  104. package/src/table-builder/components/number-filter/number-filter.component.html +0 -32
  105. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +0 -30
  106. package/src/table-builder/components/number-filter/number-filter.component.ts +0 -34
  107. package/src/table-builder/components/profiles-menu/profiles-menu.component.html +0 -77
  108. package/src/table-builder/components/profiles-menu/profiles-menu.component.scss +0 -126
  109. package/src/table-builder/components/profiles-menu/profiles-menu.component.spec.ts +0 -23
  110. package/src/table-builder/components/profiles-menu/profiles-menu.component.ts +0 -64
  111. package/src/table-builder/components/reset-menu/reset-menu.component.css +0 -3
  112. package/src/table-builder/components/reset-menu/reset-menu.component.html +0 -10
  113. package/src/table-builder/components/reset-menu/reset-menu.component.ts +0 -87
  114. package/src/table-builder/components/scroll-strategy.ts +0 -139
  115. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +0 -57
  116. package/src/table-builder/components/sort-menu/sort-menu.component.html +0 -115
  117. package/src/table-builder/components/sort-menu/sort-menu.component.scss +0 -119
  118. package/src/table-builder/components/sort-menu/sort-menu.component.ts +0 -88
  119. package/src/table-builder/components/table-container/table-container.component.html +0 -94
  120. package/src/table-builder/components/table-container/table-container.component.scss +0 -60
  121. package/src/table-builder/components/table-container/table-container.component.ts +0 -467
  122. package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +0 -113
  123. package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +0 -125
  124. package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +0 -172
  125. package/src/table-builder/components/table-container/table-container.helpers/meta-data.helpers.ts +0 -19
  126. package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +0 -47
  127. package/src/table-builder/components/table-container/tableProps.ts +0 -21
  128. package/src/table-builder/components/table-container/virtual-scroll-container.ts +0 -216
  129. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +0 -42
  130. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +0 -47
  131. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +0 -40
  132. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +0 -11
  133. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +0 -85
  134. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +0 -35
  135. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +0 -13
  136. package/src/table-builder/components/table-header-menu/table-header-menu.component.css +0 -21
  137. package/src/table-builder/components/table-header-menu/table-header-menu.component.html +0 -48
  138. package/src/table-builder/components/table-header-menu/table-header-menu.component.ts +0 -36
  139. package/src/table-builder/directives/custom-cell-directive.ts +0 -63
  140. package/src/table-builder/directives/custom-header-directive.ts +0 -16
  141. package/src/table-builder/directives/group-row-directive.ts +0 -91
  142. package/src/table-builder/directives/index.ts +0 -8
  143. package/src/table-builder/directives/multi-sort.directive.spec.ts +0 -124
  144. package/src/table-builder/directives/multi-sort.directive.ts +0 -58
  145. package/src/table-builder/directives/resize-column.directive.ts +0 -107
  146. package/src/table-builder/directives/table-wrapper.directive.ts +0 -13
  147. package/src/table-builder/directives/tb-filter.directive.ts +0 -376
  148. package/src/table-builder/documentation/table-builder/CUSTOM-CELL.md +0 -568
  149. package/src/table-builder/documentation/table-builder/CUSTOM-GROUP-ROW.md +0 -356
  150. package/src/table-builder/documentation/table-builder/METADATA-DOCUMENTATION.md +0 -517
  151. package/src/table-builder/documentation/table-builder/STYLER-STYLE.md +0 -228
  152. package/src/table-builder/documentation/table-builder/TABLE-BUILDER-CONFIG.md +0 -325
  153. package/src/table-builder/documentation/table-builder/TABLE-BUILDER-SETTINGS.md +0 -515
  154. package/src/table-builder/documentation/table-builder/TABLE-BUILDER.md +0 -430
  155. package/src/table-builder/documentation/table-builder/TABLE-CONTAINER.md +0 -628
  156. package/src/table-builder/enums/filterTypes.ts +0 -39
  157. package/src/table-builder/functions/boolean-filter-function.ts +0 -12
  158. package/src/table-builder/functions/date-filter-function.ts +0 -85
  159. package/src/table-builder/functions/download-data.ts +0 -11
  160. package/src/table-builder/functions/null-filter-function.ts +0 -9
  161. package/src/table-builder/functions/number-filter-function.ts +0 -47
  162. package/src/table-builder/functions/sort-data-function.ts +0 -80
  163. package/src/table-builder/functions/string-filter-function.ts +0 -59
  164. package/src/table-builder/interfaces/ColumnInfo.ts +0 -9
  165. package/src/table-builder/interfaces/dictionary.ts +0 -3
  166. package/src/table-builder/interfaces/meta-data.ts +0 -279
  167. package/src/table-builder/ngrx/tableBuilderStateStore.ts +0 -203
  168. package/src/table-builder/pipes/column-total.pipe.ts +0 -16
  169. package/src/table-builder/pipes/format-filter-type.pipe.ts +0 -12
  170. package/src/table-builder/pipes/format-filter-value.pipe.ts +0 -71
  171. package/src/table-builder/pipes/key-display.ts +0 -13
  172. package/src/table-builder/services/all-values-filter-creator.service.ts +0 -92
  173. package/src/table-builder/services/export-to-csv.service.ts +0 -117
  174. package/src/table-builder/services/link-creator.service.ts +0 -98
  175. package/src/table-builder/services/table-template-service.ts +0 -47
  176. package/src/table-builder/services/transform-creator.ts +0 -90
  177. package/src/table-builder/specs/table-custom-filters.spec.ts +0 -262
  178. package/src/table-builder/styles/collapser.styles.scss +0 -16
  179. package/src/table-builder/table-builder.module.ts +0 -42
  180. package/src/table-builder/types/group-types.ts +0 -42
  181. package/src/table-builder/types/index.ts +0 -1
  182. package/src/test.ts +0 -17
  183. package/src/utilities/array-helpers.ts +0 -13
  184. package/src/utilities/directives/auto-focus.directive.ts +0 -20
  185. package/src/utilities/directives/clickEmitterDirective.ts +0 -15
  186. package/src/utilities/directives/clickSubject.ts +0 -19
  187. package/src/utilities/directives/conditional-classes.directive.ts +0 -36
  188. package/src/utilities/directives/dialog-service.ts +0 -19
  189. package/src/utilities/directives/dialog.ts +0 -174
  190. package/src/utilities/directives/mat-toggle-group-directive.ts +0 -60
  191. package/src/utilities/directives/prevent-enter.directive.ts +0 -12
  192. package/src/utilities/directives/stop-propagation.directive.ts +0 -19
  193. package/src/utilities/directives/styler.ts +0 -45
  194. package/src/utilities/directives/trim-whitespace.directive.ts +0 -20
  195. package/src/utilities/index.ts +0 -22
  196. package/src/utilities/module.ts +0 -53
  197. package/src/utilities/pipes/function.pipe.ts +0 -21
  198. package/src/utilities/pipes/phone.pipe.ts +0 -20
  199. package/src/utilities/pipes/space-case.pipes.spec.ts +0 -47
  200. package/src/utilities/pipes/space-case.pipes.ts +0 -29
  201. package/tsconfig.lib.json +0 -20
  202. package/tsconfig.lib.prod.json +0 -10
  203. package/tsconfig.spec.json +0 -17
@@ -1,430 +0,0 @@
1
- # TableBuilder Class Documentation
2
-
3
- ## Overview
4
-
5
- `TableBuilder` is the core class that configures and manages data for the Table Builder component. It accepts data, metadata (column definitions), and settings to create a fully-configured table that can be passed to the `tb-table-container` component.
6
-
7
- ## Basic Usage
8
-
9
- ```typescript
10
- import { TableBuilder, FieldType } from 'angular-utilities';
11
-
12
- interface User {
13
- id: number;
14
- name: string;
15
- email: string;
16
- }
17
-
18
- const data: User[] = [
19
- { id: 1, name: 'John Doe', email: 'john@example.com' },
20
- { id: 2, name: 'Jane Smith', email: 'jane@example.com' }
21
- ];
22
-
23
- // Simple usage with just data (auto-generates metadata)
24
- const tableBuilder = new TableBuilder(data);
25
-
26
- // With metadata
27
- const metaData = [
28
- { key: 'id', fieldType: FieldType.Number, displayName: 'ID' },
29
- { key: 'name', fieldType: FieldType.String, displayName: 'Name' },
30
- { key: 'email', fieldType: FieldType.String, displayName: 'Email' }
31
- ];
32
- const tableBuilder = new TableBuilder(data, metaData);
33
-
34
- // With settings
35
- const settings = {
36
- tableSettings: {
37
- tableId: 'users-table',
38
- trackBy: 'id',
39
- usePaginator: true
40
- }
41
- };
42
- const tableBuilder = new TableBuilder(data, metaData, settings);
43
- ```
44
-
45
- ## Constructor
46
-
47
- ```typescript
48
- constructor(
49
- data: T[] | Observable<T[]> | Signal<T[]>,
50
- metaData?: MetaData<T>[] | Observable<MetaData<T>[]> | Signal<MetaData<T>[]>,
51
- settings?: TableBuilderSettings<T> | Observable<TableBuilderSettings<T>> | Signal<TableBuilderSettings<T>>
52
- )
53
- ```
54
-
55
- ### Parameters
56
-
57
- #### `data` (required)
58
- - **Type**: `T[]` | `Observable<T[]>` | `Signal<T[]>`
59
- - **Description**: The data to display in the table. Can be provided as:
60
- - **Array**: Static data
61
- - **Observable**: Reactive data that updates automatically
62
- - **Signal**: Angular signal for reactive data
63
-
64
- **Examples:**
65
- ```typescript
66
- // Static array
67
- const data = [{ id: 1, name: 'John' }];
68
- const tableBuilder = new TableBuilder(data);
69
-
70
- // Observable
71
- const data$ = this.userService.getUsers();
72
- const tableBuilder = new TableBuilder(data$);
73
-
74
- // Signal
75
- const data = signal([{ id: 1, name: 'John' }]);
76
- const tableBuilder = new TableBuilder(data);
77
- ```
78
-
79
- #### `metaData` (optional)
80
- - **Type**: `MetaData<T>[]` | `Observable<MetaData<T>[]>` | `Signal<MetaData<T>[]>` | `undefined`
81
- - **Default**: Auto-generated from first data item
82
- - **Description**: Column definitions that specify how each property should be displayed, sorted, and filtered. If not provided, metadata is automatically generated from the keys of the first data item with `FieldType.Unknown`.
83
- - **Related Documentation**: See [MetaData Documentation](METADATA-DOCUMENTATION.md) for detailed column configuration options.
84
-
85
- **Examples:**
86
- ```typescript
87
- // Static metadata
88
- const metaData = [
89
- { key: 'id', fieldType: FieldType.Number, displayName: 'ID', width: '80px' },
90
- { key: 'name', fieldType: FieldType.String, displayName: 'Name' },
91
- { key: 'createdAt', fieldType: FieldType.Date, displayName: 'Created' }
92
- ];
93
-
94
- // Observable metadata (useful for dynamic columns)
95
- const metaData$ = this.configService.getColumnConfig();
96
-
97
- // Signal metadata
98
- const metaData = signal([...]);
99
- ```
100
-
101
- #### `settings` (optional)
102
- - **Type**: `TableBuilderSettings<T>` | `Observable<TableBuilderSettings<T>>` | `Signal<TableBuilderSettings<T>>`
103
- - **Default**: `new GeneralTableSettings()`
104
- - **Description**: Configuration object that controls table appearance and behavior including headers, footers, pagination, virtual scrolling, and more.
105
- - **Related Documentation**: See [TableBuilder Settings](TABLE-BUILDER-SETTINGS.md) for all available settings.
106
-
107
- **Examples:**
108
- ```typescript
109
- // Static settings
110
- const settings = {
111
- headerSettings: {
112
- hideExport: false,
113
- title: { text: 'Users Table', level: 2 }
114
- },
115
- tableSettings: {
116
- tableId: 'users-table',
117
- trackBy: 'id',
118
- usePaginator: true,
119
- paginatorSettings: {
120
- pageSize: 25
121
- }
122
- }
123
- };
124
-
125
- // Observable settings
126
- const settings$ = this.configService.getTableSettings();
127
-
128
- // Signal settings
129
- const settings = signal({ ... });
130
- ```
131
-
132
- ## Properties
133
-
134
- ### `container` (readonly)
135
- - **Type**: `Signal<TableContainerComponent | undefined>`
136
- - **Description**: Provides access to the `TableContainerComponent` instance once the TableBuilder is bound to a table. This is set automatically when the TableBuilder is passed to a `tb-table-container` component. Use this to programmatically control the table.
137
-
138
- **Example:**
139
- ```typescript
140
- @Component({
141
- selector: 'app-users',
142
- template: `
143
- <tb-table-container [tableBuilder]="tableBuilder" />
144
- <button (click)="exportData()">Export</button>
145
- `
146
- })
147
- export class UsersComponent {
148
- tableBuilder = new TableBuilder(this.data, this.metaData);
149
-
150
- exportData() {
151
- const container = this.tableBuilder.container();
152
- if (container) {
153
- container.exportToCsv();
154
- }
155
- }
156
-
157
- expandAllGroups() {
158
- this.tableBuilder.container()?.expandAllGroups();
159
- }
160
-
161
- clearSelections() {
162
- this.tableBuilder.container()?.clearSelections();
163
- }
164
- }
165
- ```
166
-
167
- ## Reactive Data Patterns
168
-
169
- The TableBuilder supports reactive data patterns through Observables and Signals:
170
-
171
- ### Observable Pattern
172
-
173
- ```typescript
174
- import { Observable } from 'rxjs';
175
-
176
- @Component({
177
- selector: 'app-users',
178
- template: `<tb-table-container [tableBuilder]="tableBuilder" />`
179
- })
180
- export class UsersComponent {
181
- // Data from HTTP service
182
- users$ = this.userService.getUsers();
183
-
184
- // Metadata from config service
185
- metaData$ = this.configService.getColumnConfig();
186
-
187
- tableBuilder = new TableBuilder(this.users$, this.metaData$);
188
-
189
- constructor(
190
- private userService: UserService,
191
- private configService: ConfigService
192
- ) {}
193
- }
194
- ```
195
-
196
- ### Signal Pattern
197
-
198
- ```typescript
199
- import { signal, computed } from '@angular/core';
200
-
201
- @Component({
202
- selector: 'app-users',
203
- template: `<tb-table-container [tableBuilder]="tableBuilder" />`
204
- })
205
- export class UsersComponent {
206
- users = signal<User[]>([]);
207
-
208
- metaData = signal([
209
- { key: 'id', fieldType: FieldType.Number, displayName: 'ID' },
210
- { key: 'name', fieldType: FieldType.String, displayName: 'Name' }
211
- ]);
212
-
213
- tableBuilder = new TableBuilder(this.users, this.metaData);
214
-
215
- ngOnInit() {
216
- // Update data dynamically
217
- this.userService.getUsers().subscribe(users => {
218
- this.users.set(users);
219
- });
220
- }
221
- }
222
- ```
223
-
224
- ### Computed Signal Pattern
225
-
226
- ```typescript
227
- @Component({
228
- selector: 'app-filtered-users',
229
- template: `<tb-table-container [tableBuilder]="tableBuilder" />`
230
- })
231
- export class FilteredUsersComponent {
232
- allUsers = signal<User[]>([]);
233
- activeFilter = signal<boolean>(true);
234
-
235
- // Computed data based on filter
236
- filteredUsers = computed(() =>
237
- this.allUsers().filter(user =>
238
- !this.activeFilter() || user.isActive
239
- )
240
- );
241
-
242
- tableBuilder = new TableBuilder(this.filteredUsers);
243
- }
244
- ```
245
-
246
- ## Auto-Generated Metadata
247
-
248
- When metadata is not provided, TableBuilder automatically generates basic metadata from the first data item:
249
-
250
- ```typescript
251
- const data = [
252
- { id: 1, name: 'John', age: 30 }
253
- ];
254
-
255
- const tableBuilder = new TableBuilder(data);
256
-
257
- // Internally generates:
258
- // [
259
- // { key: 'id', fieldType: FieldType.Unknown, order: -1 },
260
- // { key: 'name', fieldType: FieldType.Unknown, order: -1 },
261
- // { key: 'age', fieldType: FieldType.Unknown, order: -1 }
262
- // ]
263
- ```
264
-
265
- **Note**: While auto-generation is convenient for quick prototyping, it's recommended to provide explicit metadata for production use to ensure proper typing, sorting, and filtering behavior.
266
-
267
- ## Complete Example
268
-
269
- ```typescript
270
- import { Component, signal } from '@angular/core';
271
- import { TableBuilder, FieldType } from 'angular-utilities';
272
- import { TableContainerComponent } from 'angular-utilities';
273
-
274
- interface User {
275
- id: number;
276
- name: string;
277
- email: string;
278
- department: string;
279
- salary: number;
280
- hireDate: Date;
281
- isActive: boolean;
282
- }
283
-
284
- @Component({
285
- selector: 'app-users-table',
286
- standalone: true,
287
- imports: [TableContainerComponent],
288
- template: `
289
- <div class="controls">
290
- <button (click)="exportData()">Export to CSV</button>
291
- <button (click)="expandGroups()">Expand All Groups</button>
292
- <button (click)="collapseGroups()">Collapse All Groups</button>
293
- </div>
294
-
295
- <tb-table-container [tableBuilder]="tableBuilder" />
296
- `
297
- })
298
- export class UsersTableComponent {
299
- users = signal<User[]>([
300
- {
301
- id: 1,
302
- name: 'John Doe',
303
- email: 'john@example.com',
304
- department: 'Engineering',
305
- salary: 95000,
306
- hireDate: new Date('2020-01-15'),
307
- isActive: true
308
- },
309
- {
310
- id: 2,
311
- name: 'Jane Smith',
312
- email: 'jane@example.com',
313
- department: 'Marketing',
314
- salary: 85000,
315
- hireDate: new Date('2021-03-20'),
316
- isActive: true
317
- }
318
- ]);
319
-
320
- metaData = [
321
- {
322
- key: 'id',
323
- fieldType: FieldType.Number,
324
- displayName: 'ID',
325
- width: '80px'
326
- },
327
- {
328
- key: 'name',
329
- fieldType: FieldType.String,
330
- displayName: 'Full Name',
331
- width: '200px'
332
- },
333
- {
334
- key: 'email',
335
- fieldType: FieldType.String,
336
- displayName: 'Email Address'
337
- },
338
- {
339
- key: 'department',
340
- fieldType: FieldType.String,
341
- displayName: 'Department',
342
- width: '150px'
343
- },
344
- {
345
- key: 'salary',
346
- fieldType: FieldType.Currency,
347
- displayName: 'Annual Salary',
348
- width: '120px'
349
- },
350
- {
351
- key: 'hireDate',
352
- fieldType: FieldType.Date,
353
- displayName: 'Hire Date',
354
- width: '120px'
355
- },
356
- {
357
- key: 'isActive',
358
- fieldType: FieldType.Boolean,
359
- displayName: 'Active',
360
- width: '100px'
361
- }
362
- ];
363
-
364
- settings = {
365
- headerSettings: {
366
- title: { text: 'Employee Directory', level: 2 },
367
- hideExport: false
368
- },
369
- tableSettings: {
370
- tableId: 'users-table',
371
- trackBy: 'id',
372
- usePaginator: true,
373
- includeIndexColumn: true,
374
- includeSelectionColumn: true,
375
- paginatorSettings: {
376
- pageSize: 25,
377
- includeAllInOptions: true
378
- },
379
- groupBySettings: [
380
- { key: 'department', expanded: true }
381
- ]
382
- },
383
- columnHeaderSettings: {
384
- stickyHeaderRow: true
385
- }
386
- };
387
-
388
- tableBuilder = new TableBuilder(this.users, this.metaData, this.settings);
389
-
390
- exportData() {
391
- this.tableBuilder.container()?.exportToCsv();
392
- }
393
-
394
- expandGroups() {
395
- this.tableBuilder.container()?.expandAllGroups();
396
- }
397
-
398
- collapseGroups() {
399
- this.tableBuilder.container()?.collapseAllGroups();
400
- }
401
- }
402
- ```
403
-
404
- ## Helper Function: CreateTableBuilder
405
-
406
- For working with observables that emit `ReportDef` objects (which contain both data and metadata):
407
-
408
- ```typescript
409
- import { Observable } from 'rxjs';
410
- import { CreateTableBuilder } from 'angular-utilities';
411
-
412
- interface ReportDef {
413
- data: any[];
414
- metaData: MetaData[];
415
- }
416
-
417
- const reportDef$: Observable<ReportDef> = this.reportService.getReport();
418
- const tableBuilder = CreateTableBuilder(reportDef$);
419
- ```
420
-
421
- This helper automatically splits the observable into separate data and metadata streams.
422
-
423
- ## Related Documentation
424
-
425
- - [Table Container Component](TABLE-CONTAINER.md) - How to use TableBuilder with the table component
426
- - [MetaData Documentation](METADATA-DOCUMENTATION.md) - Column configuration
427
- - [TableBuilder Settings](TABLE-BUILDER-SETTINGS.md) - Table behavior and appearance
428
- - [TableBuilder Config](TABLE-BUILDER-CONFIG.md) - Global configuration
429
- - [CustomCell Directive](CUSTOM-CELL.md) - Custom cell templates
430
- - [CustomGroupRow Directive](CUSTOM-GROUP-ROW.md) - Custom group row templates