@clickview/lite 0.78.0-rc.2 → 0.78.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.
- package/dist/bundles.json +1 -1
- package/dist/scripts/1109-08a4817edf-lite.chunk.js +2 -0
- package/dist/scripts/1109-08a4817edf-lite.chunk.js.map +1 -0
- package/dist/scripts/147-32fa5e188f-lite.chunk.js +2 -0
- package/dist/scripts/147-32fa5e188f-lite.chunk.js.map +1 -0
- package/dist/scripts/1667-f433e796a4-lite.chunk.js +3 -0
- package/dist/scripts/1667-f433e796a4-lite.chunk.js.map +1 -0
- package/dist/scripts/7601-15d87831f8-lite.chunk.js +2 -0
- package/dist/scripts/7601-15d87831f8-lite.chunk.js.map +1 -0
- package/dist/scripts/9843-e38ac7ac57-lite.chunk.js +2 -0
- package/dist/scripts/9843-e38ac7ac57-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-fe9643b6ef.min.js → bundle-7c64909c44.min.js} +3 -3
- package/dist/scripts/{bundle-fe9643b6ef.min.js.map → bundle-7c64909c44.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1109-5dc981556c-lite.chunk.js +0 -2
- package/dist/scripts/1109-5dc981556c-lite.chunk.js.map +0 -1
- package/dist/scripts/147-291667472e-lite.chunk.js +0 -2
- package/dist/scripts/147-291667472e-lite.chunk.js.map +0 -1
- package/dist/scripts/1667-e5e6c0c0e0-lite.chunk.js +0 -3
- package/dist/scripts/1667-e5e6c0c0e0-lite.chunk.js.map +0 -1
- package/dist/scripts/7601-b25d1772bb-lite.chunk.js +0 -2
- package/dist/scripts/7601-b25d1772bb-lite.chunk.js.map +0 -1
- package/dist/scripts/9843-7b3aab0fbe-lite.chunk.js +0 -2
- package/dist/scripts/9843-7b3aab0fbe-lite.chunk.js.map +0 -1
- /package/dist/scripts/{1667-e5e6c0c0e0-lite.chunk.js.LICENSE.txt → 1667-f433e796a4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-fe9643b6ef.min.js.LICENSE.txt → bundle-7c64909c44.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1109],{5798:(e,t,n)=>{n.d(t,{b:()=>o});var a=n(32735);const r={globalIdpButton:"tAlj0",globalIdpImage:"O94yo"};function i(e){var t=e.idp,n=e.onClick,i=e.backgroundColour,l=void 0===i?"F8981D":i,o=e.foregroundColour,c=void 0===o?"FFF":o,u=e.last,s=e.isGlobalIdp,d=u?"":"mb-3",m={backgroundColor:"#".concat(t.backgroundColour||l),color:"#".concat(t.foregroundColour||c)},p=s?"btn btn-lg btn-outline-dark w-100 ".concat(d," ").concat(r.globalIdpButton):"btn btn-lg w-100 ".concat(d),g=s?{}:m,b=s?"Continue with ".concat(t.name):t.name;return a.createElement("button",{className:p,style:g,onClick:function(){return n(t)}},s&&t.logoUrl&&a.createElement("img",{src:t.logoUrl,className:r.globalIdpImage,alt:"".concat(t.name," logo")}),b)}const l={divider:"FfyN0"};function o(e){var t,n=(null===(t=e.idps)||void 0===t?void 0:t.filter(function(e){return!!e.visible}))||[];if(!n.length)return a.createElement(a.Fragment,null);function r(t){var n=window.location.pathname+window.location.search,a="/challenge?idp=".concat(t.id)+"&redirectUrl="+encodeURIComponent(n);"attribution"in e&&(a+="&attribution="+encodeURIComponent(e.attribution)),window.location.href=a}return a.createElement("div",{className:"".concat(e.className?e.className:"")},a.createElement("div",{className:"my-3 border-bottom position-relative ".concat(l.divider)}),n.map(function(t,n){return a.createElement(i,{key:n,idp:t,onClick:"onClick"in e?e.onClick:r,attribution:"attribution"in e?e.attribution:null,isGlobalIdp:!0})}))}},53475:(e,t,n)=>{n.d(t,{N:()=>a});var a={globalIdps:function(e,t){return{url:"{gateway}/v1/auth/identity-providers?countryCode=".concat(e,"&product=").concat(t),key:"global:idps"}}}},48015:(e,t,n)=>{n.d(t,{M:()=>o});var a=n(6044),r=n(20354),i=n(39151),l={countryCode:"us",isFallback:!0};function o(){var e,t,n=r.a.useBasicFetch(i.L.geoLocation()),o=null===(t=null===(e=a.Ab.GetQuery())||void 0===e?void 0:e.countryCode)||void 0===t?void 0:t.toLowerCase();return o?{countryCode:o}:n.hasCompleted&&!n.data?l:n.data}},19623:(e,t,n)=>{n.d(t,{P:()=>g});var a=n(32735),r=n(81886),i=n(23481),l=n(5798),o=n(98027),c=n(15611),u=n(83345),s=n(14070),d=n(97291),m="launchpad.signInButtons",p=i.T.encloseNamespace(m);function g(e){a.useEffect(function(){e.skipPrompt&&r.Q.Ab.PageLoad(r.Q.C$.getHref(t))},[]);var t=function(){var t=r.Q.Ab.GetQuery(),n={};if(e.customerId&&(n.customerId=e.customerId,delete t.customerId),e.skipPrompt&&delete t.skipPrompt,e.redirectUrl)n.redirectUrl=e.redirectUrl;else{var a=r.Q.Ab.SerializeQueryParams(t);n.redirectUrl=r.Q.Ab.GetCurrentPath()+(a?"?"+a:"")}return e.showSignUp&&(n.showSignUp=!0),{application:d.O.DEFAULT,action:s.e.Default.CHALLENGE,params:n}}();return a.createElement(a.Fragment,null,a.createElement(c.F,{className:"btn btn-lg btn-dark w-100 mt-4",appLink:t},a.createElement(u.x,{namespace:m,phrase:e.pageAppLinkString?"signInToWatch":"signIn"})),e.showJoinCode?a.createElement(c.F,{className:"btn btn-link info-link btn-lg w-100 mt-2",appLink:{application:d.O.LAUNCHPAD,action:s.e.Launchpad.JOIN_CLASSROOM_PROMPT}},p("enterCode")):a.createElement(a.Fragment,null,a.createElement(c.F,{className:"btn btn-lg btn-outline-dark w-100 mt-3",appLink:{application:d.O.LAUNCHPAD,action:s.e.SignUp.SIGN_UP,params:{pageAppLinkString:e.pageAppLinkString}}},p("signUp")),a.createElement(l.b,{idps:e.globalIdps,attribution:(0,o.w)()})))}},71109:(e,t,n)=>{n.r(t),n.d(t,{LoginLandingView:()=>L});var a=n(32735),r=n(23481),i=n(20354),l=n(65858),o=n(2786),c=n(26339),u=n(4594),s=n(12754),d=n(53475),m=n(43012),p=n(20768),g=n(1575),b=n(48015),f=n(79612),v=n(31908),h=n(97027),y=n(7179),C=n(33192),k=n(19623),E=n(408);const U={logo:"Je2Pi",formContainer:"MfLVl"};var P=r.T.encloseNamespace("classrooms.loginLanding");function L(e){var t,n,r,L,I=(0,b.M)(),w=i.a.useBasicFetch((null==I?void 0:I.countryCode)&&d.N.globalIdps(I.countryCode,s.x.Primary));(0,f.M)(e.isLoginMetadata?{title:P("title"),description:P("description"),allowIndexing:!0,canonicalLink:C.f.getCanonicalLink()}:{title:P("title")});var N,A,S=(0,y.P)({id:e.objectId,app:(0,y.e)(e.objectType)},l.LZ.Launchpad),O=S.deepLink,T=S.showDeepLink,_=S.onClickDeepLink,j=(0,E.B)().trialAppLinkString,B=(N=e.objectId,A=e.objectType,i.a.useBasicFetch(function(){switch(A){case u.E.Video:return g.R.publicVideo(N);case u.E.Interactive:return p.b.publicInteractiveMetadata(N);case u.E.Clip:return m.e.publicClip(N);default:return null}}()));return e.skipPrompt||B.isFetching||!w.hasCompleted?a.createElement(a.Fragment,null):a.createElement(h.Zf,{title:null===(t=B.data)||void 0===t?void 0:t.name,imageUrl:null===(n=v.M.getThumbnail(B.data))||void 0===n?void 0:n.url,objectType:e.objectType,links:[{text:P("openInApp"),url:O,hide:!T,onClick:_}]},a.createElement("div",{className:"".concat(U.formContainer," m-auto")},a.createElement("div",{className:"".concat(U.logo," mb-4 mx-auto")},a.createElement(o.$S,null)),!!(null===(r=B.data)||void 0===r?void 0:r.name)&&a.createElement("h1",{className:"h3"},v.M.isVideo(B.data)&&a.createElement(c.$,{type:"series",video:B.data,analyticsOptions:{},size:"sm"}),B.data.name),(null===(L=B.data)||void 0===L?void 0:L.description)&&a.createElement("p",{className:"mb-0 clamp-3"},B.data.description),a.createElement(k.P,{customerId:e.customerId,skipPrompt:e.skipPrompt,showJoinCode:e.showJoinCode,redirectUrl:e.redirectUrl,pageAppLinkString:j,showSignUp:e.showSignUp,globalIdps:w.data})))}},408:(e,t,n)=>{n.d(t,{B:()=>l});var a=n(2948),r=n(86702);function i(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}function l(){var e,t,n=(e=(0,a.D)(r.y.OPEN_IN_APP_DATA),t=1,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,i,l,o=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(o.push(a.value),o.length!==t);c=!0);}catch(e){u=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(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.")}())[0];return{trialAppLinkString:function(){if(n&&["videos","clips","series","playlists","topics","interactives"].includes(n.app)){var e=n.id;switch(n.app){case"videos":return"video:".concat(e);case"playlists":return"playlist:".concat(e);case"series":return"series:".concat(e);case"topics":return"topic:".concat(e);case"interactives":return"interactive:".concat(e);case"clips":return"clip:".concat(e)}}}()}}},97027:(e,t,n)=>{n.d(t,{Hq:()=>d,x_:()=>m,Zf:()=>g});var a=n(32735),r=n(54610),i=n(4594),l=n(67453),o=n(99742);const c={left:"vIypY",leftTextImage:"YViNj",right:"MkD4u",blur:"X6mCh",imageContainer:"bc7kz",imagePosition:"JOhEj",image:"Ef2QR",thumbnail:"Gdurb",tallposter:"fjVNK",cover:"o3j31",linksContainer:"AT9Dk"};function u(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,i,l,o=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(o.push(a.value),o.length!==t);c=!0);}catch(e){u=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(u)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return s(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)?s(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 s(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=[{bgUrl:o.W.LaunchPad.BG_1},{bgUrl:o.W.LaunchPad.BG_2},{bgUrl:o.W.LaunchPad.BG_3},{bgUrl:o.W.LaunchPad.BG_4},{bgUrl:o.W.LaunchPad.BG_5}],m=[{bgUrl:o.W.LaunchPad.PRODUCT.BG_1},{bgUrl:o.W.LaunchPad.PRODUCT.BG_2},{bgUrl:o.W.LaunchPad.PRODUCT.BG_3},{bgUrl:o.W.LaunchPad.PRODUCT.BG_4},{bgUrl:o.W.LaunchPad.PRODUCT.BG_5},{bgUrl:o.W.LaunchPad.PRODUCT.BG_6},{bgUrl:o.W.LaunchPad.PRODUCT.BG_7},{bgUrl:o.W.LaunchPad.PRODUCT.BG_8},{bgUrl:o.W.LaunchPad.PRODUCT.BG_9}];function p(e){switch(e){case i.E.Video:case i.E.Interactive:case i.E.Clip:return c.thumbnail;case i.E.Subject:case i.E.Playlist:return c.cover;case i.E.Series:return c.tallposter;default:return""}}function g(e){var t,n=u(a.useState(!1),2),i=n[0],o=n[1],s=u(a.useState(""),2),d=s[0],g=s[1],b=l.j.createUrl(e.imageUrl,{size:r.h2.Large}),f=m;return a.useEffect(function(){if(!b&&f&&0!==f.length){var e,t=(e=f)[Math.floor(Math.random()*e.length)];t.bgUrl&&g(t.bgUrl)}},[]),a.useEffect(function(){if(b){var e=new Image;return e.onload=function(){return o(!0)},e.src=b,function(){return e.onload=null}}},[]),a.createElement("div",{className:"d-flex"},e.leftComponent?e.leftComponent():a.createElement("div",{className:"".concat(c.left," ").concat(d?"bg-blue d-flex align-items-center":"bg-light")},d?a.createElement("img",{className:"img-fluid",src:d,draggable:!1}):i&&a.createElement(a.Fragment,null,a.createElement("div",{className:c.blur,style:{backgroundImage:"url('".concat(b,"')")}}),a.createElement("div",{className:"".concat(c.imageContainer," ").concat(p(e.objectType))},a.createElement("div",{className:c.imagePosition},a.createElement("img",{className:c.image,src:b,alt:e.title}))))),a.createElement("div",{className:"".concat(c.right," bg-white d-flex flex-column")},a.createElement("div",{className:"position-absolute d-flex align-items-center ".concat(c.linksContainer)},null===(t=e.links)||void 0===t?void 0:t.map(function(e,t){return e.hide?a.createElement(a.Fragment,{key:t}):a.createElement("a",{key:t,href:e.url,className:"info-link fw-semibold",onClick:e.onClick},e.text)})),e.children))}}}]);
|
|
2
|
+
//# sourceMappingURL=1109-08a4817edf-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/1109-08a4817edf-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/general/idp-button/idp-button.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/idp-button/IdpButton.tsx","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/global-idps.scss","file:///app/packages/libs/shared/src/apps/sign-up/components/general/global-idps/GlobalIdps.tsx","file:///app/packages/libs/shared/src/flight-requests/AuthRequests.ts","file:///app/packages/libs/shared/src/hooks/useGeoLocation.ts","file:///app/packages/projects/lite/src/apps/launchpad/components/sign-in-buttons/SignInButtons.tsx","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/login-landing.scss","file:///app/packages/projects/lite/src/apps/launchpad/views/login-landing/LoginLandingView.tsx","file:///app/packages/projects/lite/src/apps/sign-up/hooks/useTrialAppLink.tsx","file:///app/packages/projects/lite/src/shared/components/launchpad/launchpad.scss","file:///app/packages/projects/lite/src/shared/components/launchpad/Launchpad.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"globalIdpButton\":\"tAlj0\",\"globalIdpImage\":\"O94yo\"};","import * as React from 'react';\n\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\n\nimport styles from './idp-button.scss';\n\ninterface IdpButtonProps {\n idp: IdentityProvider;\n onClick: (provider: IdentityProvider) => void;\n backgroundColour?: string;\n foregroundColour?: string;\n attribution?: string;\n\n isGlobalIdp: boolean;\n\n /**\n * Because rendering globalIdps is conditional. We have a \"Don't have an account\" link at the bottom\n * which uses margin top. So the last item in this view must not have a margin bottom. - Sha\n */\n last?: boolean;\n}\n\nexport function IdpButton(props: IdpButtonProps): React.ReactElement {\n const {\n idp,\n onClick,\n backgroundColour = 'F8981D',\n foregroundColour = 'FFF',\n last,\n isGlobalIdp\n } = props;\n\n const lastButtonClassName = last ? '' : 'mb-3';\n\n const defaultStyle: React.CSSProperties = {\n backgroundColor: `#${idp.backgroundColour || backgroundColour}`,\n color: `#${idp.foregroundColour || foregroundColour}`\n };\n\n const globalStyle: React.CSSProperties = {};\n\n const buttonClass = isGlobalIdp\n ? `btn btn-lg btn-outline-dark w-100 ${lastButtonClassName} ${styles.globalIdpButton}`\n : `btn btn-lg w-100 ${lastButtonClassName}`;\n\n const buttonStyle = isGlobalIdp ? globalStyle : defaultStyle;\n\n const buttonLabel = isGlobalIdp ? `Continue with ${idp.name}` : idp.name;\n\n return (\n <button className={buttonClass} style={buttonStyle} onClick={() => onClick(idp)}>\n {isGlobalIdp && idp.logoUrl && (\n <img src={idp.logoUrl} className={styles.globalIdpImage} alt={`${idp.name} logo`} />\n )}\n {buttonLabel}\n </button>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"divider\":\"FfyN0\"};","import React from 'react';\n\nimport { IdpButton } from 'libs/shared/apps/sign-up/components/general/idp-button/IdpButton';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\n\nimport styles from './global-idps.scss';\n\ninterface AuthIdpProps {\n idps: IdentityProvider[];\n onClick: (idp: IdentityProvider) => void;\n className?: string;\n}\n\ninterface LiteIdpProps {\n idps: IdentityProvider[];\n className?: string;\n attribution: string;\n}\n\ntype GlobalIdpsProps = AuthIdpProps | LiteIdpProps\n\nexport function GlobalIdps(props: GlobalIdpsProps): JSX.Element {\n const visibleIdps = props.idps?.filter(idp => !!idp.visible) || [];\n \n if (!visibleIdps.length)\n return <></>;\n\n function onClick(idp: IdentityProvider): void {\n const currentPathAndQuery = window.location.pathname + window.location.search;\n\n /**\n * Intentionally not using LocationUtils as to not bring a large number of dependencies into Auth - Sha\n */\n let href = `/challenge?idp=${idp.id}`\n + '&redirectUrl=' + encodeURIComponent(currentPathAndQuery);\n \n if ('attribution' in props)\n href += '&attribution=' + encodeURIComponent(props.attribution);\n\n window.location.href = href;\n }\n\n return (\n <div className={`${props.className ? props.className : ''}`}>\n <div className={`my-3 border-bottom position-relative ${styles.divider}`}></div>\n {visibleIdps.map((p, i) => (\n <IdpButton\n key={i}\n idp={p}\n onClick={'onClick' in props ? props.onClick : onClick}\n attribution={'attribution' in props ? props.attribution : null}\n isGlobalIdp\n />\n ))}\n </div>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\n\nexport const AuthRequests = {\n globalIdps(countryCode: string, product: ProductId): Flight.Request {\n return {\n url: `{gateway}/v1/auth/identity-providers?countryCode=${countryCode}&product=${product}`,\n key: 'global:idps'\n };\n }\n};","import { LocationUtils } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { GeoLocation } from 'libs/shared/interfaces/responses/GeoLocation';\n\nconst FALLBACK_COUNTRY: GeoLocation = {\n countryCode: 'us',\n isFallback: true\n};\n\nexport function useGeoLocation(): GeoLocation {\n const geoLocation = Flight.useBasicFetch<GeoLocation>(ConfigRequests.geoLocation());\n\n const countryCode = LocationUtils.GetQuery()?.countryCode?.toLowerCase();\n \n if (countryCode)\n return { countryCode };\n\n if (geoLocation.hasCompleted && !geoLocation.data)\n return FALLBACK_COUNTRY;\n\n return geoLocation.data;\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { HashObject } from 'libs/analytics/interfaces';\n\nimport { GlobalIdps } from 'libs/shared/apps/sign-up/components/general/global-idps/GlobalIdps';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { getLiteAttributionForAuth } from 'libs/shared/apps/sign-up/utils/getLiteAttributionForAuth';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'launchpad.signInButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface SignInButtonsProps {\n customerId: string;\n skipPrompt: boolean;\n showJoinCode: boolean;\n redirectUrl: string;\n pageAppLinkString: string;\n showSignUp: boolean;\n globalIdps: IdentityProvider[];\n}\n\nexport function SignInButtons(props: SignInButtonsProps): JSX.Element {\n React.useEffect(() => {\n if (!props.skipPrompt)\n return;\n\n Core.LocationUtils.PageLoad(Core.AppLinkHelper.getHref(appLink));\n }, []);\n\n function getAppLink(): Core.AppLink {\n const currentQuery = Core.LocationUtils.GetQuery();\n const params: HashObject = {};\n\n /**\n * Add customerId to the login url and remove it from the redirect url\n */\n if (props.customerId) {\n params.customerId = props.customerId;\n delete currentQuery.customerId;\n }\n\n /**\n * Remove skip prompt from the return url\n */\n if (props.skipPrompt)\n delete currentQuery.skipPrompt;\n\n if (props.redirectUrl) {\n params.redirectUrl = props.redirectUrl;\n } else {\n const serializedQuery = Core.LocationUtils.SerializeQueryParams(currentQuery);\n params.redirectUrl = Core.LocationUtils.GetCurrentPath() + (serializedQuery ? ('?' + serializedQuery) : '');\n }\n\n if (props.showSignUp)\n params.showSignUp = true;\n\n return {\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params\n };\n }\n\n const appLink = getAppLink();\n\n return (\n <>\n <AppLink\n className='btn btn-lg btn-dark w-100 mt-4'\n appLink={appLink}\n >\n <Text namespace={namespace} phrase={props.pageAppLinkString ? 'signInToWatch' : 'signIn'} />\n </AppLink>\n {props.showJoinCode ?\n <AppLink\n className='btn btn-link info-link btn-lg w-100 mt-2'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.Launchpad.JOIN_CLASSROOM_PROMPT\n }}\n >\n {getPhrase('enterCode')}\n </AppLink> :\n <>\n <AppLink\n className='btn btn-lg btn-outline-dark w-100 mt-3'\n appLink={{\n application: AppChannels.LAUNCHPAD,\n action: Actions.SignUp.SIGN_UP,\n params: { pageAppLinkString: props.pageAppLinkString }\n }}\n >\n {getPhrase('signUp')}\n </AppLink>\n <GlobalIdps idps={props.globalIdps} attribution={getLiteAttributionForAuth()} />\n </>\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"Je2Pi\",\"formContainer\":\"MfLVl\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AuthRequests } from 'libs/shared/flight-requests/AuthRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Launchpad } from 'shared/components/launchpad/Launchpad';\nimport { DeepLinkViewModel, mapMasterTypeToDeepLinkApp, useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { SignInButtons } from 'apps/launchpad/components/sign-in-buttons/SignInButtons';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport styles from './login-landing.scss';\n\nconst namespace = 'classrooms.loginLanding';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction useFetchObject(objectId: string, objectType: MasterType): Flight.Response<VideoTypes> {\n function getRequest(): Flight.Request {\n switch (objectType) {\n case MasterType.Video:\n return VideoRequests.publicVideo(objectId);\n case MasterType.Interactive:\n return InteractiveRequests.publicInteractiveMetadata(objectId);\n case MasterType.Clip:\n return ClipRequests.publicClip(objectId);\n default:\n return null;\n }\n }\n\n return Flight.useBasicFetch(getRequest());\n}\n\ninterface LoginLandingProps {\n skipPrompt: boolean;\n showJoinCode: boolean;\n customerId: string;\n showSignUp: boolean;\n redirectUrl: string;\n\n objectType?: MasterType;\n objectId?: string;\n\n /**\n * Set to true when we're specicially on the /login route\n * so that we can provide extra metadata for SEO\n * and allow indexing - Sha\n */\n isLoginMetadata?: boolean;\n}\n\nexport function LoginLandingView(props: LoginLandingProps): React.ReactElement {\n function getInitialDeepLink(): DeepLinkViewModel {\n return {\n id: props.objectId,\n app: mapMasterTypeToDeepLinkApp(props.objectType)\n };\n }\n\n const geoLocation = useGeoLocation();\n const globalIdps = Flight.useBasicFetch<IdentityProvider[]>(\n geoLocation?.countryCode && AuthRequests.globalIdps(geoLocation.countryCode, ProductId.Primary)\n );\n\n useSetPageMetadata(props.isLoginMetadata ? {\n title: getPhrase('title'),\n description: getPhrase('description'),\n allowIndexing: true,\n canonicalLink: SeoHelper.getCanonicalLink()\n } : { title: getPhrase('title') });\n\n const {\n deepLink,\n showDeepLink,\n onClickDeepLink\n } = useDeepLinks(getInitialDeepLink(), LocationContext.Launchpad);\n\n const { trialAppLinkString } = useTrialAppLink();\n\n const obj = useFetchObject(props.objectId, props.objectType);\n\n if (props.skipPrompt || obj.isFetching || !globalIdps.hasCompleted)\n return <></>;\n\n return (\n <Launchpad\n title={obj.data?.name}\n imageUrl={VideoHelper.getThumbnail(obj.data)?.url}\n objectType={props.objectType}\n links={[{\n text: getPhrase('openInApp'),\n url: deepLink,\n hide: !showDeepLink,\n onClick: onClickDeepLink\n }]}\n >\n <div className={`${styles.formContainer} m-auto`}>\n <div className={`${styles.logo} mb-4 mx-auto`}>\n <ClickViewLogo />\n </div>\n {!!obj.data?.name &&\n <h1 className='h3'>\n {VideoHelper.isVideo(obj.data) &&\n <VideoSubText type='series' video={obj.data} analyticsOptions={{}} size='sm' />}\n {obj.data.name}\n </h1>\n }\n {obj.data?.description &&\n <p className='mb-0 clamp-3'>{obj.data.description}</p>\n }\n\n <SignInButtons\n customerId={props.customerId}\n skipPrompt={props.skipPrompt}\n showJoinCode={props.showJoinCode}\n redirectUrl={props.redirectUrl}\n pageAppLinkString={trialAppLinkString}\n showSignUp={props.showSignUp}\n globalIdps={globalIdps.data}\n />\n </div>\n </Launchpad>\n );\n}","import { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { DeepLinkViewModel } from 'shared/hooks/useDeepLinks';\n\nexport function useTrialAppLink() {\n const [viewModel] = useViewModel<DeepLinkViewModel>(ViewModelKeys.OPEN_IN_APP_DATA);\n\n function getTrialAppLinkString() {\n if (!viewModel) {\n return;\n }\n const validApps = [ 'videos', 'clips', 'series', 'playlists', 'topics', 'interactives' ];\n if (!validApps.includes(viewModel.app)) {\n return;\n }\n\n const id = viewModel.id;\n switch (viewModel.app) {\n case 'videos':\n return `video:${id}`;\n case 'playlists':\n return `playlist:${id}`;\n case 'series':\n return `series:${id}`;\n case 'topics':\n return `topic:${id}`;\n case 'interactives':\n return `interactive:${id}`;\n case 'clips':\n return `clip:${id}`;\n }\n }\n\n return {\n trialAppLinkString: getTrialAppLinkString()\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"vIypY\",\"leftTextImage\":\"YViNj\",\"right\":\"MkD4u\",\"blur\":\"X6mCh\",\"imageContainer\":\"bc7kz\",\"imagePosition\":\"JOhEj\",\"image\":\"Ef2QR\",\"thumbnail\":\"Gdurb\",\"tallposter\":\"fjVNK\",\"cover\":\"o3j31\",\"linksContainer\":\"AT9Dk\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './launchpad.scss';\n\nexport const LAUNCHPAD_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.BG_5 }\n];\n\nexport const LAUNCHPAD_PRODUCT_FALLBACK_IMAGES = [\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_1 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_2 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_3 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_4 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_5 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_6 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_7 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_8 },\n { bgUrl: ImageUrls.LaunchPad.PRODUCT.BG_9 }\n];\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst XMAS_URLS: LaunchImage[] = [\n { bgUrl: '/images/launchpad/xmas/2024-promo1-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo2-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo3-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo4-bg.png' },\n { bgUrl: '/images/launchpad/xmas/2024-promo5-bg.png' }\n];\n\nfunction mapObjectTypeToImageClass(objectType: MasterType): string {\n switch (objectType) {\n case MasterType.Video:\n case MasterType.Interactive:\n case MasterType.Clip:\n return styles.thumbnail;\n\n case MasterType.Subject:\n case MasterType.Playlist:\n return styles.cover;\n\n case MasterType.Series:\n return styles.tallposter;\n\n default:\n return '';\n }\n}\n\ninterface LaunchpadLink {\n url: string;\n text: string;\n onClick?: () => void;\n hide?: boolean;\n}\n\ninterface LaunchpadProps {\n objectType?: MasterType;\n title?: string;\n imageUrl?: string;\n links?: LaunchpadLink[];\n leftComponent?: () => JSX.Element;\n}\n\ninterface LaunchImage {\n bgUrl: string;\n}\n\nfunction getRandomImage(urlLists: LaunchImage[]): LaunchImage {\n return urlLists[Math.floor(Math.random() * urlLists.length)];\n}\n\nexport function Launchpad(props: React.PropsWithChildren<LaunchpadProps>): JSX.Element {\n const [ showImage, setShowImage ] = React.useState(false);\n const [ image, setImage ] = React.useState<string>('');\n\n const imageUrl = ImageHelper.createUrl(props.imageUrl, { size: ImageSize.Large });\n const IMAGE_URLS = LAUNCHPAD_PRODUCT_FALLBACK_IMAGES;\n\n React.useEffect(() => {\n if (imageUrl || !IMAGE_URLS || IMAGE_URLS.length === 0)\n return;\n\n const image = getRandomImage(IMAGE_URLS);\n\n if (image.bgUrl) {\n setImage(image.bgUrl);\n }\n }, []);\n\n React.useEffect(() => {\n if (!imageUrl)\n return;\n\n const img = new Image();\n img.onload = () => setShowImage(true);\n img.src = imageUrl;\n return () => img.onload = null;\n }, []);\n\n return (\n <div className='d-flex'>\n { props.leftComponent ?\n props.leftComponent()\n :\n <div\n className={`${styles.left} ${image ? 'bg-blue d-flex align-items-center' : 'bg-light'}`}\n >\n {image ?\n <img className='img-fluid' src={image} draggable={false} /> :\n (showImage &&\n <>\n <div className={styles.blur} style={{ backgroundImage: `url('${imageUrl}')` }} />\n <div className={`${styles.imageContainer} ${mapObjectTypeToImageClass(props.objectType)}`}>\n <div className={styles.imagePosition}>\n <img className={styles.image} src={imageUrl} alt={props.title} />\n </div>\n </div>\n </>\n )\n }\n </div>\n }\n <div className={`${styles.right} bg-white d-flex flex-column`}>\n <div className={`position-absolute d-flex align-items-center ${styles.linksContainer}`}>\n {props.links?.map((link, key) => {\n if (link.hide)\n return <React.Fragment key={key}></React.Fragment>;\n\n return (\n <a key={key} href={link.url} className='info-link fw-semibold' onClick={link.onClick}>\n {link.text}\n </a>\n );\n })}\n </div>\n\n {props.children}\n </div>\n </div>\n );\n}"],"names":["IdpButton","props","idp","onClick","backgroundColour","foregroundColour","last","isGlobalIdp","lastButtonClassName","defaultStyle","backgroundColor","color","buttonClass","buttonStyle","buttonLabel","name","className","style","logoUrl","src","alt","GlobalIdps","visibleIdps","idps","filter","visible","length","currentPathAndQuery","window","location","pathname","search","href","id","encodeURIComponent","attribution","map","p","i","key","AuthRequests","globalIdps","countryCode","product","url","FALLBACK_COUNTRY","isFallback","useGeoLocation","geoLocation","toLowerCase","hasCompleted","data","namespace","getPhrase","SignInButtons","skipPrompt","appLink","currentQuery","params","customerId","redirectUrl","serializedQuery","showSignUp","application","action","getAppLink","phrase","pageAppLinkString","showJoinCode","LanguageService","LoginLandingView","ProductId","useSetPageMetadata","isLoginMetadata","title","description","allowIndexing","canonicalLink","SeoHelper","objectId","objectType","useDeepLinks","app","deepLink","showDeepLink","onClickDeepLink","trialAppLinkString","useTrialAppLink","obj","MasterType","VideoRequests","InteractiveRequests","ClipRequests","getRequest","isFetching","Launchpad","imageUrl","VideoHelper","links","text","hide","ClickViewLogo","VideoSubText","type","video","analyticsOptions","size","viewModel","includes","getTrialAppLinkString","LAUNCHPAD_FALLBACK_IMAGES","bgUrl","ImageUrls","LAUNCHPAD_PRODUCT_FALLBACK_IMAGES","mapObjectTypeToImageClass","showImage","setShowImage","image","setImage","ImageHelper","IMAGE_URLS","urlLists","Math","floor","random","img","Image","onload","leftComponent","draggable","backgroundImage","link","children"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[147],{75097:(e,t,r)=>{r.d(t,{U:()=>o});var n=r(32735),a=r(13170);function o(e){var t=e.count,r=void 0===t?6:t;return n.createElement("div",{className:"d-flex"},n.createElement("div",{className:"d-flex ps-1"},Array(r).fill(null).map(function(e,t){return n.createElement("div",{key:t,className:"".concat(a.Z.partialButton," partial-loading-background mx-1")})})))}},46711:(e,t,r)=>{r.d(t,{G:()=>xe});var n=r(32735),a=r(23481),o=r(81886),l=r(2948),i=r(49985),c=r(65858),s=r(23231),u=r(75097),d=r(10638),m=r(97958),p=r(83345),f="userManager.userManagerSearchEmptyState";function v(e){return n.createElement(m.u,null,n.createElement(m.u.Image,{src:e.imageUrl}),n.createElement(m.u.Heading,null,n.createElement(p.x,{namespace:f,phrase:"heading"})),n.createElement(m.u.Info,null,n.createElement(p.x,{namespace:f,phrase:"info"})))}const y={partialEntries:"TOmcn",partialCreateUser:"Yf4Wx",partialBulkUpload:"sp3ux",partialCheckbox:"REK11",partialYearGroup:"d2NEw",partialName:"qmSU8",partialEmail:"uHYQO",partialAvatar:"Y796I",lastActiveLabel:"aItB8",lastActiveDate:"RMdcx",partialAction:"jn0FO"};function g(){return n.createElement("li",{className:"d-flex align-items-center py-2"},n.createElement("div",{className:"ms-4 me-3 partial-loading-background ".concat(y.partialCheckbox)}),n.createElement("div",{className:"me-2 ms-n1 rounded-circle partial-loading-background ".concat(y.partialAvatar)}),n.createElement("div",{className:"d-flex flex-column justify-content-center me-auto"},n.createElement("div",{className:"pb-1 d-flex align-items-center"},n.createElement("div",null,n.createElement("div",{className:"partial-loading-background align-middle d-inline-block ".concat(y.partialName)}))),n.createElement("div",{className:"partial-loading-background me-1 align-middle d-inline-block ".concat(y.partialEmail)})),n.createElement("div",{className:"d-flex ps-1 me-3 d-flex justify-content-end"},n.createElement("div",{className:"partial-loading-background ".concat(y.partialYearGroup)})),n.createElement("span",{className:"d-flex flex-column me-3"},n.createElement("div",{className:"partial-loading-background mb-1 ".concat(y.lastActiveLabel)}),n.createElement("div",{className:"partial-loading-background ".concat(y.lastActiveDate)})),n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"partial-loading-background ".concat(y.partialAction)}),n.createElement("div",{className:"partial-loading-background ".concat(y.partialAction)})))}function h(){return n.createElement("ul",{className:"m-0 list-unstyled striped-list"},Array(20).fill(null).map(function(e,t){return n.createElement(g,{key:t})}))}var b=r(149),E=r(39739),S=r(76306),k=r(80247),C=r(89422),w=r(11607),A=r(83914),N=r(36532),x=r(35223);const T={iconContainer:"lUFJg",loadingContainer:"b0Mz5"};function U(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var P="shared.bulkSelectionSummary";function O(e){var t,r,o=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,i=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(t,r)||function(e,t){if(e){if("string"==typeof e)return U(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?U(e,t):void 0}}(t,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=o[0],i=o[1];if(!e.selectedCount&&!e.showSelectingSpinner)return n.createElement(n.Fragment,null);var c=!!e.onClickSelectAll&&!e.allSelected&&0!==e.selectAllCount&&e.selectAllCount>C.K.USER_PAGE_LIMIT;return n.createElement("div",{className:"border border-dark rounded-3 d-flex justify-content-between align-items-center p-2 mb-3"},e.showSelectingSpinner?n.createElement("div",{className:"px-2 d-flex align-items-center ".concat(T.loadingContainer)},n.createElement(k.Z,{as:"div",size:"sm",animation:"border",role:"status"})):n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(T.iconContainer," text-white rounded-circle bg-dark me-3 ms-2 d-flex justify-content-center align-items-center")},n.createElement(A.x,{svgName:x.vn.Group})),n.createElement(p.x,{namespace:P,phrase:"selectedCount",options:{smartCount:e.selectedCount,type:e.getTypeText(e.selectedCount)}}),c?l||void 0===e.selectAllCount?n.createElement("div",{className:"px-2 py-1"},n.createElement(k.Z,{as:"div",size:"sm",animation:"border",role:"status"})):n.createElement(w.L,{className:"info-link px-2",onClick:function(){i(!0),e.onClickSelectAll(function(){i(!1)})}},n.createElement(p.x,{namespace:P,phrase:"selectAll",options:{smartCount:e.selectAllCount,type:e.getTypeText(e.selectAllCount)}})):n.createElement(n.Fragment,null)),n.createElement("div",{className:"d-flex"},n.createElement("button",{className:"btn btn-link me-2",onClick:e.onClickDeselectAll},n.createElement(p.x,{namespace:P,phrase:"deselectAll"})),n.createElement(N.u,{spanHack:!0,title:e.hasRostering?a.T.getPhrase(P,"disabled"):""},n.createElement("button",{className:e.hasRostering?"btn btn-outline-dark cursor-default disabled":"btn btn-outline-dark",onClick:e.onClickSelectBulk,disabled:e.hasRostering},n.createElement(p.x,{namespace:P,phrase:"selectBulkAction"}))))))}var j=r(89965),M=r(28469),R=r(38143),L=r(76881),I=r(26055),Y=r(6748);function G(e){var t,r,a=(null===(r=null===(t=e.user.userProfile)||void 0===t?void 0:t.metadata)||void 0===r?void 0:r.jobTitle)||"-";return n.createElement("span",{className:"d-flex flex-column"},n.createElement("small",null,n.createElement(p.x,{namespace:"userManager.userList",phrase:"jobTitle"})),n.createElement("span",{className:"-"===a?"ms-3":""},a))}var D=r(43820),B=r(12528),F=r(37967),_=r(110),H=r(40424),W=r(51530),Z="userManager.userList";function q(e){var t,r,o=function(e,t){if(!function(e,t){return!!e&&t===H.w.Active&&_.O.get(e,"year")>=2e3}(e,t))return"-";var r=_.O.fromNow(e);return"a day ago"===r?a.T.getPhrase(Z,"yesterday"):r.includes("hour")?a.T.getPhrase(Z,"today"):Number.isNaN(+r.substr(0,1))?r.substr(0,1).toUpperCase()+r.substr(1):r}(null===(t=e.user.metadata)||void 0===t?void 0:t.lastSignInTime,e.user.status),l=e.user.id.toString()===(null===(r=e.currentUser)||void 0===r?void 0:r.id.toString());return n.createElement("span",{className:"".concat(W.Z.lastActiveContainer," ").concat(l?W.Z.isCurrentUser:"")},n.createElement("span",{className:"d-flex flex-column"},n.createElement("small",null,n.createElement(p.x,{namespace:Z,phrase:"lastActive"})),n.createElement("span",{className:"-"===o?"ms-3":""},o)))}var V=r(85402);function z(e){var t,r,o=n.useMemo(function(){var t;return null===(t=e.user.authenticationMethods)||void 0===t?void 0:t.sort(function(e){return e.local?1:-1})},[e.user.authenticationMethods]);if(!(null===(t=e.user.authenticationMethods)||void 0===t?void 0:t.length))return n.createElement(n.Fragment,null);var l=null===(r=e.user.authenticationMethods)||void 0===r?void 0:r.find(function(e){return!e.local});return n.createElement("div",{className:"".concat(W.Z.authMethodContainer," d-flex flex-row-reverse justify-content-center ms-n3")},n.createElement(N.u,{title:a.T.getPhrase("userManager.userList",l?"ssoTooltip":"noSsoTooltip"),spanHack:!0},o.map(function(t,r){var a=t.backgroundColour?"#".concat(t.backgroundColour):"#fff";return n.createElement("div",{key:t.displayName,className:"".concat(W.Z.authMethodLogo," rounded-circle border"),style:{zIndex:e.user.authenticationMethods.length-r,backgroundImage:"url(".concat(t.logoUrl,")"),backgroundColor:a}})})))}var K=r(69843),Q=r(76314);var $={table:"striped-list no-full-width pb-3",row:"striped-row rounded",cell:"d-flex align-items-center py-2"},X=n.memo(function(e){var t,r,a,o=n.useContext(I.A),l=(r=e.users,a=e.isChecked,r.map(function(e){return{user:e,checked:a(e.id),isCurrentUser:!1}})),i=function(e){var t=e.onToggleCheckbox,r=e.imageCdnUrl,a=e.currentUser,o=e.appLinks,l=e.products,i=e.onClickResendActivationEmail,c=e.onClickSendResetEmail,s=e.onClickSendVerificationEmail,u=e.onEditUser,d=e.onEditUserOptions,m=e.shouldDisplayAuthenticationMethods,p=e.ssoHelpArticle,f=e.hasRostering,v=e.client,y=e.countryCode,g=[{id:"checkboxes",accessor:function(e){return{id:e.user.id,checked:e.checked}},Cell:function(e){return n.useMemo(function(){return n.createElement("div",{className:"w-100 text-center ms-3 ps-2"},n.createElement(j.X,{id:e.value.id,checked:e.value.checked,onChange:function(){return t(e.value.id)}}))},[])},width:5},{accessor:"user",id:"avatar",Cell:function(e){var t=e.value;return n.useMemo(function(){return t.name?n.createElement("div",{className:"w-100"},n.createElement(Q.u,{user:t,imageCdnUrl:r})):n.createElement("div",{className:"".concat("kq2Bn"," mx-2")},n.createElement(B.f,{svgName:x.vn.User,variant:"blue",svgSize:A.S.ExtraLarge,svgWrapperClassName:"p-1"}))},[])},width:5},{accessor:"user",id:"basicDetails",Cell:function(e){var t=e.value;return n.useMemo(function(){return n.createElement("div",{className:"w-100"},n.createElement(F.t,{user:t,currentUser:a}))},[])},width:50},{accessor:"user",id:"roleOrYearGroup",Cell:function(e){var t=e.value;return n.useMemo(function(){return n.createElement("div",{className:"w-100 text-end"},n.createElement(V.H,{userType:t.userType,user:t,countryCode:y}))},[])},width:11}];return v===D.a.Curator&&g.push({accessor:"user",id:"jobTitle",Cell:function(e){var t=e.value;return n.useMemo(function(){return n.createElement("div",{className:"w-100"},n.createElement(G,{user:t}))},[])},width:8}),g.push({accessor:"user",id:"lastActive",Cell:function(e){var t=e.value;return n.useMemo(function(){return n.createElement("div",{className:"w-100"},n.createElement(q,{user:t,currentUser:a}))},[])},width:8}),m&&g.push({accessor:"user",id:"authMethods",Cell:function(e){var t=e.value;return n.useMemo(function(){return n.createElement("div",{className:"w-100 d-flex justify-content-center"},n.createElement(z,{user:t}))},[])},width:6}),g.push({accessor:"user",id:"actions",Cell:function(e){var t=e.value;return n.useMemo(function(){return n.createElement("div",{className:"w-100"},n.createElement(K.c,{user:t,userType:t.userType,appLinks:o,onClickSendResetEmail:c,onClickResendActivationEmail:i,onClickSendVerificationEmail:s,currentUser:a,ssoHelpArticle:p,products:l,hasRostering:f,onEditUser:u,onEditUserOptions:d}))},[])},width:8}),g}(Object.assign(Object.assign({},e),{products:null!==(t=e.products)&&void 0!==t?t:[],client:o}));return n.createElement(Y.i,{columns:i,data:l,theme:$})}),J=r(20354),ee=r(48288),te=r(90911),re=r(19717);const ne={cell:"Vsgxg"};function ae(e){return ae="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ae(e)}function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function le(e,t,r){return(t=function(e){var t=function(e){if("object"!=ae(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=ae(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ae(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var ie=le(le(le({},L.Y.Learner,"userManager.selectStudentWithSpreadsheet"),L.Y.Staff,"userManager.selectStaffWithSpreadsheet"),L.Y.Unknown,"");function ce(e){var t=ie[e.userType];return n.createElement(p.D.Provider,{value:t},n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"downloadTemplateHeading"})),n.createElement("p",{className:"ms-n1 ps-3"},n.createElement(p.x,{phrase:"downloadTemplateInfo"})),n.createElement("div",{className:"ms-n1 ps-3"},n.createElement("a",{className:"btn btn-outline-dark mx-auto",download:!0,href:e.templateLink},n.createElement(A.x,{svgName:x.vn.Download,className:"svg-container std me-1 ms-n1 align-middle"}),n.createElement("div",{className:"align-middle d-inline-block"},n.createElement(p.x,{phrase:"downloadBtn"}))))),n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"addUsersHeading"})),n.createElement("p",{className:"ms-n1 ps-3"},n.createElement(p.x,{phrase:"addUsersInfo"})),n.createElement("div",{className:"mx-n1 px-3"},n.createElement(function(){return n.createElement(p.D.Provider,{value:ie[e.userType]},n.createElement("table",{cellPadding:5},n.createElement("tbody",null,n.createElement("tr",{className:"text-center bg-light"},n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"a"})),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"b"}))),n.createElement("tr",{className:"fw-semibold"},n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"email"})),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"username"}))),n.createElement("tr",null,n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"exampleEmail"})),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)})),n.createElement("tr",null,n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)}),n.createElement("td",{className:"text-nowrap border border-dark ".concat(ne.cell)},n.createElement(p.x,{phrase:"exampleUsername"}))))))},null))),n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"uploadHeading"})),n.createElement("div",{className:"d-inline-block ms-n1 ps-3 mt-1"},n.createElement("div",{className:"d-inline-block"},n.createElement(ee.H,{onSelectSpreadsheet:function(t){if(re.b.validateEmptySpreadsheetData(t))e.onClickCancel();else{var r=function(e){if(Array.isArray(e))return oe(e)}(s=t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(s)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?oe(e,t):void 0}}(s)||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.")}(),n=r.shift(),a=re.b.validateSelectWithSpreadsheet(n,["Email","Username"]),l=a.isValid,i=a.errorMessage;if(!l)return o.Q.Ry.throw(new te.d(i)),void e.onClickCancel();var c=re.b.buildUserQueryFromSpreadsheet(n,r,e.userType);e.onSelectSpreadsheet(c,t.length)}var s}})))),n.createElement("div",null,n.createElement("div",{className:"h6"},n.createElement(p.x,{phrase:"matchesHeading"})),n.createElement("p",{className:"ms-n1 ps-3"},n.createElement(p.x,{phrase:"matchesInfo"}))))}var se=r(9111);const ue={modalWidth:"KYu7Y"};var de="userManager.selectWithSpreadsheetPopup";function me(e){var t=e.checkboxHelper,r=J.a.useGetFetchAsync(),o=[],l=e.users.length;return n.createElement(se.G,{closePopup:e.closePopup,title:a.T.getPhrase(de,"heading"),showLoadingSpinner:!l,dialogClassName:ue.modalWidth},l&&n.createElement(ce,{userType:e.userType,onSelectSpreadsheet:function(n,a){e.setShowSelectingSpinner(!0);var l=n.map(function(t){return r(e.userRequest(t))});Promise.all(l).then(function(r){r.forEach(function(e){o=o.concat(e)}),t.selectAll(o.map(function(e){return e.toString()})),i.k.logUserAction({userType:e.userType,spreadsheetRowCount:a,totalUsersFound:o.length},{workflowPhase:c.eu.Complete,actionType:c.Vw.Select,entity:c.py.User,descriptor:c.yh.Bulk,location:c.LZ.Popup}),e.setShowSelectingSpinner(!1)}),e.closePopup()},onClickCancel:e.closePopup,templateLink:e.template}))}var pe=r(57900),fe=r(32562),ve=r(12458);function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var ge=r(299);function he(e){return he="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},he(e)}function be(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var Ee=function(e,t){var r,a,o=(0,ge.X)(e,t),l=(r=n.useState({}),a=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,i=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(r,a)||function(e,t){if(e){if("string"==typeof e)return be(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?be(e,t):void 0}}(r,a)||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.")}()),i=l[0],c=l[1];function s(){var e=t.queryParams,r=(e.cursor,e.sort,function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r}(e,["cursor","sort"]));return Object.keys(r).sort().map(function(e){var t=r[e];return Array.isArray(t)?t.sort().join(","):t}).join(":")}return Object.assign(Object.assign({},o),{selectAll:function(e){o.setSelected(e),c(Object.assign(Object.assign({},i),function(e,t,r){return(t=function(e){var t=function(e){if("object"!=he(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=he(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==he(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}({},s(),!0)))},onToggleItem:function(e){o.isChecked(e)&&c({}),o.onToggleItem(e)},onToggleBulk:function(){o.bulkChecked&&c({}),(null==e?void 0:e.length)&&o.onToggleBulk()},reset:function(){c({}),o.reset()},allSelected:!!Object.keys(i).length&&(!!i[""]||i[s()])})};function Se(e){return Se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Se(e)}function ke(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,i=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ce(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ce(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 Ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function we(e,t,r){return(t=function(e){var t=function(e){if("object"!=Se(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=Se(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Se(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ae="userManager.manageUsers",Ne=we(we(we({},L.Y.Learner,"userManager.manageStudents"),L.Y.Staff,"userManager.manageStaff"),L.Y.Unknown,"");function xe(e){var t,r,m,p,f=c.LZ[e.userType===L.Y.Learner?"StudentManager":"StaffManager"],y=Ne[e.userType],g=e.userType===L.Y.Learner?c.LZ.StudentManager:c.LZ.StaffManager,k=ke((0,l.D)(R.g.BULK_USER_ACTIONS),2),w=k[0],A=k[1],N=ke(n.useState(!1),2),x=N[0],T=N[1],U=ke(n.useState(!1),2),P=U[0],I=U[1],Y=Ee(e.users,{persistNamespace:"manage:users:".concat(e.userType),initialState:null==w?void 0:w.userIdMap,queryParams:e.queryParams}),G=function(e){var t,r,n,i,s=(n=(0,l.D)(R.g.BULK_USER_ACTIONS),i=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,l,i=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(i.push(n.value),i.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return i}}(n,i)||function(e,t){if(e){if("string"==typeof e)return ye(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ye(e,t):void 0}}(n,i)||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.")}())[1],u=c.LZ[e.userType===L.Y.Learner?"StudentManager":"StaffManager"],d=[{label:a.T.getPhrase(e.namespace,"export"),appLink:e.appLinks.exportUserList,analyticsOptions:{workflowPhase:c.eu.Start,actionType:c.Vw.Export,entity:c.py.User,location:u},analyticsData:{userType:e.userType}}];if(d.push({label:a.T.getPhrase(e.namespace,"auditLog"),appLink:e.appLinks.auditLog,onClick:function(){pe.SG.set(C.K.AUDIT_LOG_REFERRER_KEY,e.userType)}}),d.push({label:a.T.getPhrase(e.namespace,"selectWithSpreadsheet"),onClick:e.onSelectWithSpreadsheetSelect,analyticsOptions:{workflowPhase:c.eu.Start,actionType:c.Vw.Select,entity:c.py.User,descriptor:c.yh.Bulk,location:u},analyticsData:{userType:e.userType}}),e.userType===L.Y.Learner&&e.yearGroupRolloverStatus&&(null===(t=e.yearGroups)||void 0===t?void 0:t.length)>1){var m=!!(null===(r=e.yearGroupRolloverStatus)||void 0===r?void 0:r.canRollover)&&!e.hasRostering;d.push({label:a.T.getPhrase(e.namespace,"rollover"),appLink:m&&!e.hasRostering&&e.appLinks.bulkActionsActionDetails.yearGroupRollover,disabled:!!e.hasRostering,className:e.hasRostering?"cursor-default disabled":"",tooltip:e.hasRostering?a.T.getPhrase(e.namespace,"editControlledByRostering"):"",onClick:function(){var t;if(m){s({action:"yearGroupRollover",subAction:"yearGroupRollover"});var r=e.userType===L.Y.Learner?c.LZ.StudentManager:c.LZ.StaffManager;ve.I.logYearGroupRolloverEntry(r)}else{var n=new fe.H(null===(t=e.yearGroupRolloverStatus)||void 0===t?void 0:t.previousRolloverDate);o.Q.Ry.throw(n)}}})}return d}(Object.assign(Object.assign({},e),{onSelectWithSpreadsheetSelect:function(){return T(!0)},namespace:y,yearGroups:e.userType===L.Y.Learner?e.yearGroups:[]})),D=n.useRef(!0);function B(){A("allUsersSelected",!1),A("allUsersCount",void 0)}n.useEffect(function(){return function(){D.current&&A("userIdMap",void 0)}},[]),n.useEffect(function(){Y.bulkChecked&&e.totalUsers===Y.getSelectedCount()&&(A("allUsersSelected",!0),A("allUsersCount",e.totalUsers))},[Y.bulkChecked]);var F=n.useMemo(function(){return E.P.getFilters(e.customer,e.userType,e.userType===L.Y.Learner?e.yearGroups:[],e.countryCode)},[null===(t=e.yearGroups)||void 0===t?void 0:t.length,null===(r=e.customer)||void 0===r?void 0:r.id,e.countryCode]),_=!(null===(m=e.currentUser)||void 0===m?void 0:m.id)||e.userType===L.Y.Learner&&!(null===(p=e.yearGroups)||void 0===p?void 0:p.length);return n.createElement(n.Fragment,null,e.hasRostering&&n.createElement(M.P,null),n.createElement("div",{className:"d-flex align-items-center pb-3"},n.createElement("div",{className:"ps-4 pe-1"},n.createElement(j.X,{id:"user-manager",name:"user-manager",checked:Y.bulkChecked,onChange:function(){Y.bulkChecked&&B(),Y.onToggleBulk()},indeterminate:Y.hasSomeSelections()})),n.createElement("div",{className:"me-auto"},_?n.createElement(u.U,{count:3}):n.createElement(d.J,{queryParams:e.queryParams,mainFilters:F,appLink:e.appLinks.userManager,analyticsOptions:{entity:c.py.User,location:f},hideHeading:!0,hideDivider:!0,constantIndices:["user"]})),n.createElement("div",{className:"w-25"},n.createElement(s.W,{id:"user-manager-search-".concat(e.userType),name:"user-manager-search-".concat(e.userType),placeholder:a.T.getPhrase(Ae,"searchBarPlaceholder"),searchAppLink:e.appLinks.search,size:e.searchInputSize,searchIndices:["user"],analyticsOptions:{entity:c.py.User,location:f}})),n.createElement(S.m,{actions:G,dropdownToggleClassName:"btn btn-outline-dark ms-2"})),n.createElement(O,{getTypeText:function(e){return a.T.getPhrase(y,"bulkSelectLabel",{smartCount:e})},selectedCount:Y.getSelectedCount(),onClickSelectAll:function(t){i.k.logUserAction({userCount:Y.getSelectedCount()},{location:g,actionType:c.Vw.Click,descriptor:c._S.SelectAllUsers,entity:c.py.User}),e.fetchUserIds(function(r){Y.selectAll(r);var n=!b.b.hasFilterOrQuery(e.queryParams);A("allUsersSelected",n),n&&A("allUsersCount",r.length),t()})},selectAllCount:e.totalUsers,onClickDeselectAll:function(){B(),Y.reset()},onClickSelectBulk:function(){Y.getSelectedCount()&&(i.k.logUserAction({userCount:Y.getSelectedCount()},{location:g,entity:c.py.User,actionType:c.Vw.BulkAction,workflowPhase:c.eu.Start}),D.current=!1,A("userIdMap",Y.getMap()),o.Q.C$.trigger(e.appLinks.bulkActionsReviewAccounts))},allSelected:Y.allSelected,showSelectingSpinner:P,hasRostering:e.hasRostering}),e.users?e.users.length?n.createElement(X,{users:e.users,currentUser:e.currentUser,imageCdnUrl:e.config.imageCdnUrl,appLinks:e.appLinks,onClickResendActivationEmail:e.onClickResendActivationEmail,onClickSendResetEmail:e.onClickSendResetEmail,onEditUser:e.onEditUser,onEditUserOptions:e.onEditUserOptions,onClickSendVerificationEmail:e.onClickSendVerificationEmail,isChecked:Y.isChecked,onToggleCheckbox:function(e){Y.isChecked(e)&&B(),Y.onToggleItem(e)},ssoHelpArticle:e.ssoHelpArticle,shouldDisplayAuthenticationMethods:e.hasSso,products:e.products,hasRostering:e.hasRostering,countryCode:e.countryCode}):n.createElement(v,{imageUrl:e.searchEmptyState}):n.createElement(h,null),x&&n.createElement(me,{users:e.users,template:e.selectWithSpreadsheetTemplate,userType:e.userType,checkboxHelper:Y,closePopup:function(){T(!1)},setShowSelectingSpinner:I,userRequest:e.userRequest}))}},35495:(e,t,r)=>{r.d(t,{g:()=>b});var n=r(32735),a=r(23481),o=r(83345);const l={partialLoading:"mXgLg"};var i="userManager.userManagerEntries";function c(e){var t,r,a;return n.createElement("p",{className:"mb-0 fw-semibold"},n.createElement(o.x,{namespace:i,phrase:"users",options:{totalShowing:null!==(t=e.totalShowing)&&void 0!==t?t:0,totalUsers:null!==(r=e.totalUsers)&&void 0!==r?r:0,smartCount:null!==(a=e.totalUsers)&&void 0!==a?a:0}}))}function s(){return n.createElement("div",{className:"partial-loading-background ".concat(l.partialLoading," d-inline-block")})}var u=r(49935),d=r(91693),m=r(36532),p=r(76881),f=r(35223);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function y(e,t,r){return(t=function(e){var t=function(e){if("object"!=v(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=v(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==v(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var g="userManager.userManagerHeader",h=y(y(y({},p.Y.Learner,"userManager.studentManagerHeader"),p.Y.Staff,"userManager.staffManagerHeader"),p.Y.Unknown,"");function b(e){var t,r=h[e.userType],l=e.users&&"number"==typeof(null===(t=e.userCount)||void 0===t?void 0:t.count),i=l&&e.users.length;return n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex justify-content-between"},e.headingComponent?n.createElement(n.Fragment,null,e.headingComponent):n.createElement("span",null,n.createElement("h1",{className:"h2"},n.createElement(o.x,{namespace:r,phrase:"heading"})),n.createElement("div",{className:"pb-3"},n.createElement(u.Oo,{breadcrumbs:[{name:a.T.getPhrase(g,"settingsBreadcrumb"),appLink:e.appLinks.settings},{name:a.T.getPhrase(r,"managerBreadcrumb"),active:!0}]}))),n.createElement("span",null,n.createElement(m.u,{spanHack:!0,title:e.hasRostering?a.T.getPhrase(g,"disabled"):"",placement:"left"},n.createElement(d.h,{className:"btn btn-outline-dark",svgName:f.vn.Plus,appLink:e.hasSso?e.appLinks.ssoAddUserConfirm:e.appLinks.addNewUsers,disabled:e.hasRostering},n.createElement(o.x,{namespace:r,phrase:"addNew"}))),n.createElement("div",{className:"text-end mt-1"},l?n.createElement(c,{totalShowing:i,totalUsers:e.userCount.count}):n.createElement(s,null)))))}},32562:(e,t,r)=>{r.d(t,{H:()=>f});var n=r(23481),a=r(110),o=r(47663),l=r(12778);function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function c(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,s(n.key),n)}}function s(e){var t=function(e){if("object"!=i(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(t)?t:t+""}function u(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(u=function(){return!!e})()}function d(e){return d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},d(e)}function m(e,t){return m=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},m(e,t)}var p="userManager.cannotYearGroupRolloverError",f=function(e){function t(e){var r;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),r=function(e,t,r){return t=d(t),function(e,t){if(t&&("object"==i(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,u()?Reflect.construct(t,r||[],d(e).constructor):t.apply(e,r))}(this,t,["CannotYearGroupRolloverError"]);var n=a.O.convertUTCToLocal(e);return r.previousRolloverDate=a.O.format(n,"MMMM Do YYYY"),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&m(e,t)}(t,e),r=t,(o=[{key:"name",get:function(){return"CannotYearGroupRolloverError"}},{key:"dialogOptions",get:function(){return{title:n.T.getPhrase(p,"heading"),text:n.T.getPhrase(p,"text",{previousRolloverDate:this.previousRolloverDate,supportUrl:l.o.getSupportRequestUrl(),linkClass:"info-link"}),buttons:[{text:n.T.getPhrase(p,"okay"),className:"btn btn-dark",success:!0}]}}}])&&c(r.prototype,o),Object.defineProperty(r,"prototype",{writable:!1}),r;var r,o}(o.S)},56138:(e,t,r)=>{r.d(t,{x:()=>o});var n=r(20354),a=r(31949),o=function(e){var t=n.a.useBasicFetch(a.N.currentUser());return n.a.useBasicFetch(t.data&&e.getUserCountRequest(t.data.customerId,t.data.id,e.userType,e.queryParams))}},12458:(e,t,r)=>{r.d(t,{I:()=>c});var n=r(1048),a=r(49985),o=r(65858),l=r(58739),i=["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 r={userCount:e.userIdMap.size,step:t},l=c.getAnalyticsActionName(e);l&&(r.action=l);var s=n.t.omit(e,i);Object.keys(s).length&&(r.actionData=s),a.k.logUserAction(r,{location:o.LZ.BulkUserActionsWizard,workflowPhase:o.eu.Next,actionType:o.Vw.BulkAction,entity:o.py.User})}},logYearGroupRolloverEntry:function(e){a.k.logUserAction({action:c.getAnalyticsActionName({action:"yearGroupRollover"})},{entity:o.py.User,actionType:o.Vw.BulkAction,workflowPhase:o.eu.Start,location:e})},getJobStatus:function(e){switch(e){case l.K.Completed:return"Success";case l.K.CompletedWithError:return"Completed with some errors";case l.K.Failed:return"Failed";default:return null}}}},63112:(e,t,r)=>{r.d(t,{o:()=>o});var n=r(32735),a=r(14346),o=n.memo(function(e){var t=e.tagClass,r="partial-loading-background d-inline-block rounded-pill py-1 px-2 mb-1 me-1 text-nowrap ".concat(void 0===t?"":t," ").concat(a.Z.partialTag);return n.createElement("div",{className:"mt-1"},n.createElement("span",{className:r}," "))})},30699:(e,t,r)=>{r.d(t,{a:()=>o});var n=r(32735),a=r(16035);function o(e){var t=e.selectedItems.find(function(t){return t.id===e.data.id})?"bg-gray-900 text-white":"bg-light";return n.createElement(a.z,{tag:e.data,appLink:e.appLink,tagClass:"no-decoration ".concat(t," lh-1"),onClick:function(){return e.onClick(e.data)}})}},99705:(e,t,r)=>{var n,a;r.d(t,{b:()=>a}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(n||(n={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="27927466562201",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097",e.ManageGroupPermissions="35407217335705",e.MarcFormatDifferences="48276917260441",e.ExportLibraries="17684275853465"}(a||(a={}))},299:(e,t,r)=>{r.d(t,{X:()=>l});var n=r(32735),a=r(69217),o=r(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.idField,l=void 0===r?"id":r,i=t.persistNamespace,c=t.initialState?t.initialState:new Map,s=n.useRef(c),u=(0,a.N)(),d=(0,o.D)(e),m=(0,o.D)(i);function p(){s.current.clear(),u()}function f(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),s.current.get(e)}function v(){return!!(null==e?void 0:e.length)&&e.every(f)}function y(e){e.forEach(function(e){s.current.set(e,!0)}),u()}return n.useEffect(function(){t.initialState||i&&m===i||(null==d?void 0:d.map(function(e){return e[l]}).join())!==(null==e?void 0:e.map(function(e){return e[l]}).join())&&p()},[d,m,e,t.initialState]),n.useEffect(function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&y(t.preselectedIds)},[]),{onToggleBulk:function(){var t=!v();e.forEach(function(e){t?s.current.set(e[l].toString(),!0):s.current.delete(e[l].toString())}),u()},onToggleItem:function(e){var t=!s.current.get(e.toString());t?s.current.set(e.toString(),t):s.current.delete(e.toString()),u()},getSelected:function(){return Array.from(s.current.keys())},isChecked:f,bulkChecked:v(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach(function(e){s.current.delete(e[l].toString())}),u())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find(function(e){return f(e)})},setSelected:y,getSelectedCount:function(){return s.current.size},reset:p,getMap:function(){return s.current}}}},48327:(e,t,r)=>{r.d(t,{d:()=>n});var n="/templates/Template_Select_With_Spreadsheet.csv"},51180:(e,t,r)=>{r.d(t,{T:()=>o});var n=r(20354),a=r(47288);function o(e,t,r){return n.a.useBasicFetch(function(){if(!e)return null;var n=Object.keys(t),o=1===n.length&&!!t.cursor||2===n.length&&n.includes("cursor")&&n.includes("previous"),l=1===n.length&&!!t.sort;return!Object.keys(t).length||o||l?a.N.getUsers(e.customerId,r,t,null==t?void 0:t.cursor):a.N.searchUsers(e.customerId,e.id,r,t,null==t?void 0:t.cursor)}())}}}]);
|
|
2
|
+
//# sourceMappingURL=147-32fa5e188f-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/147-32fa5e188f-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/apps/user-manager/components/user-list/empty-state/UserManagerSearchEmptyState.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list/partial-loading/partial-user-list.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list/partial-loading/PartialUserList.tsx","file:///app/packages/libs/shared/src/components/bulk-selection-summary/bulk-selection-summary.scss","file:///app/packages/libs/shared/src/components/bulk-selection-summary/BulkSelectionSummary.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/components/JobTitle.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/components/LastActive.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/components/UserAuthenticationMethods.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users-table/ManageUsersTable.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users-table/ManageUsersTableUtils.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users-table/manage-users-table.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/select-with-spreadsheet/select-with-spreadsheet.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/select-with-spreadsheet/SelectWithSpreadsheet.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users/components/select-with-spreadsheet/select-with-spreadsheet-popup.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users/components/select-with-spreadsheet/SelectWithSpreadsheetPopup.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users/useManageUsersCheckboxHelper.ts","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users/ManageUsers.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/manage-users/useGetActions.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-manager-entries/user-manager-entries.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/user-manager-entries/UserManagerEntries.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/user-manager-header/UserManagerHeader.tsx","file:///app/packages/libs/shared/src/apps/user-manager/errors/cannot-year-group-rollover/CannotYearGroupRolloverError.ts","file:///app/packages/libs/shared/src/apps/user-manager/hooks/useFetchUserCount.ts","file:///app/packages/libs/shared/src/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel.ts","file:///app/packages/libs/shared/src/apps/user-manager/utils/BulkUserActionsAnalyticsHelper.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/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/projects/lite/src/apps/user-manager/constants/SelectWithSpreadsheetTemplate.ts","file:///app/packages/projects/lite/src/apps/user-manager/hooks/useFetchUsers.ts"],"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 { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'userManager.userManagerSearchEmptyState';\n\ninterface UserManagerSearchEmptyStateProps {\n imageUrl: string;\n}\n\nexport function UserManagerSearchEmptyState(props: UserManagerSearchEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} />\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialEntries\":\"TOmcn\",\"partialCreateUser\":\"Yf4Wx\",\"partialBulkUpload\":\"sp3ux\",\"partialCheckbox\":\"REK11\",\"partialYearGroup\":\"d2NEw\",\"partialName\":\"qmSU8\",\"partialEmail\":\"uHYQO\",\"partialAvatar\":\"Y796I\",\"lastActiveLabel\":\"aItB8\",\"lastActiveDate\":\"RMdcx\",\"partialAction\":\"jn0FO\"};","import React from 'react';\n\nimport styles from './partial-user-list.scss';\n\nfunction PartialUserItem(): JSX.Element {\n return (\n <li className='d-flex align-items-center py-2'>\n <div className={`ms-4 me-3 partial-loading-background ${styles.partialCheckbox}`} />\n\n <div className={`me-2 ms-n1 rounded-circle partial-loading-background ${styles.partialAvatar}`} />\n\n <div className='d-flex flex-column justify-content-center me-auto'>\n <div className='pb-1 d-flex align-items-center'>\n <div>\n <div className={`partial-loading-background align-middle d-inline-block ${styles.partialName}`} />\n </div>\n </div>\n\n <div className={`partial-loading-background me-1 align-middle d-inline-block ${styles.partialEmail}`} />\n </div>\n\n <div className='d-flex ps-1 me-3 d-flex justify-content-end'>\n <div className={`partial-loading-background ${styles.partialYearGroup}`} />\n </div>\n\n <span className='d-flex flex-column me-3'>\n <div className={`partial-loading-background mb-1 ${styles.lastActiveLabel}`} />\n <div className={`partial-loading-background ${styles.lastActiveDate}`} />\n </span>\n\n <div className='d-flex align-items-center'>\n <div className={`partial-loading-background ${styles.partialAction}`} />\n <div className={`partial-loading-background ${styles.partialAction}`} />\n </div>\n </li>\n );\n}\n\nexport function PartialUserList(): JSX.Element {\n return (\n <ul className='m-0 list-unstyled striped-list'>\n {Array(20).fill(null).map((item, index) => <PartialUserItem key={index} />)}\n </ul>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"iconContainer\":\"lUFJg\",\"loadingContainer\":\"b0Mz5\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UserManagerConstants } from 'libs/shared/apps/user-manager/constants/UserManagerConstants';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './bulk-selection-summary.scss';\n\nconst namespace = 'shared.bulkSelectionSummary';\n\ninterface BulkSelectionSummaryProps {\n selectedCount: number;\n onClickDeselectAll: () => void;\n onClickSelectBulk: () => void;\n getTypeText: (count: number) => string;\n \n selectAllCount?: number;\n allSelected?: boolean;\n showSelectingSpinner?: boolean;\n onClickSelectAll?: (success: () => void) => void;\n\n hasRostering?: boolean;\n}\n\nexport function BulkSelectionSummary(props: BulkSelectionSummaryProps): JSX.Element {\n const [ selectAllSpinner, setSelectAllSpinner ] = React.useState(false);\n\n function onClickSelectAll(): void {\n setSelectAllSpinner(true);\n props.onClickSelectAll(() => {\n setSelectAllSpinner(false);\n });\n }\n\n if (!props.selectedCount && !props.showSelectingSpinner)\n return <></>;\n\n const showSelectAll = (\n !!props.onClickSelectAll &&\n !props.allSelected &&\n props.selectAllCount !== 0 &&\n props.selectAllCount > UserManagerConstants.USER_PAGE_LIMIT\n );\n\n return (\n <div className='border border-dark rounded-3 d-flex justify-content-between align-items-center p-2 mb-3'>\n {props.showSelectingSpinner ? (\n <div className={`px-2 d-flex align-items-center ${styles.loadingContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n ) : (\n <>\n <div className='d-flex align-items-center'>\n <div className={`${styles.iconContainer} text-white rounded-circle bg-dark me-3 ms-2 d-flex justify-content-center align-items-center`}>\n <SvgContainer svgName={cvSvgLibrary.Group} />\n </div>\n\n <Text\n namespace={namespace}\n phrase='selectedCount'\n options={{ smartCount: props.selectedCount, type: props.getTypeText(props.selectedCount) }}\n />\n\n {(() => {\n if (!showSelectAll)\n return <></>;\n\n if (selectAllSpinner || props.selectAllCount === undefined)\n return (\n <div className='px-2 py-1'>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n\n return (\n <DivButton className='info-link px-2' onClick={onClickSelectAll}>\n <Text\n namespace={namespace}\n phrase='selectAll'\n options={{ smartCount: props.selectAllCount, type: props.getTypeText(props.selectAllCount) }}\n />\n </DivButton>\n );\n })()}\n </div>\n <div className='d-flex'>\n <button className='btn btn-link me-2' onClick={props.onClickDeselectAll}>\n <Text namespace={namespace} phrase='deselectAll' />\n </button>\n <Tooltip\n spanHack\n title={props.hasRostering ? LanguageService.getPhrase(namespace, 'disabled') : ''}\n >\n <button\n className={props.hasRostering ? 'btn btn-outline-dark cursor-default disabled' : 'btn btn-outline-dark'}\n onClick={props.onClickSelectBulk}\n disabled={props.hasRostering}\n >\n <Text namespace={namespace} phrase='selectBulkAction' />\n </button>\n </Tooltip>\n </div>\n </>\n )}\n \n </div>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { User } from 'libs/shared/interfaces';\n\nconst namespace = 'userManager.userList';\n\ninterface JobTitleProps {\n user: Partial<User>;\n}\n\nexport function JobTitle(props: JobTitleProps): JSX.Element {\n const jobTitle = props.user.userProfile?.metadata?.jobTitle || '-';\n\n return (\n <span className='d-flex flex-column'>\n <small>\n <Text namespace={namespace} phrase='jobTitle' />\n </small>\n <span className={jobTitle === '-' ? 'ms-3' : ''}>\n {jobTitle}\n </span>\n </span>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ObjectStatus } from 'libs/shared/enums/ObjectStatus';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport styles from './user-item-components.scss';\n\nconst namespace = 'userManager.userList';\n\nfunction isDateValid(date: string, status: ObjectStatus): boolean {\n return !!date && status === ObjectStatus.Active && DateHelper.get(date, 'year') >= 2000;\n}\n\nexport function getLastActiveDate(date: string, status: ObjectStatus): string {\n if (!isDateValid(date, status))\n return '-';\n\n const lastSignedIn = DateHelper.fromNow(date);\n\n if (lastSignedIn === 'a day ago')\n return LanguageService.getPhrase(namespace, 'yesterday');\n\n if (lastSignedIn.includes('hour'))\n return LanguageService.getPhrase(namespace, 'today');\n\n // If the string starts with a char that's not a number, convert it to uppercase. E.g. \"a year ago\"\n if (Number.isNaN(+lastSignedIn.substr(0, 1)))\n return lastSignedIn.substr(0, 1).toUpperCase() + lastSignedIn.substr(1);\n\n return lastSignedIn;\n}\n\ninterface LastActiveProps {\n user: User;\n currentUser?: CurrentUser;\n}\n\nexport function LastActive(props: LastActiveProps): JSX.Element {\n const date = getLastActiveDate(props.user.metadata?.lastSignInTime, props.user.status);\n\n const isCurrentUser = props.user.id.toString() === props.currentUser?.id.toString();\n\n return (\n <span className={`${styles.lastActiveContainer} ${isCurrentUser ? styles.isCurrentUser : ''}`}>\n <span className='d-flex flex-column'>\n <small>\n <Text namespace={namespace} phrase='lastActive' />\n </small>\n <span className={date === '-' ? 'ms-3' : ''}>\n {date}\n </span>\n </span>\n </span>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { User } from 'libs/shared/interfaces';\n\nimport styles from './user-item-components.scss';\n\nconst namespace = 'userManager.userList';\n\ninterface UserAuthenticationMethodsProps {\n user: User;\n}\n\nexport function UserAuthenticationMethods(props: UserAuthenticationMethodsProps): JSX.Element {\n /**\n * Sort the authentication methods so that SSO always appear on top of ClickView\n */\n const sortedAuthMethods = React.useMemo(() => {\n return props.user.authenticationMethods?.sort(method => {\n return method.local ? 1 : -1;\n });\n }, [props.user.authenticationMethods]);\n \n if (!props.user.authenticationMethods?.length)\n return <></>;\n\n const hasSSO = props.user.authenticationMethods?.find(am => !am.local);\n\n return (\n <div className={`${styles.authMethodContainer} d-flex flex-row-reverse justify-content-center ms-n3`}>\n <Tooltip\n title={LanguageService.getPhrase(namespace, hasSSO ? 'ssoTooltip' : 'noSsoTooltip')}\n spanHack\n >\n {sortedAuthMethods.map((authMethod, i) => {\n const backgroundColor = authMethod.backgroundColour ? `#${authMethod.backgroundColour}` : '#fff';\n\n return (\n <div\n key={authMethod.displayName}\n className={`${styles.authMethodLogo} rounded-circle border`}\n style={{\n zIndex: props.user.authenticationMethods.length - i,\n backgroundImage: `url(${authMethod.logoUrl})`,\n backgroundColor\n }}\n />\n );\n })}\n </Tooltip>\n </div>\n );\n}","import React from 'react';\n\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { getColumns, useGetData } from './ManageUsersTableUtils';\n\nconst TABLE_THEME: TableTheme = {\n table: 'striped-list no-full-width pb-3',\n row: 'striped-row rounded',\n cell: 'd-flex align-items-center py-2'\n};\n\ninterface ManageUsersTableProps {\n users: User[];\n countryCode?: string;\n currentUser: CurrentUser;\n isChecked: (id: string) => boolean;\n onToggleCheckbox: (id: string) => void;\n imageCdnUrl: string;\n appLinks: UserManagerAppLinks;\n products?: ProductId[];\n onClickResendActivationEmail?: (user: User) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n onEditUser?: (user: User) => void;\n onEditUserOptions?: (user: User) => void;\n shouldDisplayAuthenticationMethods: boolean;\n ssoHelpArticle?: string;\n hasRostering?: boolean;\n}\n\nexport const ManageUsersTable = React.memo(function (props: ManageUsersTableProps): JSX.Element {\n const client = React.useContext<UserManagerClient>(UserManagerClientContext);\n const data = useGetData(props.users, props.isChecked);\n\n const columns = getColumns({\n ...props,\n products: props.products ?? [],\n client\n });\n\n return (\n <Table\n columns={columns}\n data={data}\n theme={TABLE_THEME}\n />\n );\n});","import React from 'react';\nimport { CellProps, Column } from 'react-table';\n\nimport { JobTitle } from 'libs/shared/apps/user-manager/components/user-list-items/components/JobTitle';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { UserManagerAppLinks } from '../../interfaces';\nimport { BasicUserDetails } from '../user-list-items/components/BasicUserDetails';\nimport { LastActive } from '../user-list-items/components/LastActive';\nimport { RoleOrYearGroup } from '../user-list-items/components/RoleOrYearGroup';\nimport { UserAuthenticationMethods } from '../user-list-items/components/UserAuthenticationMethods';\nimport { UserItemActions } from '../user-list-items/components/UserItemActions';\nimport { UserItemAvatar } from '../user-list-items/components/UserItemAvatar';\n\nimport styles from './manage-users-table.scss';\n\ninterface ManageUsersTableData {\n user: User;\n checked: boolean;\n}\n\ninterface GetUsersTableColumnsProps {\n onToggleCheckbox: (id: string) => void;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n appLinks: UserManagerAppLinks;\n products: ProductId[];\n onEditUser?: (user: User) => void;\n onEditUserOptions?: (user: User) => void;\n onClickResendActivationEmail?: (user: User) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n shouldDisplayAuthenticationMethods?: boolean;\n ssoHelpArticle?: string;\n hasRostering?: boolean;\n client?: UserManagerClient;\n countryCode?: string;\n}\n\nexport function getColumns({\n onToggleCheckbox,\n imageCdnUrl,\n currentUser,\n appLinks,\n products,\n onClickResendActivationEmail,\n onClickSendResetEmail,\n onClickSendVerificationEmail,\n onEditUser,\n onEditUserOptions,\n shouldDisplayAuthenticationMethods,\n ssoHelpArticle,\n hasRostering,\n client,\n countryCode\n}: GetUsersTableColumnsProps): Column<ManageUsersTableData>[] {\n const columns: Column<ManageUsersTableData>[] = [\n {\n id: 'checkboxes',\n accessor: (data: ManageUsersTableData) => ({ id: data.user.id, checked: data.checked }),\n Cell: (cell: CellProps<ManageUsersTableData, { id: string; checked: boolean; }>) => React.useMemo(() => (\n <div className='w-100 text-center ms-3 ps-2'>\n <Checkbox\n id={cell.value.id}\n checked={cell.value.checked}\n onChange={() => onToggleCheckbox(cell.value.id)}\n />\n </div>\n ), []),\n width: 5\n },\n {\n accessor: 'user',\n id: 'avatar',\n Cell: ({ value }) => React.useMemo(\n () => {\n return (\n value.name ? (\n <div className='w-100'>\n <UserItemAvatar user={value} imageCdnUrl={imageCdnUrl} />\n </div>\n ) : (\n <div className={`${styles.avatarContainer} mx-2`}>\n <IconCircle\n svgName={cvSvgLibrary.User}\n variant='blue'\n svgSize={SvgContainerSize.ExtraLarge}\n svgWrapperClassName='p-1'\n />\n </div>\n ));\n }\n , []\n ),\n width: 5\n },\n {\n accessor: 'user',\n id: 'basicDetails',\n Cell: ({ value }) => React.useMemo(() => {\n return (\n <div className='w-100'>\n <BasicUserDetails user={value} currentUser={currentUser} />\n </div>\n );\n }, []),\n width: 50\n },\n {\n accessor: 'user',\n id: 'roleOrYearGroup',\n Cell: ({ value }) => React.useMemo(() => (\n <div className='w-100 text-end'>\n <RoleOrYearGroup userType={value.userType} user={value} countryCode={countryCode} />\n </div>\n ), []),\n width: 11\n }\n ];\n\n if (client === UserManagerClient.Curator) {\n columns.push({\n accessor: 'user',\n id: 'jobTitle',\n Cell: ({ value }) => React.useMemo(() => (\n <div className='w-100'>\n <JobTitle user={value} />\n </div>\n ), []),\n width: 8\n });\n }\n\n columns.push({\n accessor: 'user',\n id: 'lastActive',\n Cell: ({ value }) => React.useMemo(() => (\n <div className='w-100'>\n <LastActive user={value} currentUser={currentUser} />\n </div>\n ), []),\n width: 8\n });\n \n if (shouldDisplayAuthenticationMethods) {\n columns.push({\n accessor: 'user',\n id: 'authMethods',\n Cell: ({ value }) => React.useMemo(() => (\n <div className='w-100 d-flex justify-content-center'>\n <UserAuthenticationMethods user={value} />\n </div>\n ), []),\n width: 6\n });\n }\n\n columns.push({\n accessor: 'user',\n id: 'actions',\n Cell: ({ value }) => React.useMemo(() => (\n <div className='w-100'>\n <UserItemActions\n user={value}\n userType={value.userType}\n appLinks={appLinks}\n onClickSendResetEmail={onClickSendResetEmail}\n onClickResendActivationEmail={onClickResendActivationEmail}\n onClickSendVerificationEmail={onClickSendVerificationEmail}\n currentUser={currentUser}\n ssoHelpArticle={ssoHelpArticle}\n products={products}\n hasRostering={hasRostering}\n onEditUser={onEditUser}\n onEditUserOptions={onEditUserOptions}\n />\n </div>\n ), []),\n width: 8\n });\n\n return columns;\n}\n\nexport function useGetData(users: User[], isChecked: (id: string) => boolean): ManageUsersTableData[] {\n return users.map(user => {\n return {\n user,\n checked: isChecked(user.id),\n isCurrentUser: false\n };\n });\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"kq2Bn\"};","// extracted by mini-css-extract-plugin\nexport default {\"cell\":\"Vsgxg\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { BulkUploadFileSelect } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-upload-file-select/BulkUploadFileSelect';\nimport { InvalidSpreadsheetError } from 'libs/shared/apps/user-manager/errors/invalid-spreadsheet/InvalidSpreadsheetError';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './select-with-spreadsheet.scss';\n\nconst namespaces = {\n [UserGroup.Learner]: 'userManager.selectStudentWithSpreadsheet',\n [UserGroup.Staff]: 'userManager.selectStaffWithSpreadsheet',\n [UserGroup.Unknown]: ''\n};\n\ninterface SelectWithSpreadsheetProps {\n onSelectSpreadsheet: (userQuery: string[], spreadsheetRowCount: number) => void;\n onClickCancel: () => void;\n userType: UserGroup;\n templateLink: string;\n}\n\nexport function SelectWithSpreadsheet(props: SelectWithSpreadsheetProps): JSX.Element {\n const namespace = namespaces[props.userType];\n\n function onSelectSpreadsheet(data: string[][]): void {\n const isEmpty = BulkUserUploadHelper.validateEmptySpreadsheetData(data);\n if (isEmpty) {\n props.onClickCancel();\n return;\n }\n\n const clone = [...data];\n const headings = clone.shift();\n\n const { isValid, errorMessage } = BulkUserUploadHelper.validateSelectWithSpreadsheet(\n headings,\n [ 'Email', 'Username' ]\n );\n\n if (!isValid) {\n Core.ErrorHelper.throw(new InvalidSpreadsheetError(errorMessage));\n props.onClickCancel();\n return;\n }\n\n const requests = BulkUserUploadHelper.buildUserQueryFromSpreadsheet(headings, clone, props.userType);\n\n props.onSelectSpreadsheet(requests, data.length);\n }\n\n const ExampleSpreadSheet = () => {\n return (\n <LanguageNamespaceContext.Provider value={namespaces[props.userType]}>\n <table cellPadding={5}>\n <tbody>\n\n <tr className='text-center bg-light'>\n <td className={`text-nowrap border border-dark ${styles.cell}`}><Text phrase='a' /></td>\n <td className={`text-nowrap border border-dark ${styles.cell}`}><Text phrase='b' /></td>\n </tr>\n\n <tr className='fw-semibold'>\n <td className={`text-nowrap border border-dark ${styles.cell}`}><Text phrase='email' /></td>\n <td className={`text-nowrap border border-dark ${styles.cell}`}><Text phrase='username' /></td>\n </tr>\n\n <tr>\n <td className={`text-nowrap border border-dark ${styles.cell}`}><Text phrase='exampleEmail' /></td>\n <td className={`text-nowrap border border-dark ${styles.cell}`}></td>\n </tr>\n <tr>\n <td className={`text-nowrap border border-dark ${styles.cell}`}></td>\n <td className={`text-nowrap border border-dark ${styles.cell}`}><Text phrase='exampleUsername' /></td>\n </tr>\n </tbody>\n </table>\n </LanguageNamespaceContext.Provider>\n );\n };\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n {/* Step 1 */}\n <div className='pb-3'>\n <div className='h6'><Text phrase='downloadTemplateHeading' /></div>\n <p className='ms-n1 ps-3'><Text phrase='downloadTemplateInfo' /></p>\n <div className='ms-n1 ps-3'>\n <a className='btn btn-outline-dark mx-auto' download href={props.templateLink}>\n <SvgContainer svgName={cvSvgLibrary.Download} className='svg-container std me-1 ms-n1 align-middle' />\n <div className='align-middle d-inline-block'><Text phrase='downloadBtn' /></div>\n </a>\n </div>\n </div>\n\n {/* Step 2 */}\n <div className='pb-3'>\n <div className='h6'><Text phrase='addUsersHeading' /></div>\n <p className='ms-n1 ps-3'><Text phrase='addUsersInfo' /></p>\n <div className='mx-n1 px-3'>\n <ExampleSpreadSheet/>\n </div>\n </div>\n\n {/* Step 3 */}\n <div className='pb-3'>\n <div className='h6'><Text phrase='uploadHeading' /></div>\n <div className='d-inline-block ms-n1 ps-3 mt-1'>\n <div className='d-inline-block'>\n <BulkUploadFileSelect onSelectSpreadsheet={onSelectSpreadsheet} />\n </div>\n </div>\n </div>\n\n {/* Step 4 */}\n <div>\n <div className='h6'><Text phrase='matchesHeading' /></div>\n <p className='ms-n1 ps-3'><Text phrase='matchesInfo' /></p>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"modalWidth\":\"KYu7Y\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, OperationDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { useManageUsersCheckboxHelper } from 'libs/shared/apps/user-manager/components/manage-users/useManageUsersCheckboxHelper';\nimport { SelectWithSpreadsheet } from 'libs/shared/apps/user-manager/components/select-with-spreadsheet/SelectWithSpreadsheet';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { User } from 'libs/shared/interfaces';\n\nimport styles from './select-with-spreadsheet-popup.scss';\n\nconst namespaces = 'userManager.selectWithSpreadsheetPopup';\n\ntype ICheckboxHelper = ReturnType<typeof useManageUsersCheckboxHelper>\n\ntype SelectWithSpreadsheetPopupProps = {\n userType: UserGroup;\n users: User[];\n template: string;\n closePopup: () => void;\n checkboxHelper: ICheckboxHelper;\n setShowSelectingSpinner: (arg: boolean) => void;\n userRequest: (query: string) => Flight.Request;\n};\n\nexport function SelectWithSpreadsheetPopup(props: SelectWithSpreadsheetPopupProps): JSX.Element {\n const CheckboxHelper = props.checkboxHelper;\n const fetchAsync = Flight.useGetFetchAsync();\n let ids: string[] = [];\n\n function onSelectSpreadsheet(queries: string[], spreadsheetRowCount: number) {\n props.setShowSelectingSpinner(true);\n\n const requests = queries.map(q => {\n return fetchAsync<string[]>(props.userRequest(q));\n });\n\n Promise.all(requests).then(res => {\n res.forEach(r => {\n ids = ids.concat(r);\n });\n\n CheckboxHelper.selectAll(ids.map(id => id.toString()));\n\n AnalyticsHelper.logUserAction({\n userType: props.userType,\n spreadsheetRowCount: spreadsheetRowCount,\n totalUsersFound: ids.length\n }, {\n workflowPhase: WorkflowPhase.Complete,\n actionType: UserAction.Select,\n entity: EntityType.User,\n descriptor: OperationDescriptor.Bulk,\n location: LocationContext.Popup\n });\n\n props.setShowSelectingSpinner(false);\n });\n\n props.closePopup();\n }\n\n const dataLoaded = props.users.length;\n\n return (\n <Popup\n closePopup={props.closePopup}\n title={LanguageService.getPhrase(namespaces, 'heading')}\n showLoadingSpinner={!dataLoaded}\n dialogClassName={styles.modalWidth}\n >\n {dataLoaded && (\n <SelectWithSpreadsheet\n userType={props.userType}\n onSelectSpreadsheet={onSelectSpreadsheet}\n onClickCancel={props.closePopup}\n templateLink={props.template}\n />\n )}\n </Popup>\n );\n}","import React from 'react';\n\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { BulkCheckboxManagerOptions, useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { User } from 'libs/shared/interfaces';\n\ntype UsedParamNames = keyof Omit<UserManagerQueryParams, 'cursor' | 'sort'>;\n\ninterface ManagerUsersCheckboxHelper extends BulkCheckboxManagerOptions {\n queryParams: UserManagerQueryParams;\n}\n\n/**\n * Used by ManageUsers to determine if we should show the \"Select all X users\"\n * button or not, based on which filters we've previously selected all on\n */\nexport const useManageUsersCheckboxHelper = (\n users: User[],\n options: ManagerUsersCheckboxHelper\n) => {\n const CheckboxHelper = useBulkCheckboxManager(users, options);\n\n const [ bulkSelections, setBulkSelections ] = React.useState<any>({});\n\n function getSelectionKey(): string {\n // Need to disable linting complaining about our params\n // eslint-disable-next-line\n const { cursor, sort, ...queryParams } = options.queryParams;\n return Object.keys(queryParams)\n .sort()\n .map((key: UsedParamNames) => {\n const param = queryParams[key];\n return Array.isArray(param) ?\n param.sort().join(',') :\n param;\n })\n .join(':');\n }\n\n function selectAll(userIds: string[]): void {\n CheckboxHelper.setSelected(userIds);\n\n setBulkSelections({\n ...bulkSelections,\n [getSelectionKey()]: true\n });\n }\n\n function onToggleItem(id: string): void {\n if (CheckboxHelper.isChecked(id))\n setBulkSelections({});\n\n CheckboxHelper.onToggleItem(id);\n }\n\n function onToggleBulk(): void {\n if (CheckboxHelper.bulkChecked)\n setBulkSelections({});\n\n if (!users?.length)\n return;\n\n CheckboxHelper.onToggleBulk();\n }\n\n function reset(): void {\n setBulkSelections({});\n CheckboxHelper.reset();\n }\n\n function allSelected(): boolean {\n if (!Object.keys(bulkSelections).length)\n return false;\n\n /**\n * This will be our selection key if they click select all\n * with no filters or queries\n */\n if (bulkSelections[''])\n return true;\n\n return bulkSelections[getSelectionKey()];\n }\n\n return {\n ...CheckboxHelper,\n selectAll,\n onToggleItem,\n onToggleBulk,\n reset,\n allSelected: allSelected()\n };\n};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { ClickDescriptor, EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ScopedSearchBar } from 'libs/shared/apps/search/components/scoped-search-bar/ScopedSearchBar';\nimport { PartialSearchFilters } from 'libs/shared/apps/search/components/search-filters/PartialSearchFilters';\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { UserManagerSearchEmptyState } from 'libs/shared/apps/user-manager/components/user-list/empty-state/UserManagerSearchEmptyState';\nimport { PartialUserList } from 'libs/shared/apps/user-manager/components/user-list/partial-loading/PartialUserList';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces/UserManagerAppLinks';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { YearGroupRolloverStatus } from 'libs/shared/apps/user-manager/interfaces/YearGroupRolloverStatus';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { UserManagerHelper } from 'libs/shared/apps/user-manager/utils/UserManagerHelper';\nimport { ActionsDropdown } from 'libs/shared/components/actions/ActionsDropdown';\nimport { BulkSelectionSummary } from 'libs/shared/components/bulk-selection-summary/BulkSelectionSummary';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { RosteringAlert } from 'libs/shared/components/rostering/rostering-alert/RosteringAlert';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { Config, CurrentUser, Customer, User, YearGroup } from 'libs/shared/interfaces';\n\nimport { ManageUsersTable } from '../manage-users-table/ManageUsersTable';\n\nimport { SelectWithSpreadsheetPopup } from './components/select-with-spreadsheet/SelectWithSpreadsheetPopup';\nimport { useGetActions } from './useGetActions';\nimport { useManageUsersCheckboxHelper } from './useManageUsersCheckboxHelper';\n\nconst namespace = 'userManager.manageUsers';\n\nconst subNamespaces = {\n [UserGroup.Learner]: 'userManager.manageStudents',\n [UserGroup.Staff]: 'userManager.manageStaff',\n [UserGroup.Unknown]: ''\n};\n\ninterface ManageUsersListProps {\n users: User[];\n customer?: Customer;\n userType: UserGroup;\n config: Config;\n currentUser: CurrentUser;\n countryCode?: string;\n searchEmptyState: string;\n appLinks: UserManagerAppLinks;\n totalUsers: number;\n queryParams: UserManagerQueryParams;\n hasSso: boolean;\n hasRostering?: boolean;\n searchInputSize?: FormSize;\n onClickResendActivationEmail?: (user: User) => void;\n onEditUser?: (user: User) => void;\n onEditUserOptions?: (user: User) => void;\n fetchUserIds: (success: (userIds: string[]) => void) => void;\n onClickSendResetEmail?: (user: User) => void;\n onClickSendVerificationEmail?: (user: User) => void;\n ssoHelpArticle?: string;\n selectWithSpreadsheetTemplate: string;\n userRequest: (query: string, success?: (ids: string[]) => void) => Flight.Request;\n products?: ProductId[];\n}\n\ntype StudentProps = ManageUsersListProps & {\n userType: UserGroup.Learner;\n yearGroups: YearGroup[];\n yearGroupRolloverStatus?: YearGroupRolloverStatus;\n}\n\ntype StaffProps = ManageUsersListProps & {\n userType: UserGroup.Staff;\n yearGroups?: never;\n};\n\nexport function ManageUsers(props: StudentProps | StaffProps): JSX.Element {\n const analyticsLocation = LocationContext[props.userType === UserGroup.Learner ? 'StudentManager' : 'StaffManager'];\n const subNamespace = subNamespaces[props.userType];\n\n const locationContext = props.userType === UserGroup.Learner\n ? LocationContext.StudentManager\n : LocationContext.StaffManager;\n\n const [ viewModel, setBulkActionViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const [ isSelectingWithSpreadsheet, setIsSelectingWithSpreadsheet ] = React.useState<boolean>(false);\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const CheckboxHelper = useManageUsersCheckboxHelper(props.users, {\n persistNamespace: `manage:users:${props.userType}`,\n initialState: viewModel?.userIdMap,\n queryParams: props.queryParams\n });\n\n const extraActions = useGetActions({\n ...props,\n onSelectWithSpreadsheetSelect: () => setIsSelectingWithSpreadsheet(true),\n namespace: subNamespace,\n yearGroups: props.userType === UserGroup.Learner ? props.yearGroups : []\n });\n\n /**\n * We use this to unset our userIdMap when the user is leaving user manager.\n * When the user is going to bulk actions, we set clearOnExit to false\n * so that this hook cleanup doesn't unset our userIdMap.\n */\n const clearOnExit = React.useRef(true);\n React.useEffect(() => {\n return () => {\n if (clearOnExit.current)\n setBulkActionViewModel('userIdMap', undefined);\n };\n }, []);\n\n React.useEffect(() => {\n if (!CheckboxHelper.bulkChecked)\n return;\n\n if (props.totalUsers !== CheckboxHelper.getSelectedCount())\n return;\n\n setBulkActionViewModel('allUsersSelected', true);\n setBulkActionViewModel('allUsersCount', props.totalUsers);\n }, [CheckboxHelper.bulkChecked]);\n\n function onClickSelectBulkAction(): void {\n if (!CheckboxHelper.getSelectedCount())\n return;\n\n AnalyticsHelper.logUserAction({\n userCount: CheckboxHelper.getSelectedCount()\n }, {\n location: locationContext,\n entity: EntityType.User,\n actionType: UserAction.BulkAction,\n workflowPhase: WorkflowPhase.Start\n });\n\n clearOnExit.current = false;\n setBulkActionViewModel('userIdMap', CheckboxHelper.getMap());\n Core.AppLinkHelper.trigger(props.appLinks.bulkActionsReviewAccounts);\n }\n \n function onToggleSelectAll(success: () => void): void {\n AnalyticsHelper.logUserAction({\n userCount: CheckboxHelper.getSelectedCount()\n }, {\n location: locationContext,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.SelectAllUsers,\n entity: EntityType.User\n });\n\n props.fetchUserIds(userIds => {\n CheckboxHelper.selectAll(userIds);\n\n /**\n * Used for determining if the user can use year level rollover\n */\n const allUsersSelected = !BulkUserActionsHelper.hasFilterOrQuery(props.queryParams);\n setBulkActionViewModel('allUsersSelected', allUsersSelected);\n\n if (allUsersSelected)\n setBulkActionViewModel('allUsersCount', userIds.length);\n\n success();\n });\n }\n\n function unsetAllUsersSelected(): void {\n setBulkActionViewModel('allUsersSelected', false);\n setBulkActionViewModel('allUsersCount', undefined);\n }\n\n function onToggleBulk(): void {\n if (CheckboxHelper.bulkChecked)\n unsetAllUsersSelected();\n CheckboxHelper.onToggleBulk();\n }\n\n function onToggleItem(id: string): void {\n if (CheckboxHelper.isChecked(id))\n unsetAllUsersSelected();\n CheckboxHelper.onToggleItem(id);\n }\n\n function onClickDeselectAll(): void {\n unsetAllUsersSelected();\n CheckboxHelper.reset();\n }\n\n const mainFilters = React.useMemo(() => {\n return UserManagerHelper.getFilters(\n props.customer,\n props.userType,\n props.userType === UserGroup.Learner ? props.yearGroups : [],\n props.countryCode\n );\n }, [ props.yearGroups?.length, props.customer?.id, props.countryCode ]);\n\n const showFiltersPartialLoading = (\n !props.currentUser?.id ||\n (props.userType === UserGroup.Learner && !props.yearGroups?.length)\n );\n\n return (\n <>\n {props.hasRostering && (\n <RosteringAlert />\n )}\n <div className='d-flex align-items-center pb-3'>\n <div className='ps-4 pe-1'>\n <Checkbox\n id='user-manager'\n name='user-manager'\n checked={CheckboxHelper.bulkChecked}\n onChange={onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n </div>\n <div className='me-auto'>\n {!showFiltersPartialLoading ? (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={mainFilters}\n appLink={props.appLinks.userManager}\n analyticsOptions={{\n entity: EntityType.User,\n location: analyticsLocation\n }}\n hideHeading\n hideDivider\n constantIndices={['user']}\n />\n ) : (\n <PartialSearchFilters count={3} />\n )}\n </div>\n\n <div className='w-25'>\n <ScopedSearchBar\n id={`user-manager-search-${props.userType}`}\n name={`user-manager-search-${props.userType}`}\n placeholder={LanguageService.getPhrase(namespace, 'searchBarPlaceholder')}\n searchAppLink={props.appLinks.search}\n size={props.searchInputSize}\n searchIndices={['user']}\n analyticsOptions={{ entity: EntityType.User, location: analyticsLocation }}\n />\n </div>\n <ActionsDropdown\n actions={extraActions}\n dropdownToggleClassName='btn btn-outline-dark ms-2'\n />\n </div>\n\n <BulkSelectionSummary\n getTypeText={count => LanguageService.getPhrase(subNamespace, 'bulkSelectLabel', { smartCount: count })}\n selectedCount={CheckboxHelper.getSelectedCount()}\n onClickSelectAll={onToggleSelectAll}\n selectAllCount={props.totalUsers}\n onClickDeselectAll={onClickDeselectAll}\n onClickSelectBulk={onClickSelectBulkAction}\n allSelected={CheckboxHelper.allSelected}\n showSelectingSpinner={showSpinner}\n hasRostering={props.hasRostering}\n />\n\n {(() => {\n if (!props.users)\n return <PartialUserList />;\n \n if (!props.users.length)\n return <UserManagerSearchEmptyState imageUrl={props.searchEmptyState} />;\n\n return (\n <ManageUsersTable\n users={props.users}\n currentUser={props.currentUser}\n imageCdnUrl={props.config.imageCdnUrl}\n appLinks={props.appLinks}\n onClickResendActivationEmail={props.onClickResendActivationEmail}\n onClickSendResetEmail={props.onClickSendResetEmail}\n onEditUser={props.onEditUser}\n onEditUserOptions={props.onEditUserOptions}\n onClickSendVerificationEmail={props.onClickSendVerificationEmail}\n isChecked={CheckboxHelper.isChecked}\n onToggleCheckbox={onToggleItem}\n ssoHelpArticle={props.ssoHelpArticle}\n shouldDisplayAuthenticationMethods={props.hasSso}\n products={props.products}\n hasRostering={props.hasRostering}\n countryCode={props.countryCode}\n />\n );\n })()}\n\n {isSelectingWithSpreadsheet && (\n <SelectWithSpreadsheetPopup\n users={props.users}\n template={props.selectWithSpreadsheetTemplate}\n userType={props.userType}\n checkboxHelper={CheckboxHelper}\n closePopup={() => {\n setIsSelectingWithSpreadsheet(false);\n }}\n setShowSelectingSpinner={setShowSpinner}\n userRequest={props.userRequest}\n />\n )}\n </>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { EntityType, LocationContext, OperationDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { CannotYearGroupRolloverError } from 'libs/shared/apps/user-manager/errors/cannot-year-group-rollover/CannotYearGroupRolloverError';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { YearGroupRolloverStatus } from 'libs/shared/apps/user-manager/interfaces/YearGroupRolloverStatus';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { YearGroup } from 'libs/shared/interfaces';\n\nimport { UserManagerConstants } from '../../constants/UserManagerConstants';\nimport { BulkUserActionsAnalyticsHelper } from '../../utils/BulkUserActionsAnalyticsHelper';\n\ntype UserGetActionProps = {\n userType: UserGroup;\n namespace: string;\n appLinks: UserManagerAppLinks;\n yearGroupRolloverStatus?: YearGroupRolloverStatus;\n onSelectWithSpreadsheetSelect: () => void;\n hasRostering?: boolean;\n yearGroups: YearGroup[];\n};\n\nexport function useGetActions(props: UserGetActionProps): ActionOptions[] {\n const [ , setWizardViewModel ] = useViewModel<BulkUserActionsViewModel>(\n SharedViewModelKeys.BULK_USER_ACTIONS\n );\n\n const analyticsLocation = LocationContext[props.userType === UserGroup.Learner ? 'StudentManager' : 'StaffManager'];\n\n const actions: ActionOptions[] = [{\n label: LanguageService.getPhrase(props.namespace, 'export'),\n appLink: props.appLinks.exportUserList,\n analyticsOptions: {\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Export,\n entity: EntityType.User,\n location: analyticsLocation\n },\n analyticsData: {\n userType: props.userType\n }\n }];\n\n actions.push({\n label: LanguageService.getPhrase(props.namespace, 'auditLog'),\n appLink: props.appLinks.auditLog,\n onClick: () => {\n LocalStorageHelper.set(UserManagerConstants.AUDIT_LOG_REFERRER_KEY, props.userType);\n }\n });\n\n actions.push({\n label: LanguageService.getPhrase(props.namespace, 'selectWithSpreadsheet'),\n onClick: props.onSelectWithSpreadsheetSelect,\n analyticsOptions: {\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Select,\n entity: EntityType.User,\n descriptor: OperationDescriptor.Bulk,\n location: analyticsLocation\n },\n analyticsData: {\n userType: props.userType\n }\n });\n\n if (props.userType === UserGroup.Learner && props.yearGroupRolloverStatus && props.yearGroups?.length > 1) {\n const canRollover = !!props.yearGroupRolloverStatus?.canRollover && !props.hasRostering;\n\n actions.push({\n label: LanguageService.getPhrase(props.namespace, 'rollover'),\n appLink: canRollover && !props.hasRostering && props.appLinks.bulkActionsActionDetails.yearGroupRollover,\n disabled: !!props.hasRostering,\n className: props.hasRostering ? 'cursor-default disabled' : '',\n tooltip: props.hasRostering ? LanguageService.getPhrase(props.namespace, 'editControlledByRostering') : '',\n onClick: () => {\n if (canRollover) {\n setWizardViewModel({\n action: 'yearGroupRollover',\n subAction: 'yearGroupRollover'\n });\n\n const locationContext = props.userType === UserGroup.Learner\n ? LocationContext.StudentManager\n : LocationContext.StaffManager;\n\n BulkUserActionsAnalyticsHelper.logYearGroupRolloverEntry(locationContext);\n return;\n }\n\n const error = new CannotYearGroupRolloverError(\n props.yearGroupRolloverStatus?.previousRolloverDate\n );\n\n Core.ErrorHelper.throw(error);\n }\n });\n }\n\n return actions;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"partialLoading\":\"mXgLg\"};","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './user-manager-entries.scss';\n\nconst namespace = 'userManager.userManagerEntries';\n\ninterface UserManagerEntriesProps {\n totalShowing: number;\n totalUsers: number;\n}\n\nexport function UserManagerEntries(props: UserManagerEntriesProps): JSX.Element {\n return (\n <p className='mb-0 fw-semibold'>\n <Text\n namespace={namespace}\n phrase='users'\n options={{\n totalShowing: props.totalShowing ?? 0,\n totalUsers: props.totalUsers ?? 0,\n smartCount: props.totalUsers ?? 0\n }}\n />\n </p>\n );\n}\n\nexport function PartialUserManagerEntries(): JSX.Element {\n return <div className={`partial-loading-background ${styles.partialLoading} d-inline-block`} />;\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PartialUserManagerEntries, UserManagerEntries } from 'libs/shared/apps/user-manager/components/user-manager-entries/UserManagerEntries';\nimport { GetUserCountResponse } from 'libs/shared/apps/user-manager/interfaces/GetUserCountResponse';\nimport { UserManagerAppLinks } from 'libs/shared/apps/user-manager/interfaces/UserManagerAppLinks';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.userManagerHeader';\nconst subNamespaces = {\n [UserGroup.Learner]: 'userManager.studentManagerHeader',\n [UserGroup.Staff]: 'userManager.staffManagerHeader',\n [UserGroup.Unknown]: ''\n};\n\ninterface UserManagerHeaderProps {\n userType: UserGroup;\n appLinks: UserManagerAppLinks;\n users: User[];\n userCount: GetUserCountResponse;\n hasSso?: boolean;\n hasRostering?: boolean;\n /**\n * Allows curator to specify a different heading component\n */\n headingComponent?: JSX.Element\n}\n\nexport function UserManagerHeader(props: UserManagerHeaderProps): JSX.Element {\n const subNamespace = subNamespaces[props.userType];\n\n const hasNumbers = props.users && typeof (props.userCount?.count) === 'number';\n const totalShowing = hasNumbers && props.users.length;\n\n return (\n <>\n <div className='d-flex justify-content-between'>\n {props.headingComponent ?\n <>{props.headingComponent}</> :\n <span>\n <h1 className='h2'><Text namespace={subNamespace} phrase='heading' /></h1>\n\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n { name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'), appLink: props.appLinks.settings },\n { name: LanguageService.getPhrase(subNamespace, 'managerBreadcrumb'), active: true }\n ]}\n />\n </div>\n </span>\n }\n <span>\n <Tooltip\n spanHack\n title={props.hasRostering ? LanguageService.getPhrase(namespace, 'disabled') : ''}\n placement='left'\n >\n <IconButton\n className='btn btn-outline-dark'\n svgName={cvSvgLibrary.Plus}\n appLink={!props.hasSso ? props.appLinks.addNewUsers : props.appLinks.ssoAddUserConfirm}\n disabled={props.hasRostering}\n >\n <Text namespace={subNamespace} phrase='addNew' />\n </IconButton>\n </Tooltip>\n <div className='text-end mt-1'>\n {hasNumbers ? (\n <UserManagerEntries\n totalShowing={totalShowing}\n totalUsers={props.userCount.count}\n />\n ) : <PartialUserManagerEntries />}\n </div>\n </span>\n </div>\n </>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nconst lang = 'userManager.cannotYearGroupRolloverError';\n\nexport class CannotYearGroupRolloverError extends DialogError {\n private previousRolloverDate: string;\n\n constructor(previousRolloverDate: string) {\n super('CannotYearGroupRolloverError');\n\n const localDate = DateHelper.convertUTCToLocal(previousRolloverDate);\n this.previousRolloverDate = DateHelper.format(localDate, 'MMMM Do YYYY');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotYearGroupRolloverError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(lang, 'heading'),\n text: LanguageService.getPhrase(lang, 'text', {\n previousRolloverDate: this.previousRolloverDate,\n supportUrl: ArticleHelper.getSupportRequestUrl(),\n linkClass: 'info-link'\n }),\n buttons: [{\n text: LanguageService.getPhrase(lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { Flight } from 'libs/common/flight';\n\nimport { GetUserCountResponse } from 'libs/shared/apps/user-manager/interfaces/GetUserCountResponse';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\ninterface Options {\n userType: UserGroup,\n queryParams: UserManagerQueryParams,\n getUserCountRequest: (\n customerId: string,\n userId: string,\n userType: UserGroup,\n queryParams: UserManagerQueryParams,\n ) => Flight.Request\n}\n\nexport const useFetchUserCount = (options: Options) => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const userCount = Flight.useBasicFetch<GetUserCountResponse>(\n currentUser.data &&\n options.getUserCountRequest(currentUser.data.customerId, currentUser.data.id, options.userType, options.queryParams)\n );\n\n return userCount;\n};","import { Classroom, YearGroup } from 'libs/shared/interfaces';\n\nimport { BulkUserActionOptions, BulkUserSubAction } from '../../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { UserManagerQueryParams } from '../query-params/UserManagerQueryParams';\n\n// Please keep this array up to date with the interface below, so that the data we log to analytics remains accurate\nexport const BaseBulkUserActionsViewModelKeys: Array<keyof BulkUserActionsViewModel> = [\n 'userIdMap', 'params', 'action', 'subAction', 'allUsersSelected', 'allUsersCount', 'scrollContainer'\n];\n\nexport interface BulkUserActionsViewModel {\n userIdMap?: Map<string, boolean>;\n params?: UserManagerQueryParams;\n\n action?: BulkUserActionOptions; // TODO: Rename this to \"actionCategory\"\n subAction?: BulkUserSubAction; // TODO: Rename this to \"action\"\n\n // Used to determine if we can show year level rollover\n allUsersSelected?: boolean;\n allUsersCount?: number;\n scrollContainer?: HTMLElement;\n}\n\nexport interface BulkUserActionsYearGroupRolloverViewModel extends BulkUserActionsViewModel {\n yearGroup: YearGroup;\n}\n\nexport interface BulkUserActionsAddToClassroomViewModel extends BulkUserActionsViewModel {\n classroom: Classroom;\n}\n\nexport interface BulkUserActionsResetPasswordViewModel extends BulkUserActionsViewModel {\n password: string;\n changeOnNextLogin: boolean;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\n\nimport { BulkUserActionStepId } from '../components/bulk-actions-wizard/layout/BulkUserActionsWizardLayout';\nimport { BaseBulkUserActionsViewModelKeys, BulkUserActionsViewModel } from '../interfaces/viewmodels/BulkUserActionsViewModel';\n\nexport const BulkUserActionsAnalyticsHelper = {\n getAnalyticsActionName(viewModel: BulkUserActionsViewModel): string | null {\n if (!viewModel?.action)\n return null;\n\n switch (viewModel.action) {\n case 'activation': {\n if (!viewModel?.subAction)\n return 'Deactivate / reactivate';\n\n if (viewModel.subAction === 'deactivate')\n return 'Deactivate';\n\n return 'Reactivate';\n }\n case 'addToClassroom':\n return 'Add to classroom';\n case 'changeYearGroup':\n return 'Change year level';\n case 'delete':\n return 'Delete user';\n case 'resetEmail':\n return 'Send password reset email';\n case 'activationEmail':\n return 'Send account activation email';\n case 'resetPassword':\n return 'Reset password';\n case 'yearGroupRollover':\n return 'Annual year level rollover';\n case 'removeFromSchool':\n return 'Remove user';\n default:\n return null;\n }\n },\n\n onClickNext(viewModel: BulkUserActionsViewModel, currentStep: BulkUserActionStepId): void {\n if (!viewModel)\n return;\n\n const analyticsData: HashObject = {\n userCount: viewModel.userIdMap.size,\n step: currentStep\n };\n\n const actionName = BulkUserActionsAnalyticsHelper.getAnalyticsActionName(viewModel);\n\n if (actionName)\n analyticsData.action = actionName;\n\n const actionData = ObjectHelper.omit(viewModel, BaseBulkUserActionsViewModelKeys);\n\n // Adds extra items like the `yearGroup` on year level actions or `password` on the reset pw action\n if (Object.keys(actionData).length)\n analyticsData.actionData = actionData;\n\n AnalyticsHelper.logUserAction(analyticsData, {\n location: LocationContext.BulkUserActionsWizard,\n workflowPhase: WorkflowPhase.Next,\n actionType: UserAction.BulkAction,\n entity: EntityType.User\n });\n },\n\n logYearGroupRolloverEntry(location: LocationContext): void {\n AnalyticsHelper.logUserAction({\n action: BulkUserActionsAnalyticsHelper.getAnalyticsActionName({ action: 'yearGroupRollover' })\n }, {\n entity: EntityType.User,\n actionType: UserAction.BulkAction,\n workflowPhase: WorkflowPhase.Start,\n location\n });\n },\n\n getJobStatus(status: BatchJobStatus): string | null {\n switch (status) {\n case BatchJobStatus.Completed:\n return 'Success';\n case BatchJobStatus.CompletedWithError:\n return 'Completed with some errors';\n case BatchJobStatus.Failed:\n return 'Failed';\n default:\n return null;\n }\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}> </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}","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '27927466562201',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097',\n ManageGroupPermissions = '35407217335705',\n MarcFormatDifferences = '48276917260441',\n ExportLibraries = '17684275853465'\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};","export const SelectWithSpreadsheetTemplates = '/templates/Template_Select_With_Spreadsheet.csv';\n","import { Flight } from 'libs/common/flight';\n\nimport { SearchResults } from 'libs/shared/apps/search/interfaces';\nimport { UserManagerQueryParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserManagerQueryParams';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { CurrentUser, User, UserCollection } from 'libs/shared/interfaces';\n\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\n\ntype Response = UserCollection | SearchResults<User>;\n\nexport function useFetchUsers(\n currentUser: CurrentUser,\n queryParams: UserManagerQueryParams,\n userType: UserGroup\n): Flight.Response<Response> {\n function getFetchRequest(): Flight.Request {\n if (!currentUser)\n return null;\n const queryParamsKeys = Object.keys(queryParams);\n\n const onlyPagination = queryParamsKeys.length === 1 && !!queryParams.cursor\n || queryParamsKeys.length === 2 && queryParamsKeys.includes('cursor') && queryParamsKeys.includes('previous');\n\n const onlyHasSort = queryParamsKeys.length === 1 && !!queryParams.sort;\n\n // If we have a search query or filter, we want to use it to limit our search. If not, we want to search all students.\n if (Object.keys(queryParams).length && !onlyPagination && !onlyHasSort)\n return UserManagerRequests.searchUsers(\n currentUser.customerId,\n currentUser.id,\n userType,\n queryParams,\n queryParams?.cursor\n );\n\n return UserManagerRequests.getUsers(currentUser.customerId, userType, queryParams, queryParams?.cursor);\n }\n\n return Flight.useBasicFetch<Response>(getFetchRequest());\n}"],"names":["PartialSearchFilters","count","className","Array","fill","map","item","index","key","namespace","UserManagerSearchEmptyState","props","EmptyState","src","imageUrl","Text","phrase","PartialUserItem","PartialUserList","BulkSelectionSummary","selectAllSpinner","setSelectAllSpinner","selectedCount","showSelectingSpinner","showSelectAll","onClickSelectAll","allSelected","selectAllCount","UserManagerConstants","Spinner","as","size","animation","role","SvgContainer","svgName","options","smartCount","type","getTypeText","undefined","DivButton","onClick","onClickDeselectAll","Tooltip","spanHack","title","hasRostering","LanguageService","onClickSelectBulk","disabled","JobTitle","jobTitle","user","userProfile","metadata","LastActive","date","status","ObjectStatus","DateHelper","isDateValid","lastSignedIn","includes","Number","isNaN","substr","toUpperCase","getLastActiveDate","lastSignInTime","isCurrentUser","id","toString","currentUser","UserAuthenticationMethods","sortedAuthMethods","authenticationMethods","sort","method","local","length","hasSSO","find","am","authMethod","i","backgroundColor","backgroundColour","displayName","style","zIndex","backgroundImage","logoUrl","TABLE_THEME","table","row","cell","ManageUsersTable","users","isChecked","client","UserManagerClientContext","data","checked","columns","onToggleCheckbox","imageCdnUrl","appLinks","products","onClickResendActivationEmail","onClickSendResetEmail","onClickSendVerificationEmail","onEditUser","onEditUserOptions","shouldDisplayAuthenticationMethods","ssoHelpArticle","countryCode","accessor","Cell","Checkbox","value","onChange","width","name","UserItemAvatar","IconCircle","variant","svgSize","S","svgWrapperClassName","BasicUserDetails","RoleOrYearGroup","userType","UserManagerClient","push","UserItemActions","getColumns","Table","theme","namespaces","UserGroup","SelectWithSpreadsheet","download","href","templateLink","cellPadding","BulkUploadFileSelect","onSelectSpreadsheet","BulkUserUploadHelper","onClickCancel","clone","headings","shift","isValid","errorMessage","InvalidSpreadsheetError","requests","SelectWithSpreadsheetPopup","CheckboxHelper","checkboxHelper","fetchAsync","ids","dataLoaded","Popup","closePopup","showLoadingSpinner","dialogClassName","queries","spreadsheetRowCount","setShowSelectingSpinner","q","userRequest","Promise","all","then","res","forEach","r","concat","selectAll","AnalyticsHelper","totalUsersFound","workflowPhase","actionType","entity","descriptor","location","template","useManageUsersCheckboxHelper","useBulkCheckboxManager","bulkSelections","setBulkSelections","getSelectionKey","queryParams","cursor","Object","keys","param","isArray","join","userIds","setSelected","onToggleItem","onToggleBulk","bulkChecked","reset","subNamespaces","ManageUsers","analyticsLocation","subNamespace","locationContext","SharedViewModelKeys","viewModel","setBulkActionViewModel","isSelectingWithSpreadsheet","setIsSelectingWithSpreadsheet","showSpinner","setShowSpinner","persistNamespace","initialState","userIdMap","extraActions","setWizardViewModel","actions","label","appLink","exportUserList","analyticsOptions","analyticsData","auditLog","LocalStorageHelper","onSelectWithSpreadsheetSelect","yearGroupRolloverStatus","yearGroups","canRollover","bulkActionsActionDetails","yearGroupRollover","tooltip","action","subAction","BulkUserActionsAnalyticsHelper","error","CannotYearGroupRolloverError","previousRolloverDate","useGetActions","clearOnExit","unsetAllUsersSelected","current","totalUsers","getSelectedCount","mainFilters","UserManagerHelper","customer","showFiltersPartialLoading","RosteringAlert","indeterminate","hasSomeSelections","SearchFilters","userManager","hideHeading","hideDivider","constantIndices","ScopedSearchBar","placeholder","searchAppLink","search","searchInputSize","searchIndices","ActionsDropdown","dropdownToggleClassName","success","userCount","fetchUserIds","allUsersSelected","BulkUserActionsHelper","getMap","bulkActionsReviewAccounts","config","hasSso","searchEmptyState","selectWithSpreadsheetTemplate","UserManagerEntries","totalShowing","PartialUserManagerEntries","UserManagerHeader","hasNumbers","headingComponent","Breadcrumbs","breadcrumbs","settings","active","placement","IconButton","ssoAddUserConfirm","addNewUsers","lang","localDate","text","this","supportUrl","linkClass","buttons","useFetchUserCount","getUserCountRequest","customerId","BaseBulkUserActionsViewModelKeys","getAnalyticsActionName","onClickNext","currentStep","step","actionName","actionData","ObjectHelper","logYearGroupRolloverEntry","getJobStatus","BatchJobStatus","PartialTagItem","tagClass","classNames","TagWidgetItem","colorClass","selectedItems","selection","tag","OnlineSupportArticle","LiteSupportArticle","collection","idField","initial","Map","items","forceUpdate","prevCollection","prevNamespace","clear","get","isBulkChecked","every","set","preselectedIds","setValue","nextItemState","getSelected","from","deselectAll","SelectWithSpreadsheetTemplates","useFetchUsers","queryParamsKeys","onlyPagination","onlyHasSort","getFetchRequest"],"sourceRoot":""}
|