voc-lib-js 1.0.6 → 1.0.7

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,202 +1 @@
1
- "use strict";
2
- var FormsLib = (() => {
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
-
21
- // src/main.ts
22
- var main_exports = {};
23
- __export(main_exports, {
24
- FormsLib: () => FormsLib
25
- });
26
-
27
- // src/forms-lib/form-submit.ts
28
- function submitForm(form) {
29
- console.log("Form submitted:", form);
30
- }
31
-
32
- // src/forms-lib/form-render.ts
33
- function renderForm(element, data) {
34
- let containers = [];
35
- if (typeof element === "string") {
36
- containers = Array.from(document.querySelectorAll(element));
37
- } else {
38
- containers = [element];
39
- }
40
- if (containers.length === 0) return null;
41
- function buildForm() {
42
- const form = document.createElement("form");
43
- form.id = data.id;
44
- const title = document.createElement("h2");
45
- title.textContent = data.form_name;
46
- form.appendChild(title);
47
- function applyValidation(el, validation) {
48
- if (!validation) return;
49
- if (validation.min_length !== void 0) {
50
- el.minLength = validation.min_length;
51
- }
52
- if (validation.max_length !== void 0) {
53
- el.maxLength = validation.max_length;
54
- }
55
- if (validation.regex) {
56
- if (el instanceof HTMLInputElement) {
57
- el.pattern = validation.regex;
58
- } else {
59
- el.dataset.pattern = validation.regex;
60
- }
61
- }
62
- }
63
- function renderField(field) {
64
- if (!field.key && !field.label) return null;
65
- const wrapper = document.createElement("div");
66
- wrapper.className = "form-group";
67
- if (field.label) {
68
- const label = document.createElement("label");
69
- label.htmlFor = field.key || "";
70
- label.textContent = field.label + (field.required ? " *" : "");
71
- wrapper.appendChild(label);
72
- }
73
- let input = null;
74
- switch (field.type) {
75
- case "textarea": {
76
- const textarea = document.createElement("textarea");
77
- if (field.key) textarea.name = field.key;
78
- if (field.required) textarea.required = true;
79
- applyValidation(textarea, field.validation);
80
- input = textarea;
81
- break;
82
- }
83
- case "select": {
84
- const select = document.createElement("select");
85
- if (field.key) select.name = field.key;
86
- if (field.required) select.required = true;
87
- if (field.options) {
88
- field.options.forEach((opt) => {
89
- const option = document.createElement("option");
90
- option.value = opt.value;
91
- option.textContent = opt.label;
92
- if (field.default === opt.value) option.selected = true;
93
- select.appendChild(option);
94
- });
95
- }
96
- input = select;
97
- break;
98
- }
99
- case "radio": {
100
- const radioGroup = document.createElement("div");
101
- radioGroup.className = "radio-group " + (field.direction || "vertical");
102
- if (field.options) {
103
- field.options.forEach((opt) => {
104
- const radioWrapper = document.createElement("label");
105
- radioWrapper.style.display = field.direction === "horizontal" ? "inline-block" : "block";
106
- const radio = document.createElement("input");
107
- radio.type = "radio";
108
- radio.name = field.key || "";
109
- radio.value = opt.value;
110
- radioWrapper.appendChild(radio);
111
- radioWrapper.appendChild(
112
- document.createTextNode(opt.label)
113
- );
114
- radioGroup.appendChild(radioWrapper);
115
- });
116
- }
117
- input = radioGroup;
118
- break;
119
- }
120
- default: {
121
- const inp = document.createElement("input");
122
- inp.type = field.type || "text";
123
- if (field.key) inp.name = field.key;
124
- if (field.required) inp.required = true;
125
- applyValidation(inp, field.validation);
126
- input = inp;
127
- break;
128
- }
129
- }
130
- if (input) wrapper.appendChild(input);
131
- if (field.hint_text) {
132
- const hint = document.createElement("small");
133
- hint.className = "hint";
134
- hint.textContent = field.hint_text;
135
- wrapper.appendChild(hint);
136
- }
137
- return wrapper;
138
- }
139
- data.fields.forEach((field) => {
140
- if (field.type === "row") {
141
- const rowWrapper = document.createElement("div");
142
- rowWrapper.className = "form-row";
143
- if (field.label) {
144
- const rowLabel = document.createElement("h3");
145
- rowLabel.textContent = field.label;
146
- rowWrapper.appendChild(rowLabel);
147
- }
148
- field.items.forEach((item) => {
149
- const rendered = renderField(item);
150
- if (rendered) rowWrapper.appendChild(rendered);
151
- });
152
- form.appendChild(rowWrapper);
153
- } else {
154
- const rendered = renderField(field);
155
- if (rendered) form.appendChild(rendered);
156
- }
157
- });
158
- const submitBtn = document.createElement("button");
159
- submitBtn.type = "submit";
160
- submitBtn.textContent = "Submit";
161
- form.appendChild(submitBtn);
162
- return form;
163
- }
164
- const formElement = buildForm();
165
- containers[0].appendChild(formElement);
166
- return {
167
- element: formElement,
168
- // this method validates the form and returns an array of errors
169
- validate: () => {
170
- const errors = [];
171
- const invalidElements = formElement.querySelectorAll(":invalid");
172
- invalidElements.forEach((element2) => {
173
- const message = element2.validationMessage;
174
- errors.push({ element: element2, message });
175
- });
176
- return errors;
177
- },
178
- // this method submits the form to the portal vocphone server
179
- submitForm: () => {
180
- submitForm(formElement);
181
- },
182
- // This method gets the data from the form.
183
- getValues: () => {
184
- const formData = new FormData(formElement);
185
- const values = {};
186
- formData.forEach((value, key) => {
187
- values[key] = value;
188
- });
189
- return values;
190
- }
191
- };
192
- }
193
-
194
- // src/forms-lib/index.ts
195
- var forms_lib_default = {
196
- renderForm
197
- };
198
-
199
- // src/main.ts
200
- var FormsLib = forms_lib_default;
201
- return __toCommonJS(main_exports);
202
- })();
1
+ "use strict";var FormsLib=(()=>{var y=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var T=(r,a)=>{for(var m in a)y(r,m,{get:a[m],enumerable:!0})},k=(r,a,m,E)=>{if(a&&typeof a=="object"||typeof a=="function")for(let o of L(a))!C.call(r,o)&&o!==m&&y(r,o,{get:()=>a[o],enumerable:!(E=f(a,o))||E.enumerable});return r};var M=r=>k(y({},"__esModule",{value:!0}),r);var v={};T(v,{FormsLib:()=>H});function b(r){console.log("Form submitted:",r)}function F(r,a){let m=[];if(typeof r=="string"?m=Array.from(document.querySelectorAll(r)):m=[r],m.length===0)return null;function E(){let l=document.createElement("form");l.id=a.id;let u=document.createElement("h2");u.textContent=a.form_name,l.appendChild(u);function c(e,n){n&&(n.min_length!==void 0&&(e.minLength=n.min_length),n.max_length!==void 0&&(e.maxLength=n.max_length),n.regex&&(e instanceof HTMLInputElement?e.pattern=n.regex:e.dataset.pattern=n.regex))}function p(e){if(!e.key&&!e.label)return null;let n=document.createElement("div");if(n.className="form-group",e.label){let t=document.createElement("label");t.htmlFor=e.key||"",t.textContent=e.label+(e.required?" *":""),n.appendChild(t)}let i=null;switch(e.type){case"textarea":{let t=document.createElement("textarea");e.key&&(t.name=e.key),e.required&&(t.required=!0),c(t,e.validation),i=t;break}case"select":{let t=document.createElement("select");e.key&&(t.name=e.key),e.required&&(t.required=!0),e.options&&e.options.forEach(d=>{let s=document.createElement("option");s.value=d.value,s.textContent=d.label,e.default===d.value&&(s.selected=!0),t.appendChild(s)}),i=t;break}case"radio":{let t=document.createElement("div");t.className="radio-group "+(e.direction||"vertical"),e.options&&e.options.forEach(d=>{let s=document.createElement("label");s.style.display=e.direction==="horizontal"?"inline-block":"block";let h=document.createElement("input");h.type="radio",h.name=e.key||"",h.value=d.value,s.appendChild(h),s.appendChild(document.createTextNode(d.label)),t.appendChild(s)}),i=t;break}default:{let t=document.createElement("input");t.type=e.type||"text",e.key&&(t.name=e.key),e.required&&(t.required=!0),c(t,e.validation),i=t;break}}if(i&&n.appendChild(i),e.hint_text){let t=document.createElement("small");t.className="hint",t.textContent=e.hint_text,n.appendChild(t)}return n}a.fields.forEach(e=>{if(e.type==="row"){let n=document.createElement("div");if(n.className="form-row",e.label){let i=document.createElement("h3");i.textContent=e.label,n.appendChild(i)}e.items.forEach(i=>{let t=p(i);t&&n.appendChild(t)}),l.appendChild(n)}else{let n=p(e);n&&l.appendChild(n)}});let g=document.createElement("button");return g.type="submit",g.textContent="Submit",l.appendChild(g),l}let o=E();return m[0].appendChild(o),{element:o,validate:()=>{let l=[];return o.querySelectorAll(":invalid").forEach(c=>{let p=c.validationMessage;l.push({element:c,message:p})}),l},submitForm:()=>{b(o)},getValues:()=>{let l=new FormData(o),u={};return l.forEach((c,p)=>{u[p]=c}),u}}}var x={renderForm:F};var H=x;return M(v);})();
package/dist/main.js CHANGED
@@ -1,204 +1 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/main.ts
21
- var main_exports = {};
22
- __export(main_exports, {
23
- FormsLib: () => FormsLib
24
- });
25
- module.exports = __toCommonJS(main_exports);
26
-
27
- // src/forms-lib/form-submit.ts
28
- function submitForm(form) {
29
- console.log("Form submitted:", form);
30
- }
31
-
32
- // src/forms-lib/form-render.ts
33
- function renderForm(element, data) {
34
- let containers = [];
35
- if (typeof element === "string") {
36
- containers = Array.from(document.querySelectorAll(element));
37
- } else {
38
- containers = [element];
39
- }
40
- if (containers.length === 0) return null;
41
- function buildForm() {
42
- const form = document.createElement("form");
43
- form.id = data.id;
44
- const title = document.createElement("h2");
45
- title.textContent = data.form_name;
46
- form.appendChild(title);
47
- function applyValidation(el, validation) {
48
- if (!validation) return;
49
- if (validation.min_length !== void 0) {
50
- el.minLength = validation.min_length;
51
- }
52
- if (validation.max_length !== void 0) {
53
- el.maxLength = validation.max_length;
54
- }
55
- if (validation.regex) {
56
- if (el instanceof HTMLInputElement) {
57
- el.pattern = validation.regex;
58
- } else {
59
- el.dataset.pattern = validation.regex;
60
- }
61
- }
62
- }
63
- function renderField(field) {
64
- if (!field.key && !field.label) return null;
65
- const wrapper = document.createElement("div");
66
- wrapper.className = "form-group";
67
- if (field.label) {
68
- const label = document.createElement("label");
69
- label.htmlFor = field.key || "";
70
- label.textContent = field.label + (field.required ? " *" : "");
71
- wrapper.appendChild(label);
72
- }
73
- let input = null;
74
- switch (field.type) {
75
- case "textarea": {
76
- const textarea = document.createElement("textarea");
77
- if (field.key) textarea.name = field.key;
78
- if (field.required) textarea.required = true;
79
- applyValidation(textarea, field.validation);
80
- input = textarea;
81
- break;
82
- }
83
- case "select": {
84
- const select = document.createElement("select");
85
- if (field.key) select.name = field.key;
86
- if (field.required) select.required = true;
87
- if (field.options) {
88
- field.options.forEach((opt) => {
89
- const option = document.createElement("option");
90
- option.value = opt.value;
91
- option.textContent = opt.label;
92
- if (field.default === opt.value) option.selected = true;
93
- select.appendChild(option);
94
- });
95
- }
96
- input = select;
97
- break;
98
- }
99
- case "radio": {
100
- const radioGroup = document.createElement("div");
101
- radioGroup.className = "radio-group " + (field.direction || "vertical");
102
- if (field.options) {
103
- field.options.forEach((opt) => {
104
- const radioWrapper = document.createElement("label");
105
- radioWrapper.style.display = field.direction === "horizontal" ? "inline-block" : "block";
106
- const radio = document.createElement("input");
107
- radio.type = "radio";
108
- radio.name = field.key || "";
109
- radio.value = opt.value;
110
- radioWrapper.appendChild(radio);
111
- radioWrapper.appendChild(
112
- document.createTextNode(opt.label)
113
- );
114
- radioGroup.appendChild(radioWrapper);
115
- });
116
- }
117
- input = radioGroup;
118
- break;
119
- }
120
- default: {
121
- const inp = document.createElement("input");
122
- inp.type = field.type || "text";
123
- if (field.key) inp.name = field.key;
124
- if (field.required) inp.required = true;
125
- applyValidation(inp, field.validation);
126
- input = inp;
127
- break;
128
- }
129
- }
130
- if (input) wrapper.appendChild(input);
131
- if (field.hint_text) {
132
- const hint = document.createElement("small");
133
- hint.className = "hint";
134
- hint.textContent = field.hint_text;
135
- wrapper.appendChild(hint);
136
- }
137
- return wrapper;
138
- }
139
- data.fields.forEach((field) => {
140
- if (field.type === "row") {
141
- const rowWrapper = document.createElement("div");
142
- rowWrapper.className = "form-row";
143
- if (field.label) {
144
- const rowLabel = document.createElement("h3");
145
- rowLabel.textContent = field.label;
146
- rowWrapper.appendChild(rowLabel);
147
- }
148
- field.items.forEach((item) => {
149
- const rendered = renderField(item);
150
- if (rendered) rowWrapper.appendChild(rendered);
151
- });
152
- form.appendChild(rowWrapper);
153
- } else {
154
- const rendered = renderField(field);
155
- if (rendered) form.appendChild(rendered);
156
- }
157
- });
158
- const submitBtn = document.createElement("button");
159
- submitBtn.type = "submit";
160
- submitBtn.textContent = "Submit";
161
- form.appendChild(submitBtn);
162
- return form;
163
- }
164
- const formElement = buildForm();
165
- containers[0].appendChild(formElement);
166
- return {
167
- element: formElement,
168
- // this method validates the form and returns an array of errors
169
- validate: () => {
170
- const errors = [];
171
- const invalidElements = formElement.querySelectorAll(":invalid");
172
- invalidElements.forEach((element2) => {
173
- const message = element2.validationMessage;
174
- errors.push({ element: element2, message });
175
- });
176
- return errors;
177
- },
178
- // this method submits the form to the portal vocphone server
179
- submitForm: () => {
180
- submitForm(formElement);
181
- },
182
- // This method gets the data from the form.
183
- getValues: () => {
184
- const formData = new FormData(formElement);
185
- const values = {};
186
- formData.forEach((value, key) => {
187
- values[key] = value;
188
- });
189
- return values;
190
- }
191
- };
192
- }
193
-
194
- // src/forms-lib/index.ts
195
- var forms_lib_default = {
196
- renderForm
197
- };
198
-
199
- // src/main.ts
200
- var FormsLib = forms_lib_default;
201
- // Annotate the CommonJS export names for ESM import in node:
202
- 0 && (module.exports = {
203
- FormsLib
204
- });
1
+ "use strict";var y=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var L=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var T=(r,a)=>{for(var m in a)y(r,m,{get:a[m],enumerable:!0})},k=(r,a,m,E)=>{if(a&&typeof a=="object"||typeof a=="function")for(let o of L(a))!C.call(r,o)&&o!==m&&y(r,o,{get:()=>a[o],enumerable:!(E=f(a,o))||E.enumerable});return r};var M=r=>k(y({},"__esModule",{value:!0}),r);var v={};T(v,{FormsLib:()=>H});module.exports=M(v);function b(r){console.log("Form submitted:",r)}function F(r,a){let m=[];if(typeof r=="string"?m=Array.from(document.querySelectorAll(r)):m=[r],m.length===0)return null;function E(){let l=document.createElement("form");l.id=a.id;let u=document.createElement("h2");u.textContent=a.form_name,l.appendChild(u);function c(e,n){n&&(n.min_length!==void 0&&(e.minLength=n.min_length),n.max_length!==void 0&&(e.maxLength=n.max_length),n.regex&&(e instanceof HTMLInputElement?e.pattern=n.regex:e.dataset.pattern=n.regex))}function p(e){if(!e.key&&!e.label)return null;let n=document.createElement("div");if(n.className="form-group",e.label){let t=document.createElement("label");t.htmlFor=e.key||"",t.textContent=e.label+(e.required?" *":""),n.appendChild(t)}let i=null;switch(e.type){case"textarea":{let t=document.createElement("textarea");e.key&&(t.name=e.key),e.required&&(t.required=!0),c(t,e.validation),i=t;break}case"select":{let t=document.createElement("select");e.key&&(t.name=e.key),e.required&&(t.required=!0),e.options&&e.options.forEach(d=>{let s=document.createElement("option");s.value=d.value,s.textContent=d.label,e.default===d.value&&(s.selected=!0),t.appendChild(s)}),i=t;break}case"radio":{let t=document.createElement("div");t.className="radio-group "+(e.direction||"vertical"),e.options&&e.options.forEach(d=>{let s=document.createElement("label");s.style.display=e.direction==="horizontal"?"inline-block":"block";let h=document.createElement("input");h.type="radio",h.name=e.key||"",h.value=d.value,s.appendChild(h),s.appendChild(document.createTextNode(d.label)),t.appendChild(s)}),i=t;break}default:{let t=document.createElement("input");t.type=e.type||"text",e.key&&(t.name=e.key),e.required&&(t.required=!0),c(t,e.validation),i=t;break}}if(i&&n.appendChild(i),e.hint_text){let t=document.createElement("small");t.className="hint",t.textContent=e.hint_text,n.appendChild(t)}return n}a.fields.forEach(e=>{if(e.type==="row"){let n=document.createElement("div");if(n.className="form-row",e.label){let i=document.createElement("h3");i.textContent=e.label,n.appendChild(i)}e.items.forEach(i=>{let t=p(i);t&&n.appendChild(t)}),l.appendChild(n)}else{let n=p(e);n&&l.appendChild(n)}});let g=document.createElement("button");return g.type="submit",g.textContent="Submit",l.appendChild(g),l}let o=E();return m[0].appendChild(o),{element:o,validate:()=>{let l=[];return o.querySelectorAll(":invalid").forEach(c=>{let p=c.validationMessage;l.push({element:c,message:p})}),l},submitForm:()=>{b(o)},getValues:()=>{let l=new FormData(o),u={};return l.forEach((c,p)=>{u[p]=c}),u}}}var x={renderForm:F};var H=x;0&&(module.exports={FormsLib});
package/dist/main.mjs CHANGED
@@ -1,177 +1 @@
1
- // src/forms-lib/form-submit.ts
2
- function submitForm(form) {
3
- console.log("Form submitted:", form);
4
- }
5
-
6
- // src/forms-lib/form-render.ts
7
- function renderForm(element, data) {
8
- let containers = [];
9
- if (typeof element === "string") {
10
- containers = Array.from(document.querySelectorAll(element));
11
- } else {
12
- containers = [element];
13
- }
14
- if (containers.length === 0) return null;
15
- function buildForm() {
16
- const form = document.createElement("form");
17
- form.id = data.id;
18
- const title = document.createElement("h2");
19
- title.textContent = data.form_name;
20
- form.appendChild(title);
21
- function applyValidation(el, validation) {
22
- if (!validation) return;
23
- if (validation.min_length !== void 0) {
24
- el.minLength = validation.min_length;
25
- }
26
- if (validation.max_length !== void 0) {
27
- el.maxLength = validation.max_length;
28
- }
29
- if (validation.regex) {
30
- if (el instanceof HTMLInputElement) {
31
- el.pattern = validation.regex;
32
- } else {
33
- el.dataset.pattern = validation.regex;
34
- }
35
- }
36
- }
37
- function renderField(field) {
38
- if (!field.key && !field.label) return null;
39
- const wrapper = document.createElement("div");
40
- wrapper.className = "form-group";
41
- if (field.label) {
42
- const label = document.createElement("label");
43
- label.htmlFor = field.key || "";
44
- label.textContent = field.label + (field.required ? " *" : "");
45
- wrapper.appendChild(label);
46
- }
47
- let input = null;
48
- switch (field.type) {
49
- case "textarea": {
50
- const textarea = document.createElement("textarea");
51
- if (field.key) textarea.name = field.key;
52
- if (field.required) textarea.required = true;
53
- applyValidation(textarea, field.validation);
54
- input = textarea;
55
- break;
56
- }
57
- case "select": {
58
- const select = document.createElement("select");
59
- if (field.key) select.name = field.key;
60
- if (field.required) select.required = true;
61
- if (field.options) {
62
- field.options.forEach((opt) => {
63
- const option = document.createElement("option");
64
- option.value = opt.value;
65
- option.textContent = opt.label;
66
- if (field.default === opt.value) option.selected = true;
67
- select.appendChild(option);
68
- });
69
- }
70
- input = select;
71
- break;
72
- }
73
- case "radio": {
74
- const radioGroup = document.createElement("div");
75
- radioGroup.className = "radio-group " + (field.direction || "vertical");
76
- if (field.options) {
77
- field.options.forEach((opt) => {
78
- const radioWrapper = document.createElement("label");
79
- radioWrapper.style.display = field.direction === "horizontal" ? "inline-block" : "block";
80
- const radio = document.createElement("input");
81
- radio.type = "radio";
82
- radio.name = field.key || "";
83
- radio.value = opt.value;
84
- radioWrapper.appendChild(radio);
85
- radioWrapper.appendChild(
86
- document.createTextNode(opt.label)
87
- );
88
- radioGroup.appendChild(radioWrapper);
89
- });
90
- }
91
- input = radioGroup;
92
- break;
93
- }
94
- default: {
95
- const inp = document.createElement("input");
96
- inp.type = field.type || "text";
97
- if (field.key) inp.name = field.key;
98
- if (field.required) inp.required = true;
99
- applyValidation(inp, field.validation);
100
- input = inp;
101
- break;
102
- }
103
- }
104
- if (input) wrapper.appendChild(input);
105
- if (field.hint_text) {
106
- const hint = document.createElement("small");
107
- hint.className = "hint";
108
- hint.textContent = field.hint_text;
109
- wrapper.appendChild(hint);
110
- }
111
- return wrapper;
112
- }
113
- data.fields.forEach((field) => {
114
- if (field.type === "row") {
115
- const rowWrapper = document.createElement("div");
116
- rowWrapper.className = "form-row";
117
- if (field.label) {
118
- const rowLabel = document.createElement("h3");
119
- rowLabel.textContent = field.label;
120
- rowWrapper.appendChild(rowLabel);
121
- }
122
- field.items.forEach((item) => {
123
- const rendered = renderField(item);
124
- if (rendered) rowWrapper.appendChild(rendered);
125
- });
126
- form.appendChild(rowWrapper);
127
- } else {
128
- const rendered = renderField(field);
129
- if (rendered) form.appendChild(rendered);
130
- }
131
- });
132
- const submitBtn = document.createElement("button");
133
- submitBtn.type = "submit";
134
- submitBtn.textContent = "Submit";
135
- form.appendChild(submitBtn);
136
- return form;
137
- }
138
- const formElement = buildForm();
139
- containers[0].appendChild(formElement);
140
- return {
141
- element: formElement,
142
- // this method validates the form and returns an array of errors
143
- validate: () => {
144
- const errors = [];
145
- const invalidElements = formElement.querySelectorAll(":invalid");
146
- invalidElements.forEach((element2) => {
147
- const message = element2.validationMessage;
148
- errors.push({ element: element2, message });
149
- });
150
- return errors;
151
- },
152
- // this method submits the form to the portal vocphone server
153
- submitForm: () => {
154
- submitForm(formElement);
155
- },
156
- // This method gets the data from the form.
157
- getValues: () => {
158
- const formData = new FormData(formElement);
159
- const values = {};
160
- formData.forEach((value, key) => {
161
- values[key] = value;
162
- });
163
- return values;
164
- }
165
- };
166
- }
167
-
168
- // src/forms-lib/index.ts
169
- var forms_lib_default = {
170
- renderForm
171
- };
172
-
173
- // src/main.ts
174
- var FormsLib = forms_lib_default;
175
- export {
176
- FormsLib
177
- };
1
+ function g(c){console.log("Form submitted:",c)}function y(c,E){let p=[];if(typeof c=="string"?p=Array.from(document.querySelectorAll(c)):p=[c],p.length===0)return null;function F(){let r=document.createElement("form");r.id=E.id;let i=document.createElement("h2");i.textContent=E.form_name,r.appendChild(i);function l(e,n){n&&(n.min_length!==void 0&&(e.minLength=n.min_length),n.max_length!==void 0&&(e.maxLength=n.max_length),n.regex&&(e instanceof HTMLInputElement?e.pattern=n.regex:e.dataset.pattern=n.regex))}function m(e){if(!e.key&&!e.label)return null;let n=document.createElement("div");if(n.className="form-group",e.label){let t=document.createElement("label");t.htmlFor=e.key||"",t.textContent=e.label+(e.required?" *":""),n.appendChild(t)}let a=null;switch(e.type){case"textarea":{let t=document.createElement("textarea");e.key&&(t.name=e.key),e.required&&(t.required=!0),l(t,e.validation),a=t;break}case"select":{let t=document.createElement("select");e.key&&(t.name=e.key),e.required&&(t.required=!0),e.options&&e.options.forEach(s=>{let o=document.createElement("option");o.value=s.value,o.textContent=s.label,e.default===s.value&&(o.selected=!0),t.appendChild(o)}),a=t;break}case"radio":{let t=document.createElement("div");t.className="radio-group "+(e.direction||"vertical"),e.options&&e.options.forEach(s=>{let o=document.createElement("label");o.style.display=e.direction==="horizontal"?"inline-block":"block";let d=document.createElement("input");d.type="radio",d.name=e.key||"",d.value=s.value,o.appendChild(d),o.appendChild(document.createTextNode(s.label)),t.appendChild(o)}),a=t;break}default:{let t=document.createElement("input");t.type=e.type||"text",e.key&&(t.name=e.key),e.required&&(t.required=!0),l(t,e.validation),a=t;break}}if(a&&n.appendChild(a),e.hint_text){let t=document.createElement("small");t.className="hint",t.textContent=e.hint_text,n.appendChild(t)}return n}E.fields.forEach(e=>{if(e.type==="row"){let n=document.createElement("div");if(n.className="form-row",e.label){let a=document.createElement("h3");a.textContent=e.label,n.appendChild(a)}e.items.forEach(a=>{let t=m(a);t&&n.appendChild(t)}),r.appendChild(n)}else{let n=m(e);n&&r.appendChild(n)}});let h=document.createElement("button");return h.type="submit",h.textContent="Submit",r.appendChild(h),r}let u=F();return p[0].appendChild(u),{element:u,validate:()=>{let r=[];return u.querySelectorAll(":invalid").forEach(l=>{let m=l.validationMessage;r.push({element:l,message:m})}),r},submitForm:()=>{g(u)},getValues:()=>{let r=new FormData(u),i={};return r.forEach((l,m)=>{i[m]=l}),i}}}var b={renderForm:y};var M=b;export{M as FormsLib};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "voc-lib-js",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "description": "A JavaScript library for VocPhone",
5
5
  "main": "./dist/main.cjs",
6
6
  "module": "./dist/main.mjs",
@@ -8,7 +8,7 @@
8
8
  "jsdelivr": "./dist/main.iife.js",
9
9
  "types": "./dist/main.d.ts",
10
10
  "scripts": {
11
- "build": "tsup src/main.ts --format cjs,esm,iife --global-name FormsLib --dts",
11
+ "build": "tsup",
12
12
  "up": "npm version patch && rimraf dist && npm run build && npm publish"
13
13
  },
14
14
  "repository": {