@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 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 */
@@ -222,7 +222,8 @@ const keyboard = {
222
222
  right: 'Right',
223
223
  arrowRight: 'ArrowRight',
224
224
  home: 'Home',
225
- end: 'End'
225
+ end: 'End',
226
+ tab: 'Tab'
226
227
  };
227
228
  const truncateOptions = POSITION;
228
229
  const formInputSizes = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "42.0.0",
3
+ "version": "42.0.1",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -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"
@@ -264,6 +264,7 @@ export const keyboard = {
264
264
  arrowRight: 'ArrowRight',
265
265
  home: 'Home',
266
266
  end: 'End',
267
+ tab: 'Tab',
267
268
  };
268
269
 
269
270
  export const truncateOptions = POSITION;