add prettier and reformat all files

This commit is contained in:
2022-07-11 12:23:43 +02:00
parent 35e4d96726
commit dfab85da65
72 changed files with 1065 additions and 823 deletions

View File

@@ -1,6 +1,6 @@
import React, {useState} from 'react'
import React, { useState } from 'react'
import SuperEditableSpan from './common/c4-SuperEditableSpan/SuperEditableSpan'
import {restoreState, saveState} from './localStorage/localStorage'
import { restoreState, saveState } from './localStorage/localStorage'
import s2 from '../../s1-main/App.module.css'
import SuperButton from '../hw04/common/c2-SuperButton/SuperButton'
@@ -10,13 +10,14 @@ const HW6 = () => {
const save = () => {
saveState<string>('hw6-editable-span-value', value)
}
const restore = () => { // делают студенты
const restore = () => {
// делают студенты
setValue(restoreState<string>('hw6-editable-span-value', ''))
}
return (
<div id={'hw6'} className={s2.hw}>
<hr/>
<hr />
{/*можно убрать этот тег*/}
<div className={s2.hwTitle}>homeworks 6</div>
@@ -27,15 +28,22 @@ const HW6 = () => {
id={'hw6-spanable-input'}
value={value}
onChangeText={setValue}
spanProps={{children: value ? undefined : 'enter text...', id: 'hw6-editable-span'}}
spanProps={{
children: value ? undefined : 'enter text...',
id: 'hw6-editable-span',
}}
/>
</div>
<SuperButton id={'hw6-save'} onClick={save}>save to ls</SuperButton>
<SuperButton id={'hw6-restore'} onClick={restore}>get from ls</SuperButton>
<SuperButton id={'hw6-save'} onClick={save}>
save to ls
</SuperButton>
<SuperButton id={'hw6-restore'} onClick={restore}>
get from ls
</SuperButton>
<hr/>
<hr />
{/*можно убрать этот тег*/}
<hr/>
<hr />
{/*можно убрать этот тег*/}
</div>
)

View File

@@ -6,4 +6,4 @@
cursor: pointer;
color: #77aaff;
}
}

View File

@@ -1,15 +1,27 @@
import React, {DetailedHTMLProps, InputHTMLAttributes, HTMLAttributes, useState} from 'react'
import React, {
DetailedHTMLProps,
InputHTMLAttributes,
HTMLAttributes,
useState,
} from 'react'
import s from './SuperEditableSpan.module.css'
import SuperInputText from '../../../hw04/common/c1-SuperInputText/SuperInputText'
// тип пропсов обычного инпута
type DefaultInputPropsType = DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>
type DefaultInputPropsType = DetailedHTMLProps<
InputHTMLAttributes<HTMLInputElement>,
HTMLInputElement
>
// тип пропсов обычного спана
type DefaultSpanPropsType = DetailedHTMLProps<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>
type DefaultSpanPropsType = DetailedHTMLProps<
HTMLAttributes<HTMLSpanElement>,
HTMLSpanElement
>
// здесь мы говорим что у нашего инпута будут такие же пропсы как у обычного инпута, кроме type
// (чтоб не писать value: string, onChange: ...; они уже все описаны в DefaultInputPropsType)
type SuperEditableSpanType = Omit<DefaultInputPropsType, 'type'> & { // и + ещё пропсы которых нет в стандартном инпуте
type SuperEditableSpanType = Omit<DefaultInputPropsType, 'type'> & {
// и + ещё пропсы которых нет в стандартном инпуте
onChangeText?: (value: string) => void
onEnter?: () => void
error?: string
@@ -17,18 +29,17 @@ type SuperEditableSpanType = Omit<DefaultInputPropsType, 'type'> & { // и + е
spanProps?: DefaultSpanPropsType // пропсы для спана
}
const SuperEditableSpan: React.FC<SuperEditableSpanType> = (
{
autoFocus,
onBlur,
onEnter,
spanProps,
const SuperEditableSpan: React.FC<SuperEditableSpanType> = ({
autoFocus,
onBlur,
onEnter,
spanProps,
...restProps// все остальные пропсы попадут в объект restProps
}
) => {
...restProps // все остальные пропсы попадут в объект restProps
}) => {
const [editMode, setEditMode] = useState<boolean>(false)
const {children, onDoubleClick, className, ...restSpanProps} = spanProps || {}
const { children, onDoubleClick, className, ...restSpanProps } =
spanProps || {}
const onEnterCallback = () => {
setEditMode(false) // выключить editMode при нажатии Enter // делают студенты
@@ -40,7 +51,9 @@ const SuperEditableSpan: React.FC<SuperEditableSpanType> = (
onBlur?.(e)
}
const onDoubleClickCallBack = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {
const onDoubleClickCallBack = (
e: React.MouseEvent<HTMLSpanElement, MouseEvent>
) => {
setEditMode(true) // включить editMode при двойном клике // делают студенты
onDoubleClick?.(e)
@@ -50,27 +63,23 @@ const SuperEditableSpan: React.FC<SuperEditableSpanType> = (
return (
<>
{editMode
? (
<SuperInputText
autoFocus={autoFocus || true}
onBlur={onBlurCallback}
onEnter={onEnterCallback}
{...restProps} // отдаём инпуту остальные пропсы если они есть (value например там внутри)
/>
) : (
<span
onDoubleClick={onDoubleClickCallBack}
className={spanClassName}
{...restSpanProps}
>
{/*если нет захардкодженного текста для спана, то значение инпута*/}
{children || restProps.value}
</span>
)
}
{editMode ? (
<SuperInputText
autoFocus={autoFocus || true}
onBlur={onBlurCallback}
onEnter={onEnterCallback}
{...restProps} // отдаём инпуту остальные пропсы если они есть (value например там внутри)
/>
) : (
<span
onDoubleClick={onDoubleClickCallBack}
className={spanClassName}
{...restSpanProps}
>
{/*если нет захардкодженного текста для спана, то значение инпута*/}
{children || restProps.value}
</span>
)}
</>
)
}

View File

@@ -21,7 +21,7 @@ type StateType = {
}
// сохраняем объект типа StateType в ячейке 'test'
saveState<StateType>('test', {x: 'A', y: 1})
saveState<StateType>('test', { x: 'A', y: 1 })
// получем в переменную state объект из ячейки 'test' или дэфолтный объект если ячейка пуста
const state: StateType = restoreState<StateType>('test', {x: '', y: 0})
const state: StateType = restoreState<StateType>('test', { x: '', y: 0 })