basesite-shared-grid-lib 21.0.1-beta.1 → 21.0.1-beta.2
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/basesite-shared-grid-lib-21.0.1-beta.2.tgz +0 -0
- package/fesm2022/basesite-shared-grid-lib.mjs +82 -19
- package/fesm2022/basesite-shared-grid-lib.mjs.map +1 -1
- package/package.json +1 -1
- package/types/basesite-shared-grid-lib.d.ts +3 -0
- package/basesite-shared-grid-lib-21.0.1-beta.1.tgz +0 -0
|
Binary file
|
|
@@ -2357,6 +2357,7 @@ class GridLibraryComponent {
|
|
|
2357
2357
|
};
|
|
2358
2358
|
}
|
|
2359
2359
|
else if (res.columnType === 'fill') {
|
|
2360
|
+
const valueLabelMap = this._buildFillValueLabelMap(res);
|
|
2360
2361
|
return {
|
|
2361
2362
|
width: 120,
|
|
2362
2363
|
pinned: res.pinPosition,
|
|
@@ -2373,25 +2374,21 @@ class GridLibraryComponent {
|
|
|
2373
2374
|
field: res.field,
|
|
2374
2375
|
},
|
|
2375
2376
|
filterable: res.filterable,
|
|
2376
|
-
filter: '
|
|
2377
|
+
filter: 'agSetColumnFilter',
|
|
2377
2378
|
filterParams: {
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2381
|
-
|
|
2382
|
-
}
|
|
2383
|
-
if (res.columnType == 'date') {
|
|
2384
|
-
const cellDate = new Date(dateAsString);
|
|
2385
|
-
if (cellDate < filterLocalDateAtMidnight) {
|
|
2386
|
-
return -1;
|
|
2387
|
-
}
|
|
2388
|
-
else if (cellDate > filterLocalDateAtMidnight) {
|
|
2389
|
-
return 1;
|
|
2390
|
-
}
|
|
2391
|
-
}
|
|
2392
|
-
return 0;
|
|
2393
|
-
},
|
|
2379
|
+
// Provide the raw values from the backend config; OData provider
|
|
2380
|
+
// handles case-insensitive matching server-side via tolower().
|
|
2381
|
+
values: (params) => this._getFillFilterValues(res, params),
|
|
2382
|
+
refreshValuesOnOpen: true,
|
|
2394
2383
|
buttons: ['reset'],
|
|
2384
|
+
// Pretty label for each checkbox; falls back to the value itself
|
|
2385
|
+
valueFormatter: (p) => {
|
|
2386
|
+
if (p?.value == null || p.value === '')
|
|
2387
|
+
return p?.value;
|
|
2388
|
+
return valueLabelMap?.get(String(p.value)) ?? p.value;
|
|
2389
|
+
},
|
|
2390
|
+
// Case-insensitive search within the dropdown's filter box
|
|
2391
|
+
textFormatter: (v) => v == null ? '' : String(v).trim().toLowerCase(),
|
|
2395
2392
|
},
|
|
2396
2393
|
};
|
|
2397
2394
|
}
|
|
@@ -2493,6 +2490,71 @@ class GridLibraryComponent {
|
|
|
2493
2490
|
}
|
|
2494
2491
|
});
|
|
2495
2492
|
}
|
|
2493
|
+
_getFillFilterValues(res, params) {
|
|
2494
|
+
const configured = res?.filterValues;
|
|
2495
|
+
if (Array.isArray(configured) && configured.length > 0) {
|
|
2496
|
+
const values = configured
|
|
2497
|
+
.map((v) => (v && typeof v === 'object' ? (v.value ?? v.name ?? v.label) : v))
|
|
2498
|
+
.filter((v) => v !== null && v !== undefined && v !== '');
|
|
2499
|
+
params.success(values);
|
|
2500
|
+
return;
|
|
2501
|
+
}
|
|
2502
|
+
// Backend may provide allowed values as a comma-separated string in `fieldValue`
|
|
2503
|
+
const fieldValue = res?.fieldValue;
|
|
2504
|
+
if (typeof fieldValue === 'string' && fieldValue.trim() !== '') {
|
|
2505
|
+
const values = fieldValue
|
|
2506
|
+
.split(',')
|
|
2507
|
+
.map((v) => v.trim())
|
|
2508
|
+
.filter((v) => v !== '');
|
|
2509
|
+
if (values.length > 0) {
|
|
2510
|
+
params.success(values);
|
|
2511
|
+
return;
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2514
|
+
if (Array.isArray(fieldValue) && fieldValue.length > 0) {
|
|
2515
|
+
const values = fieldValue
|
|
2516
|
+
.map((v) => (v && typeof v === 'object' ? (v.value ?? v.name ?? v.label) : v))
|
|
2517
|
+
.filter((v) => v !== null && v !== undefined && v !== '');
|
|
2518
|
+
if (values.length > 0) {
|
|
2519
|
+
params.success(values);
|
|
2520
|
+
return;
|
|
2521
|
+
}
|
|
2522
|
+
}
|
|
2523
|
+
const field = res?.field;
|
|
2524
|
+
if (this.enableServerSidePaging && this.odataProvider) {
|
|
2525
|
+
this.odataProvider.getFilterValuesParams(field, (data) => params.success((data || []).filter(v => v !== null && v !== undefined && v !== '')), undefined);
|
|
2526
|
+
return;
|
|
2527
|
+
}
|
|
2528
|
+
const source = Array.isArray(this.rowData) ? this.rowData : [];
|
|
2529
|
+
const unique = Array.from(new Set(source
|
|
2530
|
+
.map(row => row?.[field])
|
|
2531
|
+
.filter(v => v !== null && v !== undefined && v !== '')));
|
|
2532
|
+
params.success(unique);
|
|
2533
|
+
}
|
|
2534
|
+
_buildFillValueLabelMap(res) {
|
|
2535
|
+
const map = new Map();
|
|
2536
|
+
const source = res?.filterValues ?? res?.fieldValue;
|
|
2537
|
+
const addObject = (obj) => {
|
|
2538
|
+
const value = obj?.value ?? obj?.key ?? obj?.id ?? obj?.name ?? obj?.label;
|
|
2539
|
+
const label = obj?.label ?? obj?.name ?? value;
|
|
2540
|
+
if (value !== null && value !== undefined && value !== '') {
|
|
2541
|
+
map.set(String(value), String(label));
|
|
2542
|
+
}
|
|
2543
|
+
};
|
|
2544
|
+
if (Array.isArray(source)) {
|
|
2545
|
+
source.forEach((entry) => {
|
|
2546
|
+
if (entry && typeof entry === 'object')
|
|
2547
|
+
addObject(entry);
|
|
2548
|
+
else if (entry !== null && entry !== undefined && entry !== '') {
|
|
2549
|
+
map.set(String(entry), String(entry));
|
|
2550
|
+
}
|
|
2551
|
+
});
|
|
2552
|
+
}
|
|
2553
|
+
else if (typeof source === 'string' && source.trim() !== '') {
|
|
2554
|
+
source.split(',').map(s => s.trim()).filter(Boolean).forEach(v => map.set(v, v));
|
|
2555
|
+
}
|
|
2556
|
+
return map;
|
|
2557
|
+
}
|
|
2496
2558
|
canCreateDac(roles, field) {
|
|
2497
2559
|
if (roles?.length > 0 && field === 'createDac') {
|
|
2498
2560
|
const isAEGroup = this.userRoles.some((role) => role?.toLowerCase().includes('ae'));
|
|
@@ -2552,7 +2614,7 @@ class GridLibraryComponent {
|
|
|
2552
2614
|
// Add timeout to prevent infinite loading
|
|
2553
2615
|
const API_TIMEOUT = 800000; //80 seconds
|
|
2554
2616
|
let hasRetried = false;
|
|
2555
|
-
|
|
2617
|
+
this.odataProvider = new OdataServerSideProvider({
|
|
2556
2618
|
isCaseSensitiveStringFilter: false,
|
|
2557
2619
|
callApi: (options) => {
|
|
2558
2620
|
const url = this.setExternalFilters(options);
|
|
@@ -2617,7 +2679,8 @@ class GridLibraryComponent {
|
|
|
2617
2679
|
this.gridAPI.hideOverlay();
|
|
2618
2680
|
this.gridAPI.showNoRowsOverlay();
|
|
2619
2681
|
}
|
|
2620
|
-
})
|
|
2682
|
+
});
|
|
2683
|
+
params.api.setServerSideDatasource(this.odataProvider);
|
|
2621
2684
|
this.gridReady.emit(params);
|
|
2622
2685
|
}
|
|
2623
2686
|
// Apply initial filter highlighting with retry mechanism
|