UNPKG

@razorpay/blade

Version:

The Design System that powers Razorpay

134 lines (130 loc) 5.6 kB
import _defineProperty from '@babel/runtime/helpers/defineProperty'; import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties'; import React__default, { useMemo } from 'react'; import styled from 'styled-components'; import { useListContext, ListProvider } from './ListContext.js'; import { UnorderedList } from './UnorderedList.web.js'; import { OrderedList } from './OrderedList.web.js'; import getIn from '../../utils/lodashButBetter/get.js'; import '../../utils/metaAttribute/index.js'; import '../Box/BaseBox/index.js'; import '../Box/styledProps/index.js'; import '../../utils/assignWithoutSideEffects/index.js'; import '../../utils/makeSpace/index.js'; import '../../utils/makeAccessible/index.js'; import '../../utils/isValidAllowedChildren/index.js'; import '../../utils/logger/index.js'; import { jsx } from 'react/jsx-runtime'; import { makeSpace } from '../../utils/makeSpace/makeSpace.js'; import { isValidAllowedChildren } from '../../utils/isValidAllowedChildren/isValidAllowedChildren.js'; import { MetaConstants } from '../../utils/metaAttribute/metaConstants.js'; import { throwBladeError } from '../../utils/logger/logger.js'; import { BaseBox } from '../Box/BaseBox/BaseBox.web.js'; import { getStyledProps } from '../Box/styledProps/getStyledProps.js'; import { metaAttribute } from '../../utils/metaAttribute/metaAttribute.web.js'; import { makeAccessible } from '../../utils/makeAccessible/makeAccessible.web.js'; import { assignWithoutSideEffects } from '../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js'; var _excluded = ["variant", "size", "children", "icon", "testID", "iconColor"]; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } var StyledOrderedList = /*#__PURE__*/styled(OrderedList).withConfig({ displayName: "List__StyledOrderedList", componentId: "bqf6r7-0" })(function (_ref) { var marginTop = _ref.marginTop, theme = _ref.theme; return { marginTop: marginTop ? makeSpace(getIn(theme, marginTop)) : undefined }; }); var StyledUnorderedList = /*#__PURE__*/styled(UnorderedList).withConfig({ displayName: "List__StyledUnorderedList", componentId: "bqf6r7-1" })(function (_ref2) { var marginTop = _ref2.marginTop, theme = _ref2.theme; return { marginTop: marginTop ? makeSpace(getIn(theme, marginTop)) : undefined }; }); /** * List Component is used to display a set of related items that are composed of text/links. Each list item begins with a bullet or a number. * * ## Usage * * ```tsx * <List * variant='unordered' * size='medium' * > * <ListItem> * Item 1 * <List> * <ListItem>Item 1.1</ListItem> * </List> * </ListItem> * <ListItem>Item 2</ListItem> * <List /> * ``` */ var _List = function _List(_ref3, ref) { var _ref3$variant = _ref3.variant, variant = _ref3$variant === void 0 ? 'unordered' : _ref3$variant, size = _ref3.size, children = _ref3.children, icon = _ref3.icon, testID = _ref3.testID, iconColor = _ref3.iconColor, styledProps = _objectWithoutProperties(_ref3, _excluded); var ListElement = variant === 'unordered' ? StyledUnorderedList : StyledOrderedList; var _useListContext = useListContext(), level = _useListContext.level, listContextSize = _useListContext.size; var listContextValue = useMemo(function () { return { level: level ? level + 1 : 1, size: size !== null && size !== void 0 ? size : listContextSize, icon: icon, iconColor: iconColor, variant: variant }; }, [icon, iconColor, level, listContextSize, size, variant]); var childrenArray = React__default.Children.toArray(children); var childListItems = childrenArray.filter(function (child) { if (isValidAllowedChildren(child, MetaConstants.ListItem)) { return child; } if (true) { throwBladeError({ message: 'You can only pass a ListItem as a child to List.', moduleName: 'List' }); } return null; }); return /*#__PURE__*/jsx(ListProvider, { value: listContextValue, children: /*#__PURE__*/jsx(BaseBox, _objectSpread(_objectSpread({ ref: ref }, getStyledProps(styledProps)), {}, { children: /*#__PURE__*/jsx(ListElement, _objectSpread(_objectSpread(_objectSpread({}, metaAttribute({ name: MetaConstants.List, testID: testID })), makeAccessible({ role: 'list' })), {}, { children: variant === 'unordered' ? childListItems : childListItems.map(function (child, index) { return /*#__PURE__*/React__default.cloneElement(child, { _itemNumber: index + 1 }); } // adds _itemNumber for rendering ordered list bullets ) })) })) }); }; var List = /*#__PURE__*/assignWithoutSideEffects( /*#__PURE__*/React__default.forwardRef(_List), { componentId: MetaConstants.List }); export { List }; //# sourceMappingURL=List.js.map