mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
more UI updates
This commit is contained in:
parent
45eea31d66
commit
ac4ed257af
@ -0,0 +1,49 @@
|
|||||||
|
.info {
|
||||||
|
border-radius: var(--border-radius);
|
||||||
|
padding: calc(var(--spacer) / 2);
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
background-color: var(--background-highlight);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info ul {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.info li {
|
||||||
|
display: inline-block;
|
||||||
|
font-size: var(--font-size-small);
|
||||||
|
margin-right: calc(var(--spacer) / 2);
|
||||||
|
color: var(--color-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.info li.success {
|
||||||
|
color: var(--brand-alert-green);
|
||||||
|
}
|
||||||
|
|
||||||
|
.url {
|
||||||
|
margin: 0;
|
||||||
|
font-size: var(--font-size-base);
|
||||||
|
line-height: var(--line-height);
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
word-wrap: break-word;
|
||||||
|
word-break: break-all;
|
||||||
|
padding-right: calc(var(--spacer) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.warning {
|
||||||
|
margin-top: calc(var(--spacer) / 3);
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.removeButton {
|
||||||
|
cursor: pointer;
|
||||||
|
border: none;
|
||||||
|
position: absolute;
|
||||||
|
top: -0.2rem;
|
||||||
|
right: 0;
|
||||||
|
font-size: var(--font-size-h3);
|
||||||
|
cursor: pointer;
|
||||||
|
color: var(--font-color-text);
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
24
src/components/@shared/FormFields/ContainerInput/Info.tsx
Normal file
24
src/components/@shared/FormFields/ContainerInput/Info.tsx
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import React, { ReactElement } from 'react'
|
||||||
|
import styles from './Info.module.css'
|
||||||
|
|
||||||
|
export default function ImageInfo({
|
||||||
|
image,
|
||||||
|
tag,
|
||||||
|
handleClose
|
||||||
|
}: {
|
||||||
|
image: string
|
||||||
|
tag: string
|
||||||
|
handleClose(): void
|
||||||
|
}): ReactElement {
|
||||||
|
return (
|
||||||
|
<div className={styles.info}>
|
||||||
|
<h3 className={styles.url}>{`${image}:${tag}`}</h3>
|
||||||
|
<ul>
|
||||||
|
<li className={styles.success}>✓ Image found</li>
|
||||||
|
</ul>
|
||||||
|
<button className={styles.removeButton} onClick={handleClose}>
|
||||||
|
×
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
@ -7,11 +7,14 @@ import { LoggerInstance } from '@oceanprotocol/lib'
|
|||||||
import { toast } from 'react-toastify'
|
import { toast } from 'react-toastify'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import isUrl from 'is-url-superb'
|
import isUrl from 'is-url-superb'
|
||||||
|
import ImageInfo from './Info'
|
||||||
|
|
||||||
export default function FilesInput(props: InputProps): ReactElement {
|
export default function ContainerInput(props: InputProps): ReactElement {
|
||||||
const [field, meta, helpers] = useField(props.name)
|
const [field, meta, helpers] = useField(props.name)
|
||||||
const [isLoading, setIsLoading] = useState(false)
|
const [isLoading, setIsLoading] = useState(false)
|
||||||
const { values, setFieldError } = useFormikContext<FormPublishData>()
|
const [isValid, setIsValid] = useState(false)
|
||||||
|
const { values, setFieldError, setFieldValue } =
|
||||||
|
useFormikContext<FormPublishData>()
|
||||||
|
|
||||||
async function getContainerChecksum(
|
async function getContainerChecksum(
|
||||||
image: string,
|
image: string,
|
||||||
@ -52,17 +55,16 @@ export default function FilesInput(props: InputProps): ReactElement {
|
|||||||
setIsLoading(true)
|
setIsLoading(true)
|
||||||
if (!isUrl(container, { lenient: false })) {
|
if (!isUrl(container, { lenient: false })) {
|
||||||
const parsedContainerValue = container.split(':')
|
const parsedContainerValue = container.split(':')
|
||||||
const checksum = await getContainerChecksum(
|
const image = parsedContainerValue[0]
|
||||||
parsedContainerValue[0],
|
const tag = parsedContainerValue[1]
|
||||||
parsedContainerValue[1]
|
const checksum = await getContainerChecksum(image, tag)
|
||||||
)
|
setFieldValue('metadata.dockerImageCustom', image)
|
||||||
values.metadata.dockerImageCustom = parsedContainerValue[0]
|
setFieldValue('metadata.dockerImageCustomTag', tag)
|
||||||
values.metadata.dockerImageCustomTag = parsedContainerValue[1]
|
|
||||||
if (checksum) {
|
if (checksum) {
|
||||||
values.metadata.dockerImageCustomChecksum = checksum
|
setFieldValue('metadata.dockerImageCustomChecksum', checksum)
|
||||||
|
setIsValid(true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
console.log('open input modal')
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setFieldError(`${field.name}[0].url`, error.message)
|
setFieldError(`${field.name}[0].url`, error.message)
|
||||||
@ -73,26 +75,31 @@ export default function FilesInput(props: InputProps): ReactElement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleClose() {
|
function handleClose() {
|
||||||
helpers.setValue(meta.initialValue)
|
setFieldValue('metadata.dockerImageCustom', '')
|
||||||
|
setFieldValue('metadata.dockerImageCustomTag', '')
|
||||||
|
setFieldValue('metadata.dockerImageCustomChecksum', '')
|
||||||
|
setIsValid(false)
|
||||||
helpers.setTouched(false)
|
helpers.setTouched(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
{isValid ? (
|
||||||
|
<ImageInfo
|
||||||
|
image={values.metadata.dockerImageCustom}
|
||||||
|
tag={values.metadata.dockerImageCustomTag}
|
||||||
|
handleClose={handleClose}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
<UrlInput
|
<UrlInput
|
||||||
submitText="Check"
|
submitText="Use"
|
||||||
{...props}
|
{...props}
|
||||||
name={`${field.name}[0].url`}
|
name={`${field.name}[0].url`}
|
||||||
checkUrl={false}
|
checkUrl={false}
|
||||||
isLoading={isLoading}
|
isLoading={isLoading}
|
||||||
handleButtonClick={handleValidation}
|
handleButtonClick={handleValidation}
|
||||||
/>
|
/>
|
||||||
|
)}
|
||||||
{/* {field?.value?.[0]?.valid === true ? (
|
|
||||||
<FileInfo file={field.value[0]} handleClose={handleClose} />
|
|
||||||
) : (
|
|
||||||
|
|
||||||
)} */}
|
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -129,7 +129,7 @@ export default function MetadataFields(): ReactElement {
|
|||||||
)}
|
)}
|
||||||
component={Input}
|
component={Input}
|
||||||
name="metadata.dockerImageCustomChecksum"
|
name="metadata.dockerImageCustomChecksum"
|
||||||
disabled
|
disabled={values.metadata.dockerImageCustomChecksum !== null}
|
||||||
/>
|
/>
|
||||||
<Field
|
<Field
|
||||||
{...getFieldContent(
|
{...getFieldContent(
|
||||||
|
Loading…
Reference in New Issue
Block a user