UNPKG

bootstrap-vue

Version:

With more than 85 components, over 45 available plugins, several directives, and 1000+ icons, BootstrapVue provides one of the most comprehensive implementations of the Bootstrap v4 component and grid system available for Vue.js v2.6, complete with extens

43 lines (35 loc) 1.24 kB
import { extend } from '../../vue' import { NAME_FORM_DATALIST } from '../../constants/components' import { PROP_TYPE_STRING } from '../../constants/props' import { htmlOrText } from '../../utils/html' import { sortKeys } from '../../utils/object' import { makeProp, makePropsConfigurable } from '../../utils/props' import { formOptionsMixin, props as formOptionsProps } from '../../mixins/form-options' import { normalizeSlotMixin } from '../../mixins/normalize-slot' // --- Props --- export const props = makePropsConfigurable( sortKeys({ ...formOptionsProps, id: makeProp(PROP_TYPE_STRING, undefined, true) // Required }), NAME_FORM_DATALIST ) // --- Main component --- // @vue/component export const BFormDatalist = /*#__PURE__*/ extend({ name: NAME_FORM_DATALIST, mixins: [formOptionsMixin, normalizeSlotMixin], props, render(h) { const { id } = this const $options = this.formOptions.map((option, index) => { const { value, text, html, disabled } = option return h('option', { attrs: { value, disabled }, domProps: htmlOrText(html, text), key: `option_${index}` }) }) return h('datalist', { attrs: { id } }, [$options, this.normalizeSlot()]) } })