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

48 lines (42 loc) 1.31 kB
import { extend, mergeData } from '../../vue' import { NAME_CARD_IMG_LAZY } from '../../constants/components' import { keys, omit, sortKeys } from '../../utils/object' import { makePropsConfigurable } from '../../utils/props' import { props as BImgProps } from '../image/img' import { BImgLazy, props as BImgLazyProps } from '../image/img-lazy' import { props as BCardImgProps } from './card-img' // --- Props --- export const props = makePropsConfigurable( sortKeys({ ...omit(BImgLazyProps, keys(BImgProps)), ...omit(BCardImgProps, ['src', 'alt', 'width', 'height']) }), NAME_CARD_IMG_LAZY ) // --- Main component --- // @vue/component export const BCardImgLazy = /*#__PURE__*/ extend({ name: NAME_CARD_IMG_LAZY, functional: true, props, render(h, { props, data }) { let baseClass = 'card-img' if (props.top) { baseClass += '-top' } else if (props.right || props.end) { baseClass += '-right' } else if (props.bottom) { baseClass += '-bottom' } else if (props.left || props.start) { baseClass += '-left' } return h( BImgLazy, mergeData(data, { class: [baseClass], // Exclude `left` and `right` props before passing to `<b-img-lazy>` props: omit(props, ['left', 'right']) }) ) } })