@gitlab/ui 63.0.0 → 63.1.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 +7 -0
- package/dist/components/base/new_dropdowns/listbox/listbox.js +62 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/package.json +1 -1
- package/src/components/base/new_dropdowns/dropdown.scss +66 -0
- package/src/components/base/new_dropdowns/dropdown_item.scss +7 -2
- package/src/components/base/new_dropdowns/listbox/listbox.vue +80 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [63.1.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v63.0.0...v63.1.0) (2023-05-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **GlCollapsibleListbox:** Add overflow scrim ([55ef395](https://gitlab.com/gitlab-org/gitlab-ui/commit/55ef395c7f0c6960cee9b51bc436a0c3b339d2cc))
|
|
7
|
+
|
|
1
8
|
# [63.0.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v62.12.1...v63.0.0) (2023-05-17)
|
|
2
9
|
|
|
3
10
|
|
|
@@ -300,7 +300,9 @@ var script = {
|
|
|
300
300
|
toggleId: uniqueId('dropdown-toggle-btn-'),
|
|
301
301
|
listboxId: uniqueId('listbox-'),
|
|
302
302
|
nextFocusedItemIndex: null,
|
|
303
|
-
searchStr: ''
|
|
303
|
+
searchStr: '',
|
|
304
|
+
topBoundaryVisible: true,
|
|
305
|
+
bottomBoundaryVisible: true
|
|
304
306
|
};
|
|
305
307
|
},
|
|
306
308
|
computed: {
|
|
@@ -308,6 +310,15 @@ var script = {
|
|
|
308
310
|
if (this.items.length === 0 || isOption(this.items[0])) return 'ul';
|
|
309
311
|
return 'div';
|
|
310
312
|
},
|
|
313
|
+
listboxClasses() {
|
|
314
|
+
return {
|
|
315
|
+
'top-scrim-visible': !this.topBoundaryVisible,
|
|
316
|
+
'bottom-scrim-visible': !this.bottomBoundaryVisible
|
|
317
|
+
};
|
|
318
|
+
},
|
|
319
|
+
itemTag() {
|
|
320
|
+
return this.listboxTag === 'ul' ? 'li' : 'div';
|
|
321
|
+
},
|
|
311
322
|
flattenedOptions() {
|
|
312
323
|
return flattenedOptions(this.items);
|
|
313
324
|
},
|
|
@@ -370,6 +381,12 @@ var script = {
|
|
|
370
381
|
toggleClasses.push('gl-text-gray-500!');
|
|
371
382
|
}
|
|
372
383
|
return toggleClasses;
|
|
384
|
+
},
|
|
385
|
+
hasHeader() {
|
|
386
|
+
return this.headerText || this.searchable;
|
|
387
|
+
},
|
|
388
|
+
hasFooter() {
|
|
389
|
+
return Boolean(this.$scopedSlots.footer);
|
|
373
390
|
}
|
|
374
391
|
},
|
|
375
392
|
watch: {
|
|
@@ -386,6 +403,15 @@ var script = {
|
|
|
386
403
|
}
|
|
387
404
|
}
|
|
388
405
|
},
|
|
406
|
+
items: {
|
|
407
|
+
handler() {
|
|
408
|
+
this.$nextTick(() => {
|
|
409
|
+
/* Every time the list of items changes (on search),
|
|
410
|
+
* the observed elements are recreated, thus we need to start obesrving them again */
|
|
411
|
+
this.observeScroll();
|
|
412
|
+
});
|
|
413
|
+
}
|
|
414
|
+
},
|
|
389
415
|
...(process.env.NODE_ENV !== 'production' ? {
|
|
390
416
|
resetButtonLabel: {
|
|
391
417
|
immediate: true,
|
|
@@ -405,6 +431,13 @@ var script = {
|
|
|
405
431
|
}
|
|
406
432
|
} : {})
|
|
407
433
|
},
|
|
434
|
+
mounted() {
|
|
435
|
+
this.observeScroll();
|
|
436
|
+
},
|
|
437
|
+
beforeDestroy() {
|
|
438
|
+
var _this$scrollObserver;
|
|
439
|
+
(_this$scrollObserver = this.scrollObserver) === null || _this$scrollObserver === void 0 ? void 0 : _this$scrollObserver.disconnect();
|
|
440
|
+
},
|
|
408
441
|
methods: {
|
|
409
442
|
open() {
|
|
410
443
|
this.$refs.baseDropdown.open();
|
|
@@ -564,6 +597,33 @@ var script = {
|
|
|
564
597
|
'aria-posinset': index + 1
|
|
565
598
|
};
|
|
566
599
|
},
|
|
600
|
+
observeScroll() {
|
|
601
|
+
var _this$scrollObserver2;
|
|
602
|
+
const root = this.$refs.list;
|
|
603
|
+
const options = {
|
|
604
|
+
rootMargin: '8px',
|
|
605
|
+
root,
|
|
606
|
+
threshold: 1.0
|
|
607
|
+
};
|
|
608
|
+
(_this$scrollObserver2 = this.scrollObserver) === null || _this$scrollObserver2 === void 0 ? void 0 : _this$scrollObserver2.disconnect();
|
|
609
|
+
const observer = new IntersectionObserver(entries => {
|
|
610
|
+
entries.forEach(entry => {
|
|
611
|
+
var _entry$target;
|
|
612
|
+
this[(_entry$target = entry.target) === null || _entry$target === void 0 ? void 0 : _entry$target.$__visibilityProp] = entry.isIntersecting;
|
|
613
|
+
});
|
|
614
|
+
}, options);
|
|
615
|
+
const topBoundary = this.$refs['top-boundary'];
|
|
616
|
+
const bottomBoundary = this.$refs['bottom-boundary'];
|
|
617
|
+
if (topBoundary) {
|
|
618
|
+
topBoundary.$__visibilityProp = 'topBoundaryVisible';
|
|
619
|
+
observer.observe(topBoundary);
|
|
620
|
+
}
|
|
621
|
+
if (bottomBoundary) {
|
|
622
|
+
bottomBoundary.$__visibilityProp = 'bottomBoundaryVisible';
|
|
623
|
+
observer.observe(bottomBoundary);
|
|
624
|
+
}
|
|
625
|
+
this.scrollObserver = observer;
|
|
626
|
+
},
|
|
567
627
|
isOption
|
|
568
628
|
}
|
|
569
629
|
};
|
|
@@ -572,7 +632,7 @@ var script = {
|
|
|
572
632
|
const __vue_script__ = script;
|
|
573
633
|
|
|
574
634
|
/* template */
|
|
575
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:"baseDropdown",attrs:{"aria-haspopup":"listbox","aria-labelledby":_vm.toggleAriaLabelledBy,"block":_vm.block,"toggle-id":_vm.toggleId,"toggle-text":_vm.listboxToggleText,"toggle-class":_vm.toggleButtonClasses,"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,"popper-options":_vm.popperOptions,"fluid-width":_vm.fluidWidth},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.headerText)?_c('div',{staticClass:"gl-display-flex gl-align-items-center gl-p-4! gl-min-h-8",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:"gl-flex-grow-1 gl-font-weight-bold gl-font-sm gl-pr-2",attrs:{"id":_vm.headerId,"data-testid":"listbox-header-text"}},[_vm._v("\n "+_vm._s(_vm.headerText)+"\n ")]),_vm._v(" "),(_vm.showResetButton)?_c('gl-button',{staticClass:"gl-focus-inset-border-2-blue-400! gl-flex-shrink-0 gl-font-sm! gl-px-2! gl-py-2! gl-w-auto! gl-m-0!",attrs:{"category":"tertiary","data-testid":"listbox-reset-button"},on:{"click":_vm.onResetButtonClicked}},[_vm._v("\n "+_vm._s(_vm.resetButtonLabel)+"\n ")]):_vm._e()],1):_vm._e(),_vm._v(" "),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:"searchBox",attrs:{"aria-owns":_vm.listboxId,"data-testid":"listbox-search-input","placeholder":_vm.searchPlaceholder},on:{"input":_vm.search,"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:"searchStr"}}),_vm._v(" "),(_vm.searching)?_c('gl-loading-icon',{staticClass:"gl-my-3",attrs:{"data-testid":"listbox-search-loader","size":"md"}}):_vm._e()],1):_vm._e(),_vm._v(" "),(_vm.showList)?_c(_vm.listboxTag,{ref:"list",tag:"component",staticClass:"gl-new-dropdown-contents",attrs:{"id":_vm.listboxId,"aria-labelledby":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,"role":"listbox","tabindex":"-1"},on:{"keydown":_vm.onKeydown}},[_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{"data-testid":("listbox-item-" + (item.value)),"is-selected":_vm.isSelected(item),"is-focused":_vm.isFocused(item),"is-check-centered":_vm.isCheckCentered},on:{"select":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t("list-item",function(){return [_vm._v("\n "+_vm._s(item.text)+"\n ")]},{"item":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{"name":item.text,"text-sr-only":item.textSrOnly},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._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{"data-testid":("listbox-item-" + (option.value)),"is-selected":_vm.isSelected(option),"is-focused":_vm.isFocused(option),"is-check-centered":_vm.isCheckCentered},on:{"select":function($event){return _vm.onSelect(option, $event)}}},[_vm._t("list-item",function(){return [_vm._v("\n "+_vm._s(option.text)+"\n ")]},{"item":option})],2)})],2)]]}),_vm._v(" "),(_vm.infiniteScrollLoading)?_c(_vm.
|
|
635
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:"baseDropdown",attrs:{"aria-haspopup":"listbox","aria-labelledby":_vm.toggleAriaLabelledBy,"block":_vm.block,"toggle-id":_vm.toggleId,"toggle-text":_vm.listboxToggleText,"toggle-class":_vm.toggleButtonClasses,"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,"popper-options":_vm.popperOptions,"fluid-width":_vm.fluidWidth},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.headerText)?_c('div',{staticClass:"gl-display-flex gl-align-items-center gl-p-4! gl-min-h-8",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:"gl-flex-grow-1 gl-font-weight-bold gl-font-sm gl-pr-2",attrs:{"id":_vm.headerId,"data-testid":"listbox-header-text"}},[_vm._v("\n "+_vm._s(_vm.headerText)+"\n ")]),_vm._v(" "),(_vm.showResetButton)?_c('gl-button',{staticClass:"gl-focus-inset-border-2-blue-400! gl-flex-shrink-0 gl-font-sm! gl-px-2! gl-py-2! gl-w-auto! gl-m-0!",attrs:{"category":"tertiary","data-testid":"listbox-reset-button"},on:{"click":_vm.onResetButtonClicked}},[_vm._v("\n "+_vm._s(_vm.resetButtonLabel)+"\n ")]):_vm._e()],1):_vm._e(),_vm._v(" "),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:"searchBox",attrs:{"aria-owns":_vm.listboxId,"data-testid":"listbox-search-input","placeholder":_vm.searchPlaceholder},on:{"input":_vm.search,"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:"searchStr"}}),_vm._v(" "),(_vm.searching)?_c('gl-loading-icon',{staticClass:"gl-my-3",attrs:{"data-testid":"listbox-search-loader","size":"md"}}):_vm._e()],1):_vm._e(),_vm._v(" "),(_vm.showList)?_c(_vm.listboxTag,{ref:"list",tag:"component",staticClass:"gl-new-dropdown-contents gl-new-dropdown-contents-with-scrim-overlay",class:_vm.listboxClasses,attrs:{"id":_vm.listboxId,"aria-labelledby":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,"role":"listbox","tabindex":"-1"},on:{"keydown":_vm.onKeydown}},[_c(_vm.itemTag,{tag:"component",staticClass:"top-scrim-wrapper",attrs:{"aria-hidden":"true","data-testid":"top-scrim"}},[_c('div',{staticClass:"top-scrim",class:{ 'top-scrim-light': !_vm.hasHeader, 'top-scrim-dark': _vm.hasHeader }})]),_vm._v(" "),_c(_vm.itemTag,{ref:"top-boundary",tag:"component",attrs:{"aria-hidden":"true"}}),_vm._v(" "),_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{"data-testid":("listbox-item-" + (item.value)),"is-selected":_vm.isSelected(item),"is-focused":_vm.isFocused(item),"is-check-centered":_vm.isCheckCentered},on:{"select":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t("list-item",function(){return [_vm._v("\n "+_vm._s(item.text)+"\n ")]},{"item":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{"name":item.text,"text-sr-only":item.textSrOnly},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._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{"data-testid":("listbox-item-" + (option.value)),"is-selected":_vm.isSelected(option),"is-focused":_vm.isFocused(option),"is-check-centered":_vm.isCheckCentered},on:{"select":function($event){return _vm.onSelect(option, $event)}}},[_vm._t("list-item",function(){return [_vm._v("\n "+_vm._s(option.text)+"\n ")]},{"item":option})],2)})],2)]]}),_vm._v(" "),(_vm.infiniteScrollLoading)?_c(_vm.itemTag,{tag:"component"},[_c('gl-loading-icon',{staticClass:"gl-my-3",attrs:{"data-testid":"listbox-infinite-scroll-loader","size":"md"}})],1):_vm._e(),_vm._v(" "),(_vm.showIntersectionObserver)?_c('gl-intersection-observer',{on:{"appear":_vm.onIntersectionObserverAppear}}):_vm._e(),_vm._v(" "),_c(_vm.itemTag,{ref:"bottom-boundary",tag:"component",attrs:{"aria-hidden":"true"}}),_vm._v(" "),_c(_vm.itemTag,{tag:"component",staticClass:"bottom-scrim-wrapper",attrs:{"aria-hidden":"true","data-testid":"bottom-scrim"}},[_c('div',{staticClass:"bottom-scrim",class:{ 'gl-rounded-0!': _vm.hasFooter }})])],2):_vm._e(),_vm._v(" "),(_vm.announceSRSearchResults)?_c('span',{staticClass:"gl-sr-only",attrs:{"data-testid":"listbox-number-of-results","aria-live":"assertive"}},[_vm._t("search-summary-sr-only")],2):(_vm.showNoResultsText)?_c('div',{staticClass:"gl-pl-7 gl-pr-5 gl-py-3 gl-font-base gl-text-gray-600",attrs:{"aria-live":"assertive","data-testid":"listbox-no-results-text"}},[_vm._v("\n "+_vm._s(_vm.noResultsText)+"\n ")]):_vm._e(),_vm._v(" "),_vm._t("footer")],2)};
|
|
576
636
|
var __vue_staticRenderFns__ = [];
|
|
577
637
|
|
|
578
638
|
/* style */
|