{"version":3,"file":"genericModal-B17jAxvj.js","sources":["../../../../Coloplast.UI/src/shared/services/ariaReferenceService.js","../../../../Coloplast.UI/src/shared/components/generic-modal/genericModal.vue"],"sourcesContent":["export function formatDialogId(id, type = '') {\r\n    /**\r\n     * Can be used for aria dialog id generation.\r\n     * Both with and without the type argument.\r\n     */\r\n    return 'dialog-' + id  + ((type) ? '-' + type : '');\r\n}\r\n\r\nexport function formatAriaLabel(str = \"\") {\r\n    /**\r\n     * Format str to kebab-case for aria labels.\r\n     */\r\n    return str.replace(/([a-z])([A-Z])/g, \"$1-$2\")\r\n              .replace(/[\\s_]+/g, '-')\r\n              .toLowerCase();\r\n\r\n}\r\n","<script setup>\r\nimport { formatDialogId } from 'shared/services/ariaReferenceService';\r\nimport { computed, ref, onMounted } from 'vue';\r\nimport useModalFocusTrap from 'shared/composables/focusTrap';\r\n\r\nconst props = defineProps({\r\n\tmodalData: {\r\n\t\ttype: Object,\r\n\t\trequired: true,\r\n\t},\r\n\tcloseOnEscape: {\r\n\t\ttype: Boolean,\r\n\t\tdefault: true,\r\n\t},\r\n\tcloseLabel: {\r\n\t\ttype: String,\r\n\t\tdefault: 'Close',\r\n\t},\r\n});\r\n\r\nconst emit = defineEmits(['close-modal']);\r\n\r\nconst modal = ref(null);\r\n\r\nlet restoreFocus;\r\n\r\nonMounted(() => {\r\n\trestoreFocus = useModalFocusTrap(modal.value, emit, 'close-modal', props.closeOnEscape).restoreFocus;\r\n});\r\n\r\nconst modalClass = computed(() => 'c-variant-' + props.modalData.dataName + '-modal');\r\nconst wrapperClass = computed(() => 'c-modal__wrapper--' + props.modalData.dataName);\r\nconst containerClass = computed(() => 'c-variant-' + props.modalData.dataName + '-modal__modal-container');\r\nconst buttonWrapperClass = computed(() => 'c-variant-' + props.modalData.dataName + '-modal__button-wrapper');\r\n\r\nconst closeModal = () => {\r\n\temit('close-modal');\r\n\trestoreFocus();\r\n}\r\n\r\nconst toCamelcase = (str) => {\r\n\treturn str.replace(/-./g, x=>x[1].toUpperCase());\r\n}\r\n\r\n</script>\r\n\r\n<template>\r\n    <div\r\n\t\tdata-testid=\"genericModal\"\r\n\t\tref=\"modal\"\r\n        v-if=\"modalData\"\r\n        :id=\"formatDialogId(modalData.dataName)\"\r\n        role=\"dialog\"\r\n        aria-modal=\"true\"\r\n        :aria-labelledby=\"formatDialogId(modalData.dataName, 'label')\"\r\n        :aria-describedby=\"formatDialogId(modalData.dataName, 'desc')\"\r\n        class=\"c-modal__mask c-modal__mask--grey\"\r\n        :class=\"modalClass\"\r\n        :data-modal=\"toCamelcase(modalData.dataName)\">\r\n\r\n        <div\r\n            class=\"c-modal__wrapper c-modal__wrapper--generic-modal\"\r\n            :class=\"wrapperClass\">\r\n\r\n            <div\r\n                class=\"c-modal__container\"\r\n                :class=\"containerClass\"\r\n                ref=\"modalContainer\">\r\n\r\n                <div>\r\n                    <button\r\n                        class=\"c-modal__close c-modal__close--grey c-modal__close--generic-modal\"\r\n                        @click.prevent=\"closeModal\"\r\n                        :aria-label=\"props.closeLabel\"\r\n                        ></button>\r\n\r\n                    <slot name=\"header\"></slot>\r\n                </div>\r\n                <div>\r\n                    <slot name=\"body\"></slot>\r\n                </div>\r\n                <div :class=\"buttonWrapperClass\">\r\n                    <slot name=\"footer\"></slot>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</template>\r\n"],"names":["formatDialogId","id","type","formatAriaLabel","str","props","__props","emit","__emit","modal","ref","restoreFocus","onMounted","useModalFocusTrap","modalClass","computed","wrapperClass","containerClass","buttonWrapperClass","closeModal","toCamelcase","x"],"mappings":"oKAAO,SAASA,EAAeC,EAAIC,EAAO,GAAI,CAK1C,MAAO,UAAYD,GAAQC,EAAQ,IAAMA,EAAO,GACpD,CAEO,SAASC,EAAgBC,EAAM,GAAI,CAItC,OAAOA,EAAI,QAAQ,kBAAmB,OAAO,EAClC,QAAQ,UAAW,GAAG,EACtB,aAEf,iRCXA,MAAMC,EAAQC,EAeRC,EAAOC,EAEPC,EAAQC,EAAI,IAAI,EAEtB,IAAIC,EAEJC,EAAU,IAAM,CACfD,EAAeE,EAAkBJ,EAAM,MAAOF,EAAM,cAAeF,EAAM,aAAa,EAAE,YACzF,CAAC,EAED,MAAMS,EAAaC,EAAS,IAAM,aAAeV,EAAM,UAAU,SAAW,QAAQ,EAC9EW,EAAeD,EAAS,IAAM,qBAAuBV,EAAM,UAAU,QAAQ,EAC7EY,EAAiBF,EAAS,IAAM,aAAeV,EAAM,UAAU,SAAW,yBAAyB,EACnGa,EAAqBH,EAAS,IAAM,aAAeV,EAAM,UAAU,SAAW,wBAAwB,EAEtGc,EAAa,IAAM,CACxBZ,EAAK,aAAa,EAClBI,GACD,EAEMS,EAAehB,GACbA,EAAI,QAAQ,MAAOiB,GAAGA,EAAE,CAAC,EAAE,YAAW,CAAE"}