@plone/volto 17.0.0-alpha.1 → 17.0.0-alpha.10

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 (179) hide show
  1. package/.yarn/install-state.gz +0 -0
  2. package/CHANGELOG.md +396 -16
  3. package/CONTRIBUTING.md +1 -1
  4. package/README.md +12 -15
  5. package/addon-registry.js +34 -0
  6. package/create-theme-addons-loader.js +79 -0
  7. package/cypress/support/commands.js +25 -0
  8. package/locales/ca/LC_MESSAGES/volto.po +187 -6
  9. package/locales/ca.json +1 -1
  10. package/locales/de/LC_MESSAGES/volto.po +206 -25
  11. package/locales/de.json +1 -1
  12. package/locales/en/LC_MESSAGES/volto.po +186 -5
  13. package/locales/en.json +1 -1
  14. package/locales/es/LC_MESSAGES/volto.po +187 -6
  15. package/locales/es.json +1 -1
  16. package/locales/eu/LC_MESSAGES/volto.po +187 -6
  17. package/locales/eu.json +1 -1
  18. package/locales/fi/LC_MESSAGES/volto.po +4792 -0
  19. package/locales/fi.json +1 -1
  20. package/locales/fr/LC_MESSAGES/volto.po +187 -6
  21. package/locales/fr.json +1 -1
  22. package/locales/it/LC_MESSAGES/volto.po +187 -6
  23. package/locales/it.json +1 -1
  24. package/locales/ja/LC_MESSAGES/volto.po +187 -6
  25. package/locales/ja.json +1 -1
  26. package/locales/nl/LC_MESSAGES/volto.po +842 -649
  27. package/locales/nl.json +1 -1
  28. package/locales/pt/LC_MESSAGES/volto.po +187 -6
  29. package/locales/pt.json +1 -1
  30. package/locales/pt_BR/LC_MESSAGES/volto.po +195 -14
  31. package/locales/pt_BR.json +1 -1
  32. package/locales/ro/LC_MESSAGES/volto.po +187 -6
  33. package/locales/ro.json +1 -1
  34. package/locales/volto.pot +187 -6
  35. package/locales/zh_CN/LC_MESSAGES/volto.po +187 -6
  36. package/locales/zh_CN.json +1 -1
  37. package/package-why.json +0 -1
  38. package/package.json +9 -8
  39. package/packages/volto-slate/build/messages/src/blocks/Table/TableBlockEdit.json +1 -1
  40. package/packages/volto-slate/build/messages/src/blocks/Text/DefaultTextBlockEditor.json +1 -1
  41. package/packages/volto-slate/build/messages/src/blocks/Text/DetachedTextBlockEditor.json +1 -1
  42. package/packages/volto-slate/build/messages/src/blocks/Text/SlashMenu.json +1 -1
  43. package/packages/volto-slate/build/messages/src/editor/plugins/AdvancedLink/index.json +1 -1
  44. package/packages/volto-slate/build/messages/src/editor/plugins/Link/index.json +1 -1
  45. package/packages/volto-slate/build/messages/src/editor/plugins/Table/index.json +1 -1
  46. package/packages/volto-slate/build/messages/src/elementEditor/messages.json +1 -1
  47. package/packages/volto-slate/build/messages/src/widgets/HtmlSlateWidget.json +1 -1
  48. package/packages/volto-slate/build/messages/src/widgets/RichTextWidgetView.json +1 -1
  49. package/packages/volto-slate/package.json +1 -1
  50. package/packages/volto-slate/src/blocks/Table/index.js +2 -0
  51. package/packages/volto-slate/src/blocks/Text/SlashMenu.jsx +4 -3
  52. package/packages/volto-slate/src/editor/deserialize.js +0 -1
  53. package/packages/volto-slate/src/editor/plugins/StyleMenu/StyleMenu.jsx +14 -4
  54. package/razzle.config.js +28 -0
  55. package/src/actions/index.js +6 -0
  56. package/src/actions/language/language.js +9 -8
  57. package/src/actions/querystringsearch/querystringsearch.js +20 -14
  58. package/src/actions/relations/rebuild.js +25 -0
  59. package/src/actions/relations/relations.js +86 -0
  60. package/src/actions/relations/relations.test.js +15 -0
  61. package/src/components/index.js +1 -0
  62. package/src/components/manage/Add/Add.jsx +2 -2
  63. package/src/components/manage/BlockChooser/BlockChooser.jsx +14 -5
  64. package/src/components/manage/BlockChooser/BlockChooser.test.jsx +5 -0
  65. package/src/components/manage/Blocks/Listing/Edit.jsx +0 -19
  66. package/src/components/manage/Blocks/Listing/ListingBody.jsx +77 -61
  67. package/src/components/manage/Blocks/Listing/View.jsx +0 -4
  68. package/src/components/manage/Blocks/Listing/getAsyncData.js +10 -2
  69. package/src/components/manage/Blocks/Listing/withQuerystringResults.jsx +18 -13
  70. package/src/components/manage/Blocks/Search/SearchBlockEdit.jsx +5 -4
  71. package/src/components/manage/Blocks/Search/SearchBlockView.jsx +2 -1
  72. package/src/components/manage/Blocks/Search/components/DateRangeFacet.jsx +4 -1
  73. package/src/components/manage/Blocks/Search/components/Facets.jsx +58 -2
  74. package/src/components/manage/Blocks/Search/hocs/withSearch.jsx +24 -11
  75. package/src/components/manage/Blocks/Search/layout/LeftColumnFacets.jsx +17 -5
  76. package/src/components/manage/Blocks/Search/layout/RightColumnFacets.jsx +17 -5
  77. package/src/components/manage/Blocks/Search/layout/TopSideFacets.jsx +21 -5
  78. package/src/components/manage/Blocks/Search/schema.js +16 -1
  79. package/src/components/manage/Blocks/ToC/Edit.jsx +1 -0
  80. package/src/components/manage/Contents/Contents.jsx +69 -33
  81. package/src/components/manage/Contents/ContentsItem.jsx +6 -0
  82. package/src/components/manage/Controlpanels/AddonsControlpanel.jsx +3 -3
  83. package/src/components/manage/Controlpanels/Controlpanels.jsx +199 -224
  84. package/src/components/manage/Controlpanels/Controlpanels.test.jsx +46 -7
  85. package/src/components/manage/Controlpanels/Relations/BrokenRelations.jsx +66 -0
  86. package/src/components/manage/Controlpanels/Relations/Relations.jsx +114 -0
  87. package/src/components/manage/Controlpanels/Relations/RelationsListing.jsx +479 -0
  88. package/src/components/manage/Controlpanels/Relations/RelationsMatrix.jsx +531 -0
  89. package/src/components/manage/Controlpanels/Users/UserGroupMembershipControlPanel.jsx +3 -3
  90. package/src/components/manage/Controlpanels/Users/UserGroupMembershipListing.jsx +51 -82
  91. package/src/components/manage/Controlpanels/Users/UserGroupMembershipMatrix.jsx +79 -75
  92. package/src/components/manage/DragDropList/DragDropList.jsx +63 -42
  93. package/src/components/manage/Form/BlocksToolbar.jsx +5 -1
  94. package/src/components/manage/Form/Form.jsx +11 -5
  95. package/src/components/manage/Form/InlineForm.jsx +39 -9
  96. package/src/components/manage/Form/InlineFormState.js +8 -0
  97. package/src/components/manage/Multilingual/CreateTranslation.jsx +2 -2
  98. package/src/components/manage/Multilingual/TranslationObject.jsx +4 -3
  99. package/src/components/manage/Preferences/ChangePassword.jsx +2 -2
  100. package/src/components/manage/Preferences/PersonalPreferences.jsx +2 -2
  101. package/src/components/manage/Toast/Toast.jsx +1 -1
  102. package/src/components/manage/Toolbar/Types.jsx +2 -2
  103. package/src/components/manage/Widgets/DatetimeWidget.jsx +9 -5
  104. package/src/components/manage/Widgets/ObjectListWidget.jsx +3 -8
  105. package/src/components/manage/Widgets/RecurrenceWidget/ByDayField.jsx +2 -1
  106. package/src/components/manage/Widgets/RecurrenceWidget/MonthOfTheYearField.jsx +2 -1
  107. package/src/components/manage/Widgets/RecurrenceWidget/Occurences.jsx +2 -1
  108. package/src/components/manage/Widgets/RecurrenceWidget/RecurrenceWidget.jsx +7 -2
  109. package/src/components/manage/Widgets/RecurrenceWidget/WeekdayOfTheMonthField.jsx +2 -1
  110. package/src/components/manage/Widgets/SelectUtils.js +1 -1
  111. package/src/components/manage/Widgets/SelectWidget.jsx +1 -1
  112. package/src/components/theme/Footer/Footer.jsx +2 -13
  113. package/src/components/theme/Header/Header.jsx +37 -63
  114. package/src/components/theme/Header/Header.test.jsx +18 -0
  115. package/src/components/theme/Icon/Icon.jsx +2 -2
  116. package/src/components/theme/LanguageSelector/LanguageSelector.js +8 -3
  117. package/src/components/theme/Login/Login.jsx +1 -0
  118. package/src/components/theme/Logo/Logo.jsx +2 -1
  119. package/src/components/theme/MultilingualRedirector/MultilingualRedirector.jsx +2 -2
  120. package/src/components/theme/Navigation/NavItem.jsx +4 -2
  121. package/src/components/theme/NotFound/NotFound.jsx +55 -41
  122. package/src/components/theme/PasswordReset/PasswordReset.jsx +7 -4
  123. package/src/components/theme/PasswordReset/RequestPasswordReset.jsx +1 -1
  124. package/src/components/theme/Sitemap/Sitemap.jsx +5 -3
  125. package/src/components/theme/View/DefaultView.jsx +1 -1
  126. package/src/components/theme/View/EventDatesInfo.jsx +2 -1
  127. package/src/components/theme/View/RenderBlocks.jsx +7 -1
  128. package/src/components/theme/Widgets/DateWidget.jsx +2 -1
  129. package/src/components/theme/Widgets/DatetimeWidget.jsx +2 -1
  130. package/src/components/theme/Widgets/RelationsWidget.jsx +13 -11
  131. package/src/config/ControlPanels.js +2 -0
  132. package/src/config/Widgets.jsx +1 -0
  133. package/src/config/index.js +2 -0
  134. package/src/constants/ActionTypes.js +4 -0
  135. package/src/constants/Languages.js +8 -4
  136. package/src/express-middleware/sitemap.js +36 -4
  137. package/src/helpers/Api/Api.js +1 -1
  138. package/src/helpers/FormValidation/FormValidation.js +11 -2
  139. package/src/helpers/FormValidation/FormValidation.test.js +73 -0
  140. package/src/helpers/Html/Html.jsx +3 -1
  141. package/src/helpers/Html/Html.test.jsx +5 -0
  142. package/src/helpers/MessageLabels/MessageLabels.js +72 -0
  143. package/src/helpers/Robots/Robots.js +24 -6
  144. package/src/helpers/Sitemap/Sitemap.js +44 -2
  145. package/src/helpers/Url/Url.js +27 -6
  146. package/src/helpers/Url/Url.test.js +26 -0
  147. package/src/helpers/Utils/Utils.js +38 -13
  148. package/src/helpers/Utils/Utils.test.js +4 -4
  149. package/src/helpers/index.js +7 -2
  150. package/src/hooks/userSession/useToken.js +5 -0
  151. package/src/middleware/Api.test.js +54 -0
  152. package/src/middleware/api.js +8 -4
  153. package/src/reducers/actions/actions.js +1 -1
  154. package/src/reducers/breadcrumbs/breadcrumbs.js +1 -1
  155. package/src/reducers/index.js +2 -0
  156. package/src/reducers/navigation/navigation.js +1 -1
  157. package/src/reducers/relations/relations.js +173 -0
  158. package/src/reducers/types/types.js +1 -1
  159. package/src/routes.js +5 -0
  160. package/src/server.jsx +28 -23
  161. package/test-setup-config.js +1 -0
  162. package/theme/themes/pastanaga/extras/contents.less +1 -0
  163. package/theme/themes/pastanaga/extras/main.less +80 -1
  164. package/theme/themes/pastanaga/extras/search.less +6 -0
  165. package/theme/themes/pastanaga/extras/sidebar.less +4 -0
  166. package/theme/themes/pastanaga/extras/userscontrolpanel.less +99 -76
  167. package/.changelog.draft +0 -28
  168. package/.editorconfig +0 -36
  169. package/.storybook/main.js +0 -127
  170. package/.storybook/manager.js +0 -15
  171. package/.storybook/preview.js +0 -21
  172. package/.storybook/static/previewImage.svg +0 -48
  173. package/.yarnrc.yml +0 -5
  174. package/jsdoc.json +0 -16
  175. package/netlify.toml +0 -5
  176. package/pyvenv.cfg +0 -3
  177. package/share/man/man1/ttx.1 +0 -225
  178. package/src/components/theme/Header/Header.md +0 -27
  179. package/towncrier.toml +0 -33
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Relations reducer.
3
+ * @module reducers/relations/relations
4
+ */
5
+
6
+ import {
7
+ CREATE_RELATIONS,
8
+ DELETE_RELATIONS,
9
+ LIST_RELATIONS,
10
+ REBUILD_RELATIONS,
11
+ } from '@plone/volto/constants/ActionTypes';
12
+
13
+ const initialState = {
14
+ relations: null,
15
+ stats: null,
16
+ create: {
17
+ error: null,
18
+ loaded: false,
19
+ loading: false,
20
+ },
21
+ delete: {
22
+ error: null,
23
+ loaded: false,
24
+ loading: false,
25
+ },
26
+ list: {
27
+ error: null,
28
+ loaded: false,
29
+ loading: false,
30
+ },
31
+ rebuild: {
32
+ error: null,
33
+ loaded: false,
34
+ loading: false,
35
+ },
36
+ subrequests: {},
37
+ };
38
+
39
+ /**
40
+ * Get request key
41
+ * @function getRequestKey
42
+ * @param {string} actionType Action type.
43
+ * @returns {string} Request key.
44
+ */
45
+ function getRequestKey(actionType) {
46
+ return actionType.split('_')[0].toLowerCase();
47
+ }
48
+
49
+ /**
50
+ * Relations reducer.
51
+ * @function relations
52
+ * @param {Object} state Current state.
53
+ * @param {Object} action Action to be handled.
54
+ * @returns {Object} New state.
55
+ */
56
+ export default function relations(state = initialState, action = {}) {
57
+ switch (action.type) {
58
+ case `${CREATE_RELATIONS}_PENDING`:
59
+ case `${DELETE_RELATIONS}_PENDING`:
60
+ case `${REBUILD_RELATIONS}_PENDING`:
61
+ return {
62
+ ...state,
63
+ [getRequestKey(action.type)]: {
64
+ loading: true,
65
+ loaded: false,
66
+ error: null,
67
+ },
68
+ };
69
+ case `${LIST_RELATIONS}_PENDING`:
70
+ return action.subrequest
71
+ ? {
72
+ ...state,
73
+ subrequests: {
74
+ ...state.subrequests,
75
+ [action.subrequest]: {
76
+ ...(state.subrequests[action.subrequest] || {
77
+ relations: null,
78
+ stats: null,
79
+ }),
80
+ loaded: false,
81
+ loading: true,
82
+ error: null,
83
+ },
84
+ },
85
+ }
86
+ : {
87
+ ...state,
88
+ [getRequestKey(action.type)]: {
89
+ loading: true,
90
+ loaded: false,
91
+ error: null,
92
+ },
93
+ };
94
+ case `${LIST_RELATIONS}_SUCCESS`:
95
+ return action.subrequest
96
+ ? {
97
+ ...state,
98
+ subrequests: {
99
+ ...state.subrequests,
100
+ [action.subrequest]: {
101
+ loading: false,
102
+ loaded: true,
103
+ error: null,
104
+ relations: action.result.relations
105
+ ? action.result.relations
106
+ : state.relations,
107
+ stats: null,
108
+ },
109
+ },
110
+ }
111
+ : {
112
+ ...state,
113
+ relations: action.result.relations
114
+ ? action.result.relations
115
+ : state.relations,
116
+ stats: action.result.stats ? action.result : state.stats,
117
+ [getRequestKey(action.type)]: {
118
+ loading: false,
119
+ loaded: true,
120
+ error: null,
121
+ },
122
+ };
123
+ case `${CREATE_RELATIONS}_SUCCESS`:
124
+ case `${DELETE_RELATIONS}_SUCCESS`:
125
+ case `${REBUILD_RELATIONS}_SUCCESS`:
126
+ return {
127
+ ...state,
128
+ [getRequestKey(action.type)]: {
129
+ loading: false,
130
+ loaded: true,
131
+ error: null,
132
+ },
133
+ };
134
+ case `${LIST_RELATIONS}_FAIL`:
135
+ return action.subrequest
136
+ ? {
137
+ ...state,
138
+ subrequests: {
139
+ ...state.subrequests,
140
+ [action.subrequest]: {
141
+ relations: null,
142
+ stats: null,
143
+ loading: false,
144
+ loaded: false,
145
+ error: action.error,
146
+ },
147
+ },
148
+ }
149
+ : {
150
+ ...state,
151
+ relations: null,
152
+ stats: null,
153
+ [getRequestKey(action.type)]: {
154
+ loading: false,
155
+ loaded: false,
156
+ error: action.error,
157
+ },
158
+ };
159
+ case `${CREATE_RELATIONS}_FAIL`:
160
+ case `${DELETE_RELATIONS}_FAIL`:
161
+ case `${REBUILD_RELATIONS}_FAIL`:
162
+ return {
163
+ ...state,
164
+ [getRequestKey(action.type)]: {
165
+ loading: false,
166
+ loaded: false,
167
+ error: action.error,
168
+ },
169
+ };
170
+ default:
171
+ return state;
172
+ }
173
+ }
@@ -39,7 +39,7 @@ export default function types(state = initialState, action = {}) {
39
39
  'types',
40
40
  getBaseUrl(flattenToAppURL(action.result['@id'])),
41
41
  );
42
- if (hasExpander) {
42
+ if (hasExpander && !action.subrequest) {
43
43
  return {
44
44
  ...state,
45
45
  error: null,
package/src/routes.js CHANGED
@@ -29,6 +29,7 @@ import {
29
29
  ModerateComments,
30
30
  NotFound,
31
31
  PasswordReset,
32
+ Relations,
32
33
  Register,
33
34
  Rules,
34
35
  RequestPasswordReset,
@@ -224,6 +225,10 @@ export const defaultRoutes = [
224
225
  path: '/controlpanel/rules',
225
226
  component: RulesControlpanel,
226
227
  },
228
+ {
229
+ path: '/controlpanel/relations',
230
+ component: Relations,
231
+ },
227
232
  {
228
233
  path: '/controlpanel/:id',
229
234
  component: Controlpanel,
package/src/server.jsx CHANGED
@@ -26,8 +26,9 @@ import {
26
26
  Html,
27
27
  Api,
28
28
  persistAuthToken,
29
- normalizeLanguageName,
30
- toLangUnderscoreRegion,
29
+ toBackendLang,
30
+ toGettextLang,
31
+ toReactIntlLang,
31
32
  } from '@plone/volto/helpers';
32
33
  import { changeLanguage } from '@plone/volto/actions';
33
34
 
@@ -44,9 +45,9 @@ let locales = {};
44
45
 
45
46
  if (config.settings) {
46
47
  config.settings.supportedLanguages.forEach((lang) => {
47
- const langFileName = normalizeLanguageName(lang);
48
+ const langFileName = toGettextLang(lang);
48
49
  import('@root/../locales/' + langFileName + '.json').then((locale) => {
49
- locales = { ...locales, [lang]: locale.default };
50
+ locales = { ...locales, [toReactIntlLang(lang)]: locale.default };
50
51
  });
51
52
  });
52
53
  }
@@ -101,13 +102,15 @@ server.use(function (err, req, res, next) {
101
102
  function setupServer(req, res, next) {
102
103
  const api = new Api(req);
103
104
 
104
- const lang = new locale.Locales(
105
- req.universalCookies.get('I18N_LANGUAGE') ||
106
- config.settings.defaultLanguage ||
107
- req.headers['accept-language'],
108
- )
109
- .best(supported)
110
- .toString();
105
+ const lang = toReactIntlLang(
106
+ new locale.Locales(
107
+ req.universalCookies.get('I18N_LANGUAGE') ||
108
+ config.settings.defaultLanguage ||
109
+ req.headers['accept-language'],
110
+ )
111
+ .best(supported)
112
+ .toString(),
113
+ );
111
114
 
112
115
  // Minimum initial state for the fake Redux store instance
113
116
  const initialState = {
@@ -176,13 +179,15 @@ server.get('/*', (req, res) => {
176
179
 
177
180
  const browserdetect = detect(req.headers['user-agent']);
178
181
 
179
- const lang = new locale.Locales(
180
- req.universalCookies.get('I18N_LANGUAGE') ||
181
- config.settings.defaultLanguage ||
182
- req.headers['accept-language'],
183
- )
184
- .best(supported)
185
- .toString();
182
+ const lang = toReactIntlLang(
183
+ new locale.Locales(
184
+ req.universalCookies.get('I18N_LANGUAGE') ||
185
+ config.settings.defaultLanguage ||
186
+ req.headers['accept-language'],
187
+ )
188
+ .best(supported)
189
+ .toString(),
190
+ );
186
191
 
187
192
  const authToken = req.universalCookies.get('auth_token');
188
193
  const initialState = {
@@ -217,7 +222,7 @@ server.get('/*', (req, res) => {
217
222
 
218
223
  loadOnServer({ store, location, routes, api })
219
224
  .then(() => {
220
- const cookie_lang =
225
+ const initialLang =
221
226
  req.universalCookies.get('I18N_LANGUAGE') ||
222
227
  config.settings.defaultLanguage ||
223
228
  req.headers['accept-language'];
@@ -230,15 +235,15 @@ server.get('/*', (req, res) => {
230
235
  // present the language token field, for some reason. In this case, we
231
236
  // should follow the cookie rather then switching the language
232
237
  const contentLang = store.getState().content.get?.error
233
- ? cookie_lang
238
+ ? initialLang
234
239
  : store.getState().content.data?.language?.token ||
235
240
  config.settings.defaultLanguage;
236
241
 
237
- if (cookie_lang !== contentLang) {
238
- const newLocale = toLangUnderscoreRegion(
242
+ if (toBackendLang(initialLang) !== contentLang) {
243
+ const newLang = toReactIntlLang(
239
244
  new locale.Locales(contentLang).best(supported).toString(),
240
245
  );
241
- store.dispatch(changeLanguage(newLocale, locales[newLocale], req));
246
+ store.dispatch(changeLanguage(newLang, locales[newLang], req));
242
247
  }
243
248
 
244
249
  const context = {};
@@ -82,6 +82,7 @@ config.set('settings', {
82
82
  viewableInBrowserObjects: [],
83
83
  styleClassNameConverters,
84
84
  styleClassNameExtenders,
85
+ blockSettingsTabFieldsetsInitialStateOpen: true,
85
86
  });
86
87
  config.set('blocks', {
87
88
  blocksConfig: {
@@ -38,6 +38,7 @@
38
38
  .ui.menu.top-menu {
39
39
  padding: 10px 0;
40
40
  border-bottom: 4px solid #c7d5d8;
41
+ overflow-x: scroll;
41
42
  }
42
43
 
43
44
  .ui.menu .menu.top-menu-menu {
@@ -8,7 +8,6 @@
8
8
  @import (multiple) '../../theme.config';
9
9
 
10
10
  // Extras (third party libs)
11
- @import (less) '~hamburgers/dist/hamburgers.css';
12
11
  @import (less) '~react-toastify/dist/ReactToastify.css';
13
12
 
14
13
  // Mixins
@@ -494,6 +493,86 @@ fieldset.invisible {
494
493
  .hamburger-wrapper {
495
494
  position: relative;
496
495
  z-index: 5;
496
+ width: 70px;
497
+ height: 59px;
498
+ padding: 15px 15px;
499
+
500
+ .hamburger {
501
+ position: relative;
502
+ width: 40px;
503
+ height: 24px;
504
+ padding: 0;
505
+ border: none;
506
+ background-color: transparent;
507
+ cursor: pointer;
508
+ transition: 0.3s ease-in-out;
509
+ }
510
+
511
+ .hamburger::after {
512
+ position: absolute;
513
+ top: 0;
514
+ left: 0;
515
+ display: inline-block;
516
+ width: 100%;
517
+ height: 4px;
518
+ background-color: #000;
519
+ border-radius: 4px;
520
+ content: '';
521
+ transition: 0.3s ease-in-out;
522
+ }
523
+
524
+ .hamburger::before {
525
+ position: absolute;
526
+ top: 20px;
527
+ left: 0;
528
+ display: inline-block;
529
+ width: 100%;
530
+ height: 4px;
531
+ background-color: #000;
532
+ border-radius: 4px;
533
+ content: '';
534
+ transition: 0.3s ease-in-out;
535
+ }
536
+
537
+ .hamburger-inner {
538
+ position: absolute;
539
+ top: 10px;
540
+ left: 0;
541
+ display: inline-block;
542
+ width: 100%;
543
+ height: 4px;
544
+ border-radius: 4px;
545
+ transition: 0.3s ease-in-out;
546
+ }
547
+
548
+ .hamburger.is-active::after,
549
+ .hamburger.is-active::before {
550
+ top: 10px;
551
+ left: 50%;
552
+ width: 0%;
553
+ }
554
+
555
+ .hamburger-inner::after,
556
+ .hamburger-inner::before {
557
+ position: absolute;
558
+ top: 0;
559
+ left: 0;
560
+ display: block;
561
+ width: 100%;
562
+ height: 4px;
563
+ background-color: #000;
564
+ border-radius: 4px;
565
+ content: '';
566
+ transition: 0.3s ease-in-out;
567
+ }
568
+
569
+ .hamburger.is-active .hamburger-inner::after {
570
+ transform: rotate(45deg);
571
+ }
572
+
573
+ .hamburger.is-active .hamburger-inner::before {
574
+ transform: rotate(-45deg);
575
+ }
497
576
  }
498
577
 
499
578
  .mobile-menu {
@@ -75,3 +75,9 @@
75
75
  text-align: center;
76
76
  }
77
77
  }
78
+
79
+ .block.search {
80
+ .advanced-facet-hidden {
81
+ display: none !important;
82
+ }
83
+ }
@@ -489,3 +489,7 @@
489
489
  margin-left: 5px;
490
490
  }
491
491
  }
492
+
493
+ .formtabs {
494
+ flex-wrap: wrap;
495
+ }
@@ -27,45 +27,48 @@
27
27
  }
28
28
 
29
29
  .controlpanel_matrix {
30
- display: grid;
31
- grid-gap: 2rem;
32
- grid-template-columns: 5fr 5fr 2fr;
30
+ .ui.action.input button.ui.icon.button {
31
+ background-color: transparent;
32
+ }
33
33
 
34
34
  .controlpanel_select_relation {
35
- grid-column: 1;
36
- grid-row: 1;
35
+ margin-bottom: 2rem;
37
36
  }
38
37
 
39
- .controlpanel_search_y {
40
- grid-column: 1;
41
- grid-row: 1;
38
+ .controlpanel_search_wrapper {
39
+ display: flex;
40
+ flex-wrap: wrap;
41
+ row-gap: 3rem;
42
+ column-gap: 5rem;
43
+ justify-content: flex-start;
44
+ margin-bottom: 2rem;
45
+ & > * {
46
+ min-width: 30rem;
47
+ }
42
48
  }
43
49
 
44
- .controlpanel_search_x {
45
- grid-column: 2;
46
- grid-row: 1;
50
+ .add_potential_sources .field,
51
+ .add_potential_targets .field,
52
+ .controlpanel_search_x .field,
53
+ .controlpanel_search_y .field {
54
+ display: flex;
47
55
  }
48
56
 
49
- .controlpanel_filter {
57
+ .controlpanel_listing_wrapper {
50
58
  display: flex;
51
- flex-direction: column;
52
- grid-column: 3;
53
- grid-row: 2;
54
-
55
- .ui.checkbox {
56
- margin-top: 0.5rem;
59
+ gap: 1rem;
60
+ justify-content: flex-end;
61
+ flex-wrap: wrap;
62
+ flex-direction: row-reverse;
63
+ margin-bottom: 2rem;
64
+ .administration_matrix {
65
+ flex-grow: 2;
66
+ min-width: 30rem;
67
+ }
68
+ .controlpanel_filter {
69
+ display: flex;
70
+ flex-direction: column;
57
71
  }
58
- }
59
-
60
- .administration_matrix {
61
- display: grid;
62
- height: 60rem;
63
- padding-right: 0;
64
- grid-column-end: 3;
65
- grid-column-start: 1;
66
- grid-row: 2;
67
- grid-template-rows: 14rem 1fr;
68
- overflow-x: scroll;
69
72
  }
70
73
  }
71
74
 
@@ -75,71 +78,91 @@
75
78
  }
76
79
 
77
80
  .label-options {
81
+ // display: flex;
82
+ // justify-content: start;
78
83
  position: sticky;
79
- z-index: 1000;
80
84
  top: 0;
81
- left: 0;
82
- display: flex;
83
- height: 14rem;
84
- align-items: baseline;
85
- justify-content: flex-end;
86
- padding-right: 2rem;
85
+ z-index: 100;
87
86
  .stickyLabelLayerBackground();
88
87
 
89
- .label-options-label {
88
+ .target-labels {
89
+ z-index: 2;
90
+ top: 0;
91
+ left: 0;
90
92
  display: flex;
91
- align-items: flex-end;
93
+ height: 14rem;
94
+ align-items: baseline;
95
+ // justify-content: flex-end;
96
+ // padding-right: 5rem;
97
+ @media only screen and (max-width: (@largestMobileScreen)) {
98
+ flex-direction: column;
99
+ }
100
+ & > div:first-child {
101
+ min-width: 15rem;
102
+ }
103
+ & > div:nth-child(2) {
104
+ flex-grow: 2;
105
+ display: flex;
106
+ }
92
107
 
93
- &.inclined {
94
- width: 3.5rem;
95
- height: 13rem;
96
- white-space: nowrap;
108
+ .label-options-label {
109
+ display: flex;
110
+ align-items: flex-end;
111
+
112
+ &.inclined {
113
+ width: 3.5rem;
114
+ height: 13rem;
115
+ white-space: nowrap;
97
116
 
98
- div {
99
- transform: rotate(315deg);
100
- transform-origin: top left;
117
+ div {
118
+ transform: rotate(315deg);
119
+ transform-origin: top left;
120
+ }
101
121
  }
102
122
  }
103
123
  }
104
124
  }
105
125
 
106
- .items {
107
- padding-top: 0.5rem;
108
-
109
- .listing-row {
110
- padding-right: 2rem;
111
-
112
- &:nth-child(2n) {
113
- background-color: rgba(0, 0, 50, 0.05);
126
+ .listing-row {
127
+ &:nth-child(2n) {
128
+ background-color: rgba(0, 0, 50, 0.05);
129
+ }
130
+ .listing-item {
131
+ display: flex;
132
+ width: 100%;
133
+ align-items: baseline;
134
+ justify-content: space-between;
135
+ padding: 0.5rem 0.1rem;
136
+ margin: 0.2rem 0;
137
+
138
+ & > div:first-child {
139
+ min-width: 15rem;
114
140
  }
141
+ .matrix_options {
142
+ flex-grow: 2;
143
+ display: flex;
144
+ flex-direction: row;
115
145
 
116
- &.selectall {
117
- margin-bottom: 1rem;
118
- }
146
+ & > div {
147
+ width: 3rem;
148
+ padding: 0.3rem 0.1rem;
149
+ margin-left: 0.5rem;
119
150
 
120
- .listing-item {
121
- display: flex;
122
- width: 100%;
123
- align-items: baseline;
124
- justify-content: space-between;
125
- padding: 0.5rem 0.1rem;
126
- margin: 0.2rem 0;
127
-
128
- .matrix_options {
129
- display: flex;
130
- flex-direction: row;
131
-
132
- & > div {
133
- width: 3rem;
134
- padding: 0.3rem 0.1rem;
135
- margin-left: 0.5rem;
136
-
137
- .ui.checkbox {
138
- margin: auto;
139
- }
151
+ .ui.checkbox {
152
+ margin: auto;
140
153
  }
141
154
  }
155
+ .ui.checkbox.toggle-target label:before {
156
+ border: 3px solid #826a6a;
157
+ }
142
158
  }
143
159
  }
144
160
  }
161
+
162
+ // Rows
163
+ .items {
164
+ .not-published {
165
+ opacity: 0.6;
166
+ }
167
+ }
145
168
  }
package/.changelog.draft DELETED
@@ -1,28 +0,0 @@
1
- ## 17.0.0-alpha.1 (2023-03-09)
2
-
3
- ### Feature
4
-
5
- - - Add directive to cache stable resources in browser or intermediate server for 365 days by default directly in the SSR Express server, static resource that could change after a new deployment for 1 minute. @mamico [#2216](https://github.com/plone/volto/issues/2216)
6
- - Use popperjs in BlockChooser, move the markup to the bottom of the body tag. @sneridagh [#4141](https://github.com/plone/volto/issues/4141)
7
- - Improvements to the dev API proxy:
8
- - Prefer RAZZLE_INTERNAL_API_PATH over RAZZLE_API_PATH as the target of the proxy.
9
- The target of the API proxy is now always logged on startup, even in production mode.
10
- - Support proxying to a backend served over https. For this configuration it
11
- might be necessary to set RAZZLE_DEV_PROXY_INSECURE=1 if the backend
12
- certificate can't be verified.
13
-
14
- [davisagli] [#4434](https://github.com/plone/volto/issues/4434)
15
-
16
- ### Bugfix
17
-
18
- - fix: newsitem and event views wrapper classNames @nzambello [#4443](https://github.com/plone/volto/issues/4443)
19
- - Fix weird GHA failure on config option not supported @sneridagh [#4466](https://github.com/plone/volto/issues/4466)
20
- - Fix history view dropdown for first entry, showing 'Revert to this version option' always @sneridagh [#4471](https://github.com/plone/volto/issues/4471)
21
- - Fix order of row of long table in edit and view mode @iFlameing [#4473](https://github.com/plone/volto/issues/4473)
22
- - Improve flaky test in autofocus Cypress tests @sneridagh [#4475](https://github.com/plone/volto/issues/4475)
23
-
24
- ### Documentation
25
-
26
- - Complete teaser docs, add new section in `Blocks`: `Core Blocks developers notes` @sneridagh [#4461](https://github.com/plone/volto/issues/4461)
27
- - Change from links to inline literals in `CHANGELOG.md` to fix linkcheckbroken. @stevepiercy [#4470](https://github.com/plone/volto/issues/4470)
28
-