io-sanita-theme 2.3.1 → 2.3.3
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.md +17 -0
- package/RELEASE.md +12 -0
- package/locales/de/LC_MESSAGES/volto.po +6 -1
- package/locales/en/LC_MESSAGES/volto.po +6 -1
- package/locales/es/LC_MESSAGES/volto.po +6 -1
- package/locales/fr/LC_MESSAGES/volto.po +6 -1
- package/locales/it/LC_MESSAGES/volto.po +6 -1
- package/locales/volto.pot +7 -2
- package/package.json +1 -1
- package/src/components/Blocks/Listing/CompleteBlockLinks/CompleteBlockLinksTemplate.jsx +1 -0
- package/src/components/Blocks/SearchBandi/Body.jsx +43 -34
- package/src/components/Blocks/SearchFarmacia/Body.jsx +28 -12
- package/src/components/Blocks/SearchFarmacia/Results.jsx +85 -97
- package/src/components/Blocks/SearchFarmacia/SearchFilters.jsx +7 -1
- package/src/components/Blocks/SearchMap/Body.jsx +15 -18
- package/src/components/Blocks/SearchServiziProcedure/Body.jsx +12 -14
- package/src/components/Pagination/Pagination.jsx +9 -2
- package/src/components/Pagination/PaginationItem.jsx +3 -0
- package/src/components/Widgets/SearchBar/SearchBar.jsx +8 -4
- package/src/components/Widgets/SearchCheckbox/SearchCheckbox.jsx +2 -2
- package/src/customizations/volto/components/theme/Header/Header.jsx +2 -2
- package/src/customizations/volto/components/theme/Navigation/Navigation.jsx +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.3.3](https://github.com/RedTurtle/io-sanita-theme/compare/2.3.2...2.3.3) (2025-02-26)
|
|
4
|
+
|
|
5
|
+
### Bug Fixes
|
|
6
|
+
|
|
7
|
+
* a11y of Blocco link completo ([febc56c](https://github.com/RedTurtle/io-sanita-theme/commit/febc56cb2e3813b631b5d1e5f02d7894cdb3d37e))
|
|
8
|
+
|
|
9
|
+
## [2.3.2](https://github.com/RedTurtle/io-sanita-theme/compare/2.3.1...2.3.2) (2025-02-26)
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* a11y search blocks ([439519f](https://github.com/RedTurtle/io-sanita-theme/commit/439519f0763c79771bd0e6638147e24c32997a23))
|
|
14
|
+
* mismatch ssr edit ([6a46afe](https://github.com/RedTurtle/io-sanita-theme/commit/6a46afee597cd372c28f6ec34edea544ce1a652c))
|
|
15
|
+
|
|
16
|
+
### Maintenance
|
|
17
|
+
|
|
18
|
+
* locales ([e44fb3d](https://github.com/RedTurtle/io-sanita-theme/commit/e44fb3d3b04ac2e12b4c31c47e3ed36c0ae33ac3))
|
|
19
|
+
|
|
3
20
|
## [2.3.1](https://github.com/RedTurtle/io-sanita-theme/compare/2.3.0...2.3.1) (2025-02-25)
|
|
4
21
|
|
|
5
22
|
### Bug Fixes
|
package/RELEASE.md
CHANGED
|
@@ -41,6 +41,18 @@
|
|
|
41
41
|
- ...
|
|
42
42
|
-->
|
|
43
43
|
|
|
44
|
+
## Versione 2.3.3 (26/02/2025)
|
|
45
|
+
|
|
46
|
+
### Fix
|
|
47
|
+
|
|
48
|
+
- a11y - Sistemata l'accessibilità del template del blocco elenco 'Link completi'
|
|
49
|
+
|
|
50
|
+
## Versione 2.3.2 (26/02/2025)
|
|
51
|
+
|
|
52
|
+
### Fix
|
|
53
|
+
|
|
54
|
+
- a11y - Sistemata l'accessibilità dei blocchi di tipo 'cerca'
|
|
55
|
+
|
|
44
56
|
## Versione 2.3.0 (24/02/2025)
|
|
45
57
|
|
|
46
58
|
### Novità
|
|
@@ -2736,7 +2736,7 @@ msgid "search_farmacia_results"
|
|
|
2736
2736
|
msgstr ""
|
|
2737
2737
|
|
|
2738
2738
|
#. Default: "Risultati della ricerca farmacie"
|
|
2739
|
-
#: components/Blocks/SearchFarmacia/
|
|
2739
|
+
#: components/Blocks/SearchFarmacia/Body
|
|
2740
2740
|
msgid "search_farmacia_results_aria"
|
|
2741
2741
|
msgstr ""
|
|
2742
2742
|
|
|
@@ -2755,6 +2755,11 @@ msgstr ""
|
|
|
2755
2755
|
msgid "search_farmacia_searchable_text_description"
|
|
2756
2756
|
msgstr ""
|
|
2757
2757
|
|
|
2758
|
+
#. Default: "Farmacia"
|
|
2759
|
+
#: components/Blocks/SearchFarmacia/SearchFilters
|
|
2760
|
+
msgid "search_farmacia_searchable_text_label"
|
|
2761
|
+
msgstr ""
|
|
2762
|
+
|
|
2758
2763
|
#. Default: "Comune"
|
|
2759
2764
|
#: components/Blocks/SearchFarmacia/Body
|
|
2760
2765
|
msgid "search_farmacia_sort_comune"
|
|
@@ -2731,7 +2731,7 @@ msgid "search_farmacia_results"
|
|
|
2731
2731
|
msgstr "Results"
|
|
2732
2732
|
|
|
2733
2733
|
#. Default: "Risultati della ricerca farmacie"
|
|
2734
|
-
#: components/Blocks/SearchFarmacia/
|
|
2734
|
+
#: components/Blocks/SearchFarmacia/Body
|
|
2735
2735
|
msgid "search_farmacia_results_aria"
|
|
2736
2736
|
msgstr "Search results"
|
|
2737
2737
|
|
|
@@ -2750,6 +2750,11 @@ msgstr "Search type"
|
|
|
2750
2750
|
msgid "search_farmacia_searchable_text_description"
|
|
2751
2751
|
msgstr "Enter the name of the pharmacy"
|
|
2752
2752
|
|
|
2753
|
+
#. Default: "Farmacia"
|
|
2754
|
+
#: components/Blocks/SearchFarmacia/SearchFilters
|
|
2755
|
+
msgid "search_farmacia_searchable_text_label"
|
|
2756
|
+
msgstr "Pharmacy"
|
|
2757
|
+
|
|
2753
2758
|
#. Default: "Comune"
|
|
2754
2759
|
#: components/Blocks/SearchFarmacia/Body
|
|
2755
2760
|
msgid "search_farmacia_sort_comune"
|
|
@@ -2738,7 +2738,7 @@ msgid "search_farmacia_results"
|
|
|
2738
2738
|
msgstr ""
|
|
2739
2739
|
|
|
2740
2740
|
#. Default: "Risultati della ricerca farmacie"
|
|
2741
|
-
#: components/Blocks/SearchFarmacia/
|
|
2741
|
+
#: components/Blocks/SearchFarmacia/Body
|
|
2742
2742
|
msgid "search_farmacia_results_aria"
|
|
2743
2743
|
msgstr ""
|
|
2744
2744
|
|
|
@@ -2757,6 +2757,11 @@ msgstr ""
|
|
|
2757
2757
|
msgid "search_farmacia_searchable_text_description"
|
|
2758
2758
|
msgstr ""
|
|
2759
2759
|
|
|
2760
|
+
#. Default: "Farmacia"
|
|
2761
|
+
#: components/Blocks/SearchFarmacia/SearchFilters
|
|
2762
|
+
msgid "search_farmacia_searchable_text_label"
|
|
2763
|
+
msgstr ""
|
|
2764
|
+
|
|
2760
2765
|
#. Default: "Comune"
|
|
2761
2766
|
#: components/Blocks/SearchFarmacia/Body
|
|
2762
2767
|
msgid "search_farmacia_sort_comune"
|
|
@@ -2738,7 +2738,7 @@ msgid "search_farmacia_results"
|
|
|
2738
2738
|
msgstr ""
|
|
2739
2739
|
|
|
2740
2740
|
#. Default: "Risultati della ricerca farmacie"
|
|
2741
|
-
#: components/Blocks/SearchFarmacia/
|
|
2741
|
+
#: components/Blocks/SearchFarmacia/Body
|
|
2742
2742
|
msgid "search_farmacia_results_aria"
|
|
2743
2743
|
msgstr ""
|
|
2744
2744
|
|
|
@@ -2757,6 +2757,11 @@ msgstr ""
|
|
|
2757
2757
|
msgid "search_farmacia_searchable_text_description"
|
|
2758
2758
|
msgstr ""
|
|
2759
2759
|
|
|
2760
|
+
#. Default: "Farmacia"
|
|
2761
|
+
#: components/Blocks/SearchFarmacia/SearchFilters
|
|
2762
|
+
msgid "search_farmacia_searchable_text_label"
|
|
2763
|
+
msgstr ""
|
|
2764
|
+
|
|
2760
2765
|
#. Default: "Comune"
|
|
2761
2766
|
#: components/Blocks/SearchFarmacia/Body
|
|
2762
2767
|
msgid "search_farmacia_sort_comune"
|
|
@@ -2731,7 +2731,7 @@ msgid "search_farmacia_results"
|
|
|
2731
2731
|
msgstr ""
|
|
2732
2732
|
|
|
2733
2733
|
#. Default: "Risultati della ricerca farmacie"
|
|
2734
|
-
#: components/Blocks/SearchFarmacia/
|
|
2734
|
+
#: components/Blocks/SearchFarmacia/Body
|
|
2735
2735
|
msgid "search_farmacia_results_aria"
|
|
2736
2736
|
msgstr ""
|
|
2737
2737
|
|
|
@@ -2750,6 +2750,11 @@ msgstr ""
|
|
|
2750
2750
|
msgid "search_farmacia_searchable_text_description"
|
|
2751
2751
|
msgstr ""
|
|
2752
2752
|
|
|
2753
|
+
#. Default: "Farmacia"
|
|
2754
|
+
#: components/Blocks/SearchFarmacia/SearchFilters
|
|
2755
|
+
msgid "search_farmacia_searchable_text_label"
|
|
2756
|
+
msgstr ""
|
|
2757
|
+
|
|
2753
2758
|
#. Default: "Comune"
|
|
2754
2759
|
#: components/Blocks/SearchFarmacia/Body
|
|
2755
2760
|
msgid "search_farmacia_sort_comune"
|
package/locales/volto.pot
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
msgid ""
|
|
2
2
|
msgstr ""
|
|
3
3
|
"Project-Id-Version: Plone\n"
|
|
4
|
-
"POT-Creation-Date: 2025-02-
|
|
4
|
+
"POT-Creation-Date: 2025-02-26T10:39:52.643Z\n"
|
|
5
5
|
"Last-Translator: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
|
|
6
6
|
"Language-Team: Plone i18n <plone-i18n@lists.sourceforge.net>\n"
|
|
7
7
|
"Content-Type: text/plain; charset=utf-8\n"
|
|
@@ -2733,7 +2733,7 @@ msgid "search_farmacia_results"
|
|
|
2733
2733
|
msgstr ""
|
|
2734
2734
|
|
|
2735
2735
|
#. Default: "Risultati della ricerca farmacie"
|
|
2736
|
-
#: components/Blocks/SearchFarmacia/
|
|
2736
|
+
#: components/Blocks/SearchFarmacia/Body
|
|
2737
2737
|
msgid "search_farmacia_results_aria"
|
|
2738
2738
|
msgstr ""
|
|
2739
2739
|
|
|
@@ -2752,6 +2752,11 @@ msgstr ""
|
|
|
2752
2752
|
msgid "search_farmacia_searchable_text_description"
|
|
2753
2753
|
msgstr ""
|
|
2754
2754
|
|
|
2755
|
+
#. Default: "Farmacia"
|
|
2756
|
+
#: components/Blocks/SearchFarmacia/SearchFilters
|
|
2757
|
+
msgid "search_farmacia_searchable_text_label"
|
|
2758
|
+
msgstr ""
|
|
2759
|
+
|
|
2755
2760
|
#. Default: "Comune"
|
|
2756
2761
|
#: components/Blocks/SearchFarmacia/Body
|
|
2757
2762
|
msgid "search_farmacia_sort_comune"
|
package/package.json
CHANGED
|
@@ -153,6 +153,8 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock, blocksConfig }) => {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
const has_results = !loading && items?.length > 0;
|
|
156
|
+
|
|
157
|
+
const resultsWrapperId = `bandi-search-results-${id}`;
|
|
156
158
|
return filterOne || filterTwo || filterThree ? (
|
|
157
159
|
<div
|
|
158
160
|
className={cx('full-width py-4', {
|
|
@@ -204,7 +206,12 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock, blocksConfig }) => {
|
|
|
204
206
|
}),
|
|
205
207
|
})}
|
|
206
208
|
|
|
207
|
-
<Button
|
|
209
|
+
<Button
|
|
210
|
+
color="accent"
|
|
211
|
+
icon={false}
|
|
212
|
+
className="my-0 my-lg-1"
|
|
213
|
+
aria-controls={resultsWrapperId}
|
|
214
|
+
>
|
|
208
215
|
{intl.formatMessage(messages.find)}
|
|
209
216
|
</Button>
|
|
210
217
|
</div>
|
|
@@ -212,40 +219,42 @@ const Body = ({ data, id, inEditMode, path, onChangeBlock, blocksConfig }) => {
|
|
|
212
219
|
</form>
|
|
213
220
|
</div>
|
|
214
221
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
222
|
+
<div
|
|
223
|
+
className="mt-4"
|
|
224
|
+
ref={resultsRef}
|
|
225
|
+
aria-live="polite"
|
|
226
|
+
aria-label={intl.formatMessage(messages.search_bandi_results)}
|
|
227
|
+
role="region"
|
|
228
|
+
id={resultsWrapperId}
|
|
229
|
+
>
|
|
230
|
+
{!loading ? (
|
|
231
|
+
items?.length > 0 ? (
|
|
232
|
+
<>
|
|
233
|
+
<div className="block listing">
|
|
234
|
+
<BandiTemplate items={items} full_width={false} />
|
|
235
|
+
</div>
|
|
236
|
+
{querystringResults.total > b_size && (
|
|
237
|
+
<Pagination
|
|
238
|
+
activePage={currentPage}
|
|
239
|
+
totalPages={Math.ceil(querystringResults.total / b_size)}
|
|
240
|
+
onPageChange={handleQueryPaginationChange}
|
|
241
|
+
ariaControls={resultsWrapperId}
|
|
242
|
+
/>
|
|
243
|
+
)}
|
|
244
|
+
</>
|
|
245
|
+
) : querystringResults ? (
|
|
246
|
+
<p className="text-center">
|
|
247
|
+
{intl.formatMessage(messages.noResult)}
|
|
248
|
+
</p>
|
|
249
|
+
) : (
|
|
250
|
+
<></>
|
|
251
|
+
)
|
|
252
|
+
) : (
|
|
253
|
+
<div className="d-flex justify-content-center">
|
|
254
|
+
<Spinner active />
|
|
234
255
|
</div>
|
|
235
|
-
)
|
|
236
|
-
|
|
237
|
-
<div className="mt-4" aria-live="polite">
|
|
238
|
-
<p className="text-center">
|
|
239
|
-
{intl.formatMessage(messages.noResult)}
|
|
240
|
-
</p>
|
|
241
|
-
</div>
|
|
242
|
-
</>
|
|
243
|
-
) : null
|
|
244
|
-
) : (
|
|
245
|
-
<div className="d-flex justify-content-center mt-3">
|
|
246
|
-
<Spinner active />
|
|
247
|
-
</div>
|
|
248
|
-
)}
|
|
256
|
+
)}
|
|
257
|
+
</div>
|
|
249
258
|
</Container>
|
|
250
259
|
</div>
|
|
251
260
|
) : null;
|
|
@@ -36,6 +36,10 @@ const messages = defineMessages({
|
|
|
36
36
|
id: 'search_farmacia_sort_localita',
|
|
37
37
|
defaultMessage: 'Località',
|
|
38
38
|
},
|
|
39
|
+
farmacie_results_aria: {
|
|
40
|
+
id: 'search_farmacia_results_aria',
|
|
41
|
+
defaultMessage: 'Risultati della ricerca farmacie',
|
|
42
|
+
},
|
|
39
43
|
});
|
|
40
44
|
|
|
41
45
|
const Body = ({ isEditMode, data, id }) => {
|
|
@@ -219,6 +223,7 @@ const Body = ({ isEditMode, data, id }) => {
|
|
|
219
223
|
}
|
|
220
224
|
}, [currentPage, results]);
|
|
221
225
|
|
|
226
|
+
const resultsWrapperId = 'search-farmacie-results_' + id;
|
|
222
227
|
return (
|
|
223
228
|
<div className="block iosanita-block-search farmacia">
|
|
224
229
|
<div className="full-width bg-primary-lightest">
|
|
@@ -247,6 +252,7 @@ const Body = ({ isEditMode, data, id }) => {
|
|
|
247
252
|
searchType={searchType}
|
|
248
253
|
filters={filters}
|
|
249
254
|
options={filtersOptions}
|
|
255
|
+
ariaControls={resultsWrapperId}
|
|
250
256
|
// isEditMode={isEditMode}
|
|
251
257
|
// doSearch={doSearch}
|
|
252
258
|
// checkClearComune={checkClearComune}
|
|
@@ -287,24 +293,34 @@ const Body = ({ isEditMode, data, id }) => {
|
|
|
287
293
|
title: intl.formatMessage(messages.localita),
|
|
288
294
|
},
|
|
289
295
|
]}
|
|
296
|
+
ariaControls={resultsWrapperId}
|
|
290
297
|
/>
|
|
291
298
|
</Col>
|
|
292
299
|
</Row>
|
|
293
300
|
</form>
|
|
294
301
|
|
|
295
|
-
<
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
302
|
+
<div
|
|
303
|
+
className="farmacie-results shadow"
|
|
304
|
+
role="region"
|
|
305
|
+
aria-live="polite"
|
|
306
|
+
aria-label={intl.formatMessage(messages.farmacie_results_aria)}
|
|
307
|
+
ref={resultsRef}
|
|
308
|
+
id={resultsWrapperId}
|
|
309
|
+
>
|
|
310
|
+
<Results
|
|
311
|
+
items={resultsPage}
|
|
312
|
+
isEditMode={isEditMode}
|
|
313
|
+
searchType={searchType}
|
|
306
314
|
/>
|
|
307
|
-
|
|
315
|
+
{results && results.length > b_size && (
|
|
316
|
+
<Pagination
|
|
317
|
+
activePage={currentPage}
|
|
318
|
+
totalPages={Math.ceil(results.length / b_size)}
|
|
319
|
+
onPageChange={handleQueryPaginationChange}
|
|
320
|
+
ariaControls={resultsWrapperId}
|
|
321
|
+
/>
|
|
322
|
+
)}
|
|
323
|
+
</div>
|
|
308
324
|
</Container>
|
|
309
325
|
) : (
|
|
310
326
|
<Container className="d-flex justify-content-center mt-3">
|
|
@@ -80,10 +80,6 @@ const messages = defineMessages({
|
|
|
80
80
|
id: 'search_farmacia_no_results',
|
|
81
81
|
defaultMessage: 'Nessun risultato trovato',
|
|
82
82
|
},
|
|
83
|
-
farmacie_results_aria: {
|
|
84
|
-
id: 'search_farmacia_results_aria',
|
|
85
|
-
defaultMessage: 'Risultati della ricerca farmacie',
|
|
86
|
-
},
|
|
87
83
|
});
|
|
88
84
|
|
|
89
85
|
const ContactColumns = ({ isEditMode, item, searchType }) => {
|
|
@@ -183,112 +179,104 @@ const PeriodsStructure = ({ periods }) => {
|
|
|
183
179
|
);
|
|
184
180
|
};
|
|
185
181
|
|
|
186
|
-
const Results = ({ items, isEditMode,
|
|
182
|
+
const Results = ({ items, isEditMode, searchType }) => {
|
|
187
183
|
const intl = useIntl();
|
|
188
184
|
|
|
189
185
|
return (
|
|
190
186
|
<>
|
|
191
187
|
{items?.length > 0 ? (
|
|
192
|
-
<
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
188
|
+
<Table>
|
|
189
|
+
<Table.Header>
|
|
190
|
+
<Table.Row>
|
|
191
|
+
<Table.HeaderCell>
|
|
192
|
+
{intl.formatMessage(messages.nome)} <br />
|
|
193
|
+
{intl.formatMessage(messages.nome_en)}
|
|
194
|
+
</Table.HeaderCell>
|
|
195
|
+
<Table.HeaderCell>
|
|
196
|
+
{intl.formatMessage(messages.comune)} <br />
|
|
197
|
+
{intl.formatMessage(messages.comune_en)}
|
|
198
|
+
</Table.HeaderCell>
|
|
199
|
+
<Table.HeaderCell>
|
|
200
|
+
{intl.formatMessage(messages.localita)}
|
|
201
|
+
<br />
|
|
202
|
+
{intl.formatMessage(messages.localita_en)}
|
|
203
|
+
</Table.HeaderCell>
|
|
204
|
+
<Table.HeaderCell>
|
|
205
|
+
{intl.formatMessage(messages.indirizzo)}
|
|
206
|
+
<br />
|
|
207
|
+
{intl.formatMessage(messages.indirizzo_en)}
|
|
208
|
+
</Table.HeaderCell>
|
|
209
|
+
<Table.HeaderCell>
|
|
210
|
+
{intl.formatMessage(messages.recapiti)}
|
|
211
|
+
<br />
|
|
212
|
+
{intl.formatMessage(messages.recapiti_en)}
|
|
213
|
+
</Table.HeaderCell>
|
|
214
|
+
|
|
215
|
+
{searchType === 'vacations' ? (
|
|
216
|
+
<>
|
|
217
|
+
<Table.HeaderCell>
|
|
218
|
+
{intl.formatMessage(messages.ferie)}
|
|
219
|
+
<br />
|
|
220
|
+
{intl.formatMessage(messages.ferie_en)}
|
|
221
|
+
</Table.HeaderCell>
|
|
222
|
+
</>
|
|
223
|
+
) : (
|
|
220
224
|
<Table.HeaderCell>
|
|
221
|
-
{intl.formatMessage(messages.
|
|
225
|
+
{intl.formatMessage(messages.turni)}
|
|
222
226
|
<br />
|
|
223
|
-
{intl.formatMessage(messages.
|
|
227
|
+
{intl.formatMessage(messages.turni_en)}
|
|
224
228
|
</Table.HeaderCell>
|
|
229
|
+
)}
|
|
230
|
+
</Table.Row>
|
|
231
|
+
</Table.Header>
|
|
232
|
+
<tbody>
|
|
233
|
+
{items.map((item, i) => (
|
|
234
|
+
<tr key={i}>
|
|
235
|
+
<td className="nome">
|
|
236
|
+
{item['@id'] && (
|
|
237
|
+
<p>
|
|
238
|
+
<UniversalLink
|
|
239
|
+
item={!isEditMode ? item : null}
|
|
240
|
+
href={isEditMode ? '#' : null}
|
|
241
|
+
>
|
|
242
|
+
{item.title}
|
|
243
|
+
</UniversalLink>
|
|
244
|
+
</p>
|
|
245
|
+
)}
|
|
246
|
+
</td>
|
|
247
|
+
<ContactColumns
|
|
248
|
+
isEditMode={isEditMode}
|
|
249
|
+
item={item}
|
|
250
|
+
searchType={searchType}
|
|
251
|
+
/>
|
|
252
|
+
|
|
253
|
+
{/* Periodi di turno */}
|
|
254
|
+
{searchType !== 'vacations' && (
|
|
255
|
+
<td className="turni">
|
|
256
|
+
<div className="th d-lg-none">
|
|
257
|
+
{intl.formatMessage(messages.turni)}
|
|
258
|
+
<br />
|
|
259
|
+
{intl.formatMessage(messages.turni_en)}
|
|
260
|
+
</div>
|
|
261
|
+
<PeriodsStructure periods={item.turni} />
|
|
262
|
+
</td>
|
|
263
|
+
)}
|
|
225
264
|
|
|
226
|
-
{
|
|
227
|
-
|
|
228
|
-
|
|
265
|
+
{/* Periodi di ferie */}
|
|
266
|
+
{searchType === 'vacations' && (
|
|
267
|
+
<td className="ferie">
|
|
268
|
+
<div className="th d-lg-none">
|
|
229
269
|
{intl.formatMessage(messages.ferie)}
|
|
230
270
|
<br />
|
|
231
271
|
{intl.formatMessage(messages.ferie_en)}
|
|
232
|
-
</
|
|
233
|
-
|
|
234
|
-
) : (
|
|
235
|
-
<Table.HeaderCell>
|
|
236
|
-
{intl.formatMessage(messages.turni)}
|
|
237
|
-
<br />
|
|
238
|
-
{intl.formatMessage(messages.turni_en)}
|
|
239
|
-
</Table.HeaderCell>
|
|
240
|
-
)}
|
|
241
|
-
</Table.Row>
|
|
242
|
-
</Table.Header>
|
|
243
|
-
<tbody>
|
|
244
|
-
{items.map((item, i) => (
|
|
245
|
-
<tr key={i}>
|
|
246
|
-
<td className="nome">
|
|
247
|
-
{item['@id'] && (
|
|
248
|
-
<p>
|
|
249
|
-
<UniversalLink
|
|
250
|
-
item={!isEditMode ? item : null}
|
|
251
|
-
href={isEditMode ? '#' : null}
|
|
252
|
-
>
|
|
253
|
-
{item.title}
|
|
254
|
-
</UniversalLink>
|
|
255
|
-
</p>
|
|
256
|
-
)}
|
|
272
|
+
</div>
|
|
273
|
+
<PeriodsStructure periods={item.ferie} />
|
|
257
274
|
</td>
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
{/* Periodi di turno */}
|
|
265
|
-
{searchType !== 'vacations' && (
|
|
266
|
-
<td className="turni">
|
|
267
|
-
<div className="th d-lg-none">
|
|
268
|
-
{intl.formatMessage(messages.turni)}
|
|
269
|
-
<br />
|
|
270
|
-
{intl.formatMessage(messages.turni_en)}
|
|
271
|
-
</div>
|
|
272
|
-
<PeriodsStructure periods={item.turni} />
|
|
273
|
-
</td>
|
|
274
|
-
)}
|
|
275
|
-
|
|
276
|
-
{/* Periodi di ferie */}
|
|
277
|
-
{searchType === 'vacations' && (
|
|
278
|
-
<td className="ferie">
|
|
279
|
-
<div className="th d-lg-none">
|
|
280
|
-
{intl.formatMessage(messages.ferie)}
|
|
281
|
-
<br />
|
|
282
|
-
{intl.formatMessage(messages.ferie_en)}
|
|
283
|
-
</div>
|
|
284
|
-
<PeriodsStructure periods={item.ferie} />
|
|
285
|
-
</td>
|
|
286
|
-
)}
|
|
287
|
-
</tr>
|
|
288
|
-
))}
|
|
289
|
-
</tbody>
|
|
290
|
-
</Table>
|
|
291
|
-
</div>
|
|
275
|
+
)}
|
|
276
|
+
</tr>
|
|
277
|
+
))}
|
|
278
|
+
</tbody>
|
|
279
|
+
</Table>
|
|
292
280
|
) : (
|
|
293
281
|
<div className="message px-4">
|
|
294
282
|
{intl.formatMessage(messages.no_results)}
|
|
@@ -28,6 +28,10 @@ const messages = defineMessages({
|
|
|
28
28
|
id: 'search_farmacia_searchable_text_description',
|
|
29
29
|
defaultMessage: 'Inserisci il nome della farmacia',
|
|
30
30
|
},
|
|
31
|
+
search_input_label: {
|
|
32
|
+
id: 'search_farmacia_searchable_text_label',
|
|
33
|
+
defaultMessage: 'Farmacia',
|
|
34
|
+
},
|
|
31
35
|
});
|
|
32
36
|
|
|
33
37
|
const SearchFilters = ({
|
|
@@ -54,6 +58,7 @@ const SearchFilters = ({
|
|
|
54
58
|
onChange={(v) => {
|
|
55
59
|
setFilters({ ...filters, searchableText: v });
|
|
56
60
|
}}
|
|
61
|
+
ariaLabel={intl.formatMessage(messages.search_input_label)}
|
|
57
62
|
/>
|
|
58
63
|
</Col>
|
|
59
64
|
|
|
@@ -71,6 +76,7 @@ const SearchFilters = ({
|
|
|
71
76
|
date: new Date(value).toISOString(),
|
|
72
77
|
});
|
|
73
78
|
}}
|
|
79
|
+
title=""
|
|
74
80
|
/>
|
|
75
81
|
<small className="ps-2">{intl.formatMessage(messages.date)}</small>{' '}
|
|
76
82
|
</Col>
|
|
@@ -78,7 +84,7 @@ const SearchFilters = ({
|
|
|
78
84
|
<Col lg="3">
|
|
79
85
|
<SelectInput
|
|
80
86
|
id="area_territoriale"
|
|
81
|
-
value={filters.area_territoriale}
|
|
87
|
+
value={filters.area_territoriale ?? ''}
|
|
82
88
|
placeholder={intl.formatMessage(messages.area_territoriale)}
|
|
83
89
|
onChange={(opt) => {
|
|
84
90
|
setFilters({ ...filters, area_territoriale: opt });
|
|
@@ -328,6 +328,11 @@ const SearchMapBody = ({ data, id, path, properties, block, inEditMode }) => {
|
|
|
328
328
|
};
|
|
329
329
|
|
|
330
330
|
const results_region_id = block_id + 'results-region';
|
|
331
|
+
const title =
|
|
332
|
+
data.title ??
|
|
333
|
+
(data.portal_type === 'Struttura'
|
|
334
|
+
? intl.formatMessage(messages.searchable_text_default_label_strutture)
|
|
335
|
+
: intl.formatMessage(messages.searchable_text_default_label_medici));
|
|
331
336
|
return (
|
|
332
337
|
<div className="block iosanita-block-search map">
|
|
333
338
|
<div className="strutture-search">
|
|
@@ -340,29 +345,21 @@ const SearchMapBody = ({ data, id, path, properties, block, inEditMode }) => {
|
|
|
340
345
|
}}
|
|
341
346
|
>
|
|
342
347
|
<div className="search-top">
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
348
|
+
<LinkedHeadline
|
|
349
|
+
isEditMode={inEditMode}
|
|
350
|
+
title={title}
|
|
351
|
+
id={id}
|
|
352
|
+
className={cx('h5', {
|
|
353
|
+
'visually-hidden': data.show_search_bar, //to prevent a11y issue descendant headings
|
|
354
|
+
})}
|
|
355
|
+
/>
|
|
356
|
+
|
|
351
357
|
{data.show_search_bar && (
|
|
352
358
|
<Row>
|
|
353
359
|
<Col lg={8}>
|
|
354
360
|
<SearchBar
|
|
355
361
|
id={block_id}
|
|
356
|
-
title={
|
|
357
|
-
defaultTitle={
|
|
358
|
-
data.portal_type === 'Struttura'
|
|
359
|
-
? intl.formatMessage(
|
|
360
|
-
messages.searchable_text_default_label_strutture,
|
|
361
|
-
)
|
|
362
|
-
: intl.formatMessage(
|
|
363
|
-
messages.searchable_text_default_label_medici,
|
|
364
|
-
)
|
|
365
|
-
}
|
|
362
|
+
title={title}
|
|
366
363
|
textDescription={intl.formatMessage(
|
|
367
364
|
messages.searchable_text_decription,
|
|
368
365
|
)}
|
|
@@ -211,6 +211,7 @@ const Body = ({ data, id, path, properties, inEditMode }) => {
|
|
|
211
211
|
filterKey="users"
|
|
212
212
|
sectionTitle={intl.formatMessage(messages.label_utenti)}
|
|
213
213
|
collapsable={true}
|
|
214
|
+
ariaControls={results_region_id}
|
|
214
215
|
/>
|
|
215
216
|
</div>
|
|
216
217
|
)}
|
|
@@ -224,24 +225,29 @@ const Body = ({ data, id, path, properties, inEditMode }) => {
|
|
|
224
225
|
filters={filters}
|
|
225
226
|
filterKey="topics"
|
|
226
227
|
collapsable={true}
|
|
228
|
+
ariaControls={results_region_id}
|
|
227
229
|
/>
|
|
228
230
|
</div>
|
|
229
231
|
)}
|
|
230
232
|
</Col>
|
|
231
233
|
);
|
|
232
234
|
};
|
|
233
|
-
|
|
235
|
+
const title =
|
|
236
|
+
data.title ??
|
|
237
|
+
(data.portal_type === 'Servizio'
|
|
238
|
+
? intl.formatMessage(messages.searchable_text_default_label_servizi)
|
|
239
|
+
: intl.formatMessage(messages.searchable_text_default_label_procedura));
|
|
234
240
|
return (
|
|
235
241
|
<div className="block iosanita-block-search servizi-procedure">
|
|
236
242
|
<div className="full-width bg-primary-lightest py-4">
|
|
237
243
|
<Container className="px-4">
|
|
238
244
|
{/* TITOLO DEL BLOCCO */}
|
|
239
|
-
{
|
|
245
|
+
{title && (
|
|
240
246
|
<LinkedHeadline
|
|
241
247
|
isEditMode={inEditMode}
|
|
242
|
-
title={
|
|
248
|
+
title={title}
|
|
243
249
|
id={id}
|
|
244
|
-
className="search-section-title
|
|
250
|
+
className="h5 search-section-title visually-hidden" //visually-hidden for a11y descendant headings
|
|
245
251
|
/>
|
|
246
252
|
)}
|
|
247
253
|
<form
|
|
@@ -260,16 +266,7 @@ const Body = ({ data, id, path, properties, inEditMode }) => {
|
|
|
260
266
|
<SearchBar
|
|
261
267
|
id={block_id}
|
|
262
268
|
className="w-100"
|
|
263
|
-
title={
|
|
264
|
-
defaultTitle={
|
|
265
|
-
data.portal_type === 'Servizio'
|
|
266
|
-
? intl.formatMessage(
|
|
267
|
-
messages.searchable_text_default_label_servizi,
|
|
268
|
-
)
|
|
269
|
-
: intl.formatMessage(
|
|
270
|
-
messages.searchable_text_default_label_procedura,
|
|
271
|
-
)
|
|
272
|
-
}
|
|
269
|
+
title={title}
|
|
273
270
|
textDescription={
|
|
274
271
|
data.portal_type === 'Servizio'
|
|
275
272
|
? intl.formatMessage(
|
|
@@ -361,6 +358,7 @@ const Body = ({ data, id, path, properties, inEditMode }) => {
|
|
|
361
358
|
querystringResults.total / b_size,
|
|
362
359
|
)}
|
|
363
360
|
onPageChange={handleQueryPaginationChange}
|
|
361
|
+
ariaControls={results_region_id}
|
|
364
362
|
/>
|
|
365
363
|
)}
|
|
366
364
|
</div>
|
|
@@ -44,6 +44,7 @@ class Pagination extends Component {
|
|
|
44
44
|
/** Total number of pages. */
|
|
45
45
|
totalPages: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
|
|
46
46
|
.isRequired,
|
|
47
|
+
ariaControls: PropTypes.string,
|
|
47
48
|
};
|
|
48
49
|
|
|
49
50
|
static defaultProps = {
|
|
@@ -71,8 +72,13 @@ class Pagination extends Component {
|
|
|
71
72
|
};
|
|
72
73
|
|
|
73
74
|
render() {
|
|
74
|
-
const {
|
|
75
|
-
|
|
75
|
+
const {
|
|
76
|
+
boundaryRange,
|
|
77
|
+
ellipsisItem,
|
|
78
|
+
siblingRange,
|
|
79
|
+
totalPages,
|
|
80
|
+
ariaControls,
|
|
81
|
+
} = this.props;
|
|
76
82
|
const { activePage } = this.state;
|
|
77
83
|
|
|
78
84
|
const items = createPaginationItems({
|
|
@@ -102,6 +108,7 @@ class Pagination extends Component {
|
|
|
102
108
|
ellipsisItem={ellipsisItem}
|
|
103
109
|
isPrevButtonInactive={inactivePrevButton}
|
|
104
110
|
isForwButtonInactive={inactiveForwButton}
|
|
111
|
+
ariaControls={ariaControls}
|
|
105
112
|
>
|
|
106
113
|
{value}
|
|
107
114
|
</PaginationItem>
|
|
@@ -54,6 +54,7 @@ class PaginationItem extends Component {
|
|
|
54
54
|
|
|
55
55
|
isPrevButtonInactive: PropTypes.bool,
|
|
56
56
|
isForwButtonInactive: PropTypes.bool,
|
|
57
|
+
ariaControls: PropTypes.string,
|
|
57
58
|
};
|
|
58
59
|
|
|
59
60
|
handleClick = (e) => {
|
|
@@ -75,6 +76,7 @@ class PaginationItem extends Component {
|
|
|
75
76
|
ellipsisItem,
|
|
76
77
|
isPrevButtonInactive,
|
|
77
78
|
isForwButtonInactive,
|
|
79
|
+
ariaControls,
|
|
78
80
|
} = this.props;
|
|
79
81
|
const disabled = this.props.disabled || type === 'ellipsisItem';
|
|
80
82
|
return (
|
|
@@ -84,6 +86,7 @@ class PaginationItem extends Component {
|
|
|
84
86
|
onClick={this.handleClick}
|
|
85
87
|
onKeyDown={this.handleKeyDown}
|
|
86
88
|
aria-current={active ? 'page' : null}
|
|
89
|
+
aria-controls={ariaControls}
|
|
87
90
|
>
|
|
88
91
|
{type === 'prevItem' && (
|
|
89
92
|
<>
|
|
@@ -31,6 +31,7 @@ const SearchBar = React.forwardRef(
|
|
|
31
31
|
ariaControls,
|
|
32
32
|
showSubmit = false,
|
|
33
33
|
shadow = false,
|
|
34
|
+
ariaLabel,
|
|
34
35
|
},
|
|
35
36
|
ref,
|
|
36
37
|
) => {
|
|
@@ -71,9 +72,11 @@ const SearchBar = React.forwardRef(
|
|
|
71
72
|
role="search"
|
|
72
73
|
aria-label={title ?? defaultTitle}
|
|
73
74
|
>
|
|
74
|
-
|
|
75
|
-
{
|
|
76
|
-
|
|
75
|
+
{(title || defaultTitle) && (
|
|
76
|
+
<label htmlFor={id + 'searchable-text'} className="active px-0 h5">
|
|
77
|
+
{title ?? defaultTitle}
|
|
78
|
+
</label>
|
|
79
|
+
)}
|
|
77
80
|
|
|
78
81
|
<div className={cx('input-group', { shadow: shadow })}>
|
|
79
82
|
<span className="input-group-text">
|
|
@@ -84,11 +87,12 @@ const SearchBar = React.forwardRef(
|
|
|
84
87
|
aria-describedby={id + 'searchable-text-description'}
|
|
85
88
|
id={id + 'searchable-text'}
|
|
86
89
|
className="form-control"
|
|
87
|
-
value={searchableText}
|
|
90
|
+
value={searchableText ?? ''}
|
|
88
91
|
aria-controls={ariaControls}
|
|
89
92
|
onChange={(e) => setSearchableText(e.currentTarget.value)}
|
|
90
93
|
onKeyDown={onKeyDown}
|
|
91
94
|
ref={ref}
|
|
95
|
+
aria-label={ariaLabel}
|
|
92
96
|
/>
|
|
93
97
|
{showSubmit && (
|
|
94
98
|
<div className="input-group-append">
|
|
@@ -141,7 +141,7 @@ const SearchCheckbox = ({
|
|
|
141
141
|
|
|
142
142
|
return (
|
|
143
143
|
<div className="search-checkbox">
|
|
144
|
-
<
|
|
144
|
+
<div className="text-uppercase h6">
|
|
145
145
|
{/* SECTION TITLE */}
|
|
146
146
|
{title}
|
|
147
147
|
|
|
@@ -159,7 +159,7 @@ const SearchCheckbox = ({
|
|
|
159
159
|
{activeOptions}
|
|
160
160
|
</span>
|
|
161
161
|
)}
|
|
162
|
-
</
|
|
162
|
+
</div>
|
|
163
163
|
<div className="mt-3">
|
|
164
164
|
{/* TODO: se serve, attivare anche il 'seleziona tutto' */}
|
|
165
165
|
{toggleAll && (
|
|
@@ -45,8 +45,8 @@ const Header = ({ pathname }) => {
|
|
|
45
45
|
{/* <Headers sticky={true} className={mini ? 'is-sticky' : undefined}> */}
|
|
46
46
|
<Headers
|
|
47
47
|
className={cx({
|
|
48
|
-
'is-sticky': mini
|
|
49
|
-
'it-header-sticky':
|
|
48
|
+
'is-sticky': mini, //&& !isEditMode, //rimossa condizione su isEditMode perchè creava problemi di mismatch con il server
|
|
49
|
+
'it-header-sticky': true, //!isEditMode,
|
|
50
50
|
})}
|
|
51
51
|
>
|
|
52
52
|
<HeaderSlim />
|
|
@@ -149,8 +149,9 @@ const Navigation = ({ pathname = '/', isEditMode }) => {
|
|
|
149
149
|
{/* Social Links */}
|
|
150
150
|
<HeaderSearch
|
|
151
151
|
className={cx({
|
|
152
|
-
|
|
153
|
-
'
|
|
152
|
+
//rimossa condizione su isEditMode perchè creava problemi di mismatch con il server
|
|
153
|
+
//'d-none': isEditMode,
|
|
154
|
+
'display-only-when-sticky': true, //!isEditMode,
|
|
154
155
|
})}
|
|
155
156
|
/>
|
|
156
157
|
<SocialHeader mobile={true} />
|