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 @@ + + + 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'