@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
94 lines (93 loc) • 3.48 kB
JavaScript
;
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = ResetButton;
var _react = require("react");
var _clsx = _interopRequireDefault(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
}) => {
var _buttonWrapperRef$cur;
close === null || close === void 0 || close();
onClick === null || onClick === void 0 || onClick(event);
restoreOriginalValue === null || restoreOriginalValue === void 0 || restoreOriginalValue();
setShowError(false);
setShowBoundaryErrors === null || setShowBoundaryErrors === void 0 || setShowBoundaryErrors(false);
(_buttonWrapperRef$cur = buttonWrapperRef.current) === null || _buttonWrapperRef$cur === void 0 || _buttonWrapperRef$cur.focus();
}, [onClick, restoreOriginalValue, setShowBoundaryErrors, setShowError]);
if (hidden) {
return null;
}
const triggerAttributes = {
className: (0, _clsx.default)('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,
triggerAttributes: triggerAttributes,
onConfirm: handleClick
}) : (0, _jsxRuntime.jsx)(_index.Button, {
...triggerAttributes,
onClick: args => handleClick(args),
...buttonProps,
children: resetButton
})
});
}
//# sourceMappingURL=ResetButton.js.map