Dialog

Dialogs inform users about a task and can contain critical information, require decisions, or involve multiple tasks.

Installyarn add @diallink-corp/convergo-react-dialog
Version4.1.2
Usageimport {Dialog} from '@diallink-corp/convergo-react-dialog'

Example

The Dialog component can be opened either through a DialogTrigger or a DialogContainer.

This is an example with the DialogTrigger component, which accepts a button and the dialog as a child.

<DialogTrigger>
  <Button>Proceed</Button>
  {(close) => (
    <Dialog isDismissable>
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>Proceed</Button>
  {(close) => (
    <Dialog isDismissable>
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>
    Proceed
  </Button>
  {(close) => (
    <Dialog
      isDismissable
    >
      <Header>
        <Heading
          level={2}
        >
          Proceed with
          Action
        </Heading>
      </Header>
      <Content>
        <Paragraph
          level={2}
        >
          Do you want
          to proceed
          with your
          action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button
            variant="outlined"
            onPress={close}
          >
            Cancel
          </Button>
          <Button
            variant="contained"
            onPress={close}
          >
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>

To programmatically open or close the Dialog, you can use the DialogContainer component.

function Example() {
  const [isOpen, setOpen] = useState(false);

  return (
    <>
      <Button variant="contained" onPress={() => setOpen(true)}>
        Open Dialog
      </Button>
      <DialogContainer onDismiss={() => setOpen(false)}>
        {isOpen && (
          <Dialog>
            <Header>
              <Heading level={2}>Proceed with Action</Heading>
            </Header>
            <Content>
              <Paragraph level={2}>
                Do you want to proceed with your action?
              </Paragraph>
            </Content>
            <Footer>
              <ButtonGroup>
                <Button variant="outlined" onPress={() => setOpen(false)}>
                  Cancel
                </Button>
                <Button variant="contained" onPress={() => setOpen(false)}>
                  Confirm
                </Button>
              </ButtonGroup>
            </Footer>
          </Dialog>
        )}
      </DialogContainer>
    </>
  );
}
function Example() {
  const [isOpen, setOpen] = useState(false);

  return (
    <>
      <Button
        variant="contained"
        onPress={() => setOpen(true)}
      >
        Open Dialog
      </Button>
      <DialogContainer onDismiss={() => setOpen(false)}>
        {isOpen && (
          <Dialog>
            <Header>
              <Heading level={2}>
                Proceed with Action
              </Heading>
            </Header>
            <Content>
              <Paragraph level={2}>
                Do you want to proceed with your action?
              </Paragraph>
            </Content>
            <Footer>
              <ButtonGroup>
                <Button
                  variant="outlined"
                  onPress={() => setOpen(false)}
                >
                  Cancel
                </Button>
                <Button
                  variant="contained"
                  onPress={() => setOpen(false)}
                >
                  Confirm
                </Button>
              </ButtonGroup>
            </Footer>
          </Dialog>
        )}
      </DialogContainer>
    </>
  );
}
function Example() {
  const [
    isOpen,
    setOpen
  ] = useState(false);

  return (
    <>
      <Button
        variant="contained"
        onPress={() =>
          setOpen(true)}
      >
        Open Dialog
      </Button>
      <DialogContainer
        onDismiss={() =>
          setOpen(false)}
      >
        {isOpen && (
          <Dialog>
            <Header>
              <Heading
                level={2}
              >
                Proceed
                with
                Action
              </Heading>
            </Header>
            <Content>
              <Paragraph
                level={2}
              >
                Do you
                want to
                proceed
                with your
                action?
              </Paragraph>
            </Content>
            <Footer>
              <ButtonGroup>
                <Button
                  variant="outlined"
                  onPress={() =>
                    setOpen(
                      false
                    )}
                >
                  Cancel
                </Button>
                <Button
                  variant="contained"
                  onPress={() =>
                    setOpen(
                      false
                    )}
                >
                  Confirm
                </Button>
              </ButtonGroup>
            </Footer>
          </Dialog>
        )}
      </DialogContainer>
    </>
  );
}

Sizes

The Dialog component supports several sizes.

<DialogTrigger>
  <Button>Small</Button>
  {(close) => (
    <Dialog size="small">
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>Small</Button>
  {(close) => (
    <Dialog size="small">
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>
    Small
  </Button>
  {(close) => (
    <Dialog size="small">
      <Header>
        <Heading
          level={2}
        >
          Proceed with
          Action
        </Heading>
      </Header>
      <Content>
        <Paragraph
          level={2}
        >
          Do you want
          to proceed
          with your
          action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button
            variant="outlined"
            onPress={close}
          >
            Cancel
          </Button>
          <Button
            variant="contained"
            onPress={close}
          >
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>Medium</Button>
  {(close) => (
    <Dialog size="medium">
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>Medium</Button>
  {(close) => (
    <Dialog size="medium">
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>
    Medium
  </Button>
  {(close) => (
    <Dialog size="medium">
      <Header>
        <Heading
          level={2}
        >
          Proceed with
          Action
        </Heading>
      </Header>
      <Content>
        <Paragraph
          level={2}
        >
          Do you want
          to proceed
          with your
          action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button
            variant="outlined"
            onPress={close}
          >
            Cancel
          </Button>
          <Button
            variant="contained"
            onPress={close}
          >
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>Large</Button>
  {(close) => (
    <Dialog size="large">
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>Large</Button>
  {(close) => (
    <Dialog size="large">
      <Header>
        <Heading level={2}>Proceed with Action</Heading>
      </Header>
      <Content>
        <Paragraph level={2}>
          Do you want to proceed with your action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button variant="outlined" onPress={close}>
            Cancel
          </Button>
          <Button variant="contained" onPress={close}>
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>
<DialogTrigger>
  <Button>
    Large
  </Button>
  {(close) => (
    <Dialog size="large">
      <Header>
        <Heading
          level={2}
        >
          Proceed with
          Action
        </Heading>
      </Header>
      <Content>
        <Paragraph
          level={2}
        >
          Do you want
          to proceed
          with your
          action?
        </Paragraph>
      </Content>
      <Footer>
        <ButtonGroup>
          <Button
            variant="outlined"
            onPress={close}
          >
            Cancel
          </Button>
          <Button
            variant="contained"
            onPress={close}
          >
            Confirm
          </Button>
        </ButtonGroup>
      </Footer>
    </Dialog>
  )}
</DialogTrigger>