@gitlab/ui 55.2.1 → 55.3.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 +15 -0
- package/dist/components/base/new_dropdowns/disclosure/constants.js +4 -0
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +7 -16
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +3 -1
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +2 -0
- package/dist/components/base/new_dropdowns/disclosure/utils.js +23 -3
- package/dist/components/base/toggle/toggle.js +18 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/package.json +1 -1
- package/src/components/base/new_dropdowns/disclosure/constants.js +2 -0
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.spec.js +51 -8
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.stories.js +18 -13
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.vue +6 -18
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.vue +4 -2
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.vue +2 -0
- package/src/components/base/new_dropdowns/disclosure/utils.js +28 -3
- package/src/components/base/toggle/toggle.scss +1 -2
- package/src/components/base/toggle/toggle.spec.js +24 -0
- package/src/components/base/toggle/toggle.stories.js +20 -2
- package/src/components/base/toggle/toggle.vue +27 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
## [55.3.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v55.3.0...v55.3.1) (2023-02-16)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* **GlDisclosureDropdown:** Improve markup semantics of dropdown wrapper ([79b1922](https://gitlab.com/gitlab-org/gitlab-ui/commit/79b19229c617904cc300a58d54c6ff04b742bb53))
|
|
7
|
+
|
|
8
|
+
# [55.3.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v55.2.1...v55.3.0) (2023-02-16)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **toggle:** Add description text ([da0d5aa](https://gitlab.com/gitlab-org/gitlab-ui/commit/da0d5aae8f36e562824abf1fd286443988fa2e47))
|
|
14
|
+
* **toggle:** Add description text and inline variant ([54a95f8](https://gitlab.com/gitlab-org/gitlab-ui/commit/54a95f80375bdf3c70c355b3d7b943c6f37f1984)), closes [#2148](https://gitlab.com/gitlab-org/gitlab-ui/issues/2148)
|
|
15
|
+
|
|
1
16
|
## [55.2.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v55.2.0...v55.2.1) (2023-02-13)
|
|
2
17
|
|
|
3
18
|
|
|
@@ -6,7 +6,7 @@ import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropd
|
|
|
6
6
|
import GlBaseDropdown from '../base_dropdown/base_dropdown';
|
|
7
7
|
import GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item';
|
|
8
8
|
import GlDisclosureDropdownGroup from './disclosure_dropdown_group';
|
|
9
|
-
import { itemsValidator,
|
|
9
|
+
import { itemsValidator, hasOnlyListItems, isItem } from './utils';
|
|
10
10
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
11
11
|
|
|
12
12
|
var script = {
|
|
@@ -157,21 +157,12 @@ var script = {
|
|
|
157
157
|
};
|
|
158
158
|
},
|
|
159
159
|
computed: {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
tag: 'ul'
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
if (isAllGroups(this.items)) return {
|
|
168
|
-
tag: 'div',
|
|
169
|
-
role: 'group'
|
|
170
|
-
};
|
|
160
|
+
disclosureTag() {
|
|
161
|
+
var _this$items;
|
|
162
|
+
if ((_this$items = this.items) !== null && _this$items !== void 0 && _this$items.length || hasOnlyListItems(this.$scopedSlots)) {
|
|
163
|
+
return 'ul';
|
|
171
164
|
}
|
|
172
|
-
return
|
|
173
|
-
tag: 'div'
|
|
174
|
-
};
|
|
165
|
+
return 'div';
|
|
175
166
|
},
|
|
176
167
|
hasCustomToggle() {
|
|
177
168
|
return Boolean(this.$scopedSlots.toggle);
|
|
@@ -265,7 +256,7 @@ var script = {
|
|
|
265
256
|
const __vue_script__ = script;
|
|
266
257
|
|
|
267
258
|
/* template */
|
|
268
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:"baseDropdown",staticClass:"gl-disclosure-dropdown",attrs:{"aria-labelledby":_vm.toggleAriaLabelledBy,"toggle-id":_vm.toggleId,"toggle-text":_vm.toggleText,"toggle-class":_vm.toggleClass,"text-sr-only":_vm.textSrOnly,"category":_vm.category,"variant":_vm.variant,"size":_vm.size,"icon":_vm.icon,"disabled":_vm.disabled,"loading":_vm.loading,"no-caret":_vm.noCaret,"placement":_vm.placement},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:"toggle",fn:function(){return [_vm._t("toggle")]},proxy:true}:null],null,true)},[_vm._v(" "),_vm._t("header"),_vm._v(" "),_c(_vm.
|
|
259
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:"baseDropdown",staticClass:"gl-disclosure-dropdown",attrs:{"aria-labelledby":_vm.toggleAriaLabelledBy,"toggle-id":_vm.toggleId,"toggle-text":_vm.toggleText,"toggle-class":_vm.toggleClass,"text-sr-only":_vm.textSrOnly,"category":_vm.category,"variant":_vm.variant,"size":_vm.size,"icon":_vm.icon,"disabled":_vm.disabled,"loading":_vm.loading,"no-caret":_vm.noCaret,"placement":_vm.placement},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:"toggle",fn:function(){return [_vm._t("toggle")]},proxy:true}:null],null,true)},[_vm._v(" "),_vm._t("header"),_vm._v(" "),_c(_vm.disclosureTag,{ref:"content",tag:"component",staticClass:"gl-new-dropdown-contents",attrs:{"id":_vm.disclosureId,"aria-labelledby":_vm.listAriaLabelledBy || _vm.toggleId,"data-testid":"disclosure-content","tabindex":"-1"},on:{"keydown":_vm.onKeydown}},[_vm._t("default",function(){return [_vm._l((_vm.items),function(item,index){return [(_vm.isItem(item))?[_c('gl-disclosure-dropdown-item',{key:item.text,attrs:{"item":item},on:{"action":_vm.handleAction}},[_vm._t("list-item",null,{"item":item})],2)]:[_c('gl-disclosure-dropdown-group',{key:item.name,attrs:{"bordered":index !== 0,"group":item},on:{"action":_vm.handleAction},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:"group-label",fn:function(){return [_vm._t("group-label",null,{"group":item})]},proxy:true}:null],null,true)},[_vm._v(" "),(_vm.$scopedSlots['list-item'])?_vm._l((item.items),function(groupItem){return _c('gl-disclosure-dropdown-item',{key:groupItem.text,attrs:{"item":groupItem},on:{"action":_vm.handleAction}},[_vm._t("list-item",null,{"item":groupItem})],2)}):_vm._e()],2)]]})]})],2),_vm._v(" "),_vm._t("footer")],2)};
|
|
269
260
|
var __vue_staticRenderFns__ = [];
|
|
270
261
|
|
|
271
262
|
/* style */
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import _uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import GlDisclosureDropdownItem from './disclosure_dropdown_item';
|
|
3
3
|
import { isGroup } from './utils';
|
|
4
|
+
import { DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';
|
|
4
5
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
5
6
|
|
|
6
7
|
const GROUP_TOP_BORDER_CLASSES = 'gl-border-t gl-pt-2 gl-mt-2';
|
|
7
8
|
var script = {
|
|
9
|
+
name: DISCLOSURE_DROPDOWN_GROUP_NAME,
|
|
8
10
|
components: {
|
|
9
11
|
GlDisclosureDropdownItem
|
|
10
12
|
},
|
|
@@ -54,7 +56,7 @@ var script = {
|
|
|
54
56
|
const __vue_script__ = script;
|
|
55
57
|
|
|
56
58
|
/* template */
|
|
57
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('
|
|
59
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:_vm.borderClass},[(_vm.showHeader)?_c('div',{staticClass:"gl-pl-4 gl-py-2 gl-font-sm gl-font-weight-bold",attrs:{"id":_vm.nameId,"aria-hidden":"true"}},[_vm._t("group-label",function(){return [_vm._v(_vm._s(_vm.group.name))]})],2):_vm._e(),_vm._v(" "),_c('ul',{staticClass:"gl-mb-0 gl-pl-0 gl-list-style-none",attrs:{"role":"group","aria-labelledby":_vm.groupLabeledBy}},[_vm._t("default",function(){return _vm._l((_vm.group.items),function(item){return _c('gl-disclosure-dropdown-item',{key:item.text,attrs:{"item":item},on:{"action":_vm.handleAction}},[_vm._t("list-item",null,{"item":item})],2)})})],2)])};
|
|
58
60
|
var __vue_staticRenderFns__ = [];
|
|
59
61
|
|
|
60
62
|
/* style */
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ENTER, SPACE } from '../constants';
|
|
2
2
|
import { stopEvent } from '../../../../utils/utils';
|
|
3
3
|
import { isItem } from './utils';
|
|
4
|
+
import { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';
|
|
4
5
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
5
6
|
|
|
6
7
|
const ITEM_CLASS = 'gl-new-dropdown-item';
|
|
7
8
|
var script = {
|
|
9
|
+
name: DISCLOSURE_DROPDOWN_ITEM_NAME,
|
|
8
10
|
ITEM_CLASS,
|
|
9
11
|
props: {
|
|
10
12
|
item: {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import _isFunction from 'lodash/isFunction';
|
|
2
|
+
import { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';
|
|
3
|
+
|
|
1
4
|
const itemValidator = item => {
|
|
2
5
|
var _item$text;
|
|
3
6
|
return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);
|
|
@@ -5,7 +8,24 @@ const itemValidator = item => {
|
|
|
5
8
|
const isItem = item => Boolean(item) && itemValidator(item);
|
|
6
9
|
const isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) && group.items.every(isItem);
|
|
7
10
|
const itemsValidator = items => items.every(isItem) || items.every(isGroup);
|
|
8
|
-
const
|
|
9
|
-
const
|
|
11
|
+
const isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);
|
|
12
|
+
const isValidSlotTagVue2 = vNode => {
|
|
13
|
+
var _vNode$componentOptio;
|
|
14
|
+
return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);
|
|
15
|
+
};
|
|
16
|
+
const isValidSlotTag = vNode => {
|
|
17
|
+
var _vNode$type;
|
|
18
|
+
return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';
|
|
19
|
+
};
|
|
20
|
+
const hasOnlyListItems = _ref => {
|
|
21
|
+
let {
|
|
22
|
+
default: defaultSlot
|
|
23
|
+
} = _ref;
|
|
24
|
+
if (!_isFunction(defaultSlot)) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const nodes = defaultSlot();
|
|
28
|
+
return Array.isArray(nodes) && nodes.filter(vNode => vNode.tag).length && (nodes.filter(vNode => vNode.tag).every(isValidSlotTagVue2) || nodes.filter(vNode => vNode.tag).every(isValidSlotTag));
|
|
29
|
+
};
|
|
10
30
|
|
|
11
|
-
export {
|
|
31
|
+
export { hasOnlyListItems, isGroup, isItem, itemsValidator };
|
|
@@ -52,6 +52,14 @@ var script = {
|
|
|
52
52
|
type: String,
|
|
53
53
|
required: true
|
|
54
54
|
},
|
|
55
|
+
/**
|
|
56
|
+
* The toggle's description.
|
|
57
|
+
*/
|
|
58
|
+
description: {
|
|
59
|
+
type: String,
|
|
60
|
+
required: false,
|
|
61
|
+
default: undefined
|
|
62
|
+
},
|
|
55
63
|
/**
|
|
56
64
|
* A help text to be shown below the toggle.
|
|
57
65
|
*/
|
|
@@ -78,10 +86,19 @@ var script = {
|
|
|
78
86
|
};
|
|
79
87
|
},
|
|
80
88
|
computed: {
|
|
89
|
+
shouldRenderDescription() {
|
|
90
|
+
// eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots
|
|
91
|
+
return Boolean(this.$scopedSlots.description || this.description) && this.isVerticalLayout;
|
|
92
|
+
},
|
|
81
93
|
shouldRenderHelp() {
|
|
82
94
|
// eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots
|
|
83
95
|
return Boolean(this.$slots.help || this.help) && this.isVerticalLayout;
|
|
84
96
|
},
|
|
97
|
+
toggleClasses() {
|
|
98
|
+
return [{
|
|
99
|
+
'gl-sr-only': this.labelPosition === 'hidden'
|
|
100
|
+
}, this.shouldRenderDescription ? 'gl-mb-2' : 'gl-mb-3'];
|
|
101
|
+
},
|
|
85
102
|
icon() {
|
|
86
103
|
return this.value ? 'mobile-issue-close' : 'close';
|
|
87
104
|
},
|
|
@@ -122,7 +139,7 @@ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=
|
|
|
122
139
|
'gl-flex-direction-column': _vm.isVerticalLayout,
|
|
123
140
|
'gl-toggle-label-inline': !_vm.isVerticalLayout,
|
|
124
141
|
'is-disabled': _vm.disabled,
|
|
125
|
-
},attrs:{"data-testid":"toggle-wrapper"}},[_c('span',{staticClass:"gl-toggle-label gl-flex-shrink-0",class:
|
|
142
|
+
},attrs:{"data-testid":"toggle-wrapper"}},[_c('span',{staticClass:"gl-toggle-label gl-flex-shrink-0",class:_vm.toggleClasses,attrs:{"id":_vm.labelId,"data-testid":"toggle-label"}},[_vm._t("label",function(){return [_vm._v(_vm._s(_vm.label))]})],2),_vm._v(" "),(_vm.shouldRenderDescription)?_c('span',{staticClass:"gl-description-label gl-mb-3",attrs:{"data-testid":"toggle-description"}},[_vm._t("description",function(){return [_vm._v(_vm._s(_vm.description))]})],2):_vm._e(),_vm._v(" "),(_vm.name)?_c('input',{attrs:{"name":_vm.name,"type":"hidden"},domProps:{"value":_vm.value}}):_vm._e(),_vm._v(" "),_c('button',{staticClass:"gl-flex-shrink-0",class:{
|
|
126
143
|
'gl-toggle': true,
|
|
127
144
|
'is-checked': _vm.value,
|
|
128
145
|
'is-disabled': _vm.disabled,
|