@gravitee/ui-components 3.25.3-typescript-ad6021f → 3.25.3-typescript-bfd8f67

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 (188) hide show
  1. package/package.json +5 -8
  2. package/src/atoms/gv-autocomplete.js +1 -461
  3. package/src/atoms/gv-button.js +1 -410
  4. package/src/atoms/gv-checkbox.js +1 -187
  5. package/src/atoms/gv-date-picker-calendar.js +1 -894
  6. package/src/atoms/gv-date-picker-cell.js +1 -190
  7. package/src/atoms/gv-date-picker.js +1 -671
  8. package/src/atoms/gv-file-upload.js +1 -367
  9. package/src/atoms/gv-icon.js +1 -103
  10. package/src/atoms/gv-image.js +1 -144
  11. package/src/atoms/gv-input-message.js +1 -84
  12. package/src/atoms/gv-input.js +1 -561
  13. package/src/atoms/gv-link.js +1 -210
  14. package/src/atoms/gv-message.js +1 -128
  15. package/src/atoms/gv-metric.js +1 -117
  16. package/src/atoms/gv-relative-time.js +1 -156
  17. package/src/atoms/gv-select-native.js +1 -388
  18. package/src/atoms/gv-select.js +1 -437
  19. package/src/atoms/gv-spinner.js +1 -57
  20. package/src/atoms/gv-state.js +1 -130
  21. package/src/atoms/gv-switch.js +1 -243
  22. package/src/atoms/gv-tag.js +1 -168
  23. package/src/atoms/gv-text.js +1 -168
  24. package/src/charts/gv-chart-bar.js +1 -103
  25. package/src/charts/gv-chart-gauge.js +1 -100
  26. package/src/charts/gv-chart-histogram.js +1 -83
  27. package/src/charts/gv-chart-line.js +1 -224
  28. package/src/charts/gv-chart-map.js +1 -112
  29. package/src/charts/gv-chart-pie.js +1 -91
  30. package/src/index.js +1 -77
  31. package/src/lib/cron-expression.js +1 -205
  32. package/src/lib/date.js +1 -44
  33. package/src/lib/events.js +1 -26
  34. package/src/lib/http-client-schema-form.js +1 -67
  35. package/src/lib/http.js +1 -237
  36. package/src/lib/i18n.js +1 -103
  37. package/src/lib/item.js +1 -118
  38. package/src/lib/properties.js +1 -189
  39. package/src/lib/schema-form.js +1 -44
  40. package/src/lib/studio.js +1 -141
  41. package/src/lib/style.js +1 -41
  42. package/src/lib/text-format.js +1 -69
  43. package/src/lib/theme.js +1 -63
  44. package/src/lib/utils.js +1 -111
  45. package/src/mixins/chart-element.js +1 -165
  46. package/src/mixins/input-element.js +1 -144
  47. package/src/mixins/item-resource.js +1 -120
  48. package/src/mixins/keyboard-element.js +1 -69
  49. package/src/mixins/update-after-browser.js +1 -30
  50. package/src/mixins/with-resize-observer.js +1 -68
  51. package/src/mixins/with-skeleton-attribute.js +1 -112
  52. package/src/molecules/gv-card-full.js +1 -218
  53. package/src/molecules/gv-card-list.js +1 -113
  54. package/src/molecules/gv-card.js +1 -133
  55. package/src/molecules/gv-category-list.js +1 -60
  56. package/src/molecules/gv-category.js +1 -170
  57. package/src/molecules/gv-code.js +1 -359
  58. package/src/molecules/gv-confirm.js +1 -188
  59. package/src/molecules/gv-cron-editor.js +1 -710
  60. package/src/molecules/gv-dropdown-menu.js +1 -116
  61. package/src/molecules/gv-expandable.js +1 -122
  62. package/src/molecules/gv-expression-language.js +1 -270
  63. package/src/molecules/gv-identity-picture.js +1 -148
  64. package/src/molecules/gv-list.js +1 -227
  65. package/src/molecules/gv-metrics.js +1 -162
  66. package/src/molecules/gv-modal.js +1 -213
  67. package/src/molecules/gv-nav.js +1 -196
  68. package/src/molecules/gv-option.js +1 -242
  69. package/src/molecules/gv-plans.js +1 -429
  70. package/src/molecules/gv-popover.js +1 -351
  71. package/src/molecules/gv-promote.js +1 -209
  72. package/src/molecules/gv-rating-list.js +1 -365
  73. package/src/molecules/gv-rating.js +1 -253
  74. package/src/molecules/gv-row-expandable.js +1 -45
  75. package/src/molecules/gv-row.js +1 -210
  76. package/src/molecules/gv-stats.js +1 -121
  77. package/src/molecules/gv-stepper.js +1 -288
  78. package/src/molecules/gv-table.js +1 -685
  79. package/src/molecules/gv-tree.js +1 -250
  80. package/src/organisms/gv-documentation.js +1 -215
  81. package/src/organisms/gv-header.js +1 -288
  82. package/src/organisms/gv-http-client.js +1 -275
  83. package/src/organisms/gv-menu.js +1 -263
  84. package/src/organisms/gv-newsletter-subscription.js +1 -271
  85. package/src/organisms/gv-pagination.js +1 -198
  86. package/src/organisms/gv-properties.js +1 -920
  87. package/src/organisms/gv-resizable-views.js +1 -396
  88. package/src/organisms/gv-resources.js +1 -535
  89. package/src/organisms/gv-schema-form-array.js +1 -250
  90. package/src/organisms/gv-schema-form-control-object.js +1 -154
  91. package/src/organisms/gv-schema-form-control.js +1 -443
  92. package/src/organisms/gv-schema-form.js +1 -751
  93. package/src/organisms/gv-tabs.js +1 -210
  94. package/src/organisms/gv-user-menu.js +1 -314
  95. package/src/organisms/gv-vertical-menu.js +1 -123
  96. package/src/policy-studio/gv-flow-step.js +1 -464
  97. package/src/policy-studio/gv-flow.js +1 -621
  98. package/src/policy-studio/gv-policy-studio-menu.js +1 -750
  99. package/src/policy-studio/gv-policy-studio.js +1 -1842
  100. package/src/styles/empty.js +1 -36
  101. package/src/styles/input.js +1 -263
  102. package/src/styles/link.js +1 -32
  103. package/src/styles/shapes.js +1 -17
  104. package/src/styles/skeleton.js +1 -53
  105. package/src/styles/zoom.js +1 -40
  106. package/src/theme/gv-theme.js +1 -203
  107. package/wc/gv-autocomplete.js +1 -1
  108. package/wc/gv-button.js +1 -1
  109. package/wc/gv-card-full.js +1 -1
  110. package/wc/gv-card-list.js +1 -1
  111. package/wc/gv-card.js +1 -1
  112. package/wc/gv-category-list.js +1 -1
  113. package/wc/gv-category.js +1 -1
  114. package/wc/gv-chart-bar.js +1 -1
  115. package/wc/gv-chart-gauge.js +1 -1
  116. package/wc/gv-chart-histogram.js +1 -1
  117. package/wc/gv-chart-line.js +1 -1
  118. package/wc/gv-chart-map.js +1 -1
  119. package/wc/gv-chart-pie.js +1 -1
  120. package/wc/gv-checkbox.js +1 -1
  121. package/wc/gv-code.js +1 -1
  122. package/wc/gv-confirm.js +1 -1
  123. package/wc/gv-cron-editor.js +1 -1
  124. package/wc/gv-date-picker-calendar.js +1 -1
  125. package/wc/gv-date-picker-cell.js +1 -1
  126. package/wc/gv-date-picker.js +1 -1
  127. package/wc/gv-documentation.js +1 -1
  128. package/wc/gv-dropdown-menu.js +1 -1
  129. package/wc/gv-expandable.js +1 -1
  130. package/wc/gv-expression-language.js +1 -1
  131. package/wc/gv-file-upload.js +1 -1
  132. package/wc/gv-flow-step.js +1 -1
  133. package/wc/gv-flow.js +1 -1
  134. package/wc/gv-header.js +1 -1
  135. package/wc/gv-http-client.js +1 -1
  136. package/wc/gv-icon.js +1 -1
  137. package/wc/gv-identity-picture.js +1 -1
  138. package/wc/gv-image.js +1 -1
  139. package/wc/gv-input-message.js +1 -1
  140. package/wc/gv-input.js +1 -1
  141. package/wc/gv-link.js +1 -1
  142. package/wc/gv-list.js +1 -1
  143. package/wc/gv-menu.js +1 -1
  144. package/wc/gv-message.js +1 -1
  145. package/wc/gv-metric.js +1 -1
  146. package/wc/gv-metrics.js +1 -1
  147. package/wc/gv-modal.js +1 -1
  148. package/wc/gv-nav.js +1 -1
  149. package/wc/gv-newsletter-subscription.js +1 -1
  150. package/wc/gv-option.js +1 -1
  151. package/wc/gv-pagination.js +1 -1
  152. package/wc/gv-plans.js +1 -1
  153. package/wc/gv-policy-studio-menu.js +1 -1
  154. package/wc/gv-policy-studio.js +1 -1
  155. package/wc/gv-popover.js +1 -1
  156. package/wc/gv-promote.js +1 -1
  157. package/wc/gv-properties.js +1 -1
  158. package/wc/gv-rating-list.js +1 -1
  159. package/wc/gv-rating.js +1 -1
  160. package/wc/gv-relative-time.js +1 -1
  161. package/wc/gv-resizable-views.js +1 -1
  162. package/wc/gv-resources.js +1 -1
  163. package/wc/gv-row-expandable.js +1 -1
  164. package/wc/gv-row.js +1 -1
  165. package/wc/gv-schema-form-array.js +1 -1
  166. package/wc/gv-schema-form-control-object.js +1 -1
  167. package/wc/gv-schema-form-control.js +1 -1
  168. package/wc/gv-schema-form.js +1 -1
  169. package/wc/gv-select-native.js +1 -1
  170. package/wc/gv-select.js +1 -1
  171. package/wc/gv-spinner.js +1 -1
  172. package/wc/gv-state.js +1 -1
  173. package/wc/gv-stats.js +1 -1
  174. package/wc/gv-stepper.js +1 -1
  175. package/wc/gv-switch.js +1 -1
  176. package/wc/gv-table.js +1 -1
  177. package/wc/gv-tabs.js +1 -1
  178. package/wc/gv-tag.js +1 -1
  179. package/wc/gv-text.js +1 -1
  180. package/wc/gv-theme.js +1 -1
  181. package/wc/gv-tree.js +1 -1
  182. package/wc/gv-user-menu.js +1 -1
  183. package/wc/gv-vertical-menu.js +1 -1
  184. package/CHANGELOG.md +0 -1292
  185. package/LICENSE.txt +0 -202
  186. package/README.md +0 -195
  187. package/src/.eslintrc.js +0 -19
  188. package/src/theme/definition.json +0 -1762
@@ -1,443 +1 @@
1
- /*
2
- * Copyright (C) 2015 The Gravitee team (http://gravitee.io)
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { css, LitElement, html } from 'lit';
17
- import { dispatchCustomEvent } from '../lib/events';
18
- import '../atoms/gv-input';
19
- import '../atoms/gv-input-message';
20
- import '../atoms/gv-text';
21
- import '../atoms/gv-select';
22
- import '../atoms/gv-select-native';
23
- import '../atoms/gv-switch';
24
- import '../molecules/gv-code';
25
- import '../molecules/gv-expression-language';
26
- import '../molecules/gv-cron-editor';
27
- import '../atoms/gv-autocomplete';
28
- import '../organisms/gv-schema-form-array';
29
- import '../organisms/gv-schema-form-control-object';
30
- import { isCodemirror, isObject, isComplexArray } from '../lib/schema-form';
31
- import { UpdateAfterBrowser } from '../mixins/update-after-browser';
32
-
33
- export class GvSchemaFormControl extends UpdateAfterBrowser(LitElement) {
34
- static get properties() {
35
- return {
36
- type: { type: String },
37
- id: { type: String, reflect: true },
38
- name: { type: String, reflect: true },
39
- required: { type: Boolean, reflect: true },
40
- disabled: { type: Boolean, reflect: true },
41
- readonly: { type: Boolean, reflect: true },
42
- title: { type: String, reflect: true },
43
- pattern: { type: String },
44
- control: { type: Object },
45
- errors: { type: Array },
46
- value: { type: Object, reflect: true },
47
- skeleton: { type: Boolean, reflect: true },
48
- hidden: { type: Boolean, reflect: true },
49
- writeOnly: { type: Boolean, reflect: true },
50
- compact: { type: Boolean },
51
- };
52
- }
53
-
54
- constructor() {
55
- super();
56
- // When form has errors, the control is not update to conserve the error state.
57
- // This list is used to force the update of properties even in error case.
58
- this._observedProperties = ['disabled', 'readonly', 'required'];
59
- }
60
-
61
- isExpressionLanguage() {
62
- return this.control['x-schema-form'] && this.control['x-schema-form']['expression-language'] != null;
63
- }
64
-
65
- isCronExpression() {
66
- return this.control['x-schema-form'] && this.control['x-schema-form']['cron-expression'] === true;
67
- }
68
-
69
- isPassword() {
70
- return (
71
- this.control.writeOnly === true ||
72
- (this.control['x-schema-form'] && this.control['x-schema-form'].type != null && this.control['x-schema-form'].type === 'password')
73
- );
74
- }
75
-
76
- getPlaceholder() {
77
- return this.control['x-schema-form'] && this.control['x-schema-form'].placeholder ? this.control['x-schema-form'].placeholder : null;
78
- }
79
-
80
- isCodemirror() {
81
- return isCodemirror(this.control);
82
- }
83
-
84
- isObject() {
85
- return isObject(this.control);
86
- }
87
-
88
- isAutocomplete() {
89
- return this.control['x-schema-form'] && this.control['x-schema-form'].event != null && this.control.type === 'string';
90
- }
91
-
92
- isText() {
93
- return this.control['x-schema-form'] && this.control['x-schema-form'].type === 'text' && this.control.type === 'string';
94
- }
95
-
96
- getElementName() {
97
- if (this.isObject()) {
98
- return 'gv-schema-form-control-object';
99
- }
100
- if ((this.control.enum || (this.control.items && this.control.items.enum)) && !this.isAutocomplete()) {
101
- if (this.control.type === 'array') {
102
- return 'gv-select';
103
- }
104
- return 'gv-select-native';
105
- } else if (isComplexArray(this.control)) {
106
- return 'gv-schema-form-array';
107
- } else if (this.control.type === 'array') {
108
- return 'gv-button';
109
- } else if (this.control.type === 'boolean') {
110
- return 'gv-switch';
111
- } else if (this.isExpressionLanguage()) {
112
- return 'gv-expression-language';
113
- } else if (this.isCodemirror()) {
114
- return 'gv-code';
115
- } else if (this.isCronExpression()) {
116
- return 'gv-cron-editor';
117
- } else if (this.isText()) {
118
- return 'gv-text';
119
- }
120
-
121
- return 'gv-input';
122
- }
123
-
124
- _updateProperties(element) {
125
- if (element != null) {
126
- this._observedProperties.forEach((property) => {
127
- if (this[property] != null) {
128
- element[property] = this[property];
129
- }
130
- });
131
- }
132
- }
133
-
134
- _renderControl() {
135
- const elementName = this.getElementName();
136
- const element = document.createElement(elementName);
137
- element.id = this.id;
138
- element.name = this.id;
139
- element.skeleton = this.skeleton;
140
- element.classList.add('form__control');
141
- if (this.value == null && this.control.default != null) {
142
- this.value = this.control.default;
143
- dispatchCustomEvent(this, 'default-value', { value: this.value, currentTarget: element, control: this.control });
144
- }
145
- if (this.value != null) {
146
- this._setValue(element);
147
- }
148
-
149
- if (this.control.type === 'object') {
150
- element.schema = this.control;
151
- } else if (isComplexArray(this.control)) {
152
- element.schema = this.control.items;
153
- }
154
-
155
- this._updateProperties(element);
156
-
157
- if (this.control.title) {
158
- element.label = this.control.title;
159
- element.title = this.control.title;
160
- } else {
161
- const tmp = this.id.split('.');
162
- const title = tmp[tmp.length - 1];
163
- if (isNaN(parseInt(title, 10))) {
164
- element.label = title;
165
- element.title = title;
166
- }
167
- }
168
-
169
- if (this.control.pattern) {
170
- element.pattern = this.control.pattern;
171
- }
172
-
173
- if (this.control.type === 'integer') {
174
- element.type = 'number';
175
- }
176
-
177
- if (this.isText()) {
178
- element.rows = 3;
179
- element.autosize = true;
180
- element.placeholder = this.control.description;
181
- }
182
-
183
- const placeholder = this.getPlaceholder();
184
-
185
- if (this.control.enum || (this.control.items && this.control.items.enum)) {
186
- const options = this.control.enum || this.control.items.enum;
187
- if (this.control['x-schema-form'] && this.control['x-schema-form'].titleMap) {
188
- element.options = options.map((value) => ({
189
- value,
190
- label: this.control['x-schema-form'].titleMap[value] || value,
191
- }));
192
- } else {
193
- element.options = options;
194
- }
195
- if (this.control.type === 'array') {
196
- element.multiple = true;
197
- }
198
- } else if (this.isCodemirror()) {
199
- element.options = this.control['x-schema-form'].codemirrorOptions;
200
- if (this.control.default != null && element.options.value == null) {
201
- element.options.value = this.control.default;
202
- }
203
- } else if (this.isExpressionLanguage()) {
204
- element.options = {};
205
- element.rows = 1;
206
- } else if (this.isPassword()) {
207
- element.type = 'password';
208
- }
209
-
210
- if (this.control.description) {
211
- element.description = this.control.description;
212
- }
213
-
214
- if (this.compact) {
215
- element.placeholder = element.description || element.label;
216
- element.label = null;
217
- element.description = null;
218
- element.compact = this.compact;
219
- }
220
-
221
- if (placeholder != null) {
222
- if (this.isExpressionLanguage() || this.isCodemirror()) {
223
- element.options.placeholder = placeholder;
224
- } else {
225
- element.placeholder = placeholder;
226
- }
227
- }
228
-
229
- element.addEventListener(`${elementName}:input`, this._onInput.bind(this));
230
-
231
- let currentTarget;
232
- if (this.isAutocomplete()) {
233
- const autocomplete = document.createElement('gv-autocomplete');
234
- autocomplete.minChars = 0;
235
- autocomplete.filter = true;
236
- element.clearable = true;
237
- autocomplete.id = this.id;
238
- autocomplete.appendChild(element);
239
- autocomplete.addEventListener(`gv-autocomplete:select`, this._onInput.bind(this));
240
- element.addEventListener(`gv-input:clear`, this._onInput.bind(this));
241
- currentTarget = autocomplete;
242
- } else {
243
- currentTarget = element;
244
- }
245
- if (this.control['x-schema-form'] != null) {
246
- dispatchCustomEvent(this, 'control-ready', {
247
- currentTarget,
248
- control: this,
249
- });
250
- }
251
- return currentTarget;
252
- }
253
-
254
- _onInput(e) {
255
- e.preventDefault();
256
- e.stopPropagation();
257
- let value = null;
258
- if (e.target.tagName === 'GV-AUTOCOMPLETE') {
259
- value = e.detail.value;
260
- } else {
261
- value = e.detail;
262
- }
263
- dispatchCustomEvent(this, 'change', { value, currentTarget: e.target, control: this.control });
264
- }
265
-
266
- getControls() {
267
- return [
268
- ...Array.from(this.shadowRoot.querySelectorAll('gv-schema-form-control')),
269
- ...Array.from(this.shadowRoot.querySelectorAll('gv-schema-form-control-array')),
270
- ...Array.from(this.shadowRoot.querySelectorAll('gv-schema-form-control-object')),
271
- ];
272
- }
273
-
274
- getControl(id) {
275
- if (id == null) {
276
- id = this.id;
277
- }
278
- return this.shadowRoot.querySelector(`[id="${id}"]`);
279
- }
280
-
281
- _setValue(controlElement) {
282
- if (this.value != null && controlElement != null) {
283
- if (this.control.type === 'boolean' || this.control.type === 'array' || this.control.type === 'object') {
284
- controlElement.value = this.value;
285
- } else {
286
- controlElement.value = this.value.toString ? this.value.toString() : this.value;
287
- }
288
- }
289
- return controlElement;
290
- }
291
-
292
- async updated(changedProperties) {
293
- if (changedProperties.has('value')) {
294
- Promise.all(this.getControls().map((control) => control.updateComplete)).then(() => {
295
- this._setValue(this.getControl());
296
- });
297
- }
298
- }
299
-
300
- async getUpdateComplete() {
301
- await super.getUpdateComplete();
302
- await Promise.all(this.getControls().map((e) => e.updateComplete));
303
- }
304
-
305
- formatErrorMessage(error) {
306
- let title;
307
- if (this.control.properties != null && this.control.properties[error.argument] != null) {
308
- title = this.control.properties[error.argument].title;
309
- } else {
310
- title = this.control.title;
311
- }
312
- if (title) {
313
- return `<span>${error.message.replace(error.argument, title)}</span>`;
314
- }
315
- return `<span>${error.message}</span>`;
316
- }
317
-
318
- shouldUpdate(changedProperties) {
319
- if (this._observedProperties.find((property) => changedProperties.has(property)) != null) {
320
- this._updateProperties(this.getControl());
321
- }
322
-
323
- if (changedProperties.has('errors') && this.errors != null) {
324
- // Set errors to complex controls
325
- this.getControls().forEach((control) => {
326
- control.errors = this.errors;
327
- });
328
-
329
- // Find simple controls and append error message
330
- const errorContainer = this.shadowRoot.querySelectorAll('.form__control-error');
331
- errorContainer.forEach((container) => (container.innerHTML = ''));
332
- this.errors.forEach((error) => {
333
- const key = error.property === 'instance' ? error.argument : error.property.replace('instance.', '');
334
- const errorContainer = this.shadowRoot.querySelector(`[id="${key}-error"]`);
335
- if (errorContainer) {
336
- const message = document.createElement('gv-input-message');
337
- message.innerHTML = this.formatErrorMessage(error);
338
- message.level = 'warn';
339
- errorContainer.appendChild(message);
340
- }
341
- });
342
- return false;
343
- }
344
- return super.shouldUpdate(changedProperties);
345
- }
346
-
347
- render() {
348
- return html`
349
- ${this._renderControl()}
350
- <div class="form__control-error" id="${this.id + '-error'}"></div>
351
- `;
352
- }
353
-
354
- static get styles() {
355
- return [
356
- // language=CSS
357
- css`
358
- :host {
359
- box-sizing: border-box;
360
- margin: var(--gv-schema-form-control--m, 0.4rem);
361
- display: block;
362
- }
363
-
364
- :host([hidden]) {
365
- visibility: hidden;
366
- height: 0;
367
- margin: 0;
368
- padding: 0;
369
- overflow: hidden;
370
- }
371
-
372
- .form__control-description,
373
- .form__control-error {
374
- font-size: 12px;
375
- }
376
-
377
- .form__control-description {
378
- opacity: 0.8;
379
- }
380
-
381
- .form__control-label {
382
- display: flex;
383
- flex-direction: row;
384
- border-bottom: 1px solid #d9d9d9;
385
- }
386
-
387
- label {
388
- margin: 0.2rem;
389
- }
390
-
391
- .form__control-label label {
392
- flex: 1;
393
- text-transform: capitalize;
394
- }
395
-
396
- .form__control-array,
397
- .form__control-object {
398
- display: flex;
399
- flex-direction: column;
400
- }
401
-
402
- .form__control-enum {
403
- display: flex;
404
- /*align-items: flex-end;*/
405
- }
406
-
407
- .form__control-array gv-button {
408
- align-self: flex-end;
409
- }
410
-
411
- .form__control {
412
- position: relative;
413
- }
414
-
415
- gv-select,
416
- gv-select-native,
417
- gv-input,
418
- gv-code,
419
- gv-switch,
420
- gv-expression-language {
421
- width: 100%;
422
- margin: 0.2rem 0;
423
- }
424
-
425
- gv-select:hover,
426
- gv-select-native:hover,
427
- gv-autocomplete:hover {
428
- z-index: 70;
429
- }
430
-
431
- .error {
432
- color: var(--gv-theme-color-error, #f44336);
433
- }
434
-
435
- .warning {
436
- color: var(--gv-theme-color-warning, #ff9800);
437
- }
438
- `,
439
- ];
440
- }
441
- }
442
-
443
- window.customElements.define('gv-schema-form-control', GvSchemaFormControl);
1
+ Object.defineProperty(exports,"__esModule",{value:!0}),exports.GvSchemaFormControl=void 0;const e=require("lit"),t=require("../lib/events");require("../atoms/gv-input"),require("../atoms/gv-input-message"),require("../atoms/gv-text"),require("../atoms/gv-select"),require("../atoms/gv-select-native"),require("../atoms/gv-switch"),require("../molecules/gv-code"),require("../molecules/gv-expression-language"),require("../molecules/gv-cron-editor"),require("../atoms/gv-autocomplete"),require("../organisms/gv-schema-form-array"),require("../organisms/gv-schema-form-control-object");const r=require("../lib/schema-form"),o=require("../mixins/update-after-browser");class s extends((0,o.UpdateAfterBrowser)(e.LitElement)){static get properties(){return{type:{type:String},id:{type:String,reflect:!0},name:{type:String,reflect:!0},required:{type:Boolean,reflect:!0},disabled:{type:Boolean,reflect:!0},readonly:{type:Boolean,reflect:!0},title:{type:String,reflect:!0},pattern:{type:String},control:{type:Object},errors:{type:Array},value:{type:Object,reflect:!0},skeleton:{type:Boolean,reflect:!0},hidden:{type:Boolean,reflect:!0},writeOnly:{type:Boolean,reflect:!0},compact:{type:Boolean}}}constructor(){super(),this._observedProperties=["disabled","readonly","required"]}isExpressionLanguage(){return this.control["x-schema-form"]&&null!=this.control["x-schema-form"]["expression-language"]}isCronExpression(){return this.control["x-schema-form"]&&!0===this.control["x-schema-form"]["cron-expression"]}isPassword(){return!0===this.control.writeOnly||this.control["x-schema-form"]&&null!=this.control["x-schema-form"].type&&"password"===this.control["x-schema-form"].type}getPlaceholder(){return this.control["x-schema-form"]&&this.control["x-schema-form"].placeholder?this.control["x-schema-form"].placeholder:null}isCodemirror(){return(0,r.isCodemirror)(this.control)}isObject(){return(0,r.isObject)(this.control)}isAutocomplete(){return this.control["x-schema-form"]&&null!=this.control["x-schema-form"].event&&"string"===this.control.type}isText(){return this.control["x-schema-form"]&&"text"===this.control["x-schema-form"].type&&"string"===this.control.type}getElementName(){return this.isObject()?"gv-schema-form-control-object":(this.control.enum||this.control.items&&this.control.items.enum)&&!this.isAutocomplete()?"array"===this.control.type?"gv-select":"gv-select-native":(0,r.isComplexArray)(this.control)?"gv-schema-form-array":"array"===this.control.type?"gv-button":"boolean"===this.control.type?"gv-switch":this.isExpressionLanguage()?"gv-expression-language":this.isCodemirror()?"gv-code":this.isCronExpression()?"gv-cron-editor":this.isText()?"gv-text":"gv-input"}_updateProperties(e){null!=e&&this._observedProperties.forEach((t=>{null!=this[t]&&(e[t]=this[t])}))}_renderControl(){const e=this.getElementName(),o=document.createElement(e);if(o.id=this.id,o.name=this.id,o.skeleton=this.skeleton,o.classList.add("form__control"),null==this.value&&null!=this.control.default&&(this.value=this.control.default,(0,t.dispatchCustomEvent)(this,"default-value",{value:this.value,currentTarget:o,control:this.control})),null!=this.value&&this._setValue(o),"object"===this.control.type?o.schema=this.control:(0,r.isComplexArray)(this.control)&&(o.schema=this.control.items),this._updateProperties(o),this.control.title)o.label=this.control.title,o.title=this.control.title;else{const e=this.id.split("."),t=e[e.length-1];isNaN(parseInt(t,10))&&(o.label=t,o.title=t)}this.control.pattern&&(o.pattern=this.control.pattern),"integer"===this.control.type&&(o.type="number"),this.isText()&&(o.rows=3,o.autosize=!0,o.placeholder=this.control.description);const s=this.getPlaceholder();if(this.control.enum||this.control.items&&this.control.items.enum){const e=this.control.enum||this.control.items.enum;this.control["x-schema-form"]&&this.control["x-schema-form"].titleMap?o.options=e.map((e=>({value:e,label:this.control["x-schema-form"].titleMap[e]||e}))):o.options=e,"array"===this.control.type&&(o.multiple=!0)}else this.isCodemirror()?(o.options=this.control["x-schema-form"].codemirrorOptions,null!=this.control.default&&null==o.options.value&&(o.options.value=this.control.default)):this.isExpressionLanguage()?(o.options={},o.rows=1):this.isPassword()&&(o.type="password");let i;if(this.control.description&&(o.description=this.control.description),this.compact&&(o.placeholder=o.description||o.label,o.label=null,o.description=null,o.compact=this.compact),null!=s&&(this.isExpressionLanguage()||this.isCodemirror()?o.options.placeholder=s:o.placeholder=s),o.addEventListener(`${e}:input`,this._onInput.bind(this)),this.isAutocomplete()){const e=document.createElement("gv-autocomplete");e.minChars=0,e.filter=!0,o.clearable=!0,e.id=this.id,e.appendChild(o),e.addEventListener("gv-autocomplete:select",this._onInput.bind(this)),o.addEventListener("gv-input:clear",this._onInput.bind(this)),i=e}else i=o;return null!=this.control["x-schema-form"]&&(0,t.dispatchCustomEvent)(this,"control-ready",{currentTarget:i,control:this}),i}_onInput(e){e.preventDefault(),e.stopPropagation();let r=null;r="GV-AUTOCOMPLETE"===e.target.tagName?e.detail.value:e.detail,(0,t.dispatchCustomEvent)(this,"change",{value:r,currentTarget:e.target,control:this.control})}getControls(){return[...Array.from(this.shadowRoot.querySelectorAll("gv-schema-form-control")),...Array.from(this.shadowRoot.querySelectorAll("gv-schema-form-control-array")),...Array.from(this.shadowRoot.querySelectorAll("gv-schema-form-control-object"))]}getControl(e){return null==e&&(e=this.id),this.shadowRoot.querySelector(`[id="${e}"]`)}_setValue(e){return null!=this.value&&null!=e&&("boolean"===this.control.type||"array"===this.control.type||"object"===this.control.type?e.value=this.value:e.value=this.value.toString?this.value.toString():this.value),e}async updated(e){e.has("value")&&Promise.all(this.getControls().map((e=>e.updateComplete))).then((()=>{this._setValue(this.getControl())}))}async getUpdateComplete(){await super.getUpdateComplete(),await Promise.all(this.getControls().map((e=>e.updateComplete)))}formatErrorMessage(e){let t;return t=null!=this.control.properties&&null!=this.control.properties[e.argument]?this.control.properties[e.argument].title:this.control.title,t?`<span>${e.message.replace(e.argument,t)}</span>`:`<span>${e.message}</span>`}shouldUpdate(e){if(null!=this._observedProperties.find((t=>e.has(t)))&&this._updateProperties(this.getControl()),e.has("errors")&&null!=this.errors){this.getControls().forEach((e=>{e.errors=this.errors}));return this.shadowRoot.querySelectorAll(".form__control-error").forEach((e=>e.innerHTML="")),this.errors.forEach((e=>{const t="instance"===e.property?e.argument:e.property.replace("instance.",""),r=this.shadowRoot.querySelector(`[id="${t}-error"]`);if(r){const t=document.createElement("gv-input-message");t.innerHTML=this.formatErrorMessage(e),t.level="warn",r.appendChild(t)}})),!1}return super.shouldUpdate(e)}render(){return e.html`${this._renderControl()}<div class="form__control-error" id="${this.id+"-error"}"></div>`}static get styles(){return[e.css`:host{box-sizing:border-box;margin:var(--gv-schema-form-control--m,.4rem);display:block}:host([hidden]){visibility:hidden;height:0;margin:0;padding:0;overflow:hidden}.form__control-description,.form__control-error{font-size:12px}.form__control-description{opacity:.8}.form__control-label{display:flex;flex-direction:row;border-bottom:1px solid #d9d9d9}label{margin:.2rem}.form__control-label label{flex:1;text-transform:capitalize}.form__control-array,.form__control-object{display:flex;flex-direction:column}.form__control-enum{display:flex}.form__control-array gv-button{align-self:flex-end}.form__control{position:relative}gv-code,gv-expression-language,gv-input,gv-select,gv-select-native,gv-switch{width:100%;margin:.2rem 0}gv-autocomplete:hover,gv-select-native:hover,gv-select:hover{z-index:70}.error{color:var(--gv-theme-color-error,#f44336)}.warning{color:var(--gv-theme-color-warning,#ff9800)}`]}}exports.GvSchemaFormControl=s,window.customElements.define("gv-schema-form-control",s);