@strapi/admin 4.3.0-beta.2 → 4.3.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/admin/src/components/LeftMenu/index.js +12 -2
- package/admin/src/content-manager/components/EditViewDataManagerProvider/index.js +4 -3
- package/admin/src/content-manager/components/EditViewDataManagerProvider/utils/cleanData.js +0 -8
- package/admin/src/content-manager/components/PreviewWysiwyg/Wrapper.js +7 -13
- package/admin/src/content-manager/hooks/useFetchContentTypeLayout/index.js +2 -2
- package/admin/src/content-manager/pages/EditSettingsView/components/ModalForm.js +2 -2
- package/admin/src/content-manager/pages/ListView/FieldPicker/index.js +9 -1
- package/admin/src/content-manager/utils/removeKeyInObject.js +0 -4
- package/admin/src/index.js +1 -1
- package/admin/src/pages/Admin/index.js +6 -2
- package/admin/src/pages/App/index.js +4 -0
- package/admin/src/pages/InstalledPluginsPage/Plugins.js +10 -2
- package/admin/src/pages/ProfilePage/index.js +19 -18
- package/admin/src/pages/SettingsPage/pages/Users/EditPage/utils/layout.js +3 -1
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/DynamicTable/TableRows/index.js +1 -1
- package/admin/src/pages/SettingsPage/pages/Users/ListPage/utils/tableHeaders.js +18 -4
- package/admin/src/pages/SettingsPage/pages/Users/components/SelectRoles/index.js +4 -1
- package/admin/src/translations/en.json +36 -0
- package/admin/src/translations/gu.json +618 -0
- package/admin/src/translations/languageNativeNames.js +2 -0
- package/admin/src/translations/ml.json +699 -0
- package/admin/src/translations/zh-Hans.json +55 -8
- package/build/{9262.25aa12a5.chunk.js → 1669.341e10d8.chunk.js} +1 -1
- package/build/3332.1e443103.chunk.js +102 -0
- package/build/{5520.9dcd6a9f.chunk.js → 5520.3c6bf86a.chunk.js} +35 -35
- package/build/{9166.5c585d7c.chunk.js → 8655.9073e17e.chunk.js} +59 -58
- package/build/{8773.16dea88d.chunk.js → 8773.1b2ec266.chunk.js} +6 -6
- package/build/9730.8fbe43ee.chunk.js +12 -0
- package/build/9799.ce46400f.chunk.js +760 -0
- package/build/Admin-authenticatedApp.ea608aff.chunk.js +80 -0
- package/build/{2336.cb1c0d6e.chunk.js → Admin_InternalErrorPage.25c53284.chunk.js} +1 -1
- package/build/{Admin_homePage.e3571a75.chunk.js → Admin_homePage.118926e0.chunk.js} +1 -1
- package/build/{Admin_marketplace.284bf8fc.chunk.js → Admin_marketplace.8efd3fd0.chunk.js} +1 -1
- package/build/Admin_pluginsPage.0992c2b5.chunk.js +1 -0
- package/build/Admin_profilePage.35ce8e94.chunk.js +15 -0
- package/build/Admin_settingsPage.5fc517d7.chunk.js +178 -0
- package/build/admin-app.1bd5f67e.chunk.js +112 -0
- package/build/{admin-edit-roles-page.33647266.chunk.js → admin-edit-roles-page.358d98c1.chunk.js} +1 -1
- package/build/admin-edit-users.714863af.chunk.js +10 -0
- package/build/admin-users.2bd6fb37.chunk.js +11 -0
- package/build/{api-tokens-create-page.efa1d2aa.chunk.js → api-tokens-create-page.442e3be0.chunk.js} +1 -1
- package/build/{api-tokens-edit-page.6101f051.chunk.js → api-tokens-edit-page.5f34eec7.chunk.js} +1 -1
- package/build/{api-tokens-list-page.782e872f.chunk.js → api-tokens-list-page.5ea3f6ce.chunk.js} +1 -1
- package/build/{content-manager.adf6fc82.chunk.js → content-manager.39bc9201.chunk.js} +58 -64
- package/build/{2863.bf3c1eff.chunk.js → content-type-builder-list-view.b12687b2.chunk.js} +1 -1
- package/build/content-type-builder-translation-en-json.201bfb78.chunk.js +1 -0
- package/build/content-type-builder.ec6ccb59.chunk.js +142 -0
- package/build/{email-settings-page.d72e7f4c.chunk.js → email-settings-page.818761d5.chunk.js} +1 -1
- package/build/email-translation-en-json.3d74ff95.chunk.js +1 -0
- package/build/email-translation-zh-Hans-json.8172da08.chunk.js +1 -0
- package/build/en-json.6d70e9ff.chunk.js +1 -0
- package/build/gu-json.dafa6f0d.chunk.js +1 -0
- package/build/{i18n-settings-page.8803df0b.chunk.js → i18n-settings-page.9d426e96.chunk.js} +1 -1
- package/build/i18n-translation-en-json.760250ae.chunk.js +1 -0
- package/build/i18n-translation-ko-json.b2d90a83.chunk.js +1 -0
- package/build/index.html +1 -1
- package/build/{main.689d6439.js → main.b19c2ee3.js} +529 -542
- package/build/ml-json.dc946c7f.chunk.js +1 -0
- package/build/runtime~main.426f9375.js +2 -0
- package/build/{sso-settings-page.2bae79df.chunk.js → sso-settings-page.445184e0.chunk.js} +1 -1
- package/build/{upload-settings.f1e587c0.chunk.js → upload-settings.4bad0bdd.chunk.js} +1 -1
- package/build/upload-translation-en-json.bc79c867.chunk.js +1 -0
- package/build/upload-translation-zh-Hans-json.37a2981e.chunk.js +1 -0
- package/build/users-providers-settings-page.a0b0fe39.chunk.js +1 -0
- package/build/{users-roles-settings-page.1206751f.chunk.js → users-roles-settings-page.3db986a4.chunk.js} +1 -1
- package/build/{webhook-edit-page.5c9bada0.chunk.js → webhook-edit-page.3417d93c.chunk.js} +2 -2
- package/build/{webhook-list-page.822927af.chunk.js → webhook-list-page.2ab4bbf0.chunk.js} +1 -1
- package/build/zh-Hans-json.eac1d90a.chunk.js +1 -0
- package/ee/admin/pages/SettingsPage/pages/Roles/CreatePage/index.js +3 -3
- package/package.json +21 -13
- package/webpack.alias.js +0 -1
- package/webpack.config.js +2 -5
- package/build/3531.ef1d2cfc.chunk.js +0 -10
- package/build/5250.9988a0ad.chunk.js +0 -12
- package/build/5833.970a963d.chunk.js +0 -112
- package/build/6925.fb35248e.chunk.js +0 -761
- package/build/Admin-authenticatedApp.d38dc4dd.chunk.js +0 -80
- package/build/Admin_pluginsPage.8537476f.chunk.js +0 -1
- package/build/Admin_profilePage.b7f85e78.chunk.js +0 -15
- package/build/Admin_settingsPage.858ef0d7.chunk.js +0 -178
- package/build/admin-edit-users.8cd7519b.chunk.js +0 -10
- package/build/admin-users.6581eec5.chunk.js +0 -11
- package/build/content-type-builder-translation-en-json.e5110288.chunk.js +0 -1
- package/build/content-type-builder.366a3b10.chunk.js +0 -142
- package/build/email-translation-en-json.6da7e388.chunk.js +0 -1
- package/build/email-translation-zh-Hans-json.b463cb25.chunk.js +0 -1
- package/build/en-json.729eb94d.chunk.js +0 -1
- package/build/i18n-translation-en-json.85bc892c.chunk.js +0 -1
- package/build/i18n-translation-ko-json.d0bc1203.chunk.js +0 -1
- package/build/runtime~main.308a7c41.js +0 -2
- package/build/upload-translation-en-json.fddec9a6.chunk.js +0 -1
- package/build/upload-translation-zh-Hans-json.6832ff81.chunk.js +0 -1
- package/build/users-providers-settings-page.82a4ba58.chunk.js +0 -101
- package/build/zh-Hans-json.cbc69f3d.chunk.js +0 -1
|
@@ -115,7 +115,12 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
|
115
115
|
</NavLink>
|
|
116
116
|
|
|
117
117
|
{pluginsSectionLinks.length > 0 ? (
|
|
118
|
-
<NavSection
|
|
118
|
+
<NavSection
|
|
119
|
+
label={formatMessage({
|
|
120
|
+
id: 'app.components.LeftMenu.plugins',
|
|
121
|
+
defaultMessage: 'Plugins',
|
|
122
|
+
})}
|
|
123
|
+
>
|
|
119
124
|
{pluginsSectionLinks.map(link => {
|
|
120
125
|
const Icon = link.icon;
|
|
121
126
|
|
|
@@ -129,7 +134,12 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
|
|
|
129
134
|
) : null}
|
|
130
135
|
|
|
131
136
|
{generalSectionLinks.length > 0 ? (
|
|
132
|
-
<NavSection
|
|
137
|
+
<NavSection
|
|
138
|
+
label={formatMessage({
|
|
139
|
+
id: 'app.components.LeftMenu.general',
|
|
140
|
+
defaultMessage: 'General',
|
|
141
|
+
})}
|
|
142
|
+
>
|
|
133
143
|
{generalSectionLinks.map(link => {
|
|
134
144
|
const LinkIcon = link.icon;
|
|
135
145
|
|
|
@@ -238,7 +238,8 @@ const EditViewDataManagerProvider = ({
|
|
|
238
238
|
['text', 'textarea', 'string', 'email', 'uid', 'select', 'select-one', 'number'].includes(
|
|
239
239
|
type
|
|
240
240
|
) &&
|
|
241
|
-
!value
|
|
241
|
+
!value &&
|
|
242
|
+
value !== 0
|
|
242
243
|
) {
|
|
243
244
|
inputValue = null;
|
|
244
245
|
}
|
|
@@ -310,7 +311,7 @@ const EditViewDataManagerProvider = ({
|
|
|
310
311
|
} catch (err) {
|
|
311
312
|
errors = {
|
|
312
313
|
...errors,
|
|
313
|
-
...getAPIInnerErrors(err),
|
|
314
|
+
...getAPIInnerErrors(err, { getTrad }),
|
|
314
315
|
};
|
|
315
316
|
}
|
|
316
317
|
|
|
@@ -346,7 +347,7 @@ const EditViewDataManagerProvider = ({
|
|
|
346
347
|
} catch (err) {
|
|
347
348
|
errors = {
|
|
348
349
|
...errors,
|
|
349
|
-
...getAPIInnerErrors(err),
|
|
350
|
+
...getAPIInnerErrors(err, { getTrad }),
|
|
350
351
|
};
|
|
351
352
|
}
|
|
352
353
|
|
|
@@ -20,14 +20,6 @@ const cleanData = (retrievedData, currentSchema, componentsSchema) => {
|
|
|
20
20
|
case 'json':
|
|
21
21
|
cleanedData = JSON.parse(value);
|
|
22
22
|
break;
|
|
23
|
-
// TODO
|
|
24
|
-
// case 'date':
|
|
25
|
-
// cleanedData =
|
|
26
|
-
// value && value._isAMomentObject === true ? value.format('YYYY-MM-DD') : value;
|
|
27
|
-
// break;
|
|
28
|
-
// case 'datetime':
|
|
29
|
-
// cleanedData = value && value._isAMomentObject === true ? value.toISOString() : value;
|
|
30
|
-
// break;
|
|
31
23
|
case 'time': {
|
|
32
24
|
cleanedData = value;
|
|
33
25
|
|
|
@@ -70,29 +70,23 @@ const Wrapper = styled.div`
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
table {
|
|
73
|
-
font-size: 13px;
|
|
74
73
|
thead {
|
|
75
|
-
background:
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
background: ${({ theme }) => theme.colors.neutral150};
|
|
75
|
+
|
|
76
|
+
th {
|
|
77
|
+
padding: ${({ theme }) => theme.spaces[4]};
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
tr {
|
|
81
|
-
border: 1px solid
|
|
81
|
+
border: 1px solid ${({ theme }) => theme.colors.neutral200};
|
|
82
82
|
}
|
|
83
83
|
th,
|
|
84
84
|
td {
|
|
85
|
-
padding:
|
|
86
|
-
border: 1px solid
|
|
85
|
+
padding: ${({ theme }) => theme.spaces[4]};
|
|
86
|
+
border: 1px solid ${({ theme }) => theme.colors.neutral200};
|
|
87
87
|
border-bottom: 0;
|
|
88
88
|
border-top: 0;
|
|
89
89
|
}
|
|
90
|
-
|
|
91
|
-
tbody {
|
|
92
|
-
tr {
|
|
93
|
-
height: 54px;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
90
|
}
|
|
97
91
|
|
|
98
92
|
pre,
|
|
@@ -68,10 +68,10 @@ const useFetchContentTypeLayout = contentTypeUID => {
|
|
|
68
68
|
}, [contentTypeUID, getData]);
|
|
69
69
|
|
|
70
70
|
const updateLayout = useCallback(
|
|
71
|
-
|
|
71
|
+
data => {
|
|
72
72
|
dispatch({
|
|
73
73
|
type: 'UPDATE_LAYOUT',
|
|
74
|
-
newLayout: formatLayouts(
|
|
74
|
+
newLayout: formatLayouts(data, schemas),
|
|
75
75
|
});
|
|
76
76
|
},
|
|
77
77
|
[schemas]
|
|
@@ -59,8 +59,8 @@ const ModalForm = ({ onMetaChange, onSizeChange }) => {
|
|
|
59
59
|
const formType = get(attributes, [selectedField, 'type']);
|
|
60
60
|
|
|
61
61
|
if (
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
['component', 'dynamiczone'].includes(formType) &&
|
|
63
|
+
!['label', 'description'].includes(meta)
|
|
64
64
|
) {
|
|
65
65
|
return null;
|
|
66
66
|
}
|
|
@@ -8,6 +8,7 @@ import { useTracking } from '@strapi/helper-plugin';
|
|
|
8
8
|
import { onChangeListHeaders } from '../actions';
|
|
9
9
|
import { selectDisplayedHeaders } from '../selectors';
|
|
10
10
|
import getAllAllowedHeaders from './utils/getAllAllowedHeader';
|
|
11
|
+
import getTrad from '../../../utils/getTrad';
|
|
11
12
|
|
|
12
13
|
const FieldPicker = ({ layout }) => {
|
|
13
14
|
const dispatch = useDispatch();
|
|
@@ -50,7 +51,14 @@ const FieldPicker = ({ layout }) => {
|
|
|
50
51
|
aria-label="change displayed fields"
|
|
51
52
|
value={values}
|
|
52
53
|
onChange={handleChange}
|
|
53
|
-
customizeContent={values =>
|
|
54
|
+
customizeContent={values =>
|
|
55
|
+
formatMessage(
|
|
56
|
+
{
|
|
57
|
+
id: getTrad('select.currently.selected'),
|
|
58
|
+
defaultMessage: '{count} currently selected',
|
|
59
|
+
},
|
|
60
|
+
{ count: values.length }
|
|
61
|
+
)}
|
|
54
62
|
multi
|
|
55
63
|
size="S"
|
|
56
64
|
>
|
|
@@ -21,10 +21,6 @@ const removeKeyInObject = (obj, keyToRemove) => {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
if (typeof value === 'object') {
|
|
24
|
-
if (value._isAMomentObject === true) {
|
|
25
|
-
return { ...acc, [current]: value };
|
|
26
|
-
}
|
|
27
|
-
|
|
28
24
|
if (Array.isArray(acc)) {
|
|
29
25
|
acc[current] = removeKeyInObject(value, keyToRemove);
|
|
30
26
|
|
package/admin/src/index.js
CHANGED
|
@@ -48,7 +48,7 @@ const run = async () => {
|
|
|
48
48
|
|
|
49
49
|
// We need to make sure to fetch the project type before importing the StrapiApp
|
|
50
50
|
// otherwise the strapi-babel-plugin does not work correctly
|
|
51
|
-
const StrapiApp = await import('./StrapiApp');
|
|
51
|
+
const StrapiApp = await import(/* webpackChunkName: "admin-app" */ './StrapiApp');
|
|
52
52
|
|
|
53
53
|
const app = StrapiApp.default({
|
|
54
54
|
appPlugins: plugins,
|
|
@@ -28,8 +28,12 @@ const InstalledPluginsPage = lazy(() =>
|
|
|
28
28
|
const MarketplacePage = lazy(() =>
|
|
29
29
|
import(/* webpackChunkName: "Admin_marketplace" */ '../MarketplacePage')
|
|
30
30
|
);
|
|
31
|
-
const NotFoundPage = lazy(() =>
|
|
32
|
-
|
|
31
|
+
const NotFoundPage = lazy(() =>
|
|
32
|
+
import(/* webpackChunkName: "Admin_NotFoundPage" */ '../NotFoundPage')
|
|
33
|
+
);
|
|
34
|
+
const InternalErrorPage = lazy(() =>
|
|
35
|
+
import(/* webpackChunkName: "Admin_InternalErrorPage" */ '../InternalErrorPage')
|
|
36
|
+
);
|
|
33
37
|
|
|
34
38
|
const ProfilePage = lazy(() =>
|
|
35
39
|
import(/* webpackChunkName: "Admin_profilePage" */ '../ProfilePage')
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
useNotification,
|
|
14
14
|
TrackingContext,
|
|
15
15
|
prefixFileUrlWithBackendUrl,
|
|
16
|
+
useAppInfos,
|
|
16
17
|
} from '@strapi/helper-plugin';
|
|
17
18
|
import axios from 'axios';
|
|
18
19
|
import { SkipToContent } from '@strapi/design-system/Main';
|
|
@@ -35,6 +36,7 @@ function App() {
|
|
|
35
36
|
const { updateProjectSettings } = useConfigurations();
|
|
36
37
|
const { formatMessage } = useIntl();
|
|
37
38
|
const [{ isLoading, hasAdmin, uuid }, setState] = useState({ isLoading: true, hasAdmin: false });
|
|
39
|
+
const appInfo = useAppInfos();
|
|
38
40
|
|
|
39
41
|
const authRoutes = useMemo(() => {
|
|
40
42
|
return makeUniqueRoutes(
|
|
@@ -97,6 +99,7 @@ function App() {
|
|
|
97
99
|
deviceId,
|
|
98
100
|
properties: {
|
|
99
101
|
...properties,
|
|
102
|
+
environment: appInfo.currentEnvironment,
|
|
100
103
|
},
|
|
101
104
|
}),
|
|
102
105
|
headers: {
|
|
@@ -118,6 +121,7 @@ function App() {
|
|
|
118
121
|
};
|
|
119
122
|
|
|
120
123
|
getData();
|
|
124
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
121
125
|
}, [toggleNotification, updateProjectSettings]);
|
|
122
126
|
|
|
123
127
|
const setHasAdmin = hasAdmin => setState(prev => ({ ...prev, hasAdmin }));
|
|
@@ -82,11 +82,19 @@ const Plugins = () => {
|
|
|
82
82
|
<Tr key={name}>
|
|
83
83
|
<Td>
|
|
84
84
|
<Typography textColor="neutral800" variant="omega" fontWeight="bold">
|
|
85
|
-
{
|
|
85
|
+
{formatMessage({
|
|
86
|
+
id: `global.plugins.${name}`,
|
|
87
|
+
defaultMessage: displayName,
|
|
88
|
+
})}
|
|
86
89
|
</Typography>
|
|
87
90
|
</Td>
|
|
88
91
|
<Td>
|
|
89
|
-
<Typography textColor="neutral800">
|
|
92
|
+
<Typography textColor="neutral800">
|
|
93
|
+
{formatMessage({
|
|
94
|
+
id: `global.plugins.${name}.description`,
|
|
95
|
+
defaultMessage: description,
|
|
96
|
+
})}
|
|
97
|
+
</Typography>
|
|
90
98
|
</Td>
|
|
91
99
|
</Tr>
|
|
92
100
|
);
|
|
@@ -357,6 +357,7 @@ const ProfilePage = () => {
|
|
|
357
357
|
})}
|
|
358
358
|
name="password"
|
|
359
359
|
type={passwordShown ? 'text' : 'password'}
|
|
360
|
+
autoComplete="new-password"
|
|
360
361
|
endAction={
|
|
361
362
|
<FieldActionWrapper
|
|
362
363
|
onClick={e => {
|
|
@@ -398,6 +399,7 @@ const ProfilePage = () => {
|
|
|
398
399
|
})}
|
|
399
400
|
name="confirmPassword"
|
|
400
401
|
type={passwordConfirmShown ? 'text' : 'password'}
|
|
402
|
+
autoComplete="new-password"
|
|
401
403
|
endAction={
|
|
402
404
|
<FieldActionWrapper
|
|
403
405
|
onClick={e => {
|
|
@@ -531,24 +533,23 @@ const ProfilePage = () => {
|
|
|
531
533
|
});
|
|
532
534
|
}}
|
|
533
535
|
>
|
|
534
|
-
{themesToDisplay.map(theme =>
|
|
535
|
-
|
|
536
|
-
{
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
})}
|
|
536
|
+
{themesToDisplay.map(theme => (
|
|
537
|
+
<Option value={theme} key={theme}>
|
|
538
|
+
{formatMessage(
|
|
539
|
+
{
|
|
540
|
+
id:
|
|
541
|
+
'Settings.profile.form.section.experience.mode.option-label',
|
|
542
|
+
defaultMessage: '{name} mode',
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
name: formatMessage({
|
|
546
|
+
id: theme,
|
|
547
|
+
defaultMessage: upperFirst(theme),
|
|
548
|
+
}),
|
|
549
|
+
}
|
|
550
|
+
)}
|
|
551
|
+
</Option>
|
|
552
|
+
))}
|
|
552
553
|
</Select>
|
|
553
554
|
</GridItem>
|
|
554
555
|
</Grid>
|
|
@@ -62,7 +62,7 @@ const layout = [
|
|
|
62
62
|
id: 'Auth.form.username.placeholder',
|
|
63
63
|
defaultMessage: 'e.g. Kai_Doe',
|
|
64
64
|
},
|
|
65
|
-
type: '
|
|
65
|
+
type: 'text',
|
|
66
66
|
size: {
|
|
67
67
|
col: 6,
|
|
68
68
|
xs: 12,
|
|
@@ -81,6 +81,7 @@ const layout = [
|
|
|
81
81
|
col: 6,
|
|
82
82
|
xs: 12,
|
|
83
83
|
},
|
|
84
|
+
autoComplete: 'new-password',
|
|
84
85
|
},
|
|
85
86
|
{
|
|
86
87
|
intlLabel: {
|
|
@@ -93,6 +94,7 @@ const layout = [
|
|
|
93
94
|
col: 6,
|
|
94
95
|
xs: 12,
|
|
95
96
|
},
|
|
97
|
+
autoComplete: 'new-password',
|
|
96
98
|
},
|
|
97
99
|
],
|
|
98
100
|
[
|
|
@@ -63,7 +63,7 @@ const TableRows = ({
|
|
|
63
63
|
return (
|
|
64
64
|
<Td key={key}>
|
|
65
65
|
{typeof cellFormatter === 'function' ? (
|
|
66
|
-
cellFormatter(data, { key, name, ...rest })
|
|
66
|
+
cellFormatter(data, { key, name, formatMessage, ...rest })
|
|
67
67
|
) : (
|
|
68
68
|
<Typography textColor="neutral800">{data[name] || '-'}</Typography>
|
|
69
69
|
)}
|
|
@@ -24,9 +24,18 @@ const tableHeaders = [
|
|
|
24
24
|
name: 'roles',
|
|
25
25
|
metadatas: { label: 'Roles', sortable: false },
|
|
26
26
|
/* eslint-disable react/prop-types */
|
|
27
|
-
cellFormatter: ({ roles }) => {
|
|
27
|
+
cellFormatter: ({ roles }, { formatMessage }) => {
|
|
28
28
|
return (
|
|
29
|
-
<Typography textColor="neutral800">
|
|
29
|
+
<Typography textColor="neutral800">
|
|
30
|
+
{roles
|
|
31
|
+
.map(role =>
|
|
32
|
+
formatMessage({
|
|
33
|
+
id: `global.${role.code}`,
|
|
34
|
+
defaultMessage: role.name,
|
|
35
|
+
})
|
|
36
|
+
)
|
|
37
|
+
.join(',\n')}
|
|
38
|
+
</Typography>
|
|
30
39
|
);
|
|
31
40
|
},
|
|
32
41
|
/* eslint-enable react/prop-types */
|
|
@@ -41,11 +50,16 @@ const tableHeaders = [
|
|
|
41
50
|
name: 'isActive',
|
|
42
51
|
metadatas: { label: 'User status', sortable: false },
|
|
43
52
|
// eslint-disable-next-line react/prop-types
|
|
44
|
-
cellFormatter: ({ isActive }) => {
|
|
53
|
+
cellFormatter: ({ isActive }, { formatMessage }) => {
|
|
45
54
|
return (
|
|
46
55
|
<Flex>
|
|
47
56
|
<Status isActive={isActive} variant={isActive ? 'success' : 'danger'} />
|
|
48
|
-
<Typography textColor="neutral800">
|
|
57
|
+
<Typography textColor="neutral800">
|
|
58
|
+
{formatMessage({
|
|
59
|
+
id: isActive ? 'global.active' : 'global.inactive',
|
|
60
|
+
defaultMessage: isActive ? 'Active' : 'Inactive',
|
|
61
|
+
})}
|
|
62
|
+
</Typography>
|
|
49
63
|
</Flex>
|
|
50
64
|
);
|
|
51
65
|
},
|
|
@@ -73,7 +73,10 @@ const SelectRoles = ({ disabled, error, onChange, value }) => {
|
|
|
73
73
|
{(data || []).map(role => {
|
|
74
74
|
return (
|
|
75
75
|
<Option key={role.id} value={role.id}>
|
|
76
|
-
{
|
|
76
|
+
{formatMessage({
|
|
77
|
+
id: `global.${role.code}`,
|
|
78
|
+
defaultMessage: role.name,
|
|
79
|
+
})}
|
|
77
80
|
</Option>
|
|
78
81
|
);
|
|
79
82
|
})}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
"Auth.components.Oops.text": "Your account has been suspended.",
|
|
4
4
|
"Auth.components.Oops.text.admin": "If this is a mistake, please contact your administrator.",
|
|
5
5
|
"Auth.components.Oops.title": "Oops...",
|
|
6
|
+
"Auth.form.active.label": "Active",
|
|
6
7
|
"Auth.form.button.forgot-password": "Send Email",
|
|
7
8
|
"Auth.form.button.go-home": "GO BACK HOME",
|
|
8
9
|
"Auth.form.button.login": "Login",
|
|
@@ -157,6 +158,8 @@
|
|
|
157
158
|
"Settings.profile.form.section.experience.mode.label": "Interface mode",
|
|
158
159
|
"Settings.profile.form.section.experience.mode.hint": "Displays your interface in the chosen mode.",
|
|
159
160
|
"Settings.profile.form.section.experience.mode.option-label": "{name} mode",
|
|
161
|
+
"light": "Light",
|
|
162
|
+
"dark": "Dark",
|
|
160
163
|
"Settings.profile.form.section.experience.title": "Experience",
|
|
161
164
|
"Settings.profile.form.section.helmet.title": "User profile",
|
|
162
165
|
"Settings.profile.form.section.profile.page.title": "Profile page",
|
|
@@ -320,8 +323,10 @@
|
|
|
320
323
|
"app.components.InstallPluginPage.description": "Extend your app effortlessly.",
|
|
321
324
|
"app.components.LeftMenu.collapse": "Collapse the navbar",
|
|
322
325
|
"app.components.LeftMenu.expand": "Expand the navbar",
|
|
326
|
+
"app.components.LeftMenu.general": "General",
|
|
323
327
|
"app.components.LeftMenu.logout": "Logout",
|
|
324
328
|
"app.components.LeftMenu.logo.alt": "Application logo",
|
|
329
|
+
"app.components.LeftMenu.plugins": "Plugins",
|
|
325
330
|
"app.components.LeftMenu.navbrand.title": "Strapi Dashboard",
|
|
326
331
|
"app.components.LeftMenu.navbrand.workplace": "Workplace",
|
|
327
332
|
"app.components.LeftMenuFooter.help": "Help",
|
|
@@ -671,6 +676,7 @@
|
|
|
671
676
|
"content-manager.popUpwarning.warning.has-draft-relations.button-confirm": "Yes, publish",
|
|
672
677
|
"content-manager.popUpwarning.warning.has-draft-relations.message": "<b>{count, plural, =0 { of your content relations is} one { of your content relations is} other { of your content relations are}}</b> not published yet.<br></br>It might engender broken links and errors on your project.",
|
|
673
678
|
"content-manager.popover.display-relations.label": "Display relations",
|
|
679
|
+
"content-manager.select.currently.selected": "{count} currently selected",
|
|
674
680
|
"content-manager.success.record.delete": "Deleted",
|
|
675
681
|
"content-manager.success.record.publish": "Published",
|
|
676
682
|
"content-manager.success.record.save": "Saved",
|
|
@@ -681,7 +687,10 @@
|
|
|
681
687
|
"form.button.done": "Done",
|
|
682
688
|
"global.search": "Search",
|
|
683
689
|
"global.actions": "Actions",
|
|
690
|
+
"global.active": "Active",
|
|
691
|
+
"global.inactive": "Inactive",
|
|
684
692
|
"global.back": "Back",
|
|
693
|
+
"global.cancel": "Cancel",
|
|
685
694
|
"global.change-password": "Change password",
|
|
686
695
|
"global.content-manager": "Content Manager",
|
|
687
696
|
"global.continue": "Continue",
|
|
@@ -698,6 +707,24 @@
|
|
|
698
707
|
"global.none": "None",
|
|
699
708
|
"global.password": "Password",
|
|
700
709
|
"global.plugins": "Plugins",
|
|
710
|
+
"global.plugins.content-manager": "Content Manager",
|
|
711
|
+
"global.plugins.content-manager.description": "Quick way to see, edit and delete the data in your database.",
|
|
712
|
+
"global.plugins.content-type-builder": "Content Type Builder",
|
|
713
|
+
"global.plugins.content-type-builder.description": "Modelize the data structure of your API. Create new fields and relations in just a minute. The files are automatically created and updated in your project.",
|
|
714
|
+
"global.plugins.email": "Email",
|
|
715
|
+
"global.plugins.email.description": "Configure your application to send emails.",
|
|
716
|
+
"global.plugins.upload": "Media Library",
|
|
717
|
+
"global.plugins.upload.description": "Media file management.",
|
|
718
|
+
"global.plugins.graphql": "GraphQL",
|
|
719
|
+
"global.plugins.graphql.description": "Adds GraphQL endpoint with default API methods.",
|
|
720
|
+
"global.plugins.documentation": "Documentation",
|
|
721
|
+
"global.plugins.documentation.description": "Create an OpenAPI Document and visualize your API with SWAGGER UI.",
|
|
722
|
+
"global.plugins.i18n": "Internationalization",
|
|
723
|
+
"global.plugins.i18n.description": "This plugin enables to create, to read and to update content in different languages, both from the Admin Panel and from the API.",
|
|
724
|
+
"global.plugins.sentry": "Sentry",
|
|
725
|
+
"global.plugins.sentry.description": "Send Strapi error events to Sentry.",
|
|
726
|
+
"global.plugins.users-permissions": "Roles & Permissions",
|
|
727
|
+
"global.plugins.users-permissions.description": "Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.",
|
|
701
728
|
"global.profile": "Profile",
|
|
702
729
|
"global.prompt.unsaved": "Are you sure you want to leave this page? All your modifications will be lost",
|
|
703
730
|
"global.reset-password": "Reset password",
|
|
@@ -707,6 +734,15 @@
|
|
|
707
734
|
"global.select": "Select",
|
|
708
735
|
"global.select-all-entries": "Select all entries",
|
|
709
736
|
"global.settings": "Settings",
|
|
737
|
+
"global.strapi-super-admin": "Super Admin",
|
|
738
|
+
"global.strapi-editor": "Editor",
|
|
739
|
+
"global.strapi-author": "Author",
|
|
740
|
+
"global.table.header.email": "Email",
|
|
741
|
+
"global.table.header.firstname": "Firstname",
|
|
742
|
+
"global.table.header.isActive": "User status",
|
|
743
|
+
"global.table.header.lastname": "Lastname",
|
|
744
|
+
"global.table.header.roles": "Roles",
|
|
745
|
+
"global.table.header.username": "Username",
|
|
710
746
|
"global.type": "Type",
|
|
711
747
|
"global.users": "Users",
|
|
712
748
|
"notification.contentType.relations.conflict": "Content type has conflicting relations",
|