@5minds/node-red-dashboard-2-processcube-dynamic-form 2.0.8 → 2.1.0-develop-7297c2-mdiwcn5m
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.
|
@@ -1,29 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
<div
|
|
2
|
+
<div class="ui-dynamic-form-footer-actions-container">
|
|
3
|
+
<div class="ui-dynamic-form-footer-actions-left">
|
|
4
4
|
<div v-for="(action, index) in actions" :key="index">
|
|
5
|
-
<v-btn
|
|
6
|
-
|
|
7
|
-
:
|
|
8
|
-
style="min-height: 36px"
|
|
9
|
-
:class="getActionButtonClass(action)"
|
|
10
|
-
:disabled="formIsFinished"
|
|
11
|
-
@click="actionCallback(action)"
|
|
12
|
-
>
|
|
5
|
+
<v-btn v-if="action.alignment === 'left' || !action.alignment" :key="index"
|
|
6
|
+
class="ui-dynamic-form-footer-action-button" :class="getActionButtonClass(action)"
|
|
7
|
+
:disabled="formIsFinished" @click="actionCallback(action)">
|
|
13
8
|
{{ action.label }}
|
|
14
9
|
</v-btn>
|
|
15
10
|
</div>
|
|
16
11
|
</div>
|
|
17
|
-
<div
|
|
12
|
+
<div class="ui-dynamic-form-footer-actions-right">
|
|
18
13
|
<div v-for="(action, index) in actions" :key="index">
|
|
19
|
-
<v-btn
|
|
20
|
-
|
|
21
|
-
:key="index"
|
|
22
|
-
style="min-height: 36px"
|
|
23
|
-
:class="getActionButtonClass(action)"
|
|
24
|
-
:disabled="formIsFinished"
|
|
25
|
-
@click="actionCallback(action)"
|
|
26
|
-
>
|
|
14
|
+
<v-btn v-if="action.alignment === 'right'" :key="index" class="ui-dynamic-form-footer-action-button"
|
|
15
|
+
:class="getActionButtonClass(action)" :disabled="formIsFinished" @click="actionCallback(action)">
|
|
27
16
|
{{ action.label }}
|
|
28
17
|
</v-btn>
|
|
29
18
|
</div>
|
|
@@ -36,12 +25,12 @@
|
|
|
36
25
|
export default {
|
|
37
26
|
name: 'UIDynamicFormFooterAction',
|
|
38
27
|
props: {
|
|
39
|
-
actions: { type: Array, default
|
|
40
|
-
actionCallback: { type: Function, default
|
|
41
|
-
formIsFinished: { type: Boolean, default
|
|
28
|
+
actions: { type: Array, default() { return [] } },
|
|
29
|
+
actionCallback: { type: Function, default(action) { } },
|
|
30
|
+
formIsFinished: { type: Boolean, default() { return false } }
|
|
42
31
|
},
|
|
43
32
|
methods: {
|
|
44
|
-
getActionButtonClass
|
|
33
|
+
getActionButtonClass(action) {
|
|
45
34
|
return action.primary === 'true' ? 'ui-dynamic-form-footer-action-primary' : 'ui-dynamic-form-footer-action-secondary'
|
|
46
35
|
}
|
|
47
36
|
}
|
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div v-if="title.length > 0">
|
|
3
|
-
<h3 :class="typeSpecificStyling"
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
@click="toggleCollapse"
|
|
10
|
-
>
|
|
11
|
-
<path :fill="style === 'default' ? 'white' : 'black'" d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"/>
|
|
3
|
+
<h3 :class="typeSpecificStyling" class="ui-dynamic-form-title-responsive"
|
|
4
|
+
style="display: flex; gap: 25px; align-items: center">
|
|
5
|
+
<svg v-if="collapsible && !collapsed" style="width: 25px; height: 25px; cursor: pointer;"
|
|
6
|
+
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" @click="toggleCollapse">
|
|
7
|
+
<path :fill="style === 'default' ? 'white' : 'black'"
|
|
8
|
+
d="M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z" />
|
|
12
9
|
</svg>
|
|
13
|
-
<svg
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
viewBox="0 0 320 512"
|
|
18
|
-
@click="toggleCollapse"
|
|
19
|
-
>
|
|
20
|
-
<path :fill="style === 'default' ? 'white' : 'black'" d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"/>
|
|
10
|
+
<svg v-if="collapsible && collapsed" style="width: 25px; height: 25px; cursor: pointer;"
|
|
11
|
+
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512" @click="toggleCollapse">
|
|
12
|
+
<path :fill="style === 'default' ? 'white' : 'black'"
|
|
13
|
+
d="M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z" />
|
|
21
14
|
</svg>
|
|
22
|
-
<div :style="{width: 'fit-content', display: style === 'default' ? '' : 'flex'}">
|
|
15
|
+
<div :style="{ width: 'fit-content', display: style === 'default' ? '' : 'flex' }">
|
|
23
16
|
<img v-if="titleIcon.length > 0" :src="titleIcon" style="padding-right: 16px;">
|
|
24
17
|
<span :style="customStyles">{{ title }}</span>
|
|
25
18
|
<hr v-if="style === 'default'">
|
|
@@ -33,16 +26,16 @@
|
|
|
33
26
|
export default {
|
|
34
27
|
name: 'UIDynamicFormTitleText',
|
|
35
28
|
props: {
|
|
36
|
-
style: { type: String, default
|
|
37
|
-
title: { type: String, default
|
|
38
|
-
customStyles: { type: String, default
|
|
39
|
-
collapsible: { type: Boolean, default
|
|
40
|
-
collapsed: { type: Boolean, default
|
|
41
|
-
titleIcon: { type: String, default
|
|
42
|
-
toggleCollapse: { type: Function, default
|
|
29
|
+
style: { type: String, default() { return 'default' } },
|
|
30
|
+
title: { type: String, default() { return '' } },
|
|
31
|
+
customStyles: { type: String, default() { return '' } },
|
|
32
|
+
collapsible: { type: Boolean, default() { return false } },
|
|
33
|
+
collapsed: { type: Boolean, default() { return false } },
|
|
34
|
+
titleIcon: { type: String, default() { return '' } },
|
|
35
|
+
toggleCollapse: { type: Function, default() { } }
|
|
43
36
|
},
|
|
44
37
|
computed: {
|
|
45
|
-
typeSpecificStyling
|
|
38
|
+
typeSpecificStyling() {
|
|
46
39
|
return `ui-dynamic-form-title-${this.style}`
|
|
47
40
|
}
|
|
48
41
|
}
|
|
@@ -15,9 +15,11 @@
|
|
|
15
15
|
:collapsed="collapsed" :toggleCollapse="toggleCollapse" />
|
|
16
16
|
<Transition name="cardCollapse">
|
|
17
17
|
<div v-if="!collapsed">
|
|
18
|
-
<div className="ui-dynamic-form-formfield-positioner" :style="props.inner_card_styling"
|
|
18
|
+
<div className="ui-dynamic-form-formfield-positioner" :style="props.inner_card_styling"
|
|
19
|
+
:data-columns="props.form_columns || 1">
|
|
19
20
|
<FormKit id="form" type="group">
|
|
20
21
|
<v-row v-for="(field, index) in fields()" :key="field"
|
|
22
|
+
:class="field.type === 'header' ? 'ui-dynamic-form-header-row' : ''"
|
|
21
23
|
:style="getRowWidthStyling(field, index)">
|
|
22
24
|
<v-col cols="12">
|
|
23
25
|
<component :is="createComponent(field).type"
|
|
@@ -779,7 +781,7 @@ export default {
|
|
|
779
781
|
if (field.type === 'header') {
|
|
780
782
|
style += 'flex-basis: 100%;'
|
|
781
783
|
} else {
|
|
782
|
-
style += `flex-basis:
|
|
784
|
+
style += `flex-basis: 100%;`
|
|
783
785
|
}
|
|
784
786
|
return style
|
|
785
787
|
},
|
|
@@ -130,6 +130,42 @@ code {
|
|
|
130
130
|
padding: 8px;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
+
.ui-dynamic-form-footer-actions-container {
|
|
134
|
+
display: flex;
|
|
135
|
+
justify-content: space-between;
|
|
136
|
+
align-items: center;
|
|
137
|
+
gap: 12px;
|
|
138
|
+
width: 100%;
|
|
139
|
+
box-sizing: border-box;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.ui-dynamic-form-footer-actions-left,
|
|
143
|
+
.ui-dynamic-form-footer-actions-right {
|
|
144
|
+
display: flex;
|
|
145
|
+
gap: 8px;
|
|
146
|
+
align-items: center;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.ui-dynamic-form-footer-action-button {
|
|
150
|
+
min-height: 36px;
|
|
151
|
+
padding: 8px 12px;
|
|
152
|
+
box-sizing: border-box;
|
|
153
|
+
flex-shrink: 0;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
@media screen and (min-width: 600px) {
|
|
157
|
+
.ui-dynamic-form-footer-actions-container {
|
|
158
|
+
flex-wrap: wrap;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.ui-dynamic-form-footer-action-button {
|
|
162
|
+
max-width: 200px;
|
|
163
|
+
white-space: nowrap;
|
|
164
|
+
overflow: hidden;
|
|
165
|
+
text-overflow: ellipsis;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
133
169
|
.ui-dynamic-form-wrapper {
|
|
134
170
|
--fk-color-primary: rgb(var(--v-theme-primary)) !important;
|
|
135
171
|
--fk-color-border: rgb(var(--v-theme-group-outline)); /* Does not work somehow */
|
|
@@ -146,6 +182,202 @@ code {
|
|
|
146
182
|
}
|
|
147
183
|
}
|
|
148
184
|
|
|
185
|
+
@media only screen and (max-width: 599px) {
|
|
186
|
+
.ui-dynamic-form-external-sizing-wrapper {
|
|
187
|
+
max-width: 100vw;
|
|
188
|
+
margin: 0;
|
|
189
|
+
padding: 0;
|
|
190
|
+
overflow-x: hidden;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.ui-dynamic-form-wrapper {
|
|
194
|
+
padding: 8px;
|
|
195
|
+
margin: 0;
|
|
196
|
+
overflow-x: hidden;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.ui-dynamic-form-formfield-positioner {
|
|
200
|
+
padding: 16px;
|
|
201
|
+
padding-top: 8px;
|
|
202
|
+
max-height: calc(100vh - 200px);
|
|
203
|
+
column-gap: 0px;
|
|
204
|
+
flex-direction: column;
|
|
205
|
+
border-left: none;
|
|
206
|
+
border-right: none;
|
|
207
|
+
overflow-x: hidden;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.ui-dynamic-form-title-default {
|
|
211
|
+
padding: 16px;
|
|
212
|
+
font-size: 24px;
|
|
213
|
+
border-left: none;
|
|
214
|
+
border-right: none;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.ui-dynamic-form-title-minimal {
|
|
218
|
+
padding: 12px;
|
|
219
|
+
border-left: none;
|
|
220
|
+
border-right: none;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.ui-dynamic-form-title-outside {
|
|
224
|
+
padding: 12px 16px;
|
|
225
|
+
font-size: 20px;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
.ui-dynamic-form-footer-common {
|
|
229
|
+
padding: 12px 16px;
|
|
230
|
+
gap: 12px;
|
|
231
|
+
margin: 0;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
.input-light,
|
|
235
|
+
.input-default,
|
|
236
|
+
.input-dark {
|
|
237
|
+
font-size: 16px;
|
|
238
|
+
padding: 12px 8px;
|
|
239
|
+
min-height: 44px;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
.ui-dynamic-form-input-label {
|
|
243
|
+
font-size: 16px;
|
|
244
|
+
padding-bottom: 8px;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.ui-dynamic-form-footer-actions-container {
|
|
248
|
+
flex-direction: column;
|
|
249
|
+
gap: 12px;
|
|
250
|
+
align-items: stretch;
|
|
251
|
+
width: 100%;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.ui-dynamic-form-footer-actions-left,
|
|
255
|
+
.ui-dynamic-form-footer-actions-right {
|
|
256
|
+
flex-direction: column;
|
|
257
|
+
gap: 8px;
|
|
258
|
+
width: 100%;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
.ui-dynamic-form-footer-actions-left > div,
|
|
262
|
+
.ui-dynamic-form-footer-actions-right > div {
|
|
263
|
+
width: 100%;
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.ui-dynamic-form-footer-action-button {
|
|
267
|
+
min-height: 44px;
|
|
268
|
+
padding: 12px 16px;
|
|
269
|
+
font-size: 16px;
|
|
270
|
+
width: 100%;
|
|
271
|
+
box-sizing: border-box;
|
|
272
|
+
white-space: nowrap;
|
|
273
|
+
overflow: hidden;
|
|
274
|
+
text-overflow: ellipsis;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.ui-dynamic-form-footer-action-button .v-btn__content {
|
|
278
|
+
white-space: nowrap !important;
|
|
279
|
+
overflow: hidden !important;
|
|
280
|
+
text-overflow: ellipsis !important;
|
|
281
|
+
max-width: 100% !important;
|
|
282
|
+
display: block !important;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.ui-dynamic-form-footer-action-primary,
|
|
286
|
+
.ui-dynamic-form-footer-action-secondary {
|
|
287
|
+
min-height: 44px;
|
|
288
|
+
font-size: 16px;
|
|
289
|
+
width: 100%;
|
|
290
|
+
box-sizing: border-box;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.ui-dynamic-form-footer-action-primary .v-btn__content,
|
|
294
|
+
.ui-dynamic-form-footer-action-secondary .v-btn__content {
|
|
295
|
+
white-space: nowrap !important;
|
|
296
|
+
overflow: hidden !important;
|
|
297
|
+
text-overflow: ellipsis !important;
|
|
298
|
+
max-width: 100% !important;
|
|
299
|
+
display: block !important;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.ui-dynamic-form-formfield-positioner .v-row {
|
|
303
|
+
margin-bottom: 16px;
|
|
304
|
+
flex-basis: 100% !important;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
.ui-dynamic-form-formfield-positioner select,
|
|
308
|
+
.ui-dynamic-form-formfield-positioner textarea {
|
|
309
|
+
font-size: 16px;
|
|
310
|
+
min-height: 44px;
|
|
311
|
+
padding: 12px 8px;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
.ui-dynamic-form-formfield-positioner input[type="checkbox"],
|
|
315
|
+
.ui-dynamic-form-formfield-positioner input[type="radio"] {
|
|
316
|
+
width: 20px;
|
|
317
|
+
height: 20px;
|
|
318
|
+
margin-right: 8px;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
.ui-dynamic-form-formfield-positioner input[type="file"] {
|
|
322
|
+
font-size: 16px;
|
|
323
|
+
padding: 12px 8px;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.ui-dynamic-form-title-default h3 svg,
|
|
327
|
+
.ui-dynamic-form-title-minimal h3 svg,
|
|
328
|
+
.ui-dynamic-form-title-outside h3 svg {
|
|
329
|
+
width: 20px;
|
|
330
|
+
height: 20px;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.ui-dynamic-form-title-responsive {
|
|
334
|
+
gap: 15px !important;
|
|
335
|
+
flex-wrap: wrap;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.ui-dynamic-form-title-responsive img {
|
|
339
|
+
max-width: 32px;
|
|
340
|
+
height: auto;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.ui-dynamic-form-formfield-positioner {
|
|
344
|
+
-webkit-overflow-scrolling: touch;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
@media only screen and (max-width: 480px) {
|
|
349
|
+
.ui-dynamic-form-formfield-positioner {
|
|
350
|
+
padding: 12px;
|
|
351
|
+
padding-top: 4px;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.ui-dynamic-form-title-default {
|
|
355
|
+
padding: 12px;
|
|
356
|
+
font-size: 20px;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.ui-dynamic-form-title-outside {
|
|
360
|
+
font-size: 18px;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.input-light,
|
|
364
|
+
.input-default,
|
|
365
|
+
.input-dark {
|
|
366
|
+
font-size: 16px;
|
|
367
|
+
padding: 10px 6px;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.ui-dynamic-form-input-label {
|
|
371
|
+
font-size: 14px;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
.ui-dynamic-form-footer-action-button {
|
|
375
|
+
min-height: 48px;
|
|
376
|
+
font-size: 16px;
|
|
377
|
+
padding: 12px 16px;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
|
|
149
381
|
.cardCollapse-leave-active {
|
|
150
382
|
transition: max-height 0.5s ease, opacity 0.2s ease;
|
|
151
383
|
max-height: 100vh;
|
|
@@ -176,6 +408,28 @@ code {
|
|
|
176
408
|
border-radius: 0px 0px 6px 6px;
|
|
177
409
|
}
|
|
178
410
|
|
|
411
|
+
@media (min-width: 600px) {
|
|
412
|
+
.ui-dynamic-form-formfield-positioner .v-row:not(.ui-dynamic-form-header-row) {
|
|
413
|
+
flex-basis: calc(50% - 10px); /* Default 2 columns, adjust based on form_columns */
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
.ui-dynamic-form-formfield-positioner[data-columns="1"] .v-row:not(.ui-dynamic-form-header-row) {
|
|
417
|
+
flex-basis: 100%;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
.ui-dynamic-form-formfield-positioner[data-columns="2"] .v-row:not(.ui-dynamic-form-header-row) {
|
|
421
|
+
flex-basis: calc(50% - 10px);
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.ui-dynamic-form-formfield-positioner[data-columns="3"] .v-row:not(.ui-dynamic-form-header-row) {
|
|
425
|
+
flex-basis: calc(33.333% - 14px);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.ui-dynamic-form-formfield-positioner[data-columns="4"] .v-row:not(.ui-dynamic-form-header-row) {
|
|
429
|
+
flex-basis: calc(25% - 15px);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
179
433
|
.ui-dynamic-form-formfield-positioner h1,
|
|
180
434
|
.ui-dynamic-form-formfield-positioner h2,
|
|
181
435
|
.ui-dynamic-form-formfield-positioner h3 {
|