@5minds/node-red-dashboard-2-processcube-dynamic-form 2.0.8-file-preview-eccc05-mdiiszar → 2.0.8-file-preview-3eb8ad-mdijpkne

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 style="display: flex; justify-content: space-between; width: 100%">
3
- <div style="display: flex; gap: 8px; flex-wrap: wrap">
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
- v-if="action.alignment === 'left' || !action.alignment"
7
- :key="index"
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 style="display: flex; gap: 8px;">
12
+ <div class="ui-dynamic-form-footer-actions-right">
18
13
  <div v-for="(action, index) in actions" :key="index">
19
- <v-btn
20
- v-if="action.alignment === 'right'"
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 () { return [] } },
40
- actionCallback: { type: Function, default (action) {} },
41
- formIsFinished: { type: Boolean, default () { return false } }
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 (action) {
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" style="display: flex; gap: 25px; align-items: center">
4
- <svg
5
- v-if="collapsible && !collapsed"
6
- style="width: 25px; height: 25px; cursor: pointer;"
7
- xmlns="http://www.w3.org/2000/svg"
8
- viewBox="0 0 448 512"
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
- v-if="collapsible && collapsed"
15
- style="width: 25px; height: 25px; cursor: pointer;"
16
- xmlns="http://www.w3.org/2000/svg"
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 () { return 'default' } },
37
- title: { type: String, default () { return '' } },
38
- customStyles: { type: String, default () { return '' } },
39
- collapsible: { type: Boolean, default () { return false } },
40
- collapsed: { type: Boolean, default () { return false } },
41
- titleIcon: { type: String, default () { return '' } },
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
  }
@@ -26,11 +26,16 @@
26
26
  />
27
27
  <Transition name="cardCollapse">
28
28
  <div v-if="!collapsed">
29
- <div className="ui-dynamic-form-formfield-positioner" :style="props.inner_card_styling">
29
+ <div
30
+ className="ui-dynamic-form-formfield-positioner"
31
+ :style="props.inner_card_styling"
32
+ :data-columns="props.form_columns || 1"
33
+ >
30
34
  <FormKit id="form" type="group">
31
35
  <v-row
32
36
  v-for="(field, index) in fields()"
33
- :key="`${field.id}_${index}`"
37
+ :key="field"
38
+ :class="field.type === 'header' ? 'ui-dynamic-form-header-row' : ''"
34
39
  :style="getRowWidthStyling(field, index)"
35
40
  >
36
41
  <v-col cols="12">
@@ -992,7 +997,7 @@ export default {
992
997
  if (field.type === 'header') {
993
998
  style += 'flex-basis: 100%;';
994
999
  } else {
995
- style += `flex-basis: ${(1 / this.props.form_columns) * 100}%;`;
1000
+ style += `flex-basis: 100%;`;
996
1001
  }
997
1002
  return style;
998
1003
  },
@@ -1037,7 +1042,7 @@ export default {
1037
1042
 
1038
1043
  const formFields = this.userTask.userTaskConfig.formFields;
1039
1044
  const formFieldIds = formFields.map((ff) => ff.id);
1040
- const initialValues = this.userTask.startToken.formData; //luis777
1045
+ const initialValues = this.userTask.startToken;
1041
1046
  const finishedFormData = msg.payload.formData;
1042
1047
  this.formIsFinished = !!msg.payload.formData;
1043
1048
  if (this.formIsFinished) {
@@ -1087,7 +1092,6 @@ export default {
1087
1092
  Object.keys(initialValues)
1088
1093
  .filter((key) => formFieldIds.includes(key))
1089
1094
  .forEach((key) => {
1090
- console.log('luis888.2', key, initialValues[key]);
1091
1095
  this.formData[key] = initialValues[key];
1092
1096
  });
1093
1097
  }
@@ -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 {