@mattisvensson/strapi-plugin-webatlas 0.8.0 → 0.8.2
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/dist/_chunks/FullLoader-Cmsf8xS6.js +12 -0
- package/dist/_chunks/FullLoader-Cmsf8xS6.js.map +1 -0
- package/dist/_chunks/FullLoader-CrPED_dY.mjs +1 -0
- package/dist/_chunks/FullLoader-CrPED_dY.mjs.map +1 -0
- package/dist/_chunks/SettingTitle-BaaQ_99D.mjs +69 -0
- package/dist/_chunks/SettingTitle-BaaQ_99D.mjs.map +1 -0
- package/dist/_chunks/SettingTitle-D5oNwpzC.js +67 -0
- package/dist/_chunks/SettingTitle-DDZxIqee.js +68 -0
- package/dist/_chunks/SettingTitle-DDZxIqee.js.map +1 -0
- package/dist/_chunks/SettingTitle-IwvX4Kb5.mjs +68 -0
- package/dist/_chunks/{de-C1QgkRoj.mjs → de-B9pq-AJZ.mjs} +11 -2
- package/dist/_chunks/de-B9pq-AJZ.mjs.map +1 -0
- package/dist/_chunks/de-DlQxM8Tg.js +131 -0
- package/dist/_chunks/de-DlQxM8Tg.js.map +1 -0
- package/dist/_chunks/{en--8p5hbLP.mjs → en-Dmbcf7gp.mjs} +11 -2
- package/dist/_chunks/en-Dmbcf7gp.mjs.map +1 -0
- package/dist/_chunks/en-DrhxIwOr.js +131 -0
- package/dist/_chunks/en-DrhxIwOr.js.map +1 -0
- package/dist/_chunks/index--XAogZgv.js +247 -0
- package/dist/_chunks/index--XAogZgv.js.map +1 -0
- package/dist/_chunks/index-2lVgPz4a.js +128 -0
- package/dist/_chunks/index-B1dEY-gs.js +246 -0
- package/dist/_chunks/index-B1mbYb2_.js +293 -0
- package/dist/_chunks/index-B2tjc_lG.mjs +247 -0
- package/dist/_chunks/index-B2tjc_lG.mjs.map +1 -0
- package/dist/_chunks/index-BFuwbmZy.js +12241 -0
- package/dist/_chunks/{index-DSPh-fHL.mjs → index-D2Meknib.mjs} +11 -9
- package/dist/_chunks/index-D2SIGcj3.mjs +12242 -0
- package/dist/_chunks/index-D2SIGcj3.mjs.map +1 -0
- package/dist/_chunks/index-DH0mFrgH.js +129 -0
- package/dist/_chunks/index-DH0mFrgH.js.map +1 -0
- package/dist/_chunks/index-DKtlnMlv.js +12242 -0
- package/dist/_chunks/index-DKtlnMlv.js.map +1 -0
- package/dist/_chunks/index-DOMrViWi.js +4207 -0
- package/dist/_chunks/index-DOMrViWi.js.map +1 -0
- package/dist/_chunks/index-DXRtXlZW.mjs +129 -0
- package/dist/_chunks/index-DXRtXlZW.mjs.map +1 -0
- package/dist/_chunks/index-Df365kgY.js +294 -0
- package/dist/_chunks/index-Df365kgY.js.map +1 -0
- package/dist/_chunks/{index-VcxUbdMO.mjs → index-Dm_GIRd4.mjs} +35 -30
- package/dist/_chunks/index-Dt-mlR1F.mjs +4191 -0
- package/dist/_chunks/index-Dt-mlR1F.mjs.map +1 -0
- package/dist/_chunks/index-QFbHwlyj.mjs +294 -0
- package/dist/_chunks/index-QFbHwlyj.mjs.map +1 -0
- package/dist/_chunks/{index-7rox7tGX.mjs → index-QU9SZ_H9.mjs} +93 -52
- package/dist/_chunks/{index-Z3qq1ab8.mjs → index-_49Fvwqq.mjs} +47 -36
- package/dist/_chunks/{index-DGSjLYNl.mjs → index-aAKsnALd.mjs} +1 -1
- package/dist/_chunks/index-g8wz2qoC.js +4206 -0
- package/dist/admin/index.js +5 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +2 -1
- package/dist/admin/index.mjs.map +1 -0
- package/dist/admin/src/components/modals/NavEdit.d.ts +1 -1
- package/dist/admin/src/pages/Navigation/RouteItem.d.ts +1 -0
- package/dist/admin/src/pages/Settings/ContentBox.d.ts +5 -0
- package/dist/admin/src/pages/Settings/PageWrapper.d.ts +2 -1
- package/dist/admin/src/pages/Settings/SettingTitle.d.ts +4 -0
- package/dist/admin/src/pages/Settings/index.d.ts +4 -0
- package/dist/pluginId.d.ts +2 -1
- package/dist/server/index.js +63 -45
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +63 -45
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/src/utils/index.d.ts +6 -0
- package/dist/server/src/utils/navItemHandler.d.ts +1 -1
- package/dist/server/src/utils/reduceDepthOfOrphanedItems.d.ts +2 -0
- package/package.json +1 -1
- package/dist/_chunks/PageWrapper-B6nLPFak.mjs +0 -55
- package/dist/_chunks/PageWrapper-BMzPDWn4.js +0 -0
- package/dist/_chunks/PageWrapper-BMzPDWn4.js.map +0 -0
- package/dist/_chunks/de-DYxCPOdb.js +0 -0
- package/dist/_chunks/de-DYxCPOdb.js.map +0 -0
- package/dist/_chunks/en-Be-athEA.js +0 -0
- package/dist/_chunks/en-Be-athEA.js.map +0 -0
- package/dist/_chunks/index-Bu-uQ9jA.js +0 -0
- package/dist/_chunks/index-Bu-uQ9jA.js.map +0 -0
- package/dist/_chunks/index-C53yDU_z.js +0 -0
- package/dist/_chunks/index-C53yDU_z.js.map +0 -0
- package/dist/_chunks/index-CAz59RSr.js +0 -0
- package/dist/_chunks/index-CAz59RSr.js.map +0 -0
- package/dist/_chunks/index-DKfUSLPc.js +0 -0
- package/dist/_chunks/index-DKfUSLPc.js.map +0 -0
- package/dist/_chunks/index-DPMhcaxW.js +0 -0
- package/dist/_chunks/index-DPMhcaxW.js.map +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const React = require("react");
|
|
5
|
+
const designSystem = require("@strapi/design-system");
|
|
6
|
+
const admin = require("@strapi/strapi/admin");
|
|
7
|
+
const index = require("./index-DOMrViWi.js");
|
|
8
|
+
const reactIntl = require("react-intl");
|
|
9
|
+
require("@strapi/icons/symbols");
|
|
10
|
+
const FullLoader = require("./FullLoader-Cmsf8xS6.js");
|
|
11
|
+
const SettingTitle = require("./SettingTitle-DDZxIqee.js");
|
|
12
|
+
function reducer(newConfig, action) {
|
|
13
|
+
switch (action.type) {
|
|
14
|
+
case "SET_MAX_DEPTH":
|
|
15
|
+
if (!newConfig) return null;
|
|
16
|
+
return {
|
|
17
|
+
...newConfig,
|
|
18
|
+
navigation: { ...newConfig.navigation, maxDepth: action.payload },
|
|
19
|
+
selectedContentTypes: newConfig.selectedContentTypes || []
|
|
20
|
+
};
|
|
21
|
+
case "SET_CONFIG":
|
|
22
|
+
return action.payload;
|
|
23
|
+
default:
|
|
24
|
+
throw new Error();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const Settings = () => {
|
|
28
|
+
const { config: fetchedConfig, setConfig, loading, fetchError } = index.usePluginConfig();
|
|
29
|
+
const [config, dispatch] = React.useReducer(reducer, fetchedConfig);
|
|
30
|
+
const { toggleNotification } = admin.useNotification();
|
|
31
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
32
|
+
const [isSaving, setIsSaving] = React.useState(false);
|
|
33
|
+
const initialConfig = React.useRef(fetchedConfig);
|
|
34
|
+
React.useEffect(() => {
|
|
35
|
+
initialConfig.current = fetchedConfig;
|
|
36
|
+
if (fetchedConfig)
|
|
37
|
+
dispatch({ type: "SET_CONFIG", payload: fetchedConfig });
|
|
38
|
+
}, [fetchedConfig]);
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
if (fetchError) {
|
|
41
|
+
toggleNotification({
|
|
42
|
+
type: "danger",
|
|
43
|
+
message: formatMessage({
|
|
44
|
+
id: index.getTranslation("notification.error"),
|
|
45
|
+
defaultMessage: "An error occurred"
|
|
46
|
+
}) + ": " + fetchError
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}, [fetchError, toggleNotification, formatMessage]);
|
|
50
|
+
async function save() {
|
|
51
|
+
if (!config) return;
|
|
52
|
+
setIsSaving(true);
|
|
53
|
+
try {
|
|
54
|
+
await setConfig({ navigation: config.navigation });
|
|
55
|
+
initialConfig.current = config;
|
|
56
|
+
toggleNotification({
|
|
57
|
+
type: "success",
|
|
58
|
+
message: formatMessage({
|
|
59
|
+
id: index.getTranslation("notification.settings.saved"),
|
|
60
|
+
defaultMessage: "Settings saved successfully"
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
setIsSaving(false);
|
|
64
|
+
} catch (err) {
|
|
65
|
+
setIsSaving(false);
|
|
66
|
+
toggleNotification({
|
|
67
|
+
type: "danger",
|
|
68
|
+
message: formatMessage({
|
|
69
|
+
id: index.getTranslation("notification.error"),
|
|
70
|
+
defaultMessage: "An error occurred"
|
|
71
|
+
}) + ": " + err
|
|
72
|
+
});
|
|
73
|
+
console.error(err);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (loading) {
|
|
77
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
78
|
+
SettingTitle.PageWrapper,
|
|
79
|
+
{
|
|
80
|
+
isSaving,
|
|
81
|
+
subtitle: formatMessage({
|
|
82
|
+
id: index.getTranslation("loading"),
|
|
83
|
+
defaultMessage: "Loading..."
|
|
84
|
+
}),
|
|
85
|
+
disabledCondition: true,
|
|
86
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(FullLoader.FullLoader, { height: 200 })
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
91
|
+
SettingTitle.PageWrapper,
|
|
92
|
+
{
|
|
93
|
+
save,
|
|
94
|
+
isSaving,
|
|
95
|
+
subtitle: formatMessage({
|
|
96
|
+
id: index.getTranslation("settings.page.navigation.subtitle"),
|
|
97
|
+
defaultMessage: "Configure navigation settings"
|
|
98
|
+
}),
|
|
99
|
+
disabledCondition: JSON.stringify(config) === JSON.stringify(initialConfig.current),
|
|
100
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SettingTitle.ContentBox, { title: formatMessage({
|
|
101
|
+
id: index.getTranslation("settings.page.navigation.navigation"),
|
|
102
|
+
defaultMessage: "Navigation"
|
|
103
|
+
}), children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Field.Root, { name: "maxNavDepth", children: [
|
|
104
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Label, { children: /* @__PURE__ */ jsxRuntime.jsx(SettingTitle.SettingTitle, { children: formatMessage({
|
|
105
|
+
id: index.getTranslation("settings.page.navigation.maxNavDepth.label"),
|
|
106
|
+
defaultMessage: "Max depth of navigation tree"
|
|
107
|
+
}) }) }),
|
|
108
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
109
|
+
designSystem.Field.Input,
|
|
110
|
+
{
|
|
111
|
+
id: "maxNavDepth",
|
|
112
|
+
type: "number",
|
|
113
|
+
min: 0,
|
|
114
|
+
step: 1,
|
|
115
|
+
value: config?.navigation?.maxDepth !== void 0 ? config.navigation.maxDepth + 1 : "",
|
|
116
|
+
onChange: (e) => dispatch({ type: "SET_MAX_DEPTH", payload: Number(e.target.value) - 1 }),
|
|
117
|
+
onBlur: (e) => {
|
|
118
|
+
if (e.target.value === "") return;
|
|
119
|
+
dispatch({ type: "SET_MAX_DEPTH", payload: Number(e.target.value) - 1 });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
),
|
|
123
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Hint, {})
|
|
124
|
+
] }) })
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
};
|
|
128
|
+
exports.default = Settings;
|
|
129
|
+
//# sourceMappingURL=index-DH0mFrgH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DH0mFrgH.js","sources":["../../admin/src/pages/Settings/Navigation/index.tsx"],"sourcesContent":["/*\n *\n * Settings\n * This file contains the navigation settings page for the Webatlas plugin.\n * It allows users to set the max depth of the navigation tree.\n *\n*/\n\nimport { useEffect, useState, useReducer, useRef } from 'react';\nimport { Field } from '@strapi/design-system';\nimport { useNotification } from '@strapi/strapi/admin'\nimport usePluginConfig from '../../../hooks/usePluginConfig';\nimport type { PluginConfig } from '../../../../../types';\nimport { getTranslation } from '../../../utils';\nimport { useIntl } from 'react-intl';\nimport { FullLoader } from '../../../components/UI';\nimport { PageWrapper, ContentBox, SettingTitle } from '../';\n\ntype Action =\n | { type: 'SET_MAX_DEPTH'; payload: number }\n | { type: 'SET_CONFIG'; payload: PluginConfig }\n\nfunction reducer(newConfig: PluginConfig | null, action: Action): PluginConfig | null {\n switch (action.type) {\n case 'SET_MAX_DEPTH':\n if (!newConfig) return null;\n return { \n ...newConfig, \n navigation: { ...newConfig.navigation, maxDepth: action.payload },\n selectedContentTypes: newConfig.selectedContentTypes || []\n };\n case 'SET_CONFIG':\n return action.payload;\n default:\n throw new Error();\n }\n}\n\nconst Settings = () => {\n const { config: fetchedConfig, setConfig, loading, fetchError } = usePluginConfig();\n const [config, dispatch] = useReducer(reducer, fetchedConfig);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const [isSaving, setIsSaving] = useState(false);\n const initialConfig = useRef<PluginConfig | null>(fetchedConfig);\n\n useEffect(() => {\n initialConfig.current = fetchedConfig;\n\n if (fetchedConfig)\n dispatch({ type: 'SET_CONFIG', payload: fetchedConfig });\n }, [fetchedConfig]);\n\n useEffect(() => {\n if (fetchError) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('notification.error'),\n defaultMessage: 'An error occurred',\n }) + ': ' + fetchError,\n });\n }\n }, [fetchError, toggleNotification, formatMessage]);\n\n async function save() {\n if (!config) return\n\n setIsSaving(true);\n try {\n await setConfig({ navigation: config.navigation })\n initialConfig.current = config;\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('notification.settings.saved'),\n defaultMessage: 'Settings saved successfully',\n }),\n });\n setIsSaving(false);\n } catch (err) {\n setIsSaving(false);\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('notification.error'),\n defaultMessage: 'An error occurred',\n }) + ': ' + err,\n });\n console.error(err);\n }\n }\n\n if (loading) {\n return <PageWrapper\n isSaving={isSaving}\n subtitle={formatMessage({\n id: getTranslation('loading'),\n defaultMessage: 'Loading...',\n })}\n disabledCondition={true}\n >\n <FullLoader height={200} />\n </PageWrapper>\n }\n\n return (\n <PageWrapper\n save={save}\n isSaving={isSaving}\n subtitle={formatMessage({\n id: getTranslation('settings.page.navigation.subtitle'),\n defaultMessage: 'Configure navigation settings',\n })}\n disabledCondition={JSON.stringify(config) === JSON.stringify(initialConfig.current)}\n >\n <ContentBox title={formatMessage({\n id: getTranslation('settings.page.navigation.navigation'),\n defaultMessage: 'Navigation',\n })}>\n <Field.Root name=\"maxNavDepth\">\n <Field.Label>\n <SettingTitle>\n {formatMessage({\n id: getTranslation('settings.page.navigation.maxNavDepth.label'),\n defaultMessage: 'Max depth of navigation tree',\n })}\n </SettingTitle>\n </Field.Label>\n <Field.Input\n id=\"maxNavDepth\"\n type=\"number\"\n min={0}\n step={1}\n value={config?.navigation?.maxDepth !== undefined ? config.navigation.maxDepth + 1 : ''}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => dispatch({ type: 'SET_MAX_DEPTH', payload: Number(e.target.value) - 1 })}\n onBlur={(e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.value === '') return\n dispatch({ type: 'SET_MAX_DEPTH', payload: Number(e.target.value) - 1 })}\n }\n />\n <Field.Hint/>\n </Field.Root>\n </ContentBox>\n </PageWrapper>\n );\n};\n\nexport default Settings;\n"],"names":["usePluginConfig","useReducer","useNotification","useIntl","useState","useRef","useEffect","getTranslation","jsx","PageWrapper","FullLoader","ContentBox","jsxs","Field","SettingTitle"],"mappings":"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"}
|