@talend/react-components
Version:
Set of react components.
179 lines (177 loc) • 7.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactBootstrap = require("@talend/react-bootstrap");
var _reactI18next = require("react-i18next");
var _classnames = _interopRequireDefault(require("classnames"));
var _Pagination = _interopRequireDefault(require("./Pagination"));
var _FilterBar = _interopRequireDefault(require("../../FilterBar"));
var _Label = _interopRequireDefault(require("./Label"));
var _ItemsNumber = _interopRequireDefault(require("./ItemsNumber"));
var _ActionBar = _interopRequireDefault(require("../../ActionBar"));
var _ColumnChooserButton = _interopRequireDefault(require("./ColumnChooserButton"));
var _DisplayModeToggle = _interopRequireDefault(require("./DisplayModeToggle"));
var _ToolbarModule = _interopRequireDefault(require("./Toolbar.module.scss"));
var _constants = _interopRequireDefault(require("../../constants"));
require("../../translate");
var _Inject = _interopRequireDefault(require("../../Inject"));
var _SelectSortBy = _interopRequireDefault(require("./SelectSortBy/SelectSortBy.component"));
var _lodash = require("lodash");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function adaptActionsIds(actions, parentId) {
return actions && actions.map(action => {
if (action.id) {
return {
...action,
id: `${parentId}-actions-${action.id}`
};
}
return action;
});
}
function adaptLeftAndRightActions(actions, parentId) {
return actions && {
left: adaptActionsIds(actions.left, parentId)
};
}
/**
* @param {string} id the id of Toolbar
* @param {object} actionBar the ActionBar properties
* @param {object} display the SelectDisplayMode properties
* @param {object} sort the SelectSortBy properties
* @param {object} pagination the Pagination properties
* @param {object} filter the Filter properties
* @param {function} t the translate function
* @example
<Toolbar id="my-toolbar"></Toolbar>
*/
function Toolbar({
actionBar,
columnChooser,
components,
display,
filter,
getComponent,
id,
itemsNumber,
pagination,
sort,
t
}) {
const Renderer = _Inject.default.getAll(getComponent, {
ActionBar: _ActionBar.default,
FilterBar: _FilterBar.default
});
const injected = _Inject.default.all(getComponent, components);
let actionBarProps = actionBar;
if (id && actionBar) {
const {
actions,
multiSelectActions
} = actionBar;
actionBarProps = {
...actionBar,
getComponent,
actions: adaptLeftAndRightActions(actions, id),
multiSelectActions: adaptLeftAndRightActions(multiSelectActions, id)
};
}
const displayModeId = id && `${id}-display-mode`;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
className: (0, _classnames.default)(_ToolbarModule.default['tc-list-toolbar'], 'tc-list-toolbar'),
children: [injected('before-actionbar'), actionBar && /*#__PURE__*/(0, _jsxRuntime.jsx)(Renderer.ActionBar, {
...actionBarProps,
className: "list-action-bar",
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionBar.default.Content, {
right: true,
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("ul", {
children: [injected('before-itemsnumber'), itemsNumber && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
className: "separated",
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ItemsNumber.default, {
id: id && `${id}-items-number`,
...itemsNumber,
selected: actionBar.selected,
t: t
})
}), injected('before-filter'), filter && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
className: "separated",
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Renderer.FilterBar, {
id: id && `${id}-filter`,
...filter,
t: t,
navbar: true
})
}), injected('after-filter'), injected('before-sort'), sort && /*#__PURE__*/(0, _jsxRuntime.jsxs)("li", {
className: "select-sort-by separated",
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Label.default, {
text: t('LIST_TOOLBAR_SORT_BY', {
defaultValue: 'Sort by:'
}),
htmlFor: id && `${id}-sort-by`
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SelectSortBy.default, {
id: id && `${id}-sort`,
...sort,
t: t
})]
}), injected('after-sort'), columnChooser && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
className: "separated",
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ColumnChooserButton.default, {
id: `${id}-column-chooser`,
...columnChooser,
t: t
})
}), injected('before-displaymode'), display && /*#__PURE__*/(0, _jsxRuntime.jsx)("li", {
className: "separated",
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_DisplayModeToggle.default, {
id: displayModeId,
...display,
t: t
})
}), injected('after-displaymode')]
})
})
}), injected('after-actionbar'), pagination && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactBootstrap.Navbar, {
componentClass: "div",
className: _ToolbarModule.default['tc-list-toolbar'],
role: "toolbar",
fluid: true,
children: [injected('before-pagination'), pagination && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Label.default, {
text: t('LIST_TOOLBAR_PAGINATION_SHOW', {
defaultValue: 'Show:'
}),
htmlFor: id && `${id}-pagination-size`
}), pagination && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pagination.default, {
id: id && `${id}-pagination`,
...pagination,
t: t
}), injected('after-pagination')]
})]
});
}
Toolbar.propTypes = {
id: _propTypes.default.string,
actionBar: _propTypes.default.shape(_ActionBar.default.propTypes),
display: _propTypes.default.shape((0, _lodash.omit)(_DisplayModeToggle.default.propTypes, 't')),
sort: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.shape({
field: _propTypes.default.string,
isDescending: _propTypes.default.bool,
onChange: _propTypes.default.func.isRequired
})]),
pagination: _propTypes.default.shape(_Pagination.default.propTypes),
filter: _propTypes.default.shape((0, _lodash.omit)(_FilterBar.default.propTypes, 't')),
itemsNumber: _propTypes.default.shape((0, _lodash.omit)(_ItemsNumber.default.propTypes, 't')),
t: _propTypes.default.func.isRequired,
getComponent: _propTypes.default.func,
components: _propTypes.default.object,
columnChooser: _propTypes.default.shape({
submit: _propTypes.default.func,
columns: _propTypes.default.array
})
};
Toolbar.defaultProps = {};
var _default = exports.default = (0, _reactI18next.withTranslation)(_constants.default)(Toolbar);
//# sourceMappingURL=Toolbar.component.js.map