@procore/saved-views 6.0.2 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -134,7 +134,15 @@ const MyDataTableView = () => {
134
134
  const savedViewsWrapperRef = useRef<IDataTableSavedViewsRef>(null);
135
135
 
136
136
  // Panel visibility control
137
- const { SavedViewsButton, isOpen: isPanelOpen } = useSavedViewsPanel('your_domain', 'your_table');
137
+ // `SavedViewsProvider` is required if you want the `SavedViewsButton` label
138
+ // to display the currently active view name (e.g. "Views: My View"). Wrap
139
+ // the subtree that contains both the button and the `<DataTableSavedViews>`
140
+ // / `<SavedViews>` component below.
141
+ const {
142
+ SavedViewsButton,
143
+ SavedViewsProvider,
144
+ isOpen: isPanelOpen,
145
+ } = useSavedViewsPanel('your_domain', 'your_table');
138
146
  ```
139
147
 
140
148
  **Key Points**:
@@ -181,6 +189,7 @@ const defaultViewConfig = useMemo(
181
189
 
182
190
  ```tsx
183
191
  return (
192
+ <SavedViewsProvider>
184
193
  <div className="table-with-saved-views">
185
194
  <ServerSideDataTable
186
195
  columnDefinitions={columnDefinitions}
@@ -227,7 +236,7 @@ const defaultViewConfig = useMemo(
227
236
  {/* Top Controls */}
228
237
  <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '12px' }}>
229
238
  <div style={{ display: 'flex', gap: '8px' }}>
230
- <SavedViewsButton /> {/* Toggle saved views panel */}
239
+ <SavedViewsButton /> {/* Toggle saved views panel; shows active view name when wrapped in <SavedViewsProvider> */}
231
240
  <ServerSideDataTable.Search />
232
241
  <ServerSideDataTable.FiltersPanelButton />
233
242
  </div>
@@ -253,6 +262,7 @@ const defaultViewConfig = useMemo(
253
262
  </div>
254
263
  </ServerSideDataTable>
255
264
  </div>
265
+ </SavedViewsProvider>
256
266
  );
257
267
  };
258
268
  ```
@@ -263,6 +273,7 @@ const defaultViewConfig = useMemo(
263
273
  2. **API Sharing**: `tableApi={tableApi}` gives saved views control over table state
264
274
  3. **Config Sync**: `onTableConfigChange={handleTableConfigChange}` keeps everything in sync
265
275
  4. **Layout**: Saved views typically go in a left sidebar with fixed width
276
+ 5. **Active view label**: Wrapping the subtree in `<SavedViewsProvider>` lets the toggle button display the currently active view name (e.g. "Views: All RFIs"). The provider is a no-op when omitted, so existing integrations continue to render the plain "Views" label.
266
277
 
267
278
  ---
268
279
 
@@ -1,6 +1,6 @@
1
1
  import { Locale } from '@procore/globalization-toolkit';
2
2
  import * as React$1 from 'react';
3
- import React__default from 'react';
3
+ import React__default, { PropsWithChildren } from 'react';
4
4
  import { DataTableConfig, TableApi, ColumnDefinition } from '@procore/data-table';
5
5
  import { ColumnState, FilterModel, GridApi } from 'ag-grid-community';
6
6
  import * as _procore_core_react_dist_Panel_Panel_types from '@procore/core-react/dist/Panel/Panel.types';
@@ -12,6 +12,7 @@ declare function getTranslations(envLocale: Locale): Record<string, object>;
12
12
  declare const useSavedViewsPanel: (domain: string, tableName: string) => {
13
13
  isOpen: boolean;
14
14
  SavedViewsButton: () => React__default.JSX.Element;
15
+ SavedViewsProvider: ({ children, }: React__default.PropsWithChildren) => React__default.JSX.Element;
15
16
  };
16
17
 
17
18
  interface IQueryInputProps {
@@ -116,6 +117,13 @@ interface IPanelContentProps {
116
117
  onClearTemporary?: () => void;
117
118
  }
118
119
 
120
+ interface SavedViewsSelectionContextValue {
121
+ selectedView: ISavedView | null;
122
+ setSelectedView: (view: ISavedView | null) => void;
123
+ }
124
+ declare const SavedViewsSelectionProvider: ({ children, }: PropsWithChildren) => React__default.JSX.Element;
125
+ declare const useSavedViewsSelection: () => SavedViewsSelectionContextValue | null;
126
+
119
127
  type SavedViewCollectionMenuItemProps = {
120
128
  item: ISavedView;
121
129
  key?: string;
@@ -189,4 +197,4 @@ interface IDataTableSavedViewsRef {
189
197
  }
190
198
  declare const DataTableSavedViews: React__default.ForwardRefExoticComponent<IDataTableSavedViewsExternalConsumerProps & React__default.RefAttributes<IDataTableSavedViewsRef>>;
191
199
 
192
- export { DataTableSavedViews, ExpandedPanel, FormModal, type IDataTableDefaultViewConfig, type IDataTableSavedViewsRef, type ISmartGridDefaultViewConfig, PanelContent, SavedViewCollectionMenuItem, SavedViews, SavedViewsDeleteConfirmationModalShared, SmartGridSavedViews, getTranslations, useSavedViewsPanel };
200
+ export { DataTableSavedViews, ExpandedPanel, FormModal, type IDataTableDefaultViewConfig, type IDataTableSavedViewsRef, type ISmartGridDefaultViewConfig, PanelContent, SavedViewCollectionMenuItem, SavedViews, SavedViewsDeleteConfirmationModalShared, type SavedViewsSelectionContextValue, SavedViewsSelectionProvider, SmartGridSavedViews, getTranslations, useSavedViewsPanel, useSavedViewsSelection };
@@ -1,6 +1,6 @@
1
1
  import { Locale } from '@procore/globalization-toolkit';
2
2
  import * as React$1 from 'react';
3
- import React__default from 'react';
3
+ import React__default, { PropsWithChildren } from 'react';
4
4
  import { DataTableConfig, TableApi, ColumnDefinition } from '@procore/data-table';
5
5
  import { ColumnState, FilterModel, GridApi } from 'ag-grid-community';
6
6
  import * as _procore_core_react_dist_Panel_Panel_types from '@procore/core-react/dist/Panel/Panel.types';
@@ -12,6 +12,7 @@ declare function getTranslations(envLocale: Locale): Record<string, object>;
12
12
  declare const useSavedViewsPanel: (domain: string, tableName: string) => {
13
13
  isOpen: boolean;
14
14
  SavedViewsButton: () => React__default.JSX.Element;
15
+ SavedViewsProvider: ({ children, }: React__default.PropsWithChildren) => React__default.JSX.Element;
15
16
  };
16
17
 
17
18
  interface IQueryInputProps {
@@ -116,6 +117,13 @@ interface IPanelContentProps {
116
117
  onClearTemporary?: () => void;
117
118
  }
118
119
 
120
+ interface SavedViewsSelectionContextValue {
121
+ selectedView: ISavedView | null;
122
+ setSelectedView: (view: ISavedView | null) => void;
123
+ }
124
+ declare const SavedViewsSelectionProvider: ({ children, }: PropsWithChildren) => React__default.JSX.Element;
125
+ declare const useSavedViewsSelection: () => SavedViewsSelectionContextValue | null;
126
+
119
127
  type SavedViewCollectionMenuItemProps = {
120
128
  item: ISavedView;
121
129
  key?: string;
@@ -189,4 +197,4 @@ interface IDataTableSavedViewsRef {
189
197
  }
190
198
  declare const DataTableSavedViews: React__default.ForwardRefExoticComponent<IDataTableSavedViewsExternalConsumerProps & React__default.RefAttributes<IDataTableSavedViewsRef>>;
191
199
 
192
- export { DataTableSavedViews, ExpandedPanel, FormModal, type IDataTableDefaultViewConfig, type IDataTableSavedViewsRef, type ISmartGridDefaultViewConfig, PanelContent, SavedViewCollectionMenuItem, SavedViews, SavedViewsDeleteConfirmationModalShared, SmartGridSavedViews, getTranslations, useSavedViewsPanel };
200
+ export { DataTableSavedViews, ExpandedPanel, FormModal, type IDataTableDefaultViewConfig, type IDataTableSavedViewsRef, type ISmartGridDefaultViewConfig, PanelContent, SavedViewCollectionMenuItem, SavedViews, SavedViewsDeleteConfirmationModalShared, type SavedViewsSelectionContextValue, SavedViewsSelectionProvider, SmartGridSavedViews, getTranslations, useSavedViewsPanel, useSavedViewsSelection };