Skip to content

Commit 2ed384d

Browse files
authored
Merge pull request #99 from easyops-cn/abert/eo-layout
fix(): 支持工作台样式与布局配置
2 parents 7772871 + bd2a62b commit 2ed384d

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

bricks/advanced/src/workbench-layout-v2/index.spec.tsx

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,20 @@ describe("eo-workbench-layout-v2", () => {
125125
key: "card-3",
126126
},
127127
];
128+
element.showSettingButton = true;
128129

129130
expect(element.childElementCount).toBe(0);
130131

131132
const mockChangeEvent = jest.fn();
132133
const mockSaveEvent = jest.fn();
133134
const mockCancelEvent = jest.fn();
134135
const mockActionClickEventHandler = jest.fn();
136+
const mockSettingEVent = jest.fn();
135137
element.addEventListener("change", mockChangeEvent);
136138
element.addEventListener("save", mockSaveEvent);
137139
element.addEventListener("cancel", mockCancelEvent);
138140
element.addEventListener("action.click", mockActionClickEventHandler);
141+
element.addEventListener("setting", mockSettingEVent);
139142

140143
act(() => {
141144
document.body.appendChild(element);
@@ -183,6 +186,14 @@ describe("eo-workbench-layout-v2", () => {
183186
})
184187
);
185188

189+
// 点击设置按钮
190+
await act(async () => {
191+
fireEvent.click(getByTestId(element, "setting-button"));
192+
await (global as any).flushPromises();
193+
});
194+
195+
expect(mockSettingEVent).toHaveBeenCalled();
196+
186197
// insert element
187198
await act(async () => {
188199
await element.querySelector("eo-checkbox")?.dispatchEvent(

bricks/advanced/src/workbench-layout-v2/index.tsx

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ export interface EoWorkbenchLayoutV2Props {
9191
};
9292
componentList?: Item[];
9393
isEdit?: boolean;
94+
showSettingButton?: boolean;
9495
}
9596

9697
export interface EoWorkbenchLayoutV2ComponentRef {
@@ -103,6 +104,7 @@ export interface EoWorkbenchLayoutV2ComponentProps
103104
onSave?: (layout: Layout[]) => void;
104105
onCancel?: () => void;
105106
onActionClick?: (action: SimpleAction, layouts: Layout[]) => void;
107+
onSetting?: () => void;
106108
}
107109

108110
const getRealKey = (key: string): string =>
@@ -119,10 +121,12 @@ export const EoWorkbenchLayoutComponent = forwardRef<
119121
toolbarBricks,
120122
componentList = [],
121123
isEdit,
124+
showSettingButton,
122125
onChange,
123126
onSave,
124127
onCancel,
125128
onActionClick,
129+
onSetting,
126130
},
127131
ref
128132
) {
@@ -263,6 +267,10 @@ export const EoWorkbenchLayoutComponent = forwardRef<
263267
);
264268
}, [layouts, onSave]);
265269

270+
const handleSetting = () => {
271+
onSetting?.();
272+
};
273+
266274
const handleCancel = () => {
267275
onCancel?.();
268276
};
@@ -412,6 +420,14 @@ export const EoWorkbenchLayoutComponent = forwardRef<
412420
保存
413421
</WrappedButton>
414422
<WrappedButton onClick={handleCancel}>取消</WrappedButton>
423+
{showSettingButton && (
424+
<WrappedButton
425+
data-testid="setting-button"
426+
onClick={handleSetting}
427+
>
428+
设置
429+
</WrappedButton>
430+
)}
415431
<WrappedDropdownButton
416432
btnText="更多"
417433
icon={{
@@ -487,6 +503,13 @@ class EoWorkbenchLayoutV2 extends ReactNextElement {
487503
attribute: false,
488504
})
489505
accessor componentList: Item[] | undefined;
506+
/**
507+
* description: 用于设置页面样式和布局的按钮
508+
*/
509+
@property({
510+
type: Boolean,
511+
})
512+
accessor showSettingButton: boolean | undefined;
490513

491514
@event({
492515
type: "change",
@@ -515,6 +538,14 @@ class EoWorkbenchLayoutV2 extends ReactNextElement {
515538
this.#cancelEvent.emit();
516539
};
517540

541+
@event({
542+
type: "setting",
543+
})
544+
accessor #settingEvent!: EventEmitter<void>;
545+
#handleSetting = () => {
546+
this.#settingEvent.emit();
547+
};
548+
518549
/**
519550
* 操作点击事件
520551
* @detail {
@@ -557,11 +588,13 @@ class EoWorkbenchLayoutV2 extends ReactNextElement {
557588
layouts={this.layouts}
558589
toolbarBricks={this.toolbarBricks}
559590
componentList={this.componentList}
591+
showSettingButton={this.showSettingButton}
560592
isEdit={this.isEdit}
561593
onChange={this.#handleChange}
562594
onSave={this.#handleSave}
563595
onCancel={this.#handleCancel}
564596
onActionClick={this.#handleActionClick}
597+
onSetting={this.#handleSetting}
565598
ref={this.#componentRef}
566599
/>
567600
);

0 commit comments

Comments
 (0)