@gitlab/ui 56.1.1 → 56.2.0
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 +14 -0
- package/dist/components/base/accordion/accordion.js +2 -2
- package/dist/components/base/accordion/accordion_item.js +2 -2
- package/dist/components/base/avatar/avatar.js +4 -3
- package/dist/components/base/avatars_inline/avatars_inline.js +4 -4
- package/dist/components/base/datepicker/datepicker.js +3 -2
- package/dist/components/base/dropdown/dropdown.js +4 -2
- package/dist/components/base/filtered_search/filtered_search.js +5 -5
- package/dist/components/base/filtered_search/filtered_search_token.js +3 -3
- package/dist/components/base/filtered_search/filtered_search_token_segment.js +2 -2
- package/dist/components/base/filtered_search/filtered_search_utils.js +7 -7
- package/dist/components/base/form/form_checkbox/form_checkbox.js +2 -2
- package/dist/components/base/form/form_combobox/form_combobox.js +3 -3
- package/dist/components/base/form/form_date/form_date.js +4 -4
- package/dist/components/base/form/form_group/form_group.js +5 -6
- package/dist/components/base/form/form_input/form_input.js +3 -3
- package/dist/components/base/form/form_select/form_select.js +3 -3
- package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +2 -2
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +6 -5
- package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +2 -2
- package/dist/components/base/new_dropdowns/disclosure/utils.js +2 -2
- package/dist/components/base/new_dropdowns/listbox/listbox.js +9 -8
- package/dist/components/base/new_dropdowns/listbox/listbox_group.js +2 -2
- package/dist/components/base/new_dropdowns/listbox/utils.js +3 -3
- package/dist/components/base/path/path.js +6 -5
- package/dist/components/base/skeleton_loader/skeleton_loader.js +2 -2
- package/dist/components/base/tabs/tab/tab.js +4 -4
- package/dist/components/base/tabs/tabs/scrollable_tabs.js +3 -4
- package/dist/components/base/toast/toast.js +3 -2
- package/dist/components/base/toggle/toggle.js +3 -2
- package/dist/components/base/token_selector/token_selector.js +3 -3
- package/dist/components/charts/gauge/gauge.js +11 -11
- package/dist/components/charts/single_stat/single_stat.js +9 -1
- package/dist/components/utilities/intersection_observer/intersection_observer.js +2 -2
- package/dist/components/utilities/sprintf/sprintf.js +7 -6
- package/dist/utils/charts/config.js +1 -2
- package/dist/utils/use_mock_intersection_observer.js +5 -4
- package/package.json +11 -8
- package/scss_to_js/scss_variables.js +1 -0
- package/scss_to_js/scss_variables.json +5 -0
- package/src/components/base/accordion/accordion.vue +1 -1
- package/src/components/base/accordion/accordion_item.vue +1 -1
- package/src/components/base/avatar/avatar.vue +1 -1
- package/src/components/base/avatars_inline/avatars_inline.vue +2 -1
- package/src/components/base/datepicker/datepicker.vue +1 -1
- package/src/components/base/dropdown/dropdown.md +2 -3
- package/src/components/base/dropdown/dropdown.vue +1 -1
- package/src/components/base/filtered_search/filtered_search.spec.js +1 -1
- package/src/components/base/filtered_search/filtered_search.vue +2 -1
- package/src/components/base/filtered_search/filtered_search_token.vue +1 -1
- package/src/components/base/filtered_search/filtered_search_token_segment.vue +1 -1
- package/src/components/base/filtered_search/filtered_search_utils.js +3 -1
- package/src/components/base/form/form_checkbox/form_checkbox.vue +1 -1
- package/src/components/base/form/form_combobox/form_combobox.spec.js +1 -1
- package/src/components/base/form/form_combobox/form_combobox.vue +1 -1
- package/src/components/base/form/form_date/form_date.vue +1 -1
- package/src/components/base/form/form_group/form_group.vue +3 -2
- package/src/components/base/form/form_input/form_input.vue +1 -1
- package/src/components/base/form/form_select/form_select.vue +1 -1
- package/src/components/base/modal/modal.spec.js +1 -1
- package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +1 -1
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.vue +2 -1
- package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.vue +1 -1
- package/src/components/base/new_dropdowns/disclosure/utils.js +1 -1
- package/src/components/base/new_dropdowns/listbox/listbox.md +13 -12
- package/src/components/base/new_dropdowns/listbox/listbox.spec.js +3 -3
- package/src/components/base/new_dropdowns/listbox/listbox.stories.js +13 -13
- package/src/components/base/new_dropdowns/listbox/listbox.vue +3 -1
- package/src/components/base/new_dropdowns/listbox/listbox_group.vue +1 -1
- package/src/components/base/new_dropdowns/listbox/utils.js +2 -1
- package/src/components/base/path/__snapshots__/path.spec.js.snap +3 -3
- package/src/components/base/path/path.scss +3 -3
- package/src/components/base/path/path.spec.js +2 -2
- package/src/components/base/path/path.vue +3 -2
- package/src/components/base/skeleton_loader/skeleton_loader.vue +1 -1
- package/src/components/base/tabs/tab/tab.vue +2 -2
- package/src/components/base/tabs/tabs/scrollable_tabs.spec.js +2 -1
- package/src/components/base/tabs/tabs/scrollable_tabs.vue +2 -2
- package/src/components/base/tabs/tabs/tabs.stories.js +1 -1
- package/src/components/base/toast/toast.js +1 -1
- package/src/components/base/toggle/toggle.vue +1 -1
- package/src/components/base/token_selector/token_selector.vue +1 -1
- package/src/components/charts/area/area.stories.js +1 -1
- package/src/components/charts/gauge/gauge.vue +7 -5
- package/src/components/charts/single_stat/single_stat.spec.js +22 -0
- package/src/components/charts/single_stat/single_stat.stories.js +3 -0
- package/src/components/charts/single_stat/single_stat.vue +14 -1
- package/src/components/utilities/intersection_observer/intersection_observer.vue +1 -1
- package/src/components/utilities/sprintf/sprintf.vue +2 -1
- package/src/directives/outside/outside.spec.js +1 -1
- package/src/scss/variables.scss +1 -0
- package/src/utils/charts/config.js +1 -2
- package/src/utils/use_mock_intersection_observer.js +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [56.2.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v56.1.2...v56.2.0) (2023-02-25)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **GlSingleStat:** add titleIconClass prop ([df18efb](https://gitlab.com/gitlab-org/gitlab-ui/commit/df18efb2e22bb2bcb03edd1e8442e3eb1fcdca76))
|
|
7
|
+
|
|
8
|
+
## [56.1.2](https://gitlab.com/gitlab-org/gitlab-ui/compare/v56.1.1...v56.1.2) (2023-02-23)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* **GlPath:** Keep path text white in dark mode ([6fb2654](https://gitlab.com/gitlab-org/gitlab-ui/commit/6fb2654804ce75944cbd73f7acf300c66740b434))
|
|
14
|
+
|
|
1
15
|
## [56.1.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v56.1.0...v56.1.1) (2023-02-20)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
3
3
|
|
|
4
4
|
var script = {
|
|
5
5
|
name: 'GlAccordion',
|
|
6
6
|
provide() {
|
|
7
|
-
const accordionId =
|
|
7
|
+
const accordionId = uniqueId('accordion-set-');
|
|
8
8
|
// temporary fix for this issue: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/2019#note_514671251
|
|
9
9
|
// MR for the upstream pending: https://github.com/vuejs/apollo/pull/1153
|
|
10
10
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _uniqueId from 'lodash/uniqueId';
|
|
2
1
|
import { BCollapse } from 'bootstrap-vue/esm/index.js';
|
|
2
|
+
import uniqueId from 'lodash/uniqueId';
|
|
3
3
|
import { GlCollapseToggleDirective } from '../../../directives/collapse_toggle';
|
|
4
4
|
import GlButton from '../button/button';
|
|
5
5
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
@@ -65,7 +65,7 @@ var script = {
|
|
|
65
65
|
},
|
|
66
66
|
data() {
|
|
67
67
|
return {
|
|
68
|
-
accordionItemId:
|
|
68
|
+
accordionItemId: uniqueId('accordion-item-'),
|
|
69
69
|
isVisible: this.visible
|
|
70
70
|
};
|
|
71
71
|
},
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import isNumber from 'lodash/isNumber';
|
|
2
2
|
import { avatarSizeOptions, avatarShapeOptions } from '../../../utils/constants';
|
|
3
3
|
import { getAvatarChar } from '../../../utils/string_utils';
|
|
4
4
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
5
5
|
|
|
6
|
+
//
|
|
6
7
|
const IDENTICON_BG_COUNT = 7;
|
|
7
8
|
var script = {
|
|
8
9
|
props: {
|
|
@@ -31,7 +32,7 @@ var script = {
|
|
|
31
32
|
required: false,
|
|
32
33
|
default: avatarSizeOptions[1],
|
|
33
34
|
validator: value => {
|
|
34
|
-
const sizes =
|
|
35
|
+
const sizes = isNumber(value) ? [value] : Object.values(value);
|
|
35
36
|
const areValidSizes = sizes.every(size => {
|
|
36
37
|
const isValidSize = avatarSizeOptions.includes(size);
|
|
37
38
|
if (!isValidSize) {
|
|
@@ -51,7 +52,7 @@ var script = {
|
|
|
51
52
|
},
|
|
52
53
|
computed: {
|
|
53
54
|
sizeClasses() {
|
|
54
|
-
if (
|
|
55
|
+
if (isNumber(this.size)) {
|
|
55
56
|
return `gl-avatar-s${this.size}`;
|
|
56
57
|
}
|
|
57
58
|
const {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import truncate from 'lodash/truncate';
|
|
2
|
+
import get from 'lodash/get';
|
|
3
3
|
import { avatarsInlineSizeOptions } from '../../../utils/constants';
|
|
4
4
|
import GlAvatar from '../avatar/avatar';
|
|
5
5
|
import GlTooltip from '../tooltip/tooltip';
|
|
@@ -71,11 +71,11 @@ var script = {
|
|
|
71
71
|
if (!this.badgeTooltipProp) {
|
|
72
72
|
return '';
|
|
73
73
|
}
|
|
74
|
-
const tooltipTitle = this.hiddenAvatars.map(avatar =>
|
|
74
|
+
const tooltipTitle = this.hiddenAvatars.map(avatar => get(avatar, this.badgeTooltipProp, '').trim()).join(', ');
|
|
75
75
|
|
|
76
76
|
// truncate will append '...'
|
|
77
77
|
// we need to take these extra 3 characters into account in badgeTooltipMaxChars
|
|
78
|
-
return this.badgeTooltipMaxChars ?
|
|
78
|
+
return this.badgeTooltipMaxChars ? truncate(tooltipTitle, {
|
|
79
79
|
length: this.badgeTooltipMaxChars
|
|
80
80
|
}) : tooltipTitle;
|
|
81
81
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import isString from 'lodash/isString';
|
|
2
2
|
import Pikaday from 'pikaday';
|
|
3
3
|
import { defaultDateFormat, datepickerSizeOptionsMap } from '../../../utils/constants';
|
|
4
4
|
import { areDatesEqual } from '../../../utils/datetime_utility';
|
|
@@ -7,6 +7,7 @@ import GlFormInput from '../form/form_input/form_input';
|
|
|
7
7
|
import GlIcon from '../icon/icon';
|
|
8
8
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
9
9
|
|
|
10
|
+
//
|
|
10
11
|
const pad = function (val) {
|
|
11
12
|
let len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
12
13
|
return `0${val}`.slice(-len);
|
|
@@ -188,7 +189,7 @@ var script = {
|
|
|
188
189
|
return 'calendar' in this ? this.calendar.toString() : '';
|
|
189
190
|
},
|
|
190
191
|
customTrigger() {
|
|
191
|
-
return
|
|
192
|
+
return isString(this.target) && this.target !== '';
|
|
192
193
|
},
|
|
193
194
|
triggerOnFocus() {
|
|
194
195
|
return this.target === null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import _merge from 'lodash/merge';
|
|
2
1
|
import Vue from 'vue';
|
|
3
2
|
import { BDropdown } from 'bootstrap-vue/esm/index.js';
|
|
4
3
|
import { selectAll, isVisible } from 'bootstrap-vue/esm/utils/dom';
|
|
4
|
+
import merge from 'lodash/merge';
|
|
5
5
|
import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions } from '../../../utils/constants';
|
|
6
6
|
import { ButtonMixin } from '../../mixins/button_mixin';
|
|
7
7
|
import GlButton from '../button/button';
|
|
@@ -10,6 +10,8 @@ import GlLoadingIcon from '../loading_icon/loading_icon';
|
|
|
10
10
|
import GlDropdownDivider from './dropdown_divider';
|
|
11
11
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
12
12
|
|
|
13
|
+
//
|
|
14
|
+
|
|
13
15
|
// Return an Array of visible items
|
|
14
16
|
function filterVisible(els) {
|
|
15
17
|
return (els || []).filter(isVisible);
|
|
@@ -193,7 +195,7 @@ var script = {
|
|
|
193
195
|
return this.hasHighlightedItemsContent && this.showHighlightedItemsTitle || this.showClearAll;
|
|
194
196
|
},
|
|
195
197
|
popperOptions() {
|
|
196
|
-
return
|
|
198
|
+
return merge({}, DefaultPopperOptions, this.popperOpts);
|
|
197
199
|
}
|
|
198
200
|
},
|
|
199
201
|
methods: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import isEqual from 'lodash/isEqual';
|
|
2
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
3
3
|
import PortalVue from 'portal-vue';
|
|
4
4
|
import Vue from 'vue';
|
|
5
5
|
import { GlTooltipDirective } from '../../../directives/tooltip';
|
|
@@ -190,8 +190,8 @@ var script = {
|
|
|
190
190
|
},
|
|
191
191
|
value: {
|
|
192
192
|
handler(newValue, oldValue) {
|
|
193
|
-
if (newValue.length && !
|
|
194
|
-
this.applyNewValue(
|
|
193
|
+
if (newValue.length && !isEqual(newValue, oldValue)) {
|
|
194
|
+
this.applyNewValue(cloneDeep(newValue));
|
|
195
195
|
}
|
|
196
196
|
},
|
|
197
197
|
deep: true,
|
|
@@ -319,7 +319,7 @@ var script = {
|
|
|
319
319
|
* Emitted when search is submitted
|
|
320
320
|
* @property {array} tokens
|
|
321
321
|
*/
|
|
322
|
-
this.$emit('submit', normalizeTokens(
|
|
322
|
+
this.$emit('submit', normalizeTokens(cloneDeep(this.tokens)));
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
325
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
2
2
|
import { COMMA } from '../../../utils/constants';
|
|
3
3
|
import GlToken from '../token/token';
|
|
4
4
|
import GlFilteredSearchTokenSegment from './filtered_search_token_segment';
|
|
@@ -87,7 +87,7 @@ var script = {
|
|
|
87
87
|
data() {
|
|
88
88
|
return {
|
|
89
89
|
activeSegment: null,
|
|
90
|
-
tokenValue:
|
|
90
|
+
tokenValue: cloneDeep(this.value),
|
|
91
91
|
intendedCursorPosition: this.cursorPosition
|
|
92
92
|
};
|
|
93
93
|
},
|
|
@@ -137,7 +137,7 @@ var script = {
|
|
|
137
137
|
if ((newValue === null || newValue === void 0 ? void 0 : newValue.data) === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.data) && (newValue === null || newValue === void 0 ? void 0 : newValue.operator) === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.operator)) {
|
|
138
138
|
return;
|
|
139
139
|
}
|
|
140
|
-
this.tokenValue =
|
|
140
|
+
this.tokenValue = cloneDeep(newValue);
|
|
141
141
|
}
|
|
142
142
|
},
|
|
143
143
|
active: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import last from 'lodash/last';
|
|
2
2
|
import { Portal } from 'portal-vue';
|
|
3
3
|
import { COMMA, LEFT_MOUSE_BUTTON } from '../../../utils/constants';
|
|
4
4
|
import GlFilteredSearchSuggestion from './filtered_search_suggestion';
|
|
@@ -136,7 +136,7 @@ var script = {
|
|
|
136
136
|
return (_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.find(o => o.value === this.value);
|
|
137
137
|
},
|
|
138
138
|
nonMultipleValue() {
|
|
139
|
-
return this.multiSelect ?
|
|
139
|
+
return this.multiSelect ? last(this.value.split(COMMA)) : this.value;
|
|
140
140
|
},
|
|
141
141
|
inputValue: {
|
|
142
142
|
get() {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import first from 'lodash/first';
|
|
2
|
+
import last from 'lodash/last';
|
|
3
|
+
import isString from 'lodash/isString';
|
|
4
4
|
|
|
5
5
|
const TERM_TOKEN_TYPE = 'filtered-search-term';
|
|
6
6
|
const INTENT_ACTIVATE_PREVIOUS = 'intent-activate-previous';
|
|
@@ -87,10 +87,10 @@ function denormalizeTokens(inputTokens) {
|
|
|
87
87
|
return result;
|
|
88
88
|
}
|
|
89
89
|
function splitOnQuotes(str) {
|
|
90
|
-
if (
|
|
90
|
+
if (first(str) === "'" && last(str) === "'") {
|
|
91
91
|
return [str];
|
|
92
92
|
}
|
|
93
|
-
if (
|
|
93
|
+
if (first(str) === '"' && last(str) === '"') {
|
|
94
94
|
return [str];
|
|
95
95
|
}
|
|
96
96
|
const queue = str.split(' ');
|
|
@@ -136,7 +136,7 @@ function splitOnQuotes(str) {
|
|
|
136
136
|
* 2. token should not already have a quote around it.
|
|
137
137
|
*/
|
|
138
138
|
function wrapTokenInQuotes(token) {
|
|
139
|
-
if (!
|
|
139
|
+
if (!isString(token)) {
|
|
140
140
|
return token;
|
|
141
141
|
}
|
|
142
142
|
if (!token.includes(' ')) {
|
|
@@ -145,7 +145,7 @@ function wrapTokenInQuotes(token) {
|
|
|
145
145
|
const quotes = ["'", '"'];
|
|
146
146
|
|
|
147
147
|
// If the token starts and ends with a quote, eg. "Foo Bar", then return the original token.
|
|
148
|
-
if (quotes.some(quote =>
|
|
148
|
+
if (quotes.some(quote => first(token) === quote && last(token) === quote)) {
|
|
149
149
|
return token;
|
|
150
150
|
}
|
|
151
151
|
return `"${token}"`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _uniqueId from 'lodash/uniqueId';
|
|
2
1
|
import { BFormCheckbox } from 'bootstrap-vue/esm/index.js';
|
|
2
|
+
import uniqueId from 'lodash/uniqueId';
|
|
3
3
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
4
4
|
|
|
5
5
|
var script = {
|
|
@@ -16,7 +16,7 @@ var script = {
|
|
|
16
16
|
id: {
|
|
17
17
|
type: String,
|
|
18
18
|
required: false,
|
|
19
|
-
default: () =>
|
|
19
|
+
default: () => uniqueId()
|
|
20
20
|
}
|
|
21
21
|
},
|
|
22
22
|
methods: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import GlDropdownItem from '../../dropdown/dropdown_item';
|
|
3
3
|
import GlDropdownDivider from '../../dropdown/dropdown_divider';
|
|
4
4
|
import GlFormGroup from '../form_group/form_group';
|
|
@@ -67,8 +67,8 @@ var script = {
|
|
|
67
67
|
results: [],
|
|
68
68
|
arrowCounter: -1,
|
|
69
69
|
userDismissedResults: false,
|
|
70
|
-
suggestionsId:
|
|
71
|
-
inputId:
|
|
70
|
+
suggestionsId: uniqueId('token-suggestions-'),
|
|
71
|
+
inputId: uniqueId('token-input-')
|
|
72
72
|
};
|
|
73
73
|
},
|
|
74
74
|
computed: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import GlFormInput from '../form_input/form_input';
|
|
3
3
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
4
4
|
|
|
@@ -47,9 +47,9 @@ var script = {
|
|
|
47
47
|
data() {
|
|
48
48
|
return {
|
|
49
49
|
currentValue: this.value,
|
|
50
|
-
inputId: this.id ||
|
|
51
|
-
invalidFeedbackId:
|
|
52
|
-
outputId:
|
|
50
|
+
inputId: this.id || uniqueId('form-date-'),
|
|
51
|
+
invalidFeedbackId: uniqueId('form-date-invalid-feedback-'),
|
|
52
|
+
outputId: uniqueId('form-date-output-'),
|
|
53
53
|
valueAsDate: null
|
|
54
54
|
};
|
|
55
55
|
},
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import _isPlainObject from 'lodash/isPlainObject';
|
|
2
|
-
import _isArray from 'lodash/isArray';
|
|
3
|
-
import _isString from 'lodash/isString';
|
|
4
1
|
import { BFormGroup } from 'bootstrap-vue/esm/index.js';
|
|
2
|
+
import isString from 'lodash/isString';
|
|
3
|
+
import isPlainObject from 'lodash/isPlainObject';
|
|
5
4
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
6
5
|
|
|
7
6
|
var script = {
|
|
@@ -37,13 +36,13 @@ var script = {
|
|
|
37
36
|
labelClass
|
|
38
37
|
} = this;
|
|
39
38
|
const defaultClass = 'col-form-label';
|
|
40
|
-
if (
|
|
39
|
+
if (isString(labelClass)) {
|
|
41
40
|
return `${labelClass} ${defaultClass}`;
|
|
42
41
|
}
|
|
43
|
-
if (
|
|
42
|
+
if (Array.isArray(labelClass)) {
|
|
44
43
|
return [...labelClass, defaultClass];
|
|
45
44
|
}
|
|
46
|
-
if (
|
|
45
|
+
if (isPlainObject(labelClass)) {
|
|
47
46
|
return {
|
|
48
47
|
...labelClass,
|
|
49
48
|
[defaultClass]: true
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import isObject from 'lodash/isObject';
|
|
2
2
|
import { BFormInput } from 'bootstrap-vue/esm/index.js';
|
|
3
3
|
import { formInputSizes } from '../../../../utils/constants';
|
|
4
4
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
@@ -23,7 +23,7 @@ var script = {
|
|
|
23
23
|
required: false,
|
|
24
24
|
default: null,
|
|
25
25
|
validator: value => {
|
|
26
|
-
const sizes =
|
|
26
|
+
const sizes = isObject(value) ? Object.values(value) : [value];
|
|
27
27
|
return sizes.every(size => Object.values(formInputSizes).includes(size));
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -33,7 +33,7 @@ var script = {
|
|
|
33
33
|
if (this.size === null) {
|
|
34
34
|
return [];
|
|
35
35
|
}
|
|
36
|
-
if (
|
|
36
|
+
if (isObject(this.size)) {
|
|
37
37
|
const {
|
|
38
38
|
default: defaultSize,
|
|
39
39
|
...nonDefaultSizes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _isObject from 'lodash/isObject';
|
|
2
1
|
import { BFormSelect } from 'bootstrap-vue/esm/index.js';
|
|
2
|
+
import isObject from 'lodash/isObject';
|
|
3
3
|
import { formInputSizes } from '../../../../utils/constants';
|
|
4
4
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
5
5
|
|
|
@@ -17,7 +17,7 @@ var script = {
|
|
|
17
17
|
required: false,
|
|
18
18
|
default: null,
|
|
19
19
|
validator: value => {
|
|
20
|
-
const sizes =
|
|
20
|
+
const sizes = isObject(value) ? Object.values(value) : [value];
|
|
21
21
|
return sizes.every(size => Object.values(formInputSizes).includes(size));
|
|
22
22
|
}
|
|
23
23
|
}
|
|
@@ -27,7 +27,7 @@ var script = {
|
|
|
27
27
|
if (this.size === null) {
|
|
28
28
|
return [];
|
|
29
29
|
}
|
|
30
|
-
if (
|
|
30
|
+
if (isObject(this.size)) {
|
|
31
31
|
const {
|
|
32
32
|
default: defaultSize,
|
|
33
33
|
...nonDefaultSizes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import { createPopper } from '@popperjs/core';
|
|
3
3
|
import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';
|
|
4
4
|
import { POPPER_CONFIG, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE } from '../constants';
|
|
@@ -109,7 +109,7 @@ var script = {
|
|
|
109
109
|
data() {
|
|
110
110
|
return {
|
|
111
111
|
visible: false,
|
|
112
|
-
baseDropdownId:
|
|
112
|
+
baseDropdownId: uniqueId('base-dropdown-')
|
|
113
113
|
};
|
|
114
114
|
},
|
|
115
115
|
computed: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import clamp from 'lodash/clamp';
|
|
2
|
+
import uniqueId from 'lodash/uniqueId';
|
|
3
3
|
import { stopEvent, filterVisible } from '../../../../utils/utils';
|
|
4
4
|
import { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, HOME, END, ARROW_UP, ARROW_DOWN } from '../constants';
|
|
5
5
|
import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';
|
|
@@ -9,6 +9,7 @@ import GlDisclosureDropdownGroup from './disclosure_dropdown_group';
|
|
|
9
9
|
import { itemsValidator, hasOnlyListItems, isItem } from './utils';
|
|
10
10
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
11
11
|
|
|
12
|
+
//
|
|
12
13
|
var script = {
|
|
13
14
|
events: {
|
|
14
15
|
GL_DROPDOWN_SHOWN,
|
|
@@ -104,7 +105,7 @@ var script = {
|
|
|
104
105
|
toggleId: {
|
|
105
106
|
type: String,
|
|
106
107
|
required: false,
|
|
107
|
-
default: () =>
|
|
108
|
+
default: () => uniqueId('dropdown-toggle-btn-')
|
|
108
109
|
},
|
|
109
110
|
/**
|
|
110
111
|
* Additional CSS classes to customize toggle appearance
|
|
@@ -152,7 +153,7 @@ var script = {
|
|
|
152
153
|
},
|
|
153
154
|
data() {
|
|
154
155
|
return {
|
|
155
|
-
disclosureId:
|
|
156
|
+
disclosureId: uniqueId('disclosure-'),
|
|
156
157
|
nextFocusedItemIndex: null
|
|
157
158
|
};
|
|
158
159
|
},
|
|
@@ -229,7 +230,7 @@ var script = {
|
|
|
229
230
|
target
|
|
230
231
|
} = event;
|
|
231
232
|
const currentIndex = elements.indexOf(target);
|
|
232
|
-
const nextIndex =
|
|
233
|
+
const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);
|
|
233
234
|
this.focusItem(nextIndex, elements);
|
|
234
235
|
},
|
|
235
236
|
focusItem(index, elements) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import GlDisclosureDropdownItem from './disclosure_dropdown_item';
|
|
3
3
|
import { isGroup } from './utils';
|
|
4
4
|
import { DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';
|
|
@@ -43,7 +43,7 @@ var script = {
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
created() {
|
|
46
|
-
this.nameId =
|
|
46
|
+
this.nameId = uniqueId('gl-disclosure-dropdown-group-');
|
|
47
47
|
},
|
|
48
48
|
methods: {
|
|
49
49
|
handleAction(action) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import isFunction from 'lodash/isFunction';
|
|
2
2
|
import { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';
|
|
3
3
|
|
|
4
4
|
const itemValidator = item => {
|
|
@@ -21,7 +21,7 @@ const hasOnlyListItems = _ref => {
|
|
|
21
21
|
let {
|
|
22
22
|
default: defaultSlot
|
|
23
23
|
} = _ref;
|
|
24
|
-
if (!
|
|
24
|
+
if (!isFunction(defaultSlot)) {
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
27
|
const nodes = defaultSlot();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import clamp from 'lodash/clamp';
|
|
2
|
+
import uniqueId from 'lodash/uniqueId';
|
|
3
|
+
import isNil from 'lodash/isNil';
|
|
4
4
|
import { stopEvent } from '../../../../utils/utils';
|
|
5
5
|
import { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, HOME, END, ARROW_UP, ARROW_DOWN } from '../constants';
|
|
6
6
|
import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';
|
|
@@ -15,6 +15,7 @@ import GlListboxGroup from './listbox_group';
|
|
|
15
15
|
import { itemsValidator, isOption, flattenedOptions } from './utils';
|
|
16
16
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
17
17
|
|
|
18
|
+
//
|
|
18
19
|
const ITEM_SELECTOR = '[role="option"]';
|
|
19
20
|
const HEADER_ITEMS_BORDER_CLASSES = ['gl-border-b-1', 'gl-border-b-solid', 'gl-border-b-gray-200'];
|
|
20
21
|
const GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-pt-1', 'gl-mt-2'];
|
|
@@ -277,8 +278,8 @@ var script = {
|
|
|
277
278
|
data() {
|
|
278
279
|
return {
|
|
279
280
|
selectedValues: [],
|
|
280
|
-
toggleId:
|
|
281
|
-
listboxId:
|
|
281
|
+
toggleId: uniqueId('dropdown-toggle-btn-'),
|
|
282
|
+
listboxId: uniqueId('listbox-'),
|
|
282
283
|
nextFocusedItemIndex: null,
|
|
283
284
|
searchStr: ''
|
|
284
285
|
};
|
|
@@ -324,7 +325,7 @@ var script = {
|
|
|
324
325
|
return this.searchable && !this.showNoResultsText && this.$scopedSlots['search-summary-sr-only'];
|
|
325
326
|
},
|
|
326
327
|
headerId() {
|
|
327
|
-
return this.headerText &&
|
|
328
|
+
return this.headerText && uniqueId('listbox-header-');
|
|
328
329
|
},
|
|
329
330
|
showResetButton() {
|
|
330
331
|
if (!this.resetButtonLabel) {
|
|
@@ -352,7 +353,7 @@ var script = {
|
|
|
352
353
|
}
|
|
353
354
|
this.selectedValues = [...newSelected];
|
|
354
355
|
} else {
|
|
355
|
-
this.selectedValues =
|
|
356
|
+
this.selectedValues = isNil(newSelected) ? [] : [newSelected];
|
|
356
357
|
}
|
|
357
358
|
}
|
|
358
359
|
},
|
|
@@ -448,7 +449,7 @@ var script = {
|
|
|
448
449
|
target
|
|
449
450
|
} = event;
|
|
450
451
|
const currentIndex = elements.indexOf(target);
|
|
451
|
-
const nextIndex =
|
|
452
|
+
const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);
|
|
452
453
|
this.focusItem(nextIndex, elements);
|
|
453
454
|
},
|
|
454
455
|
focusItem(index, elements) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import uniqueId from 'lodash/uniqueId';
|
|
2
2
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
3
3
|
|
|
4
4
|
var script = {
|
|
@@ -9,7 +9,7 @@ var script = {
|
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
11
|
created() {
|
|
12
|
-
this.nameId =
|
|
12
|
+
this.nameId = uniqueId('gl-listbox-group-');
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import isNumber from 'lodash/isNumber';
|
|
2
|
+
import isString from 'lodash/isString';
|
|
3
3
|
|
|
4
|
-
const isOption = item => Boolean(item) && (
|
|
4
|
+
const isOption = item => Boolean(item) && (isString(item.value) || isNumber(item.value));
|
|
5
5
|
const isGroup = function () {
|
|
6
6
|
let {
|
|
7
7
|
options
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import _findLast from 'lodash/findLast';
|
|
2
|
-
import _uniqueId from 'lodash/uniqueId';
|
|
3
1
|
import iconSpriteInfo from '@gitlab/svgs/dist/icons.json';
|
|
2
|
+
import uniqueId from 'lodash/uniqueId';
|
|
3
|
+
import findLast from 'lodash/findLast';
|
|
4
4
|
import { GlResizeObserverDirective } from '../../../directives/resize_observer/resize_observer';
|
|
5
5
|
import { glThemes } from '../../../utils/constants';
|
|
6
6
|
import GlIcon from '../icon/icon';
|
|
7
7
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
8
8
|
|
|
9
|
+
//
|
|
9
10
|
const BOUNDARY_WIDTH = 40;
|
|
10
11
|
const PATH_ITEM_CLASS = 'gl-path-button';
|
|
11
12
|
const PATH_ACTIVE_ITEM_PREFIX = 'gl-path-active-item';
|
|
@@ -48,7 +49,7 @@ var script = {
|
|
|
48
49
|
backgroundColor: {
|
|
49
50
|
type: String,
|
|
50
51
|
required: false,
|
|
51
|
-
default: '
|
|
52
|
+
default: 'rgba(0,0,0,0)'
|
|
52
53
|
}
|
|
53
54
|
},
|
|
54
55
|
data() {
|
|
@@ -89,7 +90,7 @@ var script = {
|
|
|
89
90
|
}
|
|
90
91
|
},
|
|
91
92
|
beforeCreate() {
|
|
92
|
-
this.pathUuid =
|
|
93
|
+
this.pathUuid = uniqueId('path-');
|
|
93
94
|
},
|
|
94
95
|
methods: {
|
|
95
96
|
pathItemClass(index) {
|
|
@@ -111,7 +112,7 @@ var script = {
|
|
|
111
112
|
this.width = width;
|
|
112
113
|
},
|
|
113
114
|
scrollPathLeft() {
|
|
114
|
-
const previousItemToScollTo =
|
|
115
|
+
const previousItemToScollTo = findLast(this.$refs.pathListItems, listItem => {
|
|
115
116
|
return listItem.offsetLeft < this.leftHandBoundary;
|
|
116
117
|
});
|
|
117
118
|
const availableWidth = this.width - previousItemToScollTo.offsetWidth - BOUNDARY_WIDTH - BOUNDARY_WIDTH;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import range from 'lodash/range';
|
|
2
2
|
import { uid } from '../../../utils/utils';
|
|
3
3
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
4
4
|
|
|
@@ -122,7 +122,7 @@ var script = {
|
|
|
122
122
|
attrs: {
|
|
123
123
|
id: `${props.uniqueKey}-idClip`
|
|
124
124
|
}
|
|
125
|
-
}, slotIsSet() ? slots().default :
|
|
125
|
+
}, slotIsSet() ? slots().default : range(props.lines).map(index => createElement('rect', {
|
|
126
126
|
key: index,
|
|
127
127
|
attrs: {
|
|
128
128
|
y: index * DEFAULT_LINE_HEIGHT + index * DEFAULT_LINE_SPACING,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import _isPlainObject from 'lodash/isPlainObject';
|
|
2
|
-
import _isArray from 'lodash/isArray';
|
|
3
1
|
import { BTab } from 'bootstrap-vue/esm/index.js';
|
|
2
|
+
import isPlainObject from 'lodash/isPlainObject';
|
|
4
3
|
import { DEFAULT_TAB_TITLE_LINK_CLASS } from '../constants';
|
|
5
4
|
import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
|
|
6
5
|
|
|
6
|
+
//
|
|
7
7
|
var script = {
|
|
8
8
|
components: {
|
|
9
9
|
BTab
|
|
@@ -29,10 +29,10 @@ var script = {
|
|
|
29
29
|
const {
|
|
30
30
|
titleLinkClass
|
|
31
31
|
} = this;
|
|
32
|
-
if (
|
|
32
|
+
if (Array.isArray(titleLinkClass)) {
|
|
33
33
|
return [...titleLinkClass, DEFAULT_TAB_TITLE_LINK_CLASS];
|
|
34
34
|
}
|
|
35
|
-
if (
|
|
35
|
+
if (isPlainObject(titleLinkClass)) {
|
|
36
36
|
return {
|
|
37
37
|
...titleLinkClass,
|
|
38
38
|
[DEFAULT_TAB_TITLE_LINK_CLASS]: true
|