baseui
Version:
A React Component library implementing the Base design language
124 lines (122 loc) • 5.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var React = _interopRequireWildcard(require("react"));
var _styledComponents = require("./styled-components");
var _treeLabel = _interopRequireDefault(require("./tree-label"));
var _overrides = require("../helpers/overrides");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*
Copyright (c) Uber Technologies, Inc.
This source code is licensed under the MIT license found in the
LICENSE file in the root directory of this source tree.
*/
class TreeNode extends React.Component {
constructor(...args) {
super(...args);
_defineProperty(this, "treeItemRef", /*#__PURE__*/React.createRef());
_defineProperty(this, "onToggle", () => {
const {
onToggle,
node
} = this.props;
if (onToggle) {
onToggle(node);
}
});
_defineProperty(this, "onFocus", e => {
if (e && e.target !== this.treeItemRef.current) return;
const {
onFocus
} = this.props;
if (onFocus) {
onFocus(e);
}
});
}
componentDidMount() {
this.props.addRef(this.props.getId(this.props.node), this.treeItemRef);
}
componentWillUnmount() {
this.props.removeRef(this.props.getId(this.props.node));
}
render() {
const {
indentGuides,
node,
getId,
onToggle,
overrides = {},
renderAll,
selectedNodeId,
onKeyDown,
onFocus,
onBlur,
addRef,
removeRef,
isFocusVisible
} = this.props;
const {
children,
isExpanded,
label
} = node;
const hasChildren = children && children.length !== 0;
const {
TreeItemList: TreeItemListOverride,
TreeItem: TreeItemOverride,
TreeLabel: TreeLabelOverride
} = overrides;
const TreeItemList = (0, _overrides.getOverride)(TreeItemListOverride) || _styledComponents.StyledTreeItemList;
const TreeItem = (0, _overrides.getOverride)(TreeItemOverride) || _styledComponents.StyledTreeItem;
const TreeLabel = (0, _overrides.getOverride)(TreeLabelOverride) || _treeLabel.default;
return /*#__PURE__*/React.createElement(TreeItem, _extends({
role: "treeitem",
ref: this.treeItemRef,
"data-nodeid": getId(node),
tabIndex: selectedNodeId === getId(node) ? 0 : -1,
onKeyDown: e => onKeyDown && onKeyDown(e, node),
onBlur: onBlur,
onFocus: this.onFocus,
"aria-expanded": isExpanded,
$isLeafNode: !hasChildren
}, (0, _overrides.getOverrideProps)(TreeItemOverride)), /*#__PURE__*/React.createElement(TreeLabel, _extends({
onClick: this.onToggle,
node: node,
hasChildren: hasChildren,
isExpanded: isExpanded,
isSelected: selectedNodeId === getId(node),
isFocusVisible: isFocusVisible,
label: label,
overrides: overrides
}, (0, _overrides.getOverrideProps)(TreeLabelOverride))), children && (isExpanded || renderAll) && /*#__PURE__*/React.createElement(TreeItemList, _extends({
role: "group",
$indentGuides: !!indentGuides,
$isChildNode: true,
$expanded: !!isExpanded
}, (0, _overrides.getOverrideProps)(TreeItemListOverride)), children.map((node, index) => /*#__PURE__*/React.createElement(TreeNode, {
indentGuides: !!indentGuides,
renderAll: renderAll,
key: index,
node: node,
getId: getId,
onToggle: onToggle,
overrides: overrides,
selectedNodeId: selectedNodeId,
onKeyDown: onKeyDown,
onFocus: onFocus,
onBlur: onBlur,
addRef: addRef,
removeRef: removeRef,
isFocusVisible: isFocusVisible
}))));
}
}
exports.default = TreeNode;