Skip to content

Commit c834c99

Browse files
committed
feat(NcModal): expose initialFocus prop for focus-trap options
Signed-off-by: Maksim Sukharev <[email protected]>
1 parent ae41b63 commit c834c99

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/components/NcDialog/NcDialog.vue

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ export default {
213213
<script setup lang="ts">
214214
import type { Slot } from 'vue'
215215
import type { ComponentProps, VueClassType } from '../../utils/VueTypes.ts'
216+
import type { FocusTargetOrFalse } from 'focus-trap'
216217
217218
import { useElementSize } from '@vueuse/core'
218219
import { computed, ref, useTemplateRef } from 'vue'
@@ -237,6 +238,12 @@ const props = withDefaults(defineProps<{
237238
/** Additional elements to add to the focus trap */
238239
additionalTrapElements?: Array<string | HTMLElement>
239240
241+
/** Set element to return focus to after focus trap deactivation */
242+
setReturnFocus?: FocusTargetOrFalse
243+
244+
/** Specify an element to receive initial focus after focus trap activation */
245+
initialFocus?: FocusTargetOrFalse
246+
240247
/**
241248
* The element where to mount the dialog, if `null` is passed the dialog is mounted in place.
242249
*/
@@ -490,6 +497,8 @@ const modalProps = computed(() => ({
490497
outTransition: props.outTransition,
491498
closeOnClickOutside: props.closeOnClickOutside,
492499
additionalTrapElements: props.additionalTrapElements,
500+
setReturnFocus: props.setReturnFocus,
501+
initialFocus: props.initialFocus,
493502
}))
494503
</script>
495504

src/components/NcModal/NcModal.vue

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,16 @@ export default {
558558
default: undefined,
559559
type: [Boolean, HTMLElement, SVGElement, String],
560560
},
561+
562+
/**
563+
* Specify an element to receive initial focus after focus trap activation
564+
*
565+
* @type {import('focus-trap').FocusTargetValueOrFalse}
566+
*/
567+
initialFocus: {
568+
default: undefined,
569+
type: [Boolean, HTMLElement, SVGElement, String],
570+
},
561571
},
562572
563573
emits: [
@@ -863,6 +873,7 @@ export default {
863873
// Focus trap is deactivated on modal close anyway.
864874
escapeDeactivates: false,
865875
setReturnFocus: this.setReturnFocus,
876+
initialFocus: this.initialFocus,
866877
}
867878
868879
// Init focus trap

0 commit comments

Comments
 (0)