UNPKG

primereact

Version:

PrimeReact is an open source UI library for React featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime

2 lines (1 loc) 5.89 kB
import*as t from"react";import e,{PrimeReactContext as r,localeOption as n}from"primereact/api";import{ComponentBase as o,useHandleStyle as i}from"primereact/componentbase";import{CSSTransition as l}from"primereact/csstransition";import{useMergeProps as c,useEventListener as a,useUnmountEffect as s}from"primereact/hooks";import{ChevronUpIcon as p}from"primereact/icons/chevronup";import{Ripple as u}from"primereact/ripple";import{classNames as f,DomHandler as m,ZIndexUtils as y,IconUtils as b}from"primereact/utils";function d(){return d=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)({}).hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},d.apply(null,arguments)}function v(t){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},v(t)}function g(t,e){if("object"!=v(t)||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=v(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}function h(t){var e=g(t,"string");return"symbol"==v(e)?e:e+""}function w(t,e,r){return(e=h(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function O(t){if(Array.isArray(t))return t}function S(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,l,c=[],a=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;a=!1}else for(;!(a=(n=i.call(r)).done)&&(c.push(n.value),c.length!==e);a=!0);}catch(t){s=!0,o=t}finally{try{if(!a&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw o}}return c}}function j(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function E(t,e){if(t){if("string"==typeof t)return j(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?j(t,e):void 0}}function x(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function P(t,e){return O(t)||S(t,e)||E(t,e)||x()}var k=o.extend({defaultProps:{__TYPE:"ScrollTop",target:"window",threshold:400,icon:null,behavior:"smooth",className:null,style:null,transitionOptions:null,onShow:null,onHide:null,children:void 0},css:{classes:{root:function(t){return f("p-scrolltop p-link p-component",{"p-scrolltop-sticky":"window"!==t.props.target})},icon:"p-scrolltop-icon",transition:"p-scrolltop"},styles:"\n@layer primereact {\n .p-scrolltop {\n position: fixed;\n bottom: 20px;\n right: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n \n .p-scrolltop-sticky {\n position: sticky;\n }\n \n .p-scrolltop-sticky.p-link {\n margin-left: auto;\n }\n \n .p-scrolltop-helper {\n display: none;\n }\n \n .p-scrolltop-enter {\n opacity: 0;\n }\n \n .p-scrolltop-enter-active {\n opacity: 1;\n transition: opacity .15s;\n }\n \n .p-scrolltop-exit {\n opacity: 1;\n }\n \n .p-scrolltop-exit-active {\n opacity: 0;\n transition: opacity .15s;\n }\n}\n"}});function I(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function T(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?I(Object(r),!0).forEach((function(e){w(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):I(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}var N=t.memo(t.forwardRef((function(o,v){var g=P(t.useState(!1),2),h=g[0],w=g[1],O=c(),S=t.useContext(r),j=k.getProps(o,S),E=k.setMetaData({props:j,state:{visible:h}}),x=E.ptm,I=E.cx;i(k.css.styles,E.isUnstyled,{name:"scrolltop"});var N=t.useRef(null),A=t.useRef(null),D="parent"===j.target,R=P(a({target:function(){return A.current&&A.current.parentElement},type:"scroll",listener:function(t){C(t.currentTarget.scrollTop)}}),1)[0],H=P(a({target:"window",type:"scroll",listener:function(t){t&&C(m.getWindowScrollTop())}}),1)[0],C=function(t){w(t>j.threshold)};t.useImperativeHandle(v,(function(){return{props:j,getElement:function(){return elementRef.current}}})),t.useEffect((function(){"window"===j.target?H():"parent"===j.target&&R()}),[]),s((function(){y.clear(N.current)}));var z=O({className:I("icon")},x("icon")),M=b.getJSXIcon(j.icon||t.createElement(p,z),T({},z),{props:j}),U=n("aria")?n("aria").scrollTop:void 0,Z=O({ref:N,type:"button",className:f(j.className,I("root")),style:j.style,onClick:function(){("window"===j.target?window:A.current.parentElement).scroll({top:0,behavior:j.behavior})},"aria-label":U},k.getOtherProps(j),x("root")),_=O({classNames:I("transition"),in:h,timeout:{enter:150,exit:150},options:j.transitionOptions,unmountOnExit:!0,onEnter:function(){y.set("overlay",N.current,S&&S.autoZIndex||e.autoZIndex,S&&S.zIndex.overlay||e.zIndex.overlay)},onEntered:function(){j.onShow&&j.onShow()},onExited:function(){y.clear(N.current),j.onHide&&j.onHide()}},x("transition"));return t.createElement(t.Fragment,null,t.createElement(l,d({nodeRef:N},_),t.createElement("button",Z,M,t.createElement(u,null))),D&&t.createElement("span",{ref:A,className:"p-scrolltop-helper"}))})));N.displayName="ScrollTop";export{N as ScrollTop};