@twintag/twintag-form 0.1.0 → 0.3.0
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/.turbo/turbo-build.log +37 -29
- package/CHANGELOG.md +12 -0
- package/README.md +206 -0
- package/dist/index.es.js +6787 -6804
- package/dist/index.umd.js +43 -43
- package/dist/lib/__stories__/Form.stories.d.ts +7 -0
- package/dist/lib/__stories__/Form.stories.d.ts.map +1 -0
- package/dist/lib/components/Input/checkbox.d.ts +2 -2
- package/dist/lib/components/Input/checkbox.d.ts.map +1 -1
- package/dist/lib/components/Input/file.d.ts +2 -2
- package/dist/lib/components/Input/file.d.ts.map +1 -1
- package/dist/lib/components/Input/index.d.ts +2 -0
- package/dist/lib/components/Input/index.d.ts.map +1 -1
- package/dist/lib/components/Input/simple.d.ts +2 -2
- package/dist/lib/components/Input/simple.d.ts.map +1 -1
- package/dist/lib/components/Input/submit.d.ts +2 -2
- package/dist/lib/components/Input/submit.d.ts.map +1 -1
- package/dist/lib/components/Input/textarea.d.ts +2 -2
- package/dist/lib/components/Input/textarea.d.ts.map +1 -1
- package/dist/lib/components/Input/toggle.d.ts +2 -2
- package/dist/lib/components/Input/toggle.d.ts.map +1 -1
- package/dist/lib/components/Label/index.d.ts +9 -0
- package/dist/lib/components/Label/index.d.ts.map +1 -0
- package/dist/lib/components/index.d.ts +5 -0
- package/dist/lib/components/index.d.ts.map +1 -0
- package/dist/lib/index.d.ts +6 -4
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/styles.d.ts +1 -0
- package/dist/lib/styles.d.ts.map +1 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/twind.config.d.ts.map +1 -1
- package/dist/webcomponent.es.js +7271 -7285
- package/dist/webcomponent.umd.js +43 -43
- package/lib/__stories__/Form.stories.tsx +38 -0
- package/lib/components/Form/index.tsx +1 -1
- package/lib/components/Input/checkbox.tsx +7 -4
- package/lib/components/Input/file.tsx +15 -6
- package/lib/components/Input/index.tsx +2 -2
- package/lib/components/Input/simple.tsx +11 -12
- package/lib/components/Input/submit.tsx +7 -5
- package/lib/components/Input/textarea.tsx +15 -12
- package/lib/components/Input/toggle.tsx +23 -18
- package/lib/components/Label/index.tsx +22 -0
- package/lib/components/index.tsx +5 -0
- package/lib/index.tsx +3 -3
- package/lib/styles.ts +12 -8
- package/lib/types/index.ts +1 -0
- package/package.json +3 -5
- package/scripts/build.js +5 -0
- package/tsconfig.json +1 -1
- package/twind.config.ts +5 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,50 +1,58 @@
|
|
|
1
1
|
|
|
2
|
-
> @twintag/twintag-form@0.
|
|
2
|
+
> @twintag/twintag-form@0.3.0 build /home/runner/work/twintag-templates/twintag-templates/packages/twintag-form
|
|
3
3
|
> tsc && node ./scripts/build.js
|
|
4
4
|
|
|
5
|
-
[36mvite v4.
|
|
6
|
-
[36mvite v4.
|
|
5
|
+
[36mvite v4.3.9 [32mbuilding for production...[36m[39m
|
|
6
|
+
[36mvite v4.3.9 [32mbuilding for production...[36m[39m
|
|
7
7
|
transforming...
|
|
8
8
|
transforming...
|
|
9
|
-
[32m✓[39m
|
|
9
|
+
[32m✓[39m 681 modules transformed.
|
|
10
10
|
[1m[33m[plugin:typescript][39m[22m [33m@rollup/plugin-typescript: Rollup 'sourcemap' option must be set to generate source maps.[39m
|
|
11
|
-
[32m✓[39m
|
|
11
|
+
[32m✓[39m 662 modules transformed.
|
|
12
12
|
[1m[33m[plugin:typescript][39m[22m [33m@rollup/plugin-typescript: Rollup 'sourcemap' option must be set to generate source maps.[39m
|
|
13
13
|
rendering chunks...
|
|
14
14
|
computing gzip size...
|
|
15
15
|
[2mdist/[22m[32mlib/webcomponent.d.ts [39m[1m[2m 0.05 kB[22m[1m[22m
|
|
16
|
-
[2mdist/[22m[32mlib/components/
|
|
16
|
+
[2mdist/[22m[32mlib/components/index.d.ts [39m[1m[2m 0.15 kB[22m[1m[22m
|
|
17
|
+
[2mdist/[22m[32mlib/components/Input/index.d.ts [39m[1m[2m 0.28 kB[22m[1m[22m
|
|
18
|
+
[2mdist/[22m[32mlib/__stories__/Form.stories.d.ts [39m[1m[2m 0.28 kB[22m[1m[22m
|
|
17
19
|
[2mdist/[22m[32mtwind.config.d.ts [39m[1m[2m 0.29 kB[22m[1m[22m
|
|
18
20
|
[2mdist/[22m[32mlib/components/Form/index.d.ts [39m[1m[2m 0.30 kB[22m[1m[22m
|
|
19
|
-
[2mdist/[22m[32mlib/components/
|
|
20
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
21
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
22
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
23
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
24
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
21
|
+
[2mdist/[22m[32mlib/components/Label/index.d.ts [39m[1m[2m 0.31 kB[22m[1m[22m
|
|
22
|
+
[2mdist/[22m[32mlib/components/Input/submit.d.ts [39m[1m[2m 0.39 kB[22m[1m[22m
|
|
23
|
+
[2mdist/[22m[32mlib/components/Input/file.d.ts [39m[1m[2m 0.40 kB[22m[1m[22m
|
|
24
|
+
[2mdist/[22m[32mlib/components/Input/simple.d.ts [39m[1m[2m 0.41 kB[22m[1m[22m
|
|
25
|
+
[2mdist/[22m[32mlib/components/Input/toggle.d.ts [39m[1m[2m 0.41 kB[22m[1m[22m
|
|
26
|
+
[2mdist/[22m[32mlib/components/Input/textarea.d.ts [39m[1m[2m 0.41 kB[22m[1m[22m
|
|
27
|
+
[2mdist/[22m[32mlib/components/Input/checkbox.d.ts [39m[1m[2m 0.42 kB[22m[1m[22m
|
|
25
28
|
[2mdist/[22m[32mlib/components/Form/register.d.ts [39m[1m[2m 0.42 kB[22m[1m[22m
|
|
26
|
-
[2mdist/[22m[32mlib/types/index.d.ts [39m[1m[2m 0.
|
|
27
|
-
[2mdist/[22m[32mlib/index.d.ts [39m[1m[2m 0.
|
|
28
|
-
[2mdist/[22m[32mlib/styles.d.ts [39m[1m[2m
|
|
29
|
-
[2mdist/[22m[36mwebcomponent.es.js [39m[1m[33m1,009.
|
|
29
|
+
[2mdist/[22m[32mlib/types/index.d.ts [39m[1m[2m 0.45 kB[22m[1m[22m
|
|
30
|
+
[2mdist/[22m[32mlib/index.d.ts [39m[1m[2m 0.46 kB[22m[1m[22m
|
|
31
|
+
[2mdist/[22m[32mlib/styles.d.ts [39m[1m[2m 3.24 kB[22m[1m[22m
|
|
32
|
+
[2mdist/[22m[36mwebcomponent.es.js [39m[1m[33m1,009.45 kB[39m[22m[2m │ gzip: 240.03 kB[22m
|
|
30
33
|
[1m[33m[plugin:typescript][39m[22m [33m@rollup/plugin-typescript: Rollup 'sourcemap' option must be set to generate source maps.[39m
|
|
31
34
|
rendering chunks...
|
|
32
35
|
computing gzip size...
|
|
33
|
-
[2mdist/[22m[36mindex.es.js [39m[1m[
|
|
36
|
+
[2mdist/[22m[36mindex.es.js [39m[1m[33m893.03 kB[39m[22m[2m │ gzip: 208.16 kB[22m
|
|
34
37
|
[1m[33m[plugin:typescript][39m[22m [33m@rollup/plugin-typescript: Rollup 'sourcemap' option must be set to generate source maps.[39m
|
|
35
38
|
[2mdist/[22m[32mlib/webcomponent.d.ts [39m[1m[2m 0.05 kB[22m[1m[22m
|
|
36
|
-
[2mdist/[22m[32mlib/components/
|
|
39
|
+
[2mdist/[22m[32mlib/components/index.d.ts [39m[1m[2m 0.15 kB[22m[1m[22m
|
|
40
|
+
[2mdist/[22m[32mlib/components/Input/index.d.ts [39m[1m[2m 0.28 kB[22m[1m[22m
|
|
41
|
+
[2mdist/[22m[32mlib/__stories__/Form.stories.d.ts [39m[1m[2m 0.28 kB[22m[1m[22m
|
|
37
42
|
[2mdist/[22m[32mtwind.config.d.ts [39m[1m[2m 0.29 kB[22m[1m[22m
|
|
38
43
|
[2mdist/[22m[32mlib/components/Form/index.d.ts [39m[1m[2m 0.30 kB[22m[1m[22m
|
|
39
|
-
[2mdist/[22m[32mlib/components/
|
|
40
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
41
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
42
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
43
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
44
|
-
[2mdist/[22m[32mlib/components/Input/
|
|
44
|
+
[2mdist/[22m[32mlib/components/Label/index.d.ts [39m[1m[2m 0.31 kB[22m[1m[22m
|
|
45
|
+
[2mdist/[22m[32mlib/components/Input/submit.d.ts [39m[1m[2m 0.39 kB[22m[1m[22m
|
|
46
|
+
[2mdist/[22m[32mlib/components/Input/file.d.ts [39m[1m[2m 0.40 kB[22m[1m[22m
|
|
47
|
+
[2mdist/[22m[32mlib/components/Input/simple.d.ts [39m[1m[2m 0.41 kB[22m[1m[22m
|
|
48
|
+
[2mdist/[22m[32mlib/components/Input/toggle.d.ts [39m[1m[2m 0.41 kB[22m[1m[22m
|
|
49
|
+
[2mdist/[22m[32mlib/components/Input/textarea.d.ts [39m[1m[2m 0.41 kB[22m[1m[22m
|
|
50
|
+
[2mdist/[22m[32mlib/components/Input/checkbox.d.ts [39m[1m[2m 0.42 kB[22m[1m[22m
|
|
45
51
|
[2mdist/[22m[32mlib/components/Form/register.d.ts [39m[1m[2m 0.42 kB[22m[1m[22m
|
|
46
|
-
[2mdist/[22m[32mlib/types/index.d.ts [39m[1m[2m 0.
|
|
47
|
-
[2mdist/[22m[32mlib/index.d.ts [39m[1m[2m 0.
|
|
48
|
-
[2mdist/[22m[32mlib/styles.d.ts [39m[1m[2m
|
|
49
|
-
[2mdist/[22m[36mwebcomponent.umd.js [39m[1m[
|
|
50
|
-
[
|
|
52
|
+
[2mdist/[22m[32mlib/types/index.d.ts [39m[1m[2m 0.45 kB[22m[1m[22m
|
|
53
|
+
[2mdist/[22m[32mlib/index.d.ts [39m[1m[2m 0.46 kB[22m[1m[22m
|
|
54
|
+
[2mdist/[22m[32mlib/styles.d.ts [39m[1m[2m 3.24 kB[22m[1m[22m
|
|
55
|
+
[2mdist/[22m[36mwebcomponent.umd.js [39m[1m[33m622.35 kB[39m[22m[2m │ gzip: 194.56 kB[22m
|
|
56
|
+
[32m✓ built in 17.53s[39m
|
|
57
|
+
[2mdist/[22m[36mindex.umd.js [39m[1m[33m556.28 kB[39m[22m[2m │ gzip: 172.27 kB[22m
|
|
58
|
+
[32m✓ built in 17.66s[39m
|
package/CHANGELOG.md
CHANGED
package/README.md
ADDED
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# **Twintag Form**
|
|
2
|
+
|
|
3
|
+
## **Content**
|
|
4
|
+
|
|
5
|
+
- [Introduction](#introduction)
|
|
6
|
+
- [Framework Agnostic](#framework-agnostic)
|
|
7
|
+
- [Parameters](#parameters)
|
|
8
|
+
- [Config](#config)
|
|
9
|
+
- [Options](#options)
|
|
10
|
+
- [Inputs](#inputs)
|
|
11
|
+
- [Input Options](#input-options)
|
|
12
|
+
- [Simple](#simple)
|
|
13
|
+
- [Textarea](#textarea)
|
|
14
|
+
- [File](#file)
|
|
15
|
+
- [Checkbox](#checkbox)
|
|
16
|
+
- [Toggle](#toggle)
|
|
17
|
+
- [Submit](#submit)
|
|
18
|
+
- [Event Handling](#event-handling)
|
|
19
|
+
|
|
20
|
+
## **Introduction**
|
|
21
|
+
|
|
22
|
+
Twintag Form provides a web component that allows you to create a form based on a JSON object, leaving the actions to the developer.
|
|
23
|
+
|
|
24
|
+
## **Framework Agnostic**
|
|
25
|
+
|
|
26
|
+
Twintag Form exposes a web component that can be used in any framework or vanilla JS.
|
|
27
|
+
|
|
28
|
+
```html
|
|
29
|
+
<twintag-form options="..." config="[...]"></twintag-form>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## **Parameters**
|
|
33
|
+
|
|
34
|
+
The form component receives the following parameters:
|
|
35
|
+
|
|
36
|
+
| Parameter | Type | Description |
|
|
37
|
+
| --------- | -------- | --------------------------------------- |
|
|
38
|
+
| `config` | `array` | Array that contains the form structure. |
|
|
39
|
+
| `options` | `object` | Options to customize the form |
|
|
40
|
+
|
|
41
|
+
### **Config**
|
|
42
|
+
|
|
43
|
+
The `config` object contains the form structure. It is organized by the index of the items, where each item is an `Input` field represented by an object with the following properties:
|
|
44
|
+
|
|
45
|
+
| Property | Type | Description |
|
|
46
|
+
| ----------------- | -------- | -------------------------------------------------------------- |
|
|
47
|
+
| `input:<subtype>` | `string` | Type of the input. |
|
|
48
|
+
| `label` | `string` | Name of the form. |
|
|
49
|
+
| `bind` | `string` | Unique identifier for the form. (Optional for `Submit` inputs) |
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
[
|
|
53
|
+
{
|
|
54
|
+
"type": "input:simple",
|
|
55
|
+
"label": "Email",
|
|
56
|
+
"bind": "email"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "input:textarea",
|
|
60
|
+
"label": "Message",
|
|
61
|
+
"bind": "message"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"type": "input:submit",
|
|
65
|
+
"label": "Submit"
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### **Options**
|
|
71
|
+
|
|
72
|
+
Twintag Form provides some options to customize the form:
|
|
73
|
+
|
|
74
|
+
| Option | Type | Description |
|
|
75
|
+
| --------------- | --------- | ------------------------------------------------------------------------- | -------------------- |
|
|
76
|
+
| `variant` | `alpha | beta` | Variant of the form. |
|
|
77
|
+
| `resetOnSubmit` | `boolean` | If `true`, the form will be reset after submitting. (`false` per default) |
|
|
78
|
+
|
|
79
|
+
### **Inputs**
|
|
80
|
+
|
|
81
|
+
#### **Input Options**
|
|
82
|
+
|
|
83
|
+
Each input can be customized with the following options:
|
|
84
|
+
|
|
85
|
+
| Option | Type | Description |
|
|
86
|
+
| --------------- | --------- | ------------------------------------------------------------ | --------------------- |
|
|
87
|
+
| `variant` | `alpha | beta` | Variant of the input. |
|
|
88
|
+
| `placeholder` | `string` | Placeholder of the input. |
|
|
89
|
+
| `optionalField` | `boolean` | If `true`, the field will be optional. (`false` per default) |
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"type": "input:simple",
|
|
94
|
+
"label": "Email",
|
|
95
|
+
"bind": "email",
|
|
96
|
+
"options": {
|
|
97
|
+
"variant": "alpha",
|
|
98
|
+
"placeholder": "Enter your email",
|
|
99
|
+
"optionalField": true
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### **Simple**
|
|
105
|
+
|
|
106
|
+
The `simple` input is a simple text input.
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"type": "input:simple",
|
|
111
|
+
"label": "Email",
|
|
112
|
+
"bind": "email"
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
#### **Textarea**
|
|
117
|
+
|
|
118
|
+
The `textarea` input is a textarea input.
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"type": "input:textarea",
|
|
123
|
+
"label": "Message",
|
|
124
|
+
"bind": "message"
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### **File**
|
|
129
|
+
|
|
130
|
+
The `file` input is a file input.
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"type": "input:file",
|
|
135
|
+
"label": "File",
|
|
136
|
+
"bind": "file"
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### **Checkbox**
|
|
141
|
+
|
|
142
|
+
The `checkbox` input is a checkbox input.
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"type": "input:checkbox",
|
|
147
|
+
"label": "Checkbox",
|
|
148
|
+
"bind": "checkbox"
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
#### **Toggle**
|
|
153
|
+
|
|
154
|
+
The `toggle` input is a toggle input.
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"type": "input:toggle",
|
|
159
|
+
"label": "Toggle",
|
|
160
|
+
"bind": "toggle"
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### **Submit**
|
|
165
|
+
|
|
166
|
+
The `submit` input is a submit input.
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"type": "input:submit",
|
|
171
|
+
"label": "Submit"
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## **Event Handling**
|
|
176
|
+
|
|
177
|
+
```html
|
|
178
|
+
<twintag-form
|
|
179
|
+
id="yourform"
|
|
180
|
+
options='{"variant":"beta","resetOnSubmit":true}'
|
|
181
|
+
config='[{"type":"input:toggle","label":"Test","bind":"test","options":{"optionalField":true}},{"type":"input:submit","label":"Submit"}]'
|
|
182
|
+
></twintag-form>
|
|
183
|
+
|
|
184
|
+
<button id="btn">Submit</button>
|
|
185
|
+
|
|
186
|
+
<script>
|
|
187
|
+
const form = document.getElementById('yourform');
|
|
188
|
+
const btn = document.getElementById('btn');
|
|
189
|
+
|
|
190
|
+
// If there are no errors, the form will emit a custom event with the data on submit
|
|
191
|
+
form.addEventListener('twintag-form-valid', (e) => {
|
|
192
|
+
console.log(e.detail); // { test: true }
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
// If there are errors, the form will emit a custom event with the errors
|
|
196
|
+
form.addEventListener('twintag-form-invalid', (e) => {
|
|
197
|
+
console.log(e.detail); // { test: 'Test is required' }
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// You can validate the form outside the component:
|
|
201
|
+
btn.addEventListener('click', () => {
|
|
202
|
+
const submitEvent = new Event('twintag-form-validate');
|
|
203
|
+
form.shadowRoot.querySelector('form').dispatchEvent(submitEvent);
|
|
204
|
+
});
|
|
205
|
+
</script>
|
|
206
|
+
```
|