@bpmn-io/form-js-viewer 0.7.2 → 0.8.0

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 (49) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +158 -158
  3. package/dist/assets/form-js.css +339 -238
  4. package/dist/index.cjs +688 -145
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.es.js +685 -147
  7. package/dist/index.es.js.map +1 -1
  8. package/dist/types/Form.d.ts +136 -136
  9. package/dist/types/core/EventBus.d.ts +1 -1
  10. package/dist/types/core/FormFieldRegistry.d.ts +17 -17
  11. package/dist/types/core/Validator.d.ts +7 -7
  12. package/dist/types/core/index.d.ts +16 -16
  13. package/dist/types/import/Importer.d.ts +43 -43
  14. package/dist/types/import/index.d.ts +5 -5
  15. package/dist/types/index.d.ts +18 -18
  16. package/dist/types/render/FormFields.d.ts +5 -5
  17. package/dist/types/render/Renderer.d.ts +23 -23
  18. package/dist/types/render/components/Description.d.ts +1 -1
  19. package/dist/types/render/components/Errors.d.ts +1 -1
  20. package/dist/types/render/components/FormComponent.d.ts +1 -1
  21. package/dist/types/render/components/FormField.d.ts +1 -1
  22. package/dist/types/render/components/Label.d.ts +1 -1
  23. package/dist/types/render/components/PoweredBy.d.ts +1 -1
  24. package/dist/types/render/components/Sanitizer.d.ts +7 -7
  25. package/dist/types/render/components/Util.d.ts +6 -4
  26. package/dist/types/render/components/form-fields/Button.d.ts +11 -11
  27. package/dist/types/render/components/form-fields/Checkbox.d.ts +13 -10
  28. package/dist/types/render/components/form-fields/Checklist.d.ts +12 -0
  29. package/dist/types/render/components/form-fields/Default.d.ts +9 -9
  30. package/dist/types/render/components/form-fields/Number.d.ts +13 -10
  31. package/dist/types/render/components/form-fields/Radio.d.ts +12 -15
  32. package/dist/types/render/components/form-fields/Select.d.ts +12 -15
  33. package/dist/types/render/components/form-fields/Taglist.d.ts +12 -0
  34. package/dist/types/render/components/form-fields/Text.d.ts +10 -10
  35. package/dist/types/render/components/form-fields/Textfield.d.ts +13 -10
  36. package/dist/types/render/components/form-fields/parts/DropdownList.d.ts +1 -0
  37. package/dist/types/render/components/index.d.ts +13 -11
  38. package/dist/types/render/context/FormContext.d.ts +12 -12
  39. package/dist/types/render/context/FormRenderContext.d.ts +6 -6
  40. package/dist/types/render/context/index.d.ts +2 -2
  41. package/dist/types/render/hooks/useKeyDownAction.d.ts +1 -0
  42. package/dist/types/render/hooks/useService.d.ts +1 -1
  43. package/dist/types/render/hooks/useValuesAsync.d.ts +28 -0
  44. package/dist/types/render/index.d.ts +11 -11
  45. package/dist/types/types.d.ts +35 -35
  46. package/dist/types/util/form.d.ts +6 -6
  47. package/dist/types/util/index.d.ts +24 -16
  48. package/dist/types/util/injector.d.ts +2 -1
  49. package/package.json +6 -5
@@ -1,238 +1,339 @@
1
- /**
2
- * Theming
3
- */
4
- .fjs-container {
5
- --color-grey-225-10-15: hsl(225, 10%, 15%);
6
- --color-grey-225-10-35: hsl(225, 10%, 35%);
7
- --color-grey-225-10-55: hsl(225, 10%, 55%);
8
- --color-grey-225-10-75: hsl(225, 10%, 75%);
9
- --color-grey-225-10-80: hsl(225, 10%, 80%);
10
- --color-grey-225-10-85: hsl(225, 10%, 85%);
11
- --color-grey-225-10-90: hsl(225, 10%, 90%);
12
- --color-grey-225-10-95: hsl(225, 10%, 95%);
13
- --color-grey-225-10-97: hsl(225, 10%, 97%);
14
-
15
- --color-blue-205-100-45: hsl(205, 100%, 45%);
16
- --color-blue-205-100-50: hsl(205, 100%, 50%);
17
- --color-blue-205-100-80: hsl(205, 100%, 80%);
18
- --color-blue-205-100-95: hsl(205, 100%, 95%);
19
-
20
- --color-green-150-86-44: hsl(150, 86%, 44%);
21
-
22
- --color-red-360-100-40: hsl(360, 100%, 40%);
23
- --color-red-360-100-45: hsl(360, 100%, 45%);
24
- --color-red-360-100-92: hsl(360, 100%, 92%);
25
- --color-red-360-100-97: hsl(360, 100%, 97%);
26
-
27
- --color-white: hsl(0, 0%, 100%);
28
- --color-black: hsl(0, 0%, 0%);
29
-
30
- --color-background: var(--color-white);
31
- --color-background-disabled: var(--color-grey-225-10-95);
32
- --color-text: var(--color-grey-225-10-15);
33
- --color-text-light: var(--color-grey-225-10-35);
34
- --color-text-lighter: var(--color-grey-225-10-55);
35
- --color-text-inverted: var(--color-white);
36
- --color-borders: var(--color-grey-225-10-55);
37
- --color-borders-disabled: var(--color-grey-225-10-75);
38
- --color-warning: var(--color-red-360-100-45);
39
- --color-accent: var(--color-blue-205-100-45);
40
- --color-accent-dark: var(--color-blue-205-100-45);
41
-
42
- --font-family: 'IBM Plex Sans', sans-serif;
43
-
44
- height: 100%;
45
- }
46
-
47
- /**
48
- * Layout styles
49
- */
50
- .fjs-container .fjs-vertical-layout {
51
- display: flex;
52
- flex-direction: column;
53
- }
54
-
55
- .fjs-container .fjs-columns {
56
- display: flex;
57
- flex-direction: row;
58
- }
59
-
60
- .fjs-container .fjs-column {
61
- flex-grow: 1;
62
- }
63
-
64
- .fjs-container img {
65
- max-width: 100%;
66
- }
67
-
68
- /**
69
- * Visual styles
70
- */
71
- .fjs-container .fjs-form {
72
- font-family: var(--font-family);
73
- font-size: 14px;
74
- line-height: 1.3;
75
- font-weight: 400;
76
-
77
- color: var(--color-text);
78
- background-color: var(--color-background);
79
-
80
- position: relative;
81
- }
82
-
83
- .fjs-container .fjs-form * {
84
- box-sizing: border-box;
85
- }
86
-
87
- .fjs-container .fjs-form-field {
88
- margin: 16px;
89
- }
90
-
91
- .fjs-container .fjs-form-field-placeholder {
92
- color: var(--color-text-light);
93
- }
94
-
95
- .fjs-container .fjs-input,
96
- .fjs-container .fjs-textarea,
97
- .fjs-container .fjs-select {
98
- border-color: var(--color-borders);
99
- background-color: var(--color-background);
100
- }
101
- .fjs-container .fjs-input::placeholder,
102
- .fjs-container .fjs-textarea::placeholder,
103
- .fjs-container .fjs-select > option:disabled,
104
- .fjs-container .fjs-select [disabled] {
105
- font-style: italic;
106
- letter-spacing: .25px;
107
-
108
- color: var(--color-text-lighter);
109
- }
110
-
111
- .fjs-container .fjs-form-field-label {
112
- display: flex;
113
- align-items: center;
114
- }
115
-
116
- .fjs-container .fjs-form-field-description {
117
- display: block;
118
- color: var(--color-text-lighter);
119
- }
120
-
121
- .fjs-container .fjs-form-field-label,
122
- .fjs-container .fjs-form-field-description {
123
- margin: 4px 0;
124
- }
125
-
126
- .fjs-container .fjs-form-field.required label::after,
127
- .fjs-container .fjs-form-field.required .group-title::after {
128
- content: "*";
129
- }
130
-
131
- .fjs-container .fjs-checkbox.group.required label::after,
132
- .fjs-container .fjs-radio.required label::after {
133
- display: none;
134
- }
135
-
136
- .fjs-container .fjs-input[type=text],
137
- .fjs-container .fjs-input[type=number],
138
- .fjs-container .fjs-button[type=submit],
139
- .fjs-container .fjs-button[type=reset],
140
- .fjs-container .fjs-textarea,
141
- .fjs-container .fjs-select {
142
- display: block;
143
- width: 100%;
144
- padding: 8px;
145
- margin: 4px 0;
146
- border-width: 1px;
147
- border-style: solid;
148
- border-radius: 3px;
149
- }
150
-
151
- .fjs-container .fjs-textarea {
152
- height: 90px;
153
- }
154
-
155
- .fjs-container .fjs-radio {
156
- display: flex;
157
- flex-direction: column;
158
- }
159
-
160
- .fjs-container .fjs-input[type=checkbox],
161
- .fjs-container .fjs-input[type=radio] {
162
- margin: 6px 10px 6px 4px;
163
- }
164
-
165
- .fjs-container .fjs-button[type=submit] {
166
- color: var(--color-text-inverted);
167
- background-color: var(--color-accent);
168
- border-color: var(--color-accent);
169
- }
170
-
171
- .fjs-container .fjs-button[type=reset] {
172
- color: var(--color-text);
173
- background-color: transparent;
174
- border-color: var(--color-borders);
175
- }
176
-
177
- .fjs-container .fjs-button[type=submit],
178
- .fjs-container .fjs-button[type=reset] {
179
- min-width: 100px;
180
- width: auto;
181
- }
182
-
183
- .fjs-container .fjs-button[type=submit] {
184
- font-weight: 600;
185
- }
186
-
187
- .fjs-container .fjs-input[type=text]:focus,
188
- .fjs-container .fjs-input[type=number]:focus,
189
- .fjs-container .fjs-button[type=submit]:focus,
190
- .fjs-container .fjs-button[type=reset]:focus,
191
- .fjs-container .fjs-textarea:focus,
192
- .fjs-container .fjs-select:focus {
193
- outline: none;
194
- padding: 7px;
195
- border-width: 2px;
196
- }
197
-
198
- .fjs-container .fjs-button[type=submit]:focus {
199
- border-color: var(--color-accent-dark);
200
- }
201
-
202
- .fjs-container .fjs-input:disabled,
203
- .fjs-container .fjs-textarea:disabled,
204
- .fjs-container .fjs-select:disabled {
205
- background-color: var(--color-background-disabled);
206
- border-color: var(--color-borders-disabled);
207
- }
208
-
209
- .fjs-container .fjs-button[type=submit]:disabled,
210
- .fjs-container .fjs-button[type=reset]:disabled {
211
- color: var(--text-light);
212
- background-color: var(--color-background-disabled);
213
- border-color: var(--color-borders-disabled);
214
- }
215
-
216
- .fjs-container .fjs-form-field.fjs-has-errors .fjs-input,
217
- .fjs-container .fjs-form-field.fjs-has-errors .fjs-select,
218
- .fjs-container .fjs-form-field.fjs-has-errors .fjs-textarea {
219
- border-color: var(--color-warning);
220
- }
221
-
222
- .fjs-container .fjs-form-field-error {
223
- color: var(--color-warning);
224
- }
225
-
226
- .fjs-container .fjs-form-field-error > ul {
227
- list-style-type: none;
228
- margin: 0;
229
- padding: 0;
230
- }
231
-
232
- .fjs-container .fjs-form-field-error > ul > li {
233
- list-style-type: none;
234
- }
235
-
236
- .fjs-container .fjs-form-field-text a {
237
- color: var(--color-blue-205-100-45);
238
- }
1
+ /**
2
+ * Theming
3
+ */
4
+ .fjs-container {
5
+ --color-grey-225-10-15: hsl(225, 10%, 15%);
6
+ --color-grey-225-10-35: hsl(225, 10%, 35%);
7
+ --color-grey-225-10-55: hsl(225, 10%, 55%);
8
+ --color-grey-225-10-75: hsl(225, 10%, 75%);
9
+ --color-grey-225-10-80: hsl(225, 10%, 80%);
10
+ --color-grey-225-10-85: hsl(225, 10%, 85%);
11
+ --color-grey-225-10-90: hsl(225, 10%, 90%);
12
+ --color-grey-225-10-95: hsl(225, 10%, 95%);
13
+ --color-grey-225-10-97: hsl(225, 10%, 97%);
14
+
15
+ --color-blue-205-100-45: hsl(205, 100%, 45%);
16
+ --color-blue-205-100-50: hsl(205, 100%, 50%);
17
+ --color-blue-205-100-80: hsl(205, 100%, 80%);
18
+ --color-blue-205-100-95: hsl(205, 100%, 95%);
19
+
20
+ --color-green-150-86-44: hsl(150, 86%, 44%);
21
+
22
+ --color-red-360-100-40: hsl(360, 100%, 40%);
23
+ --color-red-360-100-45: hsl(360, 100%, 45%);
24
+ --color-red-360-100-92: hsl(360, 100%, 92%);
25
+ --color-red-360-100-97: hsl(360, 100%, 97%);
26
+
27
+ --color-white: hsl(0, 0%, 100%);
28
+ --color-black: hsl(0, 0%, 0%);
29
+
30
+ --color-background: var(--color-white);
31
+ --color-background-disabled: var(--color-grey-225-10-95);
32
+ --color-text: var(--color-grey-225-10-15);
33
+ --color-text-light: var(--color-grey-225-10-35);
34
+ --color-text-lighter: var(--color-grey-225-10-55);
35
+ --color-text-inverted: var(--color-white);
36
+ --color-borders: var(--color-grey-225-10-55);
37
+ --color-borders-disabled: var(--color-grey-225-10-75);
38
+ --color-warning: var(--color-red-360-100-45);
39
+ --color-accent: var(--color-blue-205-100-45);
40
+ --color-accent-dark: var(--color-blue-205-100-45);
41
+
42
+ --font-family: 'IBM Plex Sans', sans-serif;
43
+
44
+ height: 100%;
45
+ }
46
+
47
+ /**
48
+ * Layout styles
49
+ */
50
+ .fjs-container .fjs-vertical-layout {
51
+ display: flex;
52
+ flex-direction: column;
53
+ }
54
+
55
+ .fjs-container .fjs-columns {
56
+ display: flex;
57
+ flex-direction: row;
58
+ }
59
+
60
+ .fjs-container .fjs-column {
61
+ flex-grow: 1;
62
+ }
63
+
64
+ .fjs-container img {
65
+ max-width: 100%;
66
+ }
67
+
68
+ /**
69
+ * Visual styles
70
+ */
71
+ .fjs-container .fjs-form {
72
+ font-family: var(--font-family);
73
+ font-size: 14px;
74
+ line-height: 1.3;
75
+ font-weight: 400;
76
+
77
+ color: var(--color-text);
78
+ background-color: var(--color-background);
79
+
80
+ position: relative;
81
+ }
82
+
83
+ .fjs-container .fjs-form * {
84
+ box-sizing: border-box;
85
+ }
86
+
87
+ .fjs-container .fjs-form-field {
88
+ margin: 16px;
89
+ }
90
+
91
+ .fjs-container .fjs-form-field-placeholder {
92
+ color: var(--color-text-light);
93
+ }
94
+
95
+ .fjs-container .fjs-input,
96
+ .fjs-container .fjs-textarea,
97
+ .fjs-container .fjs-select {
98
+ border-color: var(--color-borders);
99
+ background-color: var(--color-background);
100
+ }
101
+ .fjs-container .fjs-input::placeholder,
102
+ .fjs-container .fjs-textarea::placeholder,
103
+ .fjs-container .fjs-select > option:disabled,
104
+ .fjs-container .fjs-select [disabled] {
105
+ font-style: italic;
106
+ letter-spacing: 0.25px;
107
+ color: var(--color-text-lighter);
108
+ }
109
+
110
+ .fjs-container .fjs-form-field-label {
111
+ display: flex;
112
+ align-items: center;
113
+ }
114
+
115
+ .fjs-container .fjs-form-field-description {
116
+ display: block;
117
+ color: var(--color-text-lighter);
118
+ }
119
+
120
+ .fjs-container .fjs-form-field-label,
121
+ .fjs-container .fjs-form-field-description {
122
+ margin: 4px 0;
123
+ }
124
+
125
+ .fjs-container .fjs-form-field.required label::after,
126
+ .fjs-container .fjs-form-field.required .group-title::after {
127
+ content: '*';
128
+ }
129
+
130
+ .fjs-container .fjs-checkbox.group.required label::after,
131
+ .fjs-container .fjs-radio.required label::after {
132
+ display: none;
133
+ }
134
+
135
+ .fjs-container .fjs-input[type='text'],
136
+ .fjs-container .fjs-input[type='number'],
137
+ .fjs-container .fjs-button[type='submit'],
138
+ .fjs-container .fjs-button[type='reset'],
139
+ .fjs-container .fjs-textarea,
140
+ .fjs-container .fjs-select {
141
+ display: block;
142
+ width: 100%;
143
+ padding: 8px;
144
+ margin: 4px 0;
145
+ border-width: 1px;
146
+ border-style: solid;
147
+ border-radius: 3px;
148
+ }
149
+
150
+ .fjs-container .fjs-textarea {
151
+ height: 90px;
152
+ }
153
+
154
+ .fjs-container .fjs-radio {
155
+ display: flex;
156
+ flex-direction: column;
157
+ }
158
+
159
+ .fjs-container .fjs-input[type='checkbox'],
160
+ .fjs-container .fjs-input[type='radio'] {
161
+ margin: 6px 10px 6px 4px;
162
+ }
163
+
164
+ .fjs-container .fjs-button[type='submit'] {
165
+ color: var(--color-text-inverted);
166
+ background-color: var(--color-accent);
167
+ border-color: var(--color-accent);
168
+ }
169
+
170
+ .fjs-container .fjs-button[type='reset'] {
171
+ color: var(--color-text);
172
+ background-color: transparent;
173
+ border-color: var(--color-borders);
174
+ }
175
+
176
+ .fjs-container .fjs-button[type='submit'],
177
+ .fjs-container .fjs-button[type='reset'] {
178
+ min-width: 100px;
179
+ width: auto;
180
+ }
181
+
182
+ .fjs-container .fjs-button[type='submit'] {
183
+ font-weight: 600;
184
+ }
185
+
186
+ .fjs-container .fjs-input[type='text']:focus,
187
+ .fjs-container .fjs-input[type='number']:focus,
188
+ .fjs-container .fjs-button[type='submit']:focus,
189
+ .fjs-container .fjs-button[type='reset']:focus,
190
+ .fjs-container .fjs-textarea:focus,
191
+ .fjs-container .fjs-select:focus {
192
+ outline: var(--color-borders) solid 1px;
193
+ }
194
+
195
+ .fjs-container .fjs-button[type='submit']:focus {
196
+ border-color: var(--color-accent-dark);
197
+ }
198
+
199
+ .fjs-container .fjs-input:disabled,
200
+ .fjs-container .fjs-textarea:disabled,
201
+ .fjs-container .fjs-select:disabled {
202
+ background-color: var(--color-background-disabled);
203
+ border-color: var(--color-borders-disabled);
204
+ }
205
+
206
+ .fjs-container .fjs-button[type='submit']:disabled,
207
+ .fjs-container .fjs-button[type='reset']:disabled {
208
+ color: var(--text-light);
209
+ background-color: var(--color-background-disabled);
210
+ border-color: var(--color-borders-disabled);
211
+ }
212
+
213
+ .fjs-container .fjs-form-field.fjs-has-errors .fjs-input,
214
+ .fjs-container .fjs-form-field.fjs-has-errors .fjs-select,
215
+ .fjs-container .fjs-form-field.fjs-has-errors .fjs-textarea {
216
+ border-color: var(--color-warning);
217
+ }
218
+
219
+ .fjs-container .fjs-form-field-error {
220
+ color: var(--color-warning);
221
+ }
222
+
223
+ .fjs-container .fjs-form-field-error > ul {
224
+ list-style-type: none;
225
+ margin: 0;
226
+ padding: 0;
227
+ }
228
+
229
+ .fjs-container .fjs-form-field-error > ul > li {
230
+ list-style-type: none;
231
+ }
232
+
233
+ .fjs-container .fjs-form-field-text a {
234
+ color: var(--color-blue-205-100-45);
235
+ }
236
+
237
+ .fjs-container .fjs-taglist-anchor {
238
+ position: relative;
239
+ }
240
+
241
+ .fjs-container .fjs-taglist {
242
+ display: flex;
243
+ flex-wrap: wrap;
244
+ gap: 5px;
245
+ border: var(--color-borders) solid 1px;
246
+ border-radius: 3px;
247
+ padding: 5px;
248
+ background-color: var(--color-background);
249
+ }
250
+
251
+ .fjs-container .fjs-taglist:focus-within {
252
+ outline: var(--color-borders) solid 1px;
253
+ }
254
+
255
+ .fjs-container .fjs-taglist.disabled {
256
+ border: var(--color-borders-disabled) solid 1px;
257
+ background-color: var(--color-background-disabled);
258
+ }
259
+
260
+ .fjs-container .fjs-taglist .fjs-taglist-tag {
261
+ display: flex;
262
+ overflow: hidden;
263
+ user-select: none;
264
+ border-radius: 2px;
265
+ background-color: var(--color-grey-225-10-90);
266
+ }
267
+
268
+ .fjs-container .fjs-taglist .fjs-taglist-tag .fjs-taglist-tag-label {
269
+ padding: 2px 6px 2px 8px;
270
+ }
271
+
272
+ .fjs-container .fjs-taglist .fjs-taglist-tag .fjs-taglist-tag-remove {
273
+ overflow: clip;
274
+ width: 22px;
275
+ height: 22px;
276
+ text-align: center;
277
+ line-height: 28px;
278
+ background-color: var(--color-grey-225-10-80);
279
+ }
280
+
281
+ .fjs-container .fjs-taglist .fjs-taglist-tag .fjs-taglist-tag-remove svg {
282
+ opacity: 0.6;
283
+ }
284
+
285
+ .fjs-container .fjs-taglist .fjs-taglist-tag .fjs-taglist-tag-remove:hover {
286
+ background-color: var(--color-grey-225-10-75);
287
+ }
288
+
289
+ .fjs-container .fjs-taglist .fjs-taglist-tag .fjs-taglist-tag-remove:hover > svg {
290
+ opacity: 1;
291
+ }
292
+
293
+ .fjs-container .fjs-taglist .fjs-taglist-input {
294
+ border: none;
295
+ background-color: transparent;
296
+ min-width: 100px;
297
+ height: 22px;
298
+ flex-grow: 1;
299
+ }
300
+
301
+ .fjs-container .fjs-taglist .fjs-taglist-input:focus-visible {
302
+ outline: none;
303
+ }
304
+
305
+ .fjs-container .fjs-taglist .fjs-taglist-dropdown-anchor {
306
+ position: relative;
307
+ }
308
+
309
+ .fjs-container .fjs-dropdownlist {
310
+ position: absolute;
311
+ user-select: none;
312
+ overflow-y: auto;
313
+ scroll-behavior: smooth;
314
+ width: 100%;
315
+ border-radius: 3px;
316
+ margin-top: 3px;
317
+ box-shadow: 0px 0px 5px var(--color-grey-225-10-85);
318
+ background-color: var(--color-white);
319
+ }
320
+
321
+ .fjs-container .fjs-dropdownlist .fjs-dropdownlist-item {
322
+ padding: 6px 8px;
323
+ border-bottom: 1px solid var(--color-grey-225-10-90);
324
+ color: var(--color-grey-225-10-35);
325
+ }
326
+
327
+ .fjs-container .fjs-dropdownlist .fjs-dropdownlist-item:last-child {
328
+ border-bottom: none;
329
+ }
330
+
331
+ .fjs-container .fjs-dropdownlist .fjs-dropdownlist-item.focused {
332
+ background-color: var(--color-grey-225-10-90);
333
+ color: var(--color-black);
334
+ }
335
+
336
+ .fjs-container .fjs-dropdownlist .fjs-dropdownlist-empty {
337
+ padding: 6px 8px;
338
+ color: var(--color-text-lighter);
339
+ }