aloha-vue 1.2.251 → 1.2.253
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/docs/src/views/PageModal/compositionAPI/PropsAPI.js +51 -2
- package/docs/src/views/PageModal/i18n/ar.json +1 -1
- package/docs/src/views/PageModal/i18n/de.json +1 -1
- package/docs/src/views/PageModal/i18n/en.json +1 -1
- package/docs/src/views/PageModal/i18n/es.json +1 -1
- package/docs/src/views/PageModal/i18n/fr.json +1 -1
- package/docs/src/views/PageModal/i18n/hr.json +1 -1
- package/docs/src/views/PageModal/i18n/it.json +1 -1
- package/docs/src/views/PageModal/i18n/ru.json +1 -1
- package/docs/src/views/PageModalWizard/compositionAPI/PropsAPI.js +44 -2
- package/package.json +1 -1
- package/src/AModal/AModal.js +96 -34
- package/src/AModal/compositionAPI/AttributesAPI.js +11 -0
- package/src/AModal/compositionAPI/BodyHtmlAPI.js +21 -0
- package/src/AModal/compositionAPI/FocusAPI.js +33 -10
- package/src/AModal/compositionAPI/ShowModalAPI.js +2 -2
- package/src/AModal/i18n/ar.json +4 -1
- package/src/AModal/i18n/de.json +4 -1
- package/src/AModal/i18n/en.json +4 -1
- package/src/AModal/i18n/es.json +4 -1
- package/src/AModal/i18n/fr.json +4 -1
- package/src/AModal/i18n/hr.json +4 -1
- package/src/AModal/i18n/it.json +4 -1
- package/src/AModal/i18n/ru.json +4 -1
- package/src/AModalConfirm/AModalConfirm.js +1 -1
- package/src/AModalForm/AModalForm.js +59 -5
- package/src/AModalWizard/AModalWizard.js +37 -2
- package/src/plugins/AModalPlugin.js +4 -1
- package/src/styles/components/ui/ui.scss +3 -0
- package/src/ui/ALabel/ALabel.js +3 -0
|
@@ -21,6 +21,13 @@ export default function PropsAPI() {
|
|
|
21
21
|
default: `""`,
|
|
22
22
|
required: false,
|
|
23
23
|
},
|
|
24
|
+
{
|
|
25
|
+
name: "body-html-class",
|
|
26
|
+
description: "_A_MODAL_PROPS_BODY_HTML_CLASS_DESCRIPTION_",
|
|
27
|
+
type: "String / Array / Object",
|
|
28
|
+
default: undefined,
|
|
29
|
+
required: false,
|
|
30
|
+
},
|
|
24
31
|
{
|
|
25
32
|
name: "close",
|
|
26
33
|
description: "_A_MODAL_PROPS_CLOSE_DESCRIPTION_",
|
|
@@ -56,6 +63,20 @@ export default function PropsAPI() {
|
|
|
56
63
|
default: "_A_MODAL_BTN_CANCEL_",
|
|
57
64
|
required: false,
|
|
58
65
|
},
|
|
66
|
+
{
|
|
67
|
+
name: "close-button-text-screen-reader-footer",
|
|
68
|
+
description: "_A_MODAL_PROPS_CLOSE_BUTTON_TEXT_SCREEN_READER_FOOTER_DESCRIPTION_",
|
|
69
|
+
type: "String",
|
|
70
|
+
default: "_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_",
|
|
71
|
+
required: false,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "close-button-text-screen-reader-header",
|
|
75
|
+
description: "_A_MODAL_PROPS_CLOSE_BUTTON_TEXT_SCREEN_READER_HEADER_DESCRIPTION_",
|
|
76
|
+
type: "String",
|
|
77
|
+
default: "_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_",
|
|
78
|
+
required: false,
|
|
79
|
+
},
|
|
59
80
|
{
|
|
60
81
|
name: "disabled",
|
|
61
82
|
description: "_A_MODAL_PROPS_DISABLED_DESCRIPTION_",
|
|
@@ -77,6 +98,13 @@ export default function PropsAPI() {
|
|
|
77
98
|
default: undefined,
|
|
78
99
|
required: false,
|
|
79
100
|
},
|
|
101
|
+
{
|
|
102
|
+
name: "focus-start-id",
|
|
103
|
+
description: "_A_MODAL_PROPS_FOCUS_START_ID_DESCRIPTION_",
|
|
104
|
+
type: "String",
|
|
105
|
+
default: undefined,
|
|
106
|
+
required: false,
|
|
107
|
+
},
|
|
80
108
|
{
|
|
81
109
|
name: "header-tag",
|
|
82
110
|
description: "_A_MODAL_PROPS_HEADER_TAG_DESCRIPTION_",
|
|
@@ -98,6 +126,13 @@ export default function PropsAPI() {
|
|
|
98
126
|
default: undefined,
|
|
99
127
|
required: false,
|
|
100
128
|
},
|
|
129
|
+
{
|
|
130
|
+
name: "hide-header",
|
|
131
|
+
description: "_A_MODAL_PROPS_HIDE_HEADER_DESCRIPTION_",
|
|
132
|
+
type: "Boolean",
|
|
133
|
+
default: undefined,
|
|
134
|
+
required: false,
|
|
135
|
+
},
|
|
101
136
|
{
|
|
102
137
|
name: "id",
|
|
103
138
|
description: "_A_MODAL_PROPS_ID_DESCRIPTION_",
|
|
@@ -196,6 +231,13 @@ export default function PropsAPI() {
|
|
|
196
231
|
default: "_A_MODAL_BTN_SAVE_",
|
|
197
232
|
required: false,
|
|
198
233
|
},
|
|
234
|
+
{
|
|
235
|
+
name: "save-button-text-screen-reader",
|
|
236
|
+
description: "_A_MODAL_PROPS_SAVE_BUTTON_TEXT_SCREEN_READER_DESCRIPTION_",
|
|
237
|
+
type: "String",
|
|
238
|
+
default: "_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_",
|
|
239
|
+
required: false,
|
|
240
|
+
},
|
|
199
241
|
{
|
|
200
242
|
name: "selector-close",
|
|
201
243
|
description: "_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_",
|
|
@@ -211,8 +253,8 @@ export default function PropsAPI() {
|
|
|
211
253
|
required: false,
|
|
212
254
|
},
|
|
213
255
|
{
|
|
214
|
-
name: "show-close-button",
|
|
215
|
-
description: "
|
|
256
|
+
name: "show-close-button-header",
|
|
257
|
+
description: "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_",
|
|
216
258
|
type: "Boolean",
|
|
217
259
|
default: true,
|
|
218
260
|
required: false,
|
|
@@ -238,6 +280,13 @@ export default function PropsAPI() {
|
|
|
238
280
|
default: true,
|
|
239
281
|
required: false,
|
|
240
282
|
},
|
|
283
|
+
{
|
|
284
|
+
name: "use-focus-on-start",
|
|
285
|
+
description: "_A_MODAL_PROPS_USE_FOCUS_ON_START_DESCRIPTION_",
|
|
286
|
+
type: "Boolean",
|
|
287
|
+
default: true,
|
|
288
|
+
required: false,
|
|
289
|
+
},
|
|
241
290
|
{
|
|
242
291
|
name: "z-index",
|
|
243
292
|
description: "_A_MODAL_PROPS_Z_INDEX_DESCRIPTION_",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "الوظيفة التي تمكن من الحفظ في العرض المودال.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "محدد التركيز لضمان عدم فقدان التركيز في المستعرض عند إغلاق العرض المودال.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "معرف أو معرفات للتركيز لضمان عدم فقدان التركيز في المستعرض عند إغلاق العرض المودال.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "يحدد ما إذا كان سيتم عرض زر الإغلاق (\"x\") في رأس نافذة المودال.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "حجم العرض المودال (صغير، كبير، كبير جداً، كبير جداً جداً، كامل الشاشة).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "يضيف حدث النقر مع stopPropagation إلى العنصر الأب لنافذة المودال لمنع الحدث من الانتشار.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "يُحدد ما إذا كان يمكن لمفتاح الإفلات (Escape) إغلاق العرض المودال.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "Die Funktion, die das Speichern im Modal ermöglicht.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "Der Fokus-Selektor, um sicherzustellen, dass der Fokus im Browser nicht verloren geht, wenn das Modal geschlossen wird.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "Die ID oder IDs für den Fokus, um sicherzustellen, dass der Fokus im Browser nicht verloren geht, wenn das Modal geschlossen wird.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "Legt fest, ob die Schaltfläche zum Schließen (\"x\") im Kopfbereich des Modalfensters angezeigt werden soll.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "Die Größe des Modals (small, large, xl, xxl, fullscreen).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "Fügt dem Elternelement des Modalfensters ein Klickereignis mit stopPropagation hinzu, um zu verhindern, dass das Ereignis weiter propagiert wird.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "Legt fest, ob die Escape-Taste das Modal schließen kann.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "The function that enables saving in the modal.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "The focus selector to ensure that focus is not lost in the browser when the modal is closed.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "The ID or IDs for focus to ensure that focus is not lost in the browser when the modal is closed.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "Determines whether to display the close button (\"x\") in the header of the modal window.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "The size of the modal (small, large, xl, xxl, fullscreen).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "Adds a click event with stopPropagation to the modal window's parent element to prevent the event from propagating further.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "Specifies whether the Escape key can close the modal.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "La función que permite guardar en la ventana modal.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "El selector de enfoque para asegurar que no se pierda el enfoque en el navegador al cerrar la ventana modal.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "El ID o IDs para el enfoque para asegurar que no se pierda el enfoque en el navegador al cerrar la ventana modal.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "Determina si se debe mostrar el botón de cerrar (\"x\") en el encabezado de la ventana modal.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "El tamaño de la ventana modal (pequeño, grande, xl, xxl, pantalla completa).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "Añade un evento de clic con stopPropagation al elemento padre de la ventana modal para evitar que el evento se propague más.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "Especifica si la tecla Escape puede cerrar la ventana modal.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "La fonction qui permet de sauvegarder dans la fenêtre modale.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "Le sélecteur de focus pour s'assurer que le focus n'est pas perdu dans le navigateur lors de la fermeture de la fenêtre modale.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "L'ID ou les ID pour le focus afin de s'assurer que le focus n'est pas perdu dans le navigateur lors de la fermeture de la fenêtre modale.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "Détermine s'il faut afficher le bouton de fermeture (\"x\") dans l'en-tête de la fenêtre modale.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "La taille de la fenêtre modale (petite, grande, xl, xxl, plein écran).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "Ajoute un événement de clic avec stopPropagation à l'élément parent de la fenêtre modale pour empêcher la propagation de l'événement.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "Spécifie si la touche Échap peut fermer la fenêtre modale.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "Funkcija koja omogućuje spremanje u modalu.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "Selektor fokusa kako bi se osiguralo da se fokus ne izgubli u pregledniku nakon zatvaranja modalnog prozora.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "Jedan više ili ID-jeva za fokus kako bi se osiguralo da fokus nije izgubljen u pregledniku kada se modalni prozor zatvori.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "Određuje treba li prikazati gumb za zatvaranje (\"x\") u zaglavlju prozora modala.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "Veličina modalnog prozora (small, large, xl, xxl, fullscreen).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "Dodaje događaj klika sa stopPropagation na roditeljski element prozora modala kako bi se spriječilo daljnje širenje događaja.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "Određuje može li tipka Esc zatvoriti modalni prozor.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "La funzione che consente di salvare nella finestra modale.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "Il selettore di focus per assicurare che il focus non venga perso nel browser quando viene chiusa la finestra modale.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "L'ID o gli ID per il focus per assicurare che il focus non venga perso nel browser quando viene chiusa la finestra modale.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "Determina se visualizzare il pulsante di chiusura (\"x\") nell'intestazione della finestra modale.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "Le dimensioni della finestra modale (piccola, grande, xl, xxl, schermo intero).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "Aggiunge un evento di clic con stopPropagation all'elemento padre della finestra modale per impedire che l'evento si propaghi ulteriormente.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "Specifica se il tasto Esc può chiudere la finestra modale.",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"_A_MODAL_PROPS_SAVE_DESCRIPTION_": "Функция, позволяющая сохранить в модальном окне.",
|
|
49
49
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_": "Селектор фокуса для предотвращения потери фокуса в браузере после закрытия модального окна.",
|
|
50
50
|
"_A_MODAL_PROPS_SELECTOR_CLOSE_IDS_DESCRIPTION_": "Идентификатор или идентификаторы для установки фокуса и предотвращения потери фокуса в браузере после закрытия модального окна.",
|
|
51
|
-
"
|
|
51
|
+
"_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_": "Определяет, следует ли отображать кнопку закрытия (\"x\") в заголовке модального окна.",
|
|
52
52
|
"_A_MODAL_PROPS_SIZE_DESCRIPTION_": "Размер модального окна (small, large, xl, xxl, fullscreen).",
|
|
53
53
|
"_A_MODAL_PROPS_STOP_DESCRIPTION_": "Добавляет событие клика с stopPropagation к родительскому элементу модального окна, чтобы предотвратить дальнейшее распространение события.",
|
|
54
54
|
"_A_MODAL_PROPS_USE_ESCAPE_DESCRIPTION_": "Определяет, может ли клавиша Escape закрыть модальное окно.",
|
|
@@ -50,6 +50,20 @@ export default function PropsAPI() {
|
|
|
50
50
|
default: "_A_MODAL_BTN_CANCEL_",
|
|
51
51
|
required: false,
|
|
52
52
|
},
|
|
53
|
+
{
|
|
54
|
+
name: "close-button-text-screen-reader-footer",
|
|
55
|
+
description: "_A_MODAL_PROPS_CLOSE_BUTTON_TEXT_SCREEN_READER_FOOTER_DESCRIPTION_",
|
|
56
|
+
type: "String",
|
|
57
|
+
default: "_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_",
|
|
58
|
+
required: false,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "close-button-text-screen-reader-header",
|
|
62
|
+
description: "_A_MODAL_PROPS_CLOSE_BUTTON_TEXT_SCREEN_READER_HEADER_DESCRIPTION_",
|
|
63
|
+
type: "String",
|
|
64
|
+
default: "_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_",
|
|
65
|
+
required: false,
|
|
66
|
+
},
|
|
53
67
|
{
|
|
54
68
|
name: "disabled",
|
|
55
69
|
description: "_A_MODAL_PROPS_DISABLED_DESCRIPTION_",
|
|
@@ -71,6 +85,13 @@ export default function PropsAPI() {
|
|
|
71
85
|
default: undefined,
|
|
72
86
|
required: false,
|
|
73
87
|
},
|
|
88
|
+
{
|
|
89
|
+
name: "focus-start-id",
|
|
90
|
+
description: "_A_MODAL_PROPS_FOCUS_START_ID_DESCRIPTION_",
|
|
91
|
+
type: "String",
|
|
92
|
+
default: undefined,
|
|
93
|
+
required: false,
|
|
94
|
+
},
|
|
74
95
|
{
|
|
75
96
|
name: "header-tag",
|
|
76
97
|
description: "_A_MODAL_PROPS_HEADER_TAG_DESCRIPTION_",
|
|
@@ -85,6 +106,13 @@ export default function PropsAPI() {
|
|
|
85
106
|
default: undefined,
|
|
86
107
|
required: false,
|
|
87
108
|
},
|
|
109
|
+
{
|
|
110
|
+
name: "hide-header",
|
|
111
|
+
description: "_A_MODAL_PROPS_HIDE_HEADER_DESCRIPTION_",
|
|
112
|
+
type: "Boolean",
|
|
113
|
+
default: undefined,
|
|
114
|
+
required: false,
|
|
115
|
+
},
|
|
88
116
|
{
|
|
89
117
|
name: "is-close-button-hide",
|
|
90
118
|
description: "_A_MODAL_PROPS_IS_CLOSE_BUTTON_HIDE_DESCRIPTION_",
|
|
@@ -162,6 +190,13 @@ export default function PropsAPI() {
|
|
|
162
190
|
default: "_A_MODAL_BTN_SAVE_",
|
|
163
191
|
required: false,
|
|
164
192
|
},
|
|
193
|
+
{
|
|
194
|
+
name: "save-button-text-screen-reader",
|
|
195
|
+
description: "_A_MODAL_PROPS_SAVE_BUTTON_TEXT_SCREEN_READER_DESCRIPTION_",
|
|
196
|
+
type: "String",
|
|
197
|
+
default: "_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_",
|
|
198
|
+
required: false,
|
|
199
|
+
},
|
|
165
200
|
{
|
|
166
201
|
name: "selector-close",
|
|
167
202
|
description: "_A_MODAL_PROPS_SELECTOR_CLOSE_DESCRIPTION_",
|
|
@@ -177,8 +212,8 @@ export default function PropsAPI() {
|
|
|
177
212
|
required: false,
|
|
178
213
|
},
|
|
179
214
|
{
|
|
180
|
-
name: "show-close-button",
|
|
181
|
-
description: "
|
|
215
|
+
name: "show-close-button-header",
|
|
216
|
+
description: "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_HEADER_DESCRIPTION_",
|
|
182
217
|
type: "Boolean",
|
|
183
218
|
default: true,
|
|
184
219
|
required: false,
|
|
@@ -204,6 +239,13 @@ export default function PropsAPI() {
|
|
|
204
239
|
default: true,
|
|
205
240
|
required: false,
|
|
206
241
|
},
|
|
242
|
+
{
|
|
243
|
+
name: "use-focus-on-start",
|
|
244
|
+
description: "_A_MODAL_PROPS_USE_FOCUS_ON_START_DESCRIPTION_",
|
|
245
|
+
type: "Boolean",
|
|
246
|
+
default: true,
|
|
247
|
+
required: false,
|
|
248
|
+
},
|
|
207
249
|
{
|
|
208
250
|
name: "z-index",
|
|
209
251
|
description: "_A_MODAL_PROPS_Z_INDEX_DESCRIPTION_",
|
package/package.json
CHANGED
package/src/AModal/AModal.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
watch,
|
|
9
9
|
} from "vue";
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import AElement from "../AElement/AElement";
|
|
12
12
|
import ALoading from "../ALoading/ALoading";
|
|
13
13
|
import ATranslation from "../ATranslation/ATranslation";
|
|
14
14
|
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
uniqueId,
|
|
31
31
|
} from "lodash-es";
|
|
32
32
|
import AttributesAPI from "./compositionAPI/AttributesAPI";
|
|
33
|
+
import BodyHtmlAPI from "./compositionAPI/BodyHtmlAPI";
|
|
33
34
|
|
|
34
35
|
// @vue/component
|
|
35
36
|
export default {
|
|
@@ -50,6 +51,11 @@ export default {
|
|
|
50
51
|
required: false,
|
|
51
52
|
default: "",
|
|
52
53
|
},
|
|
54
|
+
bodyHtmlClass: {
|
|
55
|
+
type: [String, Array, Object],
|
|
56
|
+
required: false,
|
|
57
|
+
default: undefined,
|
|
58
|
+
},
|
|
53
59
|
close: {
|
|
54
60
|
type: Function,
|
|
55
61
|
required: true,
|
|
@@ -74,6 +80,16 @@ export default {
|
|
|
74
80
|
required: false,
|
|
75
81
|
default: () => modalPluginOptions.value.propsDefault.closeButtonText,
|
|
76
82
|
},
|
|
83
|
+
closeButtonTextScreenReaderFooter: {
|
|
84
|
+
type: String,
|
|
85
|
+
required: false,
|
|
86
|
+
default: () => modalPluginOptions.value.propsDefault.closeButtonTextScreenReaderFooter,
|
|
87
|
+
},
|
|
88
|
+
closeButtonTextScreenReaderHeader: {
|
|
89
|
+
type: String,
|
|
90
|
+
required: false,
|
|
91
|
+
default: () => modalPluginOptions.value.propsDefault.closeButtonTextScreenReaderHeader,
|
|
92
|
+
},
|
|
77
93
|
disabled: {
|
|
78
94
|
type: Boolean,
|
|
79
95
|
required: false,
|
|
@@ -89,6 +105,11 @@ export default {
|
|
|
89
105
|
required: false,
|
|
90
106
|
default: undefined,
|
|
91
107
|
},
|
|
108
|
+
focusStartId: {
|
|
109
|
+
type: String,
|
|
110
|
+
required: false,
|
|
111
|
+
default: undefined,
|
|
112
|
+
},
|
|
92
113
|
headerTag: {
|
|
93
114
|
type: String,
|
|
94
115
|
required: false,
|
|
@@ -103,6 +124,10 @@ export default {
|
|
|
103
124
|
type: Boolean,
|
|
104
125
|
required: false,
|
|
105
126
|
},
|
|
127
|
+
hideHeader: {
|
|
128
|
+
type: Boolean,
|
|
129
|
+
required: false,
|
|
130
|
+
},
|
|
106
131
|
id: {
|
|
107
132
|
type: String,
|
|
108
133
|
required: false,
|
|
@@ -171,6 +196,11 @@ export default {
|
|
|
171
196
|
required: false,
|
|
172
197
|
default: () => modalPluginOptions.value.propsDefault.saveButtonText,
|
|
173
198
|
},
|
|
199
|
+
saveButtonTextScreenReader: {
|
|
200
|
+
type: String,
|
|
201
|
+
required: false,
|
|
202
|
+
default: () => modalPluginOptions.value.propsDefault.saveButtonTextScreenReader,
|
|
203
|
+
},
|
|
174
204
|
selectorClose: {
|
|
175
205
|
type: [String, Array],
|
|
176
206
|
required: false,
|
|
@@ -181,7 +211,7 @@ export default {
|
|
|
181
211
|
required: false,
|
|
182
212
|
default: () => modalPluginOptions.value.propsDefault.selectorCloseIds,
|
|
183
213
|
},
|
|
184
|
-
|
|
214
|
+
showCloseButtonHeader: {
|
|
185
215
|
type: Boolean,
|
|
186
216
|
required: false,
|
|
187
217
|
default: true,
|
|
@@ -200,6 +230,11 @@ export default {
|
|
|
200
230
|
required: false,
|
|
201
231
|
default: () => modalPluginOptions.value.propsDefault.useEscape,
|
|
202
232
|
},
|
|
233
|
+
useFocusOnStart: {
|
|
234
|
+
type: Boolean,
|
|
235
|
+
required: false,
|
|
236
|
+
default: true,
|
|
237
|
+
},
|
|
203
238
|
zIndex: {
|
|
204
239
|
type: Number,
|
|
205
240
|
required: false,
|
|
@@ -209,12 +244,17 @@ export default {
|
|
|
209
244
|
setup(props) {
|
|
210
245
|
const isModalHidden = toRef(props, "isModalHidden");
|
|
211
246
|
|
|
247
|
+
const {
|
|
248
|
+
bodyHtmlId,
|
|
249
|
+
} = BodyHtmlAPI(props);
|
|
250
|
+
|
|
212
251
|
const {
|
|
213
252
|
destroyEventBusCloseFromOutside,
|
|
214
253
|
initEventBusCloseFromOutside,
|
|
215
254
|
} = CloseFromOutsideAPI(props);
|
|
216
255
|
|
|
217
256
|
const {
|
|
257
|
+
headerId,
|
|
218
258
|
stylesBackdrop,
|
|
219
259
|
stylesZIndexModal,
|
|
220
260
|
} = AttributesAPI(props);
|
|
@@ -230,7 +270,7 @@ export default {
|
|
|
230
270
|
const {
|
|
231
271
|
modalRef,
|
|
232
272
|
modalWrapperRef,
|
|
233
|
-
|
|
273
|
+
setFocusByShowModal,
|
|
234
274
|
trapFocus,
|
|
235
275
|
} = FocusAPI(props);
|
|
236
276
|
|
|
@@ -253,7 +293,7 @@ export default {
|
|
|
253
293
|
const {
|
|
254
294
|
showModal,
|
|
255
295
|
} = ShowModalAPI(props, {
|
|
256
|
-
|
|
296
|
+
setFocusByShowModal,
|
|
257
297
|
setListenerForKeydown,
|
|
258
298
|
});
|
|
259
299
|
|
|
@@ -291,11 +331,12 @@ export default {
|
|
|
291
331
|
});
|
|
292
332
|
|
|
293
333
|
return {
|
|
334
|
+
bodyHtmlId,
|
|
294
335
|
clickWrapperStoppPropagationEventMap,
|
|
295
336
|
disabledLocal,
|
|
337
|
+
headerId,
|
|
296
338
|
modalRef,
|
|
297
339
|
modalWrapperRef,
|
|
298
|
-
setFocusToModal,
|
|
299
340
|
sizeClass,
|
|
300
341
|
stylesBackdrop,
|
|
301
342
|
stylesZIndexModal,
|
|
@@ -320,25 +361,29 @@ export default {
|
|
|
320
361
|
class: "a_modal_footer_actions",
|
|
321
362
|
}, [
|
|
322
363
|
this.$slots.modalFooterPrepend && this.$slots.modalFooterPrepend(),
|
|
323
|
-
(!this.isSaveButtonHide && this.save) && h(
|
|
364
|
+
(!this.isSaveButtonHide && this.save) && h(AElement, {
|
|
324
365
|
id: this.saveButtonId,
|
|
325
366
|
alwaysTranslate: this.alwaysTranslate,
|
|
326
367
|
class: this.saveButtonClass,
|
|
327
368
|
disabled: this.disabledLocal || this.disabledSave,
|
|
328
369
|
extra: this.extra,
|
|
329
370
|
html: this.saveButtonText,
|
|
371
|
+
textAriaHidden: true,
|
|
372
|
+
textScreenReader: this.saveButtonTextScreenReader,
|
|
330
373
|
type: "button",
|
|
331
374
|
...this.saveButtonAttributes,
|
|
332
375
|
onClick: this.save,
|
|
333
376
|
}),
|
|
334
|
-
!this.isCloseButtonHide && h(
|
|
377
|
+
!this.isCloseButtonHide && h(AElement, {
|
|
335
378
|
id: this.closeButtonId,
|
|
336
379
|
alwaysTranslate: this.alwaysTranslate,
|
|
337
|
-
type: "button",
|
|
338
380
|
class: this.closeButtonClass,
|
|
339
381
|
disabled: this.disabledLocal,
|
|
340
|
-
html: this.closeButtonText,
|
|
341
382
|
extra: this.extra,
|
|
383
|
+
html: this.closeButtonText,
|
|
384
|
+
textAriaHidden: true,
|
|
385
|
+
textScreenReader: this.closeButtonTextScreenReaderFooter,
|
|
386
|
+
type: "button",
|
|
342
387
|
...this.closeButtonAttributes,
|
|
343
388
|
onClick: () => this.close(true),
|
|
344
389
|
}),
|
|
@@ -363,9 +408,10 @@ export default {
|
|
|
363
408
|
a_modal_confirm: this.isConfirm,
|
|
364
409
|
a_modal_show: !this.isModalHidden
|
|
365
410
|
}],
|
|
366
|
-
tabindex: -1,
|
|
367
411
|
role: "dialog",
|
|
368
412
|
ariaModal: true,
|
|
413
|
+
"aria-labelledby": this.headerId,
|
|
414
|
+
"aria-describedby": this.bodyHtmlId,
|
|
369
415
|
style: [
|
|
370
416
|
this.modalStyle,
|
|
371
417
|
this.stylesZIndexModal,
|
|
@@ -383,30 +429,44 @@ export default {
|
|
|
383
429
|
},
|
|
384
430
|
],
|
|
385
431
|
}, [
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
this.$slots.modalHeader && this.$slots.modalHeader(),
|
|
391
|
-
this.headerText && h(this.headerTag, {
|
|
392
|
-
class: "a_modal_title",
|
|
432
|
+
!this.hideHeader ?
|
|
433
|
+
h("div", {
|
|
434
|
+
ref: "modal_header",
|
|
435
|
+
class: "a_modal_header",
|
|
393
436
|
}, [
|
|
394
|
-
h(
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
437
|
+
h("div", {
|
|
438
|
+
id: this.headerId,
|
|
439
|
+
}, [
|
|
440
|
+
this.$slots.modalHeader ?
|
|
441
|
+
this.$slots.modalHeader() :
|
|
442
|
+
"",
|
|
443
|
+
this.headerText ?
|
|
444
|
+
h(this.headerTag, {
|
|
445
|
+
class: "a_modal_title",
|
|
446
|
+
}, [
|
|
447
|
+
h(ATranslation, {
|
|
448
|
+
alwaysTranslate: this.alwaysTranslate,
|
|
449
|
+
tag: "span",
|
|
450
|
+
html: this.headerText,
|
|
451
|
+
extra: this.extra,
|
|
452
|
+
}),
|
|
453
|
+
]) :
|
|
454
|
+
"",
|
|
455
|
+
]),
|
|
456
|
+
|
|
457
|
+
this.showCloseButtonHeader ?
|
|
458
|
+
h(AElement, {
|
|
459
|
+
alwaysTranslate: this.alwaysTranslate,
|
|
460
|
+
class: "a_btn_close",
|
|
461
|
+
disabled: this.disabledLocal,
|
|
462
|
+
textScreenReader: this.closeButtonTextScreenReaderHeader,
|
|
463
|
+
title: this.closeButtonTextScreenReaderHeader,
|
|
464
|
+
type: "button",
|
|
465
|
+
onClick: () => this.close(true),
|
|
466
|
+
}) :
|
|
467
|
+
"",
|
|
468
|
+
]) :
|
|
469
|
+
"",
|
|
410
470
|
h("div", {
|
|
411
471
|
ref: "modal_body",
|
|
412
472
|
class: "a_modal_body",
|
|
@@ -415,12 +475,14 @@ export default {
|
|
|
415
475
|
ref: "modal_body",
|
|
416
476
|
class: "a_modal_body__content",
|
|
417
477
|
}, [
|
|
418
|
-
this.$slots.modalBody && this.$slots.modalBody(),
|
|
419
478
|
this.bodyHtml && h(ATranslation, {
|
|
479
|
+
id: this.bodyHtmlId,
|
|
420
480
|
alwaysTranslate: this.alwaysTranslate,
|
|
481
|
+
class: this.bodyHtmlClass,
|
|
421
482
|
html: this.bodyHtml,
|
|
422
483
|
extra: this.extra,
|
|
423
484
|
}),
|
|
485
|
+
this.$slots.modalBody && this.$slots.modalBody(),
|
|
424
486
|
]),
|
|
425
487
|
this.isFooterSticky ?
|
|
426
488
|
FOOTER :
|
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
|
|
6
6
|
export default function AttributesAPI(props) {
|
|
7
7
|
const backdropZIndex = toRef(props, "backdropZIndex");
|
|
8
|
+
const hideHeader = toRef(props, "hideHeader");
|
|
9
|
+
const id = toRef(props, "id");
|
|
8
10
|
const zIndex = toRef(props, "zIndex");
|
|
9
11
|
|
|
10
12
|
const stylesZIndexModal = computed(() => {
|
|
@@ -27,7 +29,16 @@ export default function AttributesAPI(props) {
|
|
|
27
29
|
return STYLES;
|
|
28
30
|
});
|
|
29
31
|
|
|
32
|
+
const headerId = computed(() => {
|
|
33
|
+
if (hideHeader.value) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return `${ id.value }_header`;
|
|
38
|
+
});
|
|
39
|
+
|
|
30
40
|
return {
|
|
41
|
+
headerId,
|
|
31
42
|
stylesBackdrop,
|
|
32
43
|
stylesZIndexModal,
|
|
33
44
|
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
computed,
|
|
3
|
+
toRef,
|
|
4
|
+
} from "vue";
|
|
5
|
+
|
|
6
|
+
export default function BodyHtmlAPI(props) {
|
|
7
|
+
const bodyHtml = toRef(props, "bodyHtml");
|
|
8
|
+
const id = toRef(props, "id");
|
|
9
|
+
|
|
10
|
+
const bodyHtmlId = computed(() => {
|
|
11
|
+
if (!bodyHtml.value) {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return `${ id.value }_body_html`;
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
bodyHtmlId,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -1,19 +1,45 @@
|
|
|
1
1
|
import {
|
|
2
|
-
ref,
|
|
2
|
+
ref, toRef,
|
|
3
3
|
} from "vue";
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
focusableSelector,
|
|
7
7
|
} from "../../const/AFocusableElements";
|
|
8
8
|
|
|
9
|
-
export default function FocusAPI() {
|
|
9
|
+
export default function FocusAPI(props) {
|
|
10
|
+
const focusStartId = toRef(props, "focusStartId");
|
|
11
|
+
const useFocusOnStart = toRef(props, "focusStartId");
|
|
12
|
+
|
|
10
13
|
const modalRef = ref(undefined);
|
|
11
14
|
const modalWrapperRef = ref(undefined);
|
|
12
15
|
|
|
13
|
-
const
|
|
16
|
+
const setFocusToElementWithFocusStartId = () => {
|
|
17
|
+
const element = document.getElementById(focusStartId.value);
|
|
18
|
+
|
|
19
|
+
if (element) {
|
|
20
|
+
element.focus();
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const setFocusToFirstElement = () => {
|
|
25
|
+
const FOCUSABLE_ELEMENTS = modalWrapperRef.value?.querySelectorAll(focusableSelector) || [];
|
|
26
|
+
if (FOCUSABLE_ELEMENTS.length === 0) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
FOCUSABLE_ELEMENTS[0].focus();
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const setFocusByShowModal = () => {
|
|
14
34
|
setTimeout(() => {
|
|
15
|
-
if (
|
|
16
|
-
|
|
35
|
+
if (useFocusOnStart.value) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (focusStartId.value) {
|
|
40
|
+
setFocusToElementWithFocusStartId();
|
|
41
|
+
} else {
|
|
42
|
+
setFocusToFirstElement();
|
|
17
43
|
}
|
|
18
44
|
});
|
|
19
45
|
};
|
|
@@ -28,15 +54,12 @@ export default function FocusAPI() {
|
|
|
28
54
|
const LAST_FOCUSABLE_ELEMENT = FOCUSABLE_ELEMENTS[FOCUSABLE_ELEMENTS.length - 1];
|
|
29
55
|
if (EVENT.shiftKey) { // Shift + Tab
|
|
30
56
|
if (document.activeElement === FIRST_FOCUSABLE_ELEMENT) {
|
|
31
|
-
setFocusToModal();
|
|
32
|
-
EVENT.preventDefault();
|
|
33
|
-
} else if (document.activeElement === modalRef.value) { // Focus in .modal
|
|
34
57
|
LAST_FOCUSABLE_ELEMENT.focus();
|
|
35
58
|
EVENT.preventDefault();
|
|
36
59
|
}
|
|
37
60
|
} else { // Tab
|
|
38
61
|
if (document.activeElement === LAST_FOCUSABLE_ELEMENT) {
|
|
39
|
-
|
|
62
|
+
FIRST_FOCUSABLE_ELEMENT.focus();
|
|
40
63
|
EVENT.preventDefault();
|
|
41
64
|
}
|
|
42
65
|
}
|
|
@@ -45,7 +68,7 @@ export default function FocusAPI() {
|
|
|
45
68
|
return {
|
|
46
69
|
modalRef,
|
|
47
70
|
modalWrapperRef,
|
|
48
|
-
|
|
71
|
+
setFocusByShowModal,
|
|
49
72
|
trapFocus,
|
|
50
73
|
};
|
|
51
74
|
}
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "vue";
|
|
4
4
|
|
|
5
5
|
export default function ShowModalAPI(props, {
|
|
6
|
-
|
|
6
|
+
setFocusByShowModal = () => {},
|
|
7
7
|
setListenerForKeydown = () => {},
|
|
8
8
|
}) {
|
|
9
9
|
const isModalHidden = toRef(props, "isModalHidden");
|
|
@@ -13,7 +13,7 @@ export default function ShowModalAPI(props, {
|
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
document.body.classList.add("a_modal_open");
|
|
16
|
-
|
|
16
|
+
setFocusByShowModal();
|
|
17
17
|
setListenerForKeydown();
|
|
18
18
|
};
|
|
19
19
|
|
package/src/AModal/i18n/ar.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "قطع",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "حفظ"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "حفظ",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "إغلاق النافذة المنبثقة (موجودة في الرأس)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "إغلاق النافذة المنبثقة (موجودة في التذييل)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "حفظ البيانات في النافذة المنبثقة"
|
|
4
7
|
}
|
package/src/AModal/i18n/de.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "Abbrechen",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "Speichern"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "Speichern",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "Modales Fenster schließen (im Header angeordnet)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "Modales Fenster schließen (im Footer angeordnet)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "Daten im modalen Fenster speichern"
|
|
4
7
|
}
|
package/src/AModal/i18n/en.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "cancel",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "save"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "save",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "Close modal window (located in the header)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "Close modal window (located in the footer)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "Save data in the modal window"
|
|
4
7
|
}
|
package/src/AModal/i18n/es.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "Interrumpir",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "Guardar"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "Guardar",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "Cerrar ventana modal (ubicada en el encabezado)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "Cerrar ventana modal (ubicada en el pie de página)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "Guardar los datos en la ventana modal"
|
|
4
7
|
}
|
package/src/AModal/i18n/fr.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "Interrompre",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "Enregistrer"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "Enregistrer",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "Fermer la fenêtre modale (située dans l'en-tête)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "Fermer la fenêtre modale (située dans le pied de page)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "Enregistrer les données dans la fenêtre modale"
|
|
4
7
|
}
|
package/src/AModal/i18n/hr.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "Odustani",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "Spremi"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "Spremi",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "Zatvori modalni prozor (smještena u zaglavlju)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "Zatvori modalni prozor (smještena u podnožju)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "Spremi podatke u modalnom prozoru"
|
|
4
7
|
}
|
package/src/AModal/i18n/it.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "Interrompere",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "Salva"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "Salva",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "Chiudi finestra modale (situata nell'intestazione)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "Chiudi finestra modale (situata nel piè di pagina)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "Salva i dati nella finestra modale"
|
|
4
7
|
}
|
package/src/AModal/i18n/ru.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_A_MODAL_BTN_CANCEL_": "Прервать",
|
|
3
|
-
"_A_MODAL_BTN_SAVE_": "Сохранить"
|
|
3
|
+
"_A_MODAL_BTN_SAVE_": "Сохранить",
|
|
4
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_": "Закрыть модальное окно (расположена в хедере)",
|
|
5
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_": "Закрыть модальное окно (расположена в футере)",
|
|
6
|
+
"_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_": "Сохранить данные в модальном окне"
|
|
4
7
|
}
|
|
@@ -6,6 +6,7 @@ import AForm from "../ui/AForm/AForm";
|
|
|
6
6
|
import AModal from "../AModal/AModal";
|
|
7
7
|
import ATranslation from "../ATranslation/ATranslation";
|
|
8
8
|
|
|
9
|
+
import BodyHtmlAPI from "../AModal/compositionAPI/BodyHtmlAPI";
|
|
9
10
|
import DataFormAPI from "./compositionAPI/DataFormAPI";
|
|
10
11
|
import UpdateModalAPI from "./compositionAPI/UpdateModalAPI";
|
|
11
12
|
|
|
@@ -35,6 +36,11 @@ export default {
|
|
|
35
36
|
required: false,
|
|
36
37
|
default: "",
|
|
37
38
|
},
|
|
39
|
+
bodyHtmlClass: {
|
|
40
|
+
type: [String, Array, Object],
|
|
41
|
+
required: false,
|
|
42
|
+
default: undefined,
|
|
43
|
+
},
|
|
38
44
|
close: {
|
|
39
45
|
type: Function,
|
|
40
46
|
required: true,
|
|
@@ -54,6 +60,16 @@ export default {
|
|
|
54
60
|
required: false,
|
|
55
61
|
default: () => modalPluginOptions.value.propsDefault.closeButtonText,
|
|
56
62
|
},
|
|
63
|
+
closeButtonTextScreenReaderFooter: {
|
|
64
|
+
type: String,
|
|
65
|
+
required: false,
|
|
66
|
+
default: () => modalPluginOptions.value.propsDefault.closeButtonTextScreenReaderFooter,
|
|
67
|
+
},
|
|
68
|
+
closeButtonTextScreenReaderHeader: {
|
|
69
|
+
type: String,
|
|
70
|
+
required: false,
|
|
71
|
+
default: () => modalPluginOptions.value.propsDefault.closeButtonTextScreenReaderHeader,
|
|
72
|
+
},
|
|
57
73
|
dataForm: {
|
|
58
74
|
type: Array,
|
|
59
75
|
required: false,
|
|
@@ -79,6 +95,11 @@ export default {
|
|
|
79
95
|
required: false,
|
|
80
96
|
default: undefined,
|
|
81
97
|
},
|
|
98
|
+
focusStartId: {
|
|
99
|
+
type: String,
|
|
100
|
+
required: false,
|
|
101
|
+
default: undefined,
|
|
102
|
+
},
|
|
82
103
|
headerTag: {
|
|
83
104
|
type: String,
|
|
84
105
|
required: false,
|
|
@@ -89,6 +110,14 @@ export default {
|
|
|
89
110
|
required: false,
|
|
90
111
|
default: undefined,
|
|
91
112
|
},
|
|
113
|
+
hideFooter: {
|
|
114
|
+
type: Boolean,
|
|
115
|
+
required: false,
|
|
116
|
+
},
|
|
117
|
+
hideHeader: {
|
|
118
|
+
type: Boolean,
|
|
119
|
+
required: false,
|
|
120
|
+
},
|
|
92
121
|
id: {
|
|
93
122
|
type: String,
|
|
94
123
|
required: false,
|
|
@@ -177,6 +206,11 @@ export default {
|
|
|
177
206
|
required: false,
|
|
178
207
|
default: () => modalPluginOptions.value.propsDefault.saveButtonText,
|
|
179
208
|
},
|
|
209
|
+
saveButtonTextScreenReader: {
|
|
210
|
+
type: String,
|
|
211
|
+
required: false,
|
|
212
|
+
default: () => modalPluginOptions.value.propsDefault.saveButtonTextScreenReader,
|
|
213
|
+
},
|
|
180
214
|
selectorClose: {
|
|
181
215
|
type: [String, Array],
|
|
182
216
|
required: false,
|
|
@@ -211,6 +245,11 @@ export default {
|
|
|
211
245
|
required: false,
|
|
212
246
|
default: () => modalPluginOptions.value.propsDefault.useEscape,
|
|
213
247
|
},
|
|
248
|
+
useFocusOnStart: {
|
|
249
|
+
type: Boolean,
|
|
250
|
+
required: false,
|
|
251
|
+
default: true,
|
|
252
|
+
},
|
|
214
253
|
zIndex: {
|
|
215
254
|
type: Number,
|
|
216
255
|
required: false,
|
|
@@ -221,6 +260,10 @@ export default {
|
|
|
221
260
|
"update:modelValue",
|
|
222
261
|
],
|
|
223
262
|
setup(props, context) {
|
|
263
|
+
const {
|
|
264
|
+
bodyHtmlId,
|
|
265
|
+
} = BodyHtmlAPI(props);
|
|
266
|
+
|
|
224
267
|
const {
|
|
225
268
|
hasDataForm,
|
|
226
269
|
} = DataFormAPI(props);
|
|
@@ -230,6 +273,7 @@ export default {
|
|
|
230
273
|
} = UpdateModalAPI(context);
|
|
231
274
|
|
|
232
275
|
return {
|
|
276
|
+
bodyHtmlId,
|
|
233
277
|
hasDataForm,
|
|
234
278
|
updateModelLocal,
|
|
235
279
|
};
|
|
@@ -242,11 +286,16 @@ export default {
|
|
|
242
286
|
closeButtonClass: this.closeButtonClass,
|
|
243
287
|
closeButtonId: this.closeButtonId,
|
|
244
288
|
closeButtonText: this.closeButtonText,
|
|
289
|
+
closeButtonTextScreenReaderFooter: this.closeButtonTextScreenReaderFooter,
|
|
290
|
+
closeButtonTextScreenReaderHeader: this.closeButtonTextScreenReaderHeader,
|
|
245
291
|
disabled: this.disabled,
|
|
246
292
|
disabledSave: this.disabledSave,
|
|
247
293
|
extra: this.extra,
|
|
294
|
+
focusStartId: this.focusStartId,
|
|
248
295
|
headerTag: this.headerTag,
|
|
249
296
|
headerText: this.headerText,
|
|
297
|
+
hideFooter: this.hideFooter,
|
|
298
|
+
hideHeader: this.hideHeader,
|
|
250
299
|
id: this.id,
|
|
251
300
|
isCloseButtonHide: this.isCloseButtonHide,
|
|
252
301
|
isConfirm: this.isConfirm,
|
|
@@ -260,16 +309,26 @@ export default {
|
|
|
260
309
|
saveButtonClass: this.saveButtonClass,
|
|
261
310
|
saveButtonId: this.saveButtonId,
|
|
262
311
|
saveButtonText: this.saveButtonText,
|
|
312
|
+
saveButtonTextScreenReader: this.saveButtonTextScreenReader,
|
|
263
313
|
selectorClose: this.selectorClose,
|
|
264
314
|
selectorCloseIds: this.selectorCloseIds,
|
|
265
315
|
size: this.size,
|
|
266
316
|
stop: this.stop,
|
|
267
317
|
useEscape: this.useEscape,
|
|
318
|
+
useFocusOnStart: this.useFocusOnStart,
|
|
268
319
|
zIndex: this.zIndex,
|
|
320
|
+
"aria-describedby": this.bodyHtmlId,
|
|
269
321
|
}, {
|
|
270
322
|
...this.$slots || {},
|
|
271
323
|
modalBody: () => [
|
|
272
324
|
this.$slots.modalBodyPrepend && this.$slots.modalBodyPrepend(),
|
|
325
|
+
this.bodyHtml && h(ATranslation, {
|
|
326
|
+
id: this.bodyHtmlId,
|
|
327
|
+
alwaysTranslate: this.alwaysTranslate,
|
|
328
|
+
class: this.bodyHtmlClass,
|
|
329
|
+
html: this.bodyHtml,
|
|
330
|
+
extra: this.extra,
|
|
331
|
+
}),
|
|
273
332
|
this.hasDataForm && h(AForm, {
|
|
274
333
|
alwaysTranslate: this.alwaysTranslate,
|
|
275
334
|
modelValue: this.modelValue,
|
|
@@ -283,11 +342,6 @@ export default {
|
|
|
283
342
|
isRender: this.isDataFormRender,
|
|
284
343
|
"onUpdate:modelValue": this.updateModelLocal,
|
|
285
344
|
}, this.$slots),
|
|
286
|
-
this.bodyHtml && h(ATranslation, {
|
|
287
|
-
alwaysTranslate: this.alwaysTranslate,
|
|
288
|
-
html: this.bodyHtml,
|
|
289
|
-
extra: this.extra,
|
|
290
|
-
}),
|
|
291
345
|
this.$slots.modalBodyAppend && this.$slots.modalBodyAppend(),
|
|
292
346
|
],
|
|
293
347
|
});
|
|
@@ -55,6 +55,16 @@ export default {
|
|
|
55
55
|
required: false,
|
|
56
56
|
default: () => modalPluginOptions.value.propsDefault.closeButtonText,
|
|
57
57
|
},
|
|
58
|
+
closeButtonTextScreenReaderFooter: {
|
|
59
|
+
type: String,
|
|
60
|
+
required: false,
|
|
61
|
+
default: () => modalPluginOptions.value.propsDefault.closeButtonTextScreenReaderFooter,
|
|
62
|
+
},
|
|
63
|
+
closeButtonTextScreenReaderHeader: {
|
|
64
|
+
type: String,
|
|
65
|
+
required: false,
|
|
66
|
+
default: () => modalPluginOptions.value.propsDefault.closeButtonTextScreenReaderHeader,
|
|
67
|
+
},
|
|
58
68
|
disabled: {
|
|
59
69
|
type: Boolean,
|
|
60
70
|
required: false,
|
|
@@ -70,6 +80,11 @@ export default {
|
|
|
70
80
|
required: false,
|
|
71
81
|
default: undefined,
|
|
72
82
|
},
|
|
83
|
+
focusStartId: {
|
|
84
|
+
type: String,
|
|
85
|
+
required: false,
|
|
86
|
+
default: undefined,
|
|
87
|
+
},
|
|
73
88
|
headerTag: {
|
|
74
89
|
type: String,
|
|
75
90
|
required: false,
|
|
@@ -80,6 +95,10 @@ export default {
|
|
|
80
95
|
required: false,
|
|
81
96
|
default: undefined,
|
|
82
97
|
},
|
|
98
|
+
hideHeader: {
|
|
99
|
+
type: Boolean,
|
|
100
|
+
required: false,
|
|
101
|
+
},
|
|
83
102
|
isCloseButtonHide: {
|
|
84
103
|
type: Boolean,
|
|
85
104
|
required: false,
|
|
@@ -134,6 +153,11 @@ export default {
|
|
|
134
153
|
required: false,
|
|
135
154
|
default: () => modalPluginOptions.value.propsDefault.saveButtonText,
|
|
136
155
|
},
|
|
156
|
+
saveButtonTextScreenReader: {
|
|
157
|
+
type: String,
|
|
158
|
+
required: false,
|
|
159
|
+
default: () => modalPluginOptions.value.propsDefault.saveButtonTextScreenReader,
|
|
160
|
+
},
|
|
137
161
|
selectorClose: {
|
|
138
162
|
type: [String, Array],
|
|
139
163
|
required: false,
|
|
@@ -144,7 +168,7 @@ export default {
|
|
|
144
168
|
required: false,
|
|
145
169
|
default: () => modalPluginOptions.value.propsDefault.selectorCloseIds,
|
|
146
170
|
},
|
|
147
|
-
|
|
171
|
+
showCloseButtonHeader: {
|
|
148
172
|
type: Boolean,
|
|
149
173
|
required: false,
|
|
150
174
|
default: true,
|
|
@@ -163,6 +187,11 @@ export default {
|
|
|
163
187
|
required: false,
|
|
164
188
|
default: () => modalPluginOptions.value.propsDefault.useEscape,
|
|
165
189
|
},
|
|
190
|
+
useFocusOnStart: {
|
|
191
|
+
type: Boolean,
|
|
192
|
+
required: false,
|
|
193
|
+
default: true,
|
|
194
|
+
},
|
|
166
195
|
zIndex: {
|
|
167
196
|
type: Number,
|
|
168
197
|
required: false,
|
|
@@ -425,11 +454,15 @@ export default {
|
|
|
425
454
|
closeButtonClass: this.closeButtonClass,
|
|
426
455
|
closeButtonId: this.closeButtonId,
|
|
427
456
|
closeButtonText: this.closeButtonText,
|
|
457
|
+
closeButtonTextScreenReaderFooter: this.closeButtonTextScreenReaderFooter,
|
|
458
|
+
closeButtonTextScreenReaderHeader: this.closeButtonTextScreenReaderHeader,
|
|
428
459
|
disabled: this.disabled,
|
|
429
460
|
disabledSave: this.disabledSave,
|
|
430
461
|
extra: this.extra,
|
|
462
|
+
focusStartId: this.focusStartId,
|
|
431
463
|
headerTag: this.headerTag,
|
|
432
464
|
headerText: this.headerText,
|
|
465
|
+
hideHeader: this.hideHeader,
|
|
433
466
|
id: this.id,
|
|
434
467
|
isCloseButtonHide: this.isCloseButtonHide,
|
|
435
468
|
isFooterSticky: this.isFooterSticky,
|
|
@@ -442,12 +475,14 @@ export default {
|
|
|
442
475
|
saveButtonClass: this.saveButtonClass,
|
|
443
476
|
saveButtonId: this.saveButtonId,
|
|
444
477
|
saveButtonText: this.saveButtonText,
|
|
478
|
+
saveButtonTextScreenReader: this.saveButtonTextScreenReader,
|
|
445
479
|
selectorClose: this.selectorClose,
|
|
446
480
|
selectorCloseIds: this.selectorCloseIds,
|
|
447
|
-
|
|
481
|
+
showCloseButtonHeader: this.showCloseButtonHeader,
|
|
448
482
|
size: this.size,
|
|
449
483
|
stop: this.stop,
|
|
450
484
|
useEscape: this.useEscape,
|
|
485
|
+
useFocusOnStart: this.useFocusOnStart,
|
|
451
486
|
zIndex: this.zIndex,
|
|
452
487
|
}, {
|
|
453
488
|
...this.$slots || {},
|
|
@@ -6,18 +6,21 @@ export const modalPluginOptions = ref({
|
|
|
6
6
|
propsDefault: {
|
|
7
7
|
closeButtonClass: "a_btn a_btn_secondary",
|
|
8
8
|
closeButtonText: "_A_MODAL_BTN_CANCEL_",
|
|
9
|
+
closeButtonTextScreenReaderFooter: "_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_FOOTER_",
|
|
10
|
+
closeButtonTextScreenReaderHeader: "_A_MODAL_BTN_TEXT_SCREEN_READER_CLOSE_HEADER_",
|
|
9
11
|
headerTag: "h2",
|
|
10
12
|
idPrefix: undefined,
|
|
11
13
|
isCloseButtonHide: false,
|
|
12
14
|
isDataFormHide: false,
|
|
13
15
|
isDataFormRender: true,
|
|
16
|
+
isFooterSticky: false,
|
|
14
17
|
isRequired: false,
|
|
15
18
|
isSaveButtonHide: false,
|
|
16
|
-
isFooterSticky: false,
|
|
17
19
|
modalClass: undefined,
|
|
18
20
|
modalStyle: undefined,
|
|
19
21
|
saveButtonClass: "a_btn a_btn_primary",
|
|
20
22
|
saveButtonText: "_A_MODAL_BTN_SAVE_",
|
|
23
|
+
saveButtonTextScreenReader: "_A_MODAL_BTN_TEXT_SCREEN_READER_SAVE_",
|
|
21
24
|
selectorClose: undefined,
|
|
22
25
|
selectorCloseIds: undefined,
|
|
23
26
|
size: undefined,
|
package/src/ui/ALabel/ALabel.js
CHANGED