From 0b4af4b1b9e8ecc6bf5bd641248e2976bf723f31 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Wed, 8 Jan 2025 15:10:26 +0000 Subject: [PATCH] feat(EditableTypography): support disable state --- .../components/EditableTypography/index.jsx | 26 ++++++++----------- .../components/EditableTypography/style.js | 5 ++-- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/packages/web/src/components/EditableTypography/index.jsx b/packages/web/src/components/EditableTypography/index.jsx index 255ebbd3..f4c4b077 100644 --- a/packages/web/src/components/EditableTypography/index.jsx +++ b/packages/web/src/components/EditableTypography/index.jsx @@ -13,7 +13,7 @@ function EditableTypography(props) { iconPosition = 'start', iconSize = 'large', sx, - disabledEditing = false, + disabled = false, prefixValue = '', ...typographyProps } = props; @@ -21,10 +21,10 @@ function EditableTypography(props) { const [editing, setEditing] = React.useState(false); const handleClick = React.useCallback(() => { - if (disabledEditing) return; + if (disabled) return; setEditing((editing) => !editing); - }, [disabledEditing]); + }, [disabled]); const handleTextFieldClick = React.useCallback((event) => { event.stopPropagation(); @@ -33,8 +33,9 @@ function EditableTypography(props) { const handleTextFieldKeyDown = React.useCallback( async (event) => { const target = event.target; + const eventKey = event.key; - if (event.key === 'Enter') { + if (eventKey === 'Enter') { if (target.value !== children) { await onConfirm(target.value); } @@ -42,11 +43,11 @@ function EditableTypography(props) { setEditing(false); } - if (event.key === 'Escape') { + if (eventKey === 'Escape') { setEditing(false); } }, - [children], + [children, onConfirm], ); const handleTextFieldBlur = React.useCallback( @@ -84,19 +85,14 @@ function EditableTypography(props) { } return ( - - {iconPosition === 'start' && editing === false && ( + + {!disabled && iconPosition === 'start' && editing === false && ( )} {component} - {iconPosition === 'end' && editing === false && ( + {!disabled && iconPosition === 'end' && editing === false && ( )} @@ -105,7 +101,7 @@ function EditableTypography(props) { EditableTypography.propTypes = { children: PropTypes.string.isRequired, - disabledEditing: PropTypes.bool, + disabled: PropTypes.bool, iconPosition: PropTypes.oneOf(['start', 'end']), iconSize: PropTypes.oneOf(['small', 'large']), onConfirm: PropTypes.func, diff --git a/packages/web/src/components/EditableTypography/style.js b/packages/web/src/components/EditableTypography/style.js index e99cb6ea..4ed685b8 100644 --- a/packages/web/src/components/EditableTypography/style.js +++ b/packages/web/src/components/EditableTypography/style.js @@ -3,8 +3,7 @@ import MuiBox from '@mui/material/Box'; import MuiTextField from '@mui/material/TextField'; import { inputClasses } from '@mui/material/Input'; -const boxShouldForwardProp = (prop) => - !['editing', 'disabledEditing'].includes(prop); +const boxShouldForwardProp = (prop) => !['editing', 'disabled'].includes(prop); export const Box = styled(MuiBox, { shouldForwardProp: boxShouldForwardProp, @@ -15,7 +14,7 @@ export const Box = styled(MuiBox, { max-width: 90%; height: 33px; align-items: center; - ${({ disabledEditing }) => !disabledEditing && 'cursor: pointer;'} + ${({ disabled }) => !disabled && 'cursor: pointer;'} ${({ editing }) => editing && 'border-bottom: 1px dashed #000;'} `;