@procore/saved-views 5.1.0-alpha.4 → 5.1.0-alpha.6

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.
@@ -8467,17 +8467,18 @@ var src_exports = {};
8467
8467
  __export(src_exports, {
8468
8468
  DataTableSavedViews: () => DataTableSavedViews,
8469
8469
  ExpandedPanel: () => ExpandedPanel,
8470
+ FormModal: () => FormModal,
8470
8471
  PanelContent: () => PanelContent,
8471
8472
  SavedViewCollectionMenuItem: () => SavedViewCollectionMenuItem,
8473
+ SavedViews: () => SavedViews,
8472
8474
  SavedViewsDeleteConfirmationModalShared: () => SavedViewsDeleteConfirmationModalShared,
8473
- SavedViewsFormModal: () => SavedViewsFormModal,
8474
8475
  SmartGridSavedViews: () => SmartGridSavedViews,
8475
8476
  getTranslations: () => getTranslations,
8476
8477
  useSavedViewsPanel: () => useSavedViewsPanel_default
8477
8478
  });
8478
8479
  module.exports = __toCommonJS(src_exports);
8479
8480
 
8480
- // src/utils/Translations/translations.ts
8481
+ // src/utils/translations/translations.ts
8481
8482
  var import_globalization_toolkit = __toESM(require_dist());
8482
8483
 
8483
8484
  // src/locales/de-DE.json
@@ -8860,6 +8861,9 @@ var en_default = {
8860
8861
  update: {
8861
8862
  success: "The saved view was successfully updated."
8862
8863
  },
8864
+ create: {
8865
+ success: "The saved view was successfully created."
8866
+ },
8863
8867
  copy: {
8864
8868
  success: "The link was successfully created and copied to the clipboard."
8865
8869
  },
@@ -8868,7 +8872,8 @@ var en_default = {
8868
8872
  create: "Sorry, the saved view couldn't be created. Try again.",
8869
8873
  update: "Sorry, the saved view couldn't be updated. Try again.",
8870
8874
  delete: "Sorry, the saved view couldn't be deleted. Try again.",
8871
- copyFailed: "Failed to copy share link to clipboard"
8875
+ copyFailed: "Failed to copy share link to clipboard",
8876
+ notFound: "Sorry, the saved view could not be found. Please try again."
8872
8877
  },
8873
8878
  defaultViewTitle: {
8874
8879
  rfi: "All RFIs",
@@ -9273,6 +9278,84 @@ var is_IS_default = {
9273
9278
  }
9274
9279
  };
9275
9280
 
9281
+ // src/locales/it-IT.json
9282
+ var it_IT_default = {
9283
+ savedViews: {
9284
+ name: "Vista salvata",
9285
+ title: "Viste salvate",
9286
+ tooltip: "Creare e salvare qualsiasi layout di tabella personalizzato per tornare rapidamente alla vista preferita.",
9287
+ button: {
9288
+ title: "Viste"
9289
+ },
9290
+ actions: {
9291
+ update: "Aggiorna",
9292
+ delete: "Elimina",
9293
+ create: "Crea",
9294
+ edit: "Modifica",
9295
+ cancel: "Annulla",
9296
+ close: "Chiudi"
9297
+ },
9298
+ modal: {
9299
+ edit: {
9300
+ title: "Aggiorna vista salvata"
9301
+ },
9302
+ create: {
9303
+ title: "Crea vista salvata"
9304
+ },
9305
+ delete: {
9306
+ headline: "Elimina vista salvata",
9307
+ description: "Una volta eliminata, non sar\xE0 pi\xF9 possibile ripristinare la vista."
9308
+ },
9309
+ fields: {
9310
+ name: "Nome",
9311
+ description: "Descrizione",
9312
+ viewLevel: "Livello vista",
9313
+ viewLevels: {
9314
+ company: "Vista dell'azienda",
9315
+ project: "Vista del progetto",
9316
+ personal: "Vista personale"
9317
+ }
9318
+ },
9319
+ errors: {
9320
+ maxLengthName: "Non pu\xF2 contenere pi\xF9 di {{maxLength}} caratteri.",
9321
+ required: "Il campo non pu\xF2 essere vuoto.",
9322
+ duplicateName: "Esiste gi\xE0 una vista salvata con questo nome. Rinominarla e riprovare.",
9323
+ unknown: "Si \xE8 verificato un errore. Riprovare.",
9324
+ title: "Impossibile {{mode}} questa vista salvata",
9325
+ description: {
9326
+ create: "Correggere gli errori di seguito e provare a creare di nuovo",
9327
+ update: "Correggere gli errori di seguito e provare ad aggiornare di nuovo"
9328
+ }
9329
+ },
9330
+ info: {
9331
+ required_fields: "campi obbligatori"
9332
+ }
9333
+ },
9334
+ ariaLabels: {
9335
+ menuItem: "Voce di menu Viste salvate {{name}}",
9336
+ modal: "Finestra modale per creare/aggiornare viste salvate"
9337
+ },
9338
+ update: {
9339
+ success: "Vista salvata aggiornata correttamente."
9340
+ },
9341
+ errors: {
9342
+ fetch: "Impossibile recuperare le viste salvate. Riprovare.",
9343
+ create: "Impossibile creare la vista salvata. Riprovare.",
9344
+ update: "Impossibile aggiornare la vista salvata. Riprovare.",
9345
+ delete: "Impossibile eliminare la vista salvata. Riprovare."
9346
+ },
9347
+ defaultViewTitle: {
9348
+ rfi: "Tutte le RDI",
9349
+ submittal_log: "Tutti gli elementi da inoltrare"
9350
+ },
9351
+ viewLevel: {
9352
+ company: "Viste dell'azienda",
9353
+ project: "Viste del progetto",
9354
+ personal: "Viste personali"
9355
+ }
9356
+ }
9357
+ };
9358
+
9276
9359
  // src/locales/ja-JP.json
9277
9360
  var ja_JP_default = {
9278
9361
  savedViews: {
@@ -9663,8 +9746,8 @@ var zh_SG_default = {
9663
9746
  }
9664
9747
  };
9665
9748
 
9666
- // src/utils/Translations/translations.ts
9667
- var supportedLocales = {
9749
+ // src/locales/index.ts
9750
+ var locales_default = {
9668
9751
  "de-DE": de_DE_default,
9669
9752
  "en-AU": en_AU_default,
9670
9753
  "en-CA": en_CA_default,
@@ -9675,12 +9758,18 @@ var supportedLocales = {
9675
9758
  "fr-CA": fr_CA_default,
9676
9759
  "fr-FR": fr_FR_default,
9677
9760
  "is-IS": is_IS_default,
9761
+ "it-IT": it_IT_default,
9678
9762
  "ja-JP": ja_JP_default,
9763
+ "pl-PL": pl_PL_default,
9679
9764
  "pt-BR": pt_BR_default,
9680
9765
  "th-TH": th_TH_default,
9681
- "zh-SG": zh_SG_default,
9682
- "pl-PL": pl_PL_default,
9683
- pseudo: en_default
9766
+ "zh-SG": zh_SG_default
9767
+ };
9768
+
9769
+ // src/utils/translations/translations.ts
9770
+ var supportedLocales = {
9771
+ ...locales_default,
9772
+ pseudo: locales_default.en
9684
9773
  };
9685
9774
  function getTranslations(envLocale) {
9686
9775
  return Object.fromEntries(
@@ -9691,7 +9780,7 @@ function getTranslations(envLocale) {
9691
9780
  );
9692
9781
  }
9693
9782
 
9694
- // src/SavedViews/components/Buttons/useSavedViewsPanel.tsx
9783
+ // src/components/buttons/useSavedViewsPanel.tsx
9695
9784
  var import_react4 = require("react");
9696
9785
 
9697
9786
  // ../../node_modules/tslib/tslib.es6.mjs
@@ -9903,7 +9992,7 @@ var Plus = React11.forwardRef(function Plus2(props, ref) {
9903
9992
  Plus.displayName = "Plus";
9904
9993
  var Plus_default = Plus;
9905
9994
 
9906
- // src/SavedViews/components/Buttons/SavedViewsButton.tsx
9995
+ // src/components/buttons/SavedViewsButton.tsx
9907
9996
  var import_core_react2 = require("@procore/core-react");
9908
9997
  var import_react3 = __toESM(require("react"));
9909
9998
 
@@ -11118,7 +11207,7 @@ var Ue = function() {
11118
11207
  "production" !== process.env.NODE_ENV && "undefined" != typeof navigator && "ReactNative" === navigator.product && console.warn("It looks like you've imported 'styled-components' on React Native.\nPerhaps you're looking to import 'styled-components/native'?\nRead more about this at https://www.styled-components.com/docs/basics#react-native"), "production" !== process.env.NODE_ENV && "test" !== process.env.NODE_ENV && "undefined" != typeof window && (window["__styled-components-init__"] = window["__styled-components-init__"] || 0, 1 === window["__styled-components-init__"] && console.warn("It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\n\nSee https://s-c.sh/2BAXzed for more info."), window["__styled-components-init__"] += 1);
11119
11208
  var styled_components_esm_default = Ye;
11120
11209
 
11121
- // src/SavedViews/components/EnvironmentI18nProvider.tsx
11210
+ // src/components/EnvironmentI18nProvider.tsx
11122
11211
  var import_react2 = __toESM(require("react"));
11123
11212
  var import_core_react = require("@procore/core-react");
11124
11213
  var import_cdn_translations = require("@procore/cdn-translations");
@@ -11148,7 +11237,7 @@ var EnvironmentI18nProvider = ({ children }) => {
11148
11237
  return /* @__PURE__ */ import_react2.default.createElement(import_core_react.I18nContext.Provider, { value: i18n }, children);
11149
11238
  };
11150
11239
 
11151
- // src/SavedViews/components/Buttons/SavedViewsButton.tsx
11240
+ // src/components/buttons/SavedViewsButton.tsx
11152
11241
  var StyledButton = styled_components_esm_default(import_core_react2.Button)`
11153
11242
  background-color: hsl(218, 75%, 96%);
11154
11243
  color: hsl(218, 75%, 45%);
@@ -11184,7 +11273,7 @@ var SavedViewsButton = ({
11184
11273
  ));
11185
11274
  };
11186
11275
 
11187
- // src/SavedViews/components/Buttons/useSavedViewsPanel.tsx
11276
+ // src/components/buttons/useSavedViewsPanel.tsx
11188
11277
  var import_react5 = __toESM(require("react"));
11189
11278
  var useSavedViewsPanel = (domain, tableName) => {
11190
11279
  const key = (domain2, tableName2) => `savedViewsPanel-${domain2}-${tableName2}`;
@@ -11200,7 +11289,7 @@ var useSavedViewsPanel = (domain, tableName) => {
11200
11289
  };
11201
11290
  var useSavedViewsPanel_default = useSavedViewsPanel;
11202
11291
 
11203
- // src/SavedViews/components/MenuItems/SavedViewsCollectionsMenuItem.tsx
11292
+ // src/components/menu-items/SavedViewsCollectionsMenuItem.tsx
11204
11293
  var import_core_react3 = require("@procore/core-react");
11205
11294
  var React15 = __toESM(require("react"));
11206
11295
  var import_toast_alert = require("@procore/toast-alert");
@@ -11218,6 +11307,11 @@ var Container2 = styled_components_esm_default(import_core_react3.Flex)`
11218
11307
 
11219
11308
  ${({ "aria-selected": selected }) => selected ? "color: hsl(218, 75%, 45%);" : ""}
11220
11309
  `;
11310
+ var IconWrapper = styled_components_esm_default.span`
11311
+ display: flex;
11312
+ align-items: center;
11313
+ justify-content: center;
11314
+ `;
11221
11315
  var SavedViewCollectionMenuItem = (props) => {
11222
11316
  const onClick = React15.useCallback(
11223
11317
  (a2) => {
@@ -11286,7 +11380,7 @@ var SavedViewCollectionMenuItem = (props) => {
11286
11380
  },
11287
11381
  props.item.name
11288
11382
  ),
11289
- /* @__PURE__ */ React15.createElement(RowActionsBox, null, /* @__PURE__ */ React15.createElement(import_core_react3.Box, { justifyContent: "space-between" }, props.item.id !== "default" && props.canUpdate && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
11383
+ /* @__PURE__ */ React15.createElement(RowActionsBox, null, /* @__PURE__ */ React15.createElement(import_core_react3.Box, { justifyContent: "space-between" }, props.item.view_level !== "default" && props.canUpdate && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
11290
11384
  import_core_react3.Button,
11291
11385
  {
11292
11386
  onClick: updateItem,
@@ -11297,7 +11391,7 @@ var SavedViewCollectionMenuItem = (props) => {
11297
11391
  loading: props.isUpdateProcessing
11298
11392
  },
11299
11393
  i18n.t("savedViews.actions.update")
11300
- )), props.item.id !== "default" && props.selected && !props.canUpdate && props.item.id !== "temporary" && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
11394
+ )), props.item.view_level !== "default" && props.selected && !props.canUpdate && props.item.id !== "temporary" && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
11301
11395
  import_core_react3.Button,
11302
11396
  {
11303
11397
  onClick: copyShareLink,
@@ -11306,7 +11400,7 @@ var SavedViewCollectionMenuItem = (props) => {
11306
11400
  "aria-label": i18n.t("savedViews.actions.copyShareLink"),
11307
11401
  "data-testid": "copy-share-link-button"
11308
11402
  },
11309
- /* @__PURE__ */ React15.createElement(Link_default, { size: "sm" })
11403
+ /* @__PURE__ */ React15.createElement(IconWrapper, null, /* @__PURE__ */ React15.createElement(Link_default, { size: "sm" }))
11310
11404
  )), props.item.id === "temporary" && /* @__PURE__ */ React15.createElement("div", null, /* @__PURE__ */ React15.createElement(
11311
11405
  import_core_react3.Button,
11312
11406
  {
@@ -11321,8 +11415,8 @@ var SavedViewCollectionMenuItem = (props) => {
11321
11415
  title: i18n.t("savedViews.actions.clearTemporary"),
11322
11416
  "data-testid": "clear-temporary-view-button"
11323
11417
  },
11324
- /* @__PURE__ */ React15.createElement(Clear_default, { size: "sm" })
11325
- ))), /* @__PURE__ */ React15.createElement(import_core_react3.Box, null, props.item.id !== "default" && props.canEditOrDelete && /* @__PURE__ */ React15.createElement("div", { onClick: (e2) => e2.stopPropagation() }, /* @__PURE__ */ React15.createElement(
11418
+ /* @__PURE__ */ React15.createElement(IconWrapper, null, /* @__PURE__ */ React15.createElement(Clear_default, { size: "sm" }))
11419
+ ))), /* @__PURE__ */ React15.createElement(import_core_react3.Box, null, props.item.view_level !== "default" && props.canEditOrDelete && /* @__PURE__ */ React15.createElement("div", { onClick: (e2) => e2.stopPropagation() }, /* @__PURE__ */ React15.createElement(
11326
11420
  import_core_react3.DropdownFlyout,
11327
11421
  {
11328
11422
  "data-testid": "saved-view-overflow-button",
@@ -11337,7 +11431,7 @@ var SavedViewCollectionMenuItem = (props) => {
11337
11431
  );
11338
11432
  };
11339
11433
 
11340
- // src/SavedViews/components/Panels/ExpandedPanel.tsx
11434
+ // src/components/panels/ExpandedPanel.tsx
11341
11435
  var import_core_react4 = require("@procore/core-react");
11342
11436
  var ExpandedPanel = styled_components_esm_default(import_core_react4.Panel)`
11343
11437
  width: ${({ provider }) => provider === "data-table" ? "316px" : "100%"};
@@ -11345,8 +11439,8 @@ var ExpandedPanel = styled_components_esm_default(import_core_react4.Panel)`
11345
11439
  border-radius: 4px 0 0 4px;
11346
11440
  `;
11347
11441
 
11348
- // src/SavedViews/components/Panels/PanelContent.tsx
11349
- var import_core_react7 = require("@procore/core-react");
11442
+ // src/components/panels/PanelContent.tsx
11443
+ var import_core_react8 = require("@procore/core-react");
11350
11444
  var import_toast_alert2 = require("@procore/toast-alert");
11351
11445
  var import_react9 = __toESM(require("react"));
11352
11446
 
@@ -11392,10 +11486,10 @@ function requestJSON(url, requestParams = {}) {
11392
11486
  );
11393
11487
  }
11394
11488
 
11395
- // src/utils/Api/queries.ts
11489
+ // src/utils/api/queries.ts
11396
11490
  var import_react_query2 = require("@tanstack/react-query");
11397
11491
 
11398
- // src/utils/Api/queriesHandler.ts
11492
+ // src/utils/api/queriesHandler.ts
11399
11493
  var import_react_query = require("@tanstack/react-query");
11400
11494
  var import_core_react5 = require("@procore/core-react");
11401
11495
  var useApiRequest = (props, method, mutationKey) => {
@@ -11460,10 +11554,10 @@ var useApiRequest = (props, method, mutationKey) => {
11460
11554
  });
11461
11555
  };
11462
11556
 
11463
- // src/utils/Constants/viewLevels.ts
11557
+ // src/utils/constants/viewLevels.ts
11464
11558
  var VIEW_LEVELS = ["company", "project", "personal"];
11465
11559
 
11466
- // src/utils/Api/queries.ts
11560
+ // src/utils/api/queries.ts
11467
11561
  var PAGE_SIZE = 50 * VIEW_LEVELS.length;
11468
11562
  var useSavedViewsQuery = (props) => {
11469
11563
  const { projectId, companyId, domain, tableName } = props;
@@ -11516,24 +11610,23 @@ var useFetchSavedViewById = (savedViewToken, queryInput, enabled = true) => {
11516
11610
  });
11517
11611
  };
11518
11612
 
11519
- // src/SavedViews/components/Panels/PanelContentUtils.ts
11613
+ // src/components/panels/PanelContentUtils.ts
11520
11614
  var import_lodash = __toESM(require_lodash());
11521
11615
 
11522
- // src/SavedViews/components/SavedViews/SmartGrid/SmartGridUtils.ts
11616
+ // src/components/adapters/smart-grid/SmartGridUtils.ts
11523
11617
  function getSmartGridConfig(api) {
11524
- const columnStateResult = api.getColumnState();
11525
- const columnGroupStateResult = api.getColumnGroupState();
11526
- const rowGroupStateResult = api.getRowGroupColumns();
11527
- const rowHeightResult = api.getGridOption("rowHeight") || api.getSizesForCurrentTheme().rowHeight;
11528
- const serverFiltersResult = api.getFilterModel();
11529
- const smartGridConfig = {
11530
- columnState: columnStateResult,
11531
- rowHeight: rowHeightResult,
11532
- columnGroupState: columnGroupStateResult,
11533
- rowGroupState: rowGroupStateResult,
11534
- filterState: serverFiltersResult
11618
+ const columnState = api.getColumnState();
11619
+ const columnGroupState = api.getColumnGroupState();
11620
+ const rowGroupState = api.getRowGroupColumns().map((col) => col.getColId());
11621
+ const rowHeight = api.getGridOption("rowHeight") ?? api.getSizesForCurrentTheme().rowHeight;
11622
+ const filterState = api.getFilterModel();
11623
+ return {
11624
+ columnState,
11625
+ rowHeight,
11626
+ columnGroupState,
11627
+ rowGroupState,
11628
+ filterState
11535
11629
  };
11536
- return smartGridConfig;
11537
11630
  }
11538
11631
  function setSmartGridConfig(api, config) {
11539
11632
  api.applyColumnState({
@@ -11548,7 +11641,7 @@ function setSmartGridConfig(api, config) {
11548
11641
  }
11549
11642
  }
11550
11643
 
11551
- // src/SavedViews/components/SavedViews/SavedViewsUtils.ts
11644
+ // src/components/saved-views/SavedViewsUtils.ts
11552
11645
  var customAndConfigSync = (viewTableConfig, defaultTableConfig) => {
11553
11646
  if (!viewTableConfig && !defaultTableConfig)
11554
11647
  return void 0;
@@ -11607,7 +11700,7 @@ var updateTableConfig = (view, tableApi, provider) => {
11607
11700
  }
11608
11701
  };
11609
11702
 
11610
- // src/SavedViews/components/Panels/PanelContentUtils.ts
11703
+ // src/components/panels/PanelContentUtils.ts
11611
11704
  var getOrderedVisibleColumns = (columns, idKey) => {
11612
11705
  if (!columns)
11613
11706
  return [];
@@ -11702,7 +11795,7 @@ var hasPermissionForViewLevel = (viewLevel, permissions) => {
11702
11795
  }
11703
11796
  };
11704
11797
 
11705
- // src/SavedViews/components/Panels/useGroups.ts
11798
+ // src/components/panels/useGroups.ts
11706
11799
  var import_react6 = require("react");
11707
11800
  var useGroups = () => {
11708
11801
  const [groups, setGroups] = (0, import_react6.useState)(
@@ -11714,7 +11807,7 @@ var useGroups = () => {
11714
11807
  return { groups, toggleGroup };
11715
11808
  };
11716
11809
 
11717
- // src/SavedViews/components/Panels/ViewLevelHeader.tsx
11810
+ // src/components/panels/ViewLevelHeader.tsx
11718
11811
  var import_core_react6 = require("@procore/core-react");
11719
11812
  var import_react7 = __toESM(require("react"));
11720
11813
  var groupIcon = (group) => {
@@ -11751,7 +11844,7 @@ var ViewLevelHeader = ({ expanded, toggleGroup, group }) => {
11751
11844
  };
11752
11845
  var ViewLevelHeader_default = ViewLevelHeader;
11753
11846
 
11754
- // src/utils/Hooks/useScrollToRef.ts
11847
+ // src/utils/hooks/useScrollToRef.ts
11755
11848
  var import_react8 = require("react");
11756
11849
  var useScrollToRef = (dependency) => {
11757
11850
  const ref = (0, import_react8.useRef)(null);
@@ -11763,7 +11856,8 @@ var useScrollToRef = (dependency) => {
11763
11856
  return ref;
11764
11857
  };
11765
11858
 
11766
- // src/SavedViews/components/Panels/PanelContent.tsx
11859
+ // src/components/panels/PanelContent.styles.ts
11860
+ var import_core_react7 = require("@procore/core-react");
11767
11861
  var Row = styled_components_esm_default(import_core_react7.UNSAFE_Menu.Item)`
11768
11862
  width: 100%;
11769
11863
  padding-left: 35px;
@@ -11780,12 +11874,17 @@ var Panel2 = styled_components_esm_default(import_core_react7.DetailPage.Card)`
11780
11874
  padding-top: ${import_core_react7.spacing.sm}px;
11781
11875
  box-shadow: none;
11782
11876
  `;
11877
+
11878
+ // src/components/panels/PanelContent.tsx
11783
11879
  var PanelContent = (props) => {
11784
- var _a, _b, _c;
11880
+ const { queryInput, selectedSavedView, tableConfig } = props;
11785
11881
  const { showToast } = (0, import_toast_alert2.useToastAlertContext)();
11786
- const I18n = (0, import_core_react7.useI18nContext)();
11787
- const { mutate: updateSavedView, isPending: isUpdateLoading } = useUpdateSavedView(props.queryInput);
11788
- const { error: savedViewsError } = useSavedViewsQuery(props.queryInput);
11882
+ const I18n = (0, import_core_react8.useI18nContext)();
11883
+ const { data: savedViewsFromQuery, error: savedViewsError } = useSavedViewsQuery(props.queryInput);
11884
+ const updateMutation = useUpdateSavedView(queryInput);
11885
+ const { mutate: updateSavedView } = updateMutation;
11886
+ const isUpdateLoading = "isPending" in updateMutation ? updateMutation.isPending : updateMutation.isLoading ?? false;
11887
+ const savedViews = props.savedViews ?? savedViewsFromQuery;
11789
11888
  const errorToastRef = import_react9.default.useRef(null);
11790
11889
  import_react9.default.useEffect(() => {
11791
11890
  if (savedViewsError && savedViewsError !== errorToastRef.current) {
@@ -11794,12 +11893,16 @@ var PanelContent = (props) => {
11794
11893
  }
11795
11894
  }, [savedViewsError, showToast, I18n]);
11796
11895
  const { data: permissions } = useSavedViewsPermissions(props.queryInput);
11797
- const selectedRowRef = useScrollToRef(props.savedViews);
11896
+ const selectedRowRef = useScrollToRef(savedViews);
11897
+ const { groups, toggleGroup } = useGroups();
11898
+ const isTemporarySelected = (selectedSavedView == null ? void 0 : selectedSavedView.id) === "temporary";
11899
+ const temporaryView = savedViews == null ? void 0 : savedViews.find((view) => view.id === "temporary");
11900
+ const presetViews = props.presetViews || [props.defaultView];
11798
11901
  const onUpdate = (data) => {
11799
11902
  const newSavedView = {
11800
11903
  ...data,
11801
- ...props.selectedSavedView,
11802
- table_config: props.tableConfig
11904
+ ...selectedSavedView,
11905
+ table_config: tableConfig
11803
11906
  };
11804
11907
  updateSavedView(newSavedView, {
11805
11908
  onSuccess: () => {
@@ -11811,13 +11914,7 @@ var PanelContent = (props) => {
11811
11914
  }
11812
11915
  });
11813
11916
  };
11814
- const { groups, toggleGroup } = useGroups();
11815
- const isDefaultSelected = ((_a = props.selectedSavedView) == null ? void 0 : _a.id) === "default";
11816
- const isTemporarySelected = ((_b = props.selectedSavedView) == null ? void 0 : _b.id) === "temporary";
11817
- const temporaryView = (_c = props.savedViews) == null ? void 0 : _c.find(
11818
- (view) => view.id === "temporary"
11819
- );
11820
- return /* @__PURE__ */ import_react9.default.createElement(Panel2, { "data-testid": "inner-panel" }, /* @__PURE__ */ import_react9.default.createElement(import_core_react7.Flex, { direction: "column", style: { height: "100%", width: "100%" } }, temporaryView && /* @__PURE__ */ import_react9.default.createElement(
11917
+ return /* @__PURE__ */ import_react9.default.createElement(Panel2, { "data-testid": "inner-panel" }, /* @__PURE__ */ import_react9.default.createElement(import_core_react8.Flex, { direction: "column", style: { height: "100%", width: "100%" } }, temporaryView && /* @__PURE__ */ import_react9.default.createElement(
11821
11918
  Row,
11822
11919
  {
11823
11920
  selected: isTemporarySelected,
@@ -11832,23 +11929,27 @@ var PanelContent = (props) => {
11832
11929
  onClearTemporary: props.onClearTemporary
11833
11930
  }
11834
11931
  )
11835
- ), /* @__PURE__ */ import_react9.default.createElement(
11836
- Row,
11837
- {
11838
- selected: isDefaultSelected,
11839
- onClick: () => props.onSelect({ item: props.defaultView }),
11840
- ref: isDefaultSelected ? selectedRowRef : null
11841
- },
11842
- /* @__PURE__ */ import_react9.default.createElement(
11843
- SavedViewCollectionMenuItem,
11932
+ ), presetViews.map((presetView) => {
11933
+ const isSelected = (selectedSavedView == null ? void 0 : selectedSavedView.id) === presetView.id;
11934
+ return /* @__PURE__ */ import_react9.default.createElement(
11935
+ Row,
11844
11936
  {
11845
- item: props.defaultView,
11846
- selected: isDefaultSelected
11847
- }
11848
- )
11849
- ), VIEW_LEVELS.map((level) => {
11937
+ key: presetView.id,
11938
+ selected: isSelected,
11939
+ onClick: () => props.onSelect({ item: presetView }),
11940
+ ref: isSelected ? selectedRowRef : null
11941
+ },
11942
+ /* @__PURE__ */ import_react9.default.createElement(
11943
+ SavedViewCollectionMenuItem,
11944
+ {
11945
+ item: presetView,
11946
+ selected: isSelected
11947
+ }
11948
+ )
11949
+ );
11950
+ }), VIEW_LEVELS.map((level) => {
11850
11951
  const isExpanded = groups[level];
11851
- const views = isExpanded && props.savedViews ? props.savedViews.filter(
11952
+ const views = isExpanded && savedViews ? savedViews.filter(
11852
11953
  (view) => view.view_level === level && view.id !== "temporary"
11853
11954
  ) : [];
11854
11955
  return /* @__PURE__ */ import_react9.default.createElement(import_react9.default.Fragment, { key: level }, /* @__PURE__ */ import_react9.default.createElement(
@@ -11859,11 +11960,10 @@ var PanelContent = (props) => {
11859
11960
  expanded: isExpanded
11860
11961
  }
11861
11962
  ), views.map((view) => {
11862
- var _a2;
11863
- const isSelected = ((_a2 = props.selectedSavedView) == null ? void 0 : _a2.id) === view.id;
11963
+ const isSelected = (selectedSavedView == null ? void 0 : selectedSavedView.id) === view.id;
11864
11964
  const canUpdate = isSelected && hasPermissionForViewLevel(view.view_level, permissions) && !isEqual(
11865
11965
  view.table_config,
11866
- props.tableConfig,
11966
+ tableConfig,
11867
11967
  props.defaultView.table_config,
11868
11968
  props.provider
11869
11969
  );
@@ -11899,81 +11999,22 @@ var PanelContent = (props) => {
11899
11999
  })));
11900
12000
  };
11901
12001
 
11902
- // src/SavedViews/components/SavedViews/SmartGrid/SmartGridSavedViews.tsx
11903
- var import_react15 = __toESM(require("react"));
11904
-
11905
- // src/SavedViews/components/SavedViews/SmartGrid/SmartGridDefaultSavedView.tsx
11906
- var import_core_react8 = require("@procore/core-react");
11907
- var useDefaultViewName = (domain, defaultViewName) => {
11908
- const i18n = (0, import_core_react8.useI18nContext)();
11909
- return defaultViewName || i18n.t(domain, {
11910
- scope: "savedViews.defaultViewTitle",
11911
- defaultValue: "Default View"
11912
- });
11913
- };
11914
- var useDefaultView = (props) => {
11915
- const name = useDefaultViewName(props.domain, props.defaultViewName);
11916
- return {
11917
- id: "default",
11918
- view_level: "default",
11919
- name,
11920
- table_config: {}
11921
- };
11922
- };
11923
-
11924
- // src/SavedViews/components/SavedViews/SmartGrid/useSmartGridConfig.ts
11925
- var import_react10 = require("react");
11926
- var GRID_STATE_EVENTS = [
11927
- "sortChanged",
11928
- "filterOpened",
11929
- "filterChanged",
11930
- "columnRowGroupChanged",
11931
- "dragStopped",
11932
- "columnResized",
11933
- "columnVisible",
11934
- "columnPinned",
11935
- "columnMoved",
11936
- "modelUpdated",
11937
- "gridColumnsChanged",
11938
- "gridReady"
11939
- ];
11940
- var useSmartGridConfig = (gridApi) => {
11941
- const [config, setConfig] = (0, import_react10.useState)(
11942
- () => getSmartGridConfig(gridApi)
11943
- );
11944
- (0, import_react10.useEffect)(() => {
11945
- if (!gridApi)
11946
- return;
11947
- const updateConfig = () => {
11948
- setConfig(getSmartGridConfig(gridApi));
11949
- };
11950
- GRID_STATE_EVENTS.forEach((event) => {
11951
- gridApi.addEventListener(event, updateConfig);
11952
- });
11953
- return () => {
11954
- GRID_STATE_EVENTS.forEach((event) => {
11955
- gridApi.removeEventListener(event, updateConfig);
11956
- });
11957
- };
11958
- }, [gridApi]);
11959
- return { config, setConfig };
11960
- };
11961
-
11962
- // src/SavedViews/components/SavedViews/SavedViews.tsx
11963
- var import_core_react13 = require("@procore/core-react");
11964
- var import_react14 = __toESM(require("react"));
12002
+ // src/components/saved-views/SavedViews.tsx
12003
+ var import_core_react14 = require("@procore/core-react");
12004
+ var import_react13 = __toESM(require("react"));
11965
12005
  var import_react_query3 = require("@tanstack/react-query");
12006
+ var import_toast_alert3 = require("@procore/toast-alert");
11966
12007
 
11967
- // src/SavedViews/components/SavedViewsModals/SavedViewsDeleteConfirmationModalShared.tsx
12008
+ // src/components/modals/DeleteConfirmationModal.tsx
11968
12009
  var import_core_react9 = require("@procore/core-react");
11969
- var import_react11 = __toESM(require("react"));
12010
+ var import_react10 = __toESM(require("react"));
11970
12011
  var SavedViewsDeleteConfirmationModalShared = ({
11971
12012
  onCancel,
11972
12013
  onDelete,
11973
12014
  open
11974
12015
  }) => {
11975
12016
  const i18n = (0, import_core_react9.useI18nContext)();
11976
- return /* @__PURE__ */ import_react11.default.createElement(
12017
+ return /* @__PURE__ */ import_react10.default.createElement(
11977
12018
  import_core_react9.ConfirmModal,
11978
12019
  {
11979
12020
  "data-testid": "delete-confirmation-modal",
@@ -11983,15 +12024,15 @@ var SavedViewsDeleteConfirmationModalShared = ({
11983
12024
  onClose: onCancel,
11984
12025
  style: { overflowWrap: "anywhere" }
11985
12026
  },
11986
- /* @__PURE__ */ import_react11.default.createElement(import_core_react9.Modal.Body, null, /* @__PURE__ */ import_react11.default.createElement(import_core_react9.P, null, i18n.t("savedViews.modal.delete.description"))),
11987
- /* @__PURE__ */ import_react11.default.createElement(import_core_react9.Modal.Footer, null, /* @__PURE__ */ import_react11.default.createElement(import_core_react9.Modal.FooterButtons, null, /* @__PURE__ */ import_react11.default.createElement(import_core_react9.Button, { variant: "secondary", onClick: onCancel }, i18n.t("savedViews.actions.cancel")), /* @__PURE__ */ import_react11.default.createElement(import_core_react9.Button, { variant: "primary", onClick: onDelete }, i18n.t("savedViews.actions.delete"))))
12027
+ /* @__PURE__ */ import_react10.default.createElement(import_core_react9.Modal.Body, null, /* @__PURE__ */ import_react10.default.createElement(import_core_react9.P, null, i18n.t("savedViews.modal.delete.description"))),
12028
+ /* @__PURE__ */ import_react10.default.createElement(import_core_react9.Modal.Footer, null, /* @__PURE__ */ import_react10.default.createElement(import_core_react9.Modal.FooterButtons, null, /* @__PURE__ */ import_react10.default.createElement(import_core_react9.Button, { variant: "secondary", onClick: onCancel }, i18n.t("savedViews.actions.cancel")), /* @__PURE__ */ import_react10.default.createElement(import_core_react9.Button, { variant: "primary", onClick: onDelete }, i18n.t("savedViews.actions.delete"))))
11988
12029
  );
11989
12030
  };
11990
12031
 
11991
- // src/SavedViews/components/SavedViewsModals/SavedViewsFormModal.tsx
11992
- var import_react12 = __toESM(require("react"));
12032
+ // src/components/modals/form-modal/FormModal.tsx
12033
+ var import_react11 = __toESM(require("react"));
11993
12034
 
11994
- // src/SavedViews/components/SavedViewsModals/SavedViewsCreateUpdateModalBase.tsx
12035
+ // src/components/modals/form-modal/FormModalBase.tsx
11995
12036
  var import_core_react10 = require("@procore/core-react");
11996
12037
  var React19 = __toESM(require("react"));
11997
12038
 
@@ -14287,7 +14328,7 @@ var TupleSchema = class extends Schema {
14287
14328
  };
14288
14329
  create$1.prototype = TupleSchema.prototype;
14289
14330
 
14290
- // src/SavedViews/components/SavedViewsModals/CreateUpdateModalBaseUtils.ts
14331
+ // src/components/modals/form-modal/FormModalBaseUtils.ts
14291
14332
  var getViewLevelOptions = (permissions, i18n) => {
14292
14333
  const options = ["personal"];
14293
14334
  if (permissions == null ? void 0 : permissions.can_create_project_saved_views)
@@ -14320,11 +14361,11 @@ function extractMessage(error, I18n) {
14320
14361
  return { form: I18n.t("savedViews.modal.errors.unknown") };
14321
14362
  }
14322
14363
 
14323
- // src/SavedViews/components/SavedViewsModals/SavedViewsCreateUpdateModalBase.tsx
14364
+ // src/components/modals/form-modal/FormModalBase.tsx
14324
14365
  var ScrollContainer = styled_components_esm_default("div")`
14325
14366
  overflow: auto;
14326
14367
  `;
14327
- var SavedViewsCreateUpdateModalBase = ({
14368
+ var FormModalBase = ({
14328
14369
  open,
14329
14370
  mode,
14330
14371
  onCancel,
@@ -14494,9 +14535,9 @@ var SavedViewsCreateUpdateModalBase = ({
14494
14535
  );
14495
14536
  };
14496
14537
 
14497
- // src/SavedViews/components/SavedViewsModals/SavedViewsFormModal.tsx
14538
+ // src/components/modals/form-modal/FormModal.tsx
14498
14539
  var import_core_react11 = require("@procore/core-react");
14499
- var SavedViewsFormModal = ({
14540
+ var FormModal = ({
14500
14541
  open,
14501
14542
  mode,
14502
14543
  onCancel,
@@ -14509,8 +14550,8 @@ var SavedViewsFormModal = ({
14509
14550
  defaultView
14510
14551
  }) => {
14511
14552
  const i18n = (0, import_core_react11.useI18nContext)();
14512
- return /* @__PURE__ */ import_react12.default.createElement(
14513
- SavedViewsCreateUpdateModalBase,
14553
+ return /* @__PURE__ */ import_react11.default.createElement(
14554
+ FormModalBase,
14514
14555
  {
14515
14556
  open,
14516
14557
  mode,
@@ -14529,7 +14570,7 @@ var SavedViewsFormModal = ({
14529
14570
  );
14530
14571
  };
14531
14572
 
14532
- // src/SavedViews/components/SavedViewsModals/SharedViewFormModal.tsx
14573
+ // src/components/modals/form-modal/SharedViewFormModal.tsx
14533
14574
  var import_core_react12 = require("@procore/core-react");
14534
14575
  var React21 = __toESM(require("react"));
14535
14576
  var SharedViewFormModal = ({
@@ -14671,21 +14712,28 @@ var SharedViewFormModal = ({
14671
14712
  );
14672
14713
  };
14673
14714
 
14674
- // src/utils/Hooks/useViewSelection.ts
14675
- var import_react13 = require("react");
14715
+ // src/utils/hooks/useViewSelection.ts
14716
+ var import_react12 = require("react");
14676
14717
  var import_react_router_dom = require("react-router-dom");
14718
+ var import_core_react13 = require("@procore/core-react");
14677
14719
 
14678
14720
  // src/utils/viewStorage.ts
14679
14721
  var ViewStorage = {
14680
14722
  save(key, view) {
14681
14723
  localStorage.setItem(key, JSON.stringify(view));
14682
14724
  },
14683
- load(key) {
14725
+ load(key, defaultView) {
14684
14726
  try {
14685
14727
  const stored = localStorage.getItem(key);
14686
- return stored ? JSON.parse(stored) : null;
14687
- } catch (e2) {
14688
- return null;
14728
+ if (!stored)
14729
+ return defaultView;
14730
+ const parsed = JSON.parse(stored);
14731
+ if (!parsed)
14732
+ return defaultView;
14733
+ const isTableConfigOnly = !parsed.id && !parsed.share_token;
14734
+ return isTableConfigOnly ? { ...defaultView, table_config: parsed } : parsed;
14735
+ } catch {
14736
+ return defaultView;
14689
14737
  }
14690
14738
  },
14691
14739
  remove(key) {
@@ -14693,7 +14741,7 @@ var ViewStorage = {
14693
14741
  }
14694
14742
  };
14695
14743
 
14696
- // src/utils/Hooks/useViewSelection.ts
14744
+ // src/utils/hooks/useViewSelection.ts
14697
14745
  var getUpdatedSearchParams = (currentParams, view) => {
14698
14746
  const updatedParams = new URLSearchParams(currentParams);
14699
14747
  if (view.id === "default") {
@@ -14708,55 +14756,72 @@ var getUpdatedSearchParams = (currentParams, view) => {
14708
14756
  var checkIsViewSelected = (selectedView, viewId) => {
14709
14757
  return (selectedView == null ? void 0 : selectedView.share_token) === viewId || (selectedView == null ? void 0 : selectedView.id) === viewId;
14710
14758
  };
14711
- var useViewSelection = (config, savedViews, openSharedViewModal) => {
14712
- const storageKey = `${config.domain}_${config.tableName}_${config.stickyViewsKey}_${config.projectId}_${config.userId}`;
14713
- const temporaryStorageKey = `${storageKey}_temporary`;
14759
+ var findViewByToken = (views, token) => {
14760
+ return views.find((view) => view.share_token === token);
14761
+ };
14762
+ var setViewInUrl = (view, setSearchParams) => {
14763
+ setSearchParams(
14764
+ (currentParams) => getUpdatedSearchParams(currentParams, view),
14765
+ { replace: true }
14766
+ );
14767
+ };
14768
+ var restoreUrlParameter = (currentParam, previousParam, setSearchParams) => {
14769
+ if (previousParam && !currentParam) {
14770
+ setSearchParams(
14771
+ (currentParams) => {
14772
+ const updatedParams = new URLSearchParams(currentParams);
14773
+ updatedParams.set("saved-view", previousParam);
14774
+ return updatedParams;
14775
+ },
14776
+ { replace: true }
14777
+ );
14778
+ }
14779
+ };
14780
+ var useViewSelection = (config, savedViews, presetViews, openSharedViewModal) => {
14781
+ const I18n = (0, import_core_react13.useI18nContext)();
14782
+ const storageKey = `savedView_${config.domain}_${config.tableName}_${config.companyId}_${config.projectId}_${config.userId}`;
14783
+ const temporaryStorageKey = `${storageKey}-temporary`;
14714
14784
  const [searchParams, setSearchParams] = (0, import_react_router_dom.useSearchParams)();
14715
- const previousSavedViewParamRef = (0, import_react13.useRef)(null);
14716
- const [selectedSavedView, setSelectedSavedView] = (0, import_react13.useState)(() => {
14717
- const stored = ViewStorage.load(storageKey);
14785
+ const previousSavedViewParamRef = (0, import_react12.useRef)(null);
14786
+ const [selectedSavedView, setSelectedSavedView] = (0, import_react12.useState)(() => {
14787
+ const stored = ViewStorage.load(storageKey, config.defaultView);
14718
14788
  return stored ?? config.defaultView;
14719
14789
  });
14720
- const [temporaryView, setTemporaryView] = (0, import_react13.useState)(() => {
14721
- return ViewStorage.load(temporaryStorageKey);
14790
+ const [temporaryView, setTemporaryView] = (0, import_react12.useState)(() => {
14791
+ const loaded = ViewStorage.load(temporaryStorageKey, config.defaultView);
14792
+ return loaded && (loaded.id === "temporary" || loaded.view_level === "temporary") ? loaded : null;
14722
14793
  });
14723
- const updateLocalStorage = (0, import_react13.useCallback)(
14794
+ const persistViewToStorageAndUrl = (0, import_react12.useCallback)(
14724
14795
  (view) => {
14725
- if (config.stickyViewsKey) {
14726
- ViewStorage.save(storageKey, view);
14727
- }
14796
+ ViewStorage.save(storageKey, view);
14797
+ setViewInUrl(view, setSearchParams);
14728
14798
  },
14729
- [config.stickyViewsKey, storageKey]
14799
+ [storageKey, setSearchParams]
14730
14800
  );
14731
- const updateUrlForView = (0, import_react13.useCallback)(
14732
- (view) => {
14733
- setSearchParams(
14734
- (currentParams) => {
14735
- return getUpdatedSearchParams(currentParams, view);
14736
- },
14737
- { replace: true }
14738
- );
14739
- },
14740
- [setSearchParams]
14801
+ const baseViews = (0, import_react12.useMemo)(
14802
+ () => [...savedViews ?? [], ...presetViews ?? []],
14803
+ [savedViews, presetViews]
14741
14804
  );
14742
- const baseViews = savedViews ?? [];
14743
- const allViews = temporaryView ? [...baseViews, temporaryView] : baseViews;
14744
- const selectView = (0, import_react13.useCallback)(
14805
+ const allViews = (0, import_react12.useMemo)(
14806
+ () => temporaryView ? [...baseViews, temporaryView] : baseViews,
14807
+ [baseViews, temporaryView]
14808
+ );
14809
+ const selectView = (0, import_react12.useCallback)(
14745
14810
  (view) => {
14746
14811
  const viewToSelect = config.onSelect({ item: view });
14747
14812
  setSelectedSavedView(viewToSelect);
14748
- updateLocalStorage(viewToSelect);
14749
- updateUrlForView(viewToSelect);
14813
+ persistViewToStorageAndUrl(viewToSelect);
14750
14814
  return viewToSelect;
14751
14815
  },
14752
- [config, updateLocalStorage, updateUrlForView]
14816
+ [config, persistViewToStorageAndUrl]
14753
14817
  );
14754
- const createTemporaryView = (0, import_react13.useCallback)(
14818
+ const createTemporaryView = (0, import_react12.useCallback)(
14755
14819
  (fetchedView) => {
14756
14820
  const tempView = {
14757
14821
  ...fetchedView,
14758
14822
  id: "temporary",
14759
- name: "Temporary View"
14823
+ name: I18n.t("savedViews.temporaryViewName"),
14824
+ view_level: "temporary"
14760
14825
  };
14761
14826
  ViewStorage.save(temporaryStorageKey, tempView);
14762
14827
  setTemporaryView(tempView);
@@ -14765,21 +14830,21 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14765
14830
  },
14766
14831
  [temporaryStorageKey, selectView]
14767
14832
  );
14768
- const clearTemporaryView = (0, import_react13.useCallback)(() => {
14833
+ const clearTemporaryView = (0, import_react12.useCallback)(() => {
14769
14834
  ViewStorage.remove(temporaryStorageKey);
14770
14835
  setTemporaryView(null);
14771
14836
  selectView(config.defaultView);
14772
14837
  }, [temporaryStorageKey, config.defaultView, selectView]);
14773
- const isViewAlreadySelected = (0, import_react13.useCallback)(
14838
+ const isViewAlreadySelected = (0, import_react12.useCallback)(
14774
14839
  (viewId) => checkIsViewSelected(selectedSavedView, viewId),
14775
14840
  [selectedSavedView]
14776
14841
  );
14777
- const handleSavedViewFromUrl = (0, import_react13.useCallback)(
14842
+ const handleSavedViewFromUrl = (0, import_react12.useCallback)(
14778
14843
  (viewId) => {
14779
14844
  if (isViewAlreadySelected(viewId)) {
14780
14845
  return;
14781
14846
  }
14782
- const viewInList = allViews.find((view) => view.share_token === viewId);
14847
+ const viewInList = findViewByToken(allViews, viewId);
14783
14848
  if (viewInList) {
14784
14849
  selectView(viewInList);
14785
14850
  } else {
@@ -14788,36 +14853,20 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14788
14853
  },
14789
14854
  [isViewAlreadySelected, openSharedViewModal, allViews, selectView]
14790
14855
  );
14791
- (0, import_react13.useEffect)(() => {
14792
- if (!allViews.length)
14793
- return;
14856
+ (0, import_react12.useEffect)(() => {
14794
14857
  const savedViewId = searchParams.get("saved-view");
14858
+ restoreUrlParameter(
14859
+ savedViewId,
14860
+ previousSavedViewParamRef.current,
14861
+ setSearchParams
14862
+ );
14795
14863
  if (savedViewId) {
14796
- handleSavedViewFromUrl(savedViewId);
14864
+ previousSavedViewParamRef.current = savedViewId;
14797
14865
  }
14798
- }, [
14799
- searchParams.get("saved-view"),
14800
- savedViews,
14801
- temporaryView,
14802
- handleSavedViewFromUrl,
14803
- allViews.length
14804
- ]);
14805
- (0, import_react13.useEffect)(() => {
14806
- const currentSavedViewParam = searchParams.get("saved-view");
14807
- if (previousSavedViewParamRef.current && !currentSavedViewParam) {
14808
- setSearchParams(
14809
- (currentParams) => {
14810
- const updatedParams = new URLSearchParams(currentParams);
14811
- updatedParams.set("saved-view", previousSavedViewParamRef.current);
14812
- return updatedParams;
14813
- },
14814
- { replace: true }
14815
- );
14816
- }
14817
- if (currentSavedViewParam) {
14818
- previousSavedViewParamRef.current = currentSavedViewParam;
14866
+ if (savedViewId && allViews.length > 0) {
14867
+ handleSavedViewFromUrl(savedViewId);
14819
14868
  }
14820
- }, [searchParams.get("saved-view"), setSearchParams]);
14869
+ }, [searchParams, handleSavedViewFromUrl, allViews.length]);
14821
14870
  return {
14822
14871
  selectedView: selectedSavedView,
14823
14872
  selectView,
@@ -14828,7 +14877,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14828
14877
  };
14829
14878
  };
14830
14879
 
14831
- // src/SavedViews/components/SavedViews/SavedViews.tsx
14880
+ // src/components/saved-views/SavedViews.tsx
14832
14881
  var StyledPanel = styled_components_esm_default.div`
14833
14882
  border: ${({ provider }) => provider === "data-table" ? "1px solid #d6dadc" : "none"};
14834
14883
  `;
@@ -14843,13 +14892,15 @@ var SavedViewsContent = (props) => {
14843
14892
  };
14844
14893
  const { data: savedViews } = useSavedViewsQuery(queryInput);
14845
14894
  const { mutate: deleteSavedView } = useDeleteSavedView(queryInput);
14846
- const [activeModal, setActiveModal] = (0, import_react14.useState)(null);
14847
- const [modalData, setModalData] = (0, import_react14.useState)(null);
14895
+ const { showToast } = (0, import_toast_alert3.useToastAlertContext)();
14896
+ const i18n = (0, import_core_react14.useI18nContext)();
14897
+ const [activeModal, setActiveModal] = (0, import_react13.useState)(null);
14898
+ const [modalData, setModalData] = (0, import_react13.useState)(null);
14848
14899
  const openModal = (type, data) => {
14849
14900
  setActiveModal(type);
14850
14901
  setModalData(data ?? null);
14851
14902
  };
14852
- const closeModal = (0, import_react14.useCallback)(() => {
14903
+ const closeModal = (0, import_react13.useCallback)(() => {
14853
14904
  setActiveModal(null);
14854
14905
  setModalData(null);
14855
14906
  }, []);
@@ -14867,13 +14918,14 @@ var SavedViewsContent = (props) => {
14867
14918
  {
14868
14919
  domain: props.domain,
14869
14920
  tableName: props.tableName,
14870
- stickyViewsKey: props.stickyViewsKey,
14871
14921
  userId: props.userId,
14872
14922
  projectId,
14923
+ companyId,
14873
14924
  defaultView: props.defaultView,
14874
14925
  onSelect: props.onSelect
14875
14926
  },
14876
14927
  savedViews,
14928
+ props.presetViews,
14877
14929
  openSharedViewModal
14878
14930
  );
14879
14931
  const { data: fetchedView, isError: fetchError } = useFetchSavedViewById(
@@ -14887,8 +14939,9 @@ var SavedViewsContent = (props) => {
14887
14939
  error: createError,
14888
14940
  reset: resetCreateError
14889
14941
  } = useCreateSavedView(queryInput);
14890
- (0, import_react14.useEffect)(() => {
14942
+ (0, import_react13.useEffect)(() => {
14891
14943
  if (fetchError) {
14944
+ showToast.error(i18n.t("savedViews.errors.notFound"));
14892
14945
  selectView(selectedView ?? props.defaultView);
14893
14946
  closeModal();
14894
14947
  }
@@ -14912,6 +14965,7 @@ var SavedViewsContent = (props) => {
14912
14965
  };
14913
14966
  createSavedView(viewToCreate, {
14914
14967
  onSuccess: (newView) => {
14968
+ showToast.success(i18n.t("savedViews.create.success"));
14915
14969
  selectView(newView);
14916
14970
  closeModal();
14917
14971
  }
@@ -14933,23 +14987,22 @@ var SavedViewsContent = (props) => {
14933
14987
  deleteSelectedView();
14934
14988
  closeModal();
14935
14989
  };
14936
- const i18n = (0, import_core_react13.useI18nContext)();
14937
- return /* @__PURE__ */ import_react14.default.createElement(StyledPanel, { provider: props.provider }, /* @__PURE__ */ import_react14.default.createElement(
14990
+ return /* @__PURE__ */ import_react13.default.createElement(StyledPanel, { provider: props.provider }, /* @__PURE__ */ import_react13.default.createElement(
14938
14991
  ExpandedPanel,
14939
14992
  {
14940
14993
  "data-testid": "saved-view-expanded-panel",
14941
14994
  provider: props.provider
14942
14995
  },
14943
- /* @__PURE__ */ import_react14.default.createElement(import_core_react13.Panel.Header, { id: "saved-views-collections-panel-header" }, /* @__PURE__ */ import_react14.default.createElement(import_core_react13.Panel.Title, null, /* @__PURE__ */ import_react14.default.createElement(import_core_react13.Flex, { alignItems: "center" }, /* @__PURE__ */ import_react14.default.createElement(import_core_react13.Box, { paddingRight: "sm" }, i18n.t("savedViews.title")), /* @__PURE__ */ import_react14.default.createElement(import_core_react13.Tooltip, { showDelay: 200, overlay: i18n.t("savedViews.tooltip") }, /* @__PURE__ */ import_react14.default.createElement(Help_default, { size: "sm" })))), /* @__PURE__ */ import_react14.default.createElement(
14944
- import_core_react13.Tooltip,
14996
+ /* @__PURE__ */ import_react13.default.createElement(import_core_react14.Panel.Header, { id: "saved-views-collections-panel-header" }, /* @__PURE__ */ import_react13.default.createElement(import_core_react14.Panel.Title, null, /* @__PURE__ */ import_react13.default.createElement(import_core_react14.Flex, { alignItems: "center" }, /* @__PURE__ */ import_react13.default.createElement(import_core_react14.Box, { paddingRight: "sm" }, i18n.t("savedViews.title")), /* @__PURE__ */ import_react13.default.createElement(import_core_react14.Tooltip, { showDelay: 200, overlay: i18n.t("savedViews.tooltip") }, /* @__PURE__ */ import_react13.default.createElement(Help_default, { size: "sm" })))), /* @__PURE__ */ import_react13.default.createElement(
14997
+ import_core_react14.Tooltip,
14945
14998
  {
14946
14999
  overlay: i18n.t("savedViews.actions.create"),
14947
15000
  showDelay: 1e3
14948
15001
  },
14949
- /* @__PURE__ */ import_react14.default.createElement("span", null, /* @__PURE__ */ import_react14.default.createElement(
14950
- import_core_react13.Button,
15002
+ /* @__PURE__ */ import_react13.default.createElement("span", null, /* @__PURE__ */ import_react13.default.createElement(
15003
+ import_core_react14.Button,
14951
15004
  {
14952
- icon: /* @__PURE__ */ import_react14.default.createElement(Plus_default, null),
15005
+ icon: /* @__PURE__ */ import_react13.default.createElement(Plus_default, null),
14953
15006
  variant: "secondary",
14954
15007
  "data-testid": "expanded-panel-create-button",
14955
15008
  onClick: () => openModal("create" /* CREATE */),
@@ -14958,7 +15011,7 @@ var SavedViewsContent = (props) => {
14958
15011
  i18n.t("savedViews.actions.create")
14959
15012
  ))
14960
15013
  )),
14961
- /* @__PURE__ */ import_react14.default.createElement(import_core_react13.Panel.Body, { style: { display: "flex", flexFlow: "column" } }, /* @__PURE__ */ import_react14.default.createElement(
15014
+ /* @__PURE__ */ import_react13.default.createElement(import_core_react14.Panel.Body, { style: { display: "flex", flexFlow: "column" } }, /* @__PURE__ */ import_react13.default.createElement(
14962
15015
  PanelContent,
14963
15016
  {
14964
15017
  onSelect: ({ item }) => selectView(item),
@@ -14968,15 +15021,15 @@ var SavedViewsContent = (props) => {
14968
15021
  selectedSavedView: selectedView,
14969
15022
  tableConfig: props.tableConfig,
14970
15023
  defaultView: props.defaultView,
14971
- stickyViewsKey: props.stickyViewsKey,
15024
+ presetViews: props.presetViews,
14972
15025
  savedViews: allViews,
14973
15026
  provider: props.provider,
14974
15027
  userId: props.userId,
14975
15028
  onClearTemporary: clearTemporaryView
14976
15029
  }
14977
15030
  ))
14978
- ), (isModalOpen("create" /* CREATE */) || isModalOpen("update" /* UPDATE */)) && /* @__PURE__ */ import_react14.default.createElement(
14979
- SavedViewsFormModal,
15031
+ ), (isModalOpen("create" /* CREATE */) || isModalOpen("update" /* UPDATE */)) && /* @__PURE__ */ import_react13.default.createElement(
15032
+ FormModal,
14980
15033
  {
14981
15034
  open: true,
14982
15035
  mode: activeModal,
@@ -14989,14 +15042,14 @@ var SavedViewsContent = (props) => {
14989
15042
  setOpenEditCreateModal: closeModal,
14990
15043
  defaultView: props.defaultView
14991
15044
  }
14992
- ), selectedView && isModalOpen("delete" /* DELETE */) && /* @__PURE__ */ import_react14.default.createElement(
15045
+ ), selectedView && isModalOpen("delete" /* DELETE */) && /* @__PURE__ */ import_react13.default.createElement(
14993
15046
  SavedViewsDeleteConfirmationModalShared,
14994
15047
  {
14995
15048
  open: true,
14996
15049
  onDelete: confirmDeleteAndCloseModal,
14997
15050
  onCancel: closeModal
14998
15051
  }
14999
- ), fetchedView && isModalOpen("sharedView" /* SHARED_VIEW */) && /* @__PURE__ */ import_react14.default.createElement(
15052
+ ), fetchedView && isModalOpen("sharedView" /* SHARED_VIEW */) && /* @__PURE__ */ import_react13.default.createElement(
15000
15053
  SharedViewFormModal,
15001
15054
  {
15002
15055
  open: true,
@@ -15011,31 +15064,125 @@ var SavedViewsContent = (props) => {
15011
15064
  ));
15012
15065
  };
15013
15066
  var SavedViews = (props) => {
15014
- return /* @__PURE__ */ import_react14.default.createElement(EnvironmentI18nProvider, null, /* @__PURE__ */ import_react14.default.createElement(import_react_query3.QueryClientProvider, { client: queryClient }, /* @__PURE__ */ import_react14.default.createElement(SavedViewsContent, { ...props })));
15067
+ return /* @__PURE__ */ import_react13.default.createElement(EnvironmentI18nProvider, null, /* @__PURE__ */ import_react13.default.createElement(import_react_query3.QueryClientProvider, { client: queryClient }, /* @__PURE__ */ import_react13.default.createElement(import_toast_alert3.ToastAlertProvider, null, /* @__PURE__ */ import_react13.default.createElement(SavedViewsContent, { ...props }))));
15015
15068
  };
15016
15069
 
15017
- // src/SavedViews/components/SavedViews/SmartGrid/SmartGridSavedViews.tsx
15018
- var import_toast_alert3 = require("@procore/toast-alert");
15019
- var generateStickyViewsKey = (domain, tableName, userId, projectId, companyId) => {
15020
- return `savedView-${domain}-${tableName}-${companyId}-${projectId}-${userId}`;
15070
+ // src/components/adapters/smart-grid/SmartGridSavedViews.tsx
15071
+ var import_react16 = __toESM(require("react"));
15072
+
15073
+ // src/components/adapters/smart-grid/SmartGridDefaultSavedView.tsx
15074
+ var import_react14 = require("react");
15075
+ var DEFAULT_COLUMN_STATE = {
15076
+ hide: false,
15077
+ pinned: null,
15078
+ width: 200,
15079
+ sort: null,
15080
+ sortIndex: null,
15081
+ pivot: false,
15082
+ pivotIndex: null,
15083
+ aggFunc: null,
15084
+ rowGroup: false,
15085
+ rowGroupIndex: null,
15086
+ flex: null
15087
+ };
15088
+ var getColumnStateFromDefs = (columnDefs) => {
15089
+ return columnDefs.map((colDef) => {
15090
+ const field = colDef.field ?? colDef.colId;
15091
+ if (!field)
15092
+ return null;
15093
+ return {
15094
+ colId: field,
15095
+ hide: colDef.hide ?? false,
15096
+ pinned: colDef.pinned ?? null,
15097
+ width: colDef.width ?? colDef.minWidth ?? DEFAULT_COLUMN_STATE.width,
15098
+ sort: null,
15099
+ sortIndex: null,
15100
+ pivot: false,
15101
+ pivotIndex: null,
15102
+ aggFunc: null,
15103
+ rowGroup: false,
15104
+ rowGroupIndex: null,
15105
+ flex: colDef.flex ?? null
15106
+ };
15107
+ }).filter((col) => col !== null);
15108
+ };
15109
+ var extractDefaultView = (gridApi, receivedConfig) => {
15110
+ var _a, _b;
15111
+ const columnDefs = gridApi.getColumnDefs() ?? [];
15112
+ const defaultColumnState = ((_a = receivedConfig == null ? void 0 : receivedConfig.columnState) == null ? void 0 : _a.length) ? receivedConfig.columnState : getColumnStateFromDefs(columnDefs);
15113
+ const result = {
15114
+ columnState: defaultColumnState,
15115
+ columnGroupState: (receivedConfig == null ? void 0 : receivedConfig.columnGroupState) ?? [],
15116
+ rowGroupState: (receivedConfig == null ? void 0 : receivedConfig.rowGroupState) ?? [],
15117
+ filterState: (receivedConfig == null ? void 0 : receivedConfig.filterState) ?? {},
15118
+ rowHeight: (receivedConfig == null ? void 0 : receivedConfig.rowHeight) ?? ((_b = gridApi.getSizesForCurrentTheme()) == null ? void 0 : _b.rowHeight)
15119
+ };
15120
+ return result;
15121
+ };
15122
+ var useNormalizedDefaultViews = (defaultViews, gridApi) => {
15123
+ return (0, import_react14.useMemo)(() => {
15124
+ if (!gridApi)
15125
+ return defaultViews.map((view) => ({ ...view, share_token: view.id }));
15126
+ return defaultViews.map((view) => ({
15127
+ ...view,
15128
+ share_token: view.id,
15129
+ table_config: extractDefaultView(gridApi, view.table_config)
15130
+ }));
15131
+ }, [defaultViews, gridApi]);
15132
+ };
15133
+
15134
+ // src/components/adapters/smart-grid/useSmartGridConfig.ts
15135
+ var import_react15 = require("react");
15136
+ var GRID_STATE_EVENTS = [
15137
+ "sortChanged",
15138
+ "filterOpened",
15139
+ "filterChanged",
15140
+ "columnRowGroupChanged",
15141
+ "dragStopped",
15142
+ "columnResized",
15143
+ "columnVisible",
15144
+ "columnPinned",
15145
+ "columnMoved",
15146
+ "modelUpdated",
15147
+ "gridColumnsChanged",
15148
+ "gridReady"
15149
+ ];
15150
+ var useSmartGridConfig = (gridApi) => {
15151
+ const [config, setConfig] = (0, import_react15.useState)(
15152
+ () => getSmartGridConfig(gridApi)
15153
+ );
15154
+ (0, import_react15.useEffect)(() => {
15155
+ if (!gridApi)
15156
+ return;
15157
+ const updateConfig = () => {
15158
+ setConfig(getSmartGridConfig(gridApi));
15159
+ };
15160
+ GRID_STATE_EVENTS.forEach((event) => {
15161
+ gridApi.addEventListener(event, updateConfig);
15162
+ });
15163
+ return () => {
15164
+ GRID_STATE_EVENTS.forEach((event) => {
15165
+ gridApi.removeEventListener(event, updateConfig);
15166
+ });
15167
+ };
15168
+ }, [gridApi]);
15169
+ return { config, setConfig };
15021
15170
  };
15171
+
15172
+ // src/components/adapters/smart-grid/SmartGridSavedViews.tsx
15022
15173
  var SmartGridSavedViews = (props) => {
15023
15174
  const { gridApi, userId, projectId, companyId } = props;
15024
15175
  const { config: tableConfig, setConfig: setTableConfig } = useSmartGridConfig(gridApi);
15025
- const defaultView = useDefaultView({
15026
- defaultViewName: props.defaultViewName,
15027
- domain: props.domain
15028
- });
15029
- const onSelect = (0, import_react15.useCallback)(
15176
+ const presetViews = useNormalizedDefaultViews(props.defaultViews, gridApi);
15177
+ const defaultView = presetViews.find((view) => view.id === "default") ?? presetViews[0];
15178
+ const onSelect = (0, import_react16.useCallback)(
15030
15179
  ({ item }) => {
15031
15180
  if (!gridApi)
15032
15181
  return item;
15033
- if (item.id === "default") {
15034
- gridApi.autoSizeAllColumns();
15035
- gridApi.resetColumnState();
15036
- gridApi.setFilterModel(props.defaultViewFilters);
15037
- gridApi.setGridOption("rowHeight", props.defaultRowHeight);
15038
- gridApi.refreshCells();
15182
+ const isPresetView = item.view_level === "default";
15183
+ if (isPresetView) {
15184
+ updateTableConfig(item, gridApi, "smart-grid");
15185
+ setTableConfig(item.table_config);
15039
15186
  return item;
15040
15187
  }
15041
15188
  const updatedView = {
@@ -15049,22 +15196,9 @@ var SmartGridSavedViews = (props) => {
15049
15196
  setTableConfig(updatedView.table_config);
15050
15197
  return updatedView;
15051
15198
  },
15052
- [
15053
- gridApi,
15054
- props.defaultViewFilters,
15055
- props.defaultRowHeight,
15056
- tableConfig,
15057
- setTableConfig
15058
- ]
15059
- );
15060
- const stickyViewsKey = generateStickyViewsKey(
15061
- props.domain,
15062
- props.tableName,
15063
- userId,
15064
- projectId,
15065
- companyId
15199
+ [gridApi, tableConfig, setTableConfig]
15066
15200
  );
15067
- return /* @__PURE__ */ import_react15.default.createElement(import_toast_alert3.ToastAlertProvider, null, /* @__PURE__ */ import_react15.default.createElement(
15201
+ return /* @__PURE__ */ import_react16.default.createElement(
15068
15202
  SavedViews,
15069
15203
  {
15070
15204
  onSelect,
@@ -15074,20 +15208,19 @@ var SmartGridSavedViews = (props) => {
15074
15208
  companyId,
15075
15209
  provider: "smart-grid",
15076
15210
  defaultView,
15211
+ presetViews,
15077
15212
  tableName: props.tableName,
15078
- tableConfig,
15079
- stickyViewsKey
15213
+ tableConfig
15080
15214
  }
15081
- ));
15215
+ );
15082
15216
  };
15083
15217
 
15084
- // src/SavedViews/components/SavedViews/DataTable/DataTableSavedViews.tsx
15085
- var import_react17 = __toESM(require("react"));
15218
+ // src/components/adapters/data-table/DataTableSavedViews.tsx
15219
+ var import_react18 = __toESM(require("react"));
15086
15220
 
15087
- // src/SavedViews/components/SavedViews/DataTable/DataTableDefaultSavedView.tsx
15088
- var import_react16 = require("react");
15089
- var import_core_react14 = require("@procore/core-react");
15090
- var DEFAULT_COLUMN_STATE = {
15221
+ // src/components/adapters/data-table/DataTableDefaultSavedView.tsx
15222
+ var import_react17 = require("react");
15223
+ var DEFAULT_COLUMN_STATE2 = {
15091
15224
  hidden: false,
15092
15225
  pinned: null,
15093
15226
  width: 200,
@@ -15102,7 +15235,7 @@ var getColumnState = (columnDefinitions) => {
15102
15235
  if (column.field.includes("custom_field")) {
15103
15236
  return {
15104
15237
  field: column.field,
15105
- ...DEFAULT_COLUMN_STATE
15238
+ ...DEFAULT_COLUMN_STATE2
15106
15239
  };
15107
15240
  }
15108
15241
  return {
@@ -15113,11 +15246,11 @@ var getColumnState = (columnDefinitions) => {
15113
15246
  rowGroupIndex: null,
15114
15247
  sort: null,
15115
15248
  sortIndex: null,
15116
- width: (column.minWidth ?? DEFAULT_COLUMN_STATE.width) > DEFAULT_COLUMN_STATE.width ? column.minWidth ?? DEFAULT_COLUMN_STATE.width : (column.maxWidth ?? DEFAULT_COLUMN_STATE.width) < DEFAULT_COLUMN_STATE.width ? column.maxWidth ?? DEFAULT_COLUMN_STATE.width : DEFAULT_COLUMN_STATE.width
15249
+ width: (column.minWidth ?? DEFAULT_COLUMN_STATE2.width) > DEFAULT_COLUMN_STATE2.width ? column.minWidth ?? DEFAULT_COLUMN_STATE2.width : (column.maxWidth ?? DEFAULT_COLUMN_STATE2.width) < DEFAULT_COLUMN_STATE2.width ? column.maxWidth ?? DEFAULT_COLUMN_STATE2.width : DEFAULT_COLUMN_STATE2.width
15117
15250
  };
15118
15251
  });
15119
15252
  };
15120
- var extractDefaultView = (columnDefinitions, receivedConfigFromTool) => {
15253
+ var extractDefaultView2 = (columnDefinitions, receivedConfigFromTool) => {
15121
15254
  var _a, _b, _c;
15122
15255
  const defaultColumnState = getColumnState(columnDefinitions);
15123
15256
  const result = {
@@ -15133,52 +15266,37 @@ var extractDefaultView = (columnDefinitions, receivedConfigFromTool) => {
15133
15266
  };
15134
15267
  return result;
15135
15268
  };
15136
- var useDefaultViewName2 = (domain, defaultViewName) => {
15137
- const i18n = (0, import_core_react14.useI18nContext)();
15138
- return defaultViewName || i18n.t(domain, {
15139
- scope: "savedViews.defaultViewTitle",
15140
- defaultValue: "Default View"
15141
- });
15142
- };
15143
- var useDefaultView2 = (props) => {
15144
- const name = useDefaultViewName2(props.domain, props.defaultViewName);
15145
- const extractedDefaultConfig = (0, import_react16.useMemo)(
15146
- () => extractDefaultView(props.columnDefinitions, props.receivedConfigFromTool),
15147
- [props.columnDefinitions, props.receivedConfigFromTool]
15269
+ var useNormalizedDefaultViews2 = (defaultViews, columnDefinitions) => {
15270
+ return (0, import_react17.useMemo)(
15271
+ () => defaultViews.map((view) => ({
15272
+ ...view,
15273
+ share_token: "",
15274
+ table_config: extractDefaultView2(columnDefinitions, view.table_config)
15275
+ })),
15276
+ [defaultViews, columnDefinitions]
15148
15277
  );
15149
- return {
15150
- id: "default",
15151
- view_level: "default",
15152
- name,
15153
- table_config: extractedDefaultConfig
15154
- };
15155
15278
  };
15156
15279
 
15157
- // src/SavedViews/components/SavedViews/DataTable/DataTableSavedViews.tsx
15158
- var import_toast_alert4 = require("@procore/toast-alert");
15159
- var generateStickyViewsKey2 = (domain, tableName, userId, projectId, companyId) => {
15160
- return `savedView-${domain}-${tableName}-${companyId}-${projectId}-${userId}`;
15161
- };
15162
- var DataTableSavedViews = (0, import_react17.forwardRef)((props, ref) => {
15280
+ // src/components/adapters/data-table/DataTableSavedViews.tsx
15281
+ var DataTableSavedViews = (0, import_react18.forwardRef)((props, ref) => {
15163
15282
  const { tableApi, userId, projectId, companyId } = props;
15164
- const [internalTableConfig, setInternalTableConfig] = (0, import_react17.useState)(
15165
- props.defaultViewConfig
15283
+ const presetViews = useNormalizedDefaultViews2(
15284
+ props.defaultViews,
15285
+ props.columnDefinitions
15286
+ );
15287
+ const defaultView = presetViews.find((view) => view.id === "default") ?? presetViews[0];
15288
+ const [internalTableConfig, setInternalTableConfig] = (0, import_react18.useState)(
15289
+ ViewStorage.load(props.stickyViewsKey, defaultView).table_config
15166
15290
  );
15167
- (0, import_react17.useImperativeHandle)(ref, () => ({
15291
+ (0, import_react18.useImperativeHandle)(ref, () => ({
15168
15292
  setTableConfig: (newConfig) => {
15169
15293
  setInternalTableConfig(newConfig);
15170
15294
  }
15171
15295
  }));
15172
- const defaultView = useDefaultView2({
15173
- defaultViewName: props.defaultViewName,
15174
- receivedConfigFromTool: props.defaultViewConfig,
15175
- domain: props.domain,
15176
- columnDefinitions: props.columnDefinitions
15177
- });
15178
- const onSelect = (0, import_react17.useCallback)(
15296
+ const onSelect = (0, import_react18.useCallback)(
15179
15297
  ({ item }) => {
15180
- const isDefaultView = item.id === "default";
15181
- const updatedView = isDefaultView ? defaultView : {
15298
+ const isPresetView = item.view_level === "default";
15299
+ const updatedView = isPresetView ? item : {
15182
15300
  ...item,
15183
15301
  table_config: customAndConfigSync(
15184
15302
  item.table_config,
@@ -15194,14 +15312,7 @@ var DataTableSavedViews = (0, import_react17.forwardRef)((props, ref) => {
15194
15312
  if (!internalTableConfig) {
15195
15313
  return null;
15196
15314
  }
15197
- const stickyViewsKey = generateStickyViewsKey2(
15198
- props.domain,
15199
- props.tableName,
15200
- userId,
15201
- projectId,
15202
- companyId
15203
- );
15204
- return /* @__PURE__ */ import_react17.default.createElement(import_toast_alert4.ToastAlertProvider, null, /* @__PURE__ */ import_react17.default.createElement(
15315
+ return /* @__PURE__ */ import_react18.default.createElement(
15205
15316
  SavedViews,
15206
15317
  {
15207
15318
  onSelect,
@@ -15211,21 +15322,22 @@ var DataTableSavedViews = (0, import_react17.forwardRef)((props, ref) => {
15211
15322
  companyId,
15212
15323
  provider: "data-table",
15213
15324
  defaultView,
15325
+ presetViews,
15214
15326
  tableName: props.tableName,
15215
- tableConfig: internalTableConfig,
15216
- stickyViewsKey
15327
+ tableConfig: internalTableConfig
15217
15328
  }
15218
- ));
15329
+ );
15219
15330
  });
15220
15331
  DataTableSavedViews.displayName = "DataTableSavedViews";
15221
15332
  // Annotate the CommonJS export names for ESM import in node:
15222
15333
  0 && (module.exports = {
15223
15334
  DataTableSavedViews,
15224
15335
  ExpandedPanel,
15336
+ FormModal,
15225
15337
  PanelContent,
15226
15338
  SavedViewCollectionMenuItem,
15339
+ SavedViews,
15227
15340
  SavedViewsDeleteConfirmationModalShared,
15228
- SavedViewsFormModal,
15229
15341
  SmartGridSavedViews,
15230
15342
  getTranslations,
15231
15343
  useSavedViewsPanel