Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewtelnov committed Jul 15, 2020
2 parents 4a408d6 + 94378a8 commit 929b81b
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

### [1.7.20](https://github.com/surveyjs/survey-creator/compare/v1.7.19...v1.7.20) (2020-07-15)

### [1.7.19](https://github.com/surveyjs/survey-creator/compare/v1.7.18...v1.7.19) (2020-07-09)

### [1.7.18](https://github.com/surveyjs/survey-creator/compare/v1.7.17...v1.7.18) (2020-07-04)
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "1.7.19",
"version": "1.7.20",
"name": "survey-creator",
"homepage": "https://surveyjs.io/Overview/Survey-Creator",
"license": "https://surveyjs.io/Licenses#SurveyCreator",
Expand Down Expand Up @@ -65,7 +65,7 @@
"replace-in-file": "^3.4.3",
"rimraf": "2.5.4",
"sass-loader": "^8.0.2",
"standard-version": "^7.1.0",
"standard-version": "^8.0.1",
"style-loader": "^1.2.1",
"surveyjs-doc-generator": "git+https://github.com/surveyjs/surveyjs-doc-generator.git",
"testcafe": "^1.8.8",
Expand Down
12 changes: 11 additions & 1 deletion src/adorners/title-editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ export class TitleInplaceEditor {
prevName = ko.observable<string>();
isEditing = ko.observable<boolean>(false);

private _needSelectTargetOnStartEdit = false;

protected forNeibours(func: (el: HTMLElement, index?: number) => void) {
if (
!this.rootElement ||
Expand Down Expand Up @@ -82,6 +84,7 @@ export class TitleInplaceEditor {
) {
if (typeof target.getType === "function") {
this.property = Survey.Serializer.findProperty(target.getType(), name);
this._needSelectTargetOnStartEdit = target.getType() === "survey";
}

this._valueSubscription = ko.computed(() => {
Expand Down Expand Up @@ -167,6 +170,9 @@ export class TitleInplaceEditor {
if (this.readOnly) {
return;
}
if(this._needSelectTargetOnStartEdit) {
this.editor.selectedElement = this.target;
}
this.updatePrevName();
this.editingName(this.prevName());
this.isEditing(true);
Expand Down Expand Up @@ -292,7 +298,8 @@ export var titleAdorner = {
if (
typeof model.getType === "function" &&
((model.getType() === "page" && !titleAdorner.pageTitleEditable) ||
(model.getType() === "survey" && !titleAdorner.surveyTitleEditable))
(model.getType() === "survey" && !titleAdorner.surveyTitleEditable) ||
!Survey.Serializer.findProperty(model.getType(), "title"))
) {
return "";
}
Expand Down Expand Up @@ -347,6 +354,9 @@ registerAdorner("item-title", itemTitleAdorner);

export var descriptionAdorner = {
getMarkerClass: (model) => {
if (typeof model.getType === "function" && !Survey.Serializer.findProperty(model.getType(), "description")) {
return "";
}
return "description_editable";
},
getElementName: (model) => "description",
Expand Down
16 changes: 15 additions & 1 deletion tests/adornersTests.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as ko from "knockout";
import * as Survey from "survey-knockout";
import { applyAdornerClass, SurveyForDesigner } from "../src/surveyjsObjects";
import { titleAdorner, TitleInplaceEditor } from "../src/adorners/title-editor";
import { titleAdorner, TitleInplaceEditor, descriptionAdorner } from "../src/adorners/title-editor";
import { createAddItemHandler } from "../src/adorners/item-editor";
import {
questionActionsAdorner,
Expand Down Expand Up @@ -270,3 +270,17 @@ QUnit.test("Title editor read only mode", function (assert) {
assert.notOk(titleModel.readOnly, "title is not read only");
assert.notOk(descriptionModel.readOnly, "description is not read only");
});

QUnit.test("title/description adorner for removed properties - https://surveyjs.answerdesk.io/internal/ticket/details/T4683", function (assert) {
Survey.Serializer.addClass("a_test", [ "title", "description" ]);
var obj = { getType: () => "a_test" };

assert.equal(titleAdorner.getMarkerClass(obj), "title_editable", "Has title, allows editing");
assert.equal(descriptionAdorner.getMarkerClass(obj), "description_editable", "Has description, allows editing");

Survey.Serializer.removeProperty("a_test", "title");
assert.equal(titleAdorner.getMarkerClass(obj), "", "Has no title, no editing");

Survey.Serializer.removeProperty("a_test", "description");
assert.equal(descriptionAdorner.getMarkerClass(obj), "", "Has no description, no editing");
});

0 comments on commit 929b81b

Please sign in to comment.