@umbraco-cms/backoffice 14.0.0--preview006-89e89a2e → 14.0.0--preview006-7bdcb4ac

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 (109) hide show
  1. package/dist-cms/css/umbraco-blockgridlayout.css +50 -0
  2. package/dist-cms/custom-elements.json +71 -40
  3. package/dist-cms/libs/observable-api/utils/append-to-frozen-array.function.d.ts +6 -5
  4. package/dist-cms/libs/observable-api/utils/append-to-frozen-array.function.js +6 -5
  5. package/dist-cms/mocks/data/data-type/data-type.data.js +1 -1
  6. package/dist-cms/mocks/data/document/document.data.js +91 -1
  7. package/dist-cms/packages/block/block/context/block-entries.context-token.d.ts +5 -0
  8. package/dist-cms/packages/block/block/context/block-entries.context-token.js +2 -0
  9. package/dist-cms/packages/block/block/context/block-entries.context.d.ts +29 -0
  10. package/dist-cms/packages/block/block/context/block-entries.context.js +69 -0
  11. package/dist-cms/packages/block/block/context/block-entry.context-token.d.ts +6 -0
  12. package/dist-cms/packages/block/block/context/block-entry.context-token.js +2 -0
  13. package/dist-cms/packages/block/block/context/{block-entity.context.d.ts → block-entry.context.d.ts} +25 -10
  14. package/dist-cms/packages/block/block/context/block-entry.context.js +208 -0
  15. package/dist-cms/packages/block/block/{manager → context}/block-manager.context.d.ts +21 -5
  16. package/dist-cms/packages/block/block/{manager → context}/block-manager.context.js +56 -53
  17. package/dist-cms/packages/block/block/context/index.d.ts +6 -1
  18. package/dist-cms/packages/block/block/context/index.js +5 -1
  19. package/dist-cms/packages/block/block/index.d.ts +0 -1
  20. package/dist-cms/packages/block/block/index.js +0 -1
  21. package/dist-cms/packages/block/block/workspace/block-workspace-editor.element.d.ts +0 -1
  22. package/dist-cms/packages/block/block/workspace/block-workspace-editor.element.js +1 -17
  23. package/dist-cms/packages/block/block/workspace/block-workspace.context.js +78 -45
  24. package/dist-cms/packages/block/block/workspace/views/edit/{block-workspace-view-edit-no-router.element.d.ts → block-workspace-view-edit-content-no-router.element.d.ts} +8 -5
  25. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.js +148 -0
  26. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit.element.js +4 -1
  27. package/dist-cms/packages/block/block-grid/components/block-grid-areas-container/block-grid-areas-container.element.d.ts +18 -0
  28. package/dist-cms/packages/block/block-grid/components/block-grid-areas-container/block-grid-areas-container.element.js +46 -0
  29. package/dist-cms/packages/block/block-grid/components/block-grid-areas-container/index.d.ts +1 -0
  30. package/dist-cms/packages/block/block-grid/components/block-grid-areas-container/index.js +1 -0
  31. package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.d.ts +21 -0
  32. package/dist-cms/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.js +118 -0
  33. package/dist-cms/packages/block/block-grid/components/block-grid-entries/index.d.ts +1 -0
  34. package/dist-cms/packages/block/block-grid/components/block-grid-entries/index.js +1 -0
  35. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.d.ts +28 -0
  36. package/dist-cms/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.js +124 -0
  37. package/dist-cms/packages/block/block-grid/components/block-grid-entry/index.d.ts +1 -0
  38. package/dist-cms/packages/block/block-grid/components/block-grid-entry/index.js +1 -0
  39. package/dist-cms/packages/block/block-grid/components/index.d.ts +0 -0
  40. package/dist-cms/packages/block/block-grid/components/index.js +1 -0
  41. package/dist-cms/packages/block/block-grid/components/ref-grid-block/index.d.ts +1 -0
  42. package/dist-cms/packages/block/block-grid/components/ref-grid-block/index.js +1 -0
  43. package/dist-cms/packages/block/block-grid/components/ref-grid-block/ref-grid-block.element.d.ts +18 -0
  44. package/dist-cms/packages/block/block-grid/components/ref-grid-block/ref-grid-block.element.js +47 -0
  45. package/dist-cms/packages/block/block-grid/context/block-grid-entries.context-token.d.ts +3 -0
  46. package/dist-cms/packages/block/block-grid/context/block-grid-entries.context-token.js +3 -0
  47. package/dist-cms/packages/block/block-grid/context/block-grid-entries.context.d.ts +25 -0
  48. package/dist-cms/packages/block/block-grid/context/block-grid-entries.context.js +134 -0
  49. package/dist-cms/packages/block/block-grid/context/block-grid-entry.context-token.d.ts +3 -0
  50. package/dist-cms/packages/block/block-grid/context/block-grid-entry.context-token.js +3 -0
  51. package/dist-cms/packages/block/block-grid/context/block-grid-entry.context.d.ts +12 -0
  52. package/dist-cms/packages/block/block-grid/context/block-grid-entry.context.js +38 -0
  53. package/dist-cms/packages/block/block-grid/context/block-grid-manager.context.d.ts +25 -0
  54. package/dist-cms/packages/block/block-grid/context/block-grid-manager.context.js +38 -0
  55. package/dist-cms/packages/block/block-grid/context/index.d.ts +2 -0
  56. package/dist-cms/packages/block/block-grid/context/index.js +2 -0
  57. package/dist-cms/packages/block/block-grid/index.d.ts +2 -1
  58. package/dist-cms/packages/block/block-grid/index.js +2 -1
  59. package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/manifests.d.ts +1 -0
  60. package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/manifests.js +2 -1
  61. package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid.element.d.ts +7 -8
  62. package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid.element.js +59 -89
  63. package/dist-cms/packages/block/block-grid/property-editors/block-grid-group-configuration/property-editor-ui-block-grid-group-configuration.element.d.ts +3 -3
  64. package/dist-cms/packages/block/block-grid/types.d.ts +15 -3
  65. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.d.ts +29 -0
  66. package/dist-cms/packages/block/block-list/components/block-list-entry/block-list-entry.element.js +132 -0
  67. package/dist-cms/packages/block/block-list/components/block-list-entry/index.d.ts +1 -0
  68. package/dist-cms/packages/block/block-list/components/block-list-entry/index.js +1 -0
  69. package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.d.ts +1 -1
  70. package/dist-cms/packages/block/block-list/components/inline-list-block/inline-list-block.element.js +5 -6
  71. package/dist-cms/packages/block/block-list/components/ref-list-block/ref-list-block.element.js +3 -2
  72. package/dist-cms/packages/block/block-list/context/block-list-entries.context-token.d.ts +3 -0
  73. package/dist-cms/packages/block/block-list/context/block-list-entries.context-token.js +3 -0
  74. package/dist-cms/packages/block/block-list/context/block-list-entries.context.d.ts +23 -0
  75. package/dist-cms/packages/block/block-list/context/block-list-entries.context.js +81 -0
  76. package/dist-cms/packages/block/block-list/context/block-list-entry.context-token.d.ts +3 -0
  77. package/dist-cms/packages/block/block-list/context/block-list-entry.context-token.js +3 -0
  78. package/dist-cms/packages/block/block-list/context/block-list-entry.context.d.ts +11 -0
  79. package/dist-cms/packages/block/block-list/context/{block-list.context.js → block-list-entry.context.js} +11 -10
  80. package/dist-cms/packages/block/block-list/{manager → context}/block-list-manager.context.d.ts +13 -4
  81. package/dist-cms/packages/block/block-list/{manager → context}/block-list-manager.context.js +8 -4
  82. package/dist-cms/packages/block/block-list/context/index.d.ts +1 -0
  83. package/dist-cms/packages/block/block-list/context/index.js +1 -0
  84. package/dist-cms/packages/block/block-list/index.d.ts +2 -1
  85. package/dist-cms/packages/block/block-list/index.js +2 -1
  86. package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.d.ts +2 -7
  87. package/dist-cms/packages/block/block-list/property-editors/block-list-editor/property-editor-ui-block-list.element.js +39 -30
  88. package/dist-cms/packages/block/block-list/types.d.ts +3 -1
  89. package/dist-cms/packages/block/block-type/components/block-type-card/block-type-card.element.js +1 -1
  90. package/dist-cms/packages/core/modal/modal-route-registration.controller.d.ts +1 -1
  91. package/dist-cms/packages/core/modal/modal-route-registration.controller.js +1 -1
  92. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  93. package/dist-cms/vscode-html-custom-data.json +36 -25
  94. package/package.json +13 -2
  95. package/dist-cms/packages/block/block/context/block-entity.context.js +0 -151
  96. package/dist-cms/packages/block/block/manager/index.d.ts +0 -2
  97. package/dist-cms/packages/block/block/manager/index.js +0 -1
  98. package/dist-cms/packages/block/block/workspace/views/edit/block-workspace-view-edit-no-router.element.js +0 -132
  99. package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid-inner-test.element.d.ts +0 -18
  100. package/dist-cms/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid-inner-test.element.js +0 -87
  101. package/dist-cms/packages/block/block-list/components/block-list-block/block-list-block.element.d.ts +0 -31
  102. package/dist-cms/packages/block/block-list/components/block-list-block/block-list-block.element.js +0 -149
  103. package/dist-cms/packages/block/block-list/components/block-list-block/index.d.ts +0 -1
  104. package/dist-cms/packages/block/block-list/components/block-list-block/index.js +0 -1
  105. package/dist-cms/packages/block/block-list/context/block-list.context-token.d.ts +0 -3
  106. package/dist-cms/packages/block/block-list/context/block-list.context-token.js +0 -2
  107. package/dist-cms/packages/block/block-list/context/block-list.context.d.ts +0 -9
  108. /package/dist-cms/packages/block/block/{manager → context}/block-manager.context-token.d.ts +0 -0
  109. /package/dist-cms/packages/block/block/{manager → context}/block-manager.context-token.js +0 -0
@@ -0,0 +1,50 @@
1
+ .umb-block-grid__layout-container {
2
+ position: relative;
3
+ display: grid;
4
+ grid-template-columns: repeat(var(--umb-block-grid--grid-columns, 1), minmax(0, 1fr));
5
+ grid-auto-flow: row;
6
+ grid-auto-rows: minmax(50px, min-content);
7
+
8
+ column-gap: var(--umb-block-grid--column-gap, 0);
9
+ row-gap: var(--umb-block-grid--row-gap, 0);
10
+ }
11
+ .umb-block-grid__layout-item {
12
+ position: relative;
13
+ /* For small devices we scale columnSpan by three, to make everything bigger than 1/3 take full width: */
14
+ grid-column-end: span min(calc(var(--umb-block-grid--item-column-span, 1) * 3), var(--umb-block-grid--grid-columns));
15
+ grid-row: span var(--umb-block-grid--item-row-span, 1);
16
+ }
17
+
18
+ .umb-block-grid__area-container,
19
+ .umb-block-grid__block--view::part(area-container) {
20
+ position: relative;
21
+ display: grid;
22
+ grid-template-columns: repeat(
23
+ var(--umb-block-grid--area-grid-columns, var(--umb-block-grid--grid-columns, 1)),
24
+ minmax(0, 1fr)
25
+ );
26
+ grid-auto-flow: row;
27
+ grid-auto-rows: minmax(50px, min-content);
28
+
29
+ column-gap: var(--umb-block-grid--areas-column-gap, 0);
30
+ row-gap: var(--umb-block-grid--areas-row-gap, 0);
31
+ }
32
+ .umb-block-grid__area {
33
+ position: relative;
34
+ height: 100%;
35
+ display: flex;
36
+ flex-direction: column;
37
+ /* For small devices we scale columnSpan by three, to make everything bigger than 1/3 take full width: */
38
+ grid-column-end: span
39
+ min(calc(var(--umb-block-grid--area-column-span, 1) * 3), var(--umb-block-grid--area-grid-columns));
40
+ grid-row: span var(--umb-block-grid--area-row-span, 1);
41
+ }
42
+
43
+ @media (min-width: 1024px) {
44
+ .umb-block-grid__layout-item {
45
+ grid-column-end: span min(var(--umb-block-grid--item-column-span, 1), var(--umb-block-grid--grid-columns));
46
+ }
47
+ .umb-block-grid__area {
48
+ grid-column-end: span min(var(--umb-block-grid--area-column-span, 1), var(--umb-block-grid--area-grid-columns));
49
+ }
50
+ }
@@ -422,77 +422,84 @@
422
422
  ]
423
423
  },
424
424
  {
425
- "name": "umb-property-editor-ui-block-grid-column-span",
426
- "path": "./../src/packages/block/block-grid/property-editors/block-grid-column-span/property-editor-ui-block-grid-column-span.element.ts",
427
- "attributes": [
425
+ "name": "umb-block-grid-area-container",
426
+ "path": "./../src/packages/block/block-grid/components/block-grid-areas-container/block-grid-areas-container.element.ts",
427
+ "properties": [
428
428
  {
429
- "name": "value",
430
- "type": "BlockGridColumn[]",
431
- "default": "[]"
429
+ "name": "styles",
430
+ "type": "array",
431
+ "default": "[null]"
432
432
  }
433
- ],
433
+ ]
434
+ },
435
+ {
436
+ "name": "umb-block-grid-entries",
437
+ "path": "./../src/packages/block/block-grid/components/block-grid-entries/block-grid-entries.element.ts",
434
438
  "properties": [
435
439
  {
436
- "name": "value",
437
- "attribute": "value",
438
- "type": "BlockGridColumn[]",
439
- "default": "[]"
440
- },
441
- {
442
- "name": "config"
440
+ "name": "areaKey",
441
+ "type": "string | null"
443
442
  },
444
443
  {
445
444
  "name": "styles",
446
445
  "type": "array",
447
446
  "default": "[\"UmbTextStyles\",null]"
448
447
  }
449
- ],
450
- "events": [
448
+ ]
449
+ },
450
+ {
451
+ "name": "umb-block-grid-entry",
452
+ "path": "./../src/packages/block/block-grid/components/block-grid-entry/block-grid-entry.element.ts",
453
+ "properties": [
451
454
  {
452
- "name": "property-value-change"
455
+ "name": "contentUdi",
456
+ "type": "string | undefined"
457
+ },
458
+ {
459
+ "name": "styles",
460
+ "type": "array",
461
+ "default": "[null]"
453
462
  }
454
463
  ]
455
464
  },
456
465
  {
457
- "name": "umb-property-editor-ui-block-grid-inner-test",
458
- "path": "./../src/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid-inner-test.element.ts",
466
+ "name": "umb-ref-grid-block",
467
+ "path": "./../src/packages/block/block-grid/components/ref-grid-block/ref-grid-block.element.ts",
459
468
  "attributes": [
460
469
  {
461
- "name": "name",
462
- "type": "string",
463
- "default": "\"\""
470
+ "name": "label",
471
+ "type": "string | undefined"
464
472
  }
465
473
  ],
466
474
  "properties": [
467
475
  {
468
- "name": "name",
469
- "attribute": "name",
470
- "type": "string",
471
- "default": "\"\""
476
+ "name": "label",
477
+ "attribute": "label",
478
+ "type": "string | undefined"
472
479
  },
473
480
  {
474
481
  "name": "styles",
475
482
  "type": "array",
476
- "default": "[\"UmbTextStyles\"]"
483
+ "default": "[null]"
477
484
  }
478
485
  ]
479
486
  },
480
487
  {
481
- "name": "umb-property-editor-ui-block-grid",
482
- "path": "./../src/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid.element.ts",
488
+ "name": "umb-property-editor-ui-block-grid-column-span",
489
+ "path": "./../src/packages/block/block-grid/property-editors/block-grid-column-span/property-editor-ui-block-grid-column-span.element.ts",
483
490
  "attributes": [
484
491
  {
485
492
  "name": "value",
486
- "type": "string",
487
- "default": "\"\""
493
+ "type": "BlockGridColumn[]",
494
+ "default": "[]"
488
495
  }
489
496
  ],
490
497
  "properties": [
491
498
  {
492
499
  "name": "value",
493
500
  "attribute": "value",
494
- "type": "string",
495
- "default": "\"\""
501
+ "type": "BlockGridColumn[]",
502
+ "default": "[]"
496
503
  },
497
504
  {
498
505
  "name": "config"
@@ -502,6 +509,29 @@
502
509
  "type": "array",
503
510
  "default": "[\"UmbTextStyles\",null]"
504
511
  }
512
+ ],
513
+ "events": [
514
+ {
515
+ "name": "property-value-change"
516
+ }
517
+ ]
518
+ },
519
+ {
520
+ "name": "umb-property-editor-ui-block-grid",
521
+ "path": "./../src/packages/block/block-grid/property-editors/block-grid-editor/property-editor-ui-block-grid.element.ts",
522
+ "properties": [
523
+ {
524
+ "name": "config"
525
+ },
526
+ {
527
+ "name": "value",
528
+ "type": "UmbBlockGridValueModel"
529
+ },
530
+ {
531
+ "name": "styles",
532
+ "type": "array",
533
+ "default": "[\"UmbTextStyles\",null]"
534
+ }
505
535
  ]
506
536
  },
507
537
  {
@@ -510,14 +540,14 @@
510
540
  "attributes": [
511
541
  {
512
542
  "name": "value",
513
- "type": "UmbBlockGridGroupType[]"
543
+ "type": "UmbBlockGridTypeGroupType[]"
514
544
  }
515
545
  ],
516
546
  "properties": [
517
547
  {
518
548
  "name": "value",
519
549
  "attribute": "value",
520
- "type": "UmbBlockGridGroupType[]"
550
+ "type": "UmbBlockGridTypeGroupType[]"
521
551
  },
522
552
  {
523
553
  "name": "config"
@@ -627,11 +657,12 @@
627
657
  ]
628
658
  },
629
659
  {
630
- "name": "umb-property-editor-ui-block-list-block",
631
- "path": "./../src/packages/block/block-list/components/block-list-block/block-list-block.element.ts",
660
+ "name": "umb-block-list-entry",
661
+ "path": "./../src/packages/block/block-list/components/block-list-entry/block-list-entry.element.ts",
632
662
  "properties": [
633
663
  {
634
- "name": "layout"
664
+ "name": "contentUdi",
665
+ "type": "string | undefined"
635
666
  },
636
667
  {
637
668
  "name": "styles",
@@ -887,8 +918,8 @@
887
918
  ]
888
919
  },
889
920
  {
890
- "name": "umb-block-workspace-view-edit-no-router",
891
- "path": "./../src/packages/block/block/workspace/views/edit/block-workspace-view-edit-no-router.element.ts",
921
+ "name": "umb-block-workspace-view-edit-content-no-router",
922
+ "path": "./../src/packages/block/block/workspace/views/edit/block-workspace-view-edit-content-no-router.element.ts",
892
923
  "properties": [
893
924
  {
894
925
  "name": "styles",
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * @export
3
3
  * @method appendToFrozenArray
4
- * @param {Observable<T>} source - RxJS Subject to use for this Observable.
5
- * @param {(mappable: T) => R} mappingFunction - Method to return the part for this Observable to return.
6
- * @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different.
7
- * @description - Creates a RxJS Observable from RxJS Subject.
8
- * @example <caption>Example append new entry for a ArrayState or a part of UmbDeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing.</caption>
4
+ * @param {Array<T>} source - An Array which is frozen and should be updated.
5
+ * @param {T} entry - A new entry to append to the array.
6
+ * @param {(entry: T) => unknown} getUniqueMethod - Method to retrieve a value of an entry that is unique to it. This enables the method to replace existing value if it matches the unique value.
7
+ * @returns {Array<T>} - Returns a new array with the new entry appended.
8
+ * @description - Inserts or replaces an entry in a frozen array and returns a new array.
9
+ * @example <caption>Example append new entry for a UmbArrayState or a part of UmbObjectState/UmbDeepState which is an array. Where the key is unique and the item will be updated if matched with existing.</caption>
9
10
  * const entry = {id: 'myKey', value: 'myValue'};
10
11
  * const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.id === id);
11
12
  * mySubject.next(newDataSet);
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * @export
3
3
  * @method appendToFrozenArray
4
- * @param {Observable<T>} source - RxJS Subject to use for this Observable.
5
- * @param {(mappable: T) => R} mappingFunction - Method to return the part for this Observable to return.
6
- * @param {(previousResult: R, currentResult: R) => boolean} [memoizationFunction] - Method to Compare if the data has changed. Should return true when data is different.
7
- * @description - Creates a RxJS Observable from RxJS Subject.
8
- * @example <caption>Example append new entry for a ArrayState or a part of UmbDeepState/UmbObjectState it which is an array. Where the key is unique and the item will be updated if matched with existing.</caption>
4
+ * @param {Array<T>} source - An Array which is frozen and should be updated.
5
+ * @param {T} entry - A new entry to append to the array.
6
+ * @param {(entry: T) => unknown} getUniqueMethod - Method to retrieve a value of an entry that is unique to it. This enables the method to replace existing value if it matches the unique value.
7
+ * @returns {Array<T>} - Returns a new array with the new entry appended.
8
+ * @description - Inserts or replaces an entry in a frozen array and returns a new array.
9
+ * @example <caption>Example append new entry for a UmbArrayState or a part of UmbObjectState/UmbDeepState which is an array. Where the key is unique and the item will be updated if matched with existing.</caption>
9
10
  * const entry = {id: 'myKey', value: 'myValue'};
10
11
  * const newDataSet = appendToFrozenArray(mySubject.getValue(), entry, x => x.id === id);
11
12
  * mySubject.next(newDataSet);
@@ -549,7 +549,7 @@ export const data = [
549
549
  },
550
550
  {
551
551
  alias: 'useInlineEditingAsDefault',
552
- value: false,
552
+ value: true,
553
553
  },
554
554
  {
555
555
  alias: 'useLiveEditing',
@@ -192,6 +192,31 @@ export const data = [
192
192
  udi: '5678',
193
193
  contentTypeKey: 'all-property-editors-document-type-id',
194
194
  elementProperty: 'Hello world',
195
+ textBox: 'Hello world 123',
196
+ blockList: {
197
+ layout: {
198
+ 'Umbraco.BlockList': [
199
+ {
200
+ contentUdi: '1234b',
201
+ settingsUdi: '5678b',
202
+ },
203
+ ],
204
+ },
205
+ contentData: [
206
+ {
207
+ udi: '1234b',
208
+ contentTypeKey: '4f68ba66-6fb2-4778-83b8-6ab4ca3a7c5c',
209
+ elementProperty: 'Hello world',
210
+ },
211
+ ],
212
+ settingsData: [
213
+ {
214
+ udi: '5678b',
215
+ contentTypeKey: 'all-property-editors-document-type-id',
216
+ elementProperty: 'Hello world',
217
+ },
218
+ ],
219
+ },
195
220
  },
196
221
  ],
197
222
  },
@@ -292,7 +317,72 @@ export const data = [
292
317
  alias: 'blockGrid',
293
318
  culture: null,
294
319
  segment: null,
295
- value: null,
320
+ value: {
321
+ layout: {
322
+ 'Umbraco.BlockGrid': [
323
+ {
324
+ contentUdi: '1234',
325
+ settingsUdi: '5678',
326
+ areas: [
327
+ {
328
+ key: 'area1',
329
+ items: [
330
+ {
331
+ contentUdi: 'a1234',
332
+ settingsUdi: 'a5678',
333
+ areas: [],
334
+ },
335
+ ],
336
+ },
337
+ {
338
+ key: 'area2',
339
+ items: [
340
+ {
341
+ contentUdi: 'b1234',
342
+ settingsUdi: 'b5678',
343
+ areas: [],
344
+ },
345
+ ],
346
+ },
347
+ ],
348
+ },
349
+ ],
350
+ },
351
+ contentData: [
352
+ {
353
+ udi: '1234',
354
+ contentTypeKey: '4f68ba66-6fb2-4778-83b8-6ab4ca3a7c5c',
355
+ elementProperty: 'Hello world',
356
+ },
357
+ {
358
+ udi: 'a1234',
359
+ contentTypeKey: '4f68ba66-6fb2-4778-83b8-6ab4ca3a7c5c',
360
+ elementProperty: 'Hello world from area 1',
361
+ },
362
+ {
363
+ udi: 'b1234',
364
+ contentTypeKey: '4f68ba66-6fb2-4778-83b8-6ab4ca3a7c5c',
365
+ elementProperty: 'Hello world from area 2',
366
+ },
367
+ ],
368
+ settingsData: [
369
+ {
370
+ udi: '5678',
371
+ contentTypeKey: 'all-property-editors-document-type-id',
372
+ elementProperty: 'Hello world',
373
+ },
374
+ {
375
+ udi: 'a5678',
376
+ contentTypeKey: 'all-property-editors-document-type-id',
377
+ elementProperty: 'Hello world from area 1 settings',
378
+ },
379
+ {
380
+ udi: 'b5678',
381
+ contentTypeKey: '4f68ba66-6fb2-4778-83b8-6ab4ca3a7c5c',
382
+ elementProperty: 'Hello world from area 2 settings',
383
+ },
384
+ ],
385
+ },
296
386
  },
297
387
  {
298
388
  alias: 'blockGrid',
@@ -0,0 +1,5 @@
1
+ import type { UmbBlockTypeBaseModel } from '../../block-type/types.js';
2
+ import type { UmbBlockLayoutBaseModel } from '../types.js';
3
+ import type { UmbBlockEntriesContext } from './block-entries.context.js';
4
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
5
+ export declare const UMB_BLOCK_ENTRIES_CONTEXT: UmbContextToken<UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>;
@@ -0,0 +1,2 @@
1
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
2
+ export const UMB_BLOCK_ENTRIES_CONTEXT = new UmbContextToken('UmbBlockEntriesContext');
@@ -0,0 +1,29 @@
1
+ import type { UmbBlockTypeBaseModel } from '../../block-type/types.js';
2
+ import type { UmbBlockDataType, UmbBlockLayoutBaseModel } from '../types.js';
3
+ import { UMB_BLOCK_WORKSPACE_MODAL } from '../workspace/block-workspace.modal-token.js';
4
+ import type { UmbBlockDataObjectModel, UmbBlockManagerContext } from './block-manager.context.js';
5
+ import type { UmbContextToken } from '../../../../libs/context-api/index.js';
6
+ import { UmbContextBase } from '../../../../libs/class-api/index.js';
7
+ import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
8
+ import { UmbArrayState } from '../../../../libs/observable-api/index.js';
9
+ import { UmbModalRouteRegistrationController } from '../../../core/modal/index.js';
10
+ export declare abstract class UmbBlockEntriesContext<BlockManagerContextTokenType extends UmbContextToken<BlockManagerContextType, BlockManagerContextType>, BlockManagerContextType extends UmbBlockManagerContext<BlockType, BlockLayoutType>, BlockType extends UmbBlockTypeBaseModel, BlockLayoutType extends UmbBlockLayoutBaseModel> extends UmbContextBase<UmbBlockEntriesContext<BlockManagerContextTokenType, BlockManagerContextType, BlockType, BlockLayoutType>> {
11
+ #private;
12
+ _manager?: BlockManagerContextType;
13
+ _retrieveManager: Promise<BlockManagerContextType>;
14
+ _workspaceModal: UmbModalRouteRegistrationController;
15
+ workspacePath: import("rxjs").Observable<string | undefined>;
16
+ protected _layoutEntries: UmbArrayState<BlockLayoutType>;
17
+ readonly layoutEntries: import("rxjs").Observable<BlockLayoutType[]>;
18
+ readonly layoutEntriesLength: import("rxjs").Observable<number>;
19
+ constructor(host: UmbControllerHost, blockManagerContextToken: BlockManagerContextTokenType);
20
+ protected abstract _gotBlockManager(): void;
21
+ layoutOf(contentUdi: string): import("rxjs").Observable<BlockLayoutType | undefined>;
22
+ setLayouts(layouts: Array<BlockLayoutType>): void;
23
+ setOneLayout(layoutData: BlockLayoutType): UmbArrayState<BlockLayoutType>;
24
+ abstract getPathForCreateBlock(index: number): string | undefined;
25
+ abstract getPathForClipboard(index: number): string | undefined;
26
+ abstract create(contentElementTypeKey: string, layoutEntry?: Omit<BlockLayoutType, 'contentUdi'>, modalData?: typeof UMB_BLOCK_WORKSPACE_MODAL.DATA): Promise<UmbBlockDataObjectModel<BlockLayoutType> | undefined>;
27
+ abstract insert(layoutEntry: BlockLayoutType, content: UmbBlockDataType, settings: UmbBlockDataType | undefined, modalData: typeof UMB_BLOCK_WORKSPACE_MODAL.DATA): Promise<boolean>;
28
+ delete(contentUdi: string): Promise<void>;
29
+ }
@@ -0,0 +1,69 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _UmbBlockEntriesContext_workspacePath;
7
+ import { UMB_BLOCK_WORKSPACE_MODAL } from '../workspace/block-workspace.modal-token.js';
8
+ import { UMB_BLOCK_ENTRIES_CONTEXT } from './block-entries.context-token.js';
9
+ import { UmbContextBase } from '../../../../libs/class-api/index.js';
10
+ import { UmbArrayState, UmbStringState } from '../../../../libs/observable-api/index.js';
11
+ import { UmbModalRouteRegistrationController } from '../../../core/modal/index.js';
12
+ export class UmbBlockEntriesContext extends UmbContextBase {
13
+ constructor(host, blockManagerContextToken) {
14
+ super(host, UMB_BLOCK_ENTRIES_CONTEXT.toString());
15
+ _UmbBlockEntriesContext_workspacePath.set(this, new UmbStringState(undefined));
16
+ this.workspacePath = __classPrivateFieldGet(this, _UmbBlockEntriesContext_workspacePath, "f").asObservable();
17
+ this._layoutEntries = new UmbArrayState([], (x) => x.contentUdi);
18
+ this.layoutEntries = this._layoutEntries.asObservable();
19
+ this.layoutEntriesLength = this._layoutEntries.asObservablePart((x) => x.length);
20
+ // TODO: Observe Blocks of the layout entries of this component.
21
+ this._retrieveManager = this.consumeContext(blockManagerContextToken, (blockGridManager) => {
22
+ this._manager = blockGridManager;
23
+ this._gotBlockManager();
24
+ this.observe(this._manager.propertyAlias, (alias) => {
25
+ this._workspaceModal.setUniquePathValue('propertyAlias', alias);
26
+ }, 'observePropertyAlias');
27
+ this.observe(this._manager.variantId, (variantId) => {
28
+ // TODO: This might not be the property variant ID, but the content variant ID. Check up on what makes most sense?
29
+ this._workspaceModal.setUniquePathValue('variantId', variantId?.toString());
30
+ }, 'observePropertyVariantId');
31
+ }).asPromise();
32
+ this._workspaceModal = new UmbModalRouteRegistrationController(this, UMB_BLOCK_WORKSPACE_MODAL)
33
+ .addUniquePaths(['propertyAlias', 'variantId'])
34
+ .addAdditionalPath('block')
35
+ .onSetup(() => {
36
+ return { data: { entityType: 'block', preset: {} }, modal: { size: 'medium' } };
37
+ })
38
+ .observeRouteBuilder((routeBuilder) => {
39
+ const newPath = routeBuilder({});
40
+ __classPrivateFieldGet(this, _UmbBlockEntriesContext_workspacePath, "f").setValue(newPath);
41
+ });
42
+ }
43
+ // Public methods:
44
+ layoutOf(contentUdi) {
45
+ return this._layoutEntries.asObservablePart((source) => source.find((x) => x.contentUdi === contentUdi));
46
+ }
47
+ setLayouts(layouts) {
48
+ return this._layoutEntries.setValue(layouts);
49
+ }
50
+ setOneLayout(layoutData) {
51
+ return this._layoutEntries.appendOne(layoutData);
52
+ }
53
+ //edit?
54
+ //editSettings
55
+ // Idea: should we return true if it was successful?
56
+ async delete(contentUdi) {
57
+ await this._retrieveManager;
58
+ const layout = this._layoutEntries.value.find((x) => x.contentUdi === contentUdi);
59
+ if (!layout) {
60
+ throw new Error(`Cannot delete block, missing layout for ${contentUdi}`);
61
+ }
62
+ if (layout.settingsUdi) {
63
+ this._manager?.removeOneSettings(layout.settingsUdi);
64
+ }
65
+ this._manager?.removeOneContent(contentUdi);
66
+ this._layoutEntries.removeOne(contentUdi);
67
+ }
68
+ }
69
+ _UmbBlockEntriesContext_workspacePath = new WeakMap();
@@ -0,0 +1,6 @@
1
+ import type { UmbBlockTypeBaseModel } from '../../block-type/types.js';
2
+ import type { UmbBlockLayoutBaseModel } from '../types.js';
3
+ import type { UmbBlockEntriesContext } from './block-entries.context.js';
4
+ import type { UmbBlockEntryContext } from './block-entry.context.js';
5
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
6
+ export declare const UMB_BLOCK_ENTRY_CONTEXT: UmbContextToken<UmbBlockEntryContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbContextToken<UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockEntryContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbContextToken<UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, UmbBlockEntriesContext<UmbContextToken<import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, import("./block-manager.context.js").UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>;
@@ -0,0 +1,2 @@
1
+ import { UmbContextToken } from '../../../../libs/context-api/index.js';
2
+ export const UMB_BLOCK_ENTRY_CONTEXT = new UmbContextToken('UmbBlockEntryContext');
@@ -1,13 +1,15 @@
1
1
  import type { UmbBlockTypeBaseModel } from '../../block-type/types.js';
2
2
  import type { UmbBlockLayoutBaseModel, UmbBlockDataType } from '../types.js';
3
- import type { UmbBlockManagerContext } from '../manager/index.js';
4
- import { UmbContextToken } from '../../../../libs/context-api/index.js';
3
+ import type { UmbBlockManagerContext } from '../index.js';
4
+ import type { UmbBlockEntriesContext } from './block-entries.context.js';
5
+ import type { UmbContextToken } from '../../../../libs/context-api/index.js';
5
6
  import { UmbContextBase } from '../../../../libs/class-api/index.js';
6
7
  import type { UmbControllerHost } from '../../../../libs/controller-api/index.js';
7
8
  import { UmbObjectState } from '../../../../libs/observable-api/index.js';
8
- export declare abstract class UmbBlockContext<BlockManagerContextTokenType extends UmbContextToken<BlockManagerContextType, BlockManagerContextType>, BlockManagerContextType extends UmbBlockManagerContext<BlockType, BlockLayoutType>, BlockType extends UmbBlockTypeBaseModel = UmbBlockTypeBaseModel, BlockLayoutType extends UmbBlockLayoutBaseModel = UmbBlockLayoutBaseModel> extends UmbContextBase<UmbBlockContext<BlockManagerContextTokenType, BlockManagerContextType, BlockType, BlockLayoutType>> {
9
+ export declare abstract class UmbBlockEntryContext<BlockManagerContextTokenType extends UmbContextToken<BlockManagerContextType>, BlockManagerContextType extends UmbBlockManagerContext<BlockType, BlockLayoutType>, BlockEntriesContextTokenType extends UmbContextToken<BlockEntriesContextType>, BlockEntriesContextType extends UmbBlockEntriesContext<BlockManagerContextTokenType, BlockManagerContextType, BlockType, BlockLayoutType>, BlockType extends UmbBlockTypeBaseModel = UmbBlockTypeBaseModel, BlockLayoutType extends UmbBlockLayoutBaseModel = UmbBlockLayoutBaseModel> extends UmbContextBase<any> {
9
10
  #private;
10
11
  _manager?: BlockManagerContextType;
12
+ _entries?: BlockEntriesContextType;
11
13
  readonly blockTypeName: import("rxjs").Observable<string | undefined>;
12
14
  readonly label: import("rxjs").Observable<string>;
13
15
  readonly workspacePath: import("rxjs").Observable<string | undefined>;
@@ -17,21 +19,34 @@ export declare abstract class UmbBlockContext<BlockManagerContextTokenType exten
17
19
  readonly blockType: import("rxjs").Observable<BlockType | undefined>;
18
20
  readonly blockTypeContentElementTypeKey: import("rxjs").Observable<string | undefined>;
19
21
  readonly blockTypeSettingsElementTypeKey: import("rxjs").Observable<string | undefined>;
22
+ _layout: UmbObjectState<BlockLayoutType | undefined>;
20
23
  readonly layout: import("rxjs").Observable<BlockLayoutType | undefined>;
24
+ /**
25
+ * @obsolete Use `unique` instead. Cause we will most likely rename this in the future.
26
+ */
21
27
  readonly contentUdi: import("rxjs").Observable<string | undefined>;
28
+ readonly unique: import("rxjs").Observable<string | undefined>;
22
29
  readonly content: import("rxjs").Observable<UmbBlockDataType | undefined>;
23
30
  readonly contentTypeKey: import("rxjs").Observable<string | undefined>;
24
31
  readonly settings: import("rxjs").Observable<UmbBlockDataType | undefined>;
25
32
  /**
26
- * Set the layout entry object.
27
- * @method setLayout
28
- * @param {BlockLayoutType | undefined} layout entry object.
33
+ * Set the contentUdi of this entry.
34
+ * @method setContentUdi
35
+ * @param {string} contentUdi the entry content UDI.
29
36
  * @returns {void}
30
37
  */
31
- setLayout(layout: BlockLayoutType | undefined): void;
32
- constructor(host: UmbControllerHost, blockManagerContextToken: BlockManagerContextTokenType);
38
+ setContentUdi(contentUdi: string): void;
39
+ /**
40
+ * Get the current value of this Blocks label.
41
+ * @method getLabel
42
+ * @returns {string}
43
+ */
44
+ getLabel(): string;
45
+ constructor(host: UmbControllerHost, blockManagerContextToken: BlockManagerContextTokenType, blockEntriesContextToken: BlockEntriesContextTokenType);
33
46
  getContentUdi(): string | undefined;
34
- _gotManager(): void;
47
+ abstract _gotManager(): void;
48
+ abstract _gotEntries(): void;
49
+ edit(): void;
50
+ requestDelete(): void;
35
51
  delete(): void;
36
52
  }
37
- export declare const UMB_BLOCK_ENTITY_CONTEXT: UmbContextToken<UmbBlockContext<UmbContextToken<UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockContext<UmbContextToken<UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>, UmbBlockManagerContext<UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>, UmbBlockTypeBaseModel, UmbBlockLayoutBaseModel>>;