diff options
author | Sebastian <sebasjm@gmail.com> | 2022-08-15 21:36:53 -0300 |
---|---|---|
committer | Sebastian <sebasjm@gmail.com> | 2022-08-15 21:36:53 -0300 |
commit | 0798aa5cedad2a599829f2b13d4573c64a081c29 (patch) | |
tree | 191ce51f0569c34e124dd20a4a23acecc5f9eae7 /packages/taler-wallet-webextension/src/mui/Popover.tsx | |
parent | cdc8e9afdfb93bd8a90d1e6cf0ea9aa20159e43a (diff) | |
download | wallet-core-0798aa5cedad2a599829f2b13d4573c64a081c29.tar.xz |
modal, popover and portal for select input
Diffstat (limited to 'packages/taler-wallet-webextension/src/mui/Popover.tsx')
-rw-r--r-- | packages/taler-wallet-webextension/src/mui/Popover.tsx | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/packages/taler-wallet-webextension/src/mui/Popover.tsx b/packages/taler-wallet-webextension/src/mui/Popover.tsx new file mode 100644 index 000000000..408f87987 --- /dev/null +++ b/packages/taler-wallet-webextension/src/mui/Popover.tsx @@ -0,0 +1,59 @@ +import { css } from "@linaria/core"; +import { h, JSX, VNode, ComponentChildren } from "preact"; +// eslint-disable-next-line import/extensions +import { alpha } from "./colors/manipulation"; +// eslint-disable-next-line import/extensions +import { theme } from "./style"; + +const baseStyle = css``; + +interface Props { + class: string; + children: ComponentChildren; +} + +export function Popover({ class: _class, children, ...rest }: Props): VNode { + return ( + <div class={[_class, baseStyle].join(" ")} style={{}} {...rest}> + {children} + </div> + ); +} + +function getOffsetTop(rect: any, vertical: any): number { + let offset = 0; + + if (typeof vertical === "number") { + offset = vertical; + } else if (vertical === "center") { + offset = rect.height / 2; + } else if (vertical === "bottom") { + offset = rect.height; + } + + return offset; +} + +function getOffsetLeft(rect: any, horizontal: any): number { + let offset = 0; + + if (typeof horizontal === "number") { + offset = horizontal; + } else if (horizontal === "center") { + offset = rect.width / 2; + } else if (horizontal === "right") { + offset = rect.width; + } + + return offset; +} + +function getTransformOriginValue(transformOrigin): string { + return [transformOrigin.horizontal, transformOrigin.vertical] + .map((n) => (typeof n === "number" ? `${n}px` : n)) + .join(" "); +} + +function resolveAnchorEl(anchorEl: any): any { + return typeof anchorEl === "function" ? anchorEl() : anchorEl; +} |