mirror of https://github.com/nocodb/nocodb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.3 KiB
94 lines
2.3 KiB
<template> |
|
<v-tooltip top :disabled="!(isMoney && isPG)"> |
|
<template #activator="{ on, attrs }"> |
|
<v-row class="currency-wrapper" v-bind="attrs" v-on="on"> |
|
<v-col cols="6"> |
|
<!--label="Format Locale"--> |
|
<v-autocomplete |
|
v-model="colMeta.currency_locale" |
|
dense |
|
class="caption" |
|
label="Currency Locale" |
|
:rules="[isValidCurrencyLocale]" |
|
:items="currencyLocaleList" |
|
outlined |
|
hide-details |
|
:disabled="isMoney && isPG" |
|
/> |
|
</v-col> |
|
<v-col cols="6"> |
|
<!--label="Currency Code"--> |
|
<v-autocomplete |
|
v-model="colMeta.currency_code" |
|
dense |
|
class="caption" |
|
label="Currency Code" |
|
:rules="[isValidCurrencyCode]" |
|
:items="currencyList" |
|
outlined |
|
hide-details |
|
:disabled="isMoney && isPG" |
|
/> |
|
</v-col> |
|
</v-row> |
|
</template> |
|
<span>{{ message }}</span> |
|
</v-tooltip> |
|
</template> |
|
|
|
<script> |
|
import { currencyCodes, currencyLocales, validateCurrencyCode, validateCurrencyLocale } from '~/helpers/currencyHelper'; |
|
|
|
export default { |
|
name: 'CurrencyOptions', |
|
props: ['column', 'meta', 'value'], |
|
data: () => ({ |
|
colMeta: { |
|
currency_locale: 'en-US', |
|
currency_code: 'USD', |
|
}, |
|
currencyList: currencyCodes, |
|
currencyLocaleList: currencyLocales(), |
|
isValidCurrencyLocale: value => { |
|
return validateCurrencyLocale(value) || 'Invalid locale'; |
|
}, |
|
isValidCurrencyCode: value => { |
|
return validateCurrencyCode(value) || 'Invalid Currency Code'; |
|
}, |
|
}), |
|
computed: { |
|
isMoney() { |
|
return this.column.dt === 'money'; |
|
}, |
|
isPG() { |
|
return ['pg'].includes(this.$store.getters['project/GtrClientType']); |
|
}, |
|
message() { |
|
if (this.isMoney && this.isPG) { |
|
return "PostgreSQL 'money' type has own currency settings"; |
|
} |
|
return ''; |
|
}, |
|
}, |
|
watch: { |
|
value() { |
|
this.colMeta = this.value || {}; |
|
}, |
|
colMeta(v) { |
|
this.$emit('input', v); |
|
}, |
|
}, |
|
created() { |
|
this.colMeta = this.value ? { ...this.value } : { ...this.colMeta }; |
|
}, |
|
}; |
|
</script> |
|
|
|
<style scoped> |
|
.currency-wrapper { |
|
margin: 0; |
|
} |
|
/deep/ .v-input__append-inner { |
|
margin-top: 4px !important; |
|
} |
|
</style>
|
|
|