UNPKG

kui-vue

Version:

A lightweight desktop UI component library suitable for Vue.js 2.

55 lines (47 loc) 1.29 kB
import { withInstall } from "../utils/vue"; import { defineComponent, ref, provide, onUnmounted } from "vue"; import newInstance from "./instance"; const ImageGroup = defineComponent({ name: "ImageGroup", props: { data: Array, }, setup(props, { emit, slots, expose }) { const data = ref(props.data || []); const preview = ref(); const show = (options) => { if (!preview.value) { options.props.data = data.value; preview.value = newInstance({ ...options }); } preview.value.show(options); }; const togglePanel = () => { if (preview.value) { preview.value.togglePanel(); } }; const register = (item) => { data.value.push(item); }; const unregister = (item) => { const index = data.value.indexOf(item); if (index >= 0) { data.value.splice(index, 1); } }; provide("ImageGroup", { show, register, unregister, data, togglePanel }); const destroy = () => { if (preview.value) { document.body.removeChild(preview.value.$el); } }; onUnmounted(() => { destroy(); }); return () => { return <div class="k-image-group">{slots.default?.()}</div>; }; }, }); export default withInstall(ImageGroup);