{"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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"}