{"version":3,"mappings":"wfAEA,MAAMA,EAAQC,EAAqB,IAAMC,EAAA,WAAO,qBAAgC,EAAC,oFAC3EC,EAAeF,EAAqB,IAAMC,EAAA,WAAO,4BAAuC,EAAC,2FAEzFE,EAAQC,EA+Bd,IAAIC,EAAYC,EAAI,EAAK,EACrBC,EAAQD,EAAI,EAAE,EACdE,EAAUF,EAAI,EAAE,EAGpB,eAAeG,EAAWC,EAAU,CACnC,MAAM,MAAMA,CAAQ,EAClB,KAAMC,GAAaA,EAAS,KAAI,CAAE,EAClC,KAAMC,GAAS,CAEXA,EAAK,KAAK,OAAO,OAAS,GAAKA,EAAK,KAAK,OAAO,KAAMC,GAASA,EAAK,aAAe,SAAWA,EAAK,QAAU,EAAE,EAClHN,EAAM,MAAQK,EAAK,KAAK,OAAO,KAAMC,GAASA,EAAK,aAAe,OAAO,EAAE,MAE3EN,EAAM,MAAQK,EAAK,KAGhBA,EAAK,KAAK,OAAO,OAAS,GAAKA,EAAK,KAAK,OAAO,KAAMC,GAASA,EAAK,aAAe,eAAiBA,EAAK,QAAU,EAAE,EACxHL,EAAQ,MAAQI,EAAK,KAAK,OAAO,KAAMC,GAASA,EAAK,aAAe,aAAa,EAAE,MAEnFL,EAAQ,MAAQI,EAAK,IAEzB,CAAG,CACH,CAEA,OAAAE,EAAU,IAAM,CACXX,EAAM,cAAgBA,EAAM,WAAa,GAC5CM,EAAWN,EAAM,QAAQ,GAEzBI,EAAM,MAAQJ,EAAM,WACpBK,EAAQ,MAAQL,EAAM,aAExB,CAAC,EAGDY,EAAMV,EAAYW,GAAU,CACvBA,EACH,SAAS,gBAAgB,UAAU,IAAI,kBAAmB,YAAY,EAEtE,SAAS,gBAAgB,UAAU,OAAO,kBAAmB,YAAY,CAI3E,CAAC","names":["Modal","defineAsyncComponent","__vitePreload","RenderAction","props","__props","showModal","ref","title","content","getContent","endpoint","response","data","item","onMounted","watch","value"],"sources":["../../src/components/ShowModal.vue"],"sourcesContent":["<script setup>\r\nimport { defineAsyncComponent, onMounted, ref, watch } from 'vue'\r\nconst Modal = defineAsyncComponent(() => import('@/components/helpers/Modal.vue'))\r\nconst RenderAction = defineAsyncComponent(() => import('@/components/helpers/RenderAction.vue'))\r\n\r\nconst props = defineProps({\r\n\tfetchFromApi: {\r\n\t\ttype: Boolean,\r\n\t\tdefault: false\r\n\t},\r\n\tendpoint: {\r\n\t\ttype: String,\r\n\t\tdefault: ''\r\n\t},\r\n\tlinkText: {\r\n\t\ttype: String,\r\n\t\tdefault: 'Show modal'\r\n\t},\r\n\tmodalTitle: {\r\n\t\ttype: String,\r\n\t\tdefault: 'Modal Title'\r\n\t},\r\n\tmodalContent: {\r\n\t\ttype: String,\r\n\t\tdefault: 'Modal Test'\r\n\t},\r\n\tbuttonOptions: {\r\n\t\ttype: Object,\r\n\t\tdefault: () => ({\r\n\t\t\taction: 'button',\r\n\t\t\ttheme: 'link',\r\n\t\t\tsize: 'none'\r\n\t\t})\r\n\t}\r\n})\r\n\r\nlet showModal = ref(false)\r\nlet title = ref('')\r\nlet content = ref('')\r\n\r\n// Get content from the API endpoint that's set through the modalContent prop\r\nasync function getContent(endpoint) {\r\n\tawait fetch(endpoint)\r\n\t\t.then((response) => response.json())\r\n\t\t.then((data) => {\r\n\t\t\t// Check that there are fields present, and that one of the objects has a SystemName of \"Title\", and a non-empty \"Value\".\r\n\t\t\tif (data.Item.Fields.length > 0 && data.Item.Fields.some((item) => item.SystemName === 'Title' && item.Value !== '')) {\r\n\t\t\t\ttitle.value = data.Item.Fields.find((item) => item.SystemName === 'Title').Value\r\n\t\t\t} else {\r\n\t\t\t\ttitle.value = data.Name\r\n\t\t\t}\r\n\r\n\t\t\tif (data.Item.Fields.length > 0 && data.Item.Fields.some((item) => item.SystemName === 'Desctiption' && item.Value !== '')) {\r\n\t\t\t\tcontent.value = data.Item.Fields.find((item) => item.SystemName === 'Desctiption').Value\r\n\t\t\t} else {\r\n\t\t\t\tcontent.value = data.Text\r\n\t\t\t}\r\n\t\t})\r\n}\r\n\r\nonMounted(() => {\r\n\tif (props.fetchFromApi && props.endpoint !== '') {\r\n\t\tgetContent(props.endpoint)\r\n\t} else {\r\n\t\ttitle.value = props.modalTitle\r\n\t\tcontent.value = props.modalContent\r\n\t}\r\n})\r\n\r\n// If modal is opened, append the overflow-hidden class to the html element\r\nwatch(showModal, (value) => {\r\n\tif (value) {\r\n\t\tdocument.documentElement.classList.add('overflow-hidden', 'modal-open')\r\n\t} else {\r\n\t\tdocument.documentElement.classList.remove('overflow-hidden', 'modal-open')\r\n\t}\r\n\r\n\r\n})\r\n</script>\r\n\r\n<template>\r\n\t<RenderAction\r\n\t\t:action=\"props.buttonOptions.action\"\r\n\t\t:theme=\"props.buttonOptions.theme\"\r\n\t\t:size=\"props.buttonOptions.size\"\r\n\t\t@click.stop=\"showModal = true\">\r\n\t\t<slot></slot>\r\n\t</RenderAction>\r\n\r\n\t<Modal :show=\"showModal\" @close=\"showModal = false\" :inline=\"true\">\r\n\t\t<template #modal-title>\r\n\t\t\t{{ title }}\r\n\t\t</template>\r\n\t\t<template #content>\r\n\t\t\t<div class=\"prose-sm lg:prose lg:max-w-none\" v-html=\"content\"></div>\r\n\t\t</template>\r\n\t</Modal>\r\n</template>\r\n"],"file":"assets/ShowModal-47327c25.js"}