quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
45 lines (35 loc) • 1.19 kB
JavaScript
import { h, computed, provide, 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'
import { timelineKey } from '../../utils/private.symbols/symbols.js'
export default createComponent({
name: 'QTimeline',
props: {
...useDarkProps,
color: {
type: String,
default: 'primary'
},
side: {
type: String,
default: 'right',
validator: v => [ 'left', 'right' ].includes(v)
},
layout: {
type: String,
default: 'dense',
validator: v => [ 'dense', 'comfortable', 'loose' ].includes(v)
}
},
setup (props, { slots }) {
const vm = getCurrentInstance()
const isDark = useDark(props, vm.proxy.$q)
provide(timelineKey, props)
const classes = computed(() =>
`q-timeline q-timeline--${ props.layout } q-timeline--${ props.layout }--${ props.side }`
+ (isDark.value === true ? ' q-timeline--dark' : '')
)
return () => h('ul', { class: classes.value }, hSlot(slots.default))
}
})