imba-localization 0.3.2 → 0.3.4
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/README.md +18 -10
- package/localization.imba +18 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -182,30 +182,39 @@ css
|
|
|
182
182
|
bgc:light-dark(#000000/10, #FFFFFF/20)
|
|
183
183
|
fw:500 fs:13px
|
|
184
184
|
ead:$ease
|
|
185
|
+
bd:1px solid transparent
|
|
185
186
|
.main-active
|
|
186
187
|
bgc:light-dark(#000000/20, #FFFFFF/30)
|
|
188
|
+
bd:1px solid transparent
|
|
187
189
|
.main-flag
|
|
188
190
|
mr:10px rd:50% w:20px h:20px
|
|
191
|
+
bd:1px solid transparent
|
|
189
192
|
.main-name
|
|
190
193
|
mr:10px
|
|
194
|
+
bd:1px solid transparent
|
|
191
195
|
.main-arrow
|
|
192
196
|
w:16px h:16px ml:auto
|
|
193
197
|
fill:light-dark(#000000,#FFFFFF)
|
|
198
|
+
bd:1px solid transparent
|
|
194
199
|
transition: transform $ease ease
|
|
195
200
|
scale-y:-1
|
|
196
201
|
.main-arrow-active
|
|
202
|
+
bd:1px solid transparent
|
|
197
203
|
scale-y:1
|
|
198
204
|
.menu
|
|
199
205
|
t:100% l:50% x:-50% mt:2px rd:8px rd:8px py:5px zi:999
|
|
200
206
|
fw:500 fs:13px
|
|
201
207
|
backdrop-filter:blur(20px)
|
|
208
|
+
bd:1px solid transparent
|
|
202
209
|
bgc:light-dark(#000000/5, #FFFFFF/10)
|
|
203
210
|
ead:$ease
|
|
204
211
|
.menu-item
|
|
205
212
|
cursor:pointer
|
|
213
|
+
bd:1px solid transparent
|
|
206
214
|
d:hflex px:10px py:5px rd:8px m:5px
|
|
207
215
|
bg@hover:light-dark(#000000/10, #FFFFFF/20)
|
|
208
216
|
.menu-item-icon
|
|
217
|
+
bd:1px solid transparent
|
|
209
218
|
h:20px w:20px mr:10px rd:50%
|
|
210
219
|
.menu-item-text
|
|
211
220
|
fs:13px
|
|
@@ -243,13 +252,13 @@ global css
|
|
|
243
252
|
@not(#_) # is needed for higher precedence
|
|
244
253
|
.main
|
|
245
254
|
bgc: #992033
|
|
246
|
-
|
|
255
|
+
bc: #992033
|
|
247
256
|
.main-active
|
|
248
257
|
bgc: blue2
|
|
249
|
-
|
|
258
|
+
bc: #992033
|
|
250
259
|
.menu
|
|
251
260
|
bgc: #992033
|
|
252
|
-
|
|
261
|
+
bc: #992033
|
|
253
262
|
.menu-item
|
|
254
263
|
bgc@hover: orange4
|
|
255
264
|
c@hover: black
|
|
@@ -283,10 +292,7 @@ You can use any other collection you prefer, just change the actual country code
|
|
|
283
292
|
You can use any arrow icon you prefer (or remove it though CSS) by passing a tag of the image to the LanguageSelector `arrow` attribute:
|
|
284
293
|
|
|
285
294
|
```imba
|
|
286
|
-
const arrow =
|
|
287
|
-
<svg viewBox="..." xmlns="http://www.w3.org/2000/svg">
|
|
288
|
-
<path d="...">
|
|
289
|
-
|
|
295
|
+
const arrow = <path d="...">
|
|
290
296
|
|
|
291
297
|
<language-selector arrow=arrow>
|
|
292
298
|
```
|
|
@@ -296,10 +302,12 @@ const arrow =
|
|
|
296
302
|
The default arrow icon used in the LocalizationSelector component is available as a separate icon (in case for some reason you don't want to use [imba-phosphor-icons](https://www.npmjs.com/package/imba-phosphor-icons) package by Sindre).
|
|
297
303
|
|
|
298
304
|
```imba
|
|
299
|
-
import {
|
|
305
|
+
import {path-arrow-down} from 'imba-localization'
|
|
300
306
|
|
|
301
307
|
tag App
|
|
302
308
|
<self>
|
|
303
|
-
|
|
304
|
-
|
|
309
|
+
<svg viewBox="0 0 256 256">
|
|
310
|
+
css w:20px h:20px stroke:red
|
|
311
|
+
<{svg-arrow-down}>
|
|
312
|
+
|
|
305
313
|
```
|
package/localization.imba
CHANGED
|
@@ -51,33 +51,18 @@ export class Localization
|
|
|
51
51
|
window.localStorage.setItem('imba-localization', name)
|
|
52
52
|
onchange(name) if onchange isa Function
|
|
53
53
|
|
|
54
|
-
export const
|
|
55
|
-
<svg viewBox="0 0 256 256">
|
|
56
|
-
<path d="M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z">
|
|
54
|
+
export const path-arrow-down = <path d="M213.66,165.66a8,8,0,0,1-11.32,0L128,91.31,53.66,165.66a8,8,0,0,1-11.32-11.32l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,213.66,165.66Z">
|
|
57
55
|
|
|
58
56
|
tag language-selector
|
|
59
57
|
state
|
|
60
58
|
icons = "https://kapowaz.github.io/square-flags/flags/##.svg"
|
|
61
59
|
#dropdown = false
|
|
62
|
-
arrow =
|
|
60
|
+
arrow = path-arrow-down
|
|
63
61
|
|
|
64
62
|
def onselect key
|
|
65
63
|
#dropdown = false
|
|
66
64
|
state.active = key
|
|
67
65
|
|
|
68
|
-
css
|
|
69
|
-
$ease: 0.5s
|
|
70
|
-
.main rd:8px px:15px py:8px cursor:pointer bgc:light-dark(#000000/10, #FFFFFF/20) fw:500 fs:13px ead:$ease
|
|
71
|
-
.main-active bgc:light-dark(#000000/20, #FFFFFF/30)
|
|
72
|
-
.main-flag mr:10px rd:50% w:20px h:20px
|
|
73
|
-
.main-name mr:10px
|
|
74
|
-
.main-arrow w:16px h:16px fill:light-dark(#000000,#FFFFFF) ml:auto scale-y:-1
|
|
75
|
-
.main-arrow-active scale-y:1
|
|
76
|
-
.menu t:100% l:50% x:-50% zi:999 backdrop-filter:blur(20px) mt:2px rd:8px rd:8px py:5px bgc:light-dark(#000000/5, #FFFFFF/10) fw:500 fs:13px ead:$ease
|
|
77
|
-
.menu-item d:hflex ai:center px:10px py:5px rd:8px cursor:pointer bg@hover:light-dark(#000000/10, #FFFFFF/20) m:5px
|
|
78
|
-
.menu-item-icon h:20px w:20px mr:10px rd:50%
|
|
79
|
-
.menu-item-text fs:13px
|
|
80
|
-
|
|
81
66
|
def icon country
|
|
82
67
|
return icons.replace('##',country)
|
|
83
68
|
|
|
@@ -87,11 +72,25 @@ tag language-selector
|
|
|
87
72
|
const inside = e.clientY >= menu.bottom || e.clientY <= rect.top || (e.clientX <= rect.left and e.clientY <= rect.bottom) || (e.clientX <= menu.left and e.clientY >= menu.top) || (e.clientX >= rect.right and e.clientY <= rect.bottom) || (e.clientX >= menu.right and e.clientY >= menu.top)
|
|
88
73
|
#dropdown = !inside
|
|
89
74
|
|
|
90
|
-
|
|
75
|
+
css
|
|
76
|
+
$ease: 0.5s
|
|
77
|
+
.main rd:8px px:15px py:8px cursor:pointer bgc:light-dark(#000000/10, #FFFFFF/20) fw:500 fs:13px ead:$ease bd:1px solid transparent
|
|
78
|
+
.main-active bgc:light-dark(#000000/20, #FFFFFF/30) bd:1px solid transparent
|
|
79
|
+
.main-flag mr:10px rd:50% w:20px h:20px bd:1px solid transparent
|
|
80
|
+
.main-name mr:10px bd:1px solid transparent
|
|
81
|
+
.main-arrow w:16px h:16px fill:light-dark(#000000,#FFFFFF) ml:auto scale-y:-1 bd:1px solid transparent
|
|
82
|
+
.main-arrow-active scale-y:1 bd:1px solid transparent
|
|
83
|
+
.menu t:100% l:50% x:-50% zi:999 backdrop-filter:blur(20px) mt:2px rd:8px rd:8px py:5px bgc:light-dark(#000000/5, #FFFFFF/10) fw:500 fs:13px ead:$ease bd:1px solid transparent
|
|
84
|
+
.menu-item d:hflex ai:center px:10px py:5px rd:8px cursor:pointer bg@hover:light-dark(#000000/10, #FFFFFF/20) m:5px bd:1px solid transparent
|
|
85
|
+
.menu-item-icon h:20px w:20px mr:10px rd:50% bd:1px solid transparent
|
|
86
|
+
.menu-item-text fs:13px bd:1px solid transparent
|
|
87
|
+
|
|
88
|
+
<self.language-selector [pos:rel] @mouseenter=(#dropdown = true) @mouseleave=mouseleave>
|
|
91
89
|
<div.main [pos:rel d:hcc] .main-active=#dropdown>
|
|
92
90
|
<img.main-flag src=icon(state[state.active].$.flag)>
|
|
93
91
|
<div.main-name> state.$.name
|
|
94
|
-
<
|
|
92
|
+
<svg.main-arrow [ead:$ease] .main-arrow-active=#dropdown viewBox="0 0 256 256">
|
|
93
|
+
<{arrow}>
|
|
95
94
|
|
|
96
95
|
if #dropdown
|
|
97
96
|
<div$menu.menu [pos:abs w:100% > max-content o@off:0] ease>
|