@umbraco-cms/backoffice 14.0.0-8a5fc0ad → 14.0.0-8c1d7e37

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 (114) hide show
  1. package/dist-cms/apps/backoffice/backoffice.element.js +1 -1
  2. package/dist-cms/custom-elements.json +81 -81
  3. package/dist-cms/mocks/data/partial-views.data.d.ts +19 -3
  4. package/dist-cms/mocks/data/partial-views.data.js +277 -10
  5. package/dist-cms/mocks/data/utils.d.ts +2 -1
  6. package/dist-cms/mocks/data/utils.js +5 -0
  7. package/dist-cms/mocks/handlers/partial-views.handlers.d.ts +2 -1
  8. package/dist-cms/mocks/handlers/partial-views.handlers.js +37 -5
  9. package/dist-cms/packages/core/entity-action/common/create-folder/create-folder.action.d.ts +8 -0
  10. package/dist-cms/packages/core/entity-action/common/create-folder/create-folder.action.js +21 -0
  11. package/dist-cms/packages/core/entity-action/common/index.d.ts +1 -0
  12. package/dist-cms/packages/core/entity-action/common/index.js +1 -0
  13. package/dist-cms/packages/core/modal/common/folder/folder-modal.element.js +4 -1
  14. package/dist-cms/packages/core/modal/token/folder-modal.token.d.ts +1 -0
  15. package/dist-cms/packages/core/section/section-default.element.js +1 -1
  16. package/dist-cms/packages/core/section/section-views/index.d.ts +1 -1
  17. package/dist-cms/packages/core/section/section-views/index.js +1 -1
  18. package/dist-cms/packages/core/tree/file-system-tree-item/file-system-tree-item.context.d.ts +1 -0
  19. package/dist-cms/packages/core/tree/file-system-tree-item/file-system-tree-item.context.js +12 -0
  20. package/dist-cms/packages/core/tree/file-system-tree-item/file-system-tree-item.element.js +1 -0
  21. package/dist-cms/packages/core/workspace/workspace-action/workspace-action.element.js +12 -4
  22. package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/export/export.action.d.ts +0 -1
  23. package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/export/export.action.js +0 -1
  24. package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/import/import.action.d.ts +0 -1
  25. package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/import/import.action.js +0 -1
  26. package/dist-cms/packages/dictionary/dictionary/index.d.ts +1 -0
  27. package/dist-cms/packages/dictionary/dictionary/index.js +1 -0
  28. package/dist-cms/packages/dictionary/dictionary/repository/index.d.ts +3 -0
  29. package/dist-cms/packages/dictionary/dictionary/repository/index.js +3 -0
  30. package/dist-cms/packages/{translation → dictionary}/dictionary/repository/manifests.js +1 -1
  31. package/dist-cms/packages/{translation → dictionary}/section.manifest.js +4 -4
  32. package/dist-cms/packages/{translation → dictionary}/umbraco-package.d.ts +1 -1
  33. package/dist-cms/packages/dictionary/umbraco-package.js +9 -0
  34. package/dist-cms/packages/settings/dashboards/published-status/dashboard-published-status.element.js +11 -3
  35. package/dist-cms/packages/settings/languages/workspace/language/language-workspace.element.d.ts +0 -1
  36. package/dist-cms/packages/settings/languages/workspace/language/language-workspace.element.js +0 -1
  37. package/dist-cms/packages/templating/components/insert-menu/templating-insert-menu.element.js +1 -1
  38. package/dist-cms/packages/templating/manifests.d.ts +6 -1
  39. package/dist-cms/packages/templating/partial-views/config.d.ts +3 -4
  40. package/dist-cms/packages/templating/partial-views/config.js +1 -0
  41. package/dist-cms/packages/templating/partial-views/entity-actions/create/create-empty.action.js +1 -1
  42. package/dist-cms/packages/templating/partial-views/entity-actions/create/create-from-snippet.action.d.ts +10 -1
  43. package/dist-cms/packages/templating/partial-views/entity-actions/create/create-from-snippet.action.js +16 -1
  44. package/dist-cms/packages/templating/partial-views/entity-actions/create/create-from-snippet.modal.d.ts +16 -0
  45. package/dist-cms/packages/templating/partial-views/entity-actions/create/create-from-snippet.modal.js +73 -0
  46. package/dist-cms/packages/templating/partial-views/entity-actions/manifests.d.ts +6 -1
  47. package/dist-cms/packages/templating/partial-views/entity-actions/manifests.js +43 -5
  48. package/dist-cms/packages/templating/partial-views/manifests.d.ts +6 -1
  49. package/dist-cms/packages/templating/partial-views/repository/partial-views.repository.d.ts +39 -23
  50. package/dist-cms/packages/templating/partial-views/repository/partial-views.repository.js +66 -19
  51. package/dist-cms/packages/templating/partial-views/repository/sources/partial-views.detail.server.data.d.ts +48 -13
  52. package/dist-cms/packages/templating/partial-views/repository/sources/partial-views.detail.server.data.js +56 -17
  53. package/dist-cms/packages/templating/partial-views/repository/sources/partial-views.folder.server.data.d.ts +17 -0
  54. package/dist-cms/packages/templating/partial-views/repository/sources/partial-views.folder.server.data.js +23 -0
  55. package/dist-cms/packages/templating/partial-views/workspace/partial-views-workspace-edit.element.d.ts +6 -1
  56. package/dist-cms/packages/templating/partial-views/workspace/partial-views-workspace-edit.element.js +123 -27
  57. package/dist-cms/packages/templating/partial-views/workspace/partial-views-workspace.context.d.ts +8 -6
  58. package/dist-cms/packages/templating/partial-views/workspace/partial-views-workspace.context.js +47 -6
  59. package/dist-cms/packages/templating/partial-views/workspace/partial-views-workspace.element.d.ts +1 -0
  60. package/dist-cms/packages/templating/partial-views/workspace/partial-views-workspace.element.js +7 -3
  61. package/dist-cms/shared/repository/data-source/data-source.interface.d.ts +2 -2
  62. package/dist-cms/shared/repository/detail-repository.interface.d.ts +2 -2
  63. package/dist-cms/tsconfig.tsbuildinfo +1 -1
  64. package/dist-cms/vscode-html-custom-data.json +40 -40
  65. package/package.json +19 -19
  66. package/dist-cms/packages/translation/umbraco-package.js +0 -9
  67. /package/dist-cms/packages/{translation → dictionary}/dashboards/dictionary/dashboard-translation-dictionary.element.d.ts +0 -0
  68. /package/dist-cms/packages/{translation → dictionary}/dashboards/dictionary/dashboard-translation-dictionary.element.js +0 -0
  69. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/create/create-dictionary-modal.element.d.ts +0 -0
  70. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/create/create-dictionary-modal.element.js +0 -0
  71. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/create/create.action.d.ts +0 -0
  72. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/create/create.action.js +0 -0
  73. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/export/export-dictionary-modal.element.d.ts +0 -0
  74. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/export/export-dictionary-modal.element.js +0 -0
  75. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/import/import-dictionary-modal.element.d.ts +0 -0
  76. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/import/import-dictionary-modal.element.js +0 -0
  77. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/manifests.d.ts +0 -0
  78. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/manifests.js +0 -0
  79. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/reload.action.d.ts +0 -0
  80. /package/dist-cms/packages/{translation → dictionary}/dictionary/entity-actions/reload.action.js +0 -0
  81. /package/dist-cms/packages/{translation → dictionary}/dictionary/manifests.d.ts +0 -0
  82. /package/dist-cms/packages/{translation → dictionary}/dictionary/manifests.js +0 -0
  83. /package/dist-cms/packages/{translation → dictionary}/dictionary/menu-item/dictionary-menu-item.element.d.ts +0 -0
  84. /package/dist-cms/packages/{translation → dictionary}/dictionary/menu-item/dictionary-menu-item.element.js +0 -0
  85. /package/dist-cms/packages/{translation → dictionary}/dictionary/menu-item/manifests.d.ts +0 -0
  86. /package/dist-cms/packages/{translation → dictionary}/dictionary/menu-item/manifests.js +0 -0
  87. /package/dist-cms/packages/{translation → dictionary}/dictionary/menu.manifests.d.ts +0 -0
  88. /package/dist-cms/packages/{translation → dictionary}/dictionary/menu.manifests.js +0 -0
  89. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/dictionary.repository.d.ts +0 -0
  90. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/dictionary.repository.js +0 -0
  91. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/dictionary.store.d.ts +0 -0
  92. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/dictionary.store.js +0 -0
  93. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/dictionary.tree.store.d.ts +0 -0
  94. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/dictionary.tree.store.js +0 -0
  95. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/manifests.d.ts +0 -0
  96. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/sources/dictionary.detail.server.data.d.ts +0 -0
  97. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/sources/dictionary.detail.server.data.js +0 -0
  98. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/sources/dictionary.tree.server.data.d.ts +0 -0
  99. /package/dist-cms/packages/{translation → dictionary}/dictionary/repository/sources/dictionary.tree.server.data.js +0 -0
  100. /package/dist-cms/packages/{translation → dictionary}/dictionary/tree/manifests.d.ts +0 -0
  101. /package/dist-cms/packages/{translation → dictionary}/dictionary/tree/manifests.js +0 -0
  102. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/dictionary-workspace-editor.element.d.ts +0 -0
  103. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/dictionary-workspace-editor.element.js +0 -0
  104. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/dictionary-workspace.context.d.ts +0 -0
  105. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/dictionary-workspace.context.js +0 -0
  106. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/dictionary-workspace.element.d.ts +0 -0
  107. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/dictionary-workspace.element.js +0 -0
  108. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/manifests.d.ts +0 -0
  109. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/manifests.js +0 -0
  110. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/views/editor/workspace-view-dictionary-editor.element.d.ts +0 -0
  111. /package/dist-cms/packages/{translation → dictionary}/dictionary/workspace/views/editor/workspace-view-dictionary-editor.element.js +0 -0
  112. /package/dist-cms/packages/{translation → dictionary}/manifests.d.ts +0 -0
  113. /package/dist-cms/packages/{translation → dictionary}/manifests.js +0 -0
  114. /package/dist-cms/packages/{translation → dictionary}/section.manifest.d.ts +0 -0
@@ -19,7 +19,7 @@ const CORE_PACKAGES = [
19
19
  import('../../packages/documents/umbraco-package.js'),
20
20
  import('../../packages/media/umbraco-package.js'),
21
21
  import('../../packages/members/umbraco-package.js'),
22
- import('../../packages/translation/umbraco-package.js'),
22
+ import('../../packages/dictionary/umbraco-package.js'),
23
23
  import('../../packages/users/umbraco-package.js'),
24
24
  import('../../packages/packages/umbraco-package.js'),
25
25
  import('../../packages/search/umbraco-package.js'),
@@ -4549,6 +4549,87 @@
4549
4549
  }
4550
4550
  ]
4551
4551
  },
4552
+ {
4553
+ "name": "umb-dashboard-translation-dictionary",
4554
+ "path": "./../src/packages/dictionary/dashboards/dictionary/dashboard-translation-dictionary.element.ts",
4555
+ "properties": [
4556
+ {
4557
+ "name": "styles",
4558
+ "type": "array",
4559
+ "default": "[\"UUITextStyles\",null]"
4560
+ }
4561
+ ]
4562
+ },
4563
+ {
4564
+ "name": "umb-create-dictionary-modal",
4565
+ "path": "./../src/packages/dictionary/dictionary/entity-actions/create/create-dictionary-modal.element.ts",
4566
+ "properties": [
4567
+ {
4568
+ "name": "styles",
4569
+ "type": "array",
4570
+ "default": "[\"UUITextStyles\"]"
4571
+ }
4572
+ ]
4573
+ },
4574
+ {
4575
+ "name": "umb-export-dictionary-modal",
4576
+ "path": "./../src/packages/dictionary/dictionary/entity-actions/export/export-dictionary-modal.element.ts",
4577
+ "properties": [
4578
+ {
4579
+ "name": "styles",
4580
+ "type": "array",
4581
+ "default": "[\"UUITextStyles\"]"
4582
+ }
4583
+ ]
4584
+ },
4585
+ {
4586
+ "name": "umb-import-dictionary-modal",
4587
+ "path": "./../src/packages/dictionary/dictionary/entity-actions/import/import-dictionary-modal.element.ts",
4588
+ "properties": [
4589
+ {
4590
+ "name": "styles",
4591
+ "type": "array",
4592
+ "default": "[\"UUITextStyles\",null]"
4593
+ }
4594
+ ]
4595
+ },
4596
+ {
4597
+ "name": "umb-dictionary-menu-item",
4598
+ "path": "./../src/packages/dictionary/dictionary/menu-item/dictionary-menu-item.element.ts"
4599
+ },
4600
+ {
4601
+ "name": "umb-dictionary-workspace-editor",
4602
+ "path": "./../src/packages/dictionary/dictionary/workspace/dictionary-workspace-editor.element.ts",
4603
+ "properties": [
4604
+ {
4605
+ "name": "styles",
4606
+ "type": "array",
4607
+ "default": "[\"UUITextStyles\",null]"
4608
+ }
4609
+ ]
4610
+ },
4611
+ {
4612
+ "name": "umb-dictionary-workspace",
4613
+ "path": "./../src/packages/dictionary/dictionary/workspace/dictionary-workspace.element.ts",
4614
+ "properties": [
4615
+ {
4616
+ "name": "styles",
4617
+ "type": "array",
4618
+ "default": "[\"UUITextStyles\"]"
4619
+ }
4620
+ ]
4621
+ },
4622
+ {
4623
+ "name": "umb-workspace-view-dictionary-editor",
4624
+ "path": "./../src/packages/dictionary/dictionary/workspace/views/editor/workspace-view-dictionary-editor.element.ts",
4625
+ "properties": [
4626
+ {
4627
+ "name": "styles",
4628
+ "type": "array",
4629
+ "default": "[\"UUITextStyles\",null]"
4630
+ }
4631
+ ]
4632
+ },
4552
4633
  {
4553
4634
  "name": "umb-dashboard-redirect-management",
4554
4635
  "path": "./../src/packages/documents/dashboards/redirect-management/dashboard-redirect-management.element.ts",
@@ -7474,87 +7555,6 @@
7474
7555
  "name": "umb-template-workspace",
7475
7556
  "path": "./../src/packages/templating/templates/workspace/template-workspace.element.ts"
7476
7557
  },
7477
- {
7478
- "name": "umb-dashboard-translation-dictionary",
7479
- "path": "./../src/packages/translation/dashboards/dictionary/dashboard-translation-dictionary.element.ts",
7480
- "properties": [
7481
- {
7482
- "name": "styles",
7483
- "type": "array",
7484
- "default": "[\"UUITextStyles\",null]"
7485
- }
7486
- ]
7487
- },
7488
- {
7489
- "name": "umb-create-dictionary-modal",
7490
- "path": "./../src/packages/translation/dictionary/entity-actions/create/create-dictionary-modal.element.ts",
7491
- "properties": [
7492
- {
7493
- "name": "styles",
7494
- "type": "array",
7495
- "default": "[\"UUITextStyles\"]"
7496
- }
7497
- ]
7498
- },
7499
- {
7500
- "name": "umb-export-dictionary-modal",
7501
- "path": "./../src/packages/translation/dictionary/entity-actions/export/export-dictionary-modal.element.ts",
7502
- "properties": [
7503
- {
7504
- "name": "styles",
7505
- "type": "array",
7506
- "default": "[\"UUITextStyles\"]"
7507
- }
7508
- ]
7509
- },
7510
- {
7511
- "name": "umb-import-dictionary-modal",
7512
- "path": "./../src/packages/translation/dictionary/entity-actions/import/import-dictionary-modal.element.ts",
7513
- "properties": [
7514
- {
7515
- "name": "styles",
7516
- "type": "array",
7517
- "default": "[\"UUITextStyles\",null]"
7518
- }
7519
- ]
7520
- },
7521
- {
7522
- "name": "umb-dictionary-menu-item",
7523
- "path": "./../src/packages/translation/dictionary/menu-item/dictionary-menu-item.element.ts"
7524
- },
7525
- {
7526
- "name": "umb-dictionary-workspace-editor",
7527
- "path": "./../src/packages/translation/dictionary/workspace/dictionary-workspace-editor.element.ts",
7528
- "properties": [
7529
- {
7530
- "name": "styles",
7531
- "type": "array",
7532
- "default": "[\"UUITextStyles\",null]"
7533
- }
7534
- ]
7535
- },
7536
- {
7537
- "name": "umb-dictionary-workspace",
7538
- "path": "./../src/packages/translation/dictionary/workspace/dictionary-workspace.element.ts",
7539
- "properties": [
7540
- {
7541
- "name": "styles",
7542
- "type": "array",
7543
- "default": "[\"UUITextStyles\"]"
7544
- }
7545
- ]
7546
- },
7547
- {
7548
- "name": "umb-workspace-view-dictionary-editor",
7549
- "path": "./../src/packages/translation/dictionary/workspace/views/editor/workspace-view-dictionary-editor.element.ts",
7550
- "properties": [
7551
- {
7552
- "name": "styles",
7553
- "type": "array",
7554
- "default": "[\"UUITextStyles\",null]"
7555
- }
7556
- ]
7557
- },
7558
7558
  {
7559
7559
  "name": "umb-umbraco-news-dashboard",
7560
7560
  "path": "./../src/packages/umbraco-news/umbraco-news-dashboard.element.ts",
@@ -1,11 +1,27 @@
1
1
  import { UmbEntityData } from './entity.data.js';
2
- import { FileSystemTreeItemPresentationModel, PagedFileSystemTreeItemPresentationModel } from '../../external/backend-api/index.js';
3
- export declare const data: Array<FileSystemTreeItemPresentationModel>;
4
- declare class UmbPartialViewsData extends UmbEntityData<FileSystemTreeItemPresentationModel> {
2
+ import { CreateTextFileViewModelBaseModel, FileSystemTreeItemPresentationModel, PagedFileSystemTreeItemPresentationModel, PartialViewResponseModel, PartialViewSnippetResponseModel, SnippetItemResponseModel } from '../../external/backend-api/index.js';
3
+ type PartialViewsDataItem = PartialViewResponseModel & FileSystemTreeItemPresentationModel & {
4
+ id: string;
5
+ };
6
+ export declare const treeData: Array<PartialViewsDataItem>;
7
+ declare class UmbPartialViewsTreeData extends UmbEntityData<FileSystemTreeItemPresentationModel> {
5
8
  constructor();
6
9
  getTreeRoot(): PagedFileSystemTreeItemPresentationModel;
7
10
  getTreeItemChildren(parentPath: string): PagedFileSystemTreeItemPresentationModel;
8
11
  getTreeItem(paths: Array<string>): Array<FileSystemTreeItemPresentationModel>;
9
12
  }
13
+ export declare const umbPartialViewsTreeData: UmbPartialViewsTreeData;
14
+ export declare const snippets: Array<PartialViewSnippetResponseModel>;
15
+ declare class UmbPartialViewSnippetsData extends UmbEntityData<SnippetItemResponseModel> {
16
+ constructor();
17
+ getSnippets(): Array<SnippetItemResponseModel>;
18
+ getSnippetByName(name: string): SnippetItemResponseModel | undefined;
19
+ }
20
+ declare class UmbPartialViewsData extends UmbEntityData<PartialViewResponseModel> {
21
+ constructor();
22
+ getPartialView(path: string): PartialViewResponseModel | undefined;
23
+ insertPartialView(item: CreateTextFileViewModelBaseModel): PartialViewsDataItem;
24
+ }
25
+ export declare const umbPartialViewSnippetsData: UmbPartialViewSnippetsData;
10
26
  export declare const umbPartialViewsData: UmbPartialViewsData;
11
27
  export {};
@@ -1,7 +1,8 @@
1
1
  import { UmbEntityData } from './entity.data.js';
2
- import { createFileSystemTreeItem } from './utils.js';
3
- export const data = [
2
+ import { createFileSystemTreeItem, createTextFileItem } from './utils.js';
3
+ export const treeData = [
4
4
  {
5
+ id: 'blockgrid',
5
6
  path: 'blockgrid',
6
7
  isFolder: true,
7
8
  name: 'blockgrid',
@@ -9,6 +10,7 @@ export const data = [
9
10
  hasChildren: true,
10
11
  },
11
12
  {
13
+ id: 'blocklist',
12
14
  path: 'blocklist',
13
15
  isFolder: true,
14
16
  name: 'blocklist',
@@ -16,6 +18,7 @@ export const data = [
16
18
  hasChildren: true,
17
19
  },
18
20
  {
21
+ id: 'grid',
19
22
  path: 'grid',
20
23
  isFolder: true,
21
24
  name: 'grid',
@@ -23,48 +26,86 @@ export const data = [
23
26
  hasChildren: true,
24
27
  },
25
28
  {
29
+ id: 'blockgrid/area.cshtml',
26
30
  path: 'blockgrid/area.cshtml',
27
31
  isFolder: false,
28
32
  name: 'area.cshtml',
29
33
  type: 'partial-view',
30
34
  hasChildren: false,
35
+ content: `@using Umbraco.Extensions
36
+ @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockGridArea>
37
+
38
+ <div class="umb-block-grid__area"
39
+ data-area-col-span="@Model.ColumnSpan"
40
+ data-area-row-span="@Model.RowSpan"
41
+ data-area-alias="@Model.Alias"
42
+ style="--umb-block-grid--grid-columns: @Model.ColumnSpan;--umb-block-grid--area-column-span: @Model.ColumnSpan; --umb-block-grid--area-row-span: @Model.RowSpan;">
43
+ @await Html.GetBlockGridItemsHtmlAsync(Model)
44
+ </div>
45
+ `,
31
46
  },
32
47
  {
48
+ id: 'blockgrid/items.cshtml',
33
49
  path: 'blockgrid/items.cshtml',
34
50
  isFolder: false,
35
51
  name: 'items.cshtml',
36
52
  type: 'partial-view',
37
53
  hasChildren: false,
54
+ content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage',
38
55
  },
39
56
  {
57
+ id: 'blocklist/default.cshtml',
40
58
  path: 'blocklist/default.cshtml',
41
59
  isFolder: false,
42
60
  name: 'default.cshtml',
43
61
  type: 'partial-view',
44
62
  hasChildren: false,
63
+ content: `@using Umbraco.Extensions
64
+ @inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<Umbraco.Cms.Core.Models.Blocks.BlockGridModel>
65
+ @{
66
+ if (Model?.Any() != true) { return; }
67
+ }
68
+
69
+ <div class="umb-block-grid"
70
+ data-grid-columns="@(Model.GridColumns?.ToString() ?? "12");"
71
+ style="--umb-block-grid--grid-columns: @(Model.GridColumns?.ToString() ?? "12");">
72
+ @await Html.GetBlockGridItemsHtmlAsync(Model)
73
+ </div>
74
+ `,
45
75
  },
46
76
  {
47
- path: 'grid/editors',
77
+ id: 'grid/embed.cshtm',
78
+ path: 'grid/embed.cshtm',
48
79
  isFolder: false,
49
- name: 'editors',
80
+ name: 'embed.cshtml',
50
81
  type: 'partial-view',
51
82
  hasChildren: false,
83
+ content: `@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage<dynamic>
84
+
85
+ @if (Model is not null)
86
+ {
87
+ string embedValue = Convert.ToString(Model.value);
88
+ embedValue = embedValue.DetectIsJson() ? Model.value.preview : Model.value;
89
+
90
+ <div class="video-wrapper">
91
+ @Html.Raw(embedValue)
92
+ </div>
93
+ }
94
+ `,
52
95
  },
53
96
  {
97
+ id: 'grid/default.cshtml',
54
98
  path: 'grid/default.cshtml',
55
99
  isFolder: false,
56
100
  name: 'items.cshtml',
57
101
  type: 'partial-view',
58
102
  hasChildren: false,
103
+ content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage',
59
104
  },
60
105
  ];
61
- // Temp mocked database
62
- // TODO: all properties are optional in the server schema. I don't think this is correct.
63
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
64
- // @ts-ignore
65
- class UmbPartialViewsData extends UmbEntityData {
106
+ class UmbPartialViewsTreeData extends UmbEntityData {
66
107
  constructor() {
67
- super(data);
108
+ super(treeData);
68
109
  }
69
110
  getTreeRoot() {
70
111
  const items = this.data.filter((item) => item.path?.includes('/') === false);
@@ -83,4 +124,230 @@ class UmbPartialViewsData extends UmbEntityData {
83
124
  return items.map((item) => createFileSystemTreeItem(item));
84
125
  }
85
126
  }
127
+ export const umbPartialViewsTreeData = new UmbPartialViewsTreeData();
128
+ export const snippets = [
129
+ {
130
+ name: 'Empty',
131
+ content: '@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage',
132
+ },
133
+ {
134
+ name: 'Breadcrumb',
135
+ content: `@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage
136
+ @using Umbraco.Cms.Core.Routing
137
+ @using Umbraco.Extensions
138
+
139
+ @inject IPublishedUrlProvider PublishedUrlProvider
140
+ @*
141
+ This snippet makes a breadcrumb of parents using an unordered HTML list.
142
+
143
+ How it works:
144
+ - It uses the Ancestors() method to get all parents and then generates links so the visitor can go back
145
+ - Finally it outputs the name of the current page (without a link)
146
+ *@
147
+
148
+ @{ var selection = Model.Ancestors().ToArray(); }
149
+
150
+ @if (selection?.Length > 0)
151
+ {
152
+ <ul class="breadcrumb">
153
+ @* For each page in the ancestors collection which have been ordered by Level (so we start with the highest top node first) *@
154
+ @foreach (var item in selection.OrderBy(x => x.Level))
155
+ {
156
+ <li><a href="@item.Url(PublishedUrlProvider)">@item.Name</a> <span class="divider">/</span></li>
157
+ }
158
+
159
+ @* Display the current page as the last item in the list *@
160
+ <li class="active">@Model.Name</li>
161
+ </ul>
162
+ }`,
163
+ },
164
+ {
165
+ name: 'EditProfile',
166
+ content: `@inherits Umbraco.Cms.Web.Common.Views.UmbracoViewPage
167
+
168
+ @using Umbraco.Cms.Core.Services
169
+ @using Umbraco.Cms.Web.Common.Security
170
+ @using Umbraco.Cms.Web.Website.Controllers
171
+ @using Umbraco.Cms.Web.Website.Models
172
+ @using Umbraco.Extensions
173
+ @inject MemberModelBuilderFactory memberModelBuilderFactory;
174
+ @inject IMemberExternalLoginProviders memberExternalLoginProviders
175
+ @inject IExternalLoginWithKeyService externalLoginWithKeyService
176
+ @{
177
+
178
+ // Build a profile model to edit
179
+ var profileModel = await memberModelBuilderFactory
180
+ .CreateProfileModel()
181
+ // If null or not set, this will redirect to the current page
182
+ .WithRedirectUrl(null)
183
+ // Include editable custom properties on the form
184
+ .WithCustomProperties(true)
185
+ .BuildForCurrentMemberAsync();
186
+
187
+ var success = TempData["FormSuccess"] != null;
188
+
189
+ var loginProviders = await memberExternalLoginProviders.GetMemberProvidersAsync();
190
+ var externalSignInError = ViewData.GetExternalSignInProviderErrors();
191
+
192
+ var currentExternalLogin = profileModel is null
193
+ ? new Dictionary<string, string>()
194
+ : externalLoginWithKeyService.GetExternalLogins(profileModel.Key).ToDictionary(x=>x.LoginProvider, x=>x.ProviderKey);
195
+ }
196
+
197
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
198
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.min.js"></script>
199
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.11/jquery.validate.unobtrusive.min.js"></script>
200
+
201
+ @if (profileModel != null)
202
+ {
203
+ if (success)
204
+ {
205
+ @* This message will show if profileModel.RedirectUrl is not defined (default) *@
206
+ <p class="text-success">Profile updated</p>
207
+ }
208
+
209
+ using (Html.BeginUmbracoForm<UmbProfileController>("HandleUpdateProfile", new { RedirectUrl = profileModel.RedirectUrl }))
210
+ {
211
+ <h2>Update your account.</h2>
212
+ <hr />
213
+ <div asp-validation-summary="All" class="text-danger"></div>
214
+ <div class="mb-3">
215
+ <label asp-for="@profileModel.Name" class="form-label"></label>
216
+ <input asp-for="@profileModel.Name" class="form-control" aria-required="true" />
217
+ <span asp-validation-for="@profileModel.Name" class="form-text text-danger"></span>
218
+ </div>
219
+ <div class="mb-3">
220
+ <label asp-for="@profileModel.Email" class="form-label"></label>
221
+ <input asp-for="@profileModel.Email" class="form-control" autocomplete="username" aria-required="true" />
222
+ <span asp-validation-for="@profileModel.Email" class="form-text text-danger"></span>
223
+ </div>
224
+
225
+ @if (!string.IsNullOrWhiteSpace(profileModel.UserName))
226
+ {
227
+ <div class="mb-3">
228
+ <label asp-for="@profileModel.UserName" class="form-label"></label>
229
+ <input asp-for="@profileModel.UserName" class="form-control" autocomplete="username" aria-required="true" />
230
+ <span asp-validation-for="@profileModel.UserName" class="form-text text-danger"></span>
231
+ </div>
232
+ }
233
+
234
+ @if (profileModel.MemberProperties != null)
235
+ {
236
+ for (var i = 0; i < profileModel.MemberProperties.Count; i++)
237
+ {
238
+ <div class="mb-3">
239
+ @Html.LabelFor(m => profileModel.MemberProperties[i].Value, profileModel.MemberProperties[i].Name)
240
+ <input asp-for="@profileModel.MemberProperties[i].Value" class="form-control" />
241
+ @Html.HiddenFor(m => profileModel.MemberProperties[i].Alias)
242
+ <span asp-validation-for="@profileModel.MemberProperties[i].Value" class="form-text text-danger"></span>
243
+ </div>
244
+ }
245
+ }
246
+
247
+ <button type="submit" class="btn btn-primary">Update</button>
248
+
249
+ if (loginProviders.Any())
250
+ {
251
+ <hr/>
252
+ <h4>Link external accounts</h4>
253
+
254
+ if (externalSignInError?.AuthenticationType is null && externalSignInError?.Errors.Any() == true)
255
+ {
256
+ @Html.DisplayFor(x => externalSignInError.Errors);
257
+ }
258
+
259
+ @foreach (var login in loginProviders)
260
+ {
261
+ if (currentExternalLogin.TryGetValue(login.ExternalLoginProvider.AuthenticationType, out var providerKey))
262
+ {
263
+ @using (Html.BeginUmbracoForm<UmbExternalLoginController>(nameof(UmbExternalLoginController.Disassociate)))
264
+ {
265
+ <input type="hidden" name="providerKey" value="@providerKey"/>
266
+ <button type="submit" name="provider" value="@login.ExternalLoginProvider.AuthenticationType">
267
+ Un-Link your @login.AuthenticationScheme.DisplayName account
268
+ </button>
269
+
270
+ if (externalSignInError?.AuthenticationType == login.ExternalLoginProvider.AuthenticationType)
271
+ {
272
+ @Html.DisplayFor(x => externalSignInError.Errors);
273
+ }
274
+ }
275
+ }
276
+ else
277
+ {
278
+ @using (Html.BeginUmbracoForm<UmbExternalLoginController>(nameof(UmbExternalLoginController.LinkLogin)))
279
+ {
280
+ <button type="submit" name="provider" value="@login.ExternalLoginProvider.AuthenticationType">
281
+ Link your @login.AuthenticationScheme.DisplayName account
282
+ </button>
283
+
284
+ if (externalSignInError?.AuthenticationType == login.ExternalLoginProvider.AuthenticationType)
285
+ {
286
+ @Html.DisplayFor(x => externalSignInError.Errors);
287
+ }
288
+ }
289
+ }
290
+
291
+ }
292
+ }
293
+ }
294
+ }`,
295
+ },
296
+ {
297
+ name: 'Login',
298
+ content: 'login',
299
+ },
300
+ {
301
+ name: 'LoginStatus',
302
+ content: 'loginStatus',
303
+ },
304
+ {
305
+ name: 'MultinodeTree-picker',
306
+ content: 'MultinodeTree-picker',
307
+ },
308
+ {
309
+ name: 'Navigation',
310
+ content: 'Navigation',
311
+ },
312
+ {
313
+ name: 'RegisterMember',
314
+ content: 'RegisterMember',
315
+ },
316
+ {
317
+ name: 'SiteMap',
318
+ content: 'SiteMap',
319
+ },
320
+ ];
321
+ class UmbPartialViewSnippetsData extends UmbEntityData {
322
+ constructor() {
323
+ super(snippets);
324
+ }
325
+ getSnippets() {
326
+ return this.data;
327
+ }
328
+ getSnippetByName(name) {
329
+ return this.data.find((item) => item.name === name);
330
+ }
331
+ }
332
+ class UmbPartialViewsData extends UmbEntityData {
333
+ constructor() {
334
+ super(treeData);
335
+ }
336
+ getPartialView(path) {
337
+ return createTextFileItem(this.data.find((item) => item.path === path));
338
+ }
339
+ insertPartialView(item) {
340
+ const newItem = {
341
+ ...item,
342
+ path: `${item.parentPath}/${item.name}.cshtml}`,
343
+ id: `${item.parentPath}/${item.name}.cshtml}`,
344
+ isFolder: false,
345
+ hasChildren: false,
346
+ type: 'partial-view',
347
+ };
348
+ this.insert(newItem);
349
+ return newItem;
350
+ }
351
+ }
352
+ export const umbPartialViewSnippetsData = new UmbPartialViewSnippetsData();
86
353
  export const umbPartialViewsData = new UmbPartialViewsData();
@@ -1,4 +1,4 @@
1
- import type { ContentTreeItemResponseModel, DocumentTreeItemResponseModel, DocumentTypeTreeItemResponseModel, EntityTreeItemResponseModel, FolderTreeItemResponseModel, DocumentTypeResponseModel, FileSystemTreeItemPresentationModel, DocumentResponseModel } from '../../external/backend-api/index.js';
1
+ import type { ContentTreeItemResponseModel, DocumentTreeItemResponseModel, DocumentTypeTreeItemResponseModel, EntityTreeItemResponseModel, FolderTreeItemResponseModel, DocumentTypeResponseModel, FileSystemTreeItemPresentationModel, DocumentResponseModel, TextFileResponseModelBaseModel } from '../../external/backend-api/index.js';
2
2
  export declare const createEntityTreeItem: (item: any) => EntityTreeItemResponseModel;
3
3
  export declare const createFolderTreeItem: (item: any) => FolderTreeItemResponseModel;
4
4
  export declare const createContentTreeItem: (item: any) => ContentTreeItemResponseModel & {
@@ -9,3 +9,4 @@ export declare const createDocumentTreeItem: (item: DocumentResponseModel) => Do
9
9
  };
10
10
  export declare const createDocumentTypeTreeItem: (item: DocumentTypeResponseModel) => DocumentTypeTreeItemResponseModel;
11
11
  export declare const createFileSystemTreeItem: (item: any) => FileSystemTreeItemPresentationModel;
12
+ export declare const createTextFileItem: (item: any) => TextFileResponseModelBaseModel;
@@ -55,3 +55,8 @@ export const createFileSystemTreeItem = (item) => {
55
55
  isFolder: item.isFolder,
56
56
  };
57
57
  };
58
+ export const createTextFileItem = (item) => ({
59
+ path: item.path,
60
+ name: item.name,
61
+ content: item.content,
62
+ });
@@ -1 +1,2 @@
1
- export declare const handlers: import("msw").RestHandler<import("msw/lib/glossary-de6278a9.js").M<import("msw/lib/glossary-de6278a9.js").h>>[];
1
+ import { RestHandler, MockedRequest, DefaultBodyType } from 'msw';
2
+ export declare const handlers: RestHandler<MockedRequest<DefaultBodyType>>[];
@@ -1,23 +1,55 @@
1
1
  const { rest } = window.MockServiceWorker;
2
- import { umbPartialViewsData } from '../data/partial-views.data.js';
2
+ import { umbPartialViewsData, umbPartialViewsTreeData } from '../data/partial-views.data.js';
3
3
  import { umbracoPath } from '../../shared/utils/index.js';
4
- export const handlers = [
4
+ const treeHandlers = [
5
5
  rest.get(umbracoPath('/tree/partial-view/root'), (req, res, ctx) => {
6
- const response = umbPartialViewsData.getTreeRoot();
6
+ const response = umbPartialViewsTreeData.getTreeRoot();
7
7
  return res(ctx.status(200), ctx.json(response));
8
8
  }),
9
9
  rest.get(umbracoPath('/tree/partial-view/children'), (req, res, ctx) => {
10
10
  const path = req.url.searchParams.get('path');
11
11
  if (!path)
12
12
  return;
13
- const response = umbPartialViewsData.getTreeItemChildren(path);
13
+ const response = umbPartialViewsTreeData.getTreeItemChildren(path);
14
14
  return res(ctx.status(200), ctx.json(response));
15
15
  }),
16
16
  rest.get(umbracoPath('/tree/partial-view/item'), (req, res, ctx) => {
17
17
  const paths = req.url.searchParams.getAll('paths');
18
18
  if (!paths)
19
19
  return;
20
- const items = umbPartialViewsData.getTreeItem(paths);
20
+ const items = umbPartialViewsTreeData.getTreeItem(paths);
21
21
  return res(ctx.status(200), ctx.json(items));
22
22
  }),
23
23
  ];
24
+ const detailHandlers = [
25
+ rest.get(umbracoPath('/partial-view'), (req, res, ctx) => {
26
+ const path = decodeURIComponent(req.url.searchParams.get('path') ?? '').replace('-cshtml', '.cshtml');
27
+ if (!path)
28
+ return res(ctx.status(400));
29
+ const response = umbPartialViewsData.getPartialView(path);
30
+ return res(ctx.status(200), ctx.json(response));
31
+ }),
32
+ rest.post(umbracoPath('/partial-view'), (req, res, ctx) => {
33
+ const requestBody = req.json();
34
+ if (!requestBody)
35
+ return res(ctx.status(400, 'no body found'));
36
+ const response = umbPartialViewsData.insertPartialView(requestBody);
37
+ return res(ctx.status(200), ctx.json(response));
38
+ }),
39
+ rest.delete(umbracoPath('/partial-view'), (req, res, ctx) => {
40
+ const path = req.url.searchParams.get('path');
41
+ if (!path)
42
+ return res(ctx.status(400));
43
+ const response = umbPartialViewsData.delete([path]);
44
+ return res(ctx.status(200), ctx.json(response));
45
+ }),
46
+ rest.put(umbracoPath('/partial-view'), (req, res, ctx) => {
47
+ const requestBody = req.json();
48
+ if (!requestBody)
49
+ return res(ctx.status(400, 'no body found'));
50
+ const response = umbPartialViewsData.updateData(requestBody);
51
+ return res(ctx.status(200));
52
+ }),
53
+ ];
54
+ const folderHandlers = [];
55
+ export const handlers = [...treeHandlers, ...detailHandlers, ...folderHandlers];
@@ -0,0 +1,8 @@
1
+ import { UmbEntityActionBase } from '../../entity-action.js';
2
+ import { UmbControllerHostElement } from '../../../../../libs/controller-api/index.js';
3
+ import { UmbFolderRepository } from '../../../../../shared/repository/index.js';
4
+ export declare class UmbCreateFolderEntityAction<T extends UmbFolderRepository> extends UmbEntityActionBase<T> {
5
+ #private;
6
+ constructor(host: UmbControllerHostElement, repositoryAlias: string, unique: string);
7
+ execute(): Promise<void>;
8
+ }