@clickview/lite 0.50.0-rc.1 → 0.50.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +2 -2
- package/dist/css/{355-lite-7e76df6ab5.chunk.css → 355-lite-e474c8ddce.chunk.css} +1 -1
- package/dist/css/{7715-lite-671ee43c49.chunk.css → 7715-lite-25809cdd3d.chunk.css} +1 -1
- package/dist/css/{8139-lite-10c11c0722.chunk.css → 8139-lite-5511af77bf.chunk.css} +1 -1
- package/dist/css/{8960-lite-d45f2332e6.chunk.css → 8960-lite-a80ad92ea7.chunk.css} +1 -1
- package/dist/css/{9395-lite-01ed62af75.chunk.css → 9395-lite-e7ca0b1320.chunk.css} +1 -1
- package/dist/css/lite-app-f2595ac365.css +53 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1285-086e83fddf-lite.chunk.js → 1285-f4b56a47c2-lite.chunk.js} +2 -2
- package/dist/scripts/{1285-086e83fddf-lite.chunk.js.map → 1285-f4b56a47c2-lite.chunk.js.map} +1 -1
- package/dist/scripts/{355-81c86415d9-lite.chunk.js → 355-eaf55dc95f-lite.chunk.js} +1 -1
- package/dist/scripts/{355-81c86415d9-lite.chunk.js.map → 355-eaf55dc95f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4395-2e9e72a400-lite.chunk.js → 4395-322f459cb0-lite.chunk.js} +2 -2
- package/dist/scripts/4395-322f459cb0-lite.chunk.js.map +1 -0
- package/dist/scripts/{5562-42375ce894-lite.chunk.js → 5562-09db6be3de-lite.chunk.js} +3 -3
- package/dist/scripts/{5562-42375ce894-lite.chunk.js.map → 5562-09db6be3de-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6480-06435aaa46-lite.chunk.js → 6480-60a0ad2ff5-lite.chunk.js} +1 -1
- package/dist/scripts/{6480-06435aaa46-lite.chunk.js.map → 6480-60a0ad2ff5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{679-a58b19729d-lite.chunk.js → 679-51a0b936e0-lite.chunk.js} +2 -2
- package/dist/scripts/{679-a58b19729d-lite.chunk.js.map → 679-51a0b936e0-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6863-562ff82f45-lite.chunk.js → 6863-670092eaa5-lite.chunk.js} +1 -1
- package/dist/scripts/{6863-562ff82f45-lite.chunk.js.map → 6863-670092eaa5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6948-8c8d9131eb-lite.chunk.js → 6948-e7a16d8c0b-lite.chunk.js} +2 -2
- package/dist/scripts/{6948-8c8d9131eb-lite.chunk.js.map → 6948-e7a16d8c0b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7052-32d8266e82-lite.chunk.js → 7052-a4d79c9f20-lite.chunk.js} +3 -3
- package/dist/scripts/{7052-32d8266e82-lite.chunk.js.map → 7052-a4d79c9f20-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7715-e5380d1440-lite.chunk.js → 7715-634be84dc5-lite.chunk.js} +2 -2
- package/dist/scripts/{7715-e5380d1440-lite.chunk.js.map → 7715-634be84dc5-lite.chunk.js.map} +1 -1
- package/dist/scripts/7855-04bc8e52e3-lite.chunk.js +2 -0
- package/dist/scripts/7855-04bc8e52e3-lite.chunk.js.map +1 -0
- package/dist/scripts/{8055-f4de552821-lite.chunk.js → 8055-a6d102b953-lite.chunk.js} +3 -3
- package/dist/scripts/{8055-f4de552821-lite.chunk.js.map → 8055-a6d102b953-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8139-37635f8bcd-lite.chunk.js → 8139-2a36098eae-lite.chunk.js} +3 -3
- package/dist/scripts/{8139-37635f8bcd-lite.chunk.js.map → 8139-2a36098eae-lite.chunk.js.map} +1 -1
- package/dist/scripts/8243-e4baf0ae31-lite.chunk.js +2 -0
- package/dist/scripts/8243-e4baf0ae31-lite.chunk.js.map +1 -0
- package/dist/scripts/{8419-70c7a44baa-lite.chunk.js → 8419-510dc22a69-lite.chunk.js} +1 -1
- package/dist/scripts/{8419-70c7a44baa-lite.chunk.js.map → 8419-510dc22a69-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9395-181720391d-lite.chunk.js → 9395-77dfcbad18-lite.chunk.js} +2 -2
- package/dist/scripts/{9395-181720391d-lite.chunk.js.map → 9395-77dfcbad18-lite.chunk.js.map} +1 -1
- package/dist/scripts/950-68255d3086-lite.chunk.js +2 -0
- package/dist/scripts/950-68255d3086-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-be1688b50c.min.js → bundle-0187039e1a.min.js} +3 -3
- package/dist/scripts/bundle-0187039e1a.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/css/lite-app-5b9f4761e1.css +0 -53
- package/dist/scripts/4395-2e9e72a400-lite.chunk.js.map +0 -1
- package/dist/scripts/7855-1c7a0adeab-lite.chunk.js +0 -2
- package/dist/scripts/7855-1c7a0adeab-lite.chunk.js.map +0 -1
- package/dist/scripts/8243-5d673b616d-lite.chunk.js +0 -2
- package/dist/scripts/8243-5d673b616d-lite.chunk.js.map +0 -1
- package/dist/scripts/950-4b9770bfe3-lite.chunk.js +0 -2
- package/dist/scripts/950-4b9770bfe3-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-be1688b50c.min.js.map +0 -1
- /package/dist/scripts/{5562-42375ce894-lite.chunk.js.LICENSE.txt → 5562-09db6be3de-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7052-32d8266e82-lite.chunk.js.LICENSE.txt → 7052-a4d79c9f20-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8055-f4de552821-lite.chunk.js.LICENSE.txt → 8055-a6d102b953-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8139-37635f8bcd-lite.chunk.js.LICENSE.txt → 8139-2a36098eae-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9395-181720391d-lite.chunk.js.LICENSE.txt → 9395-77dfcbad18-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-be1688b50c.min.js.LICENSE.txt → bundle-0187039e1a.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4395-2e9e72a400-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/copy-input/copy-input.scss","file:///app/packages/libs/shared/src/components/copy-input/CopyInput.tsx","file:///app/packages/libs/shared/src/enums/SupportArticle.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rss-feed/rss-feed.scss","file:///app/packages/projects/lite/src/apps/settings/views/rss-feed/RssFeedView.tsx","file:///app/node_modules/copy-to-clipboard/index.js","file:///app/node_modules/react-copy-to-clipboard/lib/Component.js","file:///app/node_modules/react-copy-to-clipboard/lib/index.js","file:///app/node_modules/toggle-selection/index.js"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"normal\":\"Q1UGv\",\"copyBtn\":\"J3fBx\"};","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport styles from './copy-input.scss';\n\nconst namespace = 'shared.copyInput';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CopyInputProps {\n value: string;\n label?: string;\n // Greyed means the input will be greyed out. Normal means it will appear like a normal input\n styling?: 'greyed' | 'normal';\n onCopy?: () => void;\n copyText?: string;\n copiedText?: string;\n}\n\nCopyInput.defaultProps = {\n styling: 'normal'\n};\n\nexport function CopyInput(props: CopyInputProps): JSX.Element {\n const [ showCopiedText, setShowCopiedText ] = React.useState(false);\n\n function onCopy(e: React.MouseEvent): void {\n e.preventDefault();\n\n if (props.onCopy)\n props.onCopy();\n\n if (showCopiedText)\n return;\n\n setShowCopiedText(true);\n setTimeout(() => setShowCopiedText(false), 2000);\n }\n\n const input = (\n <div className='input-group'>\n <input\n type='text'\n autoComplete='off'\n className={`form-control ${props.styling === 'normal' ? styles.normal : ''}`}\n spellCheck={false}\n value={props.value}\n readOnly\n />\n <CopyToClipboard text={props.value}>\n <button\n className={`btn btn-outline-dark border border-secondary py-0 text-nowrap`}\n onClick={onCopy}\n >\n {showCopiedText ?\n props.copiedText || getPhrase('copied') :\n props.copyText || getPhrase('copy')\n }\n </button>\n </CopyToClipboard>\n </div>\n );\n\n if (props.label) {\n return (\n <Form.Group className='form-group'>\n <Form.Label>{props.label}</Form.Label>\n {input}\n </Form.Group>\n );\n }\n\n return input;\n}\n","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '22110291468057',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097'\n}\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"schoolId\":\"a8qc7\",\"feedUrl\":\"U0FAn\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/react/index';\n\nimport { CopyInput } from 'libs/shared/components/copy-input/CopyInput';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\n\nimport styles from './rss-feed.scss';\n\nconst namespace = 'settings.rssFeed';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function RssFeedView(): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(\n currentUser.data && CustomerRequests.customer(currentUser.data.customerId)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const dataLoded = (\n currentUser.hasCompleted &&\n customer.hasCompleted &&\n config.hasCompleted\n );\n\n if (!dataLoded)\n return <></>;\n\n const feedUrl = UrlHelper.urlBuilder(\n UrlHelper.safeUrlConcat(config.data.onlineUrl, '/feed'),\n { schoolId: customer.data.customerGuid }\n );\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('heading')]}\n >\n <p>\n <Text namespace={namespace} phrase='info' /> \n <a href={ArticleHelper.getLiteArticle(LiteSupportArticle.RssFeed)} target='_blank' className='text-info btn-link'>\n <Text namespace={namespace} phrase='learnMore' />\n </a>\n </p>\n\n <div className={styles.schoolId}>\n <CopyInput value={customer.data.customerGuid} copyText={getPhrase('copy')} label='School id' />\n </div>\n <div className={styles.feedUrl}>\n <CopyInput value={feedUrl} label='Feed url' />\n </div>\n </SettingsLayout>\n );\n}","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CopyToClipboard = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _copyToClipboard = _interopRequireDefault(require(\"copy-to-clipboard\"));\n\nvar _excluded = [\"text\", \"onCopy\", \"options\", \"children\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CopyToClipboard, _React$PureComponent);\n\n var _super = _createSuper(CopyToClipboard);\n\n function CopyToClipboard() {\n var _this;\n\n _classCallCheck(this, CopyToClipboard);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"onClick\", function (event) {\n var _this$props = _this.props,\n text = _this$props.text,\n onCopy = _this$props.onCopy,\n children = _this$props.children,\n options = _this$props.options;\n\n var elem = _react[\"default\"].Children.only(children);\n\n var result = (0, _copyToClipboard[\"default\"])(text, options);\n\n if (onCopy) {\n onCopy(text, result);\n } // Bypass onClick if it was present\n\n\n if (elem && elem.props && typeof elem.props.onClick === 'function') {\n elem.props.onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(CopyToClipboard, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n _text = _this$props2.text,\n _onCopy = _this$props2.onCopy,\n _options = _this$props2.options,\n children = _this$props2.children,\n props = _objectWithoutProperties(_this$props2, _excluded);\n\n var elem = _react[\"default\"].Children.only(children);\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {\n onClick: this.onClick\n }));\n }\n }]);\n\n return CopyToClipboard;\n}(_react[\"default\"].PureComponent);\n\nexports.CopyToClipboard = CopyToClipboard;\n\n_defineProperty(CopyToClipboard, \"defaultProps\", {\n onCopy: undefined,\n options: undefined\n});","\"use strict\";\n\nvar _require = require('./Component'),\n CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","\nmodule.exports = function () {\n var selection = document.getSelection();\n if (!selection.rangeCount) {\n return function () {};\n }\n var active = document.activeElement;\n\n var ranges = [];\n for (var i = 0; i < selection.rangeCount; i++) {\n ranges.push(selection.getRangeAt(i));\n }\n\n switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML\n case 'INPUT':\n case 'TEXTAREA':\n active.blur();\n break;\n\n default:\n active = null;\n break;\n }\n\n selection.removeAllRanges();\n return function () {\n selection.type === 'Caret' &&\n selection.removeAllRanges();\n\n if (!selection.rangeCount) {\n ranges.forEach(function(range) {\n selection.addRange(range);\n });\n }\n\n active &&\n active.focus();\n };\n};\n"],"names":["BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","map","b","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","getPhrase","LanguageService","CopyInput","props","showCopiedText","setShowCopiedText","input","type","autoComplete","styling","spellCheck","value","readOnly","CopyToClipboard","text","onClick","e","preventDefault","onCopy","setTimeout","copiedText","copyText","label","Form","defaultProps","OnlineSupportArticle","LiteSupportArticle","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","Math","max","floor","random","namespace","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","RssFeedView","currentUser","UserRequests","customer","data","CustomerRequests","customerId","config","ConfigRequests","hasCompleted","feedUrl","UrlHelper","onlineUrl","schoolId","customerGuid","Text","phrase","href","ArticleHelper","target","deselectCurrent","clipboardToIE11Formatting","module","exports","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","createElement","textContent","ariaHidden","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","format","clipboardData","console","warn","window","clearData","setData","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","error","copyKey","test","navigator","userAgent","prompt","removeRange","removeAllRanges","removeChild","_typeof","obj","Symbol","iterator","constructor","prototype","Object","defineProperty","_react","_interopRequireDefault","_copyToClipboard","_excluded","__esModule","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_defineProperties","descriptor","configurable","writable","_setPrototypeOf","o","p","setPrototypeOf","__proto__","_assertThisInitialized","self","ReferenceError","_getPrototypeOf","getPrototypeOf","_React$PureComponent","subClass","superClass","TypeError","create","_inherits","Constructor","protoProps","Derived","hasNativeReflectConstruct","_super","Reflect","construct","sham","Proxy","Boolean","valueOf","call","_isNativeReflectConstruct","result","Super","NewTarget","this","_possibleConstructorReturn","_this","instance","_classCallCheck","_len","args","_key","concat","event","_this$props","elem","Children","only","_this$props2","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","cloneElement","PureComponent","undefined","rangeCount","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","focus"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7855],{75314:(e,t,n)=>{n.d(t,{j:()=>w});var a=n(32735),r=n(80247),o=n(23481),i=n(91967),c=n(76177),l=n(4594),s=n(45778),m=n(60376),u=n(36511),d=n(35223);const p={removeRecipient:"mCbMC",recipientItem:"kdcb0",showSpinner:"xH6Mu",avatarContainer:"Zcpg3",recipientDetails:"v5EmV",recipientDetailsWithRemoveButton:"_V928"};var v="shared.classroomGroupRecipientItemMetadata";function g(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(m.f,{svgName:d.vn.Group,variant:(0,u.I)(null===(t=e.classroomGroup.metadata)||void 0===t?void 0:t.colour)})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.classroomGroup.name),a.createElement("p",{className:"text-secondary m-0"},function(e){var t,n,a,r=null!==(n=null===(t=e.users)||void 0===t?void 0:t.count)&&void 0!==n?n:0,i=null===(a=e.classroom)||void 0===a?void 0:a.name;return i?o.T.getPhrase(v,"subheading",{classroomName:i,smartCount:r}):""}(e.classroomGroup))))}var f="shared.classroomRecipientItemMetadata";function E(e){return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(m.f,{svgName:d.vn.Classrooms,variant:"teal"})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.classroom.name),a.createElement("p",{className:"text-secondary m-0"},(n=null===(t=e.classroom.enrolments)||void 0===t?void 0:t.count,Number.isInteger(n)?o.T.getPhrase(f,"subheading",{smartCount:n}):""))));var t,n}var h=n(20789),y=n(76881),C=n(86613),x=n(64818),b=o.T.encloseNamespace("shared.userRecipientItemMetadata");function N(e){var t;return a.createElement(a.Fragment,null,a.createElement("div",{className:"".concat(p.avatarContainer," d-inline-block")},a.createElement(h.q,{imageUrl:null===(t=e.user.avatar)||void 0===t?void 0:t.url,imageCdnUrl:e.imageCdnUrl,initials:x.l.getInitials(e.user.name,e.user.surname)})),a.createElement("div",{className:e.detailsClassName},a.createElement("h4",{className:"font-size-normal fw-normal m-0"},e.showDisplayName?x.l.getDisplayName(e.user):x.l.getFullName(e.user)),a.createElement("p",{className:"text-secondary m-0"},e.getSubText?e.getSubText(e.user):function(e){var t=x.l.getUserType(e),n=x.l.getUserRole(e);if(t===y.Y.Staff)return n===C.i.Admin?b("admin"):b("staff");var a=x.l.getYearGroup(e);return(null==a?void 0:a.name)?a.name:b("student")}(e.user))))}function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var k=o.T.encloseNamespace("share.recipientItem");function I(e){switch(e){case l.E.User:return k("removeUser");case l.E.Classroom:return k("removeClassroom");case l.E.ClassroomGroup:return k("removeGroup")}return null}function w(e){var t,n,o=(t=a.useState(!1),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,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=o.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(e,t):void 0}}(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.")}()),m=o[0],u=o[1],d="".concat(p.recipientItem," d-flex");m&&(d+=" ".concat(p.showSpinner));var v="".concat(e.removeRecipient?p.recipientDetailsWithRemoveButton:p.recipientDetails," d-inline-block ms-2");return a.createElement("div",{className:d},s.G.isType(e.entity,l.E.User)?a.createElement(N,{user:e.entity,imageCdnUrl:e.imageCdnUrl,detailsClassName:v,showDisplayName:e.showDisplayName,getSubText:e.getSubText}):s.G.isType(e.entity,l.E.Classroom)?a.createElement(E,{classroom:e.entity,detailsClassName:v}):s.G.isType(e.entity,l.E.ClassroomGroup)?a.createElement(g,{classroomGroup:e.entity,detailsClassName:v}):void 0,i.q.isFunction(e.removeRecipient)&&a.createElement("div",{className:"".concat(p.removeRecipient," d-inline-flex justify-content-center align-items-center")},m?a.createElement(r.Z,{as:"div",size:"sm",animation:"border",role:"status"}):a.createElement(c.u,{title:I(e.entity.typeId),spanHack:!0},a.createElement("div",{className:"btn-close cursor-pointer",role:"button","aria-label":"Close",onClick:function(){u(!0),e.removeRecipient(e.entity.id,(function(){return u(!1)}))}}))))}},82872:(e,t,n)=>{n.d(t,{t:()=>k,D:()=>I});var a=n(32735),r=n(91967),o=n(11607),i=n(83914),c=n(4594),l=n(76881),s=n(36511),m=n(45778),u=n(35223),d=n(64818),p=n(80247),v=n(23481);const g={avatar:"srrS3"};function f(e){var t=e.imageUrl,n=e.initials,r={};return t&&(r.backgroundImage="url('".concat(t,"')")),a.createElement("div",{className:g.avatar,style:r},t?a.createElement(a.Fragment,null," "):n)}var E=n(76177);const h={svgContainer:"laVU4",selection:"vEOCt",expander:"d1NHd",iconContainer:"rFH4W",icon:"BarYz",bubble:"HF0E8",spinnerContainer:"iKeXW",remove:"pyzCM",removeBubble:"mgt6Y"};var y=v.T.encloseNamespace("shared.inputSelection");function C(e){var t,n="".concat(h.svgContainer," ").concat(h.icon);return e.typeId===c.E.Classroom?n+=" text-teal":n+=" text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)),n}function x(e){var t,n=function(e){var t;switch(e.typeId){case c.E.Classroom:return"text-teal-hover";case c.E.ClassroomGroup:return"text-".concat((0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour),"-hover")}}(e.selection),r=e.selection.typeId===c.E.Classroom;if(!e.canExpand){if(!e.selection.typeId||e.selection.typeId===c.E.User){var l=e.selection;return a.createElement("div",{className:h.svgContainer},a.createElement(f,{imageUrl:null===(t=l.avatar)||void 0===t?void 0:t.url,initials:d.l.getInitials(e.selection.name,e.selection.surname)}))}return a.createElement(E.u,{title:y(r?"emptyClassroom":"emptyGroup")},a.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},a.createElement(i.x,{className:C(e.selection),svgName:r?u.vn.Classrooms:u.vn.Group})))}return e.hasExpanded?a.createElement("div",{className:"d-flex align-items-center text-white ".concat(h.spinnerContainer," ").concat(h.svgContainer)},a.createElement(p.Z,{as:"div",size:"sm",animation:"border",role:"status"})):a.createElement(a.Fragment,null,a.createElement(o.L,{className:"align-items-center cursor-pointer text-white border border-white rounded-circle ".concat(h.expander," ").concat(n),onClick:e.onClickExpand},a.createElement(i.x,{svgName:u.vn.Plus,className:"d-flex align-items-center ".concat(h.svgContainer)})),a.createElement("div",{className:"align-items-center border border-white bg-white ".concat(h.iconContainer)},a.createElement(i.x,{className:C(e.selection),svgName:r?u.vn.Classrooms:u.vn.Group})))}function b(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,o,i,c=[],l=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=o.call(n)).done)&&(c.push(a.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(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)?N(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 N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function S(e){var t;if(!e.typeId)return"dark-blue";switch(e.typeId){case c.E.User:return"number"==typeof e.userType?2===e.userType?"dark-blue":"indigo":e.userType===l.Y.Learner?"dark-blue":"indigo";case c.E.Classroom:return"teal";case c.E.ClassroomGroup:return(0,s.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour)}}function k(e){var t,n,r,l=m.G.isType(e.selection,c.E.Classroom),s=m.G.isType(e.selection,c.E.ClassroomGroup),d=e.onClickExpand&&(l||s),p=!!(null===(t=e.selection.users||e.selection.enrolments)||void 0===t?void 0:t.count),v=!!(null===(r=null===(n=e.selection.users)||void 0===n?void 0:n.data)||void 0===r?void 0:r.length),g=b(a.useState(!1),2),f=g[0],E=g[1],y=b(a.useState(d&&p),2),C=y[0],x=y[1];if(a.useEffect((function(){x(d&&p)}),[d,p]),v){var N=e.selection,k=S(e.selection);return a.createElement("div",{className:"d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-".concat(k," text-").concat(k," ").concat(h.bubble)},N.users.data.map((function(t){return a.createElement(I,{key:"".concat(t.id,":").concat(e.selection.id),selection:t,colourVariant:k,hasStudentExperience:e.hasStudentExperience})})),a.createElement(o.L,{className:"cursor-pointer position-absolute text-".concat(k," ").concat(h.removeBubble),onClick:function(){return e.onClickRemove(e.selection)}},a.createElement(i.x,{svgName:u.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}return a.createElement(I,{selection:e.selection,canExpand:C,hasExpanded:f,onClickExpand:function(){E(!0),e.onClickExpand(e.selection.id)},onClickRemove:e.onClickRemove,colourVariant:S(e.selection),hasStudentExperience:e.hasStudentExperience})}function I(e){var t=e.colourVariant||S(e.selection),n=e.selection.name;return e.selection.typeId===c.E.User&&(n=e.hasStudentExperience?d.l.getDisplayName(e.selection):d.l.getFullName(e.selection)),a.createElement("div",{className:"".concat(h.selection," bg-").concat(t," rounded-pill text-").concat(t," d-flex align-items-center me-1 mt-1 overflow-hidden")},!e.hideExpander&&a.createElement(x,{canExpand:e.canExpand,hasExpanded:e.hasExpanded,onClickExpand:e.onClickExpand,selection:e.selection}),a.createElement("span",{className:"mx-1 text-white text-truncate"},n),r.q.isFunction(e.onClickRemove)&&a.createElement(o.L,{className:"d-flex align-items-center cursor-pointer align-self-stretch text-white ".concat(h.remove),onClick:function(){return e.onClickRemove(e.selection)}},a.createElement(i.x,{svgName:u.vn.Close,className:"d-flex align-items-center ".concat(h.svgContainer)})))}},7855:(e,t,n)=>{n.d(t,{d:()=>g,R:()=>f});var a=n(32735),r=n(23481),o=n(75896),i=n(75314),c=n(2136),l=n(83914),s=n(89589),m=n(97481),u=n(35223),d=n(82872);const p={container:"Dc3kX",suggestionsContainerOpen:"c5t3e",selectionContainer:"kFjoN",sectionContainer:"mLrE3"};var v="shared.tokenizedTypeahead",g=10;function f(e){var t;return a.createElement("div",{className:"form-control h-auto d-flex align-items-top position-relative ".concat(e.hideIcon?"":"py-1 px-0"," ").concat(e.className)},!e.hideIcon&&a.createElement(l.x,{className:"svg-container m-1",svgName:u.vn.Search}),a.createElement("div",{className:"".concat(p.selectionContainer," d-flex flex-wrap align-items-center mt-n1")},e.selections.map((function(t){return e.getInputTokenComponent?e.getInputTokenComponent(t):a.createElement(d.t,{key:t.id,selection:t,onClickRemove:e.removeSelection,onClickExpand:e.fetchSelectionMembers,hasStudentExperience:e.hasStudentExperience})})),a.createElement(c.E,Object.assign({},e,{onBackspace:function(){e.selections.length&&e.removeSelection(o.m.last(e.selections))},recentSearchHeading:e.recentSearchHeading||r.T.getPhrase(v,"recentSearchHeading"),placeholder:(null===(t=e.selections)||void 0===t?void 0:t.length)?" ":e.placeholder,searchIconPlacement:!1,clearQueryOnSelect:!0,getSuggestionComponent:function(t){return e.getSuggestionComponent?e.getSuggestionComponent(t):a.createElement(i.j,{entity:t,imageCdnUrl:e.imageCdnUrl,showDisplayName:e.hasStudentExperience})},getEmptyStateComponent:function(t){return a.createElement(s.x,{query:t,imageUrl:e.emptyStateImageUrl})},getErrorStateComponent:function(t){return a.createElement(m.d,{imageUrl:e.errorStateImageUrl,onClickTryAgain:t})},theme:{container:p.container,suggestionsContainerOpen:"bg-white py-1 rounded border mt-1 ".concat(p.suggestionsContainerOpen),sectionContainer:"border-bottom py-1 ".concat(p.sectionContainer)},sectionTitleClassName:"ps-2",renderSuggestionsOnInputFocus:e.renderSuggestionsOnInputFocus,onSuggestionDependencies:[e.selections]}))),!!e.sharePermissionsDescription&&a.createElement("span",{className:"px-2 text-secondary text-nowrap"},e.sharePermissionsDescription))}f.defaultProps={renderSuggestionsOnInputFocus:!0}},89589:(e,t,n)=>{n.d(t,{x:()=>l});var a=n(32735),r=n(83345),o=n(28329);const i={emptyState:"bKTf0"};var c="shared.typeaheadEmptyState";function l(e){var t=e.query,n=void 0===t?"":t,l=e.imageUrl,s=(0,o.N)(n,300);return a.createElement("div",{className:"d-flex flex-column align-items-center text-center",onClick:function(e){e.stopPropagation()}},a.createElement("img",{alt:"",role:"presentation",src:l,className:"pb-2 ".concat(i.emptyState)}),a.createElement("h2",{className:"h6"},a.createElement(r.x,{namespace:c,phrase:"noResults",options:{query:s,smartCount:s.length}})))}},97481:(e,t,n)=>{n.d(t,{d:()=>l});var a=n(32735),r=n(11607),o=n(83345);const i={emptyState:"k5mEG"};var c="shared.typeaheadErrorState";function l(e){return a.createElement("div",{className:"d-flex flex-column align-items-center text-center",onClick:function(e){e.stopPropagation()}},a.createElement("img",{alt:"",role:"presentation",src:e.imageUrl,className:"pb-2 ".concat(i.emptyState)}),a.createElement("h2",{className:"h6"},a.createElement(o.x,{namespace:c,phrase:"error"})),a.createElement(r.L,{onClick:function(t){t.stopPropagation(),e.onClickTryAgain()},className:"btn btn-link info-link p-0"},a.createElement(o.x,{namespace:c,phrase:"tryAgain"})))}},36511:(e,t,n)=>{n.d(t,{I:()=>r});var a=n(40424);function r(e){switch(e){case a.R.Pink:return"pink";case a.R.Orange:return"orange";case a.R.Green:return"green";case a.R.Blue:return"blue";case a.R.Purple:return"purple";case a.R.Indigo:return"indigo";default:return"pink"}}}}]);
|
|
2
|
-
//# sourceMappingURL=7855-1c7a0adeab-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7855-1c7a0adeab-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/recipient-item/recipient-item.scss","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/classroom-recipient-item-metadata/ClassroomRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/user-recipient-item-metadata/UserRecipientItemMetadata.tsx","file:///app/packages/libs/shared/src/apps/share/components/recipient-item/RecipientItem.tsx","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/white-avatar.scss","file:///app/packages/libs/shared/src/apps/share/components/white-avatar/WhiteAvatar.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/input-selection.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelectionExpander.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/InputSelection.tsx","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/tokenized-typeahead.scss","file:///app/packages/libs/shared/src/apps/share/components/tokenized-typeahead/TokenizedTypeahead.tsx","file:///app/packages/libs/shared/src/components/typeahead-empty-state/typeahead-empty-state.scss","file:///app/packages/libs/shared/src/components/typeahead-empty-state/TypeaheadEmptyState.tsx","file:///app/packages/libs/shared/src/components/typeahead-error-state/typeahead-error-state.scss","file:///app/packages/libs/shared/src/components/typeahead-error-state/TypeaheadErrorState.tsx","file:///app/packages/libs/shared/src/utils/GroupHelper.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"removeRecipient\":\"mCbMC\",\"recipientItem\":\"kdcb0\",\"showSpinner\":\"xH6Mu\",\"avatarContainer\":\"Zcpg3\",\"recipientDetails\":\"v5EmV\",\"recipientDetailsWithRemoveButton\":\"_V928\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ClassroomGroup } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.classroomGroupRecipientItemMetadata';\n\nfunction getSubheading(classroomGroup: ClassroomGroup): string {\n const userCount = classroomGroup.users?.count ?? 0;\n const classroomName = classroomGroup.classroom?.name;\n\n if (classroomName)\n return LanguageService.getPhrase(namespace, 'subheading', { classroomName, smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomGroupRecipientItemMetadataProps {\n classroomGroup: ClassroomGroup;\n detailsClassName: string;\n}\n\nexport function ClassroomGroupRecipientItemMetadata(props: ClassroomGroupRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle\n svgName={cvSvgLibrary.Group}\n variant={mapColourToBsVariant(props.classroomGroup.metadata?.colour)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroomGroup.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroomGroup)}</p>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.classroomRecipientItemMetadata';\n\nfunction getSubheading(classroom: Classroom): string {\n const userCount = classroom.enrolments?.count;\n\n if (Number.isInteger(userCount))\n return LanguageService.getPhrase(namespace, 'subheading', { smartCount: userCount });\n\n return '';\n}\n\ninterface ClassroomRecipientItemMetadataProps {\n classroom: Classroom;\n detailsClassName: string;\n}\n\nexport function ClassroomRecipientItemMetadata(props: ClassroomRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <IconCircle svgName={cvSvgLibrary.Classrooms} variant='teal' />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.classroom.name}\n </h4>\n <p className='text-secondary m-0'>{getSubheading(props.classroom)}</p>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { BaseObject, User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from '../recipient-item.scss';\n\nconst namespace = 'shared.userRecipientItemMetadata';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getSubText(user: User): string {\n const userType = UserHelper.getUserType(user);\n const role = UserHelper.getUserRole(user);\n\n if (userType === UserGroup.Staff) {\n if (role === UserRole.Admin)\n return getPhrase('admin');\n\n return getPhrase('staff');\n }\n\n const yearGroup = UserHelper.getYearGroup(user);\n\n if (yearGroup?.name)\n return yearGroup.name;\n\n return getPhrase('student');\n}\n\ninterface UserRecipientItemMetadataProps {\n user: User;\n imageCdnUrl: string;\n detailsClassName: string;\n showDisplayName: boolean;\n getSubText?: (user: BaseObject) => string;\n}\n\nexport function UserRecipientItemMetadata(props: UserRecipientItemMetadataProps): JSX.Element {\n return (\n <>\n <div className={`${styles.avatarContainer} d-inline-block`}>\n <Avatar\n imageUrl={props.user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.user.name, props.user.surname)}\n />\n </div>\n\n <div className={props.detailsClassName}>\n <h4 className='font-size-normal fw-normal m-0'>\n {props.showDisplayName\n ? UserHelper.getDisplayName(props.user)\n : UserHelper.getFullName(props.user)\n }\n </h4>\n <p className='text-secondary m-0'>{props.getSubText ? props.getSubText(props.user) : getSubText(props.user)}</p>\n </div>\n </>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nimport { ClassroomGroupRecipientItemMetadata } from './classroom-group-recipient-item-metadata/ClassroomGroupRecipientItemMetadata';\nimport { ClassroomRecipientItemMetadata } from './classroom-recipient-item-metadata/ClassroomRecipientItemMetadata';\nimport { UserRecipientItemMetadata } from './user-recipient-item-metadata/UserRecipientItemMetadata';\n\nimport styles from './recipient-item.scss';\n\nconst namespace = 'share.recipientItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getRemovePhrase(type: MasterType): string {\n switch (type) {\n case (MasterType.User):\n return getPhrase('removeUser');\n case (MasterType.Classroom):\n return getPhrase('removeClassroom');\n case (MasterType.ClassroomGroup):\n return getPhrase('removeGroup');\n }\n return null;\n}\n\ninterface RecipientItemProps<T extends BaseObject = BaseObject> {\n entity: T;\n imageCdnUrl: string;\n showDisplayName: boolean;\n removeRecipient?: (id: string, onError?: () => void) => void;\n getSubText?: (entity: T) => string;\n}\n\nexport function RecipientItem<T extends BaseObject = BaseObject>(props: RecipientItemProps<T>): JSX.Element {\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n let className = `${styles.recipientItem} d-flex`;\n\n if (showSpinner)\n className += ` ${styles.showSpinner}`;\n\n const detailsClassName = `${props.removeRecipient\n ? styles.recipientDetailsWithRemoveButton\n : styles.recipientDetails} d-inline-block ms-2`;\n\n function removeRecipient(): void {\n setShowSpinner(true);\n props.removeRecipient(props.entity.id, () => setShowSpinner(false));\n }\n\n return (\n <div className={className}>\n {(() => {\n if (MasterTypeHelper.isType<User>(props.entity, MasterType.User)) {\n return (\n <UserRecipientItemMetadata\n user={props.entity}\n imageCdnUrl={props.imageCdnUrl}\n detailsClassName={detailsClassName}\n showDisplayName={props.showDisplayName}\n getSubText={props.getSubText}\n />\n );\n }\n\n if (MasterTypeHelper.isType<Classroom>(props.entity, MasterType.Classroom)) {\n return (\n <ClassroomRecipientItemMetadata\n classroom={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n\n if (MasterTypeHelper.isType<ClassroomGroup>(props.entity, MasterType.ClassroomGroup)) {\n return (\n <ClassroomGroupRecipientItemMetadata\n classroomGroup={props.entity}\n detailsClassName={detailsClassName}\n />\n );\n }\n })()}\n\n {FunctionHelper.isFunction(props.removeRecipient) && (\n <div className={`${styles.removeRecipient} d-inline-flex justify-content-center align-items-center`}>\n {showSpinner\n ? <Spinner as='div' size='sm' animation='border' role='status' />\n : (\n <Tooltip title={getRemovePhrase(props.entity.typeId)} spanHack>\n <div\n className='btn-close cursor-pointer'\n role='button'\n aria-label='Close'\n onClick={removeRecipient}\n >\n </div>\n </Tooltip>\n )\n }\n </div>\n )}\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"srrS3\"};","import React from 'react';\n\nimport styles from './white-avatar.scss';\n\ninterface WhiteAvatarProps {\n initials: string;\n imageUrl?: string;\n}\n\nexport function WhiteAvatar(props: WhiteAvatarProps): React.ReactElement {\n const { imageUrl, initials } = props;\n\n const style: React.CSSProperties = {};\n\n if (imageUrl)\n style.backgroundImage = `url('${imageUrl}')`;\n\n return (\n <div className={styles.avatar} style={style}>\n {imageUrl ? <> </> : initials}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"laVU4\",\"selection\":\"vEOCt\",\"expander\":\"d1NHd\",\"iconContainer\":\"rFH4W\",\"icon\":\"BarYz\",\"bubble\":\"HF0E8\",\"spinnerContainer\":\"iKeXW\",\"remove\":\"pyzCM\",\"removeBubble\":\"mgt6Y\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhiteAvatar } from 'libs/shared/apps/share/components/white-avatar/WhiteAvatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './input-selection.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.inputSelection');\n\nfunction mapEntityTypeToForegroundColor(entity: BaseObject): string {\n switch (entity.typeId) {\n case MasterType.Classroom: {\n return 'text-teal-hover';\n }\n\n case MasterType.ClassroomGroup: {\n return `text-${mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour)}-hover`;\n }\n }\n}\n\nfunction getColouredIconClass(selection: Classroom | ClassroomGroup): string {\n let iconClass = `${styles.svgContainer} ${styles.icon}`;\n\n if (selection.typeId === MasterType.Classroom)\n iconClass += ' text-teal';\n else\n iconClass += ` text-${mapColourToBsVariant((selection as ClassroomGroup).metadata?.colour)}`;\n\n return iconClass;\n}\n\ninterface InputSelectionExpanderProps {\n canExpand: boolean;\n hasExpanded: boolean;\n selection: BaseObject;\n onClickExpand?: () => void;\n}\n\nexport function InputSelectionExpander(props: InputSelectionExpanderProps): JSX.Element {\n const colourClass = mapEntityTypeToForegroundColor(props.selection);\n\n const isClassroom = props.selection.typeId === MasterType.Classroom;\n\n if (!props.canExpand) {\n if (!props.selection.typeId || props.selection.typeId === MasterType.User) {\n const user = props.selection as User;\n\n return (\n <div className={styles.svgContainer}>\n <WhiteAvatar\n imageUrl={user.avatar?.url}\n initials={UserHelper.getInitials(props.selection.name, (props.selection as User).surname)}\n />\n </div>\n );\n }\n\n return (\n <Tooltip title={getPhrase(isClassroom ? 'emptyClassroom' : 'emptyGroup')}>\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </Tooltip>\n );\n }\n\n if (!props.hasExpanded) {\n return (\n <>\n {/* Visible on hover */}\n <DivButton\n className={`align-items-center cursor-pointer text-white border border-white rounded-circle ${styles.expander} ${colourClass}`}\n onClick={props.onClickExpand}\n >\n <SvgContainer svgName={cvSvgLibrary.Plus} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n\n {/* Visible when not hovering */}\n <div className={`align-items-center border border-white bg-white ${styles.iconContainer}`}>\n <SvgContainer\n className={getColouredIconClass(props.selection)}\n svgName={isClassroom ? cvSvgLibrary.Classrooms : cvSvgLibrary.Group}\n />\n </div>\n </>\n );\n }\n\n return (\n <div className={`d-flex align-items-center text-white ${styles.spinnerContainer} ${styles.svgContainer}`}>\n <Spinner as='div' size='sm' animation='border' role='status' />\n </div>\n );\n}","import React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { mapColourToBsVariant } from 'libs/shared/utils/GroupHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InputSelectionExpander } from './InputSelectionExpander';\n\nimport styles from './input-selection.scss';\n\n/**\n * TODO: This entire file needs to be refactored to work\n * better with non standard entities. ATM it's also being used\n * in the invite a colleague UI for trials. - Sha\n */\ninterface OtherEntity {\n id: never;\n typeId: never;\n name: string;\n}\n\ntype Entity = Classroom | ClassroomGroup | User | OtherEntity;\n\nfunction mapEntityTypeToBsVariant(entity: Entity): ButtonProps['variant'] {\n if (!entity.typeId)\n return 'dark-blue';\n\n switch (entity.typeId) {\n case MasterType.User: {\n // TODO: Delete this once https://clickview.atlassian.net/browse/INBOX-2151 is addressed\n if (typeof(entity as User).userType === 'number')\n return ((entity as User).userType as any) === 2 ? 'dark-blue' : 'indigo';\n\n if ((entity as User).userType === UserGroup.Learner)\n return 'dark-blue';\n\n return 'indigo';\n }\n\n case MasterType.Classroom: {\n return 'teal';\n }\n\n case MasterType.ClassroomGroup: {\n return mapColourToBsVariant((entity as ClassroomGroup).metadata?.colour);\n }\n }\n}\n\ninterface InputSelectionProps {\n selection: Entity;\n onClickRemove?: (selection: Entity) => void;\n onClickExpand?: (id: string) => void;\n hasStudentExperience?: boolean;\n}\n\nexport function InputSelection(props: InputSelectionProps): JSX.Element {\n const isClassroom = MasterTypeHelper.isType(props.selection, MasterType.Classroom);\n const isClassroomGroup = MasterTypeHelper.isType(props.selection, MasterType.ClassroomGroup);\n const isExpandable = props.onClickExpand && (isClassroom || isClassroomGroup);\n\n /**\n * We only know that there are no members if props.selections.users.count exists\n * and is 0 as it is set to 0 in <MainShare /> after fetching the users.\n */\n const hasMembers = !!(\n (props.selection as ClassroomGroup).users ||\n (props.selection as Classroom).enrolments\n )?.count;\n const hasFetchedMembers = !!(props.selection as Classroom | ClassroomGroup).users?.data?.length;\n\n const [ hasExpanded, setHasExpanded ] = React.useState(false);\n const [ canExpand, setCanExpand ] = React.useState(isExpandable && hasMembers);\n\n React.useEffect(() => {\n setCanExpand(isExpandable && hasMembers);\n }, [ isExpandable, hasMembers ]);\n\n function onClickExpand(): void {\n setHasExpanded(true);\n props.onClickExpand(props.selection.id);\n }\n\n if (hasFetchedMembers) {\n const selection: Classroom | ClassroomGroup = props.selection as Classroom | ClassroomGroup;\n\n const colourVariant = mapEntityTypeToBsVariant(props.selection);\n\n return (\n <div className={`d-flex align-items-center flex-wrap me-1 mt-1 pb-1 ps-1 pe-4 position-relative border-${colourVariant} text-${colourVariant} ${styles.bubble}`}>\n {selection.users.data.map(user => (\n <InputToken\n key={`${user.id}:${props.selection.id}`}\n selection={user}\n colourVariant={colourVariant}\n hasStudentExperience={props.hasStudentExperience}\n />\n ))}\n\n <DivButton\n className={`cursor-pointer position-absolute text-${colourVariant} ${styles.removeBubble}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n </div>\n );\n }\n\n return (\n <InputToken\n selection={props.selection}\n canExpand={canExpand}\n hasExpanded={hasExpanded}\n onClickExpand={onClickExpand}\n onClickRemove={props.onClickRemove}\n colourVariant={mapEntityTypeToBsVariant(props.selection)}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n}\n\ninterface InputTokenProps<T extends HashObject> {\n selection: T | Entity;\n colourVariant: string;\n canExpand?: boolean;\n hasExpanded?: boolean;\n onClickExpand?: () => void;\n onClickRemove?: (selection: Entity) => void;\n hasStudentExperience?: boolean;\n hideExpander?: boolean;\n}\n\nexport function InputToken<T extends HashObject = Entity>(props: InputTokenProps<T>): JSX.Element {\n const colourVariant = props.colourVariant || mapEntityTypeToBsVariant(props.selection);\n\n let selectionName = props.selection.name;\n\n if (props.selection.typeId === MasterType.User) {\n selectionName = props.hasStudentExperience\n ? UserHelper.getDisplayName(props.selection as User)\n : UserHelper.getFullName(props.selection as User);\n }\n\n return (\n <div className={`${styles.selection} bg-${colourVariant} rounded-pill text-${colourVariant} d-flex align-items-center me-1 mt-1 overflow-hidden`}>\n {!props.hideExpander && (\n <InputSelectionExpander\n canExpand={props.canExpand}\n hasExpanded={props.hasExpanded}\n onClickExpand={props.onClickExpand}\n selection={props.selection}\n />\n )}\n\n <span className='mx-1 text-white text-truncate'>{selectionName}</span>\n\n {FunctionHelper.isFunction(props.onClickRemove) && (\n <DivButton\n className={`d-flex align-items-center cursor-pointer align-self-stretch text-white ${styles.remove}`}\n onClick={() => props.onClickRemove(props.selection)}\n >\n <SvgContainer svgName={cvSvgLibrary.Close} className={`d-flex align-items-center ${styles.svgContainer}`} />\n </DivButton>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"Dc3kX\",\"suggestionsContainerOpen\":\"c5t3e\",\"selectionContainer\":\"kFjoN\",\"sectionContainer\":\"mLrE3\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { RecipientItem } from 'libs/shared/apps/share/components/recipient-item/RecipientItem';\nimport { SearchBar, SearchBarProps } from 'libs/shared/components/search-bar/SearchBar';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TypeaheadEmptyState } from 'libs/shared/components/typeahead-empty-state/TypeaheadEmptyState';\nimport { TypeaheadErrorState } from 'libs/shared/components/typeahead-error-state/TypeaheadErrorState';\nimport { BaseObject } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { InputSelection } from './InputSelection';\n\nimport styles from './tokenized-typeahead.scss';\n\nconst namespace = 'shared.tokenizedTypeahead';\n\nexport const TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT = 10;\n\ninterface TokenizedTypeaheadProps<T extends BaseObject = BaseObject> extends SearchBarProps<T> {\n selections: T[];\n removeSelection: (selection: T) => void;\n emptyStateImageUrl: string;\n errorStateImageUrl: string;\n hasStudentExperience?: boolean;\n getInputTokenComponent?: (selection: T) => JSX.Element;\n imageCdnUrl?: string;\n className?: string;\n hideIcon?: boolean;\n\n /**\n * If this is passed in groups and classrooms will have the option to expand\n * otherwise they will appear as normal without the + icon\n */\n fetchSelectionMembers?: (id: string) => void;\n sharePermissionsDescription?: string;\n}\n\nTokenizedTypeahead.defaultProps = {\n renderSuggestionsOnInputFocus: true\n};\n\n/**\n * This component extends the functionality of the `SearchBar` component by\n * displaying a list of selections as tokens inside the search bar.\n * \n * Any component using this component is responsible for managing the state of\n * these tokens (selections). See `MainShare.tsx` for an example.\n */\nexport function TokenizedTypeahead<T extends BaseObject = BaseObject>(props: TokenizedTypeaheadProps<T>): JSX.Element {\n return (\n <div className={`form-control h-auto d-flex align-items-top position-relative ${props.hideIcon ? '' : 'py-1 px-0'} ${props.className}`}>\n {!props.hideIcon && <SvgContainer className='svg-container m-1' svgName={cvSvgLibrary.Search} />}\n\n <div className={`${styles.selectionContainer} d-flex flex-wrap align-items-center mt-n1`}>\n {props.selections.map(s => {\n if (props.getInputTokenComponent)\n return props.getInputTokenComponent(s);\n\n return (\n <InputSelection\n key={s.id}\n selection={s}\n onClickRemove={props.removeSelection}\n onClickExpand={props.fetchSelectionMembers}\n hasStudentExperience={props.hasStudentExperience}\n />\n );\n })}\n\n <SearchBar\n {...props}\n onBackspace={() => {\n if (!props.selections.length)\n return;\n\n props.removeSelection(ArrayHelper.last(props.selections));\n }}\n recentSearchHeading={props.recentSearchHeading || LanguageService.getPhrase(namespace, 'recentSearchHeading')}\n placeholder={!props.selections?.length ? props.placeholder : ' '}\n searchIconPlacement={false}\n clearQueryOnSelect\n getSuggestionComponent={suggestion => {\n if (props.getSuggestionComponent)\n return props.getSuggestionComponent(suggestion);\n\n return (\n <RecipientItem\n entity={suggestion}\n imageCdnUrl={props.imageCdnUrl}\n showDisplayName={props.hasStudentExperience}\n />\n );\n }}\n getEmptyStateComponent={query => <TypeaheadEmptyState query={query} imageUrl={props.emptyStateImageUrl} />}\n getErrorStateComponent={onClickTryAgain =>\n <TypeaheadErrorState imageUrl={props.errorStateImageUrl} onClickTryAgain={onClickTryAgain} />\n }\n theme={{\n container: styles.container,\n suggestionsContainerOpen: `bg-white py-1 rounded border mt-1 ${styles.suggestionsContainerOpen}`,\n sectionContainer: `border-bottom py-1 ${styles.sectionContainer}`\n }}\n sectionTitleClassName='ps-2'\n renderSuggestionsOnInputFocus={props.renderSuggestionsOnInputFocus}\n onSuggestionDependencies={[props.selections]}\n />\n </div>\n\n {!!props.sharePermissionsDescription &&\n <span className='px-2 text-secondary text-nowrap'>{props.sharePermissionsDescription}</span>\n }\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"bKTf0\"};","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useDebounce } from 'libs/shared/hooks/UseDebounce';\n\nimport styles from './typeahead-empty-state.scss';\n\nconst namespace = 'shared.typeaheadEmptyState';\n\ninterface TypeaheadEmptyStateProps {\n query: string;\n imageUrl: string;\n}\n\nexport function TypeaheadEmptyState({ query = '', imageUrl }: TypeaheadEmptyStateProps): JSX.Element {\n function onClick(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n const debouncedQuery = useDebounce(query, 300);\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClick}>\n <img\n alt=''\n role='presentation'\n src={imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text\n namespace={namespace}\n phrase='noResults'\n options={{ query: debouncedQuery, smartCount: debouncedQuery.length }}\n />\n </h2>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"emptyState\":\"k5mEG\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './typeahead-error-state.scss';\n\nconst namespace = 'shared.typeaheadErrorState';\n\ninterface TypeaheadErrorStateProps {\n imageUrl: string;\n onClickTryAgain: () => void;\n}\n\nexport function TypeaheadErrorState(props: TypeaheadErrorStateProps): JSX.Element {\n function onClickComponent(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n }\n\n function onClickTryAgain(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n \n props.onClickTryAgain();\n }\n\n return (\n <div className='d-flex flex-column align-items-center text-center' onClick={onClickComponent}>\n <img\n alt=''\n role='presentation'\n src={props.imageUrl}\n className={`pb-2 ${styles.emptyState}`}\n />\n <h2 className='h6'>\n <Text namespace={namespace} phrase='error' />\n </h2>\n <DivButton onClick={onClickTryAgain} className='btn btn-link info-link p-0'>\n <Text namespace={namespace} phrase='tryAgain' />\n </DivButton>\n </div>\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"],"names":["namespace","ClassroomGroupRecipientItemMetadata","props","className","IconCircle","svgName","variant","classroomGroup","metadata","colour","detailsClassName","name","userCount","users","count","classroomName","classroom","LanguageService","smartCount","getSubheading","ClassroomRecipientItemMetadata","enrolments","Number","isInteger","getPhrase","UserRecipientItemMetadata","Avatar","imageUrl","user","avatar","url","imageCdnUrl","initials","UserHelper","surname","showDisplayName","getSubText","userType","role","UserGroup","UserRole","yearGroup","getRemovePhrase","type","MasterType","RecipientItem","showSpinner","setShowSpinner","removeRecipient","MasterTypeHelper","entity","FunctionHelper","Spinner","as","size","animation","Tooltip","title","typeId","spanHack","onClick","id","WhiteAvatar","style","backgroundImage","getColouredIconClass","selection","iconClass","InputSelectionExpander","colourClass","mapEntityTypeToForegroundColor","isClassroom","canExpand","SvgContainer","hasExpanded","DivButton","onClickExpand","mapEntityTypeToBsVariant","InputSelection","isClassroomGroup","isExpandable","hasMembers","hasFetchedMembers","data","length","setHasExpanded","setCanExpand","colourVariant","map","InputToken","key","hasStudentExperience","onClickRemove","selectionName","hideExpander","TOKENIZED_TYPEAHEAD_SUGGESTIONS_LIMIT","TokenizedTypeahead","hideIcon","selections","s","getInputTokenComponent","removeSelection","fetchSelectionMembers","SearchBar","onBackspace","ArrayHelper","recentSearchHeading","placeholder","searchIconPlacement","clearQueryOnSelect","getSuggestionComponent","suggestion","getEmptyStateComponent","query","TypeaheadEmptyState","emptyStateImageUrl","getErrorStateComponent","onClickTryAgain","TypeaheadErrorState","errorStateImageUrl","theme","container","suggestionsContainerOpen","sectionContainer","sectionTitleClassName","renderSuggestionsOnInputFocus","onSuggestionDependencies","sharePermissionsDescription","defaultProps","debouncedQuery","e","stopPropagation","alt","src","Text","phrase","options","mapColourToBsVariant","groupColour"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8243],{12699:(e,a,t)=>{t.r(a),t.d(a,{GenerateJoinLinkView:()=>F});var n=t(32735),r=t(98269),l=t(70680),s=t(23481),c=t(97395),i=t(81886),m=t(20354),o=t(74231),d=t(66903),u=t(83345),E=t(16714),p=t(39151),N=t(22902),g=t(37802),v=t(40841),f=t(99742),h=t(14070),S=t(97291),k=t(88630),C=t(23232),b="classrooms.joinLinkEmptyState";function L(){return n.createElement(u.D.Provider,{value:b},n.createElement(C.u,null,n.createElement(C.u.Image,{src:f.W.EmptyStates.Classrooms.NO_STUDENTS_IN_CLASSROOM,size:"small"}),n.createElement(C.u.Heading,null,n.createElement(u.x,{phrase:"heading"}))))}var T=t(20789),x=t(64818);const w={avatarContainer:"NSuhj"};function I(e){var a;return n.createElement("div",{className:"col-3 mb-3"},n.createElement("div",{className:"border border-secondary rounded-3 d-flex p-2 align-items-center"},n.createElement("div",{className:"".concat(w.avatarContainer," flex-shrink-0")},n.createElement(T.q,{imageUrl:null===(a=e.user.avatar)||void 0===a?void 0:a.url,imageCdnUrl:e.imageCdnUrl,initials:x.l.getInitials(e.user.name,e.user.surname)})),n.createElement("div",{className:"text-truncate ms-2"},e.user.name," ",e.user.surname)))}const O={orderedListWithBackground:"Qp_SN",number:"inFpq",joinLinkCode:"ZzTdG",horizontalLineWithText:"GwGiF",primary:"S4GPx"};var _="classrooms.generateJoinLink",U=s.T.encloseNamespace(_),A=15e3;function F(e){var a,t,s,C=(0,l.I0)(),b=(0,(0,N.T)().hasPermissions)(E.C.ManageIntegrations),T=m.a.useBasicFetch(k.F.generateJoinLink(e.classroomId)),x=k.F.getClassroomStudents(e.classroomId),w=m.a.useBasicFetch(x),F=m.a.useBasicFetch(p.L.config()),y=(0,g.r)(null),G=y.shareToGoogleClassroom,W=y.shareToMicrosoftTeams,M=y.isLoadingSettings,R="list"===e.source;return n.useEffect((function(){var e=window.setInterval((function(){m.a.fetch(C,x)}),A);return function(){return window.clearInterval(e)}}),[]),T.data&&w.data&&F.data&&!M?n.createElement(u.D.Provider,{value:_},n.createElement("div",{className:"d-flex px-3 "},n.createElement("h1",{className:"h3 mb-3 flex-fill"},n.createElement(u.x,{phrase:"title"})),n.createElement("div",{className:"flex-fill text-end"},n.createElement(r.Z,{variant:"dark",onClick:function(){R?i.Q.C$.trigger({application:S.O.CLASSROOMS,action:h.e.Classrooms.HOME}):i.Q.C$.trigger({application:S.O.CLASSROOMS,action:h.e.Classrooms.CLASSROOM_STUDENTS,args:[e.classroomId]})}},U(R?"backToList":"backToClassroom")))),n.createElement("div",{className:"px-3"},n.createElement("div",{className:"row mt-1"},n.createElement("div",{className:"col-md-6 col-12"},n.createElement("ol",{className:"mb-4 ".concat(O.orderedListWithBackground)},n.createElement("li",{className:"mb-2"},n.createElement("span",{className:O.number},"1"),U("goToUrl"),n.createElement("span",{className:O.primary},(s=new URL(F.data.primaryUrl).hostname,c._.safeUrlConcat(s,"/join")))),n.createElement("li",null,n.createElement("span",{className:O.number},"2"),U("enterCode"),n.createElement("div",{className:"pt-3 pb-4 ms-4 mt-2 border rounded-3 text-center overflow-hidden fw-semibold ".concat(O.joinLinkCode)},T.data.code))),n.createElement("h2",{className:"border-bottom text-center w-100 mb-4 ".concat(O.horizontalLineWithText)},n.createElement("span",{className:"px-2 fw-normal"},U("or"))),n.createElement("ol",{className:O.orderedListWithBackground},n.createElement("li",{className:"mb-3"},n.createElement("span",{className:O.number},"1"),U("copyLinkAndShare"),n.createElement("div",{className:"d-flex flex-column gap-2 mt-2 ms-4"},n.createElement(d.k,{value:T.data.link}),n.createElement(o.T,{integrations:(a=G,t=W,v._.getShareIntegrations(a,t).filter((function(e){return e.enabled})).map((function(e){return e.id}))),url:T.data.link,appLink:b?{application:S.O.SETTINGS,action:h.e.Settings.INTEGRATIONS}:{application:S.O.DEFAULT,action:h.e.Default.INTEGRATIONS_INFO}}))))),n.createElement("div",{className:"col-md-6 col-12 text-center"},n.createElement("img",{src:f.W.AddStudents.JOIN_LINK,className:"rounded-3 w-75 box-shadow img-fluid my-3"}))),n.createElement("hr",null),n.createElement("div",null,U("studentsWillAppear"),!w.data.data.length&&n.createElement(L,null),n.createElement("div",{className:"row mt-3"},w.data.data.map((function(e){return n.createElement(I,{user:e,key:e.id,imageCdnUrl:F.data.imageCdnUrl})})))))):n.createElement(n.Fragment,null)}}}]);
|
|
2
|
-
//# sourceMappingURL=8243-5d673b616d-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8243-5d673b616d-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/classrooms/views/generate-join-link/empty-state/JoinLinkEmptyState.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/generate-join-link/student-pill/student-pill.scss","file:///app/packages/projects/lite/src/apps/classrooms/views/generate-join-link/student-pill/StudentPill.tsx","file:///app/packages/projects/lite/src/apps/classrooms/views/generate-join-link/generate-join-link.scss","file:///app/packages/projects/lite/src/apps/classrooms/views/generate-join-link/GenerateJoinLinkView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'classrooms.joinLinkEmptyState';\n\nexport function JoinLinkEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Classrooms.NO_STUDENTS_IN_CLASSROOM} size='small'/>\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"NSuhj\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './student-pill.scss';\n\ninterface StudentPillProps {\n user: User;\n imageCdnUrl: string;\n}\n\nexport function StudentPill(props: StudentPillProps): React.ReactElement {\n return (\n <div className='col-3 mb-3'>\n <div className='border border-secondary rounded-3 d-flex p-2 align-items-center'>\n <div className={`${styles.avatarContainer} flex-shrink-0`}>\n <Avatar\n imageUrl={props.user.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.user.name, props.user.surname)}\n />\n </div>\n <div className='text-truncate ms-2'>{props.user.name} {props.user.surname}</div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"orderedListWithBackground\":\"Qp_SN\",\"number\":\"inFpq\",\"joinLinkCode\":\"ZzTdG\",\"horizontalLineWithText\":\"GwGiF\",\"primary\":\"S4GPx\"};","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareIntegrations } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrations';\nimport { CopyInput } from 'libs/shared/components/copy-input/CopyInput';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, UserCollection } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { GenerateClassroomLinkResponse } from 'apps/classrooms/interfaces/GenerateClassroomLinkResponse';\nimport { JoinLinkEmptyState } from 'apps/classrooms/views/generate-join-link/empty-state/JoinLinkEmptyState';\nimport { StudentPill } from 'apps/classrooms/views/generate-join-link/student-pill/StudentPill';\n\nimport styles from './generate-join-link.scss';\n\nconst namespace = 'classrooms.generateJoinLink';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst POLLING_INTERVAL = 15000; // 15s\n\nexport interface GenerateJoinLinkViewQueryParams {\n source?: 'list';\n}\n\ninterface GenerateJoinLinkViewProps extends GenerateJoinLinkViewQueryParams{\n classroomId: string;\n}\n\nexport function GenerateJoinLinkView(props: GenerateJoinLinkViewProps): React.ReactElement {\n const dispatch = useDispatch();\n\n const { hasPermissions } = usePermissions();\n const hasManageIntegrationsPermission = hasPermissions(PermissionName.ManageIntegrations);\n\n const joinLink = Flight.useBasicFetch<GenerateClassroomLinkResponse>(\n ClassroomRequests.generateJoinLink(props.classroomId)\n );\n\n const getClassroomStudentsRequest = ClassroomRequests.getClassroomStudents(props.classroomId);\n const students = Flight.useBasicFetch<UserCollection>(getClassroomStudentsRequest);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const { shareToGoogleClassroom, shareToMicrosoftTeams, isLoadingSettings } = useSettings(null);\n\n const isFromList = props.source === 'list';\n\n function backToClassroom(): void {\n if (isFromList) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.HOME\n });\n return;\n }\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLASSROOMS,\n // TODO: Change to classroom overview\n action: Actions.Classrooms.CLASSROOM_STUDENTS,\n args: [props.classroomId]\n });\n }\n \n function getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n }\n\n React.useEffect(() => {\n const interval = window.setInterval(() => {\n Flight.fetch(dispatch, getClassroomStudentsRequest);\n }, POLLING_INTERVAL);\n \n return () => window.clearInterval(interval);\n }, []);\n\n function getJoinUrl(): string {\n const url = new URL(config.data.primaryUrl).hostname;\n\n return UrlHelper.safeUrlConcat(url, '/join');\n }\n\n if (!joinLink.data || !students.data || !config.data || isLoadingSettings)\n return <></>;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='d-flex px-3 '>\n <h1 className='h3 mb-3 flex-fill'><Text phrase='title' /></h1>\n <div className='flex-fill text-end'>\n <Button variant='dark' onClick={backToClassroom}>\n {getPhrase(isFromList ? 'backToList' : 'backToClassroom')}\n </Button>\n </div>\n </div>\n <div className='px-3'>\n <div className='row mt-1'>\n <div className='col-md-6 col-12'>\n <ol className={`mb-4 ${styles.orderedListWithBackground}`}>\n <li className='mb-2'>\n <span className={styles.number}>1</span>\n {getPhrase('goToUrl')}\n <span className={styles.primary}>{getJoinUrl()}</span>\n </li>\n <li>\n <span className={styles.number}>2</span>\n {getPhrase('enterCode')}\n <div className={`pt-3 pb-4 ms-4 mt-2 border rounded-3 text-center overflow-hidden fw-semibold ${styles.joinLinkCode}`}>\n {joinLink.data.code}\n </div>\n </li>\n </ol>\n <h2 className={`border-bottom text-center w-100 mb-4 ${styles.horizontalLineWithText}`}>\n <span className='px-2 fw-normal'>{getPhrase('or')}</span>\n </h2>\n <ol className={styles.orderedListWithBackground}>\n <li className='mb-3'>\n <span className={styles.number}>1</span>\n {getPhrase('copyLinkAndShare')}\n <div className='d-flex flex-column gap-2 mt-2 ms-4'>\n <CopyInput value={joinLink.data.link} />\n <ShareIntegrations\n integrations={getEnabledIntegrations(shareToGoogleClassroom, shareToMicrosoftTeams)}\n url={joinLink.data.link}\n appLink={hasManageIntegrationsPermission ? {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.INTEGRATIONS\n } : {\n application: AppChannels.DEFAULT,\n action: Actions.Default.INTEGRATIONS_INFO\n }}\n />\n </div>\n </li>\n </ol>\n </div>\n <div className='col-md-6 col-12 text-center'>\n <img src={ImageUrls.AddStudents.JOIN_LINK} className='rounded-3 w-75 box-shadow img-fluid my-3' />\n </div>\n </div>\n <hr />\n <div>\n {getPhrase('studentsWillAppear')}\n {!students.data.data.length && <JoinLinkEmptyState />}\n <div className='row mt-3'>\n {students.data.data.map(s => <StudentPill user={s} key={s.id} imageCdnUrl={config.data.imageCdnUrl} />)}\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}"],"names":["namespace","JoinLinkEmptyState","value","EmptyState","src","ImageUrls","size","Text","phrase","StudentPill","props","className","Avatar","imageUrl","user","avatar","url","imageCdnUrl","initials","UserHelper","name","surname","getPhrase","LanguageService","POLLING_INTERVAL","GenerateJoinLinkView","googleClassroomSetting","msftTeamsSetting","dispatch","hasManageIntegrationsPermission","hasPermissions","usePermissions","PermissionName","joinLink","ClassroomRequests","classroomId","getClassroomStudentsRequest","students","config","ConfigRequests","useSettings","shareToGoogleClassroom","shareToMicrosoftTeams","isLoadingSettings","isFromList","source","interval","window","setInterval","clearInterval","data","Button","variant","onClick","application","action","args","URL","primaryUrl","hostname","UrlHelper","code","CopyInput","link","ShareIntegrations","integrations","IntegrationHelper","filter","i","enabled","map","id","appLink","length","s","key"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[950],{30357:(e,t,r)=>{r.d(t,{V:()=>c});var n=r(32735),a=r(34509),i=r(89965),l=r(83345),o="share.embedSize";function c(e){var t=e.autoplay,r=e.setAutoplay,c=e.videoSize,s=e.setVideoSize,u=e.videoSizes;return n.createElement("div",{className:"d-flex align-items-center"},!!u.length&&n.createElement(n.Fragment,null,n.createElement("div",{className:"me-1"},n.createElement(l.x,{namespace:o,phrase:"videoSize"})),n.createElement("div",{className:"pe-3"},n.createElement(a.Z,null,n.createElement(a.Z.Toggle,{id:"embed-resolution",variant:"outline-dark"},c.label),n.createElement(a.Z.Menu,null,u.map((function(e){return n.createElement(a.Z.Item,{key:"".concat(e.width,"x").concat(e.height),onClick:function(){return s(e)}},e.label)})))))),n.createElement("div",{className:"me-2"},n.createElement(l.x,{namespace:o,phrase:"autoplay"})),n.createElement(i.X,{id:"autoplay-checkbox",checked:t,onChange:function(){return r(!t)}}))}},3185:(e,t,r)=>{r.d(t,{s:()=>g});var n=r(32735),a=r(23481),i=r(110),l=r(26361),o=r(31908);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var s=a.T.encloseNamespace("share.shareLinkInfo");function u(e,t,r){var n;if(!e||!t)return null;if(r)return s("justMySchoolTeachers");if(!o.M.isVideoType(e))return s("collectionRating");var a=l.l.getWeightedRestriction(null===(n=e._restrictions)||void 0===n?void 0:n.value);if(a&&!a.yearGroup)return s("onlyAdmins");var i,u,m,d=o.M.getRating(e),f=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,l=!0,o=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return l=e.done,e},e:function(e){o=!0,i=e},f:function(){try{l||null==r.return||r.return()}finally{if(o)throw i}}}}(t);try{for(f.s();!(m=f.n()).done;){var v=m.value;(!i||v.value>i.value)&&(i=v),a&&v.value<=a.yearGroup||d&&v.rating.value<d.value||(!u||v.value<u.value)&&(u=v)}}catch(e){f.e(e)}finally{f.f()}return u?u.value===i.value?s("maxYearGroup",{yearGroup:i.name}):s("yearGroupRange",{yearGroup:u.name}):s("onlyStaff")}var m=r(83914),d=r(4594),f=r(49080),v=r(35223);function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(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 y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var h=a.T.encloseNamespace("share.shareLinkInfo"),b=function(e){var t=e.linkExpireDate,r=e.isPasswordProtected,n=e.status;if(!t&&!r)return function(e){var t=e.entityTypeId,r=e.privacy,n=e.hasStudentExp,a=e.entity,i=e.yearGroups;if(t===d.E.Topic||t===d.E.Series)return{icon:v.vn.VisibleOn,text:h(n?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(r))switch(r.privacy){case"public":return{icon:v.vn.VisibleOn,text:h("publicDescription")};case"protected":return r.overrideRestrictions?{icon:v.vn.VisibleOn,text:h("clickViewOnly")}:{icon:v.vn.Lock,text:u(a,i,n)};case"just_my_customer":return r.overrideRestrictions?{icon:v.vn.Lock,text:h(n?"justMySchoolTeachers":"justMySchoolDescription")}:{icon:v.vn.Lock,text:u(a,i,n)};case"restricted":case"private":return{icon:v.vn.Lock,text:h("privateDescription")};default:return{}}}(e);if(!t)return{icon:v.vn.Lock,text:h("password")};var a=i.O.isToday(t),l=i.O.diffBetween(t,new Date,"day");if(!r){var o=a?h("expiryToday"):h("expiry",{days:l});return n===f.F.Expired&&(o=h("expired")),{icon:v.vn.Timer,text:o}}var c=a?h("passwordExpiryToday"):h("passwordExpiry",{days:l});return n===f.F.Expired&&(c=h("passwordExpired")),{icon:v.vn.Lock,text:c}};function E(e){var t=e.active,r=e.title,a=e.description,i=e.onClick;return n.createElement("li",{className:"".concat(t?"bg-light-blue":""," dropdown-item d-flex align-items-center justify-content-between"),onClick:t?null:i},n.createElement("div",{className:"me-2"},n.createElement("p",{className:"fw-semibold mb-1"},r),n.createElement("p",{className:"font-size-sm mb-0"},a)),t&&n.createElement(m.x,{svgName:v.vn.Check}))}function g(e){var t=p(n.useState(!1),2),r=t[0],a=t[1],i=p(n.useState(null),2),l=i[0],o=i[1],c=b(e),s=c.icon,d=c.text;n.useEffect((function(){a(e.privacy.canManageAccess),o(e.privacy.privacy)}),[e.privacy]);var f=r?"just_my_customer":"protected",v=!e.isPasswordProtected&&!e.linkExpireDate&&e.shareOverrideRestrictions&&!e.hasStudentExp;return n.createElement("div",{className:"d-flex align-items-center"},v?n.createElement("div",{className:"btn-group"},n.createElement("button",{className:"btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover","data-bs-toggle":"dropdown"},n.createElement(m.x,{svgName:s,className:"svg-container me-1"}),n.createElement("span",{className:"me-1"},d)),n.createElement("ul",{className:"dropdown-menu cursor-pointer w-100"},r&&n.createElement(E,{active:"public"===l,title:h("public"),description:h("publicDescription"),onClick:function(){return e.onClickSavePrivacy("public",!1)}}),n.createElement(E,{active:l===f&&e.privacy.overrideRestrictions,title:h("justMySchool"),description:h(r?"justMySchoolDescription":"clickViewOnly"),onClick:function(){return e.onClickSavePrivacy(f,!0)}}),n.createElement(E,{active:l===f&&!e.privacy.overrideRestrictions,title:h("respectRatings"),description:u(e.entity,e.yearGroups,e.hasStudentExp),onClick:function(){return e.onClickSavePrivacy(f,!1)}}),n.createElement(E,{active:"private"===l,title:h("private"),description:h("privateDescription"),onClick:function(){return e.onClickSavePrivacy("private",!1)}}))):n.createElement(n.Fragment,null,n.createElement(m.x,{svgName:s,className:"svg-container me-1"}),n.createElement("span",null,d)))}},61193:(e,t,r)=>{r.d(t,{d:()=>i});var n=r(5173),a=r(23481),i=(0,n.Ry)().shape({removePassword:(0,n.O7)(),resourceId:(0,n.Z_)(),linkExpireDate:(0,n.Z_)().nullable(),password:(0,n.Z_)().test({name:"password-length",exclusive:!1,params:{},message:a.T.getPhrase("share.validation","minPassword"),test:function(e){return!((null==e?void 0:e.length)&&e.length<3)}}).default("")})},17752:(e,t,r)=>{r.d(t,{G:()=>T});var n=r(32735),a=r(92802),i=r(23481),l=30;function o(e){if(!e)return null;var t=new Date;return t.setDate(t.getDate()+l),t.toISOString()}var c=r(83345),s=r(83523),u=r(76177),m="shared.linkExpiry",d=i.T.encloseNamespace(m);function f(e){var t=(0,a.u6)();return n.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},n.createElement("div",null,n.createElement("label",{className:"m-0",htmlFor:""},n.createElement(c.x,{namespace:m,phrase:"linkExpirationHeading"})),n.createElement("p",{className:"m-0"},n.createElement(c.x,{namespace:m,phrase:"linkExpirationInfo"}))),n.createElement(u.u,{title:d("passwordProtected"),disable:!e.passwordProtectLink,spanHack:!0,trigger:"hover"},n.createElement(s.Z,{onClick:function(){e.passwordProtectLink||t.setFieldValue("linkExpireDate",o(!t.values.linkExpireDate))},on:!!t.values.linkExpireDate,disabled:e.passwordProtectLink,showStateWhenDisabled:!0})))}var v=r(80130),p=r(11607),y=r(83914),h=r(35223);const b={passwordButton:"W9Jl8"};function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var g=i.T.encloseNamespace("share.setPasswordInput");function k(e){var t,r,i,l=(r=n.useState(!1),i=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(r,i)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(e,t):void 0}}(r,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=l[0],c=l[1],s=null===(t=(0,a.u6)().errors)||void 0===t?void 0:t.password;return n.createElement(n.Fragment,null,n.createElement("input",{className:"form-control ".concat(s?"is-invalid":""),value:e.value,onChange:function(t){e.canEdit&&e.onChange(t.target.value)},type:o?"text":"password",placeholder:e.placeholder||g("passwordPlaceholder"),readOnly:!e.canEdit}),!!s&&n.createElement(v.Z.Control.Feedback,{type:"invalid"},s),!!e.canEdit&&n.createElement(p.L,{className:b.passwordButton,onClick:function(){return c(!o)}},n.createElement(y.x,{svgName:o?h.vn.VisibleOn:h.vn.VisibleOff,title:g(o?"hidePassword":"revealPassword"),tooltipPlacement:"top"})),!e.canEdit&&!!e.canReset&&!!e.onReset&&n.createElement(p.L,{className:b.passwordButton,onClick:e.onReset},n.createElement(y.x,{svgName:h.vn.Close,title:g("resetPassword"),tooltipPlacement:"top"})))}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var S="shared.linkPassword",x="********";function O(e){var t,r,i,l=e.passwordProtectLink,u=e.setPasswordProtectLink,m=(0,a.u6)(),d=(r=n.useState(!!(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)),i=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(r,i)||function(e,t){if(e){if("string"==typeof e)return w(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?w(e,t):void 0}}(r,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=d[0],v=d[1];return n.createElement("div",{className:"pb-3"},n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("div",null,n.createElement("label",{className:"m-0",htmlFor:""},n.createElement(c.x,{namespace:S,phrase:"passwordProtectHeading"})),n.createElement("p",{className:"m-0"},n.createElement(c.x,{namespace:S,phrase:"passwordProtectInfo"}))),n.createElement(s.Z,{onClick:function(){var t;(null===(t=e.shareLink)||void 0===t?void 0:t.isPasswordProtected)&&m.setFieldValue("removePassword",l),m.setFieldValue("password",""),u(!l),m.setFieldValue("linkExpireDate",o(!l))},on:l})),l&&n.createElement("div",{className:"position-relative mt-2"},n.createElement(k,{value:f?x:m.values.password,onChange:function(e){m.setFieldValue("password",e)},onReset:function(){m.setFieldValue("password",""),m.setFieldValue("removePassword",!0),v(!1)},canEdit:!f,canReset:!0})))}var C=r(61193),P=r(82644),j=r(13876),A=r(16714),N=r(22902);function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var I="shared.share",V=i.T.encloseNamespace(I);function D(e){var t,r,i=(0,N.T)().hasPermissions,l=(t=n.useState(!!e.shareLink.isPasswordProtected),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?L(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=l[0],s=l[1];return n.createElement(a.l0,null,e.onClickDeleteLink&&n.createElement("div",{className:"d-flex justify-content-between align-items-center pb-3"},n.createElement("div",null,n.createElement("label",{className:"mb-0"},n.createElement(c.x,{namespace:I,phrase:"deleteLinkLabel"})),n.createElement("p",{className:"mb-0"},n.createElement(c.x,{namespace:I,phrase:"deleteLinkDescription"}))),n.createElement(p.L,{onClick:e.onClickDeleteLink,className:"info-link justify-self-start"},n.createElement(c.x,{phrase:"deleteLink"}))),i(A.C.ManageShareLinkSettings)&&n.createElement(n.Fragment,null,n.createElement(f,{passwordProtectLink:o}),e.shareOverrideRestrictions&&n.createElement(O,{shareLink:e.shareLink,passwordProtectLink:o,setPasswordProtectLink:s})),n.createElement(j.u,null,n.createElement(j.u.Cancel,{onClick:e.onClickCancel,text:V("back"),variant:"link"}),n.createElement(j.u.Submit,{variant:"dark"})))}function T(e){var t={password:"",removePassword:!1,linkExpireDate:e.shareLink.linkExpireDate,overrideRestrictions:e.shareLink.overrideRestrictions};return n.createElement(n.Fragment,null,n.createElement(P.n,{initialValues:t,onSubmit:e.onClickSaveLink,castInitialValues:!1,validationSchema:C.d},n.createElement(D,{entity:e.entity,entityType:e.entityType,config:e.config,shareLink:e.shareLink,entityId:e.entityId,onClickCancel:e.onClickCancel,analyticsOptions:e.analyticsOptions,privacy:e.privacy,onClickDeleteLink:e.onClickDeleteLink,hasStudentExp:e.hasStudentExp,shareOverrideRestrictions:e.shareOverrideRestrictions})))}},82644:(e,t,r)=>{r.d(t,{b:()=>u,n:()=>s});var n=r(32735),a=r(92802),i=r(91967),l=r(1048);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var c=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function s(e){var t=e.castInitialValues,r=e.castValuesOnSubmit,s=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(r){Object.keys(t).forEach((function(n){t.hasOwnProperty(n)&&(l.t.isObject(r[n])?e(r[n]):null===t[n]&&delete t[n])}))}(t),t}(s)):s,f={allowInitialSubmit:e.allowInitialSubmit};return n.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,n){var a=n.setSubmitting,i=n.resetForm,l=n.setFieldError,c=r&&e.validationSchema?e.validationSchema.cast(t):t;u(c,(function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(r.reset&&i(),r.errors)for(var n=0,c=Object.entries(r.errors);n<c.length;n++){var s=(e=c[n],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?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.")}()),u=s[0],m=s[1];l(u,m)}a(!1)}))},initialStatus:f}),i.q.isFunction(e.children)?function(t){return e.children(t)}:n.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}}}]);
|
|
2
|
-
//# sourceMappingURL=950-4b9770bfe3-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/950-4b9770bfe3-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/components/embed-size/EmbedSize.tsx","file:///app/packages/libs/shared/src/apps/share/components/share-link-info/getRespectRatingText.ts","file:///app/packages/libs/shared/src/apps/share/components/share-link-info/ShareLinkInfo.tsx","file:///app/packages/libs/shared/src/apps/share/validation/ShareLinkSettingsValidationSchema.ts","file:///app/packages/libs/shared/src/apps/share/utils/LinkExpiryHelper.ts","file:///app/packages/libs/shared/src/apps/share/components/link-expiry/LinkExpiry.tsx","file:///app/packages/libs/shared/src/apps/share/components/set-password-input/set-password-input.scss","file:///app/packages/libs/shared/src/apps/share/components/set-password-input/SetPasswordInput.tsx","file:///app/packages/libs/shared/src/apps/share/components/link-password/LinkPassword.tsx","file:///app/packages/libs/shared/src/apps/share/views/share/components/share-settings/ShareSettings.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx"],"sourcesContent":["import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { EmbedResolution } from 'libs/shared/utils/EmbedHelper';\n\nconst namespace = 'share.embedSize';\n\ninterface EmbedSizeProps {\n autoplay: boolean;\n setAutoplay: (autoplay: boolean) => void;\n videoSize: EmbedResolution;\n setVideoSize: (videoSize: EmbedResolution) => void;\n videoSizes: EmbedResolution[];\n}\n\nexport function EmbedSize(props: EmbedSizeProps): React.ReactElement {\n const {\n autoplay,\n setAutoplay,\n videoSize,\n setVideoSize,\n videoSizes\n } = props;\n\n return (\n <div className='d-flex align-items-center'>\n {!!videoSizes.length &&\n <>\n <div className='me-1'>\n <Text namespace={namespace} phrase='videoSize' />\n </div>\n <div className='pe-3'>\n <Dropdown>\n <Dropdown.Toggle id='embed-resolution' variant='outline-dark'>\n {videoSize.label}\n </Dropdown.Toggle>\n\n <Dropdown.Menu>\n {videoSizes.map(size => (\n <Dropdown.Item\n key={`${size.width}x${size.height}`}\n onClick={() => setVideoSize(size)}\n >\n {size.label}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n </div>\n </>\n }\n <div className='me-2'>\n <Text namespace={namespace} phrase='autoplay' />\n </div>\n <Checkbox id='autoplay-checkbox' checked={autoplay} onChange={() => setAutoplay(!autoplay)} />\n </div>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BaseObject } from 'libs/analytics/interfaces';\n\nimport { YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function getRespectRatingText(video: BaseObject, yearGroups: YearGroup[], hasStudentExp: boolean) {\n if (!video || !yearGroups)\n return null;\n\n if (hasStudentExp)\n return getPhrase('justMySchoolTeachers');\n\n if (!VideoHelper.isVideoType(video))\n return getPhrase('collectionRating');\n\n const restriction = RestrictionHelper.getWeightedRestriction(video._restrictions?.value);\n\n /**\n * Restrictions without a year group are teacher restricitons, which means only admins can see it.\n */\n if (restriction && !restriction.yearGroup)\n return getPhrase('onlyAdmins');\n\n const rating = VideoHelper.getRating(video);\n\n let maxYearGroup: YearGroup;\n let minAllowedYearGroup: YearGroup;\n\n for (const yearGroup of yearGroups) {\n /**\n * If our year group is our new highest so far, save it\n */\n if (!maxYearGroup || yearGroup.value > maxYearGroup.value)\n maxYearGroup = yearGroup;\n\n /**\n * If the restriction is higher than this year group, skip it.\n */\n if (restriction && yearGroup.value <= restriction.yearGroup)\n continue;\n\n /**\n * If therating is higher than this year group's rating value, skip it.\n */\n if (rating && yearGroup.rating.value < rating.value)\n continue;\n\n /**\n * If our year group is the new lowest so far, save it\n */\n if (!minAllowedYearGroup || yearGroup.value < minAllowedYearGroup.value)\n minAllowedYearGroup = yearGroup;\n }\n\n /**\n * If no year groups are allowed, then it's staff only.\n */\n if (!minAllowedYearGroup)\n return getPhrase('onlyStaff');\n\n /**\n * We differentiate the copy if it's the highest year group or not. \n * Basically if we need to say \"X and above\" or not.\n */\n if (minAllowedYearGroup.value === maxYearGroup.value)\n return getPhrase('maxYearGroup', { yearGroup: maxYearGroup.name });\n\n return getPhrase('yearGroupRange', { yearGroup: minAllowedYearGroup.name });\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { getRespectRatingText } from 'libs/shared/apps/share/components/share-link-info/getRespectRatingText';\nimport { SharePrivacy } from 'libs/shared/apps/share/interfaces/SharePrivacy';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ShareLinkStatus } from 'libs/shared/enums/ShareLinkStatus';\nimport { BaseObject, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacyResponse } from '../../interfaces/responses/SharePrivacyResponse';\n\nconst namespace = 'share.shareLinkInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareLinkInfoProps {\n linkExpireDate: string;\n isPasswordProtected: boolean;\n privacy: SharePrivacyResponse;\n status: ShareLinkStatus;\n entityTypeId: MasterType;\n hasStudentExp: boolean;\n onClickSavePrivacy?: (privacy: SharePrivacy, onClickSavePrivacy: boolean) => void;\n entity: BaseObject;\n yearGroups: YearGroup[];\n shareOverrideRestrictions: boolean;\n}\n\ninterface GetIconAndTextOptions extends ShareLinkInfoProps {}\n\nconst getPrivateIconAndText = (options: GetIconAndTextOptions) => {\n const { entityTypeId, privacy, hasStudentExp, entity, yearGroups } = options;\n\n if (entityTypeId === MasterType.Topic || entityTypeId === MasterType.Series)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n\n /**\n * This is mainly for typescript, privacy will be an array for playlists\n * but that is handled above\n */\n if (Array.isArray(privacy))\n return;\n\n switch (privacy.privacy) {\n case 'public':\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('publicDescription') };\n case 'protected':\n if (privacy.overrideRestrictions)\n return { icon: cvSvgLibrary.VisibleOn, text: getPhrase('clickViewOnly') };\n return { icon: cvSvgLibrary.Lock, text: getRespectRatingText(entity, yearGroups, hasStudentExp) };\n case 'just_my_customer':\n if (privacy.overrideRestrictions)\n return { icon: cvSvgLibrary.Lock, text: getPhrase(hasStudentExp ? 'justMySchoolTeachers' : 'justMySchoolDescription') };\n return { icon: cvSvgLibrary.Lock, text: getRespectRatingText(entity, yearGroups, hasStudentExp) };\n /**\n * Because we plan to add restricted management later \n * for the time being we treat is the same as private \n */\n case 'restricted':\n case 'private':\n return { icon: cvSvgLibrary.Lock, text: getPhrase('privateDescription') };\n default:\n return {};\n }\n};\n\nconst getIconAndText = (options: GetIconAndTextOptions) => {\n const { linkExpireDate, isPasswordProtected, status } = options;\n if (!linkExpireDate && !isPasswordProtected)\n return getPrivateIconAndText(options);\n\n if (!linkExpireDate)\n return { icon: cvSvgLibrary.Lock, text: getPhrase('password') };\n\n const isToday = DateHelper.isToday(linkExpireDate);\n const dayDifference = DateHelper.diffBetween(linkExpireDate, new Date(), 'day');\n\n if (!isPasswordProtected) {\n let text = isToday\n ? getPhrase('expiryToday')\n : getPhrase('expiry', { days: dayDifference });\n\n if (status === ShareLinkStatus.Expired)\n text = getPhrase('expired');\n\n return { icon: cvSvgLibrary.Timer, text };\n }\n\n let text = isToday\n ? getPhrase('passwordExpiryToday')\n : getPhrase('passwordExpiry', { days: dayDifference });\n\n if (status === ShareLinkStatus.Expired)\n text = getPhrase('passwordExpired');\n\n return { icon: cvSvgLibrary.Lock, text };\n};\n\ninterface ShareLinkItemProps {\n active: boolean;\n title: string;\n description: string;\n onClick: () => void\n}\n\nfunction ShareLinkItem(props: ShareLinkItemProps) {\n const { active, title, description, onClick } = props;\n\n return (\n <li\n className={`${active ? 'bg-light-blue' : ''} dropdown-item d-flex align-items-center justify-content-between`}\n onClick={!active ? onClick : null}\n >\n <div className='me-2'>\n <p className='fw-semibold mb-1'>{title}</p>\n <p className='font-size-sm mb-0'>{description}</p>\n </div>\n {active && <SvgContainer svgName={cvSvgLibrary.Check} />}\n </li>\n );\n}\n\nexport function ShareLinkInfo(props: ShareLinkInfoProps): JSX.Element {\n const [ canManageAccess, setCanManageAccess ] = React.useState(false);\n const [ privacy, setPrivacy ] = React.useState<SharePrivacy>(null);\n\n const { icon, text } = getIconAndText(props);\n\n React.useEffect(() => {\n setCanManageAccess(props.privacy.canManageAccess);\n setPrivacy(props.privacy.privacy);\n }, [props.privacy]);\n\n const canManageAccessPrivacy = canManageAccess ? 'just_my_customer' : 'protected';\n\n const canUpdatePrivacy = (\n !props.isPasswordProtected &&\n !props.linkExpireDate &&\n (props.shareOverrideRestrictions && !props.hasStudentExp)\n );\n\n return (\n <div className='d-flex align-items-center'>\n {(canUpdatePrivacy)\n ? (\n <div className='btn-group'>\n <button className={`btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover`} data-bs-toggle='dropdown'>\n <SvgContainer svgName={icon} className='svg-container me-1' />\n <span className='me-1'>{text}</span>\n </button>\n <ul\n className='dropdown-menu cursor-pointer w-100'\n >\n {canManageAccess &&\n <ShareLinkItem\n active={privacy === 'public'}\n title={getPhrase('public')}\n description={getPhrase('publicDescription')}\n onClick={() => props.onClickSavePrivacy('public', false)}\n />\n }\n <ShareLinkItem\n active={privacy === canManageAccessPrivacy && props.privacy.overrideRestrictions}\n title={getPhrase('justMySchool')}\n description={canManageAccess ? getPhrase('justMySchoolDescription') : getPhrase('clickViewOnly')}\n onClick={() => props.onClickSavePrivacy(canManageAccessPrivacy, true)}\n />\n <ShareLinkItem\n active={privacy === canManageAccessPrivacy && !props.privacy.overrideRestrictions}\n title={getPhrase('respectRatings')}\n description={getRespectRatingText(props.entity, props.yearGroups, props.hasStudentExp)}\n onClick={() => props.onClickSavePrivacy(canManageAccessPrivacy, false)}\n />\n <ShareLinkItem\n active={privacy === 'private'}\n title={getPhrase('private')}\n description={getPhrase('privateDescription')}\n onClick={() => props.onClickSavePrivacy('private', false)}\n />\n </ul>\n </div>\n )\n : (\n <>\n <SvgContainer svgName={icon} className='svg-container me-1' />\n <span>{text}</span>\n </>\n )\n }\n </div>\n );\n}","import { boolean, object, string } from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'share.validation';\n\nexport const ShareLinkSettingsValidationSchema = object().shape({\n removePassword: boolean(),\n resourceId: string(),\n linkExpireDate: string().nullable(),\n password: string()\n .test({\n name: 'password-length',\n exclusive: false,\n params: {},\n message: LanguageService.getPhrase(namespace, 'minPassword'),\n test: val => {\n const removePassword = ((this as any)?.parent as any)?.removePassword;\n\n if (removePassword)\n return true;\n\n if (!val?.length)\n return true;\n\n if (val.length < 3)\n return false;\n\n return true;\n }\n })\n .default('')\n});","const LINK_EXPIRY_TIME = 30; // days\nexport function getLinkExpiryDate(shouldExpire: boolean): string | null {\n if (!shouldExpire)\n return null;\n\n const date = new Date();\n date.setDate(date.getDate() + LINK_EXPIRY_TIME);\n\n return date.toISOString();\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'shared.linkExpiry';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkExpiryProps {\n passwordProtectLink: boolean;\n}\n\nexport function LinkExpiry(props: LinkExpiryProps): React.ReactElement {\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n function setLinkExpireDate(): void {\n if (props.passwordProtectLink)\n return;\n\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!formikProps.values.linkExpireDate));\n }\n\n return (\n <div className='d-flex justify-content-between align-items-center pb-3'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='linkExpirationHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='linkExpirationInfo' /></p>\n </div>\n <Tooltip\n title={getPhrase('passwordProtected')}\n disable={!props.passwordProtectLink}\n spanHack\n trigger='hover'\n >\n <ToggleSwitch\n onClick={setLinkExpireDate}\n on={!!formikProps.values.linkExpireDate}\n disabled={props.passwordProtectLink}\n showStateWhenDisabled\n />\n </Tooltip>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"passwordButton\":\"W9Jl8\"};","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './set-password-input.scss';\n\nconst namespace = 'share.setPasswordInput';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SetPasswordInputProps {\n value: string;\n onChange: (value: string) => void;\n onReset?: () => void;\n /**\n * Allow user to view and edit current value.\n */\n canEdit?: boolean;\n /**\n * Don't allow user to view/edit current value\n * but allow them to clear it and enter a new value.\n */\n canReset?: boolean;\n placeholder?: string;\n}\n\nexport function SetPasswordInput(props: SetPasswordInputProps): JSX.Element {\n const [ revealPassword, setRevealPassword ] = React.useState(false);\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n\n const errorMsg = formikProps.errors?.password;\n\n return (\n <>\n <input\n className={`form-control ${errorMsg ? 'is-invalid' : ''}`}\n value={props.value}\n onChange={e => {\n !!props.canEdit && props.onChange(e.target.value);\n }}\n type={revealPassword ? 'text' : 'password'}\n placeholder={props.placeholder || getPhrase('passwordPlaceholder')}\n readOnly={!props.canEdit}\n />\n {!!errorMsg && (\n <Form.Control.Feedback type='invalid'>{errorMsg}</Form.Control.Feedback>\n )}\n {!!props.canEdit &&\n <DivButton className={styles.passwordButton} onClick={() => setRevealPassword(!revealPassword)}>\n <SvgContainer\n svgName={revealPassword ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n title={getPhrase(revealPassword ? 'hidePassword' : 'revealPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n {!props.canEdit && !!props.canReset && !!props.onReset &&\n <DivButton className={styles.passwordButton} onClick={props.onReset}>\n <SvgContainer\n svgName={cvSvgLibrary.Close} title={getPhrase('resetPassword')}\n tooltipPlacement='top'\n />\n </DivButton>\n }\n </>\n );\n}","import React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { SetPasswordInput } from 'libs/shared/apps/share/components/set-password-input/SetPasswordInput';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { getLinkExpiryDate } from 'libs/shared/apps/share/utils/LinkExpiryHelper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.linkPassword';\n\nconst PASSWORD_PLACEHOLDER = '********';\n\ninterface LinkPasswordProps {\n shareLink: ShareLink;\n passwordProtectLink: boolean;\n setPasswordProtectLink: (protect: boolean) => void;\n}\n\nexport function LinkPassword(props: LinkPasswordProps): React.ReactElement {\n const { passwordProtectLink, setPasswordProtectLink } = props;\n\n const formikProps = useFormikContext<EditShareLinkRequest>();\n \n const [ readonlyPassword, setReadonlyPassword ] = React.useState(!!props.shareLink?.isPasswordProtected);\n\n function onTogglePasswordProtect(): void {\n if (props.shareLink?.isPasswordProtected)\n formikProps.setFieldValue('removePassword', passwordProtectLink);\n\n formikProps.setFieldValue('password', '');\n\n setPasswordProtectLink(!passwordProtectLink);\n formikProps.setFieldValue('linkExpireDate', getLinkExpiryDate(!passwordProtectLink));\n }\n\n function setPassword(password: string): void {\n formikProps.setFieldValue('password', password);\n }\n\n function resetPassword(): void {\n formikProps.setFieldValue('password', '');\n formikProps.setFieldValue('removePassword', true);\n setReadonlyPassword(false);\n }\n\n return (\n <div className='pb-3'>\n <div className='d-flex justify-content-between align-items-center'>\n <div>\n <label className='m-0' htmlFor=''><Text namespace={namespace} phrase='passwordProtectHeading' /></label>\n <p className='m-0'><Text namespace={namespace} phrase='passwordProtectInfo' /></p>\n </div>\n <ToggleSwitch onClick={onTogglePasswordProtect} on={passwordProtectLink} />\n </div>\n\n {passwordProtectLink &&\n <div className='position-relative mt-2'>\n <SetPasswordInput\n value={readonlyPassword ? PASSWORD_PLACEHOLDER : formikProps.values.password}\n onChange={setPassword}\n onReset={resetPassword}\n canEdit={!readonlyPassword}\n canReset\n />\n </div>\n }\n </div>\n );\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LinkExpiry } from 'libs/shared/apps/share/components/link-expiry/LinkExpiry';\nimport { LinkPassword } from 'libs/shared/apps/share/components/link-password/LinkPassword';\nimport { EditShareLinkRequest } from 'libs/shared/apps/share/interfaces/requests/EditShareLinkRequest';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\nimport { ShareLinkSettingsValidationSchema } from 'libs/shared/apps/share/validation/ShareLinkSettingsValidationSchema';\nimport { SharableEntityType } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { BaseObject, Config } from 'libs/shared/interfaces';\nimport { PropsWithAnalyticsOptions, ShareLink } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.share';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype ShareSettingsFormProps = PropsWithAnalyticsOptions<{\n entity: BaseObject;\n entityType: SharableEntityType;\n config: Config;\n shareLink: ShareLink;\n entityId: string;\n onClickCancel: () => void;\n onClickDeleteLink: () => void;\n canEmbed?: boolean;\n privacy: SharePrivacyResponse;\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n}>;\n\nfunction ShareSettingsForm(props: ShareSettingsFormProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const [ passwordProtectLink, setPasswordProtectLink ] = React.useState(!!props.shareLink.isPasswordProtected);\n\n return (\n <Form>\n {props.onClickDeleteLink &&\n <div className='d-flex justify-content-between align-items-center pb-3'>\n <div>\n <label className='mb-0'><Text namespace={namespace} phrase='deleteLinkLabel' /></label>\n <p className='mb-0'><Text namespace={namespace} phrase='deleteLinkDescription' /></p>\n </div>\n <DivButton onClick={props.onClickDeleteLink} className='info-link justify-self-start'>\n <Text phrase='deleteLink' />\n </DivButton>\n </div>\n }\n {hasPermissions(PermissionName.ManageShareLinkSettings) && (\n <>\n <LinkExpiry passwordProtectLink={passwordProtectLink} />\n {props.shareOverrideRestrictions &&\n <LinkPassword\n shareLink={props.shareLink}\n passwordProtectLink={passwordProtectLink}\n setPasswordProtectLink={setPasswordProtectLink}\n />\n }\n </>\n )}\n\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.onClickCancel} text={getPhrase('back')} variant='link' />\n <PopupButtons.Submit variant='dark' />\n </PopupButtons>\n </Form>\n );\n}\n\ninterface ShareSettingsProps {\n entity: BaseObject;\n entityType: SharableEntityType;\n config: Config;\n shareLink: ShareLink;\n entityId: string;\n privacy: SharePrivacyResponse;\n onClickSaveLink: (data: EditShareLinkRequest, onError: () => void) => void;\n onClickCancel: () => void;\n onClickDeleteLink?: () => void;\n hasStudentExp: boolean;\n shareOverrideRestrictions: boolean;\n}\n\nexport function ShareSettings(props: PropsWithAnalyticsOptions<ShareSettingsProps>): JSX.Element {\n const initialValues: EditShareLinkRequest = {\n password: '',\n removePassword: false,\n linkExpireDate: props.shareLink.linkExpireDate,\n overrideRestrictions: props.shareLink.overrideRestrictions\n };\n\n return (\n <>\n <FormWrapper<EditShareLinkRequest>\n initialValues={initialValues}\n onSubmit={props.onClickSaveLink}\n castInitialValues={false}\n validationSchema={ShareLinkSettingsValidationSchema}\n >\n <ShareSettingsForm\n entity={props.entity}\n entityType={props.entityType}\n config={props.config}\n shareLink={props.shareLink}\n entityId={props.entityId}\n onClickCancel={props.onClickCancel}\n analyticsOptions={props.analyticsOptions}\n privacy={props.privacy}\n onClickDeleteLink={props.onClickDeleteLink}\n hasStudentExp={props.hasStudentExp}\n shareOverrideRestrictions={props.shareOverrideRestrictions}\n />\n </FormWrapper>\n </>\n );\n}\n","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}"],"names":["namespace","EmbedSize","props","autoplay","setAutoplay","videoSize","setVideoSize","videoSizes","className","length","phrase","id","variant","label","map","size","key","width","height","onClick","checked","onChange","getPhrase","LanguageService","getRespectRatingText","video","yearGroups","hasStudentExp","VideoHelper","restriction","RestrictionHelper","_restrictions","value","yearGroup","maxYearGroup","minAllowedYearGroup","rating","name","getIconAndText","options","linkExpireDate","isPasswordProtected","status","entityTypeId","privacy","entity","MasterType","icon","text","Array","isArray","overrideRestrictions","getPrivateIconAndText","isToday","DateHelper","dayDifference","Date","days","ShareLinkStatus","ShareLinkItem","active","title","description","SvgContainer","svgName","ShareLinkInfo","canManageAccess","setCanManageAccess","setPrivacy","canManageAccessPrivacy","canUpdatePrivacy","shareOverrideRestrictions","onClickSavePrivacy","ShareLinkSettingsValidationSchema","shape","removePassword","resourceId","nullable","password","test","exclusive","params","message","val","LINK_EXPIRY_TIME","getLinkExpiryDate","shouldExpire","date","setDate","getDate","toISOString","LinkExpiry","formikProps","htmlFor","Text","Tooltip","disable","passwordProtectLink","spanHack","trigger","ToggleSwitch","setFieldValue","values","on","disabled","showStateWhenDisabled","SetPasswordInput","revealPassword","setRevealPassword","errorMsg","errors","e","canEdit","target","type","placeholder","readOnly","Form","DivButton","tooltipPlacement","canReset","onReset","PASSWORD_PLACEHOLDER","LinkPassword","setPasswordProtectLink","shareLink","readonlyPassword","setReadonlyPassword","ShareSettingsForm","hasPermissions","usePermissions","onClickDeleteLink","PermissionName","PopupButtons","onClickCancel","ShareSettings","initialValues","FormWrapper","onSubmit","onClickSaveLink","castInitialValues","validationSchema","entityType","config","entityId","analyticsOptions","castValuesOnSubmit","formattedInitialValues","cast","omitChildValues","child","Object","keys","forEach","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","reset","entries","children","f","useFormikContextWrapper","defaultProps"],"sourceRoot":""}
|