bootstrap-vue
Version:
Quickly integrate Bootstrap 4 components with Vue.js
66 lines (59 loc) • 1.51 kB
JavaScript
import { mergeData } from "../../utils";
import InputGroupAddon from './input-group-addon';
export const props = {
id: {
type: String,
default: null
},
size: {
type: String,
default: null
},
left: {
type: String,
default: null
},
right: {
type: String,
default: null
},
tag: {
type: String,
default: 'div'
}
};
export default {
functional: true,
props: props,
render(h, { props, data, slots }) {
let childNodes = [];
// Left Slot / Prop
if (slots().left) {
childNodes.push(slots().left);
} else if (props.left) {
childNodes.push(h(InputGroupAddon, { domProps: { innerHTML: props.left } }))
}
// Default slot
childNodes.push(slots().default);
// Right slot / prop
if (slots().right) {
childNodes.push(slots().right);
} else if (props.left) {
childNodes.push(h(InputGroupAddon, { domProps: { innerHTML: props.right } }))
}
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
);
}
};