@strapi/admin 5.31.3 → 5.32.0
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/admin/admin/src/components/FormInputs/Boolean.js +22 -3
- package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +23 -4
- package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/package.json +10 -10
|
@@ -12,6 +12,10 @@ const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hi
|
|
|
12
12
|
const field = Form.useField(name);
|
|
13
13
|
const fieldRef = useFocusInputField.useFocusInputField(name);
|
|
14
14
|
const composedRefs = designSystem.useComposedRefs(ref, fieldRef);
|
|
15
|
+
const handleClear = ()=>{
|
|
16
|
+
field.onChange(name, null);
|
|
17
|
+
};
|
|
18
|
+
const showClearButton = !required && field.value !== null;
|
|
15
19
|
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
|
|
16
20
|
error: field.error,
|
|
17
21
|
name: name,
|
|
@@ -19,9 +23,23 @@ const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hi
|
|
|
19
23
|
required: required,
|
|
20
24
|
maxWidth: "320px",
|
|
21
25
|
children: [
|
|
22
|
-
/*#__PURE__*/ jsxRuntime.
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
27
|
+
justifyContent: "space-between",
|
|
28
|
+
alignItems: "flex-end",
|
|
29
|
+
gap: 2,
|
|
30
|
+
children: [
|
|
31
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
|
|
32
|
+
action: labelAction,
|
|
33
|
+
children: label
|
|
34
|
+
}),
|
|
35
|
+
showClearButton && /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextButton, {
|
|
36
|
+
onClick: handleClear,
|
|
37
|
+
children: formatMessage({
|
|
38
|
+
id: 'clearLabel',
|
|
39
|
+
defaultMessage: 'Clear'
|
|
40
|
+
})
|
|
41
|
+
})
|
|
42
|
+
]
|
|
25
43
|
}),
|
|
26
44
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Toggle, {
|
|
27
45
|
ref: composedRefs,
|
|
@@ -35,6 +53,7 @@ const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hi
|
|
|
35
53
|
defaultMessage: 'True'
|
|
36
54
|
}),
|
|
37
55
|
onChange: field.onChange,
|
|
56
|
+
name: name,
|
|
38
57
|
...props
|
|
39
58
|
}),
|
|
40
59
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Hint, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Boolean.js","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Field.Label action={labelAction}>{label}</Field.Label>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","_jsxs","Field","Root","error","maxWidth","_jsx","Label","action","
|
|
1
|
+
{"version":3,"file":"Boolean.js","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,6BAAeC,gBACnB,CAAA,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACvD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,aAAyBV,CAAAA,IAAAA,CAAAA;AACvC,IAAA,MAAMW,WAAWC,qCAAqCZ,CAAAA,IAAAA,CAAAA;IAEtD,MAAMa,YAAAA,GAAeC,6BAAgBR,GAAKK,EAAAA,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAc,GAAA,IAAA;QAClBN,KAAMO,CAAAA,QAAQ,CAAChB,IAAM,EAAA,IAAA,CAAA;AACvB,KAAA;AAEA,IAAA,MAAMiB,eAAkB,GAAA,CAAChB,QAAYQ,IAAAA,KAAAA,CAAMS,KAAK,KAAK,IAAA;IAErD,qBACEC,eAAA,CAACC,mBAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOb,MAAMa,KAAK;QAAEtB,IAAMA,EAAAA,IAAAA;QAAMG,IAAMA,EAAAA,IAAAA;QAAMF,QAAUA,EAAAA,QAAAA;QAAUsB,QAAS,EAAA,OAAA;;0BACnFJ,eAACK,CAAAA,iBAAAA,EAAAA;gBAAKC,cAAe,EAAA,eAAA;gBAAgBC,UAAW,EAAA,UAAA;gBAAWC,GAAK,EAAA,CAAA;;AAC9D,kCAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;wBAACC,MAAQ1B,EAAAA,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCe,oBAAAA,eAAAA,kBACCW,cAACG,CAAAA,uBAAAA,EAAAA;wBAAWC,OAASjB,EAAAA,WAAAA;kCAClBR,aAAc,CAAA;4BAAE0B,EAAI,EAAA,YAAA;4BAAcC,cAAgB,EAAA;AAAQ,yBAAA;;;;0BAIjEN,cAACO,CAAAA,mBAAAA,EAAAA;gBACC7B,GAAKO,EAAAA,YAAAA;AACLuB,gBAAAA,OAAAA,EAAS3B,MAAMS,KAAK,KAAK,OAAO,IAAOT,GAAAA,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACtDmB,gBAAAA,QAAAA,EAAU9B,aAAc,CAAA;oBACtB0B,EAAI,EAAA,yCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAAS/B,aAAc,CAAA;oBACrB0B,EAAI,EAAA,wCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAlB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBhB,IAAMA,EAAAA,IAAAA;AACL,gBAAA,GAAGK;;AAEN,0BAAAuB,cAAA,CAACR,mBAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,cAAA,CAACR,mBAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,UAAK5C,CAAAA,YAAAA;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { memo, forwardRef } from 'react';
|
|
3
|
-
import { useComposedRefs, Field, Toggle } from '@strapi/design-system';
|
|
3
|
+
import { useComposedRefs, Field, Flex, TextButton, Toggle } from '@strapi/design-system';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { useFocusInputField } from '../../hooks/useFocusInputField.mjs';
|
|
6
6
|
import { useField } from '../Form.mjs';
|
|
@@ -10,6 +10,10 @@ const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, la
|
|
|
10
10
|
const field = useField(name);
|
|
11
11
|
const fieldRef = useFocusInputField(name);
|
|
12
12
|
const composedRefs = useComposedRefs(ref, fieldRef);
|
|
13
|
+
const handleClear = ()=>{
|
|
14
|
+
field.onChange(name, null);
|
|
15
|
+
};
|
|
16
|
+
const showClearButton = !required && field.value !== null;
|
|
13
17
|
return /*#__PURE__*/ jsxs(Field.Root, {
|
|
14
18
|
error: field.error,
|
|
15
19
|
name: name,
|
|
@@ -17,9 +21,23 @@ const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, la
|
|
|
17
21
|
required: required,
|
|
18
22
|
maxWidth: "320px",
|
|
19
23
|
children: [
|
|
20
|
-
/*#__PURE__*/
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
25
|
+
justifyContent: "space-between",
|
|
26
|
+
alignItems: "flex-end",
|
|
27
|
+
gap: 2,
|
|
28
|
+
children: [
|
|
29
|
+
/*#__PURE__*/ jsx(Field.Label, {
|
|
30
|
+
action: labelAction,
|
|
31
|
+
children: label
|
|
32
|
+
}),
|
|
33
|
+
showClearButton && /*#__PURE__*/ jsx(TextButton, {
|
|
34
|
+
onClick: handleClear,
|
|
35
|
+
children: formatMessage({
|
|
36
|
+
id: 'clearLabel',
|
|
37
|
+
defaultMessage: 'Clear'
|
|
38
|
+
})
|
|
39
|
+
})
|
|
40
|
+
]
|
|
23
41
|
}),
|
|
24
42
|
/*#__PURE__*/ jsx(Toggle, {
|
|
25
43
|
ref: composedRefs,
|
|
@@ -33,6 +51,7 @@ const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, la
|
|
|
33
51
|
defaultMessage: 'True'
|
|
34
52
|
}),
|
|
35
53
|
onChange: field.onChange,
|
|
54
|
+
name: name,
|
|
36
55
|
...props
|
|
37
56
|
}),
|
|
38
57
|
/*#__PURE__*/ jsx(Field.Hint, {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Boolean.mjs","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Field.Label action={labelAction}>{label}</Field.Label>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","_jsxs","Field","Root","error","maxWidth","_jsx","Label","action","
|
|
1
|
+
{"version":3,"file":"Boolean.mjs","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;AAUA,MAAMA,6BAAeC,UACnB,CAAA,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACvD,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,QAAyBV,CAAAA,IAAAA,CAAAA;AACvC,IAAA,MAAMW,WAAWC,kBAAqCZ,CAAAA,IAAAA,CAAAA;IAEtD,MAAMa,YAAAA,GAAeC,gBAAgBR,GAAKK,EAAAA,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAc,GAAA,IAAA;QAClBN,KAAMO,CAAAA,QAAQ,CAAChB,IAAM,EAAA,IAAA,CAAA;AACvB,KAAA;AAEA,IAAA,MAAMiB,eAAkB,GAAA,CAAChB,QAAYQ,IAAAA,KAAAA,CAAMS,KAAK,KAAK,IAAA;IAErD,qBACEC,IAAA,CAACC,MAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOb,MAAMa,KAAK;QAAEtB,IAAMA,EAAAA,IAAAA;QAAMG,IAAMA,EAAAA,IAAAA;QAAMF,QAAUA,EAAAA,QAAAA;QAAUsB,QAAS,EAAA,OAAA;;0BACnFJ,IAACK,CAAAA,IAAAA,EAAAA;gBAAKC,cAAe,EAAA,eAAA;gBAAgBC,UAAW,EAAA,UAAA;gBAAWC,GAAK,EAAA,CAAA;;AAC9D,kCAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;wBAACC,MAAQ1B,EAAAA,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCe,oBAAAA,eAAAA,kBACCW,GAACG,CAAAA,UAAAA,EAAAA;wBAAWC,OAASjB,EAAAA,WAAAA;kCAClBR,aAAc,CAAA;4BAAE0B,EAAI,EAAA,YAAA;4BAAcC,cAAgB,EAAA;AAAQ,yBAAA;;;;0BAIjEN,GAACO,CAAAA,MAAAA,EAAAA;gBACC7B,GAAKO,EAAAA,YAAAA;AACLuB,gBAAAA,OAAAA,EAAS3B,MAAMS,KAAK,KAAK,OAAO,IAAOT,GAAAA,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACtDmB,gBAAAA,QAAAA,EAAU9B,aAAc,CAAA;oBACtB0B,EAAI,EAAA,yCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAAS/B,aAAc,CAAA;oBACrB0B,EAAI,EAAA,wCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA;AACAlB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBhB,IAAMA,EAAAA,IAAAA;AACL,gBAAA,GAAGK;;AAEN,0BAAAuB,GAAA,CAACR,MAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,GAAA,CAACR,MAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,IAAK5C,CAAAA,YAAAA;;;;"}
|
|
@@ -164,7 +164,7 @@ const GuidedTourHomepageOverview = ()=>{
|
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
};
|
|
167
|
-
if (!guidedTourMeta?.data.isFirstSuperAdminUser || !enabled || hidden) {
|
|
167
|
+
if (!guidedTourMeta?.data.isFirstSuperAdminUser || !enabled || hidden || process.env.NODE_ENV !== 'development') {
|
|
168
168
|
return null;
|
|
169
169
|
}
|
|
170
170
|
return /*#__PURE__*/ jsxRuntime.jsxs(Container, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overview.js","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (!guidedTourMeta?.data.isFirstSuperAdminUser || !enabled || hidden) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Overview.js","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (\n !guidedTourMeta?.data.isFirstSuperAdminUser ||\n !enabled ||\n hidden ||\n process.env.NODE_ENV !== 'development'\n ) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","process","env","NODE_ENV","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":"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"}
|
|
@@ -162,7 +162,7 @@ const GuidedTourHomepageOverview = ()=>{
|
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
164
|
};
|
|
165
|
-
if (!guidedTourMeta?.data.isFirstSuperAdminUser || !enabled || hidden) {
|
|
165
|
+
if (!guidedTourMeta?.data.isFirstSuperAdminUser || !enabled || hidden || process.env.NODE_ENV !== 'development') {
|
|
166
166
|
return null;
|
|
167
167
|
}
|
|
168
168
|
return /*#__PURE__*/ jsxs(Container, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Overview.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (!guidedTourMeta?.data.isFirstSuperAdminUser || !enabled || hidden) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Overview.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Overview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Link, ProgressBar, Typography } from '@strapi/design-system';\nimport { CheckCircle, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { useTracking } from '../../features/Tracking';\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\nimport { ConfirmDialog } from '../ConfirmDialog';\n\nimport { type ValidTourName, useGuidedTour, getCompletedTours } from './Context';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledProgressBar = styled(ProgressBar)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral150};\n > div {\n background-color: ${({ theme }) => theme.colors.success500};\n }\n`;\n\nconst Container = styled(Flex)`\n width: 100%;\n border-radius: ${({ theme }) => theme.borderRadius};\n background-color: ${({ theme }) => theme.colors.neutral0};\n box-shadow: ${({ theme }) => theme.shadows.tableShadow};\n align-items: stretch;\n`;\n\nconst ContentSection = styled(Flex)`\n flex: 1;\n padding: ${({ theme }) => theme.spaces[8]};\n`;\n\nconst VerticalSeparator = styled.div`\n width: 1px;\n background-color: ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst TourTaskContainer = styled(Flex)`\n &:not(:last-child) {\n border-bottom: ${({ theme }) => `1px solid ${theme.colors.neutral150}`};\n }\n padding: ${({ theme }) => theme.spaces[4]};\n`;\n\nconst TodoCircle = styled(Box)`\n border: 1px solid ${({ theme }) => theme.colors.neutral300};\n border-radius: 50%;\n height: 13px;\n width: 13px;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst LINK_LABEL = {\n id: 'tours.overview.tour.link',\n defaultMessage: 'Start',\n};\nconst DONE_LABEL = {\n id: 'tours.overview.tour.done',\n defaultMessage: 'Done',\n};\n\nconst TASK_CONTENT = [\n {\n tourName: 'contentTypeBuilder',\n link: {\n label: LINK_LABEL,\n to: '/plugins/content-type-builder',\n },\n title: {\n id: 'tours.overview.contentTypeBuilder.label',\n defaultMessage: 'Create your schema',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'contentManager',\n link: {\n label: LINK_LABEL,\n to: '/content-manager',\n },\n title: {\n id: 'tours.overview.contentManager.label',\n defaultMessage: 'Create and publish content',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'apiTokens',\n link: {\n label: LINK_LABEL,\n to: '/settings/api-tokens',\n },\n title: {\n id: 'tours.overview.apiTokens.label',\n defaultMessage: 'Copy an API token',\n },\n done: DONE_LABEL,\n },\n {\n tourName: 'strapiCloud',\n link: {\n label: {\n id: 'tours.overview.strapiCloud.link',\n defaultMessage: 'Read documentation',\n },\n to: 'https://docs.strapi.io/cloud/intro',\n },\n title: {\n id: 'tours.overview.strapiCloud.label',\n defaultMessage: 'Deploy your application to Strapi Cloud',\n },\n done: DONE_LABEL,\n isExternal: true,\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourOverview\n * -----------------------------------------------------------------------------------------------*/\n\nconst WaveIcon = () => {\n const theme = useTheme();\n return (\n <svg width=\"26\" height=\"27\" viewBox=\"0 0 26 27\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M24.4138 9.30762C25.1565 10.5578 25.6441 11.9429 25.8481 13.3827C26.0522 14.8225 25.9687 16.2885 25.6026 17.6958C25.2365 19.1032 24.5949 20.4239 23.7151 21.5818C22.8352 22.7396 21.7345 23.7114 20.4766 24.4411C19.2188 25.1708 17.8287 25.6439 16.3868 25.8329C14.945 26.022 13.48 25.9232 12.0765 25.5424C10.673 25.1616 9.35903 24.5063 8.21045 23.6144C7.06188 22.7226 6.10154 21.6118 5.385 20.3464L0.268755 11.4851C0.0253867 11.0275 -0.0308559 10.4934 0.111878 9.99514C0.254612 9.49692 0.585176 9.07356 1.03392 8.81426C1.48266 8.55497 2.01453 8.47999 2.51746 8.60514C3.02039 8.73028 3.45511 9.04576 3.73001 9.48512L6.05 13.5001C6.11567 13.6139 6.20309 13.7136 6.30729 13.7936C6.41148 13.8735 6.53041 13.9322 6.65728 13.9662C6.78415 14.0002 6.91647 14.0089 7.04669 13.9918C7.17692 13.9746 7.3025 13.932 7.41625 13.8664C7.53001 13.8007 7.62972 13.7133 7.70969 13.6091C7.78966 13.5049 7.84833 13.386 7.88234 13.2591C7.91635 13.1322 7.92504 12.9999 7.90791 12.8697C7.89078 12.7395 7.84817 12.6139 7.78251 12.5001L2.87501 4.00012C2.63164 3.54255 2.57539 3.00837 2.71813 2.51014C2.86086 2.01192 3.19143 1.58856 3.64017 1.32926C4.08891 1.06997 4.62078 0.994994 5.12371 1.12014C5.62664 1.24528 6.06136 1.56077 6.33626 2.00012L11.25 10.5001C11.3137 10.6175 11.4003 10.7209 11.5046 10.8042C11.609 10.8876 11.7289 10.9492 11.8575 10.9854C11.986 11.0216 12.1205 11.0318 12.253 11.0152C12.3855 10.9986 12.5133 10.9556 12.629 10.8888C12.7446 10.8221 12.8457 10.7328 12.9263 10.6263C13.0068 10.5198 13.0653 10.3982 13.0981 10.2688C13.1309 10.1394 13.1375 10.0047 13.1174 9.87264C13.0974 9.74062 13.0511 9.61395 12.9813 9.50012L9.23125 3.00012C8.9738 2.54125 8.90753 1.99941 9.04682 1.49203C9.18612 0.984641 9.51974 0.552582 9.97539 0.289483C10.431 0.0263834 10.972 -0.0465606 11.4811 0.0864587C11.9902 0.219478 12.4263 0.547745 12.695 1.00012L17.75 9.76512C16.6322 10.8916 16.0035 12.4132 16 14.0001C15.9963 15.2989 16.4177 16.5633 17.2 17.6001C17.278 17.7074 17.3766 17.7981 17.49 17.867C17.6034 17.9358 17.7293 17.9814 17.8605 18.001C17.9917 18.0207 18.1255 18.0141 18.2541 17.9816C18.3827 17.9491 18.5035 17.8913 18.6096 17.8116C18.7156 17.7319 18.8048 17.6319 18.8718 17.5175C18.9388 17.403 18.9824 17.2763 19 17.1448C19.0176 17.0134 19.0089 16.8797 18.9743 16.7516C18.9398 16.6236 18.8801 16.5036 18.7988 16.3989C18.4824 15.9765 18.2528 15.4958 18.1231 14.9843C17.9934 14.4729 17.9661 13.9408 18.0429 13.4188C18.1197 12.8967 18.2991 12.3951 18.5706 11.9426C18.8421 11.4902 19.2005 11.096 19.625 10.7826C19.8224 10.6365 19.9592 10.4229 20.0092 10.1825C20.0592 9.94202 20.019 9.69157 19.8963 9.47887L18.4638 7.00012C18.2063 6.54125 18.14 5.99941 18.2793 5.49203C18.4186 4.98464 18.7522 4.55258 19.2079 4.28948C19.6635 4.02638 20.2045 3.95344 20.7136 4.08646C21.2227 4.21948 21.6588 4.54774 21.9275 5.00012L24.4138 9.30762ZM20.7425 2.18262C21.4432 2.36725 22.1001 2.68931 22.6752 3.13008C23.2503 3.57084 23.7321 4.12153 24.0925 4.75012L24.1338 4.82137C24.2664 5.05111 24.4848 5.21877 24.741 5.28745C24.8679 5.32146 25.0002 5.33015 25.1304 5.31302C25.2607 5.29589 25.3862 5.25328 25.5 5.18762C25.6138 5.12196 25.7135 5.03453 25.7934 4.93034C25.8734 4.82614 25.9321 4.70721 25.9661 4.58035C26.0001 4.45348 26.0088 4.32115 25.9917 4.19093C25.9745 4.0607 25.9319 3.93513 25.8663 3.82137L25.825 3.75012C25.3335 2.89321 24.6767 2.14252 23.8926 1.54167C23.1085 0.940821 22.2128 0.501801 21.2575 0.250119C21.002 0.184041 20.7307 0.221665 20.5028 0.354786C20.2749 0.487908 20.1088 0.705731 20.0409 0.960766C19.9729 1.2158 20.0085 1.48736 20.14 1.71625C20.2714 1.94513 20.488 2.11277 20.7425 2.18262ZM6.9475 25.2151C5.65171 24.1925 4.56342 22.9315 3.74126 21.5001C3.67559 21.3864 3.58817 21.2866 3.48397 21.2067C3.37978 21.1267 3.26085 21.068 3.13398 21.034C3.00711 21 2.87479 20.9913 2.74456 21.0085C2.61434 21.0256 2.48876 21.0682 2.37501 21.1339C2.26125 21.1995 2.16154 21.287 2.08157 21.3911C2.00159 21.4953 1.94293 21.6143 1.90892 21.7411C1.87491 21.868 1.86622 22.0003 1.88335 22.1306C1.90048 22.2608 1.94309 22.3864 2.00875 22.5001C2.95782 24.1511 4.21368 25.6056 5.70875 26.7851C5.91728 26.9455 6.18063 27.0173 6.44172 26.9849C6.70282 26.9525 6.94062 26.8185 7.10359 26.612C7.26655 26.4054 7.34156 26.143 7.31234 25.8815C7.28313 25.62 7.15204 25.3806 6.9475 25.2151Z\"\n fill={theme.colors.primary600}\n />\n </svg>\n );\n};\n\nexport const GuidedTourHomepageOverview = () => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const tourState = useGuidedTour('Overview', (s) => s.state.tours);\n const dispatch = useGuidedTour('Overview', (s) => s.dispatch);\n const enabled = useGuidedTour('Overview', (s) => s.state.enabled);\n const hidden = useGuidedTour('Overview', (s) => s.state.hidden);\n const completedActions = useGuidedTour('Overview', (s) => s.state.completedActions);\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n\n const tourNames = Object.keys(tourState) as ValidTourName[];\n const completedTours = getCompletedTours(tourState);\n const completionPercentage =\n tourNames.length > 0 ? Math.round((completedTours.length / tourNames.length) * 100) : 0;\n\n const handleConfirmDialog = () => {\n trackUsage('didSkipGuidedTour', { name: 'all' });\n dispatch({ type: 'skip_all_tours' });\n };\n\n const handleStartTour = (tourName: ValidTourName) => {\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true });\n\n if (tourName === 'strapiCloud') {\n trackUsage('didCompleteGuidedTour', { name: tourName });\n dispatch({ type: 'next_step', payload: tourName });\n }\n };\n\n if (\n !guidedTourMeta?.data.isFirstSuperAdminUser ||\n !enabled ||\n hidden ||\n process.env.NODE_ENV !== 'development'\n ) {\n return null;\n }\n\n return (\n <Container tag=\"section\" gap={0}>\n {/* Greeting */}\n <ContentSection direction=\"column\" gap={2} alignItems=\"start\">\n <WaveIcon />\n <Flex direction=\"column\" alignItems=\"start\" gap={1} paddingTop={4}>\n <Typography tag=\"h2\" fontSize=\"20px\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.title',\n defaultMessage: 'Discover your application!',\n })}\n </Typography>\n <Typography>\n {formatMessage({\n id: 'tours.overview.subtitle',\n defaultMessage: 'Follow the guided tour to get the most out of Strapi.',\n })}\n </Typography>\n </Flex>\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n width=\"100%\"\n paddingTop={5}\n paddingBottom={8}\n gap={2}\n >\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'tours.overview.completed',\n defaultMessage: '{completed}% completed',\n },\n { completed: completionPercentage }\n )}\n </Typography>\n <StyledProgressBar value={completionPercentage} />\n </Flex>\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'tours.overview.close',\n defaultMessage: 'Close guided tour',\n })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmDialog}>\n {formatMessage({\n id: 'tours.overview.close.description',\n defaultMessage: 'Are you sure you want to close the guided tour?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </ContentSection>\n <VerticalSeparator />\n {/* Task List */}\n <ContentSection direction=\"column\" alignItems=\"start\">\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: 'tours.overview.tasks',\n defaultMessage: 'Your tasks',\n })}\n </Typography>\n <Box tag=\"ul\" width=\"100%\" borderColor=\"neutral150\" marginTop={4} hasRadius>\n {TASK_CONTENT.map((task) => {\n const tourName = task.tourName as ValidTourName;\n const tour = tourState[tourName];\n\n const isLinkDisabled =\n tourName !== 'contentTypeBuilder' &&\n !completedActions.includes(\n GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema\n );\n\n return (\n <TourTaskContainer\n tag=\"li\"\n aria-label={formatMessage(task.title)}\n key={tourName}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n {tour.isCompleted ? (\n <>\n <Flex gap={2}>\n <CheckCircle fill=\"success500\" />\n <Typography style={{ textDecoration: 'line-through' }} textColor=\"neutral500\">\n {formatMessage(task.title)}\n </Typography>\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral500\">\n {formatMessage(task.done)}\n </Typography>\n </>\n ) : (\n <>\n <Flex gap={2} alignItems=\"center\">\n <Flex height=\"16px\" width=\"16px\" justifyContent=\"center\">\n <TodoCircle />\n </Flex>\n <Typography>{formatMessage(task.title)}</Typography>\n </Flex>\n {task.isExternal ? (\n <Link\n isExternal\n disabled={isLinkDisabled}\n href={task.link.to}\n onClick={() => handleStartTour(task.tourName as ValidTourName)}\n >\n {formatMessage(task.link.label)}\n </Link>\n ) : (\n <Link\n endIcon={<ChevronRight />}\n disabled={isLinkDisabled}\n to={task.link.to}\n tag={NavLink}\n onClick={() =>\n trackUsage('didStartGuidedTour', { name: tourName, fromHomepage: true })\n }\n >\n {formatMessage(task.link.label)}\n </Link>\n )}\n </>\n )}\n </TourTaskContainer>\n );\n })}\n </Box>\n </ContentSection>\n </Container>\n );\n};\n"],"names":["StyledProgressBar","styled","ProgressBar","theme","colors","neutral150","success500","Container","Flex","borderRadius","neutral0","shadows","tableShadow","ContentSection","spaces","VerticalSeparator","div","TourTaskContainer","TodoCircle","Box","neutral300","LINK_LABEL","id","defaultMessage","DONE_LABEL","TASK_CONTENT","tourName","link","label","to","title","done","isExternal","WaveIcon","useTheme","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","primary600","GuidedTourHomepageOverview","formatMessage","useIntl","trackUsage","useTracking","tourState","useGuidedTour","s","state","tours","dispatch","enabled","hidden","completedActions","data","guidedTourMeta","useGetGuidedTourMetaQuery","tourNames","Object","keys","completedTours","getCompletedTours","completionPercentage","length","Math","round","handleConfirmDialog","name","type","handleStartTour","fromHomepage","payload","isFirstSuperAdminUser","process","env","NODE_ENV","_jsxs","tag","gap","direction","alignItems","paddingTop","Typography","fontSize","fontWeight","paddingBottom","variant","completed","value","Dialog","Root","Trigger","Button","ConfirmDialog","onConfirm","borderColor","marginTop","hasRadius","map","task","tour","isLinkDisabled","includes","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","aria-label","justifyContent","isCompleted","_Fragment","CheckCircle","style","textDecoration","textColor","Link","disabled","href","onClick","endIcon","ChevronRight","NavLink"],"mappings":";;;;;;;;;;;;;AAeA;;AAEkG,qGAElG,MAAMA,iBAAAA,GAAoBC,MAAOC,CAAAA,WAAAA,CAAY;;oBAEzB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;sBAEvC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;;AAE/D,CAAC;AAED,MAAMC,SAAAA,GAAYN,MAAOO,CAAAA,IAAAA,CAAK;;AAEb,iBAAA,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAAA,CAAMM,YAAY,CAAC;oBACjC,EAAE,CAAC,EAAEN,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACM,QAAQ,CAAC;cAC7C,EAAE,CAAC,EAAEP,KAAK,EAAE,GAAKA,KAAMQ,CAAAA,OAAO,CAACC,WAAW,CAAC;;AAEzD,CAAC;AAED,MAAMC,cAAAA,GAAiBZ,MAAOO,CAAAA,IAAAA,CAAK;;WAExB,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMW,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;AAC5C,CAAC;AAED,MAAMC,iBAAAA,GAAoBd,MAAOe,CAAAA,GAAG;;oBAEhB,EAAE,CAAC,EAAEb,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;AAC7D,CAAC;AAED,MAAMY,iBAAAA,GAAoBhB,MAAOO,CAAAA,IAAAA,CAAK;;AAEnB,mBAAA,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAK,CAAC,UAAU,EAAEA,KAAMC,CAAAA,MAAM,CAACC,UAAU,EAAE,CAAC;;WAEhE,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMW,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;AAC5C,CAAC;AAED,MAAMI,UAAAA,GAAajB,MAAOkB,CAAAA,GAAAA,CAAI;oBACV,EAAE,CAAC,EAAEhB,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACgB,UAAU,CAAC;;;;AAI7D,CAAC;AAED;;AAEkG,qGAElG,MAAMC,UAAa,GAAA;IACjBC,EAAI,EAAA,0BAAA;IACJC,cAAgB,EAAA;AAClB,CAAA;AACA,MAAMC,UAAa,GAAA;IACjBF,EAAI,EAAA,0BAAA;IACJC,cAAgB,EAAA;AAClB,CAAA;AAEA,MAAME,YAAe,GAAA;AACnB,IAAA;QACEC,QAAU,EAAA,oBAAA;QACVC,IAAM,EAAA;YACJC,KAAOP,EAAAA,UAAAA;YACPQ,EAAI,EAAA;AACN,SAAA;QACAC,KAAO,EAAA;YACLR,EAAI,EAAA,yCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAQ,IAAMP,EAAAA;AACR,KAAA;AACA,IAAA;QACEE,QAAU,EAAA,gBAAA;QACVC,IAAM,EAAA;YACJC,KAAOP,EAAAA,UAAAA;YACPQ,EAAI,EAAA;AACN,SAAA;QACAC,KAAO,EAAA;YACLR,EAAI,EAAA,qCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAQ,IAAMP,EAAAA;AACR,KAAA;AACA,IAAA;QACEE,QAAU,EAAA,WAAA;QACVC,IAAM,EAAA;YACJC,KAAOP,EAAAA,UAAAA;YACPQ,EAAI,EAAA;AACN,SAAA;QACAC,KAAO,EAAA;YACLR,EAAI,EAAA,gCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAQ,IAAMP,EAAAA;AACR,KAAA;AACA,IAAA;QACEE,QAAU,EAAA,aAAA;QACVC,IAAM,EAAA;YACJC,KAAO,EAAA;gBACLN,EAAI,EAAA,iCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA;YACAM,EAAI,EAAA;AACN,SAAA;QACAC,KAAO,EAAA;YACLR,EAAI,EAAA,kCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA;QACAQ,IAAMP,EAAAA,UAAAA;QACNQ,UAAY,EAAA;AACd;AACD,CAAA;AAED;;AAEkG,qGAElG,MAAMC,QAAW,GAAA,IAAA;AACf,IAAA,MAAM9B,KAAQ+B,GAAAA,QAAAA,EAAAA;AACd,IAAA,qBACEC,GAACC,CAAAA,KAAAA,EAAAA;QAAIC,KAAM,EAAA,IAAA;QAAKC,MAAO,EAAA,IAAA;QAAKC,OAAQ,EAAA,WAAA;QAAYC,IAAK,EAAA,MAAA;QAAOC,KAAM,EAAA,4BAAA;AAChE,QAAA,QAAA,gBAAAN,GAACO,CAAAA,MAAAA,EAAAA;YACCC,CAAE,EAAA,ypIAAA;YACFH,IAAMrC,EAAAA,KAAAA,CAAMC,MAAM,CAACwC;;;AAI3B,CAAA;MAEaC,0BAA6B,GAAA,IAAA;IACxC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IAEvB,MAAMC,SAAAA,GAAYC,cAAc,UAAY,EAAA,CAACC,IAAMA,CAAEC,CAAAA,KAAK,CAACC,KAAK,CAAA;AAChE,IAAA,MAAMC,WAAWJ,aAAc,CAAA,UAAA,EAAY,CAACC,CAAAA,GAAMA,EAAEG,QAAQ,CAAA;IAC5D,MAAMC,OAAAA,GAAUL,cAAc,UAAY,EAAA,CAACC,IAAMA,CAAEC,CAAAA,KAAK,CAACG,OAAO,CAAA;IAChE,MAAMC,MAAAA,GAASN,cAAc,UAAY,EAAA,CAACC,IAAMA,CAAEC,CAAAA,KAAK,CAACI,MAAM,CAAA;IAC9D,MAAMC,gBAAAA,GAAmBP,cAAc,UAAY,EAAA,CAACC,IAAMA,CAAEC,CAAAA,KAAK,CAACK,gBAAgB,CAAA;AAClF,IAAA,MAAM,EAAEC,IAAAA,EAAMC,cAAc,EAAE,GAAGC,yBAAAA,EAAAA;IAEjC,MAAMC,SAAAA,GAAYC,MAAOC,CAAAA,IAAI,CAACd,SAAAA,CAAAA;AAC9B,IAAA,MAAMe,iBAAiBC,iBAAkBhB,CAAAA,SAAAA,CAAAA;AACzC,IAAA,MAAMiB,oBACJL,GAAAA,SAAAA,CAAUM,MAAM,GAAG,IAAIC,IAAKC,CAAAA,KAAK,CAAEL,eAAeG,MAAM,GAAGN,SAAUM,CAAAA,MAAM,GAAI,GAAO,CAAA,GAAA,CAAA;AAExF,IAAA,MAAMG,mBAAsB,GAAA,IAAA;AAC1BvB,QAAAA,UAAAA,CAAW,mBAAqB,EAAA;YAAEwB,IAAM,EAAA;AAAM,SAAA,CAAA;QAC9CjB,QAAS,CAAA;YAAEkB,IAAM,EAAA;AAAiB,SAAA,CAAA;AACpC,KAAA;AAEA,IAAA,MAAMC,kBAAkB,CAAChD,QAAAA,GAAAA;AACvBsB,QAAAA,UAAAA,CAAW,oBAAsB,EAAA;YAAEwB,IAAM9C,EAAAA,QAAAA;YAAUiD,YAAc,EAAA;AAAK,SAAA,CAAA;AAEtE,QAAA,IAAIjD,aAAa,aAAe,EAAA;AAC9BsB,YAAAA,UAAAA,CAAW,uBAAyB,EAAA;gBAAEwB,IAAM9C,EAAAA;AAAS,aAAA,CAAA;YACrD6B,QAAS,CAAA;gBAAEkB,IAAM,EAAA,WAAA;gBAAaG,OAASlD,EAAAA;AAAS,aAAA,CAAA;AAClD;AACF,KAAA;AAEA,IAAA,IACE,CAACkC,cAAAA,EAAgBD,IAAKkB,CAAAA,qBAAAA,IACtB,CAACrB,OAAAA,IACDC,MACAqB,IAAAA,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,aACzB,EAAA;QACA,OAAO,IAAA;AACT;AAEA,IAAA,qBACEC,IAAC1E,CAAAA,SAAAA,EAAAA;QAAU2E,GAAI,EAAA,SAAA;QAAUC,GAAK,EAAA,CAAA;;0BAE5BF,IAACpE,CAAAA,cAAAA,EAAAA;gBAAeuE,SAAU,EAAA,QAAA;gBAASD,GAAK,EAAA,CAAA;gBAAGE,UAAW,EAAA,OAAA;;kCACpDlD,GAACF,CAAAA,QAAAA,EAAAA,EAAAA,CAAAA;kCACDgD,IAACzE,CAAAA,IAAAA,EAAAA;wBAAK4E,SAAU,EAAA,QAAA;wBAASC,UAAW,EAAA,OAAA;wBAAQF,GAAK,EAAA,CAAA;wBAAGG,UAAY,EAAA,CAAA;;0CAC9DnD,GAACoD,CAAAA,UAAAA,EAAAA;gCAAWL,GAAI,EAAA,IAAA;gCAAKM,QAAS,EAAA,MAAA;gCAAOC,UAAW,EAAA,MAAA;0CAC7C3C,aAAc,CAAA;oCACbxB,EAAI,EAAA,sBAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;0CAEFY,GAACoD,CAAAA,UAAAA,EAAAA;0CACEzC,aAAc,CAAA;oCACbxB,EAAI,EAAA,yBAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;kCAGJ0D,IAACzE,CAAAA,IAAAA,EAAAA;wBACC4E,SAAU,EAAA,QAAA;wBACVC,UAAW,EAAA,YAAA;wBACXhD,KAAM,EAAA,MAAA;wBACNiD,UAAY,EAAA,CAAA;wBACZI,aAAe,EAAA,CAAA;wBACfP,GAAK,EAAA,CAAA;;0CAELhD,GAACoD,CAAAA,UAAAA,EAAAA;gCAAWI,OAAQ,EAAA,IAAA;0CACjB7C,aACC,CAAA;oCACExB,EAAI,EAAA,0BAAA;oCACJC,cAAgB,EAAA;iCAElB,EAAA;oCAAEqE,SAAWzB,EAAAA;AAAqB,iCAAA;;0CAGtChC,GAACnC,CAAAA,iBAAAA,EAAAA;gCAAkB6F,KAAO1B,EAAAA;;;;AAE5B,kCAAAc,IAAA,CAACa,OAAOC,IAAI,EAAA;;AACV,0CAAA5D,GAAA,CAAC2D,OAAOE,OAAO,EAAA;AACb,gCAAA,QAAA,gBAAA7D,GAAC8D,CAAAA,MAAAA,EAAAA;oCAAON,OAAQ,EAAA,UAAA;8CACb7C,aAAc,CAAA;wCACbxB,EAAI,EAAA,sBAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;;0CAGJY,GAAC+D,CAAAA,aAAAA,EAAAA;gCAAcC,SAAW5B,EAAAA,mBAAAA;0CACvBzB,aAAc,CAAA;oCACbxB,EAAI,EAAA,kCAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;;;;0BAINY,GAACpB,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA;0BAEDkE,IAACpE,CAAAA,cAAAA,EAAAA;gBAAeuE,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,OAAA;;kCAC5ClD,GAACoD,CAAAA,UAAAA,EAAAA;wBAAWI,OAAQ,EAAA,OAAA;wBAAQF,UAAW,EAAA,MAAA;kCACpC3C,aAAc,CAAA;4BACbxB,EAAI,EAAA,sBAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;kCAEFY,GAAChB,CAAAA,GAAAA,EAAAA;wBAAI+D,GAAI,EAAA,IAAA;wBAAK7C,KAAM,EAAA,MAAA;wBAAO+D,WAAY,EAAA,YAAA;wBAAaC,SAAW,EAAA,CAAA;wBAAGC,SAAS,EAAA,IAAA;kCACxE7E,YAAa8E,CAAAA,GAAG,CAAC,CAACC,IAAAA,GAAAA;4BACjB,MAAM9E,QAAAA,GAAW8E,KAAK9E,QAAQ;4BAC9B,MAAM+E,IAAAA,GAAOvD,SAAS,CAACxB,QAAS,CAAA;4BAEhC,MAAMgF,cAAAA,GACJhF,QAAa,KAAA,oBAAA,IACb,CAACgC,gBAAAA,CAAiBiD,QAAQ,CACxBC,4BAAAA,CAA6BC,kBAAkB,CAACC,YAAY,CAAA;AAGhE,4BAAA,qBACE3E,GAAClB,CAAAA,iBAAAA,EAAAA;gCACCiE,GAAI,EAAA,IAAA;gCACJ6B,YAAYjE,EAAAA,aAAAA,CAAc0D,KAAK1E,KAAK,CAAA;gCAEpCuD,UAAW,EAAA,QAAA;gCACX2B,cAAe,EAAA,eAAA;AAEdP,gCAAAA,QAAAA,EAAAA,IAAAA,CAAKQ,WAAW,iBACfhC,IAAA,CAAAiC,QAAA,EAAA;;sDACEjC,IAACzE,CAAAA,IAAAA,EAAAA;4CAAK2E,GAAK,EAAA,CAAA;;8DACThD,GAACgF,CAAAA,WAAAA,EAAAA;oDAAY3E,IAAK,EAAA;;8DAClBL,GAACoD,CAAAA,UAAAA,EAAAA;oDAAW6B,KAAO,EAAA;wDAAEC,cAAgB,EAAA;AAAe,qDAAA;oDAAGC,SAAU,EAAA,YAAA;AAC9DxE,oDAAAA,QAAAA,EAAAA,aAAAA,CAAc0D,KAAK1E,KAAK;;;;sDAG7BK,GAACoD,CAAAA,UAAAA,EAAAA;4CAAWI,OAAQ,EAAA,OAAA;4CAAQ2B,SAAU,EAAA,YAAA;AACnCxE,4CAAAA,QAAAA,EAAAA,aAAAA,CAAc0D,KAAKzE,IAAI;;;AAI5B,iCAAA,CAAA,iBAAAkD,IAAA,CAAAiC,QAAA,EAAA;;sDACEjC,IAACzE,CAAAA,IAAAA,EAAAA;4CAAK2E,GAAK,EAAA,CAAA;4CAAGE,UAAW,EAAA,QAAA;;8DACvBlD,GAAC3B,CAAAA,IAAAA,EAAAA;oDAAK8B,MAAO,EAAA,MAAA;oDAAOD,KAAM,EAAA,MAAA;oDAAO2E,cAAe,EAAA,QAAA;AAC9C,oDAAA,QAAA,gBAAA7E,GAACjB,CAAAA,UAAAA,EAAAA,EAAAA;;8DAEHiB,GAACoD,CAAAA,UAAAA,EAAAA;AAAYzC,oDAAAA,QAAAA,EAAAA,aAAAA,CAAc0D,KAAK1E,KAAK;;;;wCAEtC0E,IAAKxE,CAAAA,UAAU,iBACdG,GAACoF,CAAAA,IAAAA,EAAAA;4CACCvF,UAAU,EAAA,IAAA;4CACVwF,QAAUd,EAAAA,cAAAA;4CACVe,IAAMjB,EAAAA,IAAAA,CAAK7E,IAAI,CAACE,EAAE;4CAClB6F,OAAS,EAAA,IAAMhD,eAAgB8B,CAAAA,IAAAA,CAAK9E,QAAQ,CAAA;sDAE3CoB,aAAc0D,CAAAA,IAAAA,CAAK7E,IAAI,CAACC,KAAK;2DAGhCO,GAACoF,CAAAA,IAAAA,EAAAA;AACCI,4CAAAA,OAAAA,gBAASxF,GAACyF,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;4CACVJ,QAAUd,EAAAA,cAAAA;4CACV7E,EAAI2E,EAAAA,IAAAA,CAAK7E,IAAI,CAACE,EAAE;4CAChBqD,GAAK2C,EAAAA,OAAAA;4CACLH,OAAS,EAAA,IACP1E,WAAW,oBAAsB,EAAA;oDAAEwB,IAAM9C,EAAAA,QAAAA;oDAAUiD,YAAc,EAAA;AAAK,iDAAA,CAAA;sDAGvE7B,aAAc0D,CAAAA,IAAAA,CAAK7E,IAAI,CAACC,KAAK;;;;AA3CjCF,6BAAAA,EAAAA,QAAAA,CAAAA;AAkDX,yBAAA;;;;;;AAKV;;;;"}
|
|
@@ -41,7 +41,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
|
41
41
|
};
|
|
42
42
|
const GuidedTourTooltip = ({ children, ...props })=>{
|
|
43
43
|
const state = Context.useGuidedTour('TooltipWrapper', (s)=>s.state);
|
|
44
|
-
if (!state.enabled || state.hidden) {
|
|
44
|
+
if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {
|
|
45
45
|
return children;
|
|
46
46
|
}
|
|
47
47
|
return /*#__PURE__*/ jsxRuntime.jsx(GuidedTourTooltipImpl, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tours.js","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden) {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_jsxs","_Fragment","Portal","Popover","Root","open","Anchor","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tours.js","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","process","env","NODE_ENV","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_jsxs","_Fragment","Portal","Popover","Root","open","Anchor","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA;;AAEkG,2GAE5FA,KAAQ,GAAA;AACZC,IAAAA,kBAAAA,EAAoBC,WAAW,oBAAsBC,EAAAA,+CAAAA,CAAAA;AACrDC,IAAAA,cAAAA,EAAgBF,WAAW,gBAAkBG,EAAAA,uCAAAA,CAAAA;AAC7CC,IAAAA,SAAAA,EAAWJ,WAAW,WAAaK,EAAAA,6BAAAA,CAAAA;IACnCC,WAAaN,EAAAA,UAAAA,CAAW,eAAe,EAAE;AAC3C;AAuBA,MAAMO,oBAAoB,CAAC,EAAEC,QAAQ,EAAE,GAAGC,KAA+B,EAAA,GAAA;AACvE,IAAA,MAAMC,QAAQC,qBAAc,CAAA,gBAAA,EAAkB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;AAE5D,IAAA,IAAI,CAACA,KAAAA,CAAMG,OAAO,IAAIH,KAAMI,CAAAA,MAAM,IAAIC,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,aAAe,EAAA;QAC5E,OAAOT,QAAAA;AACT;AAEA,IAAA,qBAAOU,cAACC,CAAAA,qBAAAA,EAAAA;AAAuB,QAAA,GAAGV,KAAK;AAAGD,QAAAA,QAAAA,EAAAA;;AAC5C,CAAA;AAEA,MAAMY,iBAAAA,GAAoBC,aAAOC,CAAAA,gBAAAA,CAAI;;;;;;;;AAQrC,CAAC;AAED,MAAMH,qBAAwB,GAAA,CAAC,EAC7BX,QAAQ,EACRe,OAAO,EACPC,QAAQ,EACRC,IAAI,EACJC,IAAI,EACmB,GAAA;AACvB,IAAA,MAAM,EAAEC,IAAAA,EAAMC,cAAc,EAAE,GAAGC,+BAAAA,EAAAA;AACjC,IAAA,MAAMnB,QAAQC,qBAAc,CAAA,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;AAC/D,IAAA,MAAMoB,WAAWnB,qBAAc,CAAA,mBAAA,EAAqB,CAACC,CAAAA,GAAMA,EAAEkB,QAAQ,CAAA;AAErE,IAAA,MAAMC,gBAAgBrB,KAAMZ,CAAAA,KAAK,CAAC0B,QAAS,CAAA,CAACQ,WAAW,KAAKP,IAAAA;AAC5D,IAAA,MAAMQ,kBAAqBP,GAAAA,IAAAA,GAAOA,IAAKhB,CAAAA,KAAAA,CAAMwB,gBAAgB,CAAI,GAAA,IAAA;AACjE,IAAA,MAAMC,aACJP,GAAAA,cAAAA,EAAgBD,IAAMS,EAAAA,qBAAAA,IACtB,CAAC1B,KAAAA,CAAMZ,KAAK,CAAC0B,QAAS,CAAA,CAACa,WAAW,IAClCN,aACAE,IAAAA,kBAAAA;;AAGFK,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACJ,aAAe,EAAA;AAEpB,QAAA,MAAMK,gBAAgBC,MAAOC,CAAAA,gBAAgB,CAACC,QAASC,CAAAA,IAAI,EAAEC,QAAQ;AACrEF,QAAAA,QAAAA,CAASC,IAAI,CAACE,KAAK,CAACD,QAAQ,GAAG,QAAA;QAE/B,OAAO,IAAA;AACLF,YAAAA,QAAAA,CAASC,IAAI,CAACE,KAAK,CAACD,QAAQ,GAAGL,aAAAA;AACjC,SAAA;KACC,EAAA;AAACL,QAAAA;AAAc,KAAA,CAAA;AAElB,IAAA,MAAMY,SAAOT,gBAAMU,CAAAA,OAAO,CAAC,IAAMC,0BAAqBzB,QAAW,CAAA,EAAA;AAACA,QAAAA;AAAS,KAAA,CAAA;AAE3E,IAAA,MAAM0B,eACJC,MAAOC,CAAAA,IAAI,CAACxB,cAAgBD,EAAAA,IAAAA,EAAM0B,WAAW,EAAC,CAAA,CAAGC,MAAM,CAAC,CAACC,GAAQA,GAAAA,GAAAA,CAAIC,UAAU,CAAC,OAAA,CAAA,CAAA,CAC7EC,MAAM,GAAG,CAAA;AAEdnB,IAAAA,gBAAAA,CAAMC,SAAS,CAAC,IAAA;AACd,QAAA,IAAIW,YAAc,EAAA;AAChB;;;;;;;AAOC,UACDpB,QAAS,CAAA;gBACP4B,IAAM,EAAA,uBAAA;gBACNC,OAAS,EAAA;oBAACC,sCAA6B7D,CAAAA,kBAAkB,CAAC8D;AAAa;AACzE,aAAA,CAAA;AACF;KACC,EAAA;AAAC/B,QAAAA,QAAAA;AAAUoB,QAAAA,YAAAA;AAAczB,QAAAA,IAAAA;AAAMD,QAAAA;AAAS,KAAA,CAAA;IAE3C,qBACEsC,eAAA,CAAAC,mBAAA,EAAA;;AACG5B,YAAAA,aAAAA,kBACCjB,cAAC8C,CAAAA,mBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAA9C,cAACE,CAAAA,iBAAAA,EAAAA,EAAAA;;AAGL,0BAAA0C,eAAA,CAACG,qBAAQC,IAAI,EAAA;gBAACC,IAAMhC,EAAAA,aAAAA;;AAClB,kCAAAjB,cAAA,CAAC+C,qBAAQG,MAAM,EAAA;AAAE5D,wBAAAA,QAAAA,EAAAA;;oBAChBe,OAAQ,CAAA;AAAEwB,8BAAAA,MAAAA;AAAMrC,wBAAAA,KAAAA;AAAOoB,wBAAAA;AAAS,qBAAA;;;;;AAIzC,CAAA;AAaO,SAAS9B,UAAAA,CACdwB,QAAgB,EAChB6C,KAAQ,EAAA;AAMR,IAAA,MAAMC,OAAOD,KAAME,CAAAA,MAAM,CACvB,CAACC,KAAK/C,IAAMgD,EAAAA,KAAAA,GAAAA;QACV,MAAMC,IAAAA,GAAOjD,KAAKiD,IAAI;AAEtB,QAAA,IAAIA,QAAQF,GAAK,EAAA;YACf,MAAMG,KAAAA,CAAM,CAAC,UAAU,EAAEnD,QAAAA,CAAS,YAAY,EAAEC,IAAKiD,CAAAA,IAAI,CAAC,4BAA4B,CAAC,CAAA;AACzF;AAECF,QAAAA,GAAkB,CAACE,IAAK,CAAA,GAAG,CAAC,EAAElE,QAAQ,EAAiC,GAAA;AACtE,YAAA,qBACEU,cAACX,CAAAA,iBAAAA,EAAAA;gBACCiB,QAAUA,EAAAA,QAAAA;gBACVC,IAAMgD,EAAAA,KAAAA;AACNlD,gBAAAA,OAAAA,EAASE,KAAKF,OAAO;AACrBG,gBAAAA,IAAAA,EAAMD,KAAKC,IAAI;AAEdlB,gBAAAA,QAAAA,EAAAA;;AAGP,SAAA;QAEA,IAAIiB,IAAAA,CAAKmD,oBAAoB,EAAE;;YAE7BJ,GAAIK,CAAAA,KAAK,CAACC,kBAAkB,EAAA;AAC9B;QAEA,OAAON,GAAAA;KAET,EAAA;QAAEK,KAAO,EAAA;AAAEE,YAAAA,cAAAA,EAAgBV,MAAMZ,MAAM;AAAEqB,YAAAA,kBAAAA,EAAoBT,MAAMZ;AAAO;AAAE,KAAA,CAAA;IAK9E,OAAOa,IAAAA;AACT;;;;;"}
|
|
@@ -20,7 +20,7 @@ import { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants.mjs';
|
|
|
20
20
|
};
|
|
21
21
|
const GuidedTourTooltip = ({ children, ...props })=>{
|
|
22
22
|
const state = useGuidedTour('TooltipWrapper', (s)=>s.state);
|
|
23
|
-
if (!state.enabled || state.hidden) {
|
|
23
|
+
if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {
|
|
24
24
|
return children;
|
|
25
25
|
}
|
|
26
26
|
return /*#__PURE__*/ jsx(GuidedTourTooltipImpl, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tours.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden) {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_jsxs","_Fragment","Portal","Popover","Root","open","Anchor","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tours.mjs","sources":["../../../../../../admin/src/components/GuidedTour/Tours.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Popover, Portal } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useGetGuidedTourMetaQuery } from '../../services/admin';\n\nimport { type State, type Action, useGuidedTour, ValidTourName, CompletedActions } from './Context';\nimport { apiTokensSteps } from './Steps/ApiTokensSteps';\nimport { contentManagerSteps } from './Steps/ContentManagerSteps';\nimport { contentTypeBuilderSteps } from './Steps/ContentTypeBuilderSteps';\nimport { type Step, createStepComponents } from './Steps/Step';\nimport { GUIDED_TOUR_REQUIRED_ACTIONS } from './utils/constants';\n\n/* -------------------------------------------------------------------------------------------------\n * Tours\n * -----------------------------------------------------------------------------------------------*/\n\nconst tours = {\n contentTypeBuilder: createTour('contentTypeBuilder', contentTypeBuilderSteps),\n contentManager: createTour('contentManager', contentManagerSteps),\n apiTokens: createTour('apiTokens', apiTokensSteps),\n strapiCloud: createTour('strapiCloud', []),\n} as const;\n\ntype Tours = typeof tours;\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourTooltip\n * -----------------------------------------------------------------------------------------------*/\n\nexport type StepContentProps = {\n Step: Step;\n state: State;\n dispatch: React.Dispatch<Action>;\n};\ntype Content = (props: StepContentProps) => React.ReactNode;\n\ntype GuidedTourTooltipProps = {\n children: React.ReactNode;\n content: Content;\n tourName: ValidTourName;\n step: number;\n when?: (completedActions: CompletedActions) => boolean;\n};\n\nconst GuidedTourTooltip = ({ children, ...props }: GuidedTourTooltipProps) => {\n const state = useGuidedTour('TooltipWrapper', (s) => s.state);\n\n if (!state.enabled || state.hidden || process.env.NODE_ENV !== 'development') {\n return children;\n }\n\n return <GuidedTourTooltipImpl {...props}>{children}</GuidedTourTooltipImpl>;\n};\n\nconst GuidedTourOverlay = styled(Box)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(50, 50, 77, 0.2);\n z-index: 10;\n`;\n\nconst GuidedTourTooltipImpl = ({\n children,\n content,\n tourName,\n step,\n when,\n}: GuidedTourTooltipProps) => {\n const { data: guidedTourMeta } = useGetGuidedTourMetaQuery();\n const state = useGuidedTour('GuidedTourTooltip', (s) => s.state);\n const dispatch = useGuidedTour('GuidedTourTooltip', (s) => s.dispatch);\n\n const isCurrentStep = state.tours[tourName].currentStep === step;\n const isStepConditionMet = when ? when(state.completedActions) : true;\n const isPopoverOpen =\n guidedTourMeta?.data?.isFirstSuperAdminUser &&\n !state.tours[tourName].isCompleted &&\n isCurrentStep &&\n isStepConditionMet;\n\n // Lock the scroll\n React.useEffect(() => {\n if (!isPopoverOpen) return;\n\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = 'hidden';\n\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, [isPopoverOpen]);\n\n const Step = React.useMemo(() => createStepComponents(tourName), [tourName]);\n\n const hasApiSchema =\n Object.keys(guidedTourMeta?.data?.schemas ?? {}).filter((key) => key.startsWith('api::'))\n .length > 0;\n\n React.useEffect(() => {\n if (hasApiSchema) {\n /**\n * Fallback sync:\n *\n * When the user already has a schema (ie started project from template with seeded data),\n * allow them to proceed to the content manager tour.\n *\n * When the CTB fails to restart after saving a schema (as it often does)\n */\n dispatch({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n }\n }, [dispatch, hasApiSchema, step, tourName]);\n\n return (\n <>\n {isPopoverOpen && (\n <Portal>\n <GuidedTourOverlay />\n </Portal>\n )}\n <Popover.Root open={isPopoverOpen}>\n <Popover.Anchor>{children}</Popover.Anchor>\n {content({ Step, state, dispatch })}\n </Popover.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Tour factory\n * -----------------------------------------------------------------------------------------------*/\n\nexport type TourStep<P extends string> = {\n name: P;\n content: Content;\n when?: (completedActions: CompletedActions) => boolean;\n excludeFromStepCount?: boolean;\n};\n\nexport function createTour<const T extends ReadonlyArray<TourStep<string>>>(\n tourName: string,\n steps: T\n) {\n type Components = {\n [K in T[number]['name']]: React.ComponentType<{ children: React.ReactNode }>;\n };\n\n const tour = steps.reduce(\n (acc, step, index) => {\n const name = step.name as keyof Components;\n\n if (name in acc) {\n throw Error(`The tour: ${tourName} with step: ${step.name} has already been registered`);\n }\n\n (acc as Components)[name] = ({ children }: { children: React.ReactNode }) => {\n return (\n <GuidedTourTooltip\n tourName={tourName as ValidTourName}\n step={index}\n content={step.content}\n when={step.when}\n >\n {children}\n </GuidedTourTooltip>\n );\n };\n\n if (step.excludeFromStepCount) {\n // Subtract all steps registered to be excluded from the step count\n acc._meta.displayedStepCount--;\n }\n\n return acc;\n },\n { _meta: { totalStepCount: steps.length, displayedStepCount: steps.length } } as Components & {\n _meta: { totalStepCount: number; displayedStepCount: number };\n }\n );\n\n return tour;\n}\n\nexport type { Content, Tours };\nexport { tours };\n"],"names":["tours","contentTypeBuilder","createTour","contentTypeBuilderSteps","contentManager","contentManagerSteps","apiTokens","apiTokensSteps","strapiCloud","GuidedTourTooltip","children","props","state","useGuidedTour","s","enabled","hidden","process","env","NODE_ENV","_jsx","GuidedTourTooltipImpl","GuidedTourOverlay","styled","Box","content","tourName","step","when","data","guidedTourMeta","useGetGuidedTourMetaQuery","dispatch","isCurrentStep","currentStep","isStepConditionMet","completedActions","isPopoverOpen","isFirstSuperAdminUser","isCompleted","React","useEffect","originalStyle","window","getComputedStyle","document","body","overflow","style","Step","useMemo","createStepComponents","hasApiSchema","Object","keys","schemas","filter","key","startsWith","length","type","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createSchema","_jsxs","_Fragment","Portal","Popover","Root","open","Anchor","steps","tour","reduce","acc","index","name","Error","excludeFromStepCount","_meta","displayedStepCount","totalStepCount"],"mappings":"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"}
|
|
@@ -236,7 +236,7 @@ const ProfilePage = ()=>{
|
|
|
236
236
|
]
|
|
237
237
|
})
|
|
238
238
|
}),
|
|
239
|
-
isDesktop && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
239
|
+
isDesktop && process.env.NODE_ENV === 'development' && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
240
240
|
children: /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
|
|
241
241
|
children: /*#__PURE__*/ jsxRuntime.jsx(GuidedTourSection, {})
|
|
242
242
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProfilePage.js","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
|
@@ -214,7 +214,7 @@ const ProfilePage = ()=>{
|
|
|
214
214
|
]
|
|
215
215
|
})
|
|
216
216
|
}),
|
|
217
|
-
isDesktop && /*#__PURE__*/ jsx(Box, {
|
|
217
|
+
isDesktop && process.env.NODE_ENV === 'development' && /*#__PURE__*/ jsx(Box, {
|
|
218
218
|
children: /*#__PURE__*/ jsx(Layouts.Content, {
|
|
219
219
|
children: /*#__PURE__*/ jsx(GuidedTourSection, {})
|
|
220
220
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProfilePage.mjs","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProfilePage.mjs","sources":["../../../../../admin/src/pages/ProfilePage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, useNotifyAT, Grid, Typography, FlexProps } from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Form, FormHelpers } from '../components/Form';\nimport { InputRenderer } from '../components/FormInputs/Renderer';\nimport { useGuidedTour } from '../components/GuidedTour/Context';\nimport { Layouts } from '../components/Layouts/Layout';\nimport { Page } from '../components/PageHelpers';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { useAuth } from '../features/Auth';\nimport { useNotification } from '../features/Notifications';\nimport { useTracking } from '../features/Tracking';\nimport { useAPIErrorHandler } from '../hooks/useAPIErrorHandler';\nimport { useIsDesktop } from '../hooks/useMediaQuery';\nimport { AppState, setAppTheme } from '../reducer';\nimport { useIsSSOLockedQuery, useUpdateMeMutation } from '../services/auth';\nimport { isBaseQueryError } from '../utils/baseQuery';\nimport { translatedErrors } from '../utils/translatedErrors';\nimport { getDisplayName } from '../utils/users';\n\nimport { COMMON_USER_SCHEMA } from './Settings/pages/Users/utils/validation';\n\nimport type { UpdateMe } from '../../../shared/contracts/users';\n\nconst PROFILE_VALIDTION_SCHEMA = yup.object().shape({\n ...COMMON_USER_SCHEMA,\n currentPassword: yup\n .string()\n // @ts-expect-error – no idea why this is failing.\n .when(['password', 'confirmPassword'], (password, confirmPassword, passSchema) => {\n return password || confirmPassword\n ? passSchema\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'This field is required',\n })\n .nullable()\n : passSchema;\n }),\n preferedLanguage: yup.string().nullable(),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * ProfilePage\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panel = ({ children, ...flexProps }: FlexProps) => {\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} {...flexProps}>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst ProfilePage = () => {\n const isDesktop = useIsDesktop();\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const currentTheme = useTypedSelector((state) => state.admin_app.theme.currentTheme);\n const dispatch = useTypedDispatch();\n const {\n _unstableFormatValidationErrors: formatValidationErrors,\n _unstableFormatAPIError: formatApiError,\n } = useAPIErrorHandler();\n\n const user = useAuth('ProfilePage', (state) => state.user);\n\n React.useEffect(() => {\n if (user) {\n notifyStatus(\n formatMessage({\n id: 'Settings.profile.form.notify.data.loaded',\n defaultMessage: 'Your profile data has been loaded',\n })\n );\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }, [formatMessage, notifyStatus, toggleNotification, user]);\n\n const [updateMe, { isLoading: isSubmittingForm }] = useUpdateMeMutation();\n\n const {\n isLoading,\n data: dataSSO,\n error,\n } = useIsSSOLockedQuery(undefined, {\n skip: !(window.strapi.isEE && window.strapi.features.isEnabled('sso')),\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'Settings.permissions.users.sso.provider.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n type UpdateUsersMeBody = UpdateMe.Request['body'] & {\n confirmPassword: string;\n currentTheme: AppState['theme']['currentTheme'];\n };\n\n const handleSubmit = async (\n body: UpdateUsersMeBody,\n { setErrors }: FormHelpers<UpdateUsersMeBody>\n ) => {\n const { confirmPassword: _confirmPassword, currentTheme, ...bodyRest } = body;\n let dataToSend = bodyRest;\n\n // The password fields are optional. If the user didn't touch them, don't send any password\n // to the API, because an empty string would throw a validation error\n if (dataToSend.password === '') {\n const {\n password: _password,\n currentPassword: _currentPassword,\n ...passwordRequestBodyRest\n } = dataToSend;\n dataToSend = passwordRequestBodyRest;\n }\n\n const res = await updateMe(dataToSend);\n\n if ('data' in res) {\n dispatch(setAppTheme(currentTheme));\n\n trackUsage('didChangeMode', { newMode: currentTheme });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved', defaultMessage: 'Saved' }),\n });\n }\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else if (isBaseQueryError(res.error)) {\n toggleNotification({\n type: 'danger',\n message: formatApiError(res.error),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n }\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n const hasLockedRole = dataSSO?.isSSOLocked ?? false;\n const { email, firstname, lastname, username, preferedLanguage } = user ?? {};\n const initialData = {\n email: email ?? '',\n firstname: firstname ?? '',\n lastname: lastname ?? '',\n username: username ?? '',\n preferedLanguage,\n currentTheme,\n confirmPassword: '',\n password: '',\n };\n\n return (\n <>\n <Page.Main aria-busy={isSubmittingForm}>\n <Page.Title>\n {formatMessage({\n id: 'Settings.profile.form.section.head.title',\n defaultMessage: 'User profile',\n })}\n </Page.Title>\n <Form\n method=\"PUT\"\n onSubmit={handleSubmit}\n initialValues={initialData}\n validationSchema={PROFILE_VALIDTION_SCHEMA}\n >\n {({ isSubmitting, modified }) => (\n <>\n <Layouts.Header\n title={getDisplayName(user)}\n primaryAction={\n <Button\n startIcon={<Check />}\n loading={isSubmitting}\n type=\"submit\"\n disabled={!modified}\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n />\n <Box paddingBottom={6}>\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n <UserInfoSection />\n {!hasLockedRole && <PasswordSection />}\n <PreferencesSection localeNames={localeNames} />\n </Flex>\n </Layouts.Content>\n </Box>\n </>\n )}\n </Form>\n {isDesktop && process.env.NODE_ENV === 'development' && (\n <Box>\n <Layouts.Content>\n <GuidedTourSection />\n </Layouts.Content>\n </Box>\n )}\n </Page.Main>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PasswordSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst PasswordSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Typography>\n {[\n [\n {\n label: formatMessage({\n id: 'Auth.form.currentPassword.label',\n defaultMessage: 'Current Password',\n }),\n name: 'currentPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n [\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n size: 6,\n type: 'password' as const,\n },\n {\n autoComplete: 'new-password',\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n size: 6,\n type: 'password' as const,\n },\n ],\n ].map((row, index) => (\n <Grid.Root key={index} gap={5}>\n {row.map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n ))}\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreferencesSection\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PreferencesSectionProps {\n localeNames: Record<string, string>;\n}\n\nconst PreferencesSection = ({ localeNames }: PreferencesSectionProps) => {\n const { formatMessage } = useIntl();\n const themesToDisplay = useTypedSelector((state) => state.admin_app.theme.availableThemes);\n\n return (\n <Panel>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'Settings.profile.form.section.experience.title',\n defaultMessage: 'Experience',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'Settings.profile.form.section.experience.interfaceLanguageHelp',\n defaultMessage:\n 'Preference changes will apply only to you. More information is available {here}.',\n },\n {\n here: (\n <Box\n tag=\"a\"\n color=\"primary600\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales\"\n >\n {formatMessage({\n id: 'Settings.profile.form.section.experience.here',\n defaultMessage: 'here',\n })}\n </Box>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Grid.Root gap={5}>\n {[\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage.hint',\n defaultMessage: 'This will only display your own interface in the chosen language.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.interfaceLanguage',\n defaultMessage: 'Interface language',\n }),\n name: 'preferedLanguage',\n options: Object.entries(localeNames).map(([value, label]) => ({\n label,\n value,\n })),\n placeholder: formatMessage({\n id: 'global.select',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n {\n hint: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.hint',\n defaultMessage: 'Displays your interface in the chosen mode.',\n }),\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.label',\n defaultMessage: 'Interface mode',\n }),\n name: 'currentTheme',\n options: [\n {\n label: formatMessage({\n id: 'Settings.profile.form.section.experience.mode.option-system-label',\n defaultMessage: 'Use system settings',\n }),\n value: 'system',\n },\n ...themesToDisplay.map((theme) => ({\n label: formatMessage(\n {\n id: 'Settings.profile.form.section.experience.mode.option-label',\n defaultMessage: '{name} mode',\n },\n {\n name: formatMessage({\n id: theme,\n defaultMessage: upperFirst(theme),\n }),\n }\n ),\n value: theme,\n })),\n ],\n placeholder: formatMessage({\n id: 'components.Select.placeholder',\n defaultMessage: 'Select',\n }),\n size: 6,\n type: 'enumeration' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UserInfoSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst UserInfoSection = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Panel>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.profile',\n defaultMessage: 'Profile',\n })}\n </Typography>\n <Grid.Root gap={5}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'First name',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Last name',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 6,\n type: 'email' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.username.label',\n defaultMessage: 'Username',\n }),\n name: 'username',\n size: 6,\n type: 'string' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={6}\n col={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n </Panel>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * GuidedTourSection\n * -----------------------------------------------------------------------------------------------*/\n\nconst GuidedTourSection = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const dispatch = useGuidedTour('ProfilePage', (s) => s.dispatch);\n\n const onClickReset = () => {\n dispatch({ type: 'reset_all_tours' });\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'tours.profile.notification.success.reset',\n defaultMessage: 'Guided tour reset',\n }),\n });\n };\n\n return (\n <Panel alignItems=\"start\">\n <Flex direction=\"column\" alignItems=\"start\" gap={1}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'tours.profile.title',\n defaultMessage: 'Guided tour',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage({\n id: 'tours.profile.description',\n defaultMessage: 'You can reset the guided tour at any time.',\n })}\n </Typography>\n </Flex>\n <Button variant=\"tertiary\" onClick={onClickReset}>\n {formatMessage({\n id: 'tours.profile.reset',\n defaultMessage: 'Reset guided tour',\n })}\n </Button>\n </Panel>\n );\n};\n\nexport { ProfilePage };\n"],"names":["PROFILE_VALIDTION_SCHEMA","yup","object","shape","COMMON_USER_SCHEMA","currentPassword","string","when","password","confirmPassword","passSchema","required","id","translatedErrors","defaultMessage","nullable","preferedLanguage","Panel","children","flexProps","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Flex","direction","alignItems","gap","ProfilePage","isDesktop","useIsDesktop","localeNames","useTypedSelector","state","admin_app","language","formatMessage","useIntl","trackUsage","useTracking","toggleNotification","useNotification","notifyStatus","useNotifyAT","currentTheme","theme","dispatch","useTypedDispatch","_unstableFormatValidationErrors","formatValidationErrors","_unstableFormatAPIError","formatApiError","useAPIErrorHandler","user","useAuth","React","useEffect","type","message","updateMe","isLoading","isSubmittingForm","useUpdateMeMutation","data","dataSSO","error","useIsSSOLockedQuery","undefined","skip","window","strapi","isEE","features","isEnabled","handleSubmit","body","setErrors","_confirmPassword","bodyRest","dataToSend","_password","_currentPassword","passwordRequestBodyRest","res","setAppTheme","newMode","isBaseQueryError","name","Page","Loading","hasLockedRole","isSSOLocked","email","firstname","lastname","username","initialData","_Fragment","_jsxs","Main","aria-busy","Title","Form","method","onSubmit","initialValues","validationSchema","isSubmitting","modified","Layouts","Header","title","getDisplayName","primaryAction","Button","startIcon","Check","loading","disabled","Content","UserInfoSection","PasswordSection","PreferencesSection","process","env","NODE_ENV","GuidedTourSection","Typography","variant","tag","label","size","autoComplete","map","row","index","Grid","Root","field","Item","xs","m","col","InputRenderer","themesToDisplay","availableThemes","here","color","target","rel","href","hint","options","Object","entries","value","placeholder","upperFirst","useGuidedTour","s","onClickReset","onClick"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.32.0",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -86,13 +86,13 @@
|
|
|
86
86
|
"@reduxjs/toolkit": "1.9.7",
|
|
87
87
|
"@strapi/design-system": "2.0.1",
|
|
88
88
|
"@strapi/icons": "2.0.1",
|
|
89
|
-
"@strapi/permissions": "5.
|
|
90
|
-
"@strapi/types": "5.
|
|
91
|
-
"@strapi/typescript-utils": "5.
|
|
92
|
-
"@strapi/utils": "5.
|
|
93
|
-
"@testing-library/dom": "10.1
|
|
94
|
-
"@testing-library/react": "
|
|
95
|
-
"@testing-library/user-event": "14.
|
|
89
|
+
"@strapi/permissions": "5.32.0",
|
|
90
|
+
"@strapi/types": "5.32.0",
|
|
91
|
+
"@strapi/typescript-utils": "5.32.0",
|
|
92
|
+
"@strapi/utils": "5.32.0",
|
|
93
|
+
"@testing-library/dom": "10.4.1",
|
|
94
|
+
"@testing-library/react": "16.3.0",
|
|
95
|
+
"@testing-library/user-event": "14.6.1",
|
|
96
96
|
"axios": "1.12.2",
|
|
97
97
|
"bcryptjs": "2.4.3",
|
|
98
98
|
"boxen": "5.1.2",
|
|
@@ -144,8 +144,8 @@
|
|
|
144
144
|
"zod": "3.25.67"
|
|
145
145
|
},
|
|
146
146
|
"devDependencies": {
|
|
147
|
-
"@strapi/admin-test-utils": "5.
|
|
148
|
-
"@strapi/data-transfer": "5.
|
|
147
|
+
"@strapi/admin-test-utils": "5.32.0",
|
|
148
|
+
"@strapi/data-transfer": "5.32.0",
|
|
149
149
|
"@types/codemirror5": "npm:@types/codemirror@^5.60.15",
|
|
150
150
|
"@types/fs-extra": "11.0.4",
|
|
151
151
|
"@types/invariant": "2.2.36",
|