5 Commits

Author SHA1 Message Date
Darko Gjorgjijoski
697c1af065 Move base-select into base 2025-08-28 12:02:39 +02:00
Darko Gjorgjijoski
70bfe1b688 Merge remote-tracking branch 'origin/master' into frontend-performance-improvements 2025-08-28 11:13:45 +02:00
Darko Gjorgjijoski
d70c04b841 Merge branch 'master' into frontend-performance-improvements 2025-05-05 02:24:27 +02:00
Darko Gjorgjijoski
8b49332453 Remove unused imports 2025-01-12 18:10:04 +01:00
Darko Gjorgjijoski
8160b53689 Ditch global components 2025-01-12 17:53:44 +01:00
236 changed files with 1313 additions and 246 deletions

View File

View File

@@ -3,3 +3,6 @@
<BaseDialog />
</template>
<script setup lang="ts">
import BaseDialog from '@/scripts/components/base/BaseDialog.vue'
</script>

View File

@@ -3,7 +3,6 @@ import App from '@/scripts/App.vue'
import { createI18n } from 'vue-i18n'
import messages from '/lang/locales'
import router from '@/scripts/router/index'
import { defineGlobalComponents } from './global-components'
import utils from '@/scripts/helpers/utilities.js'
import _ from 'lodash'
import { VTooltip } from 'v-tooltip'
@@ -33,8 +32,6 @@ export default class InvoiceShelf {
start() {
this.executeCallbacks()
defineGlobalComponents(app)
app.provide('$utils', utils)
const i18n = createI18n({

View File

@@ -152,6 +152,8 @@ import { useModalStore } from '@/scripts/stores/modal'
import NoteModal from '@/scripts/admin/components/modal-components/NoteModal.vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const props = defineProps({
type: {

View File

@@ -79,6 +79,10 @@ import { useI18n } from 'vue-i18n'
import useVuelidate from '@vuelidate/core'
import { required, helpers, numeric, decimal } from '@vuelidate/validators'
import { ValidateEach } from '@vuelidate/components'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseCard from '@/scripts/components/base/BaseCard.vue'
const exchangeRateStore = useExchangeRateStore()
const notificationStore = useNotificationStore()

View File

@@ -24,6 +24,7 @@ import lodash from 'lodash'
import { useCustomFieldStore } from '@/scripts/admin/stores/custom-field'
import { watch } from 'vue'
import SingleField from './CreateCustomFieldsSingle.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
const customFieldStore = useCustomFieldStore()

View File

@@ -19,6 +19,7 @@ import { defineAsyncComponent, computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { helpers, requiredIf } from '@vuelidate/validators'
import useVuelidate from '@vuelidate/core'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
const props = defineProps({
field: {

View File

@@ -5,6 +5,7 @@
<script setup>
import moment from 'moment'
import { computed } from 'vue'
import BaseDatePicker from '@/scripts/components/base/BaseDatePicker.vue'
const props = defineProps({
modelValue: {

View File

@@ -5,6 +5,7 @@
<script setup>
import { computed } from 'vue'
import moment from 'moment'
import BaseDatePicker from '@/scripts/components/base/BaseDatePicker.vue'
const props = defineProps({
modelValue: {

View File

@@ -10,6 +10,7 @@
<script setup>
import { computed } from 'vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
const props = defineProps({
modelValue: {

View File

@@ -4,6 +4,7 @@
<script setup>
import { computed } from 'vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const props = defineProps({
modelValue: {

View File

@@ -4,6 +4,7 @@
<script setup>
import { computed } from 'vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const props = defineProps({
modelValue: {

View File

@@ -4,6 +4,7 @@
<script setup>
import { computed } from 'vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const props = defineProps({
modelValue: {

View File

@@ -4,6 +4,7 @@
<script setup>
import { computed } from 'vue'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
const props = defineProps({
modelValue: {

View File

@@ -4,6 +4,7 @@
<script setup>
import { computed } from 'vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
const props = defineProps({
modelValue: {

View File

@@ -5,6 +5,7 @@
<script setup>
import { computed } from 'vue'
import moment from 'moment'
import BaseTimePicker from '@/scripts/components/base/BaseTimePicker.vue'
const props = defineProps({
modelValue: {

View File

@@ -4,6 +4,7 @@
<script setup>
import { computed } from 'vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const props = defineProps({
modelValue: {

View File

@@ -40,6 +40,9 @@ import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useModalStore } from '@/scripts/stores/modal'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -62,6 +62,10 @@ import { useRoute, useRouter } from 'vue-router'
import { useUserStore } from '@/scripts/admin/stores/user'
import { inject } from 'vue'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -169,6 +169,10 @@ import { useDialogStore } from '@/scripts/stores/dialog'
import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -46,6 +46,10 @@ import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useModalStore } from '@/scripts/stores/modal'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -44,6 +44,10 @@ import { useRoute, useRouter } from 'vue-router'
import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -123,6 +123,10 @@ import { useRoute, useRouter } from 'vue-router'
import { useUserStore } from '@/scripts/admin/stores/user'
import { inject } from 'vue'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -44,6 +44,10 @@ import { useRoute, useRouter } from 'vue-router'
import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -43,6 +43,10 @@ import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useModalStore } from '@/scripts/stores/modal'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -94,6 +94,10 @@ import { useRoute, useRouter } from 'vue-router'
import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -36,6 +36,10 @@ import { useRoute, useRouter } from 'vue-router'
import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useModalStore } from '@/scripts/stores/modal'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -66,6 +66,10 @@ import { useUserStore } from '@/scripts/admin/stores/user'
import { inject } from 'vue'
import { useRecurringInvoiceStore } from '@/scripts/admin/stores/recurring-invoice'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -42,6 +42,10 @@ import { useRoute, useRouter } from 'vue-router'
import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useModalStore } from '@/scripts/stores/modal'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -43,6 +43,10 @@ import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useModalStore } from '@/scripts/stores/modal'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -37,6 +37,10 @@ import { useUserStore } from '@/scripts/admin/stores/user'
import { useRoute, useRouter } from 'vue-router'
import { inject } from 'vue'
import { useUsersStore } from '@/scripts/admin/stores/users'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const props = defineProps({
row: {

View File

@@ -194,6 +194,16 @@ import useVuelidate from '@vuelidate/core'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import { useItemStore } from '@/scripts/admin/stores/item'
import DragIcon from '@/scripts/components/icons/DragIcon.vue'
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseMoney from '@/scripts/components/base/BaseMoney.vue'
import BaseItemSelect from '@/scripts/components/base/BaseItemSelect.vue'
const props = defineProps({
store: {

View File

@@ -19,7 +19,7 @@
>
<template #singlelabel="{ value }">
<div class="absolute left-3.5">
{{ value.name }} -
{{ value.name }} -
<template v-if="value.calculation_type === 'fixed'">
<BaseFormatMoney :amount="value.fixed_amount" :currency="currency" />
</template>
@@ -30,7 +30,7 @@
</template>
<template #option="{ option }">
{{ option.name }} -
{{ option.name }} -
<template v-if="option.calculation_type === 'fixed'">
<BaseFormatMoney :amount="option.fixed_amount" :currency="currency" />
</template>
@@ -78,6 +78,9 @@ import { useTaxTypeStore } from '@/scripts/admin/stores/tax-type'
import { useModalStore } from '@/scripts/stores/modal'
import { useI18n } from 'vue-i18n'
import { useUserStore } from '@/scripts/admin/stores/user'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
const props = defineProps({
ability: {
@@ -162,7 +165,7 @@ const taxAmount = computed(() => {
if(localTax.calculation_type === 'fixed') {
return localTax.fixed_amount
}
if (props.discountedTotal) {
const taxPerItemEnabled = props.store[props.storeProp].tax_per_item === 'YES'
const discountPerItemEnabled = props.store[props.storeProp].discount_per_item === 'YES'

View File

@@ -181,6 +181,9 @@ import { useCompanyStore } from '@/scripts/admin/stores/company'
import { computed } from 'vue'
import draggable from 'vuedraggable'
import Item from './CreateItemRow.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
const props = defineProps({
store: {

View File

@@ -20,6 +20,7 @@
<script setup>
import { ref } from 'vue'
import SelectNotePopup from '../SelectNotePopup.vue'
import BaseCustomInput from '@/scripts/components/base/BaseCustomInput.vue'
const props = defineProps({
store: {

View File

@@ -230,6 +230,14 @@ import Tax from './CreateTotalTaxes.vue'
import TaxStub from '@/scripts/admin/stub/abilities'
import SelectTaxPopup from './SelectTaxPopup.vue'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const taxModal = ref(null)

View File

@@ -20,6 +20,8 @@
<script setup>
import { computed, watch, inject, watchEffect } from 'vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
const props = defineProps({
index: {

View File

@@ -49,6 +49,9 @@ import { watch, computed, ref, onBeforeUnmount } from 'vue'
import { useGlobalStore } from '@/scripts/admin/stores/global'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import { useExchangeRateStore } from '@/scripts/admin/stores/exchange-rate'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
const props = defineProps({
v: {

View File

@@ -180,6 +180,8 @@ import { useTaxTypeStore } from '@/scripts/admin/stores/tax-type'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
const props = defineProps({

View File

@@ -21,6 +21,8 @@
<script setup>
import { useModalStore } from '@/scripts/stores/modal'
import { useI18n } from 'vue-i18n'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
const props = defineProps({
store: {

View File

@@ -97,6 +97,12 @@ import { useModalStore } from '@/scripts/stores/modal'
import { useDiskStore } from '@/scripts/admin/stores/disk'
import { required, helpers } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
let table = ref(null)
let isSaving = ref(false)

View File

@@ -92,6 +92,13 @@ import { computed, ref } from 'vue'
import { required, minLength, maxLength, helpers } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import { useI18n } from 'vue-i18n'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const categoryStore = useCategoryStore()
const modalStore = useModalStore()

View File

@@ -137,6 +137,16 @@ import { useVuelidate } from '@vuelidate/core'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import { useGlobalStore } from '@/scripts/admin/stores/global'
import { useRouter } from 'vue-router'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseFileUploader from '@/scripts/components/base/BaseFileUploader.vue'
import BaseContentPlaceholdersBox from '@/scripts/components/base/BaseContentPlaceholdersBox.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const router = useRouter()
const companyStore = useCompanyStore()

View File

@@ -476,6 +476,17 @@ import { useInvoiceStore } from '@/scripts/admin/stores/invoice'
import CopyInputField from '@/scripts/admin/components/CopyInputField.vue'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useRecurringInvoiceStore } from '@/scripts/admin/stores/recurring-invoice'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseTab from '@/scripts/components/base/BaseTab.vue'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseTabGroup from '@/scripts/components/base/BaseTabGroup.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const recurringInvoiceStore = useRecurringInvoiceStore()
const modalStore = useModalStore()

View File

@@ -77,6 +77,11 @@ import { required, minLength, helpers, sameAs } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import { useGlobalStore } from '@/scripts/admin/stores/global'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const companyStore = useCompanyStore()
const modalStore = useModalStore()

View File

@@ -8,6 +8,7 @@
import { computed, ref, watch } from 'vue'
import ExchangeRateBulkUpdate from '@/scripts/admin/components/currency-exchange-rate/ExchangeRateBulkUpdate.vue'
import { useModalStore } from '@/scripts/stores/modal'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()

View File

@@ -199,6 +199,15 @@ import {
requiredIf,
url,
} from '@vuelidate/validators'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInfoAlert from '@/scripts/components/base/BaseInfoAlert.vue'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const { t } = useI18n()

View File

@@ -62,8 +62,14 @@ import Local from '@/scripts/admin/components/modal-components/disks/LocalDisk.v
import S3 from '@/scripts/admin/components/modal-components/disks/S3Disk.vue'
import S3compat from '@/scripts/admin/components/modal-components/disks/S3CompatDisk.vue'
import DoSpaces from '@/scripts/admin/components/modal-components/disks/DoSpacesDisk.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
export default {
components: {
BaseModal,
BaseButton,
BaseIcon,
Dropbox,
Local,
S3,

View File

@@ -137,6 +137,15 @@ import { useTaxTypeStore } from '@/scripts/admin/stores/tax-type'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useEstimateStore } from '@/scripts/admin/stores/estimate'
import { useInvoiceStore } from '@/scripts/admin/stores/invoice'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseMoney from '@/scripts/components/base/BaseMoney.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const emit = defineEmits(['newItem'])
@@ -208,15 +217,15 @@ const v$ = useVuelidate(
const getTaxTypes = computed(() => {
return taxTypeStore.taxTypes.map((tax) => {
const amount = tax.calculation_type === 'fixed'
const amount = tax.calculation_type === 'fixed'
? new Intl.NumberFormat(undefined, {
style: 'currency',
currency: companyStore.selectedCompanyCurrency.code
}).format(tax.fixed_amount / 100)
: `${tax.percent}%`
return {
...tax,
return {
...tax,
tax_name: `${tax.name} (${amount})`
}
})

View File

@@ -78,6 +78,11 @@ import { computed, ref, watch } from 'vue'
import { required, minLength, maxLength, helpers } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import { useI18n } from 'vue-i18n'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const itemStore = useItemStore()
const modalStore = useModalStore()

View File

@@ -96,6 +96,13 @@ import { required, email, maxLength, helpers } from '@vuelidate/validators'
import useVuelidate from '@vuelidate/core'
import { useModalStore } from '@/scripts/stores/modal'
import { useMailDriverStore } from '@/scripts/admin/stores/mail-driver'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
let isSaving = ref(false)
let formData = reactive({

View File

@@ -115,6 +115,14 @@ import { useNotesStore } from '@/scripts/admin/stores/note'
import { useInvoiceStore } from '@/scripts/admin/stores/invoice'
import { usePaymentStore } from '@/scripts/admin/stores/payment'
import { useEstimateStore } from '@/scripts/admin/stores/estimate'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseCustomInput from '@/scripts/components/base/BaseCustomInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const notificationStore = useNotificationStore()

View File

@@ -68,6 +68,11 @@ import { useI18n } from 'vue-i18n'
import { required, minLength, helpers } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import { useModalStore } from '@/scripts/stores/modal'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const paymentStore = usePaymentStore()

View File

@@ -156,6 +156,12 @@ import { required, minLength, helpers } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import { useRoleStore } from '@/scripts/admin/stores/role'
import { useModalStore } from '@/scripts/stores/modal'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseCheckbox from '@/scripts/components/base/BaseCheckbox.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const roleStore = useRoleStore()

View File

@@ -88,6 +88,10 @@
import { ref, computed } from 'vue'
import { useModalStore } from '@/scripts/stores/modal'
import { useUserStore } from '@/scripts/admin/stores/user'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseCheckbox from '@/scripts/components/base/BaseCheckbox.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const userStore = useUserStore()

View File

@@ -142,6 +142,13 @@ import { useEstimateStore } from '@/scripts/admin/stores/estimate'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import { useMailDriverStore } from '@/scripts/admin/stores/mail-driver'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseCustomInput from '@/scripts/components/base/BaseCustomInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const estimateStore = useEstimateStore()

View File

@@ -155,6 +155,13 @@ import { useInvoiceStore } from '@/scripts/admin/stores/invoice'
import { useVuelidate } from '@vuelidate/core'
import { required, email, helpers } from '@vuelidate/validators'
import { useMailDriverStore } from '@/scripts/admin/stores/mail-driver'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseCustomInput from '@/scripts/components/base/BaseCustomInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const companyStore = useCompanyStore()

View File

@@ -156,6 +156,13 @@ import { useNotificationStore } from '@/scripts/stores/notification'
import { useModalStore } from '@/scripts/stores/modal'
import { useMailDriverStore } from '@/scripts/admin/stores/mail-driver'
import { useDialogStore } from '@/scripts/stores/dialog'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseCustomInput from '@/scripts/components/base/BaseCustomInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const paymentStore = usePaymentStore()
const companyStore = useCompanyStore()

View File

@@ -158,6 +158,14 @@ import {
helpers,
} from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMoney from '@/scripts/components/base/BaseMoney.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const taxTypeStore = useTaxTypeStore()
const modalStore = useModalStore()

View File

@@ -123,6 +123,13 @@ import { useGlobalStore } from '@/scripts/admin/stores/global'
import { useI18n } from 'vue-i18n'
import { helpers, required } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const globalStore = useGlobalStore()

View File

@@ -222,6 +222,14 @@ import { required, numeric, helpers } from '@vuelidate/validators'
import { useModalStore } from '@/scripts/stores/modal'
import { useCustomFieldStore } from '@/scripts/admin/stores/custom-field'
import { useI18n } from 'vue-i18n'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseModal from '@/scripts/components/base/BaseModal.vue'
const modalStore = useModalStore()
const customFieldStore = useCustomFieldStore()

View File

@@ -19,6 +19,8 @@
<script setup>
import { ref } from 'vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const emit = defineEmits(['onAdd'])

View File

@@ -170,7 +170,13 @@ import { computed, onBeforeUnmount, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import useVuelidate from '@vuelidate/core'
import { required, url, helpers } from '@vuelidate/validators'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
export default {
components: { BaseInputGrid, BaseMultiselect, BaseInputGroup, BaseInput, BaseSwitch },
props: {
isEdit: {
type: Boolean,

View File

@@ -149,7 +149,13 @@ import { reactive, ref, computed, onBeforeUnmount } from 'vue'
import { useI18n } from 'vue-i18n'
import useVuelidate from '@vuelidate/core'
import { required, helpers } from '@vuelidate/validators'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
export default {
components: { BaseInputGrid, BaseMultiselect, BaseInputGroup, BaseInput, BaseSwitch },
props: {
isEdit: {
type: Boolean,

View File

@@ -80,8 +80,14 @@ import { computed, onBeforeUnmount, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import useVuelidate from '@vuelidate/core'
import { required, helpers } from '@vuelidate/validators'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
export default {
components: { BaseInputGrid, BaseMultiselect, BaseInputGroup, BaseInput, BaseSwitch },
props: {
isEdit: {
type: Boolean,

View File

@@ -169,7 +169,13 @@ import { computed, onBeforeUnmount, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import useVuelidate from '@vuelidate/core'
import { required, helpers } from '@vuelidate/validators'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
export default {
components: { BaseInputGrid, BaseMultiselect, BaseInputGroup, BaseInput, BaseSwitch },
props: {
isEdit: {
type: Boolean,

View File

@@ -151,7 +151,13 @@ import { computed, onBeforeUnmount, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import useVuelidate from '@vuelidate/core'
import { required, helpers } from '@vuelidate/validators'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
export default {
components: { BaseInputGrid, BaseMultiselect, BaseInputGroup, BaseInput, BaseSwitch },
props: {
isEdit: {
type: Boolean,

View File

@@ -34,6 +34,7 @@ import SiteHeader from '@/scripts/admin/layouts/partials/TheSiteHeader.vue'
import SiteSidebar from '@/scripts/admin/layouts/partials/TheSiteSidebar.vue'
import NotificationRoot from '@/scripts/components/notifications/NotificationRoot.vue'
import ExchangeRateBulkUpdateModal from '@/scripts/admin/components/modal-components/ExchangeRateBulkUpdateModal.vue'
import BaseGlobalLoader from '@/scripts/components/base/BaseGlobalLoader.vue'
const globalStore = useGlobalStore()
const route = useRoute()

View File

@@ -184,6 +184,9 @@ import GlobalSearchBar from '@/scripts/components/GlobalSearchBar.vue'
import MainLogo from '@/scripts/components/icons/MainLogo.vue'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
const authStore = useAuthStore()
const userStore = useUserStore()

View File

@@ -169,6 +169,7 @@ import {
import { useRoute } from 'vue-router'
import { useGlobalStore } from '@/scripts/admin/stores/global'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
const route = useRoute()
const globalStore = useGlobalStore()

View File

@@ -79,6 +79,10 @@
</template>
<script>
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
import { computed, reactive } from 'vue'
import { useItemStore } from '@/scripts/admin/stores/item'
import {
@@ -90,6 +94,9 @@ import {
export default {
components: {
BasePage,
BaseDropdown,
BaseDropdownItem,
BaseTable,
EllipsisHorizontalIcon,
UserIcon,

View File

@@ -42,12 +42,15 @@
<script type="text/babel" setup>
import axios from 'axios'
import { reactive, ref, computed } from 'vue'
import { required, email, helpers } from '@vuelidate/validators'
import { reactive, ref } from 'vue'
import { email, helpers, required } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useI18n } from 'vue-i18n'
import { handleError } from '@/scripts/helpers/error-handling'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
const notificationStore = useNotificationStore()
const { t } = useI18n()

View File

@@ -57,14 +57,17 @@
<script setup>
import axios from 'axios'
import { ref, computed, onMounted } from 'vue'
import { computed, onMounted, ref } from 'vue'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useRouter } from 'vue-router'
import { required, email, helpers } from '@vuelidate/validators'
import { email, helpers, required } from '@vuelidate/validators'
import { useVuelidate } from '@vuelidate/core'
import { useI18n } from 'vue-i18n'
import { useAuthStore } from '@/scripts/admin/stores/auth'
import { handleError } from '@/scripts/helpers/error-handling'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
const notificationStore = useNotificationStore()
const authStore = useAuthStore()

View File

@@ -53,14 +53,17 @@
</template>
<script type="text/babel" setup>
import { ref, computed, reactive } from 'vue'
import { computed, reactive, ref } from 'vue'
import useVuelidate from '@vuelidate/core'
import { required, email, minLength, sameAs } from '@vuelidate/validators'
import { email, minLength, required, sameAs } from '@vuelidate/validators'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useRoute, useRouter } from 'vue-router'
import axios from 'axios'
import { useI18n } from 'vue-i18n'
import { handleError } from '@/scripts/helpers/error-handling'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
const notificationStore = useNotificationStore()
const { t } = useI18n()

View File

@@ -582,19 +582,10 @@
</template>
<script setup>
import { computed, onMounted, ref } from 'vue'
import { computed, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import {
required,
minLength,
url,
maxLength,
helpers,
email,
sameAs,
requiredIf,
} from '@vuelidate/validators'
import { email, helpers, maxLength, minLength, required, requiredIf, sameAs, url } from '@vuelidate/validators'
import useVuelidate from '@vuelidate/core'
import { useCustomerStore } from '@/scripts/admin/stores/customer'
import { useCustomFieldStore } from '@/scripts/admin/stores/custom-field'
@@ -602,6 +593,20 @@ import CustomerCustomFields from '@/scripts/admin/components/custom-fields/Creat
import { useGlobalStore } from '@/scripts/admin/stores/global'
import CopyInputField from '@/scripts/admin/components/CopyInputField.vue'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import BaseDivider from '@/scripts/components/base/BaseDivider.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseSwitch from '@/scripts/components/base/BaseSwitch.vue'
import BaseCard from '@/scripts/components/base/BaseCard.vue'
import BaseBreadcrumbItem from '@/scripts/components/base/BaseBreadcrumbItem.vue'
import BaseBreadcrumb from '@/scripts/components/base/BaseBreadcrumb.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const customerStore = useCustomerStore()
const customFieldStore = useCustomFieldStore()

View File

@@ -195,7 +195,7 @@
<script setup>
import { debouncedWatch } from '@vueuse/core'
import moment from 'moment'
import { reactive, ref, inject, computed, onUnmounted } from 'vue'
import { computed, onUnmounted, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useCustomerStore } from '@/scripts/admin/stores/customer'
import { useDialogStore } from '@/scripts/stores/dialog'
@@ -206,6 +206,22 @@ import abilities from '@/scripts/admin/stub/abilities'
import CustomerDropdown from '@/scripts/admin/components/dropdowns/CustomerIndexDropdown.vue'
import AstronautIcon from '@/scripts/components/icons/empty/AstronautIcon.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseText from '@/scripts/components/base/BaseText.vue'
import BaseCheckbox from '@/scripts/components/base/BaseCheckbox.vue'
import BaseTable from '@/scripts/components/base/base-table/BaseTable.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseEmptyPlaceholder from '@/scripts/components/base/BaseEmptyPlaceholder.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseFilterWrapper from '@/scripts/components/base/BaseFilterWrapper.vue'
import BaseBreadcrumbItem from '@/scripts/components/base/BaseBreadcrumbItem.vue'
import BaseBreadcrumb from '@/scripts/components/base/BaseBreadcrumb.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const companyStore = useCompanyStore()
const dialogStore = useDialogStore()

View File

@@ -93,14 +93,20 @@
<script setup>
import CustomerViewSidebar from './partials/CustomerViewSidebar.vue'
import CustomerChart from './partials/CustomerChart.vue'
import { ref, computed, inject } from 'vue'
import { useRouter, useRoute } from 'vue-router'
import { computed, inject, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import { useCustomerStore } from '@/scripts/admin/stores/customer'
import { useDialogStore } from '@/scripts/stores/dialog'
import { useUserStore } from '@/scripts/admin/stores/user'
import CustomerDropdown from '@/scripts/admin/components/dropdowns/CustomerIndexDropdown.vue'
import abilities from '@/scripts/admin/stub/abilities'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const utils = inject('utils')
const dialogStore = useDialogStore()

View File

@@ -123,12 +123,16 @@
<script setup>
import CustomerInfo from './CustomerInfo.vue'
import LineChart from '@/scripts/admin/components/charts/LineChart.vue'
import { ref, computed, watch, reactive, inject } from 'vue'
import { computed, inject, reactive, ref, watch } from 'vue'
import { useCustomerStore } from '@/scripts/admin/stores/customer'
import { useRoute } from 'vue-router'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import ChartPlaceholder from './CustomerChartPlaceholder.vue'
import { useI18n } from 'vue-i18n'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseCard from '@/scripts/components/base/BaseCard.vue'
const companyStore = useCompanyStore()
const customerStore = useCustomerStore()

View File

@@ -77,3 +77,8 @@
</div>
</BaseContentPlaceholders>
</template>
<script setup lang="ts">
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholdersBox from '@/scripts/components/base/BaseContentPlaceholdersBox.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
</script>

View File

@@ -108,6 +108,10 @@
<script setup>
import { computed } from 'vue'
import { useCustomerStore } from '@/scripts/admin/stores/customer'
import BaseDescriptionListItem from '@/scripts/components/base/BaseDescriptionListItem.vue'
import BaseDescriptionList from '@/scripts/components/base/BaseDescriptionList.vue'
import BaseHeading from '@/scripts/components/base/BaseHeading.vue'
import BaseCustomerAddressDisplay from '@/scripts/components/base/BaseCustomerAddressDisplay.vue'
const customerStore = useCustomerStore()

View File

@@ -182,12 +182,21 @@
</template>
<script setup>
import { computed, ref, reactive } from 'vue'
import { computed, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useRoute } from 'vue-router'
import { useCustomerStore } from '@/scripts/admin/stores/customer'
import LoadingIcon from '@/scripts/components/icons/LoadingIcon.vue'
import { debounce } from 'lodash'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseText from '@/scripts/components/base/BaseText.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseRadio from '@/scripts/components/base/BaseRadio.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
const customerStore = useCustomerStore()
const route = useRoute()

View File

@@ -5,6 +5,7 @@ import DashboardTable from '../dashboard/DashboardTable.vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import { onMounted } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import BasePage from '@/scripts/components/base/BasePage.vue'
const route = useRoute()
const userStore = useUserStore()

View File

@@ -149,7 +149,7 @@
</template>
<script setup>
import { ref, watch, inject } from 'vue'
import { inject, ref, watch } from 'vue'
import { useDashboardStore } from '@/scripts/admin/stores/dashboard'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import LineChart from '@/scripts/admin/components/charts/LineChart.vue'
@@ -157,6 +157,9 @@ import ChartPlaceholder from './DashboardChartPlaceholder.vue'
import abilities from '@/scripts/admin/stub/abilities'
import { useUserStore } from '@/scripts/admin/stores/user'
import { useI18n } from 'vue-i18n'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
const dashboardStore = useDashboardStore()
const companyStore = useCompanyStore()

View File

@@ -86,3 +86,8 @@
</div>
</BaseContentPlaceholders>
</template>
<script setup lang="ts">
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholdersBox from '@/scripts/components/base/BaseContentPlaceholdersBox.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
</script>

View File

@@ -62,6 +62,7 @@ import { inject } from 'vue'
import { useDashboardStore } from '@/scripts/admin/stores/dashboard'
import { useCompanyStore } from '@/scripts/admin/stores/company'
import { useUserStore } from '@/scripts/admin/stores/user'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
const utils = inject('utils')

View File

@@ -18,3 +18,8 @@
</div>
</BaseContentPlaceholders>
</template>
<script setup lang="ts">
import BaseContentPlaceholdersBox from '@/scripts/components/base/BaseContentPlaceholdersBox.vue'
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
</script>

View File

@@ -29,3 +29,8 @@
</div>
</BaseContentPlaceholders>
</template>
<script setup lang="ts">
import BaseContentPlaceholdersBox from '@/scripts/components/base/BaseContentPlaceholdersBox.vue'
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
</script>

View File

@@ -111,6 +111,9 @@ import { useUserStore } from '@/scripts/admin/stores/user'
import abilities from '@/scripts/admin/stub/abilities'
import InvoiceDropdown from '@/scripts/admin/components/dropdowns/InvoiceIndexDropdown.vue'
import EstimateDropdown from '@/scripts/admin/components/dropdowns/EstimateIndexDropdown.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseTable from '@/scripts/components/base/base-table/BaseTable.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
const dashboardStore = useDashboardStore()

View File

@@ -40,6 +40,7 @@
<script setup>
import { computed } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
const route = useRoute()
const router = useRouter()

View File

@@ -238,7 +238,7 @@
</template>
<script setup>
import { computed, onUnmounted, reactive, ref, watch, inject } from 'vue'
import { computed, onUnmounted, reactive, ref } from 'vue'
import { useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import { useEstimateStore } from '@/scripts/admin/stores/estimate'
@@ -250,7 +250,29 @@ import abilities from '@/scripts/admin/stub/abilities'
import ObservatoryIcon from '@/scripts/components/icons/empty/ObservatoryIcon.vue'
import EstimateDropDown from '@/scripts/admin/components/dropdowns/EstimateIndexDropdown.vue'
import SendEstimateModal from '@/scripts/admin/components/modal-components/SendEstimateModal.vue'
import BaseEstimateStatusLabel from "@/scripts/components/base/BaseEstimateStatusLabel.vue";
import BaseEstimateStatusLabel from '@/scripts/components/base/BaseEstimateStatusLabel.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseEstimateStatusBadge from '@/scripts/components/base/BaseEstimateStatusBadge.vue'
import BaseText from '@/scripts/components/base/BaseText.vue'
import BaseCheckbox from '@/scripts/components/base/BaseCheckbox.vue'
import BaseTable from '@/scripts/components/base/base-table/BaseTable.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BaseTab from '@/scripts/components/base/BaseTab.vue'
import BaseTabGroup from '@/scripts/components/base/BaseTabGroup.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseEmptyPlaceholder from '@/scripts/components/base/BaseEmptyPlaceholder.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseDatePicker from '@/scripts/components/base/BaseDatePicker.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseCustomerSelectInput from '@/scripts/components/base/BaseCustomerSelectInput.vue'
import BaseFilterWrapper from '@/scripts/components/base/BaseFilterWrapper.vue'
import BaseBreadcrumbItem from '@/scripts/components/base/BaseBreadcrumbItem.vue'
import BaseBreadcrumb from '@/scripts/components/base/BaseBreadcrumb.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const estimateStore = useEstimateStore()
const dialogStore = useDialogStore()

View File

@@ -291,6 +291,19 @@ import SendEstimateModal from '@/scripts/admin/components/modal-components/SendE
import LoadingIcon from '@/scripts/components/icons/LoadingIcon.vue'
import abilities from '@/scripts/admin/stub/abilities'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseEstimateStatusLabel from '@/scripts/components/base/BaseEstimateStatusLabel.vue'
import BaseEstimateStatusBadge from '@/scripts/components/base/BaseEstimateStatusBadge.vue'
import BaseText from '@/scripts/components/base/BaseText.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseRadio from '@/scripts/components/base/BaseRadio.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const modalStore = useModalStore()
const estimateStore = useEstimateStore()

View File

@@ -137,17 +137,11 @@
</template>
<script setup>
import { computed, ref, watch, onMounted } from 'vue'
import { computed, ref, watch } from 'vue'
import { cloneDeep } from 'lodash'
import { useRoute, useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import {
required,
maxLength,
helpers,
requiredIf,
decimal,
} from '@vuelidate/validators'
import { decimal, helpers, maxLength, required, requiredIf } from '@vuelidate/validators'
import useVuelidate from '@vuelidate/core'
import { useModuleStore } from '@/scripts/admin/stores/module'
import { useEstimateStore } from '@/scripts/admin/stores/estimate'
@@ -164,6 +158,13 @@ import SelectTemplateModal from '@/scripts/admin/components/modal-components/Sel
import TaxTypeModal from '@/scripts/admin/components/modal-components/TaxTypeModal.vue'
import ItemModal from '@/scripts/admin/components/modal-components/ItemModal.vue'
import SalesTax from '@/scripts/admin/components/estimate-invoice-common/SalesTax.vue'
import BaseScrollPane from '@/scripts/components/base/BaseScrollPane.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseBreadcrumbItem from '@/scripts/components/base/BaseBreadcrumbItem.vue'
import BaseBreadcrumb from '@/scripts/components/base/BaseBreadcrumb.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const estimateStore = useEstimateStore()
const moduleStore = useModuleStore()

View File

@@ -82,6 +82,11 @@
<script setup>
import { useEstimateStore } from '@/scripts/admin/stores/estimate'
import ExchangeRateConverter from '@/scripts/admin/components/estimate-invoice-common/ExchangeRateConverter.vue'
import BaseInput from '@/scripts/components/base/BaseInput.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseDatePicker from '@/scripts/components/base/BaseDatePicker.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseCustomerSelectPopup from '@/scripts/components/base/BaseCustomerSelectPopup.vue'
const props = defineProps({
v: {

View File

@@ -282,17 +282,10 @@
</template>
<script setup>
import { ref, computed, onMounted, onBeforeUnmount } from 'vue'
import { computed, onBeforeUnmount, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useI18n } from 'vue-i18n'
import {
required,
minValue,
maxLength,
helpers,
requiredIf,
decimal,
} from '@vuelidate/validators'
import { decimal, helpers, maxLength, minValue, required, requiredIf } from '@vuelidate/validators'
import useVuelidate from '@vuelidate/core'
import { useExpenseStore } from '@/scripts/admin/stores/expense'
import { useCategoryStore } from '@/scripts/admin/stores/category'
@@ -304,6 +297,21 @@ import ExpenseCustomFields from '@/scripts/admin/components/custom-fields/Create
import CategoryModal from '@/scripts/admin/components/modal-components/CategoryModal.vue'
import ExchangeRateConverter from '@/scripts/admin/components/estimate-invoice-common/ExchangeRateConverter.vue'
import { useGlobalStore } from '@/scripts/admin/stores/global'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseFileUploader from '@/scripts/components/base/BaseFileUploader.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseTextarea from '@/scripts/components/base/BaseTextarea.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseMoney from '@/scripts/components/base/BaseMoney.vue'
import BaseDatePicker from '@/scripts/components/base/BaseDatePicker.vue'
import BaseSelectAction from '@/scripts/components/base/BaseSelectAction.vue'
import BaseInputGrid from '@/scripts/components/base/BaseInputGrid.vue'
import BaseCard from '@/scripts/components/base/BaseCard.vue'
import BaseBreadcrumbItem from '@/scripts/components/base/BaseBreadcrumbItem.vue'
import BaseBreadcrumb from '@/scripts/components/base/BaseBreadcrumb.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const customerStore = useCustomerStore()
const companyStore = useCompanyStore()

View File

@@ -215,7 +215,7 @@
</template>
<script setup>
import { ref, onMounted, computed, reactive, onUnmounted } from 'vue'
import { computed, onMounted, onUnmounted, reactive, ref } from 'vue'
import { useI18n } from 'vue-i18n'
import { useExpenseStore } from '@/scripts/admin/stores/expense'
import { useCategoryStore } from '@/scripts/admin/stores/category'
@@ -228,6 +228,24 @@ import abilities from '@/scripts/admin/stub/abilities'
import UFOIcon from '@/scripts/components/icons/empty/UFOIcon.vue'
import ExpenseDropdown from '@/scripts/admin/components/dropdowns/ExpenseIndexDropdown.vue'
import BaseText from '@/scripts/components/base/BaseText.vue'
import BaseFormatMoney from '@/scripts/components/base/BaseFormatMoney.vue'
import BaseCheckbox from '@/scripts/components/base/BaseCheckbox.vue'
import BaseTable from '@/scripts/components/base/base-table/BaseTable.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseDropdownItem from '@/scripts/components/base/BaseDropdownItem.vue'
import BaseDropdown from '@/scripts/components/base/BaseDropdown.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseEmptyPlaceholder from '@/scripts/components/base/BaseEmptyPlaceholder.vue'
import BaseDatePicker from '@/scripts/components/base/BaseDatePicker.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseCustomerSelectInput from '@/scripts/components/base/BaseCustomerSelectInput.vue'
import BaseFilterWrapper from '@/scripts/components/base/BaseFilterWrapper.vue'
import BaseBreadcrumbItem from '@/scripts/components/base/BaseBreadcrumbItem.vue'
import BaseBreadcrumb from '@/scripts/components/base/BaseBreadcrumb.vue'
import BasePageHeader from '@/scripts/components/base/BasePageHeader.vue'
import BasePage from '@/scripts/components/base/BasePage.vue'
const companyStore = useCompanyStore()
const expenseStore = useExpenseStore()

View File

@@ -31,10 +31,12 @@ import Step7CompanyInfo from './Step7CompanyInfo.vue'
import Step8CompanyPreferences from './Step8CompanyPreferences.vue'
import { useInstallationStore } from '@/scripts/admin/stores/installation'
import { useRouter } from 'vue-router'
import BaseWizard from '@/scripts/components/base/BaseWizard.vue'
export default {
components: {
BaseWizard,
step_0: Step0SetLanguage,
step_1: Step1RequirementsCheck,
step_2: Step2PermissionCheck,

View File

@@ -40,8 +40,13 @@
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { onMounted, ref } from 'vue'
import { useInstallationStore } from '@/scripts/admin/stores/installation.js'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseMultiselect from '@/scripts/components/base/base-select/BaseMultiselect.vue'
import BaseInputGroup from '@/scripts/components/base/BaseInputGroup.vue'
import BaseWizardStep from '@/scripts/components/base/BaseWizardStep.vue'
const { global } = window.i18n

View File

@@ -71,8 +71,11 @@
</template>
<script setup>
import { ref, computed, onMounted } from 'vue'
import { computed, onMounted, ref } from 'vue'
import { useInstallationStore } from '@/scripts/admin/stores/installation.js'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseWizardStep from '@/scripts/components/base/BaseWizardStep.vue'
const emit = defineEmits(['next'])

View File

@@ -66,10 +66,16 @@
</template>
<script setup>
import { ref, onMounted } from 'vue'
import { onMounted, ref } from 'vue'
import { useInstallationStore } from '@/scripts/admin/stores/installation'
import { useDialogStore } from '@/scripts/stores/dialog'
import { useI18n } from 'vue-i18n'
import BaseIcon from '@/scripts/components/base/BaseIcon.vue'
import BaseButton from '@/scripts/components/base/BaseButton.vue'
import BaseContentPlaceholdersBox from '@/scripts/components/base/BaseContentPlaceholdersBox.vue'
import BaseContentPlaceholdersText from '@/scripts/components/base/BaseContentPlaceholdersText.vue'
import BaseContentPlaceholders from '@/scripts/components/base/BaseContentPlaceholders.vue'
import BaseWizardStep from '@/scripts/components/base/BaseWizardStep.vue'
const emit = defineEmits(['next'])

View File

@@ -15,16 +15,18 @@
</template>
<script>
import { ref, computed } from 'vue'
import { computed, ref } from 'vue'
import Mysql from './database/MysqlDatabase.vue'
import Pgsql from './database/PgsqlDatabase.vue'
import Sqlite from './database/SqliteDatabase.vue'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useInstallationStore } from '@/scripts/admin/stores/installation'
import { useI18n } from 'vue-i18n'
import BaseWizardStep from '@/scripts/components/base/BaseWizardStep.vue'
export default {
components: {
BaseWizardStep,
Mysql,
Pgsql,
Sqlite,

Some files were not shown because too many files have changed in this diff Show More