import { PortletPartController } from '@ibiz-template/controller'; import { useNamespace } from '@ibiz-template/vue-util'; import { computed, defineComponent } from 'vue'; import './portlet-layout.scss'; /** * 门户控件布局 */ export const PortletLayout = defineComponent({ props: { controller: { type: PortletPartController, required: true, }, }, setup(props) { const ns = useNamespace('portlet-layout'); const c = props.controller; // 处理标题 const isShowHeader = computed(() => { // return c.model.showTitleBar || c.model.actionGroup; return c.model.showTitleBar; }); // 点击工具栏处理 // const onActionClick = async ( // detail: IPSUIActionGroupDetail, // event: MouseEvent, // ) => { // await props.controller.onActionClick(detail, event); // }; return { ns, isShowHeader }; }, render() { const { model } = this.$props.controller; return ( <div class={[this.ns.b(), this.ns.is('no-header', !this.isShowHeader)]}> {this.isShowHeader && ( <div key='header' class={this.ns.b('header')}> <div class={this.ns.be('header', 'left')}> {model.showTitleBar && ( <div class={this.ns.e('caption')}> <app-icon class={this.ns.e('caption-icon')} icon={model.source.getPSSysImage()} ></app-icon> <span class={this.ns.e('caption-text')} title={model.title}> {model.title} </span> </div> )} </div> {/* <div class={this.ns.be('header', 'right')}> {model.actionGroup && ( <action-toolbar class={this.ns.e('toolbar')} action-details={this.controller.model.uiActionGroupDetails} actions-state={state.actionGroupState} onActionClick={this.onActionClick} ></action-toolbar> )} </div> */} </div> )} <div key='content' class={this.ns.b('content')}> {this.$slots.default} </div> </div> ); }, });