@gitlab/ui 128.14.3 → 128.15.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/form/form_checkbox/form_checkbox.js +15 -1
- package/dist/components/base/form/form_checkbox/form_checkbox_group.js +5 -0
- package/dist/components/base/new_dropdowns/listbox/listbox.js +43 -24
- package/dist/components/base/new_dropdowns/listbox/listbox_item.js +17 -1
- package/dist/components/base/new_dropdowns/listbox/mock_data.js +15 -5
- package/dist/index.css +2 -2
- package/dist/index.css.map +1 -1
- package/dist/tokens/build/js/tokens.js +1 -1
- package/package.json +3 -3
- package/src/components/base/form/form_checkbox/form_checkbox.vue +17 -1
- package/src/components/base/form/form_checkbox/form_checkbox_group.vue +7 -0
- package/src/components/base/new_dropdowns/dropdown_item.scss +31 -11
- package/src/components/base/new_dropdowns/listbox/listbox.vue +46 -20
- package/src/components/base/new_dropdowns/listbox/listbox_item.vue +20 -1
- package/src/components/base/new_dropdowns/listbox/mock_data.js +11 -0
- package/src/tokens/build/css/tokens.css +1 -1
- package/src/tokens/build/css/tokens.dark.css +1 -1
- package/src/tokens/build/docs/tokens-tailwind-docs.dark.json +3 -3
- package/src/tokens/build/docs/tokens-tailwind-docs.json +4 -4
- package/src/tokens/build/figma/constants.dark.json +1 -1
- package/src/tokens/build/figma/constants.json +1 -1
- package/src/tokens/build/figma/mode.dark.json +4 -2
- package/src/tokens/build/figma/mode.json +4 -2
- package/src/tokens/build/js/tokens.js +1 -1
- package/src/tokens/build/json/tokens.dark.json +9 -5
- package/src/tokens/build/json/tokens.json +10 -6
- package/src/tokens/build/scss/_tokens.dark.scss +1 -1
- package/src/tokens/build/scss/_tokens.scss +1 -1
- package/src/tokens/constant/border.tokens.json +1 -1
- package/src/tokens/semantic/control.tokens.json +4 -1
- package/src/tokens/semantic/heading.tokens.json +3 -1
|
@@ -213,6 +213,11 @@ var script = {
|
|
|
213
213
|
},
|
|
214
214
|
computedLocalCheckedWatcher(newValue, oldValue) {
|
|
215
215
|
if (!looseEqual(newValue, oldValue)) {
|
|
216
|
+
/**
|
|
217
|
+
* Emitted when checked state is changed.
|
|
218
|
+
*
|
|
219
|
+
* @event input
|
|
220
|
+
*/
|
|
216
221
|
this.$emit('input', newValue);
|
|
217
222
|
const {
|
|
218
223
|
input
|
|
@@ -252,11 +257,20 @@ var script = {
|
|
|
252
257
|
|
|
253
258
|
// Fire events in a `$nextTick()` to ensure the `v-model` is updated
|
|
254
259
|
this.$nextTick(() => {
|
|
255
|
-
|
|
260
|
+
/**
|
|
261
|
+
* Emitted when selected value(s) is changed due to user interaction.
|
|
262
|
+
*
|
|
263
|
+
* @event change
|
|
264
|
+
*/
|
|
256
265
|
this.$emit('change', localChecked);
|
|
257
266
|
|
|
258
267
|
// If this is a child of a group, we emit a change event on it as well
|
|
259
268
|
if (this.isGroup) {
|
|
269
|
+
/**
|
|
270
|
+
* Emitted when selected value(s) is changed due to user interaction.
|
|
271
|
+
*
|
|
272
|
+
* @event change
|
|
273
|
+
*/
|
|
260
274
|
this.group.$emit('change', localChecked);
|
|
261
275
|
}
|
|
262
276
|
this.$emit('indeterminate', indeterminate);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import clamp from 'lodash/clamp';
|
|
2
2
|
import uniqueId from 'lodash/uniqueId';
|
|
3
3
|
import { logWarning, stopEvent } from '../../../../utils/utils';
|
|
4
|
-
import { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS,
|
|
4
|
+
import { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, ENTER, ARROW_DOWN, ARROW_UP, END, HOME } from '../constants';
|
|
5
5
|
import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';
|
|
6
6
|
import GlButton from '../../button/button';
|
|
7
7
|
import GlLoadingIcon from '../../loading_icon/loading_icon';
|
|
@@ -569,10 +569,10 @@ var script = {
|
|
|
569
569
|
|
|
570
570
|
/**
|
|
571
571
|
* Every time the list of items changes, and there is a search string,
|
|
572
|
-
* we want to visually highlight the first item
|
|
572
|
+
* we want to visually highlight the first enabled item
|
|
573
573
|
*/
|
|
574
574
|
if (this.searchHasOptions) {
|
|
575
|
-
this.nextFocusedItemIndex =
|
|
575
|
+
this.nextFocusedItemIndex = this.getFirstEnabledIndex();
|
|
576
576
|
} else {
|
|
577
577
|
this.nextFocusedItemIndex = null;
|
|
578
578
|
}
|
|
@@ -637,17 +637,20 @@ var script = {
|
|
|
637
637
|
this.focusSearchInput();
|
|
638
638
|
|
|
639
639
|
/**
|
|
640
|
-
* If the search string is not empty, highlight the first item
|
|
640
|
+
* If the search string is not empty, highlight the first enabled item
|
|
641
641
|
*/
|
|
642
642
|
if (this.searchHasOptions) {
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
643
|
+
const firstEnabledIndex = this.getFirstEnabledIndex();
|
|
644
|
+
this.nextFocusedItemIndex = firstEnabledIndex;
|
|
645
|
+
// Set activeItemId for the first enabled item
|
|
646
|
+
const firstItem = this.flattenedOptions[firstEnabledIndex];
|
|
646
647
|
this.activeItemId = this.generateItemId(firstItem);
|
|
647
648
|
}
|
|
648
649
|
} else {
|
|
649
|
-
var _this$
|
|
650
|
-
|
|
650
|
+
var _this$flattenedOption2;
|
|
651
|
+
const selectedIndex = this.selectedIndices[0];
|
|
652
|
+
const initialIndex = selectedIndex !== undefined && !((_this$flattenedOption2 = this.flattenedOptions[selectedIndex]) !== null && _this$flattenedOption2 !== void 0 && _this$flattenedOption2.disabled) ? selectedIndex : this.getFirstEnabledIndex();
|
|
653
|
+
this.focusItem(initialIndex, this.getFocusableListItemElements());
|
|
651
654
|
}
|
|
652
655
|
/**
|
|
653
656
|
* Emitted when dropdown is shown
|
|
@@ -668,13 +671,24 @@ var script = {
|
|
|
668
671
|
this.$emit('blur', event);
|
|
669
672
|
},
|
|
670
673
|
getNextIndex(currentIndex, keyCode, totalLength) {
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
+
const direction = keyCode === ARROW_UP ? -1 : 1;
|
|
675
|
+
let nextIndex = currentIndex;
|
|
676
|
+
for (let i = 0; i < totalLength; i += 1) {
|
|
677
|
+
var _this$flattenedOption3;
|
|
678
|
+
nextIndex += direction;
|
|
679
|
+
if (nextIndex < 0) nextIndex = totalLength - 1;
|
|
680
|
+
if (nextIndex >= totalLength) nextIndex = 0;
|
|
681
|
+
if (!((_this$flattenedOption3 = this.flattenedOptions[nextIndex]) !== null && _this$flattenedOption3 !== void 0 && _this$flattenedOption3.disabled)) {
|
|
682
|
+
return nextIndex;
|
|
683
|
+
}
|
|
674
684
|
}
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
685
|
+
return currentIndex;
|
|
686
|
+
},
|
|
687
|
+
getFirstEnabledIndex() {
|
|
688
|
+
return this.flattenedOptions.findIndex(item => !item.disabled);
|
|
689
|
+
},
|
|
690
|
+
getLastEnabledIndex() {
|
|
691
|
+
return this.flattenedOptions.findLastIndex(item => !item.disabled);
|
|
678
692
|
},
|
|
679
693
|
handleListNavigation(keyCode, elements) {
|
|
680
694
|
var _this$nextFocusedItem;
|
|
@@ -693,15 +707,15 @@ var script = {
|
|
|
693
707
|
let stop = true;
|
|
694
708
|
switch (code) {
|
|
695
709
|
case HOME:
|
|
696
|
-
// Jump to first item if searchable or not in search input
|
|
710
|
+
// Jump to first enabled item if searchable or not in search input
|
|
697
711
|
if (this.searchable || !isSearchInput) {
|
|
698
|
-
this.focusItem(
|
|
712
|
+
this.focusItem(this.getFirstEnabledIndex(), elements, this.searchable);
|
|
699
713
|
}
|
|
700
714
|
break;
|
|
701
715
|
case END:
|
|
702
|
-
// Jump to last item if searchable or not in search input
|
|
716
|
+
// Jump to last enabled item if searchable or not in search input
|
|
703
717
|
if (this.searchable || !isSearchInput) {
|
|
704
|
-
this.focusItem(
|
|
718
|
+
this.focusItem(this.getLastEnabledIndex(), elements, this.searchable);
|
|
705
719
|
}
|
|
706
720
|
break;
|
|
707
721
|
case ARROW_UP:
|
|
@@ -712,19 +726,21 @@ var script = {
|
|
|
712
726
|
this.handleListNavigation(ARROW_UP, elements);
|
|
713
727
|
break;
|
|
714
728
|
case ARROW_DOWN:
|
|
715
|
-
// Focus first item from search input, otherwise navigate down
|
|
729
|
+
// Focus first enabled item from search input, otherwise navigate down
|
|
716
730
|
if (isSearchInput && !this.searchable) {
|
|
717
|
-
this.focusItem(
|
|
731
|
+
this.focusItem(this.getFirstEnabledIndex(), elements);
|
|
718
732
|
} else {
|
|
719
733
|
this.handleListNavigation(ARROW_DOWN, elements);
|
|
720
734
|
}
|
|
721
735
|
break;
|
|
722
736
|
case ENTER:
|
|
723
737
|
if (isSearchInput) {
|
|
724
|
-
// Toggle selection of highlighted item if one exists
|
|
738
|
+
// Toggle selection of highlighted item if one exists and is not disabled
|
|
725
739
|
if (elements.length > 0 && this.nextFocusedItemIndex !== null) {
|
|
726
740
|
const highlightedItem = this.flattenedOptions[this.nextFocusedItemIndex];
|
|
727
|
-
|
|
741
|
+
if (!(highlightedItem !== null && highlightedItem !== void 0 && highlightedItem.disabled)) {
|
|
742
|
+
this.onSelect(highlightedItem, !this.isSelected(highlightedItem));
|
|
743
|
+
}
|
|
728
744
|
}
|
|
729
745
|
} else {
|
|
730
746
|
stop = false;
|
|
@@ -794,6 +810,9 @@ var script = {
|
|
|
794
810
|
isFocused(item) {
|
|
795
811
|
return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);
|
|
796
812
|
},
|
|
813
|
+
isDisabled(item) {
|
|
814
|
+
return item.disabled;
|
|
815
|
+
},
|
|
797
816
|
onSingleSelect(value, isSelected) {
|
|
798
817
|
if (isSelected) {
|
|
799
818
|
/**
|
|
@@ -934,7 +953,7 @@ const __vue_script__ = script;
|
|
|
934
953
|
/* template */
|
|
935
954
|
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","active-item-id":_vm.activeItemId,"aria-labelledby":_vm.toggleAriaLabelledBy,"block":_vm.block,"has-searchable-listbox":_vm.searchable,"has-external-label":_vm.isInFormGroup,"listbox-id":_vm.listboxIdComputed,"state":_vm.state,"toggle-id":_vm.toggleIdComputed,"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,"offset":_vm.dropdownOffset,"fluid-width":_vm.fluidWidth,"panel-match-trigger-width":_vm.panelMatchTriggerWidth,"positioning-strategy":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_FOCUS_CONTENT,_vm.onFocusContent,_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(slotProps){return [_vm._t("toggle",null,null,slotProps)]}}:null,{key:"default",fn:function(ref){
|
|
936
955
|
var visible = ref.visible;
|
|
937
|
-
return [(_vm.headerText)?_c('div',{staticClass:"gl-flex gl-min-h-8 gl-items-center !gl-p-4",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong",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-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset",attrs:{"category":"tertiary","size":"small","data-testid":"listbox-reset-button"},on:{"click":_vm.onResetButtonClicked}},[_vm._v("\n "+_vm._s(_vm.resetButtonLabel)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset",attrs:{"category":"tertiary","size":"small","data-testid":"listbox-select-all-button"},on:{"click":_vm.onSelectAllButtonClicked}},[_vm._v("\n "+_vm._s(_vm.showSelectAllButtonLabel)+"\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",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{"id":_vm.searchInputId,"data-testid":"listbox-search-input","role":"combobox","aria-expanded":String(visible),"aria-controls":_vm.listboxId,"aria-activedescendant":_vm.activeItemId,"aria-haspopup":"listbox","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-busy":_vm.isBusy,"aria-labelledby":_vm.listboxAriaLabelledByID,"aria-multiselectable":_vm.multiple ? 'true' : undefined,"role":"listbox","tabindex":"0"},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:_vm.listboxItemKey(item),attrs:{"id":_vm.generateItemId(item),"data-testid":("listbox-item-" + (item.value)),"is-highlighted":_vm.isHighlighted(item),"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:_vm.listboxItemKey(option),attrs:{"id":_vm.generateItemId(option),"data-testid":("listbox-item-" + (option.value)),"is-highlighted":_vm.isHighlighted(option),"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-none': _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",function(){return [_vm._v("\n "+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+"\n ")]})],2):_vm._e(),_vm._v(" "),(_vm.isBusy)?_c('span',{staticClass:"gl-sr-only",attrs:{"aria-live":"polite","data-testid":"listbox-loading-announcement"}},[_vm._v("\n "+_vm._s(_vm.loadingAnnouncementText)+"\n ")]):(_vm.showNoResultsText)?_c('div',{staticClass:"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle",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")]}}],null,true)})};
|
|
956
|
+
return [(_vm.headerText)?_c('div',{staticClass:"gl-flex gl-min-h-8 gl-items-center !gl-p-4",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong",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-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset",attrs:{"category":"tertiary","size":"small","data-testid":"listbox-reset-button"},on:{"click":_vm.onResetButtonClicked}},[_vm._v("\n "+_vm._s(_vm.resetButtonLabel)+"\n ")]):_vm._e(),_vm._v(" "),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-focus-inset",attrs:{"category":"tertiary","size":"small","data-testid":"listbox-select-all-button"},on:{"click":_vm.onSelectAllButtonClicked}},[_vm._v("\n "+_vm._s(_vm.showSelectAllButtonLabel)+"\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",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{"id":_vm.searchInputId,"data-testid":"listbox-search-input","role":"combobox","aria-expanded":String(visible),"aria-controls":_vm.listboxId,"aria-activedescendant":_vm.activeItemId,"aria-haspopup":"listbox","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-busy":_vm.isBusy,"aria-labelledby":_vm.listboxAriaLabelledByID,"aria-multiselectable":_vm.multiple ? 'true' : undefined,"role":"listbox","tabindex":"0"},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:_vm.listboxItemKey(item),attrs:{"id":_vm.generateItemId(item),"data-testid":("listbox-item-" + (item.value)),"is-highlighted":_vm.isHighlighted(item),"is-selected":_vm.isSelected(item),"is-focused":_vm.isFocused(item),"is-check-centered":_vm.isCheckCentered,"is-disabled":_vm.isDisabled(item)},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:_vm.listboxItemKey(option),attrs:{"id":_vm.generateItemId(option),"data-testid":("listbox-item-" + (option.value)),"is-highlighted":_vm.isHighlighted(option),"is-selected":_vm.isSelected(option),"is-focused":_vm.isFocused(option),"is-check-centered":_vm.isCheckCentered,"is-disabled":_vm.isDisabled(option)},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-none': _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",function(){return [_vm._v("\n "+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+"\n ")]})],2):_vm._e(),_vm._v(" "),(_vm.isBusy)?_c('span',{staticClass:"gl-sr-only",attrs:{"aria-live":"polite","data-testid":"listbox-loading-announcement"}},[_vm._v("\n "+_vm._s(_vm.loadingAnnouncementText)+"\n ")]):(_vm.showNoResultsText)?_c('div',{staticClass:"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle",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")]}}],null,true)})};
|
|
938
957
|
var __vue_staticRenderFns__ = [];
|
|
939
958
|
|
|
940
959
|
/* style */
|
|
@@ -28,6 +28,11 @@ var script = {
|
|
|
28
28
|
type: Boolean,
|
|
29
29
|
default: false,
|
|
30
30
|
required: false
|
|
31
|
+
},
|
|
32
|
+
isDisabled: {
|
|
33
|
+
type: Boolean,
|
|
34
|
+
default: false,
|
|
35
|
+
required: false
|
|
31
36
|
}
|
|
32
37
|
},
|
|
33
38
|
computed: {
|
|
@@ -39,7 +44,13 @@ var script = {
|
|
|
39
44
|
}
|
|
40
45
|
},
|
|
41
46
|
methods: {
|
|
47
|
+
onMousedown(event) {
|
|
48
|
+
if (this.isDisabled) {
|
|
49
|
+
stopEvent(event);
|
|
50
|
+
}
|
|
51
|
+
},
|
|
42
52
|
toggleSelection() {
|
|
53
|
+
if (this.isDisabled) return;
|
|
43
54
|
this.$emit('select', !this.isSelected);
|
|
44
55
|
},
|
|
45
56
|
onKeydown(event) {
|
|
@@ -58,7 +69,12 @@ var script = {
|
|
|
58
69
|
const __vue_script__ = script;
|
|
59
70
|
|
|
60
71
|
/* template */
|
|
61
|
-
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:[
|
|
72
|
+
var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:[
|
|
73
|
+
'gl-new-dropdown-item',
|
|
74
|
+
{
|
|
75
|
+
'gl-new-dropdown-item-highlighted': _vm.isHighlighted,
|
|
76
|
+
disabled: _vm.isDisabled,
|
|
77
|
+
} ],attrs:{"role":"option","tabindex":_vm.isFocused ? 0 : -1,"aria-selected":_vm.isSelected,"aria-disabled":_vm.isDisabled},on:{"mousedown":_vm.onMousedown,"click":_vm.toggleSelection,"keydown":_vm.onKeydown}},[_c('span',{staticClass:"gl-new-dropdown-item-content"},[_c('gl-icon',{class:[
|
|
62
78
|
'gl-new-dropdown-item-check-icon',
|
|
63
79
|
{ 'gl-invisible': !_vm.isSelected },
|
|
64
80
|
_vm.checkedClasses ],attrs:{"name":"mobile-issue-close","data-testid":"dropdown-item-checkbox"}}),_vm._v(" "),_c('span',{staticClass:"gl-new-dropdown-item-text-wrapper"},[_vm._t("default")],2)],1)])};
|
|
@@ -9,19 +9,23 @@ const mockOptions = [{
|
|
|
9
9
|
text: 'Finance'
|
|
10
10
|
}, {
|
|
11
11
|
value: 'leg',
|
|
12
|
-
text: 'Legal'
|
|
12
|
+
text: 'Legal',
|
|
13
|
+
disabled: true
|
|
13
14
|
}, {
|
|
14
15
|
value: 'eng',
|
|
15
|
-
text: 'Engineering'
|
|
16
|
+
text: 'Engineering',
|
|
17
|
+
disabled: true
|
|
16
18
|
}, {
|
|
17
19
|
value: 'sales',
|
|
18
|
-
text: 'Sales'
|
|
20
|
+
text: 'Sales',
|
|
21
|
+
disabled: false
|
|
19
22
|
}, {
|
|
20
23
|
value: 'marketing',
|
|
21
24
|
text: 'Marketing'
|
|
22
25
|
}, {
|
|
23
26
|
value: 'acc',
|
|
24
|
-
text: 'Accounting'
|
|
27
|
+
text: 'Accounting',
|
|
28
|
+
disabled: true
|
|
25
29
|
}, {
|
|
26
30
|
value: 'hr',
|
|
27
31
|
text: 'Human Resource Management'
|
|
@@ -36,7 +40,8 @@ const mockOptions = [{
|
|
|
36
40
|
text: 'Support'
|
|
37
41
|
}, {
|
|
38
42
|
value: null,
|
|
39
|
-
text: 'None'
|
|
43
|
+
text: 'None',
|
|
44
|
+
disabled: true
|
|
40
45
|
}];
|
|
41
46
|
const mockOptionsValues = mockOptions.map(_ref => {
|
|
42
47
|
let {
|
|
@@ -111,6 +116,11 @@ const mockUsers = [{
|
|
|
111
116
|
text: 'Olena Horal-Koretska',
|
|
112
117
|
secondaryText: '@ohoral',
|
|
113
118
|
icon: 'bar'
|
|
119
|
+
}, {
|
|
120
|
+
value: 'jdoe',
|
|
121
|
+
text: 'Jane Doe',
|
|
122
|
+
secondaryText: '@jdoe',
|
|
123
|
+
disabled: true
|
|
114
124
|
}, {
|
|
115
125
|
value: 'markian',
|
|
116
126
|
text: 'Mark Florian',
|