@hisptz/react-ui
Version:
A collection of reusable complex DHIS2 react ui components.
67 lines (53 loc) • 3.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = TopBar;
var _appRuntime = require("@dhis2/app-runtime");
var _ui = require("@dhis2/ui");
var _dataSource = require("./../../../../core/utils/dataSource");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _TopBarModule = _interopRequireDefault(require("./TopBar.module.css"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function TopBar(_ref) {
let {
dataSources,
onTabChange,
selectedTab
} = _ref;
const engine = (0, _appRuntime.useDataEngine)();
const [data, setData] = (0, _react.useState)();
(0, _react.useEffect)(() => {
const fetchData = async () => {
const data = await Promise.all(dataSources.map(async source => await (0, _dataSource.getDataSourceType)(engine, source.id)));
setData(data.map(x => ({
id: x.object.id,
label: x.object.name
})));
};
fetchData().catch();
}, [dataSources]);
return /*#__PURE__*/_react.default.createElement(_ui.TabBar, null, /*#__PURE__*/_react.default.createElement("div", {
style: {
width: "100%",
overflowX: "auto",
display: "flex"
},
className: _TopBarModule.default["scrollbar-hidden"]
}, data === null || data === void 0 ? void 0 : data.map((dataSource, index) => {
var _dataSource$label;
return /*#__PURE__*/_react.default.createElement(_ui.Tab, {
selected: (selectedTab === null || selectedTab === void 0 ? void 0 : selectedTab.id) === (dataSource === null || dataSource === void 0 ? void 0 : dataSource.id),
onClick: () => onTabChange(dataSource),
key: "".concat(dataSource === null || dataSource === void 0 ? void 0 : dataSource.id, "-tab-").concat(index)
}, (_dataSource$label = dataSource === null || dataSource === void 0 ? void 0 : dataSource.label) !== null && _dataSource$label !== void 0 ? _dataSource$label : dataSource === null || dataSource === void 0 ? void 0 : dataSource.displayName);
})));
}
TopBar.propTypes = {
dataSources: _propTypes.default.arrayOf(_propTypes.default.object).isRequired,
selectedTab: _propTypes.default.object.isRequired,
onTabChange: _propTypes.default.func.isRequired
};