@churchillliving/se-ui-toolkit 6.55.190 → 6.55.192
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.
package/README.md
CHANGED
|
@@ -17,7 +17,50 @@ After building your library with `ng build se-ui-toolkit`, go to the dist folder
|
|
|
17
17
|
|
|
18
18
|
## Running unit tests
|
|
19
19
|
|
|
20
|
-
Run
|
|
20
|
+
**Run all tests (recommended):**
|
|
21
|
+
```bash
|
|
22
|
+
node run-all-tests.js
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
This runs both Angular unit tests and grid component tests in sequence.
|
|
26
|
+
|
|
27
|
+
**Run individual test suites:**
|
|
28
|
+
```bash
|
|
29
|
+
# Angular unit tests via Karma
|
|
30
|
+
ng test se-ui-toolkit
|
|
31
|
+
|
|
32
|
+
# Grid component tests only
|
|
33
|
+
node src/lib/components/base/grid/run-all-grid-tests.js
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Global Filters - Date Range Filter
|
|
37
|
+
|
|
38
|
+
### Date Range Filter Initialization
|
|
39
|
+
|
|
40
|
+
The `addGlobalDateRangeFilter` method accepts `value` and `valueTwo` properties to set initial start and end dates for the filter.
|
|
41
|
+
|
|
42
|
+
**Supported Input Formats:**
|
|
43
|
+
- Date objects: `new Date('2026-05-29')`
|
|
44
|
+
- ISO date strings: `'2026-05-29'`
|
|
45
|
+
- Locale-formatted strings: `'5/29/2026'`
|
|
46
|
+
|
|
47
|
+
**Example:**
|
|
48
|
+
```typescript
|
|
49
|
+
this.gridService.addGlobalDateRangeFilter({
|
|
50
|
+
fromField: "FROM",
|
|
51
|
+
toField: "TO",
|
|
52
|
+
displayText: "Dates",
|
|
53
|
+
dayRange: utilities.EDayRange.WEEK,
|
|
54
|
+
value: new Date('2026-05-29'), // Start date
|
|
55
|
+
valueTwo: new Date('2026-06-05'), // End date
|
|
56
|
+
})
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Important:** Both `value` and `valueTwo` must be provided together for the filter to initialize with dates. If either is missing, the filter will start empty. Users can then use the Previous/Next buttons to navigate date ranges based on the configured `dayRange` property.
|
|
60
|
+
|
|
61
|
+
### Date Format Handling
|
|
62
|
+
|
|
63
|
+
The component properly handles conversion of Date objects and strings to the format required by the p-datepicker component. Avoid calling `toLocaleDateString()` on date values before passing them to the filter, as the component handles this conversion internally.
|
|
21
64
|
|
|
22
65
|
## Further help
|
|
23
66
|
|
|
@@ -22,7 +22,10 @@ export class GridUpdateComponent {
|
|
|
22
22
|
var keys = Object.keys(record);
|
|
23
23
|
const key = (keys?.find((key) => key?.toLowerCase() === gridUpdated?.field?.toLowerCase()) || columnChanged.field);
|
|
24
24
|
if (key) {
|
|
25
|
-
|
|
25
|
+
const value = typeof gridUpdated?.value === 'object' && gridUpdated?.value?.value !== undefined
|
|
26
|
+
? gridUpdated.value.value
|
|
27
|
+
: gridUpdated?.value;
|
|
28
|
+
record[key] = value;
|
|
26
29
|
if (gridUpdated?.displayField && gridUpdated?.valueTwo?.text) {
|
|
27
30
|
const displayKey = keys?.find((k) => k?.toLowerCase() === gridUpdated?.displayField?.toLowerCase()) || gridUpdated.displayField;
|
|
28
31
|
record[displayKey] = gridUpdated.valueTwo.text;
|
|
@@ -64,4 +67,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
64
67
|
}], updateRecord: [{
|
|
65
68
|
type: Output
|
|
66
69
|
}] } });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC11cGRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkL2dyaWQtdXBkYXRlL2dyaWQtdXBkYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC9ncmlkLXVwZGF0ZS9ncmlkLXVwZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3ZFLE9BQU8sS0FBSyxTQUFTLE1BQU0scUNBQXFDLENBQUM7Ozs7QUFPakUsTUFBTSxPQUFPLG1CQUFtQjtJQU05QixZQUNTLFdBQXdCO1FBQXhCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBSHZCLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFJM0QsQ0FBQztJQUNMLFFBQVEsS0FBVyxDQUFDO0lBRXBCLHFCQUFxQixDQUFDLFdBQXdCO1FBQzVDLElBQUksYUFBYSxDQUFDO1FBQ2xCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLElBQUksV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZILENBQUM7UUFDRCxnREFBZ0Q7UUFDaEQsMkNBQTJDO1FBQzNDLDZDQUE2QztRQUM3QywyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNsQyxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxLQUFLLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDbEgsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLEtBQUssR0FBRyxPQUFPLFdBQVcsRUFBRSxLQUFLLEtBQUssUUFBUSxJQUFJLFdBQVcsRUFBRSxLQUFLLEVBQUUsS0FBSyxLQUFLLFNBQVM7b0JBQzdGLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUs7b0JBQ3pCLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDO2dCQUN2QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixJQUFJLFdBQVcsRUFBRSxZQUFZLElBQUksV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztvQkFDN0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxLQUFLLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDO29CQUNoSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pELENBQUM7Z0JBQ0QsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksYUFBYSxFQUFFLENBQUM7b0JBQ2xCLElBQUksYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO3dCQUMxQixhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUMvQixDQUFDO29CQUVELElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxDQUFDO3dCQUM3QixhQUFhLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUNsQyxDQUFDO29CQUVELElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUMzQixhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUNoQyxDQUFDO29CQUVELElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUMzQixhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO29CQUNoQyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUE7UUFFRixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxTQUFTLENBQUMsNkJBQTZCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7a0lBekRVLG1CQUFtQjtzSEFBbkIsbUJBQW1CLDJNQ1ZoQywwSkFJb0I7OzRGRE1QLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxnQkFBZ0I7Z0ZBS2pCLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJR3JpZFVwZGF0ZSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9ncmlkLm1vZGVsJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLWdyaWQtdXBkYXRlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtdXBkYXRlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC11cGRhdGUuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRVcGRhdGVDb21wb25lbnQge1xuICBASW5wdXQoKSB1cGRhdGVHcmlkQ29sdW1uczogSUdyaWRVcGRhdGVbXTtcbiAgQElucHV0KCkgZ3JpZENvbHVtbnM6IGFueVtdO1xuICBASW5wdXQoKSBncmlkUmVjb3JkOiBhbnlbXTtcbiAgQE91dHB1dCgpIHVwZGF0ZVJlY29yZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGdyaWRTZXJ2aWNlOiBHcmlkU2VydmljZVxuICApIHsgfVxuICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxuXG4gIHVwZGF0ZUdyaWRSZWNvcmRWYWx1ZShncmlkVXBkYXRlZDogSUdyaWRVcGRhdGUpIHtcbiAgICBsZXQgY29sdW1uQ2hhbmdlZDtcbiAgICBpZiAodGhpcy5ncmlkQ29sdW1ucyAmJiB0aGlzLmdyaWRDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb2x1bW5DaGFuZ2VkID0gdGhpcy5ncmlkQ29sdW1ucy5maW5kKChjb2x1bW4pPT4gY29sdW1uLmZpZWxkLnRvTG93ZXJDYXNlKCkgPT0gZ3JpZFVwZGF0ZWQ/LmZpZWxkLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZyhcImNvbHVtbiBjaGFuZ2VkXCIsIGNvbHVtbkNoYW5nZWQpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdncmlkVVBkYXRlZCcsIGdyaWRVcGRhdGVkKTtcbiAgICAvLyBjb25zb2xlLmxvZygndGhpcy5yb3dzJywgdGhpcy5ncmlkUmVjb3JkKTtcbiAgICAvLyBjb25zb2xlLmxvZygnY29sdW1ucycsIHRoaXMuZ3JpZENvbHVtbnMpXG4gICAgdGhpcy5ncmlkUmVjb3JkPy5mb3JFYWNoKChyZWNvcmQpID0+IHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVjb3JkKTtcbiAgICAgIGNvbnN0IGtleSA9IChrZXlzPy5maW5kKChrZXkpID0+IGtleT8udG9Mb3dlckNhc2UoKSA9PT0gZ3JpZFVwZGF0ZWQ/LmZpZWxkPy50b0xvd2VyQ2FzZSgpKSB8fCBjb2x1bW5DaGFuZ2VkLmZpZWxkKVxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBncmlkVXBkYXRlZD8udmFsdWUgPT09ICdvYmplY3QnICYmIGdyaWRVcGRhdGVkPy52YWx1ZT8udmFsdWUgIT09IHVuZGVmaW5lZFxuICAgICAgICAgID8gZ3JpZFVwZGF0ZWQudmFsdWUudmFsdWVcbiAgICAgICAgICA6IGdyaWRVcGRhdGVkPy52YWx1ZTtcbiAgICAgICAgcmVjb3JkW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKGdyaWRVcGRhdGVkPy5kaXNwbGF5RmllbGQgJiYgZ3JpZFVwZGF0ZWQ/LnZhbHVlVHdvPy50ZXh0KSB7XG4gICAgICAgICAgY29uc3QgZGlzcGxheUtleSA9IGtleXM/LmZpbmQoKGspID0+IGs/LnRvTG93ZXJDYXNlKCkgPT09IGdyaWRVcGRhdGVkPy5kaXNwbGF5RmllbGQ/LnRvTG93ZXJDYXNlKCkpIHx8IGdyaWRVcGRhdGVkLmRpc3BsYXlGaWVsZDtcbiAgICAgICAgICByZWNvcmRbZGlzcGxheUtleV0gPSBncmlkVXBkYXRlZC52YWx1ZVR3by50ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJlY29yZC5faXNFZGl0ZWQgPSB0cnVlO1xuICAgICAgICBpZiAoY29sdW1uQ2hhbmdlZCkge1xuICAgICAgICAgIGlmIChjb2x1bW5DaGFuZ2VkLm9uQ2xpY2spIHtcbiAgICAgICAgICAgIGNvbHVtbkNoYW5nZWQub25DbGljayhyZWNvcmQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvbHVtbkNoYW5nZWQub25Gb2N1c091dCkge1xuICAgICAgICAgICAgY29sdW1uQ2hhbmdlZC5vbkZvY3VzT3V0KHJlY29yZClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoY29sdW1uQ2hhbmdlZC5vbkNoYW5nZSkge1xuICAgICAgICAgICAgY29sdW1uQ2hhbmdlZC5vbkNoYW5nZShyZWNvcmQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvbHVtbkNoYW5nZWQub25SZXR1cm4pIHtcbiAgICAgICAgICAgIGNvbHVtbkNoYW5nZWQub25SZXR1cm4ocmVjb3JkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAodGhpcy51cGRhdGVSZWNvcmQ/Lm9ic2VydmVycz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnVwZGF0ZVJlY29yZC5lbWl0KHRoaXMuZ3JpZFJlY29yZCk7XG4gICAgICAgdXRpbGl0aWVzLm9uR2xvYmFsRmlsdGVyQ29udHJvbFJpZ2h0QnRuKFtdKTtcbiAgICB9XG4gIH1cblxufVxuIiwiPHNlLWdsb2JhbC1maWx0ZXJzXG5bZ2xvYmFsRmlsdGVyc109XCJ1cGRhdGVHcmlkQ29sdW1uc1wiXG4odXBkYXRlVmFsdWUpPVwidXBkYXRlR3JpZFJlY29yZFZhbHVlKCRldmVudClcIlxuW2dyaWRVcGRhdGVdPVwidHJ1ZVwiPlxuPC9zZS1nbG9iYWwtZmlsdGVycz4iXX0=
|
|
@@ -16254,7 +16254,10 @@ class GridUpdateComponent {
|
|
|
16254
16254
|
var keys = Object.keys(record);
|
|
16255
16255
|
const key = (keys?.find((key) => key?.toLowerCase() === gridUpdated?.field?.toLowerCase()) || columnChanged.field);
|
|
16256
16256
|
if (key) {
|
|
16257
|
-
|
|
16257
|
+
const value = typeof gridUpdated?.value === 'object' && gridUpdated?.value?.value !== undefined
|
|
16258
|
+
? gridUpdated.value.value
|
|
16259
|
+
: gridUpdated?.value;
|
|
16260
|
+
record[key] = value;
|
|
16258
16261
|
if (gridUpdated?.displayField && gridUpdated?.valueTwo?.text) {
|
|
16259
16262
|
const displayKey = keys?.find((k) => k?.toLowerCase() === gridUpdated?.displayField?.toLowerCase()) || gridUpdated.displayField;
|
|
16260
16263
|
record[displayKey] = gridUpdated.valueTwo.text;
|