Skip to content

Commit 929b81b

Browse files
committed
2 parents 4a408d6 + 94378a8 commit 929b81b

File tree

4 files changed

+30
-4
lines changed

4 files changed

+30
-4
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
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.
44

5+
### [1.7.20](https://github.com/surveyjs/survey-creator/compare/v1.7.19...v1.7.20) (2020-07-15)
6+
57
### [1.7.19](https://github.com/surveyjs/survey-creator/compare/v1.7.18...v1.7.19) (2020-07-09)
68

79
### [1.7.18](https://github.com/surveyjs/survey-creator/compare/v1.7.17...v1.7.18) (2020-07-04)

package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"version": "1.7.19",
2+
"version": "1.7.20",
33
"name": "survey-creator",
44
"homepage": "https://surveyjs.io/Overview/Survey-Creator",
55
"license": "https://surveyjs.io/Licenses#SurveyCreator",
@@ -65,7 +65,7 @@
6565
"replace-in-file": "^3.4.3",
6666
"rimraf": "2.5.4",
6767
"sass-loader": "^8.0.2",
68-
"standard-version": "^7.1.0",
68+
"standard-version": "^8.0.1",
6969
"style-loader": "^1.2.1",
7070
"surveyjs-doc-generator": "git+https://github.com/surveyjs/surveyjs-doc-generator.git",
7171
"testcafe": "^1.8.8",

src/adorners/title-editor.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ export class TitleInplaceEditor {
4747
prevName = ko.observable<string>();
4848
isEditing = ko.observable<boolean>(false);
4949

50+
private _needSelectTargetOnStartEdit = false;
51+
5052
protected forNeibours(func: (el: HTMLElement, index?: number) => void) {
5153
if (
5254
!this.rootElement ||
@@ -82,6 +84,7 @@ export class TitleInplaceEditor {
8284
) {
8385
if (typeof target.getType === "function") {
8486
this.property = Survey.Serializer.findProperty(target.getType(), name);
87+
this._needSelectTargetOnStartEdit = target.getType() === "survey";
8588
}
8689

8790
this._valueSubscription = ko.computed(() => {
@@ -167,6 +170,9 @@ export class TitleInplaceEditor {
167170
if (this.readOnly) {
168171
return;
169172
}
173+
if(this._needSelectTargetOnStartEdit) {
174+
this.editor.selectedElement = this.target;
175+
}
170176
this.updatePrevName();
171177
this.editingName(this.prevName());
172178
this.isEditing(true);
@@ -292,7 +298,8 @@ export var titleAdorner = {
292298
if (
293299
typeof model.getType === "function" &&
294300
((model.getType() === "page" && !titleAdorner.pageTitleEditable) ||
295-
(model.getType() === "survey" && !titleAdorner.surveyTitleEditable))
301+
(model.getType() === "survey" && !titleAdorner.surveyTitleEditable) ||
302+
!Survey.Serializer.findProperty(model.getType(), "title"))
296303
) {
297304
return "";
298305
}
@@ -347,6 +354,9 @@ registerAdorner("item-title", itemTitleAdorner);
347354

348355
export var descriptionAdorner = {
349356
getMarkerClass: (model) => {
357+
if (typeof model.getType === "function" && !Survey.Serializer.findProperty(model.getType(), "description")) {
358+
return "";
359+
}
350360
return "description_editable";
351361
},
352362
getElementName: (model) => "description",

tests/adornersTests.ts

+15-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import * as ko from "knockout";
22
import * as Survey from "survey-knockout";
33
import { applyAdornerClass, SurveyForDesigner } from "../src/surveyjsObjects";
4-
import { titleAdorner, TitleInplaceEditor } from "../src/adorners/title-editor";
4+
import { titleAdorner, TitleInplaceEditor, descriptionAdorner } from "../src/adorners/title-editor";
55
import { createAddItemHandler } from "../src/adorners/item-editor";
66
import {
77
questionActionsAdorner,
@@ -270,3 +270,17 @@ QUnit.test("Title editor read only mode", function (assert) {
270270
assert.notOk(titleModel.readOnly, "title is not read only");
271271
assert.notOk(descriptionModel.readOnly, "description is not read only");
272272
});
273+
274+
QUnit.test("title/description adorner for removed properties - https://surveyjs.answerdesk.io/internal/ticket/details/T4683", function (assert) {
275+
Survey.Serializer.addClass("a_test", [ "title", "description" ]);
276+
var obj = { getType: () => "a_test" };
277+
278+
assert.equal(titleAdorner.getMarkerClass(obj), "title_editable", "Has title, allows editing");
279+
assert.equal(descriptionAdorner.getMarkerClass(obj), "description_editable", "Has description, allows editing");
280+
281+
Survey.Serializer.removeProperty("a_test", "title");
282+
assert.equal(titleAdorner.getMarkerClass(obj), "", "Has no title, no editing");
283+
284+
Survey.Serializer.removeProperty("a_test", "description");
285+
assert.equal(descriptionAdorner.getMarkerClass(obj), "", "Has no description, no editing");
286+
});

0 commit comments

Comments
 (0)