@twintag/twintag-form 1.1.0 → 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 +12 -0
- package/dev/index.css +32 -32
- package/dev/main.tsx +24 -0
- package/dist/twintag-form.react.js +23 -17
- package/index.html +26 -15
- package/lib/components/fields/date-picker.tsx +0 -3
- 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
|
+
});
|
|
@@ -18288,7 +18288,6 @@ const JE = Pe({
|
|
|
18288
18288
|
mode: "single",
|
|
18289
18289
|
selected: isNaN(new Date(i.value).getTime()) ? void 0 : new Date(i.value),
|
|
18290
18290
|
onSelect: i.onChange,
|
|
18291
|
-
disabled: (c) => c > /* @__PURE__ */ new Date() || c < /* @__PURE__ */ new Date("1900-01-01"),
|
|
18292
18291
|
initialFocus: !0
|
|
18293
18292
|
}
|
|
18294
18293
|
) })
|
|
@@ -21868,42 +21867,49 @@ const za = (e, t) => {
|
|
|
21868
21867
|
Re(() => {
|
|
21869
21868
|
a.formState.isSubmitSuccessful && t && e && a.reset(
|
|
21870
21869
|
Object.keys(e).reduce(
|
|
21871
|
-
(
|
|
21870
|
+
(u, f) => ({ ...u, [f]: "" }),
|
|
21872
21871
|
{}
|
|
21873
21872
|
)
|
|
21874
21873
|
);
|
|
21875
21874
|
}, [a.formState]);
|
|
21876
|
-
const s = (
|
|
21877
|
-
var
|
|
21878
|
-
|
|
21879
|
-
|
|
21880
|
-
detail: l,
|
|
21875
|
+
const s = (u) => {
|
|
21876
|
+
var m;
|
|
21877
|
+
const f = new CustomEvent("twintag-form-valid", {
|
|
21878
|
+
detail: u,
|
|
21881
21879
|
bubbles: !0,
|
|
21882
21880
|
cancelable: !1,
|
|
21883
21881
|
composed: !0
|
|
21884
21882
|
});
|
|
21885
|
-
(
|
|
21886
|
-
}, i = (
|
|
21887
|
-
var
|
|
21888
|
-
const
|
|
21889
|
-
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,
|
|
21890
21888
|
bubbles: !0,
|
|
21891
21889
|
cancelable: !1,
|
|
21892
21890
|
composed: !0
|
|
21893
21891
|
});
|
|
21894
|
-
(
|
|
21892
|
+
(m = n.current) == null || m.dispatchEvent(f);
|
|
21895
21893
|
}, c = () => {
|
|
21896
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);
|
|
21897
21904
|
};
|
|
21898
21905
|
return Re(() => {
|
|
21899
|
-
const
|
|
21900
|
-
return
|
|
21901
|
-
|
|
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));
|
|
21902
21909
|
};
|
|
21903
21910
|
}, []), /* @__PURE__ */ k.jsx(q8, { ...a, children: /* @__PURE__ */ k.jsx(
|
|
21904
21911
|
"form",
|
|
21905
21912
|
{
|
|
21906
|
-
id: "twintag-form",
|
|
21907
21913
|
ref: n,
|
|
21908
21914
|
className: "relative space-y-4 font-tf-font",
|
|
21909
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>
|
|
@@ -102,9 +102,6 @@ export const DatePicker: React.FC<Props> = ({ label, bind, options }) => {
|
|
|
102
102
|
: undefined
|
|
103
103
|
}
|
|
104
104
|
onSelect={field.onChange}
|
|
105
|
-
disabled={(date) =>
|
|
106
|
-
date > new Date() || date < new Date('1900-01-01')
|
|
107
|
-
}
|
|
108
105
|
initialFocus
|
|
109
106
|
/>
|
|
110
107
|
</PopoverContent>
|
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
|
}
|