# 面板定制
面板可用于地图微件展示,也可用于内容区域微件展示,需要配置到应用全局配置中,面板需要处理微件的状态。 自定义面板时,可混入 PanelMixin。下面以默认为地图微件面板为例:
<template>
<div class="mp-map-widget-panel">
<mp-map-widget-card
v-for="widget in widgetsInPanel()"
:key="widget.uri"
:position="position"
:styles="styles"
:widget="widget"
:visible="isWidgetVisible(widget)"
@update:visible="updateWidgetVisible($event, widget)"
@update-widget-state="$emit('update-widget-state', $event)"
:z-index="isWidgetActive(widget) ? 2 : 1"
@mousedown.native.capture="onPanelClick(widget)"
/>
</div>
</template>
<script>
import { PanelMixin } from '../../mixins'
import MpMapWidgetCard from './MapWidgetCard.vue'
import WidgetManager from '../../managers/widget-manager'
export default {
// 组件名称,统一以"Mp"开头
name: 'MpMapWidgetPanel',
components: { MpMapWidgetCard },
mixins: [PanelMixin],
methods: {
onPanelClick(widget) {
this.activateWidget(widget)
}
}
}
</script>
<style lang="less" scoped></style>
提取所有在面板展示的 widgets,然后分别放置到不同的面板窗口中,并负责面板的激活、面板的开关以及面板的定位。