2 lines
5.8 KiB
JavaScript
2 lines
5.8 KiB
JavaScript
import e,{Component as t}from"react";import{ObjectUtils as r,classNames as n}from"primereact/utils";import{localeOption as o}from"primereact/api";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function l(e,t){return l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},l(e,t)}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&l(e,t)}function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function p(e,t){if(t&&("object"===c(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return u(e)}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function d(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}var f,m,y,v=function(l){a(b,t);var c,u,f,m,y,v=(c=b,u=d(),function(){var e,t=h(c);if(u){var r=h(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return p(this,e)});function b(e){var t;return i(this,b),(t=v.call(this,e)).state={},t.dataToRender=[],t.value=t.props.value,t.first=0,t}return f=b,(m=[{key:"handleDataChange",value:function(){this.props.lazy?(this.dataToRender=this.value,this.setState({dataToRender:this.dataToRender})):this.load()}},{key:"load",value:function(){if(this.props.lazy)this.props.onLazyLoad&&this.props.onLazyLoad(this.createLazyLoadMetadata()),this.first=this.first+this.props.rows;else if(this.value){for(var e=this.first;e<this.first+this.props.rows&&!(e>=this.value.length);e++)this.dataToRender.push(this.value[e]);0!==this.value.length&&(this.first=this.first+this.props.rows),this.setState({dataToRender:this.dataToRender})}}},{key:"reset",value:function(){this.first=0,this.dataToRender=[],this.setState({dataToRender:this.dataToRender}),this.load()}},{key:"isEmpty",value:function(){return!this.dataToRender||0===this.dataToRender.length}},{key:"createLazyLoadMetadata",value:function(){return{first:this.first,rows:this.props.rows}}},{key:"bindScrollListener",value:function(){var e=this;this.props.inline?(this.scrollFunction=function(){e.contentElement.scrollTop>=e.contentElement.scrollHeight*e.props.buffer-e.contentElement.clientHeight&&e.load()},this.contentElement.addEventListener("scroll",this.scrollFunction)):(this.scrollFunction=function(){var t=document.body,r=document.documentElement,n=window.pageYOffset||document.documentElement.scrollTop,o=r.clientHeight;n>=Math.max(t.scrollHeight,t.offsetHeight,o,r.scrollHeight,r.offsetHeight)*e.props.buffer-o&&e.load()},window.addEventListener("scroll",this.scrollFunction))}},{key:"unbindScrollListener",value:function(){this.scrollFunction&&(this.props.inline?(this.contentElement.removeEventListener("scroll",this.scrollFunction),this.contentElement=null):this.props.loader||window.removeEventListener("scroll",this.scrollFunction)),this.scrollFunction=null}},{key:"componentDidMount",value:function(){this.load(),this.props.loader||this.bindScrollListener()}},{key:"componentDidUpdate",value:function(e,t){var r=this.props.value;r&&this.value!==r&&(this.value=r,this.first=0,this.dataToRender=[],this.handleDataChange()),e.loader!==this.props.loader&&this.props.loader&&this.unbindScrollListener()}},{key:"componentWillUnmount",value:function(){this.scrollFunction&&this.unbindScrollListener()}},{key:"renderHeader",value:function(){return this.props.header?e.createElement("div",{className:"p-datascroller-header"},this.props.header):null}},{key:"renderFooter",value:function(){return this.props.footer?e.createElement("div",{className:"p-datascroller-footer"},this.props.footer):null}},{key:"renderItem",value:function(t,r){var n=this.props.itemTemplate?this.props.itemTemplate(t):t;return e.createElement("li",{key:r+"_datascrollitem"},n)}},{key:"renderEmptyMessage",value:function(){var t=r.getJSXElement(this.props.emptyMessage,this.props)||o("emptyMessage");return e.createElement("li",null,t)}},{key:"renderContent",value:function(){var t=this,r=this.state.dataToRender&&this.state.dataToRender.length?this.state.dataToRender.map((function(e,r){return t.renderItem(e,r)})):this.renderEmptyMessage();return e.createElement("div",{ref:function(e){return t.contentElement=e},className:"p-datascroller-content",style:{maxHeight:this.props.scrollHeight}},e.createElement("ul",{className:"p-datascroller-list"},r))}},{key:"render",value:function(){var t=n("p-datascroller p-component",this.props.className,{"p-datascroller-inline":this.props.inline}),r=this.renderHeader(),o=this.renderFooter(),i=this.renderContent();return e.createElement("div",{id:this.props.id,className:t},r,i,o)}}])&&s(f.prototype,m),y&&s(f,y),Object.defineProperty(f,"prototype",{writable:!1}),b}();y={id:null,value:null,rows:0,inline:!1,scrollHeight:null,loader:!1,buffer:.9,style:null,className:null,onLazyLoad:null,emptyMessage:null,itemTemplate:null,header:null,footer:null,lazy:!1},(m="defaultProps")in(f=v)?Object.defineProperty(f,m,{value:y,enumerable:!0,configurable:!0,writable:!0}):f[m]=y;export{v as DataScroller};
|