@gitlab/ui 42.0.0 → 42.0.1
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/CHANGELOG.md +7 -0
- package/dist/components/base/token_selector/token_container.js +5 -1
- package/dist/utils/constants.js +2 -1
- package/package.json +1 -1
- package/src/components/base/token_selector/token_container.spec.js +11 -0
- package/src/components/base/token_selector/token_container.vue +4 -1
- package/src/utils/constants.js +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
## [42.0.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v42.0.0...v42.0.1) (2022-06-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* GlTokenSelector: make it possible to focus input field with Tab button ([22e7de5](https://gitlab.com/gitlab-org/gitlab-ui/commit/22e7de514610d1905173804cb122145710527001))
|
|
7
|
+
|
|
1
8
|
# [42.0.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v41.10.0...v42.0.0) (2022-06-16)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -110,6 +110,10 @@ var script = {
|
|
|
110
110
|
this.$emit('cancel-focus');
|
|
111
111
|
},
|
|
112
112
|
|
|
113
|
+
handleTab() {
|
|
114
|
+
this.$emit('cancel-focus');
|
|
115
|
+
},
|
|
116
|
+
|
|
113
117
|
// Only called when a token is focused by a click/tap
|
|
114
118
|
handleTokenFocus(index) {
|
|
115
119
|
this.focusedTokenIndex = index;
|
|
@@ -143,7 +147,7 @@ var script = {
|
|
|
143
147
|
const __vue_script__ = script;
|
|
144
148
|
|
|
145
149
|
/* template */
|
|
146
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"tokenContainer",staticClass:"gl-display-flex gl-flex-wrap gl-align-items-center gl-my-n1 gl-mx-n1",attrs:{"role":"listbox","aria-multiselectable":"false","aria-orientation":"horizontal","aria-invalid":_vm.state === false && 'true'},on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"left",37,$event.key,["Left","ArrowLeft"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }return _vm.handleLeftArrow($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"right",39,$event.key,["Right","ArrowRight"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }return _vm.handleRightArrow($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"home",undefined,$event.key,undefined)){ return null; }return _vm.handleHome($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"end",undefined,$event.key,undefined)){ return null; }return _vm.handleEnd($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"delete",[8,46],$event.key,["Backspace","Delete","Del"])){ return null; }return _vm.handleDelete($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }return _vm.handleEscape($event)},function($event){$event.preventDefault();}]}},[_vm._l((_vm.tokens),function(token,index){return _c('div',{key:token.id,ref:"tokens",refInFor:true,staticClass:"gl-token-selector-token-container gl-px-1 gl-py-1 gl-outline-none",attrs:{"data-token-id":token.id,"role":"option","tabindex":"-1"},on:{"focus":function($event){_vm.bindFocusEvent ? _vm.handleTokenFocus(index) : null;}}},[_c('gl-token',{staticClass:"gl-cursor-default",class:token.class,style:(token.style),attrs:{"view-only":_vm.viewOnly},on:{"close":function($event){return _vm.handleClose(token)}}},[_vm._t("token-content",[_c('span',[_vm._v("\n "+_vm._s(token.name)+"\n ")])],{"token":token})],2)],1)}),_vm._v(" "),_vm._t("text-input")],2)};
|
|
150
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"tokenContainer",staticClass:"gl-display-flex gl-flex-wrap gl-align-items-center gl-my-n1 gl-mx-n1",attrs:{"role":"listbox","aria-multiselectable":"false","aria-orientation":"horizontal","aria-invalid":_vm.state === false && 'true'},on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"left",37,$event.key,["Left","ArrowLeft"])){ return null; }if('button' in $event && $event.button !== 0){ return null; }return _vm.handleLeftArrow($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"right",39,$event.key,["Right","ArrowRight"])){ return null; }if('button' in $event && $event.button !== 2){ return null; }return _vm.handleRightArrow($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"home",undefined,$event.key,undefined)){ return null; }return _vm.handleHome($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"end",undefined,$event.key,undefined)){ return null; }return _vm.handleEnd($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"delete",[8,46],$event.key,["Backspace","Delete","Del"])){ return null; }return _vm.handleDelete($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }return _vm.handleEscape($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"tab",9,$event.key,"Tab")){ return null; }$event.preventDefault();return _vm.handleTab($event)}]}},[_vm._l((_vm.tokens),function(token,index){return _c('div',{key:token.id,ref:"tokens",refInFor:true,staticClass:"gl-token-selector-token-container gl-px-1 gl-py-1 gl-outline-none",attrs:{"data-token-id":token.id,"role":"option","tabindex":"-1"},on:{"focus":function($event){_vm.bindFocusEvent ? _vm.handleTokenFocus(index) : null;}}},[_c('gl-token',{staticClass:"gl-cursor-default",class:token.class,style:(token.style),attrs:{"view-only":_vm.viewOnly},on:{"close":function($event){return _vm.handleClose(token)}}},[_vm._t("token-content",[_c('span',[_vm._v("\n "+_vm._s(token.name)+"\n ")])],{"token":token})],2)],1)}),_vm._v(" "),_vm._t("text-input")],2)};
|
|
147
151
|
var __vue_staticRenderFns__ = [];
|
|
148
152
|
|
|
149
153
|
/* style */
|
package/dist/utils/constants.js
CHANGED
package/package.json
CHANGED
|
@@ -256,6 +256,17 @@ describe('GlTokenContainer', () => {
|
|
|
256
256
|
const expectedFocusedToken = findTokenByName(tokens[2].name);
|
|
257
257
|
expect(expectedFocusedToken.element).toHaveFocus();
|
|
258
258
|
});
|
|
259
|
+
|
|
260
|
+
it('emits the `cancel-focus` event when tab key is pressed', async () => {
|
|
261
|
+
createComponent({});
|
|
262
|
+
|
|
263
|
+
const focusedToken = findTokenByName(tokens[0].name);
|
|
264
|
+
|
|
265
|
+
await focusedToken.trigger('focus');
|
|
266
|
+
await focusedToken.trigger('keydown', { key: keyboard.tab });
|
|
267
|
+
|
|
268
|
+
expect(wrapper.emitted('cancel-focus')).toEqual([[]]);
|
|
269
|
+
});
|
|
259
270
|
});
|
|
260
271
|
});
|
|
261
272
|
});
|
|
@@ -95,6 +95,9 @@ export default {
|
|
|
95
95
|
this.focusedTokenIndex = null;
|
|
96
96
|
this.$emit('cancel-focus');
|
|
97
97
|
},
|
|
98
|
+
handleTab() {
|
|
99
|
+
this.$emit('cancel-focus');
|
|
100
|
+
},
|
|
98
101
|
// Only called when a token is focused by a click/tap
|
|
99
102
|
handleTokenFocus(index) {
|
|
100
103
|
this.focusedTokenIndex = index;
|
|
@@ -132,7 +135,7 @@ export default {
|
|
|
132
135
|
@keydown.end="handleEnd"
|
|
133
136
|
@keydown.delete="handleDelete"
|
|
134
137
|
@keydown.esc="handleEscape"
|
|
135
|
-
@keydown.prevent
|
|
138
|
+
@keydown.tab.prevent="handleTab"
|
|
136
139
|
>
|
|
137
140
|
<div
|
|
138
141
|
v-for="(token, index) in tokens"
|