@progress/kendo-react-conversational-ui
Version:
React Chat component allows the user to participate in chat sessions with users or chat bots. KendoReact Conversational UI components
9 lines (8 loc) • 2.19 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;const D=require("react"),d=require("@progress/kendo-react-common"),E=require("./Action.js"),K=require("./ScrollButtonsWrapper.js"),L=require("../hooks/useScrollWithButtons.js");function O(c){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(c){for(const r in c)if(r!=="default"){const u=Object.getOwnPropertyDescriptor(c,r);Object.defineProperty(e,r,u.get?u:{enumerable:!0,get:()=>c[r]})}}return e.default=c,Object.freeze(e)}const l=O(D),j=c=>{var S;const{group:e,onActionExecute:r,selected:u,onRequestSelection:g,quickActionsLayout:a="scroll",dir:p}=c,[t,i]=l.useState(null),b=l.useRef(null),{canScrollLeft:k,canScrollRight:C,scrollLeft:y,scrollRight:I}=L.useScrollWithButtons(b,{enabled:a==="scrollbuttons",dir:p,itemsDependency:e.actions});l.useEffect(()=>{!u&&t!==null?i(null):u&&t===null&&i(0)},[u,t]);const m=l.useCallback(()=>e.actions?e.actions.length-1:-1,[e.actions]),f=l.useCallback((n,s=0)=>{let o=null;return n?t===null?o=s:t<m()&&(o=t+1):t===null?o=0:t>0&&(o=t-1),o!==null&&i(o),o},[t,m]),R=l.useCallback(()=>{g(e.selectionIndex)},[g,e.selectionIndex]),x=l.useCallback(n=>{let s=null;const o=d.Keys.left,A=d.Keys.right;n.keyCode===o?s=f(!1):n.keyCode===A&&(s=f(!0)),s!==null&&(n.preventDefault(),n.stopPropagation())},[f]),q=l.useCallback(()=>d.classNames("k-suggestion-group",{"k-suggestion-group-scrollable":a==="scroll"}),[a]),h=l.createElement("div",{className:q(),onClick:R,onKeyDown:x,role:"toolbar",tabIndex:0,"aria-label":"Action group",ref:a==="scrollbuttons"?b:void 0},(S=e.actions)==null?void 0:S.map((n,s)=>l.createElement(E,{item:n,onActionExecute:r,selected:s===t,key:n.value})));return l.createElement(K.ScrollButtonsWrapper,{visible:a==="scrollbuttons",dir:p,canScrollLeft:k,canScrollRight:C,onScrollLeft:y,onScrollRight:I},h)};module.exports=j;