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.
@@ -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: "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "يحدد ما إذا كان سيتم عرض زر الإغلاق (\"x\") في رأس نافذة المودال.",
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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "Legt fest, ob die Schaltfläche zum Schließen (\"x\") im Kopfbereich des Modalfensters angezeigt werden soll.",
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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "Determines whether to display the close button (\"x\") in the header of the modal window.",
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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "Determina si se debe mostrar el botón de cerrar (\"x\") en el encabezado de la ventana modal.",
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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "Détermine s'il faut afficher le bouton de fermeture (\"x\") dans l'en-tête de la fenêtre modale.",
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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "Određuje treba li prikazati gumb za zatvaranje (\"x\") u zaglavlju prozora modala.",
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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "Determina se visualizzare il pulsante di chiusura (\"x\") nell'intestazione della finestra modale.",
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
- "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_DESCRIPTION_": "Определяет, следует ли отображать кнопку закрытия (\"x\") в заголовке модального окна.",
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: "_A_MODAL_PROPS_SHOW_CLOSE_BUTTON_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
@@ -14,7 +14,7 @@
14
14
  "Vue.js"
15
15
  ],
16
16
  "homepage": "https://github.com/ilia-brykin/aloha/#README.md",
17
- "version": "1.2.251",
17
+ "version": "1.2.253",
18
18
  "author": {
19
19
  "name": "Ilia Brykin",
20
20
  "email": "brykin.ilia@gmail.com"
@@ -8,7 +8,7 @@ import {
8
8
  watch,
9
9
  } from "vue";
10
10
 
11
- import AButton from "../AButton/AButton";
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
- showCloseButton: {
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
- setFocusToModal,
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
- setFocusToModal,
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(AButton, {
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(AButton, {
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
- h("div", {
387
- ref: "modal_header",
388
- class: "a_modal_header",
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(ATranslation, {
395
- alwaysTranslate: this.alwaysTranslate,
396
- tag: "span",
397
- html: this.headerText,
398
- extra: this.extra,
399
- }),
400
- ]),
401
- this.showCloseButton ? h(AButton, {
402
- alwaysTranslate: this.alwaysTranslate,
403
- class: "a_btn_close",
404
- disabled: this.disabledLocal,
405
- textScreenReader: this.closeButtonText,
406
- title: this.closeButtonText,
407
- onClick: () => this.close(true),
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 setFocusToModal = () => {
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 (modalRef.value) {
16
- modalRef.value.focus();
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
- setFocusToModal();
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
- setFocusToModal,
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
- setFocusToModal = () => {},
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
- setFocusToModal();
16
+ setFocusByShowModal();
17
17
  setListenerForKeydown();
18
18
  };
19
19
 
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -30,7 +30,7 @@ export default {
30
30
  isModalHidden: isModalHidden.value,
31
31
  isConfirm: true,
32
32
  ...confirmOptions.value,
33
- showCloseButton: false,
33
+ showCloseButtonHeader: false,
34
34
  close: closeConfirm,
35
35
  };
36
36
  });
@@ -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
- showCloseButton: {
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
- showCloseButton: this.showCloseButton,
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,
@@ -151,6 +151,9 @@
151
151
  margin: 0;
152
152
  padding: 0;
153
153
  }
154
+ .a_form_element_label_static {
155
+ font-weight: bolder;
156
+ }
154
157
 
155
158
  .a_required {
156
159
  margin-bottom: 1rem;
@@ -157,6 +157,9 @@ export default {
157
157
  class: [
158
158
  "a_form_element_label",
159
159
  this.labelClass,
160
+ this.isLabelFloat ?
161
+ "a_form_element_label_float" :
162
+ "a_form_element_label_static",
160
163
  {
161
164
  a_form_element_label_error: this.isError,
162
165
  },