UNPKG

vuetify

Version:

Vue Material Component Framework

72 lines (71 loc) 2.57 kB
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode } from "vue"; // Styles import "./VDivider.css"; // Composables import { useTextColor } from "../../composables/color.js"; import { makeComponentProps } from "../../composables/component.js"; import { makeThemeProps, provideTheme } from "../../composables/theme.js"; // Utilities import { computed } from 'vue'; import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.js"; export const makeVDividerProps = propsFactory({ color: String, inset: Boolean, length: [Number, String], opacity: [Number, String], thickness: [Number, String], vertical: Boolean, ...makeComponentProps(), ...makeThemeProps() }, 'VDivider'); export const VDivider = genericComponent()({ name: 'VDivider', props: makeVDividerProps(), setup(props, _ref) { let { attrs, slots } = _ref; const { themeClasses } = provideTheme(props); const { textColorClasses, textColorStyles } = useTextColor(() => props.color); const dividerStyles = computed(() => { const styles = {}; if (props.length) { styles[props.vertical ? 'height' : 'width'] = convertToUnit(props.length); } if (props.thickness) { styles[props.vertical ? 'borderRightWidth' : 'borderTopWidth'] = convertToUnit(props.thickness); } return styles; }); useRender(() => { const divider = _createElementVNode("hr", { "class": _normalizeClass([{ 'v-divider': true, 'v-divider--inset': props.inset, 'v-divider--vertical': props.vertical }, themeClasses.value, textColorClasses.value, props.class]), "style": _normalizeStyle([dividerStyles.value, textColorStyles.value, { '--v-border-opacity': props.opacity }, props.style]), "aria-orientation": !attrs.role || attrs.role === 'separator' ? props.vertical ? 'vertical' : 'horizontal' : undefined, "role": `${attrs.role || 'separator'}` }, null); if (!slots.default) return divider; return _createElementVNode("div", { "class": _normalizeClass(['v-divider__wrapper', { 'v-divider__wrapper--vertical': props.vertical, 'v-divider__wrapper--inset': props.inset }]) }, [divider, _createElementVNode("div", { "class": "v-divider__content" }, [slots.default()]), divider]); }); return {}; } }); //# sourceMappingURL=VDivider.js.map