Skip to content

Commit

Permalink
Add panel.hasTextInTitle reactive property
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewtelnov committed Jul 22, 2024
1 parent bb05678 commit fbe44c3
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 21 deletions.
18 changes: 9 additions & 9 deletions src/panel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1981,8 +1981,8 @@ export class PanelModel extends PanelModelBase implements IElement {
this.registerPropertyChangedHandlers(
["indent", "innerIndent", "rightIndent"], () => { this.onIndentChanged(); });
this.registerPropertyChangedHandlers(["colSpan"], () => { this.parent?.updateColumns(); });
this.registerPropertyChangedHandlers(["title", "description"], () => {
this.calcHasHeader();
this.registerPropertyChangedHandlers(["title"], () => {
this.calcHasTextInTitle();
});
}
public getType(): string {
Expand All @@ -1997,21 +1997,21 @@ export class PanelModel extends PanelModelBase implements IElement {
}
return super.getSurvey(live);
}
public get hasHeader(): boolean {
return this.getPropertyValue("hasHeader");
get hasTextInTitle(): boolean {
return this.getPropertyValue("hasTextInTitle");
}
private calcHasHeader(): void {
this.setPropertyValue("hasHeader", this.hasTitle || this.hasDescription && !!this.description);
private calcHasTextInTitle(): void {
this.setPropertyValue("hasTextInTitle", !!this.title);
}
onSurveyLoad(): void {
super.onSurveyLoad();
this.onIndentChanged();
this.calcHasHeader();
this.calcHasTextInTitle();
}
protected onSetData(): void {
super.onSetData();
this.onIndentChanged();
this.calcHasHeader();
this.calcHasTextInTitle();
}
public get isPanel(): boolean {
return true;
Expand Down Expand Up @@ -2258,7 +2258,7 @@ export class PanelModel extends PanelModelBase implements IElement {
public get cssTitle(): string {
return new CssClassBuilder()
.append(this.getCssTitle(this.cssClasses.panel))
.append(this.cssClasses.panel.titleHidden, !this.title && this.isDesignMode)
.append(this.cssClasses.panel.titleHidden, !this.hasTextInTitle && this.isDesignMode)
.toString();
}
public get showErrorsAbovePanel(): boolean {
Expand Down
4 changes: 3 additions & 1 deletion src/react/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ export class SurveyPanel extends SurveyPanelBase {
);
}
protected renderHeader() {
if (!this.panel.hasHeader) return null;
if (!this.panel.hasTitle && !this.panel.hasDescription) {
return null;
}
return <SurveyElementHeader element={this.panel}></SurveyElementHeader>;
}
protected wrapElement(element: JSX.Element): JSX.Element {
Expand Down
17 changes: 6 additions & 11 deletions tests/paneltests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2873,24 +2873,19 @@ QUnit.test("Check if errors disappered in the closest questions on changing the
assert.equal(q1.errors.length, 0, "q1.errors #3");
assert.equal(q2.errors.length, 0, "q2.errors #3");
});
QUnit.test("Panel hasHeader, Bug#8590", function (assert) {
QUnit.test("Panel hasTextInTitle - reactive property, Bug:https://github.com/surveyjs/survey-creator/issues/5720", function (assert) {
const survey = new SurveyModel({
elements: [
{ type: "panel", name: "panel1" },
{ type: "panel", name: "panel2", title: "Panel 2" },
{ type: "panel", name: "panel3", description: "Panel 3" }
{ type: "panel", name: "panel2", title: "Panel 2" }
]
});
const panel1 = survey.getPanelByName("panel1");
const panel2 = survey.getPanelByName("panel2");
const panel3 = survey.getPanelByName("panel3");
assert.equal(panel1.hasHeader, false, "panel1 #1");
assert.equal(panel2.hasHeader, true, "panel2 #1");
assert.equal(panel3.hasHeader, true, "panel3 #1");
assert.equal(panel1.hasTextInTitle, false, "panel1 #1");
assert.equal(panel2.hasTextInTitle, true, "panel2 #1");
panel1.title = "Panel 1";
assert.equal(panel1.hasHeader, true, "panel1 #2");
assert.equal(panel1.hasTextInTitle, true, "panel1 #2");
panel2.title = "";
assert.equal(panel2.hasHeader, false, "panel2 #2");
panel3.description = "";
assert.equal(panel3.hasHeader, false, "panel3 #2");
assert.equal(panel2.hasTextInTitle, false, "panel2 #2");
});

0 comments on commit fbe44c3

Please sign in to comment.