Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | 1x 1x 1x 1x 1x 4x 1x 1x | /* * Copyright 2021 Harness Inc. All rights reserved. * Use of this source code is governed by the PolyForm Shield 1.0.0 license * that can be found in the licenses directory at the root of this repository, also available at * https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt. */ import React, { createContext, ReactElement, useState } from 'react' import { Dialog, IDialogProps } from '@blueprintjs/core' import { Icon } from '@wings-software/uicore' import css from './DialogWithExtension.module.scss' interface ChildrenProps { triggerExtension: () => void closeExtension: () => void } interface DialogWithExtensionProps { modalProps: IDialogProps dialogStyles?: { width?: number; height?: number } renderExtension?: ReactElement | React.FC } export const DialogWithExtensionContext = createContext<ChildrenProps>({ triggerExtension: () => undefined, closeExtension: () => undefined }) const DialogWithExtension: React.FC<DialogWithExtensionProps> = props => { const [showExtension, setShowExtension] = useState<boolean>(false) const triggerExtension = () => setShowExtension(true) const closeExtension = () => setShowExtension(false) return ( <Dialog {...props.modalProps}> <div style={{ display: 'flex', height: props.dialogStyles?.height || 640 }}> <div style={{ width: props.dialogStyles?.width || 900, position: 'relative' }}> <DialogWithExtensionContext.Provider value={{ triggerExtension, closeExtension }}> {props.children} </DialogWithExtensionContext.Provider> </div> {showExtension && ( <div className={css.extension}> {props.renderExtension} <span className={css.closeBtn} onClick={() => setShowExtension(false)}> <Icon name={'caret-left'} /> </span> </div> )} </div> </Dialog> ) } export default DialogWithExtension |