{"version":3,"file":"add-to-alerts-modal-Cdi6L8v-.js","sources":["../../js/components/favourite-star.vue","../../js/components/add-to-alerts-modal.vue"],"sourcesContent":["<template>\n <tooltip :text=\"favourite ? translate('remove_from_favourites') : translate('add_to_favourites')\" placement=\"bottom\">\n <a href=\"\" class=\"p-2 mobile:p-1 rounded hover:bg-grey-100 duration-100 block\" :class=\"{'text-barometer-yellow': favourite}\" v-on:click.prevent=\"toggle(vatOrPersonId)\">\n <i class=\"fa-star\" :class=\"{'fas': favourite, 'far': !favourite}\"></i>\n </a>\n </tooltip>\n</template>\n\n<script lang=\"ts\">\n import {defineComponent} from 'vue';\n import Ajax from \"../lib/Ajax\";\n import Toast from \"../lib/Toast\";\n import Tooltip from \"./tooltip.vue\";\n \n export default defineComponent({\n name: \"favourite-star\",\n components: {Tooltip},\n props: {\n isFavourite: Boolean,\n vat: {\n type: Number,\n },\n personId: {\n type: Number,\n }\n },\n data() {\n return {\n favourite: this.isFavourite\n }\n },\n computed: {\n isCompany(): boolean {\n return !!this.vat;\n },\n vatOrPersonId(): number {\n return this.isCompany ? this.vat : this.personId;\n }\n },\n methods: {\n async toggle(vatOrPersonId: number): Promise<void> {\n if (this.favourite)\n await this.remove(vatOrPersonId);\n else\n await this.add(vatOrPersonId);\n },\n async add(vatOrPersonId: number): Promise<void> {\n await Ajax.postAsync(`/ajax/${this.isCompany ? 'company' : 'person'}/add-to-favourites`,{ [this.isCompany ? 'vat' : 'personId']: vatOrPersonId });\n this.favourite = true;\n Toast.success(this.translate('added_to_favourites'));\n },\n async remove(vatOrPersonId: number): Promise<void> {\n await Ajax.postAsync(`/ajax/${this.isCompany ? 'company' : 'person'}/remove-from-favourites`, { [this.isCompany ? 'vat' : 'personId']: vatOrPersonId });\n this.favourite = false;\n Toast.success(this.translate('removed_from_favourites'));\n }\n }\n });\n</script>","<template>\n <cw-modal :title=\"title\" :id=\"alertModal\" size=\"sm\" v-cloak>\n <template v-if=\"isAnonymousInstituutUser\">\n <p>\n {{translate('alerts_institute_no_email')}}\n </p>\n <a href=\"/followup\" class=\"btn btn-primary\">{{translate('yes')}}</a>\n <button data-dismiss=\"modal\" aria-label=\"Close\" class=\"btn btn-default\">{{translate('no')}}</button>\n </template>\n <template v-else-if=\"alertsLists?.length === 0 || !hasAccess\">\n <p>\n {{translate('alerts_no_lists')}}\n <br />\n <span v-html=\"translate('alerts_create_list', link)\"></span>\n </p>\n </template>\n <template v-else>\n <div class=\"space-y-3\">\n <p v-if=\"entityString\" class=\"my-6 text-grey-700 text-sm\">{{translate('followup_via_alerts')}}</p>\n <div v-for=\"list in alertsLists\" class=\"flex gap-2 items-start\">\n <input :disabled=\"isLimitReached\" class=\"mt-0.5\" type=\"checkbox\" :id=\"'list_'+list.listId\" :checked=\"containingAlertListIds.includes(list.listId)\" v-on:change=\"toggleAlert($event, list.listId)\">\n <label :for=\"'list_'+list.listId\" class=\"font-medium\">{{list.name}} ({{list.totalNumber}})</label>\n </div>\n </div>\n \n <div v-if=\"isLimitReached\" class=\"mt-8\">\n <p class=\"text-grey-800 text-sm\">{{translate('alerts_limit_reached')}}</p>\n <a href=\"/followup/upgrade\" class=\"btn btn-primary mt-2\">{{translate('upgrade_now')}}</a>\n </div>\n </template>\n </cw-modal>\n</template>\n\n\n<script lang=\"ts\">\nimport CwModal from './modal.vue';\nimport {defineComponent} from 'vue';\nimport AlertsList from \"../types/dto/AlertsList\";\nimport Ajax from \"../lib/Ajax\";\nimport Toast from \"../lib/Toast\";\nimport {Modal} from \"../main-store\";\n\ninterface Usage {\n amountAvailable: number;\n amountInPlan: number;\n amountUsed: number;\n isLimitReached: boolean;\n}\nexport default defineComponent({\n name: \"add-to-alerts-modal\",\n components: {\n CwModal\n },\n props: {\n containingAlertListIds: {\n type: Array as () => number[],\n required: true\n },\n alertsLists: {\n type: Array as () => AlertsList[],\n required: true\n },\n isAnonymousInstituutUser: Boolean,\n hasAccess: Boolean,\n type: {\n type: String as () => \"person\" | \"company\",\n required: true\n },\n value: { //vat or personId\n type: Number,\n required: true\n },\n entityString: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n isLimitReached: false\n }\n },\n computed: {\n alertModal(): Modal{\n return this.store.modals.ADD_TO_ALERTS\n },\n dataKey(): string {\n return this.type === \"company\" \n ? \"vat\" \n : \"personId\";\n },\n link(): string {\n return \"<a href='/followup/add-list' class='link'>\"+ this.translate('hier').toLowerCase() + \"</a>\";\n },\n title(): string {\n const icon = this.type === 'person' ? 'fa-user' : 'fa-building';\n \n return `<i class='far ${icon} mr-2'></i>` + this.entityString;\n }\n },\n methods: {\n async toggleAlert(event: MouseEvent, listId: number): Promise<void> {\n const checked = (event.target as HTMLInputElement).checked;\n\n const url = checked \n ? `/ajax/followup/add-${this.type}` \n : `/ajax/followup/remove-${this.type}`;\n \n const message = checked \n ? 'added_to_alerts' \n : 'removed_from_alerts';\n \n try {\n await Ajax.postAsync(url, {\n listId: listId,\n [this.dataKey]: this.value\n });\n\n Toast.success(this.translate(message));\n } catch(e: unknown) {\n Toast.error(e as string);\n } finally {\n if(checked)\n this.containingAlertListIds.push(listId);\n else\n this.containingAlertListIds.remove(listId);\n }\n \n },\n },\n async mounted() {\n const hasAlertsPermission = this.store.permissions[\"alerts\"];\n if(hasAlertsPermission) {\n const usage = await Ajax.getAsync<Usage>(\"/ajax/followup/get-usage\");\n this.isLimitReached = usage?.isLimitReached ?? true;\n }\n }\n})\n</script>"],"names":["_sfc_main$1","defineComponent","Tooltip","vatOrPersonId","Ajax","Toast","_resolveComponent","_openBlock","_createBlock","_component_tooltip","_ctx","_withCtx","_createElementVNode","_normalizeClass","_cache","_withModifiers","$event","_sfc_main","CwModal","event","listId","checked","url","message","e","usage","_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","alertModal","_component_cw_modal","translate","_toDisplayString","alertsLists","hasAccess","_a","_createTextVNode","link","_hoisted_4","_createElementBlock","_Fragment","_createCommentVNode","_renderList","list","_hoisted_8","isLimitReached"],"mappings":"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"}