form-builder-pro 1.2.3 → 1.2.4
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 -38
- package/dist/index.js +72 -65
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +72 -65
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -8795,7 +8795,9 @@ var FormBuilder = class {
|
|
|
8795
8795
|
type: f.type,
|
|
8796
8796
|
label: f.label,
|
|
8797
8797
|
layout: f.layout,
|
|
8798
|
-
width: f.width
|
|
8798
|
+
width: f.width,
|
|
8799
|
+
css: f.css
|
|
8800
|
+
// Include css so style changes (textAlign, backgroundColor, etc.) trigger re-render
|
|
8799
8801
|
// Exclude frequently changing text (placeholder, etc.) to prevent re-renders on typing
|
|
8800
8802
|
}))
|
|
8801
8803
|
})),
|
|
@@ -8913,13 +8915,13 @@ var FormBuilder = class {
|
|
|
8913
8915
|
main.appendChild(previewContainer2);
|
|
8914
8916
|
}
|
|
8915
8917
|
} else {
|
|
8916
|
-
const toolboxWrapper = createElement("div", { className: "form-builder-toolbox-wrapper w-full md:w-
|
|
8918
|
+
const toolboxWrapper = createElement("div", { className: "form-builder-toolbox-wrapper w-full md:w-[14rem] bg-white dark:bg-gray-900 border-r md:border-r border-b md:border-b-0 border-gray-200 dark:border-gray-800" });
|
|
8917
8919
|
toolboxWrapper.appendChild(this.renderToolbox());
|
|
8918
8920
|
main.appendChild(toolboxWrapper);
|
|
8919
8921
|
const canvasWrapper2 = createElement("div", { className: "form-builder-canvas flex-1 overflow-y-auto" });
|
|
8920
8922
|
canvasWrapper2.appendChild(this.renderCanvas(state));
|
|
8921
8923
|
main.appendChild(canvasWrapper2);
|
|
8922
|
-
const configWrapper = createElement("div", { className: "form-builder-config-wrapper w-full md:w-
|
|
8924
|
+
const configWrapper = createElement("div", { className: "form-builder-config-wrapper w-full md:w-[17rem] bg-white dark:bg-gray-900 border-l md:border-l border-t md:border-t-0 border-gray-200 dark:border-gray-800 overflow-hidden" });
|
|
8923
8925
|
configWrapper.appendChild(this.renderConfigPanel(state, focusState));
|
|
8924
8926
|
main.appendChild(configWrapper);
|
|
8925
8927
|
}
|
|
@@ -8958,12 +8960,12 @@ var FormBuilder = class {
|
|
|
8958
8960
|
}
|
|
8959
8961
|
}
|
|
8960
8962
|
renderToolbar(state) {
|
|
8961
|
-
const toolbar = createElement("div", { className: "flex items-center justify-between p-
|
|
8963
|
+
const toolbar = createElement("div", { className: "flex items-center justify-between p-2 pl-[95px] border-b bg-white dark:bg-gray-900 border-gray-200 dark:border-gray-800" });
|
|
8962
8964
|
const left = createElement("div", { className: "flex items-center " });
|
|
8963
8965
|
left.appendChild(createElement("h1", { className: "text-xl font-semibold mb-2 text-primary hidden mr-4", text: "" }));
|
|
8964
8966
|
if (state.existingForms && state.existingForms.length > 0) {
|
|
8965
8967
|
const formSelect = createElement("select", {
|
|
8966
|
-
className: "px-3 py-2 border border-gray-
|
|
8968
|
+
className: "px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm mr-2",
|
|
8967
8969
|
onchange: (e) => {
|
|
8968
8970
|
const formId = e.target.value;
|
|
8969
8971
|
if (formId) {
|
|
@@ -9028,7 +9030,7 @@ var FormBuilder = class {
|
|
|
9028
9030
|
}, [getIcon("Cog", 20)]);
|
|
9029
9031
|
right.appendChild(settingsBtn);
|
|
9030
9032
|
const clearBtn = createElement("button", {
|
|
9031
|
-
className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 bg-red-500
|
|
9033
|
+
className: "flex items-center px-3 py-2 text-sm font-medium text-red-600 bg-[#f7a1a14d] text-red-500 rounded-md transition-colors",
|
|
9032
9034
|
onclick: () => {
|
|
9033
9035
|
if (confirm("Are you sure?")) {
|
|
9034
9036
|
formStore.getState().setSchema({ id: "new", title: "New Form", formName: "newForm", sections: [] });
|
|
@@ -9036,7 +9038,7 @@ var FormBuilder = class {
|
|
|
9036
9038
|
}
|
|
9037
9039
|
}, [getIcon("Trash2", 16), createElement("span", { className: "", title: "Clear" })]);
|
|
9038
9040
|
const previewBtn = createElement("button", {
|
|
9039
|
-
className: `flex items-center justify-center px-3 py-2 text-sm font-medium rounded-md transition-colors ${state.isPreviewMode ? "
|
|
9041
|
+
className: `flex items-center justify-center px-3 py-2 text-sm font-medium rounded-md transition-colors ${state.isPreviewMode ? "text-[#635bff] bg-[#e7e7ff] " : "text-[#635bff] bg-[#e7e7ff]"}`,
|
|
9040
9042
|
onclick: (e) => {
|
|
9041
9043
|
e.preventDefault();
|
|
9042
9044
|
e.stopPropagation();
|
|
@@ -9045,7 +9047,7 @@ var FormBuilder = class {
|
|
|
9045
9047
|
title: state.isPreviewMode ? "Exit Preview" : "Preview Form"
|
|
9046
9048
|
}, [getIcon(state.isPreviewMode ? "X" : "Eye", 16)]);
|
|
9047
9049
|
const saveBtn = createElement("button", {
|
|
9048
|
-
className: "flex items-center px-3 py-2 text-sm font-medium text-
|
|
9050
|
+
className: "flex items-center px-3 py-2 text-sm font-medium text-[#635bff] bg-[#e7e7ff] rounded-md shadow-sm transition-colors",
|
|
9049
9051
|
onclick: () => {
|
|
9050
9052
|
const schema = formStore.getState().schema;
|
|
9051
9053
|
console.log("[Form Builder] Schema being sent to app:", JSON.stringify(schema, null, 2));
|
|
@@ -9053,7 +9055,7 @@ var FormBuilder = class {
|
|
|
9053
9055
|
this.options.onSave(schema);
|
|
9054
9056
|
}
|
|
9055
9057
|
}
|
|
9056
|
-
}, [
|
|
9058
|
+
}, [createElement("span", { className: "", text: "Save" })]);
|
|
9057
9059
|
right.appendChild(clearBtn);
|
|
9058
9060
|
right.appendChild(previewBtn);
|
|
9059
9061
|
right.appendChild(saveBtn);
|
|
@@ -9061,24 +9063,29 @@ var FormBuilder = class {
|
|
|
9061
9063
|
return toolbar;
|
|
9062
9064
|
}
|
|
9063
9065
|
renderToolbox() {
|
|
9064
|
-
const toolbox = createElement("div", { className: "
|
|
9065
|
-
const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800
|
|
9066
|
-
const createTab = (id, label) => {
|
|
9066
|
+
const toolbox = createElement("div", { className: " dark:bg-gray-900 flex flex-col h-full" });
|
|
9067
|
+
const tabs = createElement("div", { className: "flex border-b border-gray-200 dark:border-gray-800 " });
|
|
9068
|
+
const createTab = (id, label, icon, tooltip) => {
|
|
9067
9069
|
const isActive = this.activeTab === id;
|
|
9068
|
-
|
|
9069
|
-
className: `flex-1 py-3 text-
|
|
9070
|
-
|
|
9070
|
+
const btn = createElement("button", {
|
|
9071
|
+
className: `flex-1 flex items-center justify-center py-3 text-base font-bold transition-colors ${isActive ? "text-[#635bff] bg-[#e7e7ff] " : "text-gray-500 hover:text-gray-700 dark:text-gray-400"}`,
|
|
9072
|
+
title: tooltip || label,
|
|
9073
|
+
"aria-label": tooltip || label,
|
|
9071
9074
|
onclick: () => {
|
|
9072
9075
|
this.activeTab = id;
|
|
9073
9076
|
this.render();
|
|
9074
9077
|
}
|
|
9075
|
-
}
|
|
9078
|
+
}, [
|
|
9079
|
+
getIcon(icon || "ListBullet", 16),
|
|
9080
|
+
createElement("span", { className: "hidden sm:inline-block", text: label })
|
|
9081
|
+
]);
|
|
9082
|
+
return btn;
|
|
9076
9083
|
};
|
|
9077
|
-
tabs.appendChild(createTab("fields", "
|
|
9078
|
-
tabs.appendChild(createTab("templates", "
|
|
9079
|
-
tabs.appendChild(createTab("import", "Import"));
|
|
9084
|
+
tabs.appendChild(createTab("fields", "", "ListBullet", "Field types"));
|
|
9085
|
+
tabs.appendChild(createTab("templates", "", "DocumentText", "Saved templates"));
|
|
9086
|
+
tabs.appendChild(createTab("import", "", "Upload", "Import sections"));
|
|
9080
9087
|
toolbox.appendChild(tabs);
|
|
9081
|
-
const content = createElement("div", { className: "flex-1 overflow-y-auto p-4 bg-
|
|
9088
|
+
const content = createElement("div", { className: "flex-1 overflow-y-auto p-4 bg-[#e7e7ff]" });
|
|
9082
9089
|
if (this.activeTab === "fields") {
|
|
9083
9090
|
const list = createElement("div", { className: "grid grid-cols-2 gap-3", id: "toolbox-list" });
|
|
9084
9091
|
FIELD_TYPES.forEach((field) => {
|
|
@@ -9160,7 +9167,7 @@ var FormBuilder = class {
|
|
|
9160
9167
|
}
|
|
9161
9168
|
renderCanvas(state) {
|
|
9162
9169
|
const canvas = createElement("div", {
|
|
9163
|
-
className: "flex-1 dark:bg-gray-950 p-4 md:p-
|
|
9170
|
+
className: "flex-1 dark:bg-gray-950 p-4 md:p-4 overflow-y-auto",
|
|
9164
9171
|
onclick: (e) => {
|
|
9165
9172
|
if (e.target === canvas || e.target === canvas.firstElementChild) {
|
|
9166
9173
|
formStore.getState().selectField(null);
|
|
@@ -9181,7 +9188,7 @@ var FormBuilder = class {
|
|
|
9181
9188
|
const sectionList = new SectionList(state.schema, state.selectedFieldId);
|
|
9182
9189
|
inner.appendChild(sectionList.getElement());
|
|
9183
9190
|
const addSectionBtn = createElement("button", {
|
|
9184
|
-
className: "w-full mt-6 py-3 dark:border-gray-700 rounded-
|
|
9191
|
+
className: "w-full mt-6 py-3 dark:border-gray-700 rounded-md text-sm text-gray-500 bg-[#635bff] max-w-[180px] text-white transition-colors flex items-center justify-center font-medium",
|
|
9185
9192
|
onclick: () => formStore.getState().addSection()
|
|
9186
9193
|
}, [getIcon("Plus", 20), createElement("span", { className: "ml-2", text: "Add Section" })]);
|
|
9187
9194
|
inner.appendChild(addSectionBtn);
|
|
@@ -9191,7 +9198,7 @@ var FormBuilder = class {
|
|
|
9191
9198
|
// Helper method to create a modern checkbox field with better UX
|
|
9192
9199
|
createCheckboxField(label, checked, onChange, id) {
|
|
9193
9200
|
const uniqueId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;
|
|
9194
|
-
const container = createElement("div", { className: "flex items-center gap-3 py-
|
|
9201
|
+
const container = createElement("div", { className: "flex items-center gap-3 py-1 px-1 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800/50 transition-colors cursor-pointer" });
|
|
9195
9202
|
const checkbox = createElement("input", {
|
|
9196
9203
|
type: "checkbox",
|
|
9197
9204
|
id: uniqueId,
|
|
@@ -9228,11 +9235,11 @@ var FormBuilder = class {
|
|
|
9228
9235
|
onclick: () => formStore.getState().selectField(null)
|
|
9229
9236
|
}, [getIcon("X", 20)]));
|
|
9230
9237
|
panel.appendChild(header);
|
|
9231
|
-
const body = createElement("div", { className: "flex-1 overflow-y-auto p-4 space-y-
|
|
9238
|
+
const body = createElement("div", { className: "flex-1 overflow-y-auto p-4 px-2 space-y-3", id: "config-panel-body" });
|
|
9232
9239
|
const labelGroup = createElement("div");
|
|
9233
|
-
labelGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9240
|
+
labelGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Label" }));
|
|
9234
9241
|
labelGroup.appendChild(createElement("input", {
|
|
9235
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9242
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9236
9243
|
value: selectedField.label,
|
|
9237
9244
|
"data-focus-id": `field-label-${selectedField.id}`,
|
|
9238
9245
|
oninput: (e) => {
|
|
@@ -9241,9 +9248,9 @@ var FormBuilder = class {
|
|
|
9241
9248
|
}));
|
|
9242
9249
|
body.appendChild(labelGroup);
|
|
9243
9250
|
const placeholderGroup = createElement("div");
|
|
9244
|
-
placeholderGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9251
|
+
placeholderGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Placeholder" }));
|
|
9245
9252
|
placeholderGroup.appendChild(createElement("input", {
|
|
9246
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9253
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9247
9254
|
value: selectedField.placeholder || "",
|
|
9248
9255
|
"data-focus-id": `field-placeholder-${selectedField.id}`,
|
|
9249
9256
|
oninput: (e) => {
|
|
@@ -9272,7 +9279,7 @@ var FormBuilder = class {
|
|
|
9272
9279
|
const isActive = currentSpan === span;
|
|
9273
9280
|
const spanBtn = createElement("button", {
|
|
9274
9281
|
type: "button",
|
|
9275
|
-
className: `span-preset-btn px-2 py-1.5 text-xs rounded transition-colors cursor-pointer ${isActive ? "bg-
|
|
9282
|
+
className: `span-preset-btn px-2 py-1.5 text-xs rounded transition-colors cursor-pointer ${isActive ? "bg-[#e7e7ff] text-[#635bff] font-semibold" : "bg-white border-2 border-[#e7e7ff] dark:bg-gray-800 text-gray-600 dark:text-gray-300 hover:bg-gray-200 dark:hover:bg-gray-700"}`,
|
|
9276
9283
|
text: `${span}`,
|
|
9277
9284
|
title: `${span} column${span > 1 ? "s" : ""} (${Math.round(span / 12 * 100)}%)`
|
|
9278
9285
|
});
|
|
@@ -9368,9 +9375,9 @@ var FormBuilder = class {
|
|
|
9368
9375
|
};
|
|
9369
9376
|
if (activeMasterTypes.length > 0) {
|
|
9370
9377
|
const groupNameGroup = createElement("div", { className: "mb-4" });
|
|
9371
|
-
groupNameGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9378
|
+
groupNameGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Master List" }));
|
|
9372
9379
|
const groupNameSelect = createElement("select", {
|
|
9373
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9380
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9374
9381
|
onchange: (e) => {
|
|
9375
9382
|
const selectedEnumName = e.target.value;
|
|
9376
9383
|
if (selectedEnumName) {
|
|
@@ -9456,9 +9463,9 @@ var FormBuilder = class {
|
|
|
9456
9463
|
const optionSourceHeader = createElement("h3", { className: "text-xs font-semibold text-gray-500 uppercase tracking-wider mb-3 mt-6", text: "Option Source" });
|
|
9457
9464
|
body.appendChild(optionSourceHeader);
|
|
9458
9465
|
const optionSourceGroup = createElement("div", { className: "mb-4" });
|
|
9459
|
-
optionSourceGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9466
|
+
optionSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Source Type" }));
|
|
9460
9467
|
const optionSourceSelect = createElement("select", {
|
|
9461
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9468
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9462
9469
|
value: selectedField.optionSource || "STATIC",
|
|
9463
9470
|
onchange: (e) => {
|
|
9464
9471
|
const source = e.target.value;
|
|
@@ -9483,9 +9490,9 @@ var FormBuilder = class {
|
|
|
9483
9490
|
body.appendChild(optionSourceGroup);
|
|
9484
9491
|
if (selectedField.type === "select" && selectedField.optionSource === "LOOKUP") {
|
|
9485
9492
|
const lookupSourceTypeGroup = createElement("div", { className: "mb-4" });
|
|
9486
|
-
lookupSourceTypeGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9493
|
+
lookupSourceTypeGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source Type" }));
|
|
9487
9494
|
const lookupSourceTypeSelect = createElement("select", {
|
|
9488
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9495
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9489
9496
|
value: selectedField.lookupSourceType || "MODULE",
|
|
9490
9497
|
onchange: (e) => {
|
|
9491
9498
|
const lookupSourceType = e.target.value;
|
|
@@ -9504,9 +9511,9 @@ var FormBuilder = class {
|
|
|
9504
9511
|
if (selectedField.lookupSourceType === "MODULE") {
|
|
9505
9512
|
const moduleList = this.options.moduleList || [];
|
|
9506
9513
|
const lookupSourceGroup = createElement("div", { className: "mb-4" });
|
|
9507
|
-
lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9514
|
+
lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
|
|
9508
9515
|
const lookupSourceSelect = createElement("select", {
|
|
9509
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9516
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9510
9517
|
value: selectedField.lookupSource || "",
|
|
9511
9518
|
onchange: (e) => {
|
|
9512
9519
|
const lookupSource = e.target.value;
|
|
@@ -9541,9 +9548,9 @@ var FormBuilder = class {
|
|
|
9541
9548
|
const masterTypes = formStore.getState().masterTypes;
|
|
9542
9549
|
const activeMasterTypes = masterTypes.filter((mt) => mt.active === true);
|
|
9543
9550
|
const lookupSourceGroup = createElement("div", { className: "mb-4" });
|
|
9544
|
-
lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9551
|
+
lookupSourceGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Source" }));
|
|
9545
9552
|
const lookupSourceSelect = createElement("select", {
|
|
9546
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9553
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9547
9554
|
value: selectedField.lookupSource || "",
|
|
9548
9555
|
onchange: (e) => {
|
|
9549
9556
|
const lookupSource = e.target.value;
|
|
@@ -9577,9 +9584,9 @@ var FormBuilder = class {
|
|
|
9577
9584
|
body.appendChild(lookupSourceGroup);
|
|
9578
9585
|
}
|
|
9579
9586
|
const lookupValueFieldGroup = createElement("div", { className: "mb-4" });
|
|
9580
|
-
lookupValueFieldGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9587
|
+
lookupValueFieldGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Value Field" }));
|
|
9581
9588
|
const lookupValueFieldSelect = createElement("select", {
|
|
9582
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9589
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9583
9590
|
value: selectedField.lookupValueField || "",
|
|
9584
9591
|
disabled: !selectedField.lookupSource,
|
|
9585
9592
|
onchange: (e) => {
|
|
@@ -9602,9 +9609,9 @@ var FormBuilder = class {
|
|
|
9602
9609
|
lookupValueFieldGroup.appendChild(lookupValueFieldSelect);
|
|
9603
9610
|
body.appendChild(lookupValueFieldGroup);
|
|
9604
9611
|
const lookupLabelFieldGroup = createElement("div", { className: "mb-4" });
|
|
9605
|
-
lookupLabelFieldGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9612
|
+
lookupLabelFieldGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Lookup Label Field" }));
|
|
9606
9613
|
const lookupLabelFieldSelect = createElement("select", {
|
|
9607
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9614
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9608
9615
|
value: selectedField.lookupLabelField || "",
|
|
9609
9616
|
disabled: !selectedField.lookupSource,
|
|
9610
9617
|
onchange: (e) => {
|
|
@@ -9768,10 +9775,10 @@ var FormBuilder = class {
|
|
|
9768
9775
|
const validationElements = [];
|
|
9769
9776
|
if (["text", "textarea", "email", "password"].includes(selectedField.type)) {
|
|
9770
9777
|
const minLenGroup = createElement("div", { className: "mb-3" });
|
|
9771
|
-
minLenGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9778
|
+
minLenGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Min Length" }));
|
|
9772
9779
|
minLenGroup.appendChild(createElement("input", {
|
|
9773
9780
|
type: "number",
|
|
9774
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9781
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9775
9782
|
value: getRuleValue("minLength") || "",
|
|
9776
9783
|
placeholder: "e.g. 3",
|
|
9777
9784
|
onchange: (e) => {
|
|
@@ -9781,10 +9788,10 @@ var FormBuilder = class {
|
|
|
9781
9788
|
}));
|
|
9782
9789
|
validationElements.push(minLenGroup);
|
|
9783
9790
|
const maxLenGroup = createElement("div", { className: "mb-3" });
|
|
9784
|
-
maxLenGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9791
|
+
maxLenGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Max Length" }));
|
|
9785
9792
|
maxLenGroup.appendChild(createElement("input", {
|
|
9786
9793
|
type: "number",
|
|
9787
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9794
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9788
9795
|
value: getRuleValue("maxLength") || "",
|
|
9789
9796
|
placeholder: "e.g. 100",
|
|
9790
9797
|
onchange: (e) => {
|
|
@@ -9794,7 +9801,7 @@ var FormBuilder = class {
|
|
|
9794
9801
|
}));
|
|
9795
9802
|
validationElements.push(maxLenGroup);
|
|
9796
9803
|
const regexGroup = createElement("div", { className: "mb-3" });
|
|
9797
|
-
regexGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9804
|
+
regexGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Regex Pattern" }));
|
|
9798
9805
|
const updateExamples = (examplesList2, regex, preset) => {
|
|
9799
9806
|
examplesList2.innerHTML = "";
|
|
9800
9807
|
let testCases = [];
|
|
@@ -9860,7 +9867,7 @@ var FormBuilder = class {
|
|
|
9860
9867
|
const presetGroup = createElement("div", { className: "mb-2" });
|
|
9861
9868
|
presetGroup.appendChild(createElement("label", { className: "block text-xs font-medium text-gray-600 dark:text-gray-400 mb-1", text: "Regex Presets (Optional)" }));
|
|
9862
9869
|
const presetSelect = createElement("select", {
|
|
9863
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9870
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm",
|
|
9864
9871
|
value: selectedPresetId,
|
|
9865
9872
|
onchange: (e) => {
|
|
9866
9873
|
const presetId = e.target.value;
|
|
@@ -9900,7 +9907,7 @@ var FormBuilder = class {
|
|
|
9900
9907
|
}
|
|
9901
9908
|
regexInput = createElement("input", {
|
|
9902
9909
|
type: "text",
|
|
9903
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9910
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9904
9911
|
value: currentRegex,
|
|
9905
9912
|
placeholder: selectedField.type === "email" ? "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$" : "e.g. ^[A-Z]+$",
|
|
9906
9913
|
"data-focus-id": `field-regex-${selectedField.id}`,
|
|
@@ -9953,10 +9960,10 @@ var FormBuilder = class {
|
|
|
9953
9960
|
}
|
|
9954
9961
|
if (selectedField.type === "checkbox") {
|
|
9955
9962
|
const minSelectedGroup = createElement("div", { className: "mb-3" });
|
|
9956
|
-
minSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9963
|
+
minSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Min Selected" }));
|
|
9957
9964
|
minSelectedGroup.appendChild(createElement("input", {
|
|
9958
9965
|
type: "number",
|
|
9959
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9966
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9960
9967
|
value: getRuleValue("minSelected"),
|
|
9961
9968
|
placeholder: "e.g. 1",
|
|
9962
9969
|
min: "0",
|
|
@@ -9967,10 +9974,10 @@ var FormBuilder = class {
|
|
|
9967
9974
|
}));
|
|
9968
9975
|
validationElements.push(minSelectedGroup);
|
|
9969
9976
|
const maxSelectedGroup = createElement("div", { className: "mb-3" });
|
|
9970
|
-
maxSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9977
|
+
maxSelectedGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Max Selected" }));
|
|
9971
9978
|
maxSelectedGroup.appendChild(createElement("input", {
|
|
9972
9979
|
type: "number",
|
|
9973
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9980
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9974
9981
|
value: getRuleValue("maxSelected"),
|
|
9975
9982
|
placeholder: "e.g. 2",
|
|
9976
9983
|
min: "1",
|
|
@@ -9983,10 +9990,10 @@ var FormBuilder = class {
|
|
|
9983
9990
|
}
|
|
9984
9991
|
if (selectedField.type === "date") {
|
|
9985
9992
|
const minDateGroup = createElement("div", { className: "mb-3" });
|
|
9986
|
-
minDateGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
9993
|
+
minDateGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Minimum Date" }));
|
|
9987
9994
|
minDateGroup.appendChild(createElement("input", {
|
|
9988
9995
|
type: "date",
|
|
9989
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
9996
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
9990
9997
|
value: validationObj.minDate || "",
|
|
9991
9998
|
onchange: (e) => {
|
|
9992
9999
|
const val = e.target.value;
|
|
@@ -9995,10 +10002,10 @@ var FormBuilder = class {
|
|
|
9995
10002
|
}));
|
|
9996
10003
|
validationElements.push(minDateGroup);
|
|
9997
10004
|
const maxDateGroup = createElement("div", { className: "mb-3" });
|
|
9998
|
-
maxDateGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
10005
|
+
maxDateGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Maximum Date" }));
|
|
9999
10006
|
maxDateGroup.appendChild(createElement("input", {
|
|
10000
10007
|
type: "date",
|
|
10001
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
10008
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent",
|
|
10002
10009
|
value: validationObj.maxDate || "",
|
|
10003
10010
|
onchange: (e) => {
|
|
10004
10011
|
const val = e.target.value;
|
|
@@ -10037,9 +10044,9 @@ var FormBuilder = class {
|
|
|
10037
10044
|
state2.updateField(selectedField.id, updatePayload);
|
|
10038
10045
|
};
|
|
10039
10046
|
const paddingGroup = createElement("div", { className: "mb-3" });
|
|
10040
|
-
paddingGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
10047
|
+
paddingGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Padding" }));
|
|
10041
10048
|
const paddingSelect = createElement("select", {
|
|
10042
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
10049
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-white dark:bg-gray-800 text-sm",
|
|
10043
10050
|
onchange: (e) => {
|
|
10044
10051
|
updateStyleProp("padding", e.target.value);
|
|
10045
10052
|
}
|
|
@@ -10058,7 +10065,7 @@ var FormBuilder = class {
|
|
|
10058
10065
|
paddingGroup.appendChild(paddingSelect);
|
|
10059
10066
|
body.appendChild(paddingGroup);
|
|
10060
10067
|
const bgColorGroup = createElement("div", { className: "mb-3" });
|
|
10061
|
-
bgColorGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
10068
|
+
bgColorGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Background Color" }));
|
|
10062
10069
|
const bgColorRow = createElement("div", { className: "flex items-center gap-2" });
|
|
10063
10070
|
const bgColorInput = createElement("input", {
|
|
10064
10071
|
type: "color",
|
|
@@ -10083,7 +10090,7 @@ var FormBuilder = class {
|
|
|
10083
10090
|
bgColorGroup.appendChild(bgColorRow);
|
|
10084
10091
|
body.appendChild(bgColorGroup);
|
|
10085
10092
|
const alignGroup = createElement("div", { className: "mb-3" });
|
|
10086
|
-
alignGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
10093
|
+
alignGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Text Alignment" }));
|
|
10087
10094
|
const alignButtonsRow = createElement("div", { className: "flex gap-1" });
|
|
10088
10095
|
const alignments = [
|
|
10089
10096
|
{ value: "left", icon: "AlignLeft" },
|
|
@@ -10107,10 +10114,10 @@ var FormBuilder = class {
|
|
|
10107
10114
|
alignGroup.appendChild(alignButtonsRow);
|
|
10108
10115
|
body.appendChild(alignGroup);
|
|
10109
10116
|
const cssClassGroup = createElement("div", { className: "mb-3" });
|
|
10110
|
-
cssClassGroup.appendChild(createElement("label", { className: "block text-sm font-
|
|
10117
|
+
cssClassGroup.appendChild(createElement("label", { className: "block text-sm font-normal text-gray-700 dark:text-gray-300 mb-1", text: "Custom CSS Class" }));
|
|
10111
10118
|
cssClassGroup.appendChild(createElement("input", {
|
|
10112
10119
|
type: "text",
|
|
10113
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
10120
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-sm",
|
|
10114
10121
|
value: selectedField.css?.class || "",
|
|
10115
10122
|
placeholder: "e.g. my-custom-class",
|
|
10116
10123
|
"data-focus-id": `field-css-class-${selectedField.id}`,
|
|
@@ -10162,7 +10169,7 @@ var FormBuilder = class {
|
|
|
10162
10169
|
initialCssStyleValue = preservedValue;
|
|
10163
10170
|
}
|
|
10164
10171
|
const cssStyleTextarea = createElement("textarea", {
|
|
10165
|
-
className: "w-full px-3 py-2 border border-gray-
|
|
10172
|
+
className: "w-full px-3 py-2 border border-gray-200 dark:border-gray-700 rounded-md bg-transparent text-xs font-mono",
|
|
10166
10173
|
rows: 3,
|
|
10167
10174
|
placeholder: '{"padding": "8px", "backgroundColor": "#f0f0f0"}',
|
|
10168
10175
|
"data-focus-id": cssStyleId,
|