dbm 1.2.0 → 1.2.2
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/core/source/FirstSource.js +36 -0
- package/core/source/index.js +21 -0
- package/dbm.js +8 -0
- package/flow/controllers/index.js +2 -1
- package/flow/controllers/select/InArray.js +67 -0
- package/flow/controllers/select/index.js +2 -1
- package/flow/controllers/timing/IntervalStep.js +60 -0
- package/flow/controllers/timing/index.js +1 -0
- package/flow/index.js +13 -3
- package/flow/updatefunctions/animation/AnimateValue.js +39 -0
- package/flow/updatefunctions/animation/index.js +13 -0
- package/flow/updatefunctions/basic/MappedList.js +49 -0
- package/flow/updatefunctions/basic/PropertyOf.js +1 -1
- package/flow/updatefunctions/basic/PropertyOfWithDefault.js +28 -0
- package/flow/updatefunctions/basic/Translation.js +71 -0
- package/flow/updatefunctions/basic/index.js +77 -0
- package/flow/updatefunctions/index.js +1 -0
- package/flow/updatefunctions/logic/FloatMod.js +26 -0
- package/flow/updatefunctions/logic/PositionedItems.js +1 -1
- package/flow/updatefunctions/logic/index.js +18 -0
- package/flow/updatefunctions/thirdparty/google/index.js +3 -0
- package/flow/updatefunctions/thirdparty/google/maps/AutoComplete.js +132 -0
- package/flow/updatefunctions/thirdparty/google/maps/PlaceDetails.js +80 -0
- package/flow/updatefunctions/thirdparty/google/maps/index.js +4 -0
- package/flow/updatefunctions/thirdparty/index.js +2 -1
- package/graphapi/webclient/ApiConnection.js +2 -0
- package/graphapi/webclient/WebSocketConnection.js +1 -0
- package/graphapi/webclient/admin/EditorGroup.js +1 -1
- package/graphapi/webclient/admin/ItemEditor.js +39 -0
- package/graphapi/webclient/admin/ItemSaveData.js +6 -0
- package/graphapi/webclient/admin/SaveFunctions.js +4 -0
- package/graphapi/webclient/admin/ValueEditor.js +15 -0
- package/graphapi/webclient/decode/DecodeBaseObject.js +4 -0
- package/graphapi/webclient/decode/index.js +32 -1
- package/graphapi/webclient/index.js +41 -0
- package/package.json +1 -1
- package/react/admin/EditObject.js +52 -0
- package/react/admin/EditObjectById.js +2 -3
- package/react/admin/EditPage.js +18 -0
- package/react/admin/EditorGroup.js +23 -0
- package/react/admin/SaveAllButton.js +34 -0
- package/react/admin/editorsgroup/EditField.js +2 -2
- package/react/admin/editorsgroup/EditFieldTranslation.js +27 -0
- package/react/admin/editorsgroup/EditIdentifer.js +3 -3
- package/react/admin/editorsgroup/EditItem.js +1 -1
- package/react/admin/editorsgroup/EditRelation.js +2 -2
- package/react/admin/editorsgroup/EditVisibility.js +2 -2
- package/react/admin/editorsgroup/index.js +2 -1
- package/react/admin/index.js +3 -0
- package/react/admin/objects/EditObject.js +9 -4
- package/react/admin/objects/itemeditors/Name.js +31 -29
- package/react/admin/pageeditors/LinkPreviews.js +98 -0
- package/react/admin/pageeditors/index.js +1 -0
- package/react/area/FixedWidthInfiniteSlideshow.js +50 -0
- package/react/area/List.js +4 -0
- package/react/area/index.js +1 -0
- package/react/blocks/admin/objects/RunObjectCommands.js +0 -14
- package/react/blocks/admin/objects/User.js +29 -1
- package/react/blocks/content/LinkList.js +67 -0
- package/react/blocks/content/LinkListCard.js +83 -0
- package/react/blocks/content/index.js +3 -1
- package/react/blocks/faq/AskAQuestion.js +1 -1
- package/react/blocks/index.js +34 -0
- package/react/form/Option.js +18 -0
- package/react/form/index.js +2 -1
- package/react/text/HtmlText.js +6 -1
- package/react/text/NumberDisplay.js +30 -0
- package/react/text/OptionalLink.js +21 -0
- package/react/text/TranslatedText.js +25 -0
- package/react/text/TranslationGroup.js +24 -0
- package/react/text/index.js +10 -2
- package/site/SiteDataLoader.js +8 -13
- package/site/index.js +2 -0
- package/site/translation/TranslationLoader.js +59 -0
- package/site/translation/index.js +27 -0
- package/utils/ArrayFunctions.js +16 -0
- package/utils/CompareFunctions.js +24 -0
- package/utils/StringFunctions.js +18 -3
- package/utils/index.js +3 -1
- package/utils/thirdparty/index.js +1 -0
- package/utils/thirdparty/wprrapi/WprrApiParser.js +31 -0
- package/utils/thirdparty/wprrapi/index.js +3 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class EditFieldTranslation extends Dbm.react.BaseObject {
|
|
5
|
+
_constructAfterProps() {
|
|
6
|
+
super._constructAfterProps();
|
|
7
|
+
|
|
8
|
+
let item = this.context.item;
|
|
9
|
+
let itemEditor = this.context.itemEditor;
|
|
10
|
+
let language = this.getPropValue("language");
|
|
11
|
+
let fieldName = this.getPropValue("fieldName");
|
|
12
|
+
let initialDataPath = this.getPropValueWithDefault("initialDataPath", "fields/translations." + fieldName + "." + language);
|
|
13
|
+
let initialData = Dbm.objectPath(item, initialDataPath);
|
|
14
|
+
|
|
15
|
+
let editor = itemEditor.addFieldTranslationEditor(fieldName, language, initialData);
|
|
16
|
+
this.item.setValue("editor", editor.item);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
_renderMainElement() {
|
|
20
|
+
|
|
21
|
+
let children = this.getPropValue("children")
|
|
22
|
+
|
|
23
|
+
return React.createElement("div", {},
|
|
24
|
+
React.createElement(Dbm.react.context.AddContextVariables, {"values": {"valueEditor": this.item.editor}}, children)
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import Dbm from "../../../index.js";
|
|
3
3
|
|
|
4
|
-
export default class
|
|
5
|
-
|
|
6
|
-
super.
|
|
4
|
+
export default class EditIdentifier extends Dbm.react.BaseObject {
|
|
5
|
+
_constructAfterProps() {
|
|
6
|
+
super._constructAfterProps();
|
|
7
7
|
|
|
8
8
|
let item = this.context.item;
|
|
9
9
|
let itemEditor = this.context.itemEditor;
|
|
@@ -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", "visibility"]
|
|
25
|
+
["admin_fields", "admin_fieldTranslations", "relations", "visibility"]
|
|
26
26
|
);
|
|
27
27
|
allLoaded.addCheck(request.properties.status);
|
|
28
28
|
}
|
|
@@ -2,8 +2,8 @@ import React from "react";
|
|
|
2
2
|
import Dbm from "../../../index.js";
|
|
3
3
|
|
|
4
4
|
export default class EditRelation extends Dbm.react.BaseObject {
|
|
5
|
-
|
|
6
|
-
super.
|
|
5
|
+
_constructAfterProps() {
|
|
6
|
+
super._constructAfterProps();
|
|
7
7
|
|
|
8
8
|
let item = this.context.item;
|
|
9
9
|
let itemEditor = this.context.itemEditor;
|
|
@@ -2,8 +2,8 @@ import React from "react";
|
|
|
2
2
|
import Dbm from "../../../index.js";
|
|
3
3
|
|
|
4
4
|
export default class EditVisibility extends Dbm.react.BaseObject {
|
|
5
|
-
|
|
6
|
-
super.
|
|
5
|
+
_constructAfterProps() {
|
|
6
|
+
super._constructAfterProps();
|
|
7
7
|
|
|
8
8
|
let item = this.context.item;
|
|
9
9
|
let itemEditor = this.context.itemEditor;
|
|
@@ -2,4 +2,5 @@ export {default as EditField} from "./EditField.js";
|
|
|
2
2
|
export {default as EditItem} from "./EditItem.js";
|
|
3
3
|
export {default as EditRelation} from "./EditRelation.js";
|
|
4
4
|
export {default as EditVisibility} from "./EditVisibility.js";
|
|
5
|
-
export {default as EditIdentifer} from "./EditIdentifer.js";
|
|
5
|
+
export {default as EditIdentifer} from "./EditIdentifer.js";
|
|
6
|
+
export {default as EditFieldTranslation} from "./EditFieldTranslation.js";
|
package/react/admin/index.js
CHANGED
|
@@ -3,6 +3,9 @@ export {default as EditPage} from "./EditPage.js";
|
|
|
3
3
|
export {default as SelectImageFromLibrary} from "./SelectImageFromLibrary.js";
|
|
4
4
|
export {default as SelectedImage} from "./SelectedImage.js";
|
|
5
5
|
export {default as EditObjectById} from "./EditObjectById.js";
|
|
6
|
+
export {default as EditorGroup} from "./EditorGroup.js";
|
|
7
|
+
export {default as SaveAllButton} from "./SaveAllButton.js";
|
|
8
|
+
export {default as EditObject} from "./EditObject.js";
|
|
6
9
|
|
|
7
10
|
export * as editor from "./editor/index.js";
|
|
8
11
|
export * as pages from "./pages/index.js";
|
|
@@ -33,15 +33,20 @@ export default class EditObject extends Dbm.react.BaseObject {
|
|
|
33
33
|
|
|
34
34
|
let id = this.getPropValue("id");
|
|
35
35
|
let item = Dbm.getInstance().repository.getItem(id);
|
|
36
|
-
let itemEditor = this.context.editorGroup.getItemEditor(id);
|
|
37
36
|
|
|
38
37
|
return React.createElement("div", {},
|
|
39
38
|
|
|
40
39
|
React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
|
|
41
|
-
React.createElement(Dbm.react.context.AddContextVariables, {"values": {"item": item
|
|
42
|
-
React.createElement(Dbm.react.
|
|
43
|
-
React.createElement(Dbm.react.
|
|
40
|
+
React.createElement(Dbm.react.context.AddContextVariables, {"values": {"item": item}},
|
|
41
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditItem, {},
|
|
42
|
+
React.createElement(Dbm.react.area.List, {items: Dbm.react.source.contextVariable("item.objectTypes"), "as": "objectType", "keyField": "(root)"},
|
|
43
|
+
Dbm.react.text.text(Dbm.react.source.contextVariable("objectType"))
|
|
44
|
+
),
|
|
45
|
+
React.createElement(Dbm.react.area.List, {items: Dbm.react.source.contextVariable("item.objectTypes"), "as": "objectType", "keyField": "(root)"},
|
|
46
|
+
React.createElement(Dbm.react.admin.objects.InjectObjectTypeEditor, {type: Dbm.react.source.contextVariable("objectType")})
|
|
47
|
+
)
|
|
44
48
|
)
|
|
49
|
+
|
|
45
50
|
)
|
|
46
51
|
)
|
|
47
52
|
|
|
@@ -4,43 +4,45 @@ import Dbm from "../../../../index.js";
|
|
|
4
4
|
export default class Name extends Dbm.react.BaseObject {
|
|
5
5
|
_construct() {
|
|
6
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
7
|
}
|
|
29
8
|
|
|
30
9
|
_renderMainElement() {
|
|
31
10
|
|
|
32
|
-
|
|
11
|
+
/*
|
|
12
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditFieldTranslation, {"fieldName": fieldNameSource, "language": "sv"},
|
|
13
|
+
React.createElement(Dbm.react.form.FormField, {value: editorValueSource, className: "standard-field standard-field-padding full-width"})
|
|
14
|
+
),
|
|
15
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditFieldTranslation, {"fieldName": fieldNameSource, "language": "en"},
|
|
16
|
+
React.createElement(Dbm.react.form.FormField, {value: editorValueSource, className: "standard-field standard-field-padding full-width"})
|
|
17
|
+
),
|
|
18
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditFieldTranslation, {"fieldName": fieldNameSource, "language": "fi"},
|
|
19
|
+
React.createElement(Dbm.react.form.FormField, {value: editorValueSource, className: "standard-field standard-field-padding full-width"})
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
let label = "Name";
|
|
25
|
+
let fieldName = "name";
|
|
26
|
+
|
|
27
|
+
let fieldNameSource = Dbm.react.source.contextVariable("fieldName");
|
|
28
|
+
let editorValueSource = Dbm.react.source.contextVariable("valueEditor.editValue.value");
|
|
33
29
|
|
|
34
30
|
return React.createElement("div", {},
|
|
35
|
-
|
|
36
|
-
React.createElement(Dbm.react.
|
|
37
|
-
React.createElement(Dbm.react.
|
|
38
|
-
React.createElement(Dbm.react.
|
|
39
|
-
|
|
31
|
+
React.createElement("label", {className: "standard-field-label"}, label),
|
|
32
|
+
React.createElement(Dbm.react.context.AddContextVariables, {values: {"fieldName": fieldName}},
|
|
33
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": fieldNameSource},
|
|
34
|
+
React.createElement(Dbm.react.form.FormField, {value: editorValueSource, className: "standard-field standard-field-padding full-width"})
|
|
35
|
+
),
|
|
36
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditFieldTranslation, {"fieldName": fieldNameSource, "language": "sv"},
|
|
37
|
+
React.createElement(Dbm.react.form.FormField, {value: editorValueSource, className: "standard-field standard-field-padding full-width"})
|
|
38
|
+
),
|
|
39
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditFieldTranslation, {"fieldName": fieldNameSource, "language": "en"},
|
|
40
|
+
React.createElement(Dbm.react.form.FormField, {value: editorValueSource, className: "standard-field standard-field-padding full-width"})
|
|
41
|
+
),
|
|
42
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditFieldTranslation, {"fieldName": fieldNameSource, "language": "fi"},
|
|
43
|
+
React.createElement(Dbm.react.form.FormField, {value: editorValueSource, className: "standard-field standard-field-padding full-width"})
|
|
40
44
|
)
|
|
41
|
-
)
|
|
42
45
|
)
|
|
43
|
-
|
|
44
46
|
)
|
|
45
47
|
}
|
|
46
48
|
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class LinkPreview extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let item = this.context.item;
|
|
9
|
+
let itemEditor = this.context.itemEditor;
|
|
10
|
+
|
|
11
|
+
{
|
|
12
|
+
let direction = "in";
|
|
13
|
+
let relationType = "for";
|
|
14
|
+
let objectType = "linkPreview";
|
|
15
|
+
let relations = Dbm.utils.ArrayFunctions.filterByField(Dbm.objectPath(item, "relations/" + direction + "." + relationType + ".objects"), "objectTypes", objectType, "arrayContains");
|
|
16
|
+
let editor = itemEditor.addMultipleIncomingRelationsEditor(relationType, objectType, Dbm.utils.ArrayFunctions.mapField(relations, "id"), ["relations"]);
|
|
17
|
+
console.log(relations, editor);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
_addArrayRow(aArrayEditor) {
|
|
22
|
+
console.log("_addArrayRow");
|
|
23
|
+
|
|
24
|
+
let changes = [
|
|
25
|
+
{"type": "addOutgoingRelation", "data": {"value": this.context.item.id, "type": "for"}}
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
//METODO: set update date
|
|
29
|
+
|
|
30
|
+
let request = Dbm.getInstance().repository.getItem("graphApi").controller.createItem(["linkPreview"], "public", changes, ["id"]);
|
|
31
|
+
|
|
32
|
+
Dbm.flow.addUpdateCommandWhenMatched(request.properties.status, 1, Dbm.commands.callFunction(this._created.bind(this), [request, aArrayEditor]));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
_created(aRequest, aArrayEditor) {
|
|
36
|
+
console.log("_created");
|
|
37
|
+
console.log(aRequest);
|
|
38
|
+
|
|
39
|
+
aArrayEditor.push(aRequest.item.id);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
_removeArrayRow(aArrayEditor, aItem) {
|
|
43
|
+
aArrayEditor.removeItem(aItem);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
_renderMainElement() {
|
|
47
|
+
|
|
48
|
+
let direction = "in";
|
|
49
|
+
let relationType = "for";
|
|
50
|
+
let objectType = "linkPreview";
|
|
51
|
+
|
|
52
|
+
return React.createElement("div", {},
|
|
53
|
+
React.createElement("h2", {}, "Preview in list"),
|
|
54
|
+
|
|
55
|
+
React.createElement(Dbm.react.form.EditArray, {"value": Dbm.react.source.contextVariable("itemEditor.item.editor_multipleRelations_" + direction + "_" + relationType + "_" + objectType + ".item.editValue.item.properties.value")},
|
|
56
|
+
React.createElement("div", {},
|
|
57
|
+
React.createElement(Dbm.react.admin.EditObjectById, {id: Dbm.react.source.contextVariable("item.value")},
|
|
58
|
+
React.createElement("div", {},
|
|
59
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Image (if different from page main image)"}),
|
|
60
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditRelation, {"direction": "in", "relationType": "isMainImageFor", "objectType": "image"},
|
|
61
|
+
React.createElement(Dbm.react.form.GraphApiImage, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), "encoding": "title", nameField: "title", className: "standard-field standard-field-padding full-width"})
|
|
62
|
+
),
|
|
63
|
+
React.createElement("div", {className: "spacing small"}),
|
|
64
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Title (if different from page title)"}),
|
|
65
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "title"},
|
|
66
|
+
React.createElement(Dbm.react.form.FormField, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width", placeholder: "Same as page title"})
|
|
67
|
+
),
|
|
68
|
+
React.createElement("div", {className: "spacing small"}),
|
|
69
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Excerpt"}),
|
|
70
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "description"},
|
|
71
|
+
React.createElement(Dbm.react.form.TextArea, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
|
|
72
|
+
),
|
|
73
|
+
React.createElement("div", {className: "spacing small"}),
|
|
74
|
+
React.createElement(Dbm.react.form.LabelledArea, {label: "Link text (optional)"}),
|
|
75
|
+
React.createElement(Dbm.react.admin.editorsgroup.EditField, {"fieldName": "linkText"},
|
|
76
|
+
React.createElement(Dbm.react.form.FormField, {value: Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width", placeholder: "Read more"})
|
|
77
|
+
)
|
|
78
|
+
),
|
|
79
|
+
),
|
|
80
|
+
),
|
|
81
|
+
/*
|
|
82
|
+
React.createElement("div", {"data-slot": "after"},
|
|
83
|
+
React.createElement("div", {"className": "spacing standard"}),
|
|
84
|
+
React.createElement(Dbm.react.interaction.CommandButton, {command: Dbm.commands.callFunction(this._addArrayRow.bind(this), [Dbm.react.source.contextVariable("arrayEditor")])},
|
|
85
|
+
React.createElement("div", {"className": "flex-row"},
|
|
86
|
+
React.createElement("div", {"className": "flex-row-item"},
|
|
87
|
+
React.createElement("div", {"className": "action-button action-button-padding"}, "Add")
|
|
88
|
+
)
|
|
89
|
+
),
|
|
90
|
+
|
|
91
|
+
)
|
|
92
|
+
)
|
|
93
|
+
*/
|
|
94
|
+
),
|
|
95
|
+
);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class FixedWidthInfiniteSlideshow extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
_renderMainElement() {
|
|
12
|
+
//console.log("FixedWidthInfiniteSlideshow::render");
|
|
13
|
+
//console.log(this);
|
|
14
|
+
|
|
15
|
+
let viewWidth = this.getPropValueWithDefault("viewWidth", 1000);
|
|
16
|
+
let prepLength = this.getPropValueWithDefault("prepareLength", 20);
|
|
17
|
+
let elementWidth = this.getPropValueWithDefault("elementWidth", 200);
|
|
18
|
+
let spacing = this.getPropValueWithDefault("spacing", 0);
|
|
19
|
+
|
|
20
|
+
let index = this.getPropValue("index");
|
|
21
|
+
|
|
22
|
+
let elements = this.getPropValue("children");;
|
|
23
|
+
|
|
24
|
+
let numberOfElements = elements.length;
|
|
25
|
+
|
|
26
|
+
let stepLength = elementWidth+spacing;
|
|
27
|
+
let movedLength = index*stepLength;
|
|
28
|
+
|
|
29
|
+
let startPosition = movedLength-prepLength;
|
|
30
|
+
let startIndex = Math.floor(startPosition/stepLength);
|
|
31
|
+
|
|
32
|
+
let endPosition = (startPosition + viewWidth + 2*prepLength);
|
|
33
|
+
let endIndex = Math.floor(endPosition/stepLength);
|
|
34
|
+
|
|
35
|
+
let children = [];
|
|
36
|
+
for(let i = startIndex; i <= endIndex; i++) {
|
|
37
|
+
let currentPosition = i*stepLength-movedLength;
|
|
38
|
+
let elementIndex = Dbm.utils.NumberFunctions.floatMod(i, numberOfElements);
|
|
39
|
+
|
|
40
|
+
//METODO: send in styles instead of forcing full size
|
|
41
|
+
let style = {"transform": "translateX(" + currentPosition + "px)", position: "absolute", left: 0, top: 0};
|
|
42
|
+
let child = React.createElement("div", {"key": i, "className": "full-size", "style": style}, elements[elementIndex])
|
|
43
|
+
children.push(child);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return this._createMainElement("div", {},
|
|
47
|
+
children
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
}
|
package/react/area/List.js
CHANGED
|
@@ -43,9 +43,13 @@ export default class List extends Dbm.react.BaseObject {
|
|
|
43
43
|
if(keyField !== "(root)") {
|
|
44
44
|
key = Dbm.objectPath(currentItem, keyField);
|
|
45
45
|
}
|
|
46
|
+
else if(keyField !== "(index)") {
|
|
47
|
+
key = i;
|
|
48
|
+
}
|
|
46
49
|
|
|
47
50
|
let values = {};
|
|
48
51
|
values[as] = currentItem;
|
|
52
|
+
values[as + "/index"] = i;
|
|
49
53
|
newChildren.push(React.createElement(Dbm.react.context.AddContextVariables, {key: key, values: values}, mainChildren));
|
|
50
54
|
}
|
|
51
55
|
|
package/react/area/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export {default as ScrollActivatedArea} from "./ScrollActivatedArea.js";
|
|
|
7
7
|
export {default as OpenCloseExpandableArea} from "./OpenCloseExpandableArea.js";
|
|
8
8
|
export {default as ResponsiveLayout} from "./ResponsiveLayout.js";
|
|
9
9
|
export {default as List} from "./List.js";
|
|
10
|
+
export {default as FixedWidthInfiniteSlideshow} from "./FixedWidthInfiniteSlideshow.js";
|
|
10
11
|
|
|
11
12
|
export const responsiveLayout = function(aDefaultLayout) {
|
|
12
13
|
let newResponsiveLayout = new Dbm.react.area.ResponsiveLayout();
|
|
@@ -5,23 +5,9 @@ export default class Edit extends Dbm.react.BaseObject {
|
|
|
5
5
|
_construct() {
|
|
6
6
|
super._construct();
|
|
7
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
8
|
this.item.requireProperty("open", false);
|
|
13
9
|
}
|
|
14
10
|
|
|
15
|
-
_save() {
|
|
16
|
-
console.log("_save");
|
|
17
|
-
|
|
18
|
-
let editorGroup = this.item.editorGroup;
|
|
19
|
-
|
|
20
|
-
let saveData = editorGroup.getSaveData();
|
|
21
|
-
|
|
22
|
-
saveData.save();
|
|
23
|
-
}
|
|
24
|
-
|
|
25
11
|
_toggleOpen() {
|
|
26
12
|
console.log("_toggleOpen");
|
|
27
13
|
|
|
@@ -8,6 +8,8 @@ export default class User extends Dbm.react.BaseObject {
|
|
|
8
8
|
let editorGroup = new Dbm.graphapi.webclient.admin.EditorGroup();
|
|
9
9
|
this.item.setValue("editorGroup", editorGroup);
|
|
10
10
|
this.item.requireProperty("changed", false).connectInput(editorGroup.item.properties.changed);
|
|
11
|
+
|
|
12
|
+
this.item.requireProperty("newPassword", "");
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
_save() {
|
|
@@ -20,6 +22,21 @@ export default class User extends Dbm.react.BaseObject {
|
|
|
20
22
|
saveData.save();
|
|
21
23
|
}
|
|
22
24
|
|
|
25
|
+
_updatePassword() {
|
|
26
|
+
let url = new URL(document.location.href);
|
|
27
|
+
let id = url.searchParams.get("id");
|
|
28
|
+
let password = this.item.newPassword;
|
|
29
|
+
|
|
30
|
+
if(password) {
|
|
31
|
+
Dbm.graphapi.webclient.performAction("admin/user/setPassword", {"id": id, "password": password}, this._passwordSet.bind(this));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
_passwordSet(aData) {
|
|
36
|
+
console.log("_passwordSet");
|
|
37
|
+
console.log(aData);
|
|
38
|
+
}
|
|
39
|
+
|
|
23
40
|
_renderMainElement() {
|
|
24
41
|
|
|
25
42
|
let url = new URL(document.location.href);
|
|
@@ -40,7 +57,18 @@ export default class User extends Dbm.react.BaseObject {
|
|
|
40
57
|
),
|
|
41
58
|
React.createElement("h2", {className: "no-margins"}, "New password"),
|
|
42
59
|
React.createElement("div", {className: "spacing small"}),
|
|
43
|
-
"
|
|
60
|
+
React.createElement("div", {className: "flex-row small-item-spacing"},
|
|
61
|
+
React.createElement("div", {className: "flex-row-item flex-resize"},
|
|
62
|
+
React.createElement(Dbm.react.form.FormField, {"className": "standard-field standard-field-padding full-width", "type": "password", "autoComplete": "new-password", value: this.item.properties.newPassword})
|
|
63
|
+
),
|
|
64
|
+
React.createElement("div", {className: "flex-row-item no-flex-resize"},
|
|
65
|
+
React.createElement(Dbm.react.interaction.CommandButton, {"command": Dbm.commands.callFunction(this._updatePassword.bind(this))},
|
|
66
|
+
React.createElement("div", {className: "standard-button standard-button-padding"},
|
|
67
|
+
"Set password"
|
|
68
|
+
)
|
|
69
|
+
)
|
|
70
|
+
)
|
|
71
|
+
),
|
|
44
72
|
)
|
|
45
73
|
);
|
|
46
74
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class LinkList extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let listId = this.context.blockData.list;
|
|
9
|
+
|
|
10
|
+
this.item.requireProperty("loaded", false);
|
|
11
|
+
this.item.requireProperty("items", []);
|
|
12
|
+
|
|
13
|
+
let graphApi = Dbm.getInstance().repository.getItem("cachedGraphApi").controller;
|
|
14
|
+
{
|
|
15
|
+
let request = graphApi.requestRange(
|
|
16
|
+
[
|
|
17
|
+
{type: "objectRelationQuery", "path": "in:in:linkPreview", "fromIds": [listId]}
|
|
18
|
+
],
|
|
19
|
+
["linkPreview"]
|
|
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("LinkList::_loaded");
|
|
30
|
+
console.log(aRequest);
|
|
31
|
+
|
|
32
|
+
let items = aRequest.items;
|
|
33
|
+
|
|
34
|
+
let today = (new Date()).toISOString().split("T")[0];
|
|
35
|
+
items = Dbm.utils.ArrayFunctions.filterByField(items, "page", null, function(aItem) {
|
|
36
|
+
if(aItem && aItem.publishDate) {
|
|
37
|
+
if(aItem.publishDate > today) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return false;
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
Dbm.utils.ArrayFunctions.sortOnField(items, "page.publishDate");
|
|
47
|
+
items.reverse();
|
|
48
|
+
|
|
49
|
+
this.item.items = items;
|
|
50
|
+
this.item.loaded = true;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
_renderMainElement() {
|
|
54
|
+
|
|
55
|
+
let element = Dbm.getInstance().repository.getItem("linkListCard").element;
|
|
56
|
+
|
|
57
|
+
return React.createElement("div", {"className": "content-narrow"},
|
|
58
|
+
React.createElement(Dbm.react.area.HasData, {check: this.item.properties.loaded},
|
|
59
|
+
React.createElement(Dbm.react.area.List, {items: this.item.properties.items},
|
|
60
|
+
element,
|
|
61
|
+
React.createElement("div", {"data-slot": "spacing", "className": "spacing small"})
|
|
62
|
+
)
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class LinkListCard extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let mobileLayout = React.createElement(Dbm.react.text.Link, {"href": Dbm.core.source.first(Dbm.react.source.contextVariable("item.link"), Dbm.react.source.contextVariable("item.page.url")), "className": "custom-styled-link"},
|
|
9
|
+
React.createElement("div", {"className": "standard-card standard-card-padding"},
|
|
10
|
+
React.createElement(Dbm.react.image.WidthScaledImage, {image: Dbm.core.source.first(Dbm.react.source.contextVariable("item.image"), Dbm.react.source.contextVariable("item.page.image")), targetWidth: 300, className: "card-image-mobile background-cover"}),
|
|
11
|
+
React.createElement("div", {"className": "spacing small"}),
|
|
12
|
+
React.createElement("div", {},
|
|
13
|
+
React.createElement("h3", {"className": "no-margins"},
|
|
14
|
+
Dbm.react.text.text(Dbm.core.source.first(Dbm.react.source.contextVariable("item.title"), Dbm.react.source.contextVariable("item.page.title")))
|
|
15
|
+
),
|
|
16
|
+
React.createElement("div", {"className": "body-text"},
|
|
17
|
+
Dbm.react.text.htmlText(Dbm.react.source.contextVariable("item.description")),
|
|
18
|
+
),
|
|
19
|
+
React.createElement("div", {"className": "flex-row justify-between"},
|
|
20
|
+
React.createElement("div", {"className": "flex-row-item"}),
|
|
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
|
+
)
|
|
30
|
+
)
|
|
31
|
+
)
|
|
32
|
+
)
|
|
33
|
+
)
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
let desktopLayout = React.createElement(Dbm.react.text.Link, {"href": Dbm.core.source.first(Dbm.react.source.contextVariable("item.link"), Dbm.react.source.contextVariable("item.page.url")), "className": "custom-styled-link"},
|
|
37
|
+
React.createElement("div", {"className": "standard-card standard-card-padding"},
|
|
38
|
+
React.createElement("div", {"className": "flex-row small-item-spacing"},
|
|
39
|
+
React.createElement("div", {"className": "flex-row-item flex-no-resize"},
|
|
40
|
+
React.createElement(Dbm.react.image.WidthScaledImage, {image: Dbm.core.source.first(Dbm.react.source.contextVariable("item.image"), Dbm.react.source.contextVariable("item.page.image")), targetWidth: 200, className: "card-image-desktop background-cover"})
|
|
41
|
+
),
|
|
42
|
+
React.createElement("div", {"className": "flex-row-item flex-resize"},
|
|
43
|
+
React.createElement("h3", {"className": "no-margins"},
|
|
44
|
+
Dbm.react.text.text(Dbm.core.source.first(Dbm.react.source.contextVariable("item.title"), Dbm.react.source.contextVariable("item.page.title")))
|
|
45
|
+
),
|
|
46
|
+
React.createElement("div", {"className": "spacing small"}),
|
|
47
|
+
React.createElement("div", {"className": "body-text"},
|
|
48
|
+
Dbm.react.text.htmlText(Dbm.react.source.contextVariable("item.description")),
|
|
49
|
+
),
|
|
50
|
+
|
|
51
|
+
React.createElement("div", {"className": "spacing small"}),
|
|
52
|
+
React.createElement("div", {"className": "flex-row justify-between"},
|
|
53
|
+
React.createElement("div", {"className": "flex-row-item"}),
|
|
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.core.source.firstWithDefault(Dbm.react.source.contextVariable("item.linkText"), "Read more"))
|
|
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
|
+
)
|
|
63
|
+
)
|
|
64
|
+
)
|
|
65
|
+
)
|
|
66
|
+
)
|
|
67
|
+
)
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
this.responsiveLayout = Dbm.react.area.responsiveLayout(mobileLayout).addLayout(desktopLayout, 600);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
_renderMainElement() {
|
|
78
|
+
|
|
79
|
+
return React.createElement("div", {}, React.createElement("div", {
|
|
80
|
+
ref: this.createRef("mainElement")
|
|
81
|
+
}, this.responsiveLayout.mainElement));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export {default as Card} from "./Card.js";
|
|
2
2
|
export {default as ContentBlock} from "./ContentBlock.js";
|
|
3
|
-
export {default as AnchorPosition} from "./AnchorPosition.js";
|
|
3
|
+
export {default as AnchorPosition} from "./AnchorPosition.js";
|
|
4
|
+
export {default as LinkList} from "./LinkList.js";
|
|
5
|
+
export {default as LinkListCard} from "./LinkListCard.js";
|
|
@@ -131,7 +131,7 @@ export default class AskAQuestion extends Dbm.react.BaseObject {
|
|
|
131
131
|
React.createElement("div", {className: "standard-field overflow-hidden"},
|
|
132
132
|
React.createElement("div", {className: "flex-row small-item-spacing"},
|
|
133
133
|
React.createElement("div", {className: "flex-row-item flex-resize"},
|
|
134
|
-
React.createElement(Dbm.react.form.FormField, {className: "standard-field-padding-left-side full-width integrated-field", value: this.item.properties.searchText, placeholder: "
|
|
134
|
+
React.createElement(Dbm.react.form.FormField, {className: "standard-field-padding-left-side full-width integrated-field", value: this.item.properties.searchText, placeholder: "Type your question here"})
|
|
135
135
|
),
|
|
136
136
|
React.createElement("div", {className: "flex-row-item flex-no-resize"},
|
|
137
137
|
React.createElement("div", {className: "submit-button-field-padding-right-side border-box-sizing full-height"},
|