@primershop/strapi-plugin-status-manager 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/dist/admin/components/Initializer.js +17 -0
- package/dist/admin/components/Initializer.js.map +1 -0
- package/dist/admin/components/Initializer.mjs +15 -0
- package/dist/admin/components/Initializer.mjs.map +1 -0
- package/dist/admin/components/PluginIcon.js +9 -0
- package/dist/admin/components/PluginIcon.js.map +1 -0
- package/dist/admin/components/PluginIcon.mjs +7 -0
- package/dist/admin/components/PluginIcon.mjs.map +1 -0
- package/dist/admin/components/ProductStatusField.js +104 -0
- package/dist/admin/components/ProductStatusField.js.map +1 -0
- package/dist/admin/components/ProductStatusField.mjs +102 -0
- package/dist/admin/components/ProductStatusField.mjs.map +1 -0
- package/dist/admin/components/StatusManager.js +367 -0
- package/dist/admin/components/StatusManager.js.map +1 -0
- package/dist/admin/components/StatusManager.mjs +365 -0
- package/dist/admin/components/StatusManager.mjs.map +1 -0
- package/dist/admin/index.js +46 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +44 -0
- package/dist/admin/index.mjs.map +1 -0
- package/dist/admin/listView/StatusFilter.js +76 -0
- package/dist/admin/listView/StatusFilter.js.map +1 -0
- package/dist/admin/listView/StatusFilter.mjs +74 -0
- package/dist/admin/listView/StatusFilter.mjs.map +1 -0
- package/dist/admin/listView/add-status-column-hook.js +34 -0
- package/dist/admin/listView/add-status-column-hook.js.map +1 -0
- package/dist/admin/listView/add-status-column-hook.mjs +32 -0
- package/dist/admin/listView/add-status-column-hook.mjs.map +1 -0
- package/dist/admin/listView/status-cell.js +28 -0
- package/dist/admin/listView/status-cell.js.map +1 -0
- package/dist/admin/listView/status-cell.mjs +26 -0
- package/dist/admin/listView/status-cell.mjs.map +1 -0
- package/dist/admin/pages/HomePage.js +51 -0
- package/dist/admin/pages/HomePage.js.map +1 -0
- package/dist/admin/pages/HomePage.mjs +49 -0
- package/dist/admin/pages/HomePage.mjs.map +1 -0
- package/dist/admin/pluginId.js +6 -0
- package/dist/admin/pluginId.js.map +1 -0
- package/dist/admin/pluginId.mjs +4 -0
- package/dist/admin/pluginId.mjs.map +1 -0
- package/dist/admin/src/components/Initializer.js +13 -0
- package/dist/admin/src/components/PluginIcon.js +4 -0
- package/dist/admin/src/components/ProductStatusField.js +64 -0
- package/dist/admin/src/components/StatusManager.js +239 -0
- package/dist/admin/src/index.js +43 -0
- package/dist/admin/src/listView/StatusFilter.js +47 -0
- package/dist/admin/src/listView/add-status-column-hook.js +18 -0
- package/dist/admin/src/listView/status-cell.js +18 -0
- package/dist/admin/src/pages/HomePage.js +18 -0
- package/dist/admin/src/pluginId.js +1 -0
- package/dist/server/bootstrap.js +29 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +27 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/content-types/index.js +16 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/index.mjs +14 -0
- package/dist/server/content-types/index.mjs.map +1 -0
- package/dist/server/content-types/status-link.js +43 -0
- package/dist/server/content-types/status-link.js.map +1 -0
- package/dist/server/content-types/status-link.mjs +41 -0
- package/dist/server/content-types/status-link.mjs.map +1 -0
- package/dist/server/content-types/status.js +50 -0
- package/dist/server/content-types/status.js.map +1 -0
- package/dist/server/content-types/status.mjs +48 -0
- package/dist/server/content-types/status.mjs.map +1 -0
- package/dist/server/controllers/content.js +33 -0
- package/dist/server/controllers/content.js.map +1 -0
- package/dist/server/controllers/content.mjs +31 -0
- package/dist/server/controllers/content.mjs.map +1 -0
- package/dist/server/controllers/index.js +12 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +10 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/controllers/status.js +106 -0
- package/dist/server/controllers/status.js.map +1 -0
- package/dist/server/controllers/status.mjs +104 -0
- package/dist/server/controllers/status.mjs.map +1 -0
- package/dist/server/index.js +23 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +21 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/middlewares/add-status-field.js +48 -0
- package/dist/server/middlewares/add-status-field.js.map +1 -0
- package/dist/server/middlewares/add-status-field.mjs +46 -0
- package/dist/server/middlewares/add-status-field.mjs.map +1 -0
- package/dist/server/middlewares/filter-by-status.js +42 -0
- package/dist/server/middlewares/filter-by-status.js.map +1 -0
- package/dist/server/middlewares/filter-by-status.mjs +40 -0
- package/dist/server/middlewares/filter-by-status.mjs.map +1 -0
- package/dist/server/middlewares/filter-published.js +35 -0
- package/dist/server/middlewares/filter-published.js.map +1 -0
- package/dist/server/middlewares/filter-published.mjs +33 -0
- package/dist/server/middlewares/filter-published.mjs.map +1 -0
- package/dist/server/permissions.js +46 -0
- package/dist/server/permissions.js.map +1 -0
- package/dist/server/permissions.mjs +44 -0
- package/dist/server/permissions.mjs.map +1 -0
- package/dist/server/pluginId.js +6 -0
- package/dist/server/pluginId.js.map +1 -0
- package/dist/server/pluginId.mjs +4 -0
- package/dist/server/pluginId.mjs.map +1 -0
- package/dist/server/register.js +27 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +25 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/routes/content-management.js +41 -0
- package/dist/server/routes/content-management.js.map +1 -0
- package/dist/server/routes/content-management.mjs +39 -0
- package/dist/server/routes/content-management.mjs.map +1 -0
- package/dist/server/routes/index.js +17 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +15 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/routes/status-management.js +122 -0
- package/dist/server/routes/status-management.js.map +1 -0
- package/dist/server/routes/status-management.mjs +120 -0
- package/dist/server/routes/status-management.mjs.map +1 -0
- package/dist/server/services/index.js +12 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +10 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/services/status-link.js +38 -0
- package/dist/server/services/status-link.js.map +1 -0
- package/dist/server/services/status-link.mjs +36 -0
- package/dist/server/services/status-link.mjs.map +1 -0
- package/dist/server/services/status.js +110 -0
- package/dist/server/services/status.js.map +1 -0
- package/dist/server/services/status.mjs +108 -0
- package/dist/server/services/status.mjs.map +1 -0
- package/dist/server/src/bootstrap.js +32 -0
- package/dist/server/src/config/dev.js +13 -0
- package/dist/server/src/content-types/index.js +15 -0
- package/dist/server/src/content-types/status-link.js +40 -0
- package/dist/server/src/content-types/status.js +47 -0
- package/dist/server/src/controllers/content.js +44 -0
- package/dist/server/src/controllers/index.js +9 -0
- package/dist/server/src/controllers/status.js +106 -0
- package/dist/server/src/index.js +23 -0
- package/dist/server/src/middlewares/add-status-field.js +51 -0
- package/dist/server/src/middlewares/filter-by-status.js +44 -0
- package/dist/server/src/middlewares/filter-published.js +31 -0
- package/dist/server/src/permissions.js +41 -0
- package/dist/server/src/pluginId.js +4 -0
- package/dist/server/src/register.js +28 -0
- package/dist/server/src/routes/content-management.js +34 -0
- package/dist/server/src/routes/index.js +15 -0
- package/dist/server/src/routes/status-management.js +109 -0
- package/dist/server/src/services/index.js +9 -0
- package/dist/server/src/services/status-link.js +33 -0
- package/dist/server/src/services/status.js +96 -0
- package/package.json +104 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
3
|
+
import { Flex, SingleSelect, SingleSelectOption } from '@strapi/design-system';
|
|
4
|
+
import { unstable_useContentManagerContext, useFetchClient, useQueryParams } from '@strapi/strapi/admin';
|
|
5
|
+
|
|
6
|
+
const StatusFilter = ()=>{
|
|
7
|
+
const { contentType } = unstable_useContentManagerContext();
|
|
8
|
+
const [statuses, setStatuses] = useState([]);
|
|
9
|
+
const [selected, setSelected] = useState("");
|
|
10
|
+
const { get } = useFetchClient();
|
|
11
|
+
const [{ query }, setQuery] = useQueryParams();
|
|
12
|
+
const handleStatusChange = useCallback((name)=>{
|
|
13
|
+
setQuery({
|
|
14
|
+
page: 1,
|
|
15
|
+
plugins: {
|
|
16
|
+
...query.plugins,
|
|
17
|
+
"primershop-status-manager": {
|
|
18
|
+
statusName: name.toLowerCase()
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}, "push", true);
|
|
22
|
+
}, [
|
|
23
|
+
query.plugins,
|
|
24
|
+
setQuery
|
|
25
|
+
]);
|
|
26
|
+
useEffect(()=>{
|
|
27
|
+
const selectedStatusName = query.plugins?.["primershop-status-manager"]?.statusName;
|
|
28
|
+
if (!selectedStatusName) return;
|
|
29
|
+
const status = statuses.find((status)=>status.name.toLowerCase() === selectedStatusName);
|
|
30
|
+
if (status) {
|
|
31
|
+
setSelected(status.name);
|
|
32
|
+
}
|
|
33
|
+
}, [
|
|
34
|
+
query,
|
|
35
|
+
statuses
|
|
36
|
+
]);
|
|
37
|
+
useEffect(()=>{
|
|
38
|
+
async function fetchStatuses() {
|
|
39
|
+
try {
|
|
40
|
+
const { data } = await get("primershop-status-manager/statuses");
|
|
41
|
+
const allStatusesObject = {
|
|
42
|
+
documentId: "all",
|
|
43
|
+
name: "All"
|
|
44
|
+
};
|
|
45
|
+
setStatuses([
|
|
46
|
+
allStatusesObject,
|
|
47
|
+
...data
|
|
48
|
+
]);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error("Error fetching statuses:", error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
fetchStatuses();
|
|
54
|
+
}, [
|
|
55
|
+
get
|
|
56
|
+
]);
|
|
57
|
+
return /*#__PURE__*/ jsx(Flex, {
|
|
58
|
+
direction: "column",
|
|
59
|
+
justifyContent: "center",
|
|
60
|
+
children: /*#__PURE__*/ jsx(SingleSelect, {
|
|
61
|
+
size: "S",
|
|
62
|
+
placeholder: `${contentType?.info.displayName} status`,
|
|
63
|
+
value: selected,
|
|
64
|
+
onChange: handleStatusChange,
|
|
65
|
+
children: statuses.map((status)=>/*#__PURE__*/ jsx(SingleSelectOption, {
|
|
66
|
+
value: status.name,
|
|
67
|
+
children: status.name
|
|
68
|
+
}, status.documentId))
|
|
69
|
+
})
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
export { StatusFilter };
|
|
74
|
+
//# sourceMappingURL=StatusFilter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusFilter.mjs","sources":["../../../admin/src/listView/StatusFilter.tsx"],"sourcesContent":["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"],"names":["StatusFilter","contentType","useContentManagerContext","statuses","setStatuses","useState","selected","setSelected","get","useFetchClient","query","setQuery","useQueryParams","handleStatusChange","useCallback","name","page","plugins","statusName","toLowerCase","useEffect","selectedStatusName","status","find","fetchStatuses","data","allStatusesObject","documentId","error","console","_jsx","Flex","direction","justifyContent","SingleSelect","size","placeholder","info","displayName","value","onChange","map","SingleSelectOption"],"mappings":";;;;;AAaA,MAAMA,YAAAA,GAAe,IAAA;IACnB,MAAM,EAAEC,WAAW,EAAE,GAAGC,iCAAAA,EAAAA;AACxB,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,SAAmB,EAAE,CAAA;AACrD,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGF,QAAAA,CAA6B,EAAA,CAAA;IAC7D,MAAM,EAAEG,GAAG,EAAE,GAAGC,cAAAA,EAAAA;AAChB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,cAAAA,EAAAA;IAK9B,MAAMC,kBAAAA,GAAqBC,YACzB,CAACC,IAAAA,GAAAA;QACCJ,QAAAA,CACE;YACEK,IAAAA,EAAM,CAAA;YACNC,OAAAA,EAAS;AACP,gBAAA,GAAGP,MAAMO,OAAO;gBAChB,2BAAA,EAA6B;AAAEC,oBAAAA,UAAAA,EAAYH,KAAKI,WAAW;AAAG;AAChE;AACF,SAAA,EACA,MAAA,EACA,IAAA,CAAA;IAEJ,CAAA,EAEA;AAACT,QAAAA,KAAAA,CAAMO,OAAO;AAAEN,QAAAA;AAAS,KAAA,CAAA;IAG3BS,SAAAA,CAAU,IAAA;AACR,QAAA,MAAMC,qBACJX,KAAAA,CAAMO,OAAO,GAAG,4BAA4B,EAAEC,UAAAA;AAChD,QAAA,IAAI,CAACG,kBAAAA,EAAoB;QACzB,MAAMC,MAAAA,GAASnB,QAAAA,CAASoB,IAAI,CAC1B,CAACD,SAAWA,MAAAA,CAAOP,IAAI,CAACI,WAAW,EAAA,KAAOE,kBAAAA,CAAAA;AAE5C,QAAA,IAAIC,MAAAA,EAAQ;AACVf,YAAAA,WAAAA,CAAYe,OAAOP,IAAI,CAAA;AACzB,QAAA;IACF,CAAA,EAAG;AAACL,QAAAA,KAAAA;AAAOP,QAAAA;AAAS,KAAA,CAAA;IAEpBiB,SAAAA,CAAU,IAAA;QACR,eAAeI,aAAAA,GAAAA;YACb,IAAI;AACF,gBAAA,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMjB,GAAAA,CAAI,oCAAA,CAAA;AAC3B,gBAAA,MAAMkB,iBAAAA,GAAoB;oBACxBC,UAAAA,EAAY,KAAA;oBACZZ,IAAAA,EAAM;AACR,iBAAA;gBACAX,WAAAA,CAAY;AAACsB,oBAAAA,iBAAAA;AAAsBD,oBAAAA,GAAAA;AAAK,iBAAA,CAAA;AAC1C,YAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;gBACdC,OAAAA,CAAQD,KAAK,CAAC,0BAAA,EAA4BA,KAAAA,CAAAA;AAC5C,YAAA;AACF,QAAA;AACAJ,QAAAA,aAAAA,EAAAA;IACF,CAAA,EAAG;AAAChB,QAAAA;AAAI,KAAA,CAAA;AAER,IAAA,qBACEsB,GAAA,CAACC,IAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,cAAAA,EAAe,QAAA;AACtC,QAAA,QAAA,gBAAAH,GAAA,CAACI,YAAAA,EAAAA;YACCC,IAAAA,EAAK,GAAA;AACLC,YAAAA,WAAAA,EAAa,CAAA,EAAGnC,WAAAA,EAAaoC,IAAAA,CAAKC,WAAAA,CAAY,OAAO,CAAC;YACtDC,KAAAA,EAAOjC,QAAAA;YACPkC,QAAAA,EAAU3B,kBAAAA;AAETV,YAAAA,QAAAA,EAAAA,QAAAA,CAASsC,GAAG,CAAC,CAACnB,MAAAA,iBACbQ,GAAA,CAACY,kBAAAA,EAAAA;AAA2CH,oBAAAA,KAAAA,EAAOjB,OAAOP,IAAI;AAC3DO,oBAAAA,QAAAA,EAAAA,MAAAA,CAAOP;AADeO,iBAAAA,EAAAA,MAAAA,CAAOK,UAAU,CAAA;;;AAOpD;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var statusCell = require('./status-cell.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
|
|
6
|
+
const addStatusColumnHook = ({ displayedHeaders, layout })=>{
|
|
7
|
+
const statusHeader = {
|
|
8
|
+
attribute: {
|
|
9
|
+
type: "custom"
|
|
10
|
+
},
|
|
11
|
+
name: "statusLabel",
|
|
12
|
+
label: {
|
|
13
|
+
id: "primershop-status-manager.status",
|
|
14
|
+
defaultMessage: "Status"
|
|
15
|
+
},
|
|
16
|
+
searchable: false,
|
|
17
|
+
sortable: false,
|
|
18
|
+
cellFormatter: (row)=>{
|
|
19
|
+
return React.createElement(statusCell.StatusCell, {
|
|
20
|
+
row
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
displayedHeaders: [
|
|
26
|
+
...displayedHeaders,
|
|
27
|
+
statusHeader
|
|
28
|
+
],
|
|
29
|
+
layout
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.addStatusColumnHook = addStatusColumnHook;
|
|
34
|
+
//# sourceMappingURL=add-status-column-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-status-column-hook.js","sources":["../../../admin/src/listView/add-status-column-hook.ts"],"sourcesContent":["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"],"names":["addStatusColumnHook","displayedHeaders","layout","statusHeader","attribute","type","name","label","id","defaultMessage","searchable","sortable","cellFormatter","row","React","createElement","StatusCell"],"mappings":";;;;;MAYaA,mBAAAA,GAAsB,CAAC,EAClCC,gBAAgB,EAChBC,MAAM,EACmB,GAAA;AACzB,IAAA,MAAMC,YAAAA,GAAe;QACnBC,SAAAA,EAAW;YAAEC,IAAAA,EAAM;AAAS,SAAA;QAC5BC,IAAAA,EAAM,aAAA;QACNC,KAAAA,EAAO;YAAEC,EAAAA,EAAI,kCAAA;YAAoCC,cAAAA,EAAgB;AAAS,SAAA;QAC1EC,UAAAA,EAAY,KAAA;QACZC,QAAAA,EAAU,KAAA;AACVC,QAAAA,aAAAA,EAAe,CAACC,GAAAA,GAAAA;YACd,OAAOC,KAAAA,CAAMC,aAAa,CAACC,qBAAAA,EAAY;AAAEH,gBAAAA;AAAI,aAAA,CAAA;AAC/C,QAAA;AACF,KAAA;IAEA,OAAO;QACLZ,gBAAAA,EAAkB;AAAIA,YAAAA,GAAAA,gBAAAA;AAAkBE,YAAAA;AAAa,SAAA;AACrDD,QAAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { StatusCell } from './status-cell.mjs';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
const addStatusColumnHook = ({ displayedHeaders, layout })=>{
|
|
5
|
+
const statusHeader = {
|
|
6
|
+
attribute: {
|
|
7
|
+
type: "custom"
|
|
8
|
+
},
|
|
9
|
+
name: "statusLabel",
|
|
10
|
+
label: {
|
|
11
|
+
id: "primershop-status-manager.status",
|
|
12
|
+
defaultMessage: "Status"
|
|
13
|
+
},
|
|
14
|
+
searchable: false,
|
|
15
|
+
sortable: false,
|
|
16
|
+
cellFormatter: (row)=>{
|
|
17
|
+
return React.createElement(StatusCell, {
|
|
18
|
+
row
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
return {
|
|
23
|
+
displayedHeaders: [
|
|
24
|
+
...displayedHeaders,
|
|
25
|
+
statusHeader
|
|
26
|
+
],
|
|
27
|
+
layout
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { addStatusColumnHook };
|
|
32
|
+
//# sourceMappingURL=add-status-column-hook.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-status-column-hook.mjs","sources":["../../../admin/src/listView/add-status-column-hook.ts"],"sourcesContent":["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"],"names":["addStatusColumnHook","displayedHeaders","layout","statusHeader","attribute","type","name","label","id","defaultMessage","searchable","sortable","cellFormatter","row","React","createElement","StatusCell"],"mappings":";;;MAYaA,mBAAAA,GAAsB,CAAC,EAClCC,gBAAgB,EAChBC,MAAM,EACmB,GAAA;AACzB,IAAA,MAAMC,YAAAA,GAAe;QACnBC,SAAAA,EAAW;YAAEC,IAAAA,EAAM;AAAS,SAAA;QAC5BC,IAAAA,EAAM,aAAA;QACNC,KAAAA,EAAO;YAAEC,EAAAA,EAAI,kCAAA;YAAoCC,cAAAA,EAAgB;AAAS,SAAA;QAC1EC,UAAAA,EAAY,KAAA;QACZC,QAAAA,EAAU,KAAA;AACVC,QAAAA,aAAAA,EAAe,CAACC,GAAAA,GAAAA;YACd,OAAOC,KAAAA,CAAMC,aAAa,CAACC,UAAAA,EAAY;AAAEH,gBAAAA;AAAI,aAAA,CAAA;AAC/C,QAAA;AACF,KAAA;IAEA,OAAO;QACLZ,gBAAAA,EAAkB;AAAIA,YAAAA,GAAAA,gBAAAA;AAAkBE,YAAAA;AAAa,SAAA;AACrDD,QAAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
|
|
6
|
+
const StatusCell = ({ row })=>{
|
|
7
|
+
const [status, setStatus] = React.useState(null);
|
|
8
|
+
React.useEffect(()=>{
|
|
9
|
+
setStatus(row.statusField);
|
|
10
|
+
}, [
|
|
11
|
+
row
|
|
12
|
+
]);
|
|
13
|
+
if (!status) return null;
|
|
14
|
+
return /*#__PURE__*/ jsxRuntime.jsx("span", {
|
|
15
|
+
style: {
|
|
16
|
+
padding: "4px 8px",
|
|
17
|
+
borderRadius: 4,
|
|
18
|
+
background: status.published ? "#eafbe7" : "#f0f0ff",
|
|
19
|
+
color: status.published ? "#2f6846" : "#271fe0",
|
|
20
|
+
border: `1px solid ${status.published ? "#2f6846" : "#271fe0"}`,
|
|
21
|
+
fontSize: 14
|
|
22
|
+
},
|
|
23
|
+
children: status.name
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
exports.StatusCell = StatusCell;
|
|
28
|
+
//# sourceMappingURL=status-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-cell.js","sources":["../../../admin/src/listView/status-cell.tsx"],"sourcesContent":["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"],"names":["StatusCell","row","status","setStatus","useState","useEffect","statusField","_jsx","span","style","padding","borderRadius","background","published","color","border","fontSize","name"],"mappings":";;;;;AAWO,MAAMA,UAAAA,GAAa,CAAC,EAAEC,GAAG,EAAgB,GAAA;AAC/C,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,cAAAA,CAAwB,IAAA,CAAA;IAEnDC,eAAAA,CAAU,IAAA;AACRF,QAAAA,SAAAA,CAAUF,IAAIK,WAAW,CAAA;IAC3B,CAAA,EAAG;AAACL,QAAAA;AAAI,KAAA,CAAA;IAER,IAAI,CAACC,QAAQ,OAAO,IAAA;AACpB,IAAA,qBACEK,cAAA,CAACC,MAAAA,EAAAA;QAAKC,KAAAA,EAAO;YACXC,OAAAA,EAAS,SAAA;YACTC,YAAAA,EAAc,CAAA;YACdC,UAAAA,EAAYV,MAAAA,CAAOW,SAAS,GAAG,SAAA,GAAY,SAAA;YAC3CC,KAAAA,EAAOZ,MAAAA,CAAOW,SAAS,GAAG,SAAA,GAAY,SAAA;AACtCE,YAAAA,MAAAA,EAAQ,CAAC,UAAU,EAAEb,OAAOW,SAAS,GAAG,YAAY,SAAA,CAAA,CAAW;YAC/DG,QAAAA,EAAU;AACZ,SAAA;AACGd,QAAAA,QAAAA,EAAAA,MAAAA,CAAOe;;AAGd;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
const StatusCell = ({ row })=>{
|
|
5
|
+
const [status, setStatus] = useState(null);
|
|
6
|
+
useEffect(()=>{
|
|
7
|
+
setStatus(row.statusField);
|
|
8
|
+
}, [
|
|
9
|
+
row
|
|
10
|
+
]);
|
|
11
|
+
if (!status) return null;
|
|
12
|
+
return /*#__PURE__*/ jsx("span", {
|
|
13
|
+
style: {
|
|
14
|
+
padding: "4px 8px",
|
|
15
|
+
borderRadius: 4,
|
|
16
|
+
background: status.published ? "#eafbe7" : "#f0f0ff",
|
|
17
|
+
color: status.published ? "#2f6846" : "#271fe0",
|
|
18
|
+
border: `1px solid ${status.published ? "#2f6846" : "#271fe0"}`,
|
|
19
|
+
fontSize: 14
|
|
20
|
+
},
|
|
21
|
+
children: status.name
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { StatusCell };
|
|
26
|
+
//# sourceMappingURL=status-cell.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-cell.mjs","sources":["../../../admin/src/listView/status-cell.tsx"],"sourcesContent":["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"],"names":["StatusCell","row","status","setStatus","useState","useEffect","statusField","_jsx","span","style","padding","borderRadius","background","published","color","border","fontSize","name"],"mappings":";;;AAWO,MAAMA,UAAAA,GAAa,CAAC,EAAEC,GAAG,EAAgB,GAAA;AAC/C,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,QAAAA,CAAwB,IAAA,CAAA;IAEnDC,SAAAA,CAAU,IAAA;AACRF,QAAAA,SAAAA,CAAUF,IAAIK,WAAW,CAAA;IAC3B,CAAA,EAAG;AAACL,QAAAA;AAAI,KAAA,CAAA;IAER,IAAI,CAACC,QAAQ,OAAO,IAAA;AACpB,IAAA,qBACEK,GAAA,CAACC,MAAAA,EAAAA;QAAKC,KAAAA,EAAO;YACXC,OAAAA,EAAS,SAAA;YACTC,YAAAA,EAAc,CAAA;YACdC,UAAAA,EAAYV,MAAAA,CAAOW,SAAS,GAAG,SAAA,GAAY,SAAA;YAC3CC,KAAAA,EAAOZ,MAAAA,CAAOW,SAAS,GAAG,SAAA,GAAY,SAAA;AACtCE,YAAAA,MAAAA,EAAQ,CAAC,UAAU,EAAEb,OAAOW,SAAS,GAAG,YAAY,SAAA,CAAA,CAAW;YAC/DG,QAAAA,EAAU;AACZ,SAAA;AACGd,QAAAA,QAAAA,EAAAA,MAAAA,CAAOe;;AAGd;;;;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var designSystem = require('@strapi/design-system');
|
|
5
|
+
var admin = require('@strapi/strapi/admin');
|
|
6
|
+
var StatusManager = require('../components/StatusManager.js');
|
|
7
|
+
|
|
8
|
+
const HomePage = ()=>{
|
|
9
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(admin.Layouts.Root, {
|
|
10
|
+
children: [
|
|
11
|
+
/*#__PURE__*/ jsxRuntime.jsx(admin.Page.Title, {
|
|
12
|
+
children: "Status Manager"
|
|
13
|
+
}),
|
|
14
|
+
/*#__PURE__*/ jsxRuntime.jsx(admin.Page.Main, {
|
|
15
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Content, {
|
|
16
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
17
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
18
|
+
padding: 10,
|
|
19
|
+
gap: {
|
|
20
|
+
initial: 1,
|
|
21
|
+
medium: 4,
|
|
22
|
+
large: 8
|
|
23
|
+
},
|
|
24
|
+
direction: {
|
|
25
|
+
initial: "column",
|
|
26
|
+
medium: "row"
|
|
27
|
+
},
|
|
28
|
+
alignItems: {
|
|
29
|
+
initial: "center",
|
|
30
|
+
medium: "flex-start"
|
|
31
|
+
},
|
|
32
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
|
|
33
|
+
padding: 1,
|
|
34
|
+
children: [
|
|
35
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
36
|
+
variant: "alpha",
|
|
37
|
+
children: "Status manager"
|
|
38
|
+
}),
|
|
39
|
+
/*#__PURE__*/ jsxRuntime.jsx(StatusManager.StatusManager, {})
|
|
40
|
+
]
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
]
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
exports.HomePage = HomePage;
|
|
51
|
+
//# sourceMappingURL=HomePage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HomePage.js","sources":["../../../admin/src/pages/HomePage.tsx"],"sourcesContent":["import { Flex, Typography, Box } from \"@strapi/design-system\";\r\nimport { Layouts, Page } from \"@strapi/strapi/admin\";\r\n\r\nimport { StatusManager } from \"../components/StatusManager\";\r\n\r\nconst HomePage = () => {\r\n return (\r\n <Layouts.Root>\r\n <Page.Title>Status Manager</Page.Title>\r\n <Page.Main>\r\n <Layouts.Content>\r\n <Box>\r\n <Flex\r\n padding={10}\r\n gap={{\r\n initial: 1,\r\n medium: 4,\r\n large: 8,\r\n }}\r\n direction={{\r\n initial: \"column\",\r\n medium: \"row\",\r\n }}\r\n alignItems={{\r\n initial: \"center\",\r\n medium: \"flex-start\",\r\n }}\r\n >\r\n <Box padding={1}>\r\n <Typography variant=\"alpha\">Status manager</Typography>\r\n <StatusManager />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n </Layouts.Content>\r\n </Page.Main>\r\n </Layouts.Root>\r\n );\r\n};\r\n\r\nexport { HomePage };\r\n"],"names":["HomePage","_jsxs","Layouts","Root","_jsx","Page","Title","Main","Content","Box","Flex","padding","gap","initial","medium","large","direction","alignItems","Typography","variant","StatusManager"],"mappings":";;;;;;;AAKA,MAAMA,QAAAA,GAAW,IAAA;IACf,qBACEC,eAAA,CAACC,cAAQC,IAAI,EAAA;;AACX,0BAAAC,cAAA,CAACC,WAAKC,KAAK,EAAA;AAAC,gBAAA,QAAA,EAAA;;AACZ,0BAAAF,cAAA,CAACC,WAAKE,IAAI,EAAA;wCACRH,cAAA,CAACF,cAAQM,OAAO,EAAA;AACd,oBAAA,QAAA,gBAAAJ,cAAA,CAACK,gBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAL,cAAA,CAACM,iBAAAA,EAAAA;4BACCC,OAAAA,EAAS,EAAA;4BACTC,GAAAA,EAAK;gCACHC,OAAAA,EAAS,CAAA;gCACTC,MAAAA,EAAQ,CAAA;gCACRC,KAAAA,EAAO;AACT,6BAAA;4BACAC,SAAAA,EAAW;gCACTH,OAAAA,EAAS,QAAA;gCACTC,MAAAA,EAAQ;AACV,6BAAA;4BACAG,UAAAA,EAAY;gCACVJ,OAAAA,EAAS,QAAA;gCACTC,MAAAA,EAAQ;AACV,6BAAA;AAEA,4BAAA,QAAA,gBAAAb,eAAA,CAACQ,gBAAAA,EAAAA;gCAAIE,OAAAA,EAAS,CAAA;;kDACZP,cAAA,CAACc,uBAAAA,EAAAA;wCAAWC,OAAAA,EAAQ,OAAA;AAAQ,wCAAA,QAAA,EAAA;;kDAC5Bf,cAAA,CAACgB,2BAAAA,EAAAA,EAAAA;;;;;;;;;AAQjB;;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Box, Flex, Typography } from '@strapi/design-system';
|
|
3
|
+
import { Layouts, Page } from '@strapi/strapi/admin';
|
|
4
|
+
import { StatusManager } from '../components/StatusManager.mjs';
|
|
5
|
+
|
|
6
|
+
const HomePage = ()=>{
|
|
7
|
+
return /*#__PURE__*/ jsxs(Layouts.Root, {
|
|
8
|
+
children: [
|
|
9
|
+
/*#__PURE__*/ jsx(Page.Title, {
|
|
10
|
+
children: "Status Manager"
|
|
11
|
+
}),
|
|
12
|
+
/*#__PURE__*/ jsx(Page.Main, {
|
|
13
|
+
children: /*#__PURE__*/ jsx(Layouts.Content, {
|
|
14
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
15
|
+
children: /*#__PURE__*/ jsx(Flex, {
|
|
16
|
+
padding: 10,
|
|
17
|
+
gap: {
|
|
18
|
+
initial: 1,
|
|
19
|
+
medium: 4,
|
|
20
|
+
large: 8
|
|
21
|
+
},
|
|
22
|
+
direction: {
|
|
23
|
+
initial: "column",
|
|
24
|
+
medium: "row"
|
|
25
|
+
},
|
|
26
|
+
alignItems: {
|
|
27
|
+
initial: "center",
|
|
28
|
+
medium: "flex-start"
|
|
29
|
+
},
|
|
30
|
+
children: /*#__PURE__*/ jsxs(Box, {
|
|
31
|
+
padding: 1,
|
|
32
|
+
children: [
|
|
33
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
34
|
+
variant: "alpha",
|
|
35
|
+
children: "Status manager"
|
|
36
|
+
}),
|
|
37
|
+
/*#__PURE__*/ jsx(StatusManager, {})
|
|
38
|
+
]
|
|
39
|
+
})
|
|
40
|
+
})
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
]
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export { HomePage };
|
|
49
|
+
//# sourceMappingURL=HomePage.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HomePage.mjs","sources":["../../../admin/src/pages/HomePage.tsx"],"sourcesContent":["import { Flex, Typography, Box } from \"@strapi/design-system\";\r\nimport { Layouts, Page } from \"@strapi/strapi/admin\";\r\n\r\nimport { StatusManager } from \"../components/StatusManager\";\r\n\r\nconst HomePage = () => {\r\n return (\r\n <Layouts.Root>\r\n <Page.Title>Status Manager</Page.Title>\r\n <Page.Main>\r\n <Layouts.Content>\r\n <Box>\r\n <Flex\r\n padding={10}\r\n gap={{\r\n initial: 1,\r\n medium: 4,\r\n large: 8,\r\n }}\r\n direction={{\r\n initial: \"column\",\r\n medium: \"row\",\r\n }}\r\n alignItems={{\r\n initial: \"center\",\r\n medium: \"flex-start\",\r\n }}\r\n >\r\n <Box padding={1}>\r\n <Typography variant=\"alpha\">Status manager</Typography>\r\n <StatusManager />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n </Layouts.Content>\r\n </Page.Main>\r\n </Layouts.Root>\r\n );\r\n};\r\n\r\nexport { HomePage };\r\n"],"names":["HomePage","_jsxs","Layouts","Root","_jsx","Page","Title","Main","Content","Box","Flex","padding","gap","initial","medium","large","direction","alignItems","Typography","variant","StatusManager"],"mappings":";;;;;AAKA,MAAMA,QAAAA,GAAW,IAAA;IACf,qBACEC,IAAA,CAACC,QAAQC,IAAI,EAAA;;AACX,0BAAAC,GAAA,CAACC,KAAKC,KAAK,EAAA;AAAC,gBAAA,QAAA,EAAA;;AACZ,0BAAAF,GAAA,CAACC,KAAKE,IAAI,EAAA;wCACRH,GAAA,CAACF,QAAQM,OAAO,EAAA;AACd,oBAAA,QAAA,gBAAAJ,GAAA,CAACK,GAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAL,GAAA,CAACM,IAAAA,EAAAA;4BACCC,OAAAA,EAAS,EAAA;4BACTC,GAAAA,EAAK;gCACHC,OAAAA,EAAS,CAAA;gCACTC,MAAAA,EAAQ,CAAA;gCACRC,KAAAA,EAAO;AACT,6BAAA;4BACAC,SAAAA,EAAW;gCACTH,OAAAA,EAAS,QAAA;gCACTC,MAAAA,EAAQ;AACV,6BAAA;4BACAG,UAAAA,EAAY;gCACVJ,OAAAA,EAAS,QAAA;gCACTC,MAAAA,EAAQ;AACV,6BAAA;AAEA,4BAAA,QAAA,gBAAAb,IAAA,CAACQ,GAAAA,EAAAA;gCAAIE,OAAAA,EAAS,CAAA;;kDACZP,GAAA,CAACc,UAAAA,EAAAA;wCAAWC,OAAAA,EAAQ,OAAA;AAAQ,wCAAA,QAAA,EAAA;;kDAC5Bf,GAAA,CAACgB,aAAAA,EAAAA,EAAAA;;;;;;;;;AAQjB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginId.js","sources":["../../admin/src/pluginId.ts"],"sourcesContent":["export const PLUGIN_ID = \"primershop-status-manager\";\r\n"],"names":["PLUGIN_ID"],"mappings":";;AAAO,MAAMA,YAAY;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pluginId.mjs","sources":["../../admin/src/pluginId.ts"],"sourcesContent":["export const PLUGIN_ID = \"primershop-status-manager\";\r\n"],"names":["PLUGIN_ID"],"mappings":"AAAO,MAAMA,YAAY;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
import { PLUGIN_ID } from "../pluginId";
|
|
3
|
+
/**
|
|
4
|
+
* @type {import('react').FC<{ setPlugin: (id: string) => void }>}
|
|
5
|
+
*/
|
|
6
|
+
const Initializer = ({ setPlugin }) => {
|
|
7
|
+
const ref = useRef(setPlugin);
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
ref.current(PLUGIN_ID);
|
|
10
|
+
}, []);
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
export { Initializer };
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, useCallback } from "react";
|
|
3
|
+
import { SingleSelect, SingleSelectOption, Box, Typography, Flex, } from "@strapi/design-system";
|
|
4
|
+
import { useFetchClient, unstable_useContentManagerContext as useContentManagerContext, } from "@strapi/strapi/admin";
|
|
5
|
+
const ProductStatusField = () => {
|
|
6
|
+
const { contentType, id } = useContentManagerContext();
|
|
7
|
+
const [statuses, setStatuses] = useState([]);
|
|
8
|
+
const [currentStatus, setCurrentStatus] = useState("");
|
|
9
|
+
const [message, setMessage] = useState("");
|
|
10
|
+
const { get, put } = useFetchClient();
|
|
11
|
+
const handleStatusChange = useCallback(async (newStatus) => {
|
|
12
|
+
if (!id) {
|
|
13
|
+
setMessage("Save the product first and then change the status");
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
await put(`primershop-status-manager/content-status`, {
|
|
18
|
+
contentTypeUid: "api::product.product",
|
|
19
|
+
contentDocumentId: id,
|
|
20
|
+
statusId: statuses.find((status) => status.name === newStatus)
|
|
21
|
+
?.documentId,
|
|
22
|
+
});
|
|
23
|
+
setMessage(`Status updated ${currentStatus ? `from ${currentStatus}` : ""} to ${newStatus}`);
|
|
24
|
+
setCurrentStatus(newStatus || "");
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
setMessage("Error updating status");
|
|
28
|
+
console.error("Error updating status:", error);
|
|
29
|
+
}
|
|
30
|
+
}, [id, statuses, currentStatus, put]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
async function fetchCurrentStatus() {
|
|
33
|
+
try {
|
|
34
|
+
const { data: productData } = await get(`primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`);
|
|
35
|
+
const status = productData?.status;
|
|
36
|
+
if (status && status.name)
|
|
37
|
+
return setCurrentStatus(status.name);
|
|
38
|
+
if (statuses.length)
|
|
39
|
+
return handleStatusChange(statuses[0].name);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error("Error fetching product status:", error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (id && !currentStatus.length)
|
|
46
|
+
fetchCurrentStatus();
|
|
47
|
+
if (!id && statuses.length)
|
|
48
|
+
setCurrentStatus(statuses[0].name);
|
|
49
|
+
}, [id, statuses, get]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
async function fetchStatuses() {
|
|
52
|
+
try {
|
|
53
|
+
const { data } = await get("primershop-status-manager/statuses");
|
|
54
|
+
setStatuses(data);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error("Error fetching statuses:", error);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
fetchStatuses();
|
|
61
|
+
}, [get]);
|
|
62
|
+
return (_jsxs(Flex, { direction: "column", justifyContent: "center", alignItems: "stretch", width: "100%", children: [_jsx(Box, { padding: 2, children: _jsxs(Typography, { variant: "sigma", children: [contentType?.info.displayName, " status"] }) }), _jsx(SingleSelect, { placeholder: currentStatus, onChange: handleStatusChange, children: statuses.map((status) => (_jsx(SingleSelectOption, { value: status.name, children: status.name }, status.documentId))) }), _jsx(Box, { padding: 2, children: _jsx(Typography, { variant: "sigma", children: message }) })] }));
|
|
63
|
+
};
|
|
64
|
+
export { ProductStatusField };
|