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.
Files changed (71) hide show
  1. package/commands/CommandBaseObject.js +4 -0
  2. package/commands/SetProperty.js +2 -2
  3. package/commands/index.js +6 -1
  4. package/ecommerce/CartLineItem.js +2 -2
  5. package/ecommerce/LocalStorageCartLoader.js +0 -2
  6. package/flow/updatefunctions/dom/ElementPosition.js +10 -1
  7. package/flow/updatefunctions/thirdparty/google/maps/AutoComplete.js +2 -2
  8. package/graphapi/index.js +1 -2
  9. package/graphapi/webclient/WebSocketConnection.js +2 -0
  10. package/graphapi/webclient/admin/ItemEditor.js +54 -0
  11. package/graphapi/webclient/decode/index.js +9 -0
  12. package/package.json +1 -1
  13. package/react/AddProps.js +127 -0
  14. package/react/BaseObject.js +1 -1
  15. package/react/ChildFunctions.js +55 -1
  16. package/react/admin/EditLanguage.js +91 -0
  17. package/react/admin/EditObject.js +1 -1
  18. package/react/admin/EditObjectById.js +1 -1
  19. package/react/admin/EditPage.js +25 -35
  20. package/react/admin/EditTranslationGroup.js +174 -0
  21. package/react/admin/PageTranslations.js +226 -0
  22. package/react/admin/SelectTranslation.js +72 -0
  23. package/react/admin/editorsgroup/EditItem.js +1 -1
  24. package/react/admin/editorsgroup/EditMultipleRelations.js +39 -0
  25. package/react/admin/editorsgroup/EditPartOfObject.js +32 -0
  26. package/react/admin/editorsgroup/EditRelation.js +2 -7
  27. package/react/admin/editorsgroup/EditUrl.js +22 -0
  28. package/react/admin/editorsgroup/index.js +4 -1
  29. package/react/admin/index.js +4 -0
  30. package/react/admin/objects/itemeditors/DraggableHierarchyDisplay.js +45 -0
  31. package/react/admin/objects/itemeditors/HierarchyOrderedRelationsList.js +335 -0
  32. package/react/admin/objects/itemeditors/RelationsList.js +77 -0
  33. package/react/admin/objects/itemeditors/Url.js +21 -0
  34. package/react/admin/objects/itemeditors/index.js +5 -1
  35. package/react/animation/AnimatedElement.js +4 -0
  36. package/react/area/FixedWidthInfiniteSlideshow.js +8 -1
  37. package/react/area/HasData.js +1 -1
  38. package/react/area/InsertElement.js +9 -2
  39. package/react/area/InsertElementWithChildren.js +33 -0
  40. package/react/area/OpenCloseExpandableArea.js +10 -3
  41. package/react/area/PopoverLayer.js +64 -0
  42. package/react/area/index.js +2 -0
  43. package/react/blocks/admin/objects/Edit.js +1 -1
  44. package/react/blocks/index.js +169 -3
  45. package/react/blocks/redirect/SignedInRedirect.js +38 -0
  46. package/react/blocks/redirect/index.js +1 -0
  47. package/react/blocks/section/ColoredBackgroundSection.js +32 -0
  48. package/react/blocks/section/ColoredBoxSection.js +30 -0
  49. package/react/blocks/section/index.js +2 -0
  50. package/react/blocks/signin/SignIn.js +14 -0
  51. package/react/blocks/signin/index.js +1 -0
  52. package/react/context/AddItemByIdToContext.js +5 -2
  53. package/react/form/Dropdown.js +46 -0
  54. package/react/form/Option.js +1 -1
  55. package/react/form/index.js +2 -1
  56. package/react/interaction/CommandButton.js +12 -64
  57. package/react/interaction/HoverArea.js +77 -0
  58. package/react/interaction/HoverDropdown.js +38 -0
  59. package/react/interaction/drag/DraggableItem.js +94 -0
  60. package/react/interaction/drag/index.js +3 -0
  61. package/react/interaction/index.js +5 -1
  62. package/react/login/LoginForm.js +4 -4
  63. package/react/source/index.js +10 -2
  64. package/site/index.js +3 -0
  65. package/site/translation/TranslationLoader.js +3 -3
  66. package/tracking/index.js +1 -1
  67. package/utils/ArrayFunctions.js +21 -16
  68. package/utils/TranslationFunctions.js +49 -0
  69. package/utils/index.js +1 -0
  70. package/graphapi/admin/EditGroup.js +0 -50
  71. 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": "hidden", "display": "none", "visibility": "hidden"};
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": "hidden"};
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
+
@@ -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"}),
@@ -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/name");
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,2 @@
1
+ export {default as ColoredBackgroundSection} from "./ColoredBackgroundSection.js";
2
+ export {default as ColoredBoxSection} from "./ColoredBoxSection.js";
@@ -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 = Dbm.getInstance().repository.getItem(id);
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
+ }
@@ -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,}, this.getPropValue("children"));
15
+ return this._createMainElement("option", {"value": value}, this.getPropValue("children"));
16
16
  }
17
17
  }
18
18
 
@@ -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";