@procore/saved-views 5.1.0-alpha.5 → 5.1.0-alpha.7

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.
@@ -11881,7 +11881,9 @@ var PanelContent = (props) => {
11881
11881
  const { showToast } = (0, import_toast_alert2.useToastAlertContext)();
11882
11882
  const I18n = (0, import_core_react8.useI18nContext)();
11883
11883
  const { data: savedViewsFromQuery, error: savedViewsError } = useSavedViewsQuery(props.queryInput);
11884
- const { mutate: updateSavedView, isPending: isUpdateLoading } = useUpdateSavedView(queryInput);
11884
+ const updateMutation = useUpdateSavedView(queryInput);
11885
+ const { mutate: updateSavedView } = updateMutation;
11886
+ const isUpdateLoading = "isPending" in updateMutation ? updateMutation.isPending : updateMutation.isLoading ?? false;
11885
11887
  const savedViews = props.savedViews ?? savedViewsFromQuery;
11886
11888
  const errorToastRef = import_react9.default.useRef(null);
11887
11889
  import_react9.default.useEffect(() => {
@@ -14710,9 +14712,6 @@ var SharedViewFormModal = ({
14710
14712
  );
14711
14713
  };
14712
14714
 
14713
- // src/components/saved-views/SavedViews.tsx
14714
- var import_toast_alert4 = require("@procore/toast-alert");
14715
-
14716
14715
  // src/utils/hooks/useViewSelection.ts
14717
14716
  var import_react12 = require("react");
14718
14717
  var import_react_router_dom = require("react-router-dom");
@@ -14726,8 +14725,14 @@ var ViewStorage = {
14726
14725
  load(key, defaultView) {
14727
14726
  try {
14728
14727
  const stored = localStorage.getItem(key);
14729
- return stored ? JSON.parse(stored) : null;
14730
- } catch (e2) {
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 {
14731
14736
  return defaultView;
14732
14737
  }
14733
14738
  },
@@ -14772,7 +14777,7 @@ var restoreUrlParameter = (currentParam, previousParam, setSearchParams) => {
14772
14777
  );
14773
14778
  }
14774
14779
  };
14775
- var useViewSelection = (config, savedViews, openSharedViewModal) => {
14780
+ var useViewSelection = (config, savedViews, presetViews, openSharedViewModal) => {
14776
14781
  const I18n = (0, import_core_react13.useI18nContext)();
14777
14782
  const storageKey = `savedView_${config.domain}_${config.tableName}_${config.companyId}_${config.projectId}_${config.userId}`;
14778
14783
  const temporaryStorageKey = `${storageKey}-temporary`;
@@ -14783,7 +14788,8 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14783
14788
  return stored ?? config.defaultView;
14784
14789
  });
14785
14790
  const [temporaryView, setTemporaryView] = (0, import_react12.useState)(() => {
14786
- return ViewStorage.load(temporaryStorageKey, config.defaultView);
14791
+ const loaded = ViewStorage.load(temporaryStorageKey, config.defaultView);
14792
+ return loaded && (loaded.id === "temporary" || loaded.view_level === "temporary") ? loaded : null;
14787
14793
  });
14788
14794
  const persistViewToStorageAndUrl = (0, import_react12.useCallback)(
14789
14795
  (view) => {
@@ -14792,7 +14798,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14792
14798
  },
14793
14799
  [storageKey, setSearchParams]
14794
14800
  );
14795
- const baseViews = savedViews ?? [];
14801
+ const baseViews = (0, import_react12.useMemo)(
14802
+ () => [...savedViews ?? [], ...presetViews ?? []],
14803
+ [savedViews, presetViews]
14804
+ );
14796
14805
  const allViews = (0, import_react12.useMemo)(
14797
14806
  () => temporaryView ? [...baseViews, temporaryView] : baseViews,
14798
14807
  [baseViews, temporaryView]
@@ -14804,7 +14813,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14804
14813
  persistViewToStorageAndUrl(viewToSelect);
14805
14814
  return viewToSelect;
14806
14815
  },
14807
- [config, persistViewToStorageAndUrl, temporaryView, temporaryStorageKey]
14816
+ [config, persistViewToStorageAndUrl]
14808
14817
  );
14809
14818
  const createTemporaryView = (0, import_react12.useCallback)(
14810
14819
  (fetchedView) => {
@@ -14854,17 +14863,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14854
14863
  if (savedViewId) {
14855
14864
  previousSavedViewParamRef.current = savedViewId;
14856
14865
  }
14857
- if (savedViewId && allViews.length > 0) {
14866
+ if (savedViewId && savedViews) {
14858
14867
  handleSavedViewFromUrl(savedViewId);
14859
14868
  }
14860
- }, [
14861
- searchParams,
14862
- savedViews,
14863
- temporaryView,
14864
- handleSavedViewFromUrl,
14865
- setSearchParams,
14866
- allViews.length
14867
- ]);
14869
+ }, [searchParams, handleSavedViewFromUrl, allViews.length]);
14868
14870
  return {
14869
14871
  selectedView: selectedSavedView,
14870
14872
  selectView,
@@ -14923,6 +14925,7 @@ var SavedViewsContent = (props) => {
14923
14925
  onSelect: props.onSelect
14924
14926
  },
14925
14927
  savedViews,
14928
+ props.presetViews,
14926
14929
  openSharedViewModal
14927
14930
  );
14928
14931
  const { data: fetchedView, isError: fetchError } = useFetchSavedViewById(
@@ -15061,7 +15064,7 @@ var SavedViewsContent = (props) => {
15061
15064
  ));
15062
15065
  };
15063
15066
  var SavedViews = (props) => {
15064
- 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_alert4.ToastAlertProvider, null, /* @__PURE__ */ import_react13.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 }))));
15065
15068
  };
15066
15069
 
15067
15070
  // src/components/adapters/smart-grid/SmartGridSavedViews.tsx
@@ -15106,9 +15109,9 @@ var getColumnStateFromDefs = (columnDefs) => {
15106
15109
  var extractDefaultView = (gridApi, receivedConfig) => {
15107
15110
  var _a, _b;
15108
15111
  const columnDefs = gridApi.getColumnDefs() ?? [];
15109
- const defaultColumnState = getColumnStateFromDefs(columnDefs);
15112
+ const defaultColumnState = ((_a = receivedConfig == null ? void 0 : receivedConfig.columnState) == null ? void 0 : _a.length) ? receivedConfig.columnState : getColumnStateFromDefs(columnDefs);
15110
15113
  const result = {
15111
- columnState: ((_a = receivedConfig == null ? void 0 : receivedConfig.columnState) == null ? void 0 : _a.length) ? receivedConfig.columnState : defaultColumnState,
15114
+ columnState: defaultColumnState,
15112
15115
  columnGroupState: (receivedConfig == null ? void 0 : receivedConfig.columnGroupState) ?? [],
15113
15116
  rowGroupState: (receivedConfig == null ? void 0 : receivedConfig.rowGroupState) ?? [],
15114
15117
  filterState: (receivedConfig == null ? void 0 : receivedConfig.filterState) ?? {},
@@ -15276,7 +15279,6 @@ var useNormalizedDefaultViews2 = (defaultViews, columnDefinitions) => {
15276
15279
 
15277
15280
  // src/components/adapters/data-table/DataTableSavedViews.tsx
15278
15281
  var DataTableSavedViews = (0, import_react18.forwardRef)((props, ref) => {
15279
- var _a;
15280
15282
  const { tableApi, userId, projectId, companyId } = props;
15281
15283
  const presetViews = useNormalizedDefaultViews2(
15282
15284
  props.defaultViews,
@@ -15284,7 +15286,7 @@ var DataTableSavedViews = (0, import_react18.forwardRef)((props, ref) => {
15284
15286
  );
15285
15287
  const defaultView = presetViews.find((view) => view.id === "default") ?? presetViews[0];
15286
15288
  const [internalTableConfig, setInternalTableConfig] = (0, import_react18.useState)(
15287
- ((_a = ViewStorage.load(props.stickyViewsKey, defaultView)) == null ? void 0 : _a.table_config) ?? defaultView.table_config
15289
+ ViewStorage.load(props.stickyViewsKey, defaultView).table_config
15288
15290
  );
15289
15291
  (0, import_react18.useImperativeHandle)(ref, () => ({
15290
15292
  setTableConfig: (newConfig) => {
@@ -11888,7 +11888,9 @@ var PanelContent = (props) => {
11888
11888
  const { showToast } = useToastAlertContext2();
11889
11889
  const I18n = useI18nContext5();
11890
11890
  const { data: savedViewsFromQuery, error: savedViewsError } = useSavedViewsQuery(props.queryInput);
11891
- const { mutate: updateSavedView, isPending: isUpdateLoading } = useUpdateSavedView(queryInput);
11891
+ const updateMutation = useUpdateSavedView(queryInput);
11892
+ const { mutate: updateSavedView } = updateMutation;
11893
+ const isUpdateLoading = "isPending" in updateMutation ? updateMutation.isPending : updateMutation.isLoading ?? false;
11892
11894
  const savedViews = props.savedViews ?? savedViewsFromQuery;
11893
11895
  const errorToastRef = React17.useRef(null);
11894
11896
  React17.useEffect(() => {
@@ -12015,7 +12017,7 @@ import {
12015
12017
  } from "@procore/core-react";
12016
12018
  import React22, { useState as useState4, useEffect as useEffect3, useCallback as useCallback3 } from "react";
12017
12019
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
12018
- import { useToastAlertContext as useToastAlertContext3 } from "@procore/toast-alert";
12020
+ import { useToastAlertContext as useToastAlertContext3, ToastAlertProvider } from "@procore/toast-alert";
12019
12021
 
12020
12022
  // src/components/modals/DeleteConfirmationModal.tsx
12021
12023
  import {
@@ -14754,9 +14756,6 @@ var SharedViewFormModal = ({
14754
14756
  );
14755
14757
  };
14756
14758
 
14757
- // src/components/saved-views/SavedViews.tsx
14758
- import { ToastAlertProvider } from "@procore/toast-alert";
14759
-
14760
14759
  // src/utils/hooks/useViewSelection.ts
14761
14760
  import { useState as useState3, useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useMemo } from "react";
14762
14761
  import { useSearchParams } from "react-router-dom";
@@ -14770,8 +14769,14 @@ var ViewStorage = {
14770
14769
  load(key, defaultView) {
14771
14770
  try {
14772
14771
  const stored = localStorage.getItem(key);
14773
- return stored ? JSON.parse(stored) : null;
14774
- } catch (e2) {
14772
+ if (!stored)
14773
+ return defaultView;
14774
+ const parsed = JSON.parse(stored);
14775
+ if (!parsed)
14776
+ return defaultView;
14777
+ const isTableConfigOnly = !parsed.id && !parsed.share_token;
14778
+ return isTableConfigOnly ? { ...defaultView, table_config: parsed } : parsed;
14779
+ } catch {
14775
14780
  return defaultView;
14776
14781
  }
14777
14782
  },
@@ -14816,7 +14821,7 @@ var restoreUrlParameter = (currentParam, previousParam, setSearchParams) => {
14816
14821
  );
14817
14822
  }
14818
14823
  };
14819
- var useViewSelection = (config, savedViews, openSharedViewModal) => {
14824
+ var useViewSelection = (config, savedViews, presetViews, openSharedViewModal) => {
14820
14825
  const I18n = useI18nContext10();
14821
14826
  const storageKey = `savedView_${config.domain}_${config.tableName}_${config.companyId}_${config.projectId}_${config.userId}`;
14822
14827
  const temporaryStorageKey = `${storageKey}-temporary`;
@@ -14827,7 +14832,8 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14827
14832
  return stored ?? config.defaultView;
14828
14833
  });
14829
14834
  const [temporaryView, setTemporaryView] = useState3(() => {
14830
- return ViewStorage.load(temporaryStorageKey, config.defaultView);
14835
+ const loaded = ViewStorage.load(temporaryStorageKey, config.defaultView);
14836
+ return loaded && (loaded.id === "temporary" || loaded.view_level === "temporary") ? loaded : null;
14831
14837
  });
14832
14838
  const persistViewToStorageAndUrl = useCallback2(
14833
14839
  (view) => {
@@ -14836,7 +14842,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14836
14842
  },
14837
14843
  [storageKey, setSearchParams]
14838
14844
  );
14839
- const baseViews = savedViews ?? [];
14845
+ const baseViews = useMemo(
14846
+ () => [...savedViews ?? [], ...presetViews ?? []],
14847
+ [savedViews, presetViews]
14848
+ );
14840
14849
  const allViews = useMemo(
14841
14850
  () => temporaryView ? [...baseViews, temporaryView] : baseViews,
14842
14851
  [baseViews, temporaryView]
@@ -14848,7 +14857,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14848
14857
  persistViewToStorageAndUrl(viewToSelect);
14849
14858
  return viewToSelect;
14850
14859
  },
14851
- [config, persistViewToStorageAndUrl, temporaryView, temporaryStorageKey]
14860
+ [config, persistViewToStorageAndUrl]
14852
14861
  );
14853
14862
  const createTemporaryView = useCallback2(
14854
14863
  (fetchedView) => {
@@ -14898,17 +14907,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14898
14907
  if (savedViewId) {
14899
14908
  previousSavedViewParamRef.current = savedViewId;
14900
14909
  }
14901
- if (savedViewId && allViews.length > 0) {
14910
+ if (savedViewId && savedViews) {
14902
14911
  handleSavedViewFromUrl(savedViewId);
14903
14912
  }
14904
- }, [
14905
- searchParams,
14906
- savedViews,
14907
- temporaryView,
14908
- handleSavedViewFromUrl,
14909
- setSearchParams,
14910
- allViews.length
14911
- ]);
14913
+ }, [searchParams, handleSavedViewFromUrl, allViews.length]);
14912
14914
  return {
14913
14915
  selectedView: selectedSavedView,
14914
14916
  selectView,
@@ -14967,6 +14969,7 @@ var SavedViewsContent = (props) => {
14967
14969
  onSelect: props.onSelect
14968
14970
  },
14969
14971
  savedViews,
14972
+ props.presetViews,
14970
14973
  openSharedViewModal
14971
14974
  );
14972
14975
  const { data: fetchedView, isError: fetchError } = useFetchSavedViewById(
@@ -15150,9 +15153,9 @@ var getColumnStateFromDefs = (columnDefs) => {
15150
15153
  var extractDefaultView = (gridApi, receivedConfig) => {
15151
15154
  var _a, _b;
15152
15155
  const columnDefs = gridApi.getColumnDefs() ?? [];
15153
- const defaultColumnState = getColumnStateFromDefs(columnDefs);
15156
+ const defaultColumnState = ((_a = receivedConfig == null ? void 0 : receivedConfig.columnState) == null ? void 0 : _a.length) ? receivedConfig.columnState : getColumnStateFromDefs(columnDefs);
15154
15157
  const result = {
15155
- columnState: ((_a = receivedConfig == null ? void 0 : receivedConfig.columnState) == null ? void 0 : _a.length) ? receivedConfig.columnState : defaultColumnState,
15158
+ columnState: defaultColumnState,
15156
15159
  columnGroupState: (receivedConfig == null ? void 0 : receivedConfig.columnGroupState) ?? [],
15157
15160
  rowGroupState: (receivedConfig == null ? void 0 : receivedConfig.rowGroupState) ?? [],
15158
15161
  filterState: (receivedConfig == null ? void 0 : receivedConfig.filterState) ?? {},
@@ -15325,7 +15328,6 @@ var useNormalizedDefaultViews2 = (defaultViews, columnDefinitions) => {
15325
15328
 
15326
15329
  // src/components/adapters/data-table/DataTableSavedViews.tsx
15327
15330
  var DataTableSavedViews = forwardRef11((props, ref) => {
15328
- var _a;
15329
15331
  const { tableApi, userId, projectId, companyId } = props;
15330
15332
  const presetViews = useNormalizedDefaultViews2(
15331
15333
  props.defaultViews,
@@ -15333,7 +15335,7 @@ var DataTableSavedViews = forwardRef11((props, ref) => {
15333
15335
  );
15334
15336
  const defaultView = presetViews.find((view) => view.id === "default") ?? presetViews[0];
15335
15337
  const [internalTableConfig, setInternalTableConfig] = useState6(
15336
- ((_a = ViewStorage.load(props.stickyViewsKey, defaultView)) == null ? void 0 : _a.table_config) ?? defaultView.table_config
15338
+ ViewStorage.load(props.stickyViewsKey, defaultView).table_config
15337
15339
  );
15338
15340
  useImperativeHandle(ref, () => ({
15339
15341
  setTableConfig: (newConfig) => {
@@ -11878,7 +11878,9 @@ var PanelContent = (props) => {
11878
11878
  const { showToast } = (0, import_toast_alert2.useToastAlertContext)();
11879
11879
  const I18n = (0, import_core_react8.useI18nContext)();
11880
11880
  const { data: savedViewsFromQuery, error: savedViewsError } = useSavedViewsQuery(props.queryInput);
11881
- const { mutate: updateSavedView, isPending: isUpdateLoading } = useUpdateSavedView(queryInput);
11881
+ const updateMutation = useUpdateSavedView(queryInput);
11882
+ const { mutate: updateSavedView } = updateMutation;
11883
+ const isUpdateLoading = "isPending" in updateMutation ? updateMutation.isPending : updateMutation.isLoading ?? false;
11882
11884
  const savedViews = props.savedViews ?? savedViewsFromQuery;
11883
11885
  const errorToastRef = import_react9.default.useRef(null);
11884
11886
  import_react9.default.useEffect(() => {
@@ -14707,9 +14709,6 @@ var SharedViewFormModal = ({
14707
14709
  );
14708
14710
  };
14709
14711
 
14710
- // src/components/saved-views/SavedViews.tsx
14711
- var import_toast_alert4 = require("@procore/toast-alert");
14712
-
14713
14712
  // src/utils/hooks/useViewSelection.ts
14714
14713
  var import_react12 = require("react");
14715
14714
  var import_react_router_dom = require("react-router-dom");
@@ -14723,8 +14722,14 @@ var ViewStorage = {
14723
14722
  load(key, defaultView) {
14724
14723
  try {
14725
14724
  const stored = localStorage.getItem(key);
14726
- return stored ? JSON.parse(stored) : null;
14727
- } catch (e2) {
14725
+ if (!stored)
14726
+ return defaultView;
14727
+ const parsed = JSON.parse(stored);
14728
+ if (!parsed)
14729
+ return defaultView;
14730
+ const isTableConfigOnly = !parsed.id && !parsed.share_token;
14731
+ return isTableConfigOnly ? { ...defaultView, table_config: parsed } : parsed;
14732
+ } catch {
14728
14733
  return defaultView;
14729
14734
  }
14730
14735
  },
@@ -14769,7 +14774,7 @@ var restoreUrlParameter = (currentParam, previousParam, setSearchParams) => {
14769
14774
  );
14770
14775
  }
14771
14776
  };
14772
- var useViewSelection = (config, savedViews, openSharedViewModal) => {
14777
+ var useViewSelection = (config, savedViews, presetViews, openSharedViewModal) => {
14773
14778
  const I18n = (0, import_core_react13.useI18nContext)();
14774
14779
  const storageKey = `savedView_${config.domain}_${config.tableName}_${config.companyId}_${config.projectId}_${config.userId}`;
14775
14780
  const temporaryStorageKey = `${storageKey}-temporary`;
@@ -14780,7 +14785,8 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14780
14785
  return stored ?? config.defaultView;
14781
14786
  });
14782
14787
  const [temporaryView, setTemporaryView] = (0, import_react12.useState)(() => {
14783
- return ViewStorage.load(temporaryStorageKey, config.defaultView);
14788
+ const loaded = ViewStorage.load(temporaryStorageKey, config.defaultView);
14789
+ return loaded && (loaded.id === "temporary" || loaded.view_level === "temporary") ? loaded : null;
14784
14790
  });
14785
14791
  const persistViewToStorageAndUrl = (0, import_react12.useCallback)(
14786
14792
  (view) => {
@@ -14789,7 +14795,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14789
14795
  },
14790
14796
  [storageKey, setSearchParams]
14791
14797
  );
14792
- const baseViews = savedViews ?? [];
14798
+ const baseViews = (0, import_react12.useMemo)(
14799
+ () => [...savedViews ?? [], ...presetViews ?? []],
14800
+ [savedViews, presetViews]
14801
+ );
14793
14802
  const allViews = (0, import_react12.useMemo)(
14794
14803
  () => temporaryView ? [...baseViews, temporaryView] : baseViews,
14795
14804
  [baseViews, temporaryView]
@@ -14801,7 +14810,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14801
14810
  persistViewToStorageAndUrl(viewToSelect);
14802
14811
  return viewToSelect;
14803
14812
  },
14804
- [config, persistViewToStorageAndUrl, temporaryView, temporaryStorageKey]
14813
+ [config, persistViewToStorageAndUrl]
14805
14814
  );
14806
14815
  const createTemporaryView = (0, import_react12.useCallback)(
14807
14816
  (fetchedView) => {
@@ -14851,17 +14860,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14851
14860
  if (savedViewId) {
14852
14861
  previousSavedViewParamRef.current = savedViewId;
14853
14862
  }
14854
- if (savedViewId && allViews.length > 0) {
14863
+ if (savedViewId && savedViews) {
14855
14864
  handleSavedViewFromUrl(savedViewId);
14856
14865
  }
14857
- }, [
14858
- searchParams,
14859
- savedViews,
14860
- temporaryView,
14861
- handleSavedViewFromUrl,
14862
- setSearchParams,
14863
- allViews.length
14864
- ]);
14866
+ }, [searchParams, handleSavedViewFromUrl, allViews.length]);
14865
14867
  return {
14866
14868
  selectedView: selectedSavedView,
14867
14869
  selectView,
@@ -14920,6 +14922,7 @@ var SavedViewsContent = (props) => {
14920
14922
  onSelect: props.onSelect
14921
14923
  },
14922
14924
  savedViews,
14925
+ props.presetViews,
14923
14926
  openSharedViewModal
14924
14927
  );
14925
14928
  const { data: fetchedView, isError: fetchError } = useFetchSavedViewById(
@@ -15058,7 +15061,7 @@ var SavedViewsContent = (props) => {
15058
15061
  ));
15059
15062
  };
15060
15063
  var SavedViews = (props) => {
15061
- 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_alert4.ToastAlertProvider, null, /* @__PURE__ */ import_react13.default.createElement(SavedViewsContent, { ...props }))));
15064
+ 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 }))));
15062
15065
  };
15063
15066
 
15064
15067
  // src/components/adapters/smart-grid/SmartGridSavedViews.tsx
@@ -15102,9 +15105,9 @@ var getColumnStateFromDefs = (columnDefs) => {
15102
15105
  };
15103
15106
  var extractDefaultView = (gridApi, receivedConfig) => {
15104
15107
  const columnDefs = gridApi.getColumnDefs() ?? [];
15105
- const defaultColumnState = getColumnStateFromDefs(columnDefs);
15108
+ const defaultColumnState = receivedConfig?.columnState?.length ? receivedConfig.columnState : getColumnStateFromDefs(columnDefs);
15106
15109
  const result = {
15107
- columnState: receivedConfig?.columnState?.length ? receivedConfig.columnState : defaultColumnState,
15110
+ columnState: defaultColumnState,
15108
15111
  columnGroupState: receivedConfig?.columnGroupState ?? [],
15109
15112
  rowGroupState: receivedConfig?.rowGroupState ?? [],
15110
15113
  filterState: receivedConfig?.filterState ?? {},
@@ -15278,7 +15281,7 @@ var DataTableSavedViews = (0, import_react18.forwardRef)((props, ref) => {
15278
15281
  );
15279
15282
  const defaultView = presetViews.find((view) => view.id === "default") ?? presetViews[0];
15280
15283
  const [internalTableConfig, setInternalTableConfig] = (0, import_react18.useState)(
15281
- ViewStorage.load(props.stickyViewsKey, defaultView)?.table_config ?? defaultView.table_config
15284
+ ViewStorage.load(props.stickyViewsKey, defaultView).table_config
15282
15285
  );
15283
15286
  (0, import_react18.useImperativeHandle)(ref, () => ({
15284
15287
  setTableConfig: (newConfig) => {
@@ -11885,7 +11885,9 @@ var PanelContent = (props) => {
11885
11885
  const { showToast } = useToastAlertContext2();
11886
11886
  const I18n = useI18nContext5();
11887
11887
  const { data: savedViewsFromQuery, error: savedViewsError } = useSavedViewsQuery(props.queryInput);
11888
- const { mutate: updateSavedView, isPending: isUpdateLoading } = useUpdateSavedView(queryInput);
11888
+ const updateMutation = useUpdateSavedView(queryInput);
11889
+ const { mutate: updateSavedView } = updateMutation;
11890
+ const isUpdateLoading = "isPending" in updateMutation ? updateMutation.isPending : updateMutation.isLoading ?? false;
11889
11891
  const savedViews = props.savedViews ?? savedViewsFromQuery;
11890
11892
  const errorToastRef = React17.useRef(null);
11891
11893
  React17.useEffect(() => {
@@ -12012,7 +12014,7 @@ import {
12012
12014
  } from "@procore/core-react";
12013
12015
  import React22, { useState as useState4, useEffect as useEffect3, useCallback as useCallback3 } from "react";
12014
12016
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
12015
- import { useToastAlertContext as useToastAlertContext3 } from "@procore/toast-alert";
12017
+ import { useToastAlertContext as useToastAlertContext3, ToastAlertProvider } from "@procore/toast-alert";
12016
12018
 
12017
12019
  // src/components/modals/DeleteConfirmationModal.tsx
12018
12020
  import {
@@ -14751,9 +14753,6 @@ var SharedViewFormModal = ({
14751
14753
  );
14752
14754
  };
14753
14755
 
14754
- // src/components/saved-views/SavedViews.tsx
14755
- import { ToastAlertProvider } from "@procore/toast-alert";
14756
-
14757
14756
  // src/utils/hooks/useViewSelection.ts
14758
14757
  import { useState as useState3, useCallback as useCallback2, useEffect as useEffect2, useRef as useRef2, useMemo } from "react";
14759
14758
  import { useSearchParams } from "react-router-dom";
@@ -14767,8 +14766,14 @@ var ViewStorage = {
14767
14766
  load(key, defaultView) {
14768
14767
  try {
14769
14768
  const stored = localStorage.getItem(key);
14770
- return stored ? JSON.parse(stored) : null;
14771
- } catch (e2) {
14769
+ if (!stored)
14770
+ return defaultView;
14771
+ const parsed = JSON.parse(stored);
14772
+ if (!parsed)
14773
+ return defaultView;
14774
+ const isTableConfigOnly = !parsed.id && !parsed.share_token;
14775
+ return isTableConfigOnly ? { ...defaultView, table_config: parsed } : parsed;
14776
+ } catch {
14772
14777
  return defaultView;
14773
14778
  }
14774
14779
  },
@@ -14813,7 +14818,7 @@ var restoreUrlParameter = (currentParam, previousParam, setSearchParams) => {
14813
14818
  );
14814
14819
  }
14815
14820
  };
14816
- var useViewSelection = (config, savedViews, openSharedViewModal) => {
14821
+ var useViewSelection = (config, savedViews, presetViews, openSharedViewModal) => {
14817
14822
  const I18n = useI18nContext10();
14818
14823
  const storageKey = `savedView_${config.domain}_${config.tableName}_${config.companyId}_${config.projectId}_${config.userId}`;
14819
14824
  const temporaryStorageKey = `${storageKey}-temporary`;
@@ -14824,7 +14829,8 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14824
14829
  return stored ?? config.defaultView;
14825
14830
  });
14826
14831
  const [temporaryView, setTemporaryView] = useState3(() => {
14827
- return ViewStorage.load(temporaryStorageKey, config.defaultView);
14832
+ const loaded = ViewStorage.load(temporaryStorageKey, config.defaultView);
14833
+ return loaded && (loaded.id === "temporary" || loaded.view_level === "temporary") ? loaded : null;
14828
14834
  });
14829
14835
  const persistViewToStorageAndUrl = useCallback2(
14830
14836
  (view) => {
@@ -14833,7 +14839,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14833
14839
  },
14834
14840
  [storageKey, setSearchParams]
14835
14841
  );
14836
- const baseViews = savedViews ?? [];
14842
+ const baseViews = useMemo(
14843
+ () => [...savedViews ?? [], ...presetViews ?? []],
14844
+ [savedViews, presetViews]
14845
+ );
14837
14846
  const allViews = useMemo(
14838
14847
  () => temporaryView ? [...baseViews, temporaryView] : baseViews,
14839
14848
  [baseViews, temporaryView]
@@ -14845,7 +14854,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14845
14854
  persistViewToStorageAndUrl(viewToSelect);
14846
14855
  return viewToSelect;
14847
14856
  },
14848
- [config, persistViewToStorageAndUrl, temporaryView, temporaryStorageKey]
14857
+ [config, persistViewToStorageAndUrl]
14849
14858
  );
14850
14859
  const createTemporaryView = useCallback2(
14851
14860
  (fetchedView) => {
@@ -14895,17 +14904,10 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14895
14904
  if (savedViewId) {
14896
14905
  previousSavedViewParamRef.current = savedViewId;
14897
14906
  }
14898
- if (savedViewId && allViews.length > 0) {
14907
+ if (savedViewId && savedViews) {
14899
14908
  handleSavedViewFromUrl(savedViewId);
14900
14909
  }
14901
- }, [
14902
- searchParams,
14903
- savedViews,
14904
- temporaryView,
14905
- handleSavedViewFromUrl,
14906
- setSearchParams,
14907
- allViews.length
14908
- ]);
14910
+ }, [searchParams, handleSavedViewFromUrl, allViews.length]);
14909
14911
  return {
14910
14912
  selectedView: selectedSavedView,
14911
14913
  selectView,
@@ -14964,6 +14966,7 @@ var SavedViewsContent = (props) => {
14964
14966
  onSelect: props.onSelect
14965
14967
  },
14966
14968
  savedViews,
14969
+ props.presetViews,
14967
14970
  openSharedViewModal
14968
14971
  );
14969
14972
  const { data: fetchedView, isError: fetchError } = useFetchSavedViewById(
@@ -15146,9 +15149,9 @@ var getColumnStateFromDefs = (columnDefs) => {
15146
15149
  };
15147
15150
  var extractDefaultView = (gridApi, receivedConfig) => {
15148
15151
  const columnDefs = gridApi.getColumnDefs() ?? [];
15149
- const defaultColumnState = getColumnStateFromDefs(columnDefs);
15152
+ const defaultColumnState = receivedConfig?.columnState?.length ? receivedConfig.columnState : getColumnStateFromDefs(columnDefs);
15150
15153
  const result = {
15151
- columnState: receivedConfig?.columnState?.length ? receivedConfig.columnState : defaultColumnState,
15154
+ columnState: defaultColumnState,
15152
15155
  columnGroupState: receivedConfig?.columnGroupState ?? [],
15153
15156
  rowGroupState: receivedConfig?.rowGroupState ?? [],
15154
15157
  filterState: receivedConfig?.filterState ?? {},
@@ -15327,7 +15330,7 @@ var DataTableSavedViews = forwardRef11((props, ref) => {
15327
15330
  );
15328
15331
  const defaultView = presetViews.find((view) => view.id === "default") ?? presetViews[0];
15329
15332
  const [internalTableConfig, setInternalTableConfig] = useState6(
15330
- ViewStorage.load(props.stickyViewsKey, defaultView)?.table_config ?? defaultView.table_config
15333
+ ViewStorage.load(props.stickyViewsKey, defaultView).table_config
15331
15334
  );
15332
15335
  useImperativeHandle(ref, () => ({
15333
15336
  setTableConfig: (newConfig) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@procore/saved-views",
3
- "version": "5.1.0-alpha.5",
3
+ "version": "5.1.0-alpha.7",
4
4
  "description": "Saved Views Component for Data Table",
5
5
  "author": "Procore Technologies, Inc",
6
6
  "repository": {