UNPKG

@progress/kendo-react-spreadsheet

Version:
9 lines (8 loc) 2.88 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 R=require("react"),S=require("@progress/kendo-react-popup"),w=require("./List.js"),x=require("@progress/kendo-react-common");function I(c){const u=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const o in c)if(o!=="default"){const l=Object.getOwnPropertyDescriptor(c,o);Object.defineProperty(u,o,l.get?l:{enumerable:!0,get:()=>c[o]})}}return u.default=c,Object.freeze(u)}const t=I(R),f=t.forwardRef((c,u)=>{const[o,l]=t.useState(!1),[d,g]=t.useState(0),[h,P]=t.useState([]),r=t.useMemo(()=>({}),[]);r.showPopup=o,r.popupContentKey=d,r.data=h;const k=t.useRef(null),i=t.useRef(null),n=t.useRef(null),m=t.useCallback(()=>{if(n.current&&n.current.element)return n.current.element.querySelector(".k-focus")},[]),b=t.useCallback(()=>{const e=m();e&&e.classList.remove("k-focus")},[]),y=t.useCallback(e=>{const s=Array.from(n.current&&n.current.element.children||[]),p=m();let a;if(p){const C=s.indexOf(p);p.classList.remove("k-focus"),a=s[C+e]?s[C+e]:e===1?s[0]:s[s.length-1]}else a=e===1?s[0]:s[s.length-1];a&&a.classList.add("k-focus")},[]);t.useImperativeHandle(k,()=>({element:i.current,props:c,popup:{open:()=>{l(!0)},close:()=>{l(!1)},position:()=>{g(r.popupContentKey+1)},visible:()=>r.showPopup},list:{get element(){return n.current&&n.current.element},data:e=>{if(e)P(e);else return r.data},value:()=>({}),focus:()=>Array.from(n.current&&n.current.element&&n.current.element.children||[]).indexOf(m()),focusNext:()=>{y(1)},focusPrev:()=>{y(-1)},focusFirst:()=>{const e=n.current&&n.current.element;e&&e.children.item(0)&&(b(),e.children.item(0).classList.add("k-focus"))},focusLast:()=>{const e=n.current&&n.current.element;e&&e.children.length&&(b(),e.children.item(e.children.length-1).classList.add("k-focus"))},itemClick:e=>{r.itemClick=e}}}),[]),t.useImperativeHandle(u,()=>k.current,[]);const v=t.useCallback(e=>{r.itemClick&&r.itemClick(e)},[]);return t.createElement(t.Fragment,null,t.createElement("div",{className:x.classNames("k-spreadsheet-formula-input",c.className),contentEditable:"true",spellCheck:"false",style:{whiteSpace:"pre"},ref:i,"aria-haspopup":"menu",title:"Formula Input","aria-expanded":o,role:"combobox"}),t.createElement(S.Popup,{show:o,anchor:i.current,animate:{openDuration:100,closeDuration:100},contentKey:d,popupClass:"k-list-container"},t.createElement(w.List,{data:h,ref:n,onItemClick:v})))});f.displayName="FormulaInput";f.propTypes={};exports.FormulaInput=f;