@vuu-ui/vuu-filters 0.13.27 → 0.13.28

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.
@@ -20,6 +20,7 @@ const FilterContext = react.createContext({
20
20
  });
21
21
  const FilterProvider = ({
22
22
  children,
23
+ onFiltersSaved,
23
24
  savedFilters = []
24
25
  }) => {
25
26
  const [filterDescriptors, setFilterDescriptors] = react.useState(savedFilters);
@@ -40,28 +41,40 @@ const FilterProvider = ({
40
41
  },
41
42
  [filterDescriptors]
42
43
  );
43
- const deleteFilter = react.useCallback((filterId) => {
44
- setFilterDescriptors(
45
- (filterDescriptors2) => filterDescriptors2.filter(({ id }) => id !== filterId)
46
- );
47
- }, []);
48
- const renameFilter = react.useCallback((filterId, filterName) => {
49
- setFilterDescriptors((currentFilterDescriptors) => {
50
- return currentFilterDescriptors.map((f) => {
51
- if (f.id === filterId) {
52
- return {
53
- ...f,
54
- filter: {
55
- ...f.filter,
56
- name: filterName
57
- }
58
- };
59
- } else {
60
- return f;
61
- }
44
+ const deleteFilter = react.useCallback(
45
+ (filterId) => {
46
+ setFilterDescriptors((filterDescriptors2) => {
47
+ const newFilterDescriptors = filterDescriptors2.filter(
48
+ ({ id }) => id !== filterId
49
+ );
50
+ onFiltersSaved?.(newFilterDescriptors);
51
+ return newFilterDescriptors;
62
52
  });
63
- });
64
- }, []);
53
+ },
54
+ [onFiltersSaved]
55
+ );
56
+ const renameFilter = react.useCallback(
57
+ (filterId, filterName) => {
58
+ setFilterDescriptors((currentFilterDescriptors) => {
59
+ const newFilterDescriptors = currentFilterDescriptors.map((f) => {
60
+ if (f.id === filterId) {
61
+ return {
62
+ ...f,
63
+ filter: {
64
+ ...f.filter,
65
+ name: filterName
66
+ }
67
+ };
68
+ } else {
69
+ return f;
70
+ }
71
+ });
72
+ onFiltersSaved?.(newFilterDescriptors);
73
+ return newFilterDescriptors;
74
+ });
75
+ },
76
+ [onFiltersSaved]
77
+ );
65
78
  const PromptForFilterName = react.useCallback(
66
79
  ({ filter, id }) => {
67
80
  const originalFilterName = filter.name ?? "";
@@ -100,7 +113,7 @@ const FilterProvider = ({
100
113
  )
101
114
  );
102
115
  },
103
- []
116
+ [deleteFilter]
104
117
  );
105
118
  const handleFilterMenuAction = react.useCallback(
106
119
  (filterId, actionType) => {
@@ -121,22 +134,23 @@ const FilterProvider = ({
121
134
  },
122
135
  [findFilter, promptForConfirmationOfDelete, PromptForFilterName]
123
136
  );
124
- const handleSaveFilter = react.useCallback((filterDescriptor) => {
125
- setFilterDescriptors((filterDescriptors2) => {
126
- if (filterDescriptor.active) {
127
- return filterDescriptors2.map(
137
+ const handleSaveFilter = react.useCallback(
138
+ (filterDescriptor) => {
139
+ setFilterDescriptors((filterDescriptors2) => {
140
+ const newFilterDescriptors = filterDescriptor.active ? filterDescriptors2.map(
128
141
  (filterDescriptor2) => filterDescriptor2.active ? { ...filterDescriptor2, active: false } : filterDescriptor2
129
- ).concat(filterDescriptor);
130
- } else {
131
- return filterDescriptors2.concat(filterDescriptor);
132
- }
133
- });
134
- }, []);
142
+ ).concat(filterDescriptor) : filterDescriptors2.concat(filterDescriptor);
143
+ onFiltersSaved?.(newFilterDescriptors);
144
+ return newFilterDescriptors;
145
+ });
146
+ },
147
+ [onFiltersSaved]
148
+ );
135
149
  const setActiveFilter = react.useCallback(
136
150
  (filterId) => {
137
151
  setFilterDescriptors((currentFilterDescriptors) => {
138
152
  const targetFilter = filterId ? findFilter(filterId) : void 0;
139
- return currentFilterDescriptors.map((f) => {
153
+ const newFilterDescriptors = currentFilterDescriptors.map((f) => {
140
154
  if (f.id === filterId) {
141
155
  return {
142
156
  ...f,
@@ -151,6 +165,7 @@ const FilterProvider = ({
151
165
  return f;
152
166
  }
153
167
  });
168
+ return newFilterDescriptors;
154
169
  });
155
170
  },
156
171
  [findFilter]
@@ -1 +1 @@
1
- {"version":3,"file":"FilterProvider.js","sources":["../../../../packages/vuu-filters/src/filter-provider/FilterProvider.tsx"],"sourcesContent":["import { FilterChangeHandler } from \"@vuu-ui/vuu-filter-types\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport { FilterMenuActionHandler } from \"../filter-pill/FilterMenu\";\nimport { FilterDescriptor } from \"../saved-filters/useSavedFilterPanel\";\nimport { FilterNamePrompt } from \"../saved-filters/FilterNamePrompt\";\nimport { DeleteFilterPrompt } from \"../saved-filters/DeleteFilterPrompt\";\n\nexport interface FilterContextProps {\n activeFilter: FilterDescriptor | undefined;\n saveFilter: (filter: FilterDescriptor) => void;\n savedFilters?: FilterDescriptor[];\n onApplyFilter: FilterChangeHandler;\n onFilterMenuAction?: FilterMenuActionHandler;\n setActiveFilter: (filterId?: string) => void;\n}\n\nexport const FilterContext = createContext<FilterContextProps>({\n activeFilter: undefined,\n savedFilters: [],\n onApplyFilter: () =>\n console.warn(\n \"[FilterContext] onApplyFilter, no FilterProvider has been configured\",\n ),\n saveFilter: () =>\n console.warn(\n \"[FilterContext] saveFilter, no FilterProvider has been configured\",\n ),\n setActiveFilter: () =>\n console.warn(\n \"[FilterContext] setActiveFilter, no FilterProvider has been configured\",\n ),\n});\n\nexport const FilterProvider = ({\n children,\n savedFilters = [],\n}: Partial<Pick<FilterContextProps, \"activeFilter\" | \"savedFilters\">> & {\n children: ReactNode;\n}) => {\n const [filterDescriptors, setFilterDescriptors] = useState(savedFilters);\n const [dialog, setDialog] = useState<ReactElement | null>(null);\n\n const handleApplyFilter = useCallback<FilterChangeHandler>(() => {\n console.log(\"filter changed\");\n }, []);\n\n const findFilter = useCallback(\n (filterId: string) => {\n const filter = filterDescriptors.find(({ id }) => id === filterId);\n if (filter) {\n return filter;\n } else {\n throw Error(\n `[FilterProvider] findFilter, filter not found ${filterId}`,\n );\n }\n },\n [filterDescriptors],\n );\n\n const deleteFilter = useCallback((filterId: string) => {\n setFilterDescriptors((filterDescriptors) =>\n filterDescriptors.filter(({ id }) => id !== filterId),\n );\n }, []);\n\n const renameFilter = useCallback((filterId: string, filterName: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n return currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n filter: {\n ...f.filter,\n name: filterName,\n },\n };\n } else {\n return f;\n }\n });\n });\n }, []);\n\n const PromptForFilterName = useCallback(\n ({ filter, id }: FilterDescriptor) => {\n const originalFilterName = filter.name ?? \"\";\n setDialog(\n <FilterNamePrompt\n filterName={filter.name}\n title=\"Rename filter\"\n onClose={() => setDialog(null)}\n onConfirm={(name) => {\n setDialog(null);\n if (originalFilterName !== name) {\n renameFilter(id, name);\n }\n }}\n />,\n );\n },\n [renameFilter],\n );\n\n const promptForConfirmationOfDelete = useCallback(\n (filterDescriptor: FilterDescriptor) => {\n setDialog(\n <DeleteFilterPrompt\n filterDescriptor={filterDescriptor}\n onConfirm={() => {\n setDialog(null);\n deleteFilter(filterDescriptor.id);\n }}\n onClose={() => setDialog(null)}\n />,\n );\n },\n [],\n );\n\n const handleFilterMenuAction = useCallback<FilterMenuActionHandler>(\n (filterId, actionType) => {\n const targetFilter = findFilter(filterId);\n switch (actionType) {\n case \"close\":\n console.log(`clode filter ${filterId}`);\n break;\n case \"edit\":\n console.log(`edit filter ${filterId}`);\n break;\n case \"remove\":\n promptForConfirmationOfDelete(targetFilter);\n break;\n case \"rename\":\n return PromptForFilterName(targetFilter);\n }\n },\n [findFilter, promptForConfirmationOfDelete, PromptForFilterName],\n );\n\n const handleSaveFilter = useCallback((filterDescriptor: FilterDescriptor) => {\n setFilterDescriptors((filterDescriptors) => {\n if (filterDescriptor.active) {\n return filterDescriptors\n .map((filterDescriptor) =>\n filterDescriptor.active\n ? { ...filterDescriptor, active: false }\n : filterDescriptor,\n )\n .concat(filterDescriptor);\n } else {\n return filterDescriptors.concat(filterDescriptor);\n }\n });\n }, []);\n\n const setActiveFilter = useCallback(\n (filterId?: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n const targetFilter = filterId ? findFilter(filterId) : undefined;\n return currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n active: !f.active,\n };\n } else if (!targetFilter?.active && f.active) {\n return {\n ...f,\n active: false,\n };\n } else {\n return f;\n }\n });\n });\n },\n [findFilter],\n );\n\n return (\n <FilterContext.Provider\n value={{\n activeFilter: filterDescriptors.find((f) => f.active),\n onApplyFilter: handleApplyFilter,\n onFilterMenuAction: handleFilterMenuAction,\n saveFilter: handleSaveFilter,\n savedFilters: filterDescriptors,\n setActiveFilter,\n }}\n >\n {children}\n {dialog}\n </FilterContext.Provider>\n );\n};\n\nexport function useActiveFilter() {\n const { activeFilter, onApplyFilter } = useContext(FilterContext);\n return { activeFilter, onApplyFilter };\n}\n\nexport function useSavedFilters() {\n const {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n } = useContext(FilterContext);\n return {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n };\n}\n"],"names":["createContext","useState","useCallback","filterDescriptors","jsx","FilterNamePrompt","DeleteFilterPrompt","filterDescriptor","jsxs","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"FilterProvider.js","sources":["../../../../packages/vuu-filters/src/filter-provider/FilterProvider.tsx"],"sourcesContent":["import { FilterChangeHandler } from \"@vuu-ui/vuu-filter-types\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport { FilterMenuActionHandler } from \"../filter-pill/FilterMenu\";\nimport { FilterDescriptor } from \"../saved-filters/useSavedFilterPanel\";\nimport { FilterNamePrompt } from \"../saved-filters/FilterNamePrompt\";\nimport { DeleteFilterPrompt } from \"../saved-filters/DeleteFilterPrompt\";\n\nexport interface FilterContextProps {\n activeFilter: FilterDescriptor | undefined;\n saveFilter: (filter: FilterDescriptor) => void;\n savedFilters?: FilterDescriptor[];\n onApplyFilter: FilterChangeHandler;\n onFilterMenuAction?: FilterMenuActionHandler;\n setActiveFilter: (filterId?: string) => void;\n}\n\nexport const FilterContext = createContext<FilterContextProps>({\n activeFilter: undefined,\n savedFilters: [],\n onApplyFilter: () =>\n console.warn(\n \"[FilterContext] onApplyFilter, no FilterProvider has been configured\",\n ),\n saveFilter: () =>\n console.warn(\n \"[FilterContext] saveFilter, no FilterProvider has been configured\",\n ),\n setActiveFilter: () =>\n console.warn(\n \"[FilterContext] setActiveFilter, no FilterProvider has been configured\",\n ),\n});\n\nexport const FilterProvider = ({\n children,\n onFiltersSaved,\n savedFilters = [],\n}: Partial<Pick<FilterContextProps, \"activeFilter\" | \"savedFilters\">> & {\n children: ReactNode;\n onFiltersSaved?: (filterDescriptors: FilterDescriptor[]) => void;\n}) => {\n const [filterDescriptors, setFilterDescriptors] = useState(savedFilters);\n const [dialog, setDialog] = useState<ReactElement | null>(null);\n\n const handleApplyFilter = useCallback<FilterChangeHandler>(() => {\n console.log(\"filter changed\");\n }, []);\n\n const findFilter = useCallback(\n (filterId: string) => {\n const filter = filterDescriptors.find(({ id }) => id === filterId);\n if (filter) {\n return filter;\n } else {\n throw Error(\n `[FilterProvider] findFilter, filter not found ${filterId}`,\n );\n }\n },\n [filterDescriptors],\n );\n\n const deleteFilter = useCallback(\n (filterId: string) => {\n setFilterDescriptors((filterDescriptors) => {\n const newFilterDescriptors = filterDescriptors.filter(\n ({ id }) => id !== filterId,\n );\n onFiltersSaved?.(newFilterDescriptors);\n return newFilterDescriptors;\n });\n },\n [onFiltersSaved],\n );\n\n const renameFilter = useCallback(\n (filterId: string, filterName: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n const newFilterDescriptors =\n currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n filter: {\n ...f.filter,\n name: filterName,\n },\n };\n } else {\n return f;\n }\n });\n onFiltersSaved?.(newFilterDescriptors);\n return newFilterDescriptors;\n });\n },\n [onFiltersSaved],\n );\n\n const PromptForFilterName = useCallback(\n ({ filter, id }: FilterDescriptor) => {\n const originalFilterName = filter.name ?? \"\";\n setDialog(\n <FilterNamePrompt\n filterName={filter.name}\n title=\"Rename filter\"\n onClose={() => setDialog(null)}\n onConfirm={(name) => {\n setDialog(null);\n if (originalFilterName !== name) {\n renameFilter(id, name);\n }\n }}\n />,\n );\n },\n [renameFilter],\n );\n\n const promptForConfirmationOfDelete = useCallback(\n (filterDescriptor: FilterDescriptor) => {\n setDialog(\n <DeleteFilterPrompt\n filterDescriptor={filterDescriptor}\n onConfirm={() => {\n setDialog(null);\n deleteFilter(filterDescriptor.id);\n }}\n onClose={() => setDialog(null)}\n />,\n );\n },\n [deleteFilter],\n );\n\n const handleFilterMenuAction = useCallback<FilterMenuActionHandler>(\n (filterId, actionType) => {\n const targetFilter = findFilter(filterId);\n switch (actionType) {\n case \"close\":\n console.log(`clode filter ${filterId}`);\n break;\n case \"edit\":\n console.log(`edit filter ${filterId}`);\n break;\n case \"remove\":\n promptForConfirmationOfDelete(targetFilter);\n break;\n case \"rename\":\n return PromptForFilterName(targetFilter);\n }\n },\n [findFilter, promptForConfirmationOfDelete, PromptForFilterName],\n );\n\n const handleSaveFilter = useCallback(\n (filterDescriptor: FilterDescriptor) => {\n setFilterDescriptors((filterDescriptors) => {\n const newFilterDescriptors = filterDescriptor.active\n ? filterDescriptors\n .map((filterDescriptor) =>\n filterDescriptor.active\n ? { ...filterDescriptor, active: false }\n : filterDescriptor,\n )\n .concat(filterDescriptor)\n : filterDescriptors.concat(filterDescriptor);\n onFiltersSaved?.(newFilterDescriptors);\n return newFilterDescriptors;\n });\n },\n [onFiltersSaved],\n );\n\n const setActiveFilter = useCallback(\n (filterId?: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n const targetFilter = filterId ? findFilter(filterId) : undefined;\n const newFilterDescriptors =\n currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n active: !f.active,\n };\n } else if (!targetFilter?.active && f.active) {\n return {\n ...f,\n active: false,\n };\n } else {\n return f;\n }\n });\n return newFilterDescriptors;\n });\n },\n [findFilter],\n );\n\n return (\n <FilterContext.Provider\n value={{\n activeFilter: filterDescriptors.find((f) => f.active),\n onApplyFilter: handleApplyFilter,\n onFilterMenuAction: handleFilterMenuAction,\n saveFilter: handleSaveFilter,\n savedFilters: filterDescriptors,\n setActiveFilter,\n }}\n >\n {children}\n {dialog}\n </FilterContext.Provider>\n );\n};\n\nexport function useActiveFilter() {\n const { activeFilter, onApplyFilter } = useContext(FilterContext);\n return { activeFilter, onApplyFilter };\n}\n\nexport function useSavedFilters() {\n const {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n } = useContext(FilterContext);\n return {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n };\n}\n"],"names":["createContext","useState","useCallback","filterDescriptors","jsx","FilterNamePrompt","DeleteFilterPrompt","filterDescriptor","jsxs","useContext"],"mappings":"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"}
@@ -18,6 +18,7 @@ const FilterContext = createContext({
18
18
  });
19
19
  const FilterProvider = ({
20
20
  children,
21
+ onFiltersSaved,
21
22
  savedFilters = []
22
23
  }) => {
23
24
  const [filterDescriptors, setFilterDescriptors] = useState(savedFilters);
@@ -38,28 +39,40 @@ const FilterProvider = ({
38
39
  },
39
40
  [filterDescriptors]
40
41
  );
41
- const deleteFilter = useCallback((filterId) => {
42
- setFilterDescriptors(
43
- (filterDescriptors2) => filterDescriptors2.filter(({ id }) => id !== filterId)
44
- );
45
- }, []);
46
- const renameFilter = useCallback((filterId, filterName) => {
47
- setFilterDescriptors((currentFilterDescriptors) => {
48
- return currentFilterDescriptors.map((f) => {
49
- if (f.id === filterId) {
50
- return {
51
- ...f,
52
- filter: {
53
- ...f.filter,
54
- name: filterName
55
- }
56
- };
57
- } else {
58
- return f;
59
- }
42
+ const deleteFilter = useCallback(
43
+ (filterId) => {
44
+ setFilterDescriptors((filterDescriptors2) => {
45
+ const newFilterDescriptors = filterDescriptors2.filter(
46
+ ({ id }) => id !== filterId
47
+ );
48
+ onFiltersSaved?.(newFilterDescriptors);
49
+ return newFilterDescriptors;
60
50
  });
61
- });
62
- }, []);
51
+ },
52
+ [onFiltersSaved]
53
+ );
54
+ const renameFilter = useCallback(
55
+ (filterId, filterName) => {
56
+ setFilterDescriptors((currentFilterDescriptors) => {
57
+ const newFilterDescriptors = currentFilterDescriptors.map((f) => {
58
+ if (f.id === filterId) {
59
+ return {
60
+ ...f,
61
+ filter: {
62
+ ...f.filter,
63
+ name: filterName
64
+ }
65
+ };
66
+ } else {
67
+ return f;
68
+ }
69
+ });
70
+ onFiltersSaved?.(newFilterDescriptors);
71
+ return newFilterDescriptors;
72
+ });
73
+ },
74
+ [onFiltersSaved]
75
+ );
63
76
  const PromptForFilterName = useCallback(
64
77
  ({ filter, id }) => {
65
78
  const originalFilterName = filter.name ?? "";
@@ -98,7 +111,7 @@ const FilterProvider = ({
98
111
  )
99
112
  );
100
113
  },
101
- []
114
+ [deleteFilter]
102
115
  );
103
116
  const handleFilterMenuAction = useCallback(
104
117
  (filterId, actionType) => {
@@ -119,22 +132,23 @@ const FilterProvider = ({
119
132
  },
120
133
  [findFilter, promptForConfirmationOfDelete, PromptForFilterName]
121
134
  );
122
- const handleSaveFilter = useCallback((filterDescriptor) => {
123
- setFilterDescriptors((filterDescriptors2) => {
124
- if (filterDescriptor.active) {
125
- return filterDescriptors2.map(
135
+ const handleSaveFilter = useCallback(
136
+ (filterDescriptor) => {
137
+ setFilterDescriptors((filterDescriptors2) => {
138
+ const newFilterDescriptors = filterDescriptor.active ? filterDescriptors2.map(
126
139
  (filterDescriptor2) => filterDescriptor2.active ? { ...filterDescriptor2, active: false } : filterDescriptor2
127
- ).concat(filterDescriptor);
128
- } else {
129
- return filterDescriptors2.concat(filterDescriptor);
130
- }
131
- });
132
- }, []);
140
+ ).concat(filterDescriptor) : filterDescriptors2.concat(filterDescriptor);
141
+ onFiltersSaved?.(newFilterDescriptors);
142
+ return newFilterDescriptors;
143
+ });
144
+ },
145
+ [onFiltersSaved]
146
+ );
133
147
  const setActiveFilter = useCallback(
134
148
  (filterId) => {
135
149
  setFilterDescriptors((currentFilterDescriptors) => {
136
150
  const targetFilter = filterId ? findFilter(filterId) : void 0;
137
- return currentFilterDescriptors.map((f) => {
151
+ const newFilterDescriptors = currentFilterDescriptors.map((f) => {
138
152
  if (f.id === filterId) {
139
153
  return {
140
154
  ...f,
@@ -149,6 +163,7 @@ const FilterProvider = ({
149
163
  return f;
150
164
  }
151
165
  });
166
+ return newFilterDescriptors;
152
167
  });
153
168
  },
154
169
  [findFilter]
@@ -1 +1 @@
1
- {"version":3,"file":"FilterProvider.js","sources":["../../../../packages/vuu-filters/src/filter-provider/FilterProvider.tsx"],"sourcesContent":["import { FilterChangeHandler } from \"@vuu-ui/vuu-filter-types\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport { FilterMenuActionHandler } from \"../filter-pill/FilterMenu\";\nimport { FilterDescriptor } from \"../saved-filters/useSavedFilterPanel\";\nimport { FilterNamePrompt } from \"../saved-filters/FilterNamePrompt\";\nimport { DeleteFilterPrompt } from \"../saved-filters/DeleteFilterPrompt\";\n\nexport interface FilterContextProps {\n activeFilter: FilterDescriptor | undefined;\n saveFilter: (filter: FilterDescriptor) => void;\n savedFilters?: FilterDescriptor[];\n onApplyFilter: FilterChangeHandler;\n onFilterMenuAction?: FilterMenuActionHandler;\n setActiveFilter: (filterId?: string) => void;\n}\n\nexport const FilterContext = createContext<FilterContextProps>({\n activeFilter: undefined,\n savedFilters: [],\n onApplyFilter: () =>\n console.warn(\n \"[FilterContext] onApplyFilter, no FilterProvider has been configured\",\n ),\n saveFilter: () =>\n console.warn(\n \"[FilterContext] saveFilter, no FilterProvider has been configured\",\n ),\n setActiveFilter: () =>\n console.warn(\n \"[FilterContext] setActiveFilter, no FilterProvider has been configured\",\n ),\n});\n\nexport const FilterProvider = ({\n children,\n savedFilters = [],\n}: Partial<Pick<FilterContextProps, \"activeFilter\" | \"savedFilters\">> & {\n children: ReactNode;\n}) => {\n const [filterDescriptors, setFilterDescriptors] = useState(savedFilters);\n const [dialog, setDialog] = useState<ReactElement | null>(null);\n\n const handleApplyFilter = useCallback<FilterChangeHandler>(() => {\n console.log(\"filter changed\");\n }, []);\n\n const findFilter = useCallback(\n (filterId: string) => {\n const filter = filterDescriptors.find(({ id }) => id === filterId);\n if (filter) {\n return filter;\n } else {\n throw Error(\n `[FilterProvider] findFilter, filter not found ${filterId}`,\n );\n }\n },\n [filterDescriptors],\n );\n\n const deleteFilter = useCallback((filterId: string) => {\n setFilterDescriptors((filterDescriptors) =>\n filterDescriptors.filter(({ id }) => id !== filterId),\n );\n }, []);\n\n const renameFilter = useCallback((filterId: string, filterName: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n return currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n filter: {\n ...f.filter,\n name: filterName,\n },\n };\n } else {\n return f;\n }\n });\n });\n }, []);\n\n const PromptForFilterName = useCallback(\n ({ filter, id }: FilterDescriptor) => {\n const originalFilterName = filter.name ?? \"\";\n setDialog(\n <FilterNamePrompt\n filterName={filter.name}\n title=\"Rename filter\"\n onClose={() => setDialog(null)}\n onConfirm={(name) => {\n setDialog(null);\n if (originalFilterName !== name) {\n renameFilter(id, name);\n }\n }}\n />,\n );\n },\n [renameFilter],\n );\n\n const promptForConfirmationOfDelete = useCallback(\n (filterDescriptor: FilterDescriptor) => {\n setDialog(\n <DeleteFilterPrompt\n filterDescriptor={filterDescriptor}\n onConfirm={() => {\n setDialog(null);\n deleteFilter(filterDescriptor.id);\n }}\n onClose={() => setDialog(null)}\n />,\n );\n },\n [],\n );\n\n const handleFilterMenuAction = useCallback<FilterMenuActionHandler>(\n (filterId, actionType) => {\n const targetFilter = findFilter(filterId);\n switch (actionType) {\n case \"close\":\n console.log(`clode filter ${filterId}`);\n break;\n case \"edit\":\n console.log(`edit filter ${filterId}`);\n break;\n case \"remove\":\n promptForConfirmationOfDelete(targetFilter);\n break;\n case \"rename\":\n return PromptForFilterName(targetFilter);\n }\n },\n [findFilter, promptForConfirmationOfDelete, PromptForFilterName],\n );\n\n const handleSaveFilter = useCallback((filterDescriptor: FilterDescriptor) => {\n setFilterDescriptors((filterDescriptors) => {\n if (filterDescriptor.active) {\n return filterDescriptors\n .map((filterDescriptor) =>\n filterDescriptor.active\n ? { ...filterDescriptor, active: false }\n : filterDescriptor,\n )\n .concat(filterDescriptor);\n } else {\n return filterDescriptors.concat(filterDescriptor);\n }\n });\n }, []);\n\n const setActiveFilter = useCallback(\n (filterId?: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n const targetFilter = filterId ? findFilter(filterId) : undefined;\n return currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n active: !f.active,\n };\n } else if (!targetFilter?.active && f.active) {\n return {\n ...f,\n active: false,\n };\n } else {\n return f;\n }\n });\n });\n },\n [findFilter],\n );\n\n return (\n <FilterContext.Provider\n value={{\n activeFilter: filterDescriptors.find((f) => f.active),\n onApplyFilter: handleApplyFilter,\n onFilterMenuAction: handleFilterMenuAction,\n saveFilter: handleSaveFilter,\n savedFilters: filterDescriptors,\n setActiveFilter,\n }}\n >\n {children}\n {dialog}\n </FilterContext.Provider>\n );\n};\n\nexport function useActiveFilter() {\n const { activeFilter, onApplyFilter } = useContext(FilterContext);\n return { activeFilter, onApplyFilter };\n}\n\nexport function useSavedFilters() {\n const {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n } = useContext(FilterContext);\n return {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n };\n}\n"],"names":["filterDescriptors","filterDescriptor"],"mappings":"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"}
1
+ {"version":3,"file":"FilterProvider.js","sources":["../../../../packages/vuu-filters/src/filter-provider/FilterProvider.tsx"],"sourcesContent":["import { FilterChangeHandler } from \"@vuu-ui/vuu-filter-types\";\nimport {\n createContext,\n ReactElement,\n ReactNode,\n useCallback,\n useContext,\n useState,\n} from \"react\";\nimport { FilterMenuActionHandler } from \"../filter-pill/FilterMenu\";\nimport { FilterDescriptor } from \"../saved-filters/useSavedFilterPanel\";\nimport { FilterNamePrompt } from \"../saved-filters/FilterNamePrompt\";\nimport { DeleteFilterPrompt } from \"../saved-filters/DeleteFilterPrompt\";\n\nexport interface FilterContextProps {\n activeFilter: FilterDescriptor | undefined;\n saveFilter: (filter: FilterDescriptor) => void;\n savedFilters?: FilterDescriptor[];\n onApplyFilter: FilterChangeHandler;\n onFilterMenuAction?: FilterMenuActionHandler;\n setActiveFilter: (filterId?: string) => void;\n}\n\nexport const FilterContext = createContext<FilterContextProps>({\n activeFilter: undefined,\n savedFilters: [],\n onApplyFilter: () =>\n console.warn(\n \"[FilterContext] onApplyFilter, no FilterProvider has been configured\",\n ),\n saveFilter: () =>\n console.warn(\n \"[FilterContext] saveFilter, no FilterProvider has been configured\",\n ),\n setActiveFilter: () =>\n console.warn(\n \"[FilterContext] setActiveFilter, no FilterProvider has been configured\",\n ),\n});\n\nexport const FilterProvider = ({\n children,\n onFiltersSaved,\n savedFilters = [],\n}: Partial<Pick<FilterContextProps, \"activeFilter\" | \"savedFilters\">> & {\n children: ReactNode;\n onFiltersSaved?: (filterDescriptors: FilterDescriptor[]) => void;\n}) => {\n const [filterDescriptors, setFilterDescriptors] = useState(savedFilters);\n const [dialog, setDialog] = useState<ReactElement | null>(null);\n\n const handleApplyFilter = useCallback<FilterChangeHandler>(() => {\n console.log(\"filter changed\");\n }, []);\n\n const findFilter = useCallback(\n (filterId: string) => {\n const filter = filterDescriptors.find(({ id }) => id === filterId);\n if (filter) {\n return filter;\n } else {\n throw Error(\n `[FilterProvider] findFilter, filter not found ${filterId}`,\n );\n }\n },\n [filterDescriptors],\n );\n\n const deleteFilter = useCallback(\n (filterId: string) => {\n setFilterDescriptors((filterDescriptors) => {\n const newFilterDescriptors = filterDescriptors.filter(\n ({ id }) => id !== filterId,\n );\n onFiltersSaved?.(newFilterDescriptors);\n return newFilterDescriptors;\n });\n },\n [onFiltersSaved],\n );\n\n const renameFilter = useCallback(\n (filterId: string, filterName: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n const newFilterDescriptors =\n currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n filter: {\n ...f.filter,\n name: filterName,\n },\n };\n } else {\n return f;\n }\n });\n onFiltersSaved?.(newFilterDescriptors);\n return newFilterDescriptors;\n });\n },\n [onFiltersSaved],\n );\n\n const PromptForFilterName = useCallback(\n ({ filter, id }: FilterDescriptor) => {\n const originalFilterName = filter.name ?? \"\";\n setDialog(\n <FilterNamePrompt\n filterName={filter.name}\n title=\"Rename filter\"\n onClose={() => setDialog(null)}\n onConfirm={(name) => {\n setDialog(null);\n if (originalFilterName !== name) {\n renameFilter(id, name);\n }\n }}\n />,\n );\n },\n [renameFilter],\n );\n\n const promptForConfirmationOfDelete = useCallback(\n (filterDescriptor: FilterDescriptor) => {\n setDialog(\n <DeleteFilterPrompt\n filterDescriptor={filterDescriptor}\n onConfirm={() => {\n setDialog(null);\n deleteFilter(filterDescriptor.id);\n }}\n onClose={() => setDialog(null)}\n />,\n );\n },\n [deleteFilter],\n );\n\n const handleFilterMenuAction = useCallback<FilterMenuActionHandler>(\n (filterId, actionType) => {\n const targetFilter = findFilter(filterId);\n switch (actionType) {\n case \"close\":\n console.log(`clode filter ${filterId}`);\n break;\n case \"edit\":\n console.log(`edit filter ${filterId}`);\n break;\n case \"remove\":\n promptForConfirmationOfDelete(targetFilter);\n break;\n case \"rename\":\n return PromptForFilterName(targetFilter);\n }\n },\n [findFilter, promptForConfirmationOfDelete, PromptForFilterName],\n );\n\n const handleSaveFilter = useCallback(\n (filterDescriptor: FilterDescriptor) => {\n setFilterDescriptors((filterDescriptors) => {\n const newFilterDescriptors = filterDescriptor.active\n ? filterDescriptors\n .map((filterDescriptor) =>\n filterDescriptor.active\n ? { ...filterDescriptor, active: false }\n : filterDescriptor,\n )\n .concat(filterDescriptor)\n : filterDescriptors.concat(filterDescriptor);\n onFiltersSaved?.(newFilterDescriptors);\n return newFilterDescriptors;\n });\n },\n [onFiltersSaved],\n );\n\n const setActiveFilter = useCallback(\n (filterId?: string) => {\n setFilterDescriptors((currentFilterDescriptors) => {\n const targetFilter = filterId ? findFilter(filterId) : undefined;\n const newFilterDescriptors =\n currentFilterDescriptors.map<FilterDescriptor>((f) => {\n if (f.id === filterId) {\n return {\n ...f,\n active: !f.active,\n };\n } else if (!targetFilter?.active && f.active) {\n return {\n ...f,\n active: false,\n };\n } else {\n return f;\n }\n });\n return newFilterDescriptors;\n });\n },\n [findFilter],\n );\n\n return (\n <FilterContext.Provider\n value={{\n activeFilter: filterDescriptors.find((f) => f.active),\n onApplyFilter: handleApplyFilter,\n onFilterMenuAction: handleFilterMenuAction,\n saveFilter: handleSaveFilter,\n savedFilters: filterDescriptors,\n setActiveFilter,\n }}\n >\n {children}\n {dialog}\n </FilterContext.Provider>\n );\n};\n\nexport function useActiveFilter() {\n const { activeFilter, onApplyFilter } = useContext(FilterContext);\n return { activeFilter, onApplyFilter };\n}\n\nexport function useSavedFilters() {\n const {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n } = useContext(FilterContext);\n return {\n activeFilter,\n onApplyFilter,\n onFilterMenuAction,\n savedFilters,\n saveFilter,\n setActiveFilter,\n };\n}\n"],"names":["filterDescriptors","filterDescriptor"],"mappings":"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"}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
- "version": "0.13.27",
2
+ "version": "0.13.28",
3
3
  "author": "heswell",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "devDependencies": {
7
- "@vuu-ui/vuu-data-types": "0.13.27",
8
- "@vuu-ui/vuu-protocol-types": "0.13.27",
9
- "@vuu-ui/vuu-table-types": "0.13.27",
10
- "@vuu-ui/vuu-filter-types": "0.13.27"
7
+ "@vuu-ui/vuu-data-types": "0.13.28",
8
+ "@vuu-ui/vuu-protocol-types": "0.13.28",
9
+ "@vuu-ui/vuu-table-types": "0.13.28",
10
+ "@vuu-ui/vuu-filter-types": "0.13.28"
11
11
  },
12
12
  "dependencies": {
13
- "@vuu-ui/vuu-data-react": "0.13.27",
14
- "@vuu-ui/vuu-filter-parser": "0.13.27",
15
- "@vuu-ui/vuu-popups": "0.13.27",
16
- "@vuu-ui/vuu-ui-controls": "0.13.27",
17
- "@vuu-ui/vuu-table": "0.13.27",
18
- "@vuu-ui/vuu-utils": "0.13.27",
13
+ "@vuu-ui/vuu-data-react": "0.13.28",
14
+ "@vuu-ui/vuu-filter-parser": "0.13.28",
15
+ "@vuu-ui/vuu-popups": "0.13.28",
16
+ "@vuu-ui/vuu-ui-controls": "0.13.28",
17
+ "@vuu-ui/vuu-table": "0.13.28",
18
+ "@vuu-ui/vuu-utils": "0.13.28",
19
19
  "@salt-ds/core": "1.43.0",
20
20
  "@salt-ds/styles": "0.2.1",
21
21
  "@salt-ds/window": "0.1.1"
@@ -11,8 +11,9 @@ export interface FilterContextProps {
11
11
  setActiveFilter: (filterId?: string) => void;
12
12
  }
13
13
  export declare const FilterContext: import("react").Context<FilterContextProps>;
14
- export declare const FilterProvider: ({ children, savedFilters, }: Partial<Pick<FilterContextProps, "activeFilter" | "savedFilters">> & {
14
+ export declare const FilterProvider: ({ children, onFiltersSaved, savedFilters, }: Partial<Pick<FilterContextProps, "activeFilter" | "savedFilters">> & {
15
15
  children: ReactNode;
16
+ onFiltersSaved?: (filterDescriptors: FilterDescriptor[]) => void;
16
17
  }) => import("react/jsx-runtime").JSX.Element;
17
18
  export declare function useActiveFilter(): {
18
19
  activeFilter: FilterDescriptor | undefined;