@umbraco-cms/backoffice 14.0.0-3aaba617 → 14.0.0-41f35ef1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-cms/custom-elements.json +94 -35
- package/dist-cms/mocks/data/template.data.d.ts +5 -23
- package/dist-cms/mocks/data/template.data.js +44 -21
- package/dist-cms/mocks/handlers/template.handlers.js +4 -0
- package/dist-cms/packages/core/components/button-with-dropdown/button-with-dropdown.element.d.ts +2 -0
- package/dist-cms/packages/core/components/button-with-dropdown/button-with-dropdown.element.js +4 -4
- package/dist-cms/packages/core/components/code-block/code-block.element.d.ts +6 -1
- package/dist-cms/packages/core/components/code-block/code-block.element.js +93 -19
- package/dist-cms/packages/core/components/index.d.ts +1 -0
- package/dist-cms/packages/core/components/index.js +1 -1
- package/dist-cms/packages/core/modal/token/dictionary-item-picker-modal.token.d.ts +0 -1
- package/dist-cms/packages/core/modal/token/dictionary-item-picker-modal.token.js +1 -2
- package/dist-cms/packages/core/tree/tree.context.js +8 -11
- package/dist-cms/packages/templating/components/insert-menu/templating-insert-menu.element.js +3 -31
- package/dist-cms/packages/templating/modals/insert-choose-type-sidebar.element.d.ts +2 -4
- package/dist-cms/packages/templating/modals/insert-choose-type-sidebar.element.js +5 -27
- package/dist-cms/packages/templating/modals/insert-section-modal/insert-section-input.element.js +1 -0
- package/dist-cms/packages/templating/modals/insert-section-modal/insert-section-modal.element.js +5 -4
- package/dist-cms/packages/templating/modals/manifests.d.ts +0 -1
- package/dist-cms/packages/templating/modals/manifests.js +0 -7
- package/dist-cms/packages/templating/templates/components/alias-input/alias-input.js +1 -1
- package/dist-cms/packages/templating/templates/index.d.ts +2 -0
- package/dist-cms/packages/templating/templates/index.js +2 -0
- package/dist-cms/packages/templating/templates/manifests.d.ts +1 -1
- package/dist-cms/packages/templating/templates/manifests.js +2 -0
- package/dist-cms/packages/templating/templates/modals/manifests.d.ts +3 -0
- package/dist-cms/packages/templating/templates/modals/manifests.js +10 -0
- package/dist-cms/packages/templating/templates/modals/modal-tokens.d.ts +3 -0
- package/dist-cms/packages/templating/templates/modals/modal-tokens.js +6 -0
- package/dist-cms/packages/templating/templates/modals/query-builder/query-builder-filter.element.d.ts +24 -0
- package/dist-cms/packages/templating/templates/modals/query-builder/query-builder-filter.element.js +157 -0
- package/dist-cms/packages/templating/templates/modals/query-builder/query-builder.element.d.ts +28 -0
- package/dist-cms/packages/templating/templates/modals/query-builder/query-builder.element.js +277 -0
- package/dist-cms/packages/templating/templates/repository/sources/template.query-builder.server.data.d.ts +33 -0
- package/dist-cms/packages/templating/templates/repository/sources/template.query-builder.server.data.js +37 -0
- package/dist-cms/packages/templating/templates/repository/template.repository.d.ts +11 -7
- package/dist-cms/packages/templating/templates/repository/template.repository.js +28 -14
- package/dist-cms/packages/templating/templates/workspace/template-workspace-editor.element.js +21 -3
- package/dist-cms/packages/templating/templates/workspace/template-workspace.context.js +2 -1
- package/dist-cms/packages/templating/templates/workspace/template-workspace.element.d.ts +1 -0
- package/dist-cms/packages/templating/templates/workspace/template-workspace.element.js +2 -1
- package/dist-cms/tsconfig.tsbuildinfo +1 -1
- package/dist-cms/vscode-html-custom-data.json +40 -7
- package/package.json +1 -1
- package/dist-cms/packages/templating/modals/insert-value-sidebar.element.d.ts +0 -19
- package/dist-cms/packages/templating/modals/insert-value-sidebar.element.js +0 -135
|
@@ -658,8 +658,41 @@
|
|
|
658
658
|
{
|
|
659
659
|
"name": "umb-code-block",
|
|
660
660
|
"path": "./../src/packages/core/components/code-block/code-block.element.ts",
|
|
661
|
-
"description": "A simple styled box for showing code-based error messages.",
|
|
661
|
+
"description": "A simple styled box for showing code-based error messages or blocks od code.",
|
|
662
|
+
"attributes": [
|
|
663
|
+
{
|
|
664
|
+
"name": "language",
|
|
665
|
+
"type": "string",
|
|
666
|
+
"default": "\"\""
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
"name": "copy",
|
|
670
|
+
"type": "boolean",
|
|
671
|
+
"default": "false"
|
|
672
|
+
}
|
|
673
|
+
],
|
|
662
674
|
"properties": [
|
|
675
|
+
{
|
|
676
|
+
"name": "language",
|
|
677
|
+
"attribute": "language",
|
|
678
|
+
"type": "string",
|
|
679
|
+
"default": "\"\""
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"name": "copy",
|
|
683
|
+
"attribute": "copy",
|
|
684
|
+
"type": "boolean",
|
|
685
|
+
"default": "false"
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
"name": "nodes",
|
|
689
|
+
"type": "NodeListOf<ChildNode>"
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
"name": "copyState",
|
|
693
|
+
"type": "\"idle\" | \"success\"",
|
|
694
|
+
"default": "\"idle\""
|
|
695
|
+
},
|
|
663
696
|
{
|
|
664
697
|
"name": "styles",
|
|
665
698
|
"type": "array",
|
|
@@ -7162,40 +7195,6 @@
|
|
|
7162
7195
|
}
|
|
7163
7196
|
]
|
|
7164
7197
|
},
|
|
7165
|
-
{
|
|
7166
|
-
"name": "umb-insert-value-sidebar",
|
|
7167
|
-
"path": "./../src/packages/templating/modals/insert-value-sidebar.element.ts",
|
|
7168
|
-
"properties": [
|
|
7169
|
-
{
|
|
7170
|
-
"name": "showDefaultValueInput",
|
|
7171
|
-
"type": "boolean",
|
|
7172
|
-
"default": "false"
|
|
7173
|
-
},
|
|
7174
|
-
{
|
|
7175
|
-
"name": "recursive",
|
|
7176
|
-
"type": "boolean",
|
|
7177
|
-
"default": "false"
|
|
7178
|
-
},
|
|
7179
|
-
{
|
|
7180
|
-
"name": "defaultValue",
|
|
7181
|
-
"type": "string | null"
|
|
7182
|
-
},
|
|
7183
|
-
{
|
|
7184
|
-
"name": "field",
|
|
7185
|
-
"type": "string | null"
|
|
7186
|
-
},
|
|
7187
|
-
{
|
|
7188
|
-
"name": "output",
|
|
7189
|
-
"type": "string",
|
|
7190
|
-
"default": "\"\""
|
|
7191
|
-
},
|
|
7192
|
-
{
|
|
7193
|
-
"name": "styles",
|
|
7194
|
-
"type": "array",
|
|
7195
|
-
"default": "[\"UUITextStyles\",null]"
|
|
7196
|
-
}
|
|
7197
|
-
]
|
|
7198
|
-
},
|
|
7199
7198
|
{
|
|
7200
7199
|
"name": "umb-partial-view-picker-modal",
|
|
7201
7200
|
"path": "./../src/packages/templating/modals/partial-view-picker-modal.element.ts",
|
|
@@ -7399,6 +7398,66 @@
|
|
|
7399
7398
|
}
|
|
7400
7399
|
]
|
|
7401
7400
|
},
|
|
7401
|
+
{
|
|
7402
|
+
"name": "umb-query-builder-filter",
|
|
7403
|
+
"path": "./../src/packages/templating/templates/modals/query-builder/query-builder-filter.element.ts",
|
|
7404
|
+
"attributes": [
|
|
7405
|
+
{
|
|
7406
|
+
"name": "unremovable",
|
|
7407
|
+
"type": "boolean",
|
|
7408
|
+
"default": "false"
|
|
7409
|
+
}
|
|
7410
|
+
],
|
|
7411
|
+
"properties": [
|
|
7412
|
+
{
|
|
7413
|
+
"name": "filter",
|
|
7414
|
+
"default": "{}"
|
|
7415
|
+
},
|
|
7416
|
+
{
|
|
7417
|
+
"name": "unremovable",
|
|
7418
|
+
"attribute": "unremovable",
|
|
7419
|
+
"type": "boolean",
|
|
7420
|
+
"default": "false"
|
|
7421
|
+
},
|
|
7422
|
+
{
|
|
7423
|
+
"name": "settings"
|
|
7424
|
+
},
|
|
7425
|
+
{
|
|
7426
|
+
"name": "currentPropertyType"
|
|
7427
|
+
},
|
|
7428
|
+
{
|
|
7429
|
+
"name": "isFilterValid",
|
|
7430
|
+
"type": "boolean"
|
|
7431
|
+
},
|
|
7432
|
+
{
|
|
7433
|
+
"name": "styles",
|
|
7434
|
+
"type": "CSSResult[]",
|
|
7435
|
+
"default": "[\"UUITextStyles\",null]"
|
|
7436
|
+
}
|
|
7437
|
+
],
|
|
7438
|
+
"events": [
|
|
7439
|
+
{
|
|
7440
|
+
"name": "remove-filter"
|
|
7441
|
+
},
|
|
7442
|
+
{
|
|
7443
|
+
"name": "add-filter"
|
|
7444
|
+
},
|
|
7445
|
+
{
|
|
7446
|
+
"name": "update-query"
|
|
7447
|
+
}
|
|
7448
|
+
]
|
|
7449
|
+
},
|
|
7450
|
+
{
|
|
7451
|
+
"name": "umb-templating-query-builder-modal",
|
|
7452
|
+
"path": "./../src/packages/templating/templates/modals/query-builder/query-builder.element.ts",
|
|
7453
|
+
"properties": [
|
|
7454
|
+
{
|
|
7455
|
+
"name": "styles",
|
|
7456
|
+
"type": "array",
|
|
7457
|
+
"default": "[\"UUITextStyles\",null]"
|
|
7458
|
+
}
|
|
7459
|
+
]
|
|
7460
|
+
},
|
|
7402
7461
|
{
|
|
7403
7462
|
"name": "umb-template-workspace-editor",
|
|
7404
7463
|
"path": "./../src/packages/templating/templates/workspace/template-workspace-editor.element.ts",
|
|
@@ -1,36 +1,18 @@
|
|
|
1
1
|
import { UmbEntityData } from './entity.data.js';
|
|
2
|
-
import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel, TemplateResponseModel, TemplateScaffoldResponseModel, CreateTemplateRequestModel, TemplateItemResponseModel } from '../../external/backend-api/index.js';
|
|
2
|
+
import { EntityTreeItemResponseModel, PagedEntityTreeItemResponseModel, TemplateResponseModel, TemplateScaffoldResponseModel, CreateTemplateRequestModel, TemplateItemResponseModel, TemplateQuerySettingsResponseModel, TemplateQueryResultResponseModel } from '../../external/backend-api/index.js';
|
|
3
3
|
type TemplateDBItem = TemplateResponseModel & EntityTreeItemResponseModel;
|
|
4
4
|
export declare const data: Array<TemplateDBItem>;
|
|
5
5
|
export declare const createTemplateScaffold: (masterTemplateAlias: string) => string;
|
|
6
|
-
export declare const
|
|
7
|
-
|
|
8
|
-
properties: {
|
|
9
|
-
alias: string;
|
|
10
|
-
type: string;
|
|
11
|
-
}[];
|
|
12
|
-
operators: {
|
|
13
|
-
operator: string;
|
|
14
|
-
applicableTypes: string[];
|
|
15
|
-
}[];
|
|
16
|
-
};
|
|
6
|
+
export declare const templateQueryResult: TemplateQueryResultResponseModel;
|
|
7
|
+
export declare const templateQuerySettings: TemplateQuerySettingsResponseModel;
|
|
17
8
|
declare class UmbTemplateData extends UmbEntityData<TemplateDBItem> {
|
|
18
9
|
constructor();
|
|
19
10
|
getById(id: string): TemplateResponseModel | undefined;
|
|
20
11
|
getItemById(id: string): TemplateItemResponseModel | null;
|
|
21
12
|
getScaffold(masterTemplateId?: string | null): TemplateScaffoldResponseModel;
|
|
22
13
|
getItems(ids: string[]): TemplateItemResponseModel[];
|
|
23
|
-
getTemplateQuerySettings: () =>
|
|
24
|
-
|
|
25
|
-
properties: {
|
|
26
|
-
alias: string;
|
|
27
|
-
type: string;
|
|
28
|
-
}[];
|
|
29
|
-
operators: {
|
|
30
|
-
operator: string;
|
|
31
|
-
applicableTypes: string[];
|
|
32
|
-
}[];
|
|
33
|
-
};
|
|
14
|
+
getTemplateQuerySettings: () => TemplateQuerySettingsResponseModel;
|
|
15
|
+
getTemplateQueryResult: () => TemplateQueryResultResponseModel;
|
|
34
16
|
create(templateData: CreateTemplateRequestModel): {
|
|
35
17
|
name?: string | undefined;
|
|
36
18
|
alias?: string | undefined;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UmbEntityData } from './entity.data.js';
|
|
2
2
|
import { createEntityTreeItem } from './utils.js';
|
|
3
3
|
import { UmbId } from '../../packages/core/id/index.js';
|
|
4
|
+
import { TemplateQueryPropertyTypeModel, OperatorModel, } from '../../external/backend-api/index.js';
|
|
4
5
|
const createTemplate = (dbItem) => {
|
|
5
6
|
return {
|
|
6
7
|
$type: '',
|
|
@@ -87,58 +88,79 @@ export const createTemplateScaffold = (masterTemplateAlias) => {
|
|
|
87
88
|
Layout = ${masterTemplateAlias};
|
|
88
89
|
}`;
|
|
89
90
|
};
|
|
91
|
+
//prettier-ignore
|
|
92
|
+
const templateQueryExpressions = [
|
|
93
|
+
`Umbraco.ContentAtRoot().FirstOrDefault()
|
|
94
|
+
.ChildrenOfType("docTypeWithTemplate")
|
|
95
|
+
.Where(x => x.IsVisible())`,
|
|
96
|
+
`Umbraco.Content(Guid.Parse("0b3498dc-255a-4d62-aa4f-ef7bff333544"))
|
|
97
|
+
.ChildrenOfType("docTypeWithTemplate")
|
|
98
|
+
.Where(x => x.IsVisible())`,
|
|
99
|
+
`Umbraco.ContentAtRoot().FirstOrDefault()
|
|
100
|
+
.ChildrenOfType("docTypeWithTemplate")
|
|
101
|
+
.Where(x => (x.Id != -6))
|
|
102
|
+
.Where(x => x.IsVisible())
|
|
103
|
+
.OrderBy(x => x.UpdateDate)`,
|
|
104
|
+
];
|
|
105
|
+
const randomIndex = () => Math.floor(Math.random() * 3);
|
|
106
|
+
export const templateQueryResult = {
|
|
107
|
+
queryExpression: templateQueryExpressions[randomIndex()],
|
|
108
|
+
sampleResults: [],
|
|
109
|
+
resultCount: 0,
|
|
110
|
+
executionTime: 0,
|
|
111
|
+
};
|
|
90
112
|
export const templateQuerySettings = {
|
|
91
|
-
contentTypeAliases: [],
|
|
113
|
+
contentTypeAliases: ['docTypeWithTemplate', 'propertyTypeWithTemplate', 'somethingElse'],
|
|
92
114
|
properties: [
|
|
93
115
|
{
|
|
94
116
|
alias: 'Id',
|
|
95
|
-
type:
|
|
117
|
+
type: TemplateQueryPropertyTypeModel.INTEGER,
|
|
96
118
|
},
|
|
97
119
|
{
|
|
98
120
|
alias: 'Name',
|
|
99
|
-
type:
|
|
121
|
+
type: TemplateQueryPropertyTypeModel.STRING,
|
|
100
122
|
},
|
|
101
123
|
{
|
|
102
124
|
alias: 'CreateDate',
|
|
103
|
-
type:
|
|
125
|
+
type: TemplateQueryPropertyTypeModel.DATE_TIME,
|
|
104
126
|
},
|
|
105
127
|
{
|
|
106
128
|
alias: 'UpdateDate',
|
|
107
|
-
type:
|
|
129
|
+
type: TemplateQueryPropertyTypeModel.DATE_TIME,
|
|
108
130
|
},
|
|
109
131
|
],
|
|
110
132
|
operators: [
|
|
111
133
|
{
|
|
112
|
-
operator:
|
|
113
|
-
applicableTypes: [
|
|
134
|
+
operator: OperatorModel.EQUALS,
|
|
135
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.INTEGER, TemplateQueryPropertyTypeModel.STRING],
|
|
114
136
|
},
|
|
115
137
|
{
|
|
116
|
-
operator:
|
|
117
|
-
applicableTypes: [
|
|
138
|
+
operator: OperatorModel.NOT_EQUALS,
|
|
139
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.INTEGER, TemplateQueryPropertyTypeModel.STRING],
|
|
118
140
|
},
|
|
119
141
|
{
|
|
120
|
-
operator:
|
|
121
|
-
applicableTypes: [
|
|
142
|
+
operator: OperatorModel.LESS_THAN,
|
|
143
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.INTEGER, TemplateQueryPropertyTypeModel.DATE_TIME],
|
|
122
144
|
},
|
|
123
145
|
{
|
|
124
|
-
operator:
|
|
125
|
-
applicableTypes: [
|
|
146
|
+
operator: OperatorModel.GREATER_THAN_EQUAL_TO,
|
|
147
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.INTEGER, TemplateQueryPropertyTypeModel.DATE_TIME],
|
|
126
148
|
},
|
|
127
149
|
{
|
|
128
|
-
operator:
|
|
129
|
-
applicableTypes: [
|
|
150
|
+
operator: OperatorModel.GREATER_THAN,
|
|
151
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.INTEGER, TemplateQueryPropertyTypeModel.DATE_TIME],
|
|
130
152
|
},
|
|
131
153
|
{
|
|
132
|
-
operator:
|
|
133
|
-
applicableTypes: [
|
|
154
|
+
operator: OperatorModel.GREATER_THAN_EQUAL_TO,
|
|
155
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.INTEGER, TemplateQueryPropertyTypeModel.DATE_TIME],
|
|
134
156
|
},
|
|
135
157
|
{
|
|
136
|
-
operator:
|
|
137
|
-
applicableTypes: [
|
|
158
|
+
operator: OperatorModel.CONTAINS,
|
|
159
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.STRING],
|
|
138
160
|
},
|
|
139
161
|
{
|
|
140
|
-
operator:
|
|
141
|
-
applicableTypes: [
|
|
162
|
+
operator: OperatorModel.NOT_CONTAINS,
|
|
163
|
+
applicableTypes: [TemplateQueryPropertyTypeModel.STRING],
|
|
142
164
|
},
|
|
143
165
|
],
|
|
144
166
|
};
|
|
@@ -147,6 +169,7 @@ class UmbTemplateData extends UmbEntityData {
|
|
|
147
169
|
constructor() {
|
|
148
170
|
super(data);
|
|
149
171
|
this.getTemplateQuerySettings = () => templateQuerySettings;
|
|
172
|
+
this.getTemplateQueryResult = () => templateQueryResult;
|
|
150
173
|
}
|
|
151
174
|
getById(id) {
|
|
152
175
|
const item = this.data.find((item) => item.id === id);
|
|
@@ -39,6 +39,10 @@ export const handlers = [
|
|
|
39
39
|
const response = umbTemplateData.getTemplateQuerySettings();
|
|
40
40
|
return res(ctx.status(200), ctx.json(response));
|
|
41
41
|
}),
|
|
42
|
+
rest.post(umbracoPath('/template/query/execute'), (req, res, ctx) => {
|
|
43
|
+
const response = umbTemplateData.getTemplateQueryResult();
|
|
44
|
+
return res(ctx.status(200), ctx.json(response));
|
|
45
|
+
}),
|
|
42
46
|
rest.get(umbracoPath('/template/:id'), (req, res, ctx) => {
|
|
43
47
|
const id = req.params.id;
|
|
44
48
|
if (!id)
|
package/dist-cms/packages/core/components/button-with-dropdown/button-with-dropdown.element.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ export declare class UmbButtonWithDropdownElement extends LitElement {
|
|
|
10
10
|
compact: boolean;
|
|
11
11
|
symbolExpand: UUISymbolExpandElement;
|
|
12
12
|
popover: UUIPopoverElement;
|
|
13
|
+
openPopover(): void;
|
|
14
|
+
closePopover(): void;
|
|
13
15
|
render(): import("lit-html").TemplateResult<1>;
|
|
14
16
|
static styles: import("@lit/reactive-element/css-tag").CSSResult[];
|
|
15
17
|
}
|
package/dist-cms/packages/core/components/button-with-dropdown/button-with-dropdown.element.js
CHANGED
|
@@ -18,22 +18,22 @@ export let UmbButtonWithDropdownElement = class UmbButtonWithDropdownElement ext
|
|
|
18
18
|
this.placement = 'bottom-start';
|
|
19
19
|
this.compact = false;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
openPopover() {
|
|
22
22
|
this.open = true;
|
|
23
23
|
this.popover.open = true;
|
|
24
24
|
this.symbolExpand.open = true;
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
closePopover() {
|
|
27
27
|
this.open = false;
|
|
28
28
|
this.popover.open = false;
|
|
29
29
|
this.symbolExpand.open = false;
|
|
30
30
|
}
|
|
31
31
|
#togglePopover() {
|
|
32
|
-
this.open ? this
|
|
32
|
+
this.open ? this.closePopover() : this.openPopover();
|
|
33
33
|
}
|
|
34
34
|
render() {
|
|
35
35
|
return html `
|
|
36
|
-
<uui-popover placement=${this.placement} id="popover" @close=${this
|
|
36
|
+
<uui-popover placement=${this.placement} id="popover" @close=${this.closePopover}>
|
|
37
37
|
<uui-button
|
|
38
38
|
slot="trigger"
|
|
39
39
|
.look=${this.look}
|
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { LitElement } from '../../../../external/lit/index.js';
|
|
2
2
|
/**
|
|
3
|
-
* A simple styled box for showing code-based error messages.
|
|
3
|
+
* A simple styled box for showing code-based error messages or blocks od code.
|
|
4
4
|
* @slot the full message
|
|
5
5
|
*
|
|
6
6
|
*/
|
|
7
7
|
export declare class UmbCodeBlockElement extends LitElement {
|
|
8
|
+
language: string;
|
|
9
|
+
copy: boolean;
|
|
10
|
+
nodes: NodeListOf<ChildNode>;
|
|
11
|
+
copyState: 'idle' | 'success';
|
|
12
|
+
copyCode(): Promise<void>;
|
|
8
13
|
render(): import("lit-html").TemplateResult<1>;
|
|
9
14
|
static styles: import("@lit/reactive-element/css-tag").CSSResult[];
|
|
10
15
|
}
|
|
@@ -5,54 +5,128 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { UUITextStyles } from '../../../../external/uui/index.js';
|
|
8
|
-
import { css, html, LitElement, customElement } from '../../../../external/lit/index.js';
|
|
8
|
+
import { css, html, LitElement, customElement, property, queryAssignedNodes, state, } from '../../../../external/lit/index.js';
|
|
9
|
+
//TODO consider adding a highlight prop to the code block, that could spin up/access monaco instance and highlight the code
|
|
9
10
|
/**
|
|
10
|
-
* A simple styled box for showing code-based error messages.
|
|
11
|
+
* A simple styled box for showing code-based error messages or blocks od code.
|
|
11
12
|
* @slot the full message
|
|
12
13
|
*
|
|
13
14
|
*/
|
|
14
15
|
export let UmbCodeBlockElement = class UmbCodeBlockElement extends LitElement {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.language = '';
|
|
19
|
+
this.copy = false;
|
|
20
|
+
this.copyState = 'idle';
|
|
21
|
+
}
|
|
22
|
+
async copyCode() {
|
|
23
|
+
const text = this.textContent;
|
|
24
|
+
if (text) {
|
|
25
|
+
await navigator.clipboard.writeText(text);
|
|
26
|
+
this.copyState = 'success';
|
|
27
|
+
setTimeout(() => {
|
|
28
|
+
this.copyState = 'idle';
|
|
29
|
+
}, 2000);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
15
32
|
render() {
|
|
16
|
-
return html
|
|
17
|
-
|
|
18
|
-
|
|
33
|
+
return html `
|
|
34
|
+
${this.language
|
|
35
|
+
? html `<div id="header">
|
|
36
|
+
<span id="lang">${this.language}</span> ${this.copy
|
|
37
|
+
? html `<button @click=${this.copyCode}>
|
|
38
|
+
${this.copyState === 'idle'
|
|
39
|
+
? html `<uui-icon name="copy"></uui-icon>Copy`
|
|
40
|
+
: html `<uui-icon name="check"></uui-icon>Copied!`}
|
|
41
|
+
</button>`
|
|
42
|
+
: ''}
|
|
43
|
+
</div>`
|
|
44
|
+
: ''}
|
|
45
|
+
<pre style="${this.language ? 'border-top: 1px solid var(--uui-color-divider-emphasis);' : ''}">
|
|
46
|
+
<uui-scroll-container>
|
|
19
47
|
<code>
|
|
20
48
|
<slot></slot>
|
|
21
49
|
</code>
|
|
50
|
+
</uui-scroll-container>
|
|
22
51
|
</pre>
|
|
23
|
-
|
|
24
|
-
</div> `;
|
|
52
|
+
`;
|
|
25
53
|
}
|
|
26
54
|
static { this.styles = [
|
|
27
55
|
UUITextStyles,
|
|
28
56
|
css `
|
|
29
57
|
:host {
|
|
30
58
|
display: block;
|
|
31
|
-
font-family: monospace;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
#container {
|
|
35
59
|
border: 1px solid var(--uui-color-divider-emphasis);
|
|
36
|
-
color: var(--uui-color-text-alt);
|
|
37
|
-
background-color: var(--uui-color-divider-standalone);
|
|
38
|
-
padding: var(--uui-size-space-2);
|
|
39
60
|
border-radius: var(--uui-border-radius);
|
|
40
|
-
line-height: var(--uui-size-10);
|
|
41
61
|
}
|
|
42
|
-
|
|
62
|
+
|
|
63
|
+
uui-scroll-container {
|
|
43
64
|
max-height: 500px;
|
|
44
65
|
overflow-y: auto;
|
|
45
66
|
overflow-wrap: anywhere;
|
|
46
67
|
}
|
|
68
|
+
|
|
47
69
|
pre {
|
|
48
|
-
|
|
70
|
+
font-family: monospace;
|
|
71
|
+
background-color: var(--uui-color-surface-alt);
|
|
72
|
+
color: #303033;
|
|
73
|
+
display: block;
|
|
74
|
+
font-family: Lato, Helvetica Neue, Helvetica, Arial, sans-serif;
|
|
75
|
+
margin: 0;
|
|
76
|
+
overflow-x: auto;
|
|
77
|
+
padding: 9.5px;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
pre,
|
|
81
|
+
code {
|
|
82
|
+
word-wrap: normal;
|
|
49
83
|
white-space: pre-line;
|
|
50
|
-
|
|
51
|
-
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
#header {
|
|
87
|
+
display: flex;
|
|
88
|
+
justify-content: space-between;
|
|
89
|
+
align-items: center;
|
|
90
|
+
background-color: var(--uui-color-surface-alt);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#lang {
|
|
94
|
+
margin-left: 16px;
|
|
95
|
+
font-weight: bold;
|
|
96
|
+
text-transform: uppercase;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
button {
|
|
100
|
+
font-family: inherit;
|
|
101
|
+
padding: 6px 16px;
|
|
102
|
+
background-color: transparent;
|
|
103
|
+
border: none;
|
|
104
|
+
border-left: 1px solid var(--uui-color-divider-emphasis);
|
|
105
|
+
border-radius: 0;
|
|
106
|
+
color: #000;
|
|
107
|
+
display: flex;
|
|
108
|
+
align-items: center;
|
|
109
|
+
gap: 8px;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
button:hover {
|
|
113
|
+
background-color: var(--uui-color-surface-emphasis);
|
|
52
114
|
}
|
|
53
115
|
`,
|
|
54
116
|
]; }
|
|
55
117
|
};
|
|
118
|
+
__decorate([
|
|
119
|
+
property()
|
|
120
|
+
], UmbCodeBlockElement.prototype, "language", void 0);
|
|
121
|
+
__decorate([
|
|
122
|
+
property({ type: Boolean })
|
|
123
|
+
], UmbCodeBlockElement.prototype, "copy", void 0);
|
|
124
|
+
__decorate([
|
|
125
|
+
queryAssignedNodes()
|
|
126
|
+
], UmbCodeBlockElement.prototype, "nodes", void 0);
|
|
127
|
+
__decorate([
|
|
128
|
+
state()
|
|
129
|
+
], UmbCodeBlockElement.prototype, "copyState", void 0);
|
|
56
130
|
UmbCodeBlockElement = __decorate([
|
|
57
131
|
customElement('umb-code-block')
|
|
58
132
|
], UmbCodeBlockElement);
|
|
@@ -2,6 +2,7 @@ export * from './backoffice-modal-container/backoffice-modal-container.element.j
|
|
|
2
2
|
export * from './backoffice-notification-container/backoffice-notification-container.element.js';
|
|
3
3
|
export * from './body-layout/body-layout.element.js';
|
|
4
4
|
export * from './button-with-dropdown/button-with-dropdown.element.js';
|
|
5
|
+
export * from './code-block/index.js';
|
|
5
6
|
export * from './data-type/index.js';
|
|
6
7
|
export * from './input-date/index.js';
|
|
7
8
|
export * from './dropdown/index.js';
|
|
@@ -4,7 +4,7 @@ export * from './backoffice-modal-container/backoffice-modal-container.element.j
|
|
|
4
4
|
export * from './backoffice-notification-container/backoffice-notification-container.element.js';
|
|
5
5
|
export * from './body-layout/body-layout.element.js';
|
|
6
6
|
export * from './button-with-dropdown/button-with-dropdown.element.js'; // TODO: delete this and change usage to umb-dropdown
|
|
7
|
-
|
|
7
|
+
export * from './code-block/index.js';
|
|
8
8
|
export * from './data-type/index.js';
|
|
9
9
|
export * from './input-date/index.js';
|
|
10
10
|
export * from './dropdown/index.js';
|
|
@@ -2,5 +2,4 @@ import type { EntityTreeItemResponseModel } from '../../../../external/backend-a
|
|
|
2
2
|
import { UmbModalToken, UmbPickerModalResult, UmbTreePickerModalData } from '../index.js';
|
|
3
3
|
export type UmbDictionaryItemPickerModalData = UmbTreePickerModalData<EntityTreeItemResponseModel>;
|
|
4
4
|
export type UmbDictionaryItemPickerModalResult = UmbPickerModalResult;
|
|
5
|
-
export declare const UMB_DICTIONARY_ITEM_PICKER_MODAL_ALIAS = "Umb.Modal.DictionaryItemPicker";
|
|
6
5
|
export declare const UMB_DICTIONARY_ITEM_PICKER_MODAL: UmbModalToken<UmbDictionaryItemPickerModalData, UmbPickerModalResult>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { UmbModalToken } from '../index.js';
|
|
2
|
-
export const
|
|
3
|
-
export const UMB_DICTIONARY_ITEM_PICKER_MODAL = new UmbModalToken(UMB_DICTIONARY_ITEM_PICKER_MODAL_ALIAS, {
|
|
2
|
+
export const UMB_DICTIONARY_ITEM_PICKER_MODAL = new UmbModalToken('Umb.Modal.TreePicker', {
|
|
4
3
|
type: 'sidebar',
|
|
5
4
|
size: 'small',
|
|
6
5
|
}, {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { map } from '../../../external/rxjs/index.js';
|
|
2
1
|
import { umbExtensionsRegistry } from '../extension-registry/index.js';
|
|
3
2
|
import { UmbBooleanState } from '../../../libs/observable-api/index.js';
|
|
4
3
|
import { UmbBaseController } from '../../../libs/controller-api/index.js';
|
|
@@ -36,9 +35,7 @@ export class UmbTreeContextBase extends UmbBaseController {
|
|
|
36
35
|
if (this.#treeAlias === treeAlias)
|
|
37
36
|
return;
|
|
38
37
|
this.#treeAlias = treeAlias;
|
|
39
|
-
|
|
40
|
-
this.#observeTreeManifest();
|
|
41
|
-
}
|
|
38
|
+
this.#observeTreeManifest();
|
|
42
39
|
}
|
|
43
40
|
getTreeAlias() {
|
|
44
41
|
return this.#treeAlias;
|
|
@@ -94,13 +91,13 @@ export class UmbTreeContextBase extends UmbBaseController {
|
|
|
94
91
|
return this.repository.treeItemsOf(parentUnique);
|
|
95
92
|
}
|
|
96
93
|
#observeTreeManifest() {
|
|
97
|
-
this
|
|
98
|
-
.
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
94
|
+
if (this.#treeAlias) {
|
|
95
|
+
this.observe(umbExtensionsRegistry.getByTypeAndAlias('tree', this.#treeAlias), async (treeManifest) => {
|
|
96
|
+
if (!treeManifest)
|
|
97
|
+
return;
|
|
98
|
+
this.#observeRepository(treeManifest);
|
|
99
|
+
}, '_observeTreeManifest');
|
|
100
|
+
}
|
|
104
101
|
}
|
|
105
102
|
#observeRepository(treeManifest) {
|
|
106
103
|
const repositoryAlias = treeManifest.meta.repositoryAlias;
|