UNPKG

@gitlab/ui

Version:
114 lines (103 loc) 3.37 kB
import { BButton } from 'bootstrap-vue/esm/index.js'; import GlIcon from '../icon/icon'; import RelMixin from '../../mixins/rel_mixin'; import { newButtonCategoryOptions, newButtonVariantOptions, newButtonSizeOptions, newButtonSizeOptionsMap } from '../../../utils/constants'; import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js'; var script = { components: { BButton: BButton, GlIcon: GlIcon }, mixins: [RelMixin], props: { category: { type: String, required: false, default: newButtonCategoryOptions.tertiary, validator: function validator(value) { return Object.keys(newButtonCategoryOptions).includes(value); } }, variant: { type: String, required: false, default: newButtonVariantOptions.default, validator: function validator(value) { return Object.keys(newButtonVariantOptions).includes(value); } }, size: { type: String, required: false, default: newButtonSizeOptions.medium, validator: function validator(value) { return Object.keys(newButtonSizeOptions).includes(value); } }, selected: { type: Boolean, required: false, default: false }, icon: { type: String, required: false, default: '' }, label: { type: Boolean, required: false, default: false } }, computed: { hasIcon: function hasIcon() { return this.icon !== ''; }, hasIconOnly: function hasIconOnly() { return Object.keys(this.$slots).length === 0 && this.hasIcon; }, buttonClasses: function buttonClasses() { return { 'btn-icon': this.hasIconOnly, 'button-ellipsis-horizontal': this.hasIconOnly && this.icon === 'ellipsis_h', 'btn-secondary': this.category === newButtonCategoryOptions.secondary, 'new-gl-button': this.variant !== newButtonVariantOptions.link, 'btn-label': this.label, selected: this.selected }; }, buttonSize: function buttonSize() { return newButtonSizeOptionsMap[this.size]; } } }; /* script */ const __vue_script__ = script; /* template */ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',_vm._g(_vm._b({class:_vm.buttonClasses,attrs:{"rel":_vm.relType,"target":_vm.target,"variant":_vm.variant,"size":_vm.buttonSize}},'b-button',_vm.$attrs,false),_vm.$listeners),[(_vm.hasIcon)?_c('gl-icon',{attrs:{"name":_vm.icon}}):_vm._e(),_vm._v(" "),_vm._t("emoji"),_vm._v(" "),_vm._t("default")],2)}; var __vue_staticRenderFns__ = []; /* style */ const __vue_inject_styles__ = undefined; /* scoped */ const __vue_scope_id__ = undefined; /* module identifier */ const __vue_module_identifier__ = undefined; /* functional template */ const __vue_is_functional_template__ = false; /* style inject */ /* style inject SSR */ /* style inject shadow dom */ const __vue_component__ = __vue_normalize__( { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, false, undefined, undefined, undefined ); export default __vue_component__;