@primershop/strapi-plugin-status-manager 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/admin/{components/StatusManager.js → HomePage-BbFD1aF1.js} +46 -4
  2. package/dist/admin/HomePage-BbFD1aF1.js.map +1 -0
  3. package/dist/admin/{components/StatusManager.mjs → HomePage-DQXfjVgM.mjs} +46 -4
  4. package/dist/admin/HomePage-DQXfjVgM.mjs.map +1 -0
  5. package/dist/admin/index.js +239 -16
  6. package/dist/admin/index.js.map +1 -1
  7. package/dist/admin/index.mjs +230 -7
  8. package/dist/admin/index.mjs.map +1 -1
  9. package/package.json +1 -1
  10. package/dist/admin/components/Initializer.js +0 -17
  11. package/dist/admin/components/Initializer.js.map +0 -1
  12. package/dist/admin/components/Initializer.mjs +0 -15
  13. package/dist/admin/components/Initializer.mjs.map +0 -1
  14. package/dist/admin/components/PluginIcon.js +0 -9
  15. package/dist/admin/components/PluginIcon.js.map +0 -1
  16. package/dist/admin/components/PluginIcon.mjs +0 -7
  17. package/dist/admin/components/PluginIcon.mjs.map +0 -1
  18. package/dist/admin/components/ProductStatusField.js +0 -104
  19. package/dist/admin/components/ProductStatusField.js.map +0 -1
  20. package/dist/admin/components/ProductStatusField.mjs +0 -102
  21. package/dist/admin/components/ProductStatusField.mjs.map +0 -1
  22. package/dist/admin/components/StatusManager.js.map +0 -1
  23. package/dist/admin/components/StatusManager.mjs.map +0 -1
  24. package/dist/admin/listView/StatusFilter.js +0 -76
  25. package/dist/admin/listView/StatusFilter.js.map +0 -1
  26. package/dist/admin/listView/StatusFilter.mjs +0 -74
  27. package/dist/admin/listView/StatusFilter.mjs.map +0 -1
  28. package/dist/admin/listView/add-status-column-hook.js +0 -34
  29. package/dist/admin/listView/add-status-column-hook.js.map +0 -1
  30. package/dist/admin/listView/add-status-column-hook.mjs +0 -32
  31. package/dist/admin/listView/add-status-column-hook.mjs.map +0 -1
  32. package/dist/admin/listView/status-cell.js +0 -28
  33. package/dist/admin/listView/status-cell.js.map +0 -1
  34. package/dist/admin/listView/status-cell.mjs +0 -26
  35. package/dist/admin/listView/status-cell.mjs.map +0 -1
  36. package/dist/admin/pages/HomePage.js +0 -51
  37. package/dist/admin/pages/HomePage.js.map +0 -1
  38. package/dist/admin/pages/HomePage.mjs +0 -49
  39. package/dist/admin/pages/HomePage.mjs.map +0 -1
  40. package/dist/admin/pluginId.js +0 -6
  41. package/dist/admin/pluginId.js.map +0 -1
  42. package/dist/admin/pluginId.mjs +0 -4
  43. package/dist/admin/pluginId.mjs.map +0 -1
@@ -1,9 +1,232 @@
1
- import { Initializer } from './components/Initializer.mjs';
2
- import { PluginIcon } from './components/PluginIcon.mjs';
3
- import { ProductStatusField } from './components/ProductStatusField.mjs';
4
- import { PLUGIN_ID } from './pluginId.mjs';
5
- import { addStatusColumnHook } from './listView/add-status-column-hook.mjs';
6
- import { StatusFilter } from './listView/StatusFilter.mjs';
1
+ import React, { useRef, useEffect, useState, useCallback } from 'react';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { CheckCircle } from '@strapi/icons';
4
+ import { Flex, Box, Typography, SingleSelect, SingleSelectOption } from '@strapi/design-system';
5
+ import { unstable_useContentManagerContext, useFetchClient, useQueryParams } from '@strapi/strapi/admin';
6
+
7
+ const PLUGIN_ID = "primershop-status-manager";
8
+
9
+ /**
10
+ * @type {import('react').FC<{ setPlugin: (id: string) => void }>}
11
+ */ const Initializer = ({ setPlugin })=>{
12
+ const ref = useRef(setPlugin);
13
+ useEffect(()=>{
14
+ ref.current(PLUGIN_ID);
15
+ }, []);
16
+ return null;
17
+ };
18
+
19
+ const PluginIcon = ()=>/*#__PURE__*/ jsx(CheckCircle, {});
20
+
21
+ const ProductStatusField = ()=>{
22
+ const { contentType, id } = unstable_useContentManagerContext();
23
+ const [statuses, setStatuses] = useState([]);
24
+ const [currentStatus, setCurrentStatus] = useState("");
25
+ const [message, setMessage] = useState("");
26
+ const { get, put } = useFetchClient();
27
+ const handleStatusChange = useCallback(async (newStatus)=>{
28
+ if (!id) {
29
+ setMessage("Save the product first and then change the status");
30
+ return;
31
+ }
32
+ try {
33
+ await put(`primershop-status-manager/content-status`, {
34
+ contentTypeUid: "api::product.product",
35
+ contentDocumentId: id,
36
+ statusId: statuses.find((status)=>status.name === newStatus)?.documentId
37
+ });
38
+ setMessage(`Status updated ${currentStatus ? `from ${currentStatus}` : ""} to ${newStatus}`);
39
+ setCurrentStatus(newStatus || "");
40
+ } catch (error) {
41
+ setMessage("Error updating status");
42
+ console.error("Error updating status:", error);
43
+ }
44
+ }, [
45
+ id,
46
+ statuses,
47
+ currentStatus,
48
+ put
49
+ ]);
50
+ useEffect(()=>{
51
+ async function fetchCurrentStatus() {
52
+ try {
53
+ const { data: productData } = await get(`primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`);
54
+ const status = productData?.status;
55
+ if (status && status.name) return setCurrentStatus(status.name);
56
+ if (statuses.length) return handleStatusChange(statuses[0].name);
57
+ } catch (error) {
58
+ console.error("Error fetching product status:", error);
59
+ }
60
+ }
61
+ if (id && !currentStatus.length) fetchCurrentStatus();
62
+ if (!id && statuses.length) setCurrentStatus(statuses[0].name);
63
+ }, [
64
+ id,
65
+ statuses,
66
+ get
67
+ ]);
68
+ useEffect(()=>{
69
+ async function fetchStatuses() {
70
+ try {
71
+ const { data } = await get("primershop-status-manager/statuses");
72
+ setStatuses(data);
73
+ } catch (error) {
74
+ console.error("Error fetching statuses:", error);
75
+ }
76
+ }
77
+ fetchStatuses();
78
+ }, [
79
+ get
80
+ ]);
81
+ return /*#__PURE__*/ jsxs(Flex, {
82
+ direction: "column",
83
+ justifyContent: "center",
84
+ alignItems: "stretch",
85
+ width: "100%",
86
+ children: [
87
+ /*#__PURE__*/ jsx(Box, {
88
+ padding: 2,
89
+ children: /*#__PURE__*/ jsxs(Typography, {
90
+ variant: "sigma",
91
+ children: [
92
+ contentType?.info.displayName,
93
+ " status"
94
+ ]
95
+ })
96
+ }),
97
+ /*#__PURE__*/ jsx(SingleSelect, {
98
+ placeholder: currentStatus,
99
+ onChange: handleStatusChange,
100
+ children: statuses.map((status)=>/*#__PURE__*/ jsx(SingleSelectOption, {
101
+ value: status.name,
102
+ children: status.name
103
+ }, status.documentId))
104
+ }),
105
+ /*#__PURE__*/ jsx(Box, {
106
+ padding: 2,
107
+ children: /*#__PURE__*/ jsx(Typography, {
108
+ variant: "sigma",
109
+ children: message
110
+ })
111
+ })
112
+ ]
113
+ });
114
+ };
115
+
116
+ const StatusCell = ({ row })=>{
117
+ const [status, setStatus] = useState(null);
118
+ useEffect(()=>{
119
+ setStatus(row.statusField);
120
+ }, [
121
+ row
122
+ ]);
123
+ if (!status) return null;
124
+ return /*#__PURE__*/ jsx("span", {
125
+ style: {
126
+ padding: "4px 8px",
127
+ borderRadius: 4,
128
+ background: status.published ? "#eafbe7" : "#f0f0ff",
129
+ color: status.published ? "#2f6846" : "#271fe0",
130
+ border: `1px solid ${status.published ? "#2f6846" : "#271fe0"}`,
131
+ fontSize: 14
132
+ },
133
+ children: status.name
134
+ });
135
+ };
136
+
137
+ const addStatusColumnHook = ({ displayedHeaders, layout })=>{
138
+ const statusHeader = {
139
+ attribute: {
140
+ type: "custom"
141
+ },
142
+ name: "statusLabel",
143
+ label: {
144
+ id: "primershop-status-manager.status",
145
+ defaultMessage: "Status"
146
+ },
147
+ searchable: false,
148
+ sortable: false,
149
+ cellFormatter: (row)=>{
150
+ return React.createElement(StatusCell, {
151
+ row
152
+ });
153
+ }
154
+ };
155
+ return {
156
+ displayedHeaders: [
157
+ ...displayedHeaders,
158
+ statusHeader
159
+ ],
160
+ layout
161
+ };
162
+ };
163
+
164
+ const StatusFilter = ()=>{
165
+ const { contentType } = unstable_useContentManagerContext();
166
+ const [statuses, setStatuses] = useState([]);
167
+ const [selected, setSelected] = useState("");
168
+ const { get } = useFetchClient();
169
+ const [{ query }, setQuery] = useQueryParams();
170
+ const handleStatusChange = useCallback((name)=>{
171
+ setQuery({
172
+ page: 1,
173
+ plugins: {
174
+ ...query.plugins,
175
+ "primershop-status-manager": {
176
+ statusName: name.toLowerCase()
177
+ }
178
+ }
179
+ }, "push", true);
180
+ }, [
181
+ query.plugins,
182
+ setQuery
183
+ ]);
184
+ useEffect(()=>{
185
+ const selectedStatusName = query.plugins?.["primershop-status-manager"]?.statusName;
186
+ if (!selectedStatusName) return;
187
+ const status = statuses.find((status)=>status.name.toLowerCase() === selectedStatusName);
188
+ if (status) {
189
+ setSelected(status.name);
190
+ }
191
+ }, [
192
+ query,
193
+ statuses
194
+ ]);
195
+ useEffect(()=>{
196
+ async function fetchStatuses() {
197
+ try {
198
+ const { data } = await get("primershop-status-manager/statuses");
199
+ const allStatusesObject = {
200
+ documentId: "all",
201
+ name: "All"
202
+ };
203
+ setStatuses([
204
+ allStatusesObject,
205
+ ...data
206
+ ]);
207
+ } catch (error) {
208
+ console.error("Error fetching statuses:", error);
209
+ }
210
+ }
211
+ fetchStatuses();
212
+ }, [
213
+ get
214
+ ]);
215
+ return /*#__PURE__*/ jsx(Flex, {
216
+ direction: "column",
217
+ justifyContent: "center",
218
+ children: /*#__PURE__*/ jsx(SingleSelect, {
219
+ size: "S",
220
+ placeholder: `${contentType?.info.displayName} status`,
221
+ value: selected,
222
+ onChange: handleStatusChange,
223
+ children: statuses.map((status)=>/*#__PURE__*/ jsx(SingleSelectOption, {
224
+ value: status.name,
225
+ children: status.name
226
+ }, status.documentId))
227
+ })
228
+ });
229
+ };
7
230
 
8
231
  const plugin = {
9
232
  register (app) {
@@ -21,7 +244,7 @@ const plugin = {
21
244
  defaultMessage: "Status manager"
22
245
  },
23
246
  permissions: [],
24
- Component: ()=>import('./pages/HomePage.mjs').then((module)=>({
247
+ Component: ()=>import('./HomePage-DQXfjVgM.mjs').then((module)=>({
25
248
  default: module.HomePage
26
249
  }))
27
250
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../admin/src/index.ts"],"sourcesContent":["import { Initializer } from \"./components/Initializer\";\r\nimport { PluginIcon } from \"./components/PluginIcon\";\r\nimport { ProductStatusField } from \"./components/ProductStatusField\";\r\nimport { PLUGIN_ID } from \"./pluginId\";\r\nimport { addStatusColumnHook } from \"./listView/add-status-column-hook\";\r\n\r\nimport type { StrapiApp } from \"@strapi/admin/strapi-admin\";\r\nimport { StatusFilter } from \"./listView/StatusFilter\";\r\n\r\nconst plugin = {\r\n register(app: StrapiApp) {\r\n app.registerPlugin({\r\n id: PLUGIN_ID,\r\n initializer: Initializer,\r\n isReady: true,\r\n name: PLUGIN_ID,\r\n });\r\n\r\n app.addMenuLink({\r\n to: `plugins/${PLUGIN_ID}`,\r\n icon: PluginIcon,\r\n intlLabel: {\r\n id: `${PLUGIN_ID}.plugin.name`,\r\n defaultMessage: \"Status manager\",\r\n },\r\n permissions: [],\r\n Component: () =>\r\n import(\"./pages/HomePage\").then((module) => ({\r\n default: module.HomePage,\r\n })),\r\n });\r\n },\r\n bootstrap(app: StrapiApp) {\r\n app\r\n .getPlugin(\"content-manager\")\r\n .injectComponent(\"editView\", \"right-links\", {\r\n name: \"Status\",\r\n Component: ProductStatusField,\r\n });\r\n\r\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addStatusColumnHook);\r\n\r\n const contentManager = app.getPlugin('content-manager');\r\n contentManager.injectComponent('listView', 'actions', {\r\n name: 'status-filter',\r\n Component: StatusFilter,\r\n });\r\n },\r\n};\r\n\r\nexport default plugin;\r\n"],"names":["plugin","register","app","registerPlugin","id","PLUGIN_ID","initializer","Initializer","isReady","name","addMenuLink","to","icon","PluginIcon","intlLabel","defaultMessage","permissions","Component","then","module","default","HomePage","bootstrap","getPlugin","injectComponent","ProductStatusField","registerHook","addStatusColumnHook","contentManager","StatusFilter"],"mappings":";;;;;;;AASA,MAAMA,MAAAA,GAAS;AACbC,IAAAA,QAAAA,CAAAA,CAASC,GAAc,EAAA;AACrBA,QAAAA,GAAAA,CAAIC,cAAc,CAAC;YACjBC,EAAAA,EAAIC,SAAAA;YACJC,WAAAA,EAAaC,WAAAA;YACbC,OAAAA,EAAS,IAAA;YACTC,IAAAA,EAAMJ;AACR,SAAA,CAAA;AAEAH,QAAAA,GAAAA,CAAIQ,WAAW,CAAC;YACdC,EAAAA,EAAI,CAAC,QAAQ,EAAEN,SAAAA,CAAAA,CAAW;YAC1BO,IAAAA,EAAMC,UAAAA;YACNC,SAAAA,EAAW;gBACTV,EAAAA,EAAI,CAAA,EAAGC,SAAAA,CAAU,YAAY,CAAC;gBAC9BU,cAAAA,EAAgB;AAClB,aAAA;AACAC,YAAAA,WAAAA,EAAa,EAAE;YACfC,SAAAA,EAAW,IACT,OAAO,sBAAA,CAAA,CAAoBC,IAAI,CAAC,CAACC,UAAY;AAC3CC,wBAAAA,OAAAA,EAASD,OAAOE;qBAClB,CAAA;AACJ,SAAA,CAAA;AACF,IAAA,CAAA;AACAC,IAAAA,SAAAA,CAAAA,CAAUpB,GAAc,EAAA;AACtBA,QAAAA,GAAAA,CACGqB,SAAS,CAAC,iBAAA,CAAA,CACVC,eAAe,CAAC,YAAY,aAAA,EAAe;YAC1Cf,IAAAA,EAAM,QAAA;YACNQ,SAAAA,EAAWQ;AACb,SAAA,CAAA;QAEFvB,GAAAA,CAAIwB,YAAY,CAAC,gDAAA,EAAkDC,mBAAAA,CAAAA;QAEnE,MAAMC,cAAAA,GAAiB1B,GAAAA,CAAIqB,SAAS,CAAC,iBAAA,CAAA;QACrCK,cAAAA,CAAeJ,eAAe,CAAC,UAAA,EAAY,SAAA,EAAW;YACpDf,IAAAA,EAAM,eAAA;YACNQ,SAAAA,EAAWY;AACb,SAAA,CAAA;AACF,IAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/components/ProductStatusField.tsx","../../admin/src/listView/status-cell.tsx","../../admin/src/listView/add-status-column-hook.ts","../../admin/src/listView/StatusFilter.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = \"primershop-status-manager\";\r\n","import { useEffect, useRef } from \"react\";\r\n\r\nimport { PLUGIN_ID } from \"../pluginId\";\r\n\r\n/**\r\n * @type {import('react').FC<{ setPlugin: (id: string) => void }>}\r\n */\r\nconst Initializer = ({ setPlugin }: { setPlugin: (id: string) => void }) => {\r\n const ref = useRef(setPlugin);\r\n\r\n useEffect(() => {\r\n ref.current(PLUGIN_ID);\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nexport { Initializer };\r\n","import { CheckCircle } from \"@strapi/icons\";\r\n\r\nconst PluginIcon = () => <CheckCircle />;\r\n\r\nexport { PluginIcon };\r\n","import React, { useEffect, useState, useCallback } from \"react\";\r\n\r\nimport {\r\n SingleSelect,\r\n SingleSelectOption,\r\n Box,\r\n Typography,\r\n Flex,\r\n} from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n} from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst ProductStatusField = () => {\r\n const { contentType, id } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [currentStatus, setCurrentStatus] = useState(\"\");\r\n const [message, setMessage] = useState(\"\");\r\n const { get, put } = useFetchClient();\r\n\r\n const handleStatusChange = useCallback(\r\n async (newStatus: string) => {\r\n if (!id) {\r\n setMessage(\"Save the product first and then change the status\");\r\n return;\r\n }\r\n try {\r\n await put(`primershop-status-manager/content-status`, {\r\n contentTypeUid: \"api::product.product\",\r\n contentDocumentId: id,\r\n statusId: statuses.find((status) => status.name === newStatus)\r\n ?.documentId,\r\n });\r\n setMessage(\r\n `Status updated ${currentStatus ? `from ${currentStatus}` : \"\"} to ${newStatus}`\r\n );\r\n setCurrentStatus(newStatus || \"\");\r\n } catch (error) {\r\n setMessage(\"Error updating status\");\r\n console.error(\"Error updating status:\", error);\r\n }\r\n },\r\n [id, statuses, currentStatus, put]\r\n );\r\n\r\n useEffect(() => {\r\n async function fetchCurrentStatus() {\r\n try {\r\n const { data: productData } = await get(\r\n `primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`\r\n );\r\n const status = productData?.status;\r\n if (status && status.name) return setCurrentStatus(status.name);\r\n if (statuses.length) return handleStatusChange(statuses[0].name);\r\n } catch (error) {\r\n console.error(\"Error fetching product status:\", error);\r\n }\r\n }\r\n if (id && !currentStatus.length) fetchCurrentStatus();\r\n if (!id && statuses.length) setCurrentStatus(statuses[0].name);\r\n }, [id, statuses, get]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n justifyContent=\"center\"\r\n alignItems=\"stretch\"\r\n width=\"100%\"\r\n >\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">\r\n {contentType?.info.displayName} status\r\n </Typography>\r\n </Box>\r\n <SingleSelect placeholder={currentStatus} onChange={handleStatusChange}>\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">{message}</Typography>\r\n </Box>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { ProductStatusField };\r\n","import { useState, useEffect } from \"react\";\r\n\r\n\r\ntype Status = {\r\n id: number;\r\n name: string;\r\n published: boolean;\r\n order: number;\r\n}\r\n\r\n\r\nexport const StatusCell = ({ row }: { row: any;}) => {\r\n const [status, setStatus] = useState<Status | null>(null);\r\n\r\n useEffect(() => {\r\n setStatus(row.statusField);\r\n }, [row]);\r\n\r\n if (!status) return null;\r\n return (\r\n <span style={{\r\n padding: \"4px 8px\",\r\n borderRadius: 4,\r\n background: status.published ? \"#eafbe7\" : \"#f0f0ff\",\r\n color: status.published ? \"#2f6846\" : \"#271fe0\",\r\n border: `1px solid ${status.published ? \"#2f6846\" : \"#271fe0\"}`,\r\n fontSize: 14,\r\n }}>\r\n {status.name}\r\n </span>\r\n );\r\n};\r\n\r\n\r\n","import { StatusCell } from \"./status-cell\";\r\nimport {\r\n ListFieldLayout,\r\n ListLayout,\r\n} from \"@strapi/content-manager/strapi-admin\";\r\nimport React from \"react\";\r\nimport { AnyDocument } from \"@strapi/types/dist/modules/documents\";\r\n\r\ninterface AddColumnToTableHookArgs {\r\n layout: ListLayout;\r\n displayedHeaders: ListFieldLayout[];\r\n}\r\nexport const addStatusColumnHook = ({\r\n displayedHeaders,\r\n layout,\r\n}: AddColumnToTableHookArgs) => {\r\n const statusHeader = {\r\n attribute: { type: \"custom\" },\r\n name: \"statusLabel\",\r\n label: { id: \"primershop-status-manager.status\", defaultMessage: \"Status\" },\r\n searchable: false,\r\n sortable: false,\r\n cellFormatter: (row: AnyDocument) => {\r\n return React.createElement(StatusCell, { row });\r\n },\r\n };\r\n\r\n return {\r\n displayedHeaders: [...displayedHeaders, statusHeader],\r\n layout,\r\n };\r\n};\r\n","import { useCallback, useEffect, useState } from \"react\";\r\n\r\nimport { SingleSelect, SingleSelectOption, Flex } from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n useQueryParams,\r\n} from \"@strapi/strapi/admin\";\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst StatusFilter = () => {\r\n const { contentType } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [selected, setSelected] = useState<string | undefined>(\"\");\r\n const { get } = useFetchClient();\r\n const [{ query }, setQuery] = useQueryParams<{\r\n page: number;\r\n plugins: { \"primershop-status-manager\": { statusName: string } };\r\n }>();\r\n\r\n const handleStatusChange = useCallback(\r\n (name: string) => {\r\n setQuery(\r\n {\r\n page: 1,\r\n plugins: {\r\n ...query.plugins,\r\n \"primershop-status-manager\": { statusName: name.toLowerCase() },\r\n },\r\n },\r\n \"push\",\r\n true\r\n );\r\n },\r\n\r\n [query.plugins, setQuery]\r\n );\r\n\r\n useEffect(() => {\r\n const selectedStatusName =\r\n query.plugins?.[\"primershop-status-manager\"]?.statusName;\r\n if (!selectedStatusName) return;\r\n const status = statuses.find(\r\n (status) => status.name.toLowerCase() === selectedStatusName\r\n );\r\n if (status) {\r\n setSelected(status.name);\r\n }\r\n }, [query, statuses]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n const allStatusesObject = {\r\n documentId: \"all\",\r\n name: \"All\",\r\n };\r\n setStatuses([allStatusesObject, ...data]);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex direction=\"column\" justifyContent=\"center\">\r\n <SingleSelect\r\n size=\"S\"\r\n placeholder={`${contentType?.info.displayName} status`}\r\n value={selected}\r\n onChange={handleStatusChange}\r\n >\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { StatusFilter };\r\n","import { Initializer } from \"./components/Initializer\";\r\nimport { PluginIcon } from \"./components/PluginIcon\";\r\nimport { ProductStatusField } from \"./components/ProductStatusField\";\r\nimport { PLUGIN_ID } from \"./pluginId\";\r\nimport { addStatusColumnHook } from \"./listView/add-status-column-hook\";\r\n\r\nimport type { StrapiApp } from \"@strapi/admin/strapi-admin\";\r\nimport { StatusFilter } from \"./listView/StatusFilter\";\r\n\r\nconst plugin = {\r\n register(app: StrapiApp) {\r\n app.registerPlugin({\r\n id: PLUGIN_ID,\r\n initializer: Initializer,\r\n isReady: true,\r\n name: PLUGIN_ID,\r\n });\r\n\r\n app.addMenuLink({\r\n to: `plugins/${PLUGIN_ID}`,\r\n icon: PluginIcon,\r\n intlLabel: {\r\n id: `${PLUGIN_ID}.plugin.name`,\r\n defaultMessage: \"Status manager\",\r\n },\r\n permissions: [],\r\n Component: () =>\r\n import(\"./pages/HomePage\").then((module) => ({\r\n default: module.HomePage,\r\n })),\r\n });\r\n },\r\n bootstrap(app: StrapiApp) {\r\n app\r\n .getPlugin(\"content-manager\")\r\n .injectComponent(\"editView\", \"right-links\", {\r\n name: \"Status\",\r\n Component: ProductStatusField,\r\n });\r\n\r\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addStatusColumnHook);\r\n\r\n const contentManager = app.getPlugin('content-manager');\r\n contentManager.injectComponent('listView', 'actions', {\r\n name: 'status-filter',\r\n Component: StatusFilter,\r\n });\r\n },\r\n};\r\n\r\nexport default plugin;\r\n"],"names":["PLUGIN_ID","Initializer","setPlugin","ref","useRef","useEffect","current","PluginIcon","_jsx","CheckCircle","ProductStatusField","contentType","id","useContentManagerContext","statuses","setStatuses","useState","currentStatus","setCurrentStatus","message","setMessage","get","put","useFetchClient","handleStatusChange","useCallback","newStatus","contentTypeUid","contentDocumentId","statusId","find","status","name","documentId","error","console","fetchCurrentStatus","data","productData","length","fetchStatuses","_jsxs","Flex","direction","justifyContent","alignItems","width","Box","padding","Typography","variant","info","displayName","SingleSelect","placeholder","onChange","map","SingleSelectOption","value","StatusCell","row","setStatus","statusField","span","style","borderRadius","background","published","color","border","fontSize","addStatusColumnHook","displayedHeaders","layout","statusHeader","attribute","type","label","defaultMessage","searchable","sortable","cellFormatter","React","createElement","StatusFilter","selected","setSelected","query","setQuery","useQueryParams","page","plugins","statusName","toLowerCase","selectedStatusName","allStatusesObject","size","plugin","register","app","registerPlugin","initializer","isReady","addMenuLink","to","icon","intlLabel","permissions","Component","then","module","default","HomePage","bootstrap","getPlugin","injectComponent","registerHook","contentManager"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primershop/strapi-plugin-status-manager",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Enables more status variations for Strapi",
5
5
  "exports": {
6
6
  "./strapi-admin": {
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var pluginId = require('../pluginId.js');
5
-
6
- /**
7
- * @type {import('react').FC<{ setPlugin: (id: string) => void }>}
8
- */ const Initializer = ({ setPlugin })=>{
9
- const ref = React.useRef(setPlugin);
10
- React.useEffect(()=>{
11
- ref.current(pluginId.PLUGIN_ID);
12
- }, []);
13
- return null;
14
- };
15
-
16
- exports.Initializer = Initializer;
17
- //# sourceMappingURL=Initializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Initializer.js","sources":["../../../admin/src/components/Initializer.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\r\n\r\nimport { PLUGIN_ID } from \"../pluginId\";\r\n\r\n/**\r\n * @type {import('react').FC<{ setPlugin: (id: string) => void }>}\r\n */\r\nconst Initializer = ({ setPlugin }: { setPlugin: (id: string) => void }) => {\r\n const ref = useRef(setPlugin);\r\n\r\n useEffect(() => {\r\n ref.current(PLUGIN_ID);\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nexport { Initializer };\r\n"],"names":["Initializer","setPlugin","ref","useRef","useEffect","current","PLUGIN_ID"],"mappings":";;;;;AAIA;;AAEC,IACD,MAAMA,WAAAA,GAAc,CAAC,EAAEC,SAAS,EAAuC,GAAA;AACrE,IAAA,MAAMC,MAAMC,YAAAA,CAAOF,SAAAA,CAAAA;IAEnBG,eAAAA,CAAU,IAAA;AACRF,QAAAA,GAAAA,CAAIG,OAAO,CAACC,kBAAAA,CAAAA;AACd,IAAA,CAAA,EAAG,EAAE,CAAA;IAEL,OAAO,IAAA;AACT;;;;"}
@@ -1,15 +0,0 @@
1
- import { useRef, useEffect } from 'react';
2
- import { PLUGIN_ID } from '../pluginId.mjs';
3
-
4
- /**
5
- * @type {import('react').FC<{ setPlugin: (id: string) => void }>}
6
- */ const Initializer = ({ setPlugin })=>{
7
- const ref = useRef(setPlugin);
8
- useEffect(()=>{
9
- ref.current(PLUGIN_ID);
10
- }, []);
11
- return null;
12
- };
13
-
14
- export { Initializer };
15
- //# sourceMappingURL=Initializer.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Initializer.mjs","sources":["../../../admin/src/components/Initializer.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\r\n\r\nimport { PLUGIN_ID } from \"../pluginId\";\r\n\r\n/**\r\n * @type {import('react').FC<{ setPlugin: (id: string) => void }>}\r\n */\r\nconst Initializer = ({ setPlugin }: { setPlugin: (id: string) => void }) => {\r\n const ref = useRef(setPlugin);\r\n\r\n useEffect(() => {\r\n ref.current(PLUGIN_ID);\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nexport { Initializer };\r\n"],"names":["Initializer","setPlugin","ref","useRef","useEffect","current","PLUGIN_ID"],"mappings":";;;AAIA;;AAEC,IACD,MAAMA,WAAAA,GAAc,CAAC,EAAEC,SAAS,EAAuC,GAAA;AACrE,IAAA,MAAMC,MAAMC,MAAAA,CAAOF,SAAAA,CAAAA;IAEnBG,SAAAA,CAAU,IAAA;AACRF,QAAAA,GAAAA,CAAIG,OAAO,CAACC,SAAAA,CAAAA;AACd,IAAA,CAAA,EAAG,EAAE,CAAA;IAEL,OAAO,IAAA;AACT;;;;"}
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var icons = require('@strapi/icons');
5
-
6
- const PluginIcon = ()=>/*#__PURE__*/ jsxRuntime.jsx(icons.CheckCircle, {});
7
-
8
- exports.PluginIcon = PluginIcon;
9
- //# sourceMappingURL=PluginIcon.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginIcon.js","sources":["../../../admin/src/components/PluginIcon.tsx"],"sourcesContent":["import { CheckCircle } from \"@strapi/icons\";\r\n\r\nconst PluginIcon = () => <CheckCircle />;\r\n\r\nexport { PluginIcon };\r\n"],"names":["PluginIcon","_jsx","CheckCircle"],"mappings":";;;;;AAEA,MAAMA,UAAAA,GAAa,kBAAMC,cAAA,CAACC,iBAAAA,EAAAA,EAAAA;;;;"}
@@ -1,7 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { CheckCircle } from '@strapi/icons';
3
-
4
- const PluginIcon = ()=>/*#__PURE__*/ jsx(CheckCircle, {});
5
-
6
- export { PluginIcon };
7
- //# sourceMappingURL=PluginIcon.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PluginIcon.mjs","sources":["../../../admin/src/components/PluginIcon.tsx"],"sourcesContent":["import { CheckCircle } from \"@strapi/icons\";\r\n\r\nconst PluginIcon = () => <CheckCircle />;\r\n\r\nexport { PluginIcon };\r\n"],"names":["PluginIcon","_jsx","CheckCircle"],"mappings":";;;AAEA,MAAMA,UAAAA,GAAa,kBAAMC,GAAA,CAACC,WAAAA,EAAAA,EAAAA;;;;"}
@@ -1,104 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var React = require('react');
5
- var designSystem = require('@strapi/design-system');
6
- var admin = require('@strapi/strapi/admin');
7
-
8
- const ProductStatusField = ()=>{
9
- const { contentType, id } = admin.unstable_useContentManagerContext();
10
- const [statuses, setStatuses] = React.useState([]);
11
- const [currentStatus, setCurrentStatus] = React.useState("");
12
- const [message, setMessage] = React.useState("");
13
- const { get, put } = admin.useFetchClient();
14
- const handleStatusChange = React.useCallback(async (newStatus)=>{
15
- if (!id) {
16
- setMessage("Save the product first and then change the status");
17
- return;
18
- }
19
- try {
20
- await put(`primershop-status-manager/content-status`, {
21
- contentTypeUid: "api::product.product",
22
- contentDocumentId: id,
23
- statusId: statuses.find((status)=>status.name === newStatus)?.documentId
24
- });
25
- setMessage(`Status updated ${currentStatus ? `from ${currentStatus}` : ""} to ${newStatus}`);
26
- setCurrentStatus(newStatus || "");
27
- } catch (error) {
28
- setMessage("Error updating status");
29
- console.error("Error updating status:", error);
30
- }
31
- }, [
32
- id,
33
- statuses,
34
- currentStatus,
35
- put
36
- ]);
37
- React.useEffect(()=>{
38
- async function fetchCurrentStatus() {
39
- try {
40
- const { data: productData } = await get(`primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`);
41
- const status = productData?.status;
42
- if (status && status.name) return setCurrentStatus(status.name);
43
- if (statuses.length) return handleStatusChange(statuses[0].name);
44
- } catch (error) {
45
- console.error("Error fetching product status:", error);
46
- }
47
- }
48
- if (id && !currentStatus.length) fetchCurrentStatus();
49
- if (!id && statuses.length) setCurrentStatus(statuses[0].name);
50
- }, [
51
- id,
52
- statuses,
53
- get
54
- ]);
55
- React.useEffect(()=>{
56
- async function fetchStatuses() {
57
- try {
58
- const { data } = await get("primershop-status-manager/statuses");
59
- setStatuses(data);
60
- } catch (error) {
61
- console.error("Error fetching statuses:", error);
62
- }
63
- }
64
- fetchStatuses();
65
- }, [
66
- get
67
- ]);
68
- return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
69
- direction: "column",
70
- justifyContent: "center",
71
- alignItems: "stretch",
72
- width: "100%",
73
- children: [
74
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
75
- padding: 2,
76
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Typography, {
77
- variant: "sigma",
78
- children: [
79
- contentType?.info.displayName,
80
- " status"
81
- ]
82
- })
83
- }),
84
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelect, {
85
- placeholder: currentStatus,
86
- onChange: handleStatusChange,
87
- children: statuses.map((status)=>/*#__PURE__*/ jsxRuntime.jsx(designSystem.SingleSelectOption, {
88
- value: status.name,
89
- children: status.name
90
- }, status.documentId))
91
- }),
92
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
93
- padding: 2,
94
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
95
- variant: "sigma",
96
- children: message
97
- })
98
- })
99
- ]
100
- });
101
- };
102
-
103
- exports.ProductStatusField = ProductStatusField;
104
- //# sourceMappingURL=ProductStatusField.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductStatusField.js","sources":["../../../admin/src/components/ProductStatusField.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from \"react\";\r\n\r\nimport {\r\n SingleSelect,\r\n SingleSelectOption,\r\n Box,\r\n Typography,\r\n Flex,\r\n} from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n} from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst ProductStatusField = () => {\r\n const { contentType, id } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [currentStatus, setCurrentStatus] = useState(\"\");\r\n const [message, setMessage] = useState(\"\");\r\n const { get, put } = useFetchClient();\r\n\r\n const handleStatusChange = useCallback(\r\n async (newStatus: string) => {\r\n if (!id) {\r\n setMessage(\"Save the product first and then change the status\");\r\n return;\r\n }\r\n try {\r\n await put(`primershop-status-manager/content-status`, {\r\n contentTypeUid: \"api::product.product\",\r\n contentDocumentId: id,\r\n statusId: statuses.find((status) => status.name === newStatus)\r\n ?.documentId,\r\n });\r\n setMessage(\r\n `Status updated ${currentStatus ? `from ${currentStatus}` : \"\"} to ${newStatus}`\r\n );\r\n setCurrentStatus(newStatus || \"\");\r\n } catch (error) {\r\n setMessage(\"Error updating status\");\r\n console.error(\"Error updating status:\", error);\r\n }\r\n },\r\n [id, statuses, currentStatus, put]\r\n );\r\n\r\n useEffect(() => {\r\n async function fetchCurrentStatus() {\r\n try {\r\n const { data: productData } = await get(\r\n `primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`\r\n );\r\n const status = productData?.status;\r\n if (status && status.name) return setCurrentStatus(status.name);\r\n if (statuses.length) return handleStatusChange(statuses[0].name);\r\n } catch (error) {\r\n console.error(\"Error fetching product status:\", error);\r\n }\r\n }\r\n if (id && !currentStatus.length) fetchCurrentStatus();\r\n if (!id && statuses.length) setCurrentStatus(statuses[0].name);\r\n }, [id, statuses, get]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n justifyContent=\"center\"\r\n alignItems=\"stretch\"\r\n width=\"100%\"\r\n >\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">\r\n {contentType?.info.displayName} status\r\n </Typography>\r\n </Box>\r\n <SingleSelect placeholder={currentStatus} onChange={handleStatusChange}>\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">{message}</Typography>\r\n </Box>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { ProductStatusField };\r\n"],"names":["ProductStatusField","contentType","id","useContentManagerContext","statuses","setStatuses","useState","currentStatus","setCurrentStatus","message","setMessage","get","put","useFetchClient","handleStatusChange","useCallback","newStatus","contentTypeUid","contentDocumentId","statusId","find","status","name","documentId","error","console","useEffect","fetchCurrentStatus","data","productData","length","fetchStatuses","_jsxs","Flex","direction","justifyContent","alignItems","width","_jsx","Box","padding","Typography","variant","info","displayName","SingleSelect","placeholder","onChange","map","SingleSelectOption","value"],"mappings":"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"}
@@ -1,102 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState, useCallback, useEffect } from 'react';
3
- import { Flex, Box, Typography, SingleSelect, SingleSelectOption } from '@strapi/design-system';
4
- import { unstable_useContentManagerContext, useFetchClient } from '@strapi/strapi/admin';
5
-
6
- const ProductStatusField = ()=>{
7
- const { contentType, id } = unstable_useContentManagerContext();
8
- const [statuses, setStatuses] = useState([]);
9
- const [currentStatus, setCurrentStatus] = useState("");
10
- const [message, setMessage] = useState("");
11
- const { get, put } = useFetchClient();
12
- const handleStatusChange = useCallback(async (newStatus)=>{
13
- if (!id) {
14
- setMessage("Save the product first and then change the status");
15
- return;
16
- }
17
- try {
18
- await put(`primershop-status-manager/content-status`, {
19
- contentTypeUid: "api::product.product",
20
- contentDocumentId: id,
21
- statusId: statuses.find((status)=>status.name === newStatus)?.documentId
22
- });
23
- setMessage(`Status updated ${currentStatus ? `from ${currentStatus}` : ""} to ${newStatus}`);
24
- setCurrentStatus(newStatus || "");
25
- } catch (error) {
26
- setMessage("Error updating status");
27
- console.error("Error updating status:", error);
28
- }
29
- }, [
30
- id,
31
- statuses,
32
- currentStatus,
33
- put
34
- ]);
35
- useEffect(()=>{
36
- async function fetchCurrentStatus() {
37
- try {
38
- const { data: productData } = await get(`primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`);
39
- const status = productData?.status;
40
- if (status && status.name) return setCurrentStatus(status.name);
41
- if (statuses.length) return handleStatusChange(statuses[0].name);
42
- } catch (error) {
43
- console.error("Error fetching product status:", error);
44
- }
45
- }
46
- if (id && !currentStatus.length) fetchCurrentStatus();
47
- if (!id && statuses.length) setCurrentStatus(statuses[0].name);
48
- }, [
49
- id,
50
- statuses,
51
- get
52
- ]);
53
- useEffect(()=>{
54
- async function fetchStatuses() {
55
- try {
56
- const { data } = await get("primershop-status-manager/statuses");
57
- setStatuses(data);
58
- } catch (error) {
59
- console.error("Error fetching statuses:", error);
60
- }
61
- }
62
- fetchStatuses();
63
- }, [
64
- get
65
- ]);
66
- return /*#__PURE__*/ jsxs(Flex, {
67
- direction: "column",
68
- justifyContent: "center",
69
- alignItems: "stretch",
70
- width: "100%",
71
- children: [
72
- /*#__PURE__*/ jsx(Box, {
73
- padding: 2,
74
- children: /*#__PURE__*/ jsxs(Typography, {
75
- variant: "sigma",
76
- children: [
77
- contentType?.info.displayName,
78
- " status"
79
- ]
80
- })
81
- }),
82
- /*#__PURE__*/ jsx(SingleSelect, {
83
- placeholder: currentStatus,
84
- onChange: handleStatusChange,
85
- children: statuses.map((status)=>/*#__PURE__*/ jsx(SingleSelectOption, {
86
- value: status.name,
87
- children: status.name
88
- }, status.documentId))
89
- }),
90
- /*#__PURE__*/ jsx(Box, {
91
- padding: 2,
92
- children: /*#__PURE__*/ jsx(Typography, {
93
- variant: "sigma",
94
- children: message
95
- })
96
- })
97
- ]
98
- });
99
- };
100
-
101
- export { ProductStatusField };
102
- //# sourceMappingURL=ProductStatusField.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProductStatusField.mjs","sources":["../../../admin/src/components/ProductStatusField.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from \"react\";\r\n\r\nimport {\r\n SingleSelect,\r\n SingleSelectOption,\r\n Box,\r\n Typography,\r\n Flex,\r\n} from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n} from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst ProductStatusField = () => {\r\n const { contentType, id } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [currentStatus, setCurrentStatus] = useState(\"\");\r\n const [message, setMessage] = useState(\"\");\r\n const { get, put } = useFetchClient();\r\n\r\n const handleStatusChange = useCallback(\r\n async (newStatus: string) => {\r\n if (!id) {\r\n setMessage(\"Save the product first and then change the status\");\r\n return;\r\n }\r\n try {\r\n await put(`primershop-status-manager/content-status`, {\r\n contentTypeUid: \"api::product.product\",\r\n contentDocumentId: id,\r\n statusId: statuses.find((status) => status.name === newStatus)\r\n ?.documentId,\r\n });\r\n setMessage(\r\n `Status updated ${currentStatus ? `from ${currentStatus}` : \"\"} to ${newStatus}`\r\n );\r\n setCurrentStatus(newStatus || \"\");\r\n } catch (error) {\r\n setMessage(\"Error updating status\");\r\n console.error(\"Error updating status:\", error);\r\n }\r\n },\r\n [id, statuses, currentStatus, put]\r\n );\r\n\r\n useEffect(() => {\r\n async function fetchCurrentStatus() {\r\n try {\r\n const { data: productData } = await get(\r\n `primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`\r\n );\r\n const status = productData?.status;\r\n if (status && status.name) return setCurrentStatus(status.name);\r\n if (statuses.length) return handleStatusChange(statuses[0].name);\r\n } catch (error) {\r\n console.error(\"Error fetching product status:\", error);\r\n }\r\n }\r\n if (id && !currentStatus.length) fetchCurrentStatus();\r\n if (!id && statuses.length) setCurrentStatus(statuses[0].name);\r\n }, [id, statuses, get]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n justifyContent=\"center\"\r\n alignItems=\"stretch\"\r\n width=\"100%\"\r\n >\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">\r\n {contentType?.info.displayName} status\r\n </Typography>\r\n </Box>\r\n <SingleSelect placeholder={currentStatus} onChange={handleStatusChange}>\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">{message}</Typography>\r\n </Box>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { ProductStatusField };\r\n"],"names":["ProductStatusField","contentType","id","useContentManagerContext","statuses","setStatuses","useState","currentStatus","setCurrentStatus","message","setMessage","get","put","useFetchClient","handleStatusChange","useCallback","newStatus","contentTypeUid","contentDocumentId","statusId","find","status","name","documentId","error","console","useEffect","fetchCurrentStatus","data","productData","length","fetchStatuses","_jsxs","Flex","direction","justifyContent","alignItems","width","_jsx","Box","padding","Typography","variant","info","displayName","SingleSelect","placeholder","onChange","map","SingleSelectOption","value"],"mappings":"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"}