UNPKG

bootstrap-vue

Version:

BootstrapVue provides one of the most comprehensive implementations of Bootstrap 4 components and grid system for Vue.js and with extensive and automated WAI-ARIA accessibility markup.

84 lines (74 loc) 1.61 kB
import { mergeData } from 'vue-functional-data-merge' import InputGroupPrepend from './input-group-prepend' import InputGroupAppend from './input-group-append' import InputGroupText from './input-group-text' export const props = { id: { type: String, default: null }, size: { type: String, default: null }, prepend: { type: String, default: null }, append: { type: String, default: null }, tag: { type: String, default: 'div' } } export default { functional: true, props: props, render (h, { props, data, slots }) { const $slots = slots() const childNodes = [] // Prepend prop if (props.prepend) { childNodes.push( h(InputGroupPrepend, [ h(InputGroupText, { domProps: { innerHTML: props.prepend } }) ]) ) } // Prepend slot if ($slots.prepend) { childNodes.push(h(InputGroupPrepend, $slots.prepend)) } // Default slot childNodes.push($slots.default) // Append prop if (props.append) { childNodes.push( h(InputGroupAppend, [ h(InputGroupText, { domProps: { innerHTML: props.append } }) ]) ) } // Append slot if ($slots.append) { childNodes.push(h(InputGroupAppend, $slots.append)) } return h( props.tag, mergeData(data, { staticClass: 'input-group', class: { [`input-group-${props.size}`]: Boolean(props.size) }, attrs: { id: props.id || null, role: 'group' } }), childNodes ) } }