UNPKG

@hisptz/react-ui

Version:

A collection of reusable complex DHIS2 react ui components.

112 lines (96 loc) 3.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useManageLegendDefinitions = useManageLegendDefinitions; var _d2I18n = _interopRequireDefault(require("@dhis2/d2-i18n")); var _lodash = require("lodash"); var _react = require("react"); var _ConfirmDialog = require("../../ConfirmDialog"); var _utils = require("../utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function useManageLegendDefinitions(legendDefinitions, _ref) { let { onChange, shouldVerify, onResetLegends } = _ref; const { confirm } = (0, _ConfirmDialog.useConfirmDialog)(); const nonDefaultLegendDefinitions = (0, _utils.getNonDefaultLegendDefinitions)(legendDefinitions); const defaultLegendDefinitions = (0, _utils.getDefaultLegendDefinitions)(legendDefinitions); const onAdd = (0, _react.useCallback)(value => { const newLegendDefinitions = [...(0, _lodash.cloneDeep)(legendDefinitions), value]; function add() { onChange(newLegendDefinitions); } if (shouldVerify) { confirm({ onCancel() {}, title: _d2I18n.default.t("Confirm legend reset"), message: _d2I18n.default.t("Adding a legend definition will reset all legends to their default values. Are you sure you want to continue?"), confirmButtonColor: "primary", confirmButtonText: _d2I18n.default.t("Reset"), onConfirm: () => { add(); onResetLegends(newLegendDefinitions); }, customActions: [{ label: _d2I18n.default.t("Leave as is"), onClick: () => { add(); } }] }); } else { add(); } }, [confirm, legendDefinitions, onResetLegends, shouldVerify]); const onDelete = (0, _react.useCallback)(data => { const updatedDefinitions = (0, _lodash.cloneDeep)(legendDefinitions); const index = (0, _lodash.findIndex)(updatedDefinitions, _ref2 => { let { id: legendDefinitionId } = _ref2; return legendDefinitionId === data.id; }); updatedDefinitions.splice(index, 1); function deleteDefinition() { onChange(updatedDefinitions); } if (shouldVerify) { confirm({ onCancel() {}, title: "".concat(_d2I18n.default.t("Confirm legends reset")), message: "".concat(_d2I18n.default.t("Deleting this definition will reset all configured legends. Are you sure you want to delete this legend definition?")), confirmButtonColor: "primary", confirmButtonText: _d2I18n.default.t("Reset"), onConfirm: () => { deleteDefinition(); onResetLegends(updatedDefinitions); } }); } else { deleteDefinition(); } }, [confirm, legendDefinitions, onResetLegends, shouldVerify]); const onEdit = data => { const updatedDefinitions = (0, _lodash.cloneDeep)(legendDefinitions); const index = (0, _lodash.findIndex)(updatedDefinitions, _ref3 => { let { id: legendDefinitionId } = _ref3; return legendDefinitionId === data.id; }); (0, _lodash.set)(updatedDefinitions, index, data); onChange(updatedDefinitions); }; return { nonDefaultLegendDefinitions, defaultLegendDefinitions, onAdd, onDelete, onEdit }; }