UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

49 lines (46 loc) 10.7 kB
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties'; import React__default from 'react'; import styled from 'styled-components/native'; import { componentIds } from './componentIds.js'; import { validateActionListItemProps, getNormalTextColor } from './actionListUtils.js'; import { getActionListSectionRole, getActionListItemRole } from './getA11yRoles.js'; import { Divider } from '../Divider/Divider.js'; import { BaseBox } from '../Box/BaseBox/BaseBox.native.js'; import { useDropdown } from '../Dropdown/useDropdown.js'; import '../Typography/Heading/Heading.js'; import { Text } from '../Typography/Text/Text.js'; import '../Typography/Code/Code.js'; import '../Typography/Display/Display.js'; import 'react-native'; import '@babel/runtime/helpers/slicedToArray'; import { throwBladeError } from '../../utils/logger/logger.js'; import { isReactNative } from '../../utils/platform/isReactNative.js'; import { castWebType } from '../../utils/platform/castUtils.js'; import { makeSize } from '../../utils/makeSize/makeSize.js'; import '../BladeProvider/useTheme.js'; import { metaAttribute } from '../../utils/metaAttribute/metaAttribute.native.js'; import { MetaConstants } from '../../utils/metaAttribute/metaConstants.js'; import { assignWithoutSideEffects } from '../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js'; import { makeAccessible } from '../../utils/makeAccessible/makeAccessible.native.js'; import { Badge } from '../Badge/Badge.js'; import { Box } from '../Box/Box.js'; import { dropdownComponentIds } from '../Dropdown/dropdownComponentIds.js'; import { BaseMenuItem } from '../BaseMenu/BaseMenuItem/BaseMenuItem.js'; import { useBaseMenuItem } from '../BaseMenu/BaseMenuContext.js'; import { Checkbox } from '../Checkbox/Checkbox.js'; import '../../tokens/global/typography.js'; import '../../tokens/global/motion.js'; import '../Checkbox/CheckboxGroup/CheckboxGroupContext.js'; import '../../utils/useCallbackRef.js'; import '@gorhom/portal'; import 'react-native-gesture-handler'; import '../BottomSheet/BottomSheetStack.js'; import { jsxs, jsx } from 'react/jsx-runtime'; import 'react-native-svg'; import '../Icons/_Svg/Svg/Svg.native.js'; import '../VisuallyHidden/VisuallyHidden.native.js'; import { makeAnalyticsAttribute } from '../../utils/makeAnalyticsAttribute/makeAnalyticsAttribute.js'; import { Avatar } from '../Avatar/Avatar.native.js'; var _excluded=["title","children","testID","_hideDivider","_sectionChildValues"];var StyledActionListSectionTitle=styled(BaseBox)(function(props){return {padding:makeSize(props.theme.spacing[3])};});var _ActionListSectionTitle=function _ActionListSectionTitle(_ref){var title=_ref.title,_ref$isInsideVirtuali=_ref.isInsideVirtualizedList,isInsideVirtualizedList=_ref$isInsideVirtuali===void 0?false:_ref$isInsideVirtuali;return jsx(StyledActionListSectionTitle,Object.assign({},makeAccessible({hidden:!isInsideVirtualizedList,role:isInsideVirtualizedList?'heading':undefined}),{children:jsx(Text,{color:"surface.text.gray.muted",size:"small",weight:"semibold",children:title})}));};var ActionListSectionTitle=assignWithoutSideEffects(_ActionListSectionTitle,{componentId:componentIds.ActionListSectionTitle});var _ActionListSection=function _ActionListSection(_ref2){var title=_ref2.title,children=_ref2.children,testID=_ref2.testID,_hideDivider=_ref2._hideDivider,_sectionChildValues=_ref2._sectionChildValues,rest=_objectWithoutProperties(_ref2,_excluded);var _useDropdown=useDropdown(),hasAutoCompleteInHeader=_useDropdown.hasAutoCompleteInHeader,dropdownTriggerer=_useDropdown.dropdownTriggerer,filteredValues=_useDropdown.filteredValues;var hasAutoComplete=hasAutoCompleteInHeader||dropdownTriggerer===dropdownComponentIds.triggers.AutoComplete;var isSectionVisible=React__default.useMemo(function(){if(hasAutoComplete){var visibleActionListItemInSection=_sectionChildValues==null?void 0:_sectionChildValues.find(function(actionItemValue){return filteredValues.includes(actionItemValue);});return Boolean(visibleActionListItemInSection);}return true;},[_sectionChildValues,hasAutoComplete,filteredValues]);var showDividerInRN=!(_hideDivider&&isReactNative());var showDividerInAutoComplete=hasAutoComplete?isSectionVisible&&filteredValues.length>1:true;return jsxs(BaseBox,Object.assign({},makeAccessible({role:getActionListSectionRole(),label:title}),metaAttribute({name:MetaConstants.ActionListSection,testID:testID}),makeAnalyticsAttribute(rest),{children:[isSectionVisible?jsx(ActionListSectionTitle,{title:title}):null,jsx(BaseBox,Object.assign({},makeAccessible({role:isReactNative()?undefined:'listbox'}),{children:children})),showDividerInAutoComplete&&showDividerInRN?jsx(Divider,{marginX:"spacing.3",marginY:"spacing.1"}):null]}));};var ActionListSection=assignWithoutSideEffects(React__default.memo(_ActionListSection),{componentId:componentIds.ActionListSection});var _ActionListItemIcon=function _ActionListItemIcon(_ref3){var icon=_ref3.icon;var Icon=icon;var _useBaseMenuItem=useBaseMenuItem(),color=_useBaseMenuItem.color,isDisabled=_useBaseMenuItem.isDisabled;var iconState=isDisabled?'disabled':'muted';return jsx(Icon,{color:color==='negative'?'feedback.icon.negative.intense':`interactive.icon.gray.${iconState}`,size:"medium"});};var ActionListItemIcon=assignWithoutSideEffects(_ActionListItemIcon,{componentId:componentIds.ActionListItemIcon});var _ActionListItemBadgeGroup=function _ActionListItemBadgeGroup(_ref4){var children=_ref4.children;return jsx(Box,{display:"flex",alignItems:"center",flexDirection:"row",children:children});};var ActionListItemBadgeGroup=assignWithoutSideEffects(_ActionListItemBadgeGroup,{componentId:componentIds.ActionListItemBadgeGroup});var _ActionListItemAvatar=function _ActionListItemAvatar(avatarProps){return jsx(Avatar,Object.assign({size:"xsmall"},avatarProps));};var ActionListItemAvatar=assignWithoutSideEffects(_ActionListItemAvatar,{componentId:componentIds.ActionListItemAvatar});var _ActionListItemBadge=function _ActionListItemBadge(props){return jsx(Badge,Object.assign({size:"medium",marginLeft:"spacing.3"},props));};var ActionListItemBadge=assignWithoutSideEffects(_ActionListItemBadge,{componentId:componentIds.ActionListItemBadge});var _ActionListItemText=function _ActionListItemText(_ref5){var children=_ref5.children;var _useBaseMenuItem2=useBaseMenuItem(),isDisabled=_useBaseMenuItem2.isDisabled;return jsx(Text,{variant:"caption",color:getNormalTextColor(isDisabled,{isMuted:true}),children:children});};var ActionListItemText=assignWithoutSideEffects(_ActionListItemText,{componentId:componentIds.ActionListItemText});var BaseMenuLeadingItem=function BaseMenuLeadingItem(_ref6){var isSelected=_ref6.isSelected,isDisabled=_ref6.isDisabled;return jsx(BaseBox,Object.assign({pointerEvents:"none"},makeAccessible({hidden:true}),{children:jsx(Checkbox,{isChecked:isSelected,tabIndex:-1,isDisabled:isDisabled,children:null})}));};var makeActionListItemClickable=function makeActionListItemClickable(clickHandler){if(isReactNative()){return {onPress:clickHandler};}return {onClick:clickHandler};};var _ActionListItem=function _ActionListItem(props){var _useDropdown2=useDropdown(),activeIndex=_useDropdown2.activeIndex,dropdownBaseId=_useDropdown2.dropdownBaseId,onOptionClick=_useDropdown2.onOptionClick,selectedIndices=_useDropdown2.selectedIndices,setShouldIgnoreBlurAnimation=_useDropdown2.setShouldIgnoreBlurAnimation,selectionType=_useDropdown2.selectionType,dropdownTriggerer=_useDropdown2.dropdownTriggerer,isKeydownPressed=_useDropdown2.isKeydownPressed,filteredValues=_useDropdown2.filteredValues,hasAutoCompleteInHeader=_useDropdown2.hasAutoCompleteInHeader,hasUnControlledFilterChipSelectInput=_useDropdown2.hasUnControlledFilterChipSelectInput;React__default.useEffect(function(){if(activeIndex===props._index&&props._virtualizedIndex!==undefined){props._onVirtualizedFocus==null?void 0:props._onVirtualizedFocus(props._virtualizedIndex);}},[activeIndex]);var hasAutoComplete=hasAutoCompleteInHeader||dropdownTriggerer===dropdownComponentIds.triggers.AutoComplete;var renderOnWebAs=props.href?'a':'button';var getIsSelected=function getIsSelected(){if(dropdownTriggerer===dropdownComponentIds.triggers.SelectInput||hasAutoComplete||hasUnControlledFilterChipSelectInput){if(typeof props._index==='number'){return selectedIndices.includes(props._index);}return undefined;}return props.isSelected;};var isSelected=getIsSelected();React__default.useEffect(function(){validateActionListItemProps({leading:props.leading,trailing:props.trailing,titleSuffix:props.titleSuffix});},[props.leading,props.trailing,props.titleSuffix]);React__default.useEffect(function(){if(__DEV__){if(dropdownTriggerer===dropdownComponentIds.triggers.SelectInput&&props.intent==='negative'){throwBladeError({message:'negative intent ActionListItem cannot be used inside Dropdown with SelectInput trigger',moduleName:'ActionListItem'});}}},[props.intent,dropdownTriggerer]);var isVisible=hasAutoComplete&&filteredValues?filteredValues.includes(props.value):true;return jsx(BaseMenuItem,Object.assign({isVisible:isVisible,as:!isReactNative()?renderOnWebAs:undefined,id:`${dropdownBaseId}-${props._index}`,tabIndex:-1,title:props.title,description:props.description,leading:selectionType==='multiple'?jsx(BaseMenuLeadingItem,{isSelected:isSelected,isDisabled:props.isDisabled},`${dropdownBaseId}-${props._index}-leading-${isSelected}`):props.leading,trailing:props.trailing,titleSuffix:props.titleSuffix,href:props.href,target:props.target,className:activeIndex===props._index?'active-focus':'',isSelected:isSelected,isDisabled:props.isDisabled,role:getActionListItemRole(dropdownTriggerer,props.href)},makeActionListItemClickable(function(e){if(typeof props._index==='number'){onOptionClick(e,props._index);props.onClick==null?void 0:props.onClick({name:props.value,value:isSelected,event:castWebType(e)});}}),makeAnalyticsAttribute(Object.assign({},props)),metaAttribute({name:MetaConstants.ActionListItem,testID:props.testID}),{onMouseDown:function onMouseDown(){setShouldIgnoreBlurAnimation(true);},onMouseUp:function onMouseUp(){setShouldIgnoreBlurAnimation(false);},"data-value":props.value,"data-index":props._index,selectionType:selectionType,color:props.intent,isKeydownPressed:isKeydownPressed}));};var ActionListItem=assignWithoutSideEffects(React__default.memo(_ActionListItem),{componentId:componentIds.ActionListItem,displayName:componentIds.ActionListItem}); export { ActionListItem, ActionListItemAvatar, ActionListItemBadge, ActionListItemBadgeGroup, ActionListItemIcon, ActionListItemText, ActionListSection, ActionListSectionTitle }; //# sourceMappingURL=ActionListItem.js.map