dbm 1.1.10 → 1.1.11
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/dbm.js +2 -1
- package/ecommerce/Cart.js +79 -0
- package/ecommerce/CartLineItem.js +44 -0
- package/ecommerce/LocalStorageCartLoader.js +74 -0
- package/ecommerce/index.js +16 -0
- package/graphapi/webclient/decode/index.js +16 -0
- package/package.json +1 -1
- package/react/admin/editor/fields/SelectionField.js +55 -0
- package/react/admin/editor/fields/index.js +2 -1
- package/react/admin/editorsgroup/EditField.js +28 -0
- package/react/admin/editorsgroup/index.js +1 -0
- package/react/admin/index.js +3 -1
- package/react/admin/objects/EditObject.js +50 -0
- package/react/admin/objects/InjectObjectTypeEditor.js +30 -0
- package/react/admin/objects/ObjectList.js +92 -0
- package/react/admin/objects/ObjectListRow.js +35 -0
- package/react/admin/objects/index.js +6 -0
- package/react/admin/objects/itemeditors/Content.js +48 -0
- package/react/admin/objects/itemeditors/Link.js +46 -0
- package/react/admin/objects/itemeditors/Name.js +46 -0
- package/react/admin/objects/itemeditors/Title.js +46 -0
- package/react/admin/objects/itemeditors/Visibility.js +44 -0
- package/react/admin/objects/itemeditors/index.js +5 -0
- package/react/admin/website/EditWebsite.js +8 -7
- package/react/area/List.js +7 -2
- package/react/blocks/admin/index.js +1 -0
- package/react/blocks/admin/objects/Edit.js +42 -0
- package/react/blocks/admin/objects/List.js +17 -0
- package/react/blocks/admin/objects/index.js +2 -0
- package/react/blocks/content/ContentBlock.js +47 -0
- package/react/blocks/content/index.js +2 -1
- package/react/blocks/faq/AskAQuestion.js +155 -0
- package/react/blocks/faq/index.js +1 -0
- package/react/blocks/index.js +124 -0
- package/site/SiteNavigation.js +6 -5
- package/updater/PropertyUpdater.js +10 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class Name 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
|
+
["name"]
|
|
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: "Name"},
|
|
38
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "name"},
|
|
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 Title 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
|
+
["title"]
|
|
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: "Title"},
|
|
38
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "title"},
|
|
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,44 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class Visibility 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
|
+
["visibility"]
|
|
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: "Visibility"},
|
|
38
|
+
Dbm.react.text.text(Dbm.react.source.contextVariable("item.visibility"))
|
|
39
|
+
)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
@@ -110,7 +110,7 @@ export default class EditWebsite extends Dbm.react.BaseObject {
|
|
|
110
110
|
console.log("_localBusinessesLoaded");
|
|
111
111
|
console.log(aRequest);
|
|
112
112
|
|
|
113
|
-
this.item.localBusinesses = aRequest.items;
|
|
113
|
+
this.item.localBusinesses = [].concat(aRequest.items);
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
_allLoaded() {
|
|
@@ -132,20 +132,21 @@ export default class EditWebsite extends Dbm.react.BaseObject {
|
|
|
132
132
|
|
|
133
133
|
let editorGroup = this.item.editorGroup;
|
|
134
134
|
|
|
135
|
-
return React.createElement("div", {},
|
|
135
|
+
return React.createElement("div", {"className": "content-narrow"},
|
|
136
136
|
React.createElement(Dbm.react.area.HasData, {"check": this.item.properties.loaded},
|
|
137
137
|
React.createElement(Dbm.react.context.AddContextVariables, {values: {"editorGroup": editorGroup}},
|
|
138
138
|
React.createElement(Dbm.react.context.AddContextVariables, {values: {"itemEditor": this.item.properties.websiteEditor}},
|
|
139
|
-
React.createElement(Dbm.react.form.
|
|
139
|
+
React.createElement(Dbm.react.form.LabelledArea, {"label": "Website name"},
|
|
140
|
+
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_name.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
|
|
141
|
+
)
|
|
140
142
|
),
|
|
141
143
|
React.createElement("div", {className: "spacing standard"}),
|
|
142
144
|
React.createElement(Dbm.react.context.AddContextVariables, {values: {"itemEditor": this.item.properties.organizationEditor}},
|
|
143
|
-
React.createElement(Dbm.react.form.LabelledArea, {"label": "
|
|
144
|
-
React.createElement(Dbm.react.form.
|
|
145
|
-
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_name.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
|
|
146
|
-
)
|
|
145
|
+
React.createElement(Dbm.react.form.LabelledArea, {"label": "Organization name"},
|
|
146
|
+
React.createElement(Dbm.react.form.FormField, {"value": Dbm.react.source.contextVariable("itemEditor.value.item.editor_name.item.editValue.item.properties.value"), className: "standard-field standard-field-padding full-width"}),
|
|
147
147
|
)
|
|
148
148
|
),
|
|
149
|
+
React.createElement("h2", {}, "Local business"),
|
|
149
150
|
React.createElement(Dbm.react.area.List, {items: this.item.properties.localBusinesses},
|
|
150
151
|
React.createElement(Dbm.react.admin.website.EditLocalBusiness, {})
|
|
151
152
|
),
|
package/react/area/List.js
CHANGED
|
@@ -28,7 +28,7 @@ export default class List extends Dbm.react.BaseObject {
|
|
|
28
28
|
|
|
29
29
|
let currentArray = items;
|
|
30
30
|
if(!currentArray || isNaN(currentArray.length)) {
|
|
31
|
-
console.error("Items is not an array", this);
|
|
31
|
+
console.error("Items is not an array", currentArray, this);
|
|
32
32
|
return null;
|
|
33
33
|
}
|
|
34
34
|
let currentArrayLength = currentArray.length;
|
|
@@ -37,10 +37,15 @@ export default class List extends Dbm.react.BaseObject {
|
|
|
37
37
|
if(spacingElement && i > 0) {
|
|
38
38
|
newChildren.push(React.createElement(React.Fragment, {key: "spacing" + (i-1)}, spacingElement));
|
|
39
39
|
}
|
|
40
|
+
|
|
40
41
|
let currentItem = currentArray[i];
|
|
42
|
+
let key = currentItem;
|
|
43
|
+
if(keyField !== "(root)") {
|
|
44
|
+
key = Dbm.objectPath(currentItem, keyField);
|
|
45
|
+
}
|
|
46
|
+
|
|
41
47
|
let values = {};
|
|
42
48
|
values[as] = currentItem;
|
|
43
|
-
let key = Dbm.objectPath(currentItem, keyField);
|
|
44
49
|
newChildren.push(React.createElement(Dbm.react.context.AddContextVariables, {key: key, values: values}, mainChildren));
|
|
45
50
|
}
|
|
46
51
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as objects from "./objects/index.js";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class Edit extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let editorGroup = new Dbm.graphapi.webclient.admin.EditorGroup();
|
|
9
|
+
this.item.setValue("editorGroup", editorGroup);
|
|
10
|
+
this.item.requireProperty("changed", false).connectInput(editorGroup.item.properties.changed);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
_save() {
|
|
14
|
+
console.log("_save");
|
|
15
|
+
|
|
16
|
+
let editorGroup = this.item.editorGroup;
|
|
17
|
+
|
|
18
|
+
let saveData = editorGroup.getSaveData();
|
|
19
|
+
|
|
20
|
+
saveData.save();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
_renderMainElement() {
|
|
24
|
+
|
|
25
|
+
let url = new URL(document.location.href);
|
|
26
|
+
let id = url.searchParams.get("id");
|
|
27
|
+
|
|
28
|
+
return React.createElement("div", {className: "content-narrow"},
|
|
29
|
+
React.createElement(Dbm.react.context.AddContextVariables, {values: {"editorGroup": this.item.editorGroup}},
|
|
30
|
+
React.createElement(Dbm.react.admin.objects.EditObject, {id: id}),
|
|
31
|
+
React.createElement("div", {className: "spacing standard"}),
|
|
32
|
+
React.createElement("div", {className: "save-all-position"},
|
|
33
|
+
React.createElement(Dbm.react.area.OpenCloseExpandableArea, {open: this.item.properties.changed},
|
|
34
|
+
React.createElement("div", {"className": "standard-button standard-button-padding", "onClick": () => {this._save()}},
|
|
35
|
+
"Save all changes"
|
|
36
|
+
)
|
|
37
|
+
)
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class ObjectList extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
_renderMainElement() {
|
|
10
|
+
|
|
11
|
+
let encodings = Dbm.utils.ArrayFunctions.arrayOrSeparatedString(this.context.blockData.encodings);
|
|
12
|
+
|
|
13
|
+
return React.createElement("div", {className: "content-narrow"},
|
|
14
|
+
React.createElement(Dbm.react.admin.objects.ObjectList, {objectType: this.context.blockData.objectType, encodings: encodings, nameField: this.context.blockData.nameField, visibility: this.context.blockData.visibility})
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class ContentBlock extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let contentBlockId = this.context.blockData.contentBlock;
|
|
9
|
+
|
|
10
|
+
this.item.requireProperty("item", null);
|
|
11
|
+
|
|
12
|
+
let graphApi = Dbm.getInstance().repository.getItem("cachedGraphApi").controller;
|
|
13
|
+
{
|
|
14
|
+
let request = graphApi.requestRange(
|
|
15
|
+
[
|
|
16
|
+
{type: "includeDraft"},
|
|
17
|
+
{type: "idSelection", "ids": [contentBlockId]}
|
|
18
|
+
],
|
|
19
|
+
["content"]
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
this.item.requireProperty("loadedStatus", 0);
|
|
23
|
+
Dbm.flow.addUpdateCommandWhenMatched(this.item.properties.loadedStatus, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(this._loaded.bind(this), [request]));
|
|
24
|
+
this.item.properties.loadedStatus.connectInput(request.properties.status);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
_loaded(aRequest) {
|
|
29
|
+
console.log("_loaded");
|
|
30
|
+
this.item.item = aRequest.items[0];
|
|
31
|
+
console.log(aRequest);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
_renderMainElement() {
|
|
35
|
+
|
|
36
|
+
let element = Dbm.getInstance().repository.getItem("contentBlock").element;
|
|
37
|
+
|
|
38
|
+
return React.createElement("div", {},
|
|
39
|
+
React.createElement(Dbm.react.area.HasData, {check: this.item.properties.item},
|
|
40
|
+
React.createElement(Dbm.react.context.AddItemToContext, {item: this.item.properties.item, "as": "page"},
|
|
41
|
+
element
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {default as Card} from "./Card.js";
|
|
1
|
+
export {default as Card} from "./Card.js";
|
|
2
|
+
export {default as ContentBlock} from "./ContentBlock.js";
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class AskAQuestion extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
this.item.requireProperty("searchText", "");
|
|
9
|
+
this.item.requireProperty("currentQuery", "");
|
|
10
|
+
|
|
11
|
+
this.item.requireProperty("state", "start");
|
|
12
|
+
|
|
13
|
+
this.item.requireProperty("results", []);
|
|
14
|
+
|
|
15
|
+
let switchValue = Dbm.flow.updatefunctions.logic.switchValue(this.item.properties.state);
|
|
16
|
+
|
|
17
|
+
switchValue.addCase("start", React.createElement("div", null, React.createElement(Dbm.react.text.Link, {
|
|
18
|
+
href: Dbm.react.source.blockData("url1"),
|
|
19
|
+
className: "custom-styled-link"
|
|
20
|
+
}, React.createElement("div", {
|
|
21
|
+
className: "standard-row hover-row faq-row-padding"
|
|
22
|
+
}, React.createElement("div", {
|
|
23
|
+
className: "flex-row small-item-spacing"
|
|
24
|
+
}, React.createElement("div", {
|
|
25
|
+
className: "flex-row-item flex-resize"
|
|
26
|
+
}, Dbm.react.text.text(Dbm.react.source.blockData("text1"))), React.createElement("div", {
|
|
27
|
+
className: "flex-row-item flex-no-resize"
|
|
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 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 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."));
|
|
75
|
+
|
|
76
|
+
this.item.requireProperty("resultElement", null).connectInput(switchValue.output.properties.value);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
_dataLoaded(aQuery, aRequest) {
|
|
80
|
+
//console.log("_dataLoaded");
|
|
81
|
+
//console.log(aQuery, aRequest);
|
|
82
|
+
|
|
83
|
+
if(aQuery === this.item.currentQuery) {
|
|
84
|
+
let ids = Dbm.objectPath(aRequest, "data.answers");
|
|
85
|
+
if(ids.length > 0) {
|
|
86
|
+
let items = Dbm.getInstance().repository.getItems(ids);
|
|
87
|
+
this.item.results = items;
|
|
88
|
+
this.item.state = "results";
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.item.state = "noResults";
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
_search() {
|
|
97
|
+
console.log("_search");
|
|
98
|
+
|
|
99
|
+
this.item.state = "loading";
|
|
100
|
+
|
|
101
|
+
let currentQuery = this.item.searchText;
|
|
102
|
+
this.item.currentQuery = currentQuery;
|
|
103
|
+
|
|
104
|
+
let graphApi = Dbm.getInstance().repository.getItem("graphApi").controller;
|
|
105
|
+
|
|
106
|
+
let request = graphApi.requestData("question", {"value": currentQuery});
|
|
107
|
+
Dbm.flow.addUpdateCommandWhenMatched(request.properties.status, Dbm.loading.LoadingStatus.LOADED, Dbm.commands.callFunction(this._dataLoaded.bind(this), [currentQuery, request]));
|
|
108
|
+
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
_renderMainElement() {
|
|
112
|
+
return React.createElement("div", {
|
|
113
|
+
className: "content-narrow"
|
|
114
|
+
}, React.createElement("form", {
|
|
115
|
+
onSubmit: aEvent => {
|
|
116
|
+
aEvent.preventDefault();
|
|
117
|
+
this._search();
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
React.createElement(Dbm.react.form.LabelledArea, {
|
|
122
|
+
label: "How can we help?"
|
|
123
|
+
}, React.createElement("div", {
|
|
124
|
+
className: "standard-field"
|
|
125
|
+
}, React.createElement("div", {
|
|
126
|
+
className: "flex-row small-item-spacing"
|
|
127
|
+
}, React.createElement("div", {
|
|
128
|
+
className: "flex-row-item flex-resize"
|
|
129
|
+
}, React.createElement(Dbm.react.form.FormField, {
|
|
130
|
+
className: "standard-field-padding-left-side full-width integrated-field",
|
|
131
|
+
value: this.item.properties.searchText,
|
|
132
|
+
placeholder: "Ask us anything"
|
|
133
|
+
})), React.createElement("div", {
|
|
134
|
+
className: "flex-row-item flex-no-resize"
|
|
135
|
+
}, React.createElement("div", {
|
|
136
|
+
className: "submit-button-field-padding-right-side border-box-sizing full-height"
|
|
137
|
+
}, React.createElement("button", {
|
|
138
|
+
className: "skip-default full-height"
|
|
139
|
+
}, React.createElement("div", {
|
|
140
|
+
className: "field-submit-button field-submit-button-padding full-height",
|
|
141
|
+
onClick: () => {
|
|
142
|
+
this._search();
|
|
143
|
+
}
|
|
144
|
+
}, React.createElement("div", {
|
|
145
|
+
className: "centered-cell-holder full-size"
|
|
146
|
+
}, React.createElement(Dbm.react.image.Image, {
|
|
147
|
+
src: "/assets/img/right-arrow.svg",
|
|
148
|
+
className: "right-arrow-link-icon background-contain"
|
|
149
|
+
})))))))))), React.createElement("div", {
|
|
150
|
+
className: "spacing small"
|
|
151
|
+
}), React.createElement(Dbm.react.area.InsertElement, {
|
|
152
|
+
element: this.item.properties.resultElement
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {default as AskAQuestion} from "./AskAQuestion.js";
|
package/react/blocks/index.js
CHANGED
|
@@ -3,6 +3,9 @@ import {createElement} from "react";
|
|
|
3
3
|
|
|
4
4
|
export * as gallery from "./gallery/index.js";
|
|
5
5
|
export * as content from "./content/index.js";
|
|
6
|
+
export * as admin from "./admin/index.js";
|
|
7
|
+
export * as faq from "./faq/index.js";
|
|
8
|
+
|
|
6
9
|
export {default as Image} from "./Image.js";
|
|
7
10
|
|
|
8
11
|
export let createToolConfiguration = function(aId, aName, aInitialData = {}, aSanitizeSettings = {}, aIcon = null) {
|
|
@@ -105,6 +108,35 @@ export let registerAllBlocks = function() {
|
|
|
105
108
|
registerBlock("admin/pageList", "Admin / Page list", createElement(Dbm.react.admin.pages.PageList), createElement(Dbm.react.admin.pages.PageList));
|
|
106
109
|
registerBlock("admin/website", "Admin / Edit website", createElement(Dbm.react.admin.website.EditWebsite));
|
|
107
110
|
|
|
111
|
+
{
|
|
112
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
113
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Object type"},
|
|
114
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "objectType"})
|
|
115
|
+
),
|
|
116
|
+
createElement("div", {className: "spacing medium"}),
|
|
117
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Encodings"},
|
|
118
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "encodings"})
|
|
119
|
+
),
|
|
120
|
+
createElement("div", {className: "spacing medium"}),
|
|
121
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Name field"},
|
|
122
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "nameField"})
|
|
123
|
+
),
|
|
124
|
+
createElement("div", {className: "spacing medium"}),
|
|
125
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Visibility"},
|
|
126
|
+
createElement(Dbm.react.admin.editor.fields.SelectionField, {name: "visibility"},
|
|
127
|
+
createElement("option", {value: null}, "Default"),
|
|
128
|
+
createElement("option", {value: "draft"}, "Draft"),
|
|
129
|
+
createElement("option", {value: "public"}, "Public"),
|
|
130
|
+
createElement("option", {value: "private"}, "Private"),
|
|
131
|
+
)
|
|
132
|
+
),
|
|
133
|
+
);
|
|
134
|
+
|
|
135
|
+
registerBlock("admin/objects/list", "Admin / Object list", createElement(Dbm.react.blocks.admin.objects.List), editor);
|
|
136
|
+
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
registerBlock("admin/objects/edit", "Admin / Edit object", createElement(Dbm.react.blocks.admin.objects.Edit));
|
|
108
140
|
|
|
109
141
|
{
|
|
110
142
|
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
@@ -165,4 +197,96 @@ export let registerAllBlocks = function() {
|
|
|
165
197
|
);
|
|
166
198
|
registerBlock("content/card", "Card", createElement(Dbm.react.blocks.content.Card, {}), editor, {}, {"title": true, "text": true, "button": true});
|
|
167
199
|
}
|
|
200
|
+
|
|
201
|
+
{
|
|
202
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
203
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Content block"},
|
|
204
|
+
createElement(Dbm.react.admin.editor.fields.SelectObjectField, {name: "contentBlock", "objectType": "contentBlock"})
|
|
205
|
+
)
|
|
206
|
+
);
|
|
207
|
+
registerBlock("content/contentBlock", "Content block", createElement(Dbm.react.blocks.content.ContentBlock, {}), editor, {}, {});
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
{
|
|
211
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
212
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Text 1"},
|
|
213
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "text1"})
|
|
214
|
+
),
|
|
215
|
+
createElement("div", {className: "spacing medium"}),
|
|
216
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Url 1"},
|
|
217
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "url1"})
|
|
218
|
+
),
|
|
219
|
+
createElement("div", {className: "spacing medium"}),
|
|
220
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Text 2"},
|
|
221
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "text2"})
|
|
222
|
+
),
|
|
223
|
+
createElement("div", {className: "spacing medium"}),
|
|
224
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Url 2"},
|
|
225
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "url2"})
|
|
226
|
+
),
|
|
227
|
+
);
|
|
228
|
+
registerBlock("faq/askAQuestion", "FAQ / Ask a question", createElement(Dbm.react.blocks.faq.AskAQuestion, {}), editor, {}, {"text1": true, "text2": true});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
{
|
|
232
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/title");
|
|
233
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Title, {}));
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
{
|
|
237
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/content");
|
|
238
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Content, {}));
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
{
|
|
242
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/name");
|
|
243
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Name, {}));
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
{
|
|
247
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/link");
|
|
248
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Link, {}));
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
{
|
|
252
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/visibility");
|
|
253
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Visibility, {}));
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
{
|
|
257
|
+
let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/page");
|
|
258
|
+
if(!objectTypeEditor.editors) {
|
|
259
|
+
objectTypeEditor.setValue("editors", []);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
let newArray = [].concat(objectTypeEditor.editors);
|
|
263
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/title"));
|
|
264
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/content"));
|
|
265
|
+
objectTypeEditor.editors = newArray;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
{
|
|
269
|
+
let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/contentBlock");
|
|
270
|
+
if(!objectTypeEditor.editors) {
|
|
271
|
+
objectTypeEditor.setValue("editors", []);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
let newArray = [].concat(objectTypeEditor.editors);
|
|
275
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/name"));
|
|
276
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/content"));
|
|
277
|
+
objectTypeEditor.editors = newArray;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
{
|
|
281
|
+
let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/helpSection");
|
|
282
|
+
if(!objectTypeEditor.editors) {
|
|
283
|
+
objectTypeEditor.setValue("editors", []);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
let newArray = [].concat(objectTypeEditor.editors);
|
|
287
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/title"));
|
|
288
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/link"));
|
|
289
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/visibility"));
|
|
290
|
+
objectTypeEditor.editors = newArray;
|
|
291
|
+
}
|
|
168
292
|
}
|