Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@filerobot/explorer / lib / components / Modals / ConfirmationModal / ConfirmationModal.hooks.js
Size: Mime:
import { useCallback } from 'react';
import { Warning } from '@scaleflex/icons';
import { useModal } from '@filerobot/core/lib/hooks';
import { useTheme } from '@scaleflex/ui/theme/hooks';
import { useExplorerI18n } from '../../../hooks';
import { PC } from '@filerobot/common';
import { jsx as _jsx } from "react/jsx-runtime";
export var useConfirmationModal = function useConfirmationModal() {
  var toggleModal = useModal();
  var theme = useTheme();
  var i18n = useExplorerI18n();
  var triggerConfirmationModal = useCallback(function (_ref) {
    var title = _ref.title,
      description = _ref.description,
      icon = _ref.icon,
      onCancel = _ref.onCancel,
      onConfirm = _ref.onConfirm;
    var confirmationHandler = function confirmationHandler(_ref2) {
      var closeModal = _ref2.closeModal,
        setIsModalLoading = _ref2.setIsModalLoading;
      if (typeof onConfirm === 'function') {
        var returnedData = onConfirm({
          closeModal: closeModal,
          setIsModalLoading: setIsModalLoading
        });
        if (returnedData instanceof Promise) {
          setIsModalLoading(true);
          returnedData.then(closeModal)["finally"](function () {
            setIsModalLoading(false);
          });
        } else {
          closeModal();
        }
      }
    };
    var cancellationHandler = function cancellationHandler(_ref3) {
      var closeModal = _ref3.closeModal;
      closeModal();
      if (typeof onCancel === 'function') {
        onCancel();
      }
    };
    toggleModal({
      icon: icon || /*#__PURE__*/_jsx(Warning, {
        size: 29
      }),
      title: title || i18n('mutualizedConfirmationModalTitle'),
      content: description || i18n('mutualizedConfirmationModalContent'),
      buttonPrimaryLabel: i18n('mutualizedConfirmButtonLabel'),
      buttonSecondaryLabel: i18n('mutualizedCancelButtonLabel'),
      onButtonPrimaryClick: confirmationHandler,
      onButtonSecondaryClick: cancellationHandler,
      disableAutoClose: true,
      modalPrimaryButtonColor: 'warning-primary',
      modalSecondaryButtonColor: 'basic',
      modalStyle: {
        maxWidth: 400
      },
      modalBodyStyle: {
        textAlign: 'center'
      },
      modalFooterStyle: {
        flexDirection: 'row'
      },
      modalIconStyle: {
        backgroundColor: theme.palette[PC.Orange_0_1_Overlay],
        color: theme.palette[PC.Warning]
      }
    });
  }, [theme, i18n]);
  return triggerConfirmationModal;
};