quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
44 lines (34 loc) • 1.04 kB
JavaScript
import { h, computed, getCurrentInstance } from 'vue'
import useDark, {
useDarkProps
} from '../../composables/private.use-dark/use-dark.js'
import { createComponent } from '../../utils/private.create/create.js'
import { hSlot } from '../../utils/private.render/render.js'
export default createComponent({
name: 'QCard',
props: {
...useDarkProps,
tag: {
type: String,
default: 'div'
},
square: Boolean,
flat: Boolean,
bordered: Boolean
},
setup(props, { slots }) {
const {
proxy: { $q }
} = getCurrentInstance()
const isDark = useDark(props, $q)
const classes = computed(
() =>
'q-card' +
(isDark.value === true ? ' q-card--dark q-dark' : '') +
(props.bordered === true ? ' q-card--bordered' : '') +
(props.square === true ? ' q-card--square no-border-radius' : '') +
(props.flat === true ? ' q-card--flat no-shadow' : '')
)
return () => h(props.tag, { class: classes.value }, hSlot(slots.default))
}
})