|
|
<template> <modal name="add-modal" width="100%" :clickToClose="false"> <div class="tw-p-[40px]"> <div class="modal-header tw-flex tw-justify-center tw-items-center tw-mb-[40px] md:tw-mb-[40px] xl:tw-justify-between"> <div class="tw-text-[20px] tw-font-bold tw-leading-[26px]"> {{ $t("Add Company Info") }} </div> <button class="close tw-transition tw-btn-md" @click="$modal.hide('add-modal')"></button> </div>
<div class="modal-content tw-grid tw-grid-cols-1 tw-gap-y-[10px] md:tw-grid-cols-2 md:tw-gap-x-[60px]"> <div class="element"> <elementInput :input="{ id: 'CompanyName', label: 'Company Name', required: true, type: 'text', }" :default="formData.company_name" :validation="validation.company_name" @change="formData.company_name = $event"></elementInput> </div> <div class="element"> <elementInput :input="{ id: 'TaxNumber', label: 'Tax Number', required: true, type: 'tel', }" :default="formData.company_tax_no" :validation="validation.company_tax_no" @change="formData.company_tax_no = $event"></elementInput> </div> <div class="element md:tw-col-span-2"> <elementAddress :input="{ id: 'StreetAddress', label: 'Street address', required: true, type: 'street', }" :default1="formData.company_address1" :default2="formData.company_address2" :validation1="validation.company_address1" :validation2="validation.company_address2" @change1="formData.company_address1 = $event" @change2="formData.company_address2 = $event"> </elementAddress> </div> <div class="element"> <elementInput :input="{ id: 'City', label: 'City', required: true, type: 'text', }" :default="formData.company_city" :validation="validation.company_city" @change="formData.company_city = $event"></elementInput> </div> <div class="element"> <elementInput :input="{ id: 'State', label: 'State/Province', required: false, type: 'text', }" :default="formData.company_state" :validation="validation.company_state" @change="formData.company_state = $event"></elementInput> </div> <div class="element"> <elementSelect :select="{ id: 'Country', label: 'Country', required: true, }" :selectList="selectList" :default="formData.company_country" :validation="validation.company_country" @change="formData.company_country = $event"></elementSelect> </div> <div class="element"> <elementInput :input="{ id: 'ZIP', label: 'ZIP/Postal code', required: true, type: 'zip', }" :default="formData.company_zipcode" :validation="validation.company_zipcode" @change="formData.company_zipcode = $event"></elementInput> </div> </div> <div class="modal-footer tw-flex tw-justify-end tw-items-center tw-mt-[60px]"> <button class="tw-transition tw-btn-md tw-text-primary-1 tw-px-[30px] tw-py-[9.5px] tw-mr-[10px] tw-rounded-2xl" @click="reset"> {{ $t("Clear") }} </button> <button class="tw-transition tw-btn-md tw-bg-primary-1 tw-px-[30px] tw-py-[9.5px] tw-rounded-2xl hover:tw-bg-primary-2" @click="save"> {{ $t("Save") }} </button> </div> </div> </modal> </template> <script> import elementInput from "@/components/newComponent/form/ElementInput"; import elementSelect from "@/components/newComponent/form/ElementSelect"; import elementAddress from "@/components/newComponent/form/ElementAddress"; import is from "is_js"; export default { name: "AddCompanyModal", components: { elementInput, elementSelect, elementAddress, is, }, props: { selectList: { type: Array, }, }, data() { return { formData: { company_state: "", company_zipcode: "", company_tax_no: "", company_address1: "", company_city: "", company_country: 0, company_name: "", company_address2: "", }, validation: { company_state: true, company_zipcode: true, company_tax_no: true, company_address1: true, company_city: true, company_country: true, company_name: true, company_address2: true, }, errors: null, }; }, mounted() {}, methods: { reset() { this.formData = { company_state: "", company_zipcode: "", company_tax_no: "", company_address1: "", company_city: "", company_country: 0, company_name: "", company_address2: "", company_country_name: "", }; }, save() { this.validators(); if (this.validators()) { const patchData = JSON.parse(JSON.stringify(this.formData)); this.$axios .post( `/member/company?jwt=${ this.$auth.$storage.getUniversal("jwt").token }`,
patchData ) .then((result) => { if (result.status == 200) { this.$emit("update", true); this.reset(); this.$modal.hide("add-modal"); } }) .catch((err) => { console.log(err); }); } }, validators() { if (is.empty(this.formData.company_name)) { this.validation.company_name = false; } else { this.validation.company_name = true; } if (is.empty(this.formData.company_tax_no)) { this.validation.company_tax_no = false; } else { this.validation.company_tax_no = true; } if (is.empty(this.formData.company_address1)) { this.validation.company_address1 = false; } else { this.validation.company_address1 = true; } if (is.empty(this.formData.company_city)) { this.validation.company_city = false; } else { this.validation.company_city = true; } if (this.formData.company_country == 0) { this.validation.company_country = false; } else { this.validation.company_country = true; } if (is.empty(this.formData.company_zipcode)) { this.validation.company_zipcode = false; } else { this.validation.company_zipcode = true; }
this.errors = Object.entries(this.validation).filter( (e) => e[1] == false ); if (this.errors.length > 0) { return false; } else { return true; } }, }, }; </script> <style lang="scss" scoped> .close { position: absolute; right: 25px; top: 25px; background-image: url("~/assets/svg/close.svg"); background-position: center; background-repeat: no-repeat; background-size: cover; width: 14px; height: 14px;
@media screen and (min-width: 1366px) { position: relative; right: initial; top: initial; } }
:deep() { .v--modal-box { height: 100vh !important;
@media screen and (min-width: 768px) { height: max-content !important; width: max-content; } }
.v--modal { height: 100vh !important;
@media screen and (min-width: 768px) { height: max-content !important; width: max-content; } } } </style>
|