83 lines
2.6 KiB
JavaScript
83 lines
2.6 KiB
JavaScript
|
import { createVNode as _createVNode } from "vue";
|
||
|
// Styles
|
||
|
import "./VDatePickerHeader.css";
|
||
|
|
||
|
// Components
|
||
|
import { VBtn } from "../VBtn/index.mjs";
|
||
|
import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs"; // Composables
|
||
|
import { useBackgroundColor } from "../../composables/color.mjs";
|
||
|
import { MaybeTransition } from "../../composables/transition.mjs"; // Utilities
|
||
|
import { EventProp, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // Types
|
||
|
export const makeVDatePickerHeaderProps = propsFactory({
|
||
|
appendIcon: String,
|
||
|
color: String,
|
||
|
header: String,
|
||
|
transition: String,
|
||
|
onClick: EventProp()
|
||
|
}, 'VDatePickerHeader');
|
||
|
export const VDatePickerHeader = genericComponent()({
|
||
|
name: 'VDatePickerHeader',
|
||
|
props: makeVDatePickerHeaderProps(),
|
||
|
emits: {
|
||
|
click: () => true,
|
||
|
'click:append': () => true
|
||
|
},
|
||
|
setup(props, _ref) {
|
||
|
let {
|
||
|
emit,
|
||
|
slots
|
||
|
} = _ref;
|
||
|
const {
|
||
|
backgroundColorClasses,
|
||
|
backgroundColorStyles
|
||
|
} = useBackgroundColor(props, 'color');
|
||
|
function onClick() {
|
||
|
emit('click');
|
||
|
}
|
||
|
function onClickAppend() {
|
||
|
emit('click:append');
|
||
|
}
|
||
|
useRender(() => {
|
||
|
const hasContent = !!(slots.default || props.header);
|
||
|
const hasAppend = !!(slots.append || props.appendIcon);
|
||
|
return _createVNode("div", {
|
||
|
"class": ['v-date-picker-header', {
|
||
|
'v-date-picker-header--clickable': !!props.onClick
|
||
|
}, backgroundColorClasses.value],
|
||
|
"style": backgroundColorStyles.value,
|
||
|
"onClick": onClick
|
||
|
}, [slots.prepend && _createVNode("div", {
|
||
|
"key": "prepend",
|
||
|
"class": "v-date-picker-header__prepend"
|
||
|
}, [slots.prepend()]), hasContent && _createVNode(MaybeTransition, {
|
||
|
"key": "content",
|
||
|
"name": props.transition
|
||
|
}, {
|
||
|
default: () => [_createVNode("div", {
|
||
|
"key": props.header,
|
||
|
"class": "v-date-picker-header__content"
|
||
|
}, [slots.default?.() ?? props.header])]
|
||
|
}), hasAppend && _createVNode("div", {
|
||
|
"class": "v-date-picker-header__append"
|
||
|
}, [!slots.append ? _createVNode(VBtn, {
|
||
|
"key": "append-btn",
|
||
|
"icon": props.appendIcon,
|
||
|
"variant": "text",
|
||
|
"onClick": onClickAppend
|
||
|
}, null) : _createVNode(VDefaultsProvider, {
|
||
|
"key": "append-defaults",
|
||
|
"disabled": !props.appendIcon,
|
||
|
"defaults": {
|
||
|
VBtn: {
|
||
|
icon: props.appendIcon,
|
||
|
variant: 'text'
|
||
|
}
|
||
|
}
|
||
|
}, {
|
||
|
default: () => [slots.append?.()]
|
||
|
})])]);
|
||
|
});
|
||
|
return {};
|
||
|
}
|
||
|
});
|
||
|
//# sourceMappingURL=VDatePickerHeader.mjs.map
|