|
@@ -0,0 +1,62 @@
|
|
|
+import { isEmpty } from "lodash";
|
|
|
+import { TipIcons } from "../../components/TipIcons";
|
|
|
+import { EditorModule } from "../../module";
|
|
|
+import { ICompKeys } from "../../typings";
|
|
|
+import { DesignComp } from "../DesignTemp/DesignComp";
|
|
|
+
|
|
|
+type ToolbarItem = {
|
|
|
+ component: any;
|
|
|
+ getValue?: (c: DesignComp) => number;
|
|
|
+ disable?: (this: EditorModule, c: DesignComp) => boolean;
|
|
|
+ onClick: (this: EditorModule, c: DesignComp) => void;
|
|
|
+};
|
|
|
+
|
|
|
+export type ICompToolbars = { [name in ICompKeys]?: ToolbarItem[] } & {
|
|
|
+ default: ToolbarItem[];
|
|
|
+};
|
|
|
+
|
|
|
+function createToolbars<T extends Record<string, ToolbarItem>>(obj: T) {
|
|
|
+ return obj;
|
|
|
+}
|
|
|
+
|
|
|
+export const toolbars = createToolbars({
|
|
|
+ position: {
|
|
|
+ component: TipIcons.Position,
|
|
|
+ getValue: (comp) => (comp.layout.position === "absolute" ? 1 : 0),
|
|
|
+ onClick(comp) {
|
|
|
+ this.actions.setCompPosition(comp);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ delete: {
|
|
|
+ component: TipIcons.Delete,
|
|
|
+ disable(comp) {
|
|
|
+ return !this.store.pageCompIds.includes(comp.id);
|
|
|
+ },
|
|
|
+ onClick(comp) {
|
|
|
+ this.actions.removeComp(comp.id);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ clearOffset: {
|
|
|
+ component: TipIcons.ClearOffset,
|
|
|
+ disable(comp) {
|
|
|
+ return isEmpty(comp.layout.offset);
|
|
|
+ },
|
|
|
+ onClick(comp) {
|
|
|
+ this.actions.clearCompOffset(comp);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ visible: {
|
|
|
+ component: TipIcons.Visible,
|
|
|
+ getValue: (comp) => (comp.layout.visible !== false ? 0 : 1),
|
|
|
+ onClick(comp) {
|
|
|
+ this.actions.setCompVisible(comp);
|
|
|
+ },
|
|
|
+ },
|
|
|
+ lock: {
|
|
|
+ component: TipIcons.Lock,
|
|
|
+ getValue: (comp) => (comp ? 0 : 1),
|
|
|
+ onClick(comp) {
|
|
|
+ this.actions.setCompLock(comp);
|
|
|
+ },
|
|
|
+ },
|
|
|
+});
|