@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.
- package/cjs/filter-provider/FilterProvider.js +48 -33
- package/cjs/filter-provider/FilterProvider.js.map +1 -1
- package/esm/filter-provider/FilterProvider.js +48 -33
- package/esm/filter-provider/FilterProvider.js.map +1 -1
- package/package.json +11 -11
- package/types/filter-provider/FilterProvider.d.ts +2 -1
|
@@ -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(
|
|
44
|
-
|
|
45
|
-
(filterDescriptors2) =>
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
131
|
-
return
|
|
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
|
-
|
|
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(
|
|
42
|
-
|
|
43
|
-
(filterDescriptors2) =>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
129
|
-
return
|
|
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
|
-
|
|
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.
|
|
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.
|
|
8
|
-
"@vuu-ui/vuu-protocol-types": "0.13.
|
|
9
|
-
"@vuu-ui/vuu-table-types": "0.13.
|
|
10
|
-
"@vuu-ui/vuu-filter-types": "0.13.
|
|
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.
|
|
14
|
-
"@vuu-ui/vuu-filter-parser": "0.13.
|
|
15
|
-
"@vuu-ui/vuu-popups": "0.13.
|
|
16
|
-
"@vuu-ui/vuu-ui-controls": "0.13.
|
|
17
|
-
"@vuu-ui/vuu-table": "0.13.
|
|
18
|
-
"@vuu-ui/vuu-utils": "0.13.
|
|
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;
|