From a0a50cf274841c6956f6a0f07f4795a0536c28da Mon Sep 17 00:00:00 2001 From: Rustem Mussabekov Date: Fri, 21 Feb 2025 17:57:53 +0300 Subject: [PATCH] Hide description from edit form, when in user view settings they are turned off --- package.json | 2 +- src/co/bookmarks/edit/form/title.js | 114 ++++++++++++---------------- 2 files changed, 49 insertions(+), 67 deletions(-) diff --git a/package.json b/package.json index 80d5d66f..6987a026 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "app", - "version": "5.6.72", + "version": "5.6.73", "description": "All-in-one bookmark manager", "author": "Rustem Mussabekov", "license": "MIT", diff --git a/src/co/bookmarks/edit/form/title.js b/src/co/bookmarks/edit/form/title.js index 65320acb..bb3f5415 100644 --- a/src/co/bookmarks/edit/form/title.js +++ b/src/co/bookmarks/edit/form/title.js @@ -1,88 +1,70 @@ import s from './title.module.styl' -import React from 'react' +import React, { useState, useCallback, useRef } from 'react' +import { useSelector } from 'react-redux' +import { makeViewHide } from '~data/selectors/bookmarks' import t from '~t' - import { Text } from '~co/common/form' -export default class BookmarkEditFormTitle extends React.Component { - state = { - maxRows: { - title: 3, - excerpt: 1 - }, - focused: { - title: false, - excerpt: false - } - } - - onChangeField = e=> - this.props.onChange({ [e.target.getAttribute('name')]: e.target.value }) +export default function BookmarkEditFormTitle({ autoFocus, item: { title, excerpt }, onChange, onCommit }) { + const [maxRows, setMaxRows] = useState({ + title: 3, + excerpt: 1 + }) - onFocusField = e=> - this.setState({ - maxRows: { - ...this.state.maxRows, - [e.target.getAttribute('name')]: undefined - }, - focused: { - ...this.state.focused, - [e.target.getAttribute('name')]: true - } - }) + const onChangeField = useCallback((e) => { + onChange({ [e.target.getAttribute('name')]: e.target.value }) + }, [onChange]) - onBlurField = e=> { - this.setState({ - focused: { - ...this.state.focused, - [e.target.getAttribute('name')]: false - } - }) - this.props.onCommit(e) - } + const onFocusField = useCallback((e) => { + const fieldName = e.target.getAttribute('name') + setMaxRows(prev => ({ + ...prev, + [fieldName]: undefined + })) + }, [setMaxRows]) - render() { - const { autoFocus, item: { title, excerpt } } = this.props - const { maxRows } = this.state + const getViewHide = useRef(makeViewHide()).current + const viewHide = useSelector(state=>getViewHide(state, 0)) - return ( -
- + return ( +
+ + {viewHide.includes('excerpt') ? null : ( -
- ) - } + onChange={onChangeField} + onFocus={onFocusField} + onBlur={onCommit} /> + )} +
+ ) } \ No newline at end of file