Enables adding alt text to image uploads
It also allows editing other a11y features, like making the image presentational or embedding it as a link. It splits out the Image Options form from the editor tray to avoid copy/pasting too much. The logic and state are still separated between the upload and edit forms, since they don't overlap super well. It also edits the logic around uploading and embedding images to support the extra attributes. A few Jest tests were added to check for appropriate attributes being added. Test Plan: With RCE Enhancements enabled, visit an RCE page Open the image upload modal and choose an image Notice the image attributes form underneath. Add alt text. Adjust the other attributes as desired. Upload the image Open the Raw HTML Editor. Notice that the alt text is added to your image, along with whatever other attributes you changed. Decoration Images are given the `role="presentation"` attribute; Display As "Link" embeds the image as a link. Fixes LS-445 flag = rce_enhancements Change-Id: I462e2c322a3b39fc4fa9f47b675426c581c3a398 Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/242736 Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com> Reviewed-by: Jeremy Stanley <jeremy@instructure.com> QA-Review: Robin Kuss <rkuss@instructure.com> Product-Review: Peyton Craighill <pcraighill@instructure.com>
This commit is contained in:
parent
e5d36e0649
commit
590f43aa32
|
@ -252,7 +252,7 @@
|
|||
"karma-verbose-reporter": "^0.0.6",
|
||||
"karma-webpack": "^3",
|
||||
"lint-staged": "^9",
|
||||
"merge-stream": "^1",
|
||||
"merge-stream": "^2",
|
||||
"mockdate": "^2.0.2",
|
||||
"moment-timezone-data-webpack-plugin": "^1.0.3",
|
||||
"moxios": "^0.4",
|
||||
|
|
|
@ -58,30 +58,37 @@
|
|||
"@instructure/k5uploader": ">=1",
|
||||
"@instructure/media-capture": "~7.1.0",
|
||||
"@instructure/ui-a11y": "6",
|
||||
"@instructure/ui-a11y-content": "^7.1.1",
|
||||
"@instructure/ui-alerts": "6",
|
||||
"@instructure/ui-billboard": "6",
|
||||
"@instructure/ui-buttons": "6",
|
||||
"@instructure/ui-checkbox": "^7.1.1",
|
||||
"@instructure/ui-color-utils": "6",
|
||||
"@instructure/ui-elements": "6",
|
||||
"@instructure/ui-flex": "6",
|
||||
"@instructure/ui-focusable": "6",
|
||||
"@instructure/ui-form-field": "6",
|
||||
"@instructure/ui-forms": "6",
|
||||
"@instructure/ui-heading": "^7.1.1",
|
||||
"@instructure/ui-icons": "6",
|
||||
"@instructure/ui-layout": "6",
|
||||
"@instructure/ui-media-player": "^5.54.0",
|
||||
"@instructure/ui-motion": "6",
|
||||
"@instructure/ui-overlays": "6",
|
||||
"@instructure/ui-pagination": "6",
|
||||
"@instructure/ui-radio-input": "^7.1.1",
|
||||
"@instructure/ui-react-utils": "6",
|
||||
"@instructure/ui-spinner": "6",
|
||||
"@instructure/ui-svg-images": "6",
|
||||
"@instructure/ui-tabs": "6",
|
||||
"@instructure/ui-text": "6",
|
||||
"@instructure/ui-text-area": "^7.1.1",
|
||||
"@instructure/ui-text-input": "6",
|
||||
"@instructure/ui-themeable": "6",
|
||||
"@instructure/ui-themes": "6",
|
||||
"@instructure/ui-toggle-details": "6",
|
||||
"@instructure/ui-tooltip": "^7.1.1",
|
||||
"@instructure/ui-tray": "^7.1.1",
|
||||
"@instructure/ui-tree-browser": "6",
|
||||
"@instructure/ui-utils": "6",
|
||||
"@instructure/ui-view": "6",
|
||||
|
@ -120,9 +127,9 @@
|
|||
"@instructure/browserslist-config-canvas-lms": ">=2",
|
||||
"@instructure/ui-babel-preset": "6",
|
||||
"@testing-library/dom": "^6",
|
||||
"@testing-library/jest-dom": "^4",
|
||||
"@testing-library/react": "^9",
|
||||
"@testing-library/user-event": "^4.2.0",
|
||||
"@testing-library/jest-dom": "^4",
|
||||
"axe-testcafe": "^3",
|
||||
"babel-loader": "^8.0.0",
|
||||
"babel-plugin-dynamic-import-node": "^2.2.0",
|
||||
|
|
|
@ -66,16 +66,20 @@ export function renderLinkedImage(linkElem, image) {
|
|||
}
|
||||
|
||||
export function constructJSXImageElement(image, opts = {}) {
|
||||
const {href, url, title, display_name, alt_text, link, ...otherAttributes} = image
|
||||
const {
|
||||
href,
|
||||
url,
|
||||
title,
|
||||
display_name,
|
||||
alt_text,
|
||||
isDecorativeImage,
|
||||
link,
|
||||
...otherAttributes
|
||||
} = image
|
||||
const src = href || url
|
||||
let altText = title || display_name
|
||||
if (alt_text) {
|
||||
if (alt_text.decorativeSelected) {
|
||||
altText = alt_text.altText || ' '
|
||||
otherAttributes.role = 'presentation'
|
||||
} else {
|
||||
altText = alt_text.altText
|
||||
}
|
||||
const altText = alt_text || title || display_name || ''
|
||||
if (isDecorativeImage) {
|
||||
otherAttributes.role = 'presentation'
|
||||
}
|
||||
|
||||
const ret = (
|
||||
|
|
|
@ -18,25 +18,16 @@
|
|||
|
||||
import React, {useState} from 'react'
|
||||
import {bool, func, number, shape, string} from 'prop-types'
|
||||
import {ScreenReaderContent} from '@instructure/ui-a11y'
|
||||
import {Button, CloseButton} from '@instructure/ui-buttons'
|
||||
import {CloseButton} from '@instructure/ui-buttons'
|
||||
|
||||
import {Heading} from '@instructure/ui-elements'
|
||||
import {Checkbox, RadioInput, RadioInputGroup, Select, TextArea} from '@instructure/ui-forms'
|
||||
import {IconQuestionLine} from '@instructure/ui-icons'
|
||||
import {Flex, View} from '@instructure/ui-layout'
|
||||
import {Tooltip, Tray} from '@instructure/ui-overlays'
|
||||
import {Heading} from '@instructure/ui-heading'
|
||||
import {Flex} from '@instructure/ui-flex'
|
||||
import {Tray} from '@instructure/ui-tray'
|
||||
|
||||
import {
|
||||
CUSTOM,
|
||||
MIN_HEIGHT,
|
||||
MIN_WIDTH,
|
||||
imageSizes,
|
||||
labelForImageSize,
|
||||
scaleToSize
|
||||
} from '../ImageEmbedOptions'
|
||||
import {CUSTOM, MIN_HEIGHT, MIN_WIDTH, scaleToSize} from '../ImageEmbedOptions'
|
||||
import formatMessage from '../../../../format-message'
|
||||
import DimensionsInput, {useDimensionsState} from '../../shared/DimensionsInput'
|
||||
import {useDimensionsState} from '../../shared/DimensionsInput'
|
||||
import ImageOptionsForm from '../../shared/ImageOptionsForm'
|
||||
|
||||
export default function ImageOptionsTray(props) {
|
||||
const {imageOptions, onRequestClose, open} = props
|
||||
|
@ -57,8 +48,6 @@ export default function ImageOptionsTray(props) {
|
|||
minWidth: MIN_WIDTH
|
||||
})
|
||||
|
||||
const imageSizeOption = {label: labelForImageSize(imageSize), value: imageSize}
|
||||
|
||||
function handleAltTextChange(event) {
|
||||
setAltText(event.target.value)
|
||||
}
|
||||
|
@ -103,29 +92,6 @@ export default function ImageOptionsTray(props) {
|
|||
})
|
||||
}
|
||||
|
||||
const tooltipText = formatMessage('Used by screen readers to describe the content of an image')
|
||||
const textAreaLabel = (
|
||||
<Flex alignItems="center">
|
||||
<Flex.Item>{formatMessage('Alt Text')}</Flex.Item>
|
||||
|
||||
<Flex.Item margin="0 0 0 xx-small">
|
||||
<Tooltip
|
||||
on={['hover', 'focus']}
|
||||
placement="top"
|
||||
tip={
|
||||
<View display="block" id="alt-text-label-tooltip" maxWidth="14rem">
|
||||
{tooltipText}
|
||||
</View>
|
||||
}
|
||||
>
|
||||
<Button icon={IconQuestionLine} size="small" variant="icon">
|
||||
<ScreenReaderContent>{tooltipText}</ScreenReaderContent>
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
)
|
||||
|
||||
const messagesForSize = []
|
||||
if (imageSize !== CUSTOM) {
|
||||
messagesForSize.push({
|
||||
|
@ -134,10 +100,6 @@ export default function ImageOptionsTray(props) {
|
|||
})
|
||||
}
|
||||
|
||||
const saveDisabled =
|
||||
displayAs === 'embed' &&
|
||||
((!isDecorativeImage && altText === '') || (imageSize === CUSTOM && !dimensionsState.isValid))
|
||||
|
||||
return (
|
||||
<Tray
|
||||
data-mce-component
|
||||
|
@ -167,88 +129,19 @@ export default function ImageOptionsTray(props) {
|
|||
</Flex.Item>
|
||||
|
||||
<Flex.Item as="form" grow margin="none" shrink>
|
||||
<Flex justifyItems="space-between" direction="column" height="100%">
|
||||
<Flex.Item grow padding="small" shrink>
|
||||
<Flex direction="column">
|
||||
<Flex.Item padding="small">
|
||||
<TextArea
|
||||
aria-describedby="alt-text-label-tooltip"
|
||||
height="4rem"
|
||||
label={textAreaLabel}
|
||||
onChange={handleAltTextChange}
|
||||
placeholder={formatMessage('(Describe the image)')}
|
||||
resize="vertical"
|
||||
value={altText}
|
||||
/>
|
||||
</Flex.Item>
|
||||
|
||||
<Flex.Item padding="small">
|
||||
<Checkbox
|
||||
checked={isDecorativeImage}
|
||||
disabled={displayAs === 'link'}
|
||||
label={formatMessage('Decorative Image')}
|
||||
onChange={handleIsDecorativeChange}
|
||||
/>
|
||||
</Flex.Item>
|
||||
|
||||
<Flex.Item margin="small none none none" padding="small">
|
||||
<RadioInputGroup
|
||||
description={formatMessage('Display Options')}
|
||||
name="display-image-as"
|
||||
onChange={handleDisplayAsChange}
|
||||
value={displayAs}
|
||||
>
|
||||
<RadioInput label={formatMessage('Embed Image')} value="embed" />
|
||||
|
||||
<RadioInput
|
||||
label={formatMessage('Display Text Link (Opens in a new tab)')}
|
||||
value="link"
|
||||
/>
|
||||
</RadioInputGroup>
|
||||
</Flex.Item>
|
||||
|
||||
<Flex.Item margin="small none xx-small none">
|
||||
<View as="div" padding="small small xx-small small">
|
||||
<Select
|
||||
disabled={displayAs !== 'embed'}
|
||||
label={formatMessage('Size')}
|
||||
messages={messagesForSize}
|
||||
onChange={handleImageSizeChange}
|
||||
selectedOption={imageSizeOption}
|
||||
>
|
||||
{imageSizes.map(size => (
|
||||
<option key={size} value={size}>
|
||||
{labelForImageSize(size)}
|
||||
</option>
|
||||
))}
|
||||
</Select>
|
||||
</View>
|
||||
|
||||
{imageSize === CUSTOM && (
|
||||
<View as="div" padding="xx-small small">
|
||||
<DimensionsInput
|
||||
dimensionsState={dimensionsState}
|
||||
disabled={displayAs !== 'embed'}
|
||||
minHeight={MIN_HEIGHT}
|
||||
minWidth={MIN_WIDTH}
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
</Flex.Item>
|
||||
|
||||
<Flex.Item
|
||||
background="light"
|
||||
borderWidth="small none none none"
|
||||
padding="small medium"
|
||||
textAlign="end"
|
||||
>
|
||||
<Button disabled={saveDisabled} onClick={handleSave} variant="primary">
|
||||
{formatMessage('Done')}
|
||||
</Button>
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
<ImageOptionsForm
|
||||
imageSize={imageSize}
|
||||
displayAs={displayAs}
|
||||
isDecorativeImage={isDecorativeImage}
|
||||
altText={altText}
|
||||
dimensionsState={dimensionsState}
|
||||
handleAltTextChange={handleAltTextChange}
|
||||
handleIsDecorativeChange={handleIsDecorativeChange}
|
||||
handleDisplayAsChange={handleDisplayAsChange}
|
||||
handleImageSizeChange={handleImageSizeChange}
|
||||
messagesForSize={messagesForSize}
|
||||
handleSave={handleSave}
|
||||
/>
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
</Tray>
|
||||
|
|
|
@ -0,0 +1,177 @@
|
|||
/*
|
||||
* Copyright (C) 2020 - present Instructure, Inc.
|
||||
*
|
||||
* This file is part of Canvas.
|
||||
*
|
||||
* Canvas is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License as published by the Free
|
||||
* Software Foundation, version 3 of the License.
|
||||
*
|
||||
* Canvas is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||
* A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import React from 'react'
|
||||
import {ScreenReaderContent} from '@instructure/ui-a11y-content'
|
||||
import {Button} from '@instructure/ui-buttons'
|
||||
|
||||
import {Select} from '@instructure/ui-forms'
|
||||
import {RadioInput, RadioInputGroup} from '@instructure/ui-radio-input'
|
||||
import {TextArea} from '@instructure/ui-text-area'
|
||||
import {Checkbox} from '@instructure/ui-checkbox'
|
||||
import {IconQuestionLine} from '@instructure/ui-icons'
|
||||
import {Flex} from '@instructure/ui-flex'
|
||||
import {View} from '@instructure/ui-view'
|
||||
import {Tooltip} from '@instructure/ui-tooltip'
|
||||
|
||||
import {
|
||||
CUSTOM,
|
||||
MIN_HEIGHT,
|
||||
MIN_WIDTH,
|
||||
imageSizes,
|
||||
labelForImageSize
|
||||
} from '../instructure_image/ImageEmbedOptions'
|
||||
import formatMessage from '../../../format-message'
|
||||
import DimensionsInput from './DimensionsInput'
|
||||
|
||||
const ImageOptionsForm = ({
|
||||
imageSize,
|
||||
displayAs,
|
||||
isDecorativeImage,
|
||||
altText,
|
||||
dimensionsState,
|
||||
handleAltTextChange,
|
||||
handleIsDecorativeChange,
|
||||
handleDisplayAsChange,
|
||||
handleImageSizeChange,
|
||||
messagesForSize,
|
||||
handleSave,
|
||||
hideDimensions
|
||||
}) => {
|
||||
const imageSizeOption = {label: labelForImageSize(imageSize), value: imageSize}
|
||||
|
||||
const tooltipText = formatMessage('Used by screen readers to describe the content of an image')
|
||||
const textAreaLabel = (
|
||||
<Flex alignItems="center">
|
||||
<Flex.Item>{formatMessage('Alt Text')}</Flex.Item>
|
||||
|
||||
<Flex.Item margin="0 0 0 xx-small">
|
||||
<Tooltip
|
||||
on={['hover', 'focus']}
|
||||
placement="top"
|
||||
tip={
|
||||
<View display="block" id="alt-text-label-tooltip" maxWidth="14rem">
|
||||
{tooltipText}
|
||||
</View>
|
||||
}
|
||||
>
|
||||
<Button icon={IconQuestionLine} size="small" variant="icon">
|
||||
<ScreenReaderContent>{tooltipText}</ScreenReaderContent>
|
||||
</Button>
|
||||
</Tooltip>
|
||||
</Flex.Item>
|
||||
</Flex>
|
||||
)
|
||||
|
||||
const saveDisabled =
|
||||
displayAs === 'embed' &&
|
||||
((!isDecorativeImage && altText === '') || (imageSize === CUSTOM && !dimensionsState?.isValid))
|
||||
|
||||
return (
|
||||
<Flex justifyItems="space-between" direction="column" height="100%">
|
||||
<Flex.Item grow padding="small" shrink>
|
||||
<Flex direction="column">
|
||||
<Flex.Item padding="small">
|
||||
<TextArea
|
||||
disabled={isDecorativeImage}
|
||||
aria-describedby="alt-text-label-tooltip"
|
||||
height="4rem"
|
||||
label={textAreaLabel}
|
||||
onChange={handleAltTextChange}
|
||||
placeholder={formatMessage('(Describe the image)')}
|
||||
resize="vertical"
|
||||
value={altText}
|
||||
/>
|
||||
</Flex.Item>
|
||||
|
||||
<Flex.Item padding="small">
|
||||
<Checkbox
|
||||
checked={isDecorativeImage}
|
||||
disabled={displayAs === 'link'}
|
||||
label={formatMessage('Decorative Image')}
|
||||
onChange={handleIsDecorativeChange}
|
||||
/>
|
||||
</Flex.Item>
|
||||
|
||||
<Flex.Item margin="small none none none" padding="small">
|
||||
<RadioInputGroup
|
||||
description={formatMessage('Display Options')}
|
||||
name="display-image-as"
|
||||
onChange={handleDisplayAsChange}
|
||||
value={displayAs}
|
||||
>
|
||||
<RadioInput label={formatMessage('Embed Image')} value="embed" />
|
||||
|
||||
<RadioInput
|
||||
disabled={isDecorativeImage}
|
||||
label={formatMessage('Display Text Link (Opens in a new tab)')}
|
||||
value="link"
|
||||
/>
|
||||
</RadioInputGroup>
|
||||
</Flex.Item>
|
||||
|
||||
{!hideDimensions && (
|
||||
<Flex.Item margin="small none xx-small none">
|
||||
<View as="div" padding="small small xx-small small">
|
||||
<Select
|
||||
disabled={displayAs !== 'embed'}
|
||||
label={formatMessage('Size')}
|
||||
messages={messagesForSize}
|
||||
onChange={handleImageSizeChange}
|
||||
selectedOption={imageSizeOption}
|
||||
>
|
||||
{imageSizes.map(size => (
|
||||
<option key={size} value={size}>
|
||||
{labelForImageSize(size)}
|
||||
</option>
|
||||
))}
|
||||
</Select>
|
||||
</View>
|
||||
|
||||
{imageSize === CUSTOM && (
|
||||
<View as="div" padding="xx-small small">
|
||||
<DimensionsInput
|
||||
dimensionsState={dimensionsState}
|
||||
disabled={displayAs !== 'embed'}
|
||||
minHeight={MIN_HEIGHT}
|
||||
minWidth={MIN_WIDTH}
|
||||
/>
|
||||
</View>
|
||||
)}
|
||||
</Flex.Item>
|
||||
)}
|
||||
</Flex>
|
||||
</Flex.Item>
|
||||
|
||||
{handleSave && (
|
||||
<Flex.Item
|
||||
background="light"
|
||||
borderWidth="small none none none"
|
||||
padding="small medium"
|
||||
textAlign="end"
|
||||
>
|
||||
<Button disabled={saveDisabled} onClick={handleSave} variant="primary">
|
||||
{formatMessage('Done')}
|
||||
</Button>
|
||||
</Flex.Item>
|
||||
)}
|
||||
</Flex>
|
||||
)
|
||||
}
|
||||
|
||||
export default ImageOptionsForm
|
|
@ -33,6 +33,7 @@ import indicate from '../../../../common/indicate'
|
|||
import {StoreProvider} from '../StoreContext'
|
||||
import RceApiSource from '../../../../sidebar/sources/api'
|
||||
import Bridge from '../../../../bridge'
|
||||
import ImageOptionsForm from '../ImageOptionsForm'
|
||||
|
||||
const ComputerPanel = React.lazy(() => import('./ComputerPanel'))
|
||||
const UrlPanel = React.lazy(() => import('./UrlPanel'))
|
||||
|
@ -51,6 +52,7 @@ export const handleSubmit = (
|
|||
afterInsert = () => {}
|
||||
) => {
|
||||
Bridge.focusEditor(editor.rceWrapper) // necessary since it blurred when the modal opened
|
||||
const {altText, isDecorativeImage, displayAs} = uploadData?.imageOptions || {}
|
||||
switch (selectedPanel) {
|
||||
case 'COMPUTER': {
|
||||
const {theFile} = uploadData
|
||||
|
@ -59,7 +61,10 @@ export const handleSubmit = (
|
|||
name: theFile.name,
|
||||
size: theFile.size,
|
||||
contentType: theFile.type,
|
||||
domObject: theFile
|
||||
domObject: theFile,
|
||||
altText,
|
||||
isDecorativeImage,
|
||||
displayAs
|
||||
}
|
||||
let tabContext = 'documents'
|
||||
if (isImage(theFile.type)) {
|
||||
|
@ -73,18 +78,34 @@ export const handleSubmit = (
|
|||
case 'UNSPLASH': {
|
||||
const {unsplashData} = uploadData
|
||||
source.pingbackUnsplash(unsplashData.id)
|
||||
editor.insertContent(
|
||||
editor.dom.createHTML('img', {src: unsplashData.url, alt: unsplashData.alt})
|
||||
)
|
||||
let editorHtml
|
||||
if (displayAs !== 'link' && /image/.test(accept)) {
|
||||
editorHtml = editor.dom.createHTML('img', {
|
||||
src: unsplashData.url,
|
||||
alt: altText || unsplashData.alt,
|
||||
role: isDecorativeImage ? 'presentation' : undefined
|
||||
})
|
||||
} else {
|
||||
editorHtml = editor.dom.createHTML(
|
||||
'a',
|
||||
{href: unsplashData.url},
|
||||
altText || unsplashData.url
|
||||
)
|
||||
}
|
||||
editor.insertContent(editorHtml)
|
||||
break
|
||||
}
|
||||
case 'URL': {
|
||||
const {fileUrl} = uploadData
|
||||
let editorHtml
|
||||
if (/image/.test(accept)) {
|
||||
editorHtml = editor.dom.createHTML('img', {src: fileUrl})
|
||||
if (displayAs !== 'link' && /image/.test(accept)) {
|
||||
editorHtml = editor.dom.createHTML('img', {
|
||||
src: fileUrl,
|
||||
alt: altText,
|
||||
role: isDecorativeImage ? 'presentation' : undefined
|
||||
})
|
||||
} else {
|
||||
editorHtml = editor.dom.createHTML('a', {href: fileUrl})
|
||||
editorHtml = editor.dom.createHTML('a', {href: fileUrl}, altText || fileUrl)
|
||||
}
|
||||
editor.insertContent(editorHtml)
|
||||
break
|
||||
|
@ -131,6 +152,23 @@ export function UploadFile({
|
|||
const [modalBodyHeight, setModalBodyHeight] = useState(undefined)
|
||||
const bodyRef = React.createRef()
|
||||
|
||||
// Image options props
|
||||
const [altText, setAltText] = useState('')
|
||||
const [isDecorativeImage, setIsDecorativeImage] = useState(false)
|
||||
const [displayAs, setDisplayAs] = useState('embed')
|
||||
|
||||
function handleAltTextChange(event) {
|
||||
setAltText(event.target.value)
|
||||
}
|
||||
|
||||
function handleIsDecorativeChange(event) {
|
||||
setIsDecorativeImage(event.target.checked)
|
||||
}
|
||||
|
||||
function handleDisplayAsChange(event) {
|
||||
setDisplayAs(event.target.value)
|
||||
}
|
||||
|
||||
trayProps = trayProps || Bridge.trayProps.get(editor)
|
||||
|
||||
const source =
|
||||
|
@ -246,7 +284,12 @@ export function UploadFile({
|
|||
editor,
|
||||
accept,
|
||||
selectedPanel,
|
||||
{fileUrl, theFile, unsplashData},
|
||||
{
|
||||
fileUrl,
|
||||
theFile,
|
||||
unsplashData,
|
||||
imageOptions: {altText, isDecorativeImage, displayAs}
|
||||
},
|
||||
contentProps,
|
||||
source,
|
||||
onDismiss
|
||||
|
@ -266,6 +309,17 @@ export function UploadFile({
|
|||
<Tabs onRequestTabChange={(event, {index}) => setSelectedPanel(panels[index])}>
|
||||
{renderTabs()}
|
||||
</Tabs>
|
||||
{/image/.test(accept) && (
|
||||
<ImageOptionsForm
|
||||
altText={altText}
|
||||
isDecorativeImage={isDecorativeImage}
|
||||
displayAs={displayAs}
|
||||
handleAltTextChange={handleAltTextChange}
|
||||
handleIsDecorativeChange={handleIsDecorativeChange}
|
||||
handleDisplayAsChange={handleDisplayAsChange}
|
||||
hideDimensions
|
||||
/>
|
||||
)}
|
||||
</Modal.Body>
|
||||
<Modal.Footer>
|
||||
<Button onClick={onDismiss}>{formatMessage('Close')}</Button>
|
||||
|
|
|
@ -241,6 +241,13 @@ describe('UploadFile', () => {
|
|||
handleSubmit(fakeEditor, 'images/*', 'URL', {fileUrl: 'http://fake/path'})
|
||||
expect(fakeEditor.content).toEqual('<img src="http://fake/path" />')
|
||||
})
|
||||
it('inserts the image with url source and includes alt text', () => {
|
||||
handleSubmit(fakeEditor, 'images/*', 'URL', {
|
||||
fileUrl: 'http://fake/path',
|
||||
imageOptions: {altText: '(╯°□°)╯︵ ┻━┻'}
|
||||
})
|
||||
expect(fakeEditor.content).toEqual('<img src="http://fake/path" alt="(╯°□°)╯︵ ┻━┻" />')
|
||||
})
|
||||
|
||||
describe('contentProps.startMediaUpload', () => {
|
||||
it('called for images when Computer panel is selected', () => {
|
||||
|
@ -288,6 +295,35 @@ describe('UploadFile', () => {
|
|||
domObject: fakeFile
|
||||
})
|
||||
})
|
||||
it('called for images when Computer panel is selected and includes image options', () => {
|
||||
const fakeMediaUpload = jest.fn()
|
||||
const fakeFile = {
|
||||
name: 'foo.png',
|
||||
size: 3000,
|
||||
type: 'image/png'
|
||||
}
|
||||
handleSubmit(
|
||||
fakeEditor,
|
||||
'images/*',
|
||||
'COMPUTER',
|
||||
{
|
||||
theFile: fakeFile,
|
||||
imageOptions: {altText: '(╯°□°)╯︵ ┻━┻', displayAs: 'embed', isDecorativeImage: true}
|
||||
},
|
||||
{startMediaUpload: fakeMediaUpload}
|
||||
)
|
||||
expect(fakeMediaUpload).toHaveBeenCalledWith('images', {
|
||||
altText: '(╯°□°)╯︵ ┻━┻',
|
||||
displayAs: 'embed',
|
||||
isDecorativeImage: true,
|
||||
|
||||
parentFolderId: 'media',
|
||||
name: 'foo.png',
|
||||
size: 3000,
|
||||
contentType: 'image/png',
|
||||
domObject: fakeFile
|
||||
})
|
||||
})
|
||||
|
||||
it('called for audio media when Computer panel is selected', () => {
|
||||
const fakeMediaUpload = jest.fn()
|
||||
|
|
|
@ -135,13 +135,18 @@ function linkingExistingContent() {
|
|||
}
|
||||
export function embedUploadResult(results, selectedTabType) {
|
||||
const embedData = fileEmbed(results)
|
||||
|
||||
if (selectedTabType === 'images' && isImage(embedData.type) && !linkingExistingContent()) {
|
||||
if (
|
||||
selectedTabType === 'images' &&
|
||||
isImage(embedData.type) &&
|
||||
!linkingExistingContent() &&
|
||||
results.displayAs !== 'link'
|
||||
) {
|
||||
const file_props = {
|
||||
href: results.href || results.url,
|
||||
title: results.title,
|
||||
display_name: results.display_name || results.name || results.title || results.filename,
|
||||
alt_text: results.alt_text,
|
||||
isDecorativeImage: results.isDecorativeImage,
|
||||
content_type: results['content-type'],
|
||||
contextType: results.contextType,
|
||||
contextId: results.contextId,
|
||||
|
@ -169,7 +174,12 @@ export function embedUploadResult(results, selectedTabType) {
|
|||
{
|
||||
'data-canvas-previewable': isPreviewable(results['content-type']),
|
||||
href: results.href || results.url,
|
||||
title: results.display_name || results.name || results.title || results.filename,
|
||||
title:
|
||||
results.alt_text ||
|
||||
results.display_name ||
|
||||
results.name ||
|
||||
results.title ||
|
||||
results.filename,
|
||||
content_type: results['content-type'],
|
||||
embed: embedData,
|
||||
target: '_blank',
|
||||
|
@ -357,6 +367,15 @@ export function uploadPreflight(tabContext, fileMetaProps) {
|
|||
.then(results => {
|
||||
return setAltText(fileMetaProps.altText, results)
|
||||
})
|
||||
.then(results => {
|
||||
if (fileMetaProps.isDecorativeImage) {
|
||||
results.isDecorativeImage = fileMetaProps.isDecorativeImage
|
||||
}
|
||||
if (fileMetaProps.displayAs) {
|
||||
results.displayAs = fileMetaProps.displayAs
|
||||
}
|
||||
return results
|
||||
})
|
||||
.then(results => {
|
||||
// This may or may not be necessary depending on the upload
|
||||
dispatch(removePlaceholdersFor(fileMetaProps.name))
|
||||
|
|
418
yarn.lock
418
yarn.lock
|
@ -1156,6 +1156,15 @@
|
|||
"@babel/helper-module-imports" "^7.8.3"
|
||||
babel-plugin-macros "^2.8.0"
|
||||
|
||||
"@instructure/console@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/console/-/console-7.1.1.tgz#33a6aa23f7ff1bd20515e96baa4eac95d20df066"
|
||||
integrity sha512-Y+7OY3gpWbLdfuhrhCyYjq4Vy15LhNr9BCTtuTK8U5xWEYV/weF/99X4J9J4JwsGabfSmfdRUzXKV2XFhKRxXw==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.8.3"
|
||||
"@babel/helper-module-imports" "^7.8.3"
|
||||
babel-plugin-macros "^2.8.0"
|
||||
|
||||
"@instructure/debounce@6", "@instructure/debounce@^6.24.0", "@instructure/debounce@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/debounce/-/debounce-6.26.0.tgz#8a093eaf4f2f71337daba26f6eb19ce01856e1ec"
|
||||
|
@ -1170,6 +1179,13 @@
|
|||
dependencies:
|
||||
"@babel/runtime" "^7"
|
||||
|
||||
"@instructure/debounce@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/debounce/-/debounce-7.1.1.tgz#f67c9837d746512dbdd571c2c5dbfb12d6b82e5c"
|
||||
integrity sha512-bcf3YHoZA9kMZoU0CUOotGn2H854yw+sM2E29qze6j49mpQcq7nABCD1fWTAkFTWwT0AcTMpF9Ob06I7P4tO8Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
|
||||
"@instructure/instructure-theme@^6.24.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/instructure-theme/-/instructure-theme-6.24.0.tgz#fd7554aa4852d97d84fe70bcf8058396346e89c7"
|
||||
|
@ -1317,6 +1333,21 @@
|
|||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-a11y-content@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-a11y-content/-/ui-a11y-content-7.1.1.tgz#53c988ce0caf11803a81438568e1df0504f73191"
|
||||
integrity sha512-9Ny5m47FYr7zNZguZ4uNiH36tj9aUVBQ0Cr5bWj/iuAfqOVmMTfdgMo5fSschN8PJTu2jg02YPKpPWhJhU+KrA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-a11y-utils@^6.24.0", "@instructure/ui-a11y-utils@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-a11y-utils/-/ui-a11y-utils-6.26.0.tgz#bb48a28b67d8bc1081cfe1f223f64fd2efe22874"
|
||||
|
@ -1333,6 +1364,22 @@
|
|||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-a11y-utils@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-a11y-utils/-/ui-a11y-utils-7.1.1.tgz#21719dea2a71df9141a6c2a47b505a3705b96693"
|
||||
integrity sha512-CBIQ20RNXMprD3TGJD08qbejGTok62mmzB7x1OGoYj07bqtfYV7IxMASChU+KRTSSeteGSIHo+cJiT9F05Pvug==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-a11y-content" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-a11y@6", "@instructure/ui-a11y@^6.17.0", "@instructure/ui-a11y@^6.9.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-a11y/-/ui-a11y-6.24.0.tgz#18c1005fe0f3607e53ecccaebf41fe3c1140e309"
|
||||
|
@ -1591,6 +1638,27 @@
|
|||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-checkbox@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-checkbox/-/ui-checkbox-7.1.1.tgz#ada839030b29c7925406fabaf19ff36d8fd2ca15"
|
||||
integrity sha512-gk2oNryqCfqmmJfdNNGVS9eyLRUzhT358sNCjeWFVEtOgVk7cUICH6Jh02+OW4Nwat4EqiEqA7p4CjfK28xMCA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-form-field" "^7.1.1"
|
||||
"@instructure/ui-icons" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-svg-images" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
classnames "^2"
|
||||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-color-utils@6", "@instructure/ui-color-utils@^6.17.0", "@instructure/ui-color-utils@^6.22.0", "@instructure/ui-color-utils@^6.24.0", "@instructure/ui-color-utils@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-color-utils/-/ui-color-utils-6.26.0.tgz#00485a8b265f4ef6ef9c5593b6439ac5fee1824d"
|
||||
|
@ -1599,6 +1667,14 @@
|
|||
"@babel/runtime" "^7.9.2"
|
||||
tinycolor2 "^1.4.1"
|
||||
|
||||
"@instructure/ui-color-utils@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-color-utils/-/ui-color-utils-7.1.1.tgz#6032374b038603d8811555e97f0d06997352954e"
|
||||
integrity sha512-0Bdv1SIw1FI9nhHdeHaf47gat1VZNiNVCJmtsAkC9nJxMa3IzFg24j++ns2z+cIqoivkrKLPFHozjXPWpyrT6g==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
tinycolor2 "^1.4.1"
|
||||
|
||||
"@instructure/ui-container@^5.52.3":
|
||||
version "5.52.3"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-container/-/ui-container-5.52.3.tgz#0c60a0c16ada533d20f119673c949094aab9c427"
|
||||
|
@ -1677,6 +1753,13 @@
|
|||
dependencies:
|
||||
"@babel/runtime" "^7"
|
||||
|
||||
"@instructure/ui-decorator@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-decorator/-/ui-decorator-7.1.1.tgz#0c532277194acd8b32709dddfb72efd4723d0e12"
|
||||
integrity sha512-1s6F+GEiUkURDy69xsaViNQyrQr+JRR8RqpW8Blgm1cdGATE4oUJ+bM7HsQicFUPOoGDNSnBQyqJ+I84ZXI52w==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
|
||||
"@instructure/ui-dialog@^6.24.0", "@instructure/ui-dialog@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-dialog/-/ui-dialog-6.26.0.tgz#7bbab4b2f8ebedc81b406dd1cfde65a919535405"
|
||||
|
@ -1690,6 +1773,19 @@
|
|||
"@instructure/ui-themeable" "^6.26.0"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-dialog@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-dialog/-/ui-dialog-7.1.1.tgz#e21cc2d390c5f9a686ec4dcdb45039da1bb33ac8"
|
||||
integrity sha512-yScoq9hkoiqz0ydTlMFJFaxJ2pwnkxzCLLhRTLsb0lFLkcMpnIDnerTvmLGMzYfdX1VNgG/p0t7ml0t6jdXIXg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-a11y-utils" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-dom-utils@^6.22.0", "@instructure/ui-dom-utils@^6.24.0", "@instructure/ui-dom-utils@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-dom-utils/-/ui-dom-utils-6.26.0.tgz#0fed75df3b223041b1f8fa60d963e3991cf17c07"
|
||||
|
@ -1698,6 +1794,14 @@
|
|||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^6.26.0"
|
||||
|
||||
"@instructure/ui-dom-utils@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-dom-utils/-/ui-dom-utils-7.1.1.tgz#9b93df2fa4351d0c288efbf852c5b793a18725a3"
|
||||
integrity sha512-t0MspHL52Rnn+ZYea1ZONVhV7b32wcjIzEasq0BFfQzNBDRnKpLvxs+uTaZ1+9MdbwAJQi/B2y2eaU/P6hX15Q==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
|
||||
"@instructure/ui-editable@6":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-editable/-/ui-editable-6.26.0.tgz#19621b219b08875b0896ce5a1767a82090c0bddd"
|
||||
|
@ -1875,6 +1979,24 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-form-field@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-form-field/-/ui-form-field-7.1.1.tgz#e74f1915927a0d2f7d53b3e7afd97684a8f86f57"
|
||||
integrity sha512-RuRX9NK1j5iL2pGp1syXVjCVtqjGIMT050KT9xwBQgppSn8cO6S/G9+k3NLEUdyR+LHyE42yRHi/QgZV8/zNrA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-a11y-content" "^7.1.1"
|
||||
"@instructure/ui-a11y-utils" "^7.1.1"
|
||||
"@instructure/ui-grid" "^7.1.1"
|
||||
"@instructure/ui-icons" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-forms@6", "@instructure/ui-forms@^6.17.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-forms/-/ui-forms-6.24.0.tgz#61cf4dad7c874641e5db26c01081276206560974"
|
||||
|
@ -1958,6 +2080,21 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-grid@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-grid/-/ui-grid-7.1.1.tgz#c7bb4ae6034012497676330bac9cb49eaa53a230"
|
||||
integrity sha512-QmsmVdCB0Tpn/q8YVXnpnnGUOJC/vCGXN52HCvSL2ath2p2kLMhyOWZo3jMCTF6KzqOzoG7lF1e56rLMrVymDA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-a11y-content" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-heading@6", "@instructure/ui-heading@^6.24.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-heading/-/ui-heading-6.24.0.tgz#4ccab7c156af05fe9a4bdda865d95f980cf31fb3"
|
||||
|
@ -1973,6 +2110,21 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-heading@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-heading/-/ui-heading-7.1.1.tgz#6d109c18d391fbc32d2e9ce103c19df0be09ed55"
|
||||
integrity sha512-PPajypdvsAN5sWB+iH+QgNrQHqhX93ra03wzWZbVjYTpXo3dNmY5cRKBaY0m4ByP5eNGayQSRzj5xVnsS2OchQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-view" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-i18n@6", "@instructure/ui-i18n@^6.24.0", "@instructure/ui-i18n@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-i18n/-/ui-i18n-6.26.0.tgz#e509fc65ebdc400d546a30d8f8ad1405d45c1b0d"
|
||||
|
@ -2001,6 +2153,21 @@
|
|||
moment-timezone "^0.5"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-i18n@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-i18n/-/ui-i18n-7.1.1.tgz#6be9d9232cf430aa9595f2a7bd794ef13bdb6dd5"
|
||||
integrity sha512-1qIl3WEf+KF53UTtdTH2K4Yu4NfwcnyE9vVTXnbX8HviDUklU1EjdkRYqCqw+JTbdymbqVOxHM7gnxCY+k6jpw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-decorator" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
decimal.js "^10"
|
||||
moment-timezone "^0.5"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-icons@6", "@instructure/ui-icons@^6.17.0", "@instructure/ui-icons@^6.22.0", "@instructure/ui-icons@^6.24.0", "@instructure/ui-icons@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-icons/-/ui-icons-6.26.0.tgz#fec37dffe5a477c29eb92089df2b8ed6138f80ec"
|
||||
|
@ -2019,6 +2186,15 @@
|
|||
"@instructure/ui-svg-images" "^5.52.3"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-icons@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-icons/-/ui-icons-7.1.1.tgz#191e008073a5f92255d3be57ab1cfd641416af0a"
|
||||
integrity sha512-mOz885dY5s26FsEPsHETCGQfVNOwQQ5SbJNRctTY6YMafDbBU7D3VTj3LbygFKLA6iDmYDF0SJ3iXx2bh3ChEg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-svg-images" "^7.1.1"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-img@6", "@instructure/ui-img@^6.24.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-img/-/ui-img-6.26.0.tgz#266429eb4d3be59f30d0a2e93868b7d2890bb77a"
|
||||
|
@ -2223,6 +2399,19 @@
|
|||
"@instructure/ui-utils" "^5.52.3"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-motion@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-motion/-/ui-motion-7.1.1.tgz#00d58d452a39287863378ee044f73af581abaac0"
|
||||
integrity sha512-WJhW3HINIkUuyF56rvdKSh6LWbL4BVm6zmXC42eTwct48w3dFcOREN3e88C28LJ2RxhpnSc0WLUvzg8soblHtg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-number-input@6", "@instructure/ui-number-input@^6.24.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-number-input/-/ui-number-input-6.26.0.tgz#3960ff5c98c3d5fdf7f5540553cf94acb46afaa9"
|
||||
|
@ -2389,6 +2578,28 @@
|
|||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-popover@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-popover/-/ui-popover-7.1.1.tgz#9223c315dc676d074fac31ab4ac8aed0d78495f4"
|
||||
integrity sha512-nM6AWO2mUkRuO3Tcwf0+cpO/m7fExR1uGqpkVHinVeVnNu5f3NKqd5kyZIL/MTvqKUJ6iiXezMnsVk/MdVAPfA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-a11y-utils" "^7.1.1"
|
||||
"@instructure/ui-dialog" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-i18n" "^7.1.1"
|
||||
"@instructure/ui-position" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/ui-view" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
keycode "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-portal@6", "@instructure/ui-portal@^6.24.0", "@instructure/ui-portal@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-portal/-/ui-portal-6.26.0.tgz#ec48a0e4d6cef880e8fe3b2d4d06c537a6120427"
|
||||
|
@ -2413,6 +2624,18 @@
|
|||
"@instructure/ui-utils" "^5.52.3"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-portal@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-portal/-/ui-portal-7.1.1.tgz#af57fbf1e9a93f049065e7f5e40e1b8579654038"
|
||||
integrity sha512-7j4Et5p+v/EaCwzGQwfMDBNX/sf3gDe4RmFLD1tTmvNUtZ4JDbouJT+nkS6R+jxduqiAk/8W3/QX2I6aj8aSbw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-i18n" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-position@^6.24.0", "@instructure/ui-position@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-position/-/ui-position-6.26.0.tgz#9d8a218e17a09d0e973c4b0b4f9be87f83880ac3"
|
||||
|
@ -2431,6 +2654,24 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-position@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-position/-/ui-position-7.1.1.tgz#3dfe92de89e63eb326b543f3df00836415ca90b7"
|
||||
integrity sha512-nq/PslzVmtg75Hu1yLm/A0LM+DvUsEsHbTIb0TNFlthI+vZ3OPDx4Guq14IdrPXGwc+iCsdU9rIAPAY6ZgVhKA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/debounce" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-portal" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-postcss-config@^6.24.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-postcss-config/-/ui-postcss-config-6.24.0.tgz#925ae862208f0a96ddc6b6b1dfe1089ad95bd7b9"
|
||||
|
@ -2484,6 +2725,14 @@
|
|||
"@babel/runtime" "^7"
|
||||
prop-types ">= 15.7.0"
|
||||
|
||||
"@instructure/ui-prop-types@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-prop-types/-/ui-prop-types-7.1.1.tgz#fbb622855474f13311264825f2b41248c9a0a93d"
|
||||
integrity sha512-xajwC9diO7PfpgebPi9PP6oZjVs3Tak9vj5Ad9k569vIyTwPQ6yz8A1QlvtMFeJKBlDalkN5Vnu8PxrXOM2bVA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
prop-types ">= 15.7.0"
|
||||
|
||||
"@instructure/ui-radio-input@6", "@instructure/ui-radio-input@^6.24.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-radio-input/-/ui-radio-input-6.26.0.tgz#ecf53783110f319b0a89641ee51885d17ee48a46"
|
||||
|
@ -2500,6 +2749,22 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-radio-input@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-radio-input/-/ui-radio-input-7.1.1.tgz#361db61029304f107c32f5f69008234678a8ef69"
|
||||
integrity sha512-QGmMLbUQLSQePM/NrIgrTHswbQ7KccIpQYEijhIQleiq8UJumpR9bl4UV6yzwdGEGlGhB68l7EGNAufj1lK3PQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-form-field" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-range-input@^6.24.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-range-input/-/ui-range-input-6.24.0.tgz#7d517a1d9b92925f2ae8cf48aae328b04940d7bc"
|
||||
|
@ -2534,6 +2799,19 @@
|
|||
prop-types "^15"
|
||||
react-lifecycles-compat "^3.0.4"
|
||||
|
||||
"@instructure/ui-react-utils@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-react-utils/-/ui-react-utils-7.1.1.tgz#145141921c8d05bcd26eb9e9c5f0c638e00c7f44"
|
||||
integrity sha512-nfiS91oOsTrQjzN3YSbMyGSpo1D92WvnpE7N/lKsmZ9xKkTqgI3IyA3IFRvK2RDpKW2sQ6+Tb8Bqi3SVFBGV5g==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@emotion/is-prop-valid" "^0.8.3"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-decorator" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-responsive@6":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-responsive/-/ui-responsive-6.26.0.tgz#85a280d16592fbac96259134db5da4badb64344c"
|
||||
|
@ -2638,6 +2916,14 @@
|
|||
"@babel/runtime" "^7.9.2"
|
||||
glamor "^2.20.40"
|
||||
|
||||
"@instructure/ui-stylesheet@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-stylesheet/-/ui-stylesheet-7.1.1.tgz#830aa6d1500e6ca01a2f5ed632853f7db04265ec"
|
||||
integrity sha512-1FxRlSXig/gKO3liUjw8698eedQNcPCCH8f/i+E2TvHML5aiqVF4RoBiNbA6iSqjoYolaHzMRF2vSNYi2lO+Og==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
glamor "^2.20.40"
|
||||
|
||||
"@instructure/ui-svg-images@6", "@instructure/ui-svg-images@^6.24.0", "@instructure/ui-svg-images@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-svg-images/-/ui-svg-images-6.26.0.tgz#331896ca24a0bb4477d05648c0463ea736387603"
|
||||
|
@ -2665,6 +2951,20 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-svg-images@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-svg-images/-/ui-svg-images-7.1.1.tgz#6c1be8b54d54c75e6dcfd59764eae57b427f71b9"
|
||||
integrity sha512-3jlogGGNzJ4VoYyeX3xZUeqd4HUIWegbzYSV/49gbj1wQvH/sDiJimdB+9xH/b+L7QiNUiQ46eWgJUHEqUneXg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-table@6":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-table/-/ui-table-6.26.0.tgz#7ea2140a2d803be3d9e4db26784a59392629fb9f"
|
||||
|
@ -2754,6 +3054,14 @@
|
|||
dependencies:
|
||||
"@instructure/ui-decorator" "^6.26.0"
|
||||
|
||||
"@instructure/ui-testable@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-testable/-/ui-testable-7.1.1.tgz#62534d7da4013444a2ff2e4fc63e06d6b853ef47"
|
||||
integrity sha512-7mEwTEH7dJce3NFi1rpevLHdizUQcem7SH1mtrQNRIjWyTqwY6vxTOTbadBXxNQt1Q+WJLt+4SMpcv/zVlUuVg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-decorator" "^7.1.1"
|
||||
|
||||
"@instructure/ui-text-area@6", "@instructure/ui-text-area@^6.24.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-text-area/-/ui-text-area-6.24.0.tgz#4fdcc63bf998af68d0650bbcb07370ce8aa99a9d"
|
||||
|
@ -2772,6 +3080,24 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-text-area@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-text-area/-/ui-text-area-7.1.1.tgz#4ff42d70d1662abaa9998d8f6131bd20700ca150"
|
||||
integrity sha512-uKfdTL91w/ioB7zERfP3P0pqPDuBDQvXgOm0wRddhQ5aD6wPXxaD5rW7wpjjjehWpNNtvn41hJ81ShvK4cfxJQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/debounce" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-form-field" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-text-input@6", "@instructure/ui-text-input@^6.17.0", "@instructure/ui-text-input@^6.22.0", "@instructure/ui-text-input@^6.24.0", "@instructure/ui-text-input@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-text-input/-/ui-text-input-6.26.0.tgz#bca8609c7457db69a0a30115fc415dfe7785e3f1"
|
||||
|
@ -2834,6 +3160,22 @@
|
|||
prop-types "^15"
|
||||
tinycolor2 "^1.4.1"
|
||||
|
||||
"@instructure/ui-themeable@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-themeable/-/ui-themeable-7.1.1.tgz#ef23fb7d61d2ed6515484e9086681ad973255673"
|
||||
integrity sha512-+N4Ld5Gzb6qqz7eZotUVJVKsuw8b8gQ+hHBR2TxJiJ/xOS8iA54F0FAQ5xsf5MAnq5JETBSDjniFoUpshHamfg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-color-utils" "^7.1.1"
|
||||
"@instructure/ui-decorator" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-stylesheet" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-themes@6", "@instructure/ui-themes@^6.17.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-themes/-/ui-themes-6.24.0.tgz#b0c25beda44f4137fd3e44fe06bd047d5faa0b71"
|
||||
|
@ -2911,6 +3253,41 @@
|
|||
"@instructure/uid" "^6.26.0"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-tooltip@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-tooltip/-/ui-tooltip-7.1.1.tgz#91688a78baf38f0c0dd2894ef3914d41062ae09f"
|
||||
integrity sha512-vX6aFYO+D+urfSfKoBojtcLp6flMyoM2LzNwpXd1cczojDjo7t0X7rvzXoVpdvOj5vY5BUvmi001DsNhi+Zsng==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/ui-popover" "^7.1.1"
|
||||
"@instructure/ui-position" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/uid" "^7.1.1"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-tray@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-tray/-/ui-tray-7.1.1.tgz#6c199b45a2c6aca66a23c13e10e010665c7a8e88"
|
||||
integrity sha512-NSrgR3CHF1jEjRXrbO8U6HCsq39BSjPHexa6hmvoRR0jURZ8TjesHm1Vjua0MglG+ejfFrftxRSIiUNOTST+Zg==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-dialog" "^7.1.1"
|
||||
"@instructure/ui-i18n" "^7.1.1"
|
||||
"@instructure/ui-motion" "^7.1.1"
|
||||
"@instructure/ui-portal" "^7.1.1"
|
||||
"@instructure/ui-position" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-testable" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
"@instructure/ui-utils" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-tree-browser@6", "@instructure/ui-tree-browser@^6.17.0":
|
||||
version "6.24.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-tree-browser/-/ui-tree-browser-6.24.0.tgz#00d1cf56ddb581dd2024e394ec52ece38152a58b"
|
||||
|
@ -2993,6 +3370,19 @@
|
|||
numeral "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-utils@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-utils/-/ui-utils-7.1.1.tgz#91ffc6c60d8e1d837e2126dbbcba4166dedb1805"
|
||||
integrity sha512-ae0kx6fXq91gunCsfpBIYVEOQ/SSNNq7dBb+QZ3NojbZW0WeIzli0xfV7MX82pRFWrLrIKK74eB8fAIOkNNdog==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
bowser "^1.9.4"
|
||||
fast-deep-equal "^2"
|
||||
json-stable-stringify "^1.0.1"
|
||||
keycode "^2"
|
||||
|
||||
"@instructure/ui-view@6", "@instructure/ui-view@^6.17.0", "@instructure/ui-view@^6.24.0", "@instructure/ui-view@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-view/-/ui-view-6.26.0.tgz#d38d842b4b2038d3aea583955c365e5466844001"
|
||||
|
@ -3010,6 +3400,23 @@
|
|||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/ui-view@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/ui-view/-/ui-view-7.1.1.tgz#b3391987cf658c88a0be569dd001e271b0797263"
|
||||
integrity sha512-/ljjuow9H6UUoILt/KuElpoujnT75/PlPax/UnRVJ0Yb9c0r+3iG8uOY/pWuBM/wdm3PAnxti2DMFO38qT32MQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
"@instructure/console" "^7.1.1"
|
||||
"@instructure/ui-color-utils" "^7.1.1"
|
||||
"@instructure/ui-dom-utils" "^7.1.1"
|
||||
"@instructure/ui-i18n" "^7.1.1"
|
||||
"@instructure/ui-position" "^7.1.1"
|
||||
"@instructure/ui-prop-types" "^7.1.1"
|
||||
"@instructure/ui-react-utils" "^7.1.1"
|
||||
"@instructure/ui-themeable" "^7.1.1"
|
||||
classnames "^2"
|
||||
prop-types "^15"
|
||||
|
||||
"@instructure/uid@6", "@instructure/uid@^6.22.0", "@instructure/uid@^6.24.0", "@instructure/uid@^6.26.0":
|
||||
version "6.26.0"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/uid/-/uid-6.26.0.tgz#a98b873c64a5c18db6c41b91a7242fca0b1fcfe7"
|
||||
|
@ -3024,6 +3431,13 @@
|
|||
dependencies:
|
||||
"@babel/runtime" "^7"
|
||||
|
||||
"@instructure/uid@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@instructure/uid/-/uid-7.1.1.tgz#d57571bd3c0044db67d07ba7e305e5305d42bf7c"
|
||||
integrity sha512-KndoAF+dvntATwnk0OXNLML8t7KvAoaKPP70Q3xxvKnKwhkEvxl+TrdqocPiSQ8B6tj63eyVunQQsZ3v3VJmfw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
|
||||
"@jest/console@^24.7.1", "@jest/console@^24.9.0":
|
||||
version "24.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@jest/console/-/console-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0"
|
||||
|
@ -14599,14 +15013,14 @@ merge-source-map@^1.1.0:
|
|||
dependencies:
|
||||
source-map "^0.6.1"
|
||||
|
||||
merge-stream@^1, merge-stream@^1.0.1:
|
||||
merge-stream@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
|
||||
integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=
|
||||
dependencies:
|
||||
readable-stream "^2.0.1"
|
||||
|
||||
merge-stream@^2.0.0:
|
||||
merge-stream@^2, merge-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
||||
|
|
Loading…
Reference in New Issue