@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
93 lines (92 loc) • 3.1 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ResetButton;
var _react = require("react");
var _clsx = require("clsx");
var _index = require("../../../../components/index.js");
var _useTranslation = _interopRequireDefault(require("../../hooks/useTranslation.js"));
var _IterateItemContext = _interopRequireDefault(require("../IterateItemContext.js"));
var _ToolbarContext = _interopRequireDefault(require("../Toolbar/ToolbarContext.js"));
var _FieldBoundaryContext = _interopRequireDefault(require("../../DataContext/FieldBoundary/FieldBoundaryContext.js"));
var _index2 = require("../../../../icons/index.js");
var _useHasContentChanged = _interopRequireDefault(require("../../Form/Isolation/useHasContentChanged.js"));
var _types = require("../../types.js");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
function ResetButton(props) {
const {
text,
children,
onClick,
className,
hidden,
showConfirmDialog = true,
...restProps
} = props;
const {
restoreOriginalValue
} = (0, _react.useContext)(_IterateItemContext.default) || {};
const {
setShowBoundaryErrors
} = (0, _react.useContext)(_FieldBoundaryContext.default) || {};
const {
setShowError
} = (0, _react.useContext)(_ToolbarContext.default) || {};
const {
hasContentChanged
} = (0, _useHasContentChanged.default)({
enabled: true
});
const buttonProps = (0, _types.omitDataValueReadWriteProps)(restProps);
const {
resetButton
} = (0, _useTranslation.default)().IterateEditContainer;
const {
confirmResetText
} = (0, _useTranslation.default)().IterateEditContainer;
const textContent = text || children || resetButton;
const buttonWrapperRef = (0, _react.useRef)(null);
const handleClick = (0, _react.useCallback)(({
close,
event
}) => {
close?.();
onClick?.(event);
restoreOriginalValue?.();
setShowError(false);
setShowBoundaryErrors?.(false);
buttonWrapperRef.current?.focus();
}, [onClick, restoreOriginalValue, setShowBoundaryErrors, setShowError]);
if (hidden) {
return null;
}
const triggerProps = {
className: (0, _clsx.clsx)('dnb-forms-iterate__reset-button', className),
text: textContent,
variant: textContent ? 'tertiary' : 'secondary',
icon: _index2.reset,
iconPosition: 'left',
disabled: typeof hasContentChanged === 'boolean' ? !hasContentChanged : false,
...buttonProps
};
return (0, _jsxRuntime.jsx)("span", {
tabIndex: -1,
ref: buttonWrapperRef,
className: "dnb-no-focus",
children: showConfirmDialog ? (0, _jsxRuntime.jsx)(_index.Dialog, {
variant: "confirmation",
title: confirmResetText,
triggerProps: triggerProps,
onConfirm: handleClick
}) : (0, _jsxRuntime.jsx)(_index.Button, {
...triggerProps,
onClick: args => handleClick(args),
...buttonProps,
children: resetButton
})
});
}
//# sourceMappingURL=ResetButton.js.map