UNPKG

@progress/kendo-react-form

Version:

React Form is a small and fast package for form state management with zero dependencies. KendoReact Form package

9 lines (8 loc) 1.7 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("react"),v=require("./FormContext.js");function O(a){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(a){for(const o in a)if(o!=="default"){const l=Object.getOwnPropertyDescriptor(a,o);Object.defineProperty(e,o,l.get?l:{enumerable:!0,get:()=>a[o]})}}return e.default=a,Object.freeze(e)}const r=O(F),h=a=>{const{name:e,component:o,validator:l,children:u,onChange:i,...s}=a,t=r.useContext(v.FormContext),c=t?t.id:"";r.useEffect(()=>t?t.registerField(e,l):void 0,[e,c,l]);const C=r.useCallback(n=>{const p=n&&(n.value!==void 0?n.value:n.target?n.target.value:n.target);t.onChange(e,{value:p}),i&&i.call(void 0,n)},[e,c,i]),b=r.useCallback(n=>t.onChange(e,{value:n.target.value}),[e,c]),d=r.useCallback(()=>t.onBlur(e),[e,c]),g=r.useCallback(()=>t.onFocus(e),[e,c]);if(!t)return null;const f=t.valueGetter(e);if(typeof o=="string")return r.createElement(o,{onChange:b,onBlur:d,onFocus:g,value:f,children:u,...s});const m={children:u,...s,onChange:C,onBlur:d,onFocus:g,value:f,validationMessage:t.errors[e],touched:t.touched[e],modified:t.modified[e],visited:t.visited[e],valid:!(t.errors[e]&&t.touched[e]),name:e};return u||delete m.children,r.createElement(o,m)};h.displayName="KendoReactField";exports.Field=h;