imba-localization 0.4.3 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/localization.imba +16 -14
- package/package.json +1 -1
package/localization.imba
CHANGED
|
@@ -8,7 +8,7 @@ export class Localization
|
|
|
8
8
|
ready = false
|
|
9
9
|
err = {
|
|
10
10
|
cache: {}
|
|
11
|
-
throw: do(code, details)
|
|
11
|
+
throw: do(code, details)
|
|
12
12
|
return if err.cache[code]
|
|
13
13
|
if onerror isa Function and ready
|
|
14
14
|
onerror(code, details)
|
|
@@ -26,14 +26,15 @@ export class Localization
|
|
|
26
26
|
|
|
27
27
|
return new Proxy self, {
|
|
28
28
|
get: do(target, p, receiver)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
if Reflect.has(target, p)
|
|
30
|
+
return Reflect.get(target, p, receiver)
|
|
31
|
+
if !target.ready
|
|
32
|
+
target.err.throw("Request before localization is ready:", p)
|
|
32
33
|
return
|
|
33
|
-
return if err.cache[p]
|
|
34
|
+
return if target.err.cache[p]
|
|
34
35
|
return target.languages[p] if target.languages[p]
|
|
35
|
-
return target.languages[active][p] if target.languages[active] and target.languages[active][p]
|
|
36
|
-
err.throw('localization-no-key', p)
|
|
36
|
+
return target.languages[target.active][p] if target.languages[target.active] and target.languages[target.active][p]
|
|
37
|
+
target.err.throw('localization-no-key', p)
|
|
37
38
|
return ''
|
|
38
39
|
}
|
|
39
40
|
|
|
@@ -55,8 +56,8 @@ export class Localization
|
|
|
55
56
|
return preferred if languages[preferred]
|
|
56
57
|
return default
|
|
57
58
|
|
|
58
|
-
set active
|
|
59
|
-
name =
|
|
59
|
+
set active lang
|
|
60
|
+
const name = languages[lang] ? lang : active
|
|
60
61
|
if window.localStorage.getItem('imba-localization') != name
|
|
61
62
|
window.localStorage.setItem('imba-localization', name)
|
|
62
63
|
onchange(name) if onchange isa Function
|
|
@@ -121,7 +122,7 @@ tag language-selector
|
|
|
121
122
|
|
|
122
123
|
css
|
|
123
124
|
$ease: 0.5s
|
|
124
|
-
.container rd:8px px:15px py:8px
|
|
125
|
+
.container rd:8px px:15px py:8px bgc:light-dark(#000000/10, #FFFFFF/20) fw:500 fs:13px ead:$ease bd:1px solid transparent
|
|
125
126
|
@.active bgc:light-dark(#000000/20, #FFFFFF/30) bd:1px solid transparent
|
|
126
127
|
.flag mr:10px rd:50% w:20px h:20px bd:1px solid transparent
|
|
127
128
|
.name mr:10px bd:1px solid transparent
|
|
@@ -133,13 +134,14 @@ tag language-selector
|
|
|
133
134
|
.text fs:13px bd:1px solid transparent
|
|
134
135
|
|
|
135
136
|
<self [pos:rel] @mouseenter=mouseenter @mouseleave=mouseleave @click=click>
|
|
136
|
-
<div.container [pos:rel d:hcc] .active=#dropdown>
|
|
137
|
+
<div.container [pos:rel d:hcc] .active=#dropdown [cursor:pointer]=(Object(state.languages).keys > 1)>
|
|
137
138
|
<img.flag src=flag(state[state.active])>
|
|
138
139
|
<div.name> name(state[state.active])
|
|
139
|
-
|
|
140
|
-
<
|
|
140
|
+
if Object(state.languages).keys > 1
|
|
141
|
+
<svg.arrow [ead:$ease] .active=#dropdown viewBox="0 0 256 256">
|
|
142
|
+
<{arrow}>
|
|
141
143
|
|
|
142
|
-
if #dropdown
|
|
144
|
+
if #dropdown and Object(state.languages).keys > 1
|
|
143
145
|
<div$menu.menu [pos:abs w:100% > max-content o@off:0] ease>
|
|
144
146
|
for own key, value of state.languages
|
|
145
147
|
<div.item @click.trap=onselect(key) [d:none]=(key == state.active)>
|