@arche-mc2/arche-controls
Version:
We know that there are a ton of react UI library projects to choose from. Our hope with this one is to provide the next generation of react components that you can use to bootstrap your next project, or as a reference for building a UIKit. Read on to get
72 lines • 3.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = require("react");
var typestyle_1 = require("typestyle");
var classnames_1 = require("classnames");
var ButtonGroup_1 = require("../ButtonGroup");
var UpButton_1 = require("../../Inputs/Button/UpButton");
var utils_1 = require("../../../Common/utils");
var LoadingIndicator_1 = require("../../Display/LoadingIndicator");
var device_1 = require("../../../Common/utils/device");
var getStyle = function (props) {
var position = props.actionsDataGrid ? {} : { position: 'absolute', right: 0 };
return typestyle_1.style({
display: 'flex',
marginTop: '5px',
width: '100%',
minHeight: '40px',
flexDirection: 'row',
$nest: {
'&.up-data-grid-footer .up-buttons-wrapper': {
alignItems: 'normal',
flexGrow: 1
},
'&.up-data-grid-footer .up-btn-wrapper': {
marginRight: '6px',
},
'&.up-data-grid-footer .pagination-container': tslib_1.__assign({}, position),
'&.up-data-grid-footer .up-icon-wrapper svg path': {
fill: props.actionsDataGrid && props.theme.colorMap.disabledFg
},
}
}, typestyle_1.media(device_1.DeviceSmartphones, {
flexDirection: 'column',
}));
};
var UpDataGridFooter = function (props) {
var pagination = props.pagination, actionsDataGrid = props.actionsDataGrid, isPaginationEnabled = props.isPaginationEnabled, data = props.data, isDataFetching = props.isDataFetching;
var _a = actionsDataGrid || {}, actions = _a.actions, validationLabel = _a.validationLabel, groupLabel = _a.groupLabel, intent = _a.intent;
var _b = React.useState(null), selectedAction = _b[0], selectAction = _b[1];
var selectedData = data.filter(function (element) { return element.isSelected; });
React.useEffect(function () {
if (actions && actions.length === 1) {
selectAction(actions[0]);
}
else if (selectedData.length < 1) {
selectAction(null);
}
}, [selectedData]);
var buttonAction = !utils_1.isEmpty(actions) && actions.map(function (_a) {
var label = _a.label, rest = tslib_1.__rest(_a, ["label"]);
return ({
libelle: label,
onClick: function () {
selectAction(tslib_1.__assign({ label: label }, rest));
},
});
});
var handleValidation = function () {
selectedAction.onClick(selectedData);
};
return (React.createElement("div", { className: classnames_1.default('up-data-grid-footer', getStyle(props)) },
actions &&
React.createElement(ButtonGroup_1.default, { isAddOn: 'right', gutter: 1, align: "h" }, actions.length === 1 ? (React.createElement(React.Fragment, null,
React.createElement(UpButton_1.default, { intent: "primary", disabled: !(selectedData.length >= 1), onClick: handleValidation }, actions[0].label))) : (React.createElement(React.Fragment, null,
React.createElement(UpButton_1.default, { dropDown: "down", intent: "primary", extraActions: buttonAction || [], disabled: !(selectedData.length >= 1) }, (selectedAction && selectedAction.label) || groupLabel),
React.createElement(UpButton_1.default, { onClick: handleValidation, intent: intent, disabled: !selectedAction }, validationLabel)))),
isDataFetching && React.createElement(LoadingIndicator_1.default, null),
isPaginationEnabled && !isDataFetching && pagination));
};
exports.default = UpDataGridFooter;
//# sourceMappingURL=UpDataGridFooter.js.map