Skip to content

Commit c44f3c8

Browse files
committed
refact: es6 refactor
1 parent ec2a943 commit c44f3c8

File tree

3 files changed

+48
-10
lines changed

3 files changed

+48
-10
lines changed

src/composables/useI18n.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,23 @@ export default function useI18n (props, context, dep)
99
// =============== METHODS ==============
1010

1111
const localize = (target) => {
12-
return target && typeof target === 'object'
13-
? target?.[locale.value] || target?.[locale.value?.toUpperCase()] || target?.[fallbackLocale.value] || target?.[fallbackLocale.value?.toUpperCase()] || target?.[Object.keys(target)[0]]
14-
: target
12+
if (!target || typeof target !== 'object') {
13+
return target
14+
}
15+
16+
if (target && target[locale.value]) {
17+
return target[locale.value]
18+
} else if (target && locale.value && target[locale.value.toUpperCase()]) {
19+
return target[locale.value.toUpperCase()]
20+
} else if (target && target[fallbackLocale.value]) {
21+
return target[fallbackLocale.value]
22+
} else if (target && fallbackLocale.value && target[fallbackLocale.value.toUpperCase()]) {
23+
return target[fallbackLocale.value.toUpperCase()]
24+
} else if (target && Object.keys(target)[0]) {
25+
return target[Object.keys(target)[0]]
26+
} else {
27+
return ''
28+
}
1529
}
1630

1731
return {

src/composables/useOptions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ export default function useOptions (props, context, dep)
143143
let groups = [...eg.value].map(g => ({...g}))
144144

145145
if (createdOption.value.length) {
146-
if (groups[0]?.__CREATE__) {
146+
if (groups[0] && groups[0].__CREATE__) {
147147
groups[0][groupOptions.value] = [...createdOption.value, ...groups[0][groupOptions.value]]
148148
} else {
149149
groups = [{

tests/unit/i18n.spec.js

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,21 +28,21 @@ describe('I18n', () => {
2828
expect(singleLabel.html()).toContain('value-en')
2929
})
3030

31-
it('should render options when options are localized', async () => {
31+
it('should render options when options are localized with uppercase locales', async () => {
3232
let locale = ref('en')
3333

3434
let select = createSelect({
3535
value: ['value'],
3636
groups: true,
3737
options: [{
3838
label: {
39-
en: 'group-en',
40-
hu: 'group-hu',
39+
EN: 'group-en',
40+
HU: 'group-hu',
4141
},
4242
options: [{
4343
label: {
44-
en: 'label-en',
45-
hu: 'label-hu',
44+
EN: 'label-en',
45+
HU: 'label-hu',
4646
},
4747
value: 'value'
4848
}]
@@ -78,7 +78,7 @@ describe('I18n', () => {
7878
options: [{
7979
label: {
8080
en: 'label-en',
81-
hu: 'label-hu',
81+
HU: 'label-hu',
8282
},
8383
value: 'value'
8484
}]
@@ -95,6 +95,30 @@ describe('I18n', () => {
9595
expect(singleLabel.html()).toContain('label-hu')
9696
})
9797

98+
it('should render empty string as option if it is an empty object', async () => {
99+
let select = createSelect({
100+
value: ['value'],
101+
groups: true,
102+
options: [{
103+
label: {
104+
en: 'group-en',
105+
hu: 'group-hu',
106+
},
107+
options: [{
108+
label: {},
109+
value: 'value'
110+
}]
111+
}],
112+
fallbackLocale: 'hu'
113+
})
114+
115+
let options = findAll(select, '.multiselect-option')
116+
let singleLabel = findAll(select, '.multiselect-single-label').at(0)
117+
118+
expect(options.at(0).html()).not.toContain('label-hu')
119+
expect(singleLabel.html()).not.toContain('label-hu')
120+
})
121+
98122
it('should render options with en translation if locale is not preset', async () => {
99123
let select = createSelect({
100124
value: ['value'],

0 commit comments

Comments
 (0)