12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { createVNode as _createVNode, mergeProps as _mergeProps, resolveDirective as _resolveDirective } from "vue";
- // Components
- import { makeVBarlineProps, VBarline } from "./VBarline.mjs";
- import { makeVTrendlineProps, VTrendline } from "./VTrendline.mjs"; // Composables
- import { useTextColor } from "../../composables/color.mjs"; // Utilities
- import { computed, toRef } from 'vue';
- import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
- // Types
- export const makeVSparklineProps = propsFactory({
- type: {
- type: String,
- default: 'trend'
- },
- ...makeVBarlineProps(),
- ...makeVTrendlineProps()
- }, 'VSparkline');
- export const VSparkline = genericComponent()({
- name: 'VSparkline',
- props: makeVSparklineProps(),
- setup(props, _ref) {
- let {
- slots
- } = _ref;
- const {
- textColorClasses,
- textColorStyles
- } = useTextColor(toRef(props, 'color'));
- const hasLabels = computed(() => {
- return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
- });
- const totalHeight = computed(() => {
- let height = parseInt(props.height, 10);
- if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5;
- return height;
- });
- useRender(() => {
- const Tag = props.type === 'trend' ? VTrendline : VBarline;
- const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props);
- return _createVNode(Tag, _mergeProps({
- "key": props.type,
- "class": textColorClasses.value,
- "style": textColorStyles.value,
- "viewBox": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}`
- }, lineProps), slots);
- });
- }
- });
- //# sourceMappingURL=VSparkline.mjs.map
|