UNPKG

@onesy/ui-react

Version:
211 lines (210 loc) 9.41 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _compilerRuntime = require("react/compiler-runtime"); var _react = _interopRequireDefault(require("react")); var _utils = require("@onesy/utils"); var _styleReact = require("@onesy/style-react"); var _Line = _interopRequireDefault(require("../Line")); var _Surface = _interopRequireDefault(require("../Surface")); var _Divider = _interopRequireDefault(require("../Divider")); var _NavigationBar = _interopRequireDefault(require("../NavigationBar")); var _utils2 = require("../utils"); var _jsxRuntime = require("react/jsx-runtime"); const _excluded = ["tonal", "color", "version", "size", "value", "valueDefault", "onChange", "justify", "border", "header", "fixed", "NavigationBarProps", "DividerProps", "className", "style", "children"]; 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) { (0, _defineProperty2.default)(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; } const useStyle = (0, _styleReact.style)(theme => ({ root: { position: 'relative', height: '100%', width: '80px', padding: `${theme.methods.space.value(5, 'px')} 0`, overflow: 'auto', zIndex: theme.z_index.app_bar }, size_small: { width: '72px' }, size_regular: { width: '80px' }, size_large: { width: '88px' }, fixed: { position: 'fixed', insetBlock: '0', insetInlineStart: '0' }, header: { marginBottom: '70px' }, main: { width: '100%', flex: '1 1 auto', '&.onesy-NavigationBar-root': { background: 'transparent' } }, divider: { position: 'absolute', height: '100%', insetBlock: '0', insetInlineEnd: '0', '&.onesy-Divider-root': { margin: '0', opacity: theme.palette.light ? '0.07' : '0.11' } } }), { name: 'onesy-NavigationRail' }); const NavigationRail = props_ => { var _theme$ui, _theme$ui2, _theme$elements, _theme$elements2, _theme$elements3, _theme$elements4; const $ = (0, _compilerRuntime.c)(4); const theme = (0, _styleReact.useOnesyTheme)(); const props = _objectSpread(_objectSpread(_objectSpread({}, theme === null || theme === void 0 || (_theme$ui = theme.ui) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.elements) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.all) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.props) === null || _theme$ui === void 0 ? void 0 : _theme$ui.default), theme === null || theme === void 0 || (_theme$ui2 = theme.ui) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.elements) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.onesyNavigationRail) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.props) === null || _theme$ui2 === void 0 ? void 0 : _theme$ui2.default), props_); const Line = (theme === null || theme === void 0 || (_theme$elements = theme.elements) === null || _theme$elements === void 0 ? void 0 : _theme$elements.Line) || _Line.default; const Surface = (theme === null || theme === void 0 || (_theme$elements2 = theme.elements) === null || _theme$elements2 === void 0 ? void 0 : _theme$elements2.Surface) || _Surface.default; const Divider = (theme === null || theme === void 0 || (_theme$elements3 = theme.elements) === null || _theme$elements3 === void 0 ? void 0 : _theme$elements3.Divider) || _Divider.default; const NavigationBar = (theme === null || theme === void 0 || (_theme$elements4 = theme.elements) === null || _theme$elements4 === void 0 ? void 0 : _theme$elements4.NavigationBar) || _NavigationBar.default; const { tonal: t0, color: t1, version: t2, size: t3, value, valueDefault, onChange, justify: t4, border, header: header_, fixed, NavigationBarProps, DividerProps, className, style, children: children_ } = props, other = (0, _objectWithoutProperties2.default)(props, _excluded); const tonal = t0 === undefined ? true : t0; const color = t1 === undefined ? "primary" : t1; const version = t2 === undefined ? "regular" : t2; const size = t3 === undefined ? "regular" : t3; const justify = t4 === undefined ? "center" : t4; const { classes } = useStyle(); const [init, setInit] = _react.default.useState(false); const [selected, setSelected] = _react.default.useState(() => { const valueNew = valueDefault !== undefined ? valueDefault : value; return valueNew !== undefined ? (0, _utils.is)("array", valueNew) ? valueNew : [valueNew] : []; }); const styles = { root: {}, icon: {} }; let t5; let t6; if ($[0] === Symbol.for("react.memo_cache_sentinel")) { t5 = () => { setInit(true); }; t6 = []; $[0] = t5; $[1] = t6; } else { t5 = $[0]; t6 = $[1]; } _react.default.useEffect(t5, t6); let t7; if ($[2] !== value) { t7 = [value]; $[2] = value; $[3] = t7; } else { t7 = $[3]; } _react.default.useEffect(() => { if (init && value !== selected) { setSelected((0, _utils.is)("array", value) ? value : [value]); } }, t7); const onSelect = itemProps => { const valueNew_0 = [itemProps.value]; if (valueNew_0 !== undefined) { if (!props.hasOwnProperty("value")) { setSelected(valueNew_0); } if ((0, _utils.is)("function", onChange)) { onChange(valueNew_0); } } }; const header = _react.default.Children.toArray(header_).map((item, index) => { var _item$type; return /*#__PURE__*/_react.default.cloneElement(item, { key: index, color: item.props.color !== undefined ? item.props.color : color, tonal: item.props.tonal !== undefined ? item.props.tonal : tonal && ["onesy-Fab"].includes((_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) ? "secondary" : tonal }); }); const children = _react.default.Children.toArray(children_).map((item_0, index_0) => { var _item_0$type; return /*#__PURE__*/_react.default.cloneElement(item_0, _objectSpread(_objectSpread({ key: index_0 }, ["onesy-NavigationItem"].includes((_item_0$type = item_0.type) === null || _item_0$type === void 0 ? void 0 : _item_0$type.displayName) ? { vertical: true } : {}), {}, { selected: selected.includes(item_0.props.value), onClick: () => { if (!item_0.props.disabled) { onSelect(item_0.props); if ((0, _utils.is)("function", item_0.props.onClick)) { item_0.props.onClick(); } } } })); }); return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Surface, _objectSpread(_objectSpread({ Component: Line, color: color, tonal: tonal, direction: "column", align: "initial", justify: "initial", gap: 0, className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)("NavigationRail", theme) && ["onesy-NavigationRail-root", `onesy-NavigationRail-version-${version}`, `onesy-NavigationRail-size-${size}`], className, classes.root, classes[`size_${size}`], fixed && classes.fixed]), style: _objectSpread(_objectSpread({}, style), styles.root) }, other), {}, { children: [header && /*#__PURE__*/(0, _jsxRuntime.jsx)(Line, { align: "center", className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)("NavigationRail", theme) && ["onesy-NavigationRail-header"], classes.header]), children: header }), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(NavigationBar, _objectSpread(_objectSpread({ version: version, direction: "column", justify: justify, gap: 2, color: color, tonal: tonal }, NavigationBarProps), {}, { className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)("NavigationRail", theme) && ["onesy-NavigationRail-main"], NavigationBarProps === null || NavigationBarProps === void 0 ? void 0 : NavigationBarProps.className, classes.main]), children: children })), border && /*#__PURE__*/(0, _jsxRuntime.jsx)(Divider, _objectSpread(_objectSpread({ orientation: "vertical" }, DividerProps), {}, { className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)("NavigationRail", theme) && ["onesy-NavigationRail-divider"], DividerProps === null || DividerProps === void 0 ? void 0 : DividerProps.className, classes.divider]) }))] })); }; NavigationRail.displayName = 'onesy-NavigationRail'; var _default = exports.default = NavigationRail;