typography.stories.jsx 41 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883
  1. import React, { useCallback } from 'react';
  2. import withPropsCombinations from 'react-storybook-addon-props-combinations';
  3. import Icon from '../../icons';
  4. import Typography from '../index';
  5. import { IconLink, IconTick, IconSetting } from '@douyinfe/semi-icons';
  6. import {HugeData} from "./HugeData";
  7. import { Tooltip } from '@douyinfe/semi-ui'
  8. export default {
  9. title: 'Typography'
  10. }
  11. const { Title, Text, Paragraph } = Typography;
  12. export const _Title = () => (
  13. <div>
  14. <Title>h1. Semi Design</Title>
  15. <Title heading={2}>h2. Semi Design</Title>
  16. <Title heading={3}>h3. Semi Design</Title>
  17. <Title heading={4}>h4. Semi Design</Title>
  18. <Title heading={5}>h5. Semi Design</Title>
  19. <Title heading={6}>h6. Semi Design</Title>
  20. <Title heading={6} link>
  21. h6. Semi Design
  22. </Title>
  23. </div>
  24. );
  25. export const _Text = () => (
  26. <div>
  27. <Text>Text</Text>
  28. <br />
  29. <Text type="secondary">Secondary</Text>
  30. <br />
  31. <Text type="warning">Warning</Text>
  32. <br />
  33. <Text type="danger">Dange</Text>
  34. <br />
  35. <Text disabled>Disabled</Text>
  36. <br />
  37. <Text mark>Default Mark</Text>
  38. <br />
  39. <Text code>Example Code</Text>
  40. <br />
  41. <Text underline>Underline</Text>
  42. <br />
  43. <Text delete>Deleted</Text>
  44. <br />
  45. <Text strong>Strong</Text>
  46. <br />
  47. <Text link>链接文本</Text>
  48. <br />
  49. <Text link={{ href: 'https://semi.design/' }}>打开网站</Text>
  50. <br />
  51. <Text link>
  52. <IconLink />
  53. 网页链接
  54. </Text>
  55. <br />
  56. <Text size='small'>小尺寸文本</Text>
  57. <br />
  58. <Text size='normal'>普通尺寸文本</Text>
  59. <br />
  60. </div>
  61. );
  62. export const TextIcon = () => (
  63. <div>
  64. <Text icon={<IconLink />}>Text</Text>
  65. <br />
  66. <Text icon={<IconLink />} type="secondary">
  67. Secondary
  68. </Text>
  69. <br />
  70. <Text icon={<IconLink />} type="warning">
  71. Warning
  72. </Text>
  73. <br />
  74. <Text icon={<IconLink />} type="danger">
  75. Dange
  76. </Text>
  77. <br />
  78. <Text icon={<IconLink />} disabled>
  79. Disabled
  80. </Text>
  81. <br />
  82. <Text icon={<IconLink />} mark>
  83. Default Mark
  84. </Text>
  85. <br />
  86. <Text icon={<IconLink />} code>
  87. Example Code
  88. </Text>
  89. <br />
  90. <Text icon={<IconLink />} underline>
  91. Underline
  92. </Text>
  93. <br />
  94. <Text icon={<IconLink />} delete>
  95. Deleted
  96. </Text>
  97. <br />
  98. <Text icon={<IconLink />} strong>
  99. Strong
  100. </Text>
  101. <br />
  102. <Text icon={<IconLink />} link>
  103. 链接文本
  104. </Text>
  105. <br />
  106. <Text icon={<IconLink />} link={{ href: 'https://semi.design/' }}>
  107. 打开网站
  108. </Text>
  109. <br />
  110. </div>
  111. );
  112. TextIcon.story = {
  113. name: 'Text icon',
  114. };
  115. export const _Paragraph = () => (
  116. <div>
  117. <Paragraph>
  118. Semi Design 是由抖音前端团队与 UED
  119. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  120. Web 应用。
  121. <br />
  122. 区别于其他的设计系统而言,Semi Design
  123. 以用户中心、内容优先、设计人性化为设计理念,具有以下优势:
  124. <br />
  125. -Semi Design
  126. 以内容优先进行设计,这使得我们更容易搭建基于内容操作(多媒体、视频、音频等)的业务组件。
  127. <br />
  128. -更容易地自定义主题。面向公司众多不同的产品业务线,我们能够更快速地自定义具有该产品品牌风格的主题。
  129. <br />
  130. -适用国际化场景。组件设计时重视国际化场景,其中设计语言已应用在海外审核、运营等场景。
  131. <br />
  132. -效率场景加入人性化关怀。我们坚信追求高效的同时也要加入人性化的关怀,形成正向循环,追求长期的收益。
  133. </Paragraph>
  134. <br />
  135. <Paragraph spacing="extended">
  136. Semi Design 是由抖音前端团队与 UED
  137. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  138. Web 应用。
  139. <br />
  140. 区别于其他的设计系统而言,Semi Design
  141. 以用户中心、内容优先、设计人性化为设计理念,具有以下优势:
  142. <br />
  143. -Semi Design
  144. 以内容优先进行设计,这使得我们更容易搭建基于内容操作(多媒体、视频、音频等)的业务组件。
  145. <br />
  146. -更容易地自定义主题。面向公司众多不同的产品业务线,我们能够更快速地自定义具有该产品品牌风格的主题。
  147. <br />
  148. -适用国际化场景。组件设计时重视国际化场景,其中设计语言已应用在海外审核、运营等场景。
  149. <br />
  150. -效率场景加入人性化关怀。我们坚信追求高效的同时也要加入人性化的关怀,形成正向循环,追求长期的收益。
  151. </Paragraph>
  152. </div>
  153. );
  154. export const EllipsisSingle = () => (
  155. <div>
  156. <Paragraph ellipsis style={{ width: 350 }}>
  157. 这是一个单行截断的例子: Semi Design 是由抖音前端团队与 UED
  158. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  159. Web 应用。 区别于其他的设计系统而言,Semi Design
  160. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  161. </Paragraph>
  162. <br />
  163. <Paragraph ellipsis={{ expandable: true }} style={{ width: 350 }}>
  164. 单行截断并且支持展开:Semi Design 是由抖音前端团队与 UED
  165. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  166. Web 应用。 区别于其他的设计系统而言,Semi Design
  167. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  168. </Paragraph>
  169. <br />
  170. <Paragraph ellipsis={{ expandable: true }} style={{ width: 350 }}>
  171. 单行截断,支持展开但其实没有溢出哦
  172. </Paragraph>
  173. <br />
  174. <Paragraph ellipsis={{ expandable: true, expandText: 'Show More' }} style={{ width: 350 }}>
  175. 单行截断并且支持展开,自定义展开文本: Semi Design 是由抖音前端团队与 UED
  176. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  177. Web 应用。 区别于其他的设计系统而言,Semi Design
  178. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  179. </Paragraph>
  180. <br />
  181. <Paragraph ellipsis={{ expandText: 'Show More' }} style={{ width: 350 }}>
  182. 单行截断,自定义展开文本但是不能展开哦: Semi Design 是由抖音前端团队与 UED
  183. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  184. Web 应用。 区别于其他的设计系统而言,Semi Design
  185. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  186. </Paragraph>
  187. <br />
  188. <Paragraph ellipsis={{ showTooltip: true }} style={{ width: 350 }}>
  189. 单行截断,展示tooltip: Semi Design 是由抖音前端团队与 UED
  190. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  191. Web 应用。 区别于其他的设计系统而言,Semi Design
  192. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  193. </Paragraph>
  194. <br />
  195. <Paragraph ellipsis={{ showTooltip: true }} style={{ width: 350 }}>
  196. 展示tooltip,但是其实没有溢出哦
  197. </Paragraph>
  198. <br />
  199. <Paragraph
  200. ellipsis={{ suffix: '喵喵喵', expandText: 'Show More', expandable: true }}
  201. style={{ width: 250 }}
  202. >
  203. 单行截断,有suffix哦: Semi Design 是由抖音前端团队与 UED
  204. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  205. Web 应用。 区别于其他的设计系统而言,Semi Design
  206. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  207. </Paragraph>
  208. <br />
  209. <Paragraph
  210. ellipsis={{ suffix: '喵喵喵', expandText: 'Show More', expandable: true }}
  211. style={{ width: '50%' }}
  212. >
  213. 单行截断,要自动适配宽度才可以: Semi Design 是由抖音前端团队与 UED
  214. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  215. Web 应用。 区别于其他的设计系统而言,Semi Design
  216. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  217. </Paragraph>
  218. </div>
  219. );
  220. EllipsisSingle.story = {
  221. name: 'Ellipsis single',
  222. };
  223. export const EllipsisMultiple = () => (
  224. <div>
  225. <Paragraph ellipsis={{ rows: 3 }} style={{ width: 300 }}>
  226. 这是一个多行截断的例子: Semi Design 是由抖音前端团队与 UED
  227. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  228. Web 应用。 区别于其他的设计系统而言,Semi Design
  229. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  230. </Paragraph>
  231. <br />
  232. <Paragraph
  233. ellipsis={{ rows: 9, expandable: true, collapsible: true, collapseText: '折叠我' }}
  234. style={{ width: 300 }}
  235. >
  236. 如果支持折叠但其实没有达到溢出的高度,仍旧会显示文本
  237. </Paragraph>
  238. <br />
  239. <Paragraph ellipsis={{ rows: 9, expandable: true }} style={{ width: 300 }}>
  240. 如果支持折叠但其实没有达到溢出的高度,仍旧会显示文本
  241. </Paragraph>
  242. <br />
  243. <Paragraph ellipsis={{ rows: 3, expandable: true }} style={{ width: 280 }}>
  244. 多行截断并且支持展开:Semi Design 是由抖音前端团队与 UED
  245. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  246. Web 应用。 区别于其他的设计系统而言,Semi Design
  247. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  248. </Paragraph>
  249. <br />
  250. <Paragraph
  251. ellipsis={{ expandable: true, rows: 3, expandText: 'Show More' }}
  252. style={{ width: 250 }}
  253. >
  254. 多行截断并且支持展开,自定义展开文本: Semi Design 是由抖音前端团队与 UED
  255. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  256. Web 应用。 区别于其他的设计系统而言,Semi Design
  257. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  258. </Paragraph>
  259. <br />
  260. <Paragraph ellipsis={{ rows: 3, expandText: 'Show More' }} style={{ width: 250 }}>
  261. 多行截断,自定义展开文本但是不能展开哦: Semi Design 是由抖音前端团队与 UED
  262. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  263. Web 应用。 区别于其他的设计系统而言,Semi Design
  264. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  265. </Paragraph>
  266. <br />
  267. <Paragraph ellipsis={{ rows: 3, showTooltip: true }} style={{ width: 250 }}>
  268. 多行截断,展示tooltip: Semi Design 是由抖音前端团队与 UED
  269. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  270. Web 应用。 区别于其他的设计系统而言,Semi Design
  271. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  272. </Paragraph>
  273. <br />
  274. <Paragraph ellipsis={{ rows: 3, showTooltip: { type: 'popover' } }} style={{ width: 250 }}>
  275. 多行截断,展示popover: Semi Design 是由抖音前端团队与 UED
  276. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  277. Web 应用。 区别于其他的设计系统而言,Semi Design
  278. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  279. </Paragraph>
  280. <br />
  281. <Paragraph
  282. ellipsis={{ rows: 3, expandText: 'Show More', showTooltip: { type: 'popover' } }}
  283. style={{ width: 250 }}
  284. >
  285. 多行截断,有展开文字但是不能展开所以不能展示popover: Semi Design 是由抖音前端团队与 UED
  286. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  287. Web 应用。 区别于其他的设计系统而言,Semi Design
  288. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  289. </Paragraph>
  290. <br />
  291. <Paragraph ellipsis={{ rows: 3, showTooltip: true }} style={{ width: 250 }}>
  292. 展示tooltip,但是其实没有溢出哦
  293. </Paragraph>
  294. <br />
  295. <Paragraph ellipsis={{ rows: 3, suffix: '喵喵喵', expandable: true }} style={{ width: 250 }}>
  296. 多行截断,有suffix哦: Semi Design 是由抖音前端团队与 UED
  297. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  298. Web 应用。 区别于其他的设计系统而言,Semi Design
  299. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  300. </Paragraph>
  301. <br />
  302. <Paragraph ellipsis={{ rows: 3, suffix: '喵喵喵', expandable: true }} style={{ width: '50%' }}>
  303. 多行截断,要自动适配宽度才可以: Semi Design 是由抖音前端团队与 UED
  304. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  305. Web 应用。 区别于其他的设计系统而言,Semi Design
  306. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  307. </Paragraph>
  308. <br />
  309. <Paragraph ellipsis={{ rows: 3, expandable: true }} style={{ width: 300, whiteSpace: 'pre-line' }}>
  310. {'这是一个多行截断的\n例子: Semi Design 是由互娱社区\n前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。 区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。'}
  311. </Paragraph>
  312. <br />
  313. <Paragraph ellipsis={{ rows: 3, expandable: true }} style={{ width: 300, whiteSpace: 'pre-wrap' }}>
  314. {'这是一个多行截断的\n例子: Semi Des ign 是由互 娱社区\n前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。 区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。'}
  315. </Paragraph>
  316. </div>
  317. );
  318. EllipsisMultiple.story = {
  319. name: 'Ellipsis multiple',
  320. };
  321. export const EllipsisChaos = () => (
  322. <div>
  323. <Paragraph ellipsis={{ rows: 3 }} style={{ width: 300 }}>
  324. 不可以有非文本,要抛出来warning: Semi Design 是由抖音前端团队与 UED
  325. 团队共同设计开发并维护的设计系统。
  326. <br />{' '}
  327. 设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  328. Web 应用。 区别于其他的设计系统而言,Semi Design
  329. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  330. </Paragraph>
  331. <br />
  332. <Paragraph ellipsis copyable style={{ width: 350 }}>
  333. 还可以复制哦: Semi Design 是由抖音前端团队与 UED
  334. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  335. Web 应用。 区别于其他的设计系统而言,Semi Design
  336. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  337. </Paragraph>
  338. <br />
  339. <Paragraph
  340. ellipsis
  341. copyable={{
  342. successTip: (
  343. <span>
  344. <IconTick />
  345. </span>
  346. ),
  347. }}
  348. style={{ width: 350 }}
  349. >
  350. 不要复制成功了: Semi Design 是由抖音前端团队与 UED
  351. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  352. Web 应用。 区别于其他的设计系统而言,Semi Design
  353. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  354. </Paragraph>
  355. <br />
  356. <Paragraph ellipsis link style={{ width: 350 }}>
  357. 是一个链接呢: Semi Design 是由抖音前端团队与 UED
  358. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  359. Web 应用。 区别于其他的设计系统而言,Semi Design
  360. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  361. </Paragraph>
  362. <br />
  363. <Paragraph
  364. link
  365. ellipsis={{ expandable: true, rows: 3, expandText: 'Show More' }}
  366. style={{ width: 250 }}
  367. >
  368. 是一个链接还能展开呢: Semi Design 是由抖音前端团队与 UED
  369. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  370. Web 应用。 区别于其他的设计系统而言,Semi Design
  371. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  372. </Paragraph>
  373. <br />
  374. <Paragraph
  375. link
  376. copyable
  377. ellipsis={{ expandable: true, rows: 3, expandText: 'Show More' }}
  378. style={{ width: 250 }}
  379. >
  380. 是一个链接还能展开呢还能复制呢: Semi Design 是由抖音前端团队与 UED
  381. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  382. Web 应用。 区别于其他的设计系统而言,Semi Design
  383. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  384. </Paragraph>
  385. <br />
  386. <Title heading={2} ellipsis={{ showTooltip: true }} style={{ width: 250 }}>
  387. 是个2号标题哦: Semi Design 是由抖音前端团队与 UED
  388. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  389. Web 应用。 区别于其他的设计系统而言,Semi Design
  390. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  391. </Title>
  392. <br />
  393. <Title heading={4} link ellipsis={{ showTooltip: true }} style={{ width: 250 }}>
  394. 是个4号标题链接呢: Semi Design 是由抖音前端团队与 UED
  395. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  396. Web 应用。 区别于其他的设计系统而言,Semi Design
  397. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  398. </Title>
  399. <br />
  400. <Text
  401. type="warning"
  402. ellipsis={{ rows: 3, showTooltip: { type: 'popover' } }}
  403. style={{ width: 250 }}
  404. >
  405. 是个警告文本呢: Semi Design 是由抖音前端团队与 UED
  406. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  407. Web 应用。 区别于其他的设计系统而言,Semi Design
  408. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  409. </Text>
  410. <br /><br />
  411. <Title
  412. icon={<IconLink />}
  413. heading={5}
  414. link
  415. ellipsis={{ showTooltip: true }}
  416. style={{ width: 250 }}
  417. >
  418. 是个5号标题链接还有个小小的图标啦: Semi Design 是由抖音前端团队与 UED
  419. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  420. Web 应用。 区别于其他的设计系统而言,Semi Design
  421. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  422. </Title>
  423. </div>
  424. );
  425. EllipsisChaos.story = {
  426. name: 'Ellipsis chaos',
  427. };
  428. export const EllipsisCollapsible = () => (
  429. <div>
  430. <Paragraph
  431. ellipsis={{
  432. rows: 3,
  433. expandable: true,
  434. collapsible: true,
  435. onExpand: (bool, e) => console.log(bool, e),
  436. }}
  437. style={{ width: 300 }}
  438. >
  439. Semi Design 是由抖音前端团队与 UED
  440. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  441. Web 应用。 区别于其他的设计系统而言,Semi Design
  442. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  443. </Paragraph>
  444. <br />
  445. <Paragraph
  446. ellipsis={{
  447. rows: 3,
  448. expandable: true,
  449. collapsible: true,
  450. collapseText: 'show less',
  451. onExpand: (bool, e) => console.log(bool, e),
  452. }}
  453. style={{ width: 300 }}
  454. >
  455. 自定义的收起:Semi Design 是由抖音前端团队与 UED
  456. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  457. Web 应用。 区别于其他的设计系统而言,Semi Design
  458. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  459. </Paragraph>
  460. <br />
  461. <Paragraph
  462. ellipsis={{
  463. rows: 3,
  464. expandable: true,
  465. collapsible: false,
  466. collapseText: 'show less',
  467. onExpand: (bool, e) => console.log(bool, e),
  468. }}
  469. style={{ width: 300 }}
  470. >
  471. 不让你收起来略:Semi Design 是由抖音前端团队与 UED
  472. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  473. Web 应用。 区别于其他的设计系统而言,Semi Design
  474. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  475. </Paragraph>
  476. <br />
  477. <Paragraph
  478. copyable
  479. ellipsis={{
  480. rows: 3,
  481. expandable: true,
  482. collapsible: true,
  483. onExpand: (bool, e) => console.log(bool, e),
  484. }}
  485. style={{ width: 300 }}
  486. >
  487. 又可以复制啦:Semi Design 是由抖音前端团队与 UED
  488. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  489. Web 应用。 区别于其他的设计系统而言,Semi Design
  490. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  491. </Paragraph>
  492. <br />
  493. <Paragraph
  494. link
  495. ellipsis={{
  496. rows: 3,
  497. expandable: true,
  498. collapsible: true,
  499. onExpand: (bool, e) => console.log(bool, e),
  500. }}
  501. style={{ width: 300 }}
  502. >
  503. 又来测试链接啦啦啦:Semi Design 是由抖音前端团队与 UED
  504. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  505. Web 应用。 区别于其他的设计系统而言,Semi Design
  506. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  507. </Paragraph>
  508. </div>
  509. );
  510. EllipsisCollapsible.story = {
  511. name: 'Ellipsis collapsible?',
  512. };
  513. export const EllipsisFromCenter = () => (
  514. <div>
  515. <Paragraph
  516. ellipsis={{
  517. rows: 3,
  518. pos: 'middle',
  519. expandable: true,
  520. collapsible: true,
  521. onExpand: (bool, e) => console.log(bool, e),
  522. }}
  523. style={{ width: 300 }}
  524. >
  525. 多行中间截断还能展开和折叠:Semi Design 是由抖音前端团队与 UED
  526. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  527. Web 应用。 区别于其他的设计系统而言,Semi Design
  528. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  529. </Paragraph>
  530. <br />
  531. <Paragraph ellipsis={{ rows: 3, pos: 'middle', showTooltip: true }} style={{ width: 300 }}>
  532. 多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:多行中间截断不能展开和折叠:
  533. </Paragraph>
  534. <br />
  535. <Paragraph
  536. ellipsis={{
  537. pos: 'middle',
  538. expandable: true,
  539. collapsible: true,
  540. onExpand: (bool, e) => console.log(bool, e),
  541. }}
  542. style={{ width: 300 }}
  543. >
  544. 单行中间截断还能展开和折叠: Semi Design 是由抖音前端团队与 UED
  545. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  546. Web 应用。 区别于其他的设计系统而言,Semi Design
  547. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  548. </Paragraph>
  549. <br />
  550. <Paragraph ellipsis={{ pos: 'middle', expandable: true }} style={{ width: 300 }}>
  551. 单行中间截断还能展开超厉害: Semi Design 是由抖音前端团队与 UED
  552. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  553. Web 应用。 区别于其他的设计系统而言,Semi Design
  554. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  555. </Paragraph>
  556. <br />
  557. <Paragraph ellipsis={{ pos: 'middle' }} style={{ width: '50%' }}>
  558. 单行中间截断: Semi Design 是由抖音前端团队与 UED
  559. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  560. Web 应用。 区别于其他的设计系统而言,Semi Design
  561. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  562. </Paragraph>
  563. <br />
  564. <Paragraph ellipsis={{ rows: 3, pos: 'middle', expandable: true }} style={{ width: '50%' }}>
  565. 自动适配的多行中间截断:Semi Design 是由抖音前端团队与 UED
  566. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  567. Web 应用。 区别于其他的设计系统而言,Semi Design
  568. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  569. </Paragraph>
  570. <br />
  571. <Title heading={3} ellipsis={{ pos: 'middle' }} style={{ width: '50%' }}>
  572. 我是一个酷炫的从中间折断的3号标题
  573. </Title>
  574. <br />
  575. <Text
  576. data-cy="nowrap-middile-ellipsis1"
  577. ellipsis={{ pos: 'middle', rows: 1, showTooltip: true }}
  578. style={{ width: '200px', whiteSpace: 'nowrap', overflow: 'hidden' }}
  579. >
  580. 不能换行的单行从中间截断时,应该能正常展示省略
  581. </Text>
  582. <br />
  583. <Text
  584. data-cy="nowrap-middile-ellipsis2"
  585. ellipsis={{ pos: 'middle', rows: 1, showTooltip: true }}
  586. style={{ width: '200px', overflow: 'hidden' }}
  587. >
  588. This/one/does/not/wrap/like/the/one/before/but/does/not/have/whiteSpace/set
  589. </Text>
  590. <br />
  591. <Text ellipsis={{ pos: 'middle' }} style={{ width: '50%' }}>
  592. 通常のテキストでさえ、切り捨てる機能が必要です
  593. </Text>
  594. <br />
  595. <br />
  596. <Text link ellipsis={{ pos: 'middle' }} style={{ width: '50%' }}>
  597. Even ordinary text wants to have the ability to truncate from center
  598. </Text>
  599. </div>
  600. );
  601. EllipsisFromCenter.story = {
  602. name: 'Ellipsis from center',
  603. };
  604. export const Copyable = () => (
  605. <div>
  606. <Paragraph copyable>
  607. Semi Design 是由抖音前端团队与 UED
  608. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  609. Web 应用。 区别于其他的设计系统而言,Semi Design
  610. 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
  611. </Paragraph>
  612. <br />
  613. <Paragraph copyable={{
  614. onCopy: (e, content) => {
  615. console.log(content);
  616. }
  617. }} >点击右边的图标复制文本。</Paragraph>
  618. <br />
  619. <Paragraph spacing="extended" copyable>
  620. Semi Design 是由抖音前端团队与 UED
  621. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  622. Web 应用。
  623. <br />
  624. 区别于其他的设计系统而言,Semi Design
  625. 以用户中心、内容优先、设计人性化为设计理念,具有以下优势:
  626. <br />
  627. -Semi Design
  628. 以内容优先进行设计,这使得我们更容易搭建基于内容操作(多媒体、视频、音频等)的业务组件。
  629. <br />
  630. -更容易地自定义主题。面向公司众多不同的产品业务线,我们能够更快速地自定义具有该产品品牌风格的主题。
  631. <br />
  632. -适用国际化场景。组件设计时重视国际化场景,其中设计语言已应用在海外审核、运营等场景。
  633. <br />
  634. -效率场景加入人性化关怀。我们坚信追求高效的同时也要加入人性化的关怀,形成正向循环,追求长期的收益。➡️
  635. </Paragraph>
  636. <br />
  637. <Paragraph spacing="extended" copyable>
  638. <span>
  639. Semi Design 是由抖音前端团队与 UED
  640. 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
  641. Web 应用。 ➡️
  642. </span>
  643. </Paragraph>
  644. <Paragraph
  645. spacing="extended"
  646. copyable={{
  647. successTip: 'success'
  648. }}
  649. >测试 renderCopyNode 属性</Paragraph>
  650. <Paragraph
  651. spacing="extended"
  652. copyable={{
  653. icon: <IconSetting style={{ color: 'var(--semi-color-link)' }}/>
  654. }}
  655. >测试 renderCopyNode 属性</Paragraph>
  656. </div>
  657. );
  658. export const CopyableWarning = () => (
  659. <>
  660. <Paragraph
  661. spacing="extended"
  662. copyable
  663. >这里有一个非text节点,控制台<strong>应该</strong>报 warning</Paragraph>
  664. <Paragraph
  665. spacing="extended"
  666. copyable={{
  667. content: '复制结果是我'
  668. }}
  669. >这里有一个非text节点但是设置了copyable的 content(类型为 string),所以控制台对这条<strong>不应该</strong>报 warning</Paragraph>
  670. </>
  671. )
  672. export const ContainerResize = () => (
  673. // from https://github.com/DouyinFE/semi-design/pull/1514
  674. // 用于 E2E 测试中容器尺寸 resize, 动态省略
  675. <>
  676. {/* css 截断 */}
  677. <Typography.Text ellipsis={{ showTooltip: true, rows: 2 }}>
  678. 这是第一个test:有省略的文本,resize到省略消失,再resize回原来的尺寸,没有省略状态
  679. 这是第一个test:有省略的文本,resize到省略消失,再resize回原来的尺寸,没有省略状态
  680. 这是第一个test:有省略的文本,resize到省略消失,再resize回原来的尺寸,没有省略状态
  681. 这是第一个test:有省略的文本,resize到省略消失,再resize回原来的尺寸,没有省略状态
  682. </Typography.Text>
  683. <br />
  684. {/* js 截断 */}
  685. <Typography.Text
  686. ellipsis={{ showTooltip: true, rows: 2, expandable: true }}
  687. >
  688. 这是第二个test:可展开的文本,在折叠状态下,resize到展开消失,再resize回原来的尺寸,变成了展开状态;
  689. 这是第二个test:可展开的文本,在折叠状态下,resize到展开消失,再resize回原来的尺寸,变成了展开状态;
  690. 这是第二个test:可展开的文本,在折叠状态下,resize到展开消失,再resize回原来的尺寸,变成了展开状态;
  691. </Typography.Text>
  692. <br />
  693. </>
  694. );
  695. export const EdgeCases = () => (
  696. <>
  697. <p>Case 1: pos: 'middle', 无content,测试是否触发 TypeError</p>
  698. <Text
  699. ellipsis={{ rows: 3, pos: 'middle', expandable: true, }}
  700. style={{ width: 300 }}
  701. ></Text>
  702. <br />
  703. <p>Case 2: css 截断, 无 content,测试是否触发 TypeError</p>
  704. <Text
  705. ellipsis={{ rows: 1 }}
  706. style={{ width: 300 }}
  707. ></Text>
  708. <br />
  709. <Paragraph
  710. ellipsis={{
  711. pos: 'middle',
  712. rows: 3,
  713. expandable: true,
  714. collapsible: true,
  715. collapseText: '折叠我吧'
  716. }}
  717. style={{ width: 300 }}>
  718. case 3:长度刚好符合预期,不应该省略,不应该显示展开按钮。长度刚好符合预期,不应该省略,不应该显示展开按钮。不应该显示展开的。
  719. </Paragraph>
  720. </>
  721. );
  722. export const showTooltip = () => (
  723. <>
  724. <Text
  725. ellipsis={{ showTooltip: true, rows: 3 }}
  726. style={{ width: 300 }}
  727. > css 截断,本内容超出长度限制,需要截断,因为设置了ellipsis中 showTooltip 为 true,所以通过 hover 可以展示全部内容,鼠标移入触发hover效果下试试
  728. </Text>
  729. <br />
  730. <Text
  731. ellipsis={{ showTooltip: true, rows: 3, pos: 'middle' }}
  732. style={{ width: 300 }}
  733. > pos 为 middle,无 expanded /suffix 相关设置,js 截断,本内容超出长度限制,需要截断,因为设置了ellipsis中 showTooltip 为 true,所以通过 hover 可以展示全部内容,鼠标移入触发hover效果下试试
  734. </Text>
  735. </>
  736. );
  737. export const childrenTypeNumber = () => {
  738. // 如果 Text 的 children 为 number 类型,组件不应该出错
  739. const { Text } = Typography;
  740. const name = 123123;
  741. return (
  742. <div>
  743. <Text
  744. ellipsis={{ showTooltip: true, pos: 'middle'}}
  745. style={{ maxWidth: 120, width: '100%'}}>{name}
  746. </Text>
  747. </div>
  748. );
  749. }
  750. export const TextInline = () => {
  751. const { Text } = Typography;
  752. return (
  753. <div>
  754. <div style={{ width: 500 }}>
  755. <Text
  756. ellipsis={{ showTooltip: true }}
  757. style={{ width: 300 }}
  758. >
  759. 这是一个 Text,使用 css 截断,保持 Text 的 inline 属性,所以这行应该可以其他元素出现在一行
  760. </Text>
  761. <span style={{ fontSize: 12, lineHeight: '16px', backgroundColor: 'green' }}>这行</span>
  762. </div>
  763. <br />
  764. <div style={{ width: 500 }}>
  765. <Text
  766. ellipsis={{ showTooltip: true, rows: 2, pos: 'middle' }}
  767. style={{ width: 300 }}
  768. >
  769. 这是一个 Text,使用 js 截断,保持 Text 的 inline 属性,所以这行应该可以其他元素出现在一行
  770. </Text>
  771. <span style={{ fontSize: 12, lineHeight: '16px', backgroundColor: 'green' }}>这行</span>
  772. </div>
  773. </div>
  774. )
  775. }
  776. export const whiteSpaceNoWrap = () => (
  777. <div style={{ whiteSpace: 'nowrap' }}>
  778. <Typography.Text
  779. copyable
  780. style={{ width: 100 }}
  781. ellipsis={{
  782. showTooltip: true,
  783. }}
  784. >
  785. 需要截断这段文字,[此处不可见]
  786. </Typography.Text>
  787. </div>
  788. )
  789. export const TextNoWarning = () => {
  790. const { Text } = Typography;
  791. return (
  792. <div>
  793. <div style={{ width: 500 }}>
  794. <Text
  795. style={{ width: 300 }}
  796. >
  797. <div>这是一个非 string 类型的 Text 的 children, 无省略功能,控制台不应该出现和省略相关的 warning</div>
  798. </Text>
  799. </div>
  800. </div>
  801. )
  802. }
  803. export const JsEllipsisNoTooltip = () => (
  804. <Title
  805. heading={5}
  806. ellipsis={{ showTooltip: true, suffix: ' ' }}
  807. // wordBreak 设置在 Title 的style里
  808. style={{ width: 250, wordBreak: 'break-all' }}
  809. >
  810. data_tns
  811. </Title>
  812. )
  813. export const HugeDataDemo = () => {
  814. return <HugeData/>
  815. }
  816. export const CustomTooltip = () => {
  817. const customRenderTooltip = useCallback((content, children) => {
  818. return <Tooltip content={content} style={{ backgroundColor: 'var(--semi-color-primary)' }}>{children}</Tooltip>
  819. }, []);
  820. return <div>
  821. <Title
  822. heading={5}
  823. ellipsis={{
  824. showTooltip: {
  825. renderTooltip: customRenderTooltip
  826. }
  827. }}
  828. style={{ width: 250 }}
  829. >
  830. 这是一个自定义 tooltip 的省略文本,背景色是蓝色
  831. </Title>
  832. </div>
  833. }
  834. export const GlobalEllipsisPopoverCls = () => (
  835. <Title
  836. heading={5}
  837. ellipsis={{
  838. showTooltip: {
  839. type: 'popover',
  840. opts: {
  841. className: 'testPopoverCls'
  842. }
  843. },
  844. }}
  845. // wordBreak 设置在 Title 的style里
  846. style={{ width: 250, wordBreak: 'break-all' }}
  847. >
  848. 测试 showTooltip 中的 type 为 popover 时,传入的类名称正确
  849. </Title>
  850. )