@talend/react-components
Version:
Set of react components.
70 lines • 2.14 kB
JavaScript
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { withTranslation } from 'react-i18next';
import OrderChooser from './OrderChooser';
import I18N_DOMAIN_COMPONENTS from '../../../constants';
import getDefaultT from '../../../translate';
import theme from './SortOptions.module.scss';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
export const TYPES = {
NAME: 'name',
DATE: 'date'
};
export const ORDERS = {
ASC: 'asc',
DESC: 'desc'
};
function inverse(order) {
if (order === ORDERS.ASC) {
return ORDERS.DESC;
}
return ORDERS.ASC;
}
function SortOptions({
t,
types,
onChange,
orders
}) {
return !!types.length && /*#__PURE__*/_jsxs("div", {
className: classNames('tc-resource-picker-sort-options', theme['tc-resource-picker-sort-options']),
children: [/*#__PURE__*/_jsx("span", {
className: classNames(theme['option-label']),
children: t('SORT', {
defaultValue: 'Sort:'
})
}), types.includes(TYPES.NAME) && /*#__PURE__*/_jsx(OrderChooser, {
icon: "talend-sort-az",
label: t('SORT_BY_NAME', {
defaultValue: 'Sort by name (current order: {{order}})',
order: orders[TYPES.NAME]
}),
asc: orders[TYPES.NAME] === ORDERS.ASC,
onClick: () => onChange(TYPES.NAME, inverse(orders[TYPES.NAME]))
}), types.includes(TYPES.DATE) && /*#__PURE__*/_jsx(OrderChooser, {
icon: "talend-sort-desc",
label: t('SORT_BY_DATE', {
defaultValue: 'Sort by date (current order: {{order}})',
order: orders[TYPES.DATE]
}),
asc: orders[TYPES.DATE] === ORDERS.ASC,
onClick: () => onChange(TYPES.DATE, inverse(orders[TYPES.DATE]))
})]
});
}
SortOptions.propTypes = {
t: PropTypes.func,
onChange: PropTypes.func,
orders: PropTypes.object,
types: PropTypes.array
};
SortOptions.defaultProps = {
t: getDefaultT(),
types: [TYPES.NAME, TYPES.DATE],
orders: {
[TYPES.NAME]: ORDERS.DESC,
[TYPES.DATE]: ORDERS.DESC
}
};
export default withTranslation(I18N_DOMAIN_COMPONENTS)(SortOptions);
//# sourceMappingURL=SortOptions.component.js.map