parent
1f19dfabf6
commit
e160d3861f
@ -0,0 +1,9 @@
|
||||
function Messages(props) {
|
||||
return props.messages
|
||||
.filter((item) => item.status != 'OK')
|
||||
.map((item, ind) => (
|
||||
<div key={`messages_${ind}`}>{JSON.stringify(item)}</div>
|
||||
));
|
||||
}
|
||||
|
||||
export default Messages;
|
||||
@ -0,0 +1,12 @@
|
||||
.payment_container {
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.payment_form {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.payment_messages {
|
||||
float: left;
|
||||
max-width: 25%;
|
||||
}
|
||||
@ -0,0 +1,41 @@
|
||||
import { useMemo, useState } from 'react';
|
||||
import Form from './Form.jsx';
|
||||
import Messages from './Messages.jsx';
|
||||
import './Payment.css';
|
||||
|
||||
function Payment() {
|
||||
const [messages, setMessages] = useState([]);
|
||||
|
||||
const fillMessages = (data) => {
|
||||
setMessages(data);
|
||||
};
|
||||
|
||||
const cachedForm = useMemo(() => <Form fillMessages={fillMessages} />, []);
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="payment_container">
|
||||
<div
|
||||
className="payment_form"
|
||||
style={{
|
||||
width:
|
||||
messages.fields?.filter((item) => item.status != 'OK')?.length > 0
|
||||
? '75%'
|
||||
: '100%',
|
||||
}}
|
||||
>
|
||||
{cachedForm}
|
||||
</div>
|
||||
{messages.fields?.length > 0 ? (
|
||||
<div className="payment_messages">
|
||||
<Messages
|
||||
messages={messages.fields?.filter((item) => item.status != 'OK')}
|
||||
/>
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default Payment;
|
||||
@ -1,4 +1,4 @@
|
||||
import { createRoot } from 'react-dom/client';
|
||||
import Form from './Form.jsx';
|
||||
import Payment from './Payment.jsx';
|
||||
|
||||
createRoot(document.getElementById('root')).render(<Form />);
|
||||
createRoot(document.getElementById('root')).render(<Payment />);
|
||||
|
||||
Loading…
Reference in new issue