avatar.stories.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import React from 'react';
  2. import Avatar from '../index';
  3. import Popover from '../../popover/index';
  4. import AvatarGroup from '../avatarGroup';
  5. export default {
  6. title: 'Avatar',
  7. }
  8. export const Basic = () => (
  9. <div>
  10. <div>
  11. <Avatar>U</Avatar>
  12. <Avatar size="large">U</Avatar>
  13. <Avatar size="extra-small">U</Avatar>
  14. <Avatar size="small">U</Avatar>
  15. <Avatar size="default">U</Avatar>
  16. <Avatar size="extra-large">U</Avatar>
  17. </div>
  18. <div>
  19. <Avatar shape="square">U</Avatar>
  20. <Avatar shape="square" size="large">
  21. U
  22. </Avatar>
  23. <Avatar shape="square" size="extra-small">
  24. U
  25. </Avatar>
  26. <Avatar shape="square" size="small">
  27. U
  28. </Avatar>
  29. <Avatar shape="square" size="default">
  30. U
  31. </Avatar>
  32. <Avatar shape="square" size="extra-large">
  33. U
  34. </Avatar>
  35. </div>
  36. </div>
  37. );
  38. export const CustomAvatar = () => (
  39. <div>
  40. <Avatar>U</Avatar>
  41. <Avatar color="red">U</Avatar>
  42. <Avatar color="red" size="default">
  43. DF
  44. </Avatar>
  45. <Avatar src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />
  46. <Avatar size="default" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />
  47. <Avatar size="small" src="https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png" />
  48. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>U</Avatar>
  49. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  50. </div>
  51. );
  52. export const GroupSize = () => (
  53. <div>
  54. <p>medium</p>
  55. <AvatarGroup>
  56. <Avatar color="red">LL</Avatar>
  57. <Avatar>CX</Avatar>
  58. <Avatar size="default">CX</Avatar>
  59. <Avatar color="amber">RM</Avatar>
  60. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  61. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  62. </AvatarGroup>
  63. <p>default</p>
  64. <AvatarGroup size="default">
  65. <Avatar color="red">LL</Avatar>
  66. <Avatar>CX</Avatar>
  67. <Avatar size="default">CX</Avatar>
  68. <Avatar color="amber">RM</Avatar>
  69. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  70. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  71. </AvatarGroup>
  72. <p>small</p>
  73. <AvatarGroup size="small">
  74. <Avatar color="red">LL</Avatar>
  75. <Avatar>CX</Avatar>
  76. <Avatar size="default">CX</Avatar>
  77. <Avatar color="amber">RM</Avatar>
  78. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  79. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  80. </AvatarGroup>
  81. </div>
  82. );
  83. export const OverlapFromDemo = () => (
  84. <div>
  85. <div>overlapFrom=start</div>
  86. <AvatarGroup overlapFrom={'start'}>
  87. <Avatar color="red">LL</Avatar>
  88. <Avatar>CX</Avatar>
  89. <Avatar color="amber">RM</Avatar>
  90. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  91. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  92. </AvatarGroup>
  93. <br />
  94. <br />
  95. <div>overlapFrom=end</div>
  96. <AvatarGroup overlapFrom={'end'}>
  97. <Avatar color="red">LL</Avatar>
  98. <Avatar>CX</Avatar>
  99. <Avatar color="amber">RM</Avatar>
  100. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  101. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  102. </AvatarGroup>
  103. <br />
  104. <br />
  105. </div>
  106. );
  107. export const MaxCountDemo = () => (
  108. <div>
  109. <div>maxCount=3</div>
  110. <AvatarGroup maxCount={3}>
  111. <Avatar color="red">LL</Avatar>
  112. <Avatar>CX</Avatar>
  113. <Avatar color="amber">RM</Avatar>
  114. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  115. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  116. </AvatarGroup>
  117. <br />
  118. <br />
  119. </div>
  120. );
  121. const renderMore = (restNumber, restAvatars) => {
  122. const content = restAvatars.map((avatar, index) => {
  123. return (
  124. <div style={{ paddingBottom: '12px' }}>
  125. {React.cloneElement(avatar, { size: 'extra-small' })}
  126. <span style={{ marginLeft: 8, fontSize: 14 }}>这是段文字描述</span>
  127. </div>
  128. );
  129. });
  130. return (
  131. <Popover
  132. content={content}
  133. autoAdjustOverflow={false}
  134. position={'bottomRight'}
  135. style={{ padding: '12px 8px', paddingBottom: 0 }}
  136. >
  137. <Avatar>{`+${restNumber}`}</Avatar>
  138. </Popover>
  139. );
  140. };
  141. export const RenderMoreDemo = () => (
  142. <div>
  143. <AvatarGroup maxCount={3} renderMore={renderMore}>
  144. <Avatar color="red">LL</Avatar>
  145. <Avatar>CX</Avatar>
  146. <Avatar color="amber">RM</Avatar>
  147. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  148. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  149. </AvatarGroup>
  150. <br />
  151. <br />
  152. </div>
  153. );
  154. export const ExtraExtraSmallOverlap = () => (
  155. <div>
  156. <AvatarGroup size="extra-extra-small" overlapFrom={'start'}>
  157. <Avatar color="red">LL</Avatar>
  158. <Avatar>CX</Avatar>
  159. <Avatar color="amber">RM</Avatar>
  160. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  161. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  162. </AvatarGroup>
  163. <br />
  164. <br />
  165. <AvatarGroup size="extra-extra-small" overlapFrom={'end'}>
  166. <Avatar color="red">LL</Avatar>
  167. <Avatar>CX</Avatar>
  168. <Avatar color="amber">RM</Avatar>
  169. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  170. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  171. </AvatarGroup>
  172. <br />
  173. <br />
  174. <AvatarGroup size="extra-extra-small" maxCount={3}>
  175. <Avatar color="red">LL</Avatar>
  176. <Avatar>CX</Avatar>
  177. <Avatar color="amber">RM</Avatar>
  178. <Avatar style={{ color: '#f56a00', backgroundColor: '#fde3cf' }}>ZL</Avatar>
  179. <Avatar style={{ backgroundColor: '#87d068' }}>YZ</Avatar>
  180. </AvatarGroup>
  181. </div>
  182. );