@a-type/ui 0.6.10 → 0.6.11

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.
@@ -22,5 +22,6 @@ export type TextAreaFieldProps = {
22
22
  disabled?: boolean;
23
23
  className?: string;
24
24
  inputRef?: Ref<HTMLTextAreaElement>;
25
+ submitOnEnter?: boolean;
25
26
  } & TextAreaProps;
26
- export declare function TextAreaField({ name, label, className, inputRef, ...rest }: TextAreaFieldProps): JSX.Element;
27
+ export declare function TextAreaField({ name, label, className, inputRef, onKeyDown, submitOnEnter, ...rest }: TextAreaFieldProps): JSX.Element;
@@ -45,9 +45,17 @@ exports.TextField = (0, react_1.forwardRef)(function TextField(_a, ref) {
45
45
  return ((0, jsx_runtime_1.jsxs)(FieldRoot, Object.assign({ className: className, ref: ref }, { children: [label && (0, jsx_runtime_1.jsx)(FieldLabel, { children: label }), (0, jsx_runtime_1.jsx)(Input_js_1.Input, Object.assign({}, props, rest, { autoFocus: autoFocus, ref: (0, useMergedRef_js_1.default)(innerInputRef, inputRef || emptyRef) }))] })));
46
46
  });
47
47
  function TextAreaField(_a) {
48
- var { name, label, className, inputRef } = _a, rest = __rest(_a, ["name", "label", "className", "inputRef"]);
48
+ var { name, label, className, inputRef, onKeyDown, submitOnEnter } = _a, rest = __rest(_a, ["name", "label", "className", "inputRef", "onKeyDown", "submitOnEnter"]);
49
49
  const [props] = (0, formik_1.useField)(name);
50
- return ((0, jsx_runtime_1.jsxs)(FieldRoot, Object.assign({ className: className }, { children: [label && (0, jsx_runtime_1.jsx)(FieldLabel, { children: label }), (0, jsx_runtime_1.jsx)(TextArea_js_1.TextArea, Object.assign({ ref: inputRef }, props, rest))] })));
50
+ const { submitForm } = (0, formik_1.useFormikContext)();
51
+ const onKeyDownInner = (0, react_1.useCallback)((e) => {
52
+ if (submitOnEnter && e.key === 'Enter' && !e.shiftKey) {
53
+ e.preventDefault();
54
+ submitForm();
55
+ }
56
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
57
+ }, [submitOnEnter, onKeyDown, submitForm]);
58
+ return ((0, jsx_runtime_1.jsxs)(FieldRoot, Object.assign({ className: className }, { children: [label && (0, jsx_runtime_1.jsx)(FieldLabel, { children: label }), (0, jsx_runtime_1.jsx)(TextArea_js_1.TextArea, Object.assign({ ref: inputRef }, props, rest, { onKeyDown: onKeyDownInner }))] })));
51
59
  }
52
60
  exports.TextAreaField = TextAreaField;
53
61
  const FieldRoot = (0, hooks_js_1.withClassName)('div', 'flex flex-col items-stretch gap-1 self-stretch');
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../../src/components/forms/TextField.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;AAEb,mCAAkC;AAClC,iCAOe;AACf,kFAAuD;AAEvD,gDAA0C;AAC1C,yDAAkE;AAClE,6CAA+C;AAe/C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAE,CAAC,CAAQ,CAAC;AAEtB,QAAA,SAAS,GAAG,IAAA,kBAAU,EAClC,SAAS,SAAS,CACjB,EAWC,EACD,GAAG;QAZH,EACC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,OAEN,EADG,IAAI,cAVR,0GAWC,CADO;IAIR,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAQ,EAAC;QACxB,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,MAAM;KACN,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAA,cAAM,EAAmB,IAAI,CAAC,CAAC;IAErD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,IAAI,cAAc,EAAE;YACnB,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,aAAa,CAAC,OAAO;oBAAE,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1D,CAAC,EAAE,cAAc,CAAC,CAAC;SACnB;IACF,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACN,wBAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,iBACvC,KAAK,IAAI,uBAAC,UAAU,cAAE,KAAK,GAAc,EAC1C,uBAAC,gBAAK,oBACD,KAAK,EACL,IAAI,IACR,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,IAAA,yBAAY,EAAC,aAAa,EAAE,QAAQ,IAAI,QAAQ,CAAC,IACrD,KACS,CACZ,CAAC;AACH,CAAC,CACD,CAAC;AAYF,SAAgB,aAAa,CAAC,EAMT;QANS,EAC7B,IAAI,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,OAEY,EADjB,IAAI,cALsB,0CAM7B,CADO;IAEP,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CACN,wBAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,iBAC7B,KAAK,IAAI,uBAAC,UAAU,cAAE,KAAK,GAAc,EAC1C,uBAAC,sBAAQ,kBAAC,GAAG,EAAE,QAAQ,IAAM,KAAK,EAAM,IAAI,EAAI,KACrC,CACZ,CAAC;AACH,CAAC;AAdD,sCAcC;AAED,MAAM,SAAS,GAAG,IAAA,wBAAa,EAC9B,KAAK,EACL,gDAAgD,CAChD,CAAC;AACF,MAAM,UAAU,GAAG,IAAA,wBAAa,EAC/B,OAAO,EACP,mEAAmE,CACnE,CAAC"}
1
+ {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../../src/components/forms/TextField.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;AAEb,mCAAoD;AACpD,iCASe;AACf,kFAAuD;AAEvD,gDAA0C;AAC1C,yDAAkE;AAClE,6CAA+C;AAe/C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAE,CAAC,CAAQ,CAAC;AAEtB,QAAA,SAAS,GAAG,IAAA,kBAAU,EAClC,SAAS,SAAS,CACjB,EAWC,EACD,GAAG;QAZH,EACC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,OAEN,EADG,IAAI,cAVR,0GAWC,CADO;IAIR,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAQ,EAAC;QACxB,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,MAAM;KACN,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAA,cAAM,EAAmB,IAAI,CAAC,CAAC;IAErD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,IAAI,cAAc,EAAE;YACnB,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,aAAa,CAAC,OAAO;oBAAE,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1D,CAAC,EAAE,cAAc,CAAC,CAAC;SACnB;IACF,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACN,wBAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,iBACvC,KAAK,IAAI,uBAAC,UAAU,cAAE,KAAK,GAAc,EAC1C,uBAAC,gBAAK,oBACD,KAAK,EACL,IAAI,IACR,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,IAAA,yBAAY,EAAC,aAAa,EAAE,QAAQ,IAAI,QAAQ,CAAC,IACrD,KACS,CACZ,CAAC;AACH,CAAC,CACD,CAAC;AAaF,SAAgB,aAAa,CAAC,EAQT;QARS,EAC7B,IAAI,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,aAAa,OAEO,EADjB,IAAI,cAPsB,wEAQ7B,CADO;IAEP,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,iBAAQ,EAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,yBAAgB,GAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,IAAA,mBAAW,EACjC,CAAC,CAAqC,EAAE,EAAE;QACzC,IAAI,aAAa,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;YACtD,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,UAAU,EAAE,CAAC;SACb;QACD,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,CAAC,CAAC,CAAC;IAChB,CAAC,EACD,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CACtC,CAAC;IACF,OAAO,CACN,wBAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,iBAC7B,KAAK,IAAI,uBAAC,UAAU,cAAE,KAAK,GAAc,EAC1C,uBAAC,sBAAQ,kBACR,GAAG,EAAE,QAAQ,IACT,KAAK,EACL,IAAI,IACR,SAAS,EAAE,cAAc,IACxB,KACS,CACZ,CAAC;AACH,CAAC;AAhCD,sCAgCC;AAED,MAAM,SAAS,GAAG,IAAA,wBAAa,EAC9B,KAAK,EACL,gDAAgD,CAChD,CAAC;AACF,MAAM,UAAU,GAAG,IAAA,wBAAa,EAC/B,OAAO,EACP,mEAAmE,CACnE,CAAC"}
@@ -0,0 +1 @@
1
+ export { useField } from 'formik';
@@ -0,0 +1,12 @@
1
+ // @unocss-include
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.useField = void 0;
5
+ const formik_1 = require("formik");
6
+ var formik_2 = require("formik");
7
+ Object.defineProperty(exports, "useField", { enumerable: true, get: function () { return formik_2.useField; } });
8
+ function useSubmit() {
9
+ const { submitForm, isSubmitting } = (0, formik_1.useFormikContext)();
10
+ return [submitForm, isSubmitting];
11
+ }
12
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/components/forms/hooks.ts"],"names":[],"mappings":";;;AAAA,mCAA0C;AAE1C,iCAAkC;AAAzB,kGAAA,QAAQ,OAAA;AAEjB,SAAS,SAAS;IACjB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,IAAA,yBAAgB,GAAE,CAAC;IAExD,OAAO,CAAC,UAAU,EAAE,YAAY,CAAU,CAAC;AAC5C,CAAC"}
@@ -2,3 +2,4 @@ export * from './Form.js';
2
2
  export * from './SubmitButton.js';
3
3
  export * from './TextField.js';
4
4
  export * from './FormikForm.js';
5
+ export * from './hooks.js';
@@ -19,4 +19,5 @@ __exportStar(require("./Form.js"), exports);
19
19
  __exportStar(require("./SubmitButton.js"), exports);
20
20
  __exportStar(require("./TextField.js"), exports);
21
21
  __exportStar(require("./FormikForm.js"), exports);
22
+ __exportStar(require("./hooks.js"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,oDAAkC;AAClC,iDAA+B;AAC/B,kDAAgC;AAChC,6CAA2B"}
@@ -22,5 +22,6 @@ export type TextAreaFieldProps = {
22
22
  disabled?: boolean;
23
23
  className?: string;
24
24
  inputRef?: Ref<HTMLTextAreaElement>;
25
+ submitOnEnter?: boolean;
25
26
  } & TextAreaProps;
26
- export declare function TextAreaField({ name, label, className, inputRef, ...rest }: TextAreaFieldProps): JSX.Element;
27
+ export declare function TextAreaField({ name, label, className, inputRef, onKeyDown, submitOnEnter, ...rest }: TextAreaFieldProps): JSX.Element;
@@ -12,8 +12,8 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  return t;
13
13
  };
14
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
- import { useField } from 'formik';
16
- import { useEffect, useRef, forwardRef, } from 'react';
15
+ import { useField, useFormikContext } from 'formik';
16
+ import { useEffect, useRef, forwardRef, useCallback, } from 'react';
17
17
  import useMergedRef from '../../hooks/useMergedRef.js';
18
18
  import { Input } from '../input/Input.js';
19
19
  import { TextArea } from '../textArea/TextArea.js';
@@ -39,9 +39,17 @@ export const TextField = forwardRef(function TextField(_a, ref) {
39
39
  return (_jsxs(FieldRoot, Object.assign({ className: className, ref: ref }, { children: [label && _jsx(FieldLabel, { children: label }), _jsx(Input, Object.assign({}, props, rest, { autoFocus: autoFocus, ref: useMergedRef(innerInputRef, inputRef || emptyRef) }))] })));
40
40
  });
41
41
  export function TextAreaField(_a) {
42
- var { name, label, className, inputRef } = _a, rest = __rest(_a, ["name", "label", "className", "inputRef"]);
42
+ var { name, label, className, inputRef, onKeyDown, submitOnEnter } = _a, rest = __rest(_a, ["name", "label", "className", "inputRef", "onKeyDown", "submitOnEnter"]);
43
43
  const [props] = useField(name);
44
- return (_jsxs(FieldRoot, Object.assign({ className: className }, { children: [label && _jsx(FieldLabel, { children: label }), _jsx(TextArea, Object.assign({ ref: inputRef }, props, rest))] })));
44
+ const { submitForm } = useFormikContext();
45
+ const onKeyDownInner = useCallback((e) => {
46
+ if (submitOnEnter && e.key === 'Enter' && !e.shiftKey) {
47
+ e.preventDefault();
48
+ submitForm();
49
+ }
50
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
51
+ }, [submitOnEnter, onKeyDown, submitForm]);
52
+ return (_jsxs(FieldRoot, Object.assign({ className: className }, { children: [label && _jsx(FieldLabel, { children: label }), _jsx(TextArea, Object.assign({ ref: inputRef }, props, rest, { onKeyDown: onKeyDownInner }))] })));
45
53
  }
46
54
  const FieldRoot = withClassName('div', 'flex flex-col items-stretch gap-1 self-stretch');
47
55
  const FieldLabel = withClassName('label', 'inline-flex flex-col gap-1 text-sm font-bold text-dark-blend mb-1');
@@ -1 +1 @@
1
- {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../../src/components/forms/TextField.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGN,SAAS,EACT,MAAM,EAEN,UAAU,GACV,MAAM,OAAO,CAAC;AACf,OAAO,YAAY,MAAM,6BAA6B,CAAC;AAEvD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAiB,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAe/C,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAE,CAAC,CAAQ,CAAC;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAClC,SAAS,SAAS,CACjB,EAWC,EACD,GAAG;QAZH,EACC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,OAEN,EADG,IAAI,cAVR,0GAWC,CADO;IAIR,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;QACxB,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,MAAM;KACN,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,cAAc,EAAE;YACnB,UAAU,CAAC,GAAG,EAAE;gBACf,IAAI,aAAa,CAAC,OAAO;oBAAE,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC1D,CAAC,EAAE,cAAc,CAAC,CAAC;SACnB;IACF,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACN,MAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,iBACvC,KAAK,IAAI,KAAC,UAAU,cAAE,KAAK,GAAc,EAC1C,KAAC,KAAK,oBACD,KAAK,EACL,IAAI,IACR,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,YAAY,CAAC,aAAa,EAAE,QAAQ,IAAI,QAAQ,CAAC,IACrD,KACS,CACZ,CAAC;AACH,CAAC,CACD,CAAC;AAYF,MAAM,UAAU,aAAa,CAAC,EAMT;QANS,EAC7B,IAAI,EACJ,KAAK,EACL,SAAS,EACT,QAAQ,OAEY,EADjB,IAAI,cALsB,0CAM7B,CADO;IAEP,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CACN,MAAC,SAAS,kBAAC,SAAS,EAAE,SAAS,iBAC7B,KAAK,IAAI,KAAC,UAAU,cAAE,KAAK,GAAc,EAC1C,KAAC,QAAQ,kBAAC,GAAG,EAAE,QAAQ,IAAM,KAAK,EAAM,IAAI,EAAI,KACrC,CACZ,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,aAAa,CAC9B,KAAK,EACL,gDAAgD,CAChD,CAAC;AACF,MAAM,UAAU,GAAG,aAAa,CAC/B,OAAO,EACP,mEAAmE,CACnE,CAAC"}
1
+ {"version":3,"file":"TextField.js","sourceRoot":"","sources":["../../../../src/components/forms/TextField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { useField } from 'formik';
@@ -0,0 +1,8 @@
1
+ // @unocss-include
2
+ import { useFormikContext } from 'formik';
3
+ export { useField } from 'formik';
4
+ function useSubmit() {
5
+ const { submitForm, isSubmitting } = useFormikContext();
6
+ return [submitForm, isSubmitting];
7
+ }
8
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/components/forms/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,SAAS,SAAS;IACjB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAExD,OAAO,CAAC,UAAU,EAAE,YAAY,CAAU,CAAC;AAC5C,CAAC"}
@@ -2,3 +2,4 @@ export * from './Form.js';
2
2
  export * from './SubmitButton.js';
3
3
  export * from './TextField.js';
4
4
  export * from './FormikForm.js';
5
+ export * from './hooks.js';
@@ -3,4 +3,5 @@ export * from './Form.js';
3
3
  export * from './SubmitButton.js';
4
4
  export * from './TextField.js';
5
5
  export * from './FormikForm.js';
6
+ export * from './hooks.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/forms/index.tsx"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a-type/ui",
3
- "version": "0.6.10",
3
+ "version": "0.6.11",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "/dist",
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { useField } from 'formik';
3
+ import { useField, useFormikContext } from 'formik';
4
4
  import {
5
5
  ComponentProps,
6
6
  InputHTMLAttributes,
@@ -8,6 +8,8 @@ import {
8
8
  useRef,
9
9
  Ref,
10
10
  forwardRef,
11
+ KeyboardEvent,
12
+ useCallback,
11
13
  } from 'react';
12
14
  import useMergedRef from '../../hooks/useMergedRef.js';
13
15
  import classNames from 'clsx';
@@ -84,6 +86,7 @@ export type TextAreaFieldProps = {
84
86
  disabled?: boolean;
85
87
  className?: string;
86
88
  inputRef?: Ref<HTMLTextAreaElement>;
89
+ submitOnEnter?: boolean;
87
90
  } & TextAreaProps;
88
91
 
89
92
  export function TextAreaField({
@@ -91,13 +94,31 @@ export function TextAreaField({
91
94
  label,
92
95
  className,
93
96
  inputRef,
97
+ onKeyDown,
98
+ submitOnEnter,
94
99
  ...rest
95
100
  }: TextAreaFieldProps) {
96
101
  const [props] = useField(name);
102
+ const { submitForm } = useFormikContext();
103
+ const onKeyDownInner = useCallback(
104
+ (e: KeyboardEvent<HTMLTextAreaElement>) => {
105
+ if (submitOnEnter && e.key === 'Enter' && !e.shiftKey) {
106
+ e.preventDefault();
107
+ submitForm();
108
+ }
109
+ onKeyDown?.(e);
110
+ },
111
+ [submitOnEnter, onKeyDown, submitForm],
112
+ );
97
113
  return (
98
114
  <FieldRoot className={className}>
99
115
  {label && <FieldLabel>{label}</FieldLabel>}
100
- <TextArea ref={inputRef} {...props} {...rest} />
116
+ <TextArea
117
+ ref={inputRef}
118
+ {...props}
119
+ {...rest}
120
+ onKeyDown={onKeyDownInner}
121
+ />
101
122
  </FieldRoot>
102
123
  );
103
124
  }
@@ -0,0 +1,9 @@
1
+ import { useFormikContext } from 'formik';
2
+
3
+ export { useField } from 'formik';
4
+
5
+ function useSubmit() {
6
+ const { submitForm, isSubmitting } = useFormikContext();
7
+
8
+ return [submitForm, isSubmitting] as const;
9
+ }
@@ -2,3 +2,4 @@ export * from './Form.js';
2
2
  export * from './SubmitButton.js';
3
3
  export * from './TextField.js';
4
4
  export * from './FormikForm.js';
5
+ export * from './hooks.js';