@kitconcept/volto-light-theme 7.0.0-beta.4 → 7.0.0-beta.6

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/.changelog.draft CHANGED
@@ -1,7 +1,7 @@
1
- ## 7.0.0-beta.4 (2025-09-16)
1
+ ## 7.0.0-beta.6 (2025-09-22)
2
2
 
3
- ### Internal
3
+ ### Bugfix
4
4
 
5
- - Re-release a3 due to a release process problem. @sneridagh
5
+ - Fix styles for H3 headings in slate grids. @danalvrz
6
6
 
7
7
 
package/CHANGELOG.md CHANGED
@@ -8,6 +8,26 @@
8
8
 
9
9
  <!-- towncrier release notes start -->
10
10
 
11
+ ## 7.0.0-beta.6 (2025-09-22)
12
+
13
+ ### Bugfix
14
+
15
+ - Fix styles for H3 headings in slate grids. @danalvrz
16
+
17
+ ## 7.0.0-beta.5 (2025-09-18)
18
+
19
+ ### Feature
20
+
21
+ - Add Refresh Content button for slider block and cypress test for the same @Tishasoumya-02
22
+
23
+ ### Bugfix
24
+
25
+ - Fix slider button - Improve button mixing for RAC buttons. @sneridagh [#663](https://github.com/kitconcept/volto-light-theme/pull/663)
26
+
27
+ ### Internal
28
+
29
+ - Fix A11y headlines Unique headings in example content @iRohitSingh [#661](https://github.com/kitconcept/volto-light-theme/pull/661)
30
+
11
31
  ## 7.0.0-beta.4 (2025-09-16)
12
32
 
13
33
  ### Internal
@@ -285,6 +285,11 @@ msgstr "Bild"
285
285
  msgid "Invalid Block"
286
286
  msgstr ""
287
287
 
288
+ #. Default: "Invalid Slider source"
289
+ #: components/Blocks/Slider/Data
290
+ msgid "Invalid Slider source"
291
+ msgstr ""
292
+
288
293
  #. Default: "Item"
289
294
  #: components/Widgets/schema/iconLinkListSchema
290
295
  msgid "Item"
@@ -468,6 +473,11 @@ msgstr "Presse"
468
473
  msgid "Previous Page"
469
474
  msgstr "Vorherige Seite"
470
475
 
476
+ #. Default: "Refresh source content"
477
+ #: components/Blocks/Slider/Data
478
+ msgid "Refresh source content"
479
+ msgstr ""
480
+
471
481
  #. Default: "Register"
472
482
  #: components/Anontools/Anontools
473
483
  msgid "Register"
@@ -479,6 +489,11 @@ msgstr "Registrieren"
479
489
  msgid "Remove item"
480
490
  msgstr ""
481
491
 
492
+ #. Default: "Reset the block"
493
+ #: components/Blocks/Slider/Data
494
+ msgid "Reset the block"
495
+ msgstr ""
496
+
482
497
  #. Default: "Result"
483
498
  #: components/Blocks/Listing/ListingBody
484
499
  msgid "Result"
@@ -280,6 +280,11 @@ msgstr ""
280
280
  msgid "Invalid Block"
281
281
  msgstr ""
282
282
 
283
+ #. Default: "Invalid Slider source"
284
+ #: components/Blocks/Slider/Data
285
+ msgid "Invalid Slider source"
286
+ msgstr ""
287
+
283
288
  #. Default: "Item"
284
289
  #: components/Widgets/schema/iconLinkListSchema
285
290
  msgid "Item"
@@ -463,6 +468,11 @@ msgstr ""
463
468
  msgid "Previous Page"
464
469
  msgstr ""
465
470
 
471
+ #. Default: "Refresh source content"
472
+ #: components/Blocks/Slider/Data
473
+ msgid "Refresh source content"
474
+ msgstr ""
475
+
466
476
  #. Default: "Register"
467
477
  #: components/Anontools/Anontools
468
478
  msgid "Register"
@@ -474,6 +484,11 @@ msgstr ""
474
484
  msgid "Remove item"
475
485
  msgstr ""
476
486
 
487
+ #. Default: "Reset the block"
488
+ #: components/Blocks/Slider/Data
489
+ msgid "Reset the block"
490
+ msgstr ""
491
+
477
492
  #. Default: "Result"
478
493
  #: components/Blocks/Listing/ListingBody
479
494
  msgid "Result"
@@ -287,6 +287,11 @@ msgstr "Imagen"
287
287
  msgid "Invalid Block"
288
288
  msgstr ""
289
289
 
290
+ #. Default: "Invalid Slider source"
291
+ #: components/Blocks/Slider/Data
292
+ msgid "Invalid Slider source"
293
+ msgstr ""
294
+
290
295
  #. Default: "Item"
291
296
  #: components/Widgets/schema/iconLinkListSchema
292
297
  msgid "Item"
@@ -470,6 +475,11 @@ msgstr "Pulsar"
470
475
  msgid "Previous Page"
471
476
  msgstr "Página anterior"
472
477
 
478
+ #. Default: "Refresh source content"
479
+ #: components/Blocks/Slider/Data
480
+ msgid "Refresh source content"
481
+ msgstr ""
482
+
473
483
  #. Default: "Register"
474
484
  #: components/Anontools/Anontools
475
485
  msgid "Register"
@@ -481,6 +491,11 @@ msgstr "Registrar usuario"
481
491
  msgid "Remove item"
482
492
  msgstr "Eliminar elemento"
483
493
 
494
+ #. Default: "Reset the block"
495
+ #: components/Blocks/Slider/Data
496
+ msgid "Reset the block"
497
+ msgstr ""
498
+
484
499
  #. Default: "Result"
485
500
  #: components/Blocks/Listing/ListingBody
486
501
  msgid "Result"
@@ -286,6 +286,11 @@ msgstr "Irudia"
286
286
  msgid "Invalid Block"
287
287
  msgstr ""
288
288
 
289
+ #. Default: "Invalid Slider source"
290
+ #: components/Blocks/Slider/Data
291
+ msgid "Invalid Slider source"
292
+ msgstr ""
293
+
289
294
  #. Default: "Item"
290
295
  #: components/Widgets/schema/iconLinkListSchema
291
296
  msgid "Item"
@@ -469,6 +474,11 @@ msgstr "Sakatu"
469
474
  msgid "Previous Page"
470
475
  msgstr "Aurreko orria"
471
476
 
477
+ #. Default: "Refresh source content"
478
+ #: components/Blocks/Slider/Data
479
+ msgid "Refresh source content"
480
+ msgstr ""
481
+
472
482
  #. Default: "Register"
473
483
  #: components/Anontools/Anontools
474
484
  msgid "Register"
@@ -480,6 +490,11 @@ msgstr "Eman izena"
480
490
  msgid "Remove item"
481
491
  msgstr ""
482
492
 
493
+ #. Default: "Reset the block"
494
+ #: components/Blocks/Slider/Data
495
+ msgid "Reset the block"
496
+ msgstr ""
497
+
483
498
  #. Default: "Result"
484
499
  #: components/Blocks/Listing/ListingBody
485
500
  msgid "Result"
@@ -280,6 +280,11 @@ msgstr "Imagem"
280
280
  msgid "Invalid Block"
281
281
  msgstr "Bloco inválido"
282
282
 
283
+ #. Default: "Invalid Slider source"
284
+ #: components/Blocks/Slider/Data
285
+ msgid "Invalid Slider source"
286
+ msgstr ""
287
+
283
288
  #. Default: "Item"
284
289
  #: components/Widgets/schema/iconLinkListSchema
285
290
  msgid "Item"
@@ -463,6 +468,11 @@ msgstr "Imprensa"
463
468
  msgid "Previous Page"
464
469
  msgstr "Página anterior"
465
470
 
471
+ #. Default: "Refresh source content"
472
+ #: components/Blocks/Slider/Data
473
+ msgid "Refresh source content"
474
+ msgstr ""
475
+
466
476
  #. Default: "Register"
467
477
  #: components/Anontools/Anontools
468
478
  msgid "Register"
@@ -474,6 +484,11 @@ msgstr "Criar conta"
474
484
  msgid "Remove item"
475
485
  msgstr "Remover item"
476
486
 
487
+ #. Default: "Reset the block"
488
+ #: components/Blocks/Slider/Data
489
+ msgid "Reset the block"
490
+ msgstr ""
491
+
477
492
  #. Default: "Result"
478
493
  #: components/Blocks/Listing/ListingBody
479
494
  msgid "Result"
package/locales/volto.pot CHANGED
@@ -282,6 +282,11 @@ msgstr ""
282
282
  msgid "Invalid Block"
283
283
  msgstr ""
284
284
 
285
+ #. Default: "Invalid Slider source"
286
+ #: components/Blocks/Slider/Data
287
+ msgid "Invalid Slider source"
288
+ msgstr ""
289
+
285
290
  #. Default: "Item"
286
291
  #: components/Widgets/schema/iconLinkListSchema
287
292
  msgid "Item"
@@ -465,6 +470,11 @@ msgstr ""
465
470
  msgid "Previous Page"
466
471
  msgstr ""
467
472
 
473
+ #. Default: "Refresh source content"
474
+ #: components/Blocks/Slider/Data
475
+ msgid "Refresh source content"
476
+ msgstr ""
477
+
468
478
  #. Default: "Register"
469
479
  #: components/Anontools/Anontools
470
480
  msgid "Register"
@@ -476,6 +486,11 @@ msgstr ""
476
486
  msgid "Remove item"
477
487
  msgstr ""
478
488
 
489
+ #. Default: "Reset the block"
490
+ #: components/Blocks/Slider/Data
491
+ msgid "Reset the block"
492
+ msgstr ""
493
+
479
494
  #. Default: "Result"
480
495
  #: components/Blocks/Listing/ListingBody
481
496
  msgid "Result"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kitconcept/volto-light-theme",
3
- "version": "7.0.0-beta.4",
3
+ "version": "7.0.0-beta.6",
4
4
  "description": "Volto Light Theme by kitconcept",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -0,0 +1,147 @@
1
+ import { useIntl, defineMessages } from 'react-intl';
2
+ import { useDispatch } from 'react-redux';
3
+ import { BlockDataForm } from '@plone/volto/components/manage/Form';
4
+ import { SliderSchema } from '@kitconcept/volto-slider-block/components/schema';
5
+ import { toast } from 'react-toastify';
6
+ import Icon from '@plone/volto/components/theme/Icon/Icon';
7
+ import Toast from '@plone/volto/components/manage/Toast/Toast';
8
+ import { getContent } from '@plone/volto/actions/content/content';
9
+ import isEmpty from 'lodash/isEmpty';
10
+ import { flattenToAppURL } from '@plone/volto/helpers/Url/Url';
11
+ import { Button } from 'semantic-ui-react';
12
+ import reloadSVG from '@plone/volto/icons/reload.svg';
13
+ import { messages as defaultMessages } from '@plone/volto/helpers/MessageLabels/MessageLabels';
14
+ import cloneDeep from 'lodash/cloneDeep';
15
+
16
+ const messages = defineMessages({
17
+ resetSlider: {
18
+ id: 'Reset the block',
19
+ defaultMessage: 'Reset the block',
20
+ },
21
+ refreshSlider: {
22
+ id: 'Refresh source content',
23
+ defaultMessage: 'Refresh source content',
24
+ },
25
+ invalidSlider: {
26
+ id: 'Invalid Slider source',
27
+ defaultMessage: 'Invalid Slider source',
28
+ },
29
+ });
30
+
31
+ const SliderData = (props) => {
32
+ const {
33
+ block,
34
+ blocksConfig,
35
+ data,
36
+ onChangeBlock,
37
+ navRoot,
38
+ contentType,
39
+ activeObject,
40
+ } = props;
41
+ const dispatch = useDispatch();
42
+ const intl = useIntl();
43
+ const schema = SliderSchema({ ...props, intl });
44
+
45
+ const dataTransformer = (resp, data, activeObject) => {
46
+ let hrefData = {
47
+ '@id': flattenToAppURL(resp['@id']),
48
+ '@type': resp?.['@type'],
49
+ Description: resp?.description,
50
+ Title: resp.title,
51
+ hasPreviewImage: resp?.preview_image ? true : false,
52
+ head_title: resp.head_title ?? null,
53
+ image_field: resp?.preview_image
54
+ ? 'preview_image'
55
+ : resp?.image
56
+ ? 'image'
57
+ : null,
58
+ image_scales: {
59
+ preview_image: [resp?.preview_image],
60
+ image: [resp?.image],
61
+ },
62
+ title: resp.title,
63
+ };
64
+
65
+ const updatedSlides = cloneDeep(data.slides);
66
+
67
+ updatedSlides[activeObject] = {
68
+ '@id': data.slides[activeObject]['@id'],
69
+ description: resp?.description,
70
+ title: resp?.title,
71
+ flagAlign: data.slides[activeObject]?.flagAlign,
72
+ href: [hrefData],
73
+ };
74
+ return {
75
+ ...data,
76
+ slides: updatedSlides,
77
+ };
78
+ };
79
+
80
+ const refresh = () => {
81
+ if (data.slides[activeObject]?.href?.[0]?.['@id']) {
82
+ dispatch(
83
+ getContent(
84
+ flattenToAppURL(data.slides[activeObject].href[0]['@id']),
85
+ null,
86
+ `${block}-slider-${activeObject}`,
87
+ ),
88
+ )
89
+ .then((resp) => {
90
+ if (resp) {
91
+ let blockData = dataTransformer(resp, data, activeObject);
92
+ onChangeBlock(block, blockData);
93
+ }
94
+ })
95
+ .catch((e) => {
96
+ toast.error(
97
+ <Toast
98
+ error
99
+ title={props.intl.formatMessage(defaultMessages.error)}
100
+ content={props.intl.formatMessage(messages.invalidSlider)}
101
+ />,
102
+ );
103
+ });
104
+ }
105
+ };
106
+
107
+ const ActionButton = (
108
+ <Button.Group className="refresh slider">
109
+ <Button
110
+ aria-label={intl.formatMessage(messages.refreshSlider)}
111
+ type="button"
112
+ basic
113
+ onClick={() => refresh()}
114
+ disabled={isEmpty(data.slides)}
115
+ >
116
+ {intl.formatMessage(messages.refreshSlider)}
117
+ <Icon name={reloadSVG} size="20px" color="#00000099" />
118
+ </Button>
119
+ </Button.Group>
120
+ );
121
+
122
+ const dataAdapter = blocksConfig[data['@type']].dataAdapter;
123
+
124
+ return (
125
+ <BlockDataForm
126
+ schema={schema}
127
+ title={schema.title}
128
+ onChangeField={(id, value) => {
129
+ dataAdapter({
130
+ block,
131
+ data,
132
+ id,
133
+ onChangeBlock,
134
+ value,
135
+ });
136
+ }}
137
+ onChangeBlock={onChangeBlock}
138
+ formData={data}
139
+ block={block}
140
+ actionButton={ActionButton}
141
+ navRoot={navRoot}
142
+ contentType={contentType}
143
+ />
144
+ );
145
+ };
146
+
147
+ export default SliderData;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * OVERRIDE Data.jsx
3
+ * REASON: Add Refresh source content button.
4
+ * FILE: https://github.com/kitconcept/volto-slider-block/blob/74cb8f01394907ff7b765c74c4a43ceb793c1c95/packages/volto-slider-block/src/components/Data.jsx
5
+ * DATE: 2025-09-11
6
+ * DEVELOPER: @Tishasoumya-02
7
+ */
8
+
9
+ import Data from '../../../../components/Blocks/Slider/Data';
10
+
11
+ export default Data;
@@ -43,14 +43,30 @@
43
43
  }
44
44
 
45
45
  @mixin button-style {
46
+ display: inline-flex;
47
+ align-items: center;
48
+ justify-content: center;
46
49
  padding: 7px 10px;
47
50
  border: 2px solid var(--quanta-sapphire);
48
51
  border-radius: 10px;
49
- margin-bottom: 10px; // Covers long button texts
52
+ margin: 0;
53
+ // margin-bottom: 10px; // Covers long button texts
54
+ appearance: none;
50
55
  background-color: transparent;
51
56
  color: var(--quanta-sapphire);
52
57
  cursor: pointer;
53
58
  font-size: 16px;
54
- line-height: 0;
59
+ gap: 4px;
60
+ // line-height: 0;
55
61
  opacity: 0.8;
62
+ outline: none;
63
+ text-align: center;
64
+ text-decoration: none;
65
+ vertical-align: middle;
66
+
67
+ // Remove once we are using upddated @plone/components
68
+ &.react-aria-Button .icon:not(:last-child) {
69
+ flex-shrink: 0;
70
+ margin-right: initial;
71
+ }
56
72
  }
@@ -142,8 +142,9 @@ span.color-contrast-label {
142
142
  .field.inline {
143
143
  .add-item-button-wrapper {
144
144
  display: flex;
145
+ align-items: center;
145
146
  justify-content: flex-end;
146
- padding: 0;
147
+ padding: 10px 0;
147
148
 
148
149
  button {
149
150
  @include button-style;
@@ -196,9 +197,9 @@ span.color-contrast-label {
196
197
  .block-config-json-editor.field.inline {
197
198
  .button-wrapper {
198
199
  display: flex;
199
- min-height: 60px;
200
+ align-items: center;
200
201
  justify-content: flex-end;
201
- padding: 0;
202
+ padding: 10px 0;
202
203
 
203
204
  button {
204
205
  @include button-style;
@@ -60,18 +60,18 @@
60
60
  height: 100%;
61
61
 
62
62
  .image-wrapper {
63
- margin-bottom: 40px;
63
+ margin-bottom: $spacing-medium;
64
64
 
65
65
  img {
66
66
  position: relative;
67
67
  }
68
68
  }
69
69
  .content {
70
- padding: 0 20px 20px 20px;
70
+ padding: 0 $spacing-small $spacing-small $spacing-small;
71
71
  @include body-text();
72
72
 
73
73
  .headline {
74
- margin-bottom: 20px;
74
+ margin-bottom: $spacing-small;
75
75
  letter-spacing: 1px;
76
76
  text-transform: uppercase;
77
77
  @include headtitle1();
@@ -79,12 +79,12 @@
79
79
 
80
80
  h2 {
81
81
  padding: 0;
82
- margin-bottom: 20px !important;
82
+ margin-bottom: $spacing-small !important;
83
83
  @include text-heading-h3();
84
84
  }
85
85
 
86
86
  p {
87
- margin-bottom: 20px;
87
+ margin-bottom: $spacing-small;
88
88
  }
89
89
  }
90
90
  }
@@ -105,7 +105,7 @@
105
105
  }
106
106
 
107
107
  .slate:not(.inner) {
108
- padding: 40px 20px 20px 20px;
108
+ padding: $spacing-medium $spacing-small $spacing-small $spacing-small;
109
109
  margin: 0;
110
110
  p {
111
111
  padding: 0;
@@ -137,7 +137,7 @@
137
137
  margin: 0;
138
138
 
139
139
  .title {
140
- margin: 0 0 20px 0;
140
+ margin: 0 0 $spacing-small 0;
141
141
  color: $white !important;
142
142
  letter-spacing: 0;
143
143
  @include text-heading-h3();
@@ -190,7 +190,7 @@
190
190
  }
191
191
  }
192
192
  h2 {
193
- margin-bottom: 40px !important;
193
+ margin-bottom: $spacing-medium !important;
194
194
  }
195
195
  &.previous--is--same--block-type.previous--has--same--backgroundColor:not(
196
196
  .has--headline
@@ -227,9 +227,9 @@
227
227
  }
228
228
  }
229
229
  .card-summary {
230
- padding-top: 40px;
230
+ padding-top: $spacing-medium;
231
231
  h3 {
232
- margin-bottom: 20px !important;
232
+ margin-bottom: $spacing-small !important;
233
233
  }
234
234
  }
235
235
  }
@@ -243,7 +243,7 @@
243
243
  .block.listing {
244
244
  .listing-item {
245
245
  &:last-child {
246
- padding-bottom: 0px !important;
246
+ padding-bottom: 0 !important;
247
247
  }
248
248
  }
249
249
  .pagination-wrapper {
@@ -263,7 +263,7 @@
263
263
  .block.listing {
264
264
  .listing-item {
265
265
  &:last-child {
266
- padding-bottom: 0px !important;
266
+ padding-bottom: 0 !important;
267
267
  }
268
268
  }
269
269
  }
@@ -295,15 +295,19 @@
295
295
  @media only screen and (min-width: $largest-mobile-screen) {
296
296
  .one {
297
297
  .block.teaser .teaser-item .content h2 {
298
- margin-bottom: 40px !important;
298
+ margin-bottom: $spacing-medium !important;
299
299
  @include text-heading-h2();
300
300
  }
301
301
 
302
302
  .slate {
303
303
  h2 {
304
- margin-bottom: 40px !important;
304
+ margin-bottom: $spacing-medium !important;
305
305
  @include text-heading-h2();
306
306
  }
307
+
308
+ h3 {
309
+ margin-bottom: $spacing-small !important;
310
+ }
307
311
  }
308
312
 
309
313
  .image {
@@ -320,7 +324,7 @@
320
324
  .teaser {
321
325
  .teaser-item .content {
322
326
  h2 {
323
- margin-bottom: 20px !important;
327
+ margin-bottom: $spacing-small !important;
324
328
  @include text-heading-h3();
325
329
  }
326
330
  }
@@ -330,7 +334,7 @@
330
334
  .title {
331
335
  @include text-heading-h3();
332
336
  @include word-break();
333
- margin: 0 0 20px 0;
337
+ margin: 0 0 $spacing-small 0;
334
338
  }
335
339
  }
336
340
  figure:after {
@@ -339,9 +343,14 @@
339
343
  }
340
344
  .slate {
341
345
  h2 {
342
- margin-bottom: 20px !important;
346
+ margin-bottom: $spacing-small !important;
343
347
  @include text-heading-h3();
344
348
  }
349
+
350
+ h3 {
351
+ margin-bottom: $spacing-small !important;
352
+ @include text-heading-h4();
353
+ }
345
354
  }
346
355
  }
347
356
 
@@ -349,14 +358,14 @@
349
358
  .teaser {
350
359
  .teaser-item {
351
360
  .image-wrapper {
352
- margin-bottom: 20px !important;
361
+ margin-bottom: $spacing-small !important;
353
362
  }
354
363
  .content {
355
364
  .headline {
356
365
  @include headtitle2();
357
366
  }
358
367
  h2 {
359
- margin-bottom: 20px !important;
368
+ margin-bottom: $spacing-small !important;
360
369
  @include text-heading-h4();
361
370
  }
362
371
  p {
@@ -382,7 +391,12 @@
382
391
 
383
392
  .slate {
384
393
  h2 {
385
- margin-bottom: 20px !important;
394
+ margin-bottom: $spacing-small !important;
395
+ @include text-heading-h3();
396
+ }
397
+
398
+ h3 {
399
+ margin-bottom: $spacing-small !important;
386
400
  @include text-heading-h4();
387
401
  }
388
402
 
@@ -390,7 +404,7 @@
390
404
  margin-bottom: 0;
391
405
  }
392
406
 
393
- padding-top: 20px !important;
407
+ padding-top: $spacing-small !important;
394
408
  }
395
409
  }
396
410
  }
@@ -402,7 +416,7 @@
402
416
  }
403
417
 
404
418
  .block.gridBlock h2.title {
405
- margin-bottom: 20px !important;
419
+ margin-bottom: $spacing-small !important;
406
420
  }
407
421
 
408
422
  // Watch out for the following rule, it is used to override the default
@@ -243,3 +243,18 @@ $sliderImagesAspectRatio: var(--slider-images-aspect-ratio, 16/9);
243
243
  }
244
244
  }
245
245
  }
246
+
247
+ .ui.buttons.refresh.slider button {
248
+ display: flex;
249
+ align-items: center;
250
+ padding: 0.5833em 0.833em;
251
+ background-color: #e8e8e8 !important;
252
+ color: rgba(0, 0, 0, 0.6) !important;
253
+ font-size: 0.85714286rem;
254
+ font-weight: bold;
255
+
256
+ svg {
257
+ padding: 0 0 0 0.5em;
258
+ margin-right: 0;
259
+ }
260
+ }