mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
* fix(react-wait): add missing createWaitingContext and waiters definitions * fix: missing semicolons
72 lines
1.7 KiB
TypeScript
72 lines
1.7 KiB
TypeScript
import { useWait, Waiter } from 'react-wait';
|
|
|
|
const Spinner = () => <img src="https://a.com/spinner.gif" />;
|
|
|
|
function A() {
|
|
const { isWaiting } = useWait();
|
|
return (
|
|
<div>
|
|
{isWaiting('creating user')
|
|
? 'Creating User...'
|
|
: 'Nothing happens'}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
function B() {
|
|
const { anyWaiting } = useWait();
|
|
return (
|
|
<div>
|
|
{anyWaiting() ? 'Something happening on app...' : 'Nothing happens'}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
function C() {
|
|
const { startWaiting, endWaiting, isWaiting, Wait } = useWait();
|
|
|
|
function createUser() {
|
|
startWaiting('creating user');
|
|
// Faking the async work:
|
|
setTimeout(() => {
|
|
endWaiting('creating user');
|
|
}, 1000);
|
|
}
|
|
|
|
return (
|
|
<button disabled={isWaiting('creating user')} onClick={createUser}>
|
|
<Wait on="creating user" fallback={<Spinner />}>
|
|
Create User
|
|
</Wait>
|
|
</button>
|
|
);
|
|
}
|
|
|
|
const MyComponent = () => (
|
|
<Waiter>
|
|
<C />
|
|
</Waiter>
|
|
);
|
|
|
|
function testCreateWaitingContext() {
|
|
const { createWaitingContext } = useWait();
|
|
const { startWaiting, endWaiting, isWaiting, Wait } = createWaitingContext('creating user');
|
|
return (
|
|
<div>
|
|
<Wait fallback={<Spinner />}>
|
|
<button onClick={startWaiting}>Create user</button>
|
|
</Wait>
|
|
<button disabled={isWaiting()} onClick={endWaiting}>Cancel</button>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
function testWaiters() {
|
|
const { waiters } = useWait();
|
|
return (
|
|
<ul>
|
|
{waiters.map((waiter, index) => <li key={index}>{waiter}</li>)}
|
|
</ul>
|
|
);
|
|
}
|