7
7
class =" dropdown-title"
8
8
type =" button"
9
9
:aria-label =" dropdownAriaLabel"
10
+ @click =" handleDropdown"
11
+ >
12
+ <span class =" title" >{{ item.text }}</span >
13
+ <span
14
+ class =" arrow down"
15
+ />
16
+ </button >
17
+ <button
18
+ class =" mobile-dropdown-title"
19
+ type =" button"
20
+ :aria-label =" dropdownAriaLabel"
10
21
@click =" setOpen(!open)"
11
22
>
12
23
<span class =" title" >{{ item.text }}</span >
@@ -105,6 +116,17 @@ export default {
105
116
106
117
isLastItemOfArray (item , array ) {
107
118
return last (array) === item
119
+ },
120
+
121
+ /**
122
+ * Open the dropdown when user tab and click from keyboard.
123
+ *
124
+ * Use event.detail to detect tab and click from keyboard. Ref: https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
125
+ * The Tab + Click is UIEvent > KeyboardEvent, so the detail is 0.
126
+ */
127
+ handleDropdown () {
128
+ const isTriggerByTab = event .detail === 0
129
+ if (isTriggerByTab) this .setOpen (! this .open )
108
130
}
109
131
}
110
132
}
@@ -130,6 +152,13 @@ export default {
130
152
vertical-align middle
131
153
margin-top - 1px
132
154
margin-left 0.4rem
155
+ .mobile-dropdown-title
156
+ @extends .dropdown-title
Has conversations. Original line has conversations.
157
+ display none
158
+ font-weight 600
159
+ font-size inherit
160
+ & :hover
161
+ color $accentColor
133
162
.nav-dropdown
134
163
.dropdown-item
135
164
color inherit
@@ -175,10 +204,9 @@ export default {
175
204
& .open .dropdown-title
176
205
margin-bottom 0.5rem
177
206
.dropdown-title
178
- font-weight 600
179
- font-size inherit
180
- & :hover
181
- color $accentColor
207
+ display : none
208
+ .mobile-dropdown-title
209
+ display : block
182
210
.nav-dropdown
183
211
transition height .1s ease-out
184
212
overflow hidden
@@ -203,12 +231,6 @@ export default {
203
231
display block !important
204
232
& .open : blur
205
233
display none
206
- .dropdown-title .arrow
207
- // make the arrow always down at desktop
208
- border-left 4px solid transparent
209
- border-right 4px solid transparent
210
- border-top 6px solid $arrowBgColor
211
- border-bottom 0
212
234
.nav-dropdown
213
235
display none
214
236
// Avoid height shaked by clicking