UNPKG

@geneui/components

Version:

The Gene UI components library designed for BI tools

95 lines (91 loc) 4.13 kB
import { _ as _extends } from '../_rollupPluginBabelHelpers-e8fb2e5c.js'; import React__default from 'react'; import PropTypes from 'prop-types'; import { c as classnames } from '../index-031ff73c.js'; import Badge from '../Badge/index.js'; import Icon from '../Icon/index.js'; import { s as styleInject } from '../style-inject.es-746bb8ed.js'; import '../tslib.es6-f211516f.js'; var css_248z = "[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar{background:var(--background);border-top:1px solid rgba(var(--background-sc-rgb),.06);bottom:0;font:600 1rem/1.4rem var(--font-family);left:0;position:fixed;text-align:center;width:100%;z-index:200}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul{display:table;table-layout:fixed;width:100%}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li{display:table-cell;overflow:hidden;padding:.8rem 0 .4rem;position:relative;transition:color .3s,opacity .3s}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li .badge{margin:0 auto;position:absolute;top:.8rem;width:5.2rem}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li .badge-right .badge{right:calc(50% - 2.5rem)}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li .badge-left .badge{left:calc(50% - 2.5rem)}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li:before{background:var(--hero);border-radius:0 0 .5rem .5rem;content:\"\";display:block;height:.3rem;left:calc(50% - 2.6rem);position:absolute;top:0;transform:translateY(-100%);transition:transform .3s;width:5.2rem}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li.active{color:var(--hero)}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li.active:before{transform:translateY(0)}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar>ul>li.disabled{opacity:.5;pointer-events:none}[data-gene-ui-version=\"2.16.5\"] .mob-navigation-bar .icon{margin:0 0 .2rem}"; styleInject(css_248z); function MobileNavigation(_ref) { let { list, activeSlug, onChange, className, ...restProps } = _ref; const handleClick = event => { const { index } = event.currentTarget.dataset; const item = list[index]; onChange && onChange(item); }; return /*#__PURE__*/React__default.createElement("div", _extends({ className: classnames('mob-navigation-bar', className) }, restProps), /*#__PURE__*/React__default.createElement("ul", null, list.map((item, index) => /*#__PURE__*/React__default.createElement("li", { key: item.slug, "data-index": index, className: classnames({ active: item.slug === activeSlug, disabled: item.disabled }), onClick: !item.disabled ? handleClick : null }, item.badge && /*#__PURE__*/React__default.createElement("div", { className: "badge-".concat(item.badge.position || 'right') }, /*#__PURE__*/React__default.createElement(Badge, { size: "default", maxCount: item.badge.maxCount, count: item.badge.count })), /*#__PURE__*/React__default.createElement(Icon, { type: item.icon }), /*#__PURE__*/React__default.createElement("p", { className: "ellipsis-text" }, item.title))))); } MobileNavigation.propTypes = { /** * Array of menu items data */ list: PropTypes.arrayOf(PropTypes.shape({ /** * Title for navigation item */ title: PropTypes.string, /** * */ slug: PropTypes.string, /** * Icon for navigation item */ icon: PropTypes.string, /** * Notification Badge * count - the value of badge * maxCount - if the count is greater than the max count, the Badge shows maxCount+ * position - position of Badge */ badge: PropTypes.shape({ count: PropTypes.number, maxCount: PropTypes.number, position: PropTypes.oneOf(['left', 'right']) }) }).isRequired), /** * Initially selected item */ activeSlug: PropTypes.string, /** * CSS class name for element */ className: PropTypes.string, /** * Fires event when user click on one of the items * (item: Object) => void */ onChange: PropTypes.func }; export { MobileNavigation as default };