diff --git a/src/components/ChangePassword.tsx b/src/components/ChangePassword.tsx new file mode 100644 index 0000000..07ee96e --- /dev/null +++ b/src/components/ChangePassword.tsx @@ -0,0 +1,63 @@ +import { memo, useState } from 'react' +import { useForm } from 'antd/lib/form/Form' +import { Form, Input, Modal, FormProps } from 'antd' + +import { AuthService } from '../services/api' +import { passwordRules } from '../utils/validationRules' + +import LoaderPortal from './LoaderPortal' +import { invokeWebApiWrapperAsync } from './factory' + +const formLayout: FormProps = { labelCol: { span: 11 }, wrapperCol: { span: 16 } } + +export type ChangePasswordProps = { + userId?: number + visible?: boolean + onCancel?: () => void + onOk?: () => void +} + + +export const ChangePassword = memo(({ userId, visible, onCancel, onOk }) => { + const [showLoader, setShowLoader] = useState(false) + const [password, setPassword] = useState('') + + const [form] = useForm() + + const onModalCancel = () => { + form.resetFields() + onCancel?.() + } + + const onFormFinish = () => invokeWebApiWrapperAsync( + async() => { + await AuthService.changePassword(userId ?? localStorage['userId'], `"${password}"`) + onOk?.() + }, + setShowLoader, + `Не удалось сменить пароль пользователя ${localStorage['login']}` + ) + + return ( + form.submit()} + > + +
+ + setPassword(e.target.value)} value={password} /> + +
+
+
+ ) +}) diff --git a/src/components/Table/EditableTable.jsx b/src/components/Table/EditableTable.jsx index 5e0e8fa..5715e48 100644 --- a/src/components/Table/EditableTable.jsx +++ b/src/components/Table/EditableTable.jsx @@ -49,6 +49,8 @@ export const EditableTable = ({ onRowAdd, // Метод вызывается с новой добавленной записью. Если метод не определен, то кнопка добавления строки не показывается onRowEdit, // Метод вызывается с новой отредактированной записью. Если метод не поределен, то кнопка редактирования строки не показывается onRowDelete, // Метод вызывается с удаленной записью. Если метод не поределен, то кнопка удаления строки не показывается + additionalButtons, + buttonsWidth, ...otherTableProps }) => { @@ -144,7 +146,7 @@ export const EditableTable = ({ } const operationColumn = { - width: 82, + width: buttonsWidth ?? 82, title: !!onRowAdd && (