@progress/kendo-react-scrollview
Version:
React ScrollView (React Carousel) displays images or content in a horizontally scrollable collection. KendoReact ScrollView package
16 lines (15 loc) • 5.64 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
*-------------------------------------------------------------------------------------------
*/
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-react-common"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-intl")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-react-common","@progress/kendo-svg-icons","@progress/kendo-react-intl"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactScrollview={},e.React,e.PropTypes,e.KendoReactCommon,e.KendoSvgIcons,e.KendoReactIntl)}(this,(function(e,t,r,a,n,l){"use strict";function c(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var o=c(t);const s=Object.freeze({name:"@progress/kendo-react-scrollview",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:0,version:"13.2.0",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"}),i="scrollview.previous",u="scrollview.next",g={[i]:"Previous",[u]:"Next"},m=o.forwardRef(((e,t)=>{const r=!a.validatePackage(s,{component:"ScrollView"}),c=a.getLicenseMessage(s),{className:m,style:p,children:d,pagerOverlay:h=v.pageOverlay,pageable:w=v.pageable,arrows:f=v.arrows,endless:k=v.endless,activeView:b=v.activeView,automaticViewChange:y=v.automaticViewChange,automaticViewChangeInterval:C=v.automaticViewChangeInterval}=e,[E,N]=o.useState(b||1),I=o.useRef(null),x=o.useRef(null),V=o.useRef(null),K=o.Children.toArray(d),O=a.useRtl(I,e.dir),R="rtl"===O,S=l.useLocalization(),D=o.useCallback((()=>{I.current&&I.current.focus()}),[]),j=o.useCallback((()=>({element:I.current,focus:D})),[D]);o.useImperativeHandle(t,j);const L=o.useCallback((()=>{k?N(E>1?E-1:K.length):E>1&&N(E-1)}),[E,K.length,k]),T=o.useCallback((()=>{k?E<K.length?N(E+1):N(1):E<K.length&&N(E+1)}),[E,K.length,k]),P=o.useCallback((e=>{var t,r;const a=e.target;a.classList.contains("k-scrollview-prev")?(L(),!((k||E>2)&&K.length>0)&&(null==(t=I.current)||t.focus())):a.classList.contains("k-scrollview-next")&&(T(),!((k||E<K.length-1)&&K.length>0)&&(null==(r=I.current)||r.focus()))}),[E,K.length,k]);function q(){V.current&&clearTimeout(V.current)}o.useEffect((()=>{const e=K.length;x.current&&(x.current.style.setProperty("--kendo-scrollview-views",`${e}`),x.current.style.setProperty("--kendo-scrollview-current",`${E}`))}),[K,E,O]),o.useEffect((()=>{if(y)return q(),V.current=setTimeout((()=>N((e=>e===K.length?k?1:e:e+1))),C),()=>{q()}}),[y,C,K.length,E,k]);const z=o.useCallback((e=>{switch(e.key){case a.KEYS.left:e.preventDefault(),R?T():L();break;case a.KEYS.right:e.preventDefault(),R?L():T();break;case a.KEYS.space:case a.KEYS.enter:e.preventDefault(),P(e)}}),[R,T,L]),Y=o.useMemo((()=>a.classNames("k-scrollview",{"k-scrollview-light":"light"===h,"k-scrollview-dark":"dark"===h},m)),[m,h]),A=o.Children.map(d||null,((e,t)=>o.createElement("div",{className:"k-scrollview-view","aria-hidden":E!==t+1},e))),U=o.useCallback((()=>{let e;return e=E>1,(k||e)&&K.length>0}),[E,K.length,k]),W=o.useCallback((()=>{let e;return e=E<K.length,(k||e)&&K.length>0}),[E,K.length,k]);return o.createElement("div",{className:Y,style:p,ref:I,tabIndex:0,dir:O,onKeyDown:z},o.createElement("div",{className:"k-scrollview-wrap k-scrollview-animate",ref:x},A),o.createElement("div",{className:"k-scrollview-elements"},f&&o.createElement(o.Fragment,null,U()&&o.createElement("span",{className:"k-scrollview-prev","aria-label":S.toLanguageString(u,g[u]),role:"button",tabIndex:0,onClick:L,onKeyDown:z},o.createElement(a.IconWrap,{name:R?"chevron-right":"chevron-left",icon:R?n.chevronRightIcon:n.chevronLeftIcon,size:"xxxlarge"})),W()&&o.createElement("span",{className:"k-scrollview-next","aria-label":S.toLanguageString(i,g[i]),role:"button",tabIndex:0,onClick:T,onKeyDown:z},o.createElement(a.IconWrap,{name:R?"chevron-left":"chevron-right",icon:R?n.chevronLeftIcon:n.chevronRightIcon,size:"xxxlarge"}))),w&&o.createElement("div",{className:"k-scrollview-nav-wrap"},o.createElement("div",{className:"k-scrollview-nav"},K.map(((e,t)=>o.createElement("span",{className:a.classNames("k-link",{"k-primary":E===t+1}),key:t+1,onClick:()=>N(t+1)})))))),o.createElement("div",{"aria-live":"polite","aria-atomic":"true",className:"k-sr-only"}),r&&o.createElement(a.WatermarkOverlay,{message:c}))}));m.propTypes={activeView:r.number,arrows:r.bool,automaticViewChange:r.bool,automaticViewChangeInterval:r.number,children:r.any,className:r.string,dir:r.string,endless:r.bool,pageable:r.bool,pageOverlay:r.string,style:r.object};const v={activeView:1,arrows:!0,automaticViewChange:!0,automaticViewChangeInterval:5e3,endless:!1,pageable:!0,pageOverlay:"none"};m.displayName="KendoScrollView",e.ScrollView=m}));