@clickview/lite 0.79.0-rc.2 → 0.79.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4365],{75097:(e,t,n)=>{n.d(t,{U:()=>c});var a=n(32735),r=n(13170);function c(e){var t=e.count,n=void 0===t?6:t;return a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"d-flex ps-1"},Array(n).fill(null).map(function(e,t){return a.createElement("div",{key:t,className:"".concat(r.Z.partialButton," partial-loading-background mx-1")})})))}},38502:(e,t,n)=>{n.d(t,{r:()=>m});var a=n(32735),r=n(49985),c=n(15611),l=n(18559),o=n(11607),s=n(83914),i=n(22771);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(l.C,{type:l.g.Count,data:e.tab.count})))}function m(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(i.Z.pillTabSelector,"\n ").concat(e.borderRadius?i.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map(function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(i.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?i.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(c.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(i.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(o.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(i.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))})))}m.defaultProps={borderRadius:"lg"}},31647:(e,t,n)=>{n.d(t,{E:()=>o});var a=n(32735),r=n(23481),c=n(38502),l="rostering.settingHeader";function o(e){var t,n,o=[{name:r.T.getPhrase(l,"syncJobs"),appLink:null===(t=e.appLinks)||void 0===t?void 0:t.syncJobs,active:"syncJobs"===e.active},{name:r.T.getPhrase(l,"settings"),appLink:null===(n=e.appLinks)||void 0===n?void 0:n.settings,active:"settings"===e.active}];return a.createElement("div",{className:e.className},a.createElement(c.r,{tabs:o}))}},18549:(e,t,n)=>{n.d(t,{G:()=>s});var a=n(32735),r=n(23481),c=n(36532);const l={rightButton:"GcqRT"};var o=r.T.encloseNamespace("rostering.syncActionButtonGroup");function s(e){return a.createElement("div",{className:"btn-group px-2",role:"group"},a.createElement(c.u,{title:o("syncNowTooltip"),spanHack:!0,placement:"left",spanHackClassName:l.buttonBorder},a.createElement("button",{type:"button",className:"btn btn-outline-dark ".concat(l.leftButton),onClick:null==e?void 0:e.onSyncNow},o("syncNow"))))}},62394:(e,t,n)=>{n.d(t,{y:()=>l});var a=n(75896),r=n(110),c=new Date,l={parseUTCToLocal:function(e){var t=e.utcHour,n=e.utcWeekdays,c=e.utcMinute,l=void 0===c?0:c,o=n.map(function(e){return r.O.buildLocalDateFromUTC(e,t,l)}),s=o.map(function(e){return e.getDay()});return{hour:+r.O.format(a.m.first(o),"HH"),daysOfWeek:s,minute:l}},getScheduledJobBySetting:function(e){var t;if(!e||!e.fullSyncSchedule||!e.fullSyncSchedule.enabled)return null;var n=l.parseUTCToLocal({utcHour:e.fullSyncSchedule.hour,utcWeekdays:e.fullSyncSchedule.daysOfWeek,utcMinute:e.fullSyncSchedule.minute}),a=new Date,r=c.getDay(),o=n.daysOfWeek.sort(function(e,t){return e-t}),s=n.daysOfWeek.includes(r),i=n.hour,u=null!==(t=null==n?void 0:n.minute)&&void 0!==t?t:0;if(s&&(a.setHours(i,u,0,0),c<a))return a;var m=new Date,d=o.find(function(e){return e>r});d||(d=o[0]);var p=Math.abs(d-r);return m.setDate(c.getDate()+p),m.setHours(i,0,0,0),m},parseFormToPayload:function(e){var t=l.parseLocalToUTC({hour:e.startAt,weekdays:e.daysOfWeek,minute:0});return{fullSyncSchedule:{daysOfWeek:"daily"===e.repeat?[0,1,2,3,4,5,6]:t.daysOfWeek,hour:t.hour,minute:t.minute,enabled:e.enabled}}},parseValueToForm:function(e){var t=l.parseUTCToLocal({utcHour:e.hour,utcWeekdays:e.daysOfWeek,utcMinute:e.minute});return{startAt:t.hour,daysOfWeek:t.daysOfWeek,repeat:7===e.daysOfWeek.length?"daily":"weekly",enabled:e.enabled}},parseLocalToUTC:function(e){var t=e.hour,n=e.weekdays,c=e.minute,l=n.map(function(e){return r.O.buildUTCDate(e,t,c)});return{hour:+r.O.format(a.m.first(l),"HH"),daysOfWeek:l.map(function(e){return e.getDay()}),minute:+r.O.format(a.m.first(l),"mm")}}}},63112:(e,t,n)=>{n.d(t,{o:()=>c});var a=n(32735),r=n(14346),c=a.memo(function(e){var t=e.tagClass,n="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(r.Z.partialTag);return a.createElement("div",{className:"mt-1"},a.createElement("span",{className:n}," "))})},30699:(e,t,n)=>{n.d(t,{a:()=>c});var a=n(32735),r=n(16035);function c(e){var t=e.selectedItems.find(function(t){return t.id===e.data.id})?"bg-gray-900 text-white":"bg-light";return a.createElement(r.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}},14177:(e,t,n)=>{n.d(t,{$:()=>k});var a=n(32735),r=n(70680),c=n(81886),l=n(20354),o=n(79447),s=n(83914),i=n(83345),u=n(4594),m=n(76881),d=n(35223),p="userManager.wizardInProgress";function f(e){var t=Math.floor(e.totalItemsComplete/e.totalItems*100)||0;return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},a.createElement(i.x,{namespace:p,phrase:"heading",options:{percentage:t,actionName:e.actionName}})),a.createElement(s.x,{svgName:d.vn.CheckCircle})),a.createElement("p",null,a.createElement(i.x,{namespace:p,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1"},a.createElement("span",{className:"text-info"},e.progressVerbPhrase?a.createElement("span",null,e.progressVerbPhrase):a.createElement(i.x,{namespace:p,phrase:"progressVerb".concat(e.actionVerb)}))," ",e.objectType===u.E.User&&e.userType?a.createElement(i.x,{namespace:p,phrase:e.userType===m.Y.Learner?"progressStudents":"progressStaff",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):e.objectType===u.E.Video?a.createElement(i.x,{namespace:p,phrase:"progressVideos",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):a.createElement(i.x,{namespace:p,phrase:"progressItems",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}})),a.createElement(o.Z,{variant:"info",now:t}))}var g="userManager.wizardSubmitted";function b(e){return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},e.actionName?a.createElement(i.x,{namespace:g,phrase:"heading",options:{actionName:e.actionName}}):a.createElement(i.x,{namespace:g,phrase:"headingGeneric"})),a.createElement(s.x,{svgName:d.vn.CheckCircle})),a.createElement("p",null,a.createElement(i.x,{namespace:g,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1 text-info"},a.createElement(i.x,{namespace:g,phrase:"preparing"})),a.createElement(o.Z,{variant:"info",now:0}))}var y=n(58739),v=n(94644),E=n(89476);function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?C(e,t):void 0}}(e,t)||function(){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 C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var N=2e3,S=3;function k(e){var t=h(a.useState(null),2),n=t[0],o=t[1],s=h(a.useState(0),2),i=s[0],u=s[1],m=a.useRef(null),d=(0,E.f)(),p=(0,r.I0)();function g(){e.pollJob(C,k)}function C(t){o(t),t.status===y.K.Completed||t.status===y.K.CompletedWithError||t.status===y.K.Failed?window.setTimeout(function(){!function(){var t;e.navLockId&&d.unlock(e.navLockId);var n={jobId:e.jobId};e.userType&&(n.userType=e.userType,p({type:l.a.Actions.INVALIDATE,keys:["school:users","user:count","search:aggregation","search:users"],request:null})),e.statusCompleteAppLink?c.Q.C$.trigger(Object.assign(Object.assign({},e.statusCompleteAppLink),{params:n})):null===(t=e.onStatusCompleted)||void 0===t||t.call(e)}()},2e3):m.current=window.setTimeout(g,N)}function k(t){i===S&&(window.clearTimeout(m.current),e.navLockId&&d.unlock(e.navLockId),(0,v.r)(t)),u(function(e){return e+1}),m.current=window.setTimeout(g,N)}return a.useEffect(function(){return g(),function(){m.current&&window.clearTimeout(m.current)}},[]),n&&n.status!==y.K.Submitted&&n.status!==y.K.Queued&&n.status!==y.K.Pending&&0!==n.totalItems?a.createElement(f,{totalItems:n.totalItems,totalItemsComplete:n.processedItems,userType:e.userType,objectType:e.objectType,actionName:e.actionName,actionVerb:e.actionVerb,progressVerbPhrase:e.progressVerbPhrase}):a.createElement(b,{actionName:e.actionName,actionVerb:e.actionVerb})}},44538:(e,t,n)=>{n.d(t,{K:()=>o});var a=n(99940),r=n(97395),c=n(58739),l=n(38389),o={getRostering:function(){return{url:"{gateway}/v1/users/me/rostering",key:"rostering"}},getSyncList:function(e){var t={};if(e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.jobStatus){var n=[];e.jobStatus.includes("completed")&&n.push.apply(n,[c.K.Completed,c.K.CompletedWithError]),e.jobStatus.includes("failed")&&n.push(c.K.Failed),e.jobStatus.includes("inProgress")&&n.push.apply(n,[c.K.Submitted,c.K.Queued,c.K.Pending,c.K.InProgress]),t.status=n}return t.type=l.m.Rostering,{url:r._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"rostering:sync:".concat(e.cursor,":").concat(e.sort,":").concat(e.jobStatus)}},createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"rostering:sync",type:a.k.POST,invalidationKeys:["rostering:sync"],data:e,success:t,error:n}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}},getSyncScheduleSettings:function(e){return{url:"{gateway}/v1/rostering/".concat(e,"/schedule"),key:"sync-settings:".concat(e)}},updateScheduleSetting:function(e,t,n,r,c){return{type:a.k.PUT,url:"{gateway}/v1/rostering/".concat(t,"/schedule"),key:"update:sync-settings:".concat(e.customerId,":").concat(t),invalidationKeys:["sync-settings:".concat(t)],data:e,success:n,error:r,always:c}}}},299:(e,t,n)=>{n.d(t,{X:()=>l});var a=n(32735),r=n(69217),c=n(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.idField,l=void 0===n?"id":n,o=t.persistNamespace,s=t.initialState?t.initialState:new Map,i=a.useRef(s),u=(0,r.N)(),m=(0,c.D)(e),d=(0,c.D)(o);function p(){i.current.clear(),u()}function f(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),i.current.get(e)}function g(){return!!(null==e?void 0:e.length)&&e.every(f)}function b(e){e.forEach(function(e){i.current.set(e,!0)}),u()}return a.useEffect(function(){t.initialState||o&&d===o||(null==m?void 0:m.map(function(e){return e[l]}).join())!==(null==e?void 0:e.map(function(e){return e[l]}).join())&&p()},[m,d,e,t.initialState]),a.useEffect(function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&b(t.preselectedIds)},[]),{onToggleBulk:function(){var t=!g();e.forEach(function(e){t?i.current.set(e[l].toString(),!0):i.current.delete(e[l].toString())}),u()},onToggleItem:function(e){var t=!i.current.get(e.toString());t?i.current.set(e.toString(),t):i.current.delete(e.toString()),u()},getSelected:function(){return Array.from(i.current.keys())},isChecked:f,bulkChecked:g(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach(function(e){i.current.delete(e[l].toString())}),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find(function(e){return f(e)})},setSelected:b,getSelectedCount:function(){return i.current.size},reset:p,getMap:function(){return i.current}}}},93322:(e,t,n)=>{n.d(t,{F:()=>c});var a=n(32735),r=n(13126);function c(){a.useEffect(function(){return r.e.lockContentWidth(),function(){return r.e.unlockContentWidth()}},[])}},81803:(e,t,n)=>{n.d(t,{d:()=>f});var a=n(32735),r=n(81886),c=n(23481),l=n(49935),o=n(22902),s=n(14070),i=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var d="settings.settingsLayout",p=function(e){var t=(0,o.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var a=r.Q.C$.getCurrentAppLink();return a.application!==i.O.SETTINGS||n.some(function(e){return e.modules.some(function(e){return"appLink"in e&&e.appLink.action===a.action})})};function f(e){var t,n=p(e.requiredPermissions);if(a.useEffect(function(){n||r.Q.C$.trigger({application:i.O.SETTINGS,action:s.e.Settings.HOME},{replace:!0})},[n]),!n)return a.createElement(a.Fragment,null);var o,u=e.breadcrumbs.map(function(t,n){return{name:t,appLink:{application:i.O.SETTINGS,action:s.e.Settings.HOME},active:n===e.breadcrumbs.length-1}});return a.createElement("div",{className:"px-3"},a.createElement("div",{className:"d-flex align-items-center justify-content-between"},a.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),a.createElement("div",{className:"pb-3"},a.createElement(l.Oo,{breadcrumbs:[{name:c.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:i.O.SETTINGS,action:s.e.Settings.HOME}}].concat((o=u,function(e){if(Array.isArray(e))return m(e)}(o)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(o)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(o)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})),e.description&&a.createElement(a.Fragment,null,a.createElement("p",null,e.description),a.createElement("hr",null)),e.children)}},51552:(e,t,n)=>{n.r(t),n.d(t,{RosteringSyncListView:()=>Ue});var a=n(32735),r=n(70680),c=n(23481),l=n(20354),o=n(97958),s=n(83345),i="rostering.noResults";function u(e){return a.createElement(o.u,null,a.createElement(o.u.Image,{src:e.imageCdnUrl}),a.createElement(o.u.Heading,null,a.createElement(s.x,{namespace:i,phrase:"emptyHeading"})),a.createElement(o.u.Info,{className:"w-50 mb-1"},a.createElement(s.x,{namespace:i,phrase:"emptyInfo"})))}var m=n(75097),d=n(49935);const p={partialHeading:"MwUCZ",partialJobCount:"MUELm",partialCheckbox:"dShe9",partialExportButton:"VL4Tq",row:"z_hGc",checkboxColumn:"IacDe",actionColumn:"_JoZe",usersColumn:"BtHPO",dateColumn:"jpr0N",performedByColumn:"XP4Lf",seeMoreColumn:"A8_Nf",heading:"uThGf",action:"PFOGb",users:"pXZx8",date:"VWS_a",performedBy:"vZeC9"};function f(){return a.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(p.row)},a.createElement("div",{className:"".concat(p.checkboxColumn," d-flex justify-content-center")},a.createElement("div",{className:"partial-loading-background ".concat(p.partialCheckbox," ms-0")})),a.createElement("div",{className:"".concat(p.actionColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.action)})),a.createElement("div",{className:"".concat(p.usersColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.users)})),a.createElement("div",{className:"".concat(p.dateColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.date)})),a.createElement("div",{className:"".concat(p.performedByColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.performedBy)})),a.createElement("div",{className:"".concat(p.seeMoreColumn)}," "))}function g(){return a.createElement("div",{className:"d-flex py-2 mb-1"},a.createElement("div",{className:"".concat(p.checkboxColumn)}," "),a.createElement("div",{className:"".concat(p.actionColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.usersColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.dateColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.performedByColumn)},a.createElement("div",{className:"partial-loading-background ".concat(p.heading)})),a.createElement("div",{className:"".concat(p.seeMoreColumn)}," "))}function b(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3 mt-n1"},a.createElement(g,null),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null),a.createElement(f,null))))}function y(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"partial-loading-background mb-2 ".concat(p.partialHeading)}),a.createElement("div",{className:"pb-3"},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement(d.b2,null),a.createElement("div",{className:"partial-loading-background ".concat(p.partialJobCount)}))),a.createElement("div",{className:"d-flex align-items-center pb-2"},a.createElement("div",{className:"partial-loading-background ".concat(p.partialCheckbox)}),a.createElement("div",{className:"ms-4 ps-3"},a.createElement(m.U,{count:3})),a.createElement("div",{className:"ms-auto partial-loading-background ".concat(p.partialExportButton)})),a.createElement(b,null))}var v=n(31647),E=n(110),h={getCellStyle:function(e){return{width:e,flex:"".concat(e," 0 auto")}},getColumnCellWidth:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"std";switch(e){case"checkboxes":return 60;case"status":default:return"std"===t?200:100;case"id":return"std"===t?120:85;case"dateCreated":return"std"===t?220:180;case"submitterName":return"std"===t?200:180;case"actions":return"std"===t?200:80}},getColumnCellStyle:function(e,t){return h.getCellStyle(h.getColumnCellWidth(e,t))}},C=n(58739);const N={complete:"nAOdH",failed:"xkFpC",inProgress:"BjR3y",scheduled:"Ux2b9"};var S=c.T.encloseNamespace("rostering.syncJobsStatusBadge");function k(e){return a.createElement("div",{className:function(){var t="rounded-pill px-2 d-inline-flex align-items-center fw-semibold";switch(e.status){case C.K.Completed:case C.K.CompletedWithError:return"".concat(t," ").concat(N.complete);case C.K.Failed:return"".concat(t," ").concat(N.failed);case C.K.InProgress:case C.K.Pending:case C.K.Queued:case C.K.Submitted:return"".concat(t," ").concat(N.inProgress);case"scheduled":return"".concat(t," ").concat(N.scheduled)}}()},function(){switch(e.status){case C.K.Completed:case C.K.CompletedWithError:return S("complete");case C.K.Failed:return S("failed");case C.K.InProgress:case C.K.Pending:case C.K.Queued:case C.K.Submitted:return S("inProgress");case"scheduled":return S("scheduled")}}())}var x=n(83914),w=n(35223);const T={colored:"MLlUi",avatar:"Z1jn_",logoWrapper:"OAeff",cog:"I7V_R"};var I=c.T.encloseNamespace("rostering.scheduledSyncJobItem");function j(e){var t=e.size||"std";return a.createElement("div",{className:T.colored},a.createElement("div",{className:"px-4 py-3 d-flex align-items-center"},a.createElement("div",{style:h.getColumnCellStyle("checkboxes",t)}),a.createElement("div",{className:"px-2",style:h.getColumnCellStyle("id",t)}),a.createElement("div",{className:"px-2",style:h.getColumnCellStyle("dateCreated",t)},E.O.format(e.scheduledDate,"DD/MM/YYYY, hh:mmA")),a.createElement("div",{className:"px-2",style:h.getColumnCellStyle("status",t)},a.createElement(k,{status:"scheduled"})),a.createElement("div",{className:"px-2 d-flex align-items-center",style:h.getColumnCellStyle("submitterName",t)},a.createElement("div",{className:"".concat(T.cog," me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center")},a.createElement(x.x,{svgName:w.vn.Cog,className:"svg-container"})),I("performedBy")),a.createElement("div",{className:"cursor-pointer d-flex justify-content-end",style:h.getColumnCellStyle("actions",t)})))}var P=n(18549),O=n(56050),A=n(70848),L=n(97408),K=n(89965);const J={colored:"aU1VO",seeMore:"Nfc8Q"};function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var B=c.T.encloseNamespace("shared.bulkJobsAccordionItem");function F(e){var t,n,r=(t=a.useState(!!e.forceExpand&&e.forceExpand(e.job)),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(t,n)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?U(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=r[0],l=r[1],o=!!e.disableExpand&&e.disableExpand(e.job);return a.createElement("div",{className:"".concat(J.colored," ").concat(o?"":"cursor-pointer"),onClick:function(){o||l(function(e){return!e})}},a.createElement("div",{className:"p-4 d-flex align-items-center"},a.createElement("div",{style:h.getCellStyle(60),onClick:function(e){return e.stopPropagation()}},a.createElement(K.X,{id:e.job.id,checked:e.isChecked(e.job.id),onChange:function(){return e.onToggleCheckbox(e.job.id)}})),e.columns.map(function(t){var n=t.render,r=t.renderClassName,c=t.width,l=t.id;return a.createElement("div",{className:"".concat(null!=r?r:""),key:l,style:h.getCellStyle(c)},n(e.job))}),a.createElement("div",{className:"d-flex justify-content-end ".concat(o?"":"cursor-pointer"),style:h.getColumnCellStyle("actions",e.tableSize)},!o&&a.createElement("div",{className:"".concat(J.seeMore," text-info")},B(c?"seeLess":"seeMore")))),c&&a.createElement("div",{className:"bg-white ".concat(e.isLastOne?"":"border-bottom"," cursor-default"),onClick:function(e){return e.stopPropagation()}},e.jobDetailsComponent(e.job)))}var W=n(10638);function H(e){return a.createElement(W.J,{queryParams:e.queryParams,mainFilters:e.filters,appLink:e.appLink,analyticsOptions:e.analyticsOptions,hideHeading:!0,hideDivider:!0,constantIndices:[]})}var M=n(37395),R=n(2102),D=n(69883),V=n(299),G=n(75795);const Z={bulkCheckbox:"XeoQi"};function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var z="shared.bulkJobsAccordions",$=c.T.encloseNamespace(z);function _(e){var t,n,r,c=(n=a.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(n,r)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=c[0],o=c[1],i=(0,V.X)(e.jobs.data),u=(0,D.Z)();return a.createElement("div",{className:"".concat(e.containerClassName," pe-3")},a.createElement("div",{className:"d-flex align-items-center pb-2 mt-3"},a.createElement(K.X,{className:Z.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:i.bulkChecked,onChange:i.onToggleBulk,indeterminate:i.hasSomeSelections()}),a.createElement("div",{className:"ms-4"},a.createElement(H,{queryParams:e.queryParams,appLink:e.appLink,filters:e.filters})),a.createElement(R.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!l){o(!0);var t=i.getSelected();e.onClickExport(t).then(function(){return u.success($("exportSuccess"))}).catch(function(){return u.error($("exportError"))}).finally(function(){return o(!1)})}},disabled:!i.hasSomeSelections()||l,showSpinner:l},a.createElement(s.x,{namespace:z,phrase:"export"}))),a.createElement("div",{className:"d-flex no-wrap mb-2 fw-semibold px-4 py-2"},a.createElement("div",{style:h.getCellStyle(60)}),e.columns.map(function(e){var t=e.id,n=e.header,r=e.headerClassName,c=e.width;return a.createElement("div",{key:t,className:r,style:h.getCellStyle(c)},n)}),a.createElement("div",{style:h.getColumnCellStyle("actions",e.tableSize)})),!!e.pinnedComponent&&e.pinnedComponent(),!!e.jobs.data.length&&e.jobs.data.map(function(t,n){return a.createElement(F,{key:t.id,job:t,onToggleCheckbox:i.onToggleItem,isChecked:i.isChecked,jobDetailsComponent:e.jobDetailsComponent,onClickExport:e.onClickExport,imageCdnUrl:e.imageCdnUrl,onPollJob:e.onPollJob,columns:e.columns,forceExpand:e.forceExpand,disableExpand:e.disableExpand,tableSize:e.tableSize,isLastOne:n===e.jobs.data.length-1})}),!!(null===(t=e.jobs.pagination)||void 0===t?void 0:t.cursors)&&a.createElement(M.t,{className:"p-0 text-end pb-3 mt-3",cursors:e.jobs.pagination.cursors,appLink:G.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var Q=n(97392),Y=n(91693),X=n(80247),ee=n(14177);function te(e){return e.jobId?a.createElement("div",null,a.createElement("div",{className:"mb-4"},a.createElement(ee.$,{jobId:e.jobId,pollJob:e.onPollJob(e.jobId),onStatusCompleted:e.onCompleted,actionName:"Sync",actionVerb:"Update",progressVerbPhrase:c.T.getPhrase("rostering.syncJobPolling","progressVerb")}))):a.createElement("div",{className:"text-center"},a.createElement(X.Z,{as:"div",animation:"border",role:"status"}))}const ne={failed:"BSIaY",tag:"NOJhh"};function ae(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return re(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?re(e,t):void 0}}(e,t)||function(){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 re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var ce="rostering.syncJobSummary";function le(e){var t=ae(a.useState(null),2),n=t[0],r=t[1],c=ae(a.useState(!1),2),l=c[0],o=c[1];function i(e){var t="",r="";switch(e){case"staff":t="bg-navy",r=w.vn.Staff;break;case"learners":t="bg-blue",r=w.vn.GraduationCap;break;case"classrooms":t="bg-teal",r=w.vn.Classrooms}var c=Object.keys(n[e]).filter(function(e){return"totalProcessed"!==e&&"totalSucceeded"!==e});return a.createElement("div",{className:"col"},a.createElement("div",{className:"py-3 ps-2 pe-3 rounded border"},a.createElement("div",{className:"d-flex align-items-center px-2 mb-2"},a.createElement("div",{className:"".concat(t," ").concat(ne.badge," d-flex align-items-center rounded-circle text-white ps-0 me-2")},a.createElement(x.x,{className:"svg-container ".concat(ne.svg),size:x.S.Standard,svgName:r})),a.createElement(s.x,{namespace:ce,phrase:e})),a.createElement("ul",{className:"mb-0"},null==c?void 0:c.map(function(t){return a.createElement("li",{className:"mb-2",key:t},a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"rounded-pill me-2 px-2 d-inline-flex align-items-center fw-semibold ".concat("errored"===t?ne.failed:ne.tag)},n[e][t]),a.createElement(s.x,{namespace:ce,phrase:t})))}))))}return a.useEffect(function(){n||(o(!0),e.getJobSummary(e.job.id).then(function(e){r(e)}).finally(function(){o(!1)}))},[e.job.id]),a.createElement(a.Fragment,null,l&&!n&&a.createElement("div",{className:"text-center py-3"},a.createElement(X.Z,{as:"div",animation:"border",role:"status"})),!!n&&a.createElement("div",{className:"row gx-3 mt-2"},i("staff"),i("learners"),i("classrooms")))}var oe=c.T.encloseNamespace("rostering.syncJobDetails");function se(e){var t=e.job.status===C.K.Completed||e.job.status===C.K.CompletedWithError,n=(0,D.Z)();return a.createElement("div",{className:"py-3 px-4"},a.createElement("div",{className:"d-flex justify-content-between"},e.job.status!==C.K.InProgress&&a.createElement("h1",{className:"h4"},oe("heading")),t&&a.createElement(Y.h,{className:"btn btn-outline-dark fw-semibold",svgName:w.vn.Download,onClick:function(){e.onClickExport([e.job.id]).then(function(){n.success(oe("exportSuccess"))}).catch(function(){n.error(oe("exportError"))})}},oe("export"))),function(){switch(e.job.status){case C.K.InProgress:case C.K.Pending:case C.K.Queued:case C.K.Submitted:return a.createElement(te,{jobId:e.job.id,onCompleted:e.onCompleted,onPollJob:e.onPollJob});case C.K.Failed:return a.createElement(a.Fragment,null);case C.K.Completed:case C.K.CompletedWithError:return a.createElement(le,{job:e.job,getJobSummary:e.getJobSummary});default:return a.createElement(a.Fragment,null)}}())}var ie=n(86794),ue=n(36532),me=n(55171),de=n(64818);const pe={avatar:"B8miR",logoWrapper:"higtD",cog:"bNPxa"};var fe="rostering.syncJobsAccordion",ge=c.T.encloseNamespace(fe),be=[C.K.InProgress,C.K.Pending,C.K.Queued,C.K.Submitted];function ye(e){var t=[A.x$.SortBy([{id:"newest",name:c.T.getPhrase(fe,"newest"),default:!0},{id:"oldest",name:c.T.getPhrase(fe,"oldest")}]),A.x$.JobStatus()],n=[{id:"id",header:ge("syncFrom"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){var t,n=null===(t=e.metadata)||void 0===t?void 0:t.source;if(!n)return a.createElement(a.Fragment,null);var r=me.e.Rostering.sources[n];if(!r)throw new O.H("Unsupported rostering sync source, please add it to HardCoded rostering source");return a.createElement("div",{className:"bg-white rounded-circle border ".concat(pe.logoWrapper," d-flex align-items-center justify-content-center")},a.createElement(ue.u,{spanHack:!0,title:r.name},a.createElement("img",{src:r.iconUrl,alt:r.name})))},width:h.getColumnCellWidth("id",e.tableSize)},{id:"dateCreated",header:ge("date"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){return E.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA")},width:h.getColumnCellWidth("dateCreated",e.tableSize)},{id:"status",header:ge("status"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){return a.createElement(k,{status:e.status})},width:h.getColumnCellWidth("status",e.tableSize)},{id:"submitterName",header:ge("performedBy"),headerClassName:"px-2",renderClassName:"px-2",render:function(t){return function(e,t){return e.submittedByClickView?a.createElement("div",{className:"d-flex align-items-center"},a.createElement(ie.b,{className:"me-2 rounded-circle border",size:x.S.Large},a.createElement(Q.F,null)),e.submitterName):e.submitterName?a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"me-2 flex-shrink-0 ".concat(pe.avatar)},a.createElement(L.q,{imageCdnUrl:t.imageCdnUrl,initials:de.l.getInitials(e.submitterName.split(" ")[0],e.submitterName.split(" ")[1])})),e.submitterName):a.createElement("div",{className:"me-2 d-flex align-items-center"},a.createElement("div",{className:"".concat(pe.cog," me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center")},a.createElement(x.x,{svgName:w.vn.Cog,className:"svg-container"})),ge("scheduledSubmitter"))}(t,e)},width:h.getColumnCellWidth("submitterName",e.tableSize)}];return a.createElement(_,Object.assign({},e,{filters:t,jobDetailsComponent:function(t){return a.createElement(se,{job:t,getJobSummary:e.getJobSummary,onPollJob:e.onPollJob,onClickExport:e.onClickExport,onCompleted:e.onCompleted})},columns:n,forceExpand:function(e){return be.includes(e.status)},disableExpand:function(e){return e.status===C.K.Failed}}))}var ve=n(62394),Ee=n(16714),he=n(39151),Ce=n(44538),Ne=n(31949),Se=n(93322),ke=n(79612),xe=n(99742),we=n(14070),Te=n(97291),Ie=n(29613),je=n(81803),Pe="rostering.noSyncJobs",Oe=c.T.encloseNamespace(Pe);function Ae(e){return a.createElement(o.u,null,a.createElement(o.u.Image,{src:xe.W.EmptyStates.Rostering.NO_SYNC_JOBS}),a.createElement(o.u.Heading,null,a.createElement(s.x,{namespace:Pe,phrase:"emptyHeading"})),a.createElement(o.u.Info,{className:"w-50 mb-3"},a.createElement(s.x,{namespace:Pe,phrase:"emptyInfo"})),a.createElement(o.u.Cta,{className:"btn btn-dark",onClick:e.onStartFullSync,text:Oe("emptyCta")}))}var Le=n(52834),Ke=n(56736),Je=c.T.encloseNamespace("rostering.syncList");function Ue(e){var t,n=l.a.useBasicFetch(Ce.K.getSyncList(e.queryParams)),c=l.a.useBasicFetch(he.L.config()),o=l.a.useBasicFetch(Ne.N.currentUser()),s=l.a.useBasicFetch(Ce.K.getRostering()),i=l.a.useBasicFetch(o.data&&s.data&&Ce.K.getSyncScheduleSettings(s.data.id)),m=n.hasCompleted&&c.hasCompleted&&i.hasCompleted&&s.hasCompleted;(0,Se.F)();var d=l.a.useGetFetchAsync(),p=(0,r.I0)();function f(e){return d(Ce.K.getJobSummary(e))}function g(e){return function(t,n){return d(Ie.q.getJobProgress(e,t,n))}}function b(){p({type:l.a.Actions.INVALIDATE,keys:["rostering:sync"],request:null})}function E(e){return d(Ie.q.sendJobReports(e))}(0,ke.M)({title:Je("pageTitle")});var h=m&&"Active"===(null===(t=s.data)||void 0===t?void 0:t.status),C=(0,Ke.B)(o.data),N=C.syncNow,S=C.fullSync;return a.createElement(je.d,{heading:Je("heading"),breadcrumbs:[Je("breadcrumb")],headingButton:function(){return h?a.createElement(P.G,{onSyncNow:N,onFullSync:S}):a.createElement(a.Fragment,null)},requiredPermissions:Ee.C.Rostering},h&&a.createElement(v.E,{active:"syncJobs",appLinks:{syncJobs:{application:Te.O.SETTINGS,action:we.e.Settings.ROSTERING},settings:{application:Te.O.SETTINGS,action:we.e.Settings.ROSTERING_SETTINGS}}}),function(){var t;if("None"===(null===(t=s.data)||void 0===t?void 0:t.status))return a.createElement(Le.y,null);if(!m)return a.createElement(y,null);if(!n.data.data.length&&!e.queryParams)return a.createElement(Ae,{onStartFullSync:N});var r=ve.y.getScheduledJobBySetting(i.data);return a.createElement(a.Fragment,null,a.createElement(ye,{jobs:n.data,queryParams:e.queryParams,appLink:{application:Te.O.SETTINGS,action:we.e.Settings.ROSTERING},onClickExport:E,getJobSummary:f,imageCdnUrl:c.data.imageCdnUrl,onPollJob:g,onCompleted:b,pinnedComponent:r?function(){return a.createElement(j,{scheduledDate:r})}:null}),!n.data.data.length&&e.queryParams&&a.createElement(u,{imageCdnUrl:xe.W.EmptyStates.Rostering.EMPTY_RESULTS}))}())}},52834:(e,t,n)=>{n.d(t,{y:()=>u});var a=n(32735),r=n(97958),c=n(98461),l=n(83345),o=n(12778),s=n(99742),i="rostering.requiresSetUp";function u(){return a.createElement(r.u,null,a.createElement(r.u.Image,{src:s.W.EmptyStates.Rostering.REQUIRES_SET_UP}),a.createElement(r.u.Heading,null,a.createElement(l.x,{namespace:i,phrase:"emptyHeading"})),a.createElement(r.u.Info,{className:"w-50 mb-3"},a.createElement(l.x,{namespace:i,phrase:"emptyInfo"})),a.createElement(c.d,{className:"btn btn-dark",href:o.o.getSupportRequestUrl(),newTab:!0},a.createElement(l.x,{namespace:i,phrase:"button"})))}},56736:(e,t,n)=>{n.d(t,{B:()=>p});var a=n(60139),r=n(23481),c=n(20354),l=n(67651),o=n(72081),s=n(38389),i=n(4594),u=n(44538),m=n(69883),d=r.T.encloseNamespace("rostering.syncUtils"),p=function(e){var t=c.a.useGetFetchAsync(),n=(0,m.Z)();return e?{fullSync:function(){},syncNow:function(){var r={type:a.NK.Success,heading:d("startSyncAlertHeading"),message:d("startSyncAlertBody"),appLinkText:d("startSyncAlertAppLinkText"),appLinkClassName:"info-link"},c={name:o.g.Rostering,type:s.m.Rostering,metadata:{targetMasterId:e.customerId,targetMasterType:i.E.Customer},customerId:e.customerId,dataType:l.B.Learner};t(u.K.createJob(c,function(){n.success(r)},function(){n.error(d("error"))}))}}:{syncNow:function(){},fullSync:function(){}}}},22771:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}},79447:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(95685),r=n.n(a),c=n(32735),l=n(46304),o=n(58661),s=n(74512);function i(e,t,n){const a=(e-t)/(n-t)*100;return Math.round(1e3*a)/1e3}function u({min:e,now:t,max:n,label:a,visuallyHidden:c,striped:l,animated:o,className:u,style:m,variant:d,bsPrefix:p,...f},g){return(0,s.jsx)("div",{ref:g,...f,role:"progressbar",className:r()(u,`${p}-bar`,{[`bg-${d}`]:d,[`${p}-bar-animated`]:o,[`${p}-bar-striped`]:o||l}),style:{width:`${i(t,e,n)}%`,...m},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:c?(0,s.jsx)("span",{className:"visually-hidden",children:a}):a})}const m=c.forwardRef(({isChild:e=!1,...t},n)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(a.bsPrefix=(0,l.vE)(a.bsPrefix,"progress"),e)return u(a,n);const{min:i,now:m,max:d,label:p,visuallyHidden:f,striped:g,animated:b,bsPrefix:y,variant:v,className:E,children:h,...C}=a;return(0,s.jsx)("div",{ref:n,...C,className:r()(E,y),children:h?(0,o.UI)(h,e=>(0,c.cloneElement)(e,{isChild:!0})):u({min:i,now:m,max:d,label:p,visuallyHidden:f,striped:g,animated:b,bsPrefix:y,variant:v},n)})});m.displayName="ProgressBar";const d=m}}]);
2
+ //# sourceMappingURL=4365-1078b87185-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/4365-1078b87185-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/components/rostering/rostering-header/RosteringSettingHeader.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-action-button-group/sync-action-button-group.scss","file:///app/packages/libs/shared/src/components/rostering/sync-action-button-group/SyncActionButtonGroup.tsx","file:///app/packages/libs/shared/src/components/rostering/utils/RosteringHelper.ts","file:///app/packages/libs/shared/src/components/tags/PartialTagItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/tag-widget-item/TagWidgetItem.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/in-progress/WizardInProgress.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/submitted/WizardSubmitted.tsx","file:///app/packages/libs/shared/src/components/wizard/status/polling/WizardPolling.tsx","file:///app/packages/libs/shared/src/flight-requests/RosteringRequests.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/libs/shared/src/hooks/useLockContentWidth.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/libs/shared/src/components/rostering/no-results-empty-state/NoResultsEmptyState.tsx","file:///app/packages/libs/shared/src/components/rostering/partial-loading/partial-sync-jobs-list.scss","file:///app/packages/libs/shared/src/components/rostering/partial-loading/PartialSyncJobsTable.tsx","file:///app/packages/libs/shared/src/components/rostering/partial-loading/PartialSyncJobsList.tsx","file:///app/packages/libs/shared/src/components/bulk-job-accordion/BulkJobsAccordionHelper.ts","file:///app/packages/libs/shared/src/components/rostering/sync-status-badge/sync-status-badge.scss","file:///app/packages/libs/shared/src/components/rostering/sync-status-badge/SyncStatusBadge.tsx","file:///app/packages/libs/shared/src/components/rostering/scheduled-sync-job-item/scheduled-sync-job-item.scss","file:///app/packages/libs/shared/src/components/rostering/scheduled-sync-job-item/ScheduledSyncJobItem.tsx","file:///app/packages/libs/shared/src/components/bulk-job-accordion/bulk-jobs-accordion-item/bulk-jobs-accordion-item.scss","file:///app/packages/libs/shared/src/components/bulk-job-accordion/bulk-jobs-accordion-item/BulkJobsAccordionItem.tsx","file:///app/packages/libs/shared/src/components/bulk-jobs-filters/BulkJobsFilters.tsx","file:///app/packages/libs/shared/src/components/bulk-job-accordion/bulk-jobs-accordion.scss","file:///app/packages/libs/shared/src/components/bulk-job-accordion/BulkJobsAccordion.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-job-polling/SyncJobPolling.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-job-summary/sync-job-summary.scss","file:///app/packages/libs/shared/src/components/rostering/sync-job-summary/SyncJobSummary.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-job-details/SyncJobDetails.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-jobs-accordion/sync-jobs-accordion.scss","file:///app/packages/libs/shared/src/components/rostering/sync-jobs-accordion/SyncJobsAccordion.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/no-sync-jobs-empty-state/NoSyncJobsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/RosteringSyncListView.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/requires-set-up-empty-state/RequiresSetUpEmptyState.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/utils/useSyncRostering.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import * as React from 'react';\n\nimport styles from './search-filters.scss';\n\ninterface PartialSearchFiltersProps {\n count?: number;\n}\n\nexport function PartialSearchFilters({ count = 6 }: PartialSearchFiltersProps): JSX.Element {\n return (\n <div className='d-flex'>\n <div className='d-flex ps-1'>\n {Array(count).fill(null).map((item, index) => (\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\n ))}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nconst namespace = 'rostering.settingHeader';\n\nexport interface RosteringSettingHeaderAppLinks {\n syncJobs: Core.AppLink;\n settings: Core.AppLink;\n}\n\ninterface RosteringSettingHeaderProps {\n appLinks?: RosteringSettingHeaderAppLinks;\n active: keyof RosteringSettingHeaderAppLinks;\n className?: string;\n}\n\nexport function RosteringSettingHeader(props: RosteringSettingHeaderProps): JSX.Element {\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'syncJobs'),\n appLink: props.appLinks?.syncJobs,\n active: props.active === 'syncJobs'\n \n }, {\n name: LanguageService.getPhrase(namespace, 'settings'),\n appLink: props.appLinks?.settings,\n active: props.active === 'settings'\n \n }];\n\n return (\n <div className={props.className}>\n <PillTabSelector tabs={tabs} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"rightButton\":\"GcqRT\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nimport styles from './sync-action-button-group.scss';\n\nconst namespace = 'rostering.syncActionButtonGroup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncActionButtonGroupProps {\n onSyncNow?: () => void;\n onFullSync?: () => void;\n}\n\nexport function SyncActionButtonGroup(props: SyncActionButtonGroupProps): JSX.Element {\n return (\n <div className='btn-group px-2' role='group'>\n <Tooltip title={getPhrase('syncNowTooltip')} spanHack placement='left' spanHackClassName={styles.buttonBorder}>\n <button type='button' className={`btn btn-outline-dark ${styles.leftButton}`} onClick={props?.onSyncNow}>{getPhrase('syncNow')}</button>\n </Tooltip>\n {/* todo hide the dropdown for v1 */}\n {/* <button type='button' className={`btn dropdown-toggle btn-outline-dark ${styles.rightButton}`} data-bs-toggle='dropdown'>\n </button>\n <div className='dropdown-menu'>\n <Tooltip title={getPhrase('fullSyncTooltip')} spanHack placement='left' >\n <div className='dropdown-item cursor-pointer' onClick={props?.onFullSync}>{getPhrase('fullSync')}</div>\n </Tooltip>\n </div> */}\n </div>\n );\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { IScheduleSetting } from 'libs/shared/components/rostering/settings/schedule-setting/ScheduleSetting';\nimport { ScheduleSettingResponse } from 'libs/shared/interfaces';\nimport { FullRosterSyncSchedule, ScheduleSettingRequest } from 'libs/shared/interfaces';\n\nconst now = new Date();\n\nexport const RosteringHelper = {\n parseUTCToLocal(\n {\n utcHour,\n utcWeekdays,\n utcMinute = 0\n }: {\n utcHour: number,\n utcWeekdays: number[],\n utcMinute: number\n }\n ) {\n const local = utcWeekdays.map(weekday => DateHelper.buildLocalDateFromUTC(weekday, utcHour, utcMinute));\n\n const localWeekdays = local.map(w => w.getDay());\n const localHour = DateHelper.format(ArrayHelper.first(local), 'HH');\n return { hour: +localHour, daysOfWeek: localWeekdays, minute: utcMinute };\n },\n\n // calculating next scheduled job by schedule setting\n getScheduledJobBySetting (setting: ScheduleSettingResponse): Date | null {\n if (!setting || !setting.fullSyncSchedule || !setting.fullSyncSchedule.enabled)\n return null;\n\n const schedule = RosteringHelper.parseUTCToLocal({\n utcHour: setting.fullSyncSchedule.hour,\n utcWeekdays: setting.fullSyncSchedule.daysOfWeek,\n utcMinute: setting.fullSyncSchedule.minute\n });\n const scheduledDate = new Date();\n const weekdayOfToday = now.getDay();\n\n const scheduledWeekday = schedule.daysOfWeek.sort((a, b) => a - b);\n const scheduledToday = schedule.daysOfWeek.includes(weekdayOfToday);\n const hour = schedule.hour;\n const minute = schedule?.minute ?? 0;\n\n if (scheduledToday) {\n scheduledDate.setHours(hour, minute, 0, 0);\n if (now < scheduledDate) {\n return scheduledDate;\n }\n }\n\n const nextScheduledDate = new Date();\n let nextScheduledWeekday = scheduledWeekday.find(d => d > weekdayOfToday);\n if (!nextScheduledWeekday) {\n // cannot find next scheduled date in the current week, must be next week\n nextScheduledWeekday = scheduledWeekday[0];\n }\n // use absolute value of gap to make sure next scheduled date is in the futrue\n const gap = Math.abs(nextScheduledWeekday - weekdayOfToday);\n nextScheduledDate.setDate(now.getDate() + gap);\n nextScheduledDate.setHours(hour, 0, 0, 0);\n return nextScheduledDate;\n },\n\n parseFormToPayload(val: IScheduleSetting): Omit<ScheduleSettingRequest, 'userId'|'customerId'> {\n const utc = RosteringHelper.parseLocalToUTC({ hour: val.startAt, weekdays: val.daysOfWeek, minute: 0 });\n\n return {\n fullSyncSchedule: {\n daysOfWeek: val.repeat === 'daily' ? [ 0, 1, 2, 3, 4, 5, 6 ] : utc.daysOfWeek,\n hour: utc.hour,\n minute: utc.minute,\n enabled: val.enabled\n }\n };\n },\n\n parseValueToForm(schedule: FullRosterSyncSchedule): IScheduleSetting {\n const { hour, daysOfWeek } = RosteringHelper.parseUTCToLocal({\n utcHour: schedule.hour,\n utcWeekdays: schedule.daysOfWeek,\n utcMinute: schedule.minute\n });\n\n return {\n startAt: hour,\n daysOfWeek: daysOfWeek,\n repeat: schedule.daysOfWeek.length === 7 ? 'daily' : 'weekly',\n enabled: schedule.enabled\n };\n },\n\n parseLocalToUTC(\n {\n hour,\n weekdays,\n minute\n }: {\n hour: number,\n weekdays: number[],\n minute: number\n}\n ): Omit<FullRosterSyncSchedule, 'enabled'> {\n const utc = weekdays.map(weekday => DateHelper.buildUTCDate(weekday, hour, minute));\n const utcHour = DateHelper.format(ArrayHelper.first(utc), 'HH');\n const utcWeekday = utc.map(w => w.getDay());\n const utcMinute = DateHelper.format(ArrayHelper.first(utc), 'mm');\n\n return { hour: +utcHour, daysOfWeek: utcWeekday, minute: +utcMinute };\n }\n};","import React from 'react';\n\nimport styles from './tags.scss';\n\ninterface PartialTagItemProps {\n tagClass?: string;\n}\n\nexport const PartialTagItem = React.memo(function({ tagClass = '' }: PartialTagItemProps): JSX.Element {\n const classNames = `partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ${tagClass} ${styles.partialTag}`;\n\n return (\n <div className='mt-1'>\n <span className={classNames}>&nbsp;</span>\n </div>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { FilterOption } from 'libs/shared/apps/search/interfaces';\nimport { TagItem } from 'libs/shared/components/tags/TagItem';\nimport { BaseObject, Tag } from 'libs/shared/interfaces';\n\nexport interface TagWidgetItemProps {\n appLink: Core.AppLink;\n data: Tag;\n selectedItems?: BaseObject[];\n onClick?: (data: Tag | FilterOption) => void;\n}\n\nexport function TagWidgetItem(props: TagWidgetItemProps): JSX.Element {\n const isSelected = props.selectedItems.find(selection => selection.id === props.data.id);\n\n const colorClass = isSelected ? `bg-gray-900 text-white` : 'bg-light';\n\n return (\n <TagItem\n tag={props.data}\n appLink={props.appLink}\n tagClass={`no-decoration ${colorClass} lh-1`}\n onClick={() => props.onClick(props.data)}\n />\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardInProgress';\n\ninterface WizardInProgressProps {\n userType?: UserGroup;\n totalItems: number;\n totalItemsComplete: number;\n actionName: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardInProgress(props: WizardInProgressProps): JSX.Element {\n const percentage = Math.floor(props.totalItemsComplete / props.totalItems * 100) || 0;\n\n function renderProgressText() {\n if (props.objectType === MasterType.User && props.userType) {\n return (\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n if (props.objectType === MasterType.Video) {\n return (\n <Text\n namespace={namespace}\n phrase='progressVideos'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <Text\n namespace={namespace}\n phrase='progressItems'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n <Text namespace={namespace} phrase='heading' options={{ percentage, actionName: props.actionName }} />\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CheckCircle} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1'>\n <span className='text-info'>\n {props.progressVerbPhrase ? (\n <span>{props.progressVerbPhrase}</span>\n ) : (\n <Text namespace={namespace} phrase={`progressVerb${props.actionVerb}`} />\n )}\n </span>\n &nbsp;\n {renderProgressText()}\n </p>\n <ProgressBar variant='info' now={percentage} />\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardSubmitted';\n\ninterface WizardSubmittedProps {\n actionName?: string;\n actionVerb: WizardActionVerb;\n}\n\nexport function WizardSubmitted(props: WizardSubmittedProps): JSX.Element {\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n {props.actionName\n ? <Text namespace={namespace} phrase='heading' options={{ actionName: props.actionName }} />\n : <Text namespace={namespace} phrase='headingGeneric' />\n }\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CheckCircle} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1 text-info'>\n <Text namespace={namespace} phrase='preparing' />\n </p>\n <ProgressBar variant='info' now={0} />\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WizardInProgress } from 'libs/shared/components/wizard/status/statuses/in-progress/WizardInProgress';\nimport { WizardSubmitted } from 'libs/shared/components/wizard/status/statuses/submitted/WizardSubmitted';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BatchJobProgress, WizardActionVerb } from 'libs/shared/interfaces';\n\nconst POLLING_INTERVAL = 2000;\nconst MAX_CONSECUTIVE_ERROR_COUNT = 3; // If the polling endpoint errors 3 times in a row, we will cancel\n\nexport type WizardPollJobFn = (onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) => void;\n\ninterface WizardPollingProps {\n jobId: string;\n userType?: UserGroup;\n statusCompleteAppLink?: Core.AppLink;\n onStatusCompleted?: () => void;\n pollJob: WizardPollJobFn;\n actionName: string;\n navLockId?: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardPolling(props: WizardPollingProps): JSX.Element {\n const [ progress, setProgress ] = React.useState<BatchJobProgress>(null);\n const [ consecutiveErrorCount, setConsecutiveErrorCount ] = React.useState(0);\n\n const timeoutIdRef = React.useRef<number>(null);\n\n const navLock = useNavLock();\n const dispatch = useDispatch();\n\n // Kick off polling for the running batch job. Polling will be stopped if user navigates away.\n React.useEffect(() => {\n pollJob();\n\n return () => {\n if (!timeoutIdRef.current)\n return;\n\n window.clearTimeout(timeoutIdRef.current);\n };\n }, []);\n\n function pollJob(): void {\n props.pollJob(onPollSuccess, onPollError);\n }\n\n function onPollSuccess(currentProgress: BatchJobProgress): void {\n setProgress(currentProgress);\n\n // Job is considered completed if status matches any of the following values\n const jobHasCompleted = (\n currentProgress.status === BatchJobStatus.Completed ||\n currentProgress.status === BatchJobStatus.CompletedWithError ||\n currentProgress.status === BatchJobStatus.Failed\n );\n\n if (!jobHasCompleted) {\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n return;\n }\n\n /**\n * When the job progress is 100%, we want to provide 2 seconds for the\n * progress bar animation to complete before navigating to the \"complete\"\n * view. Otherwise it's a little bit jarring.\n */\n window.setTimeout(() => {\n onCompleteJob();\n }, 2000);\n }\n\n function onPollError(xhr: Xhr): void {\n if (consecutiveErrorCount === MAX_CONSECUTIVE_ERROR_COUNT) {\n window.clearTimeout(timeoutIdRef.current);\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n handleHttpError(xhr);\n }\n\n setConsecutiveErrorCount(currentVal => currentVal + 1);\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n }\n\n function onCompleteJob(): void {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n\n const params: HashObject = { jobId: props.jobId };\n\n if (props.userType) {\n params.userType = props.userType;\n\n // Clear all user's in flight cache. This way any users updated in bulk actions will have up to date data.\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: [ 'school:users', 'user:count', 'search:aggregation', 'search:users' ],\n request: null\n });\n }\n if (props.statusCompleteAppLink) {\n Core.AppLinkHelper.trigger({\n ...props.statusCompleteAppLink,\n params: params\n });\n return;\n }\n\n props.onStatusCompleted?.();\n }\n\n const hasNotStarted = !!(\n !progress ||\n progress.status === BatchJobStatus.Submitted ||\n progress.status === BatchJobStatus.Queued ||\n progress.status === BatchJobStatus.Pending\n );\n\n if (hasNotStarted || progress.totalItems === 0)\n return <WizardSubmitted actionName={props.actionName} actionVerb={props.actionVerb} />;\n\n return (\n <WizardInProgress\n totalItems={progress.totalItems}\n totalItemsComplete={progress.processedItems}\n userType={props.userType}\n objectType={props.objectType}\n actionName={props.actionName}\n actionVerb={props.actionVerb}\n progressVerbPhrase={props.progressVerbPhrase}\n />\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { BatchJob, ScheduleSettingRequest } from 'libs/shared/interfaces';\nimport { CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const RosteringRequests = {\n getRostering(): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/rostering`,\n key: `rostering`\n };\n },\n\n getSyncList(queryParams: BulkJobsQueryParams): Flight.Request {\n const params: HashObject = {};\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.jobStatus) {\n const statuses = [];\n if (queryParams.jobStatus.includes('completed')) {\n statuses.push(...[ BatchJobStatus.Completed, BatchJobStatus.CompletedWithError ]);\n }\n if (queryParams.jobStatus.includes('failed')) {\n statuses.push(BatchJobStatus.Failed);\n }\n if (queryParams.jobStatus.includes('inProgress')) {\n statuses.push(...[\n BatchJobStatus.Submitted,\n BatchJobStatus.Queued,\n BatchJobStatus.Pending,\n BatchJobStatus.InProgress ]);\n }\n params.status = statuses;\n }\n\n params.type = BatchJobType.Rostering;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `rostering:sync:${queryParams.cursor}:${queryParams.sort}:${queryParams.jobStatus}`\n };\n },\n\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'rostering:sync',\n type: HttpVerbs.POST,\n invalidationKeys: ['rostering:sync'],\n data,\n success,\n error\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n },\n\n getSyncScheduleSettings(integrationId: string): Flight.SimulatedRequest {\n return {\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `sync-settings:${integrationId}`\n };\n },\n\n updateScheduleSetting(\n data: ScheduleSettingRequest,\n integrationId: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n type: HttpVerbs.PUT,\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `update:sync-settings:${data.customerId}:${integrationId}`,\n invalidationKeys: [`sync-settings:${integrationId}`],\n data,\n success,\n error,\n always\n };\n }\n};","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","import React from 'react';\n\nimport { LayoutHelper } from 'libs/shared/utils/LayoutHelper';\n\nexport function useLockContentWidth(): void {\n React.useEffect(() => {\n LayoutHelper.lockContentWidth();\n return () => LayoutHelper.unlockContentWidth();\n }, []);\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","\nimport React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'rostering.noResults';\n\ninterface NoResultsEmptyStateProps {\n imageCdnUrl: string;\n}\n\nexport function NoResultsEmptyState(props: NoResultsEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageCdnUrl} />\n <EmptyState.Heading><Text namespace={namespace} phrase='emptyHeading' /></EmptyState.Heading>\n <EmptyState.Info className='w-50 mb-1'><Text namespace={namespace} phrase='emptyInfo' /></EmptyState.Info>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"MwUCZ\",\"partialJobCount\":\"MUELm\",\"partialCheckbox\":\"dShe9\",\"partialExportButton\":\"VL4Tq\",\"row\":\"z_hGc\",\"checkboxColumn\":\"IacDe\",\"actionColumn\":\"_JoZe\",\"usersColumn\":\"BtHPO\",\"dateColumn\":\"jpr0N\",\"performedByColumn\":\"XP4Lf\",\"seeMoreColumn\":\"A8_Nf\",\"heading\":\"uThGf\",\"action\":\"PFOGb\",\"users\":\"pXZx8\",\"date\":\"VWS_a\",\"performedBy\":\"vZeC9\"};","import React from 'react';\n\nimport styles from './partial-sync-jobs-list.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded py-3 ${styles.row}`}>\n <div className={`${styles.checkboxColumn} d-flex justify-content-center`}>\n <div className={`partial-loading-background ${styles.partialCheckbox} ms-0`} />\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.action}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.users}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.performedBy}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex py-2 mb-1'>\n <div className={`${styles.checkboxColumn}`}>\n &nbsp;\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n &nbsp;\n </div>\n </div>\n );\n}\n\nexport function PartialSyncJobsTable(): JSX.Element {\n return (\n <>\n <div className='mb-3 mt-n1'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { PartialSearchFilters } from 'libs/shared/apps/search/components/search-filters/PartialSearchFilters';\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\n\nimport { PartialSyncJobsTable } from './PartialSyncJobsTable';\n\nimport styles from './partial-sync-jobs-list.scss';\n\nexport function PartialSyncJobsList(): JSX.Element {\n return (\n <>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <PartialBreadcrumbs />\n\n <div className={`partial-loading-background ${styles.partialJobCount}`} />\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <div className={`partial-loading-background ${styles.partialCheckbox}`} />\n\n <div className='ms-4 ps-3'>\n <PartialSearchFilters count={3} />\n </div>\n\n <div className={`ms-auto partial-loading-background ${styles.partialExportButton}`} />\n </div>\n\n <PartialSyncJobsTable />\n </>\n );\n}","import { BulkJobsAccordionColumn, BulkJobsAccordionTableSize } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordion';\n\ntype BulkJobsTableColumn = BulkJobsAccordionColumn['id'] | 'actions';\n\nexport const BulkJobAccordionHelper = {\n getCellStyle(width: number) {\n return { width, flex: `${width} 0 auto` };\n },\n\n getColumnCellWidth(column: BulkJobsTableColumn, size: BulkJobsAccordionTableSize = 'std'): number {\n switch (column) {\n case 'checkboxes':\n return 60;\n case 'status':\n return size === 'std' ? 200 : 100;\n case 'id':\n return size === 'std' ? 120 : 85;\n case 'dateCreated':\n return size === 'std' ? 220 : 180;\n case 'submitterName':\n return size === 'std' ? 200 : 180;\n case 'actions':\n return size === 'std' ? 200 : 80;\n default:\n return size === 'std' ? 200 : 100;\n }\n },\n\n getColumnCellStyle(column: BulkJobsTableColumn, size: BulkJobsAccordionTableSize) {\n return BulkJobAccordionHelper.getCellStyle(BulkJobAccordionHelper.getColumnCellWidth(column, size));\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"complete\":\"nAOdH\",\"failed\":\"xkFpC\",\"inProgress\":\"BjR3y\",\"scheduled\":\"Ux2b9\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\n\nimport styles from './sync-status-badge.scss';\n\nconst namespace = 'rostering.syncJobsStatusBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncStatusBadgeProps {\n status: BatchJobStatus | 'scheduled';\n}\n\nexport function SyncStatusBadge(props: SyncStatusBadgeProps): JSX.Element {\n function getClassName(): string {\n const baseClass = 'rounded-pill px-2 d-inline-flex align-items-center fw-semibold';\n\n switch (props.status) {\n case BatchJobStatus.Completed:\n case BatchJobStatus.CompletedWithError:\n return `${baseClass} ${styles.complete}`;\n case BatchJobStatus.Failed:\n return `${baseClass} ${styles.failed}`;\n case BatchJobStatus.InProgress:\n case BatchJobStatus.Pending:\n case BatchJobStatus.Queued:\n case BatchJobStatus.Submitted:\n return `${baseClass} ${styles.inProgress}`;\n case 'scheduled':\n return `${baseClass} ${styles.scheduled}`;\n }\n }\n\n function getName(): string {\n switch (props.status) {\n case BatchJobStatus.Completed:\n case BatchJobStatus.CompletedWithError:\n return getPhrase('complete');\n case BatchJobStatus.Failed:\n return getPhrase('failed');\n case BatchJobStatus.InProgress:\n case BatchJobStatus.Pending:\n case BatchJobStatus.Queued:\n case BatchJobStatus.Submitted:\n return getPhrase('inProgress');\n case 'scheduled':\n return getPhrase('scheduled');\n }\n }\n\n return (\n <div className={getClassName()}>\n {getName()}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"colored\":\"MLlUi\",\"avatar\":\"Z1jn_\",\"logoWrapper\":\"OAeff\",\"cog\":\"I7V_R\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { BulkJobsAccordionTableSize } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordion';\nimport { BulkJobAccordionHelper } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordionHelper';\nimport { SyncStatusBadge } from 'libs/shared/components/rostering/sync-status-badge/SyncStatusBadge';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './scheduled-sync-job-item.scss';\n\n\nconst namespace = 'rostering.scheduledSyncJobItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobsAccordionItemProps {\n scheduledDate: Date;\n size?: BulkJobsAccordionTableSize;\n}\n\nexport function ScheduledSyncJobItem(props: SyncJobsAccordionItemProps): JSX.Element {\n const size = props.size || 'std';\n return (\n <div className={styles.colored}>\n <div className='px-4 py-3 d-flex align-items-center'>\n {/* no checkbox for scheduled job but need a placeholder for styling */}\n <div style={BulkJobAccordionHelper.getColumnCellStyle('checkboxes', size)}></div>\n\n <div className='px-2' style={BulkJobAccordionHelper.getColumnCellStyle('id', size)}>\n {/* scheduled job don't have source logo, we keep it as placeholder*/}\n </div>\n\n <div className='px-2' style={BulkJobAccordionHelper.getColumnCellStyle('dateCreated', size)}>{DateHelper.format(props.scheduledDate, 'DD/MM/YYYY, hh:mmA')}</div>\n\n <div className='px-2' style={BulkJobAccordionHelper.getColumnCellStyle('status', size)}><SyncStatusBadge status='scheduled' /></div>\n\n <div className='px-2 d-flex align-items-center' style={BulkJobAccordionHelper.getColumnCellStyle('submitterName', size)}>\n <div className={`${styles.cog} me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center`}>\n <SvgContainer\n svgName={cvSvgLibrary.Cog}\n className='svg-container'\n />\n </div>\n {getPhrase('performedBy')}\n </div>\n\n <div className={`cursor-pointer d-flex justify-content-end`} style={BulkJobAccordionHelper.getColumnCellStyle('actions', size)}></div>\n\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"colored\":\"aU1VO\",\"seeMore\":\"Nfc8Q\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BulkJobsAccordionColumn, BulkJobsAccordionTableSize } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordion';\nimport { BulkJobAccordionHelper } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordionHelper';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { BatchJob } from 'libs/shared/interfaces';\n\nimport styles from './bulk-jobs-accordion-item.scss';\n\nconst namespace = 'shared.bulkJobsAccordionItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobsAccordionItemProps {\n job: BatchJob;\n onToggleCheckbox: (id: string) => void;\n isChecked: (id: string) => boolean;\n jobDetailsComponent: (job: BatchJob) => JSX.Element;\n onClickExport: (ids: string[]) => Promise<void>;\n imageCdnUrl: string;\n onPollJob?: (id: string) => WizardPollJobFn;\n columns: BulkJobsAccordionColumn[];\n forceExpand?: (job: BatchJob) => boolean;\n disableExpand?: (job: BatchJob) => boolean;\n isLastOne?: boolean;\n tableSize?: BulkJobsAccordionTableSize;\n}\n\nexport function BulkJobsAccordionItem(props: SyncJobsAccordionItemProps): JSX.Element {\n const [ isExpanded, setIsExpanded ] = React.useState(props.forceExpand ? props.forceExpand(props.job) : false);\n const isDisabled = props.disableExpand ? props.disableExpand(props.job) : false;\n\n function onClick() {\n if (isDisabled)\n return;\n setIsExpanded(s => !s);\n }\n\n return (\n <div className={`${styles.colored} ${isDisabled ? '' : 'cursor-pointer'}`} onClick={onClick}>\n <div className='p-4 d-flex align-items-center'>\n <div style={BulkJobAccordionHelper.getCellStyle(60)} onClick={e => e.stopPropagation()}>\n <Checkbox\n id={props.job.id}\n checked={props.isChecked(props.job.id)}\n onChange={() => props.onToggleCheckbox(props.job.id)}\n />\n </div>\n \n {props.columns.map(({ render, renderClassName, width, id }) => (\n <div className={`${renderClassName ?? ''}`} key={id} style={BulkJobAccordionHelper.getCellStyle(width)}>{render(props.job)}</div>\n ))}\n \n <div className={`d-flex justify-content-end ${isDisabled ? '' : 'cursor-pointer'}`} style={BulkJobAccordionHelper.getColumnCellStyle('actions', props.tableSize)}>\n {!isDisabled && (<div className={`${styles.seeMore} text-info`}>\n {isExpanded ? getPhrase('seeLess') : getPhrase('seeMore')}\n </div>\n )}\n </div>\n </div>\n \n {isExpanded && (\n <div className={`bg-white ${props.isLastOne ? '' : 'border-bottom'} cursor-default`} onClick={e => e.stopPropagation()}>\n {props.jobDetailsComponent(props.job)}\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nexport interface BulkJobsQueryParams {\n cursor: string;\n userType?: UserGroup | UserGroup[];\n bulkActionType?: BatchJobType | BatchJobType[];\n sort: 'newest' | 'oldest';\n jobStatus?: string[];\n}\n\ninterface BulkJobsFiltersProps {\n queryParams: BulkJobsQueryParams;\n appLink: Core.AppLink;\n filters: SearchFilter[];\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function BulkJobsFilters(props: BulkJobsFiltersProps): JSX.Element {\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={props.filters}\n appLink={props.appLink}\n analyticsOptions={props.analyticsOptions}\n hideHeading\n hideDivider\n constantIndices={[]}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bulkCheckbox\":\"XeoQi\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { BulkJobsAccordionItem } from 'libs/shared/components/bulk-job-accordion/bulk-jobs-accordion-item/BulkJobsAccordionItem';\nimport { BulkJobAccordionHelper } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordionHelper';\nimport { BulkJobsFilters, BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { BatchJob, BatchJobCollection } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport styles from './bulk-jobs-accordion.scss';\n\nconst namespace = 'shared.bulkJobsAccordions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface BulkJobsAccordionColumn {\n id: keyof BatchJob | 'checkboxes';\n header: string;\n headerClassName?: string;\n render: (val: BatchJob) => JSX.Element | string;\n renderClassName?: string;\n width: number;\n}\n\nexport type BulkJobsAccordionTableSize = 'std' | 'sm';\n\ninterface BulkJobsAccordionProps {\n jobs: BatchJobCollection;\n queryParams: BulkJobsQueryParams;\n appLink: Core.AppLink;\n onClickExport: (ids: string[]) => Promise<void>;\n jobDetailsComponent: (job: BatchJob) => JSX.Element;\n pinnedComponent?: () => JSX.Element;\n imageCdnUrl: string;\n onPollJob?: (id: string) => WizardPollJobFn;\n columns: BulkJobsAccordionColumn[];\n filters: SearchFilter[];\n forceExpand?: (job: BatchJob) => boolean;\n disableExpand?: (job: BatchJob) => boolean;\n containerClassName?: string;\n tableSize?: BulkJobsAccordionTableSize;\n}\n\nexport function BulkJobsAccordion(props: BulkJobsAccordionProps): JSX.Element {\n const [ showExportSpinner, setShowExportSpinner ] = React.useState(false);\n \n const CheckboxHelper = useBulkCheckboxManager(props.jobs.data);\n const alerts = useAlerts();\n\n function onClickExport(): void {\n if (showExportSpinner)\n return;\n\n setShowExportSpinner(true);\n\n const selectedIds = CheckboxHelper.getSelected();\n\n props.onClickExport(selectedIds)\n .then(() => alerts.success(getPhrase('exportSuccess')))\n .catch(() => alerts.error(getPhrase('exportError')))\n .finally(() => setShowExportSpinner(false));\n }\n\n return (\n <div className={`${props.containerClassName} pe-3`}>\n <div className='d-flex align-items-center pb-2 mt-3'>\n {/* bulk checkbox */}\n <Checkbox\n className={styles.bulkCheckbox}\n id='bulk-audit-log-checkbox'\n checked={CheckboxHelper.bulkChecked}\n onChange={CheckboxHelper.onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n\n <div className='ms-4'>\n <BulkJobsFilters\n queryParams={props.queryParams}\n appLink={props.appLink}\n filters={props.filters}\n />\n </div>\n\n <SpinnerButton\n variant='dark'\n className='ms-auto'\n onClick={onClickExport}\n disabled={!CheckboxHelper.hasSomeSelections() || showExportSpinner}\n showSpinner={showExportSpinner}\n >\n <Text namespace={namespace} phrase='export' />\n </SpinnerButton>\n </div>\n \n {/* table columns header */}\n <div className='d-flex no-wrap mb-2 fw-semibold px-4 py-2'>\n <div style={BulkJobAccordionHelper.getCellStyle(60)}></div>\n {props.columns.map(({ id, header, headerClassName, width }) => (\n <div key={id} className={headerClassName} style={BulkJobAccordionHelper.getCellStyle(width)}>{header}</div>\n ))}\n {/* placeholder column header for see-more action */}\n <div style={BulkJobAccordionHelper.getColumnCellStyle('actions', props.tableSize)}></div>\n </div>\n\n {/* table content*/}\n {/* pinned content at the top if has*/}\n {!!props.pinnedComponent && props.pinnedComponent()}\n\n {/* main content */}\n {!!props.jobs.data.length && props.jobs.data.map((job, idx) => {\n return (\n <BulkJobsAccordionItem\n key={job.id}\n job={job}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n isChecked={CheckboxHelper.isChecked}\n jobDetailsComponent={props.jobDetailsComponent}\n onClickExport={props.onClickExport}\n imageCdnUrl={props.imageCdnUrl}\n onPollJob={props.onPollJob}\n columns={props.columns}\n forceExpand={props.forceExpand}\n disableExpand={props.disableExpand}\n tableSize={props.tableSize}\n isLastOne={idx === props.jobs.data.length - 1}\n />\n );\n })}\n\n {/* pagination */}\n {!!props.jobs.pagination?.cursors && (\n <Pagination\n className='p-0 text-end pb-3 mt-3'\n cursors={props.jobs.pagination.cursors}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n />\n )}\n </div>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WizardPolling, WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\n\ninterface SyncJobPollingProps {\n jobId: string;\n onCompleted: () => void;\n onPollJob: (id: string) => WizardPollJobFn;\n}\n\nexport function SyncJobPolling(props: SyncJobPollingProps): JSX.Element {\n if (!props.jobId)\n return (\n <div className='text-center'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n\n return (\n <div>\n <div className='mb-4'>\n <WizardPolling\n jobId={props.jobId}\n pollJob={props.onPollJob(props.jobId)}\n onStatusCompleted={props.onCompleted}\n actionName='Sync'\n actionVerb='Update'\n progressVerbPhrase={LanguageService.getPhrase('rostering.syncJobPolling', 'progressVerb')}\n />\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"failed\":\"BSIaY\",\"tag\":\"NOJhh\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BatchJob, RosteringSyncBatchJobSummary } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './sync-job-summary.scss';\n\nconst namespace = 'rostering.syncJobSummary';\n\ninterface SyncJobSummaryProps {\n job: BatchJob;\n getJobSummary: (id: string) => Promise<RosteringSyncBatchJobSummary>;\n}\n\nexport function SyncJobSummary(props: SyncJobSummaryProps): JSX.Element {\n const [ summary, setSummary ] = React.useState<RosteringSyncBatchJobSummary>(null);\n const [ isFetchingSummary, setIsFetchingSummary ] = React.useState(false);\n function onFetchSummary() {\n setIsFetchingSummary(true);\n\n props.getJobSummary(props.job.id)\n .then(result => {\n setSummary(result);\n }).finally(() => {\n setIsFetchingSummary(false);\n });\n }\n\n React.useEffect(() => {\n if (!summary) {\n onFetchSummary();\n }\n }, [props.job.id]);\n\n function getCategoryList(name: keyof RosteringSyncBatchJobSummary) {\n let bgColor = '';\n let icon = '';\n switch (name) {\n case 'staff':\n bgColor = 'bg-navy';\n icon = cvSvgLibrary.Staff;\n break;\n case 'learners':\n bgColor = 'bg-blue';\n icon = cvSvgLibrary.GraduationCap;\n break;\n case 'classrooms':\n bgColor = 'bg-teal';\n icon = cvSvgLibrary.Classrooms;\n break;\n\n default:\n break;\n }\n\n const displayedSummaryKeys = Object.keys(summary[name]).filter(k => {\n return k !== 'totalProcessed' && k !== 'totalSucceeded';\n });\n\n return (\n <div className='col'>\n <div className='py-3 ps-2 pe-3 rounded border'>\n <div className='d-flex align-items-center px-2 mb-2'>\n <div className={`${bgColor} ${styles.badge} d-flex align-items-center rounded-circle text-white ps-0 me-2`}>\n <SvgContainer\n className={`svg-container ${styles.svg}`}\n size={SvgContainerSize.Standard}\n svgName={icon}\n />\n </div>\n <Text namespace={namespace} phrase={name}/>\n </div>\n <ul className='mb-0'>\n {displayedSummaryKeys?.map((k: string) => {\n return (\n <li className='mb-2' key={k}>\n <div className='d-flex'>\n <div className={`rounded-pill me-2 px-2 d-inline-flex align-items-center fw-semibold ${k === 'errored' ? styles.failed : styles.tag}`}>{(summary[name] as HashObject)[k]}</div>\n <Text namespace={namespace} phrase={k}/>\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n );\n }\n return (\n <>\n {(isFetchingSummary && !summary) && (\n <div className='text-center py-3'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n )}\n {!!summary && (\n <div className='row gx-3 mt-2'>\n {getCategoryList('staff')}\n {getCategoryList('learners')}\n {getCategoryList('classrooms')}\n </div>\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SyncJobPolling } from 'libs/shared/components/rostering/sync-job-polling/SyncJobPolling';\nimport { SyncJobSummary } from 'libs/shared/components/rostering/sync-job-summary/SyncJobSummary';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { BatchJob, RosteringSyncBatchJobSummary } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'rostering.syncJobDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobDetailsProps {\n job: BatchJob;\n summary?: RosteringSyncBatchJobSummary;\n getJobSummary: (id: string) => Promise<RosteringSyncBatchJobSummary>;\n onClickExport: (ids: string[]) => Promise<void>;\n onPollJob?: (id: string) => WizardPollJobFn;\n onCompleted?: () => void;\n}\n\nexport function SyncJobDetails(props: SyncJobDetailsProps): JSX.Element {\n const canExport = props.job.status === BatchJobStatus.Completed\n || props.job.status === BatchJobStatus.CompletedWithError;\n\n const alerts = useAlerts();\n\n function getContent() {\n switch (props.job.status) {\n case BatchJobStatus.InProgress:\n case BatchJobStatus.Pending:\n case BatchJobStatus.Queued:\n case BatchJobStatus.Submitted:\n return (\n <SyncJobPolling\n jobId={props.job.id}\n onCompleted={props.onCompleted}\n onPollJob={props.onPollJob}\n />\n );\n\n case BatchJobStatus.Failed:\n // failed job cannot be expanded, since we don't have helpful error message for now\n return <></>;\n\n case BatchJobStatus.Completed:\n case BatchJobStatus.CompletedWithError:\n return <SyncJobSummary job={props.job} getJobSummary={props.getJobSummary} />;\n\n default:\n return <></>;\n }\n }\n\n function onClickExport() {\n props.onClickExport([props.job.id])\n .then(() => {\n alerts.success(getPhrase('exportSuccess'));\n })\n .catch(() => {\n alerts.error(getPhrase('exportError'));\n });\n }\n\n return (\n <div className='py-3 px-4' >\n <div className='d-flex justify-content-between'>\n {props.job.status !== BatchJobStatus.InProgress && <h1 className='h4'>{getPhrase('heading')}</h1>}\n \n {canExport && (\n <IconButton\n className='btn btn-outline-dark fw-semibold'\n svgName={cvSvgLibrary.Download}\n onClick={onClickExport}\n >\n {getPhrase('export')}\n </IconButton>\n )}\n </div>\n \n {getContent()}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"B8miR\",\"logoWrapper\":\"higtD\",\"cog\":\"bNPxa\"};","import React from 'react';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FilterOption } from 'libs/shared/apps/search/interfaces';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { BulkJobsAccordion, BulkJobsAccordionColumn, BulkJobsAccordionTableSize } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordion';\nimport { BulkJobAccordionHelper } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordionHelper';\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { SyncJobDetails } from 'libs/shared/components/rostering/sync-job-details/SyncJobDetails';\nimport { SyncStatusBadge } from 'libs/shared/components/rostering/sync-status-badge/SyncStatusBadge';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJob, BatchJobCollection, RosteringSyncBatchJobSummary, RosteringSyncMetadata } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './sync-jobs-accordion.scss';\n\nconst namespace = 'rostering.syncJobsAccordion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobsAccordionsProps {\n jobs: BatchJobCollection;\n queryParams: BulkJobsQueryParams;\n appLink: Core.AppLink;\n onClickExport: (ids: string[]) => Promise<void>;\n getJobSummary: (id: string) => Promise<RosteringSyncBatchJobSummary>;\n imageCdnUrl: string;\n onPollJob?: (id: string) => WizardPollJobFn;\n onCompleted?: () => void;\n pinnedComponent?: () => JSX.Element;\n containerClassName?: string;\n tableSize?: BulkJobsAccordionTableSize;\n}\n\nfunction getSortOptions(): FilterOption[] {\n return [{\n id: 'newest',\n name: LanguageService.getPhrase(namespace, 'newest'),\n default: true\n },\n {\n id: 'oldest',\n name: LanguageService.getPhrase(namespace, 'oldest')\n }];\n}\n\nconst IN_PROGRESS_GROUP = [\n BatchJobStatus.InProgress,\n BatchJobStatus.Pending,\n BatchJobStatus.Queued,\n BatchJobStatus.Submitted\n];\n\nfunction renderSubmiter(job: BatchJob, props: SyncJobsAccordionsProps): JSX.Element {\n if (job.submittedByClickView) {\n return (\n <div className='d-flex align-items-center'>\n <SvgContainer2 className='me-2 rounded-circle border' size={SvgContainerSize.Large}>\n <ClickViewAvatar />\n </SvgContainer2>\n {job.submitterName}\n </div>\n );\n }\n\n if (job.submitterName) {\n return (\n <div className='d-flex align-items-center'>\n <div className={`me-2 flex-shrink-0 ${styles.avatar}`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(job.submitterName.split(' ')[0], job.submitterName.split(' ')[1])}\n />\n </div>\n {job.submitterName}\n </div>\n );\n }\n // if job.submitterName is null it's triggered by scheduled sync\n return (\n <div className='me-2 d-flex align-items-center'>\n <div className={`${styles.cog} me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center`}>\n <SvgContainer\n svgName={cvSvgLibrary.Cog}\n className='svg-container'\n />\n </div>\n {getPhrase('scheduledSubmitter')}\n </div>\n );\n}\n\nexport function SyncJobsAccordion(props: SyncJobsAccordionsProps): JSX.Element {\n const filters = [\n Filters.SortBy(getSortOptions()),\n Filters.JobStatus()\n ];\n\n const columns: BulkJobsAccordionColumn[] = [{\n id: 'id',\n header: getPhrase('syncFrom'),\n headerClassName: 'px-2 py-1',\n renderClassName: 'px-2',\n render: job => {\n const rosterSource = (job.metadata as RosteringSyncMetadata)?.source;\n // unknown roster source\n if (!rosterSource)\n return <></>;\n\n const source = HardCoded.Rostering.sources[rosterSource];\n if (!source) {\n throw new DevError('Unsupported rostering sync source, please add it to HardCoded rostering source');\n }\n\n return (\n <div className={`bg-white rounded-circle border ${styles.logoWrapper} d-flex align-items-center justify-content-center`}>\n <Tooltip spanHack title={source.name}>\n <img src={source.iconUrl} alt={source.name}/>\n </Tooltip>\n </div>\n );\n },\n width: BulkJobAccordionHelper.getColumnCellWidth('id', props.tableSize)\n }, {\n id: 'dateCreated',\n header: getPhrase('date'),\n headerClassName: 'px-2 py-1',\n renderClassName: 'px-2',\n render: job => DateHelper.format(job.dateCreated, 'DD/MM/YYYY, hh:mmA'),\n width: BulkJobAccordionHelper.getColumnCellWidth('dateCreated', props.tableSize)\n }, {\n id: 'status',\n header: getPhrase('status'),\n headerClassName: 'px-2 py-1',\n renderClassName: 'px-2',\n render: job => (\n <SyncStatusBadge status={job.status}/>\n ),\n width: BulkJobAccordionHelper.getColumnCellWidth('status', props.tableSize)\n }, {\n id: 'submitterName',\n header: getPhrase('performedBy'),\n headerClassName: 'px-2',\n renderClassName: 'px-2',\n render: job => renderSubmiter(job, props),\n width: BulkJobAccordionHelper.getColumnCellWidth('submitterName', props.tableSize)\n }];\n\n function forceExpand(job: BatchJob) {\n return IN_PROGRESS_GROUP.includes(job.status);\n }\n\n function disableExpand(job: BatchJob) {\n return job.status === BatchJobStatus.Failed;\n }\n\n return (\n <BulkJobsAccordion\n {...props}\n filters={filters}\n jobDetailsComponent={job => (\n <SyncJobDetails\n job={job}\n getJobSummary={props.getJobSummary}\n onPollJob={props.onPollJob}\n onClickExport={props.onClickExport}\n onCompleted={props.onCompleted}\n />\n )}\n columns={columns}\n forceExpand={forceExpand}\n disableExpand={disableExpand}\n />\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'rostering.noSyncJobs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\ninterface NoSyncJobsEmptyStateProps {\n onStartFullSync: () => void;\n}\n\nexport function NoSyncJobsEmptyState(props: NoSyncJobsEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Rostering.NO_SYNC_JOBS} />\n <EmptyState.Heading><Text namespace={namespace} phrase='emptyHeading' /></EmptyState.Heading>\n <EmptyState.Info className='w-50 mb-3'><Text namespace={namespace} phrase='emptyInfo' /></EmptyState.Info>\n {/* <EmptyState.Cta\n href={href}\n text={getPhrase('learnMore')}\n className='btn btn-link info-link'\n openInNewTab\n /> */}\n <EmptyState.Cta\n className='btn btn-dark'\n onClick={props.onStartFullSync}\n text={getPhrase('emptyCta')}\n />\n </EmptyState>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { NoResultsEmptyState } from 'libs/shared/components/rostering/no-results-empty-state/NoResultsEmptyState';\nimport { PartialSyncJobsList } from 'libs/shared/components/rostering/partial-loading/PartialSyncJobsList';\nimport { RosteringSettingHeader } from 'libs/shared/components/rostering/rostering-header/RosteringSettingHeader';\nimport { ScheduledSyncJobItem } from 'libs/shared/components/rostering/scheduled-sync-job-item/ScheduledSyncJobItem';\nimport { SyncActionButtonGroup } from 'libs/shared/components/rostering/sync-action-button-group/SyncActionButtonGroup';\nimport { SyncJobsAccordion } from 'libs/shared/components/rostering/sync-jobs-accordion/SyncJobsAccordion';\nimport { RosteringHelper } from 'libs/shared/components/rostering/utils/RosteringHelper';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobCollection, BatchJobProgress, Config, CurrentUser, RosteringResponse, RosteringSyncBatchJobSummary, ScheduleSettingResponse } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { NoSyncJobsEmptyState } from 'apps/settings/views/rostering/rostering-sync-list/no-sync-jobs-empty-state/NoSyncJobsEmptyState';\nimport { RequiresSetUpEmptyState } from 'apps/settings/views/rostering/rostering-sync-list/requires-set-up-empty-state/RequiresSetUpEmptyState';\nimport { useSyncRostering } from 'apps/settings/views/rostering/utils/useSyncRostering';\n\nconst namespace = 'rostering.syncList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RosteringSyncListViewProps {\n queryParams: BulkJobsQueryParams;\n}\n\nexport function RosteringSyncListView(props: RosteringSyncListViewProps): JSX.Element {\n const syncJobs = Flight.useBasicFetch<BatchJobCollection>(RosteringRequests.getSyncList(props.queryParams));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const settings = Flight.useBasicFetch<ScheduleSettingResponse>(currentUser.data && rostering.data &&\n RosteringRequests.getSyncScheduleSettings(rostering.data.id));\n\n const dataLoaded = syncJobs.hasCompleted && config.hasCompleted && settings.hasCompleted && rostering.hasCompleted;\n\n useLockContentWidth();\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const dispatch = useDispatch();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n function getJobSummary(id: string): Promise<RosteringSyncBatchJobSummary> {\n return fetchAsync(RosteringRequests.getJobSummary(id));\n }\n\n function onPollJob(id: string) {\n return function(onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) {\n return fetchAsync(JobRequests.getJobProgress(id, onSuccess, onError));\n };\n }\n\n function onCompleted() {\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: ['rostering:sync'],\n request: null\n });\n }\n\n function onClickExport(jobIds: string[]): Promise<void> {\n return fetchAsync<void>(JobRequests.sendJobReports(jobIds));\n }\n\n function getContent() {\n // has not set up rostering\n if (rostering.data?.status === 'None')\n return <RequiresSetUpEmptyState/>;\n\n if (!dataLoaded)\n return <PartialSyncJobsList />;\n\n if (!syncJobs.data.data.length && !props.queryParams)\n return <NoSyncJobsEmptyState onStartFullSync={syncNow}/>;\n\n const nextScheduled = RosteringHelper.getScheduledJobBySetting(settings.data);\n\n return (\n <>\n <SyncJobsAccordion\n jobs={syncJobs.data}\n queryParams={props.queryParams}\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.ROSTERING\n }}\n onClickExport={onClickExport}\n getJobSummary={getJobSummary}\n imageCdnUrl={config.data.imageCdnUrl}\n onPollJob={onPollJob}\n onCompleted={onCompleted}\n pinnedComponent={\n nextScheduled\n ? () => <ScheduledSyncJobItem scheduledDate={nextScheduled} />\n : null\n }\n />\n {!syncJobs.data.data.length && props.queryParams && (\n <NoResultsEmptyState imageCdnUrl={ImageUrls.EmptyStates.Rostering.EMPTY_RESULTS} />\n )}\n </>\n );\n }\n\n const showTabAndButton = dataLoaded && rostering.data?.status === 'Active';\n\n const { syncNow, fullSync } = useSyncRostering(currentUser.data);\n\n function renderButton() {\n if (!showTabAndButton)\n return <></>;\n return <SyncActionButtonGroup onSyncNow={syncNow} onFullSync={fullSync}/>;\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n headingButton={renderButton}\n requiredPermissions={PermissionName.Rostering}\n >\n {showTabAndButton && (\n <RosteringSettingHeader\n active='syncJobs'\n appLinks={{\n syncJobs: { application: AppChannels.SETTINGS, action: Actions.Settings.ROSTERING },\n settings: { application: AppChannels.SETTINGS, action: Actions.Settings.ROSTERING_SETTINGS }\n }}\n />\n )}\n {getContent()}\n </SettingsLayout>\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'rostering.requiresSetUp';\n\nexport function RequiresSetUpEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Rostering.REQUIRES_SET_UP} />\n <EmptyState.Heading><Text namespace={namespace} phrase='emptyHeading' /></EmptyState.Heading>\n <EmptyState.Info className='w-50 mb-3'><Text namespace={namespace} phrase='emptyInfo' /></EmptyState.Info>\n \n {/* <EmptyState.Cta\n href={href}\n text={getPhrase('emptyCta')}\n className='btn btn-link info-link'\n openInNewTab\n /> */}\n \n <ExternalLink\n className='btn btn-dark'\n href={ArticleHelper.getSupportRequestUrl()}\n newTab\n >\n <Text namespace={namespace} phrase='button'/>\n </ExternalLink>\n \n </EmptyState>\n );\n}","import { AlertType, BaseAlert } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { BatchDataType } from 'libs/shared/enums/BatchDataType';\nimport { BatchJobName } from 'libs/shared/enums/BatchJobName';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nconst namespace = 'rostering.syncUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const useSyncRostering = (currentUser: CurrentUser) => {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const alerts = useAlerts();\n\n if (!currentUser) {\n return { syncNow: () => {}, fullSync: () => {} };\n }\n\n function syncNow() {\n const alert: BaseAlert = {\n type: AlertType.Success,\n heading: getPhrase('startSyncAlertHeading'),\n message: getPhrase('startSyncAlertBody'),\n appLinkText: getPhrase('startSyncAlertAppLinkText'),\n appLinkClassName: 'info-link'\n };\n\n const data = {\n name: BatchJobName.Rostering,\n type: BatchJobType.Rostering,\n metadata: {\n targetMasterId: currentUser.customerId,\n targetMasterType: MasterType.Customer\n },\n customerId: currentUser.customerId,\n dataType: BatchDataType.Learner\n };\n fetchAsync(RosteringRequests.createJob(\n data,\n () => {\n alerts.success(alert);\n },\n () => {\n alerts.error(getPhrase('error'));\n }\n ));\n }\n\n function fullSync() {\n // todo\n }\n return { fullSync, syncNow };\n};","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["PartialSearchFilters","count","className","Array","fill","map","item","index","key","TabContents","props","tab","svgName","name","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","active","appLink","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","defaultProps","namespace","RosteringSettingHeader","appLinks","syncJobs","settings","getPhrase","LanguageService","SyncActionButtonGroup","role","Tooltip","title","spanHack","placement","spanHackClassName","onSyncNow","now","Date","RosteringHelper","parseUTCToLocal","utcHour","utcWeekdays","utcMinute","local","weekday","localWeekdays","w","getDay","hour","daysOfWeek","minute","getScheduledJobBySetting","setting","fullSyncSchedule","enabled","schedule","scheduledDate","weekdayOfToday","scheduledWeekday","sort","a","b","scheduledToday","includes","setHours","nextScheduledDate","nextScheduledWeekday","find","d","gap","Math","abs","setDate","getDate","parseFormToPayload","val","utc","parseLocalToUTC","startAt","weekdays","repeat","parseValueToForm","length","PartialTagItem","tagClass","classNames","TagWidgetItem","colorClass","selectedItems","selection","id","tag","WizardInProgress","percentage","floor","totalItemsComplete","totalItems","Text","phrase","options","actionName","SvgContainer","actionVerb","progressVerbPhrase","objectType","MasterType","userType","UserGroup","totalComplete","total","smartCount","ProgressBar","variant","WizardSubmitted","POLLING_INTERVAL","MAX_CONSECUTIVE_ERROR_COUNT","WizardPolling","progress","setProgress","consecutiveErrorCount","setConsecutiveErrorCount","timeoutIdRef","navLock","useNavLock","dispatch","pollJob","onPollSuccess","onPollError","currentProgress","status","BatchJobStatus","window","setTimeout","navLockId","unlock","params","jobId","keys","request","statusCompleteAppLink","onStatusCompleted","onCompleteJob","current","xhr","clearTimeout","currentVal","processedItems","RosteringRequests","getRostering","url","getSyncList","queryParams","cursor","order","jobStatus","statuses","push","createJob","success","error","invalidationKeys","getJobSummary","getSyncScheduleSettings","integrationId","updateScheduleSetting","always","customerId","useBulkCheckboxManager","collection","idField","persistNamespace","initial","initialState","Map","items","forceUpdate","prevCollection","prevNamespace","reset","clear","isChecked","toString","get","isBulkChecked","every","setSelected","ids","forEach","set","i","join","preselectedIds","onToggleBulk","setValue","onToggleItem","nextItemState","getSelected","from","bulkChecked","deselectAll","hasSomeSelections","getSelectedCount","size","getMap","useLockContentWidth","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","breadcrumbs","heading","headingButton","description","children","NoResultsEmptyState","EmptyState","src","imageCdnUrl","PartialRow","PartialHeader","PartialSyncJobsTable","PartialSyncJobsList","BulkJobAccordionHelper","getCellStyle","width","flex","getColumnCellWidth","column","getColumnCellStyle","SyncStatusBadge","baseClass","getClassName","getName","ScheduledSyncJobItem","style","DateHelper","BulkJobsAccordionItem","forceExpand","job","isExpanded","setIsExpanded","isDisabled","disableExpand","s","e","stopPropagation","Checkbox","checked","onChange","onToggleCheckbox","columns","render","renderClassName","tableSize","isLastOne","jobDetailsComponent","BulkJobsFilters","SearchFilters","mainFilters","filters","hideHeading","hideDivider","constantIndices","BulkJobsAccordion","showExportSpinner","setShowExportSpinner","CheckboxHelper","jobs","alerts","containerClassName","indeterminate","SpinnerButton","selectedIds","onClickExport","then","disabled","showSpinner","header","headerClassName","pinnedComponent","idx","onPollJob","pagination","cursors","Pagination","ContextService","buttonVariant","SyncJobPolling","onCompleted","Spinner","as","animation","SyncJobSummary","summary","setSummary","isFetchingSummary","setIsFetchingSummary","getCategoryList","bgColor","icon","displayedSummaryKeys","Object","filter","k","S","result","SyncJobDetails","canExport","IconButton","getContent","IN_PROGRESS_GROUP","SyncJobsAccordion","default","rosterSource","metadata","source","HardCoded","DevError","iconUrl","alt","dateCreated","submittedByClickView","SvgContainer2","ClickViewAvatar","submitterName","Avatar","initials","UserHelper","split","renderSubmiter","NoSyncJobsEmptyState","ImageUrls","onStartFullSync","text","RosteringSyncListView","config","ConfigRequests","currentUser","UserRequests","rostering","dataLoaded","hasCompleted","fetchAsync","onSuccess","onError","JobRequests","jobIds","useSetPageMetadata","showTabAndButton","useSyncRostering","syncNow","fullSync","onFullSync","PermissionName","RequiresSetUpEmptyState","nextScheduled","href","newTab","alert","message","appLinkText","appLinkClassName","targetMasterId","targetMasterType","dataType","B","getPercentage","min","max","round","renderProgressBar","label","visuallyHidden","striped","animated","bsPrefix","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
@@ -1,3 +1,3 @@
1
- /*! For license information please see 8323-486244b457-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8323],{90417:(e,t,n)=>{n.d(t,{N:()=>U,d:()=>M});var r=n(32735),a=n(23481),i=n(81886),o=n(2948),l=n(49985),c=n(65858),u=n(15611),s=n(83345),d=n(38143);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var f="userManager.userWizardBackButtons";function m(e){var t,n,a=(t=(0,o.D)(d.g.BULK_USER_ACTIONS),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return"status"===e.currentStep?r.createElement(r.Fragment,null):r.createElement(u.F,{className:"btn btn-link me-2",appLink:function(){switch(e.currentStep){case"review-accounts":return e.appLinks.userManager;case"select-action":return e.appLinks.bulkActionsReviewAccounts;case"action-details":return e.appLinks.bulkActionsSelectAction;case"confirmation":return function(){if(!(null==a?void 0:a.action))return null;switch(a.action){case"delete":return e.appLinks.bulkActionsActionDetails.delete;case"activation":return e.appLinks.bulkActionsActionDetails.activation;case"yearGroupRollover":return e.appLinks.bulkActionsActionDetails.yearGroupRollover;case"changeYearGroup":return e.appLinks.bulkActionsActionDetails.changeYearGroup;case"addToClassroom":return e.appLinks.bulkActionsActionDetails.addToClassroom;case"resetPassword":return e.appLinks.bulkActionsActionDetails.resetPassword;case"resetEmail":case"activationEmail":return e.appLinks.bulkActionsSelectAction;case"removeFromSchool":return e.appLinks.bulkActionsActionDetails.removeFromSchool}}()}}()},r.createElement(s.x,{namespace:f,phrase:"review-accounts"===e.currentStep?"cancel":"back"}))}var v=n(98269),h=n(56050),b=n(24453),y=n(12458),k=n(96728);function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var A="userManager.userWizardHeader";function S(e){var t,n,a=(t=(0,o.D)(d.g.BULK_USER_ACTIONS),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],l=r.useContext(k.e),c=l.disableNext,p=l.onClickConfirm,f=l.showButtons;return b.O.getCurrentContext().appLink.action===e.appLinks.bulkActionsStatus.complete.action&&f?r.createElement(u.F,{className:"btn btn-dark ".concat(c?"disabled":""),appLink:e.appLinks.userManager,disabled:c,onClick:e.onFinish},r.createElement(s.x,{namespace:A,phrase:"finish"})):"confirmation"===e.currentStep?r.createElement(v.Z,{className:c?"disabled":"",variant:"dark",onClick:function(){y.I.onClickNext(a,e.currentStep),p()},disabled:c},r.createElement(s.x,{namespace:A,phrase:"confirm"})):"status"!==e.currentStep||e.showStatusStepButton?"status"===e.currentStep&&e.showStatusStepButton?r.createElement(u.F,{className:"btn btn-dark ".concat(e.isPolling?"disabled":""),appLink:e.appLinks.userManager,disabled:c,onClick:e.onFinish},r.createElement(s.x,{namespace:A,phrase:"finish"})):r.createElement(u.F,{className:"btn btn-dark ".concat(c?"disabled":""),appLink:function(){switch(e.currentStep){case"review-accounts":return e.appLinks.bulkActionsSelectAction;case"select-action":return function(){if(!(null==a?void 0:a.action))return null;switch(a.action){case"delete":return e.appLinks.bulkActionsActionDetails.delete;case"activation":return e.appLinks.bulkActionsActionDetails.activation;case"yearGroupRollover":return e.appLinks.bulkActionsActionDetails.yearGroupRollover;case"changeYearGroup":return e.appLinks.bulkActionsActionDetails.changeYearGroup;case"addToClassroom":return e.appLinks.bulkActionsActionDetails.addToClassroom;case"resetPassword":return e.appLinks.bulkActionsActionDetails.resetPassword;case"resetEmail":return e.appLinks.bulkActionsConfirmation.resetEmail;case"activationEmail":return e.appLinks.bulkActionsConfirmation.activationEmail;case"removeFromSchool":return e.appLinks.bulkActionsActionDetails.removeFromSchool}i.Q.Ry.throw(new h.H("Missing switch statement case for ".concat(a.action," in BulkUserActionsContinueButton.tsx")))}();case"action-details":return e.appLinks.bulkActionsConfirmation[null==a?void 0:a.subAction];default:return null}}(),onClick:function(){return y.I.onClickNext(a,e.currentStep)},disabled:c},r.createElement(s.x,{namespace:A,phrase:"next"})):r.createElement(r.Fragment,null)}var E=n(149),C=n(17291),w=n(79352),L=n(76881),x=n(89476);function I(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.75rem",width:"15rem"}}),r.createElement("div",{className:"partial-loading-background mb-3",style:{height:"1.5rem",width:"12rem"}}),r.createElement("div",{className:"partial-loading-background mb-2",style:{height:"8em",width:"40rem"}}))}const N={wizardContent:"UBwkq"};function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var F="userManager.bulkUserActionsWizardLayout",U="bulk-user-actions-wizard";function M(e){var t,n,u,s=(n=(0,o.D)(d.g.BULK_USER_ACTIONS),u=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(n,u)||function(e,t){if(e){if("string"==typeof e)return T(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?T(e,t):void 0}}(n,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=s[0],f=s[1],v=(0,x.f)();function h(){var t,n;if(p){var r={step:e.currentStep,userCount:null!==(n=null===(t=null==p?void 0:p.userIdMap)||void 0===t?void 0:t.size)&&void 0!==n?n:0},a=y.I.getAnalyticsActionName(p);a&&(r.action=a),l.k.logUserAction(r,{workflowPhase:c.eu.Discard,actionType:c.Vw.BulkAction,location:c.LZ.BulkUserActionsWizard,entity:c.py.User})}}r.useEffect(function(){var t;return(null===(t=null==p?void 0:p.userIdMap)||void 0===t?void 0:t.size)||e.preventRedirect?e.preventNavLock?void 0:(v.lock({id:U,title:a.T.getPhrase(F,"navLockTitle"),text:a.T.getPhrase(F,"navLockBody"),appLinkWhitelist:E.b.getWizardAppLinks(e.appLinks),onConfirmUnlock:function(){h(),f({})}}),function(){v.unlock(U)}):(i.Q.C$.trigger(e.appLinks.userManager,{replace:!0}),void h())},[]);var b=e.loaded&&!!(null===(t=e.users)||void 0===t?void 0:t.length),g=E.b.getSteps(e.userType,e.userCount,e.appLinks,null==p?void 0:p.action);return r.createElement(k.D,null,r.createElement("div",{className:"px-3"},r.createElement(C.C,{title:a.T.getPhrase(F,"bulkActions"),currentStep:e.currentStep,hideHeader:e.hideHeader,loaded:e.loaded,continueButton:r.createElement(S,{currentStep:e.currentStep,appLinks:e.appLinks,onFinish:function(){f({})}}),backButton:r.createElement(m,{currentStep:e.currentStep,appLinks:e.appLinks}),breadcrumbs:[{name:a.T.getPhrase(F,"settingsBreadcrumb"),appLink:e.appLinks.settings},{name:a.T.getPhrase(F,e.userType===L.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:a.T.getPhrase(F,"bulkActions"),active:!0}]}),r.createElement("div",{className:"row g-0"},r.createElement("div",{className:"col-3"},r.createElement(w.a,{steps:g,currentStep:e.currentStep,disableAppLinks:!b||e.disableAppLinks})),r.createElement("div",{className:"col-9 ".concat(N.wizardContent)},b?e.children:r.createElement(I,null)))))}},12458:(e,t,n)=>{n.d(t,{I:()=>c});var r=n(1048),a=n(49985),i=n(65858),o=n(58739),l=["userIdMap","params","action","subAction","allUsersSelected","allUsersCount","scrollContainer"],c={getAnalyticsActionName:function(e){if(!(null==e?void 0:e.action))return null;switch(e.action){case"activation":return(null==e?void 0:e.subAction)?"deactivate"===e.subAction?"Deactivate":"Reactivate":"Deactivate / reactivate";case"addToClassroom":return"Add to classroom";case"changeYearGroup":return"Change year level";case"delete":return"Delete user";case"resetEmail":return"Send password reset email";case"activationEmail":return"Send account activation email";case"resetPassword":return"Reset password";case"yearGroupRollover":return"Annual year level rollover";case"removeFromSchool":return"Remove user";default:return null}},onClickNext:function(e,t){if(e){var n={userCount:e.userIdMap.size,step:t},o=c.getAnalyticsActionName(e);o&&(n.action=o);var u=r.t.omit(e,l);Object.keys(u).length&&(n.actionData=u),a.k.logUserAction(n,{location:i.LZ.BulkUserActionsWizard,workflowPhase:i.eu.Next,actionType:i.Vw.BulkAction,entity:i.py.User})}},logYearGroupRolloverEntry:function(e){a.k.logUserAction({action:c.getAnalyticsActionName({action:"yearGroupRollover"})},{entity:i.py.User,actionType:i.Vw.BulkAction,workflowPhase:i.eu.Start,location:e})},getJobStatus:function(e){switch(e){case o.K.Completed:return"Success";case o.K.CompletedWithError:return"Completed with some errors";case o.K.Failed:return"Failed";default:return null}}}},17291:(e,t,n)=>{n.d(t,{C:()=>o});var r=n(32735),a=n(49935),i=n(96728);function o(e){var t=r.useContext(i.e).showButtons;return r.createElement("div",{className:"d-flex justify-content-between"},e.hideHeader?r.createElement("div",null):r.createElement("div",null,r.createElement("h1",{className:"h2"},e.title),e.breadcrumbs&&r.createElement("div",{className:"pb-3"},r.createElement(a.Oo,{breadcrumbs:e.breadcrumbs}))),e.loaded&&t&&r.createElement("div",{className:"d-flex align-items-center"},e.backButton,e.continueButton))}},79352:(e,t,n)=>{n.d(t,{a:()=>c});var r=n(32735),a=n(23481),i=n(15611),o=a.T.encloseNamespace("shared.wizardStepList");function l(e){var t,n,a,o,l,c=r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex"},!e.hideStepNumber&&r.createElement("div",{className:"flex-shrink-0 flex-grow-0"},"".concat(e.index+1,".")," "),r.createElement("div",null,e.text)),e.subText&&r.createElement("div",{className:"ms-2 ps-1 pt-1"},e.subText)),u="px-2 py-1 mb-1 rounded d-inline-block";return e.isSelected&&(u+=" ".concat((null===(t=e.theme)||void 0===t?void 0:t.isSelectedOverride)||"bg-light-blue fw-semibold")),!e.isSelected&&e.isCompleted&&(u+=" ".concat((null===(n=e.theme)||void 0===n?void 0:n.isCompletedOverride)||"text-info")),e.disabled&&(u+=" text-muted cursor-default"),r.createElement("li",{className:null===(a=e.theme)||void 0===a?void 0:a.item},e.isCompleted&&e.appLink?r.createElement(i.F,{appLink:e.disabled?null:e.appLink,className:"".concat(u," ").concat((null===(o=e.theme)||void 0===o?void 0:o.itemContent)||"")},c):r.createElement("div",{className:"".concat(u," ").concat((null===(l=e.theme)||void 0===l?void 0:l.itemContent)||"")},c))}function c(e){var t,n=e.steps.reduce(function(t,n,r){return n.id===e.currentStep&&(t=r+1),t},1);return r.createElement(r.Fragment,null,r.createElement("h2",{className:"h4"},o("stepNumber",{currentStep:n,totalSteps:e.steps.length})),r.createElement("ol",{className:"list-unstyled ".concat((null===(t=e.theme)||void 0===t?void 0:t.itemsContainer)||"")},e.steps.map(function(t,a){var i=t.id===e.currentStep,o=n>a+1;return r.createElement(l,{index:a,key:t.id,text:t.text,subText:t.subText,isSelected:i,isCompleted:o,appLink:!e.disableAppLinks&&t.appLink,disabled:t.disabled,theme:e.theme})})))}},58739:(e,t,n)=>{var r;n.d(t,{K:()=>r}),function(e){e[e.Submitted=0]="Submitted",e[e.Queued=1]="Queued",e[e.Pending=2]="Pending",e[e.InProgress=3]="InProgress",e[e.Completed=4]="Completed",e[e.CompletedWithError=5]="CompletedWithError",e[e.Failed=6]="Failed"}(r||(r={}))},60115:(e,t,n)=>{n.d(t,{K:()=>u});var r=n(32735),a=n(50242),i=n(91967),o=400,l=n(45719);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e,t,n,u,s,d){var p,f,m,v,h=(p=(0,r.useState)(0),f=2,function(e){if(Array.isArray(e))return e}(p)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(p,f)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(p,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),b=h[0],y=h[1],k=t,g=(0,l.P)(function(t){if(!e)return null;var n=e(t);return n?n.key:null},u,s);return m={fetchNextPage:function(){if(t&&e&&g)return y(function(e){return e+1}),k(g.nextCursor)},hasMore:!!(null==g?void 0:g.nextCursor),isFetching:null==g?void 0:g.isFetching,scrollContainer:d},v=function(){if(!m.isFetching){if(m.scrollContainer){var e=m.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-o)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-o)return;m.fetchNextPage()}},(0,r.useEffect)(function(){var e=i.q.throttle(v,200),t=m.scrollContainer||window;return m.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}},[m.hasMore,m.fetchNextPage,m.scrollContainer]),(0,r.useEffect)(function(){g&&g.shouldInitialFetch&&t&&(k(),y(function(e){return e+1}))},[null==g?void 0:g.shouldInitialFetch,t]),(0,r.useEffect)(function(){var e,t;if((null==g?void 0:g.statusCode)&&i.q.isFunction(n)){var r=+(null===(t=null===(e=g.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));r!==a.k.ClientError&&r!==a.k.ServerError||n(b,g.statusCode)}},[null==g?void 0:g.statusCode]),{items:null==g?void 0:g.items,hasMore:!!(null==g?void 0:g.nextCursor),nextCursor:null==g?void 0:g.nextCursor,isFetching:null==g?void 0:g.isFetching,totalItems:null==g?void 0:g.totalItems,hasFirstPageCompleted:null==g?void 0:g.hasFirstPageCompleted}}},88323:(e,t,n)=>{n.d(t,{h:()=>E});var r=n(20354),a=n(32735),i=n(70680),o=n(81886),l=n(2948),c=n(49985),u=n(65858),s=n(90417),d=n(89422),p=n(38143),f=n(69217),m=n(60115),v=n(89476);function h(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function i(n,r,a,i){var c=r&&r.prototype instanceof l?r:l,u=Object.create(c.prototype);return b(u,"_invoke",function(n,r,a){var i,l,c,u=0,s=a||[],d=!1,p={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(t,n){return i=t,l=0,c=e,p.n=n,o}};function f(n,r){for(l=n,c=r,t=0;!d&&u&&!a&&t<s.length;t++){var a,i=s[t],f=p.p,m=i[2];n>3?(a=m===r)&&(c=i[(l=i[4])?5:(l=3,3)],i[4]=i[5]=e):i[0]<=f&&((a=n<2&&f<i[1])?(l=0,p.v=r,p.n=i[1]):f<m&&(a=n<3||i[0]>r||r>m)&&(i[4]=n,i[5]=r,p.n=m,l=0))}if(a||n>1)return o;throw d=!0,r}return function(a,s,m){if(u>1)throw TypeError("Generator is already running");for(d&&1===s&&f(s,m),l=s,c=m;(t=l<2?e:c)||!d;){i||(l?l<3?(l>1&&(p.n=-1),f(l,c)):p.n=c:p.v=c);try{if(u=2,i){if(l||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,l<2&&(l=0)}else 1===l&&(t=i.return)&&t.call(i),l<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),l=1);i=e}else if((t=(d=p.n<0)?c:n.call(r,p))!==o)break}catch(t){i=e,l=1,c=t}finally{u=1}}return{value:t,done:d}}}(n,a,i),!0),u}var o={};function l(){}function c(){}function u(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(b(t={},r,function(){return this}),t),d=u.prototype=l.prototype=Object.create(s);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,b(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return c.prototype=u,b(d,"constructor",u),b(u,"constructor",c),c.displayName="GeneratorFunction",b(u,a,"GeneratorFunction"),b(d),b(d,a,"Generator"),b(d,r,function(){return this}),b(d,"toString",function(){return"[object Generator]"}),(h=function(){return{w:i,m:p}})()}function b(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}b=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var i=function(t,n){b(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},b(e,t,n,r)}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(e,t)||k(e,t)||function(){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 k(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var A=n(31949),S=n(18087),E=function(e){var t,n=(0,S.Y)(e);return function(e){var t,n,b,A=h().m(M),S=e.appLinks,E=e.getUsersRequest,C=y((0,l.D)(p.g.BULK_USER_ACTIONS),2),w=C[0],L=C[1],x=(0,i.I0)(),I=(0,v.f)(),N=y(a.useState(!0),2),T=N[0],F=N[1],U=a.useRef({keys:null===(t=null==w?void 0:w.userIdMap)||void 0===t?void 0:t.keys(),pages:{}});function M(e,t){var n;return h().w(function(r){for(;;)switch(r.n){case 0:if(!(t-- >0)){r.n=3;break}if(n=e.next().value){r.n=1;break}return r.a(2);case 1:return r.n=2,n;case 2:r.n=0;break;case 3:return r.a(2)}},A)}function O(e){var t;if(!(null===(t=null==w?void 0:w.userIdMap)||void 0===t?void 0:t.size)||!U.current.keys)return null;if(U.current.pages[e]){var n=U.current.pages[e];return n.length?E(n):null}var r,a=function(e){if(Array.isArray(e))return g(e)}(r=M(U.current.keys,d.K.USER_PAGE_LIMIT))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||k(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return U.current.pages[e]=a,a.length?E(a):(F(!1),null)}function j(e){var t=O(e);if(t)return r.a.getFetch(x)(t)}var P=(0,m.K)(O,j,null,function(e){return e},function(e){var t;return null===(t=e[e.length-1])||void 0===t?void 0:t.id},null==w?void 0:w.scrollContainer),B=P.items,D=P.isFetching,R=P.nextCursor,_=(0,f.N)();function z(){var e;return null===(e=null==w?void 0:w.userIdMap)||void 0===e?void 0:e.size}var G=null!==(n=null==B?void 0:B.filter(function(e){return w.userIdMap.has(e.id.toString())}))&&void 0!==n?n:[];return a.useEffect(function(){(null==w?void 0:w.userIdMap)&&!w.userIdMap.size&&setTimeout(function(){I.unlock(s.N),o.Q.C$.trigger(S.userManager,{replace:!0})},0)},[null===(b=null==w?void 0:w.userIdMap)||void 0===b?void 0:b.size,D]),{users:G,isFetching:D,removeUser:function(e){w.userIdMap.delete(e.id.toString()),L("allUsersSelected",!1),_(),c.k.logUserAction({id:e.id.toString(),userCount:z()},{location:u.LZ.BulkUserActionsWizard,entity:u.py.User,actionType:u.Vw.Remove})},hasMore:T,fetchNext:function(){return j(R)},count:z(),setAllUserIds:function(e){var t=new Map;e.forEach(function(e){t.set(e,!0)}),L({userIdMap:t,allUsersSelected:!0,allUsersCount:t.size}),U.current.keys=t.keys(),_()}}}({customerId:null===(t=r.a.useBasicFetch(A.N.currentUser()).data)||void 0===t?void 0:t.customerId,userType:e,appLinks:n,getUsersRequest:A.N.usersById})}}}]);
3
- //# sourceMappingURL=8323-486244b457-lite.chunk.js.map
1
+ /*! For license information please see 8323-82f5c83bd1-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8323],{90417:(e,t,n)=>{n.d(t,{N:()=>U,d:()=>M});var r=n(32735),a=n(23481),i=n(81886),o=n(2948),l=n(49985),c=n(65858),u=n(15611),s=n(83345),d=n(38143);function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var f="userManager.userWizardBackButtons";function m(e){var t,n,a=(t=(0,o.D)(d.g.BULK_USER_ACTIONS),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return"status"===e.currentStep?r.createElement(r.Fragment,null):r.createElement(u.F,{className:"btn btn-link me-2",appLink:function(){switch(e.currentStep){case"review-accounts":return e.appLinks.userManager;case"select-action":return e.appLinks.bulkActionsReviewAccounts;case"action-details":return e.appLinks.bulkActionsSelectAction;case"confirmation":return function(){if(!(null==a?void 0:a.action))return null;switch(a.action){case"delete":return e.appLinks.bulkActionsActionDetails.delete;case"activation":return e.appLinks.bulkActionsActionDetails.activation;case"yearGroupRollover":return e.appLinks.bulkActionsActionDetails.yearGroupRollover;case"changeYearGroup":return e.appLinks.bulkActionsActionDetails.changeYearGroup;case"addToClassroom":return e.appLinks.bulkActionsActionDetails.addToClassroom;case"resetPassword":return e.appLinks.bulkActionsActionDetails.resetPassword;case"resetEmail":case"activationEmail":return e.appLinks.bulkActionsSelectAction;case"removeFromSchool":return e.appLinks.bulkActionsActionDetails.removeFromSchool}}()}}()},r.createElement(s.x,{namespace:f,phrase:"review-accounts"===e.currentStep?"cancel":"back"}))}var v=n(98269),h=n(56050),b=n(24453),y=n(12458),k=n(96728);function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var A="userManager.userWizardHeader";function S(e){var t,n,a=(t=(0,o.D)(d.g.BULK_USER_ACTIONS),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],l=r.useContext(k.e),c=l.disableNext,p=l.onClickConfirm,f=l.showButtons;return b.O.getCurrentContext().appLink.action===e.appLinks.bulkActionsStatus.complete.action&&f?r.createElement(u.F,{className:"btn btn-dark ".concat(c?"disabled":""),appLink:e.appLinks.userManager,disabled:c,onClick:e.onFinish},r.createElement(s.x,{namespace:A,phrase:"finish"})):"confirmation"===e.currentStep?r.createElement(v.Z,{className:c?"disabled":"",variant:"dark",onClick:function(){y.I.onClickNext(a,e.currentStep),p()},disabled:c},r.createElement(s.x,{namespace:A,phrase:"confirm"})):"status"!==e.currentStep||e.showStatusStepButton?"status"===e.currentStep&&e.showStatusStepButton?r.createElement(u.F,{className:"btn btn-dark ".concat(e.isPolling?"disabled":""),appLink:e.appLinks.userManager,disabled:c,onClick:e.onFinish},r.createElement(s.x,{namespace:A,phrase:"finish"})):r.createElement(u.F,{className:"btn btn-dark ".concat(c?"disabled":""),appLink:function(){switch(e.currentStep){case"review-accounts":return e.appLinks.bulkActionsSelectAction;case"select-action":return function(){if(!(null==a?void 0:a.action))return null;switch(a.action){case"delete":return e.appLinks.bulkActionsActionDetails.delete;case"activation":return e.appLinks.bulkActionsActionDetails.activation;case"yearGroupRollover":return e.appLinks.bulkActionsActionDetails.yearGroupRollover;case"changeYearGroup":return e.appLinks.bulkActionsActionDetails.changeYearGroup;case"addToClassroom":return e.appLinks.bulkActionsActionDetails.addToClassroom;case"resetPassword":return e.appLinks.bulkActionsActionDetails.resetPassword;case"resetEmail":return e.appLinks.bulkActionsConfirmation.resetEmail;case"activationEmail":return e.appLinks.bulkActionsConfirmation.activationEmail;case"removeFromSchool":return e.appLinks.bulkActionsActionDetails.removeFromSchool}i.Q.Ry.throw(new h.H("Missing switch statement case for ".concat(a.action," in BulkUserActionsContinueButton.tsx")))}();case"action-details":return e.appLinks.bulkActionsConfirmation[null==a?void 0:a.subAction];default:return null}}(),onClick:function(){return y.I.onClickNext(a,e.currentStep)},disabled:c},r.createElement(s.x,{namespace:A,phrase:"next"})):r.createElement(r.Fragment,null)}var E=n(149),C=n(17291),w=n(79352),L=n(76881),x=n(89476);function I(){return r.createElement(r.Fragment,null,r.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.75rem",width:"15rem"}}),r.createElement("div",{className:"partial-loading-background mb-3",style:{height:"1.5rem",width:"12rem"}}),r.createElement("div",{className:"partial-loading-background mb-2",style:{height:"8em",width:"40rem"}}))}const N={wizardContent:"UBwkq"};function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var F="userManager.bulkUserActionsWizardLayout",U="bulk-user-actions-wizard";function M(e){var t,n,u,s=(n=(0,o.D)(d.g.BULK_USER_ACTIONS),u=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(n,u)||function(e,t){if(e){if("string"==typeof e)return T(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?T(e,t):void 0}}(n,u)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=s[0],f=s[1],v=(0,x.f)();function h(){var t,n;if(p){var r={step:e.currentStep,userCount:null!==(n=null===(t=null==p?void 0:p.userIdMap)||void 0===t?void 0:t.size)&&void 0!==n?n:0},a=y.I.getAnalyticsActionName(p);a&&(r.action=a),l.k.logUserAction(r,{workflowPhase:c.eu.Discard,actionType:c.Vw.BulkAction,location:c.LZ.BulkUserActionsWizard,entity:c.py.User})}}r.useEffect(function(){var t;return(null===(t=null==p?void 0:p.userIdMap)||void 0===t?void 0:t.size)||e.preventRedirect?e.preventNavLock?void 0:(v.lock({id:U,title:a.T.getPhrase(F,"navLockTitle"),text:a.T.getPhrase(F,"navLockBody"),appLinkWhitelist:E.b.getWizardAppLinks(e.appLinks),onConfirmUnlock:function(){h(),f({})}}),function(){v.unlock(U)}):(i.Q.C$.trigger(e.appLinks.userManager,{replace:!0}),void h())},[]);var b=e.loaded&&!!(null===(t=e.users)||void 0===t?void 0:t.length),g=E.b.getSteps(e.userType,e.userCount,e.appLinks,null==p?void 0:p.action);return r.createElement(k.D,null,r.createElement("div",{className:"px-3"},r.createElement(C.C,{title:a.T.getPhrase(F,"bulkActions"),currentStep:e.currentStep,hideHeader:e.hideHeader,loaded:e.loaded,continueButton:r.createElement(S,{currentStep:e.currentStep,appLinks:e.appLinks,onFinish:function(){f({})}}),backButton:r.createElement(m,{currentStep:e.currentStep,appLinks:e.appLinks}),breadcrumbs:[{name:a.T.getPhrase(F,"settingsBreadcrumb"),appLink:e.appLinks.settings},{name:a.T.getPhrase(F,e.userType===L.Y.Learner?"studentManager":"staffManager"),appLink:e.appLinks.userManager},{name:a.T.getPhrase(F,"bulkActions"),active:!0}]}),r.createElement("div",{className:"row g-0"},r.createElement("div",{className:"col-3"},r.createElement(w.a,{steps:g,currentStep:e.currentStep,disableAppLinks:!b||e.disableAppLinks})),r.createElement("div",{className:"col-9 ".concat(N.wizardContent)},b?e.children:r.createElement(I,null)))))}},12458:(e,t,n)=>{n.d(t,{I:()=>c});var r=n(1048),a=n(49985),i=n(65858),o=n(58739),l=["userIdMap","params","action","subAction","allUsersSelected","allUsersCount","scrollContainer"],c={getAnalyticsActionName:function(e){if(!(null==e?void 0:e.action))return null;switch(e.action){case"activation":return(null==e?void 0:e.subAction)?"deactivate"===e.subAction?"Deactivate":"Reactivate":"Deactivate / reactivate";case"addToClassroom":return"Add to classroom";case"changeYearGroup":return"Change year level";case"delete":return"Delete user";case"resetEmail":return"Send password reset email";case"activationEmail":return"Send account activation email";case"resetPassword":return"Reset password";case"yearGroupRollover":return"Annual year level rollover";case"removeFromSchool":return"Remove user";default:return null}},onClickNext:function(e,t){if(e){var n={userCount:e.userIdMap.size,step:t},o=c.getAnalyticsActionName(e);o&&(n.action=o);var u=r.t.omit(e,l);Object.keys(u).length&&(n.actionData=u),a.k.logUserAction(n,{location:i.LZ.BulkUserActionsWizard,workflowPhase:i.eu.Next,actionType:i.Vw.BulkAction,entity:i.py.User})}},logYearGroupRolloverEntry:function(e){a.k.logUserAction({action:c.getAnalyticsActionName({action:"yearGroupRollover"})},{entity:i.py.User,actionType:i.Vw.BulkAction,workflowPhase:i.eu.Start,location:e})},getJobStatus:function(e){switch(e){case o.K.Completed:return"Success";case o.K.CompletedWithError:return"Completed with some errors";case o.K.Failed:return"Failed";default:return null}}}},17291:(e,t,n)=>{n.d(t,{C:()=>o});var r=n(32735),a=n(49935),i=n(96728);function o(e){var t=r.useContext(i.e).showButtons;return r.createElement("div",{className:"d-flex justify-content-between"},e.hideHeader?r.createElement("div",null):r.createElement("div",null,r.createElement("h1",{className:"h2"},e.title),e.breadcrumbs&&r.createElement("div",{className:"pb-3"},r.createElement(a.Oo,{breadcrumbs:e.breadcrumbs}))),e.loaded&&t&&r.createElement("div",{className:"d-flex align-items-center"},e.backButton,e.continueButton))}},79352:(e,t,n)=>{n.d(t,{a:()=>c});var r=n(32735),a=n(23481),i=n(15611),o=a.T.encloseNamespace("shared.wizardStepList");function l(e){var t,n,a,o,l,c=r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex"},!e.hideStepNumber&&r.createElement("div",{className:"flex-shrink-0 flex-grow-0"},"".concat(e.index+1,".")," "),r.createElement("div",null,e.text)),e.subText&&r.createElement("div",{className:"ms-2 ps-1 pt-1"},e.subText)),u="px-2 py-1 mb-1 rounded d-inline-block";return e.isSelected&&(u+=" ".concat((null===(t=e.theme)||void 0===t?void 0:t.isSelectedOverride)||"bg-light-blue fw-semibold")),!e.isSelected&&e.isCompleted&&(u+=" ".concat((null===(n=e.theme)||void 0===n?void 0:n.isCompletedOverride)||"text-info")),e.disabled&&(u+=" text-muted cursor-default"),r.createElement("li",{className:null===(a=e.theme)||void 0===a?void 0:a.item},e.isCompleted&&e.appLink?r.createElement(i.F,{appLink:e.disabled?null:e.appLink,className:"".concat(u," ").concat((null===(o=e.theme)||void 0===o?void 0:o.itemContent)||"")},c):r.createElement("div",{className:"".concat(u," ").concat((null===(l=e.theme)||void 0===l?void 0:l.itemContent)||"")},c))}function c(e){var t,n=e.steps.reduce(function(t,n,r){return n.id===e.currentStep&&(t=r+1),t},1);return r.createElement(r.Fragment,null,r.createElement("h2",{className:"h4"},o("stepNumber",{currentStep:n,totalSteps:e.steps.length})),r.createElement("ol",{className:"list-unstyled ".concat((null===(t=e.theme)||void 0===t?void 0:t.itemsContainer)||"")},e.steps.map(function(t,a){var i=t.id===e.currentStep,o=n>a+1;return r.createElement(l,{index:a,key:t.id,text:t.text,subText:t.subText,isSelected:i,isCompleted:o,appLink:!e.disableAppLinks&&t.appLink,disabled:t.disabled,theme:e.theme})})))}},58739:(e,t,n)=>{var r;n.d(t,{K:()=>r}),function(e){e[e.Submitted=0]="Submitted",e[e.Queued=1]="Queued",e[e.Pending=2]="Pending",e[e.InProgress=3]="InProgress",e[e.Completed=4]="Completed",e[e.CompletedWithError=5]="CompletedWithError",e[e.Failed=6]="Failed"}(r||(r={}))},60115:(e,t,n)=>{n.d(t,{K:()=>u});var r=n(32735),a=n(50242),i=n(91967),o=400,l=n(45719);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e,t,n,u,s,d){var p,f,m,v,h=(p=(0,r.useState)(0),f=2,function(e){if(Array.isArray(e))return e}(p)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(p,f)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(e,t):void 0}}(p,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),b=h[0],y=h[1],k=t,g=(0,l.P)(function(t){if(!e)return null;var n=e(t);return n?n.key:null},u,s);return m={fetchNextPage:function(){if(t&&e&&g)return y(function(e){return e+1}),k(g.nextCursor)},hasMore:!!(null==g?void 0:g.nextCursor),isFetching:null==g?void 0:g.isFetching,scrollContainer:d},v=function(){if(!m.isFetching){if(m.scrollContainer){var e=m.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-o)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-o)return;m.fetchNextPage()}},(0,r.useEffect)(function(){var e=i.q.throttle(v,200),t=m.scrollContainer||window;return m.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}},[m.hasMore,m.fetchNextPage,m.scrollContainer]),(0,r.useEffect)(function(){g&&g.shouldInitialFetch&&t&&(k(),y(function(e){return e+1}))},[null==g?void 0:g.shouldInitialFetch,t]),(0,r.useEffect)(function(){var e,t;if((null==g?void 0:g.statusCode)&&i.q.isFunction(n)){var r=+(null===(t=null===(e=g.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));r!==a.k.ClientError&&r!==a.k.ServerError||n(b,g.statusCode)}},[null==g?void 0:g.statusCode]),{items:null==g?void 0:g.items,hasMore:!!(null==g?void 0:g.nextCursor),nextCursor:null==g?void 0:g.nextCursor,isFetching:null==g?void 0:g.isFetching,totalItems:null==g?void 0:g.totalItems,hasFirstPageCompleted:null==g?void 0:g.hasFirstPageCompleted}}},88323:(e,t,n)=>{n.d(t,{h:()=>E});var r=n(20354),a=n(32735),i=n(70680),o=n(81886),l=n(2948),c=n(49985),u=n(65858),s=n(90417),d=n(89422),p=n(38143),f=n(69217),m=n(60115),v=n(89476);function h(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function i(n,r,a,i){var c=r&&r.prototype instanceof l?r:l,u=Object.create(c.prototype);return b(u,"_invoke",function(n,r,a){var i,l,c,u=0,s=a||[],d=!1,p={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(t,n){return i=t,l=0,c=e,p.n=n,o}};function f(n,r){for(l=n,c=r,t=0;!d&&u&&!a&&t<s.length;t++){var a,i=s[t],f=p.p,m=i[2];n>3?(a=m===r)&&(c=i[(l=i[4])?5:(l=3,3)],i[4]=i[5]=e):i[0]<=f&&((a=n<2&&f<i[1])?(l=0,p.v=r,p.n=i[1]):f<m&&(a=n<3||i[0]>r||r>m)&&(i[4]=n,i[5]=r,p.n=m,l=0))}if(a||n>1)return o;throw d=!0,r}return function(a,s,m){if(u>1)throw TypeError("Generator is already running");for(d&&1===s&&f(s,m),l=s,c=m;(t=l<2?e:c)||!d;){i||(l?l<3?(l>1&&(p.n=-1),f(l,c)):p.n=c:p.v=c);try{if(u=2,i){if(l||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,l<2&&(l=0)}else 1===l&&(t=i.return)&&t.call(i),l<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),l=1);i=e}else if((t=(d=p.n<0)?c:n.call(r,p))!==o)break}catch(t){i=e,l=1,c=t}finally{u=1}}return{value:t,done:d}}}(n,a,i),!0),u}var o={};function l(){}function c(){}function u(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(b(t={},r,function(){return this}),t),d=u.prototype=l.prototype=Object.create(s);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,u):(e.__proto__=u,b(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return c.prototype=u,b(d,"constructor",u),b(u,"constructor",c),c.displayName="GeneratorFunction",b(u,a,"GeneratorFunction"),b(d),b(d,a,"Generator"),b(d,r,function(){return this}),b(d,"toString",function(){return"[object Generator]"}),(h=function(){return{w:i,m:p}})()}function b(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}b=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var i=function(t,n){b(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},b(e,t,n,r)}function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return l}}(e,t)||k(e,t)||function(){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 k(e,t){if(e){if("string"==typeof e)return g(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?g(e,t):void 0}}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var A=n(31949),S=n(18087),E=function(e){var t,n=(0,S.Y)(e);return function(e){var t,n,b,A=h().m(M),S=e.appLinks,E=e.getUsersRequest,C=y((0,l.D)(p.g.BULK_USER_ACTIONS),2),w=C[0],L=C[1],x=(0,i.I0)(),I=(0,v.f)(),N=y(a.useState(!0),2),T=N[0],F=N[1],U=a.useRef({keys:null===(t=null==w?void 0:w.userIdMap)||void 0===t?void 0:t.keys(),pages:{}});function M(e,t){var n;return h().w(function(r){for(;;)switch(r.n){case 0:if(!(t-- >0)){r.n=3;break}if(n=e.next().value){r.n=1;break}return r.a(2);case 1:return r.n=2,n;case 2:r.n=0;break;case 3:return r.a(2)}},A)}function O(e){var t;if(!(null===(t=null==w?void 0:w.userIdMap)||void 0===t?void 0:t.size)||!U.current.keys)return null;if(U.current.pages[e]){var n=U.current.pages[e];return n.length?E(n):null}var r,a=function(e){if(Array.isArray(e))return g(e)}(r=M(U.current.keys,d.K.USER_PAGE_LIMIT))||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||k(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();return U.current.pages[e]=a,a.length?E(a):(F(!1),null)}function j(e){var t=O(e);if(t)return r.a.getFetch(x)(t)}var P=(0,m.K)(O,j,null,function(e){return e},function(e){var t;return null===(t=e[e.length-1])||void 0===t?void 0:t.id},null==w?void 0:w.scrollContainer),B=P.items,D=P.isFetching,R=P.nextCursor,_=(0,f.N)();function z(){var e;return null===(e=null==w?void 0:w.userIdMap)||void 0===e?void 0:e.size}var G=null!==(n=null==B?void 0:B.filter(function(e){var t;return w.userIdMap.has(null===(t=null==e?void 0:e.id)||void 0===t?void 0:t.toString())}))&&void 0!==n?n:[];return a.useEffect(function(){(null==w?void 0:w.userIdMap)&&!w.userIdMap.size&&setTimeout(function(){I.unlock(s.N),o.Q.C$.trigger(S.userManager,{replace:!0})},0)},[null===(b=null==w?void 0:w.userIdMap)||void 0===b?void 0:b.size,D]),{users:G,isFetching:D,removeUser:function(e){w.userIdMap.delete(e.id.toString()),L("allUsersSelected",!1),_(),c.k.logUserAction({id:e.id.toString(),userCount:z()},{location:u.LZ.BulkUserActionsWizard,entity:u.py.User,actionType:u.Vw.Remove})},hasMore:T,fetchNext:function(){return j(R)},count:z(),setAllUserIds:function(e){var t=new Map;e.forEach(function(e){t.set(e,!0)}),L({userIdMap:t,allUsersSelected:!0,allUsersCount:t.size}),U.current.keys=t.keys(),_()}}}({customerId:null===(t=r.a.useBasicFetch(A.N.currentUser()).data)||void 0===t?void 0:t.customerId,userType:e,appLinks:n,getUsersRequest:A.N.usersById})}}}]);
3
+ //# sourceMappingURL=8323-82f5c83bd1-lite.chunk.js.map