impact-ui 3.7.32-alpha.1 → 3.7.32-alpha.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "impact-ui",
3
- "version": "3.7.32-alpha.1",
3
+ "version": "3.7.32-alpha.2",
4
4
  "description": "Impact Analytics UI library",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -92,6 +92,14 @@ export const OldTable = forwardRef(
92
92
  closeTableSettingOnOutsideClick = false,
93
93
  onTableSettingClick = () => {},
94
94
  deleteViewPromptText,
95
+ saveViewCustomFilter = {
96
+ options: [
97
+ { label: "Global", value: "global" },
98
+ { label: "Personal", value: "personal" },
99
+ ],
100
+ selectedOption: "global",
101
+ },
102
+ customRenderSaveViewContent = null,
95
103
  enableHeaderTextWrap = true,
96
104
  numericFormatDefault = "full_no",
97
105
  defaultFontSize = "medium",
@@ -526,6 +534,8 @@ export const OldTable = forwardRef(
526
534
  closeTableSettingOnOutsideClick={closeTableSettingOnOutsideClick}
527
535
  onTableSettingClick={onTableSettingClick}
528
536
  deleteViewPromptText={deleteViewPromptText}
537
+ saveViewCustomFilter={saveViewCustomFilter}
538
+ customRenderSaveViewContent={customRenderSaveViewContent}
529
539
  numericFormatDefault={numericFormatDefault}
530
540
  />
531
541
  <BulkActionBar
@@ -256,7 +256,9 @@ export const Columns = forwardRef((props, ref) => {
256
256
  const [collapsedFrozenColumns, setCollapsedFrozenColumns] = useState({});
257
257
  const [openSaveViewModal, setOpenSaveViewModal] = useState(false);
258
258
  const [isDefaultView, setIsDefaultView] = useState(false);
259
- const [selectedViewType, setSelectedViewType] = useState("global");
259
+ const [selectedViewType, setSelectedViewType] = useState(
260
+ props?.saveViewCustomFilter?.selectedOption
261
+ );
260
262
  const [savedViewsOptions, setSavedViewsOptions] = useState(
261
263
  props?.savedViewsOptions || []
262
264
  );
@@ -282,12 +284,13 @@ export const Columns = forwardRef((props, ref) => {
282
284
  const options = views.map((view) => ({
283
285
  label: view.viewName,
284
286
  value: view.viewName,
285
- isDisabled: view?.isDisabled,
287
+ disabled: view?.isDisabled,
286
288
  }));
287
289
 
288
290
  setCurrentSaveViewOptions(options);
289
291
  setSavedViewsOptions(views);
290
292
  setFilteredSavedViewsOptions(views);
293
+ setSelectedView(views.filter((view) => view.isActive));
291
294
 
292
295
  if (views.length === 0) {
293
296
  setOpenSaveViewMenu(false);
@@ -1190,7 +1193,7 @@ export const Columns = forwardRef((props, ref) => {
1190
1193
  setEditedView(null);
1191
1194
  setOpenSaveViewModal(false);
1192
1195
  setInputValue("");
1193
- setSelectedViewType("global");
1196
+ setSelectedViewType(props?.saveViewCustomFilter?.selectedOption);
1194
1197
  setIsDefaultView(false);
1195
1198
  }
1196
1199
  return;
@@ -1217,7 +1220,7 @@ export const Columns = forwardRef((props, ref) => {
1217
1220
  setOpenSaveViewModal(false);
1218
1221
  setSelectedSavedView(null);
1219
1222
  setInputValue("");
1220
- setSelectedViewType("global");
1223
+ setSelectedViewType(props?.saveViewCustomFilter?.selectedOption);
1221
1224
  setIsDefaultView(false);
1222
1225
  setOpenDeletePrompt(false);
1223
1226
  setDeleteView(null);
@@ -1240,8 +1243,9 @@ export const Columns = forwardRef((props, ref) => {
1240
1243
  setOpenSaveViewModal(false);
1241
1244
  setSelectedSavedView(null);
1242
1245
  setInputValue("");
1243
- setSelectedViewType("global");
1246
+ setSelectedViewType(props?.saveViewCustomFilter?.selectedOption);
1244
1247
  setIsDefaultView(false);
1248
+ setIsEditView(false);
1245
1249
  };
1246
1250
 
1247
1251
  const handleSaveViewSearchChange = (e) => {
@@ -1265,6 +1269,16 @@ export const Columns = forwardRef((props, ref) => {
1265
1269
  }
1266
1270
  }, [props?.isDeleteViewLoading]);
1267
1271
 
1272
+ useEffect(() => {
1273
+ if (selectedBadge === "All") {
1274
+ setFilteredSavedViewsOptions([...savedViewsOptions]);
1275
+ } else {
1276
+ setFilteredSavedViewsOptions(
1277
+ savedViewsOptions.filter((view) => view.viewType === selectedBadge)
1278
+ );
1279
+ }
1280
+ }, [selectedBadge, savedViewsOptions]);
1281
+
1268
1282
  const handleSaveViewClick = (view) => {
1269
1283
  setFilteredSavedViewsOptions((prev) =>
1270
1284
  prev.map((item) => {
@@ -1312,7 +1326,10 @@ export const Columns = forwardRef((props, ref) => {
1312
1326
  }
1313
1327
  variant="tertiary"
1314
1328
  size="small"
1315
- onClick={() => setOpenSaveViewMenu(!openSaveViewMenu)}
1329
+ onClick={() => {
1330
+ setOpenSaveViewMenu(!openSaveViewMenu);
1331
+ setFilteredSavedViewsOptions([...savedViewsOptions]);
1332
+ }}
1316
1333
  />
1317
1334
  </div>
1318
1335
  )}
@@ -1345,32 +1362,23 @@ export const Columns = forwardRef((props, ref) => {
1345
1362
  }}
1346
1363
  size="small"
1347
1364
  />
1348
- <Badge
1349
- label={"Global"}
1350
- variant="stroke"
1351
- color={selectedBadge === "Global" ? "info" : "default"}
1352
- onClick={() => {
1353
- setSelectedBadge("Global");
1354
- setFilteredSavedViewsOptions(
1355
- savedViewsOptions.filter((view) => view.viewType === "global")
1356
- );
1357
- }}
1358
- size="small"
1359
- />
1360
- <Badge
1361
- label={"Personal"}
1362
- variant="stroke"
1363
- color={selectedBadge === "Personal" ? "info" : "default"}
1364
- onClick={() => {
1365
- setSelectedBadge("Personal");
1366
- setFilteredSavedViewsOptions(
1367
- savedViewsOptions.filter(
1368
- (view) => view.viewType === "personal"
1369
- )
1370
- );
1371
- }}
1372
- size="small"
1373
- />
1365
+ {props?.saveViewCustomFilter?.options?.map((option) => (
1366
+ <Badge
1367
+ key={option.value}
1368
+ label={option.label}
1369
+ variant="stroke"
1370
+ color={selectedBadge === option.value ? "info" : "default"}
1371
+ onClick={() => {
1372
+ setSelectedBadge(option.value);
1373
+ setFilteredSavedViewsOptions(
1374
+ savedViewsOptions.filter(
1375
+ (view) => view.viewType === option.value
1376
+ )
1377
+ );
1378
+ }}
1379
+ size="small"
1380
+ />
1381
+ ))}
1374
1382
  </div>
1375
1383
  <div className="save-view-menu-search-container">
1376
1384
  <Input
@@ -1381,88 +1389,96 @@ export const Columns = forwardRef((props, ref) => {
1381
1389
  />
1382
1390
  </div>
1383
1391
  <div className="save-view-menu-view-list-container">
1384
- {filteredSavedViewsOptions.length > 0 &&
1385
- filteredSavedViewsOptions.map((view, idx) => (
1386
- <div
1387
- key={view.viewName + idx}
1388
- className={`save-view-menu-view-list-item ${
1389
- view.isActive ? "active" : ""
1390
- }`}
1391
- onClick={() => handleSaveViewClick(view)}
1392
- tabIndex={idx === 0 ? 0 : -1}
1393
- role="button"
1394
- aria-label={`Saved view ${view.viewName}`}
1395
- onKeyDown={(e) => {
1396
- const current = e.currentTarget;
1397
- switch (e.key) {
1398
- case "Enter":
1399
- e.preventDefault();
1400
- handleSaveViewClick(view);
1401
- break;
1402
- case "ArrowDown": {
1403
- e.preventDefault();
1404
- const next = current.nextElementSibling;
1405
- if (next) {
1406
- next.focus();
1392
+ {props?.customRenderSaveViewContent
1393
+ ? props?.customRenderSaveViewContent
1394
+ : filteredSavedViewsOptions.length > 0 &&
1395
+ filteredSavedViewsOptions.map((view, idx) => (
1396
+ <div
1397
+ key={view.viewName + idx}
1398
+ className={`save-view-menu-view-list-item ${
1399
+ view.isActive ? "active" : ""
1400
+ }`}
1401
+ onClick={() => handleSaveViewClick(view)}
1402
+ tabIndex={idx === 0 ? 0 : -1}
1403
+ role="button"
1404
+ aria-label={`Saved view ${view.viewName}`}
1405
+ onKeyDown={(e) => {
1406
+ const current = e.currentTarget;
1407
+
1408
+ switch (e.key) {
1409
+ case "Enter":
1410
+ case " ":
1411
+ e.preventDefault();
1412
+ handleSaveViewClick(view);
1413
+ break;
1414
+
1415
+ case "ArrowDown": {
1416
+ e.preventDefault();
1417
+ const next = current.nextElementSibling;
1418
+ if (next) {
1419
+ next.focus();
1420
+ }
1421
+ break;
1407
1422
  }
1408
- break;
1409
- }
1410
- case "ArrowUp": {
1411
- e.preventDefault();
1412
- const prev = current.previousElementSibling;
1413
- if (prev) {
1414
- prev.focus();
1423
+
1424
+ case "ArrowUp": {
1425
+ e.preventDefault();
1426
+ const prev = current.previousElementSibling;
1427
+ if (prev) {
1428
+ prev.focus();
1429
+ }
1430
+ break;
1415
1431
  }
1416
- break;
1432
+
1433
+ default:
1434
+ break;
1417
1435
  }
1418
- default:
1419
- break;
1420
- }
1421
- }}
1422
- >
1423
- <span className="save-view-menu-view-list-item-name">
1424
- {view.viewName}
1425
- </span>
1426
- <div className="save-view-menu-view-list-item-actions">
1427
- {view?.isEditable && (
1428
- <img
1429
- src={saveViewEditIcon}
1430
- alt="save-view-edit-icon"
1431
- onClick={(e) => handleEditView(view, e)}
1432
- />
1433
- )}
1434
- {view?.isDeletable && (
1435
- <img
1436
- src={saveViewDeleteIcon}
1437
- alt="save-view-delete-icon"
1438
- onClick={(e) => handleDeleteView(view, e)}
1439
- />
1440
- )}
1441
- {view.isDefaultView ? (
1442
- <img
1443
- src={defaultViewActiveIcon}
1444
- alt="default-view-icon"
1445
- onClick={(e) => {
1446
- e.stopPropagation();
1447
- e.preventDefault();
1448
- props?.handleSetDefaultView(view);
1449
- }}
1450
- className="default-view-active-icon"
1451
- />
1452
- ) : (
1453
- <img
1454
- src={defaultViewIcon}
1455
- alt="default-view-icon"
1456
- onClick={(e) => {
1457
- e.stopPropagation();
1458
- e.preventDefault();
1459
- props?.handleSetDefaultView(view);
1460
- }}
1461
- />
1462
- )}
1436
+ }}
1437
+ >
1438
+ <span className="save-view-menu-view-list-item-name">
1439
+ {view.viewName}
1440
+ </span>
1441
+ <div className="save-view-menu-view-list-item-actions">
1442
+ {view?.isEditable && (
1443
+ <img
1444
+ src={saveViewEditIcon}
1445
+ alt="save-view-edit-icon"
1446
+ onClick={(e) => handleEditView(view, e)}
1447
+ />
1448
+ )}
1449
+ {view?.isDeletable && (
1450
+ <img
1451
+ src={saveViewDeleteIcon}
1452
+ alt="save-view-delete-icon"
1453
+ onClick={(e) => handleDeleteView(view, e)}
1454
+ />
1455
+ )}
1456
+ {!view?.notReqDefaultView &&
1457
+ (view?.isDefaultView ? (
1458
+ <img
1459
+ src={defaultViewActiveIcon}
1460
+ alt="default-view-icon"
1461
+ onClick={(e) => {
1462
+ e.stopPropagation();
1463
+ e.preventDefault();
1464
+ props?.handleSetDefaultView(view);
1465
+ }}
1466
+ className="default-view-active-icon"
1467
+ />
1468
+ ) : (
1469
+ <img
1470
+ src={defaultViewIcon}
1471
+ alt="default-view-icon"
1472
+ onClick={(e) => {
1473
+ e.stopPropagation();
1474
+ e.preventDefault();
1475
+ props?.handleSetDefaultView(view);
1476
+ }}
1477
+ />
1478
+ ))}
1479
+ </div>
1463
1480
  </div>
1464
- </div>
1465
- ))}
1481
+ ))}
1466
1482
  </div>
1467
1483
  <hr className="save-view-menu-view-list-item-divider" />
1468
1484
  <div className="save-view-menu-footer">
@@ -1484,12 +1500,14 @@ export const Columns = forwardRef((props, ref) => {
1484
1500
  updateColumnState();
1485
1501
  setOpenSaveViewMenu(false);
1486
1502
  }}
1503
+ disabled={props?.customRenderSaveViewContent}
1487
1504
  >
1488
1505
  Apply
1489
1506
  </Button>
1490
1507
  </div>
1491
1508
  </div>
1492
1509
  )}
1510
+ {console.log("isSavingViewLoading", props?.isSavingViewLoading)}
1493
1511
  <Modal
1494
1512
  open={openSaveViewModal}
1495
1513
  title={isEditView ? "Edit view" : "Save view"}
@@ -1550,11 +1568,10 @@ export const Columns = forwardRef((props, ref) => {
1550
1568
  View type
1551
1569
  </span>
1552
1570
  <RadioButtonGroup
1553
- options={[
1554
- { label: "Global", value: "global" },
1555
- { label: "Personal", value: "personal" },
1556
- ]}
1557
- onChange={(event) => setSelectedViewType(event.target.value)}
1571
+ options={props?.saveViewCustomFilter?.options?.filter(
1572
+ (option) => !option?.notReqInSaveView
1573
+ )}
1574
+ onChange={(event) => setSelectedViewType(event?.target?.value)}
1558
1575
  orientation={"row"}
1559
1576
  selectedOption={selectedViewType}
1560
1577
  />
@@ -1579,7 +1596,11 @@ export const Columns = forwardRef((props, ref) => {
1579
1596
  selectedOptions={selectedSavedView}
1580
1597
  setSelectedOptions={setSelectedSavedView}
1581
1598
  withPortal
1582
- isDisabled={savedViewsOptions.length === 0 || inputValue !== ""}
1599
+ isDisabled={
1600
+ savedViewsOptions.length === 0 ||
1601
+ inputValue !== "" ||
1602
+ isEditView
1603
+ }
1583
1604
  isOpen={isOpen}
1584
1605
  setIsOpen={setIsOpen}
1585
1606
  initialOptions={currentSaveViewOptions}
@@ -1589,9 +1610,18 @@ export const Columns = forwardRef((props, ref) => {
1589
1610
  </div>
1590
1611
  </Modal>
1591
1612
  <Prompt
1592
- handleClose={() => setOpenDeletePrompt(false)}
1593
- onPrimaryButtonClick={() => props?.handleDeleteViewClick?.(deleteView)}
1594
- onSecondaryButtonClick={() => setOpenDeletePrompt(false)}
1613
+ handleClose={(e) => {
1614
+ e.stopPropagation();
1615
+ setOpenDeletePrompt(false);
1616
+ }}
1617
+ onPrimaryButtonClick={(e) => {
1618
+ e.stopPropagation();
1619
+ props?.handleDeleteViewClick?.(deleteView);
1620
+ }}
1621
+ onSecondaryButtonClick={(e) => {
1622
+ e.stopPropagation();
1623
+ setOpenDeletePrompt(false);
1624
+ }}
1595
1625
  primaryButtonLabel="Yes,Delete"
1596
1626
  secondaryButtonLabel="Cancel"
1597
1627
  title="Delete, Are you sure?"
@@ -41,13 +41,15 @@ export default function TableHeader({
41
41
  handleSavedViewClick,
42
42
  handleEditSaveView,
43
43
  isSaveViewEnabled,
44
- isSaveViewLoading,
44
+ isSavingViewLoading,
45
45
  handleDeleteViewClick,
46
46
  isDeleteViewLoading,
47
47
  handleSetDefaultView,
48
48
  closeTableSettingOnOutsideClick,
49
49
  onTableSettingClick,
50
50
  deleteViewPromptText,
51
+ saveViewCustomFilter,
52
+ customRenderSaveViewContent,
51
53
  numericFormatDefault,
52
54
  }) {
53
55
  // manages displaying table setting
@@ -238,12 +240,14 @@ export default function TableHeader({
238
240
  handleSavedViewClick={handleSavedViewClick}
239
241
  handleEditSaveView={handleEditSaveView}
240
242
  isSaveViewEnabled={isSaveViewEnabled}
241
- isSaveViewLoading={isSaveViewLoading}
243
+ isSavingViewLoading={isSavingViewLoading}
242
244
  handleDeleteViewClick={handleDeleteViewClick}
243
245
  isDeleteViewLoading={isDeleteViewLoading}
244
246
  handleSetDefaultView={handleSetDefaultView}
245
247
  onTableSettingClick={onTableSettingClick}
246
248
  deleteViewPromptText={deleteViewPromptText}
249
+ saveViewCustomFilter={saveViewCustomFilter}
250
+ customRenderSaveViewContent={customRenderSaveViewContent}
247
251
  numericFormatDefault={numericFormatDefault}
248
252
  />
249
253
  </div>