{"version":3,"file":"Modal-CCBxxNAM.js","sources":["../../../app/javascript/components/shared/Modal.vue"],"sourcesContent":["<template>\n <fade-transition>\n <div\n v-if=\"open\"\n class=\"modal flex fixed pin items-center\"\n :class=\"modalContainerClasses\"\n @click.self=\"closeModal\">\n <div\n :class=\"[\n modalSizeClass,\n { 'anchor-to-top': anchorToTop, 'edge-to-edge': edgeToEdge }\n ]\"\n class=\"modal-dialog\">\n <div\n :class=\"[\n { 'flex flex-col': size === 'fullscreen' },\n modalContentClasses\n ]\"\n class=\"modal-content\">\n <overlay\n v-if=\"loading\"\n absolutely-positioned />\n <div\n v-if=\"$slots.header\"\n :class=\"headerClass\"\n data-cy=\"modal-heading\">\n <slot name=\"header\"></slot>\n <div\n v-if=\"!requiresInteraction\"\n class=\"cursor-pointer\"\n data-cy=\"close-the-modal\"\n @click=\"$emit('closed')\">\n <slot name=\"close-icon\">\n <svg-icon\n name=\"close-display\"\n width=\"24px\"\n height=\"24px\" />\n </slot>\n </div>\n </div>\n <div\n v-else-if=\"!requiresInteraction\"\n class=\"modal-close pb-4 flex justify-end cursor-pointer\"\n data-cy=\"close-the-modal\"\n @click=\"$emit('closed')\">\n <slot name=\"close-icon\">\n <svg-icon\n name=\"close-display\"\n width=\"24px\"\n height=\"24px\" />\n </slot>\n </div>\n\n <div\n :class=\"modalBodyClasses\"\n class=\"modal-body\">\n <slot name=\"body\"></slot>\n </div>\n\n <div\n v-if=\"$slots.footer\"\n :class=\"[modalFooterClasses, footerClass]\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </div>\n </div>\n </fade-transition>\n</template>\n\n<script>\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport Overlay from \"./Overlay.vue\";\nimport SvgIcon from \"./SvgIcon.vue\";\n\nexport default {\n name: \"Modal\",\n components: {\n FadeTransition,\n Overlay,\n SvgIcon\n },\n props: {\n size: {\n type: String,\n default: \"\"\n },\n open: {\n type: Boolean,\n default: false\n },\n requiresInteraction: {\n type: Boolean,\n default: false\n },\n preventBackgroundClose: {\n type: Boolean,\n default: false\n },\n headerClass: {\n type: String,\n default: \"modal-header\"\n },\n footerClass: {\n type: String,\n default: \"modal-footer\"\n },\n anchorToTop: {\n type: Boolean,\n default: false\n },\n heightConstraint: {\n type: String,\n default: \"normal\"\n },\n modalContentClasses: {\n type: String,\n default: \"p-4\"\n },\n modalBodyClasses: {\n type: String,\n default: null\n },\n loading: {\n type: Boolean,\n default: false\n },\n edgeToEdge: {\n type: Boolean,\n default: false\n },\n fullScreen: {\n type: Boolean,\n default: false\n },\n preventBackgroundScroll: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"closed\"],\n computed: {\n constrainHeight() {\n return this.heightConstraint !== \"normal\";\n },\n modalContainerClasses() {\n return {\n \"constrain-height\": this.heightConstraint === \"full-constraint\",\n \"constrain-height-max-only\": this.heightConstraint === \"max-constraint\",\n \"full-screen\": this.fullScreen\n };\n },\n modalSizeClass() {\n return {\n \"modal-sm\": this.size === \"small\",\n \"modal-lg\": this.size === \"large\",\n \"modal-xl\": this.size === \"xlarge\",\n \"modal-full\": this.size === \"fullscreen\"\n };\n },\n modalFooterClasses() {\n return this.constrainHeight\n ? \"absolute right-0 bottom-0 left-0 border-t border-ink-1 bg-paper-2 z-2\"\n : null;\n }\n },\n watch: {\n open(value) {\n if (value && this.preventBackgroundScroll) {\n this.preventScrolling();\n } else {\n this.allowScrolling();\n }\n }\n },\n methods: {\n closeModal() {\n if (!this.requiresInteraction && !this.preventBackgroundClose) {\n this.$emit(\"closed\");\n }\n },\n preventScrolling() {\n document.documentElement.classList.add(\"no-scroll\");\n document.body.classList.add(\"no-scroll\");\n },\n allowScrolling() {\n document.documentElement.classList.remove(\"no-scroll\");\n document.body.classList.remove(\"no-scroll\");\n }\n }\n};\n</script>\n\n<style scoped>\n.anchor-to-top {\n margin-top: 0;\n}\n</style>\n"],"names":["_sfc_main","FadeTransition","Overlay","SvgIcon","value","_createBlock","_component_fade_transition","_withCtx","$props","_createElementBlock","_normalizeClass","$options","_cache","_withModifiers","args","_createElementVNode","_component_overlay","_createCommentVNode","_ctx","_renderSlot","_createVNode","_component_svg_icon"],"mappings":"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"}