@semcore/dropdown-menu 16.2.2 → 17.0.0-prerelease.18
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/CHANGELOG.md +6 -0
- package/lib/cjs/DropdownMenu.js +394 -467
- package/lib/cjs/DropdownMenu.js.map +1 -1
- package/lib/cjs/components/Context.js +8 -8
- package/lib/cjs/components/Context.js.map +1 -1
- package/lib/cjs/components/VirtualList.js +98 -115
- package/lib/cjs/components/VirtualList.js.map +1 -1
- package/lib/cjs/index.d.js.map +1 -1
- package/lib/cjs/index.js +3 -3
- package/lib/cjs/style/dropdown-menu.shadow.css +1 -1
- package/lib/cjs/translations/__intergalactic-dynamic-locales.js +16 -16
- package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -1
- package/lib/es6/DropdownMenu.js +378 -455
- package/lib/es6/DropdownMenu.js.map +1 -1
- package/lib/es6/components/Context.js +6 -7
- package/lib/es6/components/Context.js.map +1 -1
- package/lib/es6/components/VirtualList.js +95 -112
- package/lib/es6/components/VirtualList.js.map +1 -1
- package/lib/es6/index.d.js.map +1 -1
- package/lib/es6/style/dropdown-menu.shadow.css +1 -1
- package/lib/es6/translations/__intergalactic-dynamic-locales.js +15 -15
- package/lib/es6/translations/__intergalactic-dynamic-locales.js.map +1 -1
- package/lib/esm/DropdownMenu.mjs +363 -374
- package/lib/esm/components/Context.mjs +6 -7
- package/lib/esm/components/VirtualList.mjs +97 -99
- package/lib/esm/style/dropdown-menu.shadow.css +1 -1
- package/lib/esm/translations/__intergalactic-dynamic-locales.mjs +1 -1
- package/lib/types/index.d.ts +3 -79
- package/package.json +11 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.js","names":["_core","require","_button","_interopRequireDefault","_assignProps13","_findComponent","_isFocusInside","_setFocus","_ref30","_uniqueID","_dropdown","_interopRequireWildcard","_flexBox","_scrollArea","_typography","_react","_Context","_VirtualList","_intergalacticDynamicLocales","style","sstyled","insert","menuItemContext","React","createContext","DropdownMenuRoot","_AbstractDropdown","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","concat","_defineProperty2","createRef","_inherits2","_createClass2","key","value","uncontrolledProps","_this2","_objectSpread2","_superPropGet2","visible","setTimeout","focusAndScrollToSelected","get","menuElement","menuRef","current","selected","options","querySelectorAll","querySelector","_this$menuRef$current","_this3","_this$menuElements","menuElements","isFocusAlreadyInPopper","isFocusInside","popperRef","dataset","isVirtual","scrollToNodeAsync","then","asProps","focus","preventScroll","selectedIndex","from","indexOf","handlers","highlightedIndex","afterOpenPopper","_this$menuRef$current2","_this$menuElements2","itemRef","props","index","node","document","activeElement","getTriggerProps","_this$asProps","Children","uid","hasMenu","isAdvanceMode","DropdownMenu","Menu","displayName","ariaControls","callAllEventHandlers","handlePreventCommonKeyDown","bind","handleOpenKeyDown","handleKeyDownForMenu","undefined","getListProps","onKeyDown","handleArrowKeyDown","getVirtualListProps","getPopperProps","handlePreventPopperKeyDown","getActionsProps","ref","actionsRef","handlePreventTabOnActions","getItemTabIndex","itemIndex","disabled","_this$asProps2","isHighlighted","shouldRecalculateItemTabIndex","getItemProps","_props$index","_this4","realIndex","itemProps","tabIndex","tag","ButtonComponent","_props$use","_props$theme","_props$size","use","theme","size","innerOutline","onClick","place","_this5","e","_this5$menuRef$curren","_e$target$getAttribut","_this5$asProps","placement","inlineActions","contains","target","stopPropagation","show","startsWith","hide","isMenuItem","getAttribute","_this5$itemRefs$highl","highlightedIndexProps","findIndex","p","itemRefs","preventDefault","triggerRef","setFocus","render","_ref","_this$asProps3","interaction","timeout","createElement","selectedIndexContext","Provider","Dropdown","assignProps","AbstractDropdown","Object","values","enhance","defaultVisible","defaultHighlightedIndex","defaultSelectedIndex","i18n","localizedMessages","locale","trigger","popper","List","_ref22","_ref2","arguments[0]","_ref13","styles","SDropdownMenuList","ScrollAreaComponent","SBar","Bar","ListBoxContextProvider","cn","Container","Actions","_ref23","_ref3","_ref14","SDropdownMenuActions","Flex","_ref4","disablePortal","ignorePortalsStacking","disableEnforceFocus","autoFocus","animationsDisabled","popperProps","Popper","_extends2","role","Item","_ref24","_ref5","_ref15","id","forwardRef","ariaChecked","SDropdownMenuItemContainer","useRef","_React$useState","useState","_React$useState2","_slicedToArray2","highlighted","setHighlighted","menuItemContextValue","contentId","forkRef","ariaDescribes","hasSubMenu","hasHint","Hint","advancedMode","Content","hintId","useUID","push","useEffect","onFocus","onBlur","addEventListener","capture","removeEventListener","lastInteraction","isKeyboard","Addon","_ref6","_ref16","SDropdownMenuItemAddon","Box","Trigger","_ref7","ItemContent","_ref25","_ref8","_ref17","SItemContent","menuItemCtxValue","useContext","subMenu","_React$useState3","Set","_React$useState4","describedby","setDescribedby","element","parent","parentElement","prev","add","_toConsumableArray2","join","ItemContentText","_ref26","_ref9","_ref18","SItemContentText","Text","ItemHint","_ref27","_ref0","_ref19","SItemHint","_React$useContext","_ref1","_ref20","Title","_ref10","_ref21","Nesting","_ref28","_ref11","NestingTrigger","_ref29","_ref12","createComponent","VirtualList","ItemTitle","Group","_default","exports"],"sources":["../../src/DropdownMenu.jsx"],"sourcesContent":["import ButtonComponent from '@semcore/button';\nimport { createComponent, sstyled, Root, lastInteraction } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport { isAdvanceMode } from '@semcore/core/lib/utils/findComponent';\nimport { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside';\nimport { setFocus } from '@semcore/core/lib/utils/focus-lock/setFocus';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport { useUID } from '@semcore/core/lib/utils/uniqueID';\nimport Dropdown, { AbstractDropdown, selectedIndexContext, enhance } from '@semcore/dropdown';\nimport { Flex, Box } from '@semcore/flex-box';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport { Text } from '@semcore/typography';\nimport React from 'react';\n\nimport { ListBoxContextProvider } from './components/Context';\nimport { VirtualList } from './components/VirtualList';\nimport style from './style/dropdown-menu.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\nconst menuItemContext = React.createContext({});\n\nclass DropdownMenuRoot extends AbstractDropdown {\n static displayName = 'DropdownMenu';\n static style = style;\n static enhance = Object.values(enhance);\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: 0,\n defaultSelectedIndex: 0,\n i18n: localizedMessages,\n locale: 'en',\n interaction: 'click',\n inlineActions: false,\n placement: 'bottom-start',\n timeout: 0,\n };\n\n static nestedMenuInteraction = {\n trigger: [\n ['onClick', 'onMouseEnter'],\n ['onClick', 'onMouseLeave'],\n ],\n popper: [['onMouseEnter'], ['onMouseLeave']],\n };\n\n actionsRef = React.createRef();\n role = 'menu';\n\n /**\n * TODO: It needs to be reconsidered in a future implementation so that component accepts items as a prop instead of JSX.\n * Tab index recalculation flag.\n *\n * When an item becomes disabled while highlighted, we need to transfer focus\n * to the next available focusable item. This flag ensures the focus lock\n * remains within proper boundaries during the initial render cycle.\n */\n shouldRecalculateItemTabIndex = false;\n\n uncontrolledProps() {\n return {\n ...super.uncontrolledProps(),\n visible: [\n null,\n (visible) => {\n if (visible === true) {\n setTimeout(() => {\n this.focusAndScrollToSelected();\n // for some reason, Google Chrome optimizes this timeout with 0 value with previous render (when we set aria-selected)\n // and that's why its skip scrollToNodes. We selected the appropriate timeout manually.\n }, 50);\n }\n },\n ],\n };\n }\n\n get menuElements() {\n const menuElement = this.menuRef.current;\n\n if (!menuElement) {\n return { selected: null, options: null };\n }\n\n const options = menuElement.querySelectorAll(\n '[role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]',\n );\n const selected = menuElement.querySelector('[aria-checked=\"true\"]:not([disabled])');\n\n return { selected, options };\n }\n\n focusAndScrollToSelected() {\n let { selected, options } = this.menuElements;\n\n const isFocusAlreadyInPopper = isFocusInside(this.popperRef.current);\n\n if (!selected || !options || this.menuRef.current?.dataset.isVirtual || isFocusAlreadyInPopper) return;\n\n this.scrollToNodeAsync(selected, true).then(() => {\n if (this.asProps.visible) {\n selected.focus({ preventScroll: true });\n }\n });\n\n const selectedIndex = Array.from(options).indexOf(selected);\n\n if (selectedIndex !== -1) {\n this.handlers.highlightedIndex(selectedIndex);\n }\n }\n\n afterOpenPopper() {\n const { selected, options } = this.menuElements;\n\n if (selected && options && !this.menuRef.current?.dataset.isVirtual) return;\n\n super.afterOpenPopper();\n }\n\n itemRef(props, index, node) {\n super.itemRef(props, index, node);\n\n if (node === document.activeElement) {\n super.scrollToNode(node);\n }\n }\n\n getTriggerProps() {\n const { Children, uid, visible } = this.asProps;\n const hasMenu = isAdvanceMode(Children, [DropdownMenu.Menu.displayName]);\n const ariaControls = hasMenu ? `igc-${uid}-list` : `igc-${uid}-popper`;\n\n return {\n ...super.getTriggerProps(),\n 'onKeyDown': callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handleOpenKeyDown.bind(this),\n this.handleKeyDownForMenu('trigger'),\n ),\n 'aria-controls': visible ? ariaControls : undefined,\n 'aria-haspopup': hasMenu ? 'true' : 'dialog',\n };\n }\n\n getListProps() {\n return {\n ...super.getListProps(),\n onKeyDown: callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handleKeyDownForMenu('list'),\n this.handleArrowKeyDown.bind(this),\n ),\n };\n }\n\n getVirtualListProps() {\n return {\n ...super.getListProps(),\n onKeyDown: callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handleKeyDownForMenu('list'),\n this.handleArrowKeyDown.bind(this),\n ),\n };\n }\n\n getPopperProps() {\n return {\n ...super.getPopperProps(),\n onKeyDown: callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handlePreventPopperKeyDown.bind(this),\n ),\n };\n }\n\n getActionsProps() {\n return {\n ...this.getListProps(),\n ref: this.actionsRef,\n onKeyDown: callAllEventHandlers(\n this.handlePreventTabOnActions.bind(this),\n this.handlePreventCommonKeyDown.bind(this),\n this.handleKeyDownForMenu('list'),\n this.handleArrowKeyDown.bind(this),\n ),\n };\n }\n\n getItemTabIndex(props, itemIndex) {\n const { disabled, index } = props;\n const { highlightedIndex, visible } = this.asProps;\n\n if (!visible) return -1;\n\n const isHighlighted = (index ?? itemIndex) === highlightedIndex;\n if (isHighlighted && !disabled) {\n return 0;\n }\n\n if (disabled && isHighlighted) {\n this.shouldRecalculateItemTabIndex = true;\n }\n\n if (!isHighlighted && !disabled && this.shouldRecalculateItemTabIndex) {\n this.shouldRecalculateItemTabIndex = false;\n return 0;\n }\n\n return -1;\n }\n\n getItemProps(props, index) {\n const realIndex = props.index ?? index;\n const itemProps = {\n ...super.getItemProps(props, realIndex),\n tabIndex: this.getItemTabIndex(props, index),\n ref: (node) => this.itemRef(props, realIndex, node),\n actionsRef: this.actionsRef,\n };\n\n if (props.tag === ButtonComponent) {\n itemProps.use = props.use ?? 'tertiary';\n itemProps.theme = props.theme ?? 'muted';\n itemProps.size = props.size ?? 's';\n itemProps.innerOutline = false;\n }\n\n if (props.selected) {\n itemProps['aria-checked'] = true;\n }\n\n if (super.childRole === 'menuitemradio') {\n itemProps.onClick = () => {\n this.handlers.visible(false);\n };\n }\n\n return itemProps;\n }\n\n handleKeyDownForMenu(place) {\n return (e) => {\n const { visible, placement, inlineActions } = this.asProps;\n\n // stop propagation keyboard events if it calls not on DropdownMenu.Items\n if (place === 'list' && !this.menuRef.current?.contains(e.target) && !inlineActions) {\n e.stopPropagation();\n return false;\n }\n\n const show =\n (e.key === 'ArrowRight' && placement?.startsWith('right')) ||\n (e.key === 'ArrowLeft' && placement?.startsWith('left')) ||\n ((e.key === 'Enter' || e.key === ' ') && !inlineActions);\n const hide =\n (e.key === 'ArrowLeft' && placement?.startsWith('right')) ||\n (e.key === 'ArrowRight' && placement?.startsWith('left')) ||\n e.key === 'Escape';\n const isMenuItem = e.target.getAttribute('role')?.startsWith(super.childRole);\n\n if (place === 'trigger' && show && isMenuItem) {\n this.handlers.visible(true);\n this.handlers.highlightedIndex(0);\n setTimeout(() => {\n let { highlightedIndex } = this.asProps;\n const highlightedIndexProps = this.itemProps[highlightedIndex];\n\n if (highlightedIndexProps?.disabled) {\n highlightedIndex = this.itemProps.findIndex((p) => !p.disabled);\n }\n\n if (highlightedIndex === -1) return;\n\n this.itemRefs[highlightedIndex]?.focus();\n }, 0);\n\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n if (place === 'list' && visible && hide && isMenuItem) {\n if (\n !inlineActions ||\n (inlineActions && (e.key === 'Escape' || this.asProps.highlightedIndex === 0))\n ) {\n this.handlers.visible(false);\n if (this.triggerRef.current) {\n setFocus(this.triggerRef.current);\n }\n\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n }\n };\n }\n\n handlePreventTabOnActions(e) {\n if (e.key === 'Tab') {\n e.stopPropagation();\n e.preventDefault();\n return false;\n }\n }\n\n render() {\n const { Children, selectedIndex, interaction, timeout } = this.asProps;\n\n this.itemProps = [];\n\n return (\n <selectedIndexContext.Provider value={selectedIndex}>\n <Root\n render={Dropdown}\n timeout={timeout || (interaction === 'hover' ? [0, 100] : undefined)}\n >\n <Children />\n </Root>\n </selectedIndexContext.Provider>\n );\n }\n}\n\nfunction List({ styles, Children }) {\n const SDropdownMenuList = Root;\n const SBar = ScrollAreaComponent.Bar;\n\n return sstyled(styles)(\n <ListBoxContextProvider>\n <SDropdownMenuList render={ScrollAreaComponent} shadow={true} shadowSize={16} shadowTheme='light'>\n <ScrollAreaComponent.Container tabIndex={undefined}>\n <Children />\n </ScrollAreaComponent.Container>\n <SBar orientation='horizontal' />\n <SBar orientation='vertical' />\n </SDropdownMenuList>\n </ListBoxContextProvider>,\n );\n}\nfunction Actions({ styles }) {\n const SDropdownMenuActions = Root;\n\n return sstyled(styles)(<SDropdownMenuActions render={Flex} />);\n}\n\nfunction Menu(props) {\n const {\n visible,\n disablePortal,\n ignorePortalsStacking,\n disableEnforceFocus,\n interaction,\n autoFocus,\n animationsDisabled,\n } = props;\n const popperProps = {\n visible,\n disablePortal,\n ignorePortalsStacking,\n disableEnforceFocus,\n interaction,\n autoFocus,\n animationsDisabled,\n };\n return (\n <ListBoxContextProvider>\n <DropdownMenu.Popper {...popperProps} role={null}>\n <Root render={DropdownMenu.List} />\n </DropdownMenu.Popper>\n </ListBoxContextProvider>\n );\n}\n\nfunction Item({\n id,\n styles,\n disabled,\n Children,\n forwardRef,\n role,\n tabIndex,\n actionsRef,\n 'aria-checked': ariaChecked,\n}) {\n const SDropdownMenuItemContainer = Root;\n const itemRef = React.useRef();\n\n const [highlighted, setHighlighted] = React.useState(false);\n\n const menuItemContextValue = {\n contentId: id,\n ref: forkRef(forwardRef, itemRef),\n role,\n tabIndex,\n ariaChecked,\n disabled,\n };\n const ariaDescribes = [];\n\n const hasSubMenu = isAdvanceMode(Children, [DropdownMenu.displayName], true);\n const hasHint = isAdvanceMode(Children, [DropdownMenu.Item.Hint.displayName], true);\n const advancedMode =\n isAdvanceMode(Children, [DropdownMenu.Item.Content.displayName], true) || hasSubMenu || hasHint;\n\n if (hasHint) {\n const hintId = `igc-${useUID()}-option-hint`;\n\n menuItemContextValue.hintId = hintId;\n ariaDescribes.push(hintId);\n }\n\n if (hasSubMenu) {\n menuItemContextValue.hasSubMenu = true;\n }\n\n menuItemContextValue.ariaDescribes = ariaDescribes;\n\n React.useEffect(() => {\n const onFocus = (e) => {\n if (e.target === itemRef.current) {\n setHighlighted(true);\n\n if (hasSubMenu) {\n e.stopPropagation();\n }\n }\n };\n const onBlur = (e) => {\n if (e.target === itemRef.current) {\n setHighlighted(false);\n\n if (actionsRef.current) {\n itemRef.current.tabIndex = -1;\n }\n }\n };\n\n document.addEventListener('focus', onFocus, { capture: true });\n document.addEventListener('blur', onBlur, { capture: true });\n\n return () => {\n document.removeEventListener('focus', onFocus, { capture: true });\n document.removeEventListener('blur', onBlur, { capture: true });\n };\n }, [itemRef.current]);\n\n return sstyled(styles)(\n <menuItemContext.Provider value={menuItemContextValue}>\n <SDropdownMenuItemContainer\n render={Dropdown.Item}\n ref={advancedMode ? undefined : menuItemContextValue.ref}\n use:highlighted={!disabled && highlighted && lastInteraction.isKeyboard()}\n use:role={advancedMode ? undefined : role}\n use:id={advancedMode ? undefined : id}\n use:tabIndex={advancedMode ? undefined : tabIndex}\n use:aria-checked={advancedMode ? undefined : ariaChecked}\n >\n <Children />\n </SDropdownMenuItemContainer>\n </menuItemContext.Provider>,\n );\n}\n\nfunction Addon(props) {\n const SDropdownMenuItemAddon = Root;\n return sstyled(props.styles)(<SDropdownMenuItemAddon render={Box} />);\n}\n\nfunction Trigger() {\n return <Root render={Dropdown.Trigger} />;\n}\n\nfunction ItemContent({ styles }) {\n const SItemContent = Root;\n const ref = React.useRef();\n const menuItemCtxValue = React.useContext(menuItemContext);\n\n let subMenu = undefined;\n\n if (menuItemCtxValue.hasSubMenu) {\n subMenu = 'true';\n }\n\n const [describedby, setDescribedby] = React.useState(new Set(menuItemCtxValue.ariaDescribes));\n\n React.useEffect(() => {\n const element = ref.current;\n const parent = element?.parentElement;\n\n if (\n parent.getAttribute('aria-haspopup') === 'true' &&\n parent.getAttribute('aria-describedby')\n ) {\n setDescribedby((prev) => {\n prev.add(parent.getAttribute('aria-describedby'));\n\n return new Set(prev);\n });\n }\n }, [menuItemCtxValue.ariaDescribes]);\n\n return sstyled(styles)(\n <SItemContent\n render={Flex}\n role={menuItemCtxValue.role}\n id={menuItemCtxValue.contentId}\n tabIndex={menuItemCtxValue.tabIndex}\n ref={forkRef(menuItemCtxValue.ref, ref)}\n use:aria-describedby={[...describedby].join(' ')}\n aria-haspopup={menuItemCtxValue.hasSubMenu ? 'true' : undefined}\n aria-expanded={subMenu}\n aria-checked={menuItemCtxValue.ariaChecked}\n alignItems='center'\n justifyContent={menuItemCtxValue.hasSubMenu ? 'space-between' : undefined}\n disabled={menuItemCtxValue.disabled}\n />,\n );\n}\n\nfunction ItemContentText({ styles }) {\n const SItemContentText = Root;\n return sstyled(styles)(<SItemContentText render={Text} />);\n}\n\nfunction ItemHint({ styles }) {\n const SItemHint = Root;\n const { hintId } = React.useContext(menuItemContext);\n\n return sstyled(styles)(<SItemHint render={Flex} id={hintId} aria-hidden='true' />);\n}\n\n/**\n * @deprecated Use Item hint\n */\nfunction Hint(props) {\n const SDropdownMenuItemContainer = Root;\n return sstyled(props.styles)(\n <SDropdownMenuItemContainer render={Dropdown.Item} variant='hint' />,\n );\n}\n/**\n * @deprecated Use Group with title prop\n */\nfunction Title(props) {\n const SDropdownMenuItemContainer = Root;\n return sstyled(props.styles)(\n <SDropdownMenuItemContainer render={Dropdown.Item} variant='title' />,\n );\n}\n\n/**\n * @deprecated\n */\nfunction Nesting({ forwardRef }) {\n return <Root render={DropdownMenu.Item} ref={forwardRef} />;\n}\n\n/**\n * @deprecated\n */\nfunction NestingTrigger({ forwardRef }) {\n return (\n <Root\n render={DropdownMenu.Item.Content}\n tag={DropdownMenu.Trigger}\n ref={forwardRef}\n use:role='menuitem'\n />\n );\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n Trigger,\n Popper: Dropdown.Popper,\n List,\n VirtualList,\n Actions,\n Menu,\n Item: [Item, { Addon, Content: ItemContent, Text: ItemContentText, Hint: ItemHint }],\n /**\n * @deprecated. Use just Item. See examples on\n */\n Nesting: [Nesting, { Trigger: NestingTrigger, Addon }],\n ItemTitle: Title,\n ItemHint: Hint,\n Group: Dropdown.Group,\n },\n {\n parent: [Dropdown],\n },\n);\n\nDropdownMenu.selectedIndexContext = selectedIndexContext;\n\nexport default DropdownMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DropdownMenu.js","names":["_core","require","_baseComponents","_button","_interopRequireDefault","_assignProps1","_findComponent","_isFocusInside","_setFocus","_ref16","_uniqueID","_dropdown","_interopRequireWildcard","_typography","_react","_Context","_VirtualList","_intergalacticDynamicLocales","style","sstyled","insert","menuItemContext","React","createContext","DropdownMenuRoot","AbstractDropdown","constructor","args","_defineProperty2","default","createRef","uncontrolledProps","visible","setTimeout","focusAndScrollToSelected","menuElements","menuElement","menuRef","current","selected","options","querySelectorAll","querySelector","isFocusAlreadyInPopper","isFocusInside","popperRef","dataset","isVirtual","scrollToNodeAsync","then","asProps","focus","preventScroll","selectedIndex","Array","from","indexOf","handlers","highlightedIndex","afterOpenPopper","itemRef","props","index","node","document","activeElement","scrollToNode","getTriggerProps","Children","uid","hasMenu","isAdvanceMode","DropdownMenu","Menu","displayName","ariaControls","callAllEventHandlers","handlePreventCommonKeyDown","bind","handleOpenKeyDown","handleKeyDownForMenu","undefined","getListProps","onKeyDown","handleArrowKeyDown","getVirtualListProps","getPopperProps","handlePreventPopperKeyDown","getActionsProps","ref","actionsRef","handlePreventTabOnActions","getItemTabIndex","itemIndex","disabled","isHighlighted","shouldRecalculateItemTabIndex","getItemProps","realIndex","itemProps","tabIndex","tag","ButtonComponent","use","theme","size","innerOutline","childRole","onClick","place","e","placement","inlineActions","contains","target","stopPropagation","show","key","startsWith","hide","isMenuItem","getAttribute","highlightedIndexProps","findIndex","p","itemRefs","preventDefault","triggerRef","setFocus","render","_ref","interaction","timeout","createElement","selectedIndexContext","Provider","value","Dropdown","assignProps","Object","values","enhance","defaultVisible","defaultHighlightedIndex","defaultSelectedIndex","i18n","localizedMessages","locale","trigger","popper","List","styles","_ref2","arguments[0]","_ref1","SDropdownMenuList","ScrollAreaComponent","SBar","Bar","ListBoxContextProvider","cn","ScrollArea","Container","Actions","_ref3","_ref10","SDropdownMenuActions","Flex","_ref4","disablePortal","ignorePortalsStacking","disableEnforceFocus","autoFocus","animationsDisabled","popperProps","Popper","_extends2","role","Item","id","forwardRef","ariaChecked","_ref5","_ref11","SDropdownMenuItemContainer","useRef","highlighted","setHighlighted","useState","menuItemContextValue","contentId","ariaDescribes","hasSubMenu","hasHint","Hint","advancedMode","Content","hintId","useUID","push","useEffect","onFocus","onBlur","addEventListener","capture","removeEventListener","forkRef","lastInteraction","isKeyboard","Addon","_ref6","_ref12","SDropdownMenuItemAddon","Box","Trigger","_ref7","ItemContent","_ref8","_ref13","SItemContent","menuItemCtxValue","useContext","subMenu","describedby","setDescribedby","Set","element","parent","parentElement","prev","add","join","ItemContentText","ellipsis","hintProps","_ref9","_ref14","SItemContentText","Text","Fragment","ItemHint","_ref0","_ref15","SItemHint","createComponent","VirtualList","Group","_default","exports"],"sources":["../../src/DropdownMenu.jsx"],"sourcesContent":["import { Flex, ScrollArea as ScrollAreaComponent, Box } from '@semcore/base-components';\nimport ButtonComponent from '@semcore/button';\nimport { createComponent, sstyled, Root, lastInteraction } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport { isAdvanceMode } from '@semcore/core/lib/utils/findComponent';\nimport { isFocusInside } from '@semcore/core/lib/utils/focus-lock/isFocusInside';\nimport { setFocus } from '@semcore/core/lib/utils/focus-lock/setFocus';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport { useUID } from '@semcore/core/lib/utils/uniqueID';\nimport Dropdown, { AbstractDropdown, selectedIndexContext, enhance } from '@semcore/dropdown';\nimport { Text } from '@semcore/typography';\nimport React from 'react';\n\nimport { ListBoxContextProvider } from './components/Context';\nimport { VirtualList } from './components/VirtualList';\nimport style from './style/dropdown-menu.shadow.css';\nimport { localizedMessages } from './translations/__intergalactic-dynamic-locales';\n\nconst menuItemContext = React.createContext({});\n\nclass DropdownMenuRoot extends AbstractDropdown {\n static displayName = 'DropdownMenu';\n static style = style;\n static enhance = Object.values(enhance);\n\n static defaultProps = {\n size: 'm',\n defaultVisible: false,\n defaultHighlightedIndex: 0,\n defaultSelectedIndex: 0,\n i18n: localizedMessages,\n locale: 'en',\n interaction: 'click',\n inlineActions: false,\n placement: 'bottom-start',\n timeout: 0,\n };\n\n static nestedMenuInteraction = {\n trigger: [\n ['onClick', 'onMouseEnter'],\n ['onClick', 'onMouseLeave'],\n ],\n popper: [['onMouseEnter'], ['onMouseLeave']],\n };\n\n actionsRef = React.createRef();\n role = 'menu';\n\n /**\n * TODO: It needs to be reconsidered in a future implementation so that component accepts items as a prop instead of JSX.\n * Tab index recalculation flag.\n *\n * When an item becomes disabled while highlighted, we need to transfer focus\n * to the next available focusable item. This flag ensures the focus lock\n * remains within proper boundaries during the initial render cycle.\n */\n shouldRecalculateItemTabIndex = false;\n\n uncontrolledProps() {\n return {\n ...super.uncontrolledProps(),\n visible: [\n null,\n (visible) => {\n if (visible === true) {\n setTimeout(() => {\n this.focusAndScrollToSelected();\n // for some reason, Google Chrome optimizes this timeout with 0 value with previous render (when we set aria-selected)\n // and that's why its skip scrollToNodes. We selected the appropriate timeout manually.\n }, 50);\n }\n },\n ],\n };\n }\n\n get menuElements() {\n const menuElement = this.menuRef.current;\n\n if (!menuElement) {\n return { selected: null, options: null };\n }\n\n const options = menuElement.querySelectorAll(\n '[role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]',\n );\n const selected = menuElement.querySelector('[aria-checked=\"true\"]:not([disabled])');\n\n return { selected, options };\n }\n\n focusAndScrollToSelected() {\n let { selected, options } = this.menuElements;\n\n const isFocusAlreadyInPopper = isFocusInside(this.popperRef.current);\n\n if (!selected || !options || this.menuRef.current?.dataset.isVirtual || isFocusAlreadyInPopper) return;\n\n this.scrollToNodeAsync(selected, true).then(() => {\n if (this.asProps.visible) {\n selected.focus({ preventScroll: true });\n }\n });\n\n const selectedIndex = Array.from(options).indexOf(selected);\n\n if (selectedIndex !== -1) {\n this.handlers.highlightedIndex(selectedIndex);\n }\n }\n\n afterOpenPopper() {\n const { selected, options } = this.menuElements;\n\n if (selected && options && !this.menuRef.current?.dataset.isVirtual) return;\n\n super.afterOpenPopper();\n }\n\n itemRef(props, index, node) {\n super.itemRef(props, index, node);\n\n if (node === document.activeElement) {\n super.scrollToNode(node);\n }\n }\n\n getTriggerProps() {\n const { Children, uid, visible } = this.asProps;\n const hasMenu = isAdvanceMode(Children, [DropdownMenu.Menu.displayName]);\n const ariaControls = hasMenu ? `igc-${uid}-list` : `igc-${uid}-popper`;\n\n return {\n ...super.getTriggerProps(),\n 'onKeyDown': callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handleOpenKeyDown.bind(this),\n this.handleKeyDownForMenu('trigger'),\n ),\n 'aria-controls': visible ? ariaControls : undefined,\n 'aria-haspopup': hasMenu ? 'true' : 'dialog',\n };\n }\n\n getListProps() {\n return {\n ...super.getListProps(),\n onKeyDown: callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handleKeyDownForMenu('list'),\n this.handleArrowKeyDown.bind(this),\n ),\n };\n }\n\n getVirtualListProps() {\n return {\n ...super.getListProps(),\n onKeyDown: callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handleKeyDownForMenu('list'),\n this.handleArrowKeyDown.bind(this),\n ),\n };\n }\n\n getPopperProps() {\n return {\n ...super.getPopperProps(),\n onKeyDown: callAllEventHandlers(\n this.handlePreventCommonKeyDown.bind(this),\n this.handlePreventPopperKeyDown.bind(this),\n ),\n };\n }\n\n getActionsProps() {\n return {\n ...this.getListProps(),\n ref: this.actionsRef,\n onKeyDown: callAllEventHandlers(\n this.handlePreventTabOnActions.bind(this),\n this.handlePreventCommonKeyDown.bind(this),\n this.handleKeyDownForMenu('list'),\n this.handleArrowKeyDown.bind(this),\n ),\n };\n }\n\n getItemTabIndex(props, itemIndex) {\n const { disabled, index } = props;\n const { highlightedIndex, visible } = this.asProps;\n\n if (!visible) return -1;\n\n const isHighlighted = (index ?? itemIndex) === highlightedIndex;\n if (isHighlighted && !disabled) {\n return 0;\n }\n\n if (disabled && isHighlighted) {\n this.shouldRecalculateItemTabIndex = true;\n }\n\n if (!isHighlighted && !disabled && this.shouldRecalculateItemTabIndex) {\n this.shouldRecalculateItemTabIndex = false;\n return 0;\n }\n\n return -1;\n }\n\n getItemProps(props, index) {\n const realIndex = props.index ?? index;\n const itemProps = {\n ...super.getItemProps(props, realIndex),\n tabIndex: this.getItemTabIndex(props, index),\n ref: (node) => this.itemRef(props, realIndex, node),\n actionsRef: this.actionsRef,\n };\n\n if (props.tag === ButtonComponent) {\n itemProps.use = props.use ?? 'tertiary';\n itemProps.theme = props.theme ?? 'muted';\n itemProps.size = props.size ?? 's';\n itemProps.innerOutline = false;\n }\n\n if (props.selected) {\n itemProps['aria-checked'] = true;\n }\n\n if (super.childRole === 'menuitemradio') {\n itemProps.onClick = () => {\n this.handlers.visible(false);\n };\n }\n\n return itemProps;\n }\n\n handleKeyDownForMenu(place) {\n return (e) => {\n const { visible, placement, inlineActions } = this.asProps;\n\n // stop propagation keyboard events if it calls not on DropdownMenu.Items\n if (place === 'list' && !this.menuRef.current?.contains(e.target) && !inlineActions) {\n e.stopPropagation();\n return false;\n }\n\n const show =\n (e.key === 'ArrowRight' && placement?.startsWith('right')) ||\n (e.key === 'ArrowLeft' && placement?.startsWith('left')) ||\n ((e.key === 'Enter' || e.key === ' ') && !inlineActions);\n const hide =\n (e.key === 'ArrowLeft' && placement?.startsWith('right')) ||\n (e.key === 'ArrowRight' && placement?.startsWith('left')) ||\n e.key === 'Escape';\n const isMenuItem = e.target.getAttribute('role')?.startsWith(super.childRole);\n\n if (place === 'trigger' && show && isMenuItem) {\n this.handlers.visible(true);\n this.handlers.highlightedIndex(0);\n setTimeout(() => {\n let { highlightedIndex } = this.asProps;\n const highlightedIndexProps = this.itemProps[highlightedIndex];\n\n if (highlightedIndexProps?.disabled) {\n highlightedIndex = this.itemProps.findIndex((p) => !p.disabled);\n }\n\n if (highlightedIndex === -1) return;\n\n this.itemRefs[highlightedIndex]?.focus();\n }, 0);\n\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n if (place === 'list' && visible && hide && isMenuItem) {\n if (\n !inlineActions ||\n (inlineActions && (e.key === 'Escape' || this.asProps.highlightedIndex === 0))\n ) {\n this.handlers.visible(false);\n if (this.triggerRef.current) {\n setFocus(this.triggerRef.current);\n }\n\n e.preventDefault();\n e.stopPropagation();\n return false;\n }\n }\n };\n }\n\n handlePreventTabOnActions(e) {\n if (e.key === 'Tab') {\n e.stopPropagation();\n e.preventDefault();\n return false;\n }\n }\n\n render() {\n const { Children, selectedIndex, interaction, timeout } = this.asProps;\n\n this.itemProps = [];\n\n return (\n <selectedIndexContext.Provider value={selectedIndex}>\n <Root\n render={Dropdown}\n timeout={timeout || (interaction === 'hover' ? [0, 100] : undefined)}\n >\n <Children />\n </Root>\n </selectedIndexContext.Provider>\n );\n }\n}\n\nfunction List({ styles, Children }) {\n const SDropdownMenuList = Root;\n const SBar = ScrollAreaComponent.Bar;\n\n return sstyled(styles)(\n <ListBoxContextProvider>\n <SDropdownMenuList render={ScrollAreaComponent} shadow={true} shadowSize={16} shadowTheme='light'>\n <ScrollAreaComponent.Container tabIndex={undefined}>\n <Children />\n </ScrollAreaComponent.Container>\n <SBar orientation='horizontal' />\n <SBar orientation='vertical' />\n </SDropdownMenuList>\n </ListBoxContextProvider>,\n );\n}\nfunction Actions({ styles }) {\n const SDropdownMenuActions = Root;\n\n return sstyled(styles)(<SDropdownMenuActions render={Flex} />);\n}\n\nfunction Menu(props) {\n const {\n visible,\n disablePortal,\n ignorePortalsStacking,\n disableEnforceFocus,\n interaction,\n autoFocus,\n animationsDisabled,\n } = props;\n const popperProps = {\n visible,\n disablePortal,\n ignorePortalsStacking,\n disableEnforceFocus,\n interaction,\n autoFocus,\n animationsDisabled,\n };\n return (\n <ListBoxContextProvider>\n <DropdownMenu.Popper {...popperProps} role={null}>\n <Root render={DropdownMenu.List} />\n </DropdownMenu.Popper>\n </ListBoxContextProvider>\n );\n}\n\nfunction Item({\n id,\n styles,\n disabled,\n Children,\n forwardRef,\n role,\n tabIndex,\n actionsRef,\n 'aria-checked': ariaChecked,\n}) {\n const SDropdownMenuItemContainer = Root;\n const itemRef = React.useRef();\n\n const [highlighted, setHighlighted] = React.useState(false);\n\n const menuItemContextValue = {\n contentId: id,\n ref: itemRef,\n forwardRef,\n role,\n tabIndex,\n ariaChecked,\n disabled,\n };\n const ariaDescribes = [];\n\n const hasSubMenu = isAdvanceMode(Children, [DropdownMenu.displayName], true);\n const hasHint = isAdvanceMode(Children, [DropdownMenu.Item.Hint.displayName], true);\n const advancedMode =\n isAdvanceMode(Children, [DropdownMenu.Item.Content.displayName], true) || hasSubMenu || hasHint;\n\n if (hasHint) {\n const hintId = `igc-${useUID()}-option-hint`;\n\n menuItemContextValue.hintId = hintId;\n ariaDescribes.push(hintId);\n }\n\n if (hasSubMenu) {\n menuItemContextValue.hasSubMenu = true;\n }\n\n menuItemContextValue.ariaDescribes = ariaDescribes;\n\n React.useEffect(() => {\n const onFocus = (e) => {\n if (e.target === itemRef.current) {\n setHighlighted(true);\n\n if (hasSubMenu) {\n e.stopPropagation();\n }\n }\n };\n const onBlur = (e) => {\n if (e.target === itemRef.current) {\n setHighlighted(false);\n\n if (actionsRef.current) {\n itemRef.current.tabIndex = -1;\n }\n }\n };\n\n document.addEventListener('focus', onFocus, { capture: true });\n document.addEventListener('blur', onBlur, { capture: true });\n\n return () => {\n document.removeEventListener('focus', onFocus, { capture: true });\n document.removeEventListener('blur', onBlur, { capture: true });\n };\n });\n\n return sstyled(styles)(\n <menuItemContext.Provider value={menuItemContextValue}>\n <SDropdownMenuItemContainer\n render={Dropdown.Item}\n ref={advancedMode ? undefined : forkRef(itemRef, forwardRef)}\n use:highlighted={!disabled && highlighted && lastInteraction.isKeyboard()}\n use:role={advancedMode ? undefined : role}\n use:id={advancedMode ? undefined : id}\n use:tabIndex={advancedMode ? undefined : tabIndex}\n use:aria-checked={advancedMode ? undefined : ariaChecked}\n >\n <Children />\n </SDropdownMenuItemContainer>\n </menuItemContext.Provider>,\n );\n}\n\nfunction Addon(props) {\n const SDropdownMenuItemAddon = Root;\n return sstyled(props.styles)(<SDropdownMenuItemAddon render={Box} />);\n}\n\nfunction Trigger() {\n return <Root render={Dropdown.Trigger} />;\n}\n\nfunction ItemContent({ styles }) {\n const SItemContent = Root;\n const ref = React.useRef();\n const menuItemCtxValue = React.useContext(menuItemContext);\n\n let subMenu = undefined;\n\n if (menuItemCtxValue.hasSubMenu) {\n subMenu = 'true';\n }\n\n const [describedby, setDescribedby] = React.useState(new Set(menuItemCtxValue.ariaDescribes));\n\n React.useEffect(() => {\n const element = ref.current;\n const parent = element?.parentElement;\n\n if (\n parent.getAttribute('aria-haspopup') === 'true' &&\n parent.getAttribute('aria-describedby')\n ) {\n setDescribedby((prev) => {\n prev.add(parent.getAttribute('aria-describedby'));\n\n return new Set(prev);\n });\n }\n }, [menuItemCtxValue.ariaDescribes]);\n\n return sstyled(styles)(\n <SItemContent\n render={Flex}\n role={menuItemCtxValue.role}\n id={menuItemCtxValue.contentId}\n tabIndex={menuItemCtxValue.tabIndex}\n ref={forkRef(menuItemCtxValue.ref, menuItemCtxValue.forwardRef, ref)}\n use:aria-describedby={[...describedby].join(' ')}\n aria-haspopup={menuItemCtxValue.hasSubMenu ? 'true' : undefined}\n aria-expanded={subMenu}\n aria-checked={menuItemCtxValue.ariaChecked}\n alignItems='center'\n justifyContent={menuItemCtxValue.hasSubMenu ? 'space-between' : undefined}\n disabled={menuItemCtxValue.disabled}\n />,\n );\n}\n\nfunction ItemContentText({ styles, ellipsis = false, hintProps = {} }) {\n const SItemContentText = Root;\n const menuItemCtxValue = React.useContext(menuItemContext);\n\n if (menuItemCtxValue.ref) {\n hintProps.triggerRef = menuItemCtxValue.ref;\n }\n\n return sstyled(styles)(\n <>\n <SItemContentText\n render={Text}\n ellipsis={ellipsis}\n hintProps={hintProps}\n />\n </>,\n );\n}\n\nfunction ItemHint({ styles }) {\n const SItemHint = Root;\n const { hintId } = React.useContext(menuItemContext);\n\n return sstyled(styles)(<SItemHint render={Flex} id={hintId} aria-hidden='true' />);\n}\n\nconst DropdownMenu = createComponent(\n DropdownMenuRoot,\n {\n Trigger,\n Popper: Dropdown.Popper,\n List,\n VirtualList,\n Actions,\n Menu,\n Item: [Item, { Addon, Content: ItemContent, Text: ItemContentText, Hint: ItemHint }],\n Group: Dropdown.Group,\n },\n {\n parent: [Dropdown],\n },\n);\n\nDropdownMenu.selectedIndexContext = selectedIndexContext;\n\nexport default DropdownMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.ListBoxContextProvider = void 0;
|
|
8
|
-
var
|
|
8
|
+
var _baseComponents = require("@semcore/base-components");
|
|
9
9
|
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
const ListBoxContextProvider = ({
|
|
11
|
+
children
|
|
12
|
+
}) => /*#__PURE__*/_react.default.createElement(_baseComponents.hideScrollBarsFromScreenReadersContext.Provider, {
|
|
13
|
+
value: true
|
|
14
|
+
}, children);
|
|
15
|
+
exports.ListBoxContextProvider = ListBoxContextProvider;
|
|
16
16
|
//# sourceMappingURL=Context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","names":["
|
|
1
|
+
{"version":3,"file":"Context.js","names":["_baseComponents","require","_react","_interopRequireDefault","ListBoxContextProvider","children","default","createElement","hideScrollBarsFromScreenReadersContext","Provider","value","exports"],"sources":["../../../src/components/Context.tsx"],"sourcesContent":["import { hideScrollBarsFromScreenReadersContext } from '@semcore/base-components';\nimport React from 'react';\n\nexport const ListBoxContextProvider = ({ children }: React.PropsWithChildren) => (\n <hideScrollBarsFromScreenReadersContext.Provider value={true}>\n {children}\n </hideScrollBarsFromScreenReadersContext.Provider>\n);\n"],"mappings":";;;;;;;AAAA,IAAAA,eAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEO,MAAMG,sBAAsB,GAAGA,CAAC;EAAEC;AAAkC,CAAC,kBAC1EH,MAAA,CAAAI,OAAA,CAAAC,aAAA,CAACP,eAAA,CAAAQ,sCAAsC,CAACC,QAAQ;EAACC,KAAK,EAAE;AAAK,GAC1DL,QAC8C,CAClD;AAACM,OAAA,CAAAP,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -1,148 +1,131 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.VirtualList = void 0;
|
|
8
|
-
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
9
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
-
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
12
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
9
|
var _core = require("@semcore/core");
|
|
15
10
|
var _baseComponents = require("@semcore/base-components");
|
|
16
|
-
var _scrollArea = _interopRequireDefault(require("@semcore/scroll-area"));
|
|
17
11
|
var _react = _interopRequireDefault(require("react"));
|
|
18
12
|
var _Context = require("./Context");
|
|
19
13
|
/*!__reshadow-styles__:"../style/dropdown-menu.shadow.css"*/
|
|
20
|
-
|
|
14
|
+
const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SDropdownMenuList_1r615_gg_{max-height:240px;padding:var(--intergalactic-spacing-1x, 4px)0;position:relative;min-height:26px;min-width:32px;box-sizing:content-box;z-index:0;color:var(--intergalactic-text-primary, #191b23)}.___SDropdownMenuList_1r615_gg_ .___SBar_1r615_gg_{z-index:3}.___SDropdownMenuList_1r615_gg_ .___SShadowHorizontal_1r615_gg_:after,.___SDropdownMenuList_1r615_gg_ .___SShadowHorizontal_1r615_gg_:before,.___SDropdownMenuList_1r615_gg_ .___SShadowVertical_1r615_gg_:after,.___SDropdownMenuList_1r615_gg_ .___SShadowVertical_1r615_gg_:before{border-radius:var(--intergalactic-control-rounded, 6px)}.___SDropdownMenuItemContainer_1r615_gg_ .___SItemContent_1r615_gg_:focus-visible{outline:0}.___SDropdownMenuItemContainer_1r615_gg_.__nesting-trigger_1r615_gg_{justify-content:space-between}.___SDropdownMenuItemAddon_1r615_gg_,.___SItemContentText_1r615_gg_{display:inline-flex;margin-left:var(--intergalactic-spacing-1x, 4px);margin-right:var(--intergalactic-spacing-1x, 4px)}.___SDropdownMenuItemAddon_1r615_gg_:first-child,.___SItemContentText_1r615_gg_:first-child{margin-left:0}.___SDropdownMenuItemAddon_1r615_gg_:last-child,.___SItemContentText_1r615_gg_:last-child{margin-right:0}.___SDropdownMenuNesting_1r615_gg_,.___SDropdownMenuNesting_1r615_gg_._size_l_1r615_gg_,.___SDropdownMenuNesting_1r615_gg_._size_m_1r615_gg_{padding:0}.___SDropdownMenuNesting_1r615_gg_.__highlighted_1r615_gg_{z-index:1;outline-color:var(--intergalactic-keyboard-focus-outline, #008ff8);outline-style:solid;outline-width:2px;outline-offset:-2px;transition-duration:calc(var(--intergalactic-duration-extra-fast, 100)*1ms);transition-timing-function:ease-in-out;transition-property:outline-color,outline-width,outline-offset}.___SDropdownNestingItem_1r615_gg_._size_l_1r615_gg_,.___SDropdownNestingItem_1r615_gg_._size_m_1r615_gg_{padding-right:0}.___SDropdownNestingItem_1r615_gg_ .___SDropdownMenuItemContainer_1r615_gg_{width:auto;padding-top:0;padding-bottom:0;padding-left:0;min-height:auto}.___SItemHint_1r615_gg_{color:var(--intergalactic-text-secondary, #6c6e79)}", /*__inner_css_end__*/"1r615_gg_"),
|
|
21
15
|
/*__reshadow_css_end__*/
|
|
22
16
|
{
|
|
23
|
-
"__SDropdownMenuItemContainer": "
|
|
24
|
-
"_nesting-trigger": "__nesting-
|
|
25
|
-
"__SDropdownMenuNesting": "
|
|
26
|
-
"_size_l": "
|
|
27
|
-
"_size_m": "
|
|
28
|
-
"_highlighted": "
|
|
29
|
-
"__SDropdownNestingItem": "
|
|
30
|
-
"__SItemHint": "
|
|
31
|
-
"__SDropdownMenuList": "
|
|
32
|
-
"__SBar": "
|
|
33
|
-
"__SShadowHorizontal": "
|
|
34
|
-
"__SShadowVertical": "
|
|
35
|
-
"__SItemContent": "
|
|
36
|
-
"__SDropdownMenuItemAddon": "
|
|
37
|
-
"__SItemContentText": "
|
|
17
|
+
"__SDropdownMenuItemContainer": "___SDropdownMenuItemContainer_1r615_gg_",
|
|
18
|
+
"_nesting-trigger": "__nesting-trigger_1r615_gg_",
|
|
19
|
+
"__SDropdownMenuNesting": "___SDropdownMenuNesting_1r615_gg_",
|
|
20
|
+
"_size_l": "_size_l_1r615_gg_",
|
|
21
|
+
"_size_m": "_size_m_1r615_gg_",
|
|
22
|
+
"_highlighted": "__highlighted_1r615_gg_",
|
|
23
|
+
"__SDropdownNestingItem": "___SDropdownNestingItem_1r615_gg_",
|
|
24
|
+
"__SItemHint": "___SItemHint_1r615_gg_",
|
|
25
|
+
"__SDropdownMenuList": "___SDropdownMenuList_1r615_gg_",
|
|
26
|
+
"__SBar": "___SBar_1r615_gg_",
|
|
27
|
+
"__SShadowHorizontal": "___SShadowHorizontal_1r615_gg_",
|
|
28
|
+
"__SShadowVertical": "___SShadowVertical_1r615_gg_",
|
|
29
|
+
"__SItemContent": "___SItemContent_1r615_gg_",
|
|
30
|
+
"__SDropdownMenuItemAddon": "___SDropdownMenuItemAddon_1r615_gg_",
|
|
31
|
+
"__SItemContentText": "___SItemContentText_1r615_gg_"
|
|
38
32
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
(0,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
_this = (0, _callSuper2["default"])(this, VirtualListRoot, [].concat(args));
|
|
47
|
-
(0, _defineProperty2["default"])(_this, "containerRef", /*#__PURE__*/_react["default"].createRef());
|
|
48
|
-
(0, _defineProperty2["default"])(_this, "listRef", /*#__PURE__*/_react["default"].createRef());
|
|
49
|
-
(0, _defineProperty2["default"])(_this, "state", {
|
|
33
|
+
class VirtualListRoot extends _core.Component {
|
|
34
|
+
constructor(...args) {
|
|
35
|
+
super(...args);
|
|
36
|
+
(0, _defineProperty2.default)(this, "containerRef", /*#__PURE__*/_react.default.createRef());
|
|
37
|
+
(0, _defineProperty2.default)(this, "listRef", /*#__PURE__*/_react.default.createRef());
|
|
38
|
+
(0, _defineProperty2.default)(this, "state", {
|
|
50
39
|
scrollTop: 0,
|
|
51
40
|
scrollDirection: 'down'
|
|
52
41
|
});
|
|
53
|
-
(0, _defineProperty2
|
|
42
|
+
(0, _defineProperty2.default)(this, "handleScroll", e => {
|
|
54
43
|
if (e.target instanceof HTMLElement) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
scrollDirection
|
|
44
|
+
const scrollDirection = e.target.scrollTop > this.state.scrollTop ? 'down' : 'up';
|
|
45
|
+
this.setState({
|
|
46
|
+
scrollDirection,
|
|
58
47
|
scrollTop: e.target.scrollTop
|
|
59
48
|
});
|
|
60
49
|
}
|
|
61
50
|
});
|
|
62
|
-
return _this;
|
|
63
51
|
}
|
|
64
|
-
(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
var lastIndex = Math.min(Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared, rows.length);
|
|
108
|
-
var rowsToRender = rows.slice(startIndex, lastIndex);
|
|
109
|
-
var rowMarginTop = rowHeight * startIndex;
|
|
110
|
-
var rowMarginBottom = rowHeight * (rows.length - lastIndex);
|
|
111
|
-
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(_Context.ListBoxContextProvider, _ref2.cn("ListBoxContextProvider", {}), /*#__PURE__*/_react["default"].createElement(SDropdownMenuList, _ref2.cn("SDropdownMenuList", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
|
|
52
|
+
componentDidMount() {
|
|
53
|
+
const {
|
|
54
|
+
index,
|
|
55
|
+
rowHeight,
|
|
56
|
+
rowsBuffer
|
|
57
|
+
} = this.asProps;
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
const listHeight = (this.listRef.current?.getBoundingClientRect().height ?? 0) / 2;
|
|
60
|
+
this.containerRef.current?.scrollTo({
|
|
61
|
+
top: index * rowHeight - listHeight + rowHeight / 2
|
|
62
|
+
});
|
|
63
|
+
if (index <= rowsBuffer) {
|
|
64
|
+
this.forceUpdate(); // we need this for correct render all items with calculated container height
|
|
65
|
+
}
|
|
66
|
+
}, 10); // 10 for correct work in safari
|
|
67
|
+
}
|
|
68
|
+
render() {
|
|
69
|
+
var _ref = this.asProps,
|
|
70
|
+
_ref2;
|
|
71
|
+
const SDropdownMenuList = _baseComponents.ScrollArea;
|
|
72
|
+
const SBar = _baseComponents.ScrollArea.Bar;
|
|
73
|
+
const {
|
|
74
|
+
scrollDirection,
|
|
75
|
+
scrollTop
|
|
76
|
+
} = this.state;
|
|
77
|
+
const {
|
|
78
|
+
rows,
|
|
79
|
+
rowHeight,
|
|
80
|
+
rowsBuffer,
|
|
81
|
+
styles,
|
|
82
|
+
renderRow: RenderRow,
|
|
83
|
+
customData
|
|
84
|
+
} = this.asProps;
|
|
85
|
+
const offsetHeight = this.listRef.current?.offsetHeight ?? 0;
|
|
86
|
+
const prevPrepared = scrollDirection === 'down' ? rowsBuffer / 2 : rowsBuffer;
|
|
87
|
+
const nextPrepared = scrollDirection === 'up' ? rowsBuffer / 2 : rowsBuffer;
|
|
88
|
+
const startIndex = Math.max(Math.floor(scrollTop / rowHeight) - prevPrepared, 0);
|
|
89
|
+
const lastIndex = Math.min(Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared, rows.length);
|
|
90
|
+
const rowsToRender = rows.slice(startIndex, lastIndex);
|
|
91
|
+
const rowMarginTop = rowHeight * startIndex;
|
|
92
|
+
const rowMarginBottom = rowHeight * (rows.length - lastIndex);
|
|
93
|
+
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react.default.createElement(_Context.ListBoxContextProvider, _ref2.cn("ListBoxContextProvider", {}), /*#__PURE__*/_react.default.createElement(SDropdownMenuList, _ref2.cn("SDropdownMenuList", {
|
|
94
|
+
...(0, _core.assignProps)({
|
|
112
95
|
"shadow": true,
|
|
113
96
|
"shadowSize": 16,
|
|
114
97
|
"shadowTheme": 'light',
|
|
115
98
|
"onScroll": this.handleScroll,
|
|
116
99
|
"data-is-virtual": 'true',
|
|
117
100
|
"ref": this.listRef
|
|
118
|
-
}, _ref)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
(0, _defineProperty2
|
|
143
|
-
(0, _defineProperty2
|
|
144
|
-
(0, _defineProperty2
|
|
101
|
+
}, _ref)
|
|
102
|
+
}), /*#__PURE__*/_react.default.createElement(_baseComponents.ScrollArea.Container, {
|
|
103
|
+
ref: this.containerRef,
|
|
104
|
+
tabIndex: undefined,
|
|
105
|
+
h: rows.length * rowHeight
|
|
106
|
+
}, /*#__PURE__*/_react.default.createElement(_baseComponents.Box, _ref2.cn("Box", {
|
|
107
|
+
"h": rowMarginTop
|
|
108
|
+
})), rowsToRender.map((item, index) => {
|
|
109
|
+
// @ts-ignore
|
|
110
|
+
return /*#__PURE__*/_react.default.createElement(RenderRow, {
|
|
111
|
+
key: startIndex + index,
|
|
112
|
+
row: item,
|
|
113
|
+
index: startIndex + index,
|
|
114
|
+
data: customData
|
|
115
|
+
});
|
|
116
|
+
}), /*#__PURE__*/_react.default.createElement(_baseComponents.Box, _ref2.cn("Box", {
|
|
117
|
+
"h": rowMarginBottom
|
|
118
|
+
}))), /*#__PURE__*/_react.default.createElement(SBar, _ref2.cn("SBar", {
|
|
119
|
+
"orientation": 'horizontal'
|
|
120
|
+
})), /*#__PURE__*/_react.default.createElement(SBar, _ref2.cn("SBar", {
|
|
121
|
+
"orientation": 'vertical'
|
|
122
|
+
}))));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
(0, _defineProperty2.default)(VirtualListRoot, "displayName", 'VirtualList');
|
|
126
|
+
(0, _defineProperty2.default)(VirtualListRoot, "style", style);
|
|
127
|
+
(0, _defineProperty2.default)(VirtualListRoot, "defaultProps", {
|
|
145
128
|
rowsBuffer: 6
|
|
146
129
|
});
|
|
147
|
-
|
|
130
|
+
const VirtualList = exports.VirtualList = (0, _core.createComponent)(VirtualListRoot);
|
|
148
131
|
//# sourceMappingURL=VirtualList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualList.js","names":["_core","require","_baseComponents","_scrollArea","_interopRequireDefault","_react","_Context","style","sstyled","insert","VirtualListRoot","_Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","concat","_defineProperty2","React","createRef","scrollTop","scrollDirection","e","target","HTMLElement","state","setState","_inherits2","_createClass2","key","value","componentDidMount","_this2","_this$asProps","asProps","index","rowHeight","rowsBuffer","setTimeout","_this2$listRef$curren","_this2$listRef$curren2","_this2$containerRef$c","listHeight","listRef","current","getBoundingClientRect","height","containerRef","scrollTo","top","forceUpdate","render","_ref","_ref2","_this$listRef$current","_this$listRef$current2","SDropdownMenuList","ScrollAreaComponent","SBar","Bar","_this$state","_this$asProps2","rows","styles","RenderRow","renderRow","customData","offsetHeight","prevPrepared","nextPrepared","startIndex","Math","max","floor","lastIndex","min","ceil","rowsToRender","slice","rowMarginTop","rowMarginBottom","createElement","ListBoxContextProvider","cn","_objectSpread2","assignProps","handleScroll","Container","ref","tabIndex","undefined","h","Box","map","item","row","data","Component","VirtualList","exports","createComponent"],"sources":["../../../src/components/VirtualList.tsx"],"sourcesContent":["import { Box } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport { Root, Component, createComponent, sstyled } from '@semcore/core';\nimport ScrollAreaComponent from '@semcore/scroll-area';\nimport React from 'react';\n\nimport { ListBoxContextProvider } from './Context';\nimport style from '../style/dropdown-menu.shadow.css';\n\nexport type RenderRowProps<T, D = never> = {\n index: number;\n row: T;\n data: [D] extends [never] ? undefined : D;\n};\n\ntype VirtualListProps<T, D extends object = never> = {\n /** List of all rows in ddMenu */\n rows: T[];\n /** Method for render row, it's better to wrap it via React.memo */\n renderRow: (props: RenderRowProps<T, D>) => React.ReactNode;\n /** The height of row. For now, you should calculate it on your side. */\n rowHeight: number;\n /** The buffer of rows out of visible rows\n * @default 10\n */\n rowsBuffer?: number;\n} & ([D] extends [never] ? { customData?: undefined } : {\n /** Some custom data for each renderRow function */\n customData: D;\n});\n\ntype State = {\n scrollTop: number;\n scrollDirection: 'up' | 'down';\n};\n\nclass VirtualListRoot<T = string, D extends object = never> extends Component<VirtualListProps<T, D>, {}, State, [], { rowsBuffer: number; index: number }> {\n static displayName = 'VirtualList';\n static style = style;\n\n static defaultProps = {\n rowsBuffer: 6,\n };\n\n containerRef = React.createRef<HTMLDivElement>();\n listRef = React.createRef<HTMLDivElement>();\n\n state: State = {\n scrollTop: 0,\n scrollDirection: 'down',\n };\n\n componentDidMount() {\n const { index, rowHeight, rowsBuffer } = this.asProps;\n\n setTimeout(() => {\n const listHeight = (this.listRef.current?.getBoundingClientRect().height ?? 0) / 2;\n this.containerRef.current?.scrollTo({ top: index * rowHeight - listHeight + rowHeight / 2 });\n\n if (index <= rowsBuffer) {\n this.forceUpdate(); // we need this for correct render all items with calculated container height\n }\n }, 10); // 10 for correct work in safari\n }\n\n handleScroll = (e: React.SyntheticEvent<HTMLDivElement>) => {\n if (e.target instanceof HTMLElement) {\n const scrollDirection = e.target.scrollTop > this.state.scrollTop ? 'down' : 'up';\n\n this.setState({\n scrollDirection,\n scrollTop: e.target.scrollTop,\n });\n }\n };\n\n render() {\n const SDropdownMenuList = Root;\n const SBar = ScrollAreaComponent.Bar;\n\n const { scrollDirection, scrollTop } = this.state;\n const { rows, rowHeight, rowsBuffer, styles, renderRow: RenderRow, customData } = this.asProps;\n\n const offsetHeight = this.listRef.current?.offsetHeight ?? 0;\n const prevPrepared = scrollDirection === 'down' ? rowsBuffer / 2 : rowsBuffer;\n const nextPrepared = scrollDirection === 'up' ? rowsBuffer / 2 : rowsBuffer;\n\n const startIndex = Math.max(Math.floor(scrollTop / rowHeight) - prevPrepared, 0);\n\n const lastIndex = Math.min(\n Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared,\n rows.length,\n );\n\n const rowsToRender = rows.slice(startIndex, lastIndex);\n const rowMarginTop = rowHeight * startIndex;\n const rowMarginBottom = rowHeight * (rows.length - lastIndex);\n\n return sstyled(styles)(\n <ListBoxContextProvider>\n <SDropdownMenuList\n render={ScrollAreaComponent}\n shadow={true}\n shadowSize={16}\n shadowTheme='light'\n onScroll={this.handleScroll}\n data-is-virtual='true'\n ref={this.listRef}\n >\n <ScrollAreaComponent.Container ref={this.containerRef} tabIndex={undefined} h={rows.length * rowHeight}>\n <Box h={rowMarginTop} />\n {rowsToRender.map((item, index) => {\n // @ts-ignore\n return <RenderRow key={startIndex + index} row={item} index={startIndex + index} data={customData} />;\n })}\n <Box h={rowMarginBottom} />\n </ScrollAreaComponent.Container>\n <SBar orientation='horizontal' />\n <SBar orientation='vertical' />\n </SDropdownMenuList>\n </ListBoxContextProvider>,\n );\n }\n}\n\nexport type VirtualListComponent = (<\n T = string,\n D extends object = never,\n>(\n props: Intergalactic.InternalTypings.EfficientOmit<Intergalactic.InternalTypings.ComponentProps<typeof Box, 'div', VirtualListProps<T, D>>, 'tag' | 'children'>\n) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<typeof Box, 'div', VirtualListProps<any, any>>;\n\nexport const VirtualList = createComponent(VirtualListRoot) as VirtualListComponent;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"VirtualList.js","names":["_core","require","_baseComponents","_react","_interopRequireDefault","_Context","style","sstyled","insert","VirtualListRoot","Component","constructor","args","_defineProperty2","default","React","createRef","scrollTop","scrollDirection","e","target","HTMLElement","state","setState","componentDidMount","index","rowHeight","rowsBuffer","asProps","setTimeout","listHeight","listRef","current","getBoundingClientRect","height","containerRef","scrollTo","top","forceUpdate","render","_ref","_ref2","SDropdownMenuList","ScrollAreaComponent","SBar","Bar","rows","styles","renderRow","RenderRow","customData","offsetHeight","prevPrepared","nextPrepared","startIndex","Math","max","floor","lastIndex","min","ceil","length","rowsToRender","slice","rowMarginTop","rowMarginBottom","createElement","ListBoxContextProvider","cn","assignProps","handleScroll","ScrollArea","Container","ref","tabIndex","undefined","h","Box","map","item","key","row","data","VirtualList","exports","createComponent"],"sources":["../../../src/components/VirtualList.tsx"],"sourcesContent":["import { ScrollArea as ScrollAreaComponent, Box } from '@semcore/base-components';\nimport type { Intergalactic } from '@semcore/core';\nimport { Root, Component, createComponent, sstyled } from '@semcore/core';\nimport React from 'react';\n\nimport { ListBoxContextProvider } from './Context';\nimport style from '../style/dropdown-menu.shadow.css';\n\nexport type RenderRowProps<T, D = never> = {\n index: number;\n row: T;\n data: [D] extends [never] ? undefined : D;\n};\n\ntype VirtualListProps<T, D extends object = never> = {\n /** List of all rows in ddMenu */\n rows: T[];\n /** Method for render row, it's better to wrap it via React.memo */\n renderRow: (props: RenderRowProps<T, D>) => React.ReactNode;\n /** The height of row. For now, you should calculate it on your side. */\n rowHeight: number;\n /** The buffer of rows out of visible rows\n * @default 10\n */\n rowsBuffer?: number;\n} & ([D] extends [never] ? { customData?: undefined } : {\n /** Some custom data for each renderRow function */\n customData: D;\n});\n\ntype State = {\n scrollTop: number;\n scrollDirection: 'up' | 'down';\n};\n\nclass VirtualListRoot<T = string, D extends object = never> extends Component<VirtualListProps<T, D>, [], Readonly<{}>, { rowsBuffer: number; index: number }, State> {\n static displayName = 'VirtualList';\n static style = style;\n\n static defaultProps = {\n rowsBuffer: 6,\n };\n\n containerRef = React.createRef<HTMLDivElement>();\n listRef = React.createRef<HTMLDivElement>();\n\n state: State = {\n scrollTop: 0,\n scrollDirection: 'down',\n };\n\n componentDidMount() {\n const { index, rowHeight, rowsBuffer } = this.asProps;\n\n setTimeout(() => {\n const listHeight = (this.listRef.current?.getBoundingClientRect().height ?? 0) / 2;\n this.containerRef.current?.scrollTo({ top: index * rowHeight - listHeight + rowHeight / 2 });\n\n if (index <= rowsBuffer) {\n this.forceUpdate(); // we need this for correct render all items with calculated container height\n }\n }, 10); // 10 for correct work in safari\n }\n\n handleScroll = (e: React.SyntheticEvent<HTMLDivElement>) => {\n if (e.target instanceof HTMLElement) {\n const scrollDirection = e.target.scrollTop > this.state.scrollTop ? 'down' : 'up';\n\n this.setState({\n scrollDirection,\n scrollTop: e.target.scrollTop,\n });\n }\n };\n\n render() {\n const SDropdownMenuList = Root;\n const SBar = ScrollAreaComponent.Bar;\n\n const { scrollDirection, scrollTop } = this.state;\n const { rows, rowHeight, rowsBuffer, styles, renderRow: RenderRow, customData } = this.asProps;\n\n const offsetHeight = this.listRef.current?.offsetHeight ?? 0;\n const prevPrepared = scrollDirection === 'down' ? rowsBuffer / 2 : rowsBuffer;\n const nextPrepared = scrollDirection === 'up' ? rowsBuffer / 2 : rowsBuffer;\n\n const startIndex = Math.max(Math.floor(scrollTop / rowHeight) - prevPrepared, 0);\n\n const lastIndex = Math.min(\n Math.ceil((scrollTop + offsetHeight) / rowHeight) + nextPrepared,\n rows.length,\n );\n\n const rowsToRender = rows.slice(startIndex, lastIndex);\n const rowMarginTop = rowHeight * startIndex;\n const rowMarginBottom = rowHeight * (rows.length - lastIndex);\n\n return sstyled(styles)(\n <ListBoxContextProvider>\n <SDropdownMenuList\n render={ScrollAreaComponent}\n shadow={true}\n shadowSize={16}\n shadowTheme='light'\n onScroll={this.handleScroll}\n data-is-virtual='true'\n ref={this.listRef}\n >\n <ScrollAreaComponent.Container ref={this.containerRef} tabIndex={undefined} h={rows.length * rowHeight}>\n <Box h={rowMarginTop} />\n {rowsToRender.map((item, index) => {\n // @ts-ignore\n return <RenderRow key={startIndex + index} row={item} index={startIndex + index} data={customData} />;\n })}\n <Box h={rowMarginBottom} />\n </ScrollAreaComponent.Container>\n <SBar orientation='horizontal' />\n <SBar orientation='vertical' />\n </SDropdownMenuList>\n </ListBoxContextProvider>,\n );\n }\n}\n\nexport type VirtualListComponent = (<\n T = string,\n D extends object = never,\n>(\n props: Intergalactic.InternalTypings.EfficientOmit<Intergalactic.InternalTypings.ComponentProps<typeof Box, 'div', VirtualListProps<T, D>>, 'tag' | 'children'>\n) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<typeof Box, 'div', VirtualListProps<any, any>>;\n\nexport const VirtualList = createComponent(VirtualListRoot) as VirtualListComponent;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/cjs/index.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type { Box, BoxProps, FlexProps, Flex, eventInteraction, ScrollAreaProps } from '@semcore/base-components';\nimport type { PropGetterFn, Intergalactic } from '@semcore/core';\nimport type {\n DropdownContext,\n DropdownProps,\n DropdownHandlers,\n DropdownTriggerProps,\n DropdownPopperAriaProps,\n} from '@semcore/dropdown';\nimport type Dropdown from '@semcore/dropdown';\nimport type { Text } from '@semcore/typography';\n\nimport type { VirtualList, RenderRowProps } from './components/VirtualList';\n\nexport type DropdownMenuSize = 'm' | 'l';\n\nexport type DropdownMenuProps = DropdownProps & {\n /**\n * Set role `menuitemradio` (or `menuitemcheckbox` if `multiselect`) for Dropdown.Item\n */\n selectable?: boolean;\n /**\n * Multiple select\n */\n multiselect?: boolean;\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n /**\n * Index of the element selected by default\n */\n defaultHighlightedIndex?: number | null;\n /**\n * Index of the selected item\n */\n highlightedIndex?: number | null;\n /**\n * Callback for highlightedIndex change\n * highlightedIndex - Index of the selected item\n */\n onHighlightedIndexChange?: (highlightedIndex: number | null) => void;\n /** Specifies the locale for i18n support */\n locale?: string;\n /**\n * Flag for menu that using as actions on DropdownMenu.Item\n */\n inlineActions?: boolean;\n\n /**\n * Count of menu items (for virtual lists only)\n */\n itemsCount?: number;\n};\n\nexport type DropdownMenuListProps = BoxProps &\n ScrollAreaProps & {\n /**\n * Size of the menu\n * @default m\n */\n size?: DropdownMenuSize;\n };\n\nexport type DropdownMenuMenuProps = DropdownMenuListProps & {};\n\nexport type DropdownMenuItemProps = FlexProps & {\n /**\n * Enables selected state. For selectable dropdowns only.\n */\n selected?: boolean;\n /**\n * Disables item\n */\n disabled?: boolean;\n /**\n * Size of the component\n * @default m\n */\n size?: DropdownMenuSize;\n /**\n * Index of item (used in virtualized lists)\n */\n index?: number;\n};\n\nexport type DropdownMenuContext = DropdownContext & {\n /**\n * Tracks which menu item is currently highlighted/focused for keyboard navigation\n **/\n highlightedIndex?: number;\n /**\n * Returns props for the menu list container\n **/\n getListProps: PropGetterFn;\n /**\n * Returns props for individual menu items\n **/\n getItemProps: PropGetterFn;\n /**\n * Returns props for item hint/description elements\n **/\n getItemHintProps: PropGetterFn;\n /**\n * Returns props for item title elements\n **/\n getItemTitleProps: PropGetterFn;\n};\n\nexport type DropdownMenuHandlers = DropdownHandlers & {\n highlightedIndex: (index: number) => void;\n};\n\nexport type DropdownMenuTriggerProps = DropdownTriggerProps;\n\ndeclare const DropdownMenu: Intergalactic.Component<\n 'div',\n DropdownMenuProps,\n DropdownMenuContext,\n [handlers: DropdownMenuHandlers]\n> & {\n Trigger: typeof Dropdown.Trigger;\n Popper: Intergalactic.Component<'div', DropdownMenuProps & DropdownPopperAriaProps>;\n List: Intergalactic.Component<\n 'div',\n DropdownMenuListProps,\n DropdownMenuContext,\n [handlers: DropdownMenuHandlers]\n >;\n Actions: Intergalactic.Component<\n typeof Flex,\n DropdownMenuListProps,\n DropdownMenuContext,\n [handlers: DropdownMenuHandlers]\n >;\n Menu: Intergalactic.Component<\n 'div',\n DropdownMenuMenuProps,\n DropdownMenuContext,\n [handlers: DropdownMenuHandlers]\n >;\n Item: Intergalactic.Component<\n typeof Dropdown.Item,\n DropdownMenuItemProps,\n DropdownMenuContext,\n [handlers: DropdownMenuHandlers]\n > & {\n Addon: typeof Box;\n Content: typeof Flex;\n Text: typeof Text;\n Hint: typeof Flex;\n };\n\n Group: typeof Dropdown.Group;\n\n VirtualList: typeof VirtualList;\n\n selectedIndexContext: React.Context<number>;\n nestedMenuInteraction: eventInteraction;\n};\n\nexport default DropdownMenu;\n\nexport {\n RenderRowProps,\n};\n"],"mappings":"","ignoreList":[]}
|