@jsonforms/core 3.0.0-beta.4 → 3.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/docs/assets/js/search.json +1 -1
  2. package/docs/enums/ruleeffect.html +4 -4
  3. package/docs/globals.html +149 -29
  4. package/docs/index.html +25 -4
  5. package/docs/interfaces/andcondition.html +2 -2
  6. package/docs/interfaces/categorization.html +24 -16
  7. package/docs/interfaces/category.html +24 -16
  8. package/docs/interfaces/composablecondition.html +2 -2
  9. package/docs/interfaces/condition.html +1 -1
  10. package/docs/interfaces/controlelement.html +21 -16
  11. package/docs/interfaces/grouplayout.html +24 -12
  12. package/docs/interfaces/horizontallayout.html +4 -4
  13. package/docs/interfaces/internationalizable.html +1 -10
  14. package/docs/interfaces/labeldescription.html +2 -2
  15. package/docs/interfaces/labeled.html +182 -0
  16. package/docs/interfaces/labelelement.html +4 -4
  17. package/docs/interfaces/lableable.html +184 -0
  18. package/docs/interfaces/layout.html +4 -4
  19. package/docs/interfaces/leafcondition.html +9 -8
  20. package/docs/interfaces/orcondition.html +2 -2
  21. package/docs/interfaces/rule.html +2 -2
  22. package/docs/interfaces/schemabasedcondition.html +9 -8
  23. package/docs/interfaces/scopable.html +3 -9
  24. package/docs/interfaces/scoped.html +183 -0
  25. package/docs/interfaces/uischemaelement.html +3 -3
  26. package/docs/interfaces/verticallayout.html +4 -4
  27. package/lib/jsonforms-core.cjs.js +33 -16
  28. package/lib/jsonforms-core.cjs.js.map +1 -1
  29. package/lib/jsonforms-core.esm.js +23 -20
  30. package/lib/jsonforms-core.esm.js.map +1 -1
  31. package/lib/models/uischema.d.ts +34 -26
  32. package/lib/util/runtime.d.ts +1 -2
  33. package/lib/util/util.d.ts +6 -6
  34. package/package.json +2 -2
  35. package/src/models/uischema.ts +49 -26
  36. package/src/testers/testers.ts +9 -12
  37. package/src/util/path.ts +9 -5
  38. package/src/util/runtime.ts +1 -1
  39. package/src/util/util.ts +8 -8
  40. package/stats.html +1 -1
@@ -0,0 +1,183 @@
1
+ <!doctype html>
2
+ <html class="default no-js">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
+ <title>Scoped | JSON Forms Core</title>
7
+ <meta name="description" content="Documentation for JSON Forms Core">
8
+ <meta name="viewport" content="width=device-width, initial-scale=1">
9
+ <link rel="stylesheet" href="../assets/css/main.css">
10
+ </head>
11
+ <body>
12
+ <header>
13
+ <div class="tsd-page-toolbar">
14
+ <div class="container">
15
+ <div class="table-wrap">
16
+ <div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
17
+ <div class="field">
18
+ <label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
19
+ <input id="tsd-search-field" type="text" />
20
+ </div>
21
+ <ul class="results">
22
+ <li class="state loading">Preparing search index...</li>
23
+ <li class="state failure">The search index is not available</li>
24
+ </ul>
25
+ <a href="../index.html" class="title">JSON Forms Core</a>
26
+ </div>
27
+ <div class="table-cell" id="tsd-widgets">
28
+ <div id="tsd-filter">
29
+ <a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
30
+ <div class="tsd-filter-group">
31
+ <div class="tsd-select" id="tsd-filter-visibility">
32
+ <span class="tsd-select-label">All</span>
33
+ <ul class="tsd-select-list">
34
+ <li data-value="public">Public</li>
35
+ <li data-value="protected">Public/Protected</li>
36
+ <li data-value="private" class="selected">All</li>
37
+ </ul>
38
+ </div>
39
+ <input type="checkbox" id="tsd-filter-inherited" checked />
40
+ <label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
41
+ <input type="checkbox" id="tsd-filter-only-exported" />
42
+ <label class="tsd-widget" for="tsd-filter-only-exported">Only exported</label>
43
+ </div>
44
+ </div>
45
+ <a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ <div class="tsd-page-title">
51
+ <div class="container">
52
+ <ul class="tsd-breadcrumb">
53
+ <li>
54
+ <a href="../globals.html">Globals</a>
55
+ </li>
56
+ <li>
57
+ <a href="scoped.html">Scoped</a>
58
+ </li>
59
+ </ul>
60
+ <h1>Interface Scoped</h1>
61
+ </div>
62
+ </div>
63
+ </header>
64
+ <div class="container container-main">
65
+ <div class="row">
66
+ <div class="col-8 col-content">
67
+ <section class="tsd-panel tsd-comment">
68
+ <div class="tsd-comment tsd-typography">
69
+ <div class="lead">
70
+ <p>Interface for describing an UI schema element that is referencing
71
+ a subschema. The value of the scope must be a JSON Pointer.</p>
72
+ </div>
73
+ </div>
74
+ </section>
75
+ <section class="tsd-panel tsd-hierarchy">
76
+ <h3>Hierarchy</h3>
77
+ <ul class="tsd-hierarchy">
78
+ <li>
79
+ <a href="scopable.html" class="tsd-signature-type">Scopable</a>
80
+ <ul class="tsd-hierarchy">
81
+ <li>
82
+ <span class="target">Scoped</span>
83
+ <ul class="tsd-hierarchy">
84
+ <li>
85
+ <a href="leafcondition.html" class="tsd-signature-type">LeafCondition</a>
86
+ </li>
87
+ <li>
88
+ <a href="schemabasedcondition.html" class="tsd-signature-type">SchemaBasedCondition</a>
89
+ </li>
90
+ <li>
91
+ <a href="controlelement.html" class="tsd-signature-type">ControlElement</a>
92
+ </li>
93
+ </ul>
94
+ </li>
95
+ </ul>
96
+ </li>
97
+ </ul>
98
+ </section>
99
+ <section class="tsd-panel-group tsd-index-group">
100
+ <h2>Index</h2>
101
+ <section class="tsd-panel tsd-index-panel">
102
+ <div class="tsd-index-content">
103
+ <section class="tsd-index-section ">
104
+ <h3>Properties</h3>
105
+ <ul class="tsd-index-list">
106
+ <li class="tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite"><a href="scoped.html#scope" class="tsd-kind-icon">scope</a></li>
107
+ </ul>
108
+ </section>
109
+ </div>
110
+ </section>
111
+ </section>
112
+ <section class="tsd-panel-group tsd-member-group ">
113
+ <h2>Properties</h2>
114
+ <section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite">
115
+ <a name="scope" class="tsd-anchor"></a>
116
+ <h3>scope</h3>
117
+ <div class="tsd-signature tsd-kind-icon">scope<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
118
+ <aside class="tsd-sources">
119
+ <p>Overrides <a href="scopable.html">Scopable</a>.<a href="scopable.html#scope">scope</a></p>
120
+ <ul>
121
+ <li>Defined in packages/core/src/models/uischema.ts:47</li>
122
+ </ul>
123
+ </aside>
124
+ <div class="tsd-comment tsd-typography">
125
+ <div class="lead">
126
+ <p>The scope that determines to which part this element should be bound to.</p>
127
+ </div>
128
+ </div>
129
+ </section>
130
+ </section>
131
+ </div>
132
+ <div class="col-4 col-menu menu-sticky-wrap menu-highlight">
133
+ <nav class="tsd-navigation primary">
134
+ <ul>
135
+ <li class="globals ">
136
+ <a href="../globals.html"><em>Globals</em></a>
137
+ </li>
138
+ </ul>
139
+ </nav>
140
+ <nav class="tsd-navigation secondary menu-sticky">
141
+ <ul class="before-current">
142
+ </ul>
143
+ <ul class="current">
144
+ <li class="current tsd-kind-interface">
145
+ <a href="scoped.html" class="tsd-kind-icon">Scoped</a>
146
+ <ul>
147
+ <li class=" tsd-kind-property tsd-parent-kind-interface tsd-is-overwrite">
148
+ <a href="scoped.html#scope" class="tsd-kind-icon">scope</a>
149
+ </li>
150
+ </ul>
151
+ </li>
152
+ </ul>
153
+ <ul class="after-current">
154
+ </ul>
155
+ </nav>
156
+ </div>
157
+ </div>
158
+ </div>
159
+ <footer class="with-border-bottom">
160
+ <div class="container">
161
+ <h2>Legend</h2>
162
+ <div class="tsd-legend-group">
163
+ <ul class="tsd-legend">
164
+ <li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
165
+ <li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li>
166
+ </ul>
167
+ <ul class="tsd-legend">
168
+ <li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
169
+ <li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
170
+ </ul>
171
+ <ul class="tsd-legend">
172
+ <li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private property</span></li>
173
+ </ul>
174
+ </div>
175
+ </div>
176
+ </footer>
177
+ <div class="container tsd-generator">
178
+ <p>Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p>
179
+ </div>
180
+ <div class="overlay"></div>
181
+ <script src="../assets/js/main.js"></script>
182
+ </body>
183
+ </html>
@@ -116,7 +116,7 @@
116
116
  <div class="tsd-signature tsd-kind-icon">options<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{}</span></div>
117
117
  <aside class="tsd-sources">
118
118
  <ul>
119
- <li>Defined in packages/core/src/models/uischema.ts:150</li>
119
+ <li>Defined in packages/core/src/models/uischema.ts:178</li>
120
120
  </ul>
121
121
  </aside>
122
122
  <div class="tsd-comment tsd-typography">
@@ -139,7 +139,7 @@
139
139
  <div class="tsd-signature tsd-kind-icon">rule<span class="tsd-signature-symbol">:</span> <a href="rule.html" class="tsd-signature-type">Rule</a></div>
140
140
  <aside class="tsd-sources">
141
141
  <ul>
142
- <li>Defined in packages/core/src/models/uischema.ts:145</li>
142
+ <li>Defined in packages/core/src/models/uischema.ts:173</li>
143
143
  </ul>
144
144
  </aside>
145
145
  <div class="tsd-comment tsd-typography">
@@ -154,7 +154,7 @@
154
154
  <div class="tsd-signature tsd-kind-icon">type<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
155
155
  <aside class="tsd-sources">
156
156
  <ul>
157
- <li>Defined in packages/core/src/models/uischema.ts:140</li>
157
+ <li>Defined in packages/core/src/models/uischema.ts:168</li>
158
158
  </ul>
159
159
  </aside>
160
160
  <div class="tsd-comment tsd-typography">
@@ -109,7 +109,7 @@
109
109
  <aside class="tsd-sources">
110
110
  <p>Inherited from <a href="layout.html">Layout</a>.<a href="layout.html#elements">elements</a></p>
111
111
  <ul>
112
- <li>Defined in packages/core/src/models/uischema.ts:161</li>
112
+ <li>Defined in packages/core/src/models/uischema.ts:189</li>
113
113
  </ul>
114
114
  </aside>
115
115
  <div class="tsd-comment tsd-typography">
@@ -125,7 +125,7 @@
125
125
  <aside class="tsd-sources">
126
126
  <p>Inherited from <a href="uischemaelement.html">UISchemaElement</a>.<a href="uischemaelement.html#options">options</a></p>
127
127
  <ul>
128
- <li>Defined in packages/core/src/models/uischema.ts:150</li>
128
+ <li>Defined in packages/core/src/models/uischema.ts:178</li>
129
129
  </ul>
130
130
  </aside>
131
131
  <div class="tsd-comment tsd-typography">
@@ -149,7 +149,7 @@
149
149
  <aside class="tsd-sources">
150
150
  <p>Inherited from <a href="uischemaelement.html">UISchemaElement</a>.<a href="uischemaelement.html#rule">rule</a></p>
151
151
  <ul>
152
- <li>Defined in packages/core/src/models/uischema.ts:145</li>
152
+ <li>Defined in packages/core/src/models/uischema.ts:173</li>
153
153
  </ul>
154
154
  </aside>
155
155
  <div class="tsd-comment tsd-typography">
@@ -165,7 +165,7 @@
165
165
  <aside class="tsd-sources">
166
166
  <p>Overrides <a href="uischemaelement.html">UISchemaElement</a>.<a href="uischemaelement.html#type">type</a></p>
167
167
  <ul>
168
- <li>Defined in packages/core/src/models/uischema.ts:168</li>
168
+ <li>Defined in packages/core/src/models/uischema.ts:196</li>
169
169
  </ul>
170
170
  </aside>
171
171
  </section>
@@ -337,6 +337,18 @@ var isGroup = function (layout) {
337
337
  var isLayout = function (uischema) {
338
338
  return uischema.elements !== undefined;
339
339
  };
340
+ var isScopable = function (obj) {
341
+ return obj && typeof obj === 'object';
342
+ };
343
+ var isScoped = function (obj) {
344
+ return isScopable(obj) && typeof obj.scope === 'string';
345
+ };
346
+ var isLabelable = function (obj) {
347
+ return obj && typeof obj === 'object';
348
+ };
349
+ var isLabeled = function (obj) {
350
+ return isLabelable(obj) && ['string', 'object'].includes(typeof obj.label);
351
+ };
340
352
 
341
353
  var move = function (array, index, delta) {
342
354
  var newIndex = index + delta;
@@ -946,10 +958,7 @@ var isObjectArrayWithNesting = function (uischema, schema, rootSchema) {
946
958
  }
947
959
  var schemaPath = uischema.scope;
948
960
  var resolvedSchema = resolveSchema(schema, schemaPath, rootSchema !== null && rootSchema !== void 0 ? rootSchema : schema);
949
- var wantedNestingByType = {
950
- object: 2,
951
- array: 1
952
- };
961
+ var objectDepth = 0;
953
962
  if (resolvedSchema !== undefined && resolvedSchema.items !== undefined) {
954
963
  if (traverse(resolvedSchema.items, function (val) {
955
964
  if (val === schema) {
@@ -958,15 +967,16 @@ var isObjectArrayWithNesting = function (uischema, schema, rootSchema) {
958
967
  if (val.$ref !== undefined) {
959
968
  return false;
960
969
  }
961
- if (typeof val.type !== 'string') {
962
- return true;
970
+ if (hasType(val, 'object')) {
971
+ objectDepth++;
972
+ if (objectDepth === 2) {
973
+ return true;
974
+ }
963
975
  }
964
- var typeCount = wantedNestingByType[val.type];
965
- if (typeCount === undefined) {
966
- return false;
976
+ if (hasType(val, 'array')) {
977
+ return true;
967
978
  }
968
- wantedNestingByType[val.type] = typeCount - 1;
969
- return wantedNestingByType[val.type] === 0;
979
+ return false;
970
980
  }, rootSchema)) {
971
981
  return true;
972
982
  }
@@ -1181,11 +1191,14 @@ var toDataPath = function (schemaPath) {
1181
1191
  return toDataPathSegments(schemaPath).join('.');
1182
1192
  };
1183
1193
  var composeWithUi = function (scopableUi, path) {
1194
+ if (!isScoped(scopableUi)) {
1195
+ return path !== null && path !== void 0 ? path : '';
1196
+ }
1184
1197
  var segments = toDataPathSegments(scopableUi.scope);
1185
- if (isEmpty__default["default"](segments) && path === undefined) {
1186
- return '';
1198
+ if (isEmpty__default["default"](segments)) {
1199
+ return path !== null && path !== void 0 ? path : '';
1187
1200
  }
1188
- return isEmpty__default["default"](segments) ? path : compose(path, segments.join('.'));
1201
+ return compose(path, segments.join('.'));
1189
1202
  };
1190
1203
  var encode = function (segment) { return segment === null || segment === void 0 ? void 0 : segment.replace(/~/g, '~0').replace(/\//g, '~1'); };
1191
1204
  var decode = function (pointerSegment) { return pointerSegment === null || pointerSegment === void 0 ? void 0 : pointerSegment.replace(/~1/g, '/').replace(/~0/, '~'); };
@@ -1440,12 +1453,12 @@ var Resolve = {
1440
1453
  schema: resolveSchema,
1441
1454
  data: resolveData
1442
1455
  };
1443
- var fromScopable = function (scopable) {
1456
+ var fromScoped = function (scopable) {
1444
1457
  return toDataPathSegments(scopable.scope).join('.');
1445
1458
  };
1446
1459
  var Paths = {
1447
1460
  compose: compose,
1448
- fromScopable: fromScopable
1461
+ fromScoped: fromScoped
1449
1462
  };
1450
1463
  var Runtime = {
1451
1464
  isEnabled: function (uischema, data, ajv) {
@@ -2379,6 +2392,8 @@ exports.isGroup = isGroup;
2379
2392
  exports.isInherentlyEnabled = isInherentlyEnabled;
2380
2393
  exports.isIntegerControl = isIntegerControl;
2381
2394
  exports.isInternationalized = isInternationalized;
2395
+ exports.isLabelable = isLabelable;
2396
+ exports.isLabeled = isLabeled;
2382
2397
  exports.isLayout = isLayout;
2383
2398
  exports.isMultiLineControl = isMultiLineControl;
2384
2399
  exports.isNumberControl = isNumberControl;
@@ -2391,6 +2406,8 @@ exports.isOneOfControl = isOneOfControl;
2391
2406
  exports.isOneOfEnumControl = isOneOfEnumControl;
2392
2407
  exports.isPrimitiveArrayControl = isPrimitiveArrayControl;
2393
2408
  exports.isRangeControl = isRangeControl;
2409
+ exports.isScopable = isScopable;
2410
+ exports.isScoped = isScoped;
2394
2411
  exports.isStringControl = isStringControl;
2395
2412
  exports.isTimeControl = isTimeControl;
2396
2413
  exports.isVisible = isVisible;