form-builder-pro 1.2.0 → 1.2.2
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.
- package/dist/index.css +82 -25
- package/dist/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +44 -14
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -632,7 +632,7 @@ video {
|
|
|
632
632
|
}
|
|
633
633
|
/* Grid column spans - explicit !important to override Angular styles */
|
|
634
634
|
.form-builder-field-wrapper.selected-field {
|
|
635
|
-
border: 1px solid #
|
|
635
|
+
border: 1px solid #635bff !important;
|
|
636
636
|
border-radius: 6px;
|
|
637
637
|
box-shadow: none;
|
|
638
638
|
}
|
|
@@ -843,12 +843,18 @@ body {
|
|
|
843
843
|
.static {
|
|
844
844
|
position: static;
|
|
845
845
|
}
|
|
846
|
+
.fixed {
|
|
847
|
+
position: fixed;
|
|
848
|
+
}
|
|
846
849
|
.absolute {
|
|
847
850
|
position: absolute;
|
|
848
851
|
}
|
|
849
852
|
.relative {
|
|
850
853
|
position: relative;
|
|
851
854
|
}
|
|
855
|
+
.inset-0 {
|
|
856
|
+
inset: 0px;
|
|
857
|
+
}
|
|
852
858
|
.right-1 {
|
|
853
859
|
right: 0.25rem;
|
|
854
860
|
}
|
|
@@ -864,6 +870,9 @@ body {
|
|
|
864
870
|
.z-10 {
|
|
865
871
|
z-index: 10;
|
|
866
872
|
}
|
|
873
|
+
.z-\[9999\] {
|
|
874
|
+
z-index: 9999;
|
|
875
|
+
}
|
|
867
876
|
.\!m-0 {
|
|
868
877
|
margin: 0px !important;
|
|
869
878
|
}
|
|
@@ -895,6 +904,9 @@ body {
|
|
|
895
904
|
.ml-1 {
|
|
896
905
|
margin-left: 0.25rem;
|
|
897
906
|
}
|
|
907
|
+
.ml-1\.5 {
|
|
908
|
+
margin-left: 0.375rem;
|
|
909
|
+
}
|
|
898
910
|
.ml-2 {
|
|
899
911
|
margin-left: 0.5rem;
|
|
900
912
|
}
|
|
@@ -955,6 +967,9 @@ body {
|
|
|
955
967
|
.h-6 {
|
|
956
968
|
height: 1.5rem;
|
|
957
969
|
}
|
|
970
|
+
.h-64 {
|
|
971
|
+
height: 16rem;
|
|
972
|
+
}
|
|
958
973
|
.h-8 {
|
|
959
974
|
height: 2rem;
|
|
960
975
|
}
|
|
@@ -964,6 +979,9 @@ body {
|
|
|
964
979
|
.h-screen {
|
|
965
980
|
height: 100vh;
|
|
966
981
|
}
|
|
982
|
+
.max-h-\[90vh\] {
|
|
983
|
+
max-height: 90vh;
|
|
984
|
+
}
|
|
967
985
|
.min-h-\[100px\] {
|
|
968
986
|
min-height: 100px;
|
|
969
987
|
}
|
|
@@ -997,6 +1015,12 @@ body {
|
|
|
997
1015
|
.w-full {
|
|
998
1016
|
width: 100%;
|
|
999
1017
|
}
|
|
1018
|
+
.max-w-2xl {
|
|
1019
|
+
max-width: 42rem;
|
|
1020
|
+
}
|
|
1021
|
+
.max-w-\[180px\] {
|
|
1022
|
+
max-width: 180px;
|
|
1023
|
+
}
|
|
1000
1024
|
.flex-1 {
|
|
1001
1025
|
flex: 1 1 0%;
|
|
1002
1026
|
}
|
|
@@ -1017,6 +1041,9 @@ body {
|
|
|
1017
1041
|
-moz-user-select: none;
|
|
1018
1042
|
user-select: none;
|
|
1019
1043
|
}
|
|
1044
|
+
.resize-y {
|
|
1045
|
+
resize: vertical;
|
|
1046
|
+
}
|
|
1020
1047
|
.grid-cols-2 {
|
|
1021
1048
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1022
1049
|
}
|
|
@@ -1032,6 +1059,9 @@ body {
|
|
|
1032
1059
|
.items-center {
|
|
1033
1060
|
align-items: center;
|
|
1034
1061
|
}
|
|
1062
|
+
.justify-end {
|
|
1063
|
+
justify-content: flex-end;
|
|
1064
|
+
}
|
|
1035
1065
|
.justify-center {
|
|
1036
1066
|
justify-content: center;
|
|
1037
1067
|
}
|
|
@@ -1134,9 +1164,6 @@ body {
|
|
|
1134
1164
|
.border-b {
|
|
1135
1165
|
border-bottom-width: 1px;
|
|
1136
1166
|
}
|
|
1137
|
-
.border-b-2 {
|
|
1138
|
-
border-bottom-width: 2px;
|
|
1139
|
-
}
|
|
1140
1167
|
.border-l {
|
|
1141
1168
|
border-left-width: 1px;
|
|
1142
1169
|
}
|
|
@@ -1152,10 +1179,6 @@ body {
|
|
|
1152
1179
|
.border-dashed {
|
|
1153
1180
|
border-style: dashed;
|
|
1154
1181
|
}
|
|
1155
|
-
.border-\[\#019FA2\] {
|
|
1156
|
-
--tw-border-opacity: 1;
|
|
1157
|
-
border-color: rgb(1 159 162 / var(--tw-border-opacity, 1));
|
|
1158
|
-
}
|
|
1159
1182
|
.border-\[\#e9e9e9\] {
|
|
1160
1183
|
--tw-border-opacity: 1;
|
|
1161
1184
|
border-color: rgb(233 233 233 / var(--tw-border-opacity, 1));
|
|
@@ -1198,16 +1221,19 @@ body {
|
|
|
1198
1221
|
--tw-bg-opacity: 1;
|
|
1199
1222
|
background-color: rgb(59 73 126 / var(--tw-bg-opacity, 1));
|
|
1200
1223
|
}
|
|
1201
|
-
.bg-\[\#
|
|
1202
|
-
background-color: #acbdfe33;
|
|
1203
|
-
}
|
|
1204
|
-
.bg-\[\#f8faff\] {
|
|
1224
|
+
.bg-\[\#635bff\] {
|
|
1205
1225
|
--tw-bg-opacity: 1;
|
|
1206
|
-
background-color: rgb(
|
|
1226
|
+
background-color: rgb(99 91 255 / var(--tw-bg-opacity, 1));
|
|
1227
|
+
}
|
|
1228
|
+
.bg-\[\#847dff1a\] {
|
|
1229
|
+
background-color: #847dff1a;
|
|
1207
1230
|
}
|
|
1208
1231
|
.bg-background {
|
|
1209
1232
|
background-color: hsl(var(--background));
|
|
1210
1233
|
}
|
|
1234
|
+
.bg-black\/50 {
|
|
1235
|
+
background-color: rgb(0 0 0 / 0.5);
|
|
1236
|
+
}
|
|
1211
1237
|
.bg-blue-100 {
|
|
1212
1238
|
--tw-bg-opacity: 1;
|
|
1213
1239
|
background-color: rgb(219 234 254 / var(--tw-bg-opacity, 1));
|
|
@@ -1272,6 +1298,10 @@ body {
|
|
|
1272
1298
|
padding-left: 0.75rem;
|
|
1273
1299
|
padding-right: 0.75rem;
|
|
1274
1300
|
}
|
|
1301
|
+
.px-4 {
|
|
1302
|
+
padding-left: 1rem;
|
|
1303
|
+
padding-right: 1rem;
|
|
1304
|
+
}
|
|
1275
1305
|
.px-6 {
|
|
1276
1306
|
padding-left: 1.5rem;
|
|
1277
1307
|
padding-right: 1.5rem;
|
|
@@ -1327,6 +1357,10 @@ body {
|
|
|
1327
1357
|
font-size: 1rem;
|
|
1328
1358
|
line-height: 1.5rem;
|
|
1329
1359
|
}
|
|
1360
|
+
.text-lg {
|
|
1361
|
+
font-size: 1.125rem;
|
|
1362
|
+
line-height: 1.75rem;
|
|
1363
|
+
}
|
|
1330
1364
|
.text-sm {
|
|
1331
1365
|
font-size: 0.875rem;
|
|
1332
1366
|
line-height: 1.25rem;
|
|
@@ -1360,10 +1394,6 @@ body {
|
|
|
1360
1394
|
.tracking-wider {
|
|
1361
1395
|
letter-spacing: 0.05em;
|
|
1362
1396
|
}
|
|
1363
|
-
.text-\[\#019FA2\] {
|
|
1364
|
-
--tw-text-opacity: 1;
|
|
1365
|
-
color: rgb(1 159 162 / var(--tw-text-opacity, 1));
|
|
1366
|
-
}
|
|
1367
1397
|
.text-\[\#3b497e\] {
|
|
1368
1398
|
--tw-text-opacity: 1;
|
|
1369
1399
|
color: rgb(59 73 126 / var(--tw-text-opacity, 1));
|
|
@@ -1432,6 +1462,11 @@ body {
|
|
|
1432
1462
|
.opacity-50 {
|
|
1433
1463
|
opacity: 0.5;
|
|
1434
1464
|
}
|
|
1465
|
+
.shadow-\[0_17px_20px_-8px_rgba\(77\2c 91\2c 236\2c 0\.231372549\)\] {
|
|
1466
|
+
--tw-shadow: 0 17px 20px -8px rgba(77,91,236,0.231372549);
|
|
1467
|
+
--tw-shadow-colored: 0 17px 20px -8px var(--tw-shadow-color);
|
|
1468
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
1469
|
+
}
|
|
1435
1470
|
.shadow-none {
|
|
1436
1471
|
--tw-shadow: 0 0 #0000;
|
|
1437
1472
|
--tw-shadow-colored: 0 0 #0000;
|
|
@@ -1442,6 +1477,11 @@ body {
|
|
|
1442
1477
|
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
|
1443
1478
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
1444
1479
|
}
|
|
1480
|
+
.shadow-xl {
|
|
1481
|
+
--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
|
|
1482
|
+
--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
|
|
1483
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
1484
|
+
}
|
|
1445
1485
|
.ring-2 {
|
|
1446
1486
|
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
1447
1487
|
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
@@ -1485,17 +1525,21 @@ input[type="checkbox"] {
|
|
|
1485
1525
|
-moz-appearance: none;
|
|
1486
1526
|
appearance: none;
|
|
1487
1527
|
-webkit-appearance: none;
|
|
1488
|
-
width:
|
|
1489
|
-
height:
|
|
1490
|
-
border: 2px solid #
|
|
1528
|
+
width: 20px;
|
|
1529
|
+
height: 20px;
|
|
1530
|
+
border: 2px solid #635bff;
|
|
1491
1531
|
border-radius: 4px;
|
|
1492
1532
|
background-color: #f8faff;
|
|
1493
1533
|
cursor: pointer;
|
|
1534
|
+
min-height: 20px;
|
|
1535
|
+
box-shadow: 0 17px 20px -8px rgba(77, 91, 236, 0.231372549);
|
|
1536
|
+
|
|
1494
1537
|
}
|
|
1495
1538
|
|
|
1496
1539
|
input[type="checkbox"]:checked {
|
|
1497
|
-
background-color: #
|
|
1498
|
-
border-color: #
|
|
1540
|
+
background-color: #635bff;
|
|
1541
|
+
border-color: #635bff;
|
|
1542
|
+
box-shadow: 0 17px 20px -8px rgba(77, 91, 236, 0.231372549);
|
|
1499
1543
|
}
|
|
1500
1544
|
|
|
1501
1545
|
input[type="checkbox"]:checked::after {
|
|
@@ -1513,24 +1557,27 @@ input[type="radio"] {
|
|
|
1513
1557
|
-webkit-appearance: none;
|
|
1514
1558
|
width: 18px;
|
|
1515
1559
|
height: 18px;
|
|
1516
|
-
border: 2px solid #
|
|
1560
|
+
border: 2px solid #635bff;
|
|
1517
1561
|
border-radius: 50%;
|
|
1518
1562
|
background-color: #fff;
|
|
1519
1563
|
cursor: pointer;
|
|
1564
|
+
box-shadow: 0 17px 20px -8px rgba(77, 91, 236, 0.231372549);
|
|
1520
1565
|
}
|
|
1521
1566
|
|
|
1522
1567
|
input[type="radio"]:checked {
|
|
1523
|
-
border-color: #
|
|
1568
|
+
border-color: #635bff;
|
|
1569
|
+
box-shadow: 0 17px 20px -8px rgba(77, 91, 236, 0.231372549);
|
|
1524
1570
|
}
|
|
1525
1571
|
|
|
1526
1572
|
input[type="radio"]:checked::after {
|
|
1527
1573
|
content: "";
|
|
1528
1574
|
width: 10px;
|
|
1529
1575
|
height: 10px;
|
|
1530
|
-
background-color: #
|
|
1576
|
+
background-color: #635bff;
|
|
1531
1577
|
border-radius: 50%;
|
|
1532
1578
|
display: block;
|
|
1533
1579
|
margin: 2px auto;
|
|
1580
|
+
box-shadow: 0 17px 20px -8px rgba(77, 91, 236, 0.231372549);
|
|
1534
1581
|
}
|
|
1535
1582
|
|
|
1536
1583
|
.file\:border-0::file-selector-button {
|
|
@@ -1656,6 +1703,11 @@ input[type="radio"]:checked::after {
|
|
|
1656
1703
|
background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
|
|
1657
1704
|
}
|
|
1658
1705
|
|
|
1706
|
+
.hover\:bg-gray-300:hover {
|
|
1707
|
+
--tw-bg-opacity: 1;
|
|
1708
|
+
background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1659
1711
|
.hover\:bg-gray-50:hover {
|
|
1660
1712
|
--tw-bg-opacity: 1;
|
|
1661
1713
|
background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
|
|
@@ -1888,6 +1940,11 @@ input[type="radio"]:checked::after {
|
|
|
1888
1940
|
color: rgb(250 204 21 / var(--tw-text-opacity, 1));
|
|
1889
1941
|
}
|
|
1890
1942
|
|
|
1943
|
+
.dark\:hover\:bg-gray-600:hover:is(.dark *) {
|
|
1944
|
+
--tw-bg-opacity: 1;
|
|
1945
|
+
background-color: rgb(75 85 99 / var(--tw-bg-opacity, 1));
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1891
1948
|
.dark\:hover\:bg-gray-700:hover:is(.dark *) {
|
|
1892
1949
|
--tw-bg-opacity: 1;
|
|
1893
1950
|
background-color: rgb(55 65 81 / var(--tw-bg-opacity, 1));
|
package/dist/index.d.mts
CHANGED
|
@@ -32,6 +32,7 @@ interface FormField {
|
|
|
32
32
|
id: string;
|
|
33
33
|
type: FieldType;
|
|
34
34
|
label: string;
|
|
35
|
+
fieldName?: string;
|
|
35
36
|
placeholder?: string;
|
|
36
37
|
description?: string;
|
|
37
38
|
required?: boolean;
|
|
@@ -253,6 +254,8 @@ interface FormBuilderOptions {
|
|
|
253
254
|
lookupSourceType: 'MODULE' | 'MASTER_TYPE';
|
|
254
255
|
lookupSource: string;
|
|
255
256
|
}) => void;
|
|
257
|
+
onProfileClick?: () => void;
|
|
258
|
+
onSettingsClick?: () => void;
|
|
256
259
|
}
|
|
257
260
|
declare class FormBuilder {
|
|
258
261
|
private container;
|
|
@@ -304,7 +307,7 @@ declare class FormRenderer {
|
|
|
304
307
|
constructor(container: HTMLElement, schema: FormSchema, onSubmit?: (data: any) => void, onDropdownValueChange?: (event: {
|
|
305
308
|
fieldId: string;
|
|
306
309
|
value: string;
|
|
307
|
-
}) => void);
|
|
310
|
+
}) => void, initialData?: Record<string, any>);
|
|
308
311
|
setSchema(schema: FormSchema): void;
|
|
309
312
|
private render;
|
|
310
313
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -32,6 +32,7 @@ interface FormField {
|
|
|
32
32
|
id: string;
|
|
33
33
|
type: FieldType;
|
|
34
34
|
label: string;
|
|
35
|
+
fieldName?: string;
|
|
35
36
|
placeholder?: string;
|
|
36
37
|
description?: string;
|
|
37
38
|
required?: boolean;
|
|
@@ -253,6 +254,8 @@ interface FormBuilderOptions {
|
|
|
253
254
|
lookupSourceType: 'MODULE' | 'MASTER_TYPE';
|
|
254
255
|
lookupSource: string;
|
|
255
256
|
}) => void;
|
|
257
|
+
onProfileClick?: () => void;
|
|
258
|
+
onSettingsClick?: () => void;
|
|
256
259
|
}
|
|
257
260
|
declare class FormBuilder {
|
|
258
261
|
private container;
|
|
@@ -304,7 +307,7 @@ declare class FormRenderer {
|
|
|
304
307
|
constructor(container: HTMLElement, schema: FormSchema, onSubmit?: (data: any) => void, onDropdownValueChange?: (event: {
|
|
305
308
|
fieldId: string;
|
|
306
309
|
value: string;
|
|
307
|
-
}) => void);
|
|
310
|
+
}) => void, initialData?: Record<string, any>);
|
|
308
311
|
setSchema(schema: FormSchema): void;
|
|
309
312
|
private render;
|
|
310
313
|
}
|
package/dist/index.js
CHANGED
|
@@ -5368,7 +5368,8 @@ var ICONS = {
|
|
|
5368
5368
|
"CreditCard": '<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 002.25-2.25V6.75A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25v10.5A2.25 2.25 0 004.5 19.5z" />',
|
|
5369
5369
|
"MapPin": '<path stroke-linecap="round" stroke-linejoin="round" d="M15 10.5a3 3 0 11-6 0 3 3 0 016 0z" /><path stroke-linecap="round" stroke-linejoin="round" d="M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1115 0z" />',
|
|
5370
5370
|
"Briefcase": '<path stroke-linecap="round" stroke-linejoin="round" d="M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 00.75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 00-3.413-.387m4.5 8.006c-.194.165-.42.295-.67.38-1.053.33-2.177.58-3.345.726-.26.032-.52.05-.778.066m-13.882-6.626h.008v.008h-.008v-.008zm1.096-3.837a48.116 48.116 0 00-3.413.387c-1.069.16-1.837 1.094-1.837 2.175v4.784c0 .493.196.958.536 1.344m0 0a17.8 17.8 0 013.344.726c.25.085.476.215.67.38m13.784-5.32c-.34-.386-.536-.851-.536-1.344v-4.784c0-1.081-.768-2.015-1.837-2.175a48.041 48.041 0 01-3.413-.387m-4.5 8.006c.194.165.42.295.67.38 1.053.33 2.177.58 3.345.726.26.032.52.05.778.066m0-7.384V5.626a2.25 2.25 0 00-2.25-2.25h-4.5a2.25 2.25 0 00-2.25 2.25v2.247M16.5 6h-9" />',
|
|
5371
|
-
"Eye": '<path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z" /><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />'
|
|
5371
|
+
"Eye": '<path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z" /><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />',
|
|
5372
|
+
"Cog": '<path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.324.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 011.37.49l1.296 2.247a1.125 1.125 0 01-.26 1.431l-1.003.827c-.293.24-.438.613-.431.992a6.759 6.759 0 010 .255c-.007.378.138.75.43.99l1.005.828c.424.35.534.954.26 1.43l-1.298 2.247a1.125 1.125 0 01-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.57 6.57 0 01-.22.128c-.331.183-.581.495-.644.869l-.213 1.28c-.09.543-.56.941-1.11.941h-2.594c-.55 0-1.02-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 01-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 01-1.369-.49l-1.297-2.247a1.125 1.125 0 01.26-1.431l1.004-.827c.292-.24.437-.613.43-.992a6.932 6.932 0 010-.255c.007-.378-.138-.75-.43-.99l-1.004-.828a1.125 1.125 0 01-.26-1.43l1.297-2.247a1.125 1.125 0 011.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.087.22-.128.332-.183.582-.495.644-.869l.214-1.281z" /><path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />'
|
|
5372
5373
|
};
|
|
5373
5374
|
function getIcon(name, size = 20) {
|
|
5374
5375
|
const svgString = ICONS[name] || `<path stroke-linecap="round" stroke-linejoin="round" d="M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z" />`;
|
|
@@ -5866,8 +5867,11 @@ function convertValidationToArray(validation) {
|
|
|
5866
5867
|
rules.push({ type: "maxDate", value: obj.maxDate });
|
|
5867
5868
|
return rules;
|
|
5868
5869
|
}
|
|
5870
|
+
function getModelKey(field) {
|
|
5871
|
+
return field.fieldName ?? field.id;
|
|
5872
|
+
}
|
|
5869
5873
|
var FormRenderer = class {
|
|
5870
|
-
constructor(container, schema, onSubmit, onDropdownValueChange) {
|
|
5874
|
+
constructor(container, schema, onSubmit, onDropdownValueChange, initialData) {
|
|
5871
5875
|
__publicField(this, "container");
|
|
5872
5876
|
__publicField(this, "schema");
|
|
5873
5877
|
__publicField(this, "data", {});
|
|
@@ -5877,6 +5881,9 @@ var FormRenderer = class {
|
|
|
5877
5881
|
this.schema = schema;
|
|
5878
5882
|
this.onSubmit = onSubmit;
|
|
5879
5883
|
this.onDropdownValueChange = onDropdownValueChange;
|
|
5884
|
+
if (initialData && typeof initialData === "object") {
|
|
5885
|
+
this.data = { ...initialData };
|
|
5886
|
+
}
|
|
5880
5887
|
this.render();
|
|
5881
5888
|
}
|
|
5882
5889
|
setSchema(schema) {
|
|
@@ -5891,7 +5898,8 @@ var FormRenderer = class {
|
|
|
5891
5898
|
const sectionEl = createElement("div", { className: "space-y-3 md:space-y-4 !m-0" });
|
|
5892
5899
|
sectionEl.appendChild(createElement("h2", { className: "text-xl font-semibold text-[#3b497e] dark:text-gray-200 border-b pb-2", text: section.title }));
|
|
5893
5900
|
const grid = createElement("div", { className: "form-builder-grid" });
|
|
5894
|
-
section.fields.
|
|
5901
|
+
const sortedFields = [...section.fields].sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
5902
|
+
sortedFields.forEach((field) => {
|
|
5895
5903
|
const isVisible = field.visible !== false;
|
|
5896
5904
|
if (!isVisible) {
|
|
5897
5905
|
return;
|
|
@@ -5905,8 +5913,9 @@ var FormRenderer = class {
|
|
|
5905
5913
|
spanClass = getColSpanFromWidth(field.width || 100);
|
|
5906
5914
|
}
|
|
5907
5915
|
fieldWrapper.className = spanClass;
|
|
5908
|
-
const
|
|
5909
|
-
|
|
5916
|
+
const modelKey = getModelKey(field);
|
|
5917
|
+
const fieldEl = FieldRenderer.render(field, this.data[modelKey], (val) => {
|
|
5918
|
+
this.data[modelKey] = val;
|
|
5910
5919
|
if (field.type === "select" && this.onDropdownValueChange) {
|
|
5911
5920
|
this.onDropdownValueChange({
|
|
5912
5921
|
fieldId: field.id,
|
|
@@ -5933,7 +5942,8 @@ var FormRenderer = class {
|
|
|
5933
5942
|
section.fields.forEach((field) => {
|
|
5934
5943
|
if (field.visible === false)
|
|
5935
5944
|
return;
|
|
5936
|
-
const
|
|
5945
|
+
const modelKey = getModelKey(field);
|
|
5946
|
+
const fieldValue = this.data[modelKey];
|
|
5937
5947
|
const fieldElement = form.querySelector(`input[id*="${field.id}"], textarea[id*="${field.id}"], select[id*="${field.id}"]`);
|
|
5938
5948
|
if (!fieldElement) {
|
|
5939
5949
|
const altElement = Array.from(form.querySelectorAll("input, textarea, select")).find((el) => {
|
|
@@ -8335,7 +8345,7 @@ var FieldWrapper = class {
|
|
|
8335
8345
|
});
|
|
8336
8346
|
}
|
|
8337
8347
|
if (isSelected) {
|
|
8338
|
-
fieldWrapper.classList.add("ring-2", "bg-[#
|
|
8348
|
+
fieldWrapper.classList.add("ring-2", "bg-[#847dff1a]", "dark:bg-blue-900/20");
|
|
8339
8349
|
}
|
|
8340
8350
|
fieldWrapper.appendChild(createElement("div", {
|
|
8341
8351
|
className: `absolute top-2 right-6 cursor-move p-1 rounded bg-[#3b497e] p-[0.5px] mr-1 text-white group-hover:opacity-100 transition-opacity field-handle z-10 ${isSelected ? "opacity-100" : ""}`
|
|
@@ -8998,6 +9008,26 @@ var FormBuilder = class {
|
|
|
8998
9008
|
left.appendChild(redoBtn);
|
|
8999
9009
|
toolbar.appendChild(left);
|
|
9000
9010
|
const right = createElement("div", { className: "flex items-center space-x-2" });
|
|
9011
|
+
const profileBtn = createElement("button", {
|
|
9012
|
+
className: "p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors text-gray-600 dark:text-gray-400",
|
|
9013
|
+
title: "Profile",
|
|
9014
|
+
onclick: () => {
|
|
9015
|
+
if (this.options.onProfileClick) {
|
|
9016
|
+
this.options.onProfileClick();
|
|
9017
|
+
}
|
|
9018
|
+
}
|
|
9019
|
+
}, [getIcon("User", 20)]);
|
|
9020
|
+
right.appendChild(profileBtn);
|
|
9021
|
+
const settingsBtn = createElement("button", {
|
|
9022
|
+
className: "p-2 rounded hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors text-gray-600 dark:text-gray-400",
|
|
9023
|
+
title: "Settings",
|
|
9024
|
+
onclick: () => {
|
|
9025
|
+
if (this.options.onSettingsClick) {
|
|
9026
|
+
this.options.onSettingsClick();
|
|
9027
|
+
}
|
|
9028
|
+
}
|
|
9029
|
+
}, [getIcon("Cog", 20)]);
|
|
9030
|
+
right.appendChild(settingsBtn);
|
|
9001
9031
|
const clearBtn = createElement("button", {
|
|
9002
9032
|
className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 bg-red-500 text-white rounded-md transition-colors",
|
|
9003
9033
|
onclick: () => {
|
|
@@ -9032,12 +9062,12 @@ var FormBuilder = class {
|
|
|
9032
9062
|
return toolbar;
|
|
9033
9063
|
}
|
|
9034
9064
|
renderToolbox() {
|
|
9035
|
-
const toolbox = createElement("div", { className: "bg-[#
|
|
9036
|
-
const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800" });
|
|
9065
|
+
const toolbox = createElement("div", { className: "bg-[#847dff1a] dark:bg-gray-900 flex flex-col h-full" });
|
|
9066
|
+
const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800 p-1" });
|
|
9037
9067
|
const createTab = (id, label) => {
|
|
9038
9068
|
const isActive = this.activeTab === id;
|
|
9039
9069
|
return createElement("button", {
|
|
9040
|
-
className: `flex-1 py-3 text-sm font-medium transition-colors ${isActive ? "text-[#
|
|
9070
|
+
className: `flex-1 py-3 text-sm font-medium transition-colors ${isActive ? "text-white bg-[#635bff] rounded " : "text-gray-500 hover:text-gray-700 dark:text-gray-400"}`,
|
|
9041
9071
|
text: label,
|
|
9042
9072
|
onclick: () => {
|
|
9043
9073
|
this.activeTab = id;
|
|
@@ -9049,7 +9079,7 @@ var FormBuilder = class {
|
|
|
9049
9079
|
tabs.appendChild(createTab("templates", "Templates"));
|
|
9050
9080
|
tabs.appendChild(createTab("import", "Import"));
|
|
9051
9081
|
toolbox.appendChild(tabs);
|
|
9052
|
-
const content = createElement("div", { className: "flex-1 overflow-y-auto p-4" });
|
|
9082
|
+
const content = createElement("div", { className: "flex-1 overflow-y-auto p-4 bg-white" });
|
|
9053
9083
|
if (this.activeTab === "fields") {
|
|
9054
9084
|
const list = createElement("div", { className: "grid grid-cols-2 gap-3", id: "toolbox-list" });
|
|
9055
9085
|
FIELD_TYPES.forEach((field) => {
|
|
@@ -9131,7 +9161,7 @@ var FormBuilder = class {
|
|
|
9131
9161
|
}
|
|
9132
9162
|
renderCanvas(state) {
|
|
9133
9163
|
const canvas = createElement("div", {
|
|
9134
|
-
className: "flex-1
|
|
9164
|
+
className: "flex-1 dark:bg-gray-950 p-4 md:p-8 overflow-y-auto",
|
|
9135
9165
|
onclick: (e) => {
|
|
9136
9166
|
if (e.target === canvas || e.target === canvas.firstElementChild) {
|
|
9137
9167
|
formStore.getState().selectField(null);
|
|
@@ -9152,7 +9182,7 @@ var FormBuilder = class {
|
|
|
9152
9182
|
const sectionList = new SectionList(state.schema, state.selectedFieldId);
|
|
9153
9183
|
inner.appendChild(sectionList.getElement());
|
|
9154
9184
|
const addSectionBtn = createElement("button", {
|
|
9155
|
-
className: "w-full mt-6 py-3 dark:border-gray-700 rounded-lg text-gray-500 bg-[#
|
|
9185
|
+
className: "w-full mt-6 py-3 dark:border-gray-700 rounded-lg text-gray-500 bg-[#635bff] max-w-[180px] shadow-[0_17px_20px_-8px_rgba(77,91,236,0.231372549)] text-white transition-colors flex items-center justify-center font-medium",
|
|
9156
9186
|
onclick: () => formStore.getState().addSection()
|
|
9157
9187
|
}, [getIcon("Plus", 20), createElement("span", { className: "ml-2", text: "Add Section" })]);
|
|
9158
9188
|
inner.appendChild(addSectionBtn);
|
|
@@ -9186,7 +9216,7 @@ var FormBuilder = class {
|
|
|
9186
9216
|
return container;
|
|
9187
9217
|
}
|
|
9188
9218
|
renderConfigPanel(state, focusState = null) {
|
|
9189
|
-
const panel = createElement("div", { className: "
|
|
9219
|
+
const panel = createElement("div", { className: " dark:bg-gray-900 flex flex-col h-full overflow-y-auto" });
|
|
9190
9220
|
const selectedField = state.schema.sections.flatMap((s) => s.fields).find((f) => f.id === state.selectedFieldId);
|
|
9191
9221
|
if (!selectedField) {
|
|
9192
9222
|
panel.appendChild(createElement("div", { className: "p-4 text-center text-gray-500", text: "Select a field to configure" }));
|