@twintag/twintag-form 1.1.1 → 1.2.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 +13 -13
- package/CHANGELOG.md +6 -0
- package/dev/index.css +32 -32
- package/dev/main.tsx +24 -0
- package/dist/twintag-form.react.js +23 -16
- package/index.html +26 -15
- package/lib/components/form.tsx +19 -6
- package/package.json +3 -3
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
|
|
2
|
-
> @twintag/twintag-form@1.
|
|
2
|
+
> @twintag/twintag-form@1.2.0 build /home/runner/work/twintag-admin/twintag-admin/packages/twintag-form
|
|
3
3
|
> tsc && vite build
|
|
4
4
|
|
|
5
5
|
[36mvite v4.4.9 [32mbuilding for production...[36m[39m
|
|
6
6
|
transforming...
|
|
7
7
|
[32m✓[39m 2526 modules transformed.
|
|
8
8
|
rendering chunks...
|
|
9
|
-
|
|
10
|
-
[vite:dts] Start generate declaration files
|
|
9
|
+
[32m
|
|
10
|
+
[36m[vite:dts][32m Start generate declaration files...[39m
|
|
11
11
|
computing gzip size...
|
|
12
|
-
[vite:dts]
|
|
13
|
-
[vite:dts]
|
|
14
|
-
[vite:dts]
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[vite:dts]
|
|
18
|
-
|
|
19
|
-
[
|
|
20
|
-
[
|
|
21
|
-
[32m✓ built in
|
|
12
|
+
[36m[vite:dts][39m [33mOutside emitted:[39m /home/runner/work/twintag-admin/twintag-admin/packages/twintag-form/tailwind.config.d.ts
|
|
13
|
+
[36m[vite:dts][39m [33mOutside emitted:[39m /home/runner/work/twintag-admin/twintag-admin/packages/twintag-form/.eslintrc.d.cts
|
|
14
|
+
[36m[vite:dts][39m [33mOutside emitted:[39m /home/runner/work/twintag-admin/twintag-admin/packages/twintag-form/prettier.config.d.mts
|
|
15
|
+
[2mdist/[22m[36mtwintag-form.webcomponent.js [39m[1m[2m119.72 kB[22m[1m[22m[2m │ gzip: 33.49 kB[22m
|
|
16
|
+
[2mdist/[22m[36mtwintag-form.react.js [39m[1m[33m687.86 kB[39m[22m[2m │ gzip: 139.95 kB[22m
|
|
17
|
+
[36m[vite:dts][39m [33mOutside emitted:[39m /home/runner/work/twintag-admin/twintag-admin/packages/twintag-form/dev/main.d.ts
|
|
18
|
+
[36m[vite:dts][39m [33mOutside emitted:[39m /home/runner/work/twintag-admin/twintag-admin/packages/twintag-form/vite.config.d.ts
|
|
19
|
+
[32m[36m[vite:dts][32m Declaration files built in 7394ms.
|
|
20
|
+
[39m
|
|
21
|
+
[32m✓ built in 14.10s[39m
|
package/CHANGELOG.md
CHANGED
package/dev/index.css
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap');
|
|
2
|
-
|
|
3
|
-
@tailwind base;
|
|
4
|
-
@tailwind components;
|
|
5
|
-
@tailwind utilities;
|
|
6
|
-
|
|
7
|
-
:root {
|
|
8
|
-
--tf-label: 222.2 47.4% 11.2%;
|
|
9
|
-
--tf-category: 222.2 47.4% 11.2%;
|
|
10
|
-
|
|
11
|
-
--tf-background: 0 0% 100%;
|
|
12
|
-
--tf-foreground: 0 0% 0%;
|
|
13
|
-
|
|
14
|
-
--tf-muted: 210 40% 96.1%;
|
|
15
|
-
--tf-muted-foreground: 215.4 16.3% 46.9%;
|
|
16
|
-
|
|
17
|
-
--tf-primary: 210 40% 98%;
|
|
18
|
-
--tf-primary-foreground: 222.2 47.4% 11.2%;
|
|
19
|
-
|
|
20
|
-
--tf-accent: 222.2 47.4% 11.2%;
|
|
21
|
-
--tf-accent-foreground: 210 40% 96.1%;
|
|
22
|
-
|
|
23
|
-
--tf-destructive: 0 100% 50%;
|
|
24
|
-
--tf-destructive-foreground: 210 40% 98%;
|
|
25
|
-
|
|
26
|
-
--tf-input: 214.3 31.8% 91.4%;
|
|
27
|
-
--tf-ring: 215 20.2% 65.1%;
|
|
28
|
-
|
|
29
|
-
--tf-radius: 0.5rem;
|
|
30
|
-
|
|
31
|
-
--tf-font: 'Roboto', sans-serif;
|
|
32
|
-
}
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap');
|
|
2
|
+
|
|
3
|
+
@tailwind base;
|
|
4
|
+
@tailwind components;
|
|
5
|
+
@tailwind utilities;
|
|
6
|
+
|
|
7
|
+
:root {
|
|
8
|
+
--tf-label: 222.2 47.4% 11.2%;
|
|
9
|
+
--tf-category: 222.2 47.4% 11.2%;
|
|
10
|
+
|
|
11
|
+
--tf-background: 0 0% 100%;
|
|
12
|
+
--tf-foreground: 0 0% 0%;
|
|
13
|
+
|
|
14
|
+
--tf-muted: 210 40% 96.1%;
|
|
15
|
+
--tf-muted-foreground: 215.4 16.3% 46.9%;
|
|
16
|
+
|
|
17
|
+
--tf-primary: 210 40% 98%;
|
|
18
|
+
--tf-primary-foreground: 222.2 47.4% 11.2%;
|
|
19
|
+
|
|
20
|
+
--tf-accent: 222.2 47.4% 11.2%;
|
|
21
|
+
--tf-accent-foreground: 210 40% 96.1%;
|
|
22
|
+
|
|
23
|
+
--tf-destructive: 0 100% 50%;
|
|
24
|
+
--tf-destructive-foreground: 210 40% 98%;
|
|
25
|
+
|
|
26
|
+
--tf-input: 214.3 31.8% 91.4%;
|
|
27
|
+
--tf-ring: 215 20.2% 65.1%;
|
|
28
|
+
|
|
29
|
+
--tf-radius: 0.5rem;
|
|
30
|
+
|
|
31
|
+
--tf-font: 'Roboto', sans-serif;
|
|
32
|
+
}
|
package/dev/main.tsx
CHANGED
|
@@ -184,3 +184,27 @@ const form = document.querySelector('twintag-form');
|
|
|
184
184
|
|
|
185
185
|
form?.setAttribute('config', JSON.stringify(config));
|
|
186
186
|
form?.setAttribute('options', JSON.stringify(options));
|
|
187
|
+
|
|
188
|
+
form?.addEventListener('twintag-form-values', (event) => {
|
|
189
|
+
console.log('form values', (event as CustomEvent).detail);
|
|
190
|
+
});
|
|
191
|
+
form?.addEventListener('twintag-form-valid', (e) => {
|
|
192
|
+
console.log('form valid', (e as CustomEvent).detail);
|
|
193
|
+
});
|
|
194
|
+
form?.addEventListener('twintag-form-invalid', (e) => {
|
|
195
|
+
console.log('form invalid', (e as CustomEvent).detail);
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
const getValues = document.getElementById('get-values');
|
|
199
|
+
getValues?.addEventListener('click', () => {
|
|
200
|
+
form?.shadowRoot
|
|
201
|
+
?.querySelector('form')
|
|
202
|
+
?.dispatchEvent(new CustomEvent('twintag-form-get_values'));
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
const submit = document.getElementById('submit');
|
|
206
|
+
submit?.addEventListener('click', () => {
|
|
207
|
+
form?.shadowRoot
|
|
208
|
+
?.querySelector('form')
|
|
209
|
+
?.dispatchEvent(new CustomEvent('twintag-form-validate'));
|
|
210
|
+
});
|
|
@@ -21867,42 +21867,49 @@ const za = (e, t) => {
|
|
|
21867
21867
|
Re(() => {
|
|
21868
21868
|
a.formState.isSubmitSuccessful && t && e && a.reset(
|
|
21869
21869
|
Object.keys(e).reduce(
|
|
21870
|
-
(
|
|
21870
|
+
(u, f) => ({ ...u, [f]: "" }),
|
|
21871
21871
|
{}
|
|
21872
21872
|
)
|
|
21873
21873
|
);
|
|
21874
21874
|
}, [a.formState]);
|
|
21875
|
-
const s = (
|
|
21876
|
-
var
|
|
21877
|
-
|
|
21878
|
-
|
|
21879
|
-
detail: l,
|
|
21875
|
+
const s = (u) => {
|
|
21876
|
+
var m;
|
|
21877
|
+
const f = new CustomEvent("twintag-form-valid", {
|
|
21878
|
+
detail: u,
|
|
21880
21879
|
bubbles: !0,
|
|
21881
21880
|
cancelable: !1,
|
|
21882
21881
|
composed: !0
|
|
21883
21882
|
});
|
|
21884
|
-
(
|
|
21885
|
-
}, i = (
|
|
21886
|
-
var
|
|
21887
|
-
const
|
|
21888
|
-
detail:
|
|
21883
|
+
(m = n.current) == null || m.dispatchEvent(f);
|
|
21884
|
+
}, i = (u) => {
|
|
21885
|
+
var m;
|
|
21886
|
+
const f = new CustomEvent("twintag-form-invalid", {
|
|
21887
|
+
detail: u,
|
|
21889
21888
|
bubbles: !0,
|
|
21890
21889
|
cancelable: !1,
|
|
21891
21890
|
composed: !0
|
|
21892
21891
|
});
|
|
21893
|
-
(
|
|
21892
|
+
(m = n.current) == null || m.dispatchEvent(f);
|
|
21894
21893
|
}, c = () => {
|
|
21895
21894
|
a.handleSubmit(s, i)();
|
|
21895
|
+
}, l = () => {
|
|
21896
|
+
var m;
|
|
21897
|
+
const u = a.getValues(), f = new CustomEvent("twintag-form-values", {
|
|
21898
|
+
detail: u,
|
|
21899
|
+
bubbles: !0,
|
|
21900
|
+
cancelable: !1,
|
|
21901
|
+
composed: !0
|
|
21902
|
+
});
|
|
21903
|
+
(m = n.current) == null || m.dispatchEvent(f);
|
|
21896
21904
|
};
|
|
21897
21905
|
return Re(() => {
|
|
21898
|
-
const
|
|
21899
|
-
return
|
|
21900
|
-
|
|
21906
|
+
const u = n.current;
|
|
21907
|
+
return u && (u.addEventListener("twintag-form-validate", c), u.addEventListener("twintag-form-get_values", l)), () => {
|
|
21908
|
+
u && (u.removeEventListener("twintag-form-validate", c), u.removeEventListener("twintag-form-get_values", l));
|
|
21901
21909
|
};
|
|
21902
21910
|
}, []), /* @__PURE__ */ k.jsx(q8, { ...a, children: /* @__PURE__ */ k.jsx(
|
|
21903
21911
|
"form",
|
|
21904
21912
|
{
|
|
21905
|
-
id: "twintag-form",
|
|
21906
21913
|
ref: n,
|
|
21907
21914
|
className: "relative space-y-4 font-tf-font",
|
|
21908
21915
|
onSubmit: a.handleSubmit(s, i),
|
package/index.html
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>Twintag Form</title>
|
|
7
|
-
</head>
|
|
8
|
-
<body>
|
|
9
|
-
<div
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Twintag Form</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<div
|
|
10
|
+
style="
|
|
11
|
+
display: grid;
|
|
12
|
+
grid-template-columns: repeat(2, 1fr);
|
|
13
|
+
padding: 2rem;
|
|
14
|
+
"
|
|
15
|
+
>
|
|
16
|
+
<div>
|
|
17
|
+
<button id="get-values">Get Values</button>
|
|
18
|
+
<button id="submit">Submit</button>
|
|
19
|
+
</div>
|
|
20
|
+
<div style="max-width: 32rem; background: hsl(var(--tf-background))">
|
|
21
|
+
<twintag-form></twintag-form>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
<script type="module" src="./dev/main.tsx"></script>
|
|
25
|
+
</body>
|
|
26
|
+
</html>
|
package/lib/components/form.tsx
CHANGED
|
@@ -36,42 +36,56 @@ export const TwintagForm = ({
|
|
|
36
36
|
}, [form.formState]);
|
|
37
37
|
|
|
38
38
|
const onValid = (data: FieldValues) => {
|
|
39
|
-
|
|
40
|
-
const customSubmit = new CustomEvent('twintag-form-valid', {
|
|
39
|
+
const eventWithValidData = new CustomEvent('twintag-form-valid', {
|
|
41
40
|
detail: data,
|
|
42
41
|
bubbles: true,
|
|
43
42
|
cancelable: false,
|
|
44
43
|
composed: true,
|
|
45
44
|
});
|
|
46
45
|
|
|
47
|
-
ref.current?.dispatchEvent(
|
|
46
|
+
ref.current?.dispatchEvent(eventWithValidData);
|
|
48
47
|
};
|
|
49
48
|
|
|
50
49
|
const onInvalid = (__errors: FieldValues) => {
|
|
51
|
-
const
|
|
50
|
+
const eventWithInvalidData = new CustomEvent('twintag-form-invalid', {
|
|
52
51
|
detail: __errors,
|
|
53
52
|
bubbles: true,
|
|
54
53
|
cancelable: false,
|
|
55
54
|
composed: true,
|
|
56
55
|
});
|
|
57
56
|
|
|
58
|
-
ref.current?.dispatchEvent(
|
|
57
|
+
ref.current?.dispatchEvent(eventWithInvalidData);
|
|
59
58
|
};
|
|
60
59
|
|
|
61
60
|
const onValidate = () => {
|
|
62
61
|
void form.handleSubmit(onValid, onInvalid)();
|
|
63
62
|
};
|
|
64
63
|
|
|
64
|
+
const onGetValues = () => {
|
|
65
|
+
const values = form.getValues();
|
|
66
|
+
|
|
67
|
+
const eventWithValues = new CustomEvent('twintag-form-values', {
|
|
68
|
+
detail: values,
|
|
69
|
+
bubbles: true,
|
|
70
|
+
cancelable: false,
|
|
71
|
+
composed: true,
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
ref.current?.dispatchEvent(eventWithValues);
|
|
75
|
+
};
|
|
76
|
+
|
|
65
77
|
useEffect(() => {
|
|
66
78
|
const form = ref.current;
|
|
67
79
|
|
|
68
80
|
if (form) {
|
|
69
81
|
form.addEventListener('twintag-form-validate', onValidate);
|
|
82
|
+
form.addEventListener('twintag-form-get_values', onGetValues);
|
|
70
83
|
}
|
|
71
84
|
|
|
72
85
|
return () => {
|
|
73
86
|
if (form) {
|
|
74
87
|
form.removeEventListener('twintag-form-validate', onValidate);
|
|
88
|
+
form.removeEventListener('twintag-form-get_values', onGetValues);
|
|
75
89
|
}
|
|
76
90
|
};
|
|
77
91
|
}, []);
|
|
@@ -79,7 +93,6 @@ export const TwintagForm = ({
|
|
|
79
93
|
return (
|
|
80
94
|
<Form {...form}>
|
|
81
95
|
<form
|
|
82
|
-
id='twintag-form'
|
|
83
96
|
ref={ref}
|
|
84
97
|
className='relative space-y-4 font-tf-font'
|
|
85
98
|
onSubmit={form.handleSubmit(onValid, onInvalid)}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twintag/twintag-form",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"author": "Twintag",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"dev": "vite",
|
|
63
63
|
"build": "tsc && vite build",
|
|
64
64
|
"lint": "eslint . --ext .ts,.tsx",
|
|
65
|
-
"format": "prettier --write \"**/*.{ts,md,tsx,cjs,mjs,json}\" --ignore-path ../../.gitignore",
|
|
66
|
-
"format:check": "prettier --check \"**/*.{ts,tsx,cjs,mjs,json}\" --ignore-path ../../.gitignore"
|
|
65
|
+
"format": "prettier --write \"**/*.{ts,md,tsx,cjs,mjs,json,html}\" --ignore-path ../../.gitignore",
|
|
66
|
+
"format:check": "prettier --check \"**/*.{ts,md,tsx,cjs,mjs,json,html}\" --ignore-path ../../.gitignore"
|
|
67
67
|
}
|
|
68
68
|
}
|