@strapi/admin 4.0.3 → 4.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/admin/src/components/LeftMenu/index.js +11 -3
  2. package/admin/src/content-manager/components/DynamicZone/components/DzLabel/index.js +24 -7
  3. package/admin/src/content-manager/components/DynamicZone/index.js +6 -10
  4. package/admin/src/content-manager/components/Wysiwyg/Editor.js +2 -3
  5. package/admin/src/content-manager/components/Wysiwyg/EditorLayout.js +2 -0
  6. package/admin/src/content-manager/components/Wysiwyg/WysiwygFooter.js +2 -4
  7. package/admin/src/content-manager/components/Wysiwyg/WysiwygNav.js +67 -62
  8. package/admin/src/content-manager/components/Wysiwyg/index.js +13 -4
  9. package/admin/src/translations/en.json +2 -0
  10. package/build/3742.2281afd7.chunk.js +1 -0
  11. package/build/4045.0b43d55e.chunk.js +1 -0
  12. package/build/4261.061aed35.chunk.js +1 -0
  13. package/build/4672.7ad6782a.chunk.js +1 -0
  14. package/build/6060.3af8877e.chunk.js +2 -0
  15. package/build/{6060.a5b86bc2.chunk.js.LICENSE.txt → 6060.3af8877e.chunk.js.LICENSE.txt} +0 -0
  16. package/build/{6250.11ba8b50.chunk.js → 6250.7b4872b1.chunk.js} +1 -1
  17. package/build/{5881.746d7dc1.chunk.js → 6354.48168bc8.chunk.js} +2 -2
  18. package/build/{5881.746d7dc1.chunk.js.LICENSE.txt → 6354.48168bc8.chunk.js.LICENSE.txt} +0 -0
  19. package/build/{9351.a0fbd4ef.chunk.js → 8530.a978bde6.chunk.js} +2 -2
  20. package/build/{9351.a0fbd4ef.chunk.js.LICENSE.txt → 8530.a978bde6.chunk.js.LICENSE.txt} +0 -0
  21. package/build/Admin-authenticatedApp.8c375af0.chunk.js +1 -0
  22. package/build/{Admin_homePage.62ec13fd.chunk.js → Admin_homePage.f9cdd615.chunk.js} +1 -1
  23. package/build/{Admin_marketplace.9661a660.chunk.js → Admin_marketplace.4f6c77f2.chunk.js} +1 -1
  24. package/build/Admin_pluginsPage.cd9a871c.chunk.js +1 -0
  25. package/build/{Admin_profilePage.67dd744c.chunk.js → Admin_profilePage.077e17a5.chunk.js} +1 -1
  26. package/build/Admin_settingsPage.9752ef85.chunk.js +1 -0
  27. package/build/admin-edit-roles-page.27b047fc.chunk.js +1 -0
  28. package/build/admin-edit-users.a0dede23.chunk.js +1 -0
  29. package/build/admin-users.a11177c1.chunk.js +1 -0
  30. package/build/{api-tokens-create-page.830b37b7.chunk.js → api-tokens-create-page.07be3e07.chunk.js} +1 -1
  31. package/build/{api-tokens-edit-page.dbe07b72.chunk.js → api-tokens-edit-page.d6afc60e.chunk.js} +1 -1
  32. package/build/{api-tokens-list-page.1626150f.chunk.js → api-tokens-list-page.da9714d8.chunk.js} +1 -1
  33. package/build/codemirror-css.f9701755.chunk.js +1 -0
  34. package/build/codemirror-theme.1563c1c2.chunk.js +1 -0
  35. package/build/content-manager.51651b3b.chunk.js +1 -0
  36. package/build/{content-type-builder-translation-en-json.c535d180.chunk.js → content-type-builder-translation-en-json.d70fc3af.chunk.js} +1 -1
  37. package/build/content-type-builder.c815d0c6.chunk.js +1 -0
  38. package/build/cropper-css.45c47fe3.chunk.js +1 -0
  39. package/build/email-settings-page.03e18bb2.chunk.js +1 -0
  40. package/build/{email-translation-dk-json.b3740e8f.chunk.js → email-translation-dk-json.e1480892.chunk.js} +1 -1
  41. package/build/en-json.9e3c8615.chunk.js +1 -0
  42. package/build/fontawesome-css-all.9c41f1d7.chunk.js +1 -0
  43. package/build/fontawesome-css.24c8dbfc.chunk.js +1 -0
  44. package/build/highlight.js.90b600ee.chunk.js +1 -0
  45. package/build/{i18n-settings-page.ad670b2c.chunk.js → i18n-settings-page.89d1776c.chunk.js} +1 -1
  46. package/build/index.html +1 -1
  47. package/build/main.ca080a1e.js +2 -0
  48. package/build/{main.b227e163.js.LICENSE.txt → main.ca080a1e.js.LICENSE.txt} +0 -0
  49. package/build/runtime~main.6f530910.js +1 -0
  50. package/build/{sk-json.a40bc2c8.chunk.js → sk-json.2eb1ec0d.chunk.js} +1 -1
  51. package/build/sso-settings-page.d4ab164b.chunk.js +1 -0
  52. package/build/{upload-settings.f65c4d08.chunk.js → upload-settings.aa148b01.chunk.js} +1 -1
  53. package/build/{upload-translation-ja-json.71aa85eb.chunk.js → upload-translation-ja-json.568f097e.chunk.js} +1 -1
  54. package/build/{upload.1e3e2685.chunk.js → upload.1991e997.chunk.js} +1 -1
  55. package/build/{users-advanced-settings-page.da9830fd.chunk.js → users-advanced-settings-page.23ed7ee9.chunk.js} +1 -1
  56. package/build/users-email-settings-page.64dc429a.chunk.js +1 -0
  57. package/build/{users-permissions-translation-ru-json.5709c5a0.chunk.js → users-permissions-translation-ru-json.44dd1f10.chunk.js} +1 -1
  58. package/build/users-providers-settings-page.329f102a.chunk.js +1 -0
  59. package/build/users-roles-settings-page.e28982b6.chunk.js +1 -0
  60. package/build/{webhook-edit-page.c87c6764.chunk.js → webhook-edit-page.678af4e2.chunk.js} +1 -1
  61. package/build/{webhook-list-page.8abf0b5f.chunk.js → webhook-list-page.5abda9c2.chunk.js} +1 -1
  62. package/package.json +5 -5
  63. package/build/4261.b7b7ac00.chunk.js +0 -1
  64. package/build/4362.1cf3ccbd.chunk.js +0 -1
  65. package/build/6060.a5b86bc2.chunk.js +0 -2
  66. package/build/849.4a7be1c0.chunk.js +0 -1
  67. package/build/9238.63386655.chunk.js +0 -1
  68. package/build/Admin-authenticatedApp.956e0be7.chunk.js +0 -1
  69. package/build/Admin_pluginsPage.7d1bd7ce.chunk.js +0 -1
  70. package/build/Admin_settingsPage.73423460.chunk.js +0 -1
  71. package/build/admin-edit-roles-page.2d1b6461.chunk.js +0 -1
  72. package/build/admin-edit-users.e736db15.chunk.js +0 -1
  73. package/build/admin-users.62447405.chunk.js +0 -1
  74. package/build/codemirror-css.17bc19d4.chunk.js +0 -1
  75. package/build/codemirror-theme.b5559efc.chunk.js +0 -1
  76. package/build/content-manager.0872e65e.chunk.js +0 -1
  77. package/build/content-type-builder.44fdf56b.chunk.js +0 -1
  78. package/build/cropper-css.ace19575.chunk.js +0 -1
  79. package/build/email-settings-page.3cdedf03.chunk.js +0 -1
  80. package/build/en-json.1c33de7f.chunk.js +0 -1
  81. package/build/fontawesome-css-all.3b89f909.chunk.js +0 -1
  82. package/build/fontawesome-css.ef93ee2a.chunk.js +0 -1
  83. package/build/highlight.js.6321cb45.chunk.js +0 -1
  84. package/build/main.b227e163.js +0 -2
  85. package/build/runtime~main.d7a87b81.js +0 -1
  86. package/build/sso-settings-page.c073b6d7.chunk.js +0 -1
  87. package/build/users-email-settings-page.678794aa.chunk.js +0 -1
  88. package/build/users-providers-settings-page.d4f78a77.chunk.js +0 -1
  89. package/build/users-roles-settings-page.4f04bf06.chunk.js +0 -1
@@ -80,12 +80,20 @@ const LeftMenu = ({ generalSectionLinks, pluginsSectionLinks }) => {
80
80
  }
81
81
  };
82
82
 
83
+ const menuTitle = formatMessage({
84
+ id: 'app.components.LeftMenu.navbrand.title',
85
+ defaultMessage: 'Strapi Dashboard',
86
+ });
87
+
83
88
  return (
84
89
  <MainNav condensed={condensed}>
85
90
  <NavBrand
86
- workplace="Workplace"
87
- title="Strapi Dashboard"
88
- icon={<img src={menuLogo} alt="Strapi Dashboard" />}
91
+ workplace={formatMessage({
92
+ id: 'app.components.LeftMenu.navbrand.workplace',
93
+ defaultMessage: 'Workplace',
94
+ })}
95
+ title={menuTitle}
96
+ icon={<img src={menuLogo} alt={menuTitle} />}
89
97
  />
90
98
 
91
99
  <Divider />
@@ -17,7 +17,7 @@ const StyledBox = styled(Box)`
17
17
  border-radius: ${pxToRem(26)};
18
18
  `;
19
19
 
20
- const DzLabel = ({ label, labelAction, name, numberOfComponents, required }) => {
20
+ const DzLabel = ({ label, labelAction, name, numberOfComponents, required, intlDescription }) => {
21
21
  const { formatMessage } = useIntl();
22
22
  const intlLabel = formatMessage({ id: label || name, defaultMessage: label || name });
23
23
 
@@ -33,12 +33,24 @@ const DzLabel = ({ label, labelAction, name, numberOfComponents, required }) =>
33
33
  shadow="filterShadow"
34
34
  color="neutral500"
35
35
  >
36
- <Flex>
37
- <Typography fontSize={0} lineHeight={0} textColor="neutral600" fontWeight="bold">
38
- {intlLabel}&nbsp;({numberOfComponents})
39
- </Typography>
40
- {required && <Typography textColor="danger600">*</Typography>}
41
- {labelAction && <Box paddingLeft={1}>{labelAction}</Box>}
36
+ <Flex direction="column" justifyContent="center">
37
+ <Flex maxWidth={pxToRem(356)}>
38
+ <Typography variant="pi" textColor="neutral600" fontWeight="bold" ellipsis>
39
+ {intlLabel}&nbsp;
40
+ </Typography>
41
+ <Typography variant="pi" textColor="neutral600" fontWeight="bold">
42
+ ({numberOfComponents})
43
+ </Typography>
44
+ {required && <Typography textColor="danger600">*</Typography>}
45
+ {labelAction && <Box paddingLeft={1}>{labelAction}</Box>}
46
+ </Flex>
47
+ {intlDescription && (
48
+ <Box paddingTop={1} maxWidth={pxToRem(356)}>
49
+ <Typography variant="pi" textColor="neutral600" ellipsis>
50
+ {formatMessage(intlDescription)}
51
+ </Typography>
52
+ </Box>
53
+ )}
42
54
  </Flex>
43
55
  </StyledBox>
44
56
  </Box>
@@ -47,12 +59,17 @@ const DzLabel = ({ label, labelAction, name, numberOfComponents, required }) =>
47
59
  };
48
60
 
49
61
  DzLabel.defaultProps = {
62
+ intlDescription: undefined,
50
63
  label: '',
51
64
  labelAction: undefined,
52
65
  required: false,
53
66
  };
54
67
 
55
68
  DzLabel.propTypes = {
69
+ intlDescription: PropTypes.shape({
70
+ id: PropTypes.string.isRequired,
71
+ defaultMessage: PropTypes.string.isRequired,
72
+ }),
56
73
  label: PropTypes.string,
57
74
  labelAction: PropTypes.element,
58
75
  name: PropTypes.string.isRequired,
@@ -39,6 +39,9 @@ const DynamicZone = ({
39
39
  const [isOpen, setIsOpen] = useState(false);
40
40
  const [shouldOpenAddedComponent, setShouldOpenAddedComponent] = useState(false);
41
41
  const dynamicDisplayedComponentsLength = dynamicDisplayedComponents.length;
42
+ const intlDescription = metadatas.description
43
+ ? { id: metadatas.description, defaultMessage: metadatas.description }
44
+ : null;
42
45
 
43
46
  const [componentCollapses, setComponentsCollapses] = useState(
44
47
  createCollapses(dynamicDisplayedComponentsLength)
@@ -159,11 +162,7 @@ const DynamicZone = ({
159
162
  if (!isFieldAllowed && isCreatingEntry) {
160
163
  return (
161
164
  <NotAllowedInput
162
- description={
163
- metadatas.description
164
- ? { id: metadatas.description, defaultMessage: metadatas.description }
165
- : null
166
- }
165
+ description={intlDescription}
167
166
  intlLabel={{ id: metadatas.label, defaultMessage: metadatas.label }}
168
167
  labelAction={labelAction}
169
168
  name={name}
@@ -174,11 +173,7 @@ const DynamicZone = ({
174
173
  if (!isFieldAllowed && !isFieldReadable && !isCreatingEntry) {
175
174
  return (
176
175
  <NotAllowedInput
177
- description={
178
- metadatas.description
179
- ? { id: metadatas.description, defaultMessage: metadatas.description }
180
- : null
181
- }
176
+ description={intlDescription}
182
177
  intlLabel={{ id: metadatas.label, defaultMessage: metadatas.label }}
183
178
  labelAction={labelAction}
184
179
  name={name}
@@ -191,6 +186,7 @@ const DynamicZone = ({
191
186
  {dynamicDisplayedComponentsLength > 0 && (
192
187
  <Box>
193
188
  <DzLabel
189
+ intlDescription={intlDescription}
194
190
  label={metadatas.label}
195
191
  labelAction={labelAction}
196
192
  name={name}
@@ -25,9 +25,8 @@ const Editor = ({
25
25
  lineWrapping: true,
26
26
  extraKeys: {
27
27
  Enter: 'newlineAndIndentContinueMarkdownList',
28
- // Leaving this commented for now
29
- // Tab: false,
30
- // 'Shift-Tab': false,
28
+ Tab: false,
29
+ 'Shift-Tab': false,
31
30
  },
32
31
  readOnly: false,
33
32
  smartIndent: false,
@@ -68,6 +68,7 @@ export const EditorLayout = ({ children, isExpandMode, error, previewContent, on
68
68
  bottom={0}
69
69
  zIndex={4}
70
70
  justifyContent="center"
71
+ onClick={onCollapse}
71
72
  >
72
73
  <Box
73
74
  id="wysiwyg-expand"
@@ -77,6 +78,7 @@ export const EditorLayout = ({ children, isExpandMode, error, previewContent, on
77
78
  overflow="hidden"
78
79
  width="70%"
79
80
  height="70%"
81
+ onClick={e => e.stopPropagation()}
80
82
  >
81
83
  <Flex height="100%" alignItems="flex-start">
82
84
  <BoxWithBorder flex="1" height="100%">
@@ -7,13 +7,13 @@ import { Typography } from '@strapi/design-system/Typography';
7
7
  import Expand from '@strapi/icons/Expand';
8
8
  import { ExpandButton } from './WysiwygStyles';
9
9
 
10
- const WysiwygFooter = ({ isPreviewMode, onToggleExpand }) => {
10
+ const WysiwygFooter = ({ onToggleExpand }) => {
11
11
  const { formatMessage } = useIntl();
12
12
 
13
13
  return (
14
14
  <Box padding={2} background="neutral100" hasRadius>
15
15
  <Flex justifyContent="flex-end" alignItems="flex-end">
16
- <ExpandButton id="expand" disabled={isPreviewMode} onClick={onToggleExpand}>
16
+ <ExpandButton id="expand" onClick={onToggleExpand}>
17
17
  <Typography>
18
18
  {formatMessage({
19
19
  id: 'components.WysiwygBottomControls.fullscreen',
@@ -29,12 +29,10 @@ const WysiwygFooter = ({ isPreviewMode, onToggleExpand }) => {
29
29
 
30
30
  WysiwygFooter.defaultProps = {
31
31
  onToggleExpand: () => {},
32
- isPreviewMode: false,
33
32
  };
34
33
 
35
34
  WysiwygFooter.propTypes = {
36
35
  onToggleExpand: PropTypes.func,
37
- isPreviewMode: PropTypes.bool,
38
36
  };
39
37
 
40
38
  export default WysiwygFooter;
@@ -1,6 +1,7 @@
1
1
  import React, { useRef, useState } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useIntl } from 'react-intl';
4
+ import { FocusTrap } from '@strapi/design-system/FocusTrap';
4
5
  import { Box } from '@strapi/design-system/Box';
5
6
  import { Button } from '@strapi/design-system/Button';
6
7
  import { IconButtonGroup } from '@strapi/design-system/IconButton';
@@ -41,7 +42,9 @@ const WysiwygNav = ({
41
42
  });
42
43
  const buttonMoreRef = useRef();
43
44
 
44
- const handleTogglePopover = () => setVisiblePopover(prev => !prev);
45
+ const handleTogglePopover = () => {
46
+ setVisiblePopover(prev => !prev);
47
+ };
45
48
 
46
49
  if (isPreviewMode) {
47
50
  return (
@@ -81,10 +84,10 @@ const WysiwygNav = ({
81
84
  />
82
85
  </MainButtons>
83
86
 
84
- <MoreButton disabled ref={buttonMoreRef} id="more" label="More" icon={<More />} />
87
+ <MoreButton disabled id="more" label="More" icon={<More />} />
85
88
  </Flex>
86
89
 
87
- <Button onClick={onTogglePreviewMode} variant="tertiary" size="L" id="preview">
90
+ <Button onClick={onTogglePreviewMode} variant="tertiary" id="preview">
88
91
  {formatMessage({
89
92
  id: 'components.Wysiwyg.ToggleMode.markdown-mode',
90
93
  defaultMessage: 'Markdown mode',
@@ -146,65 +149,67 @@ const WysiwygNav = ({
146
149
  />
147
150
  {visiblePopover && (
148
151
  <Popover centered source={buttonMoreRef} spacing={4} id="popover">
149
- <Flex>
150
- <IconButtonGroupMargin>
151
- <CustomIconButton
152
- onClick={() => onActionClick('Strikethrough', editorRef, handleTogglePopover)}
153
- id="Strikethrough"
154
- label="Strikethrough"
155
- name="Strikethrough"
156
- icon={<Strikethrough />}
157
- />
158
- <CustomIconButton
159
- onClick={() => onActionClick('BulletList', editorRef, handleTogglePopover)}
160
- id="BulletList"
161
- label="BulletList"
162
- name="BulletList"
163
- icon={<BulletList />}
164
- />
165
- <CustomIconButton
166
- onClick={() => onActionClick('NumberList', editorRef, handleTogglePopover)}
167
- id="NumberList"
168
- label="NumberList"
169
- name="NumberList"
170
- icon={<NumberList />}
171
- />
172
- </IconButtonGroupMargin>
173
- <IconButtonGroup>
174
- <CustomIconButton
175
- onClick={() => onActionClick('Code', editorRef, handleTogglePopover)}
176
- id="Code"
177
- label="Code"
178
- name="Code"
179
- icon={<Code />}
180
- />
181
- <CustomIconButton
182
- onClick={() => {
183
- handleTogglePopover();
184
- onToggleMediaLib();
185
- }}
186
- id="Image"
187
- label="Image"
188
- name="Image"
189
- icon={<Image />}
190
- />
191
- <CustomLinkIconButton
192
- onClick={() => onActionClick('Link', editorRef, handleTogglePopover)}
193
- id="Link"
194
- label="Link"
195
- name="Link"
196
- // eslint-disable-next-line jsx-a11y/anchor-is-valid
197
- icon={<Link />}
198
- />
199
- <CustomIconButton
200
- onClick={() => onActionClick('Quote', editorRef, handleTogglePopover)}
201
- id="Quote"
202
- label="Quote"
203
- name="Quote"
204
- icon={<Quote />}
205
- />
206
- </IconButtonGroup>
207
- </Flex>
152
+ <FocusTrap onEscape={handleTogglePopover}>
153
+ <Flex>
154
+ <IconButtonGroupMargin>
155
+ <CustomIconButton
156
+ onClick={() => onActionClick('Strikethrough', editorRef, handleTogglePopover)}
157
+ id="Strikethrough"
158
+ label="Strikethrough"
159
+ name="Strikethrough"
160
+ icon={<Strikethrough />}
161
+ />
162
+ <CustomIconButton
163
+ onClick={() => onActionClick('BulletList', editorRef, handleTogglePopover)}
164
+ id="BulletList"
165
+ label="BulletList"
166
+ name="BulletList"
167
+ icon={<BulletList />}
168
+ />
169
+ <CustomIconButton
170
+ onClick={() => onActionClick('NumberList', editorRef, handleTogglePopover)}
171
+ id="NumberList"
172
+ label="NumberList"
173
+ name="NumberList"
174
+ icon={<NumberList />}
175
+ />
176
+ </IconButtonGroupMargin>
177
+ <IconButtonGroup>
178
+ <CustomIconButton
179
+ onClick={() => onActionClick('Code', editorRef, handleTogglePopover)}
180
+ id="Code"
181
+ label="Code"
182
+ name="Code"
183
+ icon={<Code />}
184
+ />
185
+ <CustomIconButton
186
+ onClick={() => {
187
+ handleTogglePopover();
188
+ onToggleMediaLib();
189
+ }}
190
+ id="Image"
191
+ label="Image"
192
+ name="Image"
193
+ icon={<Image />}
194
+ />
195
+ <CustomLinkIconButton
196
+ onClick={() => onActionClick('Link', editorRef, handleTogglePopover)}
197
+ id="Link"
198
+ label="Link"
199
+ name="Link"
200
+ // eslint-disable-next-line jsx-a11y/anchor-is-valid
201
+ icon={<Link />}
202
+ />
203
+ <CustomIconButton
204
+ onClick={() => onActionClick('Quote', editorRef, handleTogglePopover)}
205
+ id="Quote"
206
+ label="Quote"
207
+ name="Quote"
208
+ icon={<Quote />}
209
+ />
210
+ </IconButtonGroup>
211
+ </Flex>
212
+ </FocusTrap>
208
213
  </Popover>
209
214
  )}
210
215
  </Flex>
@@ -26,6 +26,10 @@ const LabelAction = styled(Box)`
26
26
  }
27
27
  `;
28
28
 
29
+ const TypographyAsterisk = styled(Typography)`
30
+ line-height: 0;
31
+ `;
32
+
29
33
  const Wysiwyg = ({
30
34
  description,
31
35
  disabled,
@@ -36,6 +40,7 @@ const Wysiwyg = ({
36
40
  onChange,
37
41
  placeholder,
38
42
  value,
43
+ required,
39
44
  }) => {
40
45
  const { formatMessage } = useIntl();
41
46
  const textareaRef = useRef(null);
@@ -49,7 +54,10 @@ const Wysiwyg = ({
49
54
 
50
55
  const handleToggleMediaLib = () => setMediaLibVisible(prev => !prev);
51
56
  const handleTogglePreviewMode = () => setIsPreviewMode(prev => !prev);
52
- const handleToggleExpand = () => setIsExpandMode(prev => !prev);
57
+ const handleToggleExpand = () => {
58
+ setIsPreviewMode(false);
59
+ setIsExpandMode(prev => !prev);
60
+ };
53
61
 
54
62
  const handleActionClick = (value, currentEditorRef, togglePopover) => {
55
63
  switch (value) {
@@ -124,6 +132,7 @@ const Wysiwyg = ({
124
132
  <Stack horizontal size={1}>
125
133
  <Typography variant="pi" fontWeight="bold" textColor="neutral800">
126
134
  {label}
135
+ {required && <TypographyAsterisk textColor="danger600">*</TypographyAsterisk>}
127
136
  </Typography>
128
137
  {labelAction && <LabelAction paddingLeft={1}>{labelAction}</LabelAction>}
129
138
  </Stack>
@@ -154,9 +163,7 @@ const Wysiwyg = ({
154
163
  value={value}
155
164
  />
156
165
 
157
- {!isExpandMode && (
158
- <WysiwygFooter isPreviewMode={isPreviewMode} onToggleExpand={handleToggleExpand} />
159
- )}
166
+ {!isExpandMode && <WysiwygFooter onToggleExpand={handleToggleExpand} />}
160
167
  </EditorLayout>
161
168
  <Hint description={description} name={name} error={error} />
162
169
  </Stack>
@@ -182,6 +189,7 @@ Wysiwyg.defaultProps = {
182
189
  error: '',
183
190
  labelAction: undefined,
184
191
  placeholder: null,
192
+ required: false,
185
193
  value: '',
186
194
  };
187
195
 
@@ -206,6 +214,7 @@ Wysiwyg.propTypes = {
206
214
  defaultMessage: PropTypes.string.isRequired,
207
215
  values: PropTypes.object,
208
216
  }),
217
+ required: PropTypes.bool,
209
218
  value: PropTypes.string,
210
219
  };
211
220
 
@@ -284,6 +284,8 @@
284
284
  "app.components.LeftMenu.expand": "Expand the navbar",
285
285
  "app.components.LeftMenu.logout": "Logout",
286
286
  "app.components.LeftMenu.profile": "Profile",
287
+ "app.components.LeftMenu.navbrand.title": "Strapi Dashboard",
288
+ "app.components.LeftMenu.navbrand.workplace": "Workplace",
287
289
  "app.components.LeftMenuFooter.documentation": "Documentation",
288
290
  "app.components.LeftMenuFooter.help": "Help",
289
291
  "app.components.LeftMenuFooter.poweredBy": "Powered by ",