mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-13 01:21:58 +00:00
Merge branch 'preset-vision/0.9.0' of gitlab.alibaba-inc.com:ali-lowcode/ali-lowcode-engine into preset-vision/0.9.0
This commit is contained in:
commit
9278ab202e
@ -1,5 +1,5 @@
|
||||
import { EventEmitter } from 'events';
|
||||
import { autorun, Reaction, untracked } from '@ali/lowcode-editor-core';
|
||||
import { autorun, Reaction, untracked, globalContext, Editor } from '@ali/lowcode-editor-core';
|
||||
import { NodeSchema } from '@ali/lowcode-types';
|
||||
|
||||
// TODO: cache to localStorage
|
||||
@ -114,6 +114,11 @@ export class History {
|
||||
}
|
||||
const cursor = this.session.cursor - 1;
|
||||
this.go(cursor);
|
||||
const editor = globalContext.get(Editor);
|
||||
if (!editor) {
|
||||
return;
|
||||
}
|
||||
editor.emit('history.back', cursor);
|
||||
}
|
||||
|
||||
forward() {
|
||||
@ -122,6 +127,11 @@ export class History {
|
||||
}
|
||||
const cursor = this.session.cursor + 1;
|
||||
this.go(cursor);
|
||||
const editor = globalContext.get(Editor);
|
||||
if (!editor) {
|
||||
return;
|
||||
}
|
||||
editor.emit('history.forward', cursor);
|
||||
}
|
||||
|
||||
savePoint() {
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
import { globalContext } from './di';
|
||||
import { Editor } from './editor';
|
||||
|
||||
interface KeyMap {
|
||||
[key: number]: string;
|
||||
}
|
||||
@ -329,6 +332,16 @@ function fireCallback(callback: HotkeyCallback, e: KeyboardEvent, combo?: string
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
const editor = globalContext.get(Editor);
|
||||
if (!editor) {
|
||||
return;
|
||||
}
|
||||
editor.emit('hotkey.callback.call', {
|
||||
callback,
|
||||
e,
|
||||
combo,
|
||||
sequence,
|
||||
});
|
||||
}
|
||||
|
||||
export class Hotkey {
|
||||
|
||||
@ -7,8 +7,23 @@ import { Tip } from '../tip';
|
||||
import './title.less';
|
||||
|
||||
export class Title extends Component<{ title: TitleContent; className?: string; onClick?: () => void }> {
|
||||
constructor(props: any) {
|
||||
super(props);
|
||||
this.handleClick = this.handleClick.bind(this);
|
||||
}
|
||||
handleClick(e: React.MouseEvent) {
|
||||
const { title, onClick } = this.props as any;
|
||||
const url = title && (title.docUrl || title.url);
|
||||
if (url) {
|
||||
window.open(url);
|
||||
// 防止触发行操作(如折叠面板)
|
||||
e.stopPropagation();
|
||||
}
|
||||
// TODO: 操作交互冲突,目前 mixedSetter 仅有 2 个 setter 注册时用到了 onClick
|
||||
onClick && onClick(e);
|
||||
}
|
||||
render() {
|
||||
let { title, className, onClick } = this.props;
|
||||
let { title, className } = this.props;
|
||||
if (title == null) {
|
||||
return null;
|
||||
}
|
||||
@ -40,7 +55,7 @@ export class Title extends Component<{ title: TitleContent; className?: string;
|
||||
'has-tip': !!tip,
|
||||
'only-icon': !title.label
|
||||
})}
|
||||
onClick={onClick}
|
||||
onClick={this.handleClick}
|
||||
>
|
||||
{icon ? <b className="lc-title-icon">{icon}</b> : null}
|
||||
{title.label ? intl(title.label) : null}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import logger from '@ali/vu-logger';
|
||||
import { EventEmitter } from 'events';
|
||||
import { editor } from './editor';
|
||||
|
||||
/**
|
||||
* Bus class as an EventEmitter
|
||||
@ -19,7 +20,6 @@ export class Bus {
|
||||
// alias to unsub
|
||||
off(event: string, func: (...args: any[]) => any) {
|
||||
this.unsub(event, func);
|
||||
|
||||
}
|
||||
|
||||
// alias to pub
|
||||
@ -62,4 +62,18 @@ export class Bus {
|
||||
}
|
||||
}
|
||||
|
||||
export default new Bus();
|
||||
const bus = new Bus();
|
||||
|
||||
editor.on('hotkey.callback.call', (data) => {
|
||||
bus.emit('ve.hotkey.callback.call', data);
|
||||
});
|
||||
|
||||
editor.on('history.back', (data) => {
|
||||
bus.emit('ve.history.back', data);
|
||||
});
|
||||
|
||||
editor.on('history.forward', (data) => {
|
||||
bus.emit('ve.history.forward', data);
|
||||
});
|
||||
|
||||
export default bus;
|
||||
|
||||
@ -2,6 +2,7 @@ import { skeleton, editor } from './editor';
|
||||
import { ReactElement } from 'react';
|
||||
import { IWidgetBaseConfig, Skeleton } from '@ali/lowcode-editor-skeleton';
|
||||
import { uniqueId } from '@ali/lowcode-utils';
|
||||
import bus from './bus';
|
||||
|
||||
export interface IContentItemConfig {
|
||||
title: string;
|
||||
@ -175,6 +176,7 @@ const dockPane = Object.assign(skeleton.leftArea, {
|
||||
console.warn(`Could not find pane with name ${name}`);
|
||||
}
|
||||
pane?.active();
|
||||
bus.emit('ve.dock_pane.active_doc', pane);
|
||||
},
|
||||
|
||||
/**
|
||||
|
||||
@ -28,6 +28,11 @@ export class Field extends Component<FieldProps> {
|
||||
display: this.props.defaultDisplay || 'inline',
|
||||
};
|
||||
|
||||
constructor(props: any) {
|
||||
super(props);
|
||||
this.handleClear = this.handleClear.bind(this);
|
||||
}
|
||||
|
||||
private toggleExpand = () => {
|
||||
const { onExpandChange } = this.props;
|
||||
const collapsed = !this.state.collapsed;
|
||||
@ -68,6 +73,10 @@ export class Field extends Component<FieldProps> {
|
||||
});
|
||||
this.dispose = () => observer.disconnect();
|
||||
}
|
||||
private handleClear(e: React.MouseEvent) {
|
||||
e.stopPropagation();
|
||||
this.props.onClear && this.props.onClear();
|
||||
}
|
||||
componentDidMount() {
|
||||
const { defaultDisplay } = this.props;
|
||||
if (!defaultDisplay || defaultDisplay === 'inline') {
|
||||
@ -118,7 +127,7 @@ export class Field extends Component<FieldProps> {
|
||||
>
|
||||
<div className="lc-field-head" onClick={isAccordion ? this.toggleExpand : undefined}>
|
||||
<div className="lc-field-title">
|
||||
{createValueState(valueState, onClear)}
|
||||
{createValueState(valueState, this.handleClear)}
|
||||
<Title title={title || ''} />
|
||||
<InlineTip position="top">{tipContent}</InlineTip>
|
||||
</div>
|
||||
@ -143,7 +152,7 @@ export class Field extends Component<FieldProps> {
|
||||
*
|
||||
* TODO: turn number to enum
|
||||
*/
|
||||
function createValueState(valueState?: number, onClear?: () => void) {
|
||||
function createValueState(valueState?: number, onClear?: (e: React.MouseEvent) => void) {
|
||||
let tip: any = null;
|
||||
let className = 'lc-valuestate';
|
||||
let icon: any = null;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user