dbm 1.1.14 → 1.1.16

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.
@@ -48,6 +48,12 @@ export default class FlowProperty extends Dbm.flow.FlowBaseObject {
48
48
  return this;
49
49
  }
50
50
 
51
+ delayValue(aToValue, aDelay = 0) {
52
+ Dbm.getInstance().repository.getItem("propertyUpdater").controller.delayUpdateProperty(this, aToValue, aDelay);
53
+
54
+ return this;
55
+ }
56
+
51
57
  getMostUpstreamProperty() {
52
58
 
53
59
  let debugCounter = 0;
@@ -28,8 +28,8 @@ export default class SingleSelection extends Dbm.core.BaseObject {
28
28
  }
29
29
 
30
30
  _selectionChanged(aSelected, aValue) {
31
- //console.log("_selectionChanged");
32
- //console.log(aSelected, aValue);
31
+ console.log("_selectionChanged");
32
+ console.log(aSelected, aValue);
33
33
 
34
34
  if(aSelected) {
35
35
  this.item.properties.value.getMostUpstreamProperty().setValue(aValue);
@@ -0,0 +1,39 @@
1
+ import Dbm from "../../../../index.js";
2
+
3
+ export default class UpdateObjectParent extends Dbm.flow.FlowUpdateFunction {
4
+
5
+ _construct() {
6
+ super._construct();
7
+
8
+ this.input.register("object", null);
9
+ this.input.register("parent", null);
10
+ this.input.register("added", false);
11
+
12
+ this.output.register("dynamicUpdate", 0);
13
+ }
14
+
15
+ _update() {
16
+ console.log("UpdateObjectParent::_update");
17
+
18
+ let dynamicUpdate = this.output.dynamicUpdate;
19
+ dynamicUpdate++;
20
+
21
+ let object = this.input.object;
22
+ //MENOTE: if object is changed, it doesn't remove the old one from the parent
23
+
24
+ if(object) {
25
+ let parent = this.input.parent;
26
+
27
+ if(parent && this.input.added) {
28
+ parent.add(object);
29
+ }
30
+ else {
31
+ if(object.parent) {
32
+ object.parent.remove(object);
33
+ }
34
+ }
35
+ }
36
+
37
+ this.output.dynamicUpdate = dynamicUpdate;
38
+ }
39
+ }
@@ -1,6 +1,7 @@
1
1
  import Dbm from "../../../../index.js";
2
2
 
3
3
  export {default as UpdateObjectPosition} from "./UpdateObjectPosition.js";
4
+ export {default as UpdateObjectParent} from "./UpdateObjectParent.js";
4
5
 
5
6
  export const updateObjectPosition = function(aObject, aX = 0, aY = 0, aZ = 0, aRotationX = 0, aRotationY = 0, aRotationZ = 0, aScaleX = 1, aScaleY = 1, aScaleZ = 1) {
6
7
  let newUpdateObjectPosition = new Dbm.flow.updatefunctions.thirdparty.threejs.UpdateObjectPosition();
@@ -23,4 +24,18 @@ export const updateObjectPosition = function(aObject, aX = 0, aY = 0, aZ = 0, aR
23
24
  newUpdateObjectPosition.output.properties.dynamicUpdate.startUpdating();
24
25
 
25
26
  return newUpdateObjectPosition;
27
+ }
28
+
29
+ export const updateObjectParent = function(aObject, aParent, aAdded = false) {
30
+ let newUpdateFunction = new Dbm.flow.updatefunctions.thirdparty.threejs.UpdateObjectParent();
31
+
32
+ let inputProperties = newUpdateFunction.input.properties;
33
+ inputProperties.object.setOrConnect(aObject);
34
+
35
+ inputProperties.parent.setOrConnect(aParent);
36
+ inputProperties.added.setOrConnect(aAdded);
37
+
38
+ newUpdateFunction.output.properties.dynamicUpdate.startUpdating();
39
+
40
+ return newUpdateFunction;
26
41
  }
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dbm",
3
- "version": "1.1.14",
3
+ "version": "1.1.16",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "scripts": {},
@@ -0,0 +1,80 @@
1
+ import React from "react";
2
+ import Dbm from "../../../../index.js";
3
+
4
+ export default class SelectObjectsField extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ this._valueChangedBound = this._valueChanged.bind(this);
9
+ this._objectChangedBound = this._objectChanged.bind(this);
10
+
11
+ Dbm.flow.addUpdateCommand(this.item.requireProperty("value", this._getObjectData()), Dbm.commands.callFunction(this._valueChangedBound));
12
+
13
+ let editorData = Dbm.objectPath(this.context, "moduleData.editorData");
14
+ Dbm.flow.addUpdateCommand(editorData.properties.data, Dbm.commands.callFunction(this._objectChangedBound));
15
+ }
16
+
17
+ _getObjectData() {
18
+ let fieldName = this.getPropValue("name");
19
+
20
+ let editorData = Dbm.objectPath(this.context, "moduleData.editorData");
21
+
22
+ let returnData = editorData.data[fieldName];
23
+ if(!returnData) {
24
+ returnData = [];
25
+ }
26
+
27
+ return returnData;
28
+ }
29
+
30
+
31
+ _valueChanged() {
32
+ //console.log("_valueChanged");
33
+
34
+ let fieldName = this.getPropValue("name");
35
+ let newValue = this.item.value;
36
+ let editorData = Dbm.objectPath(this.context, "moduleData.editorData");
37
+
38
+ let newData = {...editorData.data};
39
+ newData[fieldName] = newValue;
40
+
41
+ editorData.data = newData;
42
+
43
+ this.context.moduleData.editorData.editorBlock.dataUpdated();
44
+ }
45
+
46
+ _objectChanged() {
47
+ //console.log("_objectChanged");
48
+
49
+ this.item.value = this._getObjectData();
50
+ }
51
+
52
+ _add(aArrayEditor) {
53
+ console.log("_add");
54
+ console.log(aArrayEditor);
55
+
56
+ let newItemData = this.getPropValueWithDefault("newItemData", {});
57
+
58
+ aArrayEditor.push(newItemData);
59
+ }
60
+
61
+ _removeItem(aArrayEditor, aItem) {
62
+ aArrayEditor.removeItem(aItem);
63
+ }
64
+
65
+ _renderMainElement() {
66
+
67
+
68
+ return this._createMainElement(Dbm.react.form.EditArray, {value: this.item.properties.value},
69
+ React.createElement("div", {},
70
+ this.getPropValue("children"),
71
+ React.createElement(Dbm.react.interaction.CommandButton, {command: Dbm.commands.callFunction(this._removeItem, [Dbm.react.source.contextVariable("arrayEditor"), Dbm.react.source.contextVariable("item")])},
72
+ React.createElement("div", {}, "Remove")
73
+ )
74
+ ),
75
+ React.createElement(Dbm.react.interaction.CommandButton, {"data-slot": "after", command: Dbm.commands.callFunction(this._add.bind(this), [Dbm.react.source.contextVariable("arrayEditor")])},
76
+ React.createElement("div", {className: "action-button action-button-padding"}, "Add")
77
+ )
78
+ );
79
+ }
80
+ }
@@ -52,6 +52,6 @@ export default class SelectObjectField extends Dbm.react.BaseObject {
52
52
  }
53
53
 
54
54
  _renderMainElement() {
55
- return this._createMainElement(Dbm.react.form.GraphApiObjectSelection, {value: this.item.properties.value, objectType: this.getPropValue("objectType"), className: "standard-field standard-field-padding full-width"});
55
+ return this._createMainElement(Dbm.react.form.GraphApiObjectSelection, {value: this.item.properties.value, objectType: this.getPropValue("objectType"), encoding: this.getPropValue("encoding"), nameField: this.getPropValue("nameField"), className: "standard-field standard-field-padding full-width"});
56
56
  }
57
57
  }
@@ -19,8 +19,6 @@ export default class SelectObjectsField extends Dbm.react.BaseObject {
19
19
 
20
20
  let editorData = Dbm.objectPath(this.context, "moduleData.editorData");
21
21
 
22
- console.log(">>>>>", editorData);
23
-
24
22
  let returnData = editorData.data[fieldName];
25
23
  if(!returnData) {
26
24
  returnData = [];
@@ -31,7 +29,7 @@ export default class SelectObjectsField extends Dbm.react.BaseObject {
31
29
 
32
30
 
33
31
  _valueChanged() {
34
- console.log("_valueChanged");
32
+ //console.log("_valueChanged");
35
33
 
36
34
  let fieldName = this.getPropValue("name");
37
35
  let newValue = this.item.value;
@@ -4,4 +4,5 @@ export {default as ImageField} from "./ImageField.js";
4
4
  export {default as CheckboxField} from "./CheckboxField.js";
5
5
  export {default as SelectObjectField} from "./SelectObjectField.js";
6
6
  export {default as SelectObjectsField} from "./SelectObjectsField.js";
7
- export {default as SelectionField} from "./SelectionField.js";
7
+ export {default as SelectionField} from "./SelectionField.js";
8
+ export {default as ArrayField} from "./ArrayField.js";
@@ -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,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,3 +1,4 @@
1
1
  export {default as EditField} from "./EditField.js";
2
2
  export {default as EditItem} from "./EditItem.js";
3
- export {default as EditRelation} from "./EditRelation.js";
3
+ export {default as EditRelation} from "./EditRelation.js";
4
+ export {default as EditVisibility} from "./EditVisibility.js";
@@ -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
- Dbm.react.text.text(Dbm.react.source.contextVariable("item.visibility"))
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
 
@@ -4,4 +4,5 @@ export {default as Name} from "./Name.js";
4
4
  export {default as Link} from "./Link.js";
5
5
  export {default as Visibility} from "./Visibility.js";
6
6
  export {default as LinkedPage} from "./LinkedPage.js";
7
- export {default as Question} from "./Question.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
- Dbm.react.text.htmlText(Dbm.react.source.blockData("text")),
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
- Dbm.react.text.text(Dbm.react.source.blockData("buttonText")),
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
- Dbm.react.text.htmlText(Dbm.react.source.blockData("text")),
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
- Dbm.react.text.text(Dbm.react.source.blockData("buttonText")),
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
  )
@@ -27,7 +27,6 @@ export default class ContentBlock extends Dbm.react.BaseObject {
27
27
  _loaded(aRequest) {
28
28
  //console.log("_loaded");
29
29
  this.item.item = aRequest.items[0];
30
-
31
30
  }
32
31
 
33
32
  _renderMainElement() {
@@ -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, 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 faq-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 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.item.results = items;
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";
@@ -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: "Url 1"},
218
- createElement(Dbm.react.admin.editor.fields.TextField, {name: "url1"})
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: "Initial sections"},
218
+ createElement(Dbm.react.admin.editor.fields.SelectObjectsField, {objectType: "helpSection", name:"initialSections", "encoding": "title", "nameField": "title"})
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, {}));
@@ -297,7 +294,7 @@ export let registerAllBlocks = function() {
297
294
  let newArray = [].concat(objectTypeEditor.editors);
298
295
  newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/question"));
299
296
  newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/title"));
300
- newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/content"));
297
+ newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/richDescription"));
301
298
  newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/linkedPage"));
302
299
  newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/link"));
303
300
  newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/visibility"));
@@ -156,6 +156,8 @@ export default class CookieBar extends Dbm.react.BaseObject {
156
156
  Dbm.getInstance().repository.getItem("trackingController").allowStatistics = true;
157
157
  Dbm.getInstance().repository.getItem("trackingController").allowMarketing = true;
158
158
 
159
+ Dbm.getInstance().repository.getItem("userSettings").setValue("hideCookieBar", true);
160
+
159
161
  this.getDynamicProp("open").getMostUpstreamProperty().setValue(false);
160
162
  }
161
163
 
@@ -175,6 +177,8 @@ export default class CookieBar extends Dbm.react.BaseObject {
175
177
  Dbm.getInstance().repository.getItem("trackingController").allowStatistics = false;
176
178
  Dbm.getInstance().repository.getItem("trackingController").allowMarketing = false;
177
179
 
180
+ Dbm.getInstance().repository.getItem("userSettings").setValue("hideCookieBar", true);
181
+
178
182
  this.getDynamicProp("open").getMostUpstreamProperty().setValue(false);
179
183
  }
180
184
 
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import Dbm from "../../index.js";
3
+
4
+ export default class EditObjectProperty extends Dbm.react.BaseObject {
5
+ _construct() {
6
+ super._construct();
7
+
8
+ this._valueSelector = new Dbm.flow.controllers.transform.PartOfObject();
9
+
10
+ this._valueSelector.item.properties.object.connectInput(this.getDynamicPropWithoutState("value", {}));
11
+ this._valueSelector.item.properties.path.connectInput(this.getDynamicPropWithoutState("path", {}));
12
+
13
+ this.item.requireProperty("value", []).connectInput(this._valueSelector.item.properties.value);
14
+
15
+ }
16
+
17
+ _renderMainElement() {
18
+
19
+ let children = this.getPropValue("children");
20
+
21
+ return this._createMainElement("div", {},
22
+ React.createElement(Dbm.react.context.AddContextVariables, {values: {"value": this.item.properties.value}},
23
+ children
24
+ )
25
+ );
26
+ }
27
+ }
28
+
@@ -7,4 +7,5 @@ export {default as GraphApiObjectSelection} from "./GraphApiObjectSelection.js";
7
7
  export {default as GraphApiSelectOrCreateObject} from "./GraphApiSelectOrCreateObject.js";
8
8
  export {default as GraphApiImage} from "./GraphApiImage.js";
9
9
  export {default as EditArray} from "./EditArray.js";
10
- export {default as TextArea} from "./TextArea.js";
10
+ export {default as TextArea} from "./TextArea.js";
11
+ export {default as EditObjectProperty} from "./EditObjectProperty.js";
@@ -40,6 +40,9 @@ export default class Controller extends Dbm.core.BaseObject {
40
40
  setupPermissionsFromCookies() {
41
41
  this.item.allowStatistics = Cookies.get("cookie/allowStatistics") === "1";
42
42
  this.item.allowMarketing = Cookies.get("cookie/allowMarketing") === "1";
43
+
44
+ let cookieBarHiddenInitialSetting = Cookies.get("cookie/hideCookieBar") === "1";
45
+ let showingCookieBar = Dbm.getInstance().repository.getItem("userSettings").setValue("hideCookieBar", cookieBarHiddenInitialSetting);
43
46
 
44
47
  return this;
45
48
  }
@@ -108,7 +108,30 @@ export default class PropertyUpdater extends Dbm.core.BaseObject {
108
108
  if(!aEasing) {
109
109
  aEasing = Easing.Quadratic.Out;
110
110
  }
111
- let tween = new Tween(tweenObject).to({"envelope": aToValue}, 1000*aTime).delay(1000*aDelay).easing(aEasing).onUpdate(function(aData) {aProperty.value = aData.envelope}).onComplete(() => {this.removeTween(tween)}).start();
111
+
112
+ let tween = new Tween(tweenObject).to({"envelope": aToValue}, 1000*aTime).delay(1000*aDelay).easing(aEasing).onUpdate(function(aData) {
113
+ aProperty.value = aData.envelope;
114
+ }).onComplete(() => {this.removeTween(tween)}).start();
115
+
116
+ let tweens = [].concat(this.item.tweens);
117
+ tweens.push(tween);
118
+ this.item.tweens = tweens;
119
+
120
+ this._currentTweens.set(aProperty, tween);
121
+
122
+ return this;
123
+ }
124
+
125
+ delayUpdateProperty(aProperty, aToValue, aDelay = 0) {
126
+ if(this._currentTweens.has(aProperty)) {
127
+ this._currentTweens.get(aProperty).stop();
128
+ }
129
+
130
+ let tweenObject = {"envelope": aProperty.value};
131
+
132
+ let tween = new Tween(tweenObject).to({"envelope": aToValue}, 0).delay(1000*aDelay).onUpdate(function(aData) {
133
+ aProperty.value = aToValue;
134
+ }).onComplete(() => {this.removeTween(tween)}).start();
112
135
 
113
136
  let tweens = [].concat(this.item.tweens);
114
137
  tweens.push(tween);