dbm 1.1.13 → 1.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/flow/controllers/select/SingleSelection.js +2 -2
- package/graphapi/webclient/admin/ItemEditor.js +20 -0
- package/graphapi/webclient/decode/index.js +2 -1
- package/package.json +1 -1
- package/react/admin/editorsgroup/EditItem.js +1 -1
- package/react/admin/editorsgroup/EditRelation.js +44 -0
- package/react/admin/editorsgroup/EditVisibility.js +25 -0
- package/react/admin/editorsgroup/index.js +3 -1
- package/react/admin/objects/itemeditors/LinkedPage.js +51 -0
- package/react/admin/objects/itemeditors/Question.js +46 -0
- package/react/admin/objects/itemeditors/RichDescription.js +46 -0
- package/react/admin/objects/itemeditors/Visibility.js +3 -1
- package/react/admin/objects/itemeditors/index.js +4 -1
- package/react/blocks/content/Card.js +27 -6
- package/react/blocks/faq/AskAQuestion.js +67 -59
- package/react/blocks/faq/HelpSectionRowItem.js +79 -0
- package/react/blocks/faq/index.js +2 -1
- package/react/blocks/index.js +20 -10
|
@@ -28,8 +28,8 @@ export default class SingleSelection extends Dbm.core.BaseObject {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
_selectionChanged(aSelected, aValue) {
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
console.log("_selectionChanged");
|
|
32
|
+
console.log(aSelected, aValue);
|
|
33
33
|
|
|
34
34
|
if(aSelected) {
|
|
35
35
|
this.item.properties.value.getMostUpstreamProperty().setValue(aValue);
|
|
@@ -104,6 +104,26 @@ export default class ItemEditor extends Dbm.core.BaseObject {
|
|
|
104
104
|
return this._addMultipleRelationsEditor(name, aType, aObjectType, aInitialValue, Dbm.graphapi.webclient.admin.SaveFunctions.multipleOutgoingRelations, aUpdateEncoding);
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
getVisibilityEditor(aInitialValue) {
|
|
108
|
+
let name = "visibility"
|
|
109
|
+
let valueEditor = this.item["visibility"];
|
|
110
|
+
if(!valueEditor) {
|
|
111
|
+
valueEditor = new Dbm.graphapi.webclient.admin.ValueEditor();
|
|
112
|
+
valueEditor.item.editValue.setInitialValue(aInitialValue);
|
|
113
|
+
|
|
114
|
+
valueEditor.item.setValue("itemEditor", this.item);
|
|
115
|
+
valueEditor.item.setValue("updateEncoding", "visibility");
|
|
116
|
+
|
|
117
|
+
this.item.anyChange.addCheck(valueEditor.item.properties.changed);
|
|
118
|
+
this.item.setValue(name, valueEditor);
|
|
119
|
+
this.item.editors = [].concat(this.item.editors, valueEditor);
|
|
120
|
+
|
|
121
|
+
valueEditor.addSaveFunction(Dbm.graphapi.webclient.admin.SaveFunctions.setVisibility);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return valueEditor;
|
|
125
|
+
}
|
|
126
|
+
|
|
107
127
|
addCommandsToSaveData(aSaveData) {
|
|
108
128
|
|
|
109
129
|
let editedItemId = Dbm.objectPath(this.item, "editedItem.id");
|
|
@@ -138,7 +138,8 @@ export const fullSetup = function() {
|
|
|
138
138
|
{
|
|
139
139
|
let name = "helpSection";
|
|
140
140
|
let currentDecoder = new Dbm.graphapi.webclient.decode.DecodeBaseObject();
|
|
141
|
-
currentDecoder.item.setValue("copyFields", ["title", "link"]);
|
|
141
|
+
currentDecoder.item.setValue("copyFields", ["question", "title", "link", "description", "linkText"]);
|
|
142
|
+
currentDecoder.item.setValue("copyLink", ["page"]);
|
|
142
143
|
currentDecoder.item.setValue("encodingType", name);
|
|
143
144
|
currentDecoder.item.register(decodePrefix + name);
|
|
144
145
|
}
|
package/package.json
CHANGED
|
@@ -22,7 +22,7 @@ export default class EditItem extends Dbm.react.BaseObject {
|
|
|
22
22
|
{"type": "includeDraft"},
|
|
23
23
|
{"type": "idSelection", "ids": [item.id]},
|
|
24
24
|
],
|
|
25
|
-
["admin_fields", "relations"]
|
|
25
|
+
["admin_fields", "relations", "visibility"]
|
|
26
26
|
);
|
|
27
27
|
allLoaded.addCheck(request.properties.status);
|
|
28
28
|
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class EditRelation extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let item = this.context.item;
|
|
9
|
+
let itemEditor = this.context.itemEditor;
|
|
10
|
+
let editor;
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
let direction = this.getPropValue("direction");
|
|
14
|
+
let relationType = this.getPropValue("relationType");
|
|
15
|
+
let objectType = this.getPropValue("objectType");
|
|
16
|
+
|
|
17
|
+
let relations = Dbm.utils.ArrayFunctions.filterByField(Dbm.objectPath(item, "relations/" + direction + "." + relationType + ".objects"), "objectTypes", objectType, "arrayContains");
|
|
18
|
+
let relation = (relations && relations.length) ? relations[0].id : null;
|
|
19
|
+
|
|
20
|
+
if(direction == "in") {
|
|
21
|
+
editor = itemEditor.addIncomingRelationEditor(relationType, objectType, relation, ["relations"]);
|
|
22
|
+
}
|
|
23
|
+
else if(direction == "out") {
|
|
24
|
+
editor = itemEditor.addOutgoingRelationEditor(relationType, objectType, relation, ["relations"]);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
console.error("Unknown direction", direction, this);
|
|
28
|
+
editor = null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if(editor) {
|
|
32
|
+
this.item.setValue("editor", editor.item);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
_renderMainElement() {
|
|
37
|
+
|
|
38
|
+
let children = this.getPropValue("children")
|
|
39
|
+
|
|
40
|
+
return React.createElement("div", {},
|
|
41
|
+
React.createElement(Dbm.react.context.AddContextVariables, {"values": {"valueEditor": this.item.editor}}, children)
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class EditVisibility extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let item = this.context.item;
|
|
9
|
+
let itemEditor = this.context.itemEditor;
|
|
10
|
+
let initialDataPath = this.getPropValueWithDefault("initialDataPath", "visibility");
|
|
11
|
+
let initialData = Dbm.objectPath(item, initialDataPath);
|
|
12
|
+
|
|
13
|
+
let editor = itemEditor.getVisibilityEditor(initialData);
|
|
14
|
+
this.item.setValue("editor", editor.item);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
_renderMainElement() {
|
|
18
|
+
|
|
19
|
+
let children = this.getPropValue("children")
|
|
20
|
+
|
|
21
|
+
return React.createElement("div", {},
|
|
22
|
+
React.createElement(Dbm.react.context.AddContextVariables, {"values": {"valueEditor": this.item.editor}}, children)
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export {default as EditField} from "./EditField.js";
|
|
2
|
-
export {default as EditItem} from "./EditItem.js";
|
|
2
|
+
export {default as EditItem} from "./EditItem.js";
|
|
3
|
+
export {default as EditRelation} from "./EditRelation.js";
|
|
4
|
+
export {default as EditVisibility} from "./EditVisibility.js";
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class LinkedPage extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
|
|
9
|
+
|
|
10
|
+
let id = this.context.item.id;
|
|
11
|
+
|
|
12
|
+
let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
|
|
13
|
+
this.item.requireProperty("loaded", false);
|
|
14
|
+
|
|
15
|
+
{
|
|
16
|
+
let request = graphApi.requestRange(
|
|
17
|
+
[
|
|
18
|
+
{"type": "includePrivate"},
|
|
19
|
+
{"type": "includeDraft"},
|
|
20
|
+
{"type": "idSelection", "ids": [id]},
|
|
21
|
+
],
|
|
22
|
+
["admin_fields", "relations"]
|
|
23
|
+
);
|
|
24
|
+
allLoaded.addCheck(request.properties.status);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
_renderMainElement() {
|
|
31
|
+
|
|
32
|
+
let id = this.context.item.id;
|
|
33
|
+
|
|
34
|
+
return React.createElement("div", {},
|
|
35
|
+
|
|
36
|
+
React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
|
|
37
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Link text"},
|
|
38
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "linkText"},
|
|
39
|
+
React.createElement(Dbm.react.form.FormField, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
|
|
40
|
+
)
|
|
41
|
+
),
|
|
42
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Linked page"},
|
|
43
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {"direction": "out", "relationType": "for", "objectType": "page"},
|
|
44
|
+
React.createElement(Dbm.react.form.GraphApiObjectSelection, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "objectType": "page", "encoding": "title", nameField: "title", className: "standard-field standard-field-padding full-width"})
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class Question extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
|
|
9
|
+
|
|
10
|
+
let id = this.context.item.id;
|
|
11
|
+
|
|
12
|
+
let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
|
|
13
|
+
this.item.requireProperty("loaded", false);
|
|
14
|
+
|
|
15
|
+
{
|
|
16
|
+
let request = graphApi.requestRange(
|
|
17
|
+
[
|
|
18
|
+
{"type": "includePrivate"},
|
|
19
|
+
{"type": "includeDraft"},
|
|
20
|
+
{"type": "idSelection", "ids": [id]},
|
|
21
|
+
],
|
|
22
|
+
["admin_fields"]
|
|
23
|
+
);
|
|
24
|
+
allLoaded.addCheck(request.properties.status);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
_renderMainElement() {
|
|
31
|
+
|
|
32
|
+
let id = this.context.item.id;
|
|
33
|
+
|
|
34
|
+
return React.createElement("div", {},
|
|
35
|
+
|
|
36
|
+
React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
|
|
37
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Question"},
|
|
38
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "question"},
|
|
39
|
+
React.createElement(Dbm.react.form.FormField, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class RichDescription extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
|
|
9
|
+
|
|
10
|
+
let id = this.context.item.id;
|
|
11
|
+
|
|
12
|
+
let allLoaded = Dbm.flow.updatefunctions.logic.allAtValue(Dbm.loading.LoadingStatus.LOADED);
|
|
13
|
+
this.item.requireProperty("loaded", false);
|
|
14
|
+
|
|
15
|
+
{
|
|
16
|
+
let request = graphApi.requestRange(
|
|
17
|
+
[
|
|
18
|
+
{"type": "includePrivate"},
|
|
19
|
+
{"type": "includeDraft"},
|
|
20
|
+
{"type": "idSelection", "ids": [id]},
|
|
21
|
+
],
|
|
22
|
+
["adbmi_fields"]
|
|
23
|
+
);
|
|
24
|
+
allLoaded.addCheck(request.properties.status);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
this.item.properties.loaded.connectInput(allLoaded.output.properties.value);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
_renderMainElement() {
|
|
31
|
+
|
|
32
|
+
let id = this.context.item.id;
|
|
33
|
+
|
|
34
|
+
return React.createElement("div", {},
|
|
35
|
+
|
|
36
|
+
React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
|
|
37
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Description"},
|
|
38
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "description"},
|
|
39
|
+
React.createElement(Dbm.react.form.TextArea, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -35,7 +35,9 @@ export default class Visibility extends Dbm.react.BaseObject {
|
|
|
35
35
|
|
|
36
36
|
React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
|
|
37
37
|
React.createElement(Dbm.react.form.LabelledArea, {label: "Visibility"},
|
|
38
|
-
|
|
38
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditVisibility, {},
|
|
39
|
+
React.createElement(Dbm.react.form.FormField, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
|
|
40
|
+
)
|
|
39
41
|
)
|
|
40
42
|
)
|
|
41
43
|
|
|
@@ -2,4 +2,7 @@ export {default as Title} from "./Title.js";
|
|
|
2
2
|
export {default as Content} from "./Content.js";
|
|
3
3
|
export {default as Name} from "./Name.js";
|
|
4
4
|
export {default as Link} from "./Link.js";
|
|
5
|
-
export {default as Visibility} from "./Visibility.js";
|
|
5
|
+
export {default as Visibility} from "./Visibility.js";
|
|
6
|
+
export {default as LinkedPage} from "./LinkedPage.js";
|
|
7
|
+
export {default as Question} from "./Question.js";
|
|
8
|
+
export {default as RichDescription} from "./RichDescription.js";
|
|
@@ -13,11 +13,20 @@ export default class Card extends Dbm.react.BaseObject {
|
|
|
13
13
|
React.createElement("h3", {"className": "no-margins"},
|
|
14
14
|
Dbm.react.text.text(Dbm.react.source.blockData("title"))
|
|
15
15
|
),
|
|
16
|
-
|
|
16
|
+
React.createElement("div", {"className": "body-text"},
|
|
17
|
+
Dbm.react.text.htmlText(Dbm.react.source.blockData("text")),
|
|
18
|
+
),
|
|
17
19
|
React.createElement("div", {"className": "flex-row justify-between"},
|
|
18
20
|
React.createElement("div", {"className": "flex-row-item"}),
|
|
19
|
-
React.createElement("div", {"className": "flex-row-item"},
|
|
20
|
-
|
|
21
|
+
React.createElement("div", {"className": "flex-row-item standard-card-read-more-link"},
|
|
22
|
+
React.createElement("div", {className: "flex-row micro-item-spacing vertically-center-items"},
|
|
23
|
+
React.createElement("div", {className: "flex-row-item flex-resize"},
|
|
24
|
+
Dbm.react.text.text(Dbm.react.source.blockData("buttonText"))
|
|
25
|
+
),
|
|
26
|
+
React.createElement("div", {className: "flex-row-item flex-no-resize"},
|
|
27
|
+
React.createElement(Dbm.react.image.Image, {src: "/assets/img/read-more-right-arrow.svg", className: "right-arrow-read-more-link-icon background-contain"})
|
|
28
|
+
)
|
|
29
|
+
)
|
|
21
30
|
)
|
|
22
31
|
)
|
|
23
32
|
)
|
|
@@ -34,11 +43,23 @@ export default class Card extends Dbm.react.BaseObject {
|
|
|
34
43
|
React.createElement("h3", {"className": "no-margins"},
|
|
35
44
|
Dbm.react.text.text(Dbm.react.source.blockData("title"))
|
|
36
45
|
),
|
|
37
|
-
|
|
46
|
+
React.createElement("div", {"className": "spacing small"}),
|
|
47
|
+
React.createElement("div", {"className": "body-text"},
|
|
48
|
+
Dbm.react.text.htmlText(Dbm.react.source.blockData("text")),
|
|
49
|
+
),
|
|
50
|
+
|
|
51
|
+
React.createElement("div", {"className": "spacing small"}),
|
|
38
52
|
React.createElement("div", {"className": "flex-row justify-between"},
|
|
39
53
|
React.createElement("div", {"className": "flex-row-item"}),
|
|
40
|
-
React.createElement("div", {"className": "flex-row-item"},
|
|
41
|
-
|
|
54
|
+
React.createElement("div", {"className": "flex-row-item standard-card-read-more-link"},
|
|
55
|
+
React.createElement("div", {className: "flex-row micro-item-spacing vertically-center-items"},
|
|
56
|
+
React.createElement("div", {className: "flex-row-item flex-resize"},
|
|
57
|
+
Dbm.react.text.text(Dbm.react.source.blockData("buttonText"))
|
|
58
|
+
),
|
|
59
|
+
React.createElement("div", {className: "flex-row-item flex-no-resize"},
|
|
60
|
+
React.createElement(Dbm.react.image.Image, {src: "/assets/img/read-more-right-arrow.svg", className: "right-arrow-read-more-link-icon background-contain"})
|
|
61
|
+
)
|
|
62
|
+
)
|
|
42
63
|
)
|
|
43
64
|
)
|
|
44
65
|
)
|
|
@@ -9,71 +9,78 @@ export default class AskAQuestion extends Dbm.react.BaseObject {
|
|
|
9
9
|
this.item.requireProperty("currentQuery", "");
|
|
10
10
|
|
|
11
11
|
this.item.requireProperty("state", "start");
|
|
12
|
+
this.item.requireProperty("openSection", 0);
|
|
13
|
+
|
|
14
|
+
this._singelSelection = new Dbm.flow.controllers.select.SingleSelection();
|
|
15
|
+
this._singelSelection.item.properties.value.connectInput(this.item.properties.openSection);
|
|
16
|
+
this._rowProperties = [];
|
|
12
17
|
|
|
13
18
|
this.item.requireProperty("results", []);
|
|
14
19
|
|
|
15
20
|
let switchValue = Dbm.flow.updatefunctions.logic.switchValue(this.item.properties.state);
|
|
16
21
|
|
|
17
|
-
switchValue.addCase("start", React.createElement("div", null
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}, React.createElement("div", {
|
|
29
|
-
className: "spacing micro"
|
|
30
|
-
}), React.createElement(Dbm.react.image.Image, {
|
|
31
|
-
src: "/assets/img/right-arrow.svg",
|
|
32
|
-
className: "right-arrow-link-icon background-contain"
|
|
33
|
-
}))))), React.createElement(Dbm.react.text.Link, {
|
|
34
|
-
href: Dbm.react.source.blockData("url2"),
|
|
35
|
-
className: "custom-styled-link"
|
|
36
|
-
}, React.createElement("div", {
|
|
37
|
-
className: "standard-row faq-row hover-row faq-row-padding cursor-pointer"
|
|
38
|
-
}, React.createElement("div", {
|
|
39
|
-
className: "flex-row small-item-spacing"
|
|
40
|
-
}, React.createElement("div", {
|
|
41
|
-
className: "flex-row-item flex-resize"
|
|
42
|
-
}, Dbm.react.text.text(Dbm.react.source.blockData("text2"))), React.createElement("div", {
|
|
43
|
-
className: "flex-row-item flex-no-resize"
|
|
44
|
-
}, React.createElement("div", {
|
|
45
|
-
className: "spacing micro"
|
|
46
|
-
}), React.createElement(Dbm.react.image.Image, {
|
|
47
|
-
src: "/assets/img/right-arrow.svg",
|
|
48
|
-
className: "right-arrow-link-icon background-contain"
|
|
49
|
-
})))))));
|
|
50
|
-
switchValue.addCase("loading", React.createElement("div", null, React.createElement("div", {
|
|
51
|
-
className: "spacing small"
|
|
52
|
-
}), "Loading..."));
|
|
53
|
-
switchValue.addCase("results", React.createElement("div", null, React.createElement(Dbm.react.area.List, {
|
|
54
|
-
items: this.item.properties.results
|
|
55
|
-
}, React.createElement(Dbm.react.text.Link, {
|
|
56
|
-
href: Dbm.react.source.contextVariable("item.link"),
|
|
57
|
-
className: "custom-styled-link"
|
|
58
|
-
}, React.createElement("div", {
|
|
59
|
-
className: "standard-row faq-row hover-row faq-row-padding cursor-pointer"
|
|
60
|
-
}, React.createElement("div", {
|
|
61
|
-
className: "flex-row small-item-spacing"
|
|
62
|
-
}, React.createElement("div", {
|
|
63
|
-
className: "flex-row-item flex-resize"
|
|
64
|
-
}, Dbm.react.text.text(Dbm.react.source.contextVariable("item.title"))), React.createElement("div", {
|
|
65
|
-
className: "flex-row-item flex-no-resize"
|
|
66
|
-
}, React.createElement("div", {
|
|
67
|
-
className: "spacing micro"
|
|
68
|
-
}), React.createElement(Dbm.react.image.Image, {
|
|
69
|
-
src: "/assets/img/right-arrow.svg",
|
|
70
|
-
className: "right-arrow-link-icon background-contain"
|
|
71
|
-
}))))))));
|
|
72
|
-
switchValue.addCase("noResults", React.createElement("div", {
|
|
73
|
-
className: "faq-row-padding"
|
|
74
|
-
}, "We could not find what you were looking for. Please contact us by phone or email instead."));
|
|
22
|
+
switchValue.addCase("start", React.createElement("div", null));
|
|
23
|
+
switchValue.addCase("loading", React.createElement("div", null, React.createElement("div", {className: "spacing small"}), "Loading..."));
|
|
24
|
+
switchValue.addCase("results", React.createElement("div", null,
|
|
25
|
+
React.createElement(Dbm.react.area.List, {items: this.item.properties.results, as: "row"},
|
|
26
|
+
React.createElement(Dbm.react.context.AddItemToContext, {item: Dbm.react.source.contextVariable("row.item")},
|
|
27
|
+
React.createElement(Dbm.react.area.InsertElement, {element: Dbm.react.source.contextVariable("row.element")})
|
|
28
|
+
),
|
|
29
|
+
React.createElement("div", {"data-slot": "spacing", "className": "spacing small help-section-row-spacing"})
|
|
30
|
+
)
|
|
31
|
+
));
|
|
32
|
+
switchValue.addCase("noResults", React.createElement("div", {className: "faq-row-padding"}, "We could not find what you were looking for. Please contact us by phone or email instead."));
|
|
75
33
|
|
|
76
34
|
this.item.requireProperty("resultElement", null).connectInput(switchValue.output.properties.value);
|
|
35
|
+
|
|
36
|
+
let ids = this.context.blockData.initialSections;
|
|
37
|
+
let graphApi = Dbm.getInstance().repository.getItem("cachedGraphApi").controller;
|
|
38
|
+
{
|
|
39
|
+
let request = graphApi.requestRange(
|
|
40
|
+
[
|
|
41
|
+
{type: "idSelection", "ids": ids}
|
|
42
|
+
],
|
|
43
|
+
["helpSection"]
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
this.item.requireProperty("initialLoadStatus", 0);
|
|
47
|
+
Dbm.flow.addUpdateCommandWhenMatched(this.item.properties.initialLoadStatus, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(this._initalDataLoaded.bind(this), [request]));
|
|
48
|
+
this.item.properties.initialLoadStatus.connectInput(request.properties.status);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
_getOpenProperty(aIndex) {
|
|
53
|
+
for(let i = this._rowProperties.length; i <= aIndex; i++) {
|
|
54
|
+
this._rowProperties.push(this._singelSelection.addSelectionValue(i));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return this._rowProperties[aIndex];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
_createRows(aItems) {
|
|
61
|
+
let rows = new Array();
|
|
62
|
+
let currentArray = aItems;
|
|
63
|
+
let currentArrayLength = currentArray.length;
|
|
64
|
+
for(let i = 0; i < currentArrayLength; i++) {
|
|
65
|
+
let currentItem = currentArray[i];
|
|
66
|
+
let currentRow = new Dbm.repository.Item();
|
|
67
|
+
currentRow.setId("_dbmInternal/row" + Dbm.getInstance().getNextId());
|
|
68
|
+
currentRow.setValue("item", currentItem);
|
|
69
|
+
currentRow.setValue("element", React.createElement(Dbm.react.blocks.faq.HelpSectionRowItem, {"open": this._getOpenProperty(i)}));
|
|
70
|
+
rows.push(currentRow);
|
|
71
|
+
}
|
|
72
|
+
this.item.results = rows;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
_initalDataLoaded(aRequest) {
|
|
76
|
+
console.log("_initalDataLoaded")
|
|
77
|
+
console.log(aRequest);
|
|
78
|
+
|
|
79
|
+
if(aRequest.items.length) {
|
|
80
|
+
this._createRows(aRequest.items);
|
|
81
|
+
this.item.state = "results";
|
|
82
|
+
}
|
|
83
|
+
|
|
77
84
|
}
|
|
78
85
|
|
|
79
86
|
_dataLoaded(aQuery, aRequest) {
|
|
@@ -84,8 +91,9 @@ export default class AskAQuestion extends Dbm.react.BaseObject {
|
|
|
84
91
|
let ids = Dbm.objectPath(aRequest, "data.answers");
|
|
85
92
|
if(ids.length > 0) {
|
|
86
93
|
let items = Dbm.getInstance().repository.getItems(ids);
|
|
87
|
-
this.
|
|
94
|
+
this._createRows(items);
|
|
88
95
|
this.item.state = "results";
|
|
96
|
+
this.item.openSection = 0;
|
|
89
97
|
}
|
|
90
98
|
else {
|
|
91
99
|
this.item.state = "noResults";
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class HelpSectionRowItem extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
this._toggleOpenCommand = Dbm.commands.callFunction(this._toggleOpen.bind(this));
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
_toggleOpen() {
|
|
12
|
+
//console.log("_toggleOpen");
|
|
13
|
+
let open = this.getDynamicProp("open");
|
|
14
|
+
open.getMostUpstreamProperty().setValue(!open.value);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
_renderMainElement() {
|
|
18
|
+
|
|
19
|
+
let open = this.getDynamicProp("open");
|
|
20
|
+
|
|
21
|
+
let linkText = "Read more";
|
|
22
|
+
if(this.context.item.linkText) {
|
|
23
|
+
linkText = this.context.item.linkText;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let answerElement = React.createElement("div", {className: "help-section-row-answer help-section-row-answer-padding"},
|
|
27
|
+
React.createElement("div", {className: "help-section-row-answer-title"},
|
|
28
|
+
Dbm.react.text.text(Dbm.react.source.contextVariable("item.title"))
|
|
29
|
+
),
|
|
30
|
+
React.createElement("div", {className: "help-section-row-answer-description body-text"},
|
|
31
|
+
Dbm.react.text.htmlText(Dbm.react.source.contextVariable("item.description"))
|
|
32
|
+
),
|
|
33
|
+
React.createElement("div", {className: "flex-row justify-between"},
|
|
34
|
+
React.createElement("div", {className: "flex-row-item"}),
|
|
35
|
+
React.createElement("div", {className: "flex-row-item flex-no-resize help-section-row-read-more-link"},
|
|
36
|
+
React.createElement("div", {className: "flex-row micro-item-spacing vertically-center-items"},
|
|
37
|
+
React.createElement("div", {className: "flex-row-item flex-resize"},
|
|
38
|
+
linkText
|
|
39
|
+
),
|
|
40
|
+
React.createElement("div", {className: "flex-row-item flex-no-resize"},
|
|
41
|
+
React.createElement(Dbm.react.image.Image, {src: "/assets/img/read-more-right-arrow.svg", className: "right-arrow-read-more-link-icon background-contain"})
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
)
|
|
45
|
+
)
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
let link = Dbm.objectPath(this.context.item, "page.url");
|
|
49
|
+
if(!link) {
|
|
50
|
+
link = Dbm.objectPath(this.context.item, "link");
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if(link) {
|
|
54
|
+
answerElement = React.createElement(Dbm.react.text.Link, {"href": link, "className": "custom-styled-link"}, answerElement);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return React.createElement("div", {className: "help-section-row help-section-row-padding"},
|
|
58
|
+
React.createElement(Dbm.react.interaction.CommandButton, {command: this._toggleOpenCommand},
|
|
59
|
+
React.createElement("div", {className: "help-section-row-question help-section-row-question-padding cursor-pointer"},
|
|
60
|
+
React.createElement("div", {className: "flex-row small-item-spacing vertically-center-items"},
|
|
61
|
+
React.createElement("div", {className: "flex-row-item flex-no-resize"},
|
|
62
|
+
React.createElement(Dbm.react.image.Image, {src: "/assets/img/faq-question.svg", className: "help-section-row-question-icon background-contain"})
|
|
63
|
+
),
|
|
64
|
+
React.createElement("div", {className: "flex-row-item flex-resize"},
|
|
65
|
+
Dbm.react.text.text(Dbm.react.source.contextVariable("item.question"))
|
|
66
|
+
),
|
|
67
|
+
React.createElement("div", {className: "flex-row-item flex-no-resize"},
|
|
68
|
+
React.createElement(Dbm.react.area.HasData, {check: open}, "-"),
|
|
69
|
+
React.createElement(Dbm.react.area.HasData, {check: open, checkType: "invert/default"}, "+"),
|
|
70
|
+
)
|
|
71
|
+
)
|
|
72
|
+
)
|
|
73
|
+
),
|
|
74
|
+
React.createElement(Dbm.react.area.OpenCloseExpandableArea, {open: open},
|
|
75
|
+
answerElement
|
|
76
|
+
)
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {default as AskAQuestion} from "./AskAQuestion.js";
|
|
1
|
+
export {default as AskAQuestion} from "./AskAQuestion.js";
|
|
2
|
+
export {default as HelpSectionRowItem} from "./HelpSectionRowItem.js";
|
package/react/blocks/index.js
CHANGED
|
@@ -214,16 +214,8 @@ export let registerAllBlocks = function() {
|
|
|
214
214
|
createElement(Dbm.react.admin.editor.fields.TextField, {name: "text1"})
|
|
215
215
|
),
|
|
216
216
|
createElement("div", {className: "spacing medium"}),
|
|
217
|
-
createElement(Dbm.react.form.LabelledArea, {label: "
|
|
218
|
-
createElement(Dbm.react.admin.editor.fields.
|
|
219
|
-
),
|
|
220
|
-
createElement("div", {className: "spacing medium"}),
|
|
221
|
-
createElement(Dbm.react.form.LabelledArea, {label: "Text 2"},
|
|
222
|
-
createElement(Dbm.react.admin.editor.fields.TextField, {name: "text2"})
|
|
223
|
-
),
|
|
224
|
-
createElement("div", {className: "spacing medium"}),
|
|
225
|
-
createElement(Dbm.react.form.LabelledArea, {label: "Url 2"},
|
|
226
|
-
createElement(Dbm.react.admin.editor.fields.TextField, {name: "url2"})
|
|
217
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Intial sections"},
|
|
218
|
+
createElement(Dbm.react.admin.editor.fields.SelectObjectsField, {objectType: "helpSection", name:"initialSections"})
|
|
227
219
|
),
|
|
228
220
|
);
|
|
229
221
|
registerBlock("faq/askAQuestion", "FAQ / Ask a question", createElement(Dbm.react.blocks.faq.AskAQuestion, {}), editor, {}, {"text1": true, "text2": true});
|
|
@@ -239,6 +231,11 @@ export let registerAllBlocks = function() {
|
|
|
239
231
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Content, {}));
|
|
240
232
|
}
|
|
241
233
|
|
|
234
|
+
{
|
|
235
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/richDescription");
|
|
236
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.RichDescription, {}));
|
|
237
|
+
}
|
|
238
|
+
|
|
242
239
|
{
|
|
243
240
|
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/name");
|
|
244
241
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Name, {}));
|
|
@@ -253,6 +250,16 @@ export let registerAllBlocks = function() {
|
|
|
253
250
|
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/visibility");
|
|
254
251
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Visibility, {}));
|
|
255
252
|
}
|
|
253
|
+
|
|
254
|
+
{
|
|
255
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/linkedPage");
|
|
256
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.LinkedPage, {}));
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
{
|
|
260
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/question");
|
|
261
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Question, {}));
|
|
262
|
+
}
|
|
256
263
|
|
|
257
264
|
{
|
|
258
265
|
let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/page");
|
|
@@ -285,7 +292,10 @@ export let registerAllBlocks = function() {
|
|
|
285
292
|
}
|
|
286
293
|
|
|
287
294
|
let newArray = [].concat(objectTypeEditor.editors);
|
|
295
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/question"));
|
|
288
296
|
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/title"));
|
|
297
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/richDescription"));
|
|
298
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/linkedPage"));
|
|
289
299
|
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/link"));
|
|
290
300
|
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/visibility"));
|
|
291
301
|
objectTypeEditor.editors = newArray;
|