@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
49 lines (48 loc) • 1.84 kB
JavaScript
"use client";
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
const _excluded = ["variant", "className", "showIndicator", "children", "text"];
import React, { useCallback, useContext } from 'react';
import classnames from 'classnames';
import DataContext from '../../DataContext/Context';
import Button from '../../../../components/button/Button';
import SubmitIndicator from '../SubmitIndicator';
import useTranslation from '../../hooks/useTranslation';
import { send } from '../../../../icons';
function SubmitButton(props) {
const translations = useTranslation().SubmitButton;
const {
variant,
className,
showIndicator,
children,
text
} = props,
rest = _objectWithoutProperties(props, _excluded);
const content = text || children || (variant === 'send' ? translations.sendText : translations.text);
const {
formState,
handleSubmit,
hasElementRef,
props: dataContextProps
} = useContext(DataContext) || {};
const {
isolate
} = dataContextProps || {};
const onClickHandler = useCallback(() => {
if (!(hasElementRef !== null && hasElementRef !== void 0 && hasElementRef.current)) {
handleSubmit === null || handleSubmit === void 0 ? void 0 : handleSubmit();
}
}, [hasElementRef, handleSubmit]);
return React.createElement(Button, _extends({
className: classnames('dnb-forms-submit-button', className),
onClick: onClickHandler,
type: isolate ? 'button' : 'submit',
icon: variant === 'send' ? send : null
}, rest), content, React.createElement(SubmitIndicator, {
state: showIndicator ? 'pending' : formState
}));
}
SubmitButton._supportsSpacingProps = true;
export default SubmitButton;
//# sourceMappingURL=SubmitButton.js.map