|
|
(self.webpackChunk=self.webpackChunk||[]).push([[19519],{57732:function(e,t,n){"use strict";var s=n(26801),r=n.n(s),i=(n(59301),n(93314)),o=n(3113),a=n(37712);t.Z=function(e){var t=e.img,n=e.buttonProps,s=void 0===n?{}:n,l=e.styles,c=void 0===l?{}:l,u=e.customText,d=e.ButtonText,p=e.ButtonClick,h=e.Buttonclass,f=e.ButtonTwo,m=e.imgStyles,x=e.loading,v=void 0!==x&&x;return(0,a.jsxs)("section",{className:"tc animated fadeIn",style:r()(r()({},{color:"#999",margin:"100px auto",visibility:v?"hidden":"visible"}),c),children:[(0,a.jsx)("img",{src:t||i,style:r()({},m)}),(0,a.jsx)("p",{className:"mt20 font14",children:u||"暂时还没有相关数据哦!"}),d&&(0,a.jsx)(o.ZP,r()(r()({className:h,onClick:p},s),{},{children:d})),f&&f]})}},86363:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return K}});var s=n(93923),r=n.n(s),i=n(10574),o=n.n(i),a=n(39343),l=n.n(a),c=n(11006),u=n.n(c),d=n(27161),p=n.n(d),h=n(59301),f=n(22211),m=n(78241),x=n(43418),v=n(8591),y=n(95237),g=n(72315),_=n(15830),b="wrap___N68Ys",j=n(52063),w=n(9498),k=n.n(w),L=n(23878),S=n(29268),Z=n(26801),C=n.n(Z),P=n(99313),T=n(6848),N=n(57809),O=n(1056),I=n(3113),M=n(48826),E=n(26724),H=n.n(E),R=n(70622),F=n(60638),Y="addStudentContainer___vm8uG",z="listItem___GgL6_",W=n(378),D=n(85578),V=n(67871),A=n(37712),q=P.Z.TabPane,B=(0,f.connect)((function(e){return{classroomList:e.classroomList,loading:e.loading}}))((function(e){var t,n,s=e.classroomList,i=(e.loading,e.dispatch),a=(0,f.useParams)(),c=s.actionTabs,d=(0,h.useState)([]),p=u()(d,2),y=p[0],b=p[1],j=(0,h.useState)(!0),w=u()(j,2),L=w[0],S=w[1],Z=(0,h.useState)(!1),E=u()(Z,2),B=E[0],G=E[1],K=m.Z.useForm(),U=u()(K,1)[0],Q=(0,h.useState)([]),J=u()(Q,2),X=J[0],$=J[1],ee=(0,h.useState)(1),te=u()(ee,2),ne=te[0],se=te[1],re=(0,h.useState)([]),ie=u()(re,2),oe=ie[0],ae=ie[1],le=(0,h.useState)(!0),ce=u()(le,2),ue=ce[0],de=ce[1],pe=(0,h.useState)([]),he=u()(pe,2),fe=he[0],me=he[1],xe=(0,h.useState)("1"),ve=u()(xe,2),ye=ve[0],ge=ve[1],_e=(0,h.useState)(!1),be=u()(_e,2),je=be[0],we=be[1];(0,h.useRef)();(0,h.useEffect)((function(){"添加学生"===s.actionTabs.key&&(de(!0),ke(),ge(s.actionTabs.tab))}),[s.actionTabs.key]);var ke=function(){var e=l()(o()().mark((function e(){var t,n;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.ZP)("/api/schools/department_list.json",{method:"get"});case 2:n=e.sent,b(null===(t=n.department_names)||void 0===t?void 0:t.map((function(e){return{value:e}})));case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Le={onRemove:function(){me([])},beforeUpload:function(e){var t=[];return t.push(e),me([].concat(t)),!1},fileList:fe,accept:".xls,.xlsx"},Se=function(){var e=l()(o()().mark((function e(){var t,n,s,i,l=arguments;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=l.length>0&&void 0!==l[0]&&l[0],!L||B){e.next=11;break}return s=U.getFieldValue(),G(!0),se(t?1:ne+1),e.next=7,(0,R.nQ)(C()(C()({page:t?1:ne+1,container_id:a.coursesId,container_type:1,school_name:null==s?void 0:s.school_name,keyword:null==s?void 0:s.keyword,source:"school_manage"},s),{},{role:4}));case 7:i=e.sent,$(t?r()(i.users):[].concat(r()(X),r()(i.users))),G(!1),(null===(n=i.users)||void 0===n?void 0:n.length)<10&&S(!1);case 11:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Ze=function(){var e=l()(o()().mark((function e(){var t;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(""!=oe){e.next=4;break}v.ZP.error("请选择人数"),e.next=10;break;case 4:return we(!0),e.next=7,(0,_.ZP)("/api/student_groups/".concat(null==a?void 0:a.couserid,"/add_user.json"),{method:"POST",body:{user_ids:oe}});case 7:t=e.sent,we(!1),0===t.status&&i({type:"classroomList/setActionTabs",payload:{key:"刷新列表",types:1,list:null==t?void 0:t.audit_users}});case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Ce=function(){var e=l()(o()().mark((function e(){var t,n;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!((null==fe?void 0:fe.length)<=0)){e.next=3;break}return v.ZP.info("请上传文件"),e.abrupt("return");case 3:return we(!0),(t=new FormData).append("file",fe[0]),e.next=8,(0,_.ZP)("/api/student_groups/".concat(a.couserid,"/import_user.json"),{method:"post",body:t},!0);case 8:0===(null==(n=e.sent)?void 0:n.status)&&i({type:"classroomList/setActionTabs",payload:{key:"刷新列表",types:2,list:null==n?void 0:n.audit_users}}),we(!1);case 11:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Pe=[{title:"姓名",width:100,ellipsis:!0,dataIndex:"username",render:function(e,t){return(0,A.jsx)(T.Z,{placement:"bottom",title:e,children:(0,A.jsx)(f.Link,{className:"bold c-black",to:"/users/".concat(t.login),target:"_blank",children:e||"--"})})}},{title:"学号/工号",width:100,dataIndex:"student_number",ellipsis:!0,render:function(e){return(0,A.jsx)(T.Z,{placement:"bottom",title:e,children:(0,A.jsx)("span",{children:e||"--"})})}},{title:"班级",width:100,dataIndex:"student_name",ellipsis:!0,render:function(e){return(0,A.jsx)(T.Z,{placement:"bottom",title:e,children:(0,A.jsx)("span",{children:e||"--"})})}},{title:"院系/部门",dataIndex:"depart_name",width:130,ellipsis:!0,render:function(e){return(0,A.jsx)(T.Z,{placement:"bottom",title:e,children:(0,A.jsx)("span",{children:e||"--"})})}},{title:"手机",width:100,dataIndex:"phone",ellipsis:!0,render:function(e){return(0,A.jsx)(T.Z,{placement:"bottom",title:e,children:(0,A.jsx)("span",{children:e||"--"})})}},{title:"邮箱",dataIndex:"email",width:100,ellipsis:!0,render:function(e){return(0,A.jsx)(T.Z,{placement:"bottom",title:e,children:(0,A.jsx)("span",{children:e||"--"})})}},{title:"最后登录时间",dataIndex:"last_login_on",width:140,ellipsis:!0,render:function(e){return(0,A.jsx)(T.Z,{placement:"bottom",title:e?k()(e).format("YYYY-MM-DD HH:mm"):"- -",children:(0,A.jsx)("span",{children:e?k()(e).format("YYYY-MM-DD HH:mm"):"- -"})})}}];return(0,A.jsx)(x.Z,{centered:!0,title:"添加学生",open:"添加学生"===s.actionTabs.key,okText:"确定",cancelText:"取消",width:"1"===ye?1100:600,zIndex:1e3,afterClose:function(){me([])},confirmLoading:je,bodyStyle:{minHeight:200},onOk:l()(o()().mark((function e(){return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("1"!==ye){e.next=3;break}return Ze(),e.abrupt("return");case 3:Ce();case 4:case"end":return e.stop()}}),e)}))),onCancel:function(){ae([]),i({type:"classroomList/setActionTabs",payload:{}})},children:(0,A.jsxs)(P.Z,{activeKey:ye,onChange:function(e){return ge(e)},className:Y,children:[(0,A.jsx)(q,{tab:"手动添加",children:(0,A.jsxs)("div",{className:z,children:[(0,A.jsxs)(m.Z,{layout:"inline",form:U,initialValues:{school_name:"",keyword:"",search_type:"1"},className:"mt10",children:[(0,A.jsx)(m.Z.Item,{name:"search_type",label:"搜索类型",children:(0,A.jsxs)(N.default,{children:[(0,A.jsx)(N.default.Option,{value:"1",children:"姓名"}),(0,A.jsx)(N.default.Option,{value:"2",children:"手机号"}),(0,A.jsx)(N.default.Option,{value:"3",children:"邮箱"})]})}),(0,A.jsx)(m.Z.Item,{name:"keyword",label:"搜索内容",children:(0,A.jsx)(O.Z,{allowClear:!0,style:{width:240},defaultValue:(null===(t=c.selectArrs)||void 0===t?void 0:t.category_name)||(null===(n=c.selectArrs)||void 0===n?void 0:n.name)})}),(0,A.jsx)(m.Z.Item,{name:"department_name",label:"院系:",children:(0,A.jsx)(N.default,{style:{width:200},children:null==y?void 0:y.map((function(e){return(0,A.jsx)(N.default.Option,{value:null==e?void 0:e.value,children:null==e?void 0:e.value})}))})}),(0,A.jsx)(m.Z.Item,{children:(0,A.jsx)(I.ZP,{htmlType:"submit",type:"primary",onClick:function(){return function(){var e;if(""===(null===(e=U.getFieldValue())||void 0===e?void 0:e.keyword))return $([]),void v.ZP.error("请输入搜索内容");de(!1),L=!0,S(!0),ae([]),G(!1),setTimeout((function(){Se(!0)}),300)}()},children:"搜索"})})]}),ue&&(0,A.jsxs)("div",{className:"tc font16 c-light-black mt40 pb30",children:[(0,A.jsx)("img",{src:F.L6,width:"250",alt:""}),(0,A.jsx)("br",{}),(0,A.jsx)("p",{className:"mt20",children:"请搜索要添加的人员"})]}),!ue&&""==X&&!B&&(0,A.jsxs)("div",{className:"tc font16 c-light-black mt40 pb30",children:[(0,A.jsx)("img",{src:F.z3,width:"100",alt:""}),(0,A.jsx)("br",{}),(0,A.jsx)("p",{className:"mt20",children:"暂时还没有相关数据哦!"})]}),(!ue&&""!=X||B)&&(0,A.jsxs)("section",{children:[(0,A.jsx)("div",{className:"flexd-table-header mt20"}),(0,A.jsx)("div",{style:{maxHeight:260,overflow:"auto"},children:(0,A.jsx)(H(),{initialLoad:!1,pageStart:1,threshold:20,loadMore:function(e){Se()},hasMore:L,useWindow:!1,children:(0,A.jsx)(g.Z,{loading:B,rowKey:function(e){return e.numid},rowSelection:{type:"checkbox",onChange:function(e){ae(e)}},pagination:!1,dataSource:X,columns:Pe})})})]})]})},"1"),(0,A.jsx)(q,{tab:"批量导入",children:(0,A.jsx)("div",{className:z,children:(0,A.jsxs)("div",{className:"mt20",style:{marginLeft:86},children:[(0,A.jsxs)("div",{className:"mb20",children:[(0,A.jsx)("span",{className:"mr40",children:"步骤1:"}),"下载",(0,A.jsx)("a",{className:"ml5 mr5",onClick:l()(o()().mark((function e(){return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(0,D.FH)("",(0,D.NY)({url:V.Z.API_SERVER+"/api/student_groups/down_template",query:{}}));case 1:case"end":return e.stop()}}),e)}))),children:"导入学生模版"}),"批量导入成员。"]}),(0,A.jsxs)("div",{children:[(0,A.jsx)("span",{className:"mr40",children:"步骤2:"}),"上传填写好的《导入学生模版》。"]}),(0,A.jsx)("div",{style:{margin:"4px 0px 20px 94px"},children:(0,A.jsx)(M.Z,C()(C()({},Le),{},{children:(0,A.jsx)(I.ZP,{type:"primary",className:"mt10",icon:(0,A.jsx)(W.Z,{}),children:"选择文件"})}))})]})})},"2")]})})})),G=["classroomList","globalSetting","loading","user","dispatch","location"];k().locale("ZH-cn");var K=(0,f.connect)((function(e){var t=e.classroomList,n=e.loading,s=e.globalSetting,r=e.user;return{classroomList:t,globalSetting:s,loading:n.models.classroomList,user:r}}))((function(e){var t,n=e.classroomList,s=(e.globalSetting,e.loading,e.user,e.dispatch),i=e.location,a=(p()(e,G),(0,f.useParams)(),(0,h.useState)()),c=u()(a,2),d=c[0],w=c[1],k=(0,h.useState)(1),Z=u()(k,2),C=Z[0],P=Z[1],T=(0,h.useState)(null),N=u()(T,2),O=(N[0],N[1],(0,h.useState)(!0)),I=u()(O,2),M=I[0],E=I[1],H=(0,h.useState)(20),R=u()(H,2),F=R[0],Y=(R[1],(0,h.useState)(!1)),z=u()(Y,2),W=z[0],D=z[1],V=m.Z.useForm(),q=(u()(V,1)[0],(0,f.useParams)()),K=(0,h.useState)([]),U=u()(K,2),Q=U[0],J=U[1],X=(0,h.useState)(""),$=u()(X,2),ee=$[0],te=$[1];function ne(e){return se.apply(this,arguments)}function se(){return se=l()(o()().mark((function e(t){var n,s;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return E(!0),n=t||C,e.next=4,(0,_.ZP)("/api/student_groups/".concat(null==q?void 0:q.couserid,".json"),{method:"get",params:{page:n,limit:F,keyword:ee||""}});case 4:s=e.sent,w(s),E(!1);case 7:case"end":return e.stop()}}),e)}))),se.apply(this,arguments)}(0,h.useEffect)((function(){ne()}),[C,q,ee]),(0,h.useEffect)((function(){var e;"刷新列表"===n.actionTabs.key&&(ne(),(null===(e=n.actionTabs.list)||void 0===e?void 0:e.length)>0&&D(!0))}),[n.actionTabs.key]);var re=[{title:"序号",dataIndex:"name",align:"left",key:"name",ellipsis:!0,width:50,render:function(e,t,n){return(0,A.jsx)("span",{children:F*(C-1)+n+1})}},{title:"姓名",dataIndex:"real_name",align:"left",key:"content",render:function(e){return(0,A.jsx)("span",{style:{fontWeight:500},children:e})}},{title:"学号",dataIndex:"student_id",align:"left",key:"clazz"},{title:"院系/部门",dataIndex:"department_name",align:"left",key:"created_at",render:function(e){return(0,A.jsx)("span",{className:"c-grey-666",children:e})}},{title:"手机号",dataIndex:"phone",align:"left",key:"created_at",render:function(e){return(0,A.jsx)("span",{className:"c-grey-666",children:e})}},{title:"邮箱账号",dataIndex:"mail",align:"left",key:"created_at",render:function(e){return(0,A.jsx)("span",{className:"c-grey-666",children:e})}},{title:"操作",dataIndex:"id",align:"right",key:"remark",width:150,ellipsis:!0,render:function(e,t,n){return(0,A.jsxs)(y.Z,{align:"middle",justify:"space-between",children:[(0,A.jsx)("a",{style:{marginRight:"10px",color:"#165DFF"},onClick:function(){var t,n;t=e,x.Z.confirm({centered:!0,width:488,okText:"确定",cancelText:"取消",title:"提示",icon:null,className:S.Z.CustomTipsModalCss,content:(0,A.jsxs)("div",{children:[(0,A.jsxs)("div",{children:["重置该学生密码后,学生密码为默认密码:",(0,A.jsx)("span",{style:{color:"#000"},children:"12345678"})]}),(0,A.jsx)("p",{children:"且该学生将收到密码重置消息通知,请提醒该学生及时更改密码"})]}),onOk:(n=l()(o()().mark((function e(){var n;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.ZP)("/api/student_groups/".concat(q.couserid,"/reset_password.json"),{method:"post",body:{user_id:t}});case 2:0===e.sent.status&&(v.ZP.info("重置成功"),ne(1===(null==d||null===(n=d.assets)||void 0===n?void 0:n.length)&&C>1?C-1:C));case 4:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)})})},children:"重置密码"}),(0,A.jsx)("a",{style:{color:"#165DFF"},onClick:function(){var t,n;t=e,x.Z.confirm({centered:!0,width:488,okText:"确定",cancelText:"取消",title:"提示",icon:null,className:S.Z.CustomTipsModalCss,content:"请确认是否将该学员移除该班级,移除后该学生将分配在未分班中,其他老师可拉入该学员进入班级",onOk:(n=l()(o()().mark((function e(){var n;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,(0,_.ZP)("/api/student_groups/".concat(q.couserid,"/destroy_user.json"),{method:"post",body:{user_id:t}});case 2:0===e.sent.status&&(v.ZP.info("移除成功"),ne(1===(null==d||null===(n=d.assets)||void 0===n?void 0:n.length)&&C>1?C-1:C));case 4:case"end":return e.stop()}}),e)}))),function(){return n.apply(this,arguments)})})},children:"移除"})]})}}],ie=[{title:"学号",dataIndex:"student_id",align:"left",key:"student_id",ellipsis:!0,width:50,render:function(e,t,n){return(0,A.jsx)("span",{children:e})}},{title:"姓名",dataIndex:"real_name",align:"left",key:"content",render:function(e){return(0,A.jsx)("span",{style:{fontWeight:500},children:e})}},{title:"班级",dataIndex:"student_group_name",align:"left",key:"clazz"},{title:"院系",dataIndex:"department_name",align:"left",key:"created_at",render:function(e){return(0,A.jsx)("span",{className:"c-grey-666",children:e})}},{title:"负责教师",dataIndex:"teacher_names",align:"left",key:"created_at",render:function(e){return(0,A.jsx)("span",{className:"c-grey-666",children:e})}}];return(0,A.jsxs)("div",{className:b,children:[(0,A.jsxs)(y.Z,{justify:"space-between",style:{marginBottom:"36px"},align:"middle",className:"mt8",children:[(0,A.jsxs)("span",{children:[(0,A.jsxs)("span",{style:{cursor:"pointer",fontSize:"14px"},onClick:function(){f.history.push("/users/".concat(null==q?void 0:q.username,"/classmanagement")),s({type:"classroomList/setActionTabs",payload:{key:""}})},children:[(0,A.jsx)(j.Z,{})," ",i&&(null===(t=i.query)||void 0===t?void 0:t.department_name)]}),(0,A.jsxs)("span",{style:{color:"#5F6368",marginLeft:20},children:["共",(0,A.jsx)("span",{style:{color:"#1869FF"},children:null==d?void 0:d.total_count}),"个学生"]})]}),(0,A.jsxs)("span",{style:{display:"flex"},children:[(0,A.jsx)(L.op,{onClick:function(){s({type:"classroomList/setActionTabs",payload:{key:"添加学生",tab:"2"}})},type:"primary",children:"导入学生"}),(0,A.jsx)(L.op,{style:{margin:"0px 30px"},onClick:function(){s({type:"classroomList/setActionTabs",payload:{key:"添加学生",tab:"1"}})},type:"primary",children:"添加学生"}),(0,A.jsx)(L.t7,{style:{width:300},onChange:function(e){te(e)},placeholder:"请输入姓名学号名称进行搜索"})]})]}),(0,A.jsx)(L.Gi,{children:(0,A.jsx)(g.Z,{columns:re,loading:M,dataSource:null==d?void 0:d.user_list,pagination:{hideOnSinglePage:!0,pageSize:F,showSizeChanger:!1,current:C,position:["bottomCenter"],onChange:function(e,t){P(e)},total:null==d?void 0:d.total_count}})}),(0,A.jsx)(B,{}),(0,A.jsxs)(x.Z,{visible:W,wrapClassName:S.Z.CustomCss,okText:"申请审核",title:1===n.actionTabs.types?"添加学生":"导入学生",cancelText:"取消",width:880,onCancel:function(){D(!1)},onOk:l()(o()().mark((function e(){var t;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return console.log("---",Q),e.next=3,(0,_.ZP)("/api/group_audit_records.json",{method:"post",body:{user_ids:Q,student_group_id:q.couserid}});case 3:0===(null==(t=e.sent)?void 0:t.status)&&(v.ZP.info("申请成功"),D(!1));case 5:case"end":return e.stop()}}),e)}))),children:[(0,A.jsxs)("p",{style:{color:"#5F6367"},children:["检测到",1===n.actionTabs.types?"添加":"导入","的学生,已存在班级,避免误加导致添加错误,请联系该学生负责的教师沟通,将其移出班级再添加,或勾选需要添加的学生,并向管理员审核,审核后学生自动加入您的班级"]}),(0,A.jsx)(L.Gi,{children:(0,A.jsx)(g.Z,{columns:ie,loading:M,rowKey:function(e){return e.id},rowSelection:{type:"checkbox",onChange:function(e){J(r()(e))}},dataSource:n.actionTabs.list,pagination:!1})})]})]})}))},29268:function(e,t){"use strict";t.Z={flex_box_center:"flex_box_center___vG4eV",flex_space_between:"flex_space_between___qVVxe",flex_box_vertical_center:"flex_box_vertical_center___P8Z8s",flex_box_center_end:"flex_box_center_end___VMme3",flex_box_column:"flex_box_column___VMHwm",dropdownmenus:"dropdownmenus___oVzoj",popupClassNames:"popupClassNames___OcZq7",selectdown:"selectdown___mmcA8"}},51581:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var s=t[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}return function(t,n,s){return n&&e(t.prototype,n),s&&e(t,s),t}}(),r=n(59301),i=a(r),o=a(n(12708));function a(e){return e&&e.__esModule?e:{default:e}}var l=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.scrollListener=n.scrollListener.bind(n),n.eventListenerOptions=n.eventListenerOptions.bind(n),n.mousewheelListener=n.mousewheelListener.bind(n),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),s(t,[{key:"componentDidMount",value:function(){this.pageLoaded=this.props.pageStart,this.options=this.eventListenerOptions(),this.attachScrollListener()}},{key:"componentDidUpdate",value:function(){if(this.props.isReverse&&this.loadMore){var e=this.getParentElement(this.scrollComponent);e.scrollTop=e.scrollHeight-this.beforeScrollHeight+this.beforeScrollTop,this.loadMore=!1}this.attachScrollListener()}},{key:"componentWillUnmount",value:function(){this.detachScrollListener(),this.detachMousewheelListener()}},{key:"isPassiveSupported",value:function(){var e=!1,t={get passive(){e=!0}};try{document.addEventListener("test",null,t),document.removeEventListener("test",null,t)}catch(e){}return e}},{key:"eventListenerOptions",value:function(){var e=this.props.useCapture;return this.isPassiveSupported()&&(e={useCapture:this.props.useCapture,passive:!0}),e}},{key:"setDefaultLoader",value:function(e){this.defaultLoader=e}},{key:"detachMousewheelListener",value:function(){var e=window;!1===this.props.useWindow&&(e=this.scrollComponent.parentNode),e.removeEventListener("mousewheel",this.mousewheelListener,this.options?this.options:this.props.useCapture)}},{key:"detachScrollListener",value:function(){var e=window;!1===this.props.useWindow&&(e=this.getParentElement(this.scrollComponent)),e.removeEventListener("scroll",this.scrollListener,this.options?this.options:this.props.useCapture),e.removeEventListener("resize",this.scrollListener,this.options?this.options:this.props.useCapture)}},{key:"getParentElement",value:function(e){var t=this.props.getScrollParent&&this.props.getScrollParent();return null!=t?t:e&&e.parentNode}},{key:"filterProps",value:function(e){return e}},{key:"attachScrollListener",value:function(){var e=this.getParentElement(this.scrollComponent);if(this.props.hasMore&&e){var t=window;!1===this.props.useWindow&&(t=e),t.addEventListener("mousewheel",this.mousewheelListener,this.options?this.options:this.props.useCapture),t.addEventListener("scroll",this.scrollListener,this.options?this.options:this.props.useCapture),t.addEventListener("resize",this.scrollListener,this.options?this.options:this.props.useCapture),this.props.initialLoad&&this.scrollListener()}}},{key:"mousewheelListener",value:function(e){1!==e.deltaY||this.isPassiveSupported()||e.preventDefault()}},{key:"scrollListener",value:function(){var e=this.scrollComponent,t=window,n=this.getParentElement(e),s=void 0;if(this.props.useWindow){var r=document.documentElement||document.body.parentNode||document.body,i=void 0!==t.pageYOffset?t.pageYOffset:r.scrollTop;s=this.props.isReverse?i:this.calculateOffset(e,i)}else s=this.props.isReverse?n.scrollTop:e.scrollHeight-n.scrollTop-n.clientHeight;s<Number(this.props.threshold)&&e&&null!==e.offsetParent&&(this.detachScrollListener(),this.beforeScrollHeight=n.scrollHeight,this.beforeScrollTop=n.scrollTop,"function"==typeof this.props.loadMore&&(this.props.loadMore(this.pageLoaded+=1),this.loadMore=!0))}},{key:"calculateOffset",value:function(e,t){return e?this.calculateTopPosition(e)+(e.offsetHeight-t-window.innerHeight):0}},{key:"calculateTopPosition",value:function(e){return e?e.offsetTop+this.calculateTopPosition(e.offsetParent):0}},{key:"render",value:function(){var e=this,t=this.filterProps(this.props),n=t.children,s=t.element,r=t.hasMore,o=(t.initialLoad,t.isReverse),a=t.loader,l=(t.loadMore,t.pageStart,t.ref),c=(t.threshold,t.useCapture,t.useWindow,t.getScrollParent,function(e,t){var n={};for(var s in e)t.indexOf(s)>=0||Object.prototype.hasOwnProperty.call(e,s)&&(n[s]=e[s]);return n}(t,["children","element","hasMore","initialLoad","isReverse","loader","loadMore","pageStart","ref","threshold","useCapture","useWindow","getScrollParent"]));c.ref=function(t){e.scrollComponent=t,l&&l(t)};var u=[n];return r&&(a?o?u.unshift(a):u.push(a):this.defaultLoader&&(o?u.unshift(this.defaultLoader):u.push(this.defaultLoader))),i.default.createElement(s,c,u)}}]),t}(r.Component);l.propTypes={children:o.default.node.isRequired,element:o.default.node,hasMore:o.default.bool,initialLoad:o.default.bool,isReverse:o.default.bool,loader:o.default.node,loadMore:o.default.func.isRequired,pageStart:o.default.number,ref:o.default.func,getScrollParent:o.default.func,threshold:o.default.number,useCapture:o.default.bool,useWindow:o.default.bool},l.defaultProps={element:"div",hasMore:!1,initialLoad:!0,pageStart:0,ref:null,threshold:250,useWindow:!0,isReverse:!1,useCapture:!1,loader:null,getScrollParent:null},t.default=l,e.exports=t.default},26724:function(e,t,n){e.exports=n(51581)}}]); |