@gitlab/ui 126.5.0 → 127.0.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.
|
@@ -36,7 +36,7 @@ var script = {
|
|
|
36
36
|
validator: items => {
|
|
37
37
|
return items.every(item => {
|
|
38
38
|
const keys = Object.keys(item);
|
|
39
|
-
return keys.includes('text') && (keys.includes('href') || keys.includes('to'));
|
|
39
|
+
return keys.includes('text') && item.text && (keys.includes('href') || keys.includes('to'));
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
},
|
|
@@ -230,12 +230,6 @@ var script = {
|
|
|
230
230
|
this.resizeObserver = null;
|
|
231
231
|
}
|
|
232
232
|
this.resetItems();
|
|
233
|
-
},
|
|
234
|
-
hideItemClass(item) {
|
|
235
|
-
// TODO once https://gitlab.com/gitlab-org/gitlab/-/issues/520089 is addressed:
|
|
236
|
-
// - Remove this hiding of empty breadcrumbs.
|
|
237
|
-
// - Tighten `items` validator to require non-empty `text`.
|
|
238
|
-
return !item.text ? 'gl-hidden' : '';
|
|
239
233
|
}
|
|
240
234
|
}
|
|
241
235
|
};
|
|
@@ -244,7 +238,7 @@ var script = {
|
|
|
244
238
|
const __vue_script__ = script;
|
|
245
239
|
|
|
246
240
|
/* template */
|
|
247
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:"gl-breadcrumbs",style:(_vm.breadcrumbStyle),attrs:{"aria-label":_vm.ariaLabel}},[_c('ol',_vm._g(_vm._b({staticClass:"gl-breadcrumb-list breadcrumb"},'ol',_vm.$attrs,false),_vm.$listeners),[(_vm.hasCollapsible || !_vm.resizeDone)?_c('li',{ref:"dropdown",class:("gl-breadcrumb-item gl-breadcrumb-item-" + _vm.size)},[_c('gl-disclosure-dropdown',{attrs:{"items":_vm.overflowingItems,"toggle-text":_vm.showMoreLabel,"fluid-width":"","text-sr-only":"","no-caret":"","icon":"ellipsis_h","size":_vm.dropdownSize}})],1):_vm._e(),_vm._v(" "),_vm._l((_vm.fittingItems),function(item,index){return _c('gl-breadcrumb-item',{key:index,ref:"breadcrumbs",refInFor:true,class:
|
|
241
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:"gl-breadcrumbs",style:(_vm.breadcrumbStyle),attrs:{"aria-label":_vm.ariaLabel}},[_c('ol',_vm._g(_vm._b({staticClass:"gl-breadcrumb-list breadcrumb"},'ol',_vm.$attrs,false),_vm.$listeners),[(_vm.hasCollapsible || !_vm.resizeDone)?_c('li',{ref:"dropdown",class:("gl-breadcrumb-item gl-breadcrumb-item-" + _vm.size)},[_c('gl-disclosure-dropdown',{attrs:{"items":_vm.overflowingItems,"toggle-text":_vm.showMoreLabel,"fluid-width":"","text-sr-only":"","no-caret":"","icon":"ellipsis_h","size":_vm.dropdownSize}})],1):_vm._e(),_vm._v(" "),_vm._l((_vm.fittingItems),function(item,index){return _c('gl-breadcrumb-item',{key:index,ref:"breadcrumbs",refInFor:true,class:_vm.itemClass,attrs:{"text":item.text,"href":item.href,"to":item.to,"size":_vm.size,"aria-current":_vm.getAriaCurrentAttr(index)},scopedSlots:_vm._u([{key:"default",fn:function(){return [(item.avatarPath)?_c('gl-avatar',{staticClass:"gl-breadcrumb-avatar-tile gl-border gl-mr-2 !gl-rounded-default",attrs:{"src":item.avatarPath,"size":_vm.avatarSize,"aria-hidden":"true","shape":"rect","data-testid":"avatar"}}):_vm._e(),_c('span',{staticClass:"gl-align-middle"},[_vm._v(_vm._s(item.text))])]},proxy:true}],null,true)})}),_vm._v(" "),(_vm.showClipboardButton)?_c('li',{staticClass:"gl-breadcrumb-clipboard-button"},[_c('clipboard-button',_vm._b({ref:"clipboardButton",staticClass:"gl-ml-2",attrs:{"data-testid":"copy-to-clipboard-button","text":_vm.clipboardButtonText,"size":_vm.dropdownSize}},'clipboard-button',_vm.clipboardTooltipText ? { title: _vm.clipboardTooltipText } : {},false))],1):_vm._e()],2)])};
|
|
248
242
|
var __vue_staticRenderFns__ = [];
|
|
249
243
|
|
|
250
244
|
/* style */
|
|
@@ -2,6 +2,11 @@ const dashboardConfigValidator = config => {
|
|
|
2
2
|
if (config.panels) {
|
|
3
3
|
if (!Array.isArray(config.panels)) return false;
|
|
4
4
|
if (!config.panels.every(panel => panel.id && panel.gridAttributes)) return false;
|
|
5
|
+
|
|
6
|
+
// Validate that all panel IDs are unique
|
|
7
|
+
const panelIds = config.panels.map(panel => panel.id);
|
|
8
|
+
const uniquePanelIds = new Set(panelIds);
|
|
9
|
+
if (panelIds.length !== uniquePanelIds.size) return false;
|
|
5
10
|
}
|
|
6
11
|
return true;
|
|
7
12
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gitlab/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "127.0.0",
|
|
4
4
|
"description": "GitLab UI Components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
"autoprefixer": "10.4.23",
|
|
132
132
|
"axe-playwright": "^2.2.2",
|
|
133
133
|
"babel-loader": "^9.2.1",
|
|
134
|
-
"cypress": "15.8.
|
|
134
|
+
"cypress": "15.8.2",
|
|
135
135
|
"cypress-real-events": "^1.15.0",
|
|
136
136
|
"dompurify": "^3.1.2",
|
|
137
137
|
"emoji-regex": "^10.6.0",
|
|
@@ -165,7 +165,7 @@
|
|
|
165
165
|
"start-server-and-test": "^2.1.3",
|
|
166
166
|
"storybook": "^7.6.20",
|
|
167
167
|
"storybook-dark-mode": "4.0.2",
|
|
168
|
-
"style-dictionary": "^5.1.
|
|
168
|
+
"style-dictionary": "^5.1.3",
|
|
169
169
|
"style-loader": "^4",
|
|
170
170
|
"tailwindcss": "3.4.19",
|
|
171
171
|
"vue": "2.7.16",
|
|
@@ -32,7 +32,9 @@ export default {
|
|
|
32
32
|
validator: (items) => {
|
|
33
33
|
return items.every((item) => {
|
|
34
34
|
const keys = Object.keys(item);
|
|
35
|
-
return
|
|
35
|
+
return (
|
|
36
|
+
keys.includes('text') && item.text && (keys.includes('href') || keys.includes('to'))
|
|
37
|
+
);
|
|
36
38
|
});
|
|
37
39
|
},
|
|
38
40
|
},
|
|
@@ -233,12 +235,6 @@ export default {
|
|
|
233
235
|
}
|
|
234
236
|
this.resetItems();
|
|
235
237
|
},
|
|
236
|
-
hideItemClass(item) {
|
|
237
|
-
// TODO once https://gitlab.com/gitlab-org/gitlab/-/issues/520089 is addressed:
|
|
238
|
-
// - Remove this hiding of empty breadcrumbs.
|
|
239
|
-
// - Tighten `items` validator to require non-empty `text`.
|
|
240
|
-
return !item.text ? 'gl-hidden' : '';
|
|
241
|
-
},
|
|
242
238
|
},
|
|
243
239
|
};
|
|
244
240
|
</script>
|
|
@@ -270,7 +266,7 @@ export default {
|
|
|
270
266
|
:to="item.to"
|
|
271
267
|
:size="size"
|
|
272
268
|
:aria-current="getAriaCurrentAttr(index)"
|
|
273
|
-
:class="
|
|
269
|
+
:class="itemClass"
|
|
274
270
|
><template #default>
|
|
275
271
|
<gl-avatar
|
|
276
272
|
v-if="item.avatarPath"
|
|
@@ -2,6 +2,11 @@ export const dashboardConfigValidator = (config) => {
|
|
|
2
2
|
if (config.panels) {
|
|
3
3
|
if (!Array.isArray(config.panels)) return false;
|
|
4
4
|
if (!config.panels.every((panel) => panel.id && panel.gridAttributes)) return false;
|
|
5
|
+
|
|
6
|
+
// Validate that all panel IDs are unique
|
|
7
|
+
const panelIds = config.panels.map((panel) => panel.id);
|
|
8
|
+
const uniquePanelIds = new Set(panelIds);
|
|
9
|
+
if (panelIds.length !== uniquePanelIds.size) return false;
|
|
5
10
|
}
|
|
6
11
|
|
|
7
12
|
return true;
|