@gitlab/ui 114.8.1 → 115.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/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +15 -3
- package/dist/components/base/new_dropdowns/constants.js +5 -2
- package/dist/components/base/tabs/tabs/scrollable_tabs.js +20 -1
- package/dist/components/base/tabs/tabs/tabs.js +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/tailwind.css.map +1 -1
- package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +2 -2
- package/dist/vendor/bootstrap-vue/src/constants/slots.js +3 -1
- package/package.json +9 -9
- package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +19 -2
- package/src/components/base/new_dropdowns/constants.js +4 -1
- package/src/components/base/tabs/tabs/scrollable_tabs.vue +27 -10
- package/src/components/base/tabs/tabs/tabs.md +6 -2
- package/src/components/base/tabs/tabs/tabs.scss +11 -6
- package/src/components/base/tabs/tabs/tabs.vue +5 -4
- package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +7 -1
- package/src/vendor/bootstrap-vue/src/constants/slots.js +2 -0
- package/translations.js +2 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import { offset, autoPlacement, shift, arrow, size, autoUpdate, computePosition } from '@floating-ui/dom';
|
|
3
3
|
import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';
|
|
4
|
-
import { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';
|
|
5
|
-
import { logWarning, isElementFocusable, isElementTabbable } from '../../../../utils/utils';
|
|
4
|
+
import { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, KEY_CODE_ESCAPE, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';
|
|
5
|
+
import { logWarning, isElementFocusable, isElementTabbable, stopEvent } from '../../../../utils/utils';
|
|
6
6
|
import { OutsideDirective } from '../../../../directives/outside/outside';
|
|
7
7
|
import GlButton from '../../button/button';
|
|
8
8
|
import GlIcon from '../../icon/icon';
|
|
@@ -461,11 +461,23 @@ var script = {
|
|
|
461
461
|
},
|
|
462
462
|
onKeydown(event) {
|
|
463
463
|
const {
|
|
464
|
+
keyCode,
|
|
464
465
|
code,
|
|
465
466
|
target: {
|
|
466
467
|
tagName
|
|
467
468
|
}
|
|
468
469
|
} = event;
|
|
470
|
+
|
|
471
|
+
// Use keyCode because @vue/test-utils doesn't correctly set the
|
|
472
|
+
// `code` and `key` KeyboardEvent properties. This is only needed in this case because:
|
|
473
|
+
// - We are not using the @keydown.esc template syntax, which under Vue 2 checks against `keyCode` anyway.
|
|
474
|
+
// - The `.trigger('keydown.esc')` shorthand @vue/test-utils provides is useful.
|
|
475
|
+
// See https://github.com/vuejs/vue-test-utils/issues/2096
|
|
476
|
+
if (keyCode === KEY_CODE_ESCAPE && this.visible) {
|
|
477
|
+
stopEvent(event);
|
|
478
|
+
this.close();
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
469
481
|
let toggleOnEnter = true;
|
|
470
482
|
let toggleOnSpace = true;
|
|
471
483
|
if (tagName === 'BUTTON') {
|
|
@@ -496,7 +508,7 @@ var script = {
|
|
|
496
508
|
const __vue_script__ = script;
|
|
497
509
|
|
|
498
510
|
/* template */
|
|
499
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"outside",rawName:"v-outside.click.focusin",value:(_vm.close),expression:"close",modifiers:{"click":true,"focusin":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:"toggle",tag:"component",attrs:{"id":_vm.toggleId,"data-testid":"base-dropdown-toggle"}
|
|
511
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"outside",rawName:"v-outside.click.focusin",value:(_vm.close),expression:"close",modifiers:{"click":true,"focusin":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:"toggle",tag:"component",attrs:{"id":_vm.toggleId,"data-testid":"base-dropdown-toggle"}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t("toggle",function(){return [_c('span',{staticClass:"gl-new-dropdown-button-text",class:{ 'gl-sr-only': _vm.textSrOnly }},[_vm._v("\n "+_vm._s(_vm.toggleText)+"\n ")]),_vm._v(" "),(!_vm.noCaret)?_c('gl-icon',{staticClass:"gl-button-icon gl-new-dropdown-chevron",attrs:{"name":"chevron-down"}}):_vm._e()]})],2),_vm._v(" "),_c('div',{ref:"content",staticClass:"gl-new-dropdown-panel",class:_vm.panelClasses,attrs:{"id":_vm.baseDropdownId,"data-testid":"base-dropdown-menu"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{ref:"dropdownArrow",staticClass:"gl-new-dropdown-arrow"}),_vm._v(" "),_c('div',{staticClass:"gl-new-dropdown-inner"},[_vm._t("default",null,{"visible":_vm.visible})],2)])],1)};
|
|
500
512
|
var __vue_staticRenderFns__ = [];
|
|
501
513
|
|
|
502
514
|
/* style */
|
|
@@ -4,7 +4,7 @@ const GL_DROPDOWN_HIDDEN = 'hidden';
|
|
|
4
4
|
const GL_DROPDOWN_BEFORE_CLOSE = 'beforeClose';
|
|
5
5
|
const GL_DROPDOWN_FOCUS_CONTENT = 'focusContent';
|
|
6
6
|
|
|
7
|
-
//
|
|
7
|
+
// KeyboardEvent.code values
|
|
8
8
|
const ARROW_DOWN = 'ArrowDown';
|
|
9
9
|
const ARROW_UP = 'ArrowUp';
|
|
10
10
|
const END = 'End';
|
|
@@ -12,10 +12,13 @@ const ENTER = 'Enter';
|
|
|
12
12
|
const HOME = 'Home';
|
|
13
13
|
const SPACE = 'Space';
|
|
14
14
|
|
|
15
|
+
// KeyboardEvent.keyCode values
|
|
16
|
+
const KEY_CODE_ESCAPE = 27;
|
|
17
|
+
|
|
15
18
|
// Positioning strategies
|
|
16
19
|
// https://floating-ui.com/docs/computePosition#strategy
|
|
17
20
|
const POSITION_ABSOLUTE = 'absolute';
|
|
18
21
|
const POSITION_FIXED = 'fixed';
|
|
19
22
|
const GL_DROPDOWN_CONTENTS_CLASS = 'gl-new-dropdown-contents';
|
|
20
23
|
|
|
21
|
-
export { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };
|
|
24
|
+
export { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, KEY_CODE_ESCAPE, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import debounce from 'lodash/debounce';
|
|
2
2
|
import { GlResizeObserverDirective } from '../../../../directives/resize_observer/resize_observer';
|
|
3
3
|
import GlIcon from '../../icon/icon';
|
|
4
|
+
import { translate } from '../../../../utils/i18n';
|
|
4
5
|
import GlTabs from './tabs';
|
|
5
6
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
6
7
|
|
|
@@ -15,6 +16,24 @@ var script = {
|
|
|
15
16
|
GlResizeObserverDirective
|
|
16
17
|
},
|
|
17
18
|
inheritAttrs: false,
|
|
19
|
+
props: {
|
|
20
|
+
/**
|
|
21
|
+
* The aria-label that will be rendered inside for the scroll to left button.
|
|
22
|
+
*/
|
|
23
|
+
scrollLeftLabel: {
|
|
24
|
+
type: String,
|
|
25
|
+
required: false,
|
|
26
|
+
default: translate('GlTabs.GlScrollableTabs.scrollLeftLabel', 'Scroll left')
|
|
27
|
+
},
|
|
28
|
+
/**
|
|
29
|
+
* The aria-label that will be rendered inside for the scroll to right button.
|
|
30
|
+
*/
|
|
31
|
+
scrollRightLabel: {
|
|
32
|
+
type: String,
|
|
33
|
+
required: false,
|
|
34
|
+
default: translate('GlTabs.GlScrollableTabs.scrollRightLabel', 'Scroll right')
|
|
35
|
+
}
|
|
36
|
+
},
|
|
18
37
|
data() {
|
|
19
38
|
return {
|
|
20
39
|
width: 0,
|
|
@@ -108,7 +127,7 @@ var script = {
|
|
|
108
127
|
const __vue_script__ = script;
|
|
109
128
|
|
|
110
129
|
/* template */
|
|
111
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-tabs',_vm._g(_vm._b({directives:[{name:"gl-resize-observer-directive",rawName:"v-gl-resize-observer-directive",value:(_vm.handleResize),expression:"handleResize"}],attrs:{"nav-class":_vm.navClass},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),{key:"
|
|
130
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-tabs',_vm._g(_vm._b({directives:[{name:"gl-resize-observer-directive",rawName:"v-gl-resize-observer-directive",value:(_vm.handleResize),expression:"handleResize"}],attrs:{"nav-class":_vm.navClass},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),{key:"toolbar-start",fn:function(){return [_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayScrollLeft),expression:"displayScrollLeft"}],staticClass:"gl-tabs-fade gl-tabs-fade-left"},[_c('button',{staticClass:"gl-tabs-fade-icon-button",attrs:{"aria-label":_vm.scrollLeftLabel},on:{"click":_vm.scrollTabsLeft}},[_c('gl-icon',{attrs:{"size":16,"name":"chevron-lg-left"}})],1)])]},proxy:true},{key:"toolbar-end",fn:function(){return [_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayScrollRight),expression:"displayScrollRight"}],staticClass:"gl-tabs-fade gl-tabs-fade-right"},[_c('button',{staticClass:"gl-tabs-fade-icon-button",attrs:{"aria-label":_vm.scrollRightLabel},on:{"click":_vm.scrollTabsRight}},[_c('gl-icon',{attrs:{"size":16,"name":"chevron-lg-right"}})],1)])]},proxy:true}],null,true)},'gl-tabs',_vm.passthroughAttrs,false),_vm.$listeners))};
|
|
112
131
|
var __vue_staticRenderFns__ = [];
|
|
113
132
|
|
|
114
133
|
/* style */
|
|
@@ -189,7 +189,7 @@ var script = {
|
|
|
189
189
|
const __vue_script__ = script;
|
|
190
190
|
|
|
191
191
|
/* template */
|
|
192
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',_vm._g(_vm._b({ref:"bTabs",staticClass:"gl-tabs",attrs:{"no-nav-style":true,"no-fade":true,"active-nav-item-class":"gl-tab-nav-item-active","content-class":[_vm.contentClass, 'gl-tab-content'],"nav-class":[_vm.navClass, 'gl-tabs-nav'],"justified":_vm.justified,"value":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:"
|
|
192
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tabs',_vm._g(_vm._b({ref:"bTabs",staticClass:"gl-tabs",attrs:{"no-nav-style":true,"no-fade":true,"active-nav-item-class":"gl-tab-nav-item-active","content-class":[_vm.contentClass, 'gl-tab-content'],"nav-wrapper-class":"gl-tabs-wrapper","nav-class":[_vm.navClass, 'gl-tabs-nav'],"justified":_vm.justified,"value":_vm.activeTabIndex},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$slots)),function(slot){return {key:slot,fn:function(){return [_vm._t(slot)]},proxy:true}}),(_vm.hasActions)?{key:"toolbar-start",fn:function(){return [_c('div',{staticClass:"gl-actions-tabs-start",attrs:{"role":"toolbar","data-testid":"actions-tabs-start"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-primary"},on:{"click":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v("\n "+_vm._s(_vm.actionPrimary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-secondary"},on:{"click":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v("\n "+_vm._s(_vm.actionSecondary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-tertiary"},on:{"click":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v("\n "+_vm._s(_vm.actionTertiary.text)+"\n ")]):_vm._e()],1)]},proxy:true}:null,(_vm.hasActions)?{key:"toolbar-end",fn:function(){return [_c('div',{staticClass:"gl-actions-tabs-end",attrs:{"role":"toolbar","data-testid":"actions-tabs-end"}},[(_vm.actionPrimary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-primary"},on:{"click":_vm.primary}},'gl-button',_vm.buttonBinding(_vm.actionPrimary, 'actionPrimary'),false),[_vm._v("\n "+_vm._s(_vm.actionPrimary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionSecondary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-secondary"},on:{"click":_vm.secondary}},'gl-button',_vm.buttonBinding(_vm.actionSecondary, 'actionSecondary'),false),[_vm._v("\n "+_vm._s(_vm.actionSecondary.text)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.actionTertiary)?_c('gl-button',_vm._b({attrs:{"data-testid":"action-tertiary"},on:{"click":_vm.tertiary}},'gl-button',_vm.buttonBinding(_vm.actionTertiary, 'actionTertiary'),false),[_vm._v("\n "+_vm._s(_vm.actionTertiary.text)+"\n ")]):_vm._e()],1)]},proxy:true}:null],null,true)},'b-tabs',_vm.$attrs,false),_vm.listeners))};
|
|
193
193
|
var __vue_staticRenderFns__ = [];
|
|
194
194
|
|
|
195
195
|
/* style */
|