@plone/volto 18.34.0 → 18.35.1

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 (203) hide show
  1. package/.release-it.json +3 -0
  2. package/CHANGELOG.md +60 -0
  3. package/locales/af/LC_MESSAGES/volto.po +35 -5
  4. package/locales/af.json +1 -1
  5. package/locales/ar/LC_MESSAGES/volto.po +35 -5
  6. package/locales/ar.json +1 -1
  7. package/locales/bg/LC_MESSAGES/volto.po +35 -5
  8. package/locales/bg.json +1 -1
  9. package/locales/bn/LC_MESSAGES/volto.po +35 -5
  10. package/locales/bn.json +1 -1
  11. package/locales/ca/LC_MESSAGES/volto.po +37 -7
  12. package/locales/ca.json +1 -1
  13. package/locales/cs/LC_MESSAGES/volto.po +35 -5
  14. package/locales/cs.json +1 -1
  15. package/locales/cy/LC_MESSAGES/volto.po +35 -5
  16. package/locales/cy.json +1 -1
  17. package/locales/da/LC_MESSAGES/volto.po +35 -5
  18. package/locales/da.json +1 -1
  19. package/locales/de/LC_MESSAGES/volto.po +39 -9
  20. package/locales/de.json +1 -1
  21. package/locales/el/LC_MESSAGES/volto.po +35 -5
  22. package/locales/el.json +1 -1
  23. package/locales/en/LC_MESSAGES/volto.po +35 -5
  24. package/locales/en.json +1 -1
  25. package/locales/en_AU/LC_MESSAGES/volto.po +35 -5
  26. package/locales/en_AU.json +1 -1
  27. package/locales/en_GB/LC_MESSAGES/volto.po +35 -5
  28. package/locales/en_GB.json +1 -1
  29. package/locales/eo/LC_MESSAGES/volto.po +35 -5
  30. package/locales/eo.json +1 -1
  31. package/locales/es/LC_MESSAGES/volto.po +36 -6
  32. package/locales/es.json +1 -1
  33. package/locales/et/LC_MESSAGES/volto.po +35 -5
  34. package/locales/et.json +1 -1
  35. package/locales/eu/LC_MESSAGES/volto.po +38 -8
  36. package/locales/eu.json +1 -1
  37. package/locales/fa/LC_MESSAGES/volto.po +35 -5
  38. package/locales/fa.json +1 -1
  39. package/locales/fi/LC_MESSAGES/volto.po +35 -5
  40. package/locales/fi.json +1 -1
  41. package/locales/fr/LC_MESSAGES/volto.po +36 -6
  42. package/locales/fr.json +1 -1
  43. package/locales/fu/LC_MESSAGES/volto.po +35 -5
  44. package/locales/fu.json +1 -1
  45. package/locales/gl/LC_MESSAGES/volto.po +35 -5
  46. package/locales/gl.json +1 -1
  47. package/locales/he/LC_MESSAGES/volto.po +35 -5
  48. package/locales/he.json +1 -1
  49. package/locales/hi/LC_MESSAGES/volto.po +38 -8
  50. package/locales/hi.json +1 -1
  51. package/locales/hr/LC_MESSAGES/volto.po +35 -5
  52. package/locales/hr.json +1 -1
  53. package/locales/hu/LC_MESSAGES/volto.po +35 -5
  54. package/locales/hu.json +1 -1
  55. package/locales/hy/LC_MESSAGES/volto.po +35 -5
  56. package/locales/hy.json +1 -1
  57. package/locales/id/LC_MESSAGES/volto.po +35 -5
  58. package/locales/id.json +1 -1
  59. package/locales/it/LC_MESSAGES/volto.po +36 -6
  60. package/locales/it.json +1 -1
  61. package/locales/ja/LC_MESSAGES/volto.po +35 -5
  62. package/locales/ja.json +1 -1
  63. package/locales/ka/LC_MESSAGES/volto.po +35 -5
  64. package/locales/ka.json +1 -1
  65. package/locales/kn/LC_MESSAGES/volto.po +35 -5
  66. package/locales/kn.json +1 -1
  67. package/locales/ko/LC_MESSAGES/volto.po +35 -5
  68. package/locales/ko.json +1 -1
  69. package/locales/lt/LC_MESSAGES/volto.po +35 -5
  70. package/locales/lt.json +1 -1
  71. package/locales/lv/LC_MESSAGES/volto.po +35 -5
  72. package/locales/lv.json +1 -1
  73. package/locales/mi/LC_MESSAGES/volto.po +35 -5
  74. package/locales/mi.json +1 -1
  75. package/locales/mk/LC_MESSAGES/volto.po +35 -5
  76. package/locales/mk.json +1 -1
  77. package/locales/my/LC_MESSAGES/volto.po +35 -5
  78. package/locales/my.json +1 -1
  79. package/locales/nb_NO/LC_MESSAGES/volto.po +35 -5
  80. package/locales/nb_NO.json +1 -1
  81. package/locales/nl/LC_MESSAGES/volto.po +36 -6
  82. package/locales/nl.json +1 -1
  83. package/locales/nn/LC_MESSAGES/volto.po +35 -5
  84. package/locales/nn.json +1 -1
  85. package/locales/pl/LC_MESSAGES/volto.po +35 -5
  86. package/locales/pl.json +1 -1
  87. package/locales/pt/LC_MESSAGES/volto.po +35 -5
  88. package/locales/pt.json +1 -1
  89. package/locales/pt_BR/LC_MESSAGES/volto.po +49 -19
  90. package/locales/pt_BR.json +1 -1
  91. package/locales/rm/LC_MESSAGES/volto.po +35 -5
  92. package/locales/rm.json +1 -1
  93. package/locales/ro/LC_MESSAGES/volto.po +36 -6
  94. package/locales/ro.json +1 -1
  95. package/locales/ru/LC_MESSAGES/volto.po +36 -6
  96. package/locales/ru.json +1 -1
  97. package/locales/sk/LC_MESSAGES/volto.po +35 -5
  98. package/locales/sk.json +1 -1
  99. package/locales/sl/LC_MESSAGES/volto.po +35 -5
  100. package/locales/sl.json +1 -1
  101. package/locales/sm/LC_MESSAGES/volto.po +35 -5
  102. package/locales/sm.json +1 -1
  103. package/locales/sq/LC_MESSAGES/volto.po +35 -5
  104. package/locales/sq.json +1 -1
  105. package/locales/sr/LC_MESSAGES/volto.po +35 -5
  106. package/locales/sr.json +1 -1
  107. package/locales/sr@cyrl/LC_MESSAGES/volto.po +35 -5
  108. package/locales/sr@cyrl.json +1 -1
  109. package/locales/sr@latn/LC_MESSAGES/volto.po +35 -5
  110. package/locales/sr@latn.json +1 -1
  111. package/locales/sv/LC_MESSAGES/volto.po +35 -5
  112. package/locales/sv.json +1 -1
  113. package/locales/ta/LC_MESSAGES/volto.po +36 -6
  114. package/locales/ta.json +1 -1
  115. package/locales/te/LC_MESSAGES/volto.po +35 -5
  116. package/locales/te.json +1 -1
  117. package/locales/th/LC_MESSAGES/volto.po +35 -5
  118. package/locales/th.json +1 -1
  119. package/locales/to/LC_MESSAGES/volto.po +35 -5
  120. package/locales/to.json +1 -1
  121. package/locales/tr/LC_MESSAGES/volto.po +35 -5
  122. package/locales/tr.json +1 -1
  123. package/locales/uk/LC_MESSAGES/volto.po +35 -5
  124. package/locales/uk.json +1 -1
  125. package/locales/vi/LC_MESSAGES/volto.po +35 -5
  126. package/locales/vi.json +1 -1
  127. package/locales/volto.pot +36 -6
  128. package/locales/zh_CN/LC_MESSAGES/volto.po +35 -5
  129. package/locales/zh_CN.json +1 -1
  130. package/locales/zh_Hant/LC_MESSAGES/volto.po +35 -5
  131. package/locales/zh_Hant.json +1 -1
  132. package/locales/zh_Hant_HK/LC_MESSAGES/volto.po +35 -5
  133. package/locales/zh_Hant_HK.json +1 -1
  134. package/news/7308.fix +1 -0
  135. package/news/8084.fix +1 -0
  136. package/package.json +28 -32
  137. package/src/actions/querystringsearch/querystringsearch.js +4 -1
  138. package/src/actions/querystringsearch/querystringsearch.test.js +77 -0
  139. package/src/components/manage/BlockChooser/BlockChooser.jsx +7 -10
  140. package/src/components/manage/Blocks/Block/Edit.jsx +9 -10
  141. package/src/components/manage/Blocks/Block/Order/Item.jsx +9 -4
  142. package/src/components/manage/Blocks/Image/View.test.jsx +8 -8
  143. package/src/components/manage/Contents/ContentsBreadcrumbs.jsx +7 -6
  144. package/src/components/manage/Controlpanels/ContentTypes.jsx +9 -2
  145. package/src/components/manage/Controlpanels/Users/UsersControlpanel.jsx +58 -5
  146. package/src/components/manage/Controlpanels/Users/UsersControlpanel.ssr.test.jsx +624 -0
  147. package/src/components/manage/Controlpanels/Users/UsersControlpanel.test.jsx +8 -0
  148. package/src/components/manage/Form/Form.jsx +6 -1
  149. package/src/components/manage/Form/ModalForm.jsx +165 -87
  150. package/src/components/manage/Sidebar/ObjectBrowser.jsx +7 -0
  151. package/src/components/manage/Sidebar/ObjectBrowserBody.jsx +7 -3
  152. package/src/components/manage/Sidebar/ObjectBrowserBody.test.jsx +52 -0
  153. package/src/components/manage/Sidebar/Sidebar.jsx +1 -0
  154. package/src/components/manage/Toast/Toast.jsx +35 -1
  155. package/src/components/manage/Toast/Toast.test.jsx +8 -5
  156. package/src/components/manage/Widgets/ArrayWidget.jsx +3 -2
  157. package/src/components/manage/Widgets/FormFieldWrapper.jsx +16 -3
  158. package/src/components/manage/Widgets/ObjectBrowserWidget.jsx +1 -0
  159. package/src/components/manage/Widgets/QuerystringWidget.jsx +1 -18
  160. package/src/components/manage/Widgets/QuerystringWidget.test.jsx +45 -2
  161. package/src/components/manage/Widgets/SelectStyling.jsx +33 -1
  162. package/src/components/manage/Widgets/SelectWidget.jsx +3 -2
  163. package/src/components/manage/Widgets/TextWidget.test.jsx +44 -0
  164. package/src/components/theme/Search/Search.jsx +24 -1
  165. package/src/components/theme/Unauthorized/Unauthorized.jsx +1 -2
  166. package/src/components/theme/View/EventView.stories.jsx +89 -0
  167. package/src/components/theme/View/FileView.stories.jsx +50 -0
  168. package/src/components/theme/View/LinkView.stories.jsx +57 -0
  169. package/src/components/theme/View/ListingView.stories.jsx +70 -0
  170. package/src/components/theme/View/NewsItemView.stories.jsx +58 -0
  171. package/src/components/theme/View/RenderBlocks.stories.jsx +112 -0
  172. package/src/components/theme/View/SummaryView.stories.jsx +71 -0
  173. package/src/components/theme/View/TabularView.stories.jsx +66 -0
  174. package/src/helpers/FormValidation/validators.ts +15 -2
  175. package/src/helpers/I18n/I18n.test.ts +44 -0
  176. package/src/helpers/I18n/I18n.ts +31 -0
  177. package/src/helpers/index.js +1 -0
  178. package/src/server.jsx +7 -1
  179. package/theme/themes/pastanaga/collections/form.overrides +21 -0
  180. package/theme/themes/pastanaga/elements/button.overrides +30 -3
  181. package/theme/themes/pastanaga/extras/main.less +1 -0
  182. package/types/components/manage/Controlpanels/Relations/RelationsMatrix.d.ts +1 -1
  183. package/types/components/manage/Controlpanels/Users/UsersControlpanel.d.ts +2 -6
  184. package/types/components/manage/Controlpanels/Users/UsersControlpanel.ssr.test.d.ts +1 -0
  185. package/types/components/manage/Controlpanels/index.d.ts +1 -1
  186. package/types/components/manage/Multilingual/ManageTranslations.d.ts +1 -1
  187. package/types/components/manage/Sidebar/ObjectBrowser.d.ts +1 -1
  188. package/types/components/manage/Sidebar/ObjectBrowserBody.test.d.ts +1 -0
  189. package/types/components/manage/Widgets/ImageWidget.d.ts +1 -1
  190. package/types/components/manage/Widgets/InternalUrlWidget.d.ts +1 -1
  191. package/types/components/manage/Widgets/QuerystringWidget.d.ts +0 -4
  192. package/types/components/manage/Widgets/UrlWidget.d.ts +1 -1
  193. package/types/components/manage/Widgets/index.d.ts +2 -2
  194. package/types/components/theme/View/EventView.stories.d.ts +19 -0
  195. package/types/components/theme/View/FileView.stories.d.ts +18 -0
  196. package/types/components/theme/View/LinkView.stories.d.ts +18 -0
  197. package/types/components/theme/View/ListingView.stories.d.ts +24 -0
  198. package/types/components/theme/View/NewsItemView.stories.d.ts +23 -0
  199. package/types/components/theme/View/RenderBlocks.stories.d.ts +23 -0
  200. package/types/components/theme/View/SummaryView.stories.d.ts +23 -0
  201. package/types/components/theme/View/TabularView.stories.d.ts +23 -0
  202. package/types/helpers/I18n/I18n.d.ts +20 -0
  203. package/types/helpers/index.d.ts +1 -0
@@ -0,0 +1,71 @@
1
+ import { injectIntl } from 'react-intl';
2
+ import React from 'react';
3
+ import SummaryViewComponent from './SummaryView';
4
+ import { RealStoreWrapper as Wrapper } from '@plone/volto/storybook';
5
+
6
+ const IntlSummaryViewComponent = injectIntl(SummaryViewComponent);
7
+
8
+ function StoryComponent(args) {
9
+ return (
10
+ <Wrapper
11
+ customStore={{
12
+ intl: {
13
+ locale: 'en',
14
+ messages: {},
15
+ },
16
+ }}
17
+ >
18
+ <div id="toolbar" style={{ display: 'none' }} />
19
+ <IntlSummaryViewComponent
20
+ content={{
21
+ ...args,
22
+ }}
23
+ />
24
+ </Wrapper>
25
+ );
26
+ }
27
+
28
+ export const Default = StoryComponent.bind({});
29
+ Default.args = {
30
+ title: 'Hello World!',
31
+ description: 'Hi',
32
+ items: [
33
+ {
34
+ title: 'My item',
35
+ description: 'My item description',
36
+ url: '/item',
37
+ image: {
38
+ scales: {
39
+ thumb: {
40
+ download: 'file:///preview.jpg',
41
+ },
42
+ },
43
+ },
44
+ image_caption: 'My image caption',
45
+ '@type': 'News Item',
46
+ },
47
+ ],
48
+ };
49
+ export default {
50
+ title: 'Public components/View/SummaryView',
51
+ component: SummaryViewComponent,
52
+ decorators: [
53
+ (Story) => (
54
+ <div className="ui segment form attached" style={{ width: '900px' }}>
55
+ <Story />
56
+ </div>
57
+ ),
58
+ ],
59
+
60
+ argTypes: {
61
+ title: {
62
+ description: 'Title of the page listed',
63
+ },
64
+ description: {
65
+ description: 'Description of the page',
66
+ },
67
+ items: {
68
+ description: 'Content in the page',
69
+ },
70
+ },
71
+ };
@@ -0,0 +1,66 @@
1
+ import { injectIntl } from 'react-intl';
2
+ import React from 'react';
3
+ import TabularViewComponent from './TabularView';
4
+ import { RealStoreWrapper as Wrapper } from '@plone/volto/storybook';
5
+
6
+ const IntlTabularViewComponent = injectIntl(TabularViewComponent);
7
+
8
+ function StoryComponent(args) {
9
+ return (
10
+ <Wrapper
11
+ customStore={{
12
+ intl: {
13
+ locale: 'en',
14
+ messages: {},
15
+ },
16
+ }}
17
+ >
18
+ <div id="toolbar" style={{ display: 'none' }} />
19
+ <IntlTabularViewComponent
20
+ content={{
21
+ ...args,
22
+ }}
23
+ />
24
+ </Wrapper>
25
+ );
26
+ }
27
+
28
+ export const Default = StoryComponent.bind({});
29
+ Default.args = {
30
+ title: 'Hello World!',
31
+ description: 'Hi',
32
+ items: [
33
+ {
34
+ title: 'My item 1',
35
+ description: 'My item description 1',
36
+ url: '/item1',
37
+ },
38
+ {
39
+ title: 'My item 2',
40
+ description: 'My item description 2',
41
+ url: '/item2',
42
+ },
43
+ ],
44
+ };
45
+ export default {
46
+ title: 'Public components/View/TabularView',
47
+ component: TabularViewComponent,
48
+ decorators: [
49
+ (Story) => (
50
+ <div className="ui segment form attached" style={{ width: '900px' }}>
51
+ <Story />
52
+ </div>
53
+ ),
54
+ ],
55
+ argTypes: {
56
+ title: {
57
+ description: 'Title of the page listed',
58
+ },
59
+ description: {
60
+ description: 'Description of the page',
61
+ },
62
+ items: {
63
+ description: 'Row items of the page',
64
+ },
65
+ },
66
+ };
@@ -153,6 +153,15 @@ export const hasUniqueItemsValidator = ({
153
153
  return !isValid ? formatMessage(messages.uniqueItems) : null;
154
154
  };
155
155
 
156
+ const formatDateValue = (isoString: string) => {
157
+ const date = new Date(isoString);
158
+ if (isNaN(date.getTime())) return isoString;
159
+ return new Intl.DateTimeFormat(undefined, {
160
+ dateStyle: 'medium',
161
+ timeStyle: 'short',
162
+ }).format(date);
163
+ };
164
+
156
165
  export const startEventDateRangeValidator = ({
157
166
  value,
158
167
  field,
@@ -163,7 +172,9 @@ export const startEventDateRangeValidator = ({
163
172
  value && formData.end && new Date(value) < new Date(formData.end);
164
173
  return !isValid
165
174
  ? formatMessage(messages.startEventRange, {
166
- endDateValueOrEndFieldName: formData.end || 'end',
175
+ endDateValueOrEndFieldName: formData.end
176
+ ? formatDateValue(formData.end)
177
+ : 'end',
167
178
  })
168
179
  : null;
169
180
  };
@@ -178,7 +189,9 @@ export const endEventDateRangeValidator = ({
178
189
  value && formData.start && new Date(value) > new Date(formData.start);
179
190
  return !isValid
180
191
  ? formatMessage(messages.endEventRange, {
181
- startDateValueOrStartFieldName: formData.start || 'start',
192
+ startDateValueOrStartFieldName: formData.start
193
+ ? formatDateValue(formData.start)
194
+ : 'start',
182
195
  })
183
196
  : null;
184
197
  };
@@ -0,0 +1,44 @@
1
+ import { createIntl, createIntlCache } from 'react-intl';
2
+ import type { IntlShape } from 'react-intl';
3
+ import { formatMessageWithFallback } from './I18n';
4
+
5
+ const buildIntl = (
6
+ locale: string,
7
+ messages: Record<string, string>,
8
+ ): IntlShape => createIntl({ locale, messages }, createIntlCache());
9
+
10
+ describe('formatMessageWithFallback', () => {
11
+ it('returns the translated string when the locale catalog has an entry', () => {
12
+ const intl = buildIntl('pt-BR', { Image: 'Imagem' });
13
+ expect(formatMessageWithFallback(intl, 'Image')).toBe('Imagem');
14
+ });
15
+
16
+ it('falls back to the input message when no translation is registered', () => {
17
+ const intl = buildIntl('pt-BR', {});
18
+ expect(formatMessageWithFallback(intl, 'Image')).toBe('Image');
19
+ });
20
+
21
+ it('returns undefined unchanged', () => {
22
+ const intl = buildIntl('en', {});
23
+ expect(formatMessageWithFallback(intl, undefined)).toBeUndefined();
24
+ });
25
+
26
+ it('returns null unchanged', () => {
27
+ const intl = buildIntl('en', {});
28
+ expect(formatMessageWithFallback(intl, null)).toBeNull();
29
+ });
30
+
31
+ it('returns an empty string unchanged', () => {
32
+ const intl = buildIntl('en', {});
33
+ expect(formatMessageWithFallback(intl, '')).toBe('');
34
+ });
35
+
36
+ it('does not call intl.formatMessage when the message is falsy', () => {
37
+ const intl = buildIntl('en', {});
38
+ const spy = vi.spyOn(intl, 'formatMessage');
39
+ formatMessageWithFallback(intl, undefined);
40
+ formatMessageWithFallback(intl, null);
41
+ formatMessageWithFallback(intl, '');
42
+ expect(spy).not.toHaveBeenCalled();
43
+ });
44
+ });
@@ -0,0 +1,31 @@
1
+ /**
2
+ * I18n helpers.
3
+ * @module helpers/I18n/I18n
4
+ */
5
+
6
+ import type { IntlShape } from 'react-intl';
7
+
8
+ /**
9
+ * Format a `react-intl` message using a plain string as both the id and the
10
+ * default fallback. Useful when a UI value (e.g. a block title configured as
11
+ * a plain string) should be looked up in the locale catalog when available,
12
+ * and rendered as-is otherwise.
13
+ *
14
+ * Returns the input untouched when it is falsy, so the result can be used
15
+ * directly in `||` fallback chains.
16
+ *
17
+ * @param intl react-intl `intl` instance, typically from `useIntl()`.
18
+ * @param message The string to translate; used as both `id` and
19
+ * `defaultMessage`.
20
+ * @returns Translated text, or `message` unchanged if falsy / no translation.
21
+ */
22
+ export function formatMessageWithFallback<T extends string | undefined | null>(
23
+ intl: IntlShape,
24
+ message: T,
25
+ ): T extends string ? string : T {
26
+ if (!message) return message as T extends string ? string : T;
27
+ return intl.formatMessage({
28
+ id: message,
29
+ defaultMessage: message,
30
+ }) as T extends string ? string : T;
31
+ }
@@ -112,6 +112,7 @@ export {
112
112
  normalizeString,
113
113
  } from '@plone/volto/helpers/Utils/Utils';
114
114
  export { messages } from './MessageLabels/MessageLabels';
115
+ export { formatMessageWithFallback } from './I18n/I18n';
115
116
  export {
116
117
  withBlockSchemaEnhancer,
117
118
  withVariationSchemaEnhancer,
package/src/server.jsx CHANGED
@@ -243,7 +243,13 @@ server.get('/*', (req, res) => {
243
243
  : store.getState().content.data?.language?.token ||
244
244
  config.settings.defaultLanguage;
245
245
 
246
- if (toBackendLang(initialLang) !== contentLang && url !== '/') {
246
+ const isMultilingual = config.settings.isMultilingual;
247
+
248
+ if (
249
+ toBackendLang(initialLang) !== contentLang &&
250
+ !/\/\.well-known\/.*$/.test(location.pathname) &&
251
+ !(isMultilingual && location.pathname === '/')
252
+ ) {
247
253
  const newLang = toReactIntlLang(
248
254
  new locale.Locales(contentLang).best(supported).toString(),
249
255
  );
@@ -31,6 +31,27 @@
31
31
  line-height: initial;
32
32
  }
33
33
 
34
+ // Restore visible focus for keyboard navigation — overrides Semantic UI's `outline: none` on form inputs
35
+ .ui.form input:not([type]),
36
+ .ui.form input[type='date'],
37
+ .ui.form input[type='datetime-local'],
38
+ .ui.form input[type='email'],
39
+ .ui.form input[type='number'],
40
+ .ui.form input[type='password'],
41
+ .ui.form input[type='search'],
42
+ .ui.form input[type='tel'],
43
+ .ui.form input[type='time'],
44
+ .ui.form input[type='text'],
45
+ .ui.form input[type='file'],
46
+ .ui.form input[type='url'],
47
+ .ui.form textarea {
48
+ padding-left: 5px;
49
+
50
+ &:focus-visible {
51
+ outline: revert;
52
+ }
53
+ }
54
+
34
55
  .ui.form .ui.input input:not([type]),
35
56
  .ui.form .ui.input input[type='date'],
36
57
  .ui.form .ui.input input[type='datetime-local'],
@@ -27,7 +27,8 @@
27
27
  }
28
28
 
29
29
  #main,
30
- .slate-inline-toolbar.slate-toolbar {
30
+ .slate-inline-toolbar.slate-toolbar,
31
+ .contenttype-plone-site .ui.page.modals {
31
32
  .ui.basic.buttons .button,
32
33
  .ui.basic.button {
33
34
  -webkit-box-shadow: 0px 0px 0px @basicBorderSize transparent inset !important;
@@ -42,11 +43,16 @@
42
43
  cursor: pointer;
43
44
  text-align: initial;
44
45
 
45
- &:focus {
46
+ &:focus:not(:focus-visible) {
46
47
  outline: none;
47
48
  }
48
49
  }
49
50
 
51
+ .ui.basic.buttons .button:focus-visible,
52
+ .ui.basic.button:focus-visible {
53
+ outline: revert;
54
+ }
55
+
50
56
  .ui.basic.primary.button,
51
57
  .ui.basic.secondary.button {
52
58
  box-shadow: none !important;
@@ -69,7 +75,7 @@
69
75
  cursor: pointer;
70
76
  text-align: initial;
71
77
 
72
- &:focus {
78
+ &:focus:not(:focus-visible) {
73
79
  outline: none;
74
80
  }
75
81
  }
@@ -85,3 +91,24 @@
85
91
  margin: 0;
86
92
  }
87
93
  }
94
+
95
+ .modals {
96
+ .modal {
97
+ .actions {
98
+ display: flex;
99
+ justify-content: flex-end;
100
+ gap: 0.5em;
101
+
102
+ .ui.basic.button {
103
+ display: flex;
104
+ justify-content: center;
105
+ padding: 0.3em;
106
+ margin: 0;
107
+
108
+ svg {
109
+ margin: 0;
110
+ }
111
+ }
112
+ }
113
+ }
114
+ }
@@ -360,6 +360,7 @@ button {
360
360
  margin-left: 8px;
361
361
 
362
362
  h4 {
363
+ display: inline;
363
364
  margin-bottom: 0;
364
365
  font-weight: @bold;
365
366
  }
@@ -3,7 +3,7 @@ declare const _default: {
3
3
  state: {
4
4
  isObjectBrowserOpen: boolean;
5
5
  };
6
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
6
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
7
7
  mode: string;
8
8
  dataName: string;
9
9
  onSelectItem: string;
@@ -1,6 +1,2 @@
1
- export default UsersControlpanel;
2
- /**
3
- * UsersControlpanel functional component.
4
- * @function UsersControlpanel
5
- */
6
- declare function UsersControlpanel(): import("react/jsx-runtime").JSX.Element;
1
+ declare const _default: any;
2
+ export default _default;
@@ -4,7 +4,7 @@ export declare const RulesControlpanel: import("@loadable/component").LoadableCl
4
4
  export declare const AddRuleControlpanel: import("@loadable/component").LoadableClassComponent<any>;
5
5
  export declare const EditRuleControlpanel: import("@loadable/component").LoadableClassComponent<any>;
6
6
  export declare const ConfigureRuleControlpanel: import("@loadable/component").LoadableClassComponent<any>;
7
- export declare const UsersControlpanel: import("@loadable/component").LoadableComponent<unknown>;
7
+ export declare const UsersControlpanel: import("@loadable/component").LoadableClassComponent<any>;
8
8
  export declare const RenderUsers: import("@loadable/component").LoadableComponent<any>;
9
9
  export declare const UserGroupMembershipControlPanel: import("@loadable/component").LoadableComponent<unknown>;
10
10
  export declare const GroupsControlpanel: import("@loadable/component").LoadableClassComponent<any>;
@@ -3,7 +3,7 @@ declare const _default: {
3
3
  state: {
4
4
  isObjectBrowserOpen: boolean;
5
5
  };
6
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
6
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
7
7
  mode: string;
8
8
  dataName: string;
9
9
  onSelectItem: string;
@@ -31,7 +31,7 @@ declare function withObjectBrowser(WrappedComponent: any): {
31
31
  * }),
32
32
  * });
33
33
  */
34
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
34
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
35
35
  mode: string;
36
36
  dataName: string;
37
37
  onSelectItem: string;
@@ -10,7 +10,7 @@ export const ImageInput: {
10
10
  state: {
11
11
  isObjectBrowserOpen: boolean;
12
12
  };
13
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
13
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
14
14
  mode: string;
15
15
  dataName: string;
16
16
  onSelectItem: string;
@@ -41,7 +41,7 @@ declare const _default: {
41
41
  state: {
42
42
  isObjectBrowserOpen: boolean;
43
43
  };
44
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
44
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
45
45
  mode: string;
46
46
  dataName: string;
47
47
  onSelectItem: string;
@@ -13,10 +13,6 @@ export function objectSchema({ intl, isDisabled, value }: {
13
13
  title: any;
14
14
  widget: string;
15
15
  };
16
- depth: {
17
- title: any;
18
- type: string;
19
- };
20
16
  sort_on: {
21
17
  title: any;
22
18
  widget: string;
@@ -41,7 +41,7 @@ declare const _default: {
41
41
  state: {
42
42
  isObjectBrowserOpen: boolean;
43
43
  };
44
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
44
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
45
45
  mode: string;
46
46
  dataName: string;
47
47
  onSelectItem: string;
@@ -23,7 +23,7 @@ export declare const UrlWidget: import("@loadable/component").LoadableClassCompo
23
23
  state: {
24
24
  isObjectBrowserOpen: boolean;
25
25
  };
26
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
26
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
27
27
  mode: string;
28
28
  dataName: string;
29
29
  onSelectItem: string;
@@ -63,7 +63,7 @@ export declare const InternalUrlWidget: import("@loadable/component").LoadableCl
63
63
  state: {
64
64
  isObjectBrowserOpen: boolean;
65
65
  };
66
- openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, onlyFolderishSelectable, }?: {
66
+ openObjectBrowser: ({ mode, onSelectItem, dataName, overlay, propDataName, searchableTypes, selectableTypes, maximumSelectionSize, currentPath, initialPath, onlyFolderishSelectable, }?: {
67
67
  mode: string;
68
68
  dataName: string;
69
69
  onSelectItem: string;
@@ -0,0 +1,19 @@
1
+ export const Default: any;
2
+ export const EventViewAllProps: any;
3
+ export const EventViewWithoutLinkToApiInTheText: any;
4
+ declare namespace _default {
5
+ export let title: string;
6
+ export { EventViewComponent as component };
7
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
8
+ export namespace argTypes {
9
+ namespace end {
10
+ let control: string;
11
+ }
12
+ namespace start {
13
+ let control_1: string;
14
+ export { control_1 as control };
15
+ }
16
+ }
17
+ }
18
+ export default _default;
19
+ import EventViewComponent from './EventView';
@@ -0,0 +1,18 @@
1
+ export const Default: any;
2
+ declare namespace _default {
3
+ export let title: string;
4
+ export { FileViewComponent as component };
5
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
6
+ export namespace argTypes {
7
+ export namespace title_1 {
8
+ let description: string;
9
+ }
10
+ export { title_1 as title };
11
+ export namespace filename {
12
+ let description_1: string;
13
+ export { description_1 as description };
14
+ }
15
+ }
16
+ }
17
+ export default _default;
18
+ import FileViewComponent from './FileView';
@@ -0,0 +1,18 @@
1
+ export const Default: any;
2
+ declare namespace _default {
3
+ export let title: string;
4
+ export { LinkViewComponent as component };
5
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
6
+ export namespace argTypes {
7
+ export namespace title_1 {
8
+ let description: string;
9
+ }
10
+ export { title_1 as title };
11
+ export namespace remoteUrl {
12
+ let description_1: string;
13
+ export { description_1 as description };
14
+ }
15
+ }
16
+ }
17
+ export default _default;
18
+ import LinkViewComponent from './LinkView';
@@ -0,0 +1,24 @@
1
+ export const Default: any;
2
+ declare namespace _default {
3
+ export let title: string;
4
+ export { ListingViewComponent as component };
5
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
6
+ export namespace argTypes {
7
+ export namespace items {
8
+ let control: string;
9
+ let description: string;
10
+ }
11
+ export namespace title_1 {
12
+ let description_1: string;
13
+ export { description_1 as description };
14
+ }
15
+ export { title_1 as title };
16
+ export namespace description_2 {
17
+ let description_3: string;
18
+ export { description_3 as description };
19
+ }
20
+ export { description_2 as description };
21
+ }
22
+ }
23
+ export default _default;
24
+ import ListingViewComponent from './ListingView';
@@ -0,0 +1,23 @@
1
+ export const Default: any;
2
+ declare namespace _default {
3
+ export let title: string;
4
+ export { NewsItemViewComponent as component };
5
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
6
+ export namespace argTypes {
7
+ export namespace title_1 {
8
+ let description: string;
9
+ }
10
+ export { title_1 as title };
11
+ export namespace description_1 {
12
+ let description_2: string;
13
+ export { description_2 as description };
14
+ }
15
+ export { description_1 as description };
16
+ export namespace text {
17
+ let description_3: string;
18
+ export { description_3 as description };
19
+ }
20
+ }
21
+ }
22
+ export default _default;
23
+ import NewsItemViewComponent from './NewsItemView';
@@ -0,0 +1,23 @@
1
+ export const Default: any;
2
+ export const PathToBlocks: any;
3
+ export const InvalidBlocks: any;
4
+ declare namespace _default {
5
+ export let title: string;
6
+ export { RenderBlocksComponent as component };
7
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
8
+ export namespace argTypes {
9
+ namespace view {
10
+ let description: string;
11
+ }
12
+ namespace blocks {
13
+ let description_1: string;
14
+ export { description_1 as description };
15
+ }
16
+ namespace blocks_layout {
17
+ let description_2: string;
18
+ export { description_2 as description };
19
+ }
20
+ }
21
+ }
22
+ export default _default;
23
+ import RenderBlocksComponent from './RenderBlocks';
@@ -0,0 +1,23 @@
1
+ export const Default: any;
2
+ declare namespace _default {
3
+ export let title: string;
4
+ export { SummaryViewComponent as component };
5
+ export let decorators: ((Story: any) => import("react/jsx-runtime").JSX.Element)[];
6
+ export namespace argTypes {
7
+ export namespace title_1 {
8
+ let description: string;
9
+ }
10
+ export { title_1 as title };
11
+ export namespace description_1 {
12
+ let description_2: string;
13
+ export { description_2 as description };
14
+ }
15
+ export { description_1 as description };
16
+ export namespace items {
17
+ let description_3: string;
18
+ export { description_3 as description };
19
+ }
20
+ }
21
+ }
22
+ export default _default;
23
+ import SummaryViewComponent from './SummaryView';