@pacem/pacem-cms 1.0.0-abel
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/LICENSE +191 -0
- package/NOTICE +4 -0
- package/dist/browser/pacem-cms.js +2215 -0
- package/dist/browser/pacem-cms.js.map +1 -0
- package/dist/browser/pacem-cms.min.js +2 -0
- package/dist/browser/pacem-cms.min.js.map +1 -0
- package/dist/bundle/pacem-cms.min.mjs +106 -0
- package/dist/bundle/pacem-cms.mjs +2269 -0
- package/dist/bundle/pacem-cms.mjs.map +7 -0
- package/dist/esm/index-iife.js +3 -0
- package/dist/esm/index.cms.js +3 -0
- package/dist/esm/index.components.js +16 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/types.js +32 -0
- package/package.json +42 -0
- package/typings/index.d.ts +511 -0
|
@@ -0,0 +1,2269 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
// packages/cms/dist/esm/index.components.js
|
|
8
|
+
var index_components_exports = {};
|
|
9
|
+
__export(index_components_exports, {
|
|
10
|
+
ACCESS_TOKEN_METADATA: () => ACCESS_TOKEN_METADATA,
|
|
11
|
+
DATACOLUMNS_METADATA_TYPE: () => DATACOLUMNS_METADATA_TYPE,
|
|
12
|
+
DEFAULT_METADATA: () => DEFAULT_METADATA,
|
|
13
|
+
EXPRESSION_METADATA_TYPE: () => EXPRESSION_METADATA_TYPE,
|
|
14
|
+
EXPRESSION_WIDGET_METADATA_EXTRA: () => EXPRESSION_WIDGET_METADATA_EXTRA,
|
|
15
|
+
ExpressionSource: () => ExpressionSource,
|
|
16
|
+
FETCH_CREDENTIALS_METADATA: () => FETCH_CREDENTIALS_METADATA,
|
|
17
|
+
Functions: () => Functions,
|
|
18
|
+
GRID_COLUMNS: () => GRID_COLUMNS,
|
|
19
|
+
LayoutChangeEventName: () => LayoutChangeEventName,
|
|
20
|
+
PacemBearerWidgetElement: () => PacemBearerWidgetElement,
|
|
21
|
+
PacemCompositeWidgetElement: () => PacemCompositeWidgetElement,
|
|
22
|
+
PacemDataColumnElement: () => PacemDataColumnElement,
|
|
23
|
+
PacemDataColumnsElement: () => PacemDataColumnsElement,
|
|
24
|
+
PacemElementPickerElement: () => PacemElementPickerElement,
|
|
25
|
+
PacemElementPickerElementBase: () => PacemElementPickerElementBase,
|
|
26
|
+
PacemExpressionElement: () => PacemExpressionElement,
|
|
27
|
+
PacemGridWidgetElement: () => PacemGridWidgetElement,
|
|
28
|
+
PacemUiWidgetElement: () => PacemUiWidgetElement,
|
|
29
|
+
PacemWidgetApiManifestElement: () => PacemWidgetApiManifestElement,
|
|
30
|
+
PacemWidgetClockElement: () => PacemWidgetClockElement,
|
|
31
|
+
PacemWidgetDataElement: () => PacemWidgetDataElement,
|
|
32
|
+
PacemWidgetDataGridElement: () => PacemWidgetDataGridElement,
|
|
33
|
+
PacemWidgetElement: () => PacemWidgetElement,
|
|
34
|
+
PacemWidgetFetchElement: () => PacemWidgetFetchElement,
|
|
35
|
+
PacemWidgetFetchParameterElement: () => PacemWidgetFetchParameterElement,
|
|
36
|
+
PacemWidgetPickerElement: () => PacemWidgetPickerElement,
|
|
37
|
+
PacemWidgetTextElement: () => PacemWidgetTextElement,
|
|
38
|
+
PacemWidgetToolbarElement: () => PacemWidgetToolbarElement,
|
|
39
|
+
PacemWidgetTranslatorElement: () => PacemWidgetTranslatorElement,
|
|
40
|
+
Widget: () => Widget,
|
|
41
|
+
WidgetRegisterEvent: () => WidgetRegisterEvent,
|
|
42
|
+
WidgetRegisterEventName: () => WidgetRegisterEventName,
|
|
43
|
+
WidgetUnregisterEvent: () => WidgetUnregisterEvent,
|
|
44
|
+
WidgetUnregisterEventName: () => WidgetUnregisterEventName,
|
|
45
|
+
buildWidgetMetadata: () => buildWidgetMetadata,
|
|
46
|
+
gridifyMetadata: () => gridifyMetadata
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// packages/cms/dist/esm/scaffolding/types.js
|
|
50
|
+
import { PropertyChangeEventName, Utils, CustomElementUtils, P } from "@pacem/pacem-core";
|
|
51
|
+
var Functions = {
|
|
52
|
+
"dismiss": (...args) => {
|
|
53
|
+
for (let name of args || []) {
|
|
54
|
+
delete Functions[name];
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"handleExpressionValueChange": (evt, prop, entity) => {
|
|
58
|
+
if (evt.detail.propertyName === "value" && !Utils.isNull(entity)) {
|
|
59
|
+
const value = evt.detail.currentValue;
|
|
60
|
+
if (entity instanceof HTMLElement) {
|
|
61
|
+
let attr = CustomElementUtils.camelToKebab(prop);
|
|
62
|
+
if (Utils.isNullOrEmpty(value)) {
|
|
63
|
+
entity.removeAttribute(attr);
|
|
64
|
+
} else {
|
|
65
|
+
entity.setAttribute(attr, value.toString());
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
entity[prop] = value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var EXPRESSION_METADATA_TYPE = (host, hostRef = ":host", hostEntityRef = ":host.entity") => {
|
|
74
|
+
const attrs = {}, meta = host.metadata, fns = Functions, fnKeys = [];
|
|
75
|
+
attrs["value"] = `{{ ${hostEntityRef} instanceof HTMLElement && ${hostEntityRef}.getAttribute('${CustomElementUtils.camelToKebab(meta.prop)}') }}`;
|
|
76
|
+
attrs["on-" + PropertyChangeEventName] = `Pacem.Components.Cms.Functions.handleExpressionValueChange($event, '${meta.prop}', ${hostEntityRef})`;
|
|
77
|
+
attrs["converter"] = `{{ Pacem.CustomElementUtils.getWatchedProperty(${hostEntityRef}, '${meta.prop}').config.converter }}`;
|
|
78
|
+
const tagName = P + "-expression";
|
|
79
|
+
let extra = meta.extra || {};
|
|
80
|
+
if (!Utils.isNullOrEmpty(extra.selector)) {
|
|
81
|
+
attrs["selector"] = extra.selector;
|
|
82
|
+
}
|
|
83
|
+
if (!Utils.isNullOrEmpty(extra.filter)) {
|
|
84
|
+
switch (typeof extra.filter) {
|
|
85
|
+
case "string":
|
|
86
|
+
attrs["filter"] = `{{ (e) => e.constructor.name === "${extra.filter}" || e.localName === "${extra.filter.toLowerCase()}" }}`;
|
|
87
|
+
break;
|
|
88
|
+
case "function":
|
|
89
|
+
const fnKey = "fn" + Utils.uniqueCode();
|
|
90
|
+
fns[fnKey] = extra.filter;
|
|
91
|
+
attrs["filter"] = `{{ Pacem.Components.Cms.Functions.${fnKey}, once }}`;
|
|
92
|
+
fnKeys.push(fnKey);
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (typeof extra.labeler === "function") {
|
|
97
|
+
const fnKey = "fn" + Utils.uniqueCode();
|
|
98
|
+
fns[fnKey] = extra.labeler;
|
|
99
|
+
attrs["labeler"] = `{{ Pacem.Components.Cms.Functions.${fnKey}, once }}`;
|
|
100
|
+
fnKeys.push(fnKey);
|
|
101
|
+
}
|
|
102
|
+
if (fnKeys.length > 0) {
|
|
103
|
+
attrs["on-unload"] = `{{ Pacem.Components.Cms.Functions.dismiss('${fnKeys.join("','")}') }}`;
|
|
104
|
+
}
|
|
105
|
+
return { tagName, attrs };
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
// packages/cms/dist/esm/scaffolding/element-picker.js
|
|
109
|
+
import { CustomElement, P as P2, Defaults, Watch, PropertyConverters, ViewChild, Debounce, Utils as Utils2 } from "@pacem/pacem-core";
|
|
110
|
+
import { Components as ScaffoldingComponents } from "@pacem/pacem-scaffolding";
|
|
111
|
+
var __decorate = function(decorators, target, key, desc) {
|
|
112
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
113
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
114
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
115
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
116
|
+
};
|
|
117
|
+
var PacemElementPickerElementBase = class extends ScaffoldingComponents.Scaffolding.PacemBaseElement {
|
|
118
|
+
};
|
|
119
|
+
__decorate([
|
|
120
|
+
Watch({ converter: PropertyConverters.String })
|
|
121
|
+
], PacemElementPickerElementBase.prototype, "selector", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
Watch({ converter: PropertyConverters.Eval })
|
|
124
|
+
], PacemElementPickerElementBase.prototype, "filter", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
Watch({ converter: PropertyConverters.Eval })
|
|
127
|
+
], PacemElementPickerElementBase.prototype, "labeler", void 0);
|
|
128
|
+
var PacemElementPickerElement = class PacemElementPickerElement2 extends PacemElementPickerElementBase {
|
|
129
|
+
get inputFields() {
|
|
130
|
+
return [this._select];
|
|
131
|
+
}
|
|
132
|
+
toggleReadonlyView(readonly) {
|
|
133
|
+
this._select.readonly = readonly;
|
|
134
|
+
}
|
|
135
|
+
onChange(_) {
|
|
136
|
+
return Utils2.fromResult(this.value = this._select.value);
|
|
137
|
+
}
|
|
138
|
+
acceptValue(val) {
|
|
139
|
+
this._select.value = val;
|
|
140
|
+
}
|
|
141
|
+
getViewValue(value) {
|
|
142
|
+
return this._select.viewValue;
|
|
143
|
+
}
|
|
144
|
+
convertValueAttributeToProperty(attr) {
|
|
145
|
+
return PropertyConverters.Element.convert(attr);
|
|
146
|
+
}
|
|
147
|
+
viewActivatedCallback() {
|
|
148
|
+
super.viewActivatedCallback();
|
|
149
|
+
this._databind();
|
|
150
|
+
}
|
|
151
|
+
propertyChangedCallback(name, old, val, first) {
|
|
152
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
153
|
+
if (!first) {
|
|
154
|
+
switch (name) {
|
|
155
|
+
case "selector":
|
|
156
|
+
case "filter":
|
|
157
|
+
case "labeler":
|
|
158
|
+
this._databind();
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
_databind() {
|
|
164
|
+
const project = this.labeler || ((e) => {
|
|
165
|
+
let label = e.constructor.name;
|
|
166
|
+
if (e.id) {
|
|
167
|
+
label += "#" + e.id;
|
|
168
|
+
}
|
|
169
|
+
return label;
|
|
170
|
+
});
|
|
171
|
+
const retval = [];
|
|
172
|
+
document.querySelectorAll(this.selector || "[pacem]").forEach((e, i, arr) => {
|
|
173
|
+
if ((Utils2.isNull(this.filter) || this.filter(e) === true) && !Utils2.isNullOrEmpty(e.id)) {
|
|
174
|
+
retval.push({ element: e, label: project(e) });
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
this._select.valueProperty = "element";
|
|
178
|
+
this._select.textProperty = "label";
|
|
179
|
+
this._select.datasource = retval;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
__decorate([
|
|
183
|
+
ViewChild(P2 + "-select")
|
|
184
|
+
], PacemElementPickerElement.prototype, "_select", void 0);
|
|
185
|
+
__decorate([
|
|
186
|
+
Debounce(50)
|
|
187
|
+
], PacemElementPickerElement.prototype, "_databind", null);
|
|
188
|
+
PacemElementPickerElement = __decorate([
|
|
189
|
+
CustomElement({
|
|
190
|
+
tagName: P2 + "-element-picker",
|
|
191
|
+
shadow: Defaults.USE_SHADOW_ROOT,
|
|
192
|
+
template: `<${P2}-select></${P2}-select>`
|
|
193
|
+
})
|
|
194
|
+
], PacemElementPickerElement);
|
|
195
|
+
|
|
196
|
+
// packages/cms/dist/esm/scaffolding/expression.js
|
|
197
|
+
import { CustomElement as CustomElement2, P as P3, PCSS, Defaults as Defaults2, Watch as Watch2, PropertyConverters as PropertyConverters2, ViewChild as ViewChild2, Debounce as Debounce2, Utils as Utils3, CustomElementUtils as CustomElementUtils2, RepeaterItem } from "@pacem/pacem-core";
|
|
198
|
+
import { Components as ScaffoldingComponents2 } from "@pacem/pacem-scaffolding";
|
|
199
|
+
var __decorate2 = function(decorators, target, key, desc) {
|
|
200
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
201
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
202
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
203
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
204
|
+
};
|
|
205
|
+
var ExpressionSource;
|
|
206
|
+
(function(ExpressionSource2) {
|
|
207
|
+
ExpressionSource2["Constant"] = "const";
|
|
208
|
+
ExpressionSource2["PropertyReference"] = "property";
|
|
209
|
+
ExpressionSource2["Expression"] = "expr";
|
|
210
|
+
})(ExpressionSource || (ExpressionSource = {}));
|
|
211
|
+
var PacemExpressionElement = class PacemExpressionElement2 extends PacemElementPickerElementBase {
|
|
212
|
+
propertyChangedCallback(name, old, val, first) {
|
|
213
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
214
|
+
if (name === "converter") {
|
|
215
|
+
this._setFeedbackText(this.value);
|
|
216
|
+
} else if (!first) {
|
|
217
|
+
if (this._editing) {
|
|
218
|
+
switch (name) {
|
|
219
|
+
case "_source":
|
|
220
|
+
switch (val) {
|
|
221
|
+
case ExpressionSource.PropertyReference:
|
|
222
|
+
this._picker.focus();
|
|
223
|
+
break;
|
|
224
|
+
default:
|
|
225
|
+
this._editor.focus();
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
break;
|
|
229
|
+
case "_propRef":
|
|
230
|
+
if (!Utils3.isNullOrEmpty(val)) {
|
|
231
|
+
this._editor.focus();
|
|
232
|
+
this._editor.value = "{{ #" + this._sourceRef.id + "." + val + " }}";
|
|
233
|
+
}
|
|
234
|
+
this.changeHandler(new Event("change"));
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
get inputFields() {
|
|
241
|
+
return [this._editor];
|
|
242
|
+
}
|
|
243
|
+
toggleReadonlyView(readonly) {
|
|
244
|
+
if (readonly) {
|
|
245
|
+
this._editing = false;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
setPristine() {
|
|
249
|
+
super.setPristine();
|
|
250
|
+
this._editing = false;
|
|
251
|
+
}
|
|
252
|
+
onChange(_) {
|
|
253
|
+
return Utils3.fromResult(this.value = this._editor.value);
|
|
254
|
+
}
|
|
255
|
+
acceptValue(val) {
|
|
256
|
+
this._view.textContent = val || "...";
|
|
257
|
+
this._setFeedbackText(val);
|
|
258
|
+
this._reverseStructure();
|
|
259
|
+
if (val !== this._editor.value) {
|
|
260
|
+
this._editor.value = val;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
_setFeedbackText(val = this.value) {
|
|
264
|
+
const converter = this.converter;
|
|
265
|
+
if (CustomElementUtils2.isBindingAttribute(val) || typeof (converter && converter.convert) !== "function") {
|
|
266
|
+
this._eval.setAttribute("text", val);
|
|
267
|
+
} else if (val === void 0) {
|
|
268
|
+
this._eval.text = "<undefined>";
|
|
269
|
+
} else {
|
|
270
|
+
this._eval.text = converter.convert(val);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
getViewValue(value) {
|
|
274
|
+
return value;
|
|
275
|
+
}
|
|
276
|
+
convertValueAttributeToProperty(attr) {
|
|
277
|
+
return attr;
|
|
278
|
+
}
|
|
279
|
+
_reverseStructure() {
|
|
280
|
+
let cleanup = () => {
|
|
281
|
+
this._source = this._sourceRef = this._propRef = /*this.value =*/
|
|
282
|
+
void 0;
|
|
283
|
+
};
|
|
284
|
+
let expr = this.value;
|
|
285
|
+
if (!Utils3.isNullOrEmpty(expr)) {
|
|
286
|
+
if (CustomElementUtils2.isBindingAttribute(expr)) {
|
|
287
|
+
const expression = CustomElementUtils2.parseBindingAttribute(expr, this), deps = expression.dependencies;
|
|
288
|
+
if (Utils3.isNullOrEmpty(deps) || deps.length > 1 || RepeaterItem.isRepeaterItem(deps[0].element)) {
|
|
289
|
+
this._source = ExpressionSource.Expression;
|
|
290
|
+
} else {
|
|
291
|
+
const dep = deps[0];
|
|
292
|
+
this._source = ExpressionSource.PropertyReference;
|
|
293
|
+
this._sourceRef = document.querySelector("#" + dep.element.id);
|
|
294
|
+
this._propRef = dep.path;
|
|
295
|
+
}
|
|
296
|
+
} else {
|
|
297
|
+
this._source = ExpressionSource.Constant;
|
|
298
|
+
}
|
|
299
|
+
} else {
|
|
300
|
+
cleanup();
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
__decorate2([
|
|
305
|
+
Watch2({ emit: false })
|
|
306
|
+
], PacemExpressionElement.prototype, "converter", void 0);
|
|
307
|
+
__decorate2([
|
|
308
|
+
Watch2({ converter: PropertyConverters2.Boolean })
|
|
309
|
+
], PacemExpressionElement.prototype, "_editing", void 0);
|
|
310
|
+
__decorate2([
|
|
311
|
+
Watch2({ converter: PropertyConverters2.String })
|
|
312
|
+
], PacemExpressionElement.prototype, "_source", void 0);
|
|
313
|
+
__decorate2([
|
|
314
|
+
Watch2({ converter: PropertyConverters2.Element })
|
|
315
|
+
], PacemExpressionElement.prototype, "_sourceRef", void 0);
|
|
316
|
+
__decorate2([
|
|
317
|
+
Watch2({ converter: PropertyConverters2.String })
|
|
318
|
+
], PacemExpressionElement.prototype, "_propRef", void 0);
|
|
319
|
+
__decorate2([
|
|
320
|
+
ViewChild2(P3 + "-element-picker")
|
|
321
|
+
], PacemExpressionElement.prototype, "_picker", void 0);
|
|
322
|
+
__decorate2([
|
|
323
|
+
ViewChild2(P3 + "-textarea")
|
|
324
|
+
], PacemExpressionElement.prototype, "_editor", void 0);
|
|
325
|
+
__decorate2([
|
|
326
|
+
ViewChild2("span." + PCSS + "-viewfinder")
|
|
327
|
+
], PacemExpressionElement.prototype, "_view", void 0);
|
|
328
|
+
__decorate2([
|
|
329
|
+
ViewChild2(P3 + "-text")
|
|
330
|
+
], PacemExpressionElement.prototype, "_eval", void 0);
|
|
331
|
+
__decorate2([
|
|
332
|
+
Debounce2(50)
|
|
333
|
+
], PacemExpressionElement.prototype, "_reverseStructure", null);
|
|
334
|
+
PacemExpressionElement = __decorate2([
|
|
335
|
+
CustomElement2({
|
|
336
|
+
tagName: P3 + "-expression",
|
|
337
|
+
shadow: Defaults2.USE_SHADOW_ROOT,
|
|
338
|
+
template: `<${P3}-collapse class="${PCSS}-expression" collapse="{{ !:host._editing }}">
|
|
339
|
+
<div class="expression-builder ${PCSS}-grid grid-tiny-rowgap grid-tiny-colgap ${PCSS}-pad pad-bottom-2">
|
|
340
|
+
<div class="${PCSS}-cell">
|
|
341
|
+
<${P3}-select value="{{ :host._source, twoway }}" class="display-block">
|
|
342
|
+
<${P3}-data-item value="${ExpressionSource.Constant}" label="constant value"></${P3}-data-item>
|
|
343
|
+
<${P3}-data-item value="${ExpressionSource.PropertyReference}" label="property reference"></${P3}-data-item>
|
|
344
|
+
<${P3}-data-item value="${ExpressionSource.Expression}" label="complex expression"></${P3}-data-item>
|
|
345
|
+
</${P3}-select>
|
|
346
|
+
</div>
|
|
347
|
+
|
|
348
|
+
<${P3}-panel class="${PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${ExpressionSource.PropertyReference}' }}">
|
|
349
|
+
<${P3}-element-picker value="{{ :host._sourceRef, twoway }}" selector="{{ :host.selector }}" filter="{{ :host.filter }}" labeler="{{ :host.labeler }}" class="display-block"></${P3}-element-picker>
|
|
350
|
+
</${P3}-panel>
|
|
351
|
+
<${P3}-panel class="${PCSS}-cell cols-hd-6" hide="{{ :host._source !== '${ExpressionSource.PropertyReference}' }}">
|
|
352
|
+
<${P3}-property-picker value="{{ :host._propRef, twoway }}" disabled="{{ !:host._sourceRef }}" target="{{ :host._sourceRef }}" on-change="::_editor.focus()" class="display-block"></${P3}-property-picker>
|
|
353
|
+
</${P3}-panel>
|
|
354
|
+
|
|
355
|
+
<${P3}-panel class="${PCSS}-cell">
|
|
356
|
+
<${P3}-textarea class="display-block" placeholder="{{ '{{ '+ (:host._source || '') +'... }}' }}" change-policy="${ScaffoldingComponents2.Scaffolding.ChangePolicy.Blur}"></${P3}-textarea>
|
|
357
|
+
</${P3}-panel>
|
|
358
|
+
</div>
|
|
359
|
+
</${P3}-collapse>
|
|
360
|
+
<div class="${PCSS}-fieldset">
|
|
361
|
+
<div class="fieldset-left">
|
|
362
|
+
<div class="${PCSS}-fieldgroup ${PCSS}-viewfinder">
|
|
363
|
+
<div class="text-truncate ${PCSS}-pad pad-x-1"><span class="${PCSS}-viewfinder text-tech">{{ :host.value || '...' }}</span></div>
|
|
364
|
+
<${P3}-panel class="fieldgroup-prepend">
|
|
365
|
+
<${P3}-button class="flat edit ${PCSS}-pad pad-left-1" on-click=":host._editing = !:host._editing" hide="{{ :host.readonly }}"></${P3}-button>
|
|
366
|
+
</${P3}-panel>
|
|
367
|
+
<${P3}-panel class="fieldgroup-append text-tech display-flex flex-middle flex-nowrap" hide="{{ $pacem.isNullOrEmpty(:host.value) }}">
|
|
368
|
+
<i class="${PCSS}-icon text-primary">keyboard_arrow_right</i>
|
|
369
|
+
<${P3}-text text="?" class="bg-primary ${PCSS}-pad pad-left-1 pad-right-1 ${PCSS}-margin margin-right-1 text-truncate" eval></${P3}-text>
|
|
370
|
+
</${P3}-panel>
|
|
371
|
+
</div>
|
|
372
|
+
</div>
|
|
373
|
+
</div>`
|
|
374
|
+
})
|
|
375
|
+
], PacemExpressionElement);
|
|
376
|
+
|
|
377
|
+
// packages/cms/dist/esm/widgets/types.js
|
|
378
|
+
import { CustomElement as CustomElement3, P as P4, PCSS as PCSS2, Defaults as Defaults3, Watch as Watch3, PropertyConverters as PropertyConverters3, ViewChild as ViewChild3, Utils as Utils4, CustomElementUtils as CustomElementUtils3, Components } from "@pacem/pacem-core";
|
|
379
|
+
import { Components as UIComponents } from "@pacem/pacem-ui";
|
|
380
|
+
var __decorate3 = function(decorators, target, key, desc) {
|
|
381
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
382
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
383
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
384
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
385
|
+
};
|
|
386
|
+
var UI = UIComponents.UI;
|
|
387
|
+
var DEFAULT_PERMISSION_METADATA = {
|
|
388
|
+
props: [
|
|
389
|
+
{
|
|
390
|
+
prop: "permissions",
|
|
391
|
+
// child form-fields
|
|
392
|
+
type: "array",
|
|
393
|
+
display: { name: "Permissions" },
|
|
394
|
+
props: {
|
|
395
|
+
display: { cssClass: [PCSS2 + "-cell", PCSS2 + "-grid", "grid-novgap", "grid-tiny-colgap", "grid-nospace"], name: "Permission" },
|
|
396
|
+
props: Array.prototype.concat.apply([
|
|
397
|
+
{
|
|
398
|
+
prop: "claimType",
|
|
399
|
+
type: "string",
|
|
400
|
+
display: { cssClass: [PCSS2 + "-cell", "cols-hd-4", "cols-lg-6", "field-stretch", "field-minimal"], name: "Claim type" },
|
|
401
|
+
validators: [{ type: "required", errorMessage: "!" }]
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
prop: "claimValue",
|
|
405
|
+
type: "string",
|
|
406
|
+
display: { cssClass: [PCSS2 + "-cell", "cols-hd-4", "cols-lg-6", "field-stretch", "field-minimal"], name: "Claim value" },
|
|
407
|
+
validators: [{ type: "required", errorMessage: "!" }]
|
|
408
|
+
}
|
|
409
|
+
], ["read", "update", "create", "delete"].map((p, j) => {
|
|
410
|
+
return {
|
|
411
|
+
prop: p,
|
|
412
|
+
type: "boolean",
|
|
413
|
+
display: { cssClass: [PCSS2 + "-cell", "cols-hd-1", "cols-3", "field-minimal", PCSS2 + "-pad pad-left-2"], name: p.charAt(0).toUpperCase() + p.substr(1) }
|
|
414
|
+
};
|
|
415
|
+
}))
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
]
|
|
419
|
+
};
|
|
420
|
+
var DEFAULT_METADATA = {
|
|
421
|
+
display: { name: "Widget", cssClass: [PCSS2 + "-grid", "grid-novgap", "grid-tiny-colgap", "grid-nospace"] },
|
|
422
|
+
props: [
|
|
423
|
+
{ prop: "tag", type: "string", display: { name: "Tag", cssClass: [PCSS2 + "-cell"] } }
|
|
424
|
+
]
|
|
425
|
+
};
|
|
426
|
+
function cellifyMetadata(p) {
|
|
427
|
+
p.display = p.display || { name: p.prop, cssClass: [] };
|
|
428
|
+
const css = p.display.cssClass = Utils4.isArray(p.display.cssClass) && p.display.cssClass || [];
|
|
429
|
+
css.push(PCSS2 + "-cell");
|
|
430
|
+
}
|
|
431
|
+
function gridifyMetadata(metadata) {
|
|
432
|
+
var props = metadata && metadata.props || [];
|
|
433
|
+
var display = metadata && metadata.display || { name: "Element" };
|
|
434
|
+
if (!Utils4.isNull(display)) {
|
|
435
|
+
const css = display.cssClass = display.cssClass || [];
|
|
436
|
+
Array.prototype.push.apply(css, DEFAULT_METADATA.display.cssClass);
|
|
437
|
+
}
|
|
438
|
+
props.forEach(cellifyMetadata);
|
|
439
|
+
return { display, props };
|
|
440
|
+
}
|
|
441
|
+
function buildWidgetMetadata(metadata) {
|
|
442
|
+
var display = Utils4.extend({}, DEFAULT_METADATA.display, metadata && metadata.display || {});
|
|
443
|
+
var props = Utils4.clone(DEFAULT_METADATA.props);
|
|
444
|
+
Array.prototype.push.apply(props, (metadata && metadata.props || []).filter((p) => {
|
|
445
|
+
if (p.prop === "tag") {
|
|
446
|
+
return false;
|
|
447
|
+
}
|
|
448
|
+
cellifyMetadata(p);
|
|
449
|
+
return true;
|
|
450
|
+
}));
|
|
451
|
+
return { display, props };
|
|
452
|
+
}
|
|
453
|
+
var WIDGET_CSS_CLASS = PCSS2 + "-widget";
|
|
454
|
+
var EXPRESSION_WIDGET_METADATA_EXTRA = {
|
|
455
|
+
selector: "." + WIDGET_CSS_CLASS,
|
|
456
|
+
labeler: (e) => {
|
|
457
|
+
if (!Utils4.isNullOrEmpty(e.tag)) {
|
|
458
|
+
return e.tag;
|
|
459
|
+
}
|
|
460
|
+
return (e.metadata && e.metadata.display && e.metadata.display.name || "") + "#" + e.id;
|
|
461
|
+
}
|
|
462
|
+
};
|
|
463
|
+
var Widget = class {
|
|
464
|
+
/**
|
|
465
|
+
* Utility method for widget gathering.
|
|
466
|
+
* @param predicate Predicate for filtering
|
|
467
|
+
*/
|
|
468
|
+
static findAll(predicate) {
|
|
469
|
+
return CustomElementUtils3.findAll("." + WIDGET_CSS_CLASS, (widget) => widget instanceof PacemWidgetElement && !Utils4.isNullOrEmpty(widget.id) && (Utils4.isNull(predicate) || predicate(widget)));
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
var PacemWidgetToolbarElement = class PacemWidgetToolbarElement2 extends Components.PacemElement {
|
|
473
|
+
/** Gets the toolbar's edit button. */
|
|
474
|
+
get editButton() {
|
|
475
|
+
return this._btnEdit;
|
|
476
|
+
}
|
|
477
|
+
/** Gets the toolbar's permimssions button. */
|
|
478
|
+
get permissionsButton() {
|
|
479
|
+
return this._btnPerms;
|
|
480
|
+
}
|
|
481
|
+
/** Gets the toolbar's remove button. */
|
|
482
|
+
get removeButton() {
|
|
483
|
+
return this._btnRemove;
|
|
484
|
+
}
|
|
485
|
+
_edit(evt) {
|
|
486
|
+
const form = this._proxy.dom.find((e) => "core" in e.attributes);
|
|
487
|
+
form.open(this.target, true);
|
|
488
|
+
form.metadata = this.target.metadata;
|
|
489
|
+
this._popoutJustInCase();
|
|
490
|
+
}
|
|
491
|
+
_editPermissions(evt) {
|
|
492
|
+
const form = this._proxy.dom.find((e) => "permissions" in e.attributes);
|
|
493
|
+
form.open(this.target);
|
|
494
|
+
form.metadata = this.target.permissionMetadata;
|
|
495
|
+
this._popoutJustInCase();
|
|
496
|
+
}
|
|
497
|
+
_popoutJustInCase() {
|
|
498
|
+
const balloon = CustomElementUtils3.findAncestorOfType(this, UI.PacemBalloonElement);
|
|
499
|
+
if (!Utils4.isNullOrEmpty(balloon)) {
|
|
500
|
+
balloon.popout();
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
__decorate3([
|
|
505
|
+
Watch3({ emit: false, converter: PropertyConverters3.Element })
|
|
506
|
+
], PacemWidgetToolbarElement.prototype, "target", void 0);
|
|
507
|
+
__decorate3([
|
|
508
|
+
ViewChild3(".buttons > div")
|
|
509
|
+
], PacemWidgetToolbarElement.prototype, "_toolbar", void 0);
|
|
510
|
+
__decorate3([
|
|
511
|
+
ViewChild3(P4 + "-button[edit]")
|
|
512
|
+
], PacemWidgetToolbarElement.prototype, "_btnEdit", void 0);
|
|
513
|
+
__decorate3([
|
|
514
|
+
ViewChild3(P4 + "-button[permissions]")
|
|
515
|
+
], PacemWidgetToolbarElement.prototype, "_btnPerms", void 0);
|
|
516
|
+
__decorate3([
|
|
517
|
+
ViewChild3(P4 + "-button[remove]")
|
|
518
|
+
], PacemWidgetToolbarElement.prototype, "_btnRemove", void 0);
|
|
519
|
+
__decorate3([
|
|
520
|
+
ViewChild3(P4 + "-shell-proxy")
|
|
521
|
+
], PacemWidgetToolbarElement.prototype, "_proxy", void 0);
|
|
522
|
+
PacemWidgetToolbarElement = __decorate3([
|
|
523
|
+
CustomElement3({
|
|
524
|
+
tagName: P4 + "-widget-toolbar",
|
|
525
|
+
shadow: Defaults3.USE_SHADOW_ROOT,
|
|
526
|
+
template: `<${P4}-span class="toolbar-text" content="{{ '<i class="${PCSS2}-icon">'+ (::target.metadata && ::target.metadata.display && ::target.metadata.display.icon || 'widgets') +'</i> '+ (::target.tag || (::target.metadata && ::target.metadata.display && ::target.metadata.display.name || ::target.localName) +'#'+ ::target.id) }}"></${P4}-span>
|
|
527
|
+
<div class="buttons ${PCSS2}-buttonset ${PCSS2}-pad ${PCSS2}-margin pad-0 margin-left-2">
|
|
528
|
+
<div class="buttonset-left">
|
|
529
|
+
<${P4}-button edit class="button edit" on-click=":host._edit($event)"></${P4}-button>
|
|
530
|
+
<${P4}-button permissions class="button" on-click=":host._editPermissions($event)" css-class="{{ {'button-success': ::target.permissions.length > 0} }}" icon-glyph="verified_user"></${P4}-button>
|
|
531
|
+
<${P4}-button remove class="button button-danger delete"></${P4}-button>
|
|
532
|
+
</div>
|
|
533
|
+
<div>
|
|
534
|
+
<${P4}-shell-proxy>
|
|
535
|
+
<${P4}-modal-form core></${P4}-modal-form>
|
|
536
|
+
<${P4}-modal-form permissions></${P4}-modal-form>
|
|
537
|
+
</${P4}-shell-proxy>`
|
|
538
|
+
})
|
|
539
|
+
], PacemWidgetToolbarElement);
|
|
540
|
+
var PacemWidgetElement = class extends Components.PacemElement {
|
|
541
|
+
constructor(metadata, role = "widget") {
|
|
542
|
+
super(role);
|
|
543
|
+
this.permissionMetadata = DEFAULT_PERMISSION_METADATA;
|
|
544
|
+
this.metadata = metadata;
|
|
545
|
+
}
|
|
546
|
+
connectedCallback() {
|
|
547
|
+
super.connectedCallback();
|
|
548
|
+
if (Utils4.isNullOrEmpty(this.id)) {
|
|
549
|
+
this.id = "wdg" + Utils4.uniqueCode();
|
|
550
|
+
}
|
|
551
|
+
Utils4.addClass(this, WIDGET_CSS_CLASS);
|
|
552
|
+
}
|
|
553
|
+
propertyChangedCallback(name, old, val, first) {
|
|
554
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
555
|
+
switch (name) {
|
|
556
|
+
case "editable":
|
|
557
|
+
if (!val) {
|
|
558
|
+
this._disposeBalloon();
|
|
559
|
+
} else if (this.isReady) {
|
|
560
|
+
this._ensureBalloon();
|
|
561
|
+
}
|
|
562
|
+
break;
|
|
563
|
+
case "editing":
|
|
564
|
+
if (!Utils4.isNull(this._balloon)) {
|
|
565
|
+
this._balloon.disabled = !val;
|
|
566
|
+
}
|
|
567
|
+
(val ? Utils4.addClass : Utils4.removeClass).apply(this, [this, "widget-" + name]);
|
|
568
|
+
break;
|
|
569
|
+
case "metadata":
|
|
570
|
+
this._assignIcon(val);
|
|
571
|
+
break;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
viewActivatedCallback() {
|
|
575
|
+
super.viewActivatedCallback();
|
|
576
|
+
this._assignIcon();
|
|
577
|
+
this._ensureBalloon();
|
|
578
|
+
}
|
|
579
|
+
disconnectedCallback() {
|
|
580
|
+
super.disconnectedCallback();
|
|
581
|
+
}
|
|
582
|
+
_assignIcon(val = this.metadata) {
|
|
583
|
+
this.dataset["icon"] = val && val.display && val.display.icon || "widgets";
|
|
584
|
+
}
|
|
585
|
+
_ensureBalloon() {
|
|
586
|
+
if (Utils4.isNull(this._balloon)) {
|
|
587
|
+
const balloon = this._balloon = document.createElement(P4 + "-balloon");
|
|
588
|
+
balloon.target = this;
|
|
589
|
+
balloon.disabled = !this.editing;
|
|
590
|
+
balloon.options = {
|
|
591
|
+
behavior: UI.BalloonBehavior.Menu,
|
|
592
|
+
trigger: UI.BalloonTrigger.Hover
|
|
593
|
+
};
|
|
594
|
+
balloon.innerHTML = `<${P4}-widget-toolbar target="{{ #${this.id} }}"><${P4}-widget-toolbar>`;
|
|
595
|
+
CustomElementUtils3.findAncestorShell(this).appendChild(balloon);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
_disposeBalloon() {
|
|
599
|
+
if (!Utils4.isNull(this._balloon)) {
|
|
600
|
+
this._balloon.remove();
|
|
601
|
+
this._balloon = null;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
};
|
|
605
|
+
__decorate3([
|
|
606
|
+
Watch3({ emit: false, converter: PropertyConverters3.Boolean })
|
|
607
|
+
], PacemWidgetElement.prototype, "editing", void 0);
|
|
608
|
+
__decorate3([
|
|
609
|
+
Watch3({ emit: false, converter: PropertyConverters3.Boolean })
|
|
610
|
+
], PacemWidgetElement.prototype, "editable", void 0);
|
|
611
|
+
__decorate3([
|
|
612
|
+
Watch3({ emit: true, reflectBack: true, converter: PropertyConverters3.String })
|
|
613
|
+
], PacemWidgetElement.prototype, "tag", void 0);
|
|
614
|
+
__decorate3([
|
|
615
|
+
Watch3({ emit: false, reflectBack: true, converter: PropertyConverters3.Json })
|
|
616
|
+
], PacemWidgetElement.prototype, "permissions", void 0);
|
|
617
|
+
__decorate3([
|
|
618
|
+
Watch3({ emit: false, converter: PropertyConverters3.Json })
|
|
619
|
+
], PacemWidgetElement.prototype, "metadata", void 0);
|
|
620
|
+
__decorate3([
|
|
621
|
+
Watch3({ emit: false, converter: PropertyConverters3.Json })
|
|
622
|
+
], PacemWidgetElement.prototype, "permissionMetadata", void 0);
|
|
623
|
+
|
|
624
|
+
// packages/cms/dist/esm/widgets/helpers/types.js
|
|
625
|
+
import { Watch as Watch6, PropertyConverters as PropertyConverters6, Utils as Utils6 } from "@pacem/pacem-core";
|
|
626
|
+
|
|
627
|
+
// packages/cms/dist/esm/widgets/helpers/data.js
|
|
628
|
+
import { CustomElement as CustomElement4, P as P5, PCSS as PCSS3, Watch as Watch4, PropertyConverters as PropertyConverters4 } from "@pacem/pacem-core";
|
|
629
|
+
var __decorate4 = function(decorators, target, key, desc) {
|
|
630
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
631
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
632
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
633
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
634
|
+
};
|
|
635
|
+
var DATA_METADATA = {
|
|
636
|
+
display: { icon: "storage", name: "Data", description: "Data object widget." },
|
|
637
|
+
props: [
|
|
638
|
+
{
|
|
639
|
+
prop: "model",
|
|
640
|
+
type: EXPRESSION_METADATA_TYPE,
|
|
641
|
+
display: {
|
|
642
|
+
name: "Model"
|
|
643
|
+
},
|
|
644
|
+
extra: {
|
|
645
|
+
selector: "." + PCSS3 + "-widget"
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
]
|
|
649
|
+
};
|
|
650
|
+
var PacemWidgetDataElement = class PacemWidgetDataElement2 extends PacemWidgetElement {
|
|
651
|
+
constructor() {
|
|
652
|
+
super(buildWidgetMetadata(DATA_METADATA));
|
|
653
|
+
}
|
|
654
|
+
};
|
|
655
|
+
__decorate4([
|
|
656
|
+
Watch4({ reflectBack: true, converter: PropertyConverters4.Json })
|
|
657
|
+
], PacemWidgetDataElement.prototype, "model", void 0);
|
|
658
|
+
PacemWidgetDataElement = __decorate4([
|
|
659
|
+
CustomElement4({
|
|
660
|
+
tagName: P5 + "-widget-data"
|
|
661
|
+
})
|
|
662
|
+
], PacemWidgetDataElement);
|
|
663
|
+
|
|
664
|
+
// packages/cms/dist/esm/widgets/helpers/fetcher.js
|
|
665
|
+
import { CustomElement as CustomElement5, P as P6, Defaults as Defaults4, Watch as Watch5, PropertyConverters as PropertyConverters5, ViewChild as ViewChild4, Utils as Utils5, CustomElementUtils as CustomElementUtils4, PacemEventTarget, Net } from "@pacem/pacem-core";
|
|
666
|
+
var __decorate5 = function(decorators, target, key, desc) {
|
|
667
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
668
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
669
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
670
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
671
|
+
};
|
|
672
|
+
var FETCH_PARAMETER_METADATA = {
|
|
673
|
+
props: [
|
|
674
|
+
{ prop: "name", type: "string", isReadOnly: true, display: { name: "Name", cssClass: ["cols-md-4", "cols-lg-3", "cols-hd-2"] } },
|
|
675
|
+
{ prop: "value", type: EXPRESSION_METADATA_TYPE, display: { name: "Value", cssClass: ["cols-md-8", "cols-lg-9", "cols-hd-10"] } }
|
|
676
|
+
]
|
|
677
|
+
};
|
|
678
|
+
var FETCH_METADATA = {
|
|
679
|
+
display: {
|
|
680
|
+
icon: "wifi",
|
|
681
|
+
name: "Api Fetcher",
|
|
682
|
+
description: "Fetching widget that retrieves data from a REST endpoint."
|
|
683
|
+
},
|
|
684
|
+
props: [
|
|
685
|
+
{
|
|
686
|
+
prop: "manifest",
|
|
687
|
+
type: EXPRESSION_METADATA_TYPE,
|
|
688
|
+
isComplexType: true,
|
|
689
|
+
display: {
|
|
690
|
+
name: "Api Manifest"
|
|
691
|
+
},
|
|
692
|
+
extra: {
|
|
693
|
+
selector: P6 + "-widget-apimanifest"
|
|
694
|
+
},
|
|
695
|
+
validators: [{ type: "required", errorMessage: "Api Manifest is a required field." }]
|
|
696
|
+
},
|
|
697
|
+
{
|
|
698
|
+
prop: "endpoint",
|
|
699
|
+
type: "object",
|
|
700
|
+
isComplexType: true,
|
|
701
|
+
display: {
|
|
702
|
+
name: "Endpoint",
|
|
703
|
+
ui: "oneToMany"
|
|
704
|
+
},
|
|
705
|
+
validators: [{ type: "required", errorMessage: "Api Manifest is a required field." }],
|
|
706
|
+
extra: {
|
|
707
|
+
source: (manifest) => manifest.endpoints.map((e) => Utils5.extend(e, { "fullPath": `[${e.method.toUpperCase()}] ${e.path}` })).sort(),
|
|
708
|
+
textProperty: "fullPath",
|
|
709
|
+
valueProperty: "fullPath",
|
|
710
|
+
dependsOn: [{ prop: "manifest", hide: true }]
|
|
711
|
+
}
|
|
712
|
+
},
|
|
713
|
+
{
|
|
714
|
+
prop: "parameters",
|
|
715
|
+
type: "array",
|
|
716
|
+
display: {
|
|
717
|
+
name: "Parameters"
|
|
718
|
+
},
|
|
719
|
+
props: gridifyMetadata(FETCH_PARAMETER_METADATA),
|
|
720
|
+
extra: {
|
|
721
|
+
lockItems: true,
|
|
722
|
+
dependsOn: [{ prop: "endpoint", hide: true }]
|
|
723
|
+
}
|
|
724
|
+
},
|
|
725
|
+
ACCESS_TOKEN_METADATA
|
|
726
|
+
]
|
|
727
|
+
};
|
|
728
|
+
var PARAMETER_TAGNAME = P6 + "-widget-fetch-parameter";
|
|
729
|
+
var PacemWidgetFetchParameterElement = class PacemWidgetFetchParameterElement2 extends PacemEventTarget {
|
|
730
|
+
propertyChangedCallback(name, old, val, first) {
|
|
731
|
+
super.propertyChangedCallback(name, old, val.first);
|
|
732
|
+
if (name === "value" && !Utils5.isNull(this._fetcher)) {
|
|
733
|
+
this._fetcher.fetch();
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
viewActivatedCallback() {
|
|
737
|
+
super.viewActivatedCallback();
|
|
738
|
+
const fetcher = this._fetcher = CustomElementUtils4.findAncestorOfType(this, PacemWidgetFetchElement);
|
|
739
|
+
if (!Utils5.isNull(this._fetcher) && !Utils5.isNull(this.value)) {
|
|
740
|
+
this._fetcher.fetch();
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
};
|
|
744
|
+
__decorate5([
|
|
745
|
+
Watch5({ reflectBack: true, converter: PropertyConverters5.Boolean })
|
|
746
|
+
], PacemWidgetFetchParameterElement.prototype, "required", void 0);
|
|
747
|
+
__decorate5([
|
|
748
|
+
Watch5({ reflectBack: true, converter: PropertyConverters5.String })
|
|
749
|
+
], PacemWidgetFetchParameterElement.prototype, "name", void 0);
|
|
750
|
+
__decorate5([
|
|
751
|
+
Watch5({ reflectBack: true, converter: PropertyConverters5.String })
|
|
752
|
+
], PacemWidgetFetchParameterElement.prototype, "value", void 0);
|
|
753
|
+
PacemWidgetFetchParameterElement = __decorate5([
|
|
754
|
+
CustomElement5({ tagName: PARAMETER_TAGNAME })
|
|
755
|
+
], PacemWidgetFetchParameterElement);
|
|
756
|
+
var PacemWidgetFetchElement = class PacemWidgetFetchElement2 extends PacemBearerWidgetElement {
|
|
757
|
+
constructor() {
|
|
758
|
+
super(buildWidgetMetadata(FETCH_METADATA));
|
|
759
|
+
this._onerror = (e) => {
|
|
760
|
+
this.failure = !(this.success = false);
|
|
761
|
+
};
|
|
762
|
+
this._onsuccess = (e) => {
|
|
763
|
+
this.failure = !(this.success = true);
|
|
764
|
+
};
|
|
765
|
+
this._onresult = (e) => {
|
|
766
|
+
this.result = e.detail;
|
|
767
|
+
};
|
|
768
|
+
}
|
|
769
|
+
get _parameters() {
|
|
770
|
+
return Array.from(this._itemsElement.children).filter((e) => e.localName === PARAMETER_TAGNAME);
|
|
771
|
+
}
|
|
772
|
+
fetch() {
|
|
773
|
+
const fetcher = this._fetcher, parameters = this._parameters || [], endpoint = this.endpoint;
|
|
774
|
+
if (!Utils5.isNull(endpoint)) {
|
|
775
|
+
for (let param of endpoint.parameters) {
|
|
776
|
+
if (param.required && Utils5.isNull(parameters.find((p) => p.name === param.name))) {
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
const params = {};
|
|
782
|
+
for (let parameter of parameters) {
|
|
783
|
+
if (!Utils5.isNullOrEmpty(parameter.value)) {
|
|
784
|
+
params[parameter.name] = parameter.value;
|
|
785
|
+
} else if (parameter.required) {
|
|
786
|
+
return;
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
fetcher.url = this.url;
|
|
790
|
+
fetcher.method = this.method;
|
|
791
|
+
fetcher.credentials = this.fetchCredentials;
|
|
792
|
+
fetcher.headers = this.fetchHeaders;
|
|
793
|
+
fetcher.parameters = params;
|
|
794
|
+
return fetcher.fetch();
|
|
795
|
+
}
|
|
796
|
+
viewActivatedCallback() {
|
|
797
|
+
super.viewActivatedCallback();
|
|
798
|
+
this.fetch();
|
|
799
|
+
}
|
|
800
|
+
propertyChangedCallback(name, old, val, first) {
|
|
801
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
802
|
+
if (name === "endpoint" && !Utils5.isNullOrEmpty(val)) {
|
|
803
|
+
this._mergeEndpoint(val);
|
|
804
|
+
} else
|
|
805
|
+
switch (name) {
|
|
806
|
+
case "parameters":
|
|
807
|
+
case "fetchHeaders":
|
|
808
|
+
case "fetchCredentials":
|
|
809
|
+
case "url":
|
|
810
|
+
case "method":
|
|
811
|
+
this.fetch();
|
|
812
|
+
break;
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
_mergeEndpoint(endpoint = this.endpoint) {
|
|
816
|
+
this.url = this.manifest.baseUrl + endpoint.path;
|
|
817
|
+
this.method = endpoint.method;
|
|
818
|
+
this.fields = endpoint.response.fields;
|
|
819
|
+
const itemsElement = this._itemsElement, parameters = this._parameters;
|
|
820
|
+
for (let j = parameters.length - 1; j >= 0; j--) {
|
|
821
|
+
let item = parameters[j];
|
|
822
|
+
let matching = endpoint.parameters.find((p) => p.name === item.name);
|
|
823
|
+
if (Utils5.isNull(matching)) {
|
|
824
|
+
item.remove();
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
for (let param of endpoint.parameters) {
|
|
828
|
+
let existing = parameters.find((p) => p.name === param.name);
|
|
829
|
+
if (Utils5.isNull(existing)) {
|
|
830
|
+
let item = existing = document.createElement(PARAMETER_TAGNAME);
|
|
831
|
+
item.name = param.name;
|
|
832
|
+
itemsElement.appendChild(item);
|
|
833
|
+
}
|
|
834
|
+
existing.required = param.required;
|
|
835
|
+
}
|
|
836
|
+
this.parameters = parameters;
|
|
837
|
+
}
|
|
838
|
+
};
|
|
839
|
+
__decorate5([
|
|
840
|
+
Watch5({ reflectBack: true, emit: true, converter: PropertyConverters5.Json })
|
|
841
|
+
], PacemWidgetFetchElement.prototype, "manifest", void 0);
|
|
842
|
+
__decorate5([
|
|
843
|
+
Watch5({ reflectBack: true, emit: true, converter: PropertyConverters5.Json })
|
|
844
|
+
], PacemWidgetFetchElement.prototype, "endpoint", void 0);
|
|
845
|
+
__decorate5([
|
|
846
|
+
Watch5({ reflectBack: true, emit: false, converter: PropertyConverters5.String })
|
|
847
|
+
], PacemWidgetFetchElement.prototype, "url", void 0);
|
|
848
|
+
__decorate5([
|
|
849
|
+
Watch5({ reflectBack: true, emit: false, converter: PropertyConverters5.String })
|
|
850
|
+
], PacemWidgetFetchElement.prototype, "method", void 0);
|
|
851
|
+
__decorate5([
|
|
852
|
+
Watch5({ reflectBack: true, emit: false, converter: PropertyConverters5.Json })
|
|
853
|
+
], PacemWidgetFetchElement.prototype, "fields", void 0);
|
|
854
|
+
__decorate5([
|
|
855
|
+
Watch5(
|
|
856
|
+
/* just for editing sake */
|
|
857
|
+
)
|
|
858
|
+
], PacemWidgetFetchElement.prototype, "parameters", void 0);
|
|
859
|
+
__decorate5([
|
|
860
|
+
Watch5(
|
|
861
|
+
/* can only be databound or assigned at runtime */
|
|
862
|
+
)
|
|
863
|
+
], PacemWidgetFetchElement.prototype, "result", void 0);
|
|
864
|
+
__decorate5([
|
|
865
|
+
Watch5({ converter: PropertyConverters5.Boolean })
|
|
866
|
+
], PacemWidgetFetchElement.prototype, "fetching", void 0);
|
|
867
|
+
__decorate5([
|
|
868
|
+
Watch5({ converter: PropertyConverters5.Boolean })
|
|
869
|
+
], PacemWidgetFetchElement.prototype, "success", void 0);
|
|
870
|
+
__decorate5([
|
|
871
|
+
Watch5({ converter: PropertyConverters5.Boolean })
|
|
872
|
+
], PacemWidgetFetchElement.prototype, "failure", void 0);
|
|
873
|
+
__decorate5([
|
|
874
|
+
ViewChild4(P6 + "-fetch")
|
|
875
|
+
], PacemWidgetFetchElement.prototype, "_fetcher", void 0);
|
|
876
|
+
__decorate5([
|
|
877
|
+
ViewChild4("div[hidden]")
|
|
878
|
+
], PacemWidgetFetchElement.prototype, "_itemsElement", void 0);
|
|
879
|
+
PacemWidgetFetchElement = __decorate5([
|
|
880
|
+
CustomElement5({
|
|
881
|
+
tagName: P6 + "-widget-fetch",
|
|
882
|
+
shadow: Defaults4.USE_SHADOW_ROOT,
|
|
883
|
+
template: `<${P6}-fetch autofetch="false" fetching="{{ :host.fetching, twoway }}" debounce="100"
|
|
884
|
+
on-${Net.FetchResultEventName}=":host._onresult($event)" on-${Net.FetchErrorEventName}=":host._onerror($event)" on-${Net.FetchSuccessEventName}=":host._onsuccess($event)"></${P6}-fetch><div hidden><${P6}-content></${P6}-content></div>`
|
|
885
|
+
})
|
|
886
|
+
], PacemWidgetFetchElement);
|
|
887
|
+
|
|
888
|
+
// packages/cms/dist/esm/widgets/helpers/types.js
|
|
889
|
+
var __decorate6 = function(decorators, target, key, desc) {
|
|
890
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
891
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
892
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
893
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
894
|
+
};
|
|
895
|
+
var FETCH_CREDENTIALS_METADATA = {
|
|
896
|
+
prop: "fetchCredentials",
|
|
897
|
+
type: "string",
|
|
898
|
+
dataType: "enumeration",
|
|
899
|
+
display: { name: "Fetch Credentials" },
|
|
900
|
+
extra: {
|
|
901
|
+
enum: ["same-origin", "omit", "include"]
|
|
902
|
+
}
|
|
903
|
+
};
|
|
904
|
+
var ACCESS_TOKEN_METADATA = {
|
|
905
|
+
prop: "accessToken",
|
|
906
|
+
type: EXPRESSION_METADATA_TYPE,
|
|
907
|
+
display: { name: "Access Token" },
|
|
908
|
+
extra: Utils6.extend({}, EXPRESSION_WIDGET_METADATA_EXTRA, { filter: (e) => e instanceof PacemWidgetDataElement || e instanceof PacemWidgetFetchElement })
|
|
909
|
+
};
|
|
910
|
+
var PacemBearerWidgetElement = class extends PacemWidgetElement {
|
|
911
|
+
constructor() {
|
|
912
|
+
super(...arguments);
|
|
913
|
+
this.fetchCredentials = "same-origin";
|
|
914
|
+
}
|
|
915
|
+
propertyChangedCallback(name, old, val, first) {
|
|
916
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
917
|
+
if (name === "accessToken") {
|
|
918
|
+
if (!Utils6.isNullOrEmpty(val)) {
|
|
919
|
+
this.fetchHeaders = { "Authorization": "Bearer " + val };
|
|
920
|
+
} else {
|
|
921
|
+
this.fetchHeaders = {};
|
|
922
|
+
}
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
};
|
|
926
|
+
__decorate6([
|
|
927
|
+
Watch6({ emit: false, reflectBack: true, converter: PropertyConverters6.String })
|
|
928
|
+
], PacemBearerWidgetElement.prototype, "fetchCredentials", void 0);
|
|
929
|
+
__decorate6([
|
|
930
|
+
Watch6({ emit: false, converter: PropertyConverters6.Json })
|
|
931
|
+
], PacemBearerWidgetElement.prototype, "fetchHeaders", void 0);
|
|
932
|
+
__decorate6([
|
|
933
|
+
Watch6({ emit: false, reflectBack: true, converter: PropertyConverters6.String })
|
|
934
|
+
], PacemBearerWidgetElement.prototype, "accessToken", void 0);
|
|
935
|
+
__decorate6([
|
|
936
|
+
Watch6({ converter: PropertyConverters6.Boolean })
|
|
937
|
+
], PacemBearerWidgetElement.prototype, "fetching", void 0);
|
|
938
|
+
|
|
939
|
+
// packages/cms/dist/esm/widgets/helpers/translator.js
|
|
940
|
+
import { CustomElement as CustomElement6, P as P7 } from "@pacem/pacem-core";
|
|
941
|
+
var __decorate7 = function(decorators, target, key, desc) {
|
|
942
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
943
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
944
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
945
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
946
|
+
};
|
|
947
|
+
var PacemWidgetTranslatorElement = class PacemWidgetTranslatorElement2 extends PacemWidgetElement {
|
|
948
|
+
};
|
|
949
|
+
PacemWidgetTranslatorElement = __decorate7([
|
|
950
|
+
CustomElement6({
|
|
951
|
+
tagName: P7 + "-widget-translator"
|
|
952
|
+
})
|
|
953
|
+
], PacemWidgetTranslatorElement);
|
|
954
|
+
|
|
955
|
+
// packages/cms/dist/esm/widgets/helpers/clock.js
|
|
956
|
+
import { CustomElement as CustomElement7, P as P8, PCSS as PCSS4, Watch as Watch7, PropertyConverters as PropertyConverters7 } from "@pacem/pacem-core";
|
|
957
|
+
var __decorate8 = function(decorators, target, key, desc) {
|
|
958
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
959
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
960
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
961
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
962
|
+
};
|
|
963
|
+
var DATA_METADATA2 = {
|
|
964
|
+
display: { icon: "timer", name: "Clock", description: "Timer widget." },
|
|
965
|
+
props: [
|
|
966
|
+
{
|
|
967
|
+
prop: "interval",
|
|
968
|
+
type: EXPRESSION_METADATA_TYPE,
|
|
969
|
+
display: {
|
|
970
|
+
name: "Interval (msec)"
|
|
971
|
+
},
|
|
972
|
+
extra: {
|
|
973
|
+
selector: "." + PCSS4 + "-widget",
|
|
974
|
+
step: 1e3
|
|
975
|
+
},
|
|
976
|
+
validators: [{
|
|
977
|
+
type: "range",
|
|
978
|
+
errorMessage: "Negative numbers not allowed",
|
|
979
|
+
params: { min: 0 }
|
|
980
|
+
}]
|
|
981
|
+
}
|
|
982
|
+
]
|
|
983
|
+
};
|
|
984
|
+
var PacemWidgetClockElement = class PacemWidgetClockElement2 extends PacemWidgetElement {
|
|
985
|
+
constructor() {
|
|
986
|
+
super(buildWidgetMetadata(DATA_METADATA2));
|
|
987
|
+
this.interval = 0;
|
|
988
|
+
}
|
|
989
|
+
};
|
|
990
|
+
__decorate8([
|
|
991
|
+
Watch7({ reflectBack: true, converter: PropertyConverters7.Number })
|
|
992
|
+
], PacemWidgetClockElement.prototype, "interval", void 0);
|
|
993
|
+
__decorate8([
|
|
994
|
+
Watch7({ converter: PropertyConverters7.Number })
|
|
995
|
+
], PacemWidgetClockElement.prototype, "time", void 0);
|
|
996
|
+
PacemWidgetClockElement = __decorate8([
|
|
997
|
+
CustomElement7({
|
|
998
|
+
tagName: P8 + "-widget-clock",
|
|
999
|
+
template: `<${P8}-timer interval="{{ :host.interval }}" on-tick="{{ :host.time = Date.now() }}"></${P8}-timer>`
|
|
1000
|
+
})
|
|
1001
|
+
], PacemWidgetClockElement);
|
|
1002
|
+
|
|
1003
|
+
// packages/cms/dist/esm/widgets/helpers/apimanifest.js
|
|
1004
|
+
import { CustomElement as CustomElement8, P as P9, Watch as Watch8, PropertyConverters as PropertyConverters8, Utils as Utils7, Storage } from "@pacem/pacem-core";
|
|
1005
|
+
|
|
1006
|
+
// packages/cms/dist/esm/openapi/swagger-cms.js
|
|
1007
|
+
var swagger_cms_exports = {};
|
|
1008
|
+
__export(swagger_cms_exports, {
|
|
1009
|
+
SwaggerCmsParser: () => SwaggerCmsParser
|
|
1010
|
+
});
|
|
1011
|
+
import { Scaffolding } from "@pacem/pacem-scaffolding";
|
|
1012
|
+
var BAG = "pacem:metadatabag";
|
|
1013
|
+
var SwaggerCmsParser = class {
|
|
1014
|
+
constructor(_openApi = new Scaffolding.OpenApi.OpenApiParser()) {
|
|
1015
|
+
this._openApi = _openApi;
|
|
1016
|
+
this._cachedMetadataUrls = [];
|
|
1017
|
+
}
|
|
1018
|
+
async load(url, headers) {
|
|
1019
|
+
let api = await this._openApi.load(url, headers);
|
|
1020
|
+
if (api != null) {
|
|
1021
|
+
api[BAG] = {};
|
|
1022
|
+
for (let endpoint of api.endpoints) {
|
|
1023
|
+
await this._enrichSchemas(api, endpoint, headers);
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
return api;
|
|
1027
|
+
}
|
|
1028
|
+
async _enrichSchemas(api, endpoint, headers) {
|
|
1029
|
+
const response = endpoint.response;
|
|
1030
|
+
if (response && response.meta) {
|
|
1031
|
+
response.fields = await this._fetchMetadata(api, { name: response.fullType, schema: response.meta }, headers);
|
|
1032
|
+
}
|
|
1033
|
+
const parameters = endpoint.parameters;
|
|
1034
|
+
for (let parameter of parameters || []) {
|
|
1035
|
+
if (parameter.meta && parameter.fullType) {
|
|
1036
|
+
let fields = await this._fetchMetadata(api, { name: parameter.fullType, schema: parameter.meta }, headers);
|
|
1037
|
+
parameter.fields = fields;
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
}
|
|
1041
|
+
clearCache() {
|
|
1042
|
+
const cache = this.cache, keys = this._cachedMetadataUrls;
|
|
1043
|
+
if (cache) {
|
|
1044
|
+
for (let key of keys) {
|
|
1045
|
+
cache.removeProperty(key);
|
|
1046
|
+
}
|
|
1047
|
+
keys.splice(0);
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1050
|
+
/**
|
|
1051
|
+
*
|
|
1052
|
+
* @param def1
|
|
1053
|
+
* @param headers HTTP headers for API fetching
|
|
1054
|
+
*/
|
|
1055
|
+
async _fetchMetadata(api, def0, headers) {
|
|
1056
|
+
let _fetch = async (def1) => {
|
|
1057
|
+
let cols = [];
|
|
1058
|
+
if (def1 && def1.name) {
|
|
1059
|
+
if (api[BAG][def1.name]) {
|
|
1060
|
+
return api[BAG][def1.name];
|
|
1061
|
+
}
|
|
1062
|
+
api[BAG][def1.name] = cols;
|
|
1063
|
+
let meta = { props: [] }, metadataUrl;
|
|
1064
|
+
if (/^https?:\/\//.test(def1.name)) {
|
|
1065
|
+
metadataUrl = def1.name;
|
|
1066
|
+
} else {
|
|
1067
|
+
console.warn(`Swagger entity definition keys must appear in form of absolute url. Their response to a GET request needs to be the entity metadata itself.
|
|
1068
|
+
No other options are currently supported.`);
|
|
1069
|
+
return;
|
|
1070
|
+
}
|
|
1071
|
+
if (metadataUrl) {
|
|
1072
|
+
let retrieveFn = async () => {
|
|
1073
|
+
let response = await fetch(metadataUrl, { credentials: "omit", mode: "cors", headers });
|
|
1074
|
+
if (response.ok) {
|
|
1075
|
+
return await response.json();
|
|
1076
|
+
}
|
|
1077
|
+
};
|
|
1078
|
+
if (this.cache) {
|
|
1079
|
+
meta = this.cache.getPropertyValue(metadataUrl);
|
|
1080
|
+
if (!meta) {
|
|
1081
|
+
meta = await retrieveFn();
|
|
1082
|
+
this._cachedMetadataUrls.push(metadataUrl);
|
|
1083
|
+
this.cache.setPropertyValue(
|
|
1084
|
+
metadataUrl,
|
|
1085
|
+
meta,
|
|
1086
|
+
/* persist in session not on location */
|
|
1087
|
+
false
|
|
1088
|
+
);
|
|
1089
|
+
}
|
|
1090
|
+
} else {
|
|
1091
|
+
meta = await retrieveFn();
|
|
1092
|
+
}
|
|
1093
|
+
}
|
|
1094
|
+
let schema = def1.schema;
|
|
1095
|
+
for (let col in schema.properties) {
|
|
1096
|
+
let column = schema.properties[col], field = meta && meta.props.find((p) => p.prop === col);
|
|
1097
|
+
let datafield = Object.assign({
|
|
1098
|
+
prop: col,
|
|
1099
|
+
type: column.type || "text",
|
|
1100
|
+
props: void 0
|
|
1101
|
+
}, field || /* if there's no match, then read-only */
|
|
1102
|
+
{ isReadOnly: true });
|
|
1103
|
+
if (field) {
|
|
1104
|
+
let $ref = column.items && column.items.$ref || column.$ref;
|
|
1105
|
+
if ($ref) {
|
|
1106
|
+
let ref = Scaffolding.OpenApi.getOpenApiDefinition(api, $ref), key = ref.name;
|
|
1107
|
+
if (api[BAG][key]) {
|
|
1108
|
+
datafield.props = api[BAG][key];
|
|
1109
|
+
} else {
|
|
1110
|
+
datafield.props = await _fetch(ref);
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
1114
|
+
cols.push(datafield);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
return cols;
|
|
1118
|
+
};
|
|
1119
|
+
return await _fetch(def0);
|
|
1120
|
+
}
|
|
1121
|
+
};
|
|
1122
|
+
|
|
1123
|
+
// packages/cms/dist/esm/widgets/helpers/apimanifest.js
|
|
1124
|
+
var __decorate9 = function(decorators, target, key, desc) {
|
|
1125
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1126
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1127
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1128
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1129
|
+
};
|
|
1130
|
+
var APIMANIFEST_METADATA = {
|
|
1131
|
+
display: { icon: "cloud_circle", name: "Api Manifest", description: "OpenApi parser for WebApi scaffolding." },
|
|
1132
|
+
props: [
|
|
1133
|
+
{
|
|
1134
|
+
prop: "url",
|
|
1135
|
+
type: "text",
|
|
1136
|
+
display: {
|
|
1137
|
+
name: "Url",
|
|
1138
|
+
description: "Insert the url of the OpenApi json configuration.",
|
|
1139
|
+
cssClass: ["cols-lg-8"],
|
|
1140
|
+
watermark: "https://domain.com/swagger/v1/swagger.json"
|
|
1141
|
+
},
|
|
1142
|
+
extra: { tooltip: true },
|
|
1143
|
+
validators: [{
|
|
1144
|
+
type: "required",
|
|
1145
|
+
errorMessage: "Url field is required."
|
|
1146
|
+
}]
|
|
1147
|
+
},
|
|
1148
|
+
{
|
|
1149
|
+
prop: "usecache",
|
|
1150
|
+
type: "boolean",
|
|
1151
|
+
display: {
|
|
1152
|
+
name: "Cache results",
|
|
1153
|
+
description: "Whether to cache the manifest per-url.",
|
|
1154
|
+
cssClass: ["cols-lg-4"],
|
|
1155
|
+
ui: "switcher"
|
|
1156
|
+
},
|
|
1157
|
+
extra: { tooltip: true }
|
|
1158
|
+
},
|
|
1159
|
+
ACCESS_TOKEN_METADATA
|
|
1160
|
+
]
|
|
1161
|
+
};
|
|
1162
|
+
var PacemWidgetApiManifestElement = class PacemWidgetApiManifestElement2 extends PacemBearerWidgetElement {
|
|
1163
|
+
constructor(_openapi = new SwaggerCmsParser(), _cache = new Storage()) {
|
|
1164
|
+
super(buildWidgetMetadata(APIMANIFEST_METADATA));
|
|
1165
|
+
this._openapi = _openapi;
|
|
1166
|
+
this._cache = _cache;
|
|
1167
|
+
}
|
|
1168
|
+
propertyChangedCallback(name, old, val, first) {
|
|
1169
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
1170
|
+
switch (name) {
|
|
1171
|
+
case "url":
|
|
1172
|
+
case "editing":
|
|
1173
|
+
case "editable":
|
|
1174
|
+
this._scaffold();
|
|
1175
|
+
break;
|
|
1176
|
+
case "usecache":
|
|
1177
|
+
this._openapi.cache = val ? this._cache : null;
|
|
1178
|
+
break;
|
|
1179
|
+
}
|
|
1180
|
+
}
|
|
1181
|
+
viewActivatedCallback() {
|
|
1182
|
+
super.viewActivatedCallback();
|
|
1183
|
+
if (this.usecache) {
|
|
1184
|
+
this._openapi.cache = this._cache;
|
|
1185
|
+
}
|
|
1186
|
+
this._scaffold();
|
|
1187
|
+
}
|
|
1188
|
+
_scaffold() {
|
|
1189
|
+
if (this.editing && this.editable && !Utils7.isNullOrEmpty(this.url)) {
|
|
1190
|
+
this.fetching = true;
|
|
1191
|
+
this._openapi.load(this.url).then((s) => {
|
|
1192
|
+
this.manifest = s;
|
|
1193
|
+
this.fetching = false;
|
|
1194
|
+
}, (_) => {
|
|
1195
|
+
this.fetching = false;
|
|
1196
|
+
});
|
|
1197
|
+
}
|
|
1198
|
+
}
|
|
1199
|
+
};
|
|
1200
|
+
__decorate9([
|
|
1201
|
+
Watch8({ emit: false, reflectBack: true, converter: PropertyConverters8.String })
|
|
1202
|
+
], PacemWidgetApiManifestElement.prototype, "url", void 0);
|
|
1203
|
+
__decorate9([
|
|
1204
|
+
Watch8({ emit: false, reflectBack: true, converter: PropertyConverters8.Boolean })
|
|
1205
|
+
], PacemWidgetApiManifestElement.prototype, "usecache", void 0);
|
|
1206
|
+
__decorate9([
|
|
1207
|
+
Watch8({ converter: PropertyConverters8.Json })
|
|
1208
|
+
], PacemWidgetApiManifestElement.prototype, "manifest", void 0);
|
|
1209
|
+
PacemWidgetApiManifestElement = __decorate9([
|
|
1210
|
+
CustomElement8({ tagName: P9 + "-widget-apimanifest" })
|
|
1211
|
+
], PacemWidgetApiManifestElement);
|
|
1212
|
+
|
|
1213
|
+
// packages/cms/dist/esm/widgets/ui/types.js
|
|
1214
|
+
import { Watch as Watch9, PropertyConverters as PropertyConverters9, Utils as Utils8, CustomElementUtils as CustomElementUtils5, Logging, PCSS as PCSS5 } from "@pacem/pacem-core";
|
|
1215
|
+
var __decorate10 = function(decorators, target, key, desc) {
|
|
1216
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1217
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1218
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1219
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1220
|
+
};
|
|
1221
|
+
var PacemUiWidgetElement = class extends PacemWidgetElement {
|
|
1222
|
+
constructor(metadata, colspan = 1, role) {
|
|
1223
|
+
super(metadata, role);
|
|
1224
|
+
this.colspan = colspan;
|
|
1225
|
+
this.rowspan = 1;
|
|
1226
|
+
}
|
|
1227
|
+
// just a flag class
|
|
1228
|
+
connectedCallback() {
|
|
1229
|
+
super.connectedCallback();
|
|
1230
|
+
Utils8.addClass(this, "ui-widget " + PCSS5 + "-cell cols-xs-start-1 cols-xs-12 rows-xs-start-auto");
|
|
1231
|
+
}
|
|
1232
|
+
propertyChangedCallback(name, old, val, first) {
|
|
1233
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
1234
|
+
switch (name) {
|
|
1235
|
+
case "row":
|
|
1236
|
+
Utils8.removeClass(this, `rows-start-${old + 1}`);
|
|
1237
|
+
Utils8.addClass(this, `rows-start-${val + 1}`);
|
|
1238
|
+
break;
|
|
1239
|
+
case "rowspan":
|
|
1240
|
+
Utils8.removeClass(this, `rows-${old}`);
|
|
1241
|
+
Utils8.addClass(this, `rows-${val}`);
|
|
1242
|
+
break;
|
|
1243
|
+
case "column":
|
|
1244
|
+
Utils8.removeClass(this, `cols-start-${old + 1}`);
|
|
1245
|
+
Utils8.addClass(this, `cols-start-${val + 1}`);
|
|
1246
|
+
break;
|
|
1247
|
+
case "colspan":
|
|
1248
|
+
Utils8.removeClass(this, `cols-${old}`);
|
|
1249
|
+
Utils8.addClass(this, `cols-${val}`);
|
|
1250
|
+
break;
|
|
1251
|
+
case "borders":
|
|
1252
|
+
(this.borders ? Utils8.addClass : Utils8.removeClass).apply(this, [this, PCSS5 + "-border"]);
|
|
1253
|
+
break;
|
|
1254
|
+
case "corners":
|
|
1255
|
+
(this.borders ? Utils8.addClass : Utils8.removeClass).apply(this, [this, PCSS5 + "-corners"]);
|
|
1256
|
+
break;
|
|
1257
|
+
}
|
|
1258
|
+
}
|
|
1259
|
+
get container() {
|
|
1260
|
+
return this._container;
|
|
1261
|
+
}
|
|
1262
|
+
/** @overridable */
|
|
1263
|
+
findContainer() {
|
|
1264
|
+
return CustomElementUtils5.findAncestor(this, (n) => n instanceof PacemCompositeWidgetElement);
|
|
1265
|
+
}
|
|
1266
|
+
viewActivatedCallback() {
|
|
1267
|
+
super.viewActivatedCallback();
|
|
1268
|
+
let iter = this._container = this.findContainer();
|
|
1269
|
+
if (!Utils8.isNull(iter)) {
|
|
1270
|
+
iter.register(this);
|
|
1271
|
+
}
|
|
1272
|
+
}
|
|
1273
|
+
disconnectedCallback() {
|
|
1274
|
+
if (!Utils8.isNull(this._container)) {
|
|
1275
|
+
this._container.unregister(this);
|
|
1276
|
+
}
|
|
1277
|
+
super.disconnectedCallback();
|
|
1278
|
+
}
|
|
1279
|
+
};
|
|
1280
|
+
__decorate10([
|
|
1281
|
+
Watch9({ emit: true, reflectBack: true, converter: PropertyConverters9.Number })
|
|
1282
|
+
], PacemUiWidgetElement.prototype, "column", void 0);
|
|
1283
|
+
__decorate10([
|
|
1284
|
+
Watch9({ emit: true, reflectBack: true, converter: PropertyConverters9.Number })
|
|
1285
|
+
], PacemUiWidgetElement.prototype, "row", void 0);
|
|
1286
|
+
__decorate10([
|
|
1287
|
+
Watch9({ emit: true, reflectBack: true, converter: PropertyConverters9.Number })
|
|
1288
|
+
], PacemUiWidgetElement.prototype, "colspan", void 0);
|
|
1289
|
+
__decorate10([
|
|
1290
|
+
Watch9({ emit: true, reflectBack: true, converter: PropertyConverters9.Number })
|
|
1291
|
+
], PacemUiWidgetElement.prototype, "rowspan", void 0);
|
|
1292
|
+
__decorate10([
|
|
1293
|
+
Watch9({ emit: true, reflectBack: true, converter: PropertyConverters9.Boolean })
|
|
1294
|
+
], PacemUiWidgetElement.prototype, "borders", void 0);
|
|
1295
|
+
__decorate10([
|
|
1296
|
+
Watch9({ emit: true, reflectBack: true, converter: PropertyConverters9.Boolean })
|
|
1297
|
+
], PacemUiWidgetElement.prototype, "corners", void 0);
|
|
1298
|
+
var WidgetRegisterEventName = "widgetregister";
|
|
1299
|
+
var WidgetUnregisterEventName = "widgetunregister";
|
|
1300
|
+
var LayoutChangeEventName = "layoutchange";
|
|
1301
|
+
var WidgetRegisterEvent = class extends CustomEvent {
|
|
1302
|
+
constructor(item, eventInit) {
|
|
1303
|
+
super(WidgetRegisterEventName, Utils8.extend(eventInit || {}, { detail: item }));
|
|
1304
|
+
}
|
|
1305
|
+
};
|
|
1306
|
+
var WidgetUnregisterEvent = class extends CustomEvent {
|
|
1307
|
+
constructor(item, eventInit) {
|
|
1308
|
+
super(WidgetUnregisterEventName, Utils8.extend(eventInit || {}, { detail: item }));
|
|
1309
|
+
}
|
|
1310
|
+
};
|
|
1311
|
+
var PacemCompositeWidgetElement = class extends PacemUiWidgetElement {
|
|
1312
|
+
get itemsElement() {
|
|
1313
|
+
return this;
|
|
1314
|
+
}
|
|
1315
|
+
validate(item) {
|
|
1316
|
+
return item instanceof PacemUiWidgetElement;
|
|
1317
|
+
}
|
|
1318
|
+
viewActivatedCallback() {
|
|
1319
|
+
super.viewActivatedCallback();
|
|
1320
|
+
Utils8.addClass(this.itemsElement, PCSS5 + "-items-element");
|
|
1321
|
+
}
|
|
1322
|
+
/**
|
|
1323
|
+
* Appends a child Element to this CompositeWidget's itemsElement.
|
|
1324
|
+
* @param item New child element
|
|
1325
|
+
*/
|
|
1326
|
+
appendItem(item) {
|
|
1327
|
+
this.itemsElement.appendChild(item);
|
|
1328
|
+
}
|
|
1329
|
+
/**
|
|
1330
|
+
* Registers a new item among the items.
|
|
1331
|
+
* @param item {PacemUiWidgetElement} Item to be enrolled
|
|
1332
|
+
*/
|
|
1333
|
+
register(item) {
|
|
1334
|
+
if (!this.validate(item)) {
|
|
1335
|
+
this.log(Logging.LogLevel.Debug, `${item && item.localName} element couldn't be registered in a ${this.localName} element.`);
|
|
1336
|
+
return false;
|
|
1337
|
+
}
|
|
1338
|
+
let retval = false;
|
|
1339
|
+
const items = this.items = this.items || [];
|
|
1340
|
+
if (Utils8.isNullOrEmpty(items)) {
|
|
1341
|
+
this.items = [item];
|
|
1342
|
+
retval = true;
|
|
1343
|
+
} else if (items.indexOf(item) === -1) {
|
|
1344
|
+
items.push(item);
|
|
1345
|
+
retval = true;
|
|
1346
|
+
}
|
|
1347
|
+
if (retval) {
|
|
1348
|
+
this.dispatchEvent(new WidgetRegisterEvent(item));
|
|
1349
|
+
}
|
|
1350
|
+
return retval;
|
|
1351
|
+
}
|
|
1352
|
+
/**
|
|
1353
|
+
* Removes an existing element from the items.
|
|
1354
|
+
* @param item {PacemUiWidgetElement} Item to be removed
|
|
1355
|
+
*/
|
|
1356
|
+
unregister(item) {
|
|
1357
|
+
const items = this.items, ndx = !Utils8.isNullOrEmpty(items) && items.indexOf(item);
|
|
1358
|
+
if (ndx >= 0) {
|
|
1359
|
+
let item2 = items.splice(ndx, 1);
|
|
1360
|
+
this.dispatchEvent(new WidgetUnregisterEvent(item2[0]));
|
|
1361
|
+
return true;
|
|
1362
|
+
}
|
|
1363
|
+
return false;
|
|
1364
|
+
}
|
|
1365
|
+
};
|
|
1366
|
+
__decorate10([
|
|
1367
|
+
Watch9(
|
|
1368
|
+
/* can only be databound or assigned at runtime */
|
|
1369
|
+
)
|
|
1370
|
+
], PacemCompositeWidgetElement.prototype, "items", void 0);
|
|
1371
|
+
|
|
1372
|
+
// packages/cms/dist/esm/widgets/ui/text.js
|
|
1373
|
+
import { CustomElement as CustomElement9, P as P10, Defaults as Defaults5, Watch as Watch10, PropertyConverters as PropertyConverters10 } from "@pacem/pacem-core";
|
|
1374
|
+
var __decorate11 = function(decorators, target, key, desc) {
|
|
1375
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1376
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1377
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1378
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1379
|
+
};
|
|
1380
|
+
var TEXT_METADATA = buildWidgetMetadata({
|
|
1381
|
+
display: { icon: "font_download", name: "Text", description: "Plain text widget." },
|
|
1382
|
+
props: [{
|
|
1383
|
+
prop: "text",
|
|
1384
|
+
type: EXPRESSION_METADATA_TYPE,
|
|
1385
|
+
display: { name: "Text" },
|
|
1386
|
+
extra: EXPRESSION_WIDGET_METADATA_EXTRA
|
|
1387
|
+
}]
|
|
1388
|
+
});
|
|
1389
|
+
var PacemWidgetTextElement = class PacemWidgetTextElement2 extends PacemUiWidgetElement {
|
|
1390
|
+
constructor() {
|
|
1391
|
+
super(TEXT_METADATA);
|
|
1392
|
+
}
|
|
1393
|
+
};
|
|
1394
|
+
__decorate11([
|
|
1395
|
+
Watch10({ reflectBack: true, converter: PropertyConverters10.String })
|
|
1396
|
+
], PacemWidgetTextElement.prototype, "text", void 0);
|
|
1397
|
+
PacemWidgetTextElement = __decorate11([
|
|
1398
|
+
CustomElement9({
|
|
1399
|
+
tagName: P10 + "-widget-text",
|
|
1400
|
+
shadow: Defaults5.USE_SHADOW_ROOT,
|
|
1401
|
+
template: `<${P10}-text text="{{ :host.text }}"></${P10}-text>`
|
|
1402
|
+
})
|
|
1403
|
+
], PacemWidgetTextElement);
|
|
1404
|
+
|
|
1405
|
+
// packages/cms/dist/esm/widgets/ui/composite/picker.js
|
|
1406
|
+
import { CustomElement as CustomElement10, P as P11, PCSS as PCSS6, Defaults as Defaults6, ViewChild as ViewChild5 } from "@pacem/pacem-core";
|
|
1407
|
+
var __decorate12 = function(decorators, target, key, desc) {
|
|
1408
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1409
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1410
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1411
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1412
|
+
};
|
|
1413
|
+
var PacemWidgetPickerElement = class PacemWidgetPickerElement2 extends PacemCompositeWidgetElement {
|
|
1414
|
+
register(item) {
|
|
1415
|
+
const retval = super.register(item);
|
|
1416
|
+
if (retval) {
|
|
1417
|
+
item.hide = true;
|
|
1418
|
+
}
|
|
1419
|
+
return retval;
|
|
1420
|
+
}
|
|
1421
|
+
};
|
|
1422
|
+
__decorate12([
|
|
1423
|
+
ViewChild5(P11 + "-drag-drop")
|
|
1424
|
+
], PacemWidgetPickerElement.prototype, "_dragDrop", void 0);
|
|
1425
|
+
PacemWidgetPickerElement = __decorate12([
|
|
1426
|
+
CustomElement10({
|
|
1427
|
+
tagName: P11 + "-widget-picker",
|
|
1428
|
+
shadow: Defaults6.USE_SHADOW_ROOT,
|
|
1429
|
+
template: `<${P11}-repeater datasource="{{ :host.items }}">
|
|
1430
|
+
<template>
|
|
1431
|
+
<${P11}-panel behaviors="{{ [::_dragDrop] }}" class="${PCSS6}-widget-itempicker display-flex flex-fill flex-middle flex-nowrap">
|
|
1432
|
+
<i class="${PCSS6}-icon flex-auto" dragger>drag_indicator</i>
|
|
1433
|
+
<${P11}-icon icon="{{ ^item.metadata.display.icon }}" class="flex-auto ${PCSS6}-margin margin-x-1"></${P11}-icon>
|
|
1434
|
+
<${P11}-text text="{{ ^item.metadata.display.name }}"></${P11}-text>
|
|
1435
|
+
</${P11}-panel>
|
|
1436
|
+
</template>
|
|
1437
|
+
</${P11}-repeater>
|
|
1438
|
+
<${P11}-drag-drop handle-selector="i.${PCSS6}-icon[dragger]"></${P11}-drag-drop>
|
|
1439
|
+
<${P11}-content></${P11}-content>`
|
|
1440
|
+
})
|
|
1441
|
+
], PacemWidgetPickerElement);
|
|
1442
|
+
|
|
1443
|
+
// packages/cms/dist/esm/widgets/ui/composite/grid.js
|
|
1444
|
+
import { CustomElement as CustomElement11, P as P12, PCSS as PCSS7, Watch as Watch11, PropertyConverters as PropertyConverters11, Debounce as Debounce3, Utils as Utils9, UI as UI2, PropertyChangeEventName as PropertyChangeEventName2 } from "@pacem/pacem-core";
|
|
1445
|
+
var __decorate13 = function(decorators, target, key, desc) {
|
|
1446
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1447
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1448
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1449
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1450
|
+
};
|
|
1451
|
+
function createSvgGridBox() {
|
|
1452
|
+
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
1453
|
+
svg.style.pointerEvents = "none";
|
|
1454
|
+
svg.style.zIndex = "1000";
|
|
1455
|
+
svg.setAttribute("height", "100%");
|
|
1456
|
+
svg.setAttribute("width", "100%");
|
|
1457
|
+
svg.setAttribute("preserveAspectRatio", "none");
|
|
1458
|
+
svg.setAttribute("class", "grid-cell-wrapper");
|
|
1459
|
+
svg.innerHTML = `<rect class="grid-cell" width="100%" height="100%"></rect>`;
|
|
1460
|
+
return svg;
|
|
1461
|
+
}
|
|
1462
|
+
var GRID_COLUMNS = 12;
|
|
1463
|
+
var FALLBACK_COLUMNS = GRID_COLUMNS;
|
|
1464
|
+
var FALLBACK_ROWS = 1;
|
|
1465
|
+
var GRID_METADATA = {
|
|
1466
|
+
display: {
|
|
1467
|
+
icon: "grid_on",
|
|
1468
|
+
name: "Grid",
|
|
1469
|
+
description: "Composition Widget that lays out child-widgets in a grid container."
|
|
1470
|
+
},
|
|
1471
|
+
props: [
|
|
1472
|
+
{
|
|
1473
|
+
prop: "rows",
|
|
1474
|
+
type: "int",
|
|
1475
|
+
display: {
|
|
1476
|
+
name: "Rows",
|
|
1477
|
+
cssClass: ["cols-lg-4"]
|
|
1478
|
+
},
|
|
1479
|
+
validators: [
|
|
1480
|
+
{ type: "required", errorMessage: "" },
|
|
1481
|
+
{
|
|
1482
|
+
type: "range",
|
|
1483
|
+
errorMessage: "",
|
|
1484
|
+
params: {
|
|
1485
|
+
min: 1,
|
|
1486
|
+
max: 24
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
]
|
|
1490
|
+
},
|
|
1491
|
+
{
|
|
1492
|
+
prop: "rowGap",
|
|
1493
|
+
type: "int",
|
|
1494
|
+
display: {
|
|
1495
|
+
//ui: 'slider',
|
|
1496
|
+
name: "Row gap",
|
|
1497
|
+
cssClass: ["cols-lg-4"]
|
|
1498
|
+
},
|
|
1499
|
+
validators: [
|
|
1500
|
+
// { type: 'required', errorMessage: '' },
|
|
1501
|
+
{
|
|
1502
|
+
type: "range",
|
|
1503
|
+
errorMessage: "",
|
|
1504
|
+
params: {
|
|
1505
|
+
min: 0,
|
|
1506
|
+
max: 3,
|
|
1507
|
+
step: 0.25
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
]
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
prop: "columnGap",
|
|
1514
|
+
type: "int",
|
|
1515
|
+
display: {
|
|
1516
|
+
//ui: 'slider',
|
|
1517
|
+
name: "Column gap",
|
|
1518
|
+
cssClass: ["cols-lg-4"]
|
|
1519
|
+
},
|
|
1520
|
+
validators: [
|
|
1521
|
+
// { type: 'required', errorMessage: '' },
|
|
1522
|
+
{
|
|
1523
|
+
type: "range",
|
|
1524
|
+
errorMessage: "",
|
|
1525
|
+
params: {
|
|
1526
|
+
min: 0,
|
|
1527
|
+
max: 3,
|
|
1528
|
+
step: 0.25
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1531
|
+
]
|
|
1532
|
+
}
|
|
1533
|
+
]
|
|
1534
|
+
};
|
|
1535
|
+
var PacemGridWidgetElement = class PacemGridWidgetElement2 extends PacemCompositeWidgetElement {
|
|
1536
|
+
constructor() {
|
|
1537
|
+
super(buildWidgetMetadata(GRID_METADATA), FALLBACK_COLUMNS, "grid");
|
|
1538
|
+
this._widgetPropertyChange = (evt) => {
|
|
1539
|
+
if (evt.detail.propertyName === "row" || evt.detail.propertyName === "rowspan") {
|
|
1540
|
+
const widget = evt.target;
|
|
1541
|
+
this.rows = Math.max(this.rows, widget.row + widget.rowspan);
|
|
1542
|
+
}
|
|
1543
|
+
};
|
|
1544
|
+
this._dragDropHandler = (evt) => {
|
|
1545
|
+
const args = evt.detail, el = args.element;
|
|
1546
|
+
switch (evt.type) {
|
|
1547
|
+
case UI2.DragDropEventType.Start:
|
|
1548
|
+
this._gridBoxes.forEach((svg) => {
|
|
1549
|
+
svg.style.pointerEvents = "auto";
|
|
1550
|
+
});
|
|
1551
|
+
this._initState = {
|
|
1552
|
+
colspan: el.colspan,
|
|
1553
|
+
rowspan: el.rowspan,
|
|
1554
|
+
col: el.column,
|
|
1555
|
+
row: el.row
|
|
1556
|
+
};
|
|
1557
|
+
break;
|
|
1558
|
+
case UI2.DragDropEventType.End:
|
|
1559
|
+
this._gridBoxes.forEach((svg) => {
|
|
1560
|
+
svg.style.pointerEvents = "none";
|
|
1561
|
+
});
|
|
1562
|
+
break;
|
|
1563
|
+
case UI2.DragDropEventType.Over:
|
|
1564
|
+
var dropTarget = args.target;
|
|
1565
|
+
var col = +dropTarget.style.gridColumnStart - 1;
|
|
1566
|
+
var row = +dropTarget.style.gridRowStart - 1;
|
|
1567
|
+
const farRight = col + this._initState.colspan, farBottom = row + this._initState.rowspan;
|
|
1568
|
+
if (!this._intersects(el, col, row, el.colspan, el.rowspan)) {
|
|
1569
|
+
let fireLayoutChange = false;
|
|
1570
|
+
if (farRight <= (this.columns || FALLBACK_COLUMNS)) {
|
|
1571
|
+
fireLayoutChange = el.column !== col;
|
|
1572
|
+
el.column = col;
|
|
1573
|
+
}
|
|
1574
|
+
if (farBottom <= (this.rows || FALLBACK_ROWS)) {
|
|
1575
|
+
fireLayoutChange = fireLayoutChange || el.row !== row;
|
|
1576
|
+
el.row = row;
|
|
1577
|
+
}
|
|
1578
|
+
if (fireLayoutChange) {
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
break;
|
|
1582
|
+
}
|
|
1583
|
+
;
|
|
1584
|
+
};
|
|
1585
|
+
this._resizeHandler = (evt) => {
|
|
1586
|
+
switch (evt.type) {
|
|
1587
|
+
case UI2.RescaleEventType.Start:
|
|
1588
|
+
Utils9.addClass(evt.detail.element, PCSS7 + "-rescaling");
|
|
1589
|
+
this._gridBoxes.forEach((svg) => {
|
|
1590
|
+
svg.style.pointerEvents = "auto";
|
|
1591
|
+
});
|
|
1592
|
+
break;
|
|
1593
|
+
case UI2.RescaleEventType.End:
|
|
1594
|
+
this._gridBoxes.forEach((svg) => {
|
|
1595
|
+
svg.style.pointerEvents = "none";
|
|
1596
|
+
});
|
|
1597
|
+
Utils9.removeClass(evt.detail.element, PCSS7 + "-rescaling");
|
|
1598
|
+
break;
|
|
1599
|
+
case UI2.RescaleEventType.Rescale:
|
|
1600
|
+
evt.preventDefault();
|
|
1601
|
+
const pos = { x: evt.clientX, y: evt.clientY }, handle = evt.detail.handle;
|
|
1602
|
+
const dropTarget = document.elementsFromPoint(pos.x, pos.y).find((e) => this._dragDrop.dropTargets.indexOf(e) >= 0);
|
|
1603
|
+
if (dropTarget) {
|
|
1604
|
+
var col = +dropTarget.style.gridColumnStart;
|
|
1605
|
+
var row = +dropTarget.style.gridRowStart;
|
|
1606
|
+
const widget = evt.detail.element, startcol = widget.column + 1, startrow = widget.row + 1;
|
|
1607
|
+
const colspan = 1 + col - startcol, rowspan = 1 + row - startrow;
|
|
1608
|
+
if (!this._intersects(widget, widget.column, widget.row, colspan, rowspan)) {
|
|
1609
|
+
let fireLayoutChange = false;
|
|
1610
|
+
if (col >= startcol && handle.endsWith("right")) {
|
|
1611
|
+
fireLayoutChange = widget.colspan !== colspan;
|
|
1612
|
+
widget.colspan = colspan;
|
|
1613
|
+
}
|
|
1614
|
+
if (row >= startrow && handle.startsWith("bottom")) {
|
|
1615
|
+
fireLayoutChange = fireLayoutChange || widget.rowspan !== rowspan;
|
|
1616
|
+
widget.rowspan = rowspan;
|
|
1617
|
+
}
|
|
1618
|
+
if (fireLayoutChange) {
|
|
1619
|
+
}
|
|
1620
|
+
}
|
|
1621
|
+
}
|
|
1622
|
+
break;
|
|
1623
|
+
}
|
|
1624
|
+
};
|
|
1625
|
+
this._gridBoxes = [];
|
|
1626
|
+
}
|
|
1627
|
+
register(item) {
|
|
1628
|
+
let retval = super.register(item);
|
|
1629
|
+
if (retval) {
|
|
1630
|
+
const row = item.row || 0, column = item.column || 0, colspan = item.colspan || 2, rowspan = item.rowspan || 1;
|
|
1631
|
+
let foundspot = !this._intersects(item, column, row, colspan, rowspan);
|
|
1632
|
+
if (foundspot) {
|
|
1633
|
+
item.row = row;
|
|
1634
|
+
item.column = column;
|
|
1635
|
+
item.colspan = colspan;
|
|
1636
|
+
item.rowspan = rowspan;
|
|
1637
|
+
} else {
|
|
1638
|
+
if (!foundspot) {
|
|
1639
|
+
let check = (elasticOnColspan = false) => {
|
|
1640
|
+
let maxColIndex = this.columns - 1;
|
|
1641
|
+
if (!elasticOnColspan) {
|
|
1642
|
+
maxColIndex = maxColIndex - colspan + 1;
|
|
1643
|
+
}
|
|
1644
|
+
for (let j = 0; j < this.rows; j++) {
|
|
1645
|
+
for (let i = 0; i <= maxColIndex; i++) {
|
|
1646
|
+
if (!this._intersects(item, i, j, colspan, rowspan)) {
|
|
1647
|
+
item.column = i;
|
|
1648
|
+
item.row = j;
|
|
1649
|
+
item.colspan = Math.min(maxColIndex + 1 - i, colspan);
|
|
1650
|
+
item.rowspan = rowspan;
|
|
1651
|
+
foundspot = true;
|
|
1652
|
+
break;
|
|
1653
|
+
}
|
|
1654
|
+
}
|
|
1655
|
+
if (foundspot)
|
|
1656
|
+
break;
|
|
1657
|
+
}
|
|
1658
|
+
};
|
|
1659
|
+
check();
|
|
1660
|
+
if (!foundspot && colspan > 1) {
|
|
1661
|
+
check(true);
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
if (!foundspot) {
|
|
1665
|
+
this.rows++;
|
|
1666
|
+
item.row = this.rows - 1;
|
|
1667
|
+
item.column = 0;
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
item.behaviors = [this._dragDrop, this._rescaler];
|
|
1671
|
+
item.addEventListener(PropertyChangeEventName2, this._widgetPropertyChange, false);
|
|
1672
|
+
}
|
|
1673
|
+
return retval;
|
|
1674
|
+
}
|
|
1675
|
+
unregister(item) {
|
|
1676
|
+
let retval = super.unregister(item);
|
|
1677
|
+
if (retval) {
|
|
1678
|
+
item.removeEventListener(PropertyChangeEventName2, this._widgetPropertyChange, false);
|
|
1679
|
+
const ndx = item.behaviors.indexOf(this._dragDrop);
|
|
1680
|
+
if (ndx >= 0)
|
|
1681
|
+
item.behaviors.splice(ndx, 1);
|
|
1682
|
+
const ndx1 = item.behaviors.indexOf(this._rescaler);
|
|
1683
|
+
if (ndx1 >= 0)
|
|
1684
|
+
item.behaviors.splice(ndx1, 1);
|
|
1685
|
+
}
|
|
1686
|
+
return retval;
|
|
1687
|
+
}
|
|
1688
|
+
_intersects(who, col, row, colspan, rowspan) {
|
|
1689
|
+
for (let item of this.items) {
|
|
1690
|
+
let widget = item;
|
|
1691
|
+
if (widget === who) {
|
|
1692
|
+
continue;
|
|
1693
|
+
}
|
|
1694
|
+
if (widget.column < col + colspan && widget.column + widget.colspan > col && (widget.row < row + rowspan && widget.row + widget.rowspan > row)) {
|
|
1695
|
+
return true;
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
return false;
|
|
1699
|
+
}
|
|
1700
|
+
connectedCallback() {
|
|
1701
|
+
super.connectedCallback();
|
|
1702
|
+
Utils9.addClass(this, PCSS7 + "-grid");
|
|
1703
|
+
let dragDrop = this._dragDrop = document.createElement(P12 + "-drag-drop");
|
|
1704
|
+
let floater = document.createElement("div");
|
|
1705
|
+
document.body.appendChild(floater);
|
|
1706
|
+
dragDrop.floater = floater;
|
|
1707
|
+
dragDrop.mode = UI2.DragDataMode.Alias;
|
|
1708
|
+
dragDrop.dropBehavior = UI2.DropBehavior.None;
|
|
1709
|
+
dragDrop.addEventListener(UI2.DragDropEventType.Start, this._dragDropHandler, false);
|
|
1710
|
+
dragDrop.addEventListener(UI2.DragDropEventType.Over, this._dragDropHandler, false);
|
|
1711
|
+
dragDrop.addEventListener(UI2.DragDropEventType.End, this._dragDropHandler, false);
|
|
1712
|
+
document.body.appendChild(dragDrop);
|
|
1713
|
+
let rescale = this._rescaler = document.createElement(P12 + "-rescale");
|
|
1714
|
+
rescale.handles = [UI2.RescaleHandle.Right, UI2.RescaleHandle.Bottom];
|
|
1715
|
+
rescale.addEventListener(UI2.RescaleEventType.Start, this._resizeHandler, false);
|
|
1716
|
+
rescale.addEventListener(UI2.RescaleEventType.Rescale, this._resizeHandler, false);
|
|
1717
|
+
rescale.addEventListener(UI2.RescaleEventType.End, this._resizeHandler, false);
|
|
1718
|
+
document.body.appendChild(rescale);
|
|
1719
|
+
if (Utils9.isNullOrEmpty(this.columns)) {
|
|
1720
|
+
this.columns = GRID_COLUMNS;
|
|
1721
|
+
}
|
|
1722
|
+
if (Utils9.isNullOrEmpty(this.rows)) {
|
|
1723
|
+
this.rows = 1;
|
|
1724
|
+
}
|
|
1725
|
+
}
|
|
1726
|
+
viewActivatedCallback() {
|
|
1727
|
+
super.viewActivatedCallback();
|
|
1728
|
+
this.adapt();
|
|
1729
|
+
}
|
|
1730
|
+
propertyChangedCallback(name, old, val, first) {
|
|
1731
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
1732
|
+
this.adapt();
|
|
1733
|
+
}
|
|
1734
|
+
disconnectedCallback() {
|
|
1735
|
+
var dragDrop = this._dragDrop, rescale = this._rescaler;
|
|
1736
|
+
if (!Utils9.isNull(dragDrop)) {
|
|
1737
|
+
dragDrop.floater.remove();
|
|
1738
|
+
dragDrop.removeEventListener(UI2.DragDropEventType.Start, this._dragDropHandler, false);
|
|
1739
|
+
dragDrop.removeEventListener(UI2.DragDropEventType.Over, this._dragDropHandler, false);
|
|
1740
|
+
dragDrop.removeEventListener(UI2.DragDropEventType.End, this._dragDropHandler, false);
|
|
1741
|
+
dragDrop.remove();
|
|
1742
|
+
this._dragDrop = null;
|
|
1743
|
+
}
|
|
1744
|
+
if (!Utils9.isNull(rescale)) {
|
|
1745
|
+
rescale.removeEventListener(UI2.RescaleEventType.Start, this._resizeHandler, false);
|
|
1746
|
+
rescale.removeEventListener(UI2.RescaleEventType.Rescale, this._resizeHandler, false);
|
|
1747
|
+
rescale.removeEventListener(UI2.RescaleEventType.End, this._resizeHandler, false);
|
|
1748
|
+
rescale.remove();
|
|
1749
|
+
this._rescaler = null;
|
|
1750
|
+
}
|
|
1751
|
+
super.disconnectedCallback();
|
|
1752
|
+
}
|
|
1753
|
+
_normalize(measure, defaultValue = 1) {
|
|
1754
|
+
if (typeof measure === "string") {
|
|
1755
|
+
return measure;
|
|
1756
|
+
} else if (measure == null) {
|
|
1757
|
+
measure = defaultValue;
|
|
1758
|
+
}
|
|
1759
|
+
return this.unitPixels(measure) + "px";
|
|
1760
|
+
}
|
|
1761
|
+
unitPixels(qty) {
|
|
1762
|
+
return qty * (this.unit || 8);
|
|
1763
|
+
}
|
|
1764
|
+
adapt() {
|
|
1765
|
+
this.style.marginTop = this.unitPixels(this.marginTop || 0) + "px";
|
|
1766
|
+
this.style.marginBottom = this.unitPixels(this.marginBottom || 0) + "px";
|
|
1767
|
+
this.style.gridTemplateColumns = `repeat(${this.columns || FALLBACK_COLUMNS}, 1fr)`;
|
|
1768
|
+
let minrowheight = this._normalize(this.minRowheight, 3), rowheight = this._normalize(this.rowheight || "auto");
|
|
1769
|
+
this.style.gridTemplateRows = `repeat(${this.rows || FALLBACK_ROWS}, minmax(${minrowheight}, ${rowheight}))`;
|
|
1770
|
+
this.style.gridRowGap = this._normalize(this.rowGap, 1);
|
|
1771
|
+
this.style.gridColumnGap = this._normalize(this.columnGap, 1);
|
|
1772
|
+
this._setGridLines();
|
|
1773
|
+
}
|
|
1774
|
+
_setGridLines() {
|
|
1775
|
+
var splice = 0;
|
|
1776
|
+
const editing = this.editing;
|
|
1777
|
+
if (editing) {
|
|
1778
|
+
const cols = this.columns || FALLBACK_COLUMNS, rows = this.rows || FALLBACK_ROWS, total = cols * rows;
|
|
1779
|
+
splice = total;
|
|
1780
|
+
for (let k = 0; k < total; k++) {
|
|
1781
|
+
while (this._gridBoxes.length <= k) {
|
|
1782
|
+
let s = createSvgGridBox();
|
|
1783
|
+
this.appendChild(s);
|
|
1784
|
+
this._gridBoxes.push(s);
|
|
1785
|
+
}
|
|
1786
|
+
let svg = this._gridBoxes[k];
|
|
1787
|
+
const i = k % cols, j = Math.floor(k / cols);
|
|
1788
|
+
svg.style.gridColumn = (i + 1).toString();
|
|
1789
|
+
svg.style.gridRow = (j + 1).toString();
|
|
1790
|
+
}
|
|
1791
|
+
}
|
|
1792
|
+
for (let svg of this._gridBoxes.splice(splice)) {
|
|
1793
|
+
svg.remove();
|
|
1794
|
+
}
|
|
1795
|
+
if (!Utils9.isNull(this._dragDrop) && !Utils9.isNull(this._rescaler)) {
|
|
1796
|
+
this._dragDrop.disabled = this._rescaler.disabled = !editing;
|
|
1797
|
+
this._dragDrop.dropTargets = this._gridBoxes;
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
};
|
|
1801
|
+
__decorate13([
|
|
1802
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.Number })
|
|
1803
|
+
], PacemGridWidgetElement.prototype, "unit", void 0);
|
|
1804
|
+
__decorate13([
|
|
1805
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.Number })
|
|
1806
|
+
], PacemGridWidgetElement.prototype, "marginTop", void 0);
|
|
1807
|
+
__decorate13([
|
|
1808
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.Number })
|
|
1809
|
+
], PacemGridWidgetElement.prototype, "marginBottom", void 0);
|
|
1810
|
+
__decorate13([
|
|
1811
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.Number })
|
|
1812
|
+
], PacemGridWidgetElement.prototype, "columns", void 0);
|
|
1813
|
+
__decorate13([
|
|
1814
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.Number })
|
|
1815
|
+
], PacemGridWidgetElement.prototype, "rows", void 0);
|
|
1816
|
+
__decorate13([
|
|
1817
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.String })
|
|
1818
|
+
], PacemGridWidgetElement.prototype, "minRowheight", void 0);
|
|
1819
|
+
__decorate13([
|
|
1820
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.String })
|
|
1821
|
+
], PacemGridWidgetElement.prototype, "rowheight", void 0);
|
|
1822
|
+
__decorate13([
|
|
1823
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.Number })
|
|
1824
|
+
], PacemGridWidgetElement.prototype, "rowGap", void 0);
|
|
1825
|
+
__decorate13([
|
|
1826
|
+
Watch11({ emit: false, reflectBack: true, converter: PropertyConverters11.Number })
|
|
1827
|
+
], PacemGridWidgetElement.prototype, "columnGap", void 0);
|
|
1828
|
+
__decorate13([
|
|
1829
|
+
Debounce3(100)
|
|
1830
|
+
], PacemGridWidgetElement.prototype, "adapt", null);
|
|
1831
|
+
PacemGridWidgetElement = __decorate13([
|
|
1832
|
+
CustomElement11({ tagName: P12 + "-widget-grid" })
|
|
1833
|
+
], PacemGridWidgetElement);
|
|
1834
|
+
|
|
1835
|
+
// packages/cms/dist/esm/widgets/ui/dataviz/datagrid.js
|
|
1836
|
+
import { CustomElement as CustomElement13, P as P14, PCSS as PCSS9, Watch as Watch13, PropertyConverters as PropertyConverters13, ViewChild as ViewChild7, Utils as Utils11, Components as Components3 } from "@pacem/pacem-core";
|
|
1837
|
+
|
|
1838
|
+
// packages/cms/dist/esm/widgets/scaffolding/datacolumns.js
|
|
1839
|
+
import { CustomElement as CustomElement12, P as P13, PCSS as PCSS8, Defaults as Defaults7, Watch as Watch12, PropertyConverters as PropertyConverters12, ViewChild as ViewChild6, Utils as Utils10, Components as Components2, UI as UI3 } from "@pacem/pacem-core";
|
|
1840
|
+
import { Components as ScaffoldingComponents3 } from "@pacem/pacem-scaffolding";
|
|
1841
|
+
var __decorate14 = function(decorators, target, key, desc) {
|
|
1842
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
1843
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
1844
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
1845
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
1846
|
+
};
|
|
1847
|
+
var DATACOLUMNS_METADATA_TYPE = (host, hostRef = ":host", hostEntityRef = ":host.entity") => {
|
|
1848
|
+
const attrs = {}, meta = host.metadata, fns = Functions, fnKeys = [];
|
|
1849
|
+
attrs["properties"] = `{{ Pacem.CustomElementUtils.getWatchedProperty(${hostEntityRef}, '${meta.prop}').config.converter }}`;
|
|
1850
|
+
const tagName = P13 + "-datacolumns";
|
|
1851
|
+
let extra = meta.extra || {};
|
|
1852
|
+
if (!Utils10.isNullOrEmpty(extra.properties)) {
|
|
1853
|
+
switch (typeof extra.properties) {
|
|
1854
|
+
case "string":
|
|
1855
|
+
attrs["properties"] = `{{ ${hostEntityRef}.${extra.properties} }}`;
|
|
1856
|
+
break;
|
|
1857
|
+
case "function":
|
|
1858
|
+
const fnKey = "fn" + Utils10.uniqueCode();
|
|
1859
|
+
fns[fnKey] = extra.properties;
|
|
1860
|
+
attrs["properties"] = `{{ Pacem.Components.Cms.Functions.${fnKey}(${hostRef}), once }}`;
|
|
1861
|
+
fnKeys.push(fnKey);
|
|
1862
|
+
break;
|
|
1863
|
+
}
|
|
1864
|
+
}
|
|
1865
|
+
if (fnKeys.length > 0) {
|
|
1866
|
+
attrs["on-unload"] = `{{ Pacem.Components.Cms.Functions.dismiss('${fnKeys.join("','")}') }}`;
|
|
1867
|
+
}
|
|
1868
|
+
return { tagName, attrs };
|
|
1869
|
+
};
|
|
1870
|
+
var DATACOLUMN_METADATA = {
|
|
1871
|
+
display: { name: "Columns" },
|
|
1872
|
+
props: [
|
|
1873
|
+
{ prop: "header", type: "string", display: { cssClass: ["form-minimal"], name: "Header" } },
|
|
1874
|
+
{
|
|
1875
|
+
prop: "content",
|
|
1876
|
+
type: EXPRESSION_METADATA_TYPE,
|
|
1877
|
+
display: { name: "Content" },
|
|
1878
|
+
extra: EXPRESSION_WIDGET_METADATA_EXTRA
|
|
1879
|
+
}
|
|
1880
|
+
]
|
|
1881
|
+
};
|
|
1882
|
+
var PacemDataColumnElement = class PacemDataColumnElement2 extends Components2.PacemElement {
|
|
1883
|
+
propertyChangedCallback(name, old, val, first) {
|
|
1884
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
1885
|
+
switch (name) {
|
|
1886
|
+
case "content":
|
|
1887
|
+
this.contentExpression = val;
|
|
1888
|
+
break;
|
|
1889
|
+
case "contentExpression":
|
|
1890
|
+
this.setAttribute("content", val || "");
|
|
1891
|
+
break;
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
viewActivatedCallback() {
|
|
1895
|
+
super.viewActivatedCallback();
|
|
1896
|
+
this._form.entity = this;
|
|
1897
|
+
this._form.metadata = gridifyMetadata(DATACOLUMN_METADATA);
|
|
1898
|
+
}
|
|
1899
|
+
};
|
|
1900
|
+
__decorate14([
|
|
1901
|
+
Watch12({ converter: PropertyConverters12.String })
|
|
1902
|
+
], PacemDataColumnElement.prototype, "header", void 0);
|
|
1903
|
+
__decorate14([
|
|
1904
|
+
Watch12({ converter: PropertyConverters12.String })
|
|
1905
|
+
], PacemDataColumnElement.prototype, "content", void 0);
|
|
1906
|
+
__decorate14([
|
|
1907
|
+
Watch12({ converter: PropertyConverters12.String })
|
|
1908
|
+
], PacemDataColumnElement.prototype, "contentExpression", void 0);
|
|
1909
|
+
__decorate14([
|
|
1910
|
+
ViewChild6(P13 + "-form")
|
|
1911
|
+
], PacemDataColumnElement.prototype, "_form", void 0);
|
|
1912
|
+
PacemDataColumnElement = __decorate14([
|
|
1913
|
+
CustomElement12({
|
|
1914
|
+
tagName: P13 + "-widget-datacolumn",
|
|
1915
|
+
shadow: Defaults7.USE_SHADOW_ROOT,
|
|
1916
|
+
template: `<${P13}-form class="panel-body" autogenerate="true"></${P13}-form>`
|
|
1917
|
+
})
|
|
1918
|
+
], PacemDataColumnElement);
|
|
1919
|
+
var PacemDataColumnsElement = class PacemDataColumnsElement2 extends ScaffoldingComponents3.Scaffolding.PacemBaseElement {
|
|
1920
|
+
constructor() {
|
|
1921
|
+
super(...arguments);
|
|
1922
|
+
this._dropHandler = (e) => {
|
|
1923
|
+
this.changeHandler(e);
|
|
1924
|
+
};
|
|
1925
|
+
this._columnifyMetadata = (props = this.properties) => {
|
|
1926
|
+
return (props || []).map((p) => {
|
|
1927
|
+
const header = typeof p.display?.name === "function" ? (
|
|
1928
|
+
/* NOT supported */
|
|
1929
|
+
p.prop
|
|
1930
|
+
) : p.display?.name || p.prop;
|
|
1931
|
+
const c = {
|
|
1932
|
+
header,
|
|
1933
|
+
content: `{{ ^item.${p.prop} }}`
|
|
1934
|
+
};
|
|
1935
|
+
return c;
|
|
1936
|
+
}).sort((a, b) => a.header > b.header ? 1 : -1);
|
|
1937
|
+
};
|
|
1938
|
+
}
|
|
1939
|
+
get inputFields() {
|
|
1940
|
+
return [];
|
|
1941
|
+
}
|
|
1942
|
+
toggleReadonlyView(readonly) {
|
|
1943
|
+
}
|
|
1944
|
+
onChange(evt) {
|
|
1945
|
+
return Utils10.fromResult(this.value = this._repeater.datasource);
|
|
1946
|
+
}
|
|
1947
|
+
acceptValue(val) {
|
|
1948
|
+
if (!Utils10.isNull(this._repeater)) {
|
|
1949
|
+
this._repeater.datasource = Utils10.clone(val || []);
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
getViewValue(value) {
|
|
1953
|
+
return (
|
|
1954
|
+
/* dummy */
|
|
1955
|
+
"[DataColumns]"
|
|
1956
|
+
);
|
|
1957
|
+
}
|
|
1958
|
+
convertValueAttributeToProperty(attr) {
|
|
1959
|
+
return PropertyConverters12.Json.convert(attr, this);
|
|
1960
|
+
}
|
|
1961
|
+
viewActivatedCallback() {
|
|
1962
|
+
super.viewActivatedCallback();
|
|
1963
|
+
this._propDragger.addEventListener(UI3.DragDropEventType.End, this._dropHandler, false);
|
|
1964
|
+
this._colDragger.addEventListener(UI3.DragDropEventType.End, this._dropHandler, false);
|
|
1965
|
+
}
|
|
1966
|
+
disconnectedCallback() {
|
|
1967
|
+
if (!Utils10.isNull(this._propDragger)) {
|
|
1968
|
+
this._propDragger.removeEventListener(UI3.DragDropEventType.End, this._dropHandler, false);
|
|
1969
|
+
}
|
|
1970
|
+
if (!Utils10.isNull(this._colDragger)) {
|
|
1971
|
+
this._colDragger.removeEventListener(UI3.DragDropEventType.End, this._dropHandler, false);
|
|
1972
|
+
}
|
|
1973
|
+
super.disconnectedCallback();
|
|
1974
|
+
}
|
|
1975
|
+
};
|
|
1976
|
+
__decorate14([
|
|
1977
|
+
ViewChild6(`${P13}-repeater[columns]`)
|
|
1978
|
+
], PacemDataColumnsElement.prototype, "_repeater", void 0);
|
|
1979
|
+
__decorate14([
|
|
1980
|
+
ViewChild6(`${P13}-drag-drop[properties]`)
|
|
1981
|
+
], PacemDataColumnsElement.prototype, "_propDragger", void 0);
|
|
1982
|
+
__decorate14([
|
|
1983
|
+
ViewChild6(`${P13}-drag-drop[columns]`)
|
|
1984
|
+
], PacemDataColumnsElement.prototype, "_colDragger", void 0);
|
|
1985
|
+
__decorate14([
|
|
1986
|
+
ViewChild6("div[drop-target]")
|
|
1987
|
+
], PacemDataColumnsElement.prototype, "_dropTarget", void 0);
|
|
1988
|
+
__decorate14([
|
|
1989
|
+
Watch12({ converter: PropertyConverters12.Json })
|
|
1990
|
+
], PacemDataColumnsElement.prototype, "properties", void 0);
|
|
1991
|
+
PacemDataColumnsElement = __decorate14([
|
|
1992
|
+
CustomElement12({
|
|
1993
|
+
tagName: P13 + "-widget-datacolumns",
|
|
1994
|
+
shadow: Defaults7.USE_SHADOW_ROOT,
|
|
1995
|
+
template: `<div class="${PCSS8}-datacolumns">
|
|
1996
|
+
<div class="datacolumns-main display-flex flex-fill">
|
|
1997
|
+
|
|
1998
|
+
<${P13}-drag-drop mode="${UI3.DragDataMode.Alias}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"
|
|
1999
|
+
drop-behavior="${UI3.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" columns></${P13}-drag-drop>
|
|
2000
|
+
<${P13}-repeater class="display-flex flex-fill" columns>
|
|
2001
|
+
<!-- columns -->
|
|
2002
|
+
<div class="display-flex flex-nowrap" drop-target>
|
|
2003
|
+
<template>
|
|
2004
|
+
<${P13}-panel behaviors="{{ [::_colDragger] }}">
|
|
2005
|
+
<div class="${PCSS8}-panel panel-side-left side-auto">
|
|
2006
|
+
<div class="panel-side">
|
|
2007
|
+
<${P13}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${P13}-button>
|
|
2008
|
+
<${P13}-button class="display-block button-flat icon-glyph-small" on-click=":host.value.splice(^index, 1)" icon-glyph="clear"></${P13}-button>
|
|
2009
|
+
</div>
|
|
2010
|
+
<div class="panel-heading">
|
|
2011
|
+
<${P13}-text text="{{ ^item.header }}"></${P13}-text>
|
|
2012
|
+
</div>
|
|
2013
|
+
<${P13}-widget-datacolumn class="panel-body" header="{{ ^item.header, twoway }}" content-expression="{{ ^item.content, twoway }}"></${P13}-widget-datacolumn>
|
|
2014
|
+
</div>
|
|
2015
|
+
</${P13}-panel>
|
|
2016
|
+
</template>
|
|
2017
|
+
</div>
|
|
2018
|
+
</${P13}-repeater>
|
|
2019
|
+
|
|
2020
|
+
</div>
|
|
2021
|
+
<${P13}-panel class="datacolumns-props" hide="{{ :host.readonly }}">
|
|
2022
|
+
<${P13}-drag-drop mode="${UI3.DragDataMode.Copy}" disabled="{{ :host.readonly }}" handle-selector="*[handle]"
|
|
2023
|
+
drop-behavior="${UI3.DropBehavior.InsertChild}" drop-targets="{{ [::_dropTarget] }}" properties></${P13}-drag-drop>
|
|
2024
|
+
<${P13}-repeater datasource="{{ :host._columnifyMetadata(:host.properties) }}">
|
|
2025
|
+
<!-- properties -->
|
|
2026
|
+
<template>
|
|
2027
|
+
<${P13}-panel behaviors="{{ [::_propDragger] }}" class="${PCSS8}-panel panel-side-left side-auto panel-primary panel-filled ${PCSS8}-margin margin-bottom-1">
|
|
2028
|
+
<div class="panel-side">
|
|
2029
|
+
<${P13}-button class="display-block button-flat icon-glyph-small" icon-glyph="drag_indicator" handle></${P13}-button>
|
|
2030
|
+
</div>
|
|
2031
|
+
<div class="text-truncate panel-body">
|
|
2032
|
+
<${P13}-span text="{{ ^item.header }}"></${P13}-span>
|
|
2033
|
+
</div>
|
|
2034
|
+
</${P13}-panel>
|
|
2035
|
+
</template>
|
|
2036
|
+
</${P13}-repeater>
|
|
2037
|
+
</${P13}-panel>
|
|
2038
|
+
</div>`
|
|
2039
|
+
})
|
|
2040
|
+
], PacemDataColumnsElement);
|
|
2041
|
+
|
|
2042
|
+
// packages/cms/dist/esm/widgets/ui/dataviz/datagrid.js
|
|
2043
|
+
var __decorate15 = function(decorators, target, key, desc) {
|
|
2044
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2045
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
2046
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
2047
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2048
|
+
};
|
|
2049
|
+
var DATACOLUMN_METADATA2 = {
|
|
2050
|
+
display: { name: "DataColumn" },
|
|
2051
|
+
props: [
|
|
2052
|
+
{ prop: "header", type: "string", display: { name: "Header" } },
|
|
2053
|
+
{ prop: "content", type: EXPRESSION_METADATA_TYPE, display: { name: "Content" }, extra: EXPRESSION_WIDGET_METADATA_EXTRA }
|
|
2054
|
+
]
|
|
2055
|
+
};
|
|
2056
|
+
var DATAGRID_METADATA = buildWidgetMetadata({
|
|
2057
|
+
display: { icon: "table_chart", name: "DataGrid", description: "DataGrid widget." },
|
|
2058
|
+
props: [
|
|
2059
|
+
{
|
|
2060
|
+
prop: "datasource",
|
|
2061
|
+
type: EXPRESSION_METADATA_TYPE,
|
|
2062
|
+
display: { name: "Datasource" },
|
|
2063
|
+
extra: Utils11.extend({}, EXPRESSION_WIDGET_METADATA_EXTRA, { filter: (e) => e instanceof PacemWidgetDataElement || e instanceof PacemWidgetFetchElement })
|
|
2064
|
+
},
|
|
2065
|
+
{
|
|
2066
|
+
prop: "columns",
|
|
2067
|
+
type: DATACOLUMNS_METADATA_TYPE,
|
|
2068
|
+
display: { name: "Columns" },
|
|
2069
|
+
// this will include 'datasource' as argument in the oneToMany source fn
|
|
2070
|
+
extra: { properties: "datarowMetadata" },
|
|
2071
|
+
props: gridifyMetadata(DATACOLUMN_METADATA2)
|
|
2072
|
+
}
|
|
2073
|
+
]
|
|
2074
|
+
});
|
|
2075
|
+
function gridify(columns = []) {
|
|
2076
|
+
var output = "";
|
|
2077
|
+
for (let column of columns || []) {
|
|
2078
|
+
const col = column.width || 1;
|
|
2079
|
+
if (typeof col === "number") {
|
|
2080
|
+
output += col + "fr ";
|
|
2081
|
+
} else {
|
|
2082
|
+
output += "auto ";
|
|
2083
|
+
}
|
|
2084
|
+
}
|
|
2085
|
+
return output;
|
|
2086
|
+
}
|
|
2087
|
+
function datagridFragments(columns = []) {
|
|
2088
|
+
const fragHeading = document.createDocumentFragment(), fragBody = document.createDocumentFragment();
|
|
2089
|
+
let j = 1;
|
|
2090
|
+
for (let col of columns) {
|
|
2091
|
+
const headcell = document.createElement("div");
|
|
2092
|
+
headcell.classList.add(PCSS9 + "-headcell");
|
|
2093
|
+
headcell.textContent = col.header;
|
|
2094
|
+
fragHeading.appendChild(headcell);
|
|
2095
|
+
const datacell = new Components3.PacemSpanElement();
|
|
2096
|
+
datacell.classList.add(PCSS9 + "-datacell", "datacell-corners");
|
|
2097
|
+
datacell.style.gridColumn = j.toString();
|
|
2098
|
+
datacell.setAttribute("css", "{{ {'grid-row': ^index+2} }}");
|
|
2099
|
+
datacell.setAttribute("content", col.content);
|
|
2100
|
+
fragBody.appendChild(datacell);
|
|
2101
|
+
j++;
|
|
2102
|
+
}
|
|
2103
|
+
const datarow = new Components3.PacemPanelElement();
|
|
2104
|
+
datarow.classList.add(PCSS9 + "-datarow");
|
|
2105
|
+
datarow.setAttribute("css", "{{ {'grid-row': ^index+2} }}");
|
|
2106
|
+
datarow.setAttribute("css-class", "{{ {'datarow-alt': ^index % 2 === 1} }}");
|
|
2107
|
+
datarow.style.gridColumn = "1/" + (columns.length + 1);
|
|
2108
|
+
fragBody.appendChild(datarow);
|
|
2109
|
+
return { head: fragHeading, body: fragBody };
|
|
2110
|
+
}
|
|
2111
|
+
function datagridInnerHTML(id, columns = []) {
|
|
2112
|
+
const { head, body } = datagridFragments(columns);
|
|
2113
|
+
const head0 = document.createElement("div");
|
|
2114
|
+
head0.appendChild(head);
|
|
2115
|
+
const body0 = document.createElement("div");
|
|
2116
|
+
body0.appendChild(body);
|
|
2117
|
+
return `<${P14}-repeater datasource="{{ #${id}.datasource }}">
|
|
2118
|
+
<div class="${PCSS9}-datatable" style="grid-template-columns: ${gridify(columns)}">
|
|
2119
|
+
${head0.innerHTML}
|
|
2120
|
+
<template>${body0.innerHTML}</template>
|
|
2121
|
+
</div></${P14}-repeater>`;
|
|
2122
|
+
}
|
|
2123
|
+
var PacemWidgetDataGridElement = class PacemWidgetDataGridElement2 extends PacemUiWidgetElement {
|
|
2124
|
+
constructor() {
|
|
2125
|
+
super(DATAGRID_METADATA);
|
|
2126
|
+
this.columns = [];
|
|
2127
|
+
this.datasource = [];
|
|
2128
|
+
this.datarowMetadata = [];
|
|
2129
|
+
this._builtUponDatasource = false;
|
|
2130
|
+
}
|
|
2131
|
+
_gridify(columns = this.columns) {
|
|
2132
|
+
var output = "";
|
|
2133
|
+
for (let column of columns || []) {
|
|
2134
|
+
const col = column.width || 1;
|
|
2135
|
+
if (typeof col === "number") {
|
|
2136
|
+
output += col + "fr ";
|
|
2137
|
+
} else {
|
|
2138
|
+
output += "auto ";
|
|
2139
|
+
}
|
|
2140
|
+
}
|
|
2141
|
+
return output;
|
|
2142
|
+
}
|
|
2143
|
+
propertyChangedCallback(name, old, val, first) {
|
|
2144
|
+
super.propertyChangedCallback(name, old, val, first);
|
|
2145
|
+
if (!first) {
|
|
2146
|
+
switch (name) {
|
|
2147
|
+
case "columns":
|
|
2148
|
+
this.innerHTML = datagridInnerHTML(this.id, val);
|
|
2149
|
+
break;
|
|
2150
|
+
case "datasource":
|
|
2151
|
+
this._extractMetadataJustInCase(val);
|
|
2152
|
+
break;
|
|
2153
|
+
}
|
|
2154
|
+
}
|
|
2155
|
+
}
|
|
2156
|
+
viewActivatedCallback() {
|
|
2157
|
+
super.viewActivatedCallback();
|
|
2158
|
+
this.innerHTML = datagridInnerHTML(this.id, this.columns);
|
|
2159
|
+
}
|
|
2160
|
+
_seekArray(ds) {
|
|
2161
|
+
if (Utils11.isArray(ds)) {
|
|
2162
|
+
return ds;
|
|
2163
|
+
}
|
|
2164
|
+
if (typeof ds === "object") {
|
|
2165
|
+
for (let prop in ds) {
|
|
2166
|
+
const arr = this._seekArray(ds[prop]);
|
|
2167
|
+
if (!Utils11.isNull(arr)) {
|
|
2168
|
+
return arr;
|
|
2169
|
+
}
|
|
2170
|
+
}
|
|
2171
|
+
}
|
|
2172
|
+
return null;
|
|
2173
|
+
}
|
|
2174
|
+
_extractMetadataJustInCase(ds = this.datasource) {
|
|
2175
|
+
if ((Utils11.isNullOrEmpty(this.datarowMetadata) || this._builtUponDatasource) && !Utils11.isNullOrEmpty(ds)) {
|
|
2176
|
+
const arr = this._seekArray(ds);
|
|
2177
|
+
if (!Utils11.isNullOrEmpty(arr)) {
|
|
2178
|
+
const props = [];
|
|
2179
|
+
const item = arr[0];
|
|
2180
|
+
for (let prop in item) {
|
|
2181
|
+
props.push({ prop, type: typeof item[prop] });
|
|
2182
|
+
}
|
|
2183
|
+
this.datarowMetadata = props;
|
|
2184
|
+
this._builtUponDatasource = true;
|
|
2185
|
+
}
|
|
2186
|
+
}
|
|
2187
|
+
}
|
|
2188
|
+
};
|
|
2189
|
+
__decorate15([
|
|
2190
|
+
Watch13({ reflectBack: true, converter: PropertyConverters13.Json })
|
|
2191
|
+
], PacemWidgetDataGridElement.prototype, "columns", void 0);
|
|
2192
|
+
__decorate15([
|
|
2193
|
+
Watch13({ converter: PropertyConverters13.Json })
|
|
2194
|
+
], PacemWidgetDataGridElement.prototype, "datasource", void 0);
|
|
2195
|
+
__decorate15([
|
|
2196
|
+
Watch13({ converter: PropertyConverters13.Json })
|
|
2197
|
+
], PacemWidgetDataGridElement.prototype, "datarowMetadata", void 0);
|
|
2198
|
+
__decorate15([
|
|
2199
|
+
ViewChild7(`.${PCSS9}-datatable`)
|
|
2200
|
+
], PacemWidgetDataGridElement.prototype, "_datatable", void 0);
|
|
2201
|
+
__decorate15([
|
|
2202
|
+
ViewChild7("template")
|
|
2203
|
+
], PacemWidgetDataGridElement.prototype, "_template", void 0);
|
|
2204
|
+
__decorate15([
|
|
2205
|
+
ViewChild7(P14 + "-repeater")
|
|
2206
|
+
], PacemWidgetDataGridElement.prototype, "_repeater", void 0);
|
|
2207
|
+
PacemWidgetDataGridElement = __decorate15([
|
|
2208
|
+
CustomElement13({
|
|
2209
|
+
tagName: P14 + "-widget-datagrid"
|
|
2210
|
+
})
|
|
2211
|
+
], PacemWidgetDataGridElement);
|
|
2212
|
+
|
|
2213
|
+
// packages/cms/dist/esm/index.cms.js
|
|
2214
|
+
var index_cms_exports = {};
|
|
2215
|
+
__export(index_cms_exports, {
|
|
2216
|
+
DATACOLUMNS_METADATA_TYPE: () => DATACOLUMNS_METADATA_TYPE,
|
|
2217
|
+
OpenApi: () => swagger_cms_exports,
|
|
2218
|
+
PacemDataColumnElement: () => PacemDataColumnElement,
|
|
2219
|
+
PacemDataColumnsElement: () => PacemDataColumnsElement,
|
|
2220
|
+
Permissible: () => Permissible,
|
|
2221
|
+
PermissionEditEvent: () => PermissionEditEvent,
|
|
2222
|
+
PermissionEditEventName: () => PermissionEditEventName
|
|
2223
|
+
});
|
|
2224
|
+
|
|
2225
|
+
// packages/cms/dist/esm/types.js
|
|
2226
|
+
import { Utils as Utils12 } from "@pacem/pacem-core";
|
|
2227
|
+
var PermissionEditEventName = "permissionedit";
|
|
2228
|
+
var PermissionEditEvent = class extends CustomEvent {
|
|
2229
|
+
constructor(permissible) {
|
|
2230
|
+
super(PermissionEditEventName, { detail: permissible, cancelable: false, bubbles: true });
|
|
2231
|
+
}
|
|
2232
|
+
};
|
|
2233
|
+
var Permissible = class {
|
|
2234
|
+
static canEdit(claims, resource) {
|
|
2235
|
+
return this._canDoSomethingToResource(claims, resource, (p) => p.update);
|
|
2236
|
+
}
|
|
2237
|
+
static canRead(claims, resource) {
|
|
2238
|
+
return this._canDoSomethingToResource(claims, resource, (p) => p.read);
|
|
2239
|
+
}
|
|
2240
|
+
static canAdd(claims, resource) {
|
|
2241
|
+
return this._canDoSomethingToResource(claims, resource, (p) => p.create);
|
|
2242
|
+
}
|
|
2243
|
+
static canDelete(claims, resource) {
|
|
2244
|
+
return this._canDoSomethingToResource(claims, resource, (p) => p.delete);
|
|
2245
|
+
}
|
|
2246
|
+
static canTranslate(claims, resource) {
|
|
2247
|
+
return this._canDoSomethingToResource(claims, resource, (p) => p.translate);
|
|
2248
|
+
}
|
|
2249
|
+
static _canDoSomethingToResource(claims, resource, predicate) {
|
|
2250
|
+
if (Utils12.isNullOrEmpty(claims) || Utils12.isNull(resource)) {
|
|
2251
|
+
return false;
|
|
2252
|
+
}
|
|
2253
|
+
var editable = true;
|
|
2254
|
+
if (resource.permissions && resource.permissions.length > 0) {
|
|
2255
|
+
editable = false;
|
|
2256
|
+
for (let permission of resource.permissions) {
|
|
2257
|
+
if (predicate(permission) && claims[permission.claimType] && claims[permission.claimType].indexOf(permission.claimValue) >= 0) {
|
|
2258
|
+
return true;
|
|
2259
|
+
}
|
|
2260
|
+
}
|
|
2261
|
+
}
|
|
2262
|
+
return editable;
|
|
2263
|
+
}
|
|
2264
|
+
};
|
|
2265
|
+
export {
|
|
2266
|
+
index_cms_exports as Cms,
|
|
2267
|
+
index_components_exports as Components
|
|
2268
|
+
};
|
|
2269
|
+
//# sourceMappingURL=pacem-cms.mjs.map
|