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

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.
@@ -14697,7 +14697,7 @@ var ViewStorage = {
14697
14697
  var getUpdatedSearchParams = (currentParams, view) => {
14698
14698
  const updatedParams = new URLSearchParams(currentParams);
14699
14699
  if (view.id === "default") {
14700
- updatedParams.delete("saved-view");
14700
+ updatedParams.set("saved-view", "default");
14701
14701
  } else if (view.id === "temporary") {
14702
14702
  updatedParams.set("saved-view", "temporary");
14703
14703
  } else {
@@ -14712,6 +14712,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14712
14712
  const storageKey = `${config.domain}_${config.tableName}_${config.stickyViewsKey}_${config.projectId}_${config.userId}`;
14713
14713
  const temporaryStorageKey = `${storageKey}_temporary`;
14714
14714
  const [searchParams, setSearchParams] = (0, import_react_router_dom.useSearchParams)();
14715
+ const previousSavedViewParamRef = (0, import_react13.useRef)(null);
14715
14716
  const [selectedSavedView, setSelectedSavedView] = (0, import_react13.useState)(() => {
14716
14717
  const stored = ViewStorage.load(storageKey);
14717
14718
  return stored ?? config.defaultView;
@@ -14730,7 +14731,9 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14730
14731
  const updateUrlForView = (0, import_react13.useCallback)(
14731
14732
  (view) => {
14732
14733
  setSearchParams(
14733
- (currentParams) => getUpdatedSearchParams(currentParams, view),
14734
+ (currentParams) => {
14735
+ return getUpdatedSearchParams(currentParams, view);
14736
+ },
14734
14737
  { replace: true }
14735
14738
  );
14736
14739
  },
@@ -14776,35 +14779,45 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14776
14779
  if (isViewAlreadySelected(viewId)) {
14777
14780
  return;
14778
14781
  }
14779
- openSharedViewModal(viewId);
14782
+ const viewInList = allViews.find((view) => view.share_token === viewId);
14783
+ if (viewInList) {
14784
+ selectView(viewInList);
14785
+ } else {
14786
+ openSharedViewModal(viewId);
14787
+ }
14780
14788
  },
14781
- [isViewAlreadySelected, openSharedViewModal]
14789
+ [isViewAlreadySelected, openSharedViewModal, allViews, selectView]
14782
14790
  );
14783
- const handleListViewFromUrl = (0, import_react13.useCallback)(() => {
14784
- if (config.defaultView.id !== (selectedSavedView == null ? void 0 : selectedSavedView.id)) {
14785
- selectView(config.defaultView);
14786
- }
14787
- }, [config.defaultView, selectedSavedView, selectView]);
14788
14791
  (0, import_react13.useEffect)(() => {
14789
14792
  if (!allViews.length)
14790
14793
  return;
14791
14794
  const savedViewId = searchParams.get("saved-view");
14792
- const viewParamFromConsumer = searchParams.get("view");
14793
14795
  if (savedViewId) {
14794
14796
  handleSavedViewFromUrl(savedViewId);
14795
- return;
14796
- }
14797
- if (viewParamFromConsumer === "list") {
14798
- handleListViewFromUrl();
14799
14797
  }
14800
14798
  }, [
14801
- searchParams,
14799
+ searchParams.get("saved-view"),
14802
14800
  savedViews,
14803
14801
  temporaryView,
14804
14802
  handleSavedViewFromUrl,
14805
- handleListViewFromUrl,
14806
14803
  allViews.length
14807
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;
14819
+ }
14820
+ }, [searchParams.get("saved-view"), setSearchParams]);
14808
14821
  return {
14809
14822
  selectedView: selectedSavedView,
14810
14823
  selectView,
@@ -14825,7 +14838,6 @@ var SavedViewsContent = (props) => {
14825
14838
  const queryInput = {
14826
14839
  domain: props.domain,
14827
14840
  tableName: props.tableName,
14828
- enableSavedViews: props.enableSavedViews,
14829
14841
  projectId,
14830
14842
  companyId
14831
14843
  };
@@ -15174,6 +15186,7 @@ var DataTableSavedViews = (0, import_react17.forwardRef)((props, ref) => {
15174
15186
  )
15175
15187
  };
15176
15188
  updateTableConfig(updatedView, tableApi, "data-table");
15189
+ setInternalTableConfig(updatedView.table_config);
15177
15190
  return updatedView;
15178
15191
  },
15179
15192
  [defaultView, tableApi]
@@ -14719,7 +14719,7 @@ var SharedViewFormModal = ({
14719
14719
  };
14720
14720
 
14721
14721
  // src/utils/Hooks/useViewSelection.ts
14722
- import { useState as useState4, useCallback as useCallback2, useEffect as useEffect3 } from "react";
14722
+ import { useState as useState4, useCallback as useCallback2, useEffect as useEffect3, useRef as useRef2 } from "react";
14723
14723
  import { useSearchParams } from "react-router-dom";
14724
14724
 
14725
14725
  // src/utils/viewStorage.ts
@@ -14744,7 +14744,7 @@ var ViewStorage = {
14744
14744
  var getUpdatedSearchParams = (currentParams, view) => {
14745
14745
  const updatedParams = new URLSearchParams(currentParams);
14746
14746
  if (view.id === "default") {
14747
- updatedParams.delete("saved-view");
14747
+ updatedParams.set("saved-view", "default");
14748
14748
  } else if (view.id === "temporary") {
14749
14749
  updatedParams.set("saved-view", "temporary");
14750
14750
  } else {
@@ -14759,6 +14759,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14759
14759
  const storageKey = `${config.domain}_${config.tableName}_${config.stickyViewsKey}_${config.projectId}_${config.userId}`;
14760
14760
  const temporaryStorageKey = `${storageKey}_temporary`;
14761
14761
  const [searchParams, setSearchParams] = useSearchParams();
14762
+ const previousSavedViewParamRef = useRef2(null);
14762
14763
  const [selectedSavedView, setSelectedSavedView] = useState4(() => {
14763
14764
  const stored = ViewStorage.load(storageKey);
14764
14765
  return stored ?? config.defaultView;
@@ -14777,7 +14778,9 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14777
14778
  const updateUrlForView = useCallback2(
14778
14779
  (view) => {
14779
14780
  setSearchParams(
14780
- (currentParams) => getUpdatedSearchParams(currentParams, view),
14781
+ (currentParams) => {
14782
+ return getUpdatedSearchParams(currentParams, view);
14783
+ },
14781
14784
  { replace: true }
14782
14785
  );
14783
14786
  },
@@ -14823,35 +14826,45 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14823
14826
  if (isViewAlreadySelected(viewId)) {
14824
14827
  return;
14825
14828
  }
14826
- openSharedViewModal(viewId);
14829
+ const viewInList = allViews.find((view) => view.share_token === viewId);
14830
+ if (viewInList) {
14831
+ selectView(viewInList);
14832
+ } else {
14833
+ openSharedViewModal(viewId);
14834
+ }
14827
14835
  },
14828
- [isViewAlreadySelected, openSharedViewModal]
14836
+ [isViewAlreadySelected, openSharedViewModal, allViews, selectView]
14829
14837
  );
14830
- const handleListViewFromUrl = useCallback2(() => {
14831
- if (config.defaultView.id !== (selectedSavedView == null ? void 0 : selectedSavedView.id)) {
14832
- selectView(config.defaultView);
14833
- }
14834
- }, [config.defaultView, selectedSavedView, selectView]);
14835
14838
  useEffect3(() => {
14836
14839
  if (!allViews.length)
14837
14840
  return;
14838
14841
  const savedViewId = searchParams.get("saved-view");
14839
- const viewParamFromConsumer = searchParams.get("view");
14840
14842
  if (savedViewId) {
14841
14843
  handleSavedViewFromUrl(savedViewId);
14842
- return;
14843
- }
14844
- if (viewParamFromConsumer === "list") {
14845
- handleListViewFromUrl();
14846
14844
  }
14847
14845
  }, [
14848
- searchParams,
14846
+ searchParams.get("saved-view"),
14849
14847
  savedViews,
14850
14848
  temporaryView,
14851
14849
  handleSavedViewFromUrl,
14852
- handleListViewFromUrl,
14853
14850
  allViews.length
14854
14851
  ]);
14852
+ useEffect3(() => {
14853
+ const currentSavedViewParam = searchParams.get("saved-view");
14854
+ if (previousSavedViewParamRef.current && !currentSavedViewParam) {
14855
+ setSearchParams(
14856
+ (currentParams) => {
14857
+ const updatedParams = new URLSearchParams(currentParams);
14858
+ updatedParams.set("saved-view", previousSavedViewParamRef.current);
14859
+ return updatedParams;
14860
+ },
14861
+ { replace: true }
14862
+ );
14863
+ }
14864
+ if (currentSavedViewParam) {
14865
+ previousSavedViewParamRef.current = currentSavedViewParam;
14866
+ }
14867
+ }, [searchParams.get("saved-view"), setSearchParams]);
14855
14868
  return {
14856
14869
  selectedView: selectedSavedView,
14857
14870
  selectView,
@@ -14872,7 +14885,6 @@ var SavedViewsContent = (props) => {
14872
14885
  const queryInput = {
14873
14886
  domain: props.domain,
14874
14887
  tableName: props.tableName,
14875
- enableSavedViews: props.enableSavedViews,
14876
14888
  projectId,
14877
14889
  companyId
14878
14890
  };
@@ -15226,6 +15238,7 @@ var DataTableSavedViews = forwardRef11((props, ref) => {
15226
15238
  )
15227
15239
  };
15228
15240
  updateTableConfig(updatedView, tableApi, "data-table");
15241
+ setInternalTableConfig(updatedView.table_config);
15229
15242
  return updatedView;
15230
15243
  },
15231
15244
  [defaultView, tableApi]
@@ -14692,7 +14692,7 @@ var ViewStorage = {
14692
14692
  var getUpdatedSearchParams = (currentParams, view) => {
14693
14693
  const updatedParams = new URLSearchParams(currentParams);
14694
14694
  if (view.id === "default") {
14695
- updatedParams.delete("saved-view");
14695
+ updatedParams.set("saved-view", "default");
14696
14696
  } else if (view.id === "temporary") {
14697
14697
  updatedParams.set("saved-view", "temporary");
14698
14698
  } else {
@@ -14707,6 +14707,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14707
14707
  const storageKey = `${config.domain}_${config.tableName}_${config.stickyViewsKey}_${config.projectId}_${config.userId}`;
14708
14708
  const temporaryStorageKey = `${storageKey}_temporary`;
14709
14709
  const [searchParams, setSearchParams] = (0, import_react_router_dom.useSearchParams)();
14710
+ const previousSavedViewParamRef = (0, import_react13.useRef)(null);
14710
14711
  const [selectedSavedView, setSelectedSavedView] = (0, import_react13.useState)(() => {
14711
14712
  const stored = ViewStorage.load(storageKey);
14712
14713
  return stored ?? config.defaultView;
@@ -14725,7 +14726,9 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14725
14726
  const updateUrlForView = (0, import_react13.useCallback)(
14726
14727
  (view) => {
14727
14728
  setSearchParams(
14728
- (currentParams) => getUpdatedSearchParams(currentParams, view),
14729
+ (currentParams) => {
14730
+ return getUpdatedSearchParams(currentParams, view);
14731
+ },
14729
14732
  { replace: true }
14730
14733
  );
14731
14734
  },
@@ -14771,35 +14774,45 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14771
14774
  if (isViewAlreadySelected(viewId)) {
14772
14775
  return;
14773
14776
  }
14774
- openSharedViewModal(viewId);
14777
+ const viewInList = allViews.find((view) => view.share_token === viewId);
14778
+ if (viewInList) {
14779
+ selectView(viewInList);
14780
+ } else {
14781
+ openSharedViewModal(viewId);
14782
+ }
14775
14783
  },
14776
- [isViewAlreadySelected, openSharedViewModal]
14784
+ [isViewAlreadySelected, openSharedViewModal, allViews, selectView]
14777
14785
  );
14778
- const handleListViewFromUrl = (0, import_react13.useCallback)(() => {
14779
- if (config.defaultView.id !== selectedSavedView?.id) {
14780
- selectView(config.defaultView);
14781
- }
14782
- }, [config.defaultView, selectedSavedView, selectView]);
14783
14786
  (0, import_react13.useEffect)(() => {
14784
14787
  if (!allViews.length)
14785
14788
  return;
14786
14789
  const savedViewId = searchParams.get("saved-view");
14787
- const viewParamFromConsumer = searchParams.get("view");
14788
14790
  if (savedViewId) {
14789
14791
  handleSavedViewFromUrl(savedViewId);
14790
- return;
14791
- }
14792
- if (viewParamFromConsumer === "list") {
14793
- handleListViewFromUrl();
14794
14792
  }
14795
14793
  }, [
14796
- searchParams,
14794
+ searchParams.get("saved-view"),
14797
14795
  savedViews,
14798
14796
  temporaryView,
14799
14797
  handleSavedViewFromUrl,
14800
- handleListViewFromUrl,
14801
14798
  allViews.length
14802
14799
  ]);
14800
+ (0, import_react13.useEffect)(() => {
14801
+ const currentSavedViewParam = searchParams.get("saved-view");
14802
+ if (previousSavedViewParamRef.current && !currentSavedViewParam) {
14803
+ setSearchParams(
14804
+ (currentParams) => {
14805
+ const updatedParams = new URLSearchParams(currentParams);
14806
+ updatedParams.set("saved-view", previousSavedViewParamRef.current);
14807
+ return updatedParams;
14808
+ },
14809
+ { replace: true }
14810
+ );
14811
+ }
14812
+ if (currentSavedViewParam) {
14813
+ previousSavedViewParamRef.current = currentSavedViewParam;
14814
+ }
14815
+ }, [searchParams.get("saved-view"), setSearchParams]);
14803
14816
  return {
14804
14817
  selectedView: selectedSavedView,
14805
14818
  selectView,
@@ -14820,7 +14833,6 @@ var SavedViewsContent = (props) => {
14820
14833
  const queryInput = {
14821
14834
  domain: props.domain,
14822
14835
  tableName: props.tableName,
14823
- enableSavedViews: props.enableSavedViews,
14824
14836
  projectId,
14825
14837
  companyId
14826
14838
  };
@@ -15168,6 +15180,7 @@ var DataTableSavedViews = (0, import_react17.forwardRef)((props, ref) => {
15168
15180
  )
15169
15181
  };
15170
15182
  updateTableConfig(updatedView, tableApi, "data-table");
15183
+ setInternalTableConfig(updatedView.table_config);
15171
15184
  return updatedView;
15172
15185
  },
15173
15186
  [defaultView, tableApi]
@@ -14714,7 +14714,7 @@ var SharedViewFormModal = ({
14714
14714
  };
14715
14715
 
14716
14716
  // src/utils/Hooks/useViewSelection.ts
14717
- import { useState as useState4, useCallback as useCallback2, useEffect as useEffect3 } from "react";
14717
+ import { useState as useState4, useCallback as useCallback2, useEffect as useEffect3, useRef as useRef2 } from "react";
14718
14718
  import { useSearchParams } from "react-router-dom";
14719
14719
 
14720
14720
  // src/utils/viewStorage.ts
@@ -14739,7 +14739,7 @@ var ViewStorage = {
14739
14739
  var getUpdatedSearchParams = (currentParams, view) => {
14740
14740
  const updatedParams = new URLSearchParams(currentParams);
14741
14741
  if (view.id === "default") {
14742
- updatedParams.delete("saved-view");
14742
+ updatedParams.set("saved-view", "default");
14743
14743
  } else if (view.id === "temporary") {
14744
14744
  updatedParams.set("saved-view", "temporary");
14745
14745
  } else {
@@ -14754,6 +14754,7 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14754
14754
  const storageKey = `${config.domain}_${config.tableName}_${config.stickyViewsKey}_${config.projectId}_${config.userId}`;
14755
14755
  const temporaryStorageKey = `${storageKey}_temporary`;
14756
14756
  const [searchParams, setSearchParams] = useSearchParams();
14757
+ const previousSavedViewParamRef = useRef2(null);
14757
14758
  const [selectedSavedView, setSelectedSavedView] = useState4(() => {
14758
14759
  const stored = ViewStorage.load(storageKey);
14759
14760
  return stored ?? config.defaultView;
@@ -14772,7 +14773,9 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14772
14773
  const updateUrlForView = useCallback2(
14773
14774
  (view) => {
14774
14775
  setSearchParams(
14775
- (currentParams) => getUpdatedSearchParams(currentParams, view),
14776
+ (currentParams) => {
14777
+ return getUpdatedSearchParams(currentParams, view);
14778
+ },
14776
14779
  { replace: true }
14777
14780
  );
14778
14781
  },
@@ -14818,35 +14821,45 @@ var useViewSelection = (config, savedViews, openSharedViewModal) => {
14818
14821
  if (isViewAlreadySelected(viewId)) {
14819
14822
  return;
14820
14823
  }
14821
- openSharedViewModal(viewId);
14824
+ const viewInList = allViews.find((view) => view.share_token === viewId);
14825
+ if (viewInList) {
14826
+ selectView(viewInList);
14827
+ } else {
14828
+ openSharedViewModal(viewId);
14829
+ }
14822
14830
  },
14823
- [isViewAlreadySelected, openSharedViewModal]
14831
+ [isViewAlreadySelected, openSharedViewModal, allViews, selectView]
14824
14832
  );
14825
- const handleListViewFromUrl = useCallback2(() => {
14826
- if (config.defaultView.id !== selectedSavedView?.id) {
14827
- selectView(config.defaultView);
14828
- }
14829
- }, [config.defaultView, selectedSavedView, selectView]);
14830
14833
  useEffect3(() => {
14831
14834
  if (!allViews.length)
14832
14835
  return;
14833
14836
  const savedViewId = searchParams.get("saved-view");
14834
- const viewParamFromConsumer = searchParams.get("view");
14835
14837
  if (savedViewId) {
14836
14838
  handleSavedViewFromUrl(savedViewId);
14837
- return;
14838
- }
14839
- if (viewParamFromConsumer === "list") {
14840
- handleListViewFromUrl();
14841
14839
  }
14842
14840
  }, [
14843
- searchParams,
14841
+ searchParams.get("saved-view"),
14844
14842
  savedViews,
14845
14843
  temporaryView,
14846
14844
  handleSavedViewFromUrl,
14847
- handleListViewFromUrl,
14848
14845
  allViews.length
14849
14846
  ]);
14847
+ useEffect3(() => {
14848
+ const currentSavedViewParam = searchParams.get("saved-view");
14849
+ if (previousSavedViewParamRef.current && !currentSavedViewParam) {
14850
+ setSearchParams(
14851
+ (currentParams) => {
14852
+ const updatedParams = new URLSearchParams(currentParams);
14853
+ updatedParams.set("saved-view", previousSavedViewParamRef.current);
14854
+ return updatedParams;
14855
+ },
14856
+ { replace: true }
14857
+ );
14858
+ }
14859
+ if (currentSavedViewParam) {
14860
+ previousSavedViewParamRef.current = currentSavedViewParam;
14861
+ }
14862
+ }, [searchParams.get("saved-view"), setSearchParams]);
14850
14863
  return {
14851
14864
  selectedView: selectedSavedView,
14852
14865
  selectView,
@@ -14867,7 +14880,6 @@ var SavedViewsContent = (props) => {
14867
14880
  const queryInput = {
14868
14881
  domain: props.domain,
14869
14882
  tableName: props.tableName,
14870
- enableSavedViews: props.enableSavedViews,
14871
14883
  projectId,
14872
14884
  companyId
14873
14885
  };
@@ -15220,6 +15232,7 @@ var DataTableSavedViews = forwardRef11((props, ref) => {
15220
15232
  )
15221
15233
  };
15222
15234
  updateTableConfig(updatedView, tableApi, "data-table");
15235
+ setInternalTableConfig(updatedView.table_config);
15223
15236
  return updatedView;
15224
15237
  },
15225
15238
  [defaultView, tableApi]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@procore/saved-views",
3
- "version": "5.1.0-alpha.2",
3
+ "version": "5.1.0-alpha.4",
4
4
  "description": "Saved Views Component for Data Table",
5
5
  "author": "Procore Technologies, Inc",
6
6
  "repository": {