@vuu-ui/vuu-popups 0.6.21 → 0.6.22-debug
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/index.js +1311 -1
- package/cjs/index.js.map +2 -2
- package/esm/index.js +1296 -1
- package/esm/index.js.map +2 -2
- package/index.css +150 -1
- package/index.css.map +1 -1
- package/package.json +2 -2
package/esm/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/vuu-popups/src/dialog/Dialog.tsx", "../../../packages/vuu-popups/src/portal/Portal.tsx", "../../../packages/vuu-popups/src/portal/render-portal.tsx", "../../../packages/vuu-popups/src/portal/portal-utils.ts", "../../../packages/vuu-popups/src/menu/ContextMenu.tsx", "../../../packages/vuu-popups/src/menu/MenuList.tsx", "../../../packages/vuu-popups/src/menu/use-keyboard-navigation.ts", "../../../packages/vuu-popups/src/menu/utils.ts", "../../../packages/vuu-popups/src/menu/key-code.ts", "../../../packages/vuu-popups/src/menu/use-items-with-ids.ts", "../../../packages/vuu-popups/src/menu/use-cascade.ts", "../../../packages/vuu-popups/src/menu/list-dom-utils.ts", "../../../packages/vuu-popups/src/menu/use-click-away.ts", "../../../packages/vuu-popups/src/menu/context-menu-provider.tsx", "../../../packages/vuu-popups/src/menu/useContextMenu.tsx", "../../../packages/vuu-popups/src/popup/popup-service.ts"],
|
|
4
4
|
"sourcesContent": ["import { Scrim, Toolbar, ToolbarButton } from \"@heswell/salt-lab\";\nimport { Text } from \"@salt-ds/core\";\nimport cx from \"classnames\";\nimport { HTMLAttributes, useCallback, useRef, useState } from \"react\";\nimport { Portal } from \"../portal\";\n\nimport \"./Dialog.css\";\n\nconst classBase = \"vuuDialog\";\n\nexport interface DialogProps extends HTMLAttributes<HTMLDivElement> {\n isOpen?: boolean;\n onClose?: () => void;\n}\n\nexport const Dialog = ({\n children,\n className,\n isOpen = false,\n onClose,\n title,\n ...props\n}: DialogProps) => {\n const root = useRef<HTMLDivElement>(null);\n const [posX] = useState(0);\n const [posY] = useState(0);\n\n const close = useCallback(() => {\n onClose?.();\n }, [onClose]);\n\n const handleRender = useCallback(() => {\n // if (center && isOpen && root.current) {\n // const { width, height } = root.current.getBoundingClientRect();\n // const { innerWidth, innerHeight } = window;\n // const x = innerWidth / 2 - width / 2;\n // const y = innerHeight / 2 - height / 2;\n // setPosX(x);\n // setPosY(y);\n // }\n }, []);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n <Portal onRender={handleRender} x={posX} y={posY}>\n <Scrim className={`${classBase}-scrim`} open={isOpen}>\n <div {...props} className={cx(classBase, className)} ref={root}>\n <Toolbar className={`${classBase}-header`}>\n <Text>{title}</Text>\n <ToolbarButton\n key=\"close\"\n onClick={close}\n data-align-end\n data-icon=\"close\"\n />\n </Toolbar>\n {children}\n </div>\n </Scrim>\n </Portal>\n );\n};\n", "import { ReactElement, useLayoutEffect, useMemo } from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createContainer, renderPortal } from \"./render-portal\";\n\nexport interface PortalProps {\n children: ReactElement;\n onRender?: () => void;\n x?: number;\n y?: number;\n}\n\nexport const Portal = function Portal({\n children,\n x = 0,\n y = 0,\n onRender,\n}: PortalProps) {\n // Do we need to accept container here as a prop ?\n const renderContainer = useMemo(() => {\n return createContainer();\n }, []);\n\n useLayoutEffect(() => {\n renderPortal(children, renderContainer, x, y, onRender);\n }, [children, onRender, renderContainer, x, y]);\n\n useLayoutEffect(() => {\n return () => {\n if (renderContainer) {\n ReactDOM.unmountComponentAtNode(renderContainer);\n if (renderContainer.classList.contains(\"vuuPopup\")) {\n renderContainer.parentElement?.removeChild(renderContainer);\n }\n }\n };\n }, [renderContainer]);\n\n // useLayoutEffect(() => {\n // renderContainer.current = renderPortal(children, x, y, container)\n // return () => {\n // if (renderContainer.current){\n // console.log('EXPLICIT UNMOUNT')\n // ReactDOM.unmountComponentAtNode(renderContainer.current);\n // if (renderContainer.current.classList.contains('hwReactPopup')){\n // renderContainer.current.parentElement.removeChild(renderContainer.current);\n // renderContainer.current = null;\n // }\n // }\n // }\n // },[])\n return null;\n};\n", "import * as ReactDOM from \"react-dom\";\nimport { SaltProvider } from \"@salt-ds/core\";\nimport { ReactElement } from \"react\";\n\nlet containerId = 1;\n\nconst getPortalContainer = (x = 0, y = 0, win = window) => {\n const el = win.document.createElement(\"div\");\n el.className = \"vuuPopup \" + containerId++;\n el.style.cssText = `left:${x}px; top:${y}px;`;\n win.document.body.appendChild(el);\n return el;\n};\n\nconst createDOMContainer = (x?: number, y?: number) => getPortalContainer(x, y);\n\nexport const renderPortal = (\n component: ReactElement,\n container: HTMLElement,\n x: number,\n y: number,\n onRender?: () => void\n) => {\n // check this first to see if position has changed\n container.style.cssText = `left:${x}px; top:${y}px;position: absolute;`;\n\n ReactDOM.render(\n <SaltProvider applyClassesTo=\"child\">{component}</SaltProvider>,\n container,\n onRender\n );\n};\n\nexport const createContainer = createDOMContainer;\n", "export const installTheme = (themeId: string) => {\n const installedThemes = getComputedStyle(document.body).getPropertyValue(\n \"--installed-themes\"\n );\n document.body.style.setProperty(\n \"--installed-themes\",\n `${installedThemes} ${themeId}`\n );\n};\n", "import { useIdMemo as useId } from \"@salt-ds/core\";\nimport { useCallback, useRef } from \"react\";\nimport { Portal } from \"../portal\";\nimport MenuList, { MenuListProps } from \"./MenuList\";\nimport { getItemId, getMenuId, useCascade } from \"./use-cascade\";\nimport { useClickAway } from \"./use-click-away\";\nimport { useItemsWithIds } from \"./use-items-with-ids\";\n\nexport interface ContextMenuProps extends Omit<MenuListProps, \"onCloseMenu\"> {\n onClose?: (menuId?: string, options?: unknown) => void;\n position?: { x: number; y: number };\n withPortal?: boolean;\n}\n\nconst noop = () => undefined;\n\nexport const ContextMenu = ({\n activatedByKeyboard,\n children: childrenProp,\n className,\n id: idProp,\n onClose = () => undefined,\n position = { x: 0, y: 0 },\n style,\n ...menuListProps\n}: ContextMenuProps) => {\n const id = useId(idProp);\n const closeMenuRef = useRef<(location?: string) => void>(noop);\n const [menus, actions] = useItemsWithIds(childrenProp);\n const navigatingWithKeyboard = useRef(activatedByKeyboard);\n const handleMouseEnterItem = useCallback(() => {\n navigatingWithKeyboard.current = false;\n }, []);\n\n const handleActivate = useCallback(\n (menuId: string) => {\n const { action, options } = actions[menuId];\n closeMenuRef.current(\"root\");\n onClose(action, options);\n },\n [actions, onClose]\n );\n\n const { closeMenu, listItemProps, openMenu, openMenus, handleRender } =\n useCascade({\n id,\n onActivate: handleActivate,\n onMouseEnterItem: handleMouseEnterItem,\n position,\n });\n closeMenuRef.current = closeMenu;\n\n console.log({ openMenus });\n\n const handleClose = useCallback(() => {\n closeMenu();\n onClose();\n }, [closeMenu, onClose]);\n\n useClickAway({\n containerClassName: \"vuuMenuList\",\n onClose: handleClose,\n isOpen: openMenus.length > 0,\n });\n\n const handleOpenMenu = (id: string) => {\n const itemId = getItemId(id);\n const menuId = getMenuId(itemId);\n navigatingWithKeyboard.current = true;\n openMenu(menuId, itemId);\n };\n const handleCloseMenu = () => {\n navigatingWithKeyboard.current = true;\n closeMenu();\n };\n\n const handleHighlightMenuItem = () => {\n // console.log(`highlight ${idx}`);\n };\n\n const lastMenu = openMenus.length - 1;\n\n const getChildMenuIndex = (i: number) => {\n if (i >= lastMenu) {\n return -1;\n } else {\n const { id: menuId } = openMenus[i + 1];\n const pos = menuId.lastIndexOf(\".\");\n const idx =\n pos === -1 ? parseInt(menuId, 10) : parseInt(menuId.slice(-pos), 10);\n return idx;\n }\n };\n\n return (\n <>\n {openMenus.map(({ id: menuId, left, top }, i) => {\n const childMenuIndex = getChildMenuIndex(i);\n\n return (\n <Portal key={i} x={left} y={top} onRender={handleRender}>\n <MenuList\n {...menuListProps}\n activatedByKeyboard={navigatingWithKeyboard.current}\n childMenuShowing={childMenuIndex}\n className={className}\n id={id}\n menuId={menuId}\n isRoot={i === 0}\n key={i}\n listItemProps={listItemProps}\n onActivate={handleActivate}\n onHighlightMenuItem={handleHighlightMenuItem}\n onCloseMenu={handleCloseMenu}\n onOpenMenu={handleOpenMenu}\n style={style}\n >\n {menus[menuId]}\n </MenuList>\n </Portal>\n );\n })}\n </>\n );\n};\n\nContextMenu.displayName = \"ContextMenu\";\n", "import React, {\n FC,\n HTMLAttributes,\n ReactElement,\n useLayoutEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport cx from \"classnames\";\nimport { useIdMemo as useId } from \"@salt-ds/core\";\nimport { useKeyboardNavigation } from \"./use-keyboard-navigation\";\nimport { isMenuItemGroup } from \"./use-items-with-ids\";\n\nimport \"./MenuList.css\";\n\nconst classBase = \"vuuMenuList\";\n\nexport const Separator = () => <li className=\"vuuMenuItem-divider\" />;\n\nexport interface MenuItemGroupProps {\n children: ReactElement<MenuItemProps>[];\n label: string;\n}\n\nexport interface MenuItemProps extends HTMLAttributes<HTMLDivElement> {\n action?: string;\n idx?: number;\n options?: unknown;\n}\n\n// Purely used as markers, props will be extracted\nexport const MenuItemGroup: FC<MenuItemGroupProps> = () => null;\n// eslint-disable-next-line no-unused-vars\nexport const MenuItem = ({ children, idx, ...props }: MenuItemProps) => {\n return <div {...props}>{children}</div>;\n};\n\nconst hasIcon = (child: ReactElement) => child.props[\"data-icon\"];\n\nexport interface MenuListProps extends HTMLAttributes<HTMLDivElement> {\n activatedByKeyboard?: boolean;\n children: ReactElement[];\n childMenuShowing?: number;\n highlightedIdx?: number;\n isRoot?: boolean;\n listItemProps?: Partial<MenuItemProps>;\n menuId?: string;\n onActivate?: (menuId: string) => void;\n onCloseMenu: (idx: number) => void;\n onOpenMenu?: (menuId: string) => void;\n onHighlightMenuItem?: (idx: number) => void;\n}\n\nconst MenuList = ({\n activatedByKeyboard,\n childMenuShowing = -1,\n children,\n className,\n highlightedIdx: highlightedIdxProp,\n id: idProp,\n isRoot,\n listItemProps,\n menuId,\n onHighlightMenuItem,\n onActivate,\n onCloseMenu,\n onOpenMenu,\n ...props\n}: MenuListProps) => {\n const id = useId(idProp);\n const root = useRef<HTMLDivElement>(null);\n\n // The id generation be,ongs in useIttemsWithIds\n const mapIdxToId = useMemo(() => new Map(), []);\n\n const handleOpenMenu = (idx: number) => {\n const el = root.current?.querySelector(`:scope > [data-idx='${idx}']`);\n el?.id && onOpenMenu?.(el.id);\n };\n\n const handleActivate = (idx: number) => {\n const el = root.current?.querySelector(`:scope > [data-idx='${idx}']`);\n el?.id && onActivate?.(el.id);\n };\n\n const { focusVisible, highlightedIndex, listProps } = useKeyboardNavigation({\n count: React.Children.count(children),\n highlightedIndex: highlightedIdxProp,\n onActivate: handleActivate,\n onHighlight: onHighlightMenuItem,\n onOpenMenu: handleOpenMenu,\n onCloseMenu,\n });\n\n const appliedFocusVisible = childMenuShowing == -1 ? focusVisible : -1;\n\n useLayoutEffect(() => {\n if (childMenuShowing === -1 && activatedByKeyboard) {\n root.current?.focus();\n }\n }, [activatedByKeyboard, childMenuShowing]);\n\n const getActiveDescendant = () =>\n highlightedIndex === undefined || highlightedIndex === -1\n ? undefined\n : mapIdxToId.get(highlightedIndex);\n\n return (\n <div\n {...props}\n {...listProps}\n aria-activedescendant={getActiveDescendant()}\n className={cx(classBase, className, {\n [`${classBase}-childMenuShowing`]: childMenuShowing !== -1,\n })}\n data-root={isRoot || undefined}\n id={`${id}-${menuId}`}\n ref={root}\n role=\"menu\"\n tabIndex={0}\n >\n {renderContent()}\n </div>\n );\n\n function renderContent() {\n const propsCommonToAllListItems = {\n ...listItemProps,\n role: \"menuitem\",\n };\n\n const maybeIcon = (\n childElement: ReactElement,\n withIcon: boolean,\n iconName?: string\n ) =>\n withIcon\n ? [\n <span\n className=\"vuuIconContainer\"\n data-icon={iconName}\n key=\"icon\"\n />,\n ].concat(childElement)\n : childElement;\n\n function addClonedChild(\n list: ReactElement[],\n child: ReactElement,\n idx: number,\n withIcon: boolean\n ) {\n const {\n children,\n className,\n \"data-icon\": iconName,\n id: itemId,\n hasSeparator,\n label,\n ...props\n } = child.props;\n const hasSubMenu = isMenuItemGroup(child);\n const subMenuShowing = hasSubMenu && childMenuShowing === idx;\n const ariaControls = subMenuShowing ? `${id}-${itemId}` : undefined;\n\n list.push(\n <MenuItem\n {...props}\n {...propsCommonToAllListItems}\n {...getMenuItemProps(\n `${id}-${menuId}`,\n itemId,\n idx,\n child.key ?? itemId,\n highlightedIndex,\n appliedFocusVisible,\n className,\n hasSeparator\n )}\n aria-controls={ariaControls}\n aria-haspopup={hasSubMenu || undefined}\n aria-expanded={subMenuShowing || undefined}\n >\n {hasSubMenu\n ? maybeIcon(label, withIcon, iconName)\n : maybeIcon(children, withIcon, iconName)}\n </MenuItem>\n );\n // mapIdxToId.set(idx, itemId);\n }\n\n const listItems: ReactElement[] = [];\n\n if (children.length > 0) {\n const withIcon = children.some(hasIcon);\n\n children.forEach((child, idx) => {\n addClonedChild(listItems, child, idx, withIcon);\n });\n }\n\n return listItems;\n }\n};\n\nconst getMenuItemProps = (\n baseId: string,\n itemId: string,\n idx: number,\n key: string,\n highlightedIdx: number,\n focusVisible: number,\n className: string,\n hasSeparator: boolean\n) => ({\n id: `${baseId}-${itemId}`,\n key: key ?? idx,\n \"data-idx\": idx,\n \"data-highlighted\": idx === highlightedIdx || undefined,\n className: cx(\"vuuMenuItem\", className, {\n \"vuuMenuItem-separator\": hasSeparator,\n focusVisible: focusVisible === idx,\n }),\n});\n\nMenuList.displayName = \"MenuList\";\nexport default MenuList;\n", "import {\n FocusEvent,\n KeyboardEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { hasPopup, isRoot } from \"./utils\";\nimport { isNavigationKey } from \"./key-code\";\n\nexport interface KeyboardNavigationProps {\n autoHighlightFirstItem?: boolean;\n count: number;\n highlightedIndex?: number;\n onActivate: (idx: number) => void;\n onHighlight?: (idx: number) => void;\n onCloseMenu: (idx: number) => void;\n onOpenMenu: (idx: number) => void;\n}\n\nexport interface KeyboardHookListProps {\n // onBlur: (evt: FocusEvent) => void;\n onFocus: (evt: FocusEvent) => void;\n onKeyDown: (evt: KeyboardEvent) => void;\n onMouseDownCapture: () => void;\n onMouseMove: () => void;\n onMouseLeave: () => void;\n}\n\nexport interface NavigationHookResult {\n focusVisible: number;\n controlledHighlighting: boolean;\n highlightedIndex: number;\n setHighlightedIndex: (idx: number) => void;\n // keyboardNavigation: RefObject<boolean>;\n listProps: KeyboardHookListProps;\n setIgnoreFocus: (ignoreFocus: boolean) => void;\n}\n\n// we need a way to set highlightedIdx when selection changes\nexport const useKeyboardNavigation = ({\n autoHighlightFirstItem = false,\n count,\n highlightedIndex: highlightedIndexProp,\n onActivate,\n onHighlight,\n // onKeyDown,\n onCloseMenu,\n onOpenMenu,\n}: KeyboardNavigationProps): NavigationHookResult => {\n // const prevCount = useRef(count);\n const highlightedIndexRef = useRef(\n highlightedIndexProp ?? autoHighlightFirstItem ? 0 : -1\n );\n const [, forceRender] = useState<unknown>(null);\n const controlledHighlighting = highlightedIndexProp !== undefined;\n\n // count will not work for this, as it will change when we expand collapse groups\n // if (count !== prevCount.current) {\n // prevCount.current = count;\n // if (highlightedIndexRef.current !== -1){\n // highlightedIndexRef.current = autoHighlightFirstItem ? 0 : -1;\n // }\n // }\n\n const setHighlightedIdx = useCallback(\n (idx) => {\n highlightedIndexRef.current = idx;\n onHighlight?.(idx);\n forceRender({});\n },\n [onHighlight]\n );\n\n const setHighlightedIndex = useCallback(\n (idx) => {\n if (idx !== highlightedIndexRef.current) {\n if (!controlledHighlighting) {\n setHighlightedIdx(idx);\n }\n }\n },\n [controlledHighlighting, setHighlightedIdx]\n );\n\n // does this belong here or should it be a method passed in?\n const keyBoardNavigation = useRef(true);\n const ignoreFocus = useRef(false);\n const setIgnoreFocus = (value: boolean) => (ignoreFocus.current = value);\n\n const highlightedIndex = controlledHighlighting\n ? highlightedIndexProp\n : highlightedIndexRef.current;\n\n const navigateChildldItems = useCallback(\n (e: KeyboardEvent) => {\n const nextIdx = nextItemIdx(count, e.key, highlightedIndexRef.current);\n if (nextIdx !== highlightedIndexRef.current) {\n setHighlightedIndex(nextIdx);\n }\n },\n [count, setHighlightedIndex]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (isNavigationKey(e)) {\n e.preventDefault();\n e.stopPropagation();\n keyBoardNavigation.current = true;\n navigateChildldItems(e);\n } else if (\n (e.key === \"ArrowRight\" || e.key === \"Enter\") &&\n hasPopup(e.target as HTMLElement, highlightedIndex)\n ) {\n onOpenMenu(highlightedIndex);\n } else if (e.key === \"ArrowLeft\" && !isRoot(e.target as HTMLElement)) {\n onCloseMenu(highlightedIndex);\n } else if (e.key === \"Enter\") {\n onActivate && onActivate(highlightedIndex);\n }\n },\n [\n highlightedIndex,\n navigateChildldItems,\n onActivate,\n onCloseMenu,\n onOpenMenu,\n ]\n );\n\n const listProps: KeyboardHookListProps = useMemo(\n () => ({\n onFocus: () => {\n if (highlightedIndex === -1) {\n setHighlightedIdx(0);\n }\n },\n onKeyDown: handleKeyDown,\n onMouseDownCapture: () => {\n keyBoardNavigation.current = false;\n setIgnoreFocus(true);\n },\n\n // onMouseEnter would seem less expensive but it misses some cases\n onMouseMove: () => {\n if (keyBoardNavigation.current) {\n keyBoardNavigation.current = false;\n }\n },\n onMouseLeave: () => {\n // label === 'ParsedInput' && console.log(`%c[useKeyboardNavigationHook]<${label}> onMouseLeave`,'color:brown')\n keyBoardNavigation.current = true;\n setIgnoreFocus(false);\n setHighlightedIndex(-1);\n },\n }),\n [\n highlightedIndex,\n setHighlightedIndex,\n navigateChildldItems,\n onActivate,\n onCloseMenu,\n onOpenMenu,\n setHighlightedIdx,\n ]\n );\n\n // label === 'ParsedInput' && console.log(`%cuseNavigationHook<${label}>\n // highlightedIdxProp= ${highlightedIdxProp},\n // highlightedIndexRef= ${highlightedIndexRef.current},\n // %chighlightedIdx= ${highlightedIdx}`, 'color: brown','color: brown;font-weight: bold;')\n\n return {\n focusVisible: keyBoardNavigation.current ? highlightedIndex : -1,\n controlledHighlighting,\n highlightedIndex,\n setHighlightedIndex: setHighlightedIndex,\n // keyBoardNavigation,\n listProps,\n setIgnoreFocus,\n };\n};\n\n// need to be able to accommodate disabled items\nfunction nextItemIdx(count: number, key: string, idx: number) {\n if (key === \"ArrowUp\") {\n if (idx > 0) {\n return idx - 1;\n } else {\n return idx;\n }\n } else {\n if (idx === null) {\n return 0;\n } else if (idx === count - 1) {\n return idx;\n } else {\n return idx + 1;\n }\n }\n}\n", "export const isRoot = (el: HTMLElement) =>\n el.closest(`[data-root='true']`) !== null;\n\nexport const hasPopup = (el: HTMLElement, idx: number) =>\n (el.ariaHasPopup === \"true\" && el.dataset?.idx === `${idx}`) ||\n el.querySelector(`:scope > [data-idx='${idx}'][aria-haspopup='true']`) !==\n null;\n", "function union(set1: Set<string>, ...sets: Set<string>[]) {\n const result = new Set(set1);\n for (const set of sets) {\n for (const element of set) {\n result.add(element);\n }\n }\n return result;\n}\n\nexport const ArrowUp = \"ArrowUp\";\nexport const ArrowDown = \"ArrowDown\";\nexport const ArrowLeft = \"ArrowLeft\";\nexport const Backspace = \"Backspace\";\nexport const ArrowRight = \"ArrowRight\";\nexport const Enter = \"Enter\";\nexport const Escape = \"Escape\";\nexport const Delete = \"Delete\";\n\nconst actionKeys = new Set([Enter, Delete]);\nconst focusKeys = new Set([\"Tab\"]);\n// const navigationKeys = new Set([\"Home\", \"End\", \"ArrowRight\", \"ArrowLeft\",\"ArrowDown\", \"ArrowUp\"]);\nconst arrowLeftRightKeys = new Set([\"ArrowRight\", \"ArrowLeft\"]);\nconst verticalNavigationKeys = new Set([\"Home\", \"End\", \"ArrowDown\", \"ArrowUp\"]);\nconst horizontalNavigationKeys = new Set([\n \"Home\",\n \"End\",\n \"ArrowRight\",\n \"ArrowLeft\",\n]);\nconst functionKeys = new Set([\n \"F1\",\n \"F2\",\n \"F3\",\n \"F4\",\n \"F5\",\n \"F6\",\n \"F7\",\n \"F8\",\n \"F9\",\n \"F10\",\n \"F11\",\n \"F12\",\n]);\nconst specialKeys = union(\n actionKeys,\n horizontalNavigationKeys,\n verticalNavigationKeys,\n arrowLeftRightKeys,\n functionKeys,\n focusKeys\n);\nexport const isCharacterKey = (evt: KeyboardEvent) => {\n if (specialKeys.has(evt.key)) {\n return false;\n }\n if (typeof evt.which === \"number\" && evt.which > 0) {\n return !evt.ctrlKey && !evt.metaKey && !evt.altKey && evt.which !== 8;\n }\n};\n\nexport const isNavigationKey = (\n { key }: { key: string },\n orientation = \"vertical\"\n) => {\n const navigationKeys =\n orientation === \"vertical\"\n ? verticalNavigationKeys\n : horizontalNavigationKeys;\n return navigationKeys.has(key);\n};\n", "import React, { ReactElement, useCallback, useMemo } from \"react\";\nimport { MenuItemGroup, Separator } from \"./MenuList\";\n\nexport const isMenuItemGroup = (child: ReactElement) =>\n child.type === MenuItemGroup || !!child.props[\"data-group\"];\n\ntype Menus = { [key: string]: ReactElement[] };\ntype Actions = { [key: string]: { action: string; options?: unknown } };\n\nexport const useItemsWithIds = (\n childrenProp: ReactElement[]\n): [Menus, Actions] => {\n const normalizeChildren = useCallback(() => {\n const collectChildren = (\n children: ReactElement[],\n path = \"root\",\n menus: Menus = {},\n actions: Actions = {}\n ) => {\n const list: ReactElement[] = (menus[path] = []);\n let idx = 0;\n let hasSeparator = false;\n\n React.Children.forEach(children, (child) => {\n if (child.type === Separator) {\n hasSeparator = true;\n } else {\n const group = isMenuItemGroup(child);\n const childPath = path === \"root\" ? `${idx}` : `${path}.${idx}`;\n const {\n props: { action, options },\n } = child;\n const { childWithId, grandChildren } = assignId(\n child,\n childPath,\n group,\n hasSeparator\n );\n list.push(childWithId);\n if (grandChildren) {\n collectChildren(grandChildren, childPath, menus, actions);\n } else {\n actions[childPath] = { action, options };\n }\n idx += 1;\n hasSeparator = false;\n }\n });\n return [menus, actions];\n };\n\n const assignId = (\n child: ReactElement,\n path: string,\n group: boolean,\n hasSeparator = false\n ) => {\n const {\n props: { children },\n } = child;\n return {\n childWithId: React.cloneElement(child, {\n hasSeparator,\n id: `${path}`,\n key: path,\n children: group ? undefined : children,\n }),\n grandChildren: group ? children : undefined,\n };\n };\n\n return collectChildren(childrenProp);\n }, [childrenProp]);\n\n const [menus, actions] = useMemo(\n () => normalizeChildren(),\n [normalizeChildren]\n );\n\n return [menus, actions] as [Menus, Actions];\n};\n", "import {\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { closestListItem, listItemIndex } from \"./list-dom-utils\";\nimport { MenuItemProps } from \"./MenuList\";\n// import {mousePosition} from './aim/utils';\n// import {aiming} from './aim/aim';\n\nconst nudge = (\n menus: RuntimeMenuDescriptor[],\n distance: number,\n pos: \"left\" | \"top\"\n) => {\n return menus.map((m, i) =>\n i === menus.length - 1\n ? {\n ...m,\n [pos]: m[pos] - distance,\n }\n : m\n );\n};\nconst nudgeLeft = (menus: RuntimeMenuDescriptor[], distance: number) =>\n nudge(menus, distance, \"left\");\nconst nudgeUp = (menus: RuntimeMenuDescriptor[], distance: number) =>\n nudge(menus, distance, \"top\");\n\nconst flipSides = (id: string, menus: RuntimeMenuDescriptor[]) => {\n const [parentMenu, menu] = menus.slice(-2);\n const el = document.getElementById(`${id}-${menu.id}`);\n if (el === null) {\n throw Error(`useCascade.flipSides element with id ${menu.id} not found`);\n }\n const { width } = el.getBoundingClientRect();\n return menus.map((m) =>\n m === menu\n ? {\n ...m,\n left: parentMenu.left - (width - 2),\n }\n : m\n );\n};\n\n// const closedNode = (el: HTMLElement) =>\n// el.ariaHasPopup === \"true\" && el.ariaExpanded !== \"true\";\nconst getPosition = (el: HTMLElement, openMenus: RuntimeMenuDescriptor[]) => {\n const [{ left, top: menuTop }] = openMenus.slice(-1);\n // const {top, right, bottom, left} = el.getBoundingClientRect();\n // this will not work for MenuList within window, we need the\n // const {offsetLeft: left, offsetTop: menuTop} = el.closest('.vuuMenuList');\n const { offsetWidth: width, offsetTop: top } = el;\n return { left: left + width, top: top + menuTop };\n};\n\nexport type RuntimeMenuDescriptor = {\n id: string;\n left: number;\n top: number;\n};\n\nexport const getItemId = (id: string) => {\n const pos = id.lastIndexOf(\"-\");\n return pos === -1 ? id : id.slice(pos + 1);\n};\n\nexport const getMenuId = (id: string) => {\n const itemId = getItemId(id);\n const pos = itemId.lastIndexOf(\".\");\n return pos > -1 ? itemId.slice(0, pos) : \"root\";\n};\n\nconst getMenuDepth = (id: string) => {\n let count = 0,\n pos = id.indexOf(\".\", 0);\n while (pos !== -1) {\n count += 1;\n pos = id.indexOf(\".\", pos + 1);\n }\n return count;\n};\n\nconst identifyItem = (el: HTMLElement) => ({\n menuId: getMenuId(el.id),\n itemId: getItemId(el.id),\n isGroup: el.ariaHasPopup === \"true\",\n isOpen: el.ariaExpanded === \"true\",\n level: getMenuDepth(el.id),\n});\n\nexport interface CascadeHookProps {\n id: string;\n onActivate: (menuId: string) => void;\n onMouseEnterItem: (evt: MouseEvent, itemId: string) => void;\n position: { x: number; y: number };\n}\n\nexport interface CascadeHooksResult {\n closeMenu: () => void;\n handleRender: () => void;\n listItemProps: Partial<MenuItemProps>;\n openMenu: (menuId?: string, itemId?: string) => void;\n openMenus: RuntimeMenuDescriptor[];\n}\n\ntype MenuStatus = \"no-popup\" | \"popup-open\" | \"pending-close\" | \"popup-pending\";\ntype MenuState = { [key: string]: MenuStatus };\n\nexport const useCascade = ({\n id,\n onActivate,\n onMouseEnterItem,\n position: { x: posX, y: posY },\n}: CascadeHookProps): CascadeHooksResult => {\n const [, forceRefresh] = useState({});\n const openMenus = useRef<RuntimeMenuDescriptor[]>([\n { id: \"root\", left: posX, top: posY },\n ]);\n\n const setOpenMenus = useCallback((menus: RuntimeMenuDescriptor[]) => {\n openMenus.current = menus;\n forceRefresh({});\n }, []);\n\n const menuOpenPendingTimeout = useRef<number | undefined>();\n const menuClosePendingTimeout = useRef<number | undefined>();\n const menuState = useRef<MenuState>({ root: \"no-popup\" });\n const prevLevel = useRef(0);\n\n // const prevAim = useRef({mousePos: null, distance: true});\n\n const openMenu = useCallback(\n (menuId = \"root\", itemId = null, listItemEl = null) => {\n if (menuId === \"root\" && itemId === null) {\n setOpenMenus([{ id: \"root\", left: posX, top: posY }]);\n } else {\n menuState.current[menuId] = \"popup-open\";\n const doc = listItemEl ? listItemEl.ownerDocument : document;\n const el = doc.getElementById(`${id}-${menuId}-${itemId}`);\n const { left, top } = getPosition(el, openMenus.current);\n setOpenMenus(openMenus.current.concat({ id: itemId, left, top }));\n }\n },\n [id, posX, posY, setOpenMenus]\n );\n\n const closeMenu = useCallback(\n (menuId?: string) => {\n if (menuId === \"root\") {\n setOpenMenus([]);\n } else {\n setOpenMenus(openMenus.current.slice(0, -1));\n }\n },\n [setOpenMenus]\n );\n\n const closeMenus = useCallback(\n (menuId, itemId) => {\n const menus = openMenus.current.slice();\n let { id: lastMenuId } = menus[menus.length - 1];\n while (menus.length > 1 && !itemId.startsWith(lastMenuId)) {\n const parentMenuId = getMenuId(lastMenuId);\n menus.pop();\n menuState.current[lastMenuId] = \"no-popup\";\n menuState.current[parentMenuId] = \"no-popup\";\n ({ id: lastMenuId } = menus[menus.length - 1]);\n }\n if (menus.length < openMenus.current.length) {\n setOpenMenus(menus);\n }\n },\n [setOpenMenus]\n );\n\n const scheduleOpen = useCallback(\n (menuId, itemId, listItemEl) => {\n if (menuOpenPendingTimeout.current) {\n clearTimeout(menuOpenPendingTimeout.current);\n }\n menuOpenPendingTimeout.current = window.setTimeout(() => {\n console.log(`scheduleOpen timed out opening ${itemId}`);\n closeMenus(menuId, itemId);\n menuState.current[menuId] = \"popup-open\";\n menuState.current[itemId] = \"no-popup\";\n openMenu(menuId, itemId, listItemEl);\n }, 400);\n },\n [closeMenus, openMenu]\n );\n\n const scheduleClose = useCallback(\n (openMenuId, menuId, itemId) => {\n console.log(\n `scheduleClose openMenuId ${openMenuId} menuId ${menuId} itemId ${itemId}`\n );\n menuState.current[openMenuId] = \"pending-close\";\n menuClosePendingTimeout.current = window.setTimeout(() => {\n closeMenus(menuId, itemId);\n }, 400);\n },\n [closeMenus]\n );\n\n const handleRender = useCallback(() => {\n const { current: menus } = openMenus;\n const [menu] = menus.slice(-1);\n const el = document.getElementById(`${id}-${menu.id}`);\n if (el) {\n const { right, bottom } = el.getBoundingClientRect();\n const { clientHeight, clientWidth } = document.body;\n if (right > clientWidth) {\n const newMenus =\n menus.length > 1\n ? flipSides(id, menus)\n : nudgeLeft(menus, right - clientWidth);\n setOpenMenus(newMenus);\n } else if (bottom > clientHeight) {\n const newMenus = nudgeUp(menus, bottom - clientHeight);\n setOpenMenus(newMenus);\n }\n }\n }, [id, setOpenMenus]);\n\n const listItemProps: Partial<MenuItemProps> = useMemo(\n () => ({\n onMouseEnter: (evt: MouseEvent) => {\n const listItemEl = closestListItem(evt.target as HTMLElement);\n const { menuId, itemId, isGroup, isOpen, level } =\n identifyItem(listItemEl);\n const sameLevel = prevLevel.current === level;\n const {\n current: { [menuId]: state },\n } = menuState;\n prevLevel.current = level;\n\n // console.log(\n // `%conMouseEnter #${menuId}[${itemId}] @${level}\n // isGroup ${isGroup} isOpen ${isOpen}\n // openMenus [${openMenus.current.join(',')}]\n // state='${JSON.stringify(menuState.current)}`,\n // 'color: green; font-weight: bold;'\n // );\n\n if (state === \"no-popup\" && isGroup) {\n // Shouldn;t we always set this ?\n menuState.current[menuId] = \"popup-pending\";\n scheduleOpen(menuId, itemId, listItemEl);\n } else if (state === \"popup-pending\" && !isGroup) {\n menuState.current[menuId] = \"no-popup\";\n clearTimeout(menuOpenPendingTimeout.current);\n menuOpenPendingTimeout.current = undefined;\n } else if (state === \"popup-pending\" && isGroup) {\n clearTimeout(menuOpenPendingTimeout.current);\n scheduleOpen(menuId, itemId, listItemEl);\n } else if (state === \"popup-open\") {\n const [{ id: parentMenuId }, { id: openMenuId }] =\n openMenus.current.slice(-2);\n if (\n parentMenuId === menuId &&\n menuState.current[openMenuId] !== \"pending-close\" &&\n sameLevel\n ) {\n scheduleClose(openMenuId, menuId, itemId);\n if (isGroup && !isOpen) {\n scheduleOpen(menuId, itemId, listItemEl);\n }\n } else if (\n parentMenuId === menuId &&\n isGroup &&\n itemId !== openMenuId &&\n menuState.current[openMenuId] === \"pending-close\"\n ) {\n // if there is already an item queued for opening cancel it\n scheduleOpen(menuId, itemId, listItemEl);\n } else if (isGroup) {\n closeMenus(menuId, itemId);\n scheduleOpen(menuId, itemId, listItemEl);\n } else if (\n !(menuState.current[openMenuId] === \"pending-close\" && sameLevel)\n ) {\n closeMenus(menuId, itemId);\n }\n }\n\n if (state === \"pending-close\") {\n if (menuOpenPendingTimeout.current) {\n clearTimeout(menuOpenPendingTimeout.current);\n menuOpenPendingTimeout.current = undefined;\n }\n clearTimeout(menuClosePendingTimeout.current);\n menuClosePendingTimeout.current = undefined;\n menuState.current[menuId] = \"popup-open\";\n }\n\n onMouseEnterItem(evt, itemId);\n },\n\n onClick: (evt: SyntheticEvent) => {\n const targetElement = evt.target as HTMLElement;\n const listItemEl = closestListItem(targetElement);\n const idx = listItemIndex(listItemEl);\n console.log(\n `list item click [${idx}] hasPopup ${listItemEl.ariaHasPopup}`\n );\n if (listItemEl.ariaHasPopup === \"true\") {\n if (listItemEl.ariaExpanded !== \"true\") {\n openMenu(idx);\n } else {\n // do nothing\n }\n } else {\n onActivate(getItemId(listItemEl.id));\n }\n },\n }),\n [\n closeMenus,\n onActivate,\n\n onMouseEnterItem,\n openMenu,\n scheduleClose,\n scheduleOpen,\n ]\n );\n\n return {\n closeMenu,\n handleRender,\n listItemProps,\n openMenu,\n openMenus: openMenus.current,\n };\n};\n", "// const listItemElement = (listEl: HTMLElement, listItemIdx: number) =>\n// listEl.querySelector(`:scope > [data-idx=\"${listItemIdx}\"]`);\n\nexport function listItemIndex(listItemEl: HTMLElement) {\n if (listItemEl) {\n const idx = listItemEl.dataset.idx;\n if (idx) {\n return parseInt(idx, 10);\n // eslint-disable-next-line no-cond-assign\n } else if (listItemEl.ariaPosInSet) {\n return parseInt(listItemEl.ariaPosInSet, 10) - 1;\n }\n }\n}\n\nconst listItemId = (el: HTMLElement | null | undefined) => el?.id;\n\nexport const closestListItem = (el: HTMLElement | null | undefined) =>\n el?.closest(\"[data-idx],[aria-posinset]\") as HTMLElement;\n\nexport const closestListItemId = (el: HTMLElement) =>\n listItemId(closestListItem(el));\n\nexport const closestListItemIndex = (el: HTMLElement) =>\n listItemIndex(closestListItem(el));\n", "import { useEffect } from \"react\";\n\nexport interface ClickAwayHookProps {\n containerClassName: string;\n isOpen: boolean;\n onClose?: (target: string) => void;\n}\n\nexport const useClickAway = ({\n containerClassName,\n isOpen,\n onClose,\n}: ClickAwayHookProps) => {\n useEffect(() => {\n let clickHandler: (evt: MouseEvent) => void;\n if (isOpen) {\n clickHandler = (evt) => {\n const target = evt.target as HTMLElement;\n const container = target.closest(`.${containerClassName}`);\n if (container === null) {\n onClose?.(\"root\");\n }\n };\n\n document.body.addEventListener(\"click\", clickHandler, true);\n }\n\n return () => {\n if (clickHandler) {\n document.body.removeEventListener(\"click\", clickHandler, true);\n }\n };\n }, [containerClassName, isOpen, onClose]);\n};\n", "import { createContext, ReactNode, useCallback, useMemo } from \"react\";\n\nexport type MenuActionHandler = (\n type: string,\n options: unknown\n) => boolean | undefined;\nexport type MenuBuilder<L = string, O = unknown> = (\n location: L,\n options: O\n) => ContextMenuItemDescriptor[];\n\nexport interface ContextMenuContext {\n menuBuilders: MenuBuilder[];\n menuActionHandler: MenuActionHandler;\n}\n\nexport const ContextMenuContext = createContext<ContextMenuContext | null>(\n null\n);\n\nexport interface ContextMenuItemBase {\n icon?: string;\n label: string;\n location?: string;\n}\n\nexport interface ContextMenuLeafItemDescriptor extends ContextMenuItemBase {\n action: string;\n options?: unknown;\n}\n\nexport interface ContextMenuGroupItemDescriptor extends ContextMenuItemBase {\n children: ContextMenuItemDescriptor[];\n}\n\nexport type ContextMenuItemDescriptor =\n | ContextMenuLeafItemDescriptor\n | ContextMenuGroupItemDescriptor;\n\nexport const isGroupMenuItemDescriptor = (\n menuItem?: ContextMenuItemDescriptor\n): menuItem is ContextMenuGroupItemDescriptor =>\n menuItem !== undefined && \"children\" in menuItem;\n\nexport interface ContextMenuProviderProps {\n children: ReactNode;\n label?: string;\n menuActionHandler?: MenuActionHandler;\n menuBuilder: MenuBuilder;\n}\n\ninterface ProviderProps extends ContextMenuProviderProps {\n context: ContextMenuContext | null;\n}\n\nconst Provider = ({\n children,\n context,\n menuActionHandler,\n menuBuilder,\n}: ProviderProps) => {\n const menuBuilders = useMemo(() => {\n if (context?.menuBuilders && menuBuilder) {\n return context.menuBuilders.concat(menuBuilder);\n } else if (menuBuilder) {\n return [menuBuilder];\n } else {\n return context?.menuBuilders || [];\n }\n }, [context, menuBuilder]);\n\n const handleMenuAction = useCallback(\n (type, options) => {\n if (menuActionHandler?.(type, options)) {\n return true;\n }\n\n if (context?.menuActionHandler?.(type, options)) {\n return true;\n }\n },\n [context, menuActionHandler]\n );\n\n return (\n <ContextMenuContext.Provider\n value={{\n menuActionHandler: handleMenuAction,\n menuBuilders,\n }}\n >\n {children}\n </ContextMenuContext.Provider>\n );\n};\n\n// Need an option for local menu to override higher-level menu, rather than extend\nexport const ContextMenuProvider = ({\n children,\n label,\n menuActionHandler,\n menuBuilder,\n}: ContextMenuProviderProps) => {\n return (\n <ContextMenuContext.Consumer>\n {(parentContext) => (\n <Provider\n context={parentContext}\n label={label}\n menuActionHandler={menuActionHandler}\n menuBuilder={menuBuilder}\n >\n {children}\n </Provider>\n )}\n </ContextMenuContext.Consumer>\n );\n};\n", "// The menuBuilder will always be supplied by the code that will display the local\n// context menu. It will be passed all configured menu descriptors. It is free to\n\nimport { VuuServerMenuOptions } from \"@vuu-ui/vuu-data\";\nimport { MouseEvent, useCallback, useContext } from \"react\";\nimport { PopupService } from \"../popup\";\nimport {\n ContextMenuContext,\n ContextMenuItemDescriptor,\n isGroupMenuItemDescriptor,\n MenuActionHandler,\n MenuBuilder,\n} from \"./context-menu-provider\";\nimport { ContextMenu } from \"./ContextMenu\";\nimport { MenuItem, MenuItemGroup } from \"./MenuList\";\n\n// augment, replace or ignore the existing menu descriptors.\nexport const useContextMenu = () => {\n const ctx = useContext(ContextMenuContext);\n\n const buildMenuOptions = useCallback(\n (menuBuilders: MenuBuilder[], location, options) => {\n let results: ContextMenuItemDescriptor[] = [];\n for (const menuBuilder of menuBuilders) {\n // Maybe we should leave the concatenation to the menuBuilder, then it can control menuItem order\n results = results.concat(menuBuilder(location, options));\n }\n return results;\n },\n []\n );\n\n const handleShowContextMenu = useCallback(\n (e: MouseEvent<HTMLElement>, location: string, options: unknown) => {\n e.stopPropagation();\n e.preventDefault();\n const menuBuilders = ctx?.menuBuilders ?? [];\n const menuItemDescriptors = buildMenuOptions(\n menuBuilders,\n location,\n options\n );\n console.log({\n menuItemDescriptors,\n });\n if (menuItemDescriptors.length && ctx?.menuActionHandler) {\n console.log(`showContextMenu ${location}`, {\n options,\n });\n showContextMenu(e, menuItemDescriptors, ctx.menuActionHandler);\n }\n },\n [buildMenuOptions, ctx]\n );\n\n return handleShowContextMenu;\n};\n\nconst showContextMenu = (\n e: MouseEvent<HTMLElement>,\n menuDescriptors: ContextMenuItemDescriptor[],\n handleContextMenuAction: MenuActionHandler\n) => {\n const { clientX: left, clientY: top } = e;\n const menuItems = (menuDescriptors: ContextMenuItemDescriptor[]) => {\n const fromDescriptor = (menuItem: ContextMenuItemDescriptor, i: number) =>\n isGroupMenuItemDescriptor(menuItem) ? (\n <MenuItemGroup key={i} label={menuItem.label}>\n {menuItem.children.map(fromDescriptor)}\n </MenuItemGroup>\n ) : (\n <MenuItem\n key={i}\n action={menuItem.action}\n data-icon={menuItem.icon}\n options={menuItem.options}\n >\n {menuItem.label}\n </MenuItem>\n );\n\n return menuDescriptors.map(fromDescriptor);\n };\n\n const handleClose = (menuId?: string, options?: unknown) => {\n if (menuId) {\n handleContextMenuAction(menuId, options);\n PopupService.hidePopup();\n }\n };\n\n const component = (\n <ContextMenu onClose={handleClose} position={{ x: left, y: top }}>\n {menuItems(menuDescriptors)}\n </ContextMenu>\n );\n PopupService.showPopup({ left: 0, top: 0, component });\n};\n", "import cx from \"classnames\";\nimport React, {\n createElement,\n CSSProperties,\n HTMLAttributes,\n ReactElement,\n useEffect,\n useRef,\n} from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { renderPortal } from \"../portal\";\n\nimport \"./popup-service.css\";\n\nlet _dialogOpen = false;\nconst _popups: string[] = [];\n\nfunction specialKeyHandler(e: KeyboardEvent) {\n if (e.key === \"Esc\") {\n if (_popups.length) {\n closeAllPopups();\n } else if (_dialogOpen) {\n const dialogRoot = document.body.querySelector(\".vuuDialog\");\n if (dialogRoot) {\n ReactDOM.unmountComponentAtNode(dialogRoot);\n }\n }\n }\n}\n\nfunction outsideClickHandler(e: MouseEvent) {\n if (_popups.length) {\n // onsole.log(`Popup.outsideClickHandler`);\n const popupContainers = document.body.querySelectorAll(\".vuuPopup\");\n for (let i = 0; i < popupContainers.length; i++) {\n if (popupContainers[i].contains(e.target as HTMLElement)) {\n return;\n }\n }\n closeAllPopups();\n }\n}\n\nfunction closeAllPopups() {\n if (_popups.length) {\n // onsole.log(`closeAllPopups`);\n const popupContainers = document.body.querySelectorAll(\".vuuPopup\");\n for (let i = 0; i < popupContainers.length; i++) {\n ReactDOM.unmountComponentAtNode(popupContainers[i]);\n }\n popupClosed(\"*\");\n }\n}\n\nfunction dialogOpened() {\n if (_dialogOpen === false) {\n _dialogOpen = true;\n window.addEventListener(\"keydown\", specialKeyHandler, true);\n }\n}\n\nfunction dialogClosed() {\n if (_dialogOpen) {\n _dialogOpen = false;\n window.removeEventListener(\"keydown\", specialKeyHandler, true);\n }\n}\n\nfunction popupOpened(name: string) {\n if (_popups.indexOf(name) === -1) {\n _popups.push(name);\n //onsole.log('PopupService, popup opened ' + name + ' popups : ' + _popups);\n if (_dialogOpen === false) {\n window.addEventListener(\"keydown\", specialKeyHandler, true);\n window.addEventListener(\"click\", outsideClickHandler, true);\n }\n }\n}\n\nfunction popupClosed(name: string /*, group=null*/) {\n if (_popups.length) {\n if (name === \"*\") {\n _popups.length = 0;\n } else {\n const pos = _popups.indexOf(name);\n if (pos !== -1) {\n _popups.splice(pos, 1);\n }\n }\n //onsole.log('PopupService, popup closed ' + name + ' popups : ' + _popups);\n if (_popups.length === 0 && _dialogOpen === false) {\n window.removeEventListener(\"keydown\", specialKeyHandler, true);\n window.removeEventListener(\"click\", outsideClickHandler, true);\n }\n }\n}\n\nconst PopupComponent = ({\n children,\n position,\n style,\n}: HTMLAttributes<HTMLDivElement> & {\n position?: \"above\" | \"below\" | \"\";\n style?: CSSProperties;\n}) => {\n const className = cx(\"hwPopup\", \"hwPopupContainer\", position);\n return createElement(\"div\", { className, style }, children);\n};\n\nlet incrementingKey = 1;\n\nexport class PopupService {\n static showPopup({\n name = \"anon\",\n group = \"all\",\n position = \"\",\n left = 0,\n right = \"auto\",\n top = 0,\n width = \"auto\",\n component,\n }: {\n depth?: number;\n name?: string;\n group?: string;\n position?: \"above\" | \"below\" | \"\";\n left?: number;\n right?: \"auto\" | number;\n top?: number;\n component: ReactElement;\n width?: number | \"auto\";\n }) {\n if (!component) {\n throw Error(`PopupService showPopup, no component supplied`);\n }\n popupOpened(name);\n let el = document.body.querySelector(\".vuuPopup.\" + group) as HTMLElement;\n if (el === null) {\n el = document.createElement(\"div\") as HTMLElement;\n el.className = \"vuuPopup \" + group;\n document.body.appendChild(el);\n }\n\n const style = { width };\n\n renderPortal(\n createElement(\n PopupComponent,\n { key: incrementingKey++, position, style },\n component\n ),\n el,\n left,\n top,\n () => {\n PopupService.keepWithinThePage(el, right);\n }\n );\n }\n\n static hidePopup(name = \"anon\", group = \"all\") {\n //onsole.log('PopupService.hidePopup name=' + name + ', group=' + group)\n\n if (_popups.indexOf(name) !== -1) {\n popupClosed(name);\n const popupRoot = document.body.querySelector(`.vuuPopup.${group}`);\n if (popupRoot) {\n ReactDOM.unmountComponentAtNode(popupRoot);\n }\n }\n }\n\n static keepWithinThePage(el: HTMLElement, right: number | \"auto\" = \"auto\") {\n const target = el.querySelector(\".vuuPopupContainer > *\") as HTMLElement;\n if (target) {\n const {\n top,\n left,\n width,\n height,\n right: currentRight,\n } = target.getBoundingClientRect();\n\n const w = window.innerWidth;\n const h = window.innerHeight;\n\n const overflowH = h - (top + height);\n if (overflowH < 0) {\n target.style.top = Math.round(top) + overflowH + \"px\";\n }\n\n const overflowW = w - (left + width);\n if (overflowW < 0) {\n target.style.left = Math.round(left) + overflowW + \"px\";\n }\n\n if (typeof right === \"number\" && right !== currentRight) {\n const adjustment = right - currentRight;\n target.style.left = left + adjustment + \"px\";\n }\n }\n }\n}\n\nexport class DialogService {\n static showDialog(dialog: ReactElement) {\n const containerEl = \".vuuDialog\";\n const onClose = dialog.props.onClose;\n\n dialogOpened();\n\n ReactDOM.render(\n React.cloneElement(dialog, {\n container: containerEl,\n onClose: () => {\n DialogService.closeDialog();\n if (onClose) {\n onClose();\n }\n },\n }),\n document.body.querySelector(containerEl)\n );\n }\n\n static closeDialog() {\n dialogClosed();\n const dialogRoot = document.body.querySelector(\".vuuDialog\");\n if (dialogRoot) {\n ReactDOM.unmountComponentAtNode(dialogRoot);\n }\n }\n}\n\nexport interface PopupProps {\n children: ReactElement;\n close?: boolean;\n depth: number;\n group?: string;\n name: string;\n position?: \"above\" | \"below\" | \"\";\n width: number;\n}\n\nexport const Popup = (props: PopupProps) => {\n const pendingTask = useRef<number | undefined>();\n const ref = useRef<HTMLElement>(null);\n\n const show = (props: PopupProps, boundingClientRect: DOMRect) => {\n const { name, group, depth, width } = props;\n let left: number | undefined;\n let top: number | undefined;\n\n if (pendingTask.current) {\n window.clearTimeout(pendingTask.current);\n pendingTask.current = undefined;\n }\n\n if (props.close === true) {\n PopupService.hidePopup(name, group);\n } else {\n const { position, children: component } = props;\n const {\n left: targetLeft,\n top: targetTop,\n width: clientWidth,\n bottom: targetBottom,\n } = boundingClientRect;\n\n if (position === \"below\") {\n left = targetLeft;\n top = targetBottom;\n } else if (position === \"above\") {\n left = targetLeft;\n top = targetTop;\n }\n\n pendingTask.current = window.setTimeout(() => {\n PopupService.showPopup({\n name,\n group,\n depth,\n position,\n left,\n top,\n width: width || clientWidth,\n component,\n });\n }, 10);\n }\n };\n\n useEffect(() => {\n if (ref.current) {\n const el = ref.current.parentElement;\n const boundingClientRect = el?.getBoundingClientRect();\n if (boundingClientRect) {\n show(props, boundingClientRect);\n }\n }\n\n return () => {\n PopupService.hidePopup(props.name, props.group);\n };\n }, [props]);\n\n return React.createElement(\"div\", { className: \"popup-proxy\", ref });\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ReactDOM", "Portal", "jsx", "useId", "useCallback", "useRef", "React", "useLayoutEffect", "useMemo", "useRef", "cx", "useCallback", "useMemo", "useRef", "useState", "useRef", "useState", "useCallback", "useMemo", "useCallback", "useMemo", "useCallback", "menus", "actions", "useMemo", "jsx", "classBase", "isRoot", "useRef", "useMemo", "React", "useLayoutEffect", "cx", "children", "className", "props", "useCallback", "useMemo", "useRef", "useState", "useState", "useRef", "useCallback", "useMemo", "jsx", "useId", "useRef", "useCallback", "id", "useCallback", "useMemo", "jsx", "useCallback", "cx", "React", "createElement", "useEffect", "useRef", "ReactDOM", "ReactDOM", "cx", "createElement", "React", "useRef", "props", "useEffect", "jsx", "useCallback", "menuDescriptors"]
|
|
7
7
|
}
|
package/index.css
CHANGED
|
@@ -1,2 +1,151 @@
|
|
|
1
|
-
|
|
1
|
+
/* src/dialog/Dialog.css */
|
|
2
|
+
.vuuDialog {
|
|
3
|
+
background: var(--salt-container-primary-background);
|
|
4
|
+
border: var(--vuuDialog-border, solid 1px #ccc);
|
|
5
|
+
border-radius: 5px;
|
|
6
|
+
padding: var(--vuuDialog-padding, 0);
|
|
7
|
+
box-shadow: var(--salt-overlayable-shadow, none);
|
|
8
|
+
height: var(--vuuDialog-height, fit-content);
|
|
9
|
+
width: var(--vuuDialog-width, fit-content);
|
|
10
|
+
}
|
|
11
|
+
.vuuDialog-header {
|
|
12
|
+
--saltButton-height: 28px;
|
|
13
|
+
--saltButton-width: 28px;
|
|
14
|
+
--saltToolbar-background: transparent;
|
|
15
|
+
--saltToolbar-height: calc(var(--salt-size-base) + 5px);
|
|
16
|
+
border-bottom: solid 1px var(--salt-container-primary-borderColor);
|
|
17
|
+
}
|
|
18
|
+
.vuuDialog-header > .Responsive-inner {
|
|
19
|
+
align-items: center;
|
|
20
|
+
}
|
|
21
|
+
.vuuDialog-header > .Responsive-inner > :last-child {
|
|
22
|
+
right: 2px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* src/menu/MenuList.css */
|
|
26
|
+
.vuuMenuList {
|
|
27
|
+
--context-menu-color: #161616;
|
|
28
|
+
--context-menu-padding: var(--hw-list-item-padding, 0 6px);
|
|
29
|
+
--context-menu-shadow: var(--hw-dialog-shadow, 0 6px 12px rgba(0, 0, 0, 0.175));
|
|
30
|
+
--focus-visible-border-color: var(--hw-focus-visible-border-color, rgb(141, 154, 179));
|
|
31
|
+
--context-menu-highlight-bg: #a4d5f4;
|
|
32
|
+
--context-menu-blur-focus-bg: #e0e4e9;
|
|
33
|
+
--menu-item-height: var(--hw-list-item-height, 24px);
|
|
34
|
+
--menu-item-icon-color: black;
|
|
35
|
+
--menu-item-twisty-color: black;
|
|
36
|
+
--menu-item-twisty-content: "";
|
|
37
|
+
--menu-item-twisty-top: 50%;
|
|
38
|
+
--menu-item-twisty-left: auto;
|
|
39
|
+
--menu-item-twisty-right: 0px;
|
|
40
|
+
--menu-icon-size: 12px;
|
|
41
|
+
background-clip: padding-box;
|
|
42
|
+
background-color: white;
|
|
43
|
+
border-radius: 4px;
|
|
44
|
+
border: solid 1px rgba(0, 0, 0, 0.15);
|
|
45
|
+
box-shadow: var(--context-menu-shadow);
|
|
46
|
+
font-size: var(--salt-text-label-fontSize);
|
|
47
|
+
font-weight: var(--salt-typography-fontWeight-semiBold);
|
|
48
|
+
list-style: none;
|
|
49
|
+
margin: 2px 0 0;
|
|
50
|
+
outline: 0;
|
|
51
|
+
padding: 0;
|
|
52
|
+
position: absolute;
|
|
53
|
+
}
|
|
54
|
+
.vuuMenuItem {
|
|
55
|
+
align-items: center;
|
|
56
|
+
color: var(--context-menu-color);
|
|
57
|
+
display: flex;
|
|
58
|
+
gap: 6px;
|
|
59
|
+
height: var(--menu-item-height);
|
|
60
|
+
padding: var(--context-menu-padding);
|
|
61
|
+
padding-right: 24px;
|
|
62
|
+
position: relative;
|
|
63
|
+
white-space: nowrap;
|
|
64
|
+
}
|
|
65
|
+
.vuuIconContainer {
|
|
66
|
+
display: inline-block;
|
|
67
|
+
flex: 12px 0 0;
|
|
68
|
+
height: var(--menu-icon-size);
|
|
69
|
+
mask-repeat: no-repeat;
|
|
70
|
+
width: var(--menu-icon-size);
|
|
71
|
+
}
|
|
72
|
+
.vuuMenuItem[aria-expanded=true] {
|
|
73
|
+
background-color: var(--context-menu-blur-focus-bg);
|
|
74
|
+
}
|
|
75
|
+
.vuuMenuItem-separator {
|
|
76
|
+
border-top: solid 1px var(--context-menu-blur-focus-bg);
|
|
77
|
+
}
|
|
78
|
+
.vuuMenuItem[aria-haspopup=true]:after {
|
|
79
|
+
content: var(--menu-item-twisty-content);
|
|
80
|
+
-webkit-mask: var(--svg-chevron-right) center center/12px 12px;
|
|
81
|
+
mask: var(--svg-chevron-down) center center/12px 12px;
|
|
82
|
+
mask-repeat: no-repeat;
|
|
83
|
+
background-color: var(--menu-item-twisty-color);
|
|
84
|
+
height: 16px;
|
|
85
|
+
left: var(--menu-item-twisty-left);
|
|
86
|
+
right: var(--menu-item-twisty-right);
|
|
87
|
+
margin-top: -8px;
|
|
88
|
+
position: absolute;
|
|
89
|
+
top: var(--menu-item-twisty-top);
|
|
90
|
+
transition: transform 0.3s;
|
|
91
|
+
width: 16px;
|
|
92
|
+
}
|
|
93
|
+
.vuuMenuItem[data-highlighted] {
|
|
94
|
+
background-color: var(--context-menu-highlight-bg);
|
|
95
|
+
}
|
|
96
|
+
.vuuMenuItem:hover {
|
|
97
|
+
background-color: var(--context-menu-highlight-bg);
|
|
98
|
+
cursor: default;
|
|
99
|
+
}
|
|
100
|
+
.vuuMenuList-childMenuShowing .hwMenuItem[data-highlighted] {
|
|
101
|
+
background-color: var(--context-menu-blur-focus-bg);
|
|
102
|
+
}
|
|
103
|
+
.vuuMenuItem.focusVisible:before {
|
|
104
|
+
content: "";
|
|
105
|
+
position: absolute;
|
|
106
|
+
top: 0;
|
|
107
|
+
left: 0;
|
|
108
|
+
right: 0;
|
|
109
|
+
bottom: 0px;
|
|
110
|
+
border: dotted var(--focus-visible-border-color) 2px;
|
|
111
|
+
}
|
|
112
|
+
.vuuPopupContainer.top-bottom-right-right .popup-menu {
|
|
113
|
+
left: auto;
|
|
114
|
+
right: 0;
|
|
115
|
+
}
|
|
116
|
+
.popup-menu .menu-item.showing > button,
|
|
117
|
+
.popup-menu .menu-item > button:focus,
|
|
118
|
+
.popup-menu .menu-item > button:hover {
|
|
119
|
+
text-decoration: none;
|
|
120
|
+
color: rgb(0, 0, 0);
|
|
121
|
+
background-color: rgb(220, 220, 220);
|
|
122
|
+
}
|
|
123
|
+
.vuuMenuItem-button:active,
|
|
124
|
+
.hwMenuItem-button:hover {
|
|
125
|
+
outline: 0;
|
|
126
|
+
}
|
|
127
|
+
.popup-menu .menu-item.disabled > button {
|
|
128
|
+
clear: both;
|
|
129
|
+
font-weight: normal;
|
|
130
|
+
line-height: 1.5;
|
|
131
|
+
color: rgb(120, 120, 120);
|
|
132
|
+
white-space: nowrap;
|
|
133
|
+
text-decoration: none;
|
|
134
|
+
cursor: default;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* src/popup/popup-service.css */
|
|
138
|
+
.vuuPopup {
|
|
139
|
+
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
|
|
140
|
+
position: absolute;
|
|
141
|
+
top: 0;
|
|
142
|
+
left: 0;
|
|
143
|
+
width: 0;
|
|
144
|
+
height: 0;
|
|
145
|
+
overflow: visible;
|
|
146
|
+
z-index: 1000;
|
|
147
|
+
}
|
|
148
|
+
.vuuPopup {
|
|
149
|
+
position: absolute;
|
|
150
|
+
}
|
|
2
151
|
/*# sourceMappingURL=index.css.map */
|
package/index.css.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../packages/vuu-popups/src/dialog/Dialog.css", "../../../packages/vuu-popups/src/menu/MenuList.css", "../../../packages/vuu-popups/src/popup/popup-service.css"],
|
|
4
4
|
"sourcesContent": [".vuuDialog {\n background: var(--salt-container-primary-background);\n border: var(--vuuDialog-border, solid 1px #ccc);\n border-radius: 5px;\n padding: var(--vuuDialog-padding, 0);\n box-shadow: var(--salt-overlayable-shadow, none);\n height: var(--vuuDialog-height, fit-content);\n width: var(--vuuDialog-width, fit-content);\n}\n\n.vuuDialog-header {\n --saltButton-height: 28px;\n --saltButton-width: 28px;\n\n --saltToolbar-background: transparent;\n --saltToolbar-height: calc(var(--salt-size-base) + 5px);\n border-bottom: solid 1px var(--salt-container-primary-borderColor);\n}\n\n.vuuDialog-header > .Responsive-inner {\n align-items: center;\n}\n\n.vuuDialog-header > .Responsive-inner > :last-child{\n right: 2px;\n}\n\n\n", ".vuuMenuList {\n --context-menu-color: #161616;\n --context-menu-padding: var(--hw-list-item-padding, 0 6px);\n --context-menu-shadow: var(--hw-dialog-shadow, 0 6px 12px rgba(0, 0, 0, 0.175));\n --focus-visible-border-color: var(--hw-focus-visible-border-color, rgb(141, 154, 179));\n --context-menu-highlight-bg: #a4d5f4;\n --context-menu-blur-focus-bg: #e0e4e9;\n --menu-item-height: var(--hw-list-item-height, 24px);\n --menu-item-icon-color: black;\n --menu-item-twisty-color: black;\n --menu-item-twisty-content: '';\n --menu-item-twisty-top: 50%;\n --menu-item-twisty-left: auto;\n --menu-item-twisty-right: 0px;\n --menu-icon-size: 12px;\n\n background-clip: padding-box;\n background-color: white;\n border-radius: 4px;\n border: solid 1px rgba(0, 0, 0, 0.15);\n box-shadow: var(--context-menu-shadow);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-typography-fontWeight-semiBold);\n list-style: none;\n margin: 2px 0 0;\n outline: 0;\n padding: 0;\n position: absolute;\n}\n\n.vuuMenuItem {\n align-items: center;\n color: var(--context-menu-color);\n display: flex;\n gap: 6px;\n height: var(--menu-item-height);\n padding: var(--context-menu-padding);\n padding-right: 24px;\n position: relative;\n white-space: nowrap;\n}\n\n.vuuIconContainer {\n display: inline-block;\n flex: 12px 0 0;\n height: var(--menu-icon-size);\n mask-repeat: no-repeat;\n width: var(--menu-icon-size);\n}\n\n.vuuMenuItem[aria-expanded='true'] {\n background-color: var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem-separator {\n border-top: solid 1px var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem[aria-haspopup='true']:after {\n content: var(--menu-item-twisty-content);\n -webkit-mask: var(--svg-chevron-right) center center/12px 12px;\n mask: var(--svg-chevron-down) center center/12px 12px;\n mask-repeat: no-repeat;\n background-color: var(--menu-item-twisty-color);\n height: 16px;\n left: var(--menu-item-twisty-left);\n right: var(--menu-item-twisty-right);\n margin-top: -8px;\n position: absolute;\n top: var(--menu-item-twisty-top);\n transition: transform 0.3s;\n width: 16px;\n}\n\n.vuuMenuItem[data-highlighted] {\n background-color: var(--context-menu-highlight-bg);\n}\n\n.vuuMenuItem:hover {\n background-color: var(--context-menu-highlight-bg);\n cursor: default;\n}\n\n.vuuMenuList-childMenuShowing .hwMenuItem[data-highlighted] {\n background-color: var(--context-menu-blur-focus-bg);\n}\n\n.vuuMenuItem.focusVisible:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0px;\n border: dotted var(--focus-visible-border-color) 2px;\n}\n\n.vuuPopupContainer.top-bottom-right-right .popup-menu {\n left: auto;\n right: 0;\n}\n\n.popup-menu .menu-item.showing > button,\n.popup-menu .menu-item > button:focus,\n.popup-menu .menu-item > button:hover {\n text-decoration: none;\n color: rgb(0, 0, 0);\n background-color: rgb(220, 220, 220);\n}\n.vuuMenuItem-button:active,\n.hwMenuItem-button:hover {\n outline: 0;\n}\n\n.popup-menu .menu-item.disabled > button {\n clear: both;\n font-weight: normal;\n line-height: 1.5;\n color: rgb(120, 120, 120);\n white-space: nowrap;\n text-decoration: none;\n cursor: default;\n}\n", ".vuuPopup {\n box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n height: 0;\n overflow: visible;\n z-index: 1000;\n}\n\n.vuuPopup {\n position: absolute;\n}\n"],
|
|
5
|
-
"mappings": "AAAA
|
|
5
|
+
"mappings": ";AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AAEA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;;;ACxBF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AACE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AACA;AAAA;AAGF;AAAA;AAAA;AAGE;AACA;AACA;AAAA;AAEF;AAAA;AAEE;AAAA;AAGF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;;;ACzHF;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAGF;AACE;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vuu-ui/vuu-popups",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.22-debug",
|
|
4
4
|
"description": "VUU popup components - Context Menu, Dialog etc",
|
|
5
5
|
"author": "heswell",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"@salt-ds/core": "1.2.0",
|
|
9
9
|
"@salt-ds/icons": "1.1.0",
|
|
10
10
|
"@heswell/salt-lab": "1.0.0-alpha.2",
|
|
11
|
-
"@vuu-ui/vuu-utils": "0.6.
|
|
11
|
+
"@vuu-ui/vuu-utils": "0.6.22-debug"
|
|
12
12
|
},
|
|
13
13
|
"peerDependencies": {
|
|
14
14
|
"classnames": "^2.2.6",
|