물건 저장시 focus

nextui-org/react Button onClick -> onPress
This commit is contained in:
basssy 2024-10-25 14:48:49 +09:00
parent 67ba090993
commit 11667c90ad

View File

@ -3,7 +3,7 @@
import React, { useState, useEffect, useRef } from 'react' import React, { useState, useEffect, useRef } from 'react'
import { useRouter, useSearchParams, usePathname } from 'next/navigation' import { useRouter, useSearchParams, usePathname } from 'next/navigation'
import { Button } from '@nextui-org/react' import { Button } from '@nextui-org/react'
import Select from 'react-select' import Select, { components } from 'react-select'
import Link from 'next/link' import Link from 'next/link'
import { useAxios } from '@/hooks/useAxios' import { useAxios } from '@/hooks/useAxios'
import { globalLocaleStore } from '@/store/localeAtom' import { globalLocaleStore } from '@/store/localeAtom'
@ -19,6 +19,13 @@ import { useCommonCode } from '@/hooks/common/useCommonCode'
import StuffPlanQGrid from './StuffPlanQGrid' import StuffPlanQGrid from './StuffPlanQGrid'
export default function StuffDetail() { export default function StuffDetail() {
const inputReceiveUserEl = useRef(null) //ref
const inputObjectNameEl = useRef(null) //ref
const inputZipNoEl = useRef(null) //ref
const inputAddressEl = useRef(null) //ref
const inputVerticalSnowCoverEl = useRef(null) //ref
const inputInstallHeightEl = useRef(null) //ref
// //
const { commonCode, findCommonCode } = useCommonCode() const { commonCode, findCommonCode } = useCommonCode()
const [selOptions, setSelOptions] = useState('') // 1 const [selOptions, setSelOptions] = useState('') // 1
@ -54,7 +61,7 @@ export default function StuffDetail() {
address: '', // address: '', //
areaId: '', //id areaId: '', //id
standardWindSpeedId: '', // standardWindSpeedId: '', //
verticalSnowCover: '', //NEW verticalSnowCover: '', //
coldRegionFlg: false, //(true : 1 / false : 0) coldRegionFlg: false, //(true : 1 / false : 0)
surfaceType: 'III・IV', //(IIIIV / ) surfaceType: 'III・IV', //(IIIIV / )
saltAreaFlg: false, // (true : 1 / false : 0) saltAreaFlg: false, // (true : 1 / false : 0)
@ -890,6 +897,7 @@ export default function StuffDetail() {
form.setValue('areaName', e.prefName) form.setValue('areaName', e.prefName)
} }
//
const onValid = async () => { const onValid = async () => {
const formData = form.getValues() const formData = form.getValues()
@ -899,11 +907,13 @@ export default function StuffDetail() {
if (!formData.receiveUser || formData.receiveUser.trim().length === 0) { if (!formData.receiveUser || formData.receiveUser.trim().length === 0) {
fieldNm = getMessage('stuff.detail.receiveUser') fieldNm = getMessage('stuff.detail.receiveUser')
errors = fieldNm errors = fieldNm
inputReceiveUserEl.current.focus()
} }
// //
if (!formData.objectName || formData.objectName.trim().length === 0) { if (!formData.objectName || formData.objectName.trim().length === 0) {
fieldNm = getMessage('stuff.detail.objectStatusId') fieldNm = getMessage('stuff.detail.objectStatusId')
errors = fieldNm errors = fieldNm
inputObjectNameEl.current.focus()
} }
// //
if (!formData.objectNameOmit) { if (!formData.objectNameOmit) {
@ -919,11 +929,13 @@ export default function StuffDetail() {
if (!formData.zipNo) { if (!formData.zipNo) {
fieldNm = getMessage('stuff.detail.zipNo') fieldNm = getMessage('stuff.detail.zipNo')
errors = fieldNm errors = fieldNm
inputZipNoEl.current.focus()
} }
// //
if (!formData.address) { if (!formData.address) {
fieldNm = getMessage('stuff.detail.address') fieldNm = getMessage('stuff.detail.address')
errors = fieldNm errors = fieldNm
inputAddressEl.current.focus()
} }
// //
if (!formData.prefId || formData.prefId === '0') { if (!formData.prefId || formData.prefId === '0') {
@ -944,6 +956,7 @@ export default function StuffDetail() {
if (!formData.verticalSnowCover) { if (!formData.verticalSnowCover) {
fieldNm = getMessage('stuff.detail.verticalSnowCover') fieldNm = getMessage('stuff.detail.verticalSnowCover')
errors = fieldNm errors = fieldNm
inputVerticalSnowCoverEl.current.focus()
} }
// //
@ -955,10 +968,9 @@ export default function StuffDetail() {
if (!formData.installHeight) { if (!formData.installHeight) {
fieldNm = getMessage('stuff.detail.installHeight') fieldNm = getMessage('stuff.detail.installHeight')
errors = fieldNm errors = fieldNm
inputInstallHeightEl.current.focus()
} }
//
if (Object.keys(errors).length > 0) { if (Object.keys(errors).length > 0) {
return alert(getMessage('stuff.detail.save.valierror3', [errors])) return alert(getMessage('stuff.detail.save.valierror3', [errors]))
} }
@ -1110,6 +1122,7 @@ export default function StuffDetail() {
workName: null, workName: null,
} }
return
//1 or 2 //1 or 2
if (params.saleStoreId == '') { if (params.saleStoreId == '') {
params.saleStoreId = sessionState.storeId params.saleStoreId = sessionState.storeId
@ -1125,6 +1138,7 @@ export default function StuffDetail() {
if (height === '0') { if (height === '0') {
return alert(getMessage('stuff.detail.save.valierror2')) return alert(getMessage('stuff.detail.save.valierror2'))
} }
await promisePost({ url: '/api/object/save-object', data: params }).then((res) => { await promisePost({ url: '/api/object/save-object', data: params }).then((res) => {
if (res.status === 201) { if (res.status === 201) {
alert(getMessage('stuff.detail.tempSave.message1')) alert(getMessage('stuff.detail.tempSave.message1'))
@ -1153,6 +1167,17 @@ export default function StuffDetail() {
input.value = input.value.replace(/[^0-9]/g, '') input.value = input.value.replace(/[^0-9]/g, '')
} }
// ..
const NoOptionsMessage = (props) => {
return (
<components.NoOptionsMessage {...props}>
<span style={{ background: 'red' }} className="custom-css-class">
TEXTTTTTTT
</span>
</components.NoOptionsMessage>
)
}
return ( return (
<> <>
{(editMode === 'NEW' && ( {(editMode === 'NEW' && (
@ -1186,7 +1211,7 @@ export default function StuffDetail() {
)) || )) ||
null} null}
</div> </div>
<Button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}> <Button className="btn-origin grey" onPress={onSearchDesignRequestPopOpen}>
{getMessage('stuff.planReqPopup.title')} {getMessage('stuff.planReqPopup.title')}
</Button> </Button>
</div> </div>
@ -1198,7 +1223,7 @@ export default function StuffDetail() {
</th> </th>
<td> <td>
<div className="input-wrap" style={{ width: '500px' }}> <div className="input-wrap" style={{ width: '500px' }}>
<input type="text" className="input-light" {...form.register('receiveUser')} /> <input type="text" className="input-light" {...form.register('receiveUser')} ref={inputReceiveUserEl} />
</div> </div>
</td> </td>
</tr> </tr>
@ -1227,7 +1252,7 @@ export default function StuffDetail() {
})} })}
{/* 라디오끝 */} {/* 라디오끝 */}
<div className="input-wrap mr5" style={{ width: '545px' }}> <div className="input-wrap mr5" style={{ width: '545px' }}>
<input type="text" className="input-light" {...form.register('objectName')} /> <input type="text" className="input-light" {...form.register('objectName')} ref={inputObjectNameEl} />
</div> </div>
<div className="select-wrap" style={{ width: '120px' }}> <div className="select-wrap" style={{ width: '120px' }}>
<Select <Select
@ -1317,6 +1342,7 @@ export default function StuffDetail() {
<div className="select-wrap mr5" style={{ width: '567px' }}> <div className="select-wrap mr5" style={{ width: '567px' }}>
<Select <Select
id="long-value-select2" id="long-value-select2"
// components={{ NoOptionsMessage }}
instanceId="long-value-select2" instanceId="long-value-select2"
className="react-select-custom" className="react-select-custom"
classNamePrefix="custom" classNamePrefix="custom"
@ -1352,9 +1378,9 @@ export default function StuffDetail() {
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="input-wrap mr5" style={{ width: '200px' }}> <div className="input-wrap mr5" style={{ width: '200px' }}>
<input type="text" className="input-light" disabled value={form.watch('zipNo') || ''} /> <input type="text" className="input-light" disabled value={form.watch('zipNo') || ''} ref={inputZipNoEl} />
</div> </div>
<Button className="btn-origin grey" onClick={onSearchPostNumberPopOpen}> <Button className="btn-origin grey" onPress={onSearchPostNumberPopOpen}>
{getMessage('stuff.detail.btn.addressPop')} {getMessage('stuff.detail.btn.addressPop')}
</Button> </Button>
<div className="guide">{getMessage('stuff.detail.btn.addressPop.guide')}</div> <div className="guide">{getMessage('stuff.detail.btn.addressPop.guide')}</div>
@ -1368,7 +1394,7 @@ export default function StuffDetail() {
</th> </th>
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="select-wrap" style={{ width: '200px' }}> <div className="select-wrap mr5" style={{ width: '200px' }}>
{prefCodeList?.length > 0 && ( {prefCodeList?.length > 0 && (
<Select <Select
id="long-value-select3" id="long-value-select3"
@ -1388,7 +1414,13 @@ export default function StuffDetail() {
)} )}
</div> </div>
<div className="input-wrap mr5" style={{ width: '580px' }}> <div className="input-wrap mr5" style={{ width: '580px' }}>
<input type="text" className="input-light" value={form.watch('address') || ''} {...form.register('address')} /> <input
type="text"
className="input-light"
value={form.watch('address') || ''}
{...form.register('address')}
ref={inputAddressEl}
/>
</div> </div>
</div> </div>
</td> </td>
@ -1444,7 +1476,7 @@ export default function StuffDetail() {
></Select> ></Select>
</div> </div>
<span className="mr10">{getMessage('stuff.detail.standardWindSpeedIdSpan')}</span> <span className="mr10">{getMessage('stuff.detail.standardWindSpeedIdSpan')}</span>
<Button type="button" className="btn-origin grey" onClick={onSearchWindSpeedPopOpen}> <Button type="button" className="btn-origin grey" onPress={onSearchWindSpeedPopOpen}>
{getMessage('stuff.detail.btn.windSpeedPop')} {getMessage('stuff.detail.btn.windSpeedPop')}
</Button> </Button>
</div> </div>
@ -1463,6 +1495,7 @@ export default function StuffDetail() {
onKeyUp={handleKeyUp} onKeyUp={handleKeyUp}
value={form.watch('verticalSnowCover') || ''} value={form.watch('verticalSnowCover') || ''}
{...register('verticalSnowCover')} {...register('verticalSnowCover')}
ref={inputVerticalSnowCoverEl}
/> />
</div> </div>
<span className="mr10">cm</span> <span className="mr10">cm</span>
@ -1510,6 +1543,7 @@ export default function StuffDetail() {
onKeyUp={handleKeyUp} onKeyUp={handleKeyUp}
value={form.watch('installHeight') || ''} value={form.watch('installHeight') || ''}
{...register('installHeight')} {...register('installHeight')}
ref={inputInstallHeightEl}
/> />
</div> </div>
<span>m</span> <span>m</span>
@ -1544,7 +1578,7 @@ export default function StuffDetail() {
</div> </div>
<div className="sub-right-footer"> <div className="sub-right-footer">
{!isFormValid ? ( {!isFormValid ? (
<Button className="btn-origin grey mr5" onClick={onTempSave}> <Button className="btn-origin grey mr5" onPress={onTempSave}>
{getMessage('stuff.detail.btn.tempSave')} {getMessage('stuff.detail.btn.tempSave')}
</Button> </Button>
) : ( ) : (
@ -1595,7 +1629,7 @@ export default function StuffDetail() {
{/* {detailData?.tempFlg === '1' ? ( */} {/* {detailData?.tempFlg === '1' ? ( */}
{objectNo.substring(0, 1) === 'T' ? ( {objectNo.substring(0, 1) === 'T' ? (
<> <>
<Button className="btn-origin grey" onClick={onSearchDesignRequestPopOpen}> <Button className="btn-origin grey" onPress={onSearchDesignRequestPopOpen}>
{getMessage('stuff.planReqPopup.title')} {getMessage('stuff.planReqPopup.title')}
</Button> </Button>
</> </>
@ -1609,7 +1643,13 @@ export default function StuffDetail() {
</th> </th>
<td> <td>
<div className="input-wrap" style={{ width: '500px' }}> <div className="input-wrap" style={{ width: '500px' }}>
<input type="text" className="input-light" {...form.register('receiveUser')} value={form.watch('receiveUser') || ''} /> <input
type="text"
className="input-light"
{...form.register('receiveUser')}
value={form.watch('receiveUser') || ''}
ref={inputReceiveUserEl}
/>
</div> </div>
</td> </td>
</tr> </tr>
@ -1638,7 +1678,7 @@ export default function StuffDetail() {
})} })}
{/* 상세라디오끝 */} {/* 상세라디오끝 */}
<div className="input-wrap mr5" style={{ width: '545px' }}> <div className="input-wrap mr5" style={{ width: '545px' }}>
<input type="text" className="input-light" {...form.register('objectName')} /> <input type="text" className="input-light" {...form.register('objectName')} ref={inputObjectNameEl} />
</div> </div>
<div className="select-wrap" style={{ width: '120px' }}> <div className="select-wrap" style={{ width: '120px' }}>
<Select <Select
@ -1763,9 +1803,9 @@ export default function StuffDetail() {
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="input-wrap mr5" style={{ width: '200px' }}> <div className="input-wrap mr5" style={{ width: '200px' }}>
<input type="text" className="input-light" disabled value={form.watch('zipNo') || ''} /> <input type="text" className="input-light" disabled value={form.watch('zipNo') || ''} ref={inputZipNoEl} />
</div> </div>
<Button className="btn-origin grey" onClick={onSearchPostNumberPopOpen}> <Button className="btn-origin grey" onPress={onSearchPostNumberPopOpen}>
{getMessage('stuff.detail.btn.addressPop')} {getMessage('stuff.detail.btn.addressPop')}
</Button> </Button>
<div className="guide">{getMessage('stuff.detail.btn.addressPop.guide')}</div> <div className="guide">{getMessage('stuff.detail.btn.addressPop.guide')}</div>
@ -1780,7 +1820,7 @@ export default function StuffDetail() {
</th> </th>
<td> <td>
<div className="flx-box"> <div className="flx-box">
<div className="select-wrap" style={{ width: '200px' }}> <div className="select-wrap mr5" style={{ width: '200px' }}>
{prefCodeList?.length > 0 && ( {prefCodeList?.length > 0 && (
<Select <Select
id="long-value-select3" id="long-value-select3"
@ -1800,7 +1840,13 @@ export default function StuffDetail() {
)} )}
</div> </div>
<div className="input-wrap mr5" style={{ width: '580px' }}> <div className="input-wrap mr5" style={{ width: '580px' }}>
<input type="text" className="input-light" value={form.watch('address') || ''} {...form.register('address')} /> <input
type="text"
className="input-light"
value={form.watch('address') || ''}
{...form.register('address')}
ref={inputAddressEl}
/>
</div> </div>
</div> </div>
</td> </td>
@ -1860,7 +1906,7 @@ export default function StuffDetail() {
></Select> ></Select>
</div> </div>
<span className="mr10">{getMessage('stuff.detail.standardWindSpeedIdSpan')}</span> <span className="mr10">{getMessage('stuff.detail.standardWindSpeedIdSpan')}</span>
<Button type="button" className="btn-origin grey" onClick={onSearchWindSpeedPopOpen}> <Button type="button" className="btn-origin grey" onPress={onSearchWindSpeedPopOpen}>
{getMessage('stuff.detail.btn.windSpeedPop')} {getMessage('stuff.detail.btn.windSpeedPop')}
</Button> </Button>
</div> </div>
@ -1881,6 +1927,7 @@ export default function StuffDetail() {
onKeyUp={handleKeyUp} onKeyUp={handleKeyUp}
value={form.watch('verticalSnowCover') || ''} value={form.watch('verticalSnowCover') || ''}
{...register('verticalSnowCover')} {...register('verticalSnowCover')}
ref={inputVerticalSnowCoverEl}
/> />
</div> </div>
<span className="mr10">cm</span> <span className="mr10">cm</span>
@ -1932,6 +1979,7 @@ export default function StuffDetail() {
onKeyUp={handleKeyUp} onKeyUp={handleKeyUp}
value={form.watch('installHeight') || ''} value={form.watch('installHeight') || ''}
{...register('installHeight')} {...register('installHeight')}
ref={inputInstallHeightEl}
/> />
</div> </div>
<span>m</span> <span>m</span>
@ -2005,13 +2053,13 @@ export default function StuffDetail() {
<div className="sub-right-footer"> <div className="sub-right-footer">
<Link href="/management/stuff" scroll={false}> <Link href="/management/stuff" scroll={false}>
<button type="button" className="btn-origin grey mr5"> <button type="button" className="btn-origin grey mr5">
R상세: {getMessage('stuff.detail.btn.moveList')} {getMessage('stuff.detail.btn.moveList')}
</button> </button>
</Link> </Link>
<Button type="submit" className="btn-origin navy mr5"> <Button type="submit" className="btn-origin navy mr5">
R상세:{getMessage('stuff.detail.btn.save')} {getMessage('stuff.detail.btn.save')}
</Button> </Button>
<Button type="button" className="btn-origin grey" onClick={onDelete}> <Button type="button" className="btn-origin grey" onPress={onDelete}>
{getMessage('stuff.detail.btn.delete')} {getMessage('stuff.detail.btn.delete')}
</Button> </Button>
</div> </div>
@ -2020,17 +2068,17 @@ export default function StuffDetail() {
<> <>
<div className="sub-right-footer"> <div className="sub-right-footer">
{!isFormValid ? ( {!isFormValid ? (
<Button className="btn-origin grey mr5" onClick={onTempSave}> <Button className="btn-origin grey mr5" onPress={onTempSave}>
TEMP상세:{getMessage('stuff.detail.btn.tempSave')} {getMessage('stuff.detail.btn.tempSave')}
</Button> </Button>
) : ( ) : (
<Button type="submit" className="btn-origin navy mr5"> <Button type="submit" className="btn-origin navy mr5">
TEMP상세:{getMessage('stuff.detail.btn.save')} {getMessage('stuff.detail.btn.save')}
</Button> </Button>
)} )}
<Link href="/management/stuff" scroll={false}> <Link href="/management/stuff" scroll={false}>
<button type="button" className="btn-origin grey"> <button type="button" className="btn-origin grey">
TEMP상세:{getMessage('stuff.detail.btn.moveList')} {getMessage('stuff.detail.btn.moveList')}
</button> </button>
</Link> </Link>
</div> </div>