mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-30 10:42:38 +00:00 
			
		
		
		
	feat: Add component for grouped thumbnails (#5796)
This commit is contained in:
		 Nithin David Thomas
					Nithin David Thomas
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							4bb5e812ba
						
					
				
				
					commit
					dc3ee3464b
				
			| @@ -0,0 +1,75 @@ | ||||
| <template> | ||||
|   <div class="overlapping-thumbnails"> | ||||
|     <thumbnail | ||||
|       v-for="user in usersList" | ||||
|       :key="user.id" | ||||
|       :src="user.thumbnail" | ||||
|       :username="user.name" | ||||
|       :has-border="true" | ||||
|       :size="size" | ||||
|       class="overlapping-thumbnail" | ||||
|     /> | ||||
|     <span v-if="showMoreThumbnailsCount" class="thumbnail-more-text"> | ||||
|       {{ moreThumbnailsText }} | ||||
|     </span> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| import Thumbnail from './Thumbnail'; | ||||
|  | ||||
| export default { | ||||
|   components: { | ||||
|     Thumbnail, | ||||
|   }, | ||||
|   props: { | ||||
|     usersList: { | ||||
|       type: Array, | ||||
|       default: () => [], | ||||
|     }, | ||||
|     size: { | ||||
|       type: String, | ||||
|       default: '24px', | ||||
|     }, | ||||
|     showMoreThumbnailsCount: { | ||||
|       type: Boolean, | ||||
|       default: false, | ||||
|     }, | ||||
|     moreThumbnailsText: { | ||||
|       type: String, | ||||
|       default: '', | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
|  | ||||
| <style lang="scss" scoped> | ||||
| .overlapping-thumbnails { | ||||
|   display: flex; | ||||
| } | ||||
|  | ||||
| .overlapping-thumbnail { | ||||
|   position: relative; | ||||
|   box-shadow: var(--shadow-small); | ||||
|  | ||||
|   &:not(:first-child) { | ||||
|     margin-left: var(--space-minus-small); | ||||
|   } | ||||
| } | ||||
|  | ||||
| .thumbnail-more-text { | ||||
|   display: inline-flex; | ||||
|   align-items: center; | ||||
|   position: relative; | ||||
|  | ||||
|   margin-left: var(--space-minus-small); | ||||
|   padding: 0 var(--space-small); | ||||
|   box-shadow: var(--shadow-small); | ||||
|   background: var(--color-background); | ||||
|   border-radius: var(--space-giga); | ||||
|   border: 1px solid var(--white); | ||||
|  | ||||
|   color: var(--s-600); | ||||
|   font-size: var(--font-size-mini); | ||||
|   font-weight: var(--font-weight-medium); | ||||
| } | ||||
| </style> | ||||
| @@ -0,0 +1,69 @@ | ||||
| import ThumbnailGroup from '../ThumbnailGroup.vue'; | ||||
|  | ||||
| export default { | ||||
|   title: 'Components/ThumbnailGroup', | ||||
|   component: ThumbnailGroup, | ||||
|   argTypes: { | ||||
|     usersList: { | ||||
|       defaultValue: [ | ||||
|         { | ||||
|           name: 'John', | ||||
|           id: 1, | ||||
|           thumbnail: '', | ||||
|         }, | ||||
|         { | ||||
|           name: 'John', | ||||
|           id: 2, | ||||
|           thumbnail: '', | ||||
|         }, | ||||
|         { | ||||
|           name: 'John', | ||||
|           id: 3, | ||||
|           thumbnail: '', | ||||
|         }, | ||||
|         { | ||||
|           name: 'John', | ||||
|           id: 4, | ||||
|           thumbnail: '', | ||||
|         }, | ||||
|         { | ||||
|           name: 'John', | ||||
|           id: 5, | ||||
|           thumbnail: '', | ||||
|         }, | ||||
|         { | ||||
|           name: 'John', | ||||
|           id: 6, | ||||
|           thumbnail: '', | ||||
|         }, | ||||
|       ], | ||||
|       control: { | ||||
|         type: 'object', | ||||
|       }, | ||||
|     }, | ||||
|     size: { | ||||
|       control: { | ||||
|         type: 'text', | ||||
|       }, | ||||
|     }, | ||||
|     moreThumbnailsText: { | ||||
|       control: { | ||||
|         type: 'text', | ||||
|         default: '2 more', | ||||
|       }, | ||||
|     }, | ||||
|     showMoreThumbnailsCount: { | ||||
|       control: { | ||||
|         type: 'boolean', | ||||
|       }, | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
|  | ||||
| const Template = (args, { argTypes }) => ({ | ||||
|   props: Object.keys(argTypes), | ||||
|   components: { ThumbnailGroup }, | ||||
|   template: '<ThumbnailGroup v-bind="$props"/>', | ||||
| }); | ||||
|  | ||||
| export const Primary = Template.bind({}); | ||||
		Reference in New Issue
	
	Block a user