|
@@ -7,7 +7,7 @@ import classNames from 'classnames'
|
|
|
import { modalTxtTab } from './data'
|
|
import { modalTxtTab } from './data'
|
|
|
import { useSelector } from 'react-redux'
|
|
import { useSelector } from 'react-redux'
|
|
|
import { RootState } from '@/store'
|
|
import { RootState } from '@/store'
|
|
|
-import Shufa from '../Shufa'
|
|
|
|
|
|
|
+
|
|
|
import { forwardRef, useImperativeHandle } from 'react'
|
|
import { forwardRef, useImperativeHandle } from 'react'
|
|
|
import FlipContainer from '@/components/FlipContainner'
|
|
import FlipContainer from '@/components/FlipContainner'
|
|
|
|
|
|
|
@@ -15,15 +15,15 @@ type Props = {
|
|
|
setIsShowTabBar: (isShowTabBar: boolean) => void
|
|
setIsShowTabBar: (isShowTabBar: boolean) => void
|
|
|
setIsShowMzmTitle: (isShowMzmTitle: boolean) => void
|
|
setIsShowMzmTitle: (isShowMzmTitle: boolean) => void
|
|
|
setBottomTxt: (val: string) => void
|
|
setBottomTxt: (val: string) => void
|
|
|
|
|
+ setIsShowShufa: (isShowShufa: boolean) => void
|
|
|
ref: any
|
|
ref: any
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function ModalTxt({ setIsShowTabBar, setIsShowMzmTitle, setBottomTxt }: Props, ref: any) {
|
|
|
|
|
|
|
+function ModalTxt({ setIsShowTabBar, setIsShowMzmTitle, setBottomTxt, setIsShowShufa }: Props, ref: any) {
|
|
|
const { myData, myLangue } = useSelector((state: RootState) => state.A0Layout)
|
|
const { myData, myLangue } = useSelector((state: RootState) => state.A0Layout)
|
|
|
|
|
|
|
|
const [isFlipped, setIsFlipped] = useState(false)
|
|
const [isFlipped, setIsFlipped] = useState(false)
|
|
|
const [selectedTab, setSelectedTab] = useState(0)
|
|
const [selectedTab, setSelectedTab] = useState(0)
|
|
|
- const [isShowShufa, setIsShowShufa] = useState(false)
|
|
|
|
|
const selectedTabRef = useRef(0)
|
|
const selectedTabRef = useRef(0)
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
@@ -239,114 +239,110 @@ function ModalTxt({ setIsShowTabBar, setIsShowMzmTitle, setBottomTxt }: Props, r
|
|
|
'程哲碑碑文,31行楷书,满行45字,<br/>字径约2厘米,带方界格,总计1404字;<br/>无正式碑名,通篇颂德程氏家族的历史功绩。'
|
|
'程哲碑碑文,31行楷书,满行45字,<br/>字径约2厘米,带方界格,总计1404字;<br/>无正式碑名,通篇颂德程氏家族的历史功绩。'
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
- <>
|
|
|
|
|
- <div
|
|
|
|
|
- className={classNames(styles.modalTxt, myLangue === 'ZH' ? '' : styles.modalTxtEn)}
|
|
|
|
|
- id='modalTxt'
|
|
|
|
|
- >
|
|
|
|
|
- <div className='modalTxtContainner'>
|
|
|
|
|
- {selectedTab !== 0 && <FlipContainer
|
|
|
|
|
- style={{
|
|
|
|
|
- width: '82%',
|
|
|
|
|
- height: '100%'
|
|
|
|
|
- }}
|
|
|
|
|
- isFlipped={isFlipped}
|
|
|
|
|
- frontContent={
|
|
|
|
|
- <div
|
|
|
|
|
- className='intro'
|
|
|
|
|
- id='introContent'
|
|
|
|
|
- >
|
|
|
|
|
- {(
|
|
|
|
|
- <>
|
|
|
|
|
- <div className='intro_title songFont'>
|
|
|
|
|
- {modalTxtTab[selectedTab - 1].name}
|
|
|
|
|
- </div>
|
|
|
|
|
- <div className='intro_txt'>
|
|
|
|
|
- {myData.readDetail[selectedTab - 1].intro}
|
|
|
|
|
- </div>
|
|
|
|
|
- <div
|
|
|
|
|
- className='intro_btn'
|
|
|
|
|
- onClick={() => {
|
|
|
|
|
- setIsFlipped(true)
|
|
|
|
|
- setShowTooltip(-1)
|
|
|
|
|
- }}
|
|
|
|
|
- >
|
|
|
|
|
- {/* 原文<span className='intro_btn_dot'></span>译文
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ className={classNames(styles.modalTxt, myLangue === 'ZH' ? '' : styles.modalTxtEn)}
|
|
|
|
|
+ id='modalTxt'
|
|
|
|
|
+ >
|
|
|
|
|
+ <div className='modalTxtContainner'>
|
|
|
|
|
+ {selectedTab !== 0 && <FlipContainer
|
|
|
|
|
+ style={{
|
|
|
|
|
+ width: '82%',
|
|
|
|
|
+ height: '100%'
|
|
|
|
|
+ }}
|
|
|
|
|
+ isFlipped={isFlipped}
|
|
|
|
|
+ frontContent={
|
|
|
|
|
+ <div
|
|
|
|
|
+ className='intro'
|
|
|
|
|
+ id='introContent'
|
|
|
|
|
+ >
|
|
|
|
|
+ {(
|
|
|
|
|
+ <>
|
|
|
|
|
+ <div className='intro_title songFont'>
|
|
|
|
|
+ {modalTxtTab[selectedTab - 1].name}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div className='intro_txt'>
|
|
|
|
|
+ {myData.readDetail[selectedTab - 1].intro}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div
|
|
|
|
|
+ className='intro_btn'
|
|
|
|
|
+ onClick={() => {
|
|
|
|
|
+ setIsFlipped(true)
|
|
|
|
|
+ setShowTooltip(-1)
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
|
|
+ {/* 原文<span className='intro_btn_dot'></span>译文
|
|
|
<span className='intro_btn_dot'></span> */}
|
|
<span className='intro_btn_dot'></span> */}
|
|
|
- </div>
|
|
|
|
|
- </>
|
|
|
|
|
- )}
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- backContent={
|
|
|
|
|
-
|
|
|
|
|
- <div className='translateModal'>
|
|
|
|
|
- {(
|
|
|
|
|
- <div className='txtWithTrans' onClick={() => {
|
|
|
|
|
- setIsFlipped(false)
|
|
|
|
|
- setShowTooltip(-1)
|
|
|
|
|
- }} onTouchMove={() => setShowTooltip(-1)}>
|
|
|
|
|
- {CommentText({
|
|
|
|
|
- str: myData.readDetail[selectedTab - 1].translate_v2,
|
|
|
|
|
- index: selectedTab - 1
|
|
|
|
|
- })}
|
|
|
|
|
</div>
|
|
</div>
|
|
|
- )}
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- />}
|
|
|
|
|
|
|
+ </>
|
|
|
|
|
+ )}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ }
|
|
|
|
|
+ backContent={
|
|
|
|
|
|
|
|
- {selectedTab === 0 && (
|
|
|
|
|
- <div className='content'>
|
|
|
|
|
- <div className='title songFontc'>
|
|
|
|
|
- {myLangue === 'EN' ? 'Overview of the Inscription' : '碑文概述'}
|
|
|
|
|
- </div>
|
|
|
|
|
- <div
|
|
|
|
|
- className='text'
|
|
|
|
|
- dangerouslySetInnerHTML={{ __html: myLangue === 'EN' ? gaiShuEn : gaiShu }}
|
|
|
|
|
- ></div>
|
|
|
|
|
- <div className='shufaBtn songFont' onClick={() => setIsShowShufa(true)}>
|
|
|
|
|
- 书法赏析
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <div className='translateModal'>
|
|
|
|
|
+ {(
|
|
|
|
|
+ <div className='txtWithTrans' onClick={() => {
|
|
|
|
|
+ setIsFlipped(false)
|
|
|
|
|
+ setShowTooltip(-1)
|
|
|
|
|
+ }} onTouchMove={() => setShowTooltip(-1)}>
|
|
|
|
|
+ {CommentText({
|
|
|
|
|
+ str: myData.readDetail[selectedTab - 1].translate_v2,
|
|
|
|
|
+ index: selectedTab - 1
|
|
|
|
|
+ })}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ )}
|
|
|
</div>
|
|
</div>
|
|
|
- )}
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ />}
|
|
|
|
|
|
|
|
- <div className='topBar'>
|
|
|
|
|
- <div className='beie' hidden={selectedTab !== 0}>
|
|
|
|
|
- <img src={require('@/assets/img/beie.png')} alt='' />
|
|
|
|
|
- <div className='txt songFont' onClick={handleBeie}>
|
|
|
|
|
- {myLangue === 'EN' ? 'forehead' : '碑额'}
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ {selectedTab === 0 && (
|
|
|
|
|
+ <div className='content'>
|
|
|
|
|
+ <div className='title songFontc'>
|
|
|
|
|
+ {myLangue === 'EN' ? 'Overview of the Inscription' : '碑文概述'}
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div
|
|
|
|
|
+ className='text'
|
|
|
|
|
+ dangerouslySetInnerHTML={{ __html: myLangue === 'EN' ? gaiShuEn : gaiShu }}
|
|
|
|
|
+ ></div>
|
|
|
|
|
+ <div className='shufaBtn songFont' onClick={() => setIsShowShufa(true)}>
|
|
|
|
|
+ 书法赏析
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ )}
|
|
|
|
|
+
|
|
|
|
|
+ <div className='topBar'>
|
|
|
|
|
+ <div className='beie' hidden={selectedTab !== 0}>
|
|
|
|
|
+ <img src={require('@/assets/img/beie.png')} alt='' />
|
|
|
|
|
+ <div className='txt songFont' onClick={handleBeie}>
|
|
|
|
|
+ {myLangue === 'EN' ? 'forehead' : '碑额'}
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
- {modalTxtTab.map((item, index) => (
|
|
|
|
|
|
|
+ {modalTxtTab.map((item, index) => (
|
|
|
|
|
+ <div
|
|
|
|
|
+ key={item.key}
|
|
|
|
|
+ className={`tab${index}`}
|
|
|
|
|
+ onClick={() => handleTabClick(item.key, myData.readDetail[index]?.mzmtz?.title)}
|
|
|
|
|
+ >
|
|
|
|
|
+ <img
|
|
|
|
|
+ src={require(`@/assets/img/btn_ModalTxt_bg${selectedTab === item.key ? '_ac' : ''
|
|
|
|
|
+ }.png`)}
|
|
|
|
|
+ alt=''
|
|
|
|
|
+ />
|
|
|
|
|
+ <div className={`tabNub songFont ${selectedTab === item.key ? 'tabNubAc' : ''}`}>
|
|
|
|
|
+ {item.sonTxt}
|
|
|
|
|
+ </div>
|
|
|
<div
|
|
<div
|
|
|
- key={item.key}
|
|
|
|
|
- className={`tab${index}`}
|
|
|
|
|
- onClick={() => handleTabClick(item.key, myData.readDetail[index]?.mzmtz?.title)}
|
|
|
|
|
|
|
+ className={classNames('txt songFont', selectedTab === item.key ? 'txtAc' : '')}
|
|
|
|
|
+ style={{ opacity: selectedTab === 0 ? '1' : '0' }}
|
|
|
>
|
|
>
|
|
|
- <img
|
|
|
|
|
- src={require(`@/assets/img/btn_ModalTxt_bg${selectedTab === item.key ? '_ac' : ''
|
|
|
|
|
- }.png`)}
|
|
|
|
|
- alt=''
|
|
|
|
|
- />
|
|
|
|
|
- <div className={`tabNub songFont ${selectedTab === item.key ? 'tabNubAc' : ''}`}>
|
|
|
|
|
- {item.sonTxt}
|
|
|
|
|
- </div>
|
|
|
|
|
- <div
|
|
|
|
|
- className={classNames('txt songFont', selectedTab === item.key ? 'txtAc' : '')}
|
|
|
|
|
- style={{ opacity: selectedTab === 0 ? '1' : '0' }}
|
|
|
|
|
- >
|
|
|
|
|
- {myLangue === 'EN' ? item.nameEn : item.name}
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ {myLangue === 'EN' ? item.nameEn : item.name}
|
|
|
</div>
|
|
</div>
|
|
|
- ))}
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div>
|
|
|
|
|
+ ))}
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- {/* 书法赏析 */}
|
|
|
|
|
- {isShowShufa && <Shufa setIsShowShufa={setIsShowShufa} />}
|
|
|
|
|
- </>
|
|
|
|
|
|
|
+ </div>
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
export default forwardRef(ModalTxt)
|
|
export default forwardRef(ModalTxt)
|