ExpansionPanel
を作成します。要約は、途切れのない文字の非常に長い文字列(つまり、ハイフンやスペースなし)になる可能性があります。
試してみたところ、ExpansionPanelSummary
コンポーネントは狭い幅のディスプレイではうまく表示されません。ボタンが上書きされ、画面外にオーバーフローします。
これが ExpansionPanel Material-UIデモから分岐した私の例です。出力フレームの幅を縮小すると、電子メールアドレスが折り返されず、見苦しく見えます: https:/ /codesandbox.io/s/wqm5k3vmyw
私はnowrap
でTypography
を使用して、それをクリップできるようにしました(私の推奨ソリューション):
<ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>
<Typography nowrap className={classes.heading}>
[email protected]
</Typography>
</ExpansionPanelSummary>
スタイルoverflowWrap: "break-Word"
を追加して、ハイフンや空白文字だけでなく、どこにでも強制的に折り返させることも試みました。
私ができる最善の方法は、ExpansionPanel
にstyle={{ textOverflow: "Ellipsis", overflow: "hidden" }}
を追加して、拡張パネル自体の外側でテキストがオーバーフローしないようにすることです(リンクされた例の2番目の例を参照)。
理想的には、コンテキストの右から切り捨て、省略記号を表示し、展開アイコンを上書きしないことで機能するようにします。ExpansionPanel
を使用してどうすればよいですか?
それができない場合、どうすればワードラップさせることができますか?
Material-UI v3.4.0を使用していますが、ChromeおよびFirefoxで問題が発生しています。
公式ドキュメントから: https://material-ui.com/api/typography/
「noWrap」の大文字の「W」に注意してください。
<Typography noWrap className={classes.heading}>
[email protected]
</Typography>
Typography要素をtextOverflow: "Ellipsis"でスタイル設定されたdivでラップすることを提案します。次に例を示します。
<div style={{overflow: "hidden", textOverflow: "Ellipsis", width: '11rem'}}>
<Typography nowrap className={classes.heading}>
[email protected]
</Typography>
</div>
これが私がそれを解決した方法です:
const useStyles = makeStyles(theme => ({
summary: {
overflow: 'hidden'
}
}))
// ... snipped ...
const classes = useStyles()
// ... snipped ...
<ExpansionPanelSummary classes={{ content: classes.summary }} expandIcon={<SomeIcon />}>
<Typography noWrap title={experiment.name}>{longTextHere}</Typography>
</ExpansionPanelSummary>
ExpansionPanelSummary
コンポーネント自体にスタイルを適用する代わりに、「内部コンテンツ」に適用します。