@clickview/lite 0.78.0-rc.0 → 0.78.0-rc.2

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.
Files changed (23) hide show
  1. package/dist/bundles.json +2 -2
  2. package/dist/css/{lite-app-64e7796d07.css → lite-app-59edbde8e9.css} +1 -1
  3. package/dist/languages/en.json +1 -1
  4. package/dist/scripts/{147-65ed8eb667-lite.chunk.js → 147-291667472e-lite.chunk.js} +1 -1
  5. package/dist/scripts/147-291667472e-lite.chunk.js.map +1 -0
  6. package/dist/scripts/{2985-cd2caaab09-lite.chunk.js → 2985-57417d1a16-lite.chunk.js} +3 -3
  7. package/dist/scripts/2985-57417d1a16-lite.chunk.js.map +1 -0
  8. package/dist/scripts/8933-00251901c0-lite.chunk.js +3 -0
  9. package/dist/scripts/8933-00251901c0-lite.chunk.js.map +1 -0
  10. package/dist/scripts/9843-7b3aab0fbe-lite.chunk.js +2 -0
  11. package/dist/scripts/9843-7b3aab0fbe-lite.chunk.js.map +1 -0
  12. package/dist/scripts/{bundle-d3c26bfa42.min.js → bundle-fe9643b6ef.min.js} +3 -3
  13. package/dist/scripts/{bundle-d3c26bfa42.min.js.map → bundle-fe9643b6ef.min.js.map} +1 -1
  14. package/package.json +1 -1
  15. package/dist/scripts/147-65ed8eb667-lite.chunk.js.map +0 -1
  16. package/dist/scripts/2985-cd2caaab09-lite.chunk.js.map +0 -1
  17. package/dist/scripts/8933-3d366deae2-lite.chunk.js +0 -3
  18. package/dist/scripts/8933-3d366deae2-lite.chunk.js.map +0 -1
  19. package/dist/scripts/9843-e750603a26-lite.chunk.js +0 -2
  20. package/dist/scripts/9843-e750603a26-lite.chunk.js.map +0 -1
  21. /package/dist/scripts/{2985-cd2caaab09-lite.chunk.js.LICENSE.txt → 2985-57417d1a16-lite.chunk.js.LICENSE.txt} +0 -0
  22. /package/dist/scripts/{8933-3d366deae2-lite.chunk.js.LICENSE.txt → 8933-00251901c0-lite.chunk.js.LICENSE.txt} +0 -0
  23. /package/dist/scripts/{bundle-d3c26bfa42.min.js.LICENSE.txt → bundle-fe9643b6ef.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/2985-57417d1a16-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/components/share-avatar/ShareAvatar.tsx","file:///app/packages/libs/shared/src/apps/share-v2/hooks/useCreateShare.ts","file:///app/packages/libs/shared/src/components/multistep-popup/MultiStepPopup.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteScroll.ts","file:///app/packages/libs/shared/src/hooks/UseInfiniteList.ts","file:///app/packages/libs/shared/src/utils/GroupHelper.ts","file:///app/packages/projects/lite/src/apps/assign/components/flow-settings/FlowSettings.tsx","file:///app/packages/projects/lite/src/apps/assign/components/flow-settings/flow-settings.scss","file:///app/packages/projects/lite/src/apps/assign/views/classroom-create-prompt-view/components/create-prompt/CreatePrompt.tsx","file:///app/packages/projects/lite/src/apps/assign/views/classroom-create-prompt-view/components/create-prompt/create-prompt.scss","file:///app/packages/projects/lite/src/apps/assign/views/classroom-create-prompt-view/ClassroomCreatePromptView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/classroom-selector-view/components/narrow-selection-button/NarrowSelectionButton.tsx","file:///app/packages/projects/lite/src/apps/assign/views/classroom-selector-view/components/classroom-selector-list-item/ClassroomSelectorListItem.tsx","file:///app/packages/projects/lite/src/apps/assign/views/classroom-selector-view/components/classroom-selector-list/ClassroomSelectorList.tsx","file:///app/packages/projects/lite/src/apps/assign/views/classroom-selector-view/ClassroomSelectorView.tsx","file:///app/node_modules/react-bootstrap/esm/InputGroupText.js","file:///app/node_modules/react-bootstrap/esm/InputGroup.js","file:///app/packages/projects/lite/src/apps/assign/views/create-new-classroom-view/CreateNewClassroomView.tsx","file:///app/packages/projects/lite/src/apps/assign/components/selected-classroom-header/SelectedClassroomHeader.tsx","file:///app/packages/projects/lite/src/apps/assign/views/existing-classroom-flow-settings-view/components/existing-classroom-flow-settings/ExistingClassroomFlowSettings.tsx","file:///app/packages/projects/lite/src/apps/assign/views/existing-classroom-flow-settings-view/hooks/useExistingClassroomFlowSettingsData.tsx","file:///app/packages/projects/lite/src/apps/assign/views/existing-classroom-flow-settings-view/ExistingClassroomFlowSettingsView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/narrow-classroom-selection-view/enums/SelectionType.ts","file:///app/packages/projects/lite/src/apps/assign/views/narrow-classroom-selection-view/components/accordion/Accordion.tsx","file:///app/packages/projects/lite/src/apps/assign/views/narrow-classroom-selection-view/components/classroom-entity-list/ClassroomEntityList.tsx","file:///app/packages/projects/lite/src/apps/assign/views/narrow-classroom-selection-view/components/narrow-classroom-selection-controls/NarrowClassroomSelectionControls.tsx","file:///app/packages/projects/lite/src/apps/assign/views/narrow-classroom-selection-view/NarrowClassroomSelectionView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/no-classroom-view/NoClassroomView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/no-existing-classroom-view/NoExistingClassroomView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/no-students-details-view/NoStudentsDetailsView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/no-students-details-view/no-students-details-view.scss","file:///app/packages/projects/lite/src/apps/assign/views/existing-classroom-flow-view/config/ExistingClassroomStepConfig.ts","file:///app/packages/projects/lite/src/apps/assign/views/classroom-selector-view/hooks/use-classroom-selector-data/useClassroomSelectorData.tsx","file:///app/packages/projects/lite/src/apps/assign/views/classroom-selector-view/classroom-selector-view.scss","file:///app/packages/projects/lite/src/apps/assign/views/narrow-classroom-selection-view/hooks/useNarrowClassroomSelectionData.tsx","file:///app/packages/projects/lite/src/apps/assign/views/existing-classroom-flow-view/ExistingClassroomFlowView.tsx","file:///app/packages/projects/lite/src/apps/assign/views/existing-classroom-flow-view/hooks/useExistingClassroomFlowData.ts","file:///app/packages/projects/lite/src/apps/classrooms/hooks/useFetchClassrooms.ts","file:///app/packages/projects/lite/src/apps/classrooms/validation/ClassroomValidationSchema.ts"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../../enums/SharePrivacy';\nimport { ShareType } from '../../enums/ShareType';\n\nconst namespace = 'sharev2.shareAvatar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.Classrooms,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play,\n [ShareType.LegacyDirect]: cvSvgLibrary.Share\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'purple',\n [ShareType.Live]: 'purple',\n [ShareType.LegacyDirect]: 'indigo'\n};\n\nconst shareTypeTitlePhraseMap = {\n [ShareType.Open]: 'openShareType',\n [ShareType.Link]: 'linkShareType',\n [ShareType.Classroom]: 'classroomShareType',\n [ShareType.Live]: 'liveShareType',\n [ShareType.LegacyDirect]: 'legacyDirectShareType'\n};\n\nfunction getTitle({ type, classroomName, additionalTitleText, openClassroomName }: ShareAvatarProps) {\n if (type === ShareType.Open && openClassroomName)\n return openClassroomName;\n \n if (type === ShareType.Classroom && classroomName)\n return classroomName;\n\n let title = getPhrase(shareTypeTitlePhraseMap[type]);\n\n if (additionalTitleText)\n title += ' ' + additionalTitleText;\n\n return title;\n}\n\nfunction getClassroomSubtitle(classroomGroupCount: number, studentCount: number): string {\n if (classroomGroupCount && studentCount)\n return `${getPhrase('classroomGroupCount', { smartCount: classroomGroupCount })}, ${getPhrase('studentSubTitle', { smartCount: studentCount })}`;\n\n if (classroomGroupCount)\n return getPhrase('groupSubTitle', { smartCount: classroomGroupCount });\n\n if (studentCount)\n return getPhrase('studentSubTitle', { smartCount: studentCount });\n\n return getPhrase('allStudentsSubTitle');\n}\n\nfunction getLinkSubtitle(privacy: SharePrivacy) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(privacy))\n return getPhrase('respectRatingsSubTitle');\n\n if (privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return getPhrase('anyoneInSchoolSubTitle');\n\n if (privacy === SharePrivacy.ProtectedOverrideRestriction)\n return getPhrase('anyoneSignedInSubTitle');\n\n if (privacy === SharePrivacy.Public)\n return getPhrase('anyoneWithLinkSubTitle');\n\n if (privacy === SharePrivacy.PinCode)\n return getPhrase('anyoneWithPinSubTitle');\n}\n\nfunction getSubtitle({ type, privacy, studentCount = 0, classroomGroupCount = 0 }: ShareAvatarProps) {\n switch (type) {\n case ShareType.Classroom:\n return getClassroomSubtitle(classroomGroupCount, studentCount);\n\n case ShareType.Open:\n return getPhrase('openShareTypeSubTitle');\n\n case ShareType.Link:\n return getLinkSubtitle(privacy);\n \n case ShareType.Live:\n return getPhrase('liveShareTypeSubTitle');\n\n case ShareType.LegacyDirect:\n return getPhrase('legacyDirectTypeSubTitle');\n\n default:\n return getPhrase('publicShareTypeSubTitle');\n }\n}\n\ninterface ShareAvatarProps {\n type: ShareType;\n privacy: SharePrivacy;\n studentCount?: number;\n classroomGroupCount?: number;\n classroomName?: string;\n openClassroomName?: string;\n hideSubtitle?: boolean;\n subtitleText?: string;\n svgSize?: SvgContainerSize;\n additionalTitleText?: string;\n className?: string;\n titleClassName?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n const title = getTitle(props);\n return (\n <div className={classNames('d-flex align-items-center gap-2', props.className)}>\n <div>\n <IconCircle\n svgName={icons[props.type]}\n variant={iconColours[props.type]}\n textVariant='white'\n svgWrapperClassName='p-1'\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column'>\n <p className={classNames('m-0', props.titleClassName)} title={title}>{title}</p>\n {!props.hideSubtitle && <span className='text-secondary'>{props.subtitleText ?? getSubtitle(props)}</span>}\n </div>\n </div>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests as ShareRequestsV1 } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { ShareRequests as ShareRequestsV2 } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\n\ninterface CreateDirectShareOptions {\n objectId: string;\n preventScrubbing: boolean;\n immediateFeedback: boolean;\n requireSignIn: boolean;\n message?: string;\n recipients: string[];\n scopeId: string;\n}\n\ninterface CreateOpenSessionOptions {\n name: string;\n objectId: string;\n preventScrubbing: boolean;\n immediateFeedback: boolean;\n requireSignIn: boolean;\n respectRatingsAndRestrictions: boolean;\n}\n\ninterface CreatePincodeOptions {\n shareId: string;\n}\n\nexport function useCreateShare(objectId: string) {\n const accessPermissions = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequestsV1.getPrivacy(objectId));\n const fetchAsync = Flight.useGetFetchAsync();\n const canManageAccess = accessPermissions.data?.canManageAccess;\n\n async function createDirectShare(options: CreateDirectShareOptions) {\n if (!accessPermissions.data) return;\n\n const privacy = options.requireSignIn ? SharePrivacy.Direct : SharePrivacy.PinCode;\n\n const share = await fetchAsync<Share>(ShareRequestsV2.createShare({\n objectId: options.objectId,\n type: ShareType.Classroom,\n privacy,\n optionRequest: {\n preventScrubbing: options.preventScrubbing,\n immediateFeedback: options.immediateFeedback\n },\n recipientRequest: options\n .recipients\n .map(recipientId => ({ recipientId, message: options.message, scopeId: options.scopeId }))\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await createPincode({ shareId: share.shareId });\n\n return share;\n }\n\n async function createOpenSession(options: CreateOpenSessionOptions) {\n if (!accessPermissions.data) return;\n\n let privacy = SharePrivacy.PinCode;\n\n if (options.requireSignIn) {\n if (options.respectRatingsAndRestrictions) {\n privacy = canManageAccess ? SharePrivacy.JustMySchool : SharePrivacy.Protected;\n } else {\n privacy = canManageAccess\n ? SharePrivacy.JustMySchoolOverrideRestriction\n : SharePrivacy.ProtectedOverrideRestriction;\n }\n }\n\n const request: CreateShareRequest = {\n objectId: options.objectId,\n type: ShareType.Open,\n privacy,\n optionRequest: {\n preventScrubbing: options.preventScrubbing,\n immediateFeedback: options.immediateFeedback\n }\n };\n if (options.name.length)\n request.optionRequest.openClassroomName = options.name;\n\n const share = await fetchAsync<Share>(ShareRequestsV2.createShare(request));\n\n if (privacy === SharePrivacy.PinCode)\n await createPincode({ shareId: share.shareId });\n\n return share;\n }\n\n async function createPincode(options: CreatePincodeOptions) {\n return await fetchAsync<SharePincode>(ShareRequestsV2.createSharePincode(options.shareId));\n }\n\n return {\n createDirectShare,\n createOpenSession,\n canManageAccess,\n hasCompleted: accessPermissions.hasCompleted\n };\n}\n","import React from 'react';\n\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nexport interface MultiStepPopupViewProps extends PopupViewProps {\n animate?: boolean;\n loading?: boolean;\n}\n\nexport type MultiStepItemConfig<TProps, TSteps extends string> = {\n [Key in TSteps]: {\n view: (props: TProps) => JSX.Element;\n }\n}\n\ninterface MultiStepPopupProps<\n TProps,\n TSteps extends string\n> {\n step: TSteps;\n data: TProps;\n steps: MultiStepItemConfig<TProps, TSteps>;\n loading?: boolean;\n animate?: boolean;\n setStep: (step: TSteps) => void;\n closePopup: () => void;\n}\n\nexport function MultiStepPopup<TProps, TSteps extends string>(\n props: MultiStepPopupProps<TProps, TSteps>\n): JSX.Element {\n const [ animate, setAnimate ] = React.useState<boolean>(props.animate ?? true);\n\n function setStep(step: TSteps) {\n /**\n * We want to animate the popup for the first time it loads in.\n * After that every step changes should not animate other popups\n */\n setAnimate(false);\n props.setStep(step);\n }\n\n function closePopup() {\n props.closePopup();\n }\n\n const stepConfig = props.steps[props.step];\n /**\n * This is so that we do not override `loading` prop \n * passed into `ViewComponent` from `props.data` if `props.loading` is undefined.\n * We only want to override the prop if this is set.\n */\n const loading = typeof props.loading !== 'undefined' ? { loading: props.loading } : {};\n \n const viewProps: TProps = {\n ...props.data,\n ...loading,\n animate: props.animate ?? animate,\n closePopup,\n setStep\n };\n\n if (!stepConfig)\n return <></>;\n\n const ViewComponent = stepConfig.view;\n\n return <ViewComponent {...viewProps} />;\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { useEffect } from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nconst SCROLL_TOLERANCE = 400; // value in px\n\ninterface UseInfiniteScrollOptions {\n fetchNextPage: () => void;\n hasMore: boolean;\n isFetching: boolean;\n scrollContainer?: HTMLElement;\n}\n\nexport function useInfiniteScroll(options: UseInfiniteScrollOptions): void {\n const handleScroll = (): void => {\n if (options.isFetching)\n return;\n\n if (!options.scrollContainer) {\n const currentScrollHeight = window.innerHeight + document.documentElement.scrollTop;\n \n const totalHeight = document.documentElement.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n } else {\n const { scrollContainer } = options;\n const currentScrollHeight = scrollContainer.getBoundingClientRect().height + scrollContainer.scrollTop;\n \n const totalHeight = scrollContainer.scrollHeight - SCROLL_TOLERANCE;\n \n if (currentScrollHeight < totalHeight)\n return;\n }\n\n options.fetchNextPage();\n };\n\n useEffect(() => {\n const onScroll = FunctionHelper.throttle(handleScroll, 200);\n\n const scrollContainer = options.scrollContainer || window;\n\n if (options.hasMore)\n scrollContainer.addEventListener('scroll', onScroll);\n\n return () => scrollContainer.removeEventListener('scroll', onScroll);\n }, [ options.hasMore, options.fetchNextPage, options.scrollContainer ]);\n}","import { useEffect, useState } from 'react';\n\nimport { HttpStatus, HttpStatusClass } from 'libs/common/backbone/enums/HttpStatus';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { BaseObject, BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { useInfiniteScroll } from './UseInfiniteScroll';\nimport { useSelectAllPages } from './UseSelectAllPages';\n\nexport interface UseInfiniteListResult<T extends BaseObject> {\n items: T[];\n hasMore: boolean;\n isFetching: boolean;\n nextCursor: string;\n totalItems?: number;\n hasFirstPageCompleted: boolean;\n}\n\n/**\n * Hook to extract an infinite list from the application state,\n * save it locally in state and only update when new data\n * is fetched.\n * \n * @param getRequest - callback function to get the request for each page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n * \n * @param fetchNext - callback function to fetch a page.\n * Can be false if the request requires data that hasn't yet been fetched - e.g. user id.\n */\nexport function useInfiniteList<TObject = BaseObject, TResponse = BasePaginatedCollection<TObject>>(\n getRequest: ((cursor?: string) => Flight.Request) | false,\n fetchNext: ((cursor?: string) => void) | false,\n onError?: (pageNumber: number, statusCode: HttpStatus) => void,\n getItems?: (responseData: TResponse) => TObject[],\n getCursor?: (responseData: TResponse) => string,\n scrollContainer?: HTMLElement\n): UseInfiniteListResult<TObject> {\n const [ pagesFetched, setPagesFetched ] = useState(0);\n\n const fetchNextFn = fetchNext as (cursor?: string) => void;\n\n function getKey(cursor?: string): string {\n if (!getRequest)\n return null;\n\n const request = getRequest(cursor);\n\n if (!request)\n return null;\n\n return request.key;\n }\n\n const response = useSelectAllPages<TObject, TResponse>(\n getKey,\n getItems,\n getCursor\n );\n\n function fetchNextPage(): void {\n if (!fetchNext || !getRequest || !response)\n return;\n\n setPagesFetched(currentVal => currentVal + 1);\n return fetchNextFn(response.nextCursor);\n }\n\n useInfiniteScroll({\n fetchNextPage,\n hasMore: !!response?.nextCursor,\n isFetching: response?.isFetching,\n scrollContainer\n });\n\n useEffect(() => {\n if (!response)\n return;\n\n if (response.shouldInitialFetch && fetchNext) {\n fetchNextFn();\n setPagesFetched(currentVal => currentVal + 1);\n }\n }, [ response?.shouldInitialFetch, fetchNext ]);\n\n useEffect(() => {\n if (!response?.statusCode || !FunctionHelper.isFunction(onError))\n return;\n\n const httpStatusClass: HttpStatusClass = +(response.statusCode?.toString()?.substr(0, 1));\n\n if (httpStatusClass !== HttpStatusClass.ClientError && httpStatusClass !== HttpStatusClass.ServerError)\n return;\n\n onError(pagesFetched, response.statusCode);\n }, [response?.statusCode]);\n\n return {\n items: response?.items,\n hasMore: !!response?.nextCursor,\n nextCursor: response?.nextCursor,\n isFetching: response?.isFetching,\n totalItems: response?.totalItems,\n hasFirstPageCompleted: response?.hasFirstPageCompleted\n };\n}","import { ButtonProps } from 'react-bootstrap';\n\nimport { ClassroomGroupColour } from 'libs/shared/interfaces';\n\nexport function mapColourToBsVariant(groupColour: ClassroomGroupColour): ButtonProps['variant'] {\n switch (groupColour) {\n case ClassroomGroupColour.Pink:\n return 'pink';\n case ClassroomGroupColour.Orange:\n return 'orange';\n case ClassroomGroupColour.Green:\n return 'green';\n case ClassroomGroupColour.Blue:\n return 'blue';\n case ClassroomGroupColour.Purple:\n return 'purple';\n case ClassroomGroupColour.Indigo:\n return 'indigo';\n default:\n return 'pink';\n }\n}\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\n\nimport styles from './flow-settings.scss';\n\ninterface FlowSettingToggleItemProps {\n title: string;\n description: string;\n toggled: boolean;\n onClick: () => void;\n className?: string;\n hide?: boolean;\n disabled?: boolean;\n}\n\nfunction FlowSettingToggleItem(props: React.PropsWithChildren<FlowSettingToggleItemProps>): JSX.Element {\n const id = React.useId();\n\n if (props.hide)\n return;\n \n return (\n <Col xs={12} className={classNames(props.className)}>\n <div className='d-flex w-100'>\n <Checkbox\n id={id}\n name={id}\n onChange={props.onClick}\n checked={props.toggled}\n disabled={props.disabled}\n />\n <div className='w-100'>\n <div className='mb-1'>\n <label className='mb-1' htmlFor={id}>{props.title}</label>\n <p className='m-0 text-secondary'>{props.description}</p>\n </div>\n {props.children}\n </div>\n </div>\n </Col>\n );\n}\n\ninterface FlowSettingInputItemProps {\n title: string;\n value: string;\n onChange: (value: string) => void;\n hide?: boolean;\n note?: string;\n placeholder?: string;\n className?: string;\n error?: string;\n}\n\nfunction FlowSettingInputItem(props: React.PropsWithChildren<FlowSettingInputItemProps>): JSX.Element {\n const id = React.useId();\n \n if (props.hide)\n return;\n\n return (\n <Col xs={12} className={classNames(props.className)}>\n <div className='d-flex flex-column w-100'>\n <label className='mb-1' htmlFor={id}>{props.title}</label>\n <input type='text' id={id} className={classNames('form-control', props.error && 'is-invalid')} placeholder={props.placeholder ?? ''} value={props.value} onChange={e => props.onChange(e.target.value)} />\n {!!props.note && <span className='mt-1 text-secondary'>{props.note}</span>}\n {!!props.error && <span className='mt-1 text-danger'>{props.error}</span>}\n </div>\n </Col>\n );\n}\n\ninterface FlowSettingTextAreaItemProps {\n hide?: boolean;\n placeholder: string;\n value: string;\n onChange: (value: string) => void;\n}\n\nfunction FlowSettingTextAreaItem(props: FlowSettingTextAreaItemProps): JSX.Element {\n if (props.hide)\n return;\n\n return (\n <Col xs={12}>\n <textarea className={classNames('form-control', styles.textarea)} placeholder={props.placeholder} value={props.value} onChange={e => props.onChange(e.target.value)} />\n </Col>\n );\n}\n\ninterface FlowSettingItemDividerProps {\n withMargins?: boolean;\n hide?: boolean;\n}\n\nfunction FlowSettingItemDivider(props: FlowSettingItemDividerProps): JSX.Element {\n if (props.hide)\n return;\n \n return (\n <hr className={classNames(!props.withMargins && 'm-0')} />\n );\n}\n\ninterface FlowSettingItemsProps {\n name?: string;\n className?: string;\n childContainerClassName?: string;\n hide?: boolean;\n}\n\nexport function FlowSettings(props: React.PropsWithChildren<FlowSettingItemsProps>): JSX.Element {\n if (props.hide)\n return;\n \n return (\n <Row className={classNames('flow-setting-item-group gap-3 gx-0', props.className)}>\n {!!props.name && <Col xs={12} className='h6 m-0'>{props.name}</Col>}\n <div className={classNames('d-flex flex-column gap-3', props.childContainerClassName)}>\n {props.children}\n </div>\n </Row>\n );\n}\n\nFlowSettings.Toggle = FlowSettingToggleItem;\nFlowSettings.TextArea = FlowSettingTextAreaItem;\nFlowSettings.Divider = FlowSettingItemDivider;\nFlowSettings.Input = FlowSettingInputItem;","// extracted by mini-css-extract-plugin\nexport default {\"textarea\":\"icGmN\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './create-prompt.scss';\n\nconst namespace = 'classroomCreatePromptView.createPrompt';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CreatePromptProps {\n onClick: () => void;\n}\n\nexport function CreatePrompt(props: CreatePromptProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='d-flex flex-column align-items-center'>\n <img src={ImageUrls.Assign.CREATE_CLASSROOM} alt={getPhrase('imageAlt')} className={classNames('mb-3', styles.image)} />\n <h6 className='mb-2'><Text phrase='title' /></h6>\n <p className='mb-3'><Text phrase='description' /></p>\n <button className='btn btn-outline-dark px-4' onClick={props.onClick}>\n <Text phrase='createBtn' />\n </button>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"nUzTr\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { CreatePrompt } from './components/create-prompt/CreatePrompt';\n\nconst namespace = 'assign.classroomCreatePromptView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ClassroomCreatePromptViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n goToFlowSelector: () => void;\n goToCreateClassroomForm: () => void;\n hideBackButton?: boolean;\n}\n\nexport function ClassroomCreatePromptView(props: ClassroomCreatePromptViewProps): JSX.Element {\n const { log } = getAssignEventLogger({\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n location: LocationContext.Popup,\n entity: EntityType.Assign\n }\n });\n\n function goToCreateClassroomForm() {\n log({ type: 'click-create-classroom' });\n \n props.goToCreateClassroomForm();\n }\n\n return (\n <Popup\n size='lg'\n animation={props.animate}\n showLoadingSpinner={props.loading}\n closePopup={props.closePopup}\n title={getPhrase('title')}\n bodyClassName='d-flex flex-column gap-3'\n >\n <CreatePrompt onClick={goToCreateClassroomForm} />\n\n <FlowControls\n hideBackButton={props.hideBackButton}\n onClickBack={props.goToFlowSelector}\n hideNextButton\n hideCreateClassroomButton\n />\n </Popup>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'assign.narrowSelectionButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface NarrowSelectionButtonProps {\n hasRecipients: boolean;\n onClickSelectGroupsOrStudents: () => void;\n}\n\nexport function NarrowSelectionButton(props: NarrowSelectionButtonProps): JSX.Element {\n function onClickSelectGroupsOrStudents() {\n if (!props.hasRecipients)\n return;\n\n props.onClickSelectGroupsOrStudents();\n }\n \n return (\n <Tooltip\n title={getPhrase('noStudentsTooltip')}\n spanHack\n placement='top'\n disable={props.hasRecipients}\n >\n <Button\n variant='link'\n className={classNames(\n 'py-0 px-2',\n props.hasRecipients ? 'cursor-pointer text-info hover-text-underline' : 'text-secondary'\n )}\n onClick={onClickSelectGroupsOrStudents}\n disabled={!props.hasRecipients}\n >\n <Text namespace={namespace} phrase='narrowSelectionPrompt' />\n </Button>\n </Tooltip>\n );\n}","import React from 'react';\nimport { Col, Form, Row } from 'react-bootstrap';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { NarrowSelectionButton } from '../narrow-selection-button/NarrowSelectionButton';\n\nconst namespace = 'assign.classroomSelectorListItem';\n\ninterface ClassroomSelectorListItemProps {\n id: string;\n name: string;\n isSelected: boolean;\n studentsCount: number;\n onSelected: () => void;\n onClickSelectGroupsOrStudents: () => void;\n}\n\nexport function ClassroomSelectorListItem(props: ClassroomSelectorListItemProps): JSX.Element {\n return (\n <Row\n className={classNames(\n 'px-2 py-1 g-0 w-100 rounded cursor-pointer mb-1',\n props.isSelected ? 'bg-light' : 'bg-light-hover'\n )}\n onClick={props.onSelected}\n >\n <Col md={7} className='d-flex align-items-center gap-2'>\n <Form.Check\n type='radio'\n name='classroom-radio'\n id='classroom-radio'\n className='form-check'\n value={props.id}\n onChange={props.onSelected}\n checked={props.isSelected}\n />\n <div className='d-flex align-items-center gap-2'>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant='purple'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <div className='w-100'>\n <label className='m-0'>{props.name}</label>\n <p className='m-0 text-muted font-size-sm'>\n <Text namespace={namespace} phrase='studentsCount' options={{ smartCount: props.studentsCount }} />\n </p>\n </div>\n </div>\n </Col>\n <Col md={5} className={classNames(\n !props.studentsCount ? 'd-none' : 'd-inline-block', // hide this for smaller screens if there are no students\n props.isSelected && 'py-2 py-md-0',\n 'd-md-flex justify-content-center align-items-center' // always show this for larger screens with disabled state\n )}>\n {props.isSelected && (\n <NarrowSelectionButton\n hasRecipients={!!props.studentsCount}\n onClickSelectGroupsOrStudents={props.onClickSelectGroupsOrStudents}\n />\n )}\n </Col>\n </Row>\n );\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { GetClassroomsResponse } from 'apps/classrooms/hooks/useFetchClassrooms';\n\nimport { ClassroomSelectorListItem } from '../classroom-selector-list-item/ClassroomSelectorListItem';\n\n\nconst namespace = 'assign.classroomSelectorList';\nconst MIN_MAX_HEIGHT = 300;\n\ninterface ClassroomSelectorListProps {\n searchQuery: string;\n classrooms: GetClassroomsResponse;\n selectedClassroom?: Classroom;\n onClickCreateOpenClassroom: () => void;\n getStudentsCount: (classroom: Classroom) => number;\n onClickSelectGroupsOrStudents: () => void;\n onClassroomSelected: (classroom: Classroom) => void;\n hideCreateOpenClassroomLink?: boolean;\n}\n\nexport function ClassroomSelectorList(props: ClassroomSelectorListProps): JSX.Element {\n const loading = !props.classrooms.hasFirstPageCompleted;\n const classrooms = props.classrooms.items;\n \n if (!loading && !classrooms.length) {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Search.RESULTS} size='small' altText='No results found'/>\n <h3 role='status'>\n <Text phrase='noResultsTitle' namespace={namespace} options={{ query: props.searchQuery }} />\n </h3>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='contactAdminInfo' />\n {!props.hideCreateOpenClassroomLink &&\n <>\n &nbsp;\n <Text namespace={namespace} phrase='or' />\n &nbsp;\n <a className='p-0 text-info cursor-pointer' onClick={props.onClickCreateOpenClassroom} >\n <Text namespace={namespace} phrase='createOpenClassroom' />\n </a>\n </>\n }\n </EmptyState.Info>\n </EmptyState>\n );\n }\n \n return (\n <div className='d-flex flex-column gap-2'>\n <h3 className='h6 m-0'><Text namespace={namespace} phrase='listTitle' /></h3>\n <div>\n {loading && <PopupLoadingSpinner />}\n\n {!loading && (\n <Scrollbars\n autoHeight\n autoHeightMin={MIN_MAX_HEIGHT}\n autoHeightMax={MIN_MAX_HEIGHT}\n >\n {classrooms.map(classroom => (\n <ClassroomSelectorListItem\n key={classroom.id}\n id={classroom.id}\n isSelected={props.selectedClassroom?.id === classroom.id}\n name={classroom.name}\n onClickSelectGroupsOrStudents={props.onClickSelectGroupsOrStudents}\n onSelected={() => props.onClassroomSelected(classroom)}\n studentsCount={props.getStudentsCount(classroom)}\n />\n ))}\n {(props.classrooms.hasMore || props.classrooms.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.classrooms.isFetching}\n fetchNext={props.classrooms.fetchNext}\n nextCursor={props.classrooms.nextCursor}\n fetchOnScroll\n />\n )}\n </Scrollbars>\n )}\n </div>\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { ClassroomSelectorList } from './components/classroom-selector-list/ClassroomSelectorList';\nimport { useClassroomSelectorData } from './hooks/use-classroom-selector-data/useClassroomSelectorData';\n\nimport styles from './classroom-selector-view.scss';\n\nconst namespace = 'assign.classroomSelectorView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ClassroomSelectorViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n selectedClassroom: Classroom;\n setSelectedClassroom: (classroom: Classroom) => void;\n goToFlowSelector: () => void;\n goToOpenClassroomFlow: () => void;\n goToNarrowSelection: () => void;\n goToSettings: () => void;\n goToCreateClassroomForm: () => void;\n hideBackButton?: boolean;\n hideCreateClassroomLink?: boolean;\n}\n\nexport function ClassroomSelectorView(props: ClassroomSelectorViewProps): JSX.Element {\n const { log } = getAssignEventLogger({\n analyticsOptions: {\n entity: EntityType.Assign,\n location: LocationContext.Popup\n },\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n }\n });\n \n const viewModel = useClassroomSelectorData({\n selectedClassroom: props.selectedClassroom,\n setSelectedClassroom: props.setSelectedClassroom,\n goToNarrowSelection: () => {\n log({\n type: 'select-narrow-selection',\n classroom: props.selectedClassroom\n });\n \n props.goToNarrowSelection();\n }\n });\n\n const { classrooms } = viewModel.data;\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={props.loading}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n >\n <div className='position-relative'>\n <div className={`position-absolute top-50 start-0 translate-middle-y p-1`}>\n <SvgContainer svgName={cvSvgLibrary.Search} size={SvgContainerSize.Standard} />\n </div>\n <input\n type='text'\n value={viewModel.query}\n placeholder={getPhrase('inputPlaceholder')}\n onChange={e => viewModel.setQuery(e.target.value)}\n className={`form-control pe-1 py-2 border-dark ${styles.searchInput}`}\n />\n </div>\n\n <ClassroomSelectorList\n searchQuery={viewModel.debouncedQuery}\n classrooms={classrooms}\n selectedClassroom={props.selectedClassroom}\n getStudentsCount={viewModel.getStudentsCount}\n onClassroomSelected={viewModel.onClassroomSelected}\n onClickCreateOpenClassroom={props.goToOpenClassroomFlow}\n onClickSelectGroupsOrStudents={viewModel.onClickSelectGroupsOrStudents}\n hideCreateOpenClassroomLink={props.hideCreateClassroomLink}\n />\n \n <FlowControls\n hideBackButton={props.hideBackButton}\n hideCreateClassroomButton={!viewModel.canCreateClassrooms}\n onClickBack={props.goToFlowSelector}\n onClickNext={props.goToSettings}\n disableNextButton={!props.selectedClassroom}\n onClickCreateClassroom={props.goToCreateClassroomForm}\n />\n </Popup>\n );\n}","\"use client\";\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst InputGroupText = /*#__PURE__*/React.forwardRef(({\n className,\n bsPrefix,\n as: Component = 'span',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group-text');\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n className: classNames(className, bsPrefix),\n ...props\n });\n});\nInputGroupText.displayName = 'InputGroupText';\nexport default InputGroupText;","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport FormCheckInput from './FormCheckInput';\nimport InputGroupContext from './InputGroupContext';\nimport InputGroupText from './InputGroupText';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst InputGroupCheckbox = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"checkbox\",\n ...props\n })\n});\nconst InputGroupRadio = props => /*#__PURE__*/_jsx(InputGroupText, {\n children: /*#__PURE__*/_jsx(FormCheckInput, {\n type: \"radio\",\n ...props\n })\n});\nconst InputGroup = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n size,\n hasValidation,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n bsPrefix = useBootstrapPrefix(bsPrefix, 'input-group');\n\n // Intentionally an empty object. Used in detecting if a dropdown\n // exists under an input group.\n const contextValue = useMemo(() => ({}), []);\n return /*#__PURE__*/_jsx(InputGroupContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, bsPrefix, size && `${bsPrefix}-${size}`, hasValidation && 'has-validation')\n })\n });\n});\nInputGroup.displayName = 'InputGroup';\nexport default Object.assign(InputGroup, {\n Text: InputGroupText,\n Radio: InputGroupRadio,\n Checkbox: InputGroupCheckbox\n});","import React from 'react';\nimport { Form, InputGroup } from 'react-bootstrap';\nimport { useFormik } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { ClassroomValidationSchema } from 'apps/classrooms/validation/ClassroomValidationSchema';\n\nconst namespace = 'assign.createNewClassroomView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface CreateNewClassroomViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n goToPrevStep: () => void;\n onCreateNewClassroom: (classroom: Classroom) => void;\n}\n\ninterface CreateNewClassroomFormData {\n name: string;\n}\n\nexport function CreateNewClassroomView(props: CreateNewClassroomViewProps): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n\n const { log } = getAssignEventLogger({\n analyticsOptions: {\n entity: EntityType.Assign,\n location: LocationContext.Popup\n },\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n }\n });\n\n const [ loading, setLoading ] = React.useState<boolean>(false);\n\n const initialValues: CreateNewClassroomFormData = {\n name: ''\n };\n\n const formik = useFormik<CreateNewClassroomFormData>({\n initialValues,\n onSubmit: onCreateNewClassroom,\n validationSchema: ClassroomValidationSchema,\n validateOnChange: true\n });\n\n function onCreateNewClassroom(data: CreateNewClassroomFormData) {\n if (loading || !formik.isValid)\n return;\n\n setLoading(true);\n \n fetchAsync<Classroom>(ClassroomRequests.createClassroom({ name: data.name }))\n .then(newClassroom => {\n log({\n type: 'create-new-classroom',\n classroom: newClassroom\n });\n props.onCreateNewClassroom(newClassroom);\n }).catch(() => {\n formik.setFieldError('name', getPhrase('createClassroomError', { name: data.name }));\n }).finally(() => {\n setLoading(false);\n });\n }\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={props.loading}\n animation={props.animate}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n >\n <Form className='w-100' onSubmit={formik.handleSubmit}>\n <Form.Group>\n <Form.Label htmlFor='name' className='mb-1'>\n <Text namespace={namespace} phrase='newClassroomLabel' />\n </Form.Label>\n <InputGroup hasValidation>\n <Form.Control\n type='text'\n className='form-control'\n name='name'\n id='name'\n placeholder={getPhrase('newClassroomPlaceholder')}\n value={formik.values.name}\n onChange={formik.handleChange}\n maxLength={255}\n isInvalid={!!formik.errors.name}\n />\n <Form.Control.Feedback type='invalid'>\n {formik.errors.name}\n </Form.Control.Feedback>\n </InputGroup>\n </Form.Group>\n </Form>\n <FlowControls\n hideCreateClassroomButton\n onClickBack={props.goToPrevStep}\n onClickNext={formik.submitForm}\n disableNextButton={!formik.isValid || loading || !formik.values.name.length}\n showSpinner={loading}\n nextButtonText={getPhrase('nextButton')}\n />\n </Popup>\n );\n}","import React from 'react';\nimport { Button } from 'react-bootstrap';\n\nimport { ShareAvatar } from 'libs/shared/apps/share-v2/components/share-avatar/ShareAvatar';\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Classroom } from 'libs/shared/interfaces';\n\nconst namespace = 'assign.selectedClassroomHeader';\n\ninterface SelectedClassroomHeaderProps {\n classroom: Classroom;\n hideSubtitle?: boolean;\n subtitleText?: string;\n onClickChangeClassroom?: () => void;\n}\n\nexport function SelectedClassroomHeader(props: SelectedClassroomHeaderProps): JSX.Element {\n return (\n <div className='d-flex align-items-center w-100 gap-2 justify-content-between'>\n <div className='flex-grow-1'>\n <ShareAvatar\n type={ShareType.Classroom}\n privacy={SharePrivacy.Direct}\n classroomName={props.classroom.name}\n studentCount={props.classroom?.enrolments?.count}\n subtitleText={props.subtitleText}\n hideSubtitle={props.hideSubtitle ?? true}\n />\n </div>\n {typeof props.onClickChangeClassroom === 'function' &&\n <Button\n variant='link'\n className='text-info hover-text-underline'\n onClick={props.onClickChangeClassroom}\n >\n <Text namespace={namespace} phrase='changeClassroomButton' />\n </Button>\n }\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { FlowSettings } from 'apps/assign/components/flow-settings/FlowSettings';\nimport { SelectedClassroomHeader } from 'apps/assign/components/selected-classroom-header/SelectedClassroomHeader';\n\nconst namespace = 'assign.existingClassroomFlowSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SettingsFieldProps {\n // Prevent scrubbing field\n hidePreventScrubbing?: boolean;\n disablePreventScrubbing?: boolean;\n onTogglePreventScrubbing: () => void;\n preventScrubbing: boolean;\n \n // Immediate feedback field\n hideImmediateFeedback?: boolean;\n disableImmediateFeedback?: boolean;\n onToggleImmediateFeedback: () => void;\n immediateFeedback: boolean;\n\n // Message field\n hideMessage?: boolean;\n disableMessage?: boolean;\n message: string;\n onChangeMessage: (message: string) => void;\n onToggleMessage: () => void;\n toggleMessage: boolean;\n}\n\ninterface ExistingClassroomFlowSettingsProps extends SettingsFieldProps {\n selectedClassroom: Classroom;\n}\n\nexport function ExistingClassroomFlowSettings(props: ExistingClassroomFlowSettingsProps): JSX.Element {\n return (\n <div className='d-flex flex-column gap-4'>\n <SelectedClassroomHeader\n classroom={props.selectedClassroom}\n hideSubtitle={false}\n subtitleText={getPhrase('studentsCount', { smartCount: props.selectedClassroom?.enrolments?.count ?? 0 })}\n />\n\n <FlowSettings\n name={getPhrase('videoSettingsTitle')}\n hide={props.hidePreventScrubbing && props.hideImmediateFeedback}\n >\n <FlowSettings.Toggle\n hide={props.hidePreventScrubbing}\n title={getPhrase('preventScrubbingTitle')}\n description={getPhrase('preventScrubbingDescription')}\n onClick={props.onTogglePreventScrubbing}\n toggled={props.preventScrubbing}\n disabled={props.disablePreventScrubbing}\n />\n <FlowSettings.Toggle\n hide={props.hideImmediateFeedback}\n title={getPhrase('immediateFeedbackTitle')}\n description={getPhrase('immediateFeedbackDescription')}\n onClick={props.onToggleImmediateFeedback}\n toggled={props.immediateFeedback}\n disabled={props.disableImmediateFeedback}\n />\n </FlowSettings>\n\n <FlowSettings.Divider hide={props.hidePreventScrubbing && props.hideImmediateFeedback} />\n \n <FlowSettings\n name={getPhrase('moreOptionsTitle')}\n hide={props.hideMessage}\n childContainerClassName='d-flex flex-column gap-2'\n >\n <FlowSettings.Toggle\n hide={props.hideMessage}\n title={getPhrase('messageTitle')}\n description={getPhrase('messageDescription')}\n onClick={props.onToggleMessage}\n toggled={props.toggleMessage}\n disabled={props.disableMessage}\n >\n <FlowSettings.TextArea\n hide={!props.toggleMessage}\n placeholder={getPhrase('messagePlaceholder')}\n onChange={props.onChangeMessage}\n value={props.message}\n />\n </FlowSettings.Toggle>\n </FlowSettings>\n \n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { useCreateShare } from 'libs/shared/apps/share-v2/hooks/useCreateShare';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { Classroom, YearGroup } from 'libs/shared/interfaces';\n\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\n\ninterface UseExistingClassroomFlowSettingsDataOptions {\n objectId: string;\n entityType: SharableEntityType;\n\n selectedClassroom: Classroom;\n recipients: string[];\n}\n\ntype ExistingClassroomFlowSettings = 'preventScrubbing' | 'immediateFeedback' | 'message';\ntype ExistingClassroomFlowSettingsMap = {[key in ExistingClassroomFlowSettings]: boolean};\n\nexport function useExistingClassroomFlowSettingsData(options: UseExistingClassroomFlowSettingsDataOptions) {\n const sharedData = useAssignSharedData({\n entityType: options.entityType,\n objectId: options.objectId\n });\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n CustomerRequests.yearGroups(sharedData.currentUser.data?.customerId)\n );\n\n const { createDirectShare } = useCreateShare(options.objectId);\n const [ loading, setLoading ] = React.useState<boolean>(false);\n\n const [ settings, setSettings ] = React.useState<ExistingClassroomFlowSettingsMap>({\n preventScrubbing: sharedData.interactive.data?.preventScrubbing || false,\n immediateFeedback: sharedData.interactive.data?.immediateFeedback || false,\n message: false\n });\n const [ message, setMessage ] = React.useState('');\n\n const loaded = (\n sharedData.loaded\n && !!yearGroups.data\n );\n\n function onChangeSetting(setting: ExistingClassroomFlowSettings, value: boolean) {\n setSettings(prev => (\n { ...prev,\n [setting]: value\n }\n ));\n }\n\n function toggleSetting(setting: ExistingClassroomFlowSettings) {\n onChangeSetting(setting, !settings[setting]);\n }\n\n function onChangeMessage(message: string) {\n setMessage(message);\n }\n\n async function onShare(onSuccess?: (share: Share) => void) {\n if (!options.selectedClassroom)\n return;\n\n setLoading(true);\n\n try {\n const share = await createDirectShare({\n objectId: options.objectId,\n preventScrubbing: settings.preventScrubbing,\n immediateFeedback: settings.immediateFeedback,\n requireSignIn: true,\n message: message,\n recipients: options.recipients.length ? options.recipients : [options.selectedClassroom?.id],\n scopeId: options.selectedClassroom?.id\n });\n \n typeof onSuccess === 'function' && onSuccess(share);\n \n setLoading(false);\n } catch (ex: unknown) {\n /**\n * @todo Needs better error handling\n */\n console.error('Could not create');\n } finally {\n setLoading(false);\n }\n }\n\n return {\n data: {\n loaded,\n config: sharedData.config,\n entity: sharedData.entity,\n yearGroups\n },\n message,\n settings,\n shouldShowSpinner: loading,\n hasStudentExp: sharedData.hasStudentExp,\n toggleSetting,\n onChangeMessage,\n onShare\n };\n}\n ","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\n\nimport { ExistingClassroomFlowSettings } from './components/existing-classroom-flow-settings/ExistingClassroomFlowSettings';\nimport { useExistingClassroomFlowSettingsData } from './hooks/useExistingClassroomFlowSettingsData';\n\nconst namespace = 'assign.existingClassroomFlowSettingsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ExistingClassroomFlowSettingsViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n recipients: string[];\n selectedClassroom: Classroom;\n goToPrevStep: () => void;\n onShare: (share: Share) => void;\n}\n\nexport function ExistingClassroomFlowSettingsView(props: ExistingClassroomFlowSettingsViewProps): JSX.Element {\n const viewModel = useExistingClassroomFlowSettingsData({\n entityType: props.entityType,\n objectId: props.objectId,\n recipients: props.recipients,\n selectedClassroom: props.selectedClassroom\n });\n\n const { loaded } = viewModel.data;\n\n function onClickNext() {\n viewModel.onShare(props.onShare);\n }\n \n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={!loaded || props.loading}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n >\n <ExistingClassroomFlowSettings\n selectedClassroom={props.selectedClassroom}\n message={viewModel.message}\n toggleMessage={viewModel.settings.message}\n immediateFeedback={viewModel.settings.immediateFeedback}\n preventScrubbing={viewModel.settings.preventScrubbing}\n onChangeMessage={viewModel.onChangeMessage}\n onToggleMessage={() => viewModel.toggleSetting('message')}\n hideImmediateFeedback={props.entityType !== 'interactive'}\n hidePreventScrubbing={props.entityType !== 'interactive'}\n onTogglePreventScrubbing={() => viewModel.toggleSetting('preventScrubbing')}\n onToggleImmediateFeedback={() => viewModel.toggleSetting('immediateFeedback')}\n />\n <FlowControls\n hideCreateClassroomButton\n onClickBack={props.goToPrevStep}\n onClickNext={onClickNext}\n nextButtonText={getPhrase('assignButton')}\n showSpinner={viewModel.shouldShowSpinner}\n />\n </Popup>\n );\n}","export enum SelectionType {\n Groups = 'groups',\n Students = 'students'\n}","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface AccordionItemProps {\n title: string;\n intialShow?: boolean;\n}\n\nfunction AccordionItem(props: React.PropsWithChildren<AccordionItemProps>) {\n const [ show, setShow ] = React.useState(props.intialShow || false);\n \n return (\n <div>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>{props.title}</h3>\n <IconButton\n svgName={show ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShow(!show)}\n />\n </div>\n {show && (\n <div>{props.children}</div>\n )}\n </div>\n );\n}\n\ninterface AccordionProps {\n className?: string;\n}\n\nexport function Accordion(props: React.PropsWithChildren<AccordionProps>) {\n return (\n <div className={classNames('d-flex flex-column gap-2', props.className)}>\n {props.children}\n </div>\n );\n}\n\nAccordion.Item = AccordionItem;","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\ninterface ClassroomEntityListItemProps<T extends BaseObject> {\n entity: T;\n isSelected: boolean;\n isDisabled: boolean;\n icon: JSX.Element;\n title: JSX.Element;\n tooltipText?: string;\n onClick: () => void;\n}\n\nfunction ClassroomEntityListItem<T extends BaseObject>(props: ClassroomEntityListItemProps<T>): JSX.Element {\n const showTooltip = props.isDisabled && props.isSelected && !!props.tooltipText;\n\n return (\n <DivButton\n className={classNames(`d-flex align-items-center px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between`, !props.isDisabled && 'bg-light-hover')}\n onClick={props.onClick}\n disabled={props.isDisabled}\n >\n <Tooltip placement='right' title={props.tooltipText} disable={!showTooltip} spanHack trigger={[ 'hover', 'focus' ]}>\n <div className={classNames('d-flex align-items-center', showTooltip && 'pe-2')}>\n <Checkbox\n name={props.entity.id}\n id={props.entity.id}\n onChange={props.onClick}\n checked={props.isSelected}\n disabled={props.isDisabled}\n />\n <div className='d-flex align-items-center gap-2'>\n <div>\n {props.icon}\n </div>\n <div className='w-100'>\n {props.title}\n </div>\n </div>\n </div>\n </Tooltip>\n </DivButton>\n );\n}\n\ninterface ClassroomEntityListProps<T extends BaseObject> {\n entities: T[];\n selectedEntities: T[];\n emptyState: JSX.Element;\n disableSelected?: boolean;\n tooltipText?: string;\n onSelectEntity: (entity: T) => void;\n renderIcon: (entity: T, isSelected: boolean, isDisabled: boolean) => JSX.Element;\n renderTitle?: (entity: T, isSelected: boolean, isDisabled: boolean) => JSX.Element;\n className?: string;\n}\n\nexport function ClassroomEntityList<T extends BaseObject>(\n props: ClassroomEntityListProps<T>\n): JSX.Element {\n if (!props.entities.length) {\n return <>{props.emptyState}</>;\n }\n\n return (\n <div className={classNames('d-flex flex-column', props.className)}>\n {props.entities.map(entity => {\n const isSelected = !!props.selectedEntities.find(e => entity.id.toString() === e.id.toString());\n const isDisabled = isSelected && props.disableSelected;\n const title = typeof props.renderTitle === 'function'\n ? props.renderTitle(entity, isSelected, isDisabled)\n : <span className='m-0'>{entity.name}</span>;\n \n return (\n <ClassroomEntityListItem<T>\n key={entity.id}\n entity={entity}\n title={title}\n isDisabled={isDisabled}\n isSelected={isSelected}\n icon={props.renderIcon(entity, isSelected, isDisabled)}\n onClick={() => props.onSelectEntity(entity)}\n tooltipText={props.tooltipText}\n />\n );\n })}\n </div>\n );\n}","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\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 { Text } from 'libs/shared/components/text/Text';\nimport { ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { AssignHelper } from 'apps/assign/utils/AssignHelper';\n\nimport { SelectionType } from '../../enums/SelectionType';\nimport { Accordion } from '../accordion/Accordion';\nimport { ClassroomEntityList } from '../classroom-entity-list/ClassroomEntityList';\n\nconst namespace = 'assign.narrowClassroomSelectionControls';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface NarrowClassroomSelectionControlsProps {\n learners: User[];\n groups: ClassroomGroup[];\n setRecipients: (recipients: string[]) => void;\n}\n\nexport function NarrowClassroomSelectionControls(props: NarrowClassroomSelectionControlsProps): JSX.Element {\n const [ type, setType ] = React.useState<SelectionType>(SelectionType.Students);\n const [ selectedGroups, setSelectedGroups ] = React.useState<ClassroomGroup[]>([]);\n const [ selectedLearners, setSelectedLearners ] = React.useState<User[]>([]);\n\n const allStudentsSelected = selectedLearners.length === props.learners.length;\n\n function onSelectGroup(group: ClassroomGroup) {\n const newSelectedGroups = AssignHelper.getSelectedEntities(selectedGroups, group);\n \n if (!newSelectedGroups.length) {\n setType(null);\n } else {\n setType(SelectionType.Groups);\n }\n \n setSelectedGroups(newSelectedGroups);\n setSelectedLearners(AssignHelper.getLearnersForGroups(newSelectedGroups));\n props.setRecipients(AssignHelper.getRecipients(newSelectedGroups));\n }\n\n function onSelectLearner(learner: User) {\n const newSelectedStudents = AssignHelper.getSelectedEntities(selectedLearners, learner);\n \n if (!newSelectedStudents.length) {\n setType(null);\n } else {\n setType(SelectionType.Students);\n }\n \n setSelectedGroups([]);\n setSelectedLearners(newSelectedStudents);\n props.setRecipients(AssignHelper.getRecipients(newSelectedStudents));\n }\n\n function onToggleAll() {\n setSelectedGroups([]);\n setType(SelectionType.Students);\n if (allStudentsSelected) {\n setSelectedLearners([]);\n props.setRecipients([]);\n return;\n }\n \n setSelectedLearners(props.learners);\n props.setRecipients(AssignHelper.getRecipients(props.learners));\n }\n \n return (\n <Scrollbars\n autoHide\n autoHeight\n autoHeightMin={0}\n autoHeightMax={400}\n >\n <Accordion className='pb-3'>\n <Accordion.Item\n intialShow\n title={getPhrase('groupsTitle', { smartCount: props.groups.length })}\n >\n <ClassroomEntityList\n entities={props.groups}\n selectedEntities={selectedGroups}\n onSelectEntity={onSelectGroup}\n emptyState={<div><Text namespace={namespace} phrase='emptyGroups' /></div>}\n renderIcon={group => (\n <IconCircle\n svgName={cvSvgLibrary.Group}\n svgSize={SvgContainerSize.Small}\n variant={mapColourToBsVariant(group.metadata?.colour)}\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n )}\n />\n </Accordion.Item>\n <Accordion.Item\n intialShow\n title={getPhrase('studentsTitle', { smartCount: props.learners.length })}\n >\n <div className='px-2 py-1'>\n <Checkbox\n id='all'\n checked={type !== SelectionType.Groups && allStudentsSelected}\n label={getPhrase('allStudentsLabel', { smartCount: props.learners.length })}\n onChange={onToggleAll}\n indeterminate={type === SelectionType.Groups}\n />\n </div>\n <ClassroomEntityList\n entities={props.learners}\n selectedEntities={selectedLearners}\n onSelectEntity={onSelectLearner}\n emptyState={<div><Text namespace={namespace} phrase='emptyStudents' /></div>}\n renderIcon={() => (\n <IconCircle\n svgName={cvSvgLibrary.User}\n svgSize={SvgContainerSize.Small}\n variant='primary'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n )}\n disableSelected={type === SelectionType.Groups}\n tooltipText={getPhrase('studentInSelectedGroup')}\n className='ms-4'\n />\n </Accordion.Item>\n </Accordion>\n </Scrollbars>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { SelectedClassroomHeader } from 'apps/assign/components/selected-classroom-header/SelectedClassroomHeader';\n\nimport { NarrowClassroomSelectionControls } from './components/narrow-classroom-selection-controls/NarrowClassroomSelectionControls';\nimport { useNarrowClassroomSelectionData } from './hooks/useNarrowClassroomSelectionData';\n\nconst namespace = 'assign.narrowClassroomSelectionView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface NarrowClassroomSelectionViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n recipients: string[];\n selectedClassroom: Classroom;\n onChangeRecipients: (r: string[]) => void;\n goToSelectClassroom: () => void;\n goToSettings: () => void;\n goToPrevStep: () => void;\n}\n\nexport function NarrowClassroomSelectionView(props: NarrowClassroomSelectionViewProps): JSX.Element {\n const viewModel = useNarrowClassroomSelectionData({\n selectedClassroom: props.selectedClassroom\n });\n\n const { loaded, groups, learners } = viewModel.data;\n\n return (\n <Popup\n size='lg'\n title={getPhrase('title')}\n showLoadingSpinner={!loaded || props.loading}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n >\n <SelectedClassroomHeader\n classroom={props.selectedClassroom}\n onClickChangeClassroom={props.goToSelectClassroom}\n />\n\n <div>\n <NarrowClassroomSelectionControls\n groups={groups}\n learners={learners}\n setRecipients={props.onChangeRecipients}\n />\n\n <FlowControls\n hideCreateClassroomButton\n onClickBack={props.goToPrevStep}\n onClickNext={props.goToSettings}\n nextButtonTooltip={!props.recipients.length && getPhrase('noRecipients')}\n disableNextButton={!props.selectedClassroom || !props.recipients.length}\n />\n </div>\n </Popup>\n );\n}\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\n\nconst namespace = 'assign.noClassroom';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface NoClassroomViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n goToFlowSelector: () => void;\n goToOpenClassroomFlow: () => void;\n}\n\nexport function NoClassroomView(props: NoClassroomViewProps): JSX.Element {\n return (\n <Popup\n size='lg'\n animation={props.animate}\n closePopup={props.closePopup}\n title={getPhrase('title')}\n >\n <Row className='mb-3'>\n <Col xs={12} md={8} className='offset-md-2 d-flex flex-column align-items-center'>\n <img src={ImageUrls.EmptyStates.Share.NO_CLASSROOM} alt='No Classroom' className='mb-3' />\n <h2 className='h6 text-center mb-3'><Text namespace={namespace} phrase='heading' /></h2>\n <p className='text-center'>\n <Text namespace={namespace} phrase='description' />\n </p>\n <DivButton\n className='btn btn-outline-dark mb-3'\n onClick={props.goToOpenClassroomFlow}\n >\n <Text namespace={namespace} phrase='assignToOpenClassroom' />\n </DivButton>\n <AppLink\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.UPGRADE\n }}\n className='hover-text-underline'\n >\n <Text namespace={namespace} phrase='requestAccess' />\n </AppLink>\n </Col>\n </Row>\n \n <FlowControls\n onClickBack={props.goToFlowSelector}\n hideNextButton\n hideCreateClassroomButton\n />\n </Popup>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\n\nconst namespace = 'assign.noExistingClassroom';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface NoExistingClassroomViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n goToOpenClassroomFlow: () => void;\n goToFlowSelector: () => void;\n}\n\nexport function NoExistingClassroomView(props: NoExistingClassroomViewProps): JSX.Element {\n return (\n <Popup\n size='lg'\n animation={props.animate}\n closePopup={props.closePopup}\n title={getPhrase('title')}\n >\n <Row className='mb-3'>\n <Col xs={12} lg={6} className='mb-3 offset-lg-3 d-flex justify-content-center'>\n <img src={ImageUrls.Assign.NO_EXISTING_CLASSROOMS} alt={getPhrase('imageAlt')} className='w-50' />\n </Col>\n <Col xs={12} md={8} className='offset-md-2 d-flex flex-column align-items-center gap-2 text-center'>\n <h3 className='h6 m-0'>\n <Text namespace={namespace} phrase='heading' />\n </h3>\n <p className='m-0'><Text namespace={namespace} phrase='contactAdmin' /></p>\n <p className='m-0'><Text namespace={namespace} phrase='description' /></p>\n </Col>\n </Row>\n <div className='text-center mb-3'>\n <DivButton\n className='btn btn-outline-dark'\n onClick={props.goToOpenClassroomFlow}\n >\n <Text namespace={namespace} phrase='assignToOpenClassroom' />\n </DivButton>\n </div>\n <FlowControls\n hideNextButton\n hideCreateClassroomButton\n onClickBack={props.goToFlowSelector}\n />\n </Popup>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { SharableEntity } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\n\nimport styles from './no-students-details-view.scss';\n\nconst namespace = 'assign.noStudentsDetailsView';\n\ninterface ViewImageProps {\n entity: SharableEntity;\n}\n\nfunction ViewImage(props: ViewImageProps): JSX.Element {\n return (\n <div className='position-relative mb-3'>\n <figure className={styles.background} style={{ backgroundImage: `url(${ImageUrls.Assign.NO_STUDENTS.BACKGROUND})` }} />\n <div className={classNames('position-absolute bottom-0', styles.foreground)}>\n <figure className={classNames('position-absolute m-0', styles.plane)} style={{ backgroundImage: `url(${ImageUrls.Assign.NO_STUDENTS.PLANE})` }} />\n <div className={classNames('position-absolute', styles.entity)}>\n <SharedObjectImage\n object={props.entity}\n locationContext={LocationContext.AssignFlowView}\n imageClassName='border border-dark'\n thumbnailSize='sm'\n showVideoCount\n onlyCount\n />\n </div>\n <figure className={classNames('position-absolute m-0', styles.flap) } style={{ backgroundImage: `url(${ImageUrls.Assign.NO_STUDENTS.PLANE_FLAP})` }} />\n </div>\n </div>\n );\n}\n\nexport interface NoStudentsDetailsViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n selectedClassroom: Classroom;\n}\n\nexport function NoStudentsDetailsView(props: NoStudentsDetailsViewProps): JSX.Element {\n const { entity, loaded } = useAssignSharedData({\n entityType: props.entityType,\n objectId: props.objectId\n });\n \n const addStudentsAppLink: Core.AppLink = {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.CLASSROOM_STUDENTS,\n args: [props.selectedClassroom.id]\n };\n \n return (\n <Popup\n size='lg'\n showLoadingSpinner={!loaded || props.loading}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n hideTitle\n >\n <div className='d-flex flex-column align-items-center justify-content-center py-2 text-center'>\n <ViewImage entity={entity.data} />\n \n <h3 className='mb-3'>\n <Text namespace={namespace} phrase='title' />\n </h3>\n <p className={classNames('mb-4', styles.description)}>\n <Text namespace={namespace} phrase='description' />\n </p>\n <AppLink\n appLink={addStudentsAppLink}\n className='btn btn-dark'\n >\n <Text namespace={namespace} phrase='addStudentsButton' options={{ classroomName: props.selectedClassroom.name }} />\n </AppLink>\n </div>\n </Popup>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"description\":\"sXT7V\",\"background\":\"LP0Xh\",\"foreground\":\"OPnkT\",\"plane\":\"Xtv19\",\"entity\":\"UX2aX\",\"flap\":\"MaOad\"};","import { MultiStepItemConfig } from 'libs/shared/components/multistep-popup/MultiStepPopup';\n\nimport { ExistingClassroomFlowSteps } from 'apps/assign/interfaces/Assign';\nimport { AssignDetailsView, AssignDetailsViewProps } from 'apps/assign/views/assign-details-view/AssignDetailsView';\nimport { ClassroomCreatePromptView, ClassroomCreatePromptViewProps } from 'apps/assign/views/classroom-create-prompt-view/ClassroomCreatePromptView';\nimport { ClassroomSelectorView, ClassroomSelectorViewProps } from 'apps/assign/views/classroom-selector-view/ClassroomSelectorView';\nimport { CreateNewClassroomView, CreateNewClassroomViewProps } from 'apps/assign/views/create-new-classroom-view/CreateNewClassroomView';\nimport { ExistingClassroomFlowSettingsView, ExistingClassroomFlowSettingsViewProps } from 'apps/assign/views/existing-classroom-flow-settings-view/ExistingClassroomFlowSettingsView';\nimport { NarrowClassroomSelectionView, NarrowClassroomSelectionViewProps } from 'apps/assign/views/narrow-classroom-selection-view/NarrowClassroomSelectionView';\nimport { NoClassroomView, NoClassroomViewProps } from 'apps/assign/views/no-classroom-view/NoClassroomView';\nimport { NoExistingClassroomView } from 'apps/assign/views/no-existing-classroom-view/NoExistingClassroomView';\nimport { NoStudentsDetailsView, NoStudentsDetailsViewProps } from 'apps/assign/views/no-students-details-view/NoStudentsDetailsView';\n\nexport type AllExistingClassroomFlowViewProps =\n & ClassroomSelectorViewProps\n & NarrowClassroomSelectionViewProps\n & ExistingClassroomFlowSettingsViewProps\n & ClassroomCreatePromptViewProps\n & CreateNewClassroomViewProps\n & AssignDetailsViewProps\n & NoStudentsDetailsViewProps\n & NoClassroomViewProps;\n\nconst config: MultiStepItemConfig<AllExistingClassroomFlowViewProps, ExistingClassroomFlowSteps> = {\n 'create-classroom': { view: ClassroomCreatePromptView },\n 'create-classroom-form': { view: CreateNewClassroomView },\n 'select-classroom': { view: ClassroomSelectorView },\n 'narrow-selection': { view: NarrowClassroomSelectionView },\n 'settings': { view: ExistingClassroomFlowSettingsView },\n 'assign-details': { view: AssignDetailsView },\n 'no-students-details': { view: NoStudentsDetailsView },\n 'no-classroom': { view: NoClassroomView },\n 'no-existing-classroom': { view: NoExistingClassroomView }\n};\n\nexport const ExistingClassroomStepConfig = config;","import React from 'react';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useDebounce } from 'libs/shared/hooks/UseDebounce';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { useFetchClassrooms } from 'apps/classrooms/hooks/useFetchClassrooms';\n\ninterface UseClassroomSelectorDataOptions {\n selectedClassroom: Classroom;\n setSelectedClassroom: (classroom: Classroom) => void;\n goToNarrowSelection: () => void;\n}\n\nconst MIN_SEARCH_LENGTH = 2;\n\nexport function useClassroomSelectorData(options: UseClassroomSelectorDataOptions) {\n const { hasPermissions } = usePermissions();\n \n const [ query, setQuery ] = React.useState<string>('');\n\n const debouncedQuery = useDebounce(query, 300);\n\n const isSearching = debouncedQuery.length >= MIN_SEARCH_LENGTH;\n \n const classrooms = useFetchClassrooms(\n isSearching && debouncedQuery,\n { withStudentsCount: true }\n );\n\n function onClassroomSelected(classroom: Classroom) {\n options.setSelectedClassroom(classroom);\n }\n\n function onClickSelectGroupsOrStudents() {\n if (!options.selectedClassroom)\n return;\n \n options.goToNarrowSelection();\n }\n\n function getStudentsCount(classroom: Classroom): number {\n let count = classroom.enrolments?.count;\n \n if (isSearching)\n count = classroom.users?.count;\n \n return count || 0;\n }\n\n return {\n data: {\n classrooms\n },\n query,\n debouncedQuery,\n canCreateClassrooms: hasPermissions(PermissionName.CreateClassrooms),\n setQuery,\n getStudentsCount,\n onClassroomSelected,\n onClickSelectGroupsOrStudents\n };\n}\n ","// extracted by mini-css-extract-plugin\nexport default {\"searchInput\":\"aDvD8\"};","import { Flight } from 'libs/common/react/index';\n\nimport { Classroom, ClassroomGroupCollection, UserCollection } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\ninterface useNarrowClassroomSelectionDataOptions {\n selectedClassroom: Classroom;\n}\n\nexport function useNarrowClassroomSelectionData(options: useNarrowClassroomSelectionDataOptions) {\n const selectedClassroomLearners = Flight.useBasicFetch<UserCollection>(\n options.selectedClassroom && ClassroomRequests.getClassroomStudents(options.selectedClassroom.id)\n );\n\n const selectedClassroomGroups = Flight.useBasicFetch<ClassroomGroupCollection>(\n options.selectedClassroom && ClassroomRequests.getClassroomGroups(options.selectedClassroom.id)\n );\n\n const learners = selectedClassroomLearners.data?.data || [];\n const groups = selectedClassroomGroups.data?.data || [];\n const loaded = (\n !!selectedClassroomGroups.data &&\n !!selectedClassroomLearners.data\n );\n\n return {\n data: {\n loaded,\n groups,\n learners\n }\n };\n}\n ","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopup, MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\n\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\nimport { ExistingClassroomFlowSteps } from 'apps/assign/interfaces/Assign';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AllExistingClassroomFlowViewProps, ExistingClassroomStepConfig } from './config/ExistingClassroomStepConfig';\nimport { useExistingClassroomFlowData } from './hooks/useExistingClassroomFlowData';\n\nconst namespace = 'assign.existingClassroomFlowView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\nexport interface ExistingClassroomFlowViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n initialStep?: ExistingClassroomFlowSteps;\n goToFlowSelector: () => void;\n goToOpenClassroomFlow: () => void;\n isEntry?: boolean;\n}\n\nexport function ExistingClassroomFlowView(props: ExistingClassroomFlowViewProps): JSX.Element {\n const sharedData = useAssignSharedData({\n entityType: props.entityType,\n objectId: props.objectId\n });\n\n const { log } = getAssignEventLogger({\n analyticsOptions: {\n entity: EntityType.Assign,\n location: LocationContext.Popup\n },\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n }\n });\n \n const viewModel = useExistingClassroomFlowData({ initialStep: props.initialStep, log });\n\n const data: AllExistingClassroomFlowViewProps = {\n objectId: props.objectId,\n entityType: props.entityType,\n closePopup: props.closePopup,\n goToFlowSelector: props.goToFlowSelector,\n goToOpenClassroomFlow: props.goToOpenClassroomFlow,\n\n shareId: viewModel.share?.shareId,\n loading: !sharedData.loaded,\n recipients: viewModel.recipients,\n selectedClassroom: viewModel.selectedClassroom,\n detailsTitle: getPhrase('existingClassroomTitle'),\n hideBackButton: props.isEntry,\n hideCreateClassroomLink: props.isEntry,\n onShare: viewModel.onShare,\n onChangeRecipients: viewModel.onChangeRecipients,\n setSelectedClassroom: viewModel.setSelectedClassroom,\n goToPrevStep: viewModel.goToPrevStep,\n onCreateNewClassroom: viewModel.onCreateNewClassroom,\n goToSettings: () => viewModel.setStep('settings'),\n goToSelectClassroom: () => viewModel.setStep('select-classroom'),\n goToNarrowSelection: () => viewModel.setStep('narrow-selection'),\n goToCreateClassroomForm: () => viewModel.setStep('create-classroom-form')\n };\n \n return (\n <MultiStepPopup<AllExistingClassroomFlowViewProps, ExistingClassroomFlowSteps>\n data={data}\n loading={!sharedData.loaded}\n animate={false}\n step={viewModel.step}\n setStep={viewModel.setStep}\n closePopup={props.closePopup}\n steps={ExistingClassroomStepConfig}\n />\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { Classroom, UserCollection } from 'libs/shared/interfaces';\n\nimport { ExistingClassroomFlowSteps } from 'apps/assign/interfaces/Assign';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\ninterface UseExistingClassroomFlowDataOptions {\n initialStep?: ExistingClassroomFlowSteps;\n log: AssignLogFn;\n}\n\nexport function useExistingClassroomFlowData(options: UseExistingClassroomFlowDataOptions) {\n const fetchAsync = Flight.useGetFetchAsync();\n \n const [ step, setStep ] = React.useState<ExistingClassroomFlowSteps>(options.initialStep ?? 'select-classroom');\n const [ share, setShare ] = React.useState<Share>();\n const [ prevStep, setPrevStep ] = React.useState<ExistingClassroomFlowSteps[]>([]);\n const [ selectedClassroom, setSelectedClassroom ] = React.useState<Classroom>();\n const [ recipients, setRecipients ] = React.useState<string[]>([]);\n \n const hasPrevStep = !!prevStep.length;\n\n function onChangeStep(nextStep: ExistingClassroomFlowSteps) {\n setPrevStep([ ...prevStep, step ]);\n setStep(nextStep);\n }\n\n function onChangeRecipients(recipients: string[]) {\n setRecipients(recipients);\n }\n\n function onCreateNewClassroom(classroom: Classroom) {\n setSelectedClassroom(classroom);\n setStep('settings');\n }\n\n function goToPrevStep() {\n if (!hasPrevStep)\n return;\n\n const steps = [...prevStep];\n setStep(steps.pop());\n setPrevStep(steps);\n }\n\n async function hasStudentsInClassroom(): Promise<boolean> {\n if (!selectedClassroom)\n return false;\n\n const students = await fetchAsync<UserCollection>(ClassroomRequests.getClassroomStudents(selectedClassroom.id));\n\n return !!students.data.length;\n }\n\n /**\n * This method is executed after we assign the entity and at this point it has already been shared.\n * We do this check just to see what the next step should be.\n * If the check fails we should just take them to 'assign-details' step since thats generic.\n */\n async function onShare(share: Share) {\n setShare(share);\n\n let step: ExistingClassroomFlowSteps = 'assign-details';\n \n try {\n const hasStudents = await hasStudentsInClassroom();\n \n if (!hasStudents) {\n step = 'no-students-details';\n return;\n }\n } finally {\n options.log({\n type: 'create-existing-classroom',\n share: share,\n nextStep: step\n });\n \n setStep(step);\n }\n }\n\n return {\n step,\n share,\n recipients,\n hasPrevStep,\n selectedClassroom,\n onShare,\n setShare,\n goToPrevStep,\n onChangeRecipients,\n setSelectedClassroom,\n setStep: onChangeStep,\n onCreateNewClassroom\n };\n}\n ","import { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { SearchResults } from 'libs/shared/apps/search/interfaces';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useInfiniteList, UseInfiniteListResult } from 'libs/shared/hooks/UseInfiniteList';\nimport { BasePaginatedCollection, Classroom, CurrentUser } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { SearchRequests } from 'apps/search/flight-requests/SearchRequests';\n\nconst namespace = 'classrooms.hooks';\n\nexport type GetClassroomsResponse = UseInfiniteListResult<Classroom> & {\n fetchNext: (cursor?: string) => void;\n};\n\ninterface UseFetchClassroomOptions {\n withStudentsCount?: boolean;\n}\n\nexport const useFetchClassrooms = (query?: string, options?: UseFetchClassroomOptions): GetClassroomsResponse => {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const alerts = useAlerts();\n const dispatch = useDispatch();\n\n const getClassroomsRequest = (cursor?: string) => {\n if (!query) {\n if (options?.withStudentsCount) {\n return ClassroomRequests.getPublishedWithStudents(currentUser.data.id, cursor);\n }\n\n return ClassroomRequests.getPublished(currentUser.data.id, cursor);\n }\n \n if (options?.withStudentsCount) {\n return SearchRequests.searchClassroomsV4(query, cursor);\n }\n \n return SearchRequests.searchClassrooms(query, currentUser.data.customerId, cursor);\n };\n\n const fetchNextPage = (cursor?: string) => Flight.getFetch(dispatch)(getClassroomsRequest(cursor));\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n }\n\n const response = useInfiniteList<Classroom, SearchResults<Classroom> | BasePaginatedCollection<Classroom>>(\n currentUser.data ? getClassroomsRequest : false,\n fetchNextPage,\n onError,\n response => {\n if (query)\n return (response as SearchResults<Classroom>).results;\n\n return (response as BasePaginatedCollection<Classroom>).data;\n }\n );\n\n return {\n ...response,\n fetchNext: fetchNextPage\n };\n};","import { object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst getPhrase = LanguageService.encloseNamespace('classrooms.classroomValidation');\n\nexport const ClassroomValidationSchema = object().shape({\n name: string()\n .max(255, () => getPhrase('nameExceeds'))\n .required(() => getPhrase('nameRequired'))\n .default('')\n});"],"names":["getPhrase","icons","iconColours","shareTypeTitlePhraseMap","ShareAvatar","props","title","type","classroomName","additionalTitleText","openClassroomName","getTitle","className","svgName","variant","textVariant","svgWrapperClassName","svgSize","S","titleClassName","hideSubtitle","subtitleText","privacy","studentCount","classroomGroupCount","smartCount","getClassroomSubtitle","includes","getLinkSubtitle","getSubtitle","useCreateShare","objectId","accessPermissions","fetchAsync","canManageAccess","data","createPincode","options","shareId","createDirectShare","requireSignIn","optionRequest","preventScrubbing","immediateFeedback","recipientRequest","recipients","map","recipientId","message","scopeId","share","createOpenSession","respectRatingsAndRestrictions","request","name","length","hasCompleted","MultiStepPopup","animate","setAnimate","stepConfig","steps","step","loading","viewProps","closePopup","setStep","ViewComponent","view","defaultErrors","notFound","forbidden","rating","yearLevel","region","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","SCROLL_TOLERANCE","useInfiniteList","getRequest","fetchNext","onError","getItems","getCursor","scrollContainer","handleScroll","useState","pagesFetched","setPagesFetched","fetchNextFn","response","cursor","key","fetchNextPage","currentVal","nextCursor","hasMore","isFetching","getBoundingClientRect","height","scrollTop","scrollHeight","window","innerHeight","document","documentElement","useEffect","onScroll","FunctionHelper","addEventListener","removeEventListener","shouldInitialFetch","httpStatusClass","toString","substr","HttpStatus","items","totalItems","hasFirstPageCompleted","mapColourToBsVariant","groupColour","FlowSettings","hide","Row","Col","xs","childContainerClassName","children","Toggle","id","Checkbox","onChange","onClick","checked","toggled","disabled","htmlFor","description","TextArea","placeholder","value","e","target","Divider","withMargins","Input","error","note","namespace","LanguageService","CreatePrompt","src","ImageUrls","alt","Text","phrase","NarrowSelectionButton","Tooltip","spanHack","placement","disable","hasRecipients","Button","onClickSelectGroupsOrStudents","ClassroomSelectorListItem","isSelected","onSelected","md","Form","IconCircle","SvgContainer","studentsCount","ClassroomSelectorList","classrooms","PopupLoadingSpinner","autoHeight","autoHeightMin","autoHeightMax","classroom","selectedClassroom","onClassroomSelected","getStudentsCount","InfiniteScrollFooter","fetchOnScroll","EmptyState","size","altText","role","query","searchQuery","hideCreateOpenClassroomLink","onClickCreateOpenClassroom","InputGroupText","bsPrefix","as","Component","ref","displayName","InputGroup","hasValidation","contextValue","useMemo","InputGroupContext","Object","assign","Radio","FormCheckInput","SelectedClassroomHeader","ShareType","SharePrivacy","enrolments","count","onClickChangeClassroom","ExistingClassroomFlowSettings","hidePreventScrubbing","hideImmediateFeedback","onTogglePreventScrubbing","disablePreventScrubbing","onToggleImmediateFeedback","disableImmediateFeedback","hideMessage","onToggleMessage","toggleMessage","disableMessage","onChangeMessage","useExistingClassroomFlowSettingsData","sharedData","useAssignSharedData","entityType","yearGroups","CustomerRequests","currentUser","customerId","setLoading","interactive","settings","setSettings","setMessage","loaded","config","entity","shouldShowSpinner","hasStudentExp","toggleSetting","setting","prev","onChangeSetting","onShare","onSuccess","console","SelectionType","Accordion","Item","intialShow","show","setShow","IconButton","ClassroomEntityListItem","showTooltip","isDisabled","tooltipText","DivButton","trigger","icon","ClassroomEntityList","entities","selectedEntities","find","disableSelected","renderTitle","renderIcon","onSelectEntity","emptyState","NarrowClassroomSelectionControls","Students","setType","selectedGroups","setSelectedGroups","selectedLearners","setSelectedLearners","allStudentsSelected","learners","autoHide","groups","group","newSelectedGroups","AssignHelper","Groups","setRecipients","metadata","colour","label","indeterminate","learner","newSelectedStudents","ViewImage","style","backgroundImage","SharedObjectImage","object","locationContext","imageClassName","thumbnailSize","showVideoCount","onlyCount","ExistingClassroomStepConfig","log","getAssignEventLogger","analyticsOptions","location","Popup","animation","showLoadingSpinner","bodyClassName","goToCreateClassroomForm","FlowControls","hideBackButton","onClickBack","goToFlowSelector","hideNextButton","hideCreateClassroomButton","formik","initialValues","onSubmit","isValid","ClassroomRequests","then","newClassroom","onCreateNewClassroom","setFieldError","validationSchema","ClassroomValidationSchema","validateOnChange","handleSubmit","values","handleChange","maxLength","isInvalid","errors","goToPrevStep","onClickNext","submitForm","disableNextButton","showSpinner","nextButtonText","hasPermissions","setQuery","debouncedQuery","isSearching","viewModel","setSelectedClassroom","goToNarrowSelection","usePermissions","useFetchClassrooms","withStudentsCount","canCreateClassrooms","PermissionName","users","goToOpenClassroomFlow","hideCreateClassroomLink","goToSettings","onClickCreateClassroom","selectedClassroomLearners","selectedClassroomGroups","useNarrowClassroomSelectionData","goToSelectClassroom","onChangeRecipients","nextButtonTooltip","AssignDetailsView","addStudentsAppLink","application","action","args","hideTitle","AppLink","appLink","lg","ExistingClassroomFlowView","initialStep","setShare","prevStep","setPrevStep","hasPrevStep","hasStudentsInClassroom","students","nextStep","pop","useExistingClassroomFlowData","detailsTitle","isEntry","alerts","dispatch","getClassroomsRequest","pageNumber","httpStatus","results","shape","max","required"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 8933-00251901c0-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8933],{58859:(e,t,n)=>{n.d(t,{H:()=>le});var a=n(32735),r=n(92802),i=n(23481),l=n(75896),s=n(70226),o=n(98461),c=n(66122),u=n(12778),m=i.T.encloseNamespace("userManager.userEmailContactSupport");function d(e){var t=e.error.validationCode===s.x.Rostered;return a.createElement(c.A,{name:e.name},a.createElement("span",null,m(t?"rostering":"alreadyExists")," "),e.isInBulkEditing?a.createElement("span",null,m("contactSupport")):a.createElement(o.d,{className:"info-link",href:u.o.getSupportRequestUrl(),newTab:!0},m("contactSupport")),a.createElement("span",null," ",m("forAssistance")))}var f=i.T.encloseNamespace("userManager.editingUserExists");function p(e){return a.createElement(c.A,{name:e.name},a.createElement("span",null,f("alreadyExists")," "))}var v=n(15611),h=n(82644),g=n(76881),b=i.T.encloseNamespace("userManager.userExistsInSchool");function y(e){var t=(0,h.b)(),n=e.appLinks.studentManager.params||{};return e.error.user.userType===g.Y.Learner?a.createElement(c.A,{name:e.name},a.createElement("span",null,b("emailExistsSameSchoolStudent")," "),e.isInBulkEditing?a.createElement("span",null,b("studentManager")):a.createElement(v.F,{appLink:Object.assign(Object.assign({},e.appLinks.studentManager),{params:Object.assign(Object.assign({},n),{query:t.values.email})}),className:"info-link",onClick:e.onClickCancel},b("studentManager"))):a.createElement(c.A,{name:e.name},a.createElement("span",null,b("emailExistsSameSchoolStaff")," "),e.isInBulkEditing?a.createElement("span",null,b("staffManager")):a.createElement(v.F,{appLink:Object.assign(Object.assign({},e.appLinks.staffManager),{params:Object.assign(Object.assign({},n),{query:t.values.email})}),className:"info-link",onClick:e.onClickCancel},b("staffManager")))}var E=i.T.encloseNamespace("userManager.userTypeMismatch");function S(e){return e.error.user.userType===g.Y.Learner?a.createElement(c.A,{name:e.name},a.createElement("span",null,E("alreadyExistsStudent")," "),e.isInBulkEditing?a.createElement("span",null,E("studentManager")):a.createElement(v.F,{appLink:e.appLinks.studentManager,className:"info-link",onClick:e.onClickCancel},E("studentManager"))):a.createElement(c.A,{name:e.name},a.createElement("span",null,E("alreadyExistsStaff")," "),e.isInBulkEditing?a.createElement("span",null,E("staffManager")):a.createElement(v.F,{appLink:e.appLinks.staffManager,className:"info-link",onClick:e.onClickCancel},E("staffManager")))}function k(e){if(!e.isNew)return a.createElement(p,Object.assign({},e));switch(e.error.validationCode){case s.x.UserAlreadyExistsInCustomer:return a.createElement(y,Object.assign({},e));case s.x.UserTypeMismatch:return a.createElement(S,Object.assign({},e));case s.x.UserInCustomerWithOnline:case s.x.CustomerFoundInOnline:case s.x.InvalidUserStatus:case s.x.Rostered:return a.createElement(d,Object.assign({},e))}return a.createElement(a.Fragment,null)}var C=n(69843),w=n(80130),x=n(11607),N=n(29057),O=n(83523),T=n(36532),A=n(86613),j=n(64818);const I={checkWrapper:"OzB20"};var F=i.T.encloseNamespace("userManager.userRoleField");function R(e){var t=[{value:A.i.Admin,label:F("admin")},{value:A.i.SuperAdmin,label:"US"===e.countryCode?F("superAdminUs"):F("superAdmin")}],n=(0,r.u6)(),i=!e.hasOrg||!e.canEditSuperAdmin;if(e.userType===g.Y.Learner||e.isEditingCurrentUser)return null;var l=e.isDisabled||e.isValidatingEmail||j.l.hasNonLegacySso(e.user)&&!e.editSsoFields;return n.values.masterRole!==A.i.SuperAdmin||e.canEditSuperAdmin?i?a.createElement("div",{className:"d-flex justify-content-between align-items-center"},a.createElement(N.W,{id:"masterRole",name:"masterRole",disabled:l},function(){return a.createElement("div",{className:"d-flex align-items-center"},a.createElement(O.Z,{onClick:function(){var t,a=n.values.masterRole===A.i.User?A.i.Admin:A.i.User;n.setFieldValue("masterRole",a),null===(t=e.onRoleChange)||void 0===t||t.call(e,a)},on:n.values.masterRole===A.i.Admin,disabled:l,showStateWhenDisabled:!0}),!e.hideLabel&&a.createElement("span",{className:"fw-semibold ms-2"},F("admin")))})):a.createElement("div",null,a.createElement(N.W,{id:"masterRole",name:"masterRole",disabled:l,label:!e.hideLabel&&"Role"},function(){return t.map(function(t){return a.createElement("div",{className:"".concat(I.checkWrapper," mb-2"),key:t.value},a.createElement(w.Z.Check,{className:"form-check",id:t.value+"check"+e.user.id,type:"radio",key:e.user.id,label:t.label,checked:n.values.masterRole===t.value,onChange:function(a){var r;a.target.checked&&(n.setFieldValue("masterRole",t.value),null===(r=e.onRoleChange)||void 0===r||r.call(e,t.value))},disabled:l}))})}),(n.values.masterRole===A.i.Admin||n.values.masterRole===A.i.SuperAdmin)&&a.createElement(x.L,{key:e.user.id,className:"text-info mb-2 mt-n2",onClick:function(){var t;n.setFieldValue("masterRole",A.i.User),null===(t=e.onRoleChange)||void 0===t||t.call(e,A.i.User)}},F("clear"))):a.createElement("div",{className:"mb-3"},a.createElement("label",null,F("role")),a.createElement(T.u,{title:F("superAdminTooltip"),spanHack:!0},a.createElement("div",{className:"border rounded-pill border-dark"},F("superAdmin"))))}var L=n(26055),P=n(43820),V=n(13876),U=n(40424);function G(){var e,t,n="function"==typeof Symbol?Symbol:{},a=n.iterator||"@@iterator",r=n.toStringTag||"@@toStringTag";function i(n,a,r,i){var o=a&&a.prototype instanceof s?a:s,c=Object.create(o.prototype);return z(c,"_invoke",function(n,a,r){var i,s,o,c=0,u=r||[],m=!1,d={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(t,n){return i=t,s=0,o=e,d.n=n,l}};function f(n,a){for(s=n,o=a,t=0;!m&&c&&!r&&t<u.length;t++){var r,i=u[t],f=d.p,p=i[2];n>3?(r=p===a)&&(o=i[(s=i[4])?5:(s=3,3)],i[4]=i[5]=e):i[0]<=f&&((r=n<2&&f<i[1])?(s=0,d.v=a,d.n=i[1]):f<p&&(r=n<3||i[0]>a||a>p)&&(i[4]=n,i[5]=a,d.n=p,s=0))}if(r||n>1)return l;throw m=!0,a}return function(r,u,p){if(c>1)throw TypeError("Generator is already running");for(m&&1===u&&f(u,p),s=u,o=p;(t=s<2?e:o)||!m;){i||(s?s<3?(s>1&&(d.n=-1),f(s,o)):d.n=o:d.v=o);try{if(c=2,i){if(s||(r="next"),t=i[r]){if(!(t=t.call(i,o)))throw TypeError("iterator result is not an object");if(!t.done)return t;o=t.value,s<2&&(s=0)}else 1===s&&(t=i.return)&&t.call(i),s<2&&(o=TypeError("The iterator does not provide a '"+r+"' method"),s=1);i=e}else if((t=(m=d.n<0)?o:n.call(a,d))!==l)break}catch(t){i=e,s=1,o=t}finally{c=1}}return{value:t,done:m}}}(n,r,i),!0),c}var l={};function s(){}function o(){}function c(){}t=Object.getPrototypeOf;var u=[][a]?t(t([][a]())):(z(t={},a,function(){return this}),t),m=c.prototype=s.prototype=Object.create(u);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,z(e,r,"GeneratorFunction")),e.prototype=Object.create(m),e}return o.prototype=c,z(m,"constructor",c),z(c,"constructor",o),o.displayName="GeneratorFunction",z(c,r,"GeneratorFunction"),z(m),z(m,r,"Generator"),z(m,a,function(){return this}),z(m,"toString",function(){return"[object Generator]"}),(G=function(){return{w:i,m:d}})()}function z(e,t,n,a){var r=Object.defineProperty;try{r({},"",{})}catch(e){r=0}z=function(e,t,n,a){if(t)r?r(e,t,{value:n,enumerable:!a,configurable:!a,writable:!a}):e[t]=n;else{var i=function(t,n){z(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},z(e,t,n,a)}function M(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,s=[],o=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}(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 q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var _=function(e,t,n,a){return new(n||(n=Promise))(function(r,i){function l(e){try{o(a.next(e))}catch(e){i(e)}}function s(e){try{o(a.throw(e))}catch(e){i(e)}}function o(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(l,s)}o((a=a.apply(e,t||[])).next())})},Y="userManager.userDetailsForm",W=i.T.encloseNamespace(Y),B=[s.x.UserAlreadyExistsInCustomer,s.x.CustomerFoundInOnline,s.x.UserInCustomerWithOnline,s.x.UserTypeMismatch,s.x.InvalidUserStatus,s.x.UserCanBeAddedInCustomer,s.x.Rostered],Z="firstName";function D(e){var t,n,o,c,u,m,d=e.onClickCancel,f=e.isNew,p=e.userType,v=e.yearGroups,b=e.submitText,y=e.currentUser,E=j.l.getValidYearGroups(v),S=M(a.useState(null),2),w=S[0],x=S[1],O=M(a.useState(!1),2),T=O[0],A=O[1],I=M(a.useState(e.canEditSsoFields||!1),2),F=I[0],z=I[1],q=a.useRef({}),D=a.useContext(L.A),$=(0,h.b)();a.useEffect(function(){$.values.password&&$.values.email&&$.setFieldValue("password","")},[$.values.email,$.values.password]),a.useEffect(function(){if($.touched.email&&!T){var e=document.getElementById(Z);e&&e.focus()}},[T]);var H=(null===(t=e.user)||void 0===t?void 0:t.status)===U.w.Disabled,J=!e.isNew&&y.id.toString()===(null===(n=$.values.userId)||void 0===n?void 0:n.toString());return a.createElement(r.l0,null,a.createElement(N.W,{label:W("emailAddress"),type:"text",name:"email",id:"email",placeholder:W("emailAddressPlaceholder"),value:$.values.email,showRequiredStar:e.emailRequired,disabled:!e.canEditEmail||H,formSize:e.formSize,infoText:function(){if(D===P.a.Curator&&!e.isNew&&$.initialValues.email)return W(e.canEditEmail?"emailNotVerified":"cannotEditVerifiedEmail")}(),onBlur:function(t){return _(this,void 0,void 0,G().m(function n(){var a,r,i,o;return G().w(function(n){for(;;)switch(n.n){case 0:if((a=t.currentTarget.value)!==$.initialValues.email){n.n=1;break}return n.a(2);case 1:if($.setFieldTouched("email",!0),D===P.a.Primary&&e.validateEmail){n.n=2;break}return n.a(2);case 2:return n.n=3,$.validateForm();case 3:if(!n.v.email&&a){n.n=4;break}return w&&x(null),n.a(2);case 4:if(A(!0),n.p=5,r=q.current[a]){n.n=7;break}return i=l.m,n.n=6,e.validateEmail(a);case 6:o=n.v,r=i.first.call(i,o);case 7:if(q.current[a]=r,!e.isNew||r.validationCode!==s.x.UserCanBeAddedInCustomer){n.n=8;break}return e.onDetectValidUser(r.user),n.a(2);case 8:if(B.includes(r.validationCode)){n.n=9;break}return w&&x(null),A(!1),n.a(2);case 9:x(r),A(!1),n.n=11;break;case 10:n.p=10,n.v,A(!1);case 11:return n.a(2)}},n,null,[[5,10]])}))},onChange:function(e){var t=e.currentTarget.value;$.setFieldValue("email",t),w&&x(null)},showLoadingSpinner:T,className:w?"is-invalid":"",autoFocus:!0}),!!w&&a.createElement("div",{className:"mt-n2 mb-2"},a.createElement(k,{name:"email",isNew:e.isNew,error:w,appLinks:e.appLinks,emailRequired:e.emailRequired,onClickCancel:e.onClickCancel,isInBulkEditing:e.isInBulkEditing})),a.createElement(N.W,{label:W("firstName"),type:"text",name:"firstName",id:Z,placeholder:W("firstNamePlaceholder"),value:$.values.firstName,showRequiredStar:!0,formSize:e.formSize,disabled:H||T||j.l.hasLegacySso(e.user)&&!F}),a.createElement(N.W,{label:W("lastName"),type:"text",name:"surname",id:"surname",placeholder:W("lastNamePlaceholder"),value:$.values.surname,showRequiredStar:!0,formSize:e.formSize,disabled:H||T||j.l.hasLegacySso(e.user)&&!F}),e.showDisplayNameField&&a.createElement(N.W,{label:W("displayName"),type:"text",name:"displayName",id:"displayName",placeholder:W("displayNamePlaceholder"),formSize:e.formSize,disabled:H||T,infoText:W("displayNameInfo")}),a.createElement(N.W,{label:W("username"),type:"text",name:"username",id:"username",placeholder:W("usernamePlaceholder"),value:$.values.username,infoTooltip:f?W("usernameInfo"):null,formSize:e.formSize,disabled:!f||H||T}),e.showPasswordField&&a.createElement(N.W,{label:W("password"),type:"password",name:"password",id:"password",placeholder:W("passwordPlaceholder"),value:$.values.password,disabled:!!$.values.email||T,infoTooltip:$.values.email?W("passwordDisabledInfo"):W("passwordGenerateInfo"),formSize:e.formSize}),e.userType===g.Y.Learner&&!e.hideYearLevel&&a.createElement(N.W,{as:"select",label:W("yearGroup"),name:"masterYearGroup",value:null!==(c=null===(o=$.values.masterYearGroup)||void 0===o?void 0:o.id)&&void 0!==c?c:"",className:(null===(u=$.values.masterYearGroup)||void 0===u?void 0:u.id)?"":"text-secondary",showRequiredStar:!0,disabled:H||T||j.l.hasSso(e.user)&&!F&&0!==(null===(m=$.initialValues.masterYearGroup)||void 0===m?void 0:m.value),onChange:function(e){var t=e.target.value,n=v.find(function(e){return e.id.toString()===(null==t?void 0:t.toString())});n?$.setFieldValue("masterYearGroup",{id:n.id,name:n.name,description:n.description,value:n.value}):$.setFieldValue("masterYearGroup",null)}},a.createElement("option",{className:"text-secondary",value:""},i.T.getPhrase(Y,"selectYearGroup")),E.map(function(e){return a.createElement("option",{key:e.id,value:e.id,className:"text-dark"},e.name)})),a.createElement("div",{className:"d-flex justify-content-between align-items-center"},!e.hideAdminToggle&&a.createElement(R,{user:e.user,userType:p,countryCode:e.countryCode,isEditingCurrentUser:J,isDisabled:H,isValidatingEmail:T,editSsoFields:F,hasOrg:e.hasOrg,canEditSuperAdmin:e.canEditSuperAdmin}),function(e){return!(e.isNew||!e.showActions||!e.appLinks||!e.user||!e.onClickResendActivationEmail)}(e)&&a.createElement(C.c,{user:e.user,userType:p,appLinks:e.appLinks,onClickSendResetEmail:e.onClickSendResetEmail,onClickResendActivationEmail:e.onClickResendActivationEmail,onClickSendVerificationEmail:e.onClickSendVerificationEmail,currentUser:y,products:e.products,isEditUserForm:!0,hasUserCredit:e.hasUserCredit})),a.createElement(V.u,null,!!e.onToggleNextCheckbox&&a.createElement(V.u.Checkbox,{id:"edit-next-user",onToggle:e.onToggleNextCheckbox,label:e.goToNextText||W("goToNext"),checked:e.shouldGoToNext}),!!e.canEditSsoFields&&!e.hideSsoToggle&&a.createElement(V.u.Toggle,{on:F,onClick:function(){return z(function(e){return!e})},label:W("editSsoFields"),disabled:!j.l.hasSso(e.user),tooltip:j.l.hasSso(e.user)?"":"This user doesn't sign in with SSO"}),a.createElement(V.u.Cancel,{onClick:d}),a.createElement(V.u.Submit,{isNew:f,text:b,variant:"dark",disabled:!!w||void 0})))}var $=n(39739),H=n(5173),J=/^(?![._])(?!.*[._]$)(?!.*?\.\.)(?!.*?__)[a-zA-Z0-9_.]+$/,K=/^[\w0-9'\-,.():;&][^_!¡?÷¿/\\+=@#$%ˆ*{}|~<>[\]]{0,}$/,Q=i.T.encloseNamespace("userManager.validation"),X=function(e){return(0,H.Z_)().max(255,function(){return Q("nameExceeds")}).required(function(){return Q("nameRequired")}).default("").test({name:"name-invalid",message:Q("nameInvalid"),test:function(t){return!(!(null==e?void 0:e.userId)||e.firstName!==t)||K.test(t)}})},ee=function(e){return(0,H.Z_)().max(255,function(){return Q("surnameExceeds")}).required(function(){return Q("surnameRequired")}).default("").test({name:"surname-invalid",message:Q("surnameInvalid"),test:function(t){return!(!(null==e?void 0:e.userId)||e.surname!==t)||K.test(t)}})},te=function(e,t){var n=(0,H.Z_)().max(255,function(){return Q("emailExceeds")}).email(function(){return Q("emailInvalidLong")}).default("");return e!==g.Y.Staff||(null==t?void 0:t.userId)&&!t.email||(n=n.required(function(){return Q("emailRequired")})),n},ne=function(e){var t=!(null==e?void 0:e.userId);return(0,H.Z_)().default("").test({name:"username-too-long",message:Q("usernameExceeds"),test:function(n){return!t&&e.username===n||n.length<=200}}).test({name:"username-too-short",message:Q("usernameTooShort"),test:function(n){return!t&&e.username===n||!(!t||n)||n.length>=5}}).test({name:"username-invalid",message:Q("usernameInvalidLong"),test:function(n){return!(!t||n)||!t&&e.username===n||J.test(n)}})},ae=function(e,t){var n=(0,H.Z_)().default("");return(null==t?void 0:t.userId)||(n=n.test({name:"password-short",message:Q("passwordTooShort",{minLength:e}),test:function(t){return!t||t.length>=e}})),n},re=function(e){if(e!==g.Y.Staff)return(0,H.Ry)().required(function(){return Q("yearGroupRequired")}).nullable()},ie=function(e,t,n){return(0,H.Ry)().shape({firstName:X(n),surname:ee(n),email:te(e,n),username:ne(n),password:ae(t,n),displayName:(0,H.Z_)().max(70,function(){return Q("displayNameExceeds")}).notRequired().nullable().default("").test({name:"display-name-short",message:Q("displayNameTooShort"),test:function(e){return!e||e.length>=2}}),masterYearGroup:re(e)})};function le(e){var t={};Object.keys(e.initialErrors||{}).forEach(function(e){t[e]=!0});var n,r,i=!e.initialValues.userId,l=!!i||!(null===(r=null===(n=e.user)||void 0===n?void 0:n.metadata)||void 0===r?void 0:r.isEmailVerified),s=$.P.getMinimumPasswordLength(e.passwordPolicy,e.userType,A.i.User),o=j.l.getValidYearGroups(e.yearGroups);return a.createElement("div",null,a.createElement(h.n,{initialValues:e.initialValues,initialErrors:e.initialErrors,initialTouched:t,onSubmit:e.onSubmit,validationSchema:ie(e.userType,s,e.initialValues)},a.createElement(D,{isNew:i,user:e.user,userType:e.userType,yearGroups:o,onClickCancel:e.onClickCancel,submitText:e.submitText,shouldGoToNext:e.shouldGoToNext,onToggleNextCheckbox:e.onToggleNextCheckbox,goToNextText:e.goToNextText,currentUser:e.currentUser,formSize:e.formSize,showPasswordField:e.showPasswordField,canEditEmail:l,showActions:e.showActions,appLinks:e.appLinks,onClickResendActivationEmail:e.onClickResendActivationEmail,onClickSendResetEmail:e.onClickSendResetEmail,onClickSendVerificationEmail:e.onClickSendVerificationEmail,emailRequired:e.emailRequired,showDisplayNameField:e.showDisplayNameField,canEditSsoFields:e.canEditSsoFields,validateEmail:e.validateEmail,onDetectValidUser:e.onDetectValidUser,isInBulkEditing:e.isInBulkEditing,products:e.products,hasUserCredit:e.hasUserCredit,hideAdminToggle:e.hideAdminToggle,hideSsoToggle:e.hideSsoToggle,hideYearLevel:e.hideYearLevel,hasOrg:e.hasOrg,countryCode:e.countryCode,canEditSuperAdmin:e.canEditSuperAdmin})))}},66122:(e,t,n)=>{n.d(t,{A:()=>r});var a=n(32735);function r(e){return a.createElement("span",{id:"".concat(e.name,"Error"),className:"".concat(e.className," invalid-feedback d-block"),role:"status"},e.children)}},29057:(e,t,n)=>{n.d(t,{n:()=>S,W:()=>k});var a=n(32735),r=n(80247),i=n(80130),l=n(92802),s=n(91967),o=n(1048),c=n(15611),u=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,r=e.checkboxLabelFontWeight,l=e.className,s=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return a.createElement(i.Z.Group,{className:"form-group"},a.createElement("div",{className:"form-check ".concat(l||"")},a.createElement(S,Object.assign({className:"form-check-input"},s)),a.createElement(i.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===r?"fw-normal":""," \n ").concat(n),htmlFor:s.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&a.createElement(a.Fragment,null,a.createElement("span",null," "),a.createElement(c.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),f=n(83345),p=n(73814),v=n(35223);function h(e){var t=(0,l.u6)().values,n=o.t.get(t,e.fieldName);return"string"!=typeof n?a.createElement(a.Fragment,null):a.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const g={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function b(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 y=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n},E="shared.formField";function S(e){var t,n,i=e.children,c=e.showLoadingSpinner,u=y(e,["children","showLoadingSpinner"]),m=(t=a.useState(e.type),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,l,s=[],o=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return b(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)?b(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=m[0],p=m[1],h=s.q.isFunction(i)?function(e){return i(e)}:a.Children.count(i)?i:null;if("password"!==u.type)return c?a.createElement("div",{className:"position-relative"},a.createElement(l.gN,Object.assign({},o.t.omit(u,["formSize"])),h),a.createElement("div",{className:g.spinner},a.createElement(r.Z,{animation:"border",size:"sm"}))):a.createElement(l.gN,Object.assign({},o.t.omit(u,["formSize"])),h);var E="position-relative ".concat(g.passwordContainer);return u.className&&(E+=" ".concat(u.className)),u.disabled&&(E+=" ".concat(g.passwordContainerDisabled)),a.createElement("div",{className:E},a.createElement(l.gN,Object.assign({},o.t.omit(u,["formSize","type","className"]),{type:f,className:"".concat(g.passwordInput," border-0 w-100 h-100 outline-none rounded")}),h),"password"===u.type&&a.createElement(d.x,{svgName:"password"===f?v.vn.VisibleOn:v.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(g.revealPassword),onClick:function(){p("password"===f?"text":"password")}}))}function k(e){var t=e.label,n=e.className,r=e.showCharacterCounter,s=e.showRequiredStar,c=e.infoTooltip,u=e.infoTooltipPlacement,b=e.infoText,k=e.formSize,C=e.showOptionalLabel,w=e.formGroupClassname,x=e.labelClassName,N=y(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname","labelClassName"]),O=(0,l.u6)(),T=O.errors,A=O.touched,j=function(){};if("checkbox"===N.type){var I=o.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(I.onChange=j),a.createElement(m,Object.assign({},I))}var F=Object.assign(Object.assign({},N),{className:p.w.getCustomFormControlClassName(T,A,N.name,k,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(F.onChange=j),a.createElement(i.Z.Group,{className:"form-group ".concat(w)},!!t&&a.createElement(i.Z.Label,{htmlFor:N.id,className:"d-flex align-items-center ".concat(x)},t,s&&a.createElement("span",{className:"text-danger"},"*"),c&&a.createElement(d.x,{className:"svg-container text-secondary ".concat(g.infoTooltip),svgName:v.vn.Info,title:c,tooltipPlacement:u,tooltipSpanHack:!0}),C&&a.createElement("span",{className:"text-secondary"}," ",a.createElement(f.x,{namespace:E,phrase:"optional"})),!!r&&!!N.maxLength&&a.createElement("div",{className:"ms-auto"},a.createElement(h,{fieldName:N.name,limit:N.maxLength}))),e.description&&a.createElement("p",null,e.description),a.createElement(S,Object.assign({},F,{"aria-errormessage":"".concat(N.name,"Error")})),!!b&&a.createElement(i.Z.Text,{className:"text-secondary"},b),a.createElement(l.Bc,{name:N.name},function(e){return a.createElement(i.Z.Control.Feedback,{id:"".concat(N.name,"Error"),type:"invalid",role:"status"},e)}))}S.defaultProps={autoComplete:"off"},k.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>m,n:()=>u});var a=n(32735),r=n(92802),i=n(91967),l=n(1048);function s(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,s=[],o=!0,c=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;o=!1}else for(;!(o=(a=i.call(n)).done)&&(s.push(a.value),s.length!==t);o=!0);}catch(e){c=!0,r=e}finally{try{if(!o&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(c)throw r}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return o(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)?o(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 o(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 c=function(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(a=Object.getOwnPropertySymbols(e);r<a.length;r++)t.indexOf(a[r])<0&&Object.prototype.propertyIsEnumerable.call(e,a[r])&&(n[a[r]]=e[a[r]])}return n};function u(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,o=e.initialValues,u=e.onSubmit,m=c(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=l.t.deepClone(e);return function e(n){Object.keys(t).forEach(function(a){t.hasOwnProperty(a)&&(l.t.isObject(n[a])?e(n[a]):null===t[a]&&delete t[a])})}(t),t}(o)):o,f={allowInitialSubmit:e.allowInitialSubmit};return a.createElement(r.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,a){var r=a.setSubmitting,i=a.resetForm,l=a.setFieldError,o=n&&e.validationSchema?e.validationSchema.cast(t):t;u(o,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.reset&&i(),e.errors)for(var t=0,n=Object.entries(e.errors);t<n.length;t++){var a=s(n[t],2),o=a[0],c=a[1];l(o,c)}r(!1)})},initialStatus:f}),i.q.isFunction(e.children)?function(t){return e.children(t)}:a.Children.count(e.children)?e.children:null)}function m(){return(0,r.u6)()}u.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},73814:(e,t,n)=>{n.d(t,{w:()=>r});var a=n(92802),r={getCustomFormControlClassName:function(e,t,n,r,i,l){var s="";return s=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(l,r),(0,a.u9)(t,n)&&(0,a.u9)(e,n)&&(s+=" is-invalid"),i&&(s+=" ".concat(i)),s}}},80658:(e,t,n)=>{n.d(t,{F:()=>r});var a=n(99940),r={getCustomerSecuritySettings:function(e,t,n){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"customers:security:settings",normalize:!1,success:t,error:n}},setCustomerSecuritySettings:function(e,t,n,r){return{url:"{gateway}/v1/customers/".concat(e,"/settings/security"),key:"update:security:settings",invalidationKeys:"customers:security:settings",type:a.k.PUT,normalize:!1,data:t,success:n,error:r}}}}}]);
3
+ //# sourceMappingURL=8933-00251901c0-lite.chunk.js.map