@ni/nimble-components 18.5.6 → 18.5.8

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 (47) hide show
  1. package/dist/all-components-bundle.js +329 -55
  2. package/dist/all-components-bundle.js.map +1 -1
  3. package/dist/all-components-bundle.min.js +1579 -1539
  4. package/dist/all-components-bundle.min.js.map +1 -1
  5. package/dist/esm/table/components/cell/index.d.ts +1 -1
  6. package/dist/esm/table/components/cell/index.js.map +1 -1
  7. package/dist/esm/table/components/cell/template.d.ts +1 -1
  8. package/dist/esm/table/components/header/index.d.ts +6 -0
  9. package/dist/esm/table/components/header/index.js +32 -0
  10. package/dist/esm/table/components/header/index.js.map +1 -1
  11. package/dist/esm/table/components/header/styles.js +5 -0
  12. package/dist/esm/table/components/header/styles.js.map +1 -1
  13. package/dist/esm/table/components/header/template.js +15 -2
  14. package/dist/esm/table/components/header/template.js.map +1 -1
  15. package/dist/esm/table/components/row/index.d.ts +5 -1
  16. package/dist/esm/table/components/row/index.js.map +1 -1
  17. package/dist/esm/table/components/row/template.d.ts +1 -1
  18. package/dist/esm/table/index.d.ts +13 -2
  19. package/dist/esm/table/index.js +62 -30
  20. package/dist/esm/table/index.js.map +1 -1
  21. package/dist/esm/table/models/sort-operations.d.ts +7 -0
  22. package/dist/esm/table/models/sort-operations.js +36 -0
  23. package/dist/esm/table/models/sort-operations.js.map +1 -0
  24. package/dist/esm/table/models/table-validator.d.ts +2 -0
  25. package/dist/esm/table/models/table-validator.js +14 -1
  26. package/dist/esm/table/models/table-validator.js.map +1 -1
  27. package/dist/esm/table/template.js +6 -1
  28. package/dist/esm/table/template.js.map +1 -1
  29. package/dist/esm/table/types.d.ts +10 -17
  30. package/dist/esm/table/types.js +8 -1
  31. package/dist/esm/table/types.js.map +1 -1
  32. package/dist/esm/table-column/base/index.d.ts +23 -1
  33. package/dist/esm/table-column/base/index.js +25 -3
  34. package/dist/esm/table-column/base/index.js.map +1 -1
  35. package/dist/esm/table-column/base/types.d.ts +26 -0
  36. package/dist/esm/table-column/base/types.js +15 -0
  37. package/dist/esm/table-column/base/types.js.map +1 -0
  38. package/dist/esm/table-column/text/index.d.ts +7 -1
  39. package/dist/esm/table-column/text/index.js +4 -1
  40. package/dist/esm/table-column/text/index.js.map +1 -1
  41. package/dist/esm/table-column/text/template.d.ts +1 -1
  42. package/dist/esm/theme-provider/design-tokens.js +39 -20
  43. package/dist/esm/theme-provider/design-tokens.js.map +1 -1
  44. package/package.json +2 -2
  45. package/dist/esm/table/models/table-validator.spec.d.ts +0 -1
  46. package/dist/esm/table/models/table-validator.spec.js +0 -276
  47. package/dist/esm/table/models/table-validator.spec.js.map +0 -1
@@ -1,276 +0,0 @@
1
- import { TableValidator } from './table-validator';
2
- import { getSpecTypeByNamedList } from '../../utilities/tests/parameterized';
3
- describe('TableValidator', () => {
4
- let validator;
5
- beforeEach(() => {
6
- validator = new TableValidator();
7
- });
8
- function getInvalidKeys(tableValidator) {
9
- return Object.entries(tableValidator)
10
- .filter(([_, value]) => value)
11
- .map(([key, _]) => key);
12
- }
13
- describe('record ID validation', () => {
14
- it('setting valid field for ID is valid', () => {
15
- const data = [
16
- { stringField: 'value-1', numberField: 10 },
17
- { stringField: 'value-2', numberField: 11 }
18
- ];
19
- const isValid = validator.validateRecordIds(data, 'stringField');
20
- expect(isValid).toBeTrue();
21
- expect(validator.isValid()).toBeTrue();
22
- expect(getInvalidKeys(validator)).toEqual([]);
23
- });
24
- it('setting `undefined` field for ID is valid', () => {
25
- const data = [
26
- { stringField: 'value-1', numberField: 10 },
27
- { stringField: 'value-2', numberField: 11 }
28
- ];
29
- const isValid = validator.validateRecordIds(data, undefined);
30
- expect(isValid).toBeTrue();
31
- expect(validator.isValid()).toBeTrue();
32
- expect(getInvalidKeys(validator)).toEqual([]);
33
- });
34
- it('setting data with duplicate IDs is invalid', () => {
35
- const data = [
36
- { stringField: 'value-1', numberField: 10 },
37
- { stringField: 'value-1', numberField: 11 }
38
- ];
39
- const isValid = validator.validateRecordIds(data, 'stringField');
40
- expect(isValid).toBeFalse();
41
- expect(validator.isValid()).toBeFalse();
42
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents(['duplicateRecordId']));
43
- });
44
- it('setting data with invalid ID value type is invalid', () => {
45
- const data = [
46
- { stringField: 'value-1', numberField: 10 },
47
- { stringField: 'value-2', numberField: 11 }
48
- ];
49
- const isValid = validator.validateRecordIds(data, 'numberField');
50
- expect(isValid).toBeFalse();
51
- expect(validator.isValid()).toBeFalse();
52
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents(['invalidRecordId']));
53
- });
54
- it('setting data with empty ID value is valid', () => {
55
- const data = [
56
- { stringField: 'value-1', numberField: 10 },
57
- { stringField: '', numberField: 11 }
58
- ];
59
- const isValid = validator.validateRecordIds(data, 'stringField');
60
- expect(isValid).toBeTrue();
61
- expect(validator.isValid()).toBeTrue();
62
- expect(getInvalidKeys(validator)).toEqual([]);
63
- });
64
- it('setting data with undefined ID value is invalid', () => {
65
- const data = [
66
- { stringField: 'value-1', numberField: 10 },
67
- { stringField: undefined, numberField: 11 }
68
- ];
69
- const isValid = validator.validateRecordIds(data, 'stringField');
70
- expect(isValid).toBeFalse();
71
- expect(validator.isValid()).toBeFalse();
72
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents(['invalidRecordId']));
73
- });
74
- it('setting data with null ID value is invalid', () => {
75
- const data = [
76
- { stringField: 'value-1', numberField: 10 },
77
- { stringField: undefined, numberField: 11 }
78
- ];
79
- const isValid = validator.validateRecordIds(data, 'stringField');
80
- expect(isValid).toBeFalse();
81
- expect(validator.isValid()).toBeFalse();
82
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents(['invalidRecordId']));
83
- });
84
- it('setting data with missing IDs is invalid', () => {
85
- const data = [
86
- { stringField: 'value-1', numberField: 10 },
87
- { stringField: 'value-2', numberField: 11 }
88
- ];
89
- const isValid = validator.validateRecordIds(data, 'missingField');
90
- expect(isValid).toBeFalse();
91
- expect(validator.isValid()).toBeFalse();
92
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents(['missingRecordId']));
93
- });
94
- it('multiple errors are reported during validation', () => {
95
- const data = [
96
- { stringField: 'value-1', numberField: 10 },
97
- { stringField: 'value-2', numberField: 11 },
98
- { stringField: 'value-1', numberField: 12 },
99
- { numberField: 12 },
100
- { stringField: true, numberField: 12 }
101
- ];
102
- const isValid = validator.validateRecordIds(data, 'stringField');
103
- expect(isValid).toBeFalse();
104
- expect(validator.isValid()).toBeFalse();
105
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents([
106
- 'missingRecordId',
107
- 'duplicateRecordId',
108
- 'invalidRecordId'
109
- ]));
110
- });
111
- it('setting ID field name to undefined makes configuration valid', () => {
112
- const data = [
113
- { stringField: 'value-1', numberField: 10 },
114
- { stringField: 'value-2', numberField: 11 }
115
- ];
116
- let isValid = validator.validateRecordIds(data, 'missingField');
117
- expect(isValid).toBeFalse();
118
- expect(validator.isValid()).toBeFalse();
119
- isValid = validator.validateRecordIds(data, undefined);
120
- expect(isValid).toBeTrue();
121
- expect(validator.isValid()).toBeTrue();
122
- });
123
- it('setting a valid ID field name makes an invalid configuration valid', () => {
124
- const data = [
125
- { stringField: 'value-1', numberField: 10 },
126
- { stringField: 'value-2', numberField: 11 }
127
- ];
128
- let isValid = validator.validateRecordIds(data, 'missingField');
129
- expect(isValid).toBeFalse();
130
- expect(validator.isValid()).toBeFalse();
131
- isValid = validator.validateRecordIds(data, 'stringField');
132
- expect(isValid).toBeTrue();
133
- expect(validator.isValid()).toBeTrue();
134
- });
135
- it('setting invalid ID field name makes a valid configuration invalid', () => {
136
- const data = [
137
- { stringField: 'value-1', numberField: 10 },
138
- { stringField: 'value-2', numberField: 11 }
139
- ];
140
- let isValid = validator.validateRecordIds(data, 'stringField');
141
- expect(isValid).toBeTrue();
142
- expect(validator.isValid()).toBeTrue();
143
- isValid = validator.validateRecordIds(data, 'missingField');
144
- expect(isValid).toBeFalse();
145
- expect(validator.isValid()).toBeFalse();
146
- });
147
- it('ID field name can be an empty string', () => {
148
- const data = [
149
- // eslint-disable-next-line @typescript-eslint/naming-convention
150
- { stringField: 'value-1', numberField: 10, '': 'empty-1' },
151
- // eslint-disable-next-line @typescript-eslint/naming-convention
152
- { stringField: 'value-2', numberField: 11, '': 'empty-2' }
153
- ];
154
- const isValid = validator.validateRecordIds(data, '');
155
- expect(isValid).toBeTrue();
156
- expect(validator.isValid()).toBeTrue();
157
- expect(getInvalidKeys(validator)).toEqual([]);
158
- });
159
- it('validation occurs when ID field name is an empty string', () => {
160
- const data = [
161
- // eslint-disable-next-line @typescript-eslint/naming-convention
162
- { stringField: 'value-1', numberField: 10, '': 'empty-1' },
163
- // eslint-disable-next-line @typescript-eslint/naming-convention
164
- { stringField: 'value-2', numberField: 11, '': 'empty-1' }
165
- ];
166
- const isValid = validator.validateRecordIds(data, '');
167
- expect(isValid).toBeFalse();
168
- expect(validator.isValid()).toBeFalse();
169
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents(['duplicateRecordId']));
170
- });
171
- });
172
- describe('column ID validation', () => {
173
- const columnConfigurations = [
174
- {
175
- columnIds: [undefined, ''],
176
- isValid: true,
177
- invalidKeys: [],
178
- name: 'does not require column IDs'
179
- },
180
- {
181
- columnIds: ['my-id', undefined, undefined],
182
- isValid: false,
183
- invalidKeys: ['missingColumnId'],
184
- name: 'requires column IDs for all columns if a column ID is defined for at least one'
185
- },
186
- {
187
- columnIds: ['my-id-1', 'my-id-2', 'my-id-3'],
188
- isValid: true,
189
- invalidKeys: [],
190
- name: 'unique defined IDs are valid'
191
- },
192
- {
193
- columnIds: ['my-id-1', 'my-id-2', 'my-id-2'],
194
- isValid: false,
195
- invalidKeys: ['duplicateColumnId'],
196
- name: 'duplicate column IDs is invalid'
197
- },
198
- {
199
- columnIds: ['my-id-1', 'my-id-2', 'my-id-2', undefined],
200
- isValid: false,
201
- invalidKeys: ['missingColumnId', 'duplicateColumnId'],
202
- name: 'reports multiple column ID validation errors'
203
- },
204
- {
205
- columnIds: ['my-id-1', ''],
206
- isValid: false,
207
- invalidKeys: ['missingColumnId'],
208
- name: 'does not allow empty string as a defined column ID'
209
- }
210
- ];
211
- const focused = [];
212
- const disabled = [];
213
- for (const columnConfiguration of columnConfigurations) {
214
- const specType = getSpecTypeByNamedList(columnConfiguration, focused, disabled);
215
- specType(columnConfiguration.name, () => {
216
- const tableValidator = new TableValidator();
217
- const isValid = tableValidator.validateColumnIds(columnConfiguration.columnIds);
218
- expect(isValid).toBe(columnConfiguration.isValid);
219
- expect(tableValidator.isValid()).toBe(columnConfiguration.invalidKeys.length === 0);
220
- expect(getInvalidKeys(tableValidator)).toEqual(jasmine.arrayWithExactContents(columnConfiguration.invalidKeys));
221
- });
222
- }
223
- });
224
- describe('validation checks do not reset unrelated state', () => {
225
- it('invalid record IDs stay invalid when validating column IDs', () => {
226
- const data = [
227
- { stringField: 'value-1', numberField: 10 },
228
- { stringField: 'value-2', numberField: 11 },
229
- { stringField: 'value-1', numberField: 12 },
230
- { numberField: 12 },
231
- { stringField: true, numberField: 12 }
232
- ];
233
- const recordIdsAreValid = validator.validateRecordIds(data, 'stringField');
234
- expect(recordIdsAreValid).toBeFalse();
235
- expect(validator.isValid()).toBeFalse();
236
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents([
237
- 'missingRecordId',
238
- 'duplicateRecordId',
239
- 'invalidRecordId'
240
- ]));
241
- const columnIdsAreValid = validator.validateColumnIds([
242
- 'id-1',
243
- 'id-2',
244
- 'id-3'
245
- ]);
246
- expect(columnIdsAreValid).toBeTrue();
247
- expect(validator.isValid()).toBeFalse();
248
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents([
249
- 'missingRecordId',
250
- 'duplicateRecordId',
251
- 'invalidRecordId'
252
- ]));
253
- });
254
- it('invalid column IDs stay invalid when validating record IDs', () => {
255
- const columnIdsAreValid = validator.validateColumnIds([
256
- 'id-1',
257
- 'id-1',
258
- undefined
259
- ]);
260
- expect(columnIdsAreValid).toBeFalse();
261
- expect(validator.isValid()).toBeFalse();
262
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents([
263
- 'missingColumnId',
264
- 'duplicateColumnId'
265
- ]));
266
- const recordIdsAreValid = validator.validateRecordIds([], undefined);
267
- expect(recordIdsAreValid).toBeTrue();
268
- expect(validator.isValid()).toBeFalse();
269
- expect(getInvalidKeys(validator)).toEqual(jasmine.arrayWithExactContents([
270
- 'missingColumnId',
271
- 'duplicateColumnId'
272
- ]));
273
- });
274
- });
275
- });
276
- //# sourceMappingURL=table-validator.spec.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-validator.spec.js","sourceRoot":"","sources":["../../../../src/table/models/table-validator.spec.ts"],"names":[],"mappings":"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"}