123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- // @flow
- import type { Styles } from '../types/style'
- /**
- * CSS to represent truncated text with an ellipsis. You can optionally pass a max-width and number of lines before truncating.
- *
- * @example
- * // Styles as object usage
- * const styles = {
- * ...ellipsis('250px')
- * }
- *
- * // styled-components usage
- * const div = styled.div`
- * ${ellipsis('250px')}
- * `
- *
- * // CSS as JS Output
- *
- * div: {
- * 'display': 'inline-block',
- * 'maxWidth': '250px',
- * 'overflow': 'hidden',
- * 'textOverflow': 'ellipsis',
- * 'whiteSpace': 'nowrap',
- * 'wordWrap': 'normal'
- * }
- */
- export default function ellipsis(width?: ?string | ?number, lines?: number = 1): Styles {
- const styles = {
- display: 'inline-block',
- maxWidth: width || '100%',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- whiteSpace: 'nowrap',
- wordWrap: 'normal',
- }
- return lines > 1
- ? {
- ...styles,
- WebkitBoxOrient: 'vertical',
- WebkitLineClamp: lines,
- display: '-webkit-box',
- whiteSpace: 'normal',
- }
- : styles
- }
|