diff --git a/src/assets/styles/components/_web-ide.scss b/src/assets/styles/components/_web-ide.scss index 6d8148dd0..f4473d66b 100644 --- a/src/assets/styles/components/_web-ide.scss +++ b/src/assets/styles/components/_web-ide.scss @@ -164,14 +164,6 @@ background: rgb(26, 26, 26); } - /* - .root { - display: grid; - grid-template-columns: 150px minmax(0px, auto); - height: 100%; - } - */ - // background: transparent !important; } .file-menu, @@ -296,6 +288,22 @@ } .web-ide { + .button-with-loader { + min-width: 105px; + + &.loading { + color: transparent; + } + + .button-with-loader-icon { + width: 100%; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + } + + } .cancel-button { margin-left: 10px; } diff --git a/src/components/shared/ButtonWithLoader.js b/src/components/shared/ButtonWithLoader.js new file mode 100644 index 000000000..0fbe714bc --- /dev/null +++ b/src/components/shared/ButtonWithLoader.js @@ -0,0 +1,40 @@ +import React, { useState } from 'react'; +import cn from 'classnames'; + +export default function ButtonWithLoader({ className, onClick, disabled, children }) { + + const [ loading, setLoading ] = useState(false); + + return ( + + ); +} + + diff --git a/src/components/shared/webide/index.js b/src/components/shared/webide/index.js index c382bc1c1..09d050be6 100644 --- a/src/components/shared/webide/index.js +++ b/src/components/shared/webide/index.js @@ -88,7 +88,7 @@ function WebIDE({ } async function addProjectFolder(newFolderName) { - onAddProjectFolder(newFolderName, selectedFolder) + await onAddProjectFolder(newFolderName, selectedFolder) // go back to prev window updateActiveEditorWindow(previousActiveEditorWindow, activeEditorWindow); } @@ -384,8 +384,8 @@ function WebIDE({ active={ activeEditorWindow === EDITOR_WINDOWS.DELETE_FILE_WINDOW } selectedFile={ selectedFile } onConfirm={ - () => { - onDeleteFile(selectedFile); + async () => { + await onDeleteFile(selectedFile); setSelectedFile(null); setSelectedFolder(null); updateActiveEditorWindow(EDITOR_WINDOWS.DEFAULT_WINDOW, activeEditorWindow); diff --git a/src/components/shared/webide/windows/DeleteFileWindow.js b/src/components/shared/webide/windows/DeleteFileWindow.js index 54219e960..ebec03b17 100644 --- a/src/components/shared/webide/windows/DeleteFileWindow.js +++ b/src/components/shared/webide/windows/DeleteFileWindow.js @@ -1,5 +1,6 @@ -import React from 'react'; +import React, { useState } from 'react'; import { Card, CardTitle, CardBody } from 'reactstrap'; +import ButtonWithLoader from '../../ButtonWithLoader'; export default function DeleteFileWindow({ active, selectedFile, onConfirm, onCancel }) { @@ -10,14 +11,24 @@ export default function DeleteFileWindow({ active, selectedFile, onConfirm, onCa const {project} = selectedFile; const filepath = selectedFile.path.split(`/${project}/`)[1]; + return (
Delete Confirmation

Are you sure you want to delete file {filepath} from project { project } ?

- - + + Delete + +
diff --git a/src/components/shared/webide/windows/DeleteFolderWindow.js b/src/components/shared/webide/windows/DeleteFolderWindow.js index 12112bb1c..5a75546bb 100644 --- a/src/components/shared/webide/windows/DeleteFolderWindow.js +++ b/src/components/shared/webide/windows/DeleteFolderWindow.js @@ -1,5 +1,6 @@ import React from 'react'; import { Card, CardTitle, CardBody } from 'reactstrap'; +import ButtonWithLoader from '../../ButtonWithLoader'; export default function DeleteFolderWindow({ active, selectedFolder, onConfirm, onCancel }) { @@ -24,7 +25,11 @@ export default function DeleteFolderWindow({ active, selectedFolder, onConfirm, {projectSubdir} from project { project } ?

} - + + Delete + diff --git a/src/components/shared/webide/windows/DeletePackageWindow.js b/src/components/shared/webide/windows/DeletePackageWindow.js index 6f88ade88..cdec8f499 100644 --- a/src/components/shared/webide/windows/DeletePackageWindow.js +++ b/src/components/shared/webide/windows/DeletePackageWindow.js @@ -1,5 +1,6 @@ import React from 'react'; import { Card, CardTitle, CardBody } from 'reactstrap'; +import ButtonWithLoader from '../../ButtonWithLoader'; export default function DeletePackageWindow({ active, selectedPackage, onConfirm, onCancel }) { @@ -15,7 +16,11 @@ export default function DeletePackageWindow({ active, selectedPackage, onConfirm
Delete Confirmation

Are you sure you want to delete package { packageName } ?

- + + Delete +
diff --git a/src/components/shared/webide/windows/NameInput.js b/src/components/shared/webide/windows/NameInput.js index 413b86107..a053712d6 100644 --- a/src/components/shared/webide/windows/NameInput.js +++ b/src/components/shared/webide/windows/NameInput.js @@ -3,11 +3,10 @@ import React, { useState } from 'react'; import cn from 'classnames'; +import ButtonWithLoader from '../../ButtonWithLoader'; export default function NameInput({ onCancel, onConfirm, onEnter, label='', placeholder='', value, validate=() => true }) { - - const [ name, setName ] = useState(value || ''); const [ isValidName, setIsValidName ] = useState(false); @@ -36,7 +35,7 @@ export default function NameInput({ onCancel, onConfirm, onEnter, label='', plac
- { label && } + { label && }
0 && !isValidName }) } @@ -61,15 +60,17 @@ export default function NameInput({ onCancel, onConfirm, onEnter, label='', plac
- - + onClick={ () => onConfirm(name) } + >OK +
);