@jumoo/usync 17.5.2-prerelease.15 → 17.5.3-prerelease.16
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/README.md +6 -0
- package/dist/api/client.gen.js +1 -2
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/types.gen.d.ts +1 -325
- package/dist/api/types.gen.js +0 -13
- package/dist/components/index.d.ts +0 -3
- package/dist/components/index.js +0 -3
- package/dist/components/usync-content-preview.js +7 -15
- package/dist/components/usync-content-type-preview.js +10 -28
- package/dist/components/usync-data-type-preview.js +4 -2
- package/dist/dialogs/details-modal-element.d.ts +9 -5
- package/dist/dialogs/details-modal-element.js +120 -42
- package/dist/exports.d.ts +1 -0
- package/dist/exports.js +1 -0
- package/dist/index.js +9 -1
- package/dist/lang/files/da-dk.d.ts +1 -1
- package/dist/lang/files/da-dk.js +1 -1
- package/dist/lang/files/de-de.d.ts +1 -1
- package/dist/lang/files/de-de.js +1 -1
- package/dist/lang/files/en-us.d.ts +14 -1
- package/dist/lang/files/en-us.js +14 -1
- package/dist/lang/files/es-es.d.ts +1 -1
- package/dist/lang/files/es-es.js +1 -1
- package/dist/lang/files/fr-fr.d.ts +1 -1
- package/dist/lang/files/fr-fr.js +1 -1
- package/dist/lang/files/nl-nl.d.ts +1 -1
- package/dist/lang/files/nl-nl.js +1 -1
- package/dist/manifests.js +2 -0
- package/dist/preview/index.d.ts +1 -0
- package/dist/preview/index.js +1 -0
- package/dist/preview/manifest.d.ts +2 -0
- package/dist/preview/manifest.js +22 -0
- package/dist/preview/types.d.ts +72 -0
- package/dist/preview/types.js +2 -0
- package/dist/signalr/signalr.context.js +73 -26
- package/dist/utils/preview/content-type-layout.d.ts +1 -1
- package/package.json +2 -2
- package/dist/hey-api.d.ts +0 -11
- package/dist/hey-api.js +0 -14
|
@@ -9,20 +9,33 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
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");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var
|
|
12
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
13
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
14
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
15
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
16
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
17
|
+
};
|
|
18
|
+
var _uSyncDetailsModalElement_instances, _uSyncDetailsModalElement_repository, _uSyncDetailsModalElement_previewFilter, _uSyncDetailsModalElement_previewProps, _uSyncDetailsModalElement_moveTo, _uSyncDetailsModalElement_loadPreview, _uSyncDetailsModalElement_hasPreview, _uSyncDetailsModalElement_showActions, _uSyncDetailsModalElement_onImport, _uSyncDetailsModalElement_onClose;
|
|
13
19
|
import { UMB_MODAL_MANAGER_CONTEXT, UmbModalBaseElement, } from '@umbraco-cms/backoffice/modal';
|
|
14
20
|
import { css, customElement, html, nothing, state, } from '@umbraco-cms/backoffice/external/lit';
|
|
15
21
|
import { USYNC_IMPORT_SINGLE_MODAL, uSyncActionRepository, } from '@jumoo/uSync';
|
|
16
|
-
import '
|
|
17
|
-
import '../components/usync-content-type-preview.js';
|
|
18
|
-
import '../components/usync-content-preview.js';
|
|
22
|
+
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
|
|
19
23
|
let uSyncDetailsModalElement = class uSyncDetailsModalElement extends UmbModalBaseElement {
|
|
20
24
|
constructor() {
|
|
21
25
|
super();
|
|
22
26
|
_uSyncDetailsModalElement_instances.add(this);
|
|
23
27
|
this._tab = 'changes';
|
|
28
|
+
this._loading = false;
|
|
24
29
|
this._index = -1;
|
|
30
|
+
/** the entity types there is a 'usync-item-preview' element for */
|
|
31
|
+
this._previewTypes = new Set();
|
|
25
32
|
_uSyncDetailsModalElement_repository.set(this, new uSyncActionRepository(this));
|
|
33
|
+
// kept between renders, so the extension slot doesn't rebuild the preview each time.
|
|
34
|
+
_uSyncDetailsModalElement_previewFilter.set(this, (_manifest) => false);
|
|
35
|
+
_uSyncDetailsModalElement_previewProps.set(this, {});
|
|
36
|
+
this.observe(umbExtensionsRegistry.byType('usync-item-preview'), (manifests) => {
|
|
37
|
+
this._previewTypes = new Set(manifests.flatMap((m) => m.forEntityTypes));
|
|
38
|
+
});
|
|
26
39
|
// this.consumeContext(USYNC_CORE_CONTEXT_TOKEN, (_instance) => {
|
|
27
40
|
// if (!_instance) return;
|
|
28
41
|
// this.#actionContext = _instance;
|
|
@@ -36,7 +49,8 @@ let uSyncDetailsModalElement = class uSyncDetailsModalElement extends UmbModalBa
|
|
|
36
49
|
}
|
|
37
50
|
render() {
|
|
38
51
|
return html `
|
|
39
|
-
<umb-body-layout
|
|
52
|
+
<umb-body-layout>
|
|
53
|
+
${this.renderHeadline()}
|
|
40
54
|
<div class="layout">
|
|
41
55
|
<uui-box style="--uui-box-default-padding: 0;">
|
|
42
56
|
<div slot="header" id="header">
|
|
@@ -46,11 +60,7 @@ let uSyncDetailsModalElement = class uSyncDetailsModalElement extends UmbModalBa
|
|
|
46
60
|
<div slot="header-actions">${this.renderActions()}</div>
|
|
47
61
|
</uui-box>
|
|
48
62
|
${this.renderTabs()}
|
|
49
|
-
${this.
|
|
50
|
-
? this.renderPreview(this._preview)
|
|
51
|
-
: html `<uui-box style="--uui-box-default-padding: 0;">
|
|
52
|
-
<usync-change-view .item=${this._item}></usync-change-view>
|
|
53
|
-
</uui-box>`}
|
|
63
|
+
${this.renderTabContent()}
|
|
54
64
|
</div>
|
|
55
65
|
${this.renderNavigation()}
|
|
56
66
|
<div slot="actions">
|
|
@@ -62,6 +72,18 @@ let uSyncDetailsModalElement = class uSyncDetailsModalElement extends UmbModalBa
|
|
|
62
72
|
</umb-body-layout>
|
|
63
73
|
`;
|
|
64
74
|
}
|
|
75
|
+
renderHeadline() {
|
|
76
|
+
const item = this._item;
|
|
77
|
+
if (!item)
|
|
78
|
+
return nothing;
|
|
79
|
+
// singular names first (Content type), then the plural group
|
|
80
|
+
// names the results use (Content Types), then the raw type.
|
|
81
|
+
const itemType = this.localize.termOrDefault(`uSync_itemType${item.itemType}`, this.localize.termOrDefault(`uSync_${item.itemType}`, item.itemType));
|
|
82
|
+
return html `<div slot="header" id="headline">
|
|
83
|
+
<h3 title=${item.name}>Changes : ${item.name}</h3>
|
|
84
|
+
<span class="item-info">${itemType} · ${item.change}</span>
|
|
85
|
+
</div>`;
|
|
86
|
+
}
|
|
65
87
|
renderNavigation() {
|
|
66
88
|
const count = this.data?.items?.length ?? 0;
|
|
67
89
|
if (count < 2 || this._index < 0)
|
|
@@ -89,36 +111,45 @@ let uSyncDetailsModalElement = class uSyncDetailsModalElement extends UmbModalBa
|
|
|
89
111
|
</div>`;
|
|
90
112
|
}
|
|
91
113
|
renderTabs() {
|
|
92
|
-
if (!this.
|
|
114
|
+
if (!__classPrivateFieldGet(this, _uSyncDetailsModalElement_instances, "m", _uSyncDetailsModalElement_hasPreview).call(this))
|
|
93
115
|
return nothing;
|
|
94
116
|
return html `<uui-tab-group>
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
?active=${this._tab === 'changes'}
|
|
98
|
-
@click=${() => (this._tab = 'changes')}></uui-tab>
|
|
99
|
-
<uui-tab
|
|
100
|
-
.label=${this.localize.termOrDefault('uSync_previewTab', 'Preview')}
|
|
101
|
-
?active=${this._tab === 'preview'}
|
|
102
|
-
@click=${() => (this._tab = 'preview')}></uui-tab>
|
|
117
|
+
${this.renderTab('changes', 'uSync_changesTab', 'Changes', 'icon-eye')}
|
|
118
|
+
${this.renderTab('diff', 'uSync_diffTab', 'Diff', 'icon-code')}
|
|
103
119
|
</uui-tab-group>`;
|
|
104
120
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
+
renderTab(tab, key, fallback, icon) {
|
|
122
|
+
const label = this.localize.termOrDefault(key, fallback);
|
|
123
|
+
return html `<uui-tab
|
|
124
|
+
.label=${label}
|
|
125
|
+
?active=${this._tab === tab}
|
|
126
|
+
@click=${() => (this._tab = tab)}>
|
|
127
|
+
<!-- uui-tab stacks its icon slot above the label, so the icon
|
|
128
|
+
goes in the label to keep them on one line. -->
|
|
129
|
+
<span class="tab-label"><umb-icon name=${icon}></umb-icon>${label}</span>
|
|
130
|
+
</uui-tab>`;
|
|
131
|
+
}
|
|
132
|
+
renderTabContent() {
|
|
133
|
+
// the visual changes view is the default, the raw diff is there
|
|
134
|
+
// for anything that doesn't have a preview (or if you ask for it).
|
|
135
|
+
if (this._tab === 'changes') {
|
|
136
|
+
if (this._loading)
|
|
137
|
+
return html `<uui-loader-bar></uui-loader-bar>`;
|
|
138
|
+
if (__classPrivateFieldGet(this, _uSyncDetailsModalElement_instances, "m", _uSyncDetailsModalElement_hasPreview).call(this))
|
|
139
|
+
return this.renderPreview();
|
|
121
140
|
}
|
|
141
|
+
return html `<uui-box style="--uui-box-default-padding: 0;">
|
|
142
|
+
<usync-change-view .item=${this._item}></usync-change-view>
|
|
143
|
+
</uui-box>`;
|
|
144
|
+
}
|
|
145
|
+
renderPreview() {
|
|
146
|
+
// packages can show previews for their own items by registering a
|
|
147
|
+
// 'usync-item-preview' element for the entity type their preview mapper returns.
|
|
148
|
+
return html `<umb-extension-slot
|
|
149
|
+
type="usync-item-preview"
|
|
150
|
+
single
|
|
151
|
+
.filter=${__classPrivateFieldGet(this, _uSyncDetailsModalElement_previewFilter, "f")}
|
|
152
|
+
.props=${__classPrivateFieldGet(this, _uSyncDetailsModalElement_previewProps, "f")}></umb-extension-slot>`;
|
|
122
153
|
}
|
|
123
154
|
renderActions() {
|
|
124
155
|
if (!__classPrivateFieldGet(this, _uSyncDetailsModalElement_instances, "m", _uSyncDetailsModalElement_showActions).call(this))
|
|
@@ -133,6 +164,8 @@ let uSyncDetailsModalElement = class uSyncDetailsModalElement extends UmbModalBa
|
|
|
133
164
|
}
|
|
134
165
|
};
|
|
135
166
|
_uSyncDetailsModalElement_repository = new WeakMap();
|
|
167
|
+
_uSyncDetailsModalElement_previewFilter = new WeakMap();
|
|
168
|
+
_uSyncDetailsModalElement_previewProps = new WeakMap();
|
|
136
169
|
_uSyncDetailsModalElement_instances = new WeakSet();
|
|
137
170
|
_uSyncDetailsModalElement_moveTo = function _uSyncDetailsModalElement_moveTo(index) {
|
|
138
171
|
const item = this.data?.items?.[index];
|
|
@@ -145,23 +178,27 @@ _uSyncDetailsModalElement_moveTo = function _uSyncDetailsModalElement_moveTo(ind
|
|
|
145
178
|
};
|
|
146
179
|
_uSyncDetailsModalElement_loadPreview = async function _uSyncDetailsModalElement_loadPreview() {
|
|
147
180
|
const item = this._item;
|
|
148
|
-
if (!item?.handler || !item.key)
|
|
149
|
-
this._tab = 'changes';
|
|
181
|
+
if (!item?.handler || !item.key)
|
|
150
182
|
return;
|
|
151
|
-
}
|
|
152
183
|
// only some handlers support previews, the rest return a 404
|
|
153
|
-
// and the modal
|
|
184
|
+
// and the modal shows the diff on its own. we leave _tab alone
|
|
185
|
+
// so a user who picked the diff stays on it as they move through.
|
|
186
|
+
this._loading = true;
|
|
154
187
|
const { data } = await __classPrivateFieldGet(this, _uSyncDetailsModalElement_repository, "f").getPreview(item.handler, item.key);
|
|
155
188
|
// moving through the list quickly can return previews out of order,
|
|
156
189
|
// so drop anything that isn't for the item we are now showing.
|
|
157
190
|
if (item !== this._item)
|
|
158
191
|
return;
|
|
192
|
+
this._loading = false;
|
|
159
193
|
if (data?.entityType) {
|
|
194
|
+
const entityType = data.entityType;
|
|
195
|
+
__classPrivateFieldSet(this, _uSyncDetailsModalElement_previewFilter, (manifest) => manifest.forEntityTypes.includes(entityType), "f");
|
|
196
|
+
__classPrivateFieldSet(this, _uSyncDetailsModalElement_previewProps, { preview: data }, "f");
|
|
160
197
|
this._preview = data;
|
|
161
198
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
199
|
+
};
|
|
200
|
+
_uSyncDetailsModalElement_hasPreview = function _uSyncDetailsModalElement_hasPreview() {
|
|
201
|
+
return !!this._preview && this._previewTypes.has(this._preview.entityType);
|
|
165
202
|
};
|
|
166
203
|
_uSyncDetailsModalElement_showActions = function _uSyncDetailsModalElement_showActions() {
|
|
167
204
|
const showActions = this.data?.showActions;
|
|
@@ -199,6 +236,41 @@ uSyncDetailsModalElement.styles = css `
|
|
|
199
236
|
margin: 0;
|
|
200
237
|
}
|
|
201
238
|
|
|
239
|
+
#headline {
|
|
240
|
+
display: flex;
|
|
241
|
+
flex-direction: column;
|
|
242
|
+
min-width: 0;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
#headline h3 {
|
|
246
|
+
margin: 0;
|
|
247
|
+
white-space: nowrap;
|
|
248
|
+
overflow: hidden;
|
|
249
|
+
text-overflow: ellipsis;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
#headline .item-info {
|
|
253
|
+
font-size: var(--uui-type-small-size);
|
|
254
|
+
color: var(--uui-color-text-alt);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
uui-tab-group {
|
|
258
|
+
background-color: var(--uui-color-surface);
|
|
259
|
+
border-radius: var(--uui-border-radius);
|
|
260
|
+
box-shadow: var(--uui-shadow-depth-1);
|
|
261
|
+
padding: 0 var(--uui-size-space-2);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
.tab-label {
|
|
265
|
+
display: inline-flex;
|
|
266
|
+
align-items: center;
|
|
267
|
+
gap: var(--uui-size-space-2);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.tab-label umb-icon {
|
|
271
|
+
font-size: 16px;
|
|
272
|
+
}
|
|
273
|
+
|
|
202
274
|
#navigation {
|
|
203
275
|
display: flex;
|
|
204
276
|
align-items: center;
|
|
@@ -215,12 +287,18 @@ __decorate([
|
|
|
215
287
|
__decorate([
|
|
216
288
|
state()
|
|
217
289
|
], uSyncDetailsModalElement.prototype, "_tab", void 0);
|
|
290
|
+
__decorate([
|
|
291
|
+
state()
|
|
292
|
+
], uSyncDetailsModalElement.prototype, "_loading", void 0);
|
|
218
293
|
__decorate([
|
|
219
294
|
state()
|
|
220
295
|
], uSyncDetailsModalElement.prototype, "_item", void 0);
|
|
221
296
|
__decorate([
|
|
222
297
|
state()
|
|
223
298
|
], uSyncDetailsModalElement.prototype, "_index", void 0);
|
|
299
|
+
__decorate([
|
|
300
|
+
state()
|
|
301
|
+
], uSyncDetailsModalElement.prototype, "_previewTypes", void 0);
|
|
224
302
|
uSyncDetailsModalElement = __decorate([
|
|
225
303
|
customElement('usync-details-modal')
|
|
226
304
|
], uSyncDetailsModalElement);
|
package/dist/exports.d.ts
CHANGED
package/dist/exports.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -5,7 +5,15 @@ import './external/signalr/index.js';
|
|
|
5
5
|
import './api/index.js';
|
|
6
6
|
export * from './exports.js';
|
|
7
7
|
import { manifests } from './manifests.js';
|
|
8
|
-
|
|
8
|
+
import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';
|
|
9
|
+
import { client } from './api/client.gen.js';
|
|
10
|
+
export const onInit = async (host, extensionRegistry) => {
|
|
9
11
|
// register the manifests
|
|
10
12
|
extensionRegistry.registerMany(manifests);
|
|
13
|
+
const authContext = await host.getContext(UMB_AUTH_CONTEXT);
|
|
14
|
+
if (!authContext) {
|
|
15
|
+
console.warn('UMB_AUTH_CONTEXT not available — extension API client will not be authenticated');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
authContext.configureClient(client);
|
|
11
19
|
};
|
package/dist/lang/files/da-dk.js
CHANGED
|
@@ -25,8 +25,8 @@ export default {
|
|
|
25
25
|
detailHeadline: 'Registrerede ændringer',
|
|
26
26
|
detailHeader: 'Ting der er anderledes',
|
|
27
27
|
detailPosition: '%0% af %1%',
|
|
28
|
-
previewTab: 'Visuel',
|
|
29
28
|
changesTab: 'Ændringer',
|
|
29
|
+
diffTab: 'Diff',
|
|
30
30
|
previewCurrent: 'Nuværende (dette site)',
|
|
31
31
|
previewIncoming: 'Indkommende (uSync-filer)',
|
|
32
32
|
previewNotInSite: 'Dette element findes ikke på sitet endnu',
|
package/dist/lang/files/de-de.js
CHANGED
|
@@ -25,8 +25,8 @@ export default {
|
|
|
25
25
|
detailHeadline: 'Erkannte Änderungen',
|
|
26
26
|
detailHeader: 'Was sich unterscheidet',
|
|
27
27
|
detailPosition: '%0% von %1%',
|
|
28
|
-
previewTab: 'Visuell',
|
|
29
28
|
changesTab: 'Änderungen',
|
|
29
|
+
diffTab: 'Diff',
|
|
30
30
|
previewCurrent: 'Aktuell (diese Website)',
|
|
31
31
|
previewIncoming: 'Eingehend (uSync-Dateien)',
|
|
32
32
|
previewNotInSite: 'Dieses Element existiert noch nicht auf der Website',
|
|
@@ -25,8 +25,8 @@ declare const _default: {
|
|
|
25
25
|
detailHeadline: string;
|
|
26
26
|
detailHeader: string;
|
|
27
27
|
detailPosition: string;
|
|
28
|
-
previewTab: string;
|
|
29
28
|
changesTab: string;
|
|
29
|
+
diffTab: string;
|
|
30
30
|
previewCurrent: string;
|
|
31
31
|
previewIncoming: string;
|
|
32
32
|
previewNotInSite: string;
|
|
@@ -128,6 +128,19 @@ declare const _default: {
|
|
|
128
128
|
uploadIntro: string;
|
|
129
129
|
uploadSuccess: string;
|
|
130
130
|
uploadError: string;
|
|
131
|
+
itemTypeILanguage: string;
|
|
132
|
+
itemTypeIDictionaryItem: string;
|
|
133
|
+
itemTypeIDataType: string;
|
|
134
|
+
itemTypeITemplate: string;
|
|
135
|
+
itemTypeIContentType: string;
|
|
136
|
+
itemTypeIMediaType: string;
|
|
137
|
+
itemTypeIMemberType: string;
|
|
138
|
+
itemTypeIContent: string;
|
|
139
|
+
itemTypeIMedia: string;
|
|
140
|
+
itemTypeIDomain: string;
|
|
141
|
+
itemTypeIWebhook: string;
|
|
142
|
+
itemTypeIRelationType: string;
|
|
143
|
+
itemTypeMediaFile: string;
|
|
131
144
|
ILanguage: string;
|
|
132
145
|
IDictionaryItem: string;
|
|
133
146
|
IDataType: string;
|
package/dist/lang/files/en-us.js
CHANGED
|
@@ -25,8 +25,8 @@ export default {
|
|
|
25
25
|
detailHeadline: 'Detected Changes',
|
|
26
26
|
detailHeader: 'Things that are different',
|
|
27
27
|
detailPosition: '%0% of %1%',
|
|
28
|
-
previewTab: 'Visual',
|
|
29
28
|
changesTab: 'Changes',
|
|
29
|
+
diffTab: 'Diff',
|
|
30
30
|
previewCurrent: 'Current (this site)',
|
|
31
31
|
previewIncoming: 'Incoming (uSync files)',
|
|
32
32
|
previewNotInSite: 'This item does not exist in the site yet',
|
|
@@ -140,6 +140,19 @@ export default {
|
|
|
140
140
|
uploadIntro: 'Select a zip file containing uSync files that you want to upload',
|
|
141
141
|
uploadSuccess: 'The files have been uploaded and extracted to the uSync folder',
|
|
142
142
|
uploadError: 'There was an error uploading the files',
|
|
143
|
+
itemTypeILanguage: 'Language',
|
|
144
|
+
itemTypeIDictionaryItem: 'Dictionary item',
|
|
145
|
+
itemTypeIDataType: 'Data type',
|
|
146
|
+
itemTypeITemplate: 'Template',
|
|
147
|
+
itemTypeIContentType: 'Content type',
|
|
148
|
+
itemTypeIMediaType: 'Media type',
|
|
149
|
+
itemTypeIMemberType: 'Member type',
|
|
150
|
+
itemTypeIContent: 'Content',
|
|
151
|
+
itemTypeIMedia: 'Media',
|
|
152
|
+
itemTypeIDomain: 'Domain',
|
|
153
|
+
itemTypeIWebhook: 'Webhook',
|
|
154
|
+
itemTypeIRelationType: 'Relation type',
|
|
155
|
+
itemTypeMediaFile: 'Media file',
|
|
143
156
|
ILanguage: 'Language',
|
|
144
157
|
IDictionaryItem: 'Dictionary Items',
|
|
145
158
|
IDataType: 'DataTypes',
|
package/dist/lang/files/es-es.js
CHANGED
|
@@ -25,8 +25,8 @@ export default {
|
|
|
25
25
|
detailHeadline: 'Cambios detectados',
|
|
26
26
|
detailHeader: 'Cosas que son diferentes',
|
|
27
27
|
detailPosition: '%0% de %1%',
|
|
28
|
-
previewTab: 'Visual',
|
|
29
28
|
changesTab: 'Cambios',
|
|
29
|
+
diffTab: 'Diff',
|
|
30
30
|
previewCurrent: 'Actual (este sitio)',
|
|
31
31
|
previewIncoming: 'Entrante (archivos de uSync)',
|
|
32
32
|
previewNotInSite: 'Este elemento aún no existe en el sitio',
|
package/dist/lang/files/fr-fr.js
CHANGED
|
@@ -25,8 +25,8 @@ export default {
|
|
|
25
25
|
detailHeadline: 'Modifications détectées',
|
|
26
26
|
detailHeader: 'Ce qui est différent',
|
|
27
27
|
detailPosition: '%0% sur %1%',
|
|
28
|
-
previewTab: 'Visuel',
|
|
29
28
|
changesTab: 'Modifications',
|
|
29
|
+
diffTab: 'Diff',
|
|
30
30
|
previewCurrent: 'Actuel (ce site)',
|
|
31
31
|
previewIncoming: 'Entrant (fichiers uSync)',
|
|
32
32
|
previewNotInSite: "Cet élément n'existe pas encore sur le site",
|
package/dist/lang/files/nl-nl.js
CHANGED
|
@@ -25,8 +25,8 @@ export default {
|
|
|
25
25
|
detailHeadline: 'Gedetecteerde wijzigingen',
|
|
26
26
|
detailHeader: 'Wat er anders is',
|
|
27
27
|
detailPosition: '%0% van %1%',
|
|
28
|
-
previewTab: 'Visueel',
|
|
29
28
|
changesTab: 'Wijzigingen',
|
|
29
|
+
diffTab: 'Diff',
|
|
30
30
|
previewCurrent: 'Huidig (deze site)',
|
|
31
31
|
previewIncoming: 'Inkomend (uSync-bestanden)',
|
|
32
32
|
previewNotInSite: 'Dit item bestaat nog niet op de site',
|
package/dist/manifests.js
CHANGED
|
@@ -4,6 +4,7 @@ import { manifests as localization } from './lang/manifest.js';
|
|
|
4
4
|
import { manifests as dialogs } from './dialogs/manifest.js';
|
|
5
5
|
import { manifests as conditions } from './conditions/manifest.js';
|
|
6
6
|
import { manifests as icons } from './icons/manifest.js';
|
|
7
|
+
import { manifests as previews } from './preview/manifest.js';
|
|
7
8
|
export const manifests = [
|
|
8
9
|
...localization,
|
|
9
10
|
...trees,
|
|
@@ -11,4 +12,5 @@ export const manifests = [
|
|
|
11
12
|
...dialogs,
|
|
12
13
|
...conditions,
|
|
13
14
|
...icons,
|
|
15
|
+
...previews,
|
|
14
16
|
];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types.js';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const dataTypePreview = {
|
|
2
|
+
type: 'usync-item-preview',
|
|
3
|
+
alias: 'usync.item-preview.data-type',
|
|
4
|
+
name: 'uSync data type preview',
|
|
5
|
+
element: () => import('../components/usync-data-type-preview.js'),
|
|
6
|
+
forEntityTypes: ['data-type'],
|
|
7
|
+
};
|
|
8
|
+
const contentTypePreview = {
|
|
9
|
+
type: 'usync-item-preview',
|
|
10
|
+
alias: 'usync.item-preview.content-type',
|
|
11
|
+
name: 'uSync content type preview',
|
|
12
|
+
element: () => import('../components/usync-content-type-preview.js'),
|
|
13
|
+
forEntityTypes: ['document-type', 'media-type', 'member-type'],
|
|
14
|
+
};
|
|
15
|
+
const contentPreview = {
|
|
16
|
+
type: 'usync-item-preview',
|
|
17
|
+
alias: 'usync.item-preview.content',
|
|
18
|
+
name: 'uSync content preview',
|
|
19
|
+
element: () => import('../components/usync-content-preview.js'),
|
|
20
|
+
forEntityTypes: ['document', 'media'],
|
|
21
|
+
};
|
|
22
|
+
export const manifests = [dataTypePreview, contentTypePreview, contentPreview];
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { ManifestElement } from '@umbraco-cms/backoffice/extension-api';
|
|
2
|
+
import type { DataTypeResponseModel, DocumentResponseModel, DocumentTypeResponseModel, MediaResponseModel, MediaTypeResponseModel, MemberTypeResponseModel } from '@umbraco-cms/backoffice/external/backend-api';
|
|
3
|
+
import type { SyncItemPreviewResponse } from '../api';
|
|
4
|
+
/**
|
|
5
|
+
* An element that shows the preview of an import for one or more entity types.
|
|
6
|
+
*/
|
|
7
|
+
export interface uSyncItemPreviewElement extends HTMLElement {
|
|
8
|
+
preview?: SyncItemPreviewResponse;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Shows the preview for items of the given entity types in the details dialog.
|
|
12
|
+
*
|
|
13
|
+
* The entity types match the `EntityType` of the server side preview mapper,
|
|
14
|
+
* and `preview.preview` is the model that mapper built.
|
|
15
|
+
*/
|
|
16
|
+
export interface ManifestuSyncItemPreview extends ManifestElement<uSyncItemPreviewElement> {
|
|
17
|
+
type: 'usync-item-preview';
|
|
18
|
+
forEntityTypes: Array<string>;
|
|
19
|
+
}
|
|
20
|
+
declare global {
|
|
21
|
+
interface UmbExtensionManifestMap {
|
|
22
|
+
ManifestuSyncItemPreview: ManifestuSyncItemPreview;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** the model a preview mapper built, as the type the element expects. */
|
|
26
|
+
export declare const getPreviewModel: <T>(preview?: SyncItemPreviewResponse) => T | undefined;
|
|
27
|
+
export type uSyncPreviewContentTypeModel = DocumentTypeResponseModel | MediaTypeResponseModel | MemberTypeResponseModel;
|
|
28
|
+
/** preview model for a data type (entity type data-type) */
|
|
29
|
+
export interface SyncDataTypePreview {
|
|
30
|
+
current?: DataTypeResponseModel | null;
|
|
31
|
+
incoming?: DataTypeResponseModel | null;
|
|
32
|
+
}
|
|
33
|
+
/** what the preview needs to lay out the properties of an item */
|
|
34
|
+
export interface SyncPropertiesPreview<TTypeModel> {
|
|
35
|
+
/** the content types either side is composed of (as they are in the site) */
|
|
36
|
+
compositions: Array<TTypeModel>;
|
|
37
|
+
/** the data types used by the properties on either side */
|
|
38
|
+
dataTypes: Array<DataTypeResponseModel>;
|
|
39
|
+
/** keys of the data types that aren't in the site yet */
|
|
40
|
+
newDataTypes: Array<string>;
|
|
41
|
+
/** keys of the compositions that aren't in the site yet */
|
|
42
|
+
newCompositions: Array<string>;
|
|
43
|
+
}
|
|
44
|
+
/** preview model for a document, media or member type */
|
|
45
|
+
export interface SyncContentTypePreview<TTypeModel extends uSyncPreviewContentTypeModel = uSyncPreviewContentTypeModel> extends SyncPropertiesPreview<TTypeModel> {
|
|
46
|
+
current?: TTypeModel | null;
|
|
47
|
+
incoming?: TTypeModel | null;
|
|
48
|
+
}
|
|
49
|
+
export interface SyncContentPreviewCulture {
|
|
50
|
+
culture: string;
|
|
51
|
+
published: boolean;
|
|
52
|
+
}
|
|
53
|
+
/** the settings of a content or media item that aren't property values */
|
|
54
|
+
export interface SyncContentPreviewInfo {
|
|
55
|
+
/** name of the parent item (null when the item is at the root) */
|
|
56
|
+
parent?: string | null;
|
|
57
|
+
sortOrder: number;
|
|
58
|
+
trashed: boolean;
|
|
59
|
+
/** alias of the template (content only) */
|
|
60
|
+
template?: string | null;
|
|
61
|
+
/** published state for each culture (an empty culture for invariant content) */
|
|
62
|
+
published: Array<SyncContentPreviewCulture>;
|
|
63
|
+
}
|
|
64
|
+
/** preview model for a document or media item */
|
|
65
|
+
export interface SyncContentPreview<TModel extends DocumentResponseModel | MediaResponseModel = DocumentResponseModel | MediaResponseModel, TTypeModel extends DocumentTypeResponseModel | MediaTypeResponseModel = DocumentTypeResponseModel | MediaTypeResponseModel> extends SyncPropertiesPreview<TTypeModel> {
|
|
66
|
+
current?: TModel | null;
|
|
67
|
+
incoming?: TModel | null;
|
|
68
|
+
currentInfo?: SyncContentPreviewInfo | null;
|
|
69
|
+
incomingInfo?: SyncContentPreviewInfo | null;
|
|
70
|
+
/** the document (or media) type of the item, as it is in the site */
|
|
71
|
+
contentType?: TTypeModel | null;
|
|
72
|
+
}
|