diff --git a/packages/nc-gui-v2/components/smartsheet-column/AdvancedOptions.vue b/packages/nc-gui-v2/components/smartsheet-column/AdvancedOptions.vue
index 043982561c..26bf40e44f 100644
--- a/packages/nc-gui-v2/components/smartsheet-column/AdvancedOptions.vue
+++ b/packages/nc-gui-v2/components/smartsheet-column/AdvancedOptions.vue
@@ -5,9 +5,6 @@ const { formState, validateInfos, setAdditionalValidations, sqlUi, onDataTypeCha
const dataTypes = computed(() => sqlUi?.value?.getDataTypeListForUiType(formState))
-// set additional validations
-setAdditionalValidations({})
-
// to avoid type error with checkbox
formState.value.rqd = !!formState.value.rqd
formState.value.pk = !!formState.value.pk
diff --git a/packages/nc-gui-v2/components/smartsheet-column/CurrencyOptions.vue b/packages/nc-gui-v2/components/smartsheet-column/CurrencyOptions.vue
new file mode 100644
index 0000000000..29cf63b9e4
--- /dev/null
+++ b/packages/nc-gui-v2/components/smartsheet-column/CurrencyOptions.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+ {{ currencyLocale.text }}
+
+
+
+
+
+
+
+
+ {{ currencyCode }}
+
+
+
+
+
+ {{ message }}
+
+
+
diff --git a/packages/nc-gui-v2/components/smartsheet-column/EditOrAdd.vue b/packages/nc-gui-v2/components/smartsheet-column/EditOrAdd.vue
index 835b3d789d..a0056bcbe8 100644
--- a/packages/nc-gui-v2/components/smartsheet-column/EditOrAdd.vue
+++ b/packages/nc-gui-v2/components/smartsheet-column/EditOrAdd.vue
@@ -87,6 +87,8 @@ watchEffect(() => {
+
+
=8"
+ }
+ },
"node_modules/jest-worker": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
@@ -8801,6 +8810,11 @@
"integrity": "sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==",
"dev": true
},
+ "node_modules/langs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/langs/-/langs-2.0.0.tgz",
+ "integrity": "sha512-v4pxOBEQVN1WBTfB1crhTtxzNLZU9HPWgadlwzWKISJtt6Ku/CnpBrwVy+jFv8StjxsPfwPFzO0CMwdZLJ0/BA=="
+ },
"node_modules/lazystream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
@@ -9001,6 +9015,19 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/locale-codes": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/locale-codes/-/locale-codes-1.3.1.tgz",
+ "integrity": "sha512-C7fxGkU4jAuHqavtKj4IhSD2yPEzChFMRfNHjzwIAz9JTbYHtBJDcQQgmJDezBogk9/vvgS7chKMhpVEKavk5A==",
+ "dependencies": {
+ "iso639-codes": "^1.0.1",
+ "langs": "^2.0.0",
+ "windows-locale": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/locate-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
@@ -14214,6 +14241,14 @@
"integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==",
"dev": true
},
+ "node_modules/windows-locale": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/windows-locale/-/windows-locale-1.1.3.tgz",
+ "integrity": "sha512-0OlMOPNGj7GTB6C7WmqS3o4eydjnoYj0uwot2KJf7E0JUucwYwzkcvCWQwnuOV60WqDMeGJpSankgveNMj5r0g==",
+ "engines": {
+ "node": ">=v10.24.1"
+ }
+ },
"node_modules/wmf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
@@ -20699,6 +20734,11 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
+ "iso639-codes": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/iso639-codes/-/iso639-codes-1.0.1.tgz",
+ "integrity": "sha512-jdTSv8yn6D7GODDrRtuWG7y3du3aoa+ki5H8h/Y48/NleNAd7Fw/M2niTTLXGH4QnqhJ98hg1JMQtP9csQ31Lg=="
+ },
"jest-worker": {
"version": "26.6.2",
"resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
@@ -20893,6 +20933,11 @@
"integrity": "sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==",
"dev": true
},
+ "langs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/langs/-/langs-2.0.0.tgz",
+ "integrity": "sha512-v4pxOBEQVN1WBTfB1crhTtxzNLZU9HPWgadlwzWKISJtt6Ku/CnpBrwVy+jFv8StjxsPfwPFzO0CMwdZLJ0/BA=="
+ },
"lazystream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
@@ -21050,6 +21095,16 @@
"integrity": "sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==",
"dev": true
},
+ "locale-codes": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/locale-codes/-/locale-codes-1.3.1.tgz",
+ "integrity": "sha512-C7fxGkU4jAuHqavtKj4IhSD2yPEzChFMRfNHjzwIAz9JTbYHtBJDcQQgmJDezBogk9/vvgS7chKMhpVEKavk5A==",
+ "requires": {
+ "iso639-codes": "^1.0.1",
+ "langs": "^2.0.0",
+ "windows-locale": "^1.1.0"
+ }
+ },
"locate-path": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
@@ -24944,6 +24999,11 @@
}
}
},
+ "windows-locale": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/windows-locale/-/windows-locale-1.1.3.tgz",
+ "integrity": "sha512-0OlMOPNGj7GTB6C7WmqS3o4eydjnoYj0uwot2KJf7E0JUucwYwzkcvCWQwnuOV60WqDMeGJpSankgveNMj5r0g=="
+ },
"wmf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz",
diff --git a/packages/nc-gui-v2/package.json b/packages/nc-gui-v2/package.json
index c038b5bb59..d954b68033 100644
--- a/packages/nc-gui-v2/package.json
+++ b/packages/nc-gui-v2/package.json
@@ -17,6 +17,7 @@
"dayjs": "^1.11.3",
"file-saver": "^2.0.5",
"jwt-decode": "^3.1.2",
+ "locale-codes": "^1.3.1",
"monaco-editor": "^0.33.0",
"nocodb-sdk": "file:../nocodb-sdk",
"papaparse": "^5.3.2",
diff --git a/packages/nc-gui-v2/utils/currencyUtils.ts b/packages/nc-gui-v2/utils/currencyUtils.ts
new file mode 100644
index 0000000000..5ac1ccb46f
--- /dev/null
+++ b/packages/nc-gui-v2/utils/currencyUtils.ts
@@ -0,0 +1,220 @@
+import locale from 'locale-codes'
+
+export const currencyCodes = [
+ 'AED',
+ 'AFN',
+ 'ALL',
+ 'AMD',
+ 'ANG',
+ 'AOA',
+ 'ARS',
+ 'AUD',
+ 'AWG',
+ 'AZN',
+ 'BAM',
+ 'BBD',
+ 'BDT',
+ 'BGN',
+ 'BHD',
+ 'BIF',
+ 'BMD',
+ 'BND',
+ 'BOB',
+ 'BOV',
+ 'BRL',
+ 'BSD',
+ 'BTN',
+ 'BWP',
+ 'BYR',
+ 'BZD',
+ 'CAD',
+ 'CDF',
+ 'CHE',
+ 'CHF',
+ 'CHW',
+ 'CLF',
+ 'CLP',
+ 'CNY',
+ 'COP',
+ 'COU',
+ 'CRC',
+ 'CUP',
+ 'CVE',
+ 'CYP',
+ 'CZK',
+ 'DJF',
+ 'DKK',
+ 'DOP',
+ 'DZD',
+ 'EEK',
+ 'EGP',
+ 'ERN',
+ 'ETB',
+ 'EUR',
+ 'FJD',
+ 'FKP',
+ 'GBP',
+ 'GEL',
+ 'GHC',
+ 'GIP',
+ 'GMD',
+ 'GNF',
+ 'GTQ',
+ 'GYD',
+ 'HKD',
+ 'HNL',
+ 'HRK',
+ 'HTG',
+ 'HUF',
+ 'IDR',
+ 'ILS',
+ 'INR',
+ 'IQD',
+ 'IRR',
+ 'ISK',
+ 'JMD',
+ 'JOD',
+ 'JPY',
+ 'KES',
+ 'KGS',
+ 'KHR',
+ 'KMF',
+ 'KPW',
+ 'KRW',
+ 'KWD',
+ 'KYD',
+ 'KZT',
+ 'LAK',
+ 'LBP',
+ 'LKR',
+ 'LRD',
+ 'LSL',
+ 'LTL',
+ 'LVL',
+ 'LYD',
+ 'MAD',
+ 'MDL',
+ 'MGA',
+ 'MKD',
+ 'MMK',
+ 'MNT',
+ 'MOP',
+ 'MRO',
+ 'MTL',
+ 'MUR',
+ 'MVR',
+ 'MWK',
+ 'MXN',
+ 'MXV',
+ 'MYR',
+ 'MZN',
+ 'NAD',
+ 'NGN',
+ 'NIO',
+ 'NOK',
+ 'NPR',
+ 'NZD',
+ 'OMR',
+ 'PAB',
+ 'PEN',
+ 'PGK',
+ 'PHP',
+ 'PKR',
+ 'PLN',
+ 'PYG',
+ 'QAR',
+ 'ROL',
+ 'RON',
+ 'RSD',
+ 'RUB',
+ 'RWF',
+ 'SAR',
+ 'SBD',
+ 'SCR',
+ 'SDD',
+ 'SEK',
+ 'SGD',
+ 'SHP',
+ 'SIT',
+ 'SKK',
+ 'SLL',
+ 'SOS',
+ 'SRD',
+ 'STD',
+ 'SYP',
+ 'SZL',
+ 'THB',
+ 'TJS',
+ 'TMM',
+ 'TND',
+ 'TOP',
+ 'TRY',
+ 'TTD',
+ 'TWD',
+ 'TZS',
+ 'UAH',
+ 'UGX',
+ 'USD',
+ 'USN',
+ 'USS',
+ 'UYU',
+ 'UZS',
+ 'VEB',
+ 'VND',
+ 'VUV',
+ 'WST',
+ 'XAF',
+ 'XAG',
+ 'XAU',
+ 'XBA',
+ 'XBB',
+ 'XBC',
+ 'XBD',
+ 'XCD',
+ 'XDR',
+ 'XFO',
+ 'XFU',
+ 'XOF',
+ 'XPD',
+ 'XPF',
+ 'XPT',
+ 'XTS',
+ 'XXX',
+ 'YER',
+ 'ZAR',
+ 'ZMK',
+ 'ZWD',
+]
+
+export function validateCurrencyCode(v: string) {
+ return currencyCodes.includes(v)
+}
+
+export function currencyLocales() {
+ const localeList = locale.all
+ .filter((l: Record) => {
+ try {
+ if (Intl.NumberFormat.supportedLocalesOf(l.tag).length > 0) {
+ return true
+ }
+ return false
+ } catch (e) {
+ return false
+ }
+ })
+ .map((l: Record) => {
+ return {
+ text: `${l.name} (${l.tag})`,
+ value: l.tag,
+ }
+ })
+ return localeList
+}
+
+export function validateCurrencyLocale(v: string) {
+ try {
+ return Intl.NumberFormat.supportedLocalesOf(v).length > 0
+ } catch (e) {
+ return false
+ }
+}
diff --git a/packages/nc-gui-v2/utils/index.ts b/packages/nc-gui-v2/utils/index.ts
index 670b4eda04..c5ed685d09 100644
--- a/packages/nc-gui-v2/utils/index.ts
+++ b/packages/nc-gui-v2/utils/index.ts
@@ -10,3 +10,4 @@ export * from './projectCreateUtils'
export * from './urlUtils'
export * from './validation'
export * from './viewUtils'
+export * from './currencyUtils'