diff options
author | Eric Bailey <git@esb.lol> | 2024-04-09 17:08:02 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-09 15:08:02 -0700 |
commit | c96bc92042e2d5cb2a28736fd7a9dd2593a7b040 (patch) | |
tree | a3ee36404ff38f446459c3b77187c9ec183f267e /src/view/screens/Storybook/Dialogs.tsx | |
parent | a49a5a351d2b58631d067c0524c5ebb097a3d5fe (diff) | |
download | voidsky-c96bc92042e2d5cb2a28736fd7a9dd2593a7b040.tar.zst |
Small logic cleanups (#3449)
* Small logic cleanups * Small logic cleanups (#3451) * remove a few things * oops * stop swallowing the error * queue callbacks * oops * log error if caught * no need to be nullable * move isClosing=true up * reset `isClosing` and `closeCallbacks` on close completion and open * run queued callbacks on `open` if there are any pending * rm unnecessary ref and check * ensure order of calls is always correct * call `snapToIndex()` on open * add tester to storybook --------- Co-authored-by: Hailey <me@haileyok.com>
Diffstat (limited to 'src/view/screens/Storybook/Dialogs.tsx')
-rw-r--r-- | src/view/screens/Storybook/Dialogs.tsx | 137 |
1 files changed, 136 insertions, 1 deletions
diff --git a/src/view/screens/Storybook/Dialogs.tsx b/src/view/screens/Storybook/Dialogs.tsx index 4722784ca..f68f9f4dd 100644 --- a/src/view/screens/Storybook/Dialogs.tsx +++ b/src/view/screens/Storybook/Dialogs.tsx @@ -6,12 +6,13 @@ import {atoms as a} from '#/alf' import {Button, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import * as Prompt from '#/components/Prompt' -import {H3, P} from '#/components/Typography' +import {H3, P, Text} from '#/components/Typography' export function Dialogs() { const scrollable = Dialog.useDialogControl() const basic = Dialog.useDialogControl() const prompt = Prompt.usePromptControl() + const testDialog = Dialog.useDialogControl() const {closeAllDialogs} = useDialogStateControlContext() return ( @@ -60,6 +61,15 @@ export function Dialogs() { <ButtonText>Open prompt</ButtonText> </Button> + <Button + variant="solid" + color="primary" + size="small" + onPress={testDialog.open} + label="one"> + <ButtonText>Open Tester</ButtonText> + </Button> + <Prompt.Outer control={prompt}> <Prompt.TitleText>This is a prompt</Prompt.TitleText> <Prompt.DescriptionText> @@ -122,6 +132,131 @@ export function Dialogs() { </View> </Dialog.ScrollableInner> </Dialog.Outer> + + <Dialog.Outer control={testDialog}> + <Dialog.Handle /> + + <Dialog.ScrollableInner + accessibilityDescribedBy="dialog-description" + accessibilityLabelledBy="dialog-title"> + <View style={[a.relative, a.gap_md, a.w_full]}> + <Text> + Watch the console logs to test each of these dialog edge cases. + Functionality should be consistent across both native and web. If + not then *sad face* something is wrong. + </Text> + + <Button + variant="outline" + color="primary" + size="small" + onPress={() => { + testDialog.close(() => { + console.log('close callback') + }) + }} + label="Close It"> + <ButtonText>Normal Use (Should just log)</ButtonText> + </Button> + + <Button + variant="outline" + color="primary" + size="small" + onPress={() => { + testDialog.close(() => { + console.log('close callback') + }) + + setTimeout(() => { + testDialog.open() + }, 100) + }} + label="Close It"> + <ButtonText> + Calls `.open()` in 100ms (Should log when the animation switches + to open) + </ButtonText> + </Button> + + <Button + variant="outline" + color="primary" + size="small" + onPress={() => { + setTimeout(() => { + testDialog.open() + }, 2e3) + + testDialog.close(() => { + console.log('close callback') + }) + }} + label="Close It"> + <ButtonText> + Calls `.open()` in 2000ms (Should log after close animation and + not log on open) + </ButtonText> + </Button> + + <Button + variant="outline" + color="primary" + size="small" + onPress={() => { + testDialog.close(() => { + console.log('close callback') + }) + setTimeout(() => { + testDialog.close(() => { + console.log('close callback after 100ms') + }) + }, 100) + }} + label="Close It"> + <ButtonText> + Calls `.close()` then again in 100ms (should log twice) + </ButtonText> + </Button> + + <Button + variant="outline" + color="primary" + size="small" + onPress={() => { + testDialog.close(() => { + console.log('close callback') + }) + testDialog.close(() => { + console.log('close callback 2') + }) + }} + label="Close It"> + <ButtonText> + Call `close()` twice immediately (should just log twice) + </ButtonText> + </Button> + + <Button + variant="outline" + color="primary" + size="small" + onPress={() => { + console.log('Step 1') + testDialog.close(() => { + console.log('Step 3') + }) + console.log('Step 2') + }} + label="Close It"> + <ButtonText> + Log before `close()`, after `close()` and in the `close()` + callback. Should be an order of 1 2 3 + </ButtonText> + </Button> + </View> + </Dialog.ScrollableInner> + </Dialog.Outer> </View> ) } |