@plone/volto 17.0.0-alpha.26 → 17.0.0-alpha.28
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/.eslintrc +26 -3
- package/.yarn/install-state.gz +0 -0
- package/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs +541 -0
- package/.yarn/releases/yarn-3.6.3.cjs +874 -0
- package/CHANGELOG.md +60 -0
- package/addon-registry.js +10 -1
- package/create-addons-loader.js +1 -1
- package/locales/ca/LC_MESSAGES/volto.po +57 -31
- package/locales/ca.json +1 -1
- package/locales/de/LC_MESSAGES/volto.po +58 -32
- package/locales/de.json +1 -1
- package/locales/en/LC_MESSAGES/volto.po +57 -31
- package/locales/en.json +1 -1
- package/locales/es/LC_MESSAGES/volto.po +65 -39
- package/locales/es.json +1 -1
- package/locales/eu/LC_MESSAGES/volto.po +57 -31
- package/locales/eu.json +1 -1
- package/locales/fi/LC_MESSAGES/volto.po +57 -31
- package/locales/fi.json +1 -1
- package/locales/fr/LC_MESSAGES/volto.po +57 -31
- package/locales/fr.json +1 -1
- package/locales/it/LC_MESSAGES/volto.po +57 -31
- package/locales/it.json +1 -1
- package/locales/ja/LC_MESSAGES/volto.po +57 -31
- package/locales/ja.json +1 -1
- package/locales/nl/LC_MESSAGES/volto.po +57 -31
- package/locales/nl.json +1 -1
- package/locales/pt/LC_MESSAGES/volto.po +57 -31
- package/locales/pt.json +1 -1
- package/locales/pt_BR/LC_MESSAGES/volto.po +57 -31
- package/locales/pt_BR.json +1 -1
- package/locales/ro/LC_MESSAGES/volto.po +57 -31
- package/locales/ro.json +1 -1
- package/locales/volto.pot +62 -32
- package/locales/zh_CN/LC_MESSAGES/volto.po +57 -31
- package/locales/zh_CN.json +1 -1
- package/package.json +35 -26
- package/packages/volto-slate/package.json +1 -1
- package/packages/volto-slate/src/blocks/Text/TextBlockView.jsx +2 -1
- package/packages/volto-slate/src/blocks/Text/index.js +0 -5
- package/packages/volto-slate/src/editor/plugins/Link/render.jsx +5 -6
- package/packages/volto-slate/src/editor/render.jsx +11 -1
- package/razzle.config.js +4 -6
- package/src/components/index.js +194 -194
- package/src/components/manage/Add/Add.jsx +7 -8
- package/src/components/manage/Blocks/Block/Settings.test.jsx +17 -15
- package/src/components/manage/Blocks/HTML/Edit.jsx +8 -8
- package/src/components/manage/Blocks/HeroImageLeft/Edit.jsx +30 -25
- package/src/components/manage/Blocks/Listing/ListingBody.jsx +6 -4
- package/src/components/manage/Blocks/Maps/Edit.test.jsx +1 -2
- package/src/components/manage/Blocks/Maps/View.test.jsx +1 -2
- package/src/components/manage/Blocks/Search/components/Facets.jsx +2 -3
- package/src/components/manage/Blocks/Search/components/FilterList.jsx +4 -6
- package/src/components/manage/Blocks/Search/components/SelectFacet.jsx +2 -9
- package/src/components/manage/Blocks/Search/hocs/withQueryString.jsx +3 -0
- package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +8 -6
- package/src/components/manage/Blocks/Search/schema.js +13 -13
- package/src/components/manage/Blocks/Table/Cell.jsx +2 -3
- package/src/components/manage/Blocks/Text/Edit.jsx +2 -3
- package/src/components/manage/Blocks/Title/View.jsx +4 -37
- package/src/components/manage/Blocks/ToC/View.jsx +1 -0
- package/src/components/manage/Blocks/ToC/variations/DefaultTocRenderer.jsx +3 -2
- package/src/components/manage/Blocks/ToC/variations/HorizontalMenu.jsx +3 -2
- package/src/components/manage/Contents/Contents.jsx +252 -114
- package/src/components/manage/Contents/ContentsPropertiesModal.jsx +90 -154
- package/src/components/manage/Contents/ContentsRenameModal.jsx +88 -139
- package/src/components/manage/Contents/ContentsRenameModal.stories.jsx +61 -0
- package/src/components/manage/Contents/ContentsTagsModal.jsx +83 -130
- package/src/components/manage/Contents/ContentsTagsModal.stories.jsx +68 -0
- package/src/components/manage/Contents/ContentsUploadModal.jsx +1 -2
- package/src/components/manage/Contents/ContentsWorkflowModal.jsx +87 -154
- package/src/components/manage/Controlpanels/Aliases.jsx +4 -12
- package/src/components/manage/Controlpanels/Rules/AddRule.jsx +2 -9
- package/src/components/manage/Controlpanels/UndoControlpanel.jsx +6 -9
- package/src/components/manage/Form/BlockDataForm.test.jsx +17 -15
- package/src/components/manage/Form/Form.jsx +2 -3
- package/src/components/manage/Form/InlineForm.test.jsx +16 -14
- package/src/components/manage/LockingToastsFactory/LockingToastsFactory.jsx +1 -2
- package/src/components/manage/Sharing/Sharing.jsx +7 -0
- package/src/components/manage/Sidebar/Sidebar.jsx +139 -220
- package/src/components/manage/Toolbar/More.jsx +12 -12
- package/src/components/manage/Toolbar/PersonalTools.jsx +97 -155
- package/src/components/manage/Toolbar/Toolbar.jsx +2 -2
- package/src/components/manage/UniversalLink/UniversalLink.test.jsx +2 -1
- package/src/components/manage/Widgets/AlignWidget.jsx +2 -4
- package/src/components/manage/Widgets/ColorPickerWidget.test.jsx +9 -7
- package/src/components/manage/Widgets/DatetimeWidget.jsx +2 -8
- package/src/components/manage/Widgets/IdWidget.jsx +1 -2
- package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +2 -9
- package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +2 -9
- package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthIndexField.jsx +4 -4
- package/src/components/manage/Widgets/SchemaWidget.jsx +6 -9
- package/src/components/manage/Widgets/WysiwygWidget.jsx +2 -9
- package/src/components/theme/Comments/Comments.jsx +3 -10
- package/src/components/theme/ContentMetadataTags/ContentMetadataTags.jsx +4 -0
- package/src/components/theme/Login/Login.jsx +1 -2
- package/src/components/theme/PasswordReset/PasswordReset.jsx +1 -2
- package/src/components/theme/PreviewImage/PreviewImage.jsx +10 -5
- package/src/components/theme/PreviewImage/PreviewImage.test.js +17 -0
- package/src/components/theme/Register/Register.jsx +2 -4
- package/src/components/theme/TsTest/TsTest.test.tsx +11 -0
- package/src/components/theme/TsTest/TsTest.tsx +15 -0
- package/src/components/theme/View/AlbumView.jsx +3 -2
- package/src/components/theme/Widgets/ImageWidget.stories.jsx +1 -2
- package/src/config/Loadables.jsx +1 -1
- package/src/config/RichTextEditor/Blocks.jsx +2 -3
- package/src/config/RichTextEditor/Plugins.jsx +2 -3
- package/src/config/RichTextEditor/ToHTML.jsx +12 -10
- package/src/config/RichTextEditor/index.js +2 -3
- package/src/config/Views.jsx +5 -5
- package/src/express-middleware/ok.js +1 -1
- package/src/helpers/Blocks/Blocks.js +4 -6
- package/src/helpers/Blocks/Blocks.test.js +35 -35
- package/src/helpers/Extensions/withBlockSchemaEnhancer.js +48 -50
- package/src/helpers/FormValidation/FormValidation.js +7 -6
- package/src/helpers/Html/Html.jsx +2 -8
- package/src/helpers/Loadable/__mocks__/Loadable.js +18 -18
- package/src/helpers/MessageLabels/MessageLabels.js +2 -3
- package/src/helpers/Utils/UseDetectClickOutside.stories.jsx +2 -3
- package/src/helpers/Utils/Utils.js +10 -0
- package/src/helpers/Utils/Utils.test.js +13 -0
- package/src/helpers/index.js +1 -0
- package/src/hooks/index.js +1 -1
- package/src/middleware/api.js +194 -190
- package/src/middleware/blacklistRoutes.js +25 -22
- package/src/middleware/storeProtectLoadUtils.js +61 -62
- package/src/middleware/storeProtectLoadUtils.test.js +47 -43
- package/src/reducers/content/content.test.js +4 -4
- package/src/reducers/navigation/navigation.js +5 -5
- package/src/reducers/navigation/navigation.test.js +30 -0
- package/src/registry.js +2 -2
- package/src/storybook.jsx +24 -38
- package/theme/themes/pastanaga/collections/menu.overrides +3 -2
- package/theme/themes/pastanaga/elements/container.overrides +5 -2
- package/theme/themes/pastanaga/elements/input.overrides +1 -1
- package/theme/themes/pastanaga/elements/step.overrides +2 -1
- package/theme/themes/pastanaga/extras/blocks.less +20 -14
- package/theme/themes/pastanaga/extras/color-picker-widget.less +1 -1
- package/theme/themes/pastanaga/extras/contents.less +5 -1
- package/theme/themes/pastanaga/extras/draftjs.less +4 -4
- package/theme/themes/pastanaga/extras/grid.less +5 -4
- package/theme/themes/pastanaga/extras/main.less +6 -6
- package/theme/themes/pastanaga/extras/react-dates-overrides.less +4 -2
- package/theme/themes/pastanaga/extras/search.less +2 -2
- package/theme/themes/pastanaga/extras/sidebar.less +5 -4
- package/theme/themes/pastanaga/extras/time-picker-overrides.less +5 -3
- package/theme/themes/pastanaga/extras/toolbar.less +6 -2
- package/theme/themes/pastanaga/extras/userscontrolpanel.less +17 -9
- package/theme/themes/pastanaga/extras/widgets.less +1 -1
- package/theme/themes/pastanaga/modules/rating.overrides +2 -1
- package/theme/themes/pastanaga-cms-ui/elements/container.overrides +2 -1
- package/theme/themes/pastanaga-cms-ui/extras/cms-ui.elements.container.less +6 -2
- package/theme/themes/pastanaga-cms-ui/extras/cms-ui.site.less +2 -2
- package/tsconfig.json +33 -0
|
@@ -8,23 +8,25 @@ import { Provider } from 'react-intl-redux';
|
|
|
8
8
|
|
|
9
9
|
const mockStore = configureStore();
|
|
10
10
|
|
|
11
|
-
const withStateManagement =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const withStateManagement =
|
|
12
|
+
(Component) =>
|
|
13
|
+
({ ...props }) => {
|
|
14
|
+
const [formData, onChangeFormData] = React.useState(props.formData || {});
|
|
15
|
+
const onChangeField = (id, value) => {
|
|
16
|
+
onChangeFormData({ ...formData, [id]: value });
|
|
17
|
+
};
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
// NOTE: onChangeBlock here is not "really" implemented
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
21
|
+
return (
|
|
22
|
+
<Component
|
|
23
|
+
{...props}
|
|
24
|
+
onChangeField={onChangeField}
|
|
25
|
+
onChangeBlock={(block, data) => onChangeFormData(data)}
|
|
26
|
+
formData={formData}
|
|
27
|
+
/>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
28
30
|
|
|
29
31
|
beforeAll(() => {
|
|
30
32
|
config.widgets = {
|
|
@@ -229,9 +229,8 @@ class Form extends Component {
|
|
|
229
229
|
let activeIndex = 0;
|
|
230
230
|
|
|
231
231
|
if (requestError && prevProps.requestError !== requestError) {
|
|
232
|
-
errors =
|
|
233
|
-
requestError
|
|
234
|
-
);
|
|
232
|
+
errors =
|
|
233
|
+
FormValidation.giveServerErrorsToCorrespondingFields(requestError);
|
|
235
234
|
activeIndex = FormValidation.showFirstTabWithErrors({
|
|
236
235
|
errors,
|
|
237
236
|
schema: this.props.schema,
|
|
@@ -19,22 +19,24 @@ function NewBaseWidget(name) {
|
|
|
19
19
|
);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
const withStateManagement =
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
const withStateManagement =
|
|
23
|
+
(Component) =>
|
|
24
|
+
({ ...props }) => {
|
|
25
|
+
const [formData, onChangeFormData] = React.useState(props.formData || {});
|
|
26
|
+
const onChangeField = (id, value) => {
|
|
27
|
+
onChangeFormData({ ...formData, [id]: value });
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<Component
|
|
32
|
+
{...props}
|
|
33
|
+
onChangeField={onChangeField}
|
|
34
|
+
onChangeFormData={onChangeFormData}
|
|
35
|
+
formData={formData}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
26
38
|
};
|
|
27
39
|
|
|
28
|
-
return (
|
|
29
|
-
<Component
|
|
30
|
-
{...props}
|
|
31
|
-
onChangeField={onChangeField}
|
|
32
|
-
onChangeFormData={onChangeFormData}
|
|
33
|
-
formData={formData}
|
|
34
|
-
/>
|
|
35
|
-
);
|
|
36
|
-
};
|
|
37
|
-
|
|
38
40
|
beforeAll(() => {
|
|
39
41
|
config.widgets.default = NewBaseWidget('default');
|
|
40
42
|
config.widgets.type.boolean = NewBaseWidget('boolean');
|
|
@@ -12,8 +12,7 @@ const messages = defineMessages({
|
|
|
12
12
|
defaultMessage: 'This item was locked by {creator} on {date}',
|
|
13
13
|
},
|
|
14
14
|
unlockItem: {
|
|
15
|
-
id:
|
|
16
|
-
'If you are certain this user has abandoned the object, you may unlock the object. You will then be able to edit it.',
|
|
15
|
+
id: 'If you are certain this user has abandoned the object, you may unlock the object. You will then be able to edit it.',
|
|
17
16
|
defaultMessage:
|
|
18
17
|
'If you are certain this user has abandoned the object, you may unlock the object. You will then be able to edit it.',
|
|
19
18
|
},
|
|
@@ -39,6 +39,10 @@ const messages = defineMessages({
|
|
|
39
39
|
id: 'Search for user or group',
|
|
40
40
|
defaultMessage: 'Search for user or group',
|
|
41
41
|
},
|
|
42
|
+
search: {
|
|
43
|
+
id: 'Search',
|
|
44
|
+
defaultMessage: 'Search',
|
|
45
|
+
},
|
|
42
46
|
inherit: {
|
|
43
47
|
id: 'Inherit permissions from higher levels',
|
|
44
48
|
defaultMessage: 'Inherit permissions from higher levels',
|
|
@@ -343,6 +347,9 @@ class SharingComponent extends Component {
|
|
|
343
347
|
icon: 'search',
|
|
344
348
|
loading: isLoading,
|
|
345
349
|
disabled: isLoading,
|
|
350
|
+
'aria-label': this.props.intl.formatMessage(
|
|
351
|
+
messages.search,
|
|
352
|
+
),
|
|
346
353
|
}}
|
|
347
354
|
placeholder={this.props.intl.formatMessage(
|
|
348
355
|
messages.searchForUserOrGroup,
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
* Sidebar component.
|
|
3
|
-
* @module components/manage/Sidebar/Sidebar
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import React, { Component, Fragment } from 'react';
|
|
1
|
+
import React, { useState, Fragment, useCallback } from 'react';
|
|
7
2
|
import PropTypes from 'prop-types';
|
|
8
3
|
import { Button, Tab } from 'semantic-ui-react';
|
|
9
|
-
import {
|
|
4
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
10
5
|
import { compose } from 'redux';
|
|
11
6
|
import { withCookies } from 'react-cookie';
|
|
12
|
-
import { defineMessages,
|
|
7
|
+
import { defineMessages, useIntl } from 'react-intl';
|
|
13
8
|
import cx from 'classnames';
|
|
14
9
|
import { BodyClass, getCookieOptions } from '@plone/volto/helpers';
|
|
15
10
|
import { Icon } from '@plone/volto/components';
|
|
@@ -41,101 +36,45 @@ const messages = defineMessages({
|
|
|
41
36
|
},
|
|
42
37
|
});
|
|
43
38
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* @static
|
|
54
|
-
*/
|
|
55
|
-
static propTypes = {
|
|
56
|
-
documentTab: PropTypes.bool,
|
|
57
|
-
blockTab: PropTypes.bool,
|
|
58
|
-
settingsTab: PropTypes.bool,
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Default properties.
|
|
63
|
-
* @property {Object} defaultProps Default properties.
|
|
64
|
-
* @static
|
|
65
|
-
*/
|
|
66
|
-
static defaultProps = {
|
|
67
|
-
documentTab: true,
|
|
68
|
-
blockTab: true,
|
|
69
|
-
settingsTab: false,
|
|
70
|
-
};
|
|
39
|
+
const Sidebar = (props) => {
|
|
40
|
+
const dispatch = useDispatch();
|
|
41
|
+
const intl = useIntl();
|
|
42
|
+
const { cookies, content, documentTab, blockTab, settingsTab } = props;
|
|
43
|
+
const [expanded, setExpanded] = useState(
|
|
44
|
+
cookies.get('sidebar_expanded') !== 'false',
|
|
45
|
+
);
|
|
46
|
+
const [size] = useState(0);
|
|
47
|
+
const [showFull, setshowFull] = useState(true);
|
|
71
48
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
* @param {Object} props Component properties
|
|
76
|
-
* @constructs Sidebar
|
|
77
|
-
*/
|
|
78
|
-
constructor(props) {
|
|
79
|
-
super(props);
|
|
80
|
-
const { cookies } = props;
|
|
81
|
-
this.onToggleExpanded = this.onToggleExpanded.bind(this);
|
|
82
|
-
this.onToggleFullSize = this.onToggleFullSize.bind(this);
|
|
83
|
-
this.onTabChange = this.onTabChange.bind(this);
|
|
84
|
-
this.state = {
|
|
85
|
-
expanded: cookies.get('sidebar_expanded') !== 'false',
|
|
86
|
-
size: 0,
|
|
87
|
-
showFull: true,
|
|
88
|
-
showFullToolbarExpanded: true,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
49
|
+
const tab = useSelector((state) => state.sidebar.tab);
|
|
50
|
+
const toolbarExpanded = useSelector((state) => state.toolbar.expanded);
|
|
51
|
+
const type = useSelector((state) => state.schema?.schema?.title);
|
|
91
52
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
*/
|
|
98
|
-
onToggleExpanded() {
|
|
99
|
-
const { cookies } = this.props;
|
|
100
|
-
cookies.set('sidebar_expanded', !this.state.expanded, getCookieOptions());
|
|
101
|
-
this.setState({
|
|
102
|
-
expanded: !this.state.expanded,
|
|
103
|
-
});
|
|
104
|
-
this.resetFullSizeSidebar();
|
|
105
|
-
}
|
|
53
|
+
const onToggleExpanded = () => {
|
|
54
|
+
cookies.set('sidebar_expanded', !expanded, getCookieOptions());
|
|
55
|
+
setExpanded(!expanded);
|
|
56
|
+
resetFullSizeSidebar();
|
|
57
|
+
};
|
|
106
58
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
* Reset state
|
|
110
|
-
*/
|
|
111
|
-
resetFullSizeSidebar() {
|
|
112
|
-
if (!this.state.expanded) {
|
|
59
|
+
const resetFullSizeSidebar = useCallback(() => {
|
|
60
|
+
if (!expanded) {
|
|
113
61
|
const currentResizer = document.querySelector('#sidebar');
|
|
114
|
-
const sidebarContainer =
|
|
115
|
-
'sidebar-container'
|
|
116
|
-
)[0];
|
|
62
|
+
const sidebarContainer =
|
|
63
|
+
currentResizer.getElementsByClassName('sidebar-container')[0];
|
|
117
64
|
sidebarContainer.classList.remove('full-size');
|
|
118
65
|
sidebarContainer.classList.remove('no-toolbar');
|
|
119
|
-
|
|
120
|
-
this.setState({
|
|
121
|
-
showFull: true,
|
|
122
|
-
});
|
|
66
|
+
setshowFull(true);
|
|
123
67
|
}
|
|
124
|
-
}
|
|
68
|
+
}, [expanded]);
|
|
125
69
|
|
|
126
|
-
|
|
127
|
-
* Set width of sibar to 100% minus the width of the toolbar or reset to
|
|
128
|
-
* initial size, by adding css classes
|
|
129
|
-
*/
|
|
130
|
-
onToggleFullSize() {
|
|
70
|
+
const onToggleFullSize = useCallback(() => {
|
|
131
71
|
const currentResizer = document.querySelector('#sidebar');
|
|
132
|
-
const sidebarContainer =
|
|
133
|
-
'sidebar-container'
|
|
134
|
-
)[0];
|
|
72
|
+
const sidebarContainer =
|
|
73
|
+
currentResizer.getElementsByClassName('sidebar-container')[0];
|
|
135
74
|
|
|
136
|
-
if (
|
|
75
|
+
if (showFull) {
|
|
137
76
|
sidebarContainer.classList.add('full-size');
|
|
138
|
-
if (!
|
|
77
|
+
if (!toolbarExpanded) {
|
|
139
78
|
sidebarContainer.classList.add('no-toolbar');
|
|
140
79
|
} else {
|
|
141
80
|
sidebarContainer.classList.remove('no-toolbar');
|
|
@@ -144,139 +83,119 @@ class Sidebar extends Component {
|
|
|
144
83
|
sidebarContainer.classList.remove('full-size');
|
|
145
84
|
sidebarContainer.classList.remove('no-toolbar');
|
|
146
85
|
}
|
|
86
|
+
setshowFull(!showFull);
|
|
87
|
+
}, [showFull, toolbarExpanded]);
|
|
147
88
|
|
|
148
|
-
|
|
149
|
-
showFull: !prevState.showFull,
|
|
150
|
-
}));
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* On tab change
|
|
155
|
-
* @method onTabChange
|
|
156
|
-
* @param {Object} event Event object
|
|
157
|
-
* @param {Object} data Data object
|
|
158
|
-
* @returns {undefined}
|
|
159
|
-
*/
|
|
160
|
-
onTabChange(event, data) {
|
|
89
|
+
const onTabChange = (event, data) => {
|
|
161
90
|
event.nativeEvent.stopImmediatePropagation();
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Render method.
|
|
167
|
-
* @method render
|
|
168
|
-
* @returns {string} Markup for the component.
|
|
169
|
-
*/
|
|
170
|
-
render() {
|
|
171
|
-
const { expanded } = this.state;
|
|
91
|
+
dispatch(setSidebarTab(data.activeIndex));
|
|
92
|
+
};
|
|
172
93
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
94
|
+
return (
|
|
95
|
+
<Fragment>
|
|
96
|
+
<BodyClass
|
|
97
|
+
className={expanded ? 'has-sidebar' : 'has-sidebar-collapsed'}
|
|
98
|
+
/>
|
|
99
|
+
<div
|
|
100
|
+
className={cx('sidebar-container', { collapsed: !expanded })}
|
|
101
|
+
style={size > 0 ? { width: size } : null}
|
|
102
|
+
>
|
|
103
|
+
<Button
|
|
104
|
+
aria-label={
|
|
105
|
+
expanded
|
|
106
|
+
? intl.formatMessage(messages.shrinkSidebar)
|
|
107
|
+
: intl.formatMessage(messages.expandSidebar)
|
|
108
|
+
}
|
|
109
|
+
className={
|
|
110
|
+
content && content.review_state
|
|
111
|
+
? `${content.review_state} trigger`
|
|
112
|
+
: 'trigger'
|
|
113
|
+
}
|
|
114
|
+
onClick={onToggleExpanded}
|
|
177
115
|
/>
|
|
178
|
-
<
|
|
179
|
-
className=
|
|
180
|
-
|
|
116
|
+
<Button
|
|
117
|
+
className="full-size-sidenav-btn"
|
|
118
|
+
onClick={onToggleFullSize}
|
|
119
|
+
aria-label="full-screen-sidenav"
|
|
181
120
|
>
|
|
182
|
-
<
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
? this.props.intl.formatMessage(messages.shrinkSidebar)
|
|
186
|
-
: this.props.intl.formatMessage(messages.expandSidebar)
|
|
187
|
-
}
|
|
188
|
-
className={
|
|
189
|
-
this.props.content && this.props.content.review_state
|
|
190
|
-
? `${this.props.content.review_state} trigger`
|
|
191
|
-
: 'trigger'
|
|
192
|
-
}
|
|
193
|
-
onClick={this.onToggleExpanded}
|
|
121
|
+
<Icon
|
|
122
|
+
className="full-size-icon"
|
|
123
|
+
name={showFull ? expandSVG : collapseSVG}
|
|
194
124
|
/>
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
125
|
+
</Button>
|
|
126
|
+
<Tab
|
|
127
|
+
menu={{
|
|
128
|
+
secondary: true,
|
|
129
|
+
pointing: true,
|
|
130
|
+
attached: true,
|
|
131
|
+
tabular: true,
|
|
132
|
+
className: 'formtabs',
|
|
133
|
+
}}
|
|
134
|
+
className="tabs-wrapper"
|
|
135
|
+
renderActiveOnly={false}
|
|
136
|
+
activeIndex={tab}
|
|
137
|
+
onTabChange={onTabChange}
|
|
138
|
+
panes={[
|
|
139
|
+
!!documentTab && {
|
|
140
|
+
menuItem: type || intl.formatMessage(messages.document),
|
|
141
|
+
pane: (
|
|
142
|
+
<Tab.Pane
|
|
143
|
+
key="metadata"
|
|
144
|
+
className="tab-wrapper"
|
|
145
|
+
id="sidebar-metadata"
|
|
146
|
+
/>
|
|
147
|
+
),
|
|
148
|
+
},
|
|
149
|
+
!!blockTab && {
|
|
150
|
+
menuItem: intl.formatMessage(messages.block),
|
|
151
|
+
pane: (
|
|
152
|
+
<Tab.Pane
|
|
153
|
+
key="properties"
|
|
154
|
+
className="tab-wrapper"
|
|
155
|
+
id="sidebar-properties"
|
|
156
|
+
>
|
|
157
|
+
<Icon
|
|
158
|
+
className="tab-forbidden"
|
|
159
|
+
name={forbiddenSVG}
|
|
160
|
+
size="48px"
|
|
227
161
|
/>
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
</Fragment>
|
|
267
|
-
);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
162
|
+
</Tab.Pane>
|
|
163
|
+
),
|
|
164
|
+
},
|
|
165
|
+
!!settingsTab && {
|
|
166
|
+
menuItem: intl.formatMessage(messages.settings),
|
|
167
|
+
pane: (
|
|
168
|
+
<Tab.Pane
|
|
169
|
+
key="settings"
|
|
170
|
+
className="tab-wrapper"
|
|
171
|
+
id="sidebar-settings"
|
|
172
|
+
>
|
|
173
|
+
<Icon
|
|
174
|
+
className="tab-forbidden"
|
|
175
|
+
name={forbiddenSVG}
|
|
176
|
+
size="48px"
|
|
177
|
+
/>
|
|
178
|
+
</Tab.Pane>
|
|
179
|
+
),
|
|
180
|
+
},
|
|
181
|
+
].filter((tab) => tab)}
|
|
182
|
+
/>
|
|
183
|
+
</div>
|
|
184
|
+
<div className={expanded ? 'pusher expanded' : 'pusher'} />
|
|
185
|
+
</Fragment>
|
|
186
|
+
);
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
Sidebar.propTypes = {
|
|
190
|
+
documentTab: PropTypes.bool,
|
|
191
|
+
blockTab: PropTypes.bool,
|
|
192
|
+
settingsTab: PropTypes.bool,
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
Sidebar.defaultProps = {
|
|
196
|
+
documentTab: true,
|
|
197
|
+
blockTab: true,
|
|
198
|
+
settingsTab: false,
|
|
199
|
+
};
|
|
270
200
|
|
|
271
|
-
export default compose(
|
|
272
|
-
injectIntl,
|
|
273
|
-
withCookies,
|
|
274
|
-
connect(
|
|
275
|
-
(state) => ({
|
|
276
|
-
tab: state.sidebar.tab,
|
|
277
|
-
toolbarExpanded: state.toolbar.expanded,
|
|
278
|
-
type: state.schema?.schema?.title,
|
|
279
|
-
}),
|
|
280
|
-
{ setSidebarTab },
|
|
281
|
-
),
|
|
282
|
-
)(Sidebar);
|
|
201
|
+
export default compose(withCookies)(Sidebar);
|
|
@@ -86,8 +86,7 @@ const messages = defineMessages({
|
|
|
86
86
|
defaultMessage: 'Changes applied',
|
|
87
87
|
},
|
|
88
88
|
workingCopyAppliedBy: {
|
|
89
|
-
id:
|
|
90
|
-
'Made by {creator} on {date}. This is not a working copy anymore, but the main content.',
|
|
89
|
+
id: 'Made by {creator} on {date}. This is not a working copy anymore, but the main content.',
|
|
91
90
|
defaultMessage:
|
|
92
91
|
'Made by {creator} on {date}. This is not a working copy anymore, but the main content.',
|
|
93
92
|
},
|
|
@@ -322,16 +321,17 @@ class More extends Component {
|
|
|
322
321
|
</li>
|
|
323
322
|
)}
|
|
324
323
|
</Plug>
|
|
325
|
-
{path !== '' &&
|
|
326
|
-
|
|
327
|
-
<
|
|
328
|
-
<
|
|
329
|
-
{
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
324
|
+
{path !== '' &&
|
|
325
|
+
!config.settings.excludeLinksAndReferencesMenuItem && (
|
|
326
|
+
<Plug pluggable="toolbar-more-menu-list" id="linkstoitems">
|
|
327
|
+
<li>
|
|
328
|
+
<Link to={`${path}/links-to-item`}>
|
|
329
|
+
{this.props.intl.formatMessage(messages.linkstoitem)}
|
|
330
|
+
<Icon name={rightArrowSVG} size="24px" />
|
|
331
|
+
</Link>
|
|
332
|
+
</li>
|
|
333
|
+
</Plug>
|
|
334
|
+
)}
|
|
335
335
|
<Plug pluggable="toolbar-more-menu-list" id="rules">
|
|
336
336
|
{rulesAction && (
|
|
337
337
|
<li>
|