mirror of
https://github.com/qlik-oss/nebula.js.git
synced 2025-12-19 17:58:43 -05:00
* chore(deps): update dependency react-router-dom to v7 * chore: additions --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: caele <tsm@qlik.com>
71 lines
2.4 KiB
JavaScript
71 lines
2.4 KiB
JavaScript
import React, { useState } from 'react';
|
|
import OutlinedInput from '@mui/material/OutlinedInput';
|
|
import Grid from '@mui/material/Grid';
|
|
import Button from '@mui/material/Button';
|
|
import { useNavigate } from 'react-router';
|
|
import { useRootContext } from '../../../contexts/RootContext';
|
|
import { getFieldPlaceHolder, shouldDisableSubmitBtn } from '../../../utils';
|
|
|
|
import Error from './Error';
|
|
|
|
export default function FormManager({ info, fields, error, isCredentialProvided }) {
|
|
const navigate = useNavigate();
|
|
const { setError } = useRootContext();
|
|
const [inputs, setInputs] = useState({});
|
|
|
|
const handleUpdateInputs = (evt) => {
|
|
setInputs({
|
|
...inputs,
|
|
[evt.target.name]: evt.target.value,
|
|
});
|
|
};
|
|
|
|
const handleOnSubmit = (evt) => {
|
|
evt.preventDefault();
|
|
setError();
|
|
const url = new URL(inputs['engine-websocket-url']);
|
|
if (inputs['web-integration-id']) url.searchParams.append('qlik-web-integration-id', inputs['web-integration-id']);
|
|
if (inputs['client-id']) url.searchParams.append('qlik-client-id', inputs['client-id']);
|
|
navigate(`/app-list?engine_url=${url.toString().replace('?', '&')}`);
|
|
};
|
|
|
|
return (
|
|
<form onSubmit={handleOnSubmit}>
|
|
<Grid container spacing={2} direction="column" justifyContent="center">
|
|
{fields.map((field, i) => (
|
|
<Grid item xs={12} key={field}>
|
|
<OutlinedInput
|
|
fullWidth
|
|
autoFocus={i === 0}
|
|
disabled={isCredentialProvided && i === 1}
|
|
name={field
|
|
.split(' ')
|
|
.map((x) => x.toLowerCase())
|
|
.join('-')}
|
|
error={info?.invalid}
|
|
placeholder={i === 0 ? field : getFieldPlaceHolder({ field, isCredentialProvided })}
|
|
onChange={(evt) => handleUpdateInputs(evt)}
|
|
/>
|
|
</Grid>
|
|
))}
|
|
|
|
<Grid container item xs={12} alignItems="center">
|
|
<Grid item xs={10}>
|
|
{error && <Error error={error} />}
|
|
</Grid>
|
|
<Grid container item xs={2} direction="row" alignItems="center" justifyContent="flex-end">
|
|
<Button
|
|
type="submit"
|
|
variant="contained"
|
|
size="large"
|
|
disabled={shouldDisableSubmitBtn({ isCredentialProvided, inputs, fields })}
|
|
>
|
|
Connect
|
|
</Button>
|
|
</Grid>
|
|
</Grid>
|
|
</Grid>
|
|
</form>
|
|
);
|
|
}
|