Browse Source
* NotifyReminderPopup uses a custom Popover * fix Popover resizing in storybook * Prettified Code! --------- Co-authored-by: janWilejan <> Co-authored-by: janWilejan <janWilejan@users.noreply.github.com>pull/3192/head
4 changed files with 80 additions and 26 deletions
@ -0,0 +1,37 @@
@@ -0,0 +1,37 @@
|
||||
|
||||
.anchor { |
||||
position: relative; |
||||
left: 50%; |
||||
width: 0; |
||||
height: 0; |
||||
} |
||||
|
||||
.popover { |
||||
background-color: var(--theme-color-components-primary-button-background); |
||||
position: absolute; |
||||
bottom: 10px; |
||||
right: -20px; |
||||
border-radius: 5px; |
||||
width: max-content; |
||||
} |
||||
|
||||
.popover>.title { |
||||
padding: 10px; |
||||
padding-bottom: 0; |
||||
} |
||||
|
||||
.popover>.content { |
||||
padding: 10px; |
||||
padding-top: 0; |
||||
} |
||||
|
||||
// Popover tail |
||||
.popover::after { |
||||
content: ''; |
||||
border: 10px solid transparent; |
||||
border-top-color: var(--theme-color-components-primary-button-background); |
||||
right: 10px; |
||||
position: absolute; |
||||
} |
||||
|
||||
|
@ -0,0 +1,36 @@
@@ -0,0 +1,36 @@
|
||||
import React, { FC, ReactNode } from 'react'; |
||||
import styles from './Popover.module.scss'; |
||||
|
||||
export type PopoverProps = { |
||||
open: boolean; |
||||
title: ReactNode; |
||||
content: ReactNode; |
||||
children?: ReactNode; |
||||
}; |
||||
|
||||
/// Replace Popover from antd with a custom popover implementation.
|
||||
///
|
||||
/// The popover is positioned relative to its parent (unlike antd's popover,
|
||||
/// which uses absolute positioning on the page).
|
||||
//
|
||||
// TODO the following properties of antd's popover have not been implemented
|
||||
// placement ("topRight" is used as default)
|
||||
// defaultOpen
|
||||
// destroyTooltipOnHide
|
||||
// overlayInnerStyle
|
||||
// color (it uses var(--theme-color-components-primary-button-background))
|
||||
|
||||
export const Popover: FC<PopoverProps> = ({ open, title, content, children }) => ( |
||||
<div style={{ width: 'max-content', height: 'max-content' }}> |
||||
{open && ( |
||||
<div className={styles.anchor}> |
||||
<div className={styles.popover}> |
||||
<div className={styles.title}>{title}</div> |
||||
<hr style={{ color: 'var(--color-owncast-palette-4)' }} /> |
||||
<div className={styles.content}>{content}</div> |
||||
</div> |
||||
</div> |
||||
)} |
||||
{children} |
||||
</div> |
||||
); |
Loading…
Reference in new issue