dbm 1.2.6 → 1.2.8
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/commands/CommandBaseObject.js +4 -0
- package/commands/SetProperty.js +2 -2
- package/commands/index.js +6 -1
- package/ecommerce/CartLineItem.js +2 -2
- package/ecommerce/LocalStorageCartLoader.js +0 -2
- package/flow/updatefunctions/dom/ElementPosition.js +10 -1
- package/flow/updatefunctions/thirdparty/google/maps/AutoComplete.js +2 -2
- package/graphapi/index.js +1 -2
- package/graphapi/webclient/WebSocketConnection.js +2 -0
- package/graphapi/webclient/admin/ItemEditor.js +54 -0
- package/graphapi/webclient/decode/index.js +9 -0
- package/package.json +1 -1
- package/react/AddProps.js +127 -0
- package/react/BaseObject.js +1 -1
- package/react/ChildFunctions.js +55 -1
- package/react/admin/EditLanguage.js +91 -0
- package/react/admin/EditObject.js +1 -1
- package/react/admin/EditObjectById.js +1 -1
- package/react/admin/EditPage.js +25 -35
- package/react/admin/EditTranslationGroup.js +174 -0
- package/react/admin/PageTranslations.js +226 -0
- package/react/admin/SelectTranslation.js +72 -0
- package/react/admin/editorsgroup/EditItem.js +1 -1
- package/react/admin/editorsgroup/EditMultipleRelations.js +39 -0
- package/react/admin/editorsgroup/EditPartOfObject.js +32 -0
- package/react/admin/editorsgroup/EditRelation.js +2 -7
- package/react/admin/editorsgroup/EditUrl.js +22 -0
- package/react/admin/editorsgroup/index.js +4 -1
- package/react/admin/index.js +4 -0
- package/react/admin/objects/itemeditors/DraggableHierarchyDisplay.js +45 -0
- package/react/admin/objects/itemeditors/HierarchyOrderedRelationsList.js +335 -0
- package/react/admin/objects/itemeditors/RelationsList.js +77 -0
- package/react/admin/objects/itemeditors/Url.js +21 -0
- package/react/admin/objects/itemeditors/index.js +5 -1
- package/react/animation/AnimatedElement.js +4 -0
- package/react/area/FixedWidthInfiniteSlideshow.js +8 -1
- package/react/area/HasData.js +1 -1
- package/react/area/InsertElement.js +9 -2
- package/react/area/InsertElementWithChildren.js +33 -0
- package/react/area/OpenCloseExpandableArea.js +10 -3
- package/react/area/PopoverLayer.js +64 -0
- package/react/area/index.js +2 -0
- package/react/blocks/admin/objects/Edit.js +1 -1
- package/react/blocks/index.js +169 -3
- package/react/blocks/redirect/SignedInRedirect.js +38 -0
- package/react/blocks/redirect/index.js +1 -0
- package/react/blocks/section/ColoredBackgroundSection.js +32 -0
- package/react/blocks/section/ColoredBoxSection.js +30 -0
- package/react/blocks/section/index.js +2 -0
- package/react/blocks/signin/SignIn.js +14 -0
- package/react/blocks/signin/index.js +1 -0
- package/react/context/AddItemByIdToContext.js +5 -2
- package/react/form/Dropdown.js +46 -0
- package/react/form/Option.js +1 -1
- package/react/form/index.js +2 -1
- package/react/interaction/CommandButton.js +12 -64
- package/react/interaction/HoverArea.js +77 -0
- package/react/interaction/HoverDropdown.js +38 -0
- package/react/interaction/drag/DraggableItem.js +94 -0
- package/react/interaction/drag/index.js +3 -0
- package/react/interaction/index.js +5 -1
- package/react/login/LoginForm.js +4 -4
- package/react/source/index.js +10 -2
- package/site/index.js +3 -0
- package/site/translation/TranslationLoader.js +3 -3
- package/tracking/index.js +1 -1
- package/utils/ArrayFunctions.js +21 -16
- package/utils/TranslationFunctions.js +49 -0
- package/utils/index.js +1 -0
- package/graphapi/admin/EditGroup.js +0 -50
- package/graphapi/admin/index.js +0 -1
|
@@ -14,24 +14,31 @@ export default class OpenCloseExpandableArea extends Dbm.react.BaseObject {
|
|
|
14
14
|
let switchValue = Dbm.flow.updatefunctions.logic.switchValue(openProperty).addCase(false, 0).addCase(true, 1);
|
|
15
15
|
let animateValueObject = Dbm.flow.animateValue(switchValue.output.properties.value);
|
|
16
16
|
let transformToStyle = Dbm.flow.updatefunctions.basic.transformValue(animateValueObject.properties.output, this._transformToStyle.bind(this));
|
|
17
|
+
|
|
18
|
+
let visibleCondition = Dbm.flow.updatefunctions.logic.condition(animateValueObject.properties.output, ">", 0);
|
|
19
|
+
this.item.requireProperty("isVisible", false).connectInput(visibleCondition.output.properties.result);
|
|
17
20
|
|
|
18
21
|
this.item.requireProperty("animationStyle", {}).connectInput(transformToStyle.output.properties.value);
|
|
19
22
|
|
|
20
23
|
this.item.setValue("animation", Dbm.react.animation.connectedAnimation(transformToStyle.output.properties.value));
|
|
21
24
|
}
|
|
25
|
+
|
|
26
|
+
_removedUsedProps(aProps) {
|
|
27
|
+
delete aProps["open"];
|
|
28
|
+
}
|
|
22
29
|
|
|
23
30
|
_transformToStyle(aEnvelope) {
|
|
24
31
|
//console.log("_transformToStyle");
|
|
25
32
|
//console.log(aEnvelope, this, this.item.element);
|
|
26
33
|
|
|
27
34
|
if(aEnvelope === 0) {
|
|
28
|
-
return {"height": "0px", "overflow": "
|
|
35
|
+
return {"height": "0px", "overflow-x": "visible", "overflow-y": "clip", "display": "none", "visibility": "hidden"};
|
|
29
36
|
}
|
|
30
37
|
else if(aEnvelope === 1 || !this.item.element) {
|
|
31
38
|
return {};
|
|
32
39
|
}
|
|
33
40
|
|
|
34
|
-
return {"height": (this.item.element.clientHeight*aEnvelope) + "px", "overflow": "
|
|
41
|
+
return {"height": (this.item.element.clientHeight*aEnvelope) + "px", "overflow-x": "visible","overflow-y": "clip"};
|
|
35
42
|
}
|
|
36
43
|
|
|
37
44
|
_renderMainElement() {
|
|
@@ -41,7 +48,7 @@ export default class OpenCloseExpandableArea extends Dbm.react.BaseObject {
|
|
|
41
48
|
let openProperty = this.getDynamicProp("open");
|
|
42
49
|
|
|
43
50
|
return this._createMainElement(Dbm.react.animation.AnimatedElement, {"className": "animation-element", "controller": this.item.animation.item, "aria-hidden": this.item.properties.ariaHidden},
|
|
44
|
-
React.createElement(Dbm.react.context.AddContextVariables, {"values": {"open": openProperty}},
|
|
51
|
+
React.createElement(Dbm.react.context.AddContextVariables, {"values": {"open": openProperty, "isVisible": this.item.properties.isVisible}},
|
|
45
52
|
React.createElement("div", {"ref": this.createRef("element")},
|
|
46
53
|
this.getPropValue("children")
|
|
47
54
|
)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class PopoverLayer extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let startValue = this.getPropValue("startState") === "open";
|
|
9
|
+
let openProperty = this.getDynamicPropWithoutState("open", startValue);
|
|
10
|
+
Dbm.flow.addUpdateCommand(openProperty, Dbm.commands.callFunction(this._updateOpen.bind(this)));
|
|
11
|
+
|
|
12
|
+
let holderElementProperty = this.item.requireProperty("holderElement", null);
|
|
13
|
+
let popoverElementProperty = this.item.requireProperty("popoverElement", null);
|
|
14
|
+
|
|
15
|
+
let position = new Dbm.flow.updatefunctions.dom.ElementPosition();
|
|
16
|
+
this.item.setValue("position", position);
|
|
17
|
+
position.input.properties.element.connectInput(holderElementProperty);
|
|
18
|
+
position.start();
|
|
19
|
+
|
|
20
|
+
let size = new Dbm.flow.updatefunctions.dom.ElementSize();
|
|
21
|
+
this.item.setValue("size", size);
|
|
22
|
+
size.input.properties.element.connectInput(holderElementProperty);
|
|
23
|
+
size.start();
|
|
24
|
+
|
|
25
|
+
let styleObject = new Dbm.flow.updatefunctions.dom.StyleObject();
|
|
26
|
+
styleObject.addProperty("left", position.output.properties.pageX, "px");
|
|
27
|
+
styleObject.addProperty("top", position.output.properties.pageY, "px");
|
|
28
|
+
styleObject.addProperty("width", size.output.properties.width, "px");
|
|
29
|
+
styleObject.addProperty("height", size.output.properties.height, "px");
|
|
30
|
+
this.item.propertyInput("style", styleObject.output.properties.style);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
_updateOpen() {
|
|
34
|
+
//console.log("_updateOpen");
|
|
35
|
+
let open = this.getPropValue("open");
|
|
36
|
+
|
|
37
|
+
this.item.position._callback_scroll(null);
|
|
38
|
+
this.item.size._callback_sizeChanged(null);
|
|
39
|
+
|
|
40
|
+
let element = Dbm.objectPath(this.item.popoverElement, "item.mainElement");
|
|
41
|
+
if(element) {
|
|
42
|
+
if(open) {
|
|
43
|
+
element.showPopover();
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
element.hidePopover();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
_renderMainElement() {
|
|
52
|
+
//console.log("OpenCloseExpandableArea::_renderMainElement");
|
|
53
|
+
//console.log(this);
|
|
54
|
+
|
|
55
|
+
return this._createMainElement("div", {"ref": this.createRef("holderElement")},
|
|
56
|
+
React.createElement(Dbm.react.BaseObject, {"className": "position-absolute popover-holder", style: this.item.properties.style, "popover": "manual", "ref": this.createRef("popoverElement")},
|
|
57
|
+
this.getPropValue("children")
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
package/react/area/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import Dbm from "../../index.js";
|
|
|
2
2
|
import React from "react";
|
|
3
3
|
|
|
4
4
|
export {default as InsertElement} from "./InsertElement.js";
|
|
5
|
+
export {default as InsertElementWithChildren} from "./InsertElementWithChildren.js";
|
|
5
6
|
export {default as HasData} from "./HasData.js";
|
|
6
7
|
export {default as ScrollActivatedArea} from "./ScrollActivatedArea.js";
|
|
7
8
|
export {default as OpenCloseExpandableArea} from "./OpenCloseExpandableArea.js";
|
|
@@ -9,6 +10,7 @@ export {default as ResponsiveLayout} from "./ResponsiveLayout.js";
|
|
|
9
10
|
export {default as List} from "./List.js";
|
|
10
11
|
export {default as FixedWidthInfiniteSlideshow} from "./FixedWidthInfiniteSlideshow.js";
|
|
11
12
|
export {default as SwitchableArea} from "./SwitchableArea.js";
|
|
13
|
+
export {default as PopoverLayer} from "./PopoverLayer.js";
|
|
12
14
|
|
|
13
15
|
export const responsiveLayout = function(aDefaultLayout) {
|
|
14
16
|
let newResponsiveLayout = new Dbm.react.area.ResponsiveLayout();
|
|
@@ -25,7 +25,7 @@ export default class Edit extends Dbm.react.BaseObject {
|
|
|
25
25
|
let url = new URL(document.location.href);
|
|
26
26
|
let id = url.searchParams.get("id");
|
|
27
27
|
|
|
28
|
-
return React.createElement("div", {className: "content-narrow"},
|
|
28
|
+
return React.createElement("div", {className: "content-narrow admin-font-settings"},
|
|
29
29
|
React.createElement(Dbm.react.context.AddContextVariables, {values: {"editorGroup": this.item.editorGroup}},
|
|
30
30
|
React.createElement(Dbm.react.admin.objects.EditObject, {id: id}),
|
|
31
31
|
React.createElement("div", {className: "spacing standard"}),
|
package/react/blocks/index.js
CHANGED
|
@@ -6,6 +6,9 @@ export * as gallery from "./gallery/index.js";
|
|
|
6
6
|
export * as content from "./content/index.js";
|
|
7
7
|
export * as admin from "./admin/index.js";
|
|
8
8
|
export * as faq from "./faq/index.js";
|
|
9
|
+
export * as redirect from "./redirect/index.js";
|
|
10
|
+
export * as signin from "./signin/index.js";
|
|
11
|
+
export * as section from "./section/index.js";
|
|
9
12
|
|
|
10
13
|
export {default as Image} from "./Image.js";
|
|
11
14
|
|
|
@@ -63,6 +66,8 @@ export let registerEditorBlock = function(aModuleName, aName, aEditorModule = nu
|
|
|
63
66
|
tools[aModuleName] = createToolConfiguration(aModuleName, aName, aInitialData, aSanitizeSettings);
|
|
64
67
|
|
|
65
68
|
editorConfigItem.setValue("tools", tools);
|
|
69
|
+
|
|
70
|
+
return editorItem;
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
export let registerFrontBlock = function(aModuleName, aElement) {
|
|
@@ -70,6 +75,8 @@ export let registerFrontBlock = function(aModuleName, aElement) {
|
|
|
70
75
|
let elementItem = new Dbm.repository.Item();
|
|
71
76
|
elementItem.setValue("element", aElement);
|
|
72
77
|
elementItem.register("blocks/" + aModuleName);
|
|
78
|
+
|
|
79
|
+
return elementItem;
|
|
73
80
|
}
|
|
74
81
|
|
|
75
82
|
export let registerBlock = function(aModuleName, aName, aElement, aEditorElement = null, aInitialData = {}, aSanitizeSettings = {}) {
|
|
@@ -83,8 +90,10 @@ export let registerBlock = function(aModuleName, aName, aElement, aEditorElement
|
|
|
83
90
|
editorModule.setMainElement(aEditorElement);
|
|
84
91
|
}
|
|
85
92
|
|
|
86
|
-
registerEditorBlock(aModuleName, aName, editorModule, aInitialData, aSanitizeSettings);
|
|
87
|
-
registerFrontBlock(aModuleName, aElement);
|
|
93
|
+
let editorBlock = registerEditorBlock(aModuleName, aName, editorModule, aInitialData, aSanitizeSettings);
|
|
94
|
+
let displayBlock = registerFrontBlock(aModuleName, aElement);
|
|
95
|
+
|
|
96
|
+
return {"editorBlock": editorBlock, "displayBlock": displayBlock};
|
|
88
97
|
}
|
|
89
98
|
|
|
90
99
|
export let getDefaultEditorModule = function() {
|
|
@@ -233,6 +242,23 @@ export let registerAllBlocks = function() {
|
|
|
233
242
|
registerBlock("content/anchorPosition", "Anchor position", createElement(Dbm.react.blocks.content.AnchorPosition, {}), editor, {}, {});
|
|
234
243
|
}
|
|
235
244
|
|
|
245
|
+
{
|
|
246
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
247
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Redirect when signed in (optional)"}),
|
|
248
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "signedInUrl"}),
|
|
249
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Redirect when signed out (optional)"}),
|
|
250
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "signedOutUrl"})
|
|
251
|
+
);
|
|
252
|
+
registerBlock("redirect/signedInRedirect", "Redirect / Signed in?", createElement(Dbm.react.blocks.redirect.SignedInRedirect, {}), editor, {}, {});
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
{
|
|
256
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
257
|
+
|
|
258
|
+
);
|
|
259
|
+
registerBlock("signIn/signIn", "Sign in / Sign in form", createElement(Dbm.react.blocks.signin.SignIn, {}), editor, {}, {});
|
|
260
|
+
}
|
|
261
|
+
|
|
236
262
|
{
|
|
237
263
|
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
238
264
|
createElement(Dbm.react.form.LabelledArea, {label: "Initial sections"},
|
|
@@ -246,6 +272,52 @@ export let registerAllBlocks = function() {
|
|
|
246
272
|
registerBlock("faq/askAQuestion", "FAQ / Ask a question", createElement(Dbm.react.blocks.faq.AskAQuestion, {}), editor, {}, {});
|
|
247
273
|
}
|
|
248
274
|
|
|
275
|
+
{
|
|
276
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
277
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Color"},
|
|
278
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "color"})
|
|
279
|
+
),
|
|
280
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Vertical spacing"},
|
|
281
|
+
createElement(Dbm.react.admin.editor.fields.CheckboxField, {"name": "skipSpacing"}),
|
|
282
|
+
"Skip"
|
|
283
|
+
),
|
|
284
|
+
);
|
|
285
|
+
let block = registerBlock("section/coloredBackgroundSection", "Section / Colored background", createElement(Dbm.react.blocks.section.ColoredBackgroundSection, {}), editor, {}, {});
|
|
286
|
+
block.displayBlock.setValue("isSection", true);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
{
|
|
290
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
291
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Color"},
|
|
292
|
+
createElement(Dbm.react.admin.editor.fields.TextField, {name: "color"})
|
|
293
|
+
),
|
|
294
|
+
createElement(Dbm.react.form.LabelledArea, {label: "Dark background"},
|
|
295
|
+
createElement(Dbm.react.admin.editor.fields.CheckboxField, {"name": "invertText"}),
|
|
296
|
+
"Invert text"
|
|
297
|
+
),
|
|
298
|
+
);
|
|
299
|
+
let block = registerBlock("section/coloredBoxSection", "Section / Colored box", createElement(Dbm.react.blocks.section.ColoredBoxSection, {}), editor, {}, {});
|
|
300
|
+
block.displayBlock.setValue("isSection", true);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
{
|
|
304
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
305
|
+
|
|
306
|
+
);
|
|
307
|
+
let block = registerBlock("section/endSection", "Section / End", createElement("div", {"data-section-end": "1"}), editor, {}, {});
|
|
308
|
+
block.displayBlock.setValue("isSection", true);
|
|
309
|
+
block.displayBlock.setValue("endSection", true);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
{
|
|
313
|
+
let editor = createElement(Dbm.react.admin.editor.EditorBlockName, {},
|
|
314
|
+
|
|
315
|
+
);
|
|
316
|
+
let block = registerBlock("content/skipSpacing", "Skip spacing", createElement("div", {"data-skip-spacing": "1"}), editor, {}, {});
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
249
321
|
{
|
|
250
322
|
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/title");
|
|
251
323
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Title, {}));
|
|
@@ -262,10 +334,15 @@ export let registerAllBlocks = function() {
|
|
|
262
334
|
}
|
|
263
335
|
|
|
264
336
|
{
|
|
265
|
-
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/
|
|
337
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/nameWithTranslations");
|
|
266
338
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Name, {}));
|
|
267
339
|
}
|
|
268
340
|
|
|
341
|
+
{
|
|
342
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/name");
|
|
343
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Field, {"label": "Name", "fieldName": "name"}));
|
|
344
|
+
}
|
|
345
|
+
|
|
269
346
|
{
|
|
270
347
|
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/link");
|
|
271
348
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Link, {}));
|
|
@@ -276,6 +353,11 @@ export let registerAllBlocks = function() {
|
|
|
276
353
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Visibility, {}));
|
|
277
354
|
}
|
|
278
355
|
|
|
356
|
+
{
|
|
357
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/url");
|
|
358
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Url, {}));
|
|
359
|
+
}
|
|
360
|
+
|
|
279
361
|
{
|
|
280
362
|
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/identifier");
|
|
281
363
|
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.Identifier, {}));
|
|
@@ -312,6 +394,61 @@ export let registerAllBlocks = function() {
|
|
|
312
394
|
nameField: "identifier"
|
|
313
395
|
}));
|
|
314
396
|
}
|
|
397
|
+
|
|
398
|
+
{
|
|
399
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/language");
|
|
400
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.SingleRelation, {
|
|
401
|
+
"label": "Language",
|
|
402
|
+
"direction": "in",
|
|
403
|
+
"relationType": "for",
|
|
404
|
+
"objectType": "language",
|
|
405
|
+
encoding: "name",
|
|
406
|
+
nameField: "name"
|
|
407
|
+
}));
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
{
|
|
411
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/menuItems");
|
|
412
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.HierarchyOrderedRelationsList, {
|
|
413
|
+
"label": "Menu items",
|
|
414
|
+
"direction": "in",
|
|
415
|
+
"relationType": "in",
|
|
416
|
+
"objectType": "menuItem",
|
|
417
|
+
"orderFieldName": "order"
|
|
418
|
+
},
|
|
419
|
+
createElement("div", {"className": ""},
|
|
420
|
+
createElement(Dbm.react.admin.EditObject, {"item": Dbm.react.source.item()},
|
|
421
|
+
createElement("div", {"className": "flex-row small-item-spacing halfs"},
|
|
422
|
+
createElement("div", {"className": "flex-row-item"},
|
|
423
|
+
createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "label"},
|
|
424
|
+
createElement(Dbm.react.form.FormField, {"placeholder": "Label", "value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), className: "standard-field standard-field-padding full-width"})
|
|
425
|
+
)
|
|
426
|
+
),
|
|
427
|
+
createElement("div", {"className": "flex-row-item"},
|
|
428
|
+
createElement(Dbm.react.admin.editorsgroup.EditField, {fieldName: "link"},
|
|
429
|
+
createElement(Dbm.react.admin.editorsgroup.EditPartOfObject, {"value": Dbm.react.source.contextVariable("valueEditor.editValue.value"), path: "url"},
|
|
430
|
+
createElement(Dbm.react.form.FormField, {"placeholder": "Url", "value": Dbm.react.source.contextVariable("value"), className: "standard-field standard-field-padding full-width"})
|
|
431
|
+
)
|
|
432
|
+
)
|
|
433
|
+
)
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
)
|
|
437
|
+
)
|
|
438
|
+
));
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
{
|
|
442
|
+
let itemEditor = Dbm.getInstance().repository.getItem("admin/itemEditors/menuLocation/menu");
|
|
443
|
+
itemEditor.setValue("element", createElement(Dbm.react.admin.objects.itemeditors.SingleRelation, {
|
|
444
|
+
"label": "Menu",
|
|
445
|
+
"direction": "in",
|
|
446
|
+
"relationType": "at",
|
|
447
|
+
"objectType": "menu",
|
|
448
|
+
encoding: "name",
|
|
449
|
+
nameField: "name"
|
|
450
|
+
}));
|
|
451
|
+
}
|
|
315
452
|
|
|
316
453
|
{
|
|
317
454
|
let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/page");
|
|
@@ -321,6 +458,7 @@ export let registerAllBlocks = function() {
|
|
|
321
458
|
|
|
322
459
|
let newArray = [].concat(objectTypeEditor.editors);
|
|
323
460
|
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/title"));
|
|
461
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/url"));
|
|
324
462
|
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/content"));
|
|
325
463
|
objectTypeEditor.editors = newArray;
|
|
326
464
|
}
|
|
@@ -407,6 +545,34 @@ export let registerAllBlocks = function() {
|
|
|
407
545
|
objectTypeEditor.editors = newArray;
|
|
408
546
|
}
|
|
409
547
|
|
|
548
|
+
{
|
|
549
|
+
let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/menu");
|
|
550
|
+
if(!objectTypeEditor.editors) {
|
|
551
|
+
objectTypeEditor.setValue("editors", []);
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
let newArray = [].concat(objectTypeEditor.editors);
|
|
555
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/name"));
|
|
556
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/language"));
|
|
557
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/menuItems"));
|
|
558
|
+
|
|
559
|
+
objectTypeEditor.editors = newArray;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
{
|
|
563
|
+
let objectTypeEditor = Dbm.getInstance().repository.getItem("admin/objectTypeEditors/menuLocation");
|
|
564
|
+
if(!objectTypeEditor.editors) {
|
|
565
|
+
objectTypeEditor.setValue("editors", []);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
let newArray = [].concat(objectTypeEditor.editors);
|
|
569
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/name"));
|
|
570
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/identifier"));
|
|
571
|
+
newArray.push(Dbm.getInstance().repository.getItem("admin/itemEditors/menuLocation/menu"));
|
|
572
|
+
|
|
573
|
+
objectTypeEditor.editors = newArray;
|
|
574
|
+
}
|
|
575
|
+
|
|
410
576
|
|
|
411
577
|
let admin = Dbm.getInstance().repository.getItem("admin");
|
|
412
578
|
admin.requireProperty("pageEditors", []);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class SignedInRedirect extends Dbm.react.BaseObject {
|
|
5
|
+
|
|
6
|
+
_construct() {
|
|
7
|
+
super._construct();
|
|
8
|
+
|
|
9
|
+
Dbm.flow.runWhenMatched(Dbm.getRepositoryItem("site").getProperty("checkedUser"), true, Dbm.commands.callFunction(this._checkSignedIn.bind(this)));
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
_checkSignedIn() {
|
|
14
|
+
console.log("_checkSignedIn");
|
|
15
|
+
|
|
16
|
+
if(document.location.href.indexOf("skipRedirect=1") >= 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if(Dbm.getRepositoryItem("site").currentUser) {
|
|
21
|
+
let url = Dbm.objectPath(this.context, "blockData.signedInUrl");
|
|
22
|
+
if(url) {
|
|
23
|
+
Dbm.getRepositoryItem("siteNavigation").controller.navigate(url);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
let url = Dbm.objectPath(this.context, "blockData.signedOutUrl");
|
|
28
|
+
if(url) {
|
|
29
|
+
Dbm.getRepositoryItem("siteNavigation").controller.navigate(url);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
_renderMainElement() {
|
|
35
|
+
|
|
36
|
+
return React.createElement("div", {"data-redirect-check": "1"});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {default as SignedInRedirect} from "./SignedInRedirect.js";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class ColoredBackgroundSection extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
_renderMainElement() {
|
|
12
|
+
|
|
13
|
+
let color = Dbm.objectPath(this.context, "blockData.color");
|
|
14
|
+
let skipSpacing = Dbm.objectPath(this.context, "blockData.skipSpacing");
|
|
15
|
+
|
|
16
|
+
let style = {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if(color) {
|
|
21
|
+
style["backgroundColor"] = color;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let spacingElement = skipSpacing ? null : React.createElement("div", {"className": "spacing double"});
|
|
25
|
+
|
|
26
|
+
return React.createElement("div", {className: "colored-background-section", style: style},
|
|
27
|
+
spacingElement,
|
|
28
|
+
this.getPropValue("children"),
|
|
29
|
+
spacingElement
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class ColoredBoxSection extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
_renderMainElement() {
|
|
12
|
+
|
|
13
|
+
let color = Dbm.objectPath(this.context, "blockData.color");
|
|
14
|
+
let invertText = Dbm.objectPath(this.context, "blockData.invertText");
|
|
15
|
+
|
|
16
|
+
let style = {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if(color) {
|
|
21
|
+
style["backgroundColor"] = color;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
let textClass = invertText ? "dark-background-text" : "";
|
|
25
|
+
|
|
26
|
+
return React.createElement("div", {className: "centered-site colored-box-section colored-box-section-padding " + textClass, style: style},
|
|
27
|
+
this.getPropValue("children"),
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class SignIn extends Dbm.react.BaseObject {
|
|
5
|
+
|
|
6
|
+
_construct() {
|
|
7
|
+
super._construct();
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
_renderMainElement() {
|
|
11
|
+
|
|
12
|
+
return React.createElement(Dbm.react.login.LoginForm, {});
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {default as SignIn} from "./SignIn.js";
|
|
@@ -9,8 +9,11 @@ export default class AddItemByIdToContext extends Dbm.react.BaseObject {
|
|
|
9
9
|
render() {
|
|
10
10
|
|
|
11
11
|
let id = this.getPropValue("id");
|
|
12
|
-
let item =
|
|
13
|
-
|
|
12
|
+
let item = null;
|
|
13
|
+
if(id != 0) {
|
|
14
|
+
item = Dbm.getInstance().repository.getItem(id);
|
|
15
|
+
}
|
|
16
|
+
|
|
14
17
|
let as = this.getPropValue("as");
|
|
15
18
|
if(!as) {
|
|
16
19
|
as = "item";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Dbm from "../../index.js";
|
|
3
|
+
|
|
4
|
+
export default class Dropdown extends Dbm.react.BaseObject {
|
|
5
|
+
_construct() {
|
|
6
|
+
super._construct();
|
|
7
|
+
|
|
8
|
+
let startValue = this.getPropValue("startState") === "open";
|
|
9
|
+
let openProperty = this.getDynamicPropWithoutState("open", startValue);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
_renderMainElement() {
|
|
13
|
+
|
|
14
|
+
let children = Dbm.utils.ArrayFunctions.singleOrArray(this.getPropValue("children"));
|
|
15
|
+
|
|
16
|
+
let slots = Dbm.react.ChildFunctions.splitIntoSlots(children);
|
|
17
|
+
|
|
18
|
+
let buttonElement = slots["button"];
|
|
19
|
+
let mainChildren = slots.main;
|
|
20
|
+
|
|
21
|
+
let openProperty = this.getDynamicProp("open");
|
|
22
|
+
|
|
23
|
+
let position = this.getPropValue("position");
|
|
24
|
+
let dropClassName = "dropdown-menu-min-width position-absolute";
|
|
25
|
+
if(position !== "right") {
|
|
26
|
+
dropClassName += " " + "top-right";
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return this._createMainElement("div", {className: "absolute-container"},
|
|
30
|
+
React.createElement(Dbm.react.interaction.CommandButton, {"command": Dbm.commands.setProperty(openProperty, true)},
|
|
31
|
+
React.createElement("div", {"className": "cursor-pointer"},
|
|
32
|
+
React.createElement(Dbm.react.area.InsertElement, {"element": buttonElement})
|
|
33
|
+
)
|
|
34
|
+
),
|
|
35
|
+
React.createElement(Dbm.react.area.PopoverLayer, {className: "position-absolute bottom-left full-width", "open": openProperty},
|
|
36
|
+
React.createElement("div", {className: dropClassName},
|
|
37
|
+
React.createElement(Dbm.react.area.OpenCloseExpandableArea, {"open": openProperty},
|
|
38
|
+
React.createElement(Dbm.react.interaction.ClickOutsideTrigger, {"command": Dbm.commands.setProperty(openProperty, false)},
|
|
39
|
+
React.createElement(Dbm.react.area.InsertElement, {"element": mainChildren})
|
|
40
|
+
)
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
}
|
package/react/form/Option.js
CHANGED
|
@@ -12,7 +12,7 @@ export default class Option extends Dbm.react.BaseObject {
|
|
|
12
12
|
|
|
13
13
|
let value = this.getDynamicProp("value").value;
|
|
14
14
|
|
|
15
|
-
return this._createMainElement("option", {"value": value
|
|
15
|
+
return this._createMainElement("option", {"value": value}, this.getPropValue("children"));
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
|
package/react/form/index.js
CHANGED
|
@@ -10,4 +10,5 @@ export {default as EditArray} from "./EditArray.js";
|
|
|
10
10
|
export {default as TextArea} from "./TextArea.js";
|
|
11
11
|
export {default as EditObjectProperty} from "./EditObjectProperty.js";
|
|
12
12
|
export {default as Form} from "./Form.js";
|
|
13
|
-
export {default as Option} from "./Option.js";
|
|
13
|
+
export {default as Option} from "./Option.js";
|
|
14
|
+
export {default as Dropdown} from "./Dropdown.js";
|