mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-30 18:47:51 +00:00 
			
		
		
		
	 4da92bbc12
			
		
	
	4da92bbc12
	
	
	
		
			
			# Pull Request Template ## Description This PR includes updating the PDF text color from Ruby to Slate for improved readability ## How Has This Been Tested? ### Screenshots **Before** | Dark Mode | Light Mode | | ------------- | ------------- | | <img width="258" alt="image" src="https://github.com/user-attachments/assets/6124c69d-8bf1-47f3-9a06-eeb21dbedbb2" /> | <img width="258" alt="image" src="https://github.com/user-attachments/assets/d0f2b90b-6796-45ae-a02a-05c07246d25c" /> | **After** | Dark Mode | Light Mode | | ------------- | ------------- | | <img width="258" alt="image" src="https://github.com/user-attachments/assets/c0285062-83b6-49d5-bdb0-2aebf977cf74" /> | <img width="258" alt="image" src="https://github.com/user-attachments/assets/6b153d45-ee8d-42ac-a863-0fa8b294a21b" /> | ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules
		
			
				
	
	
		
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			81 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <script setup>
 | |
| import { computed } from 'vue';
 | |
| import { useI18n } from 'vue-i18n';
 | |
| import { getFileInfo } from '@chatwoot/utils';
 | |
| 
 | |
| import FileIcon from 'next/icon/FileIcon.vue';
 | |
| import Icon from 'next/icon/Icon.vue';
 | |
| 
 | |
| const { attachment } = defineProps({
 | |
|   attachment: {
 | |
|     type: Object,
 | |
|     required: true,
 | |
|   },
 | |
| });
 | |
| 
 | |
| const { t } = useI18n();
 | |
| 
 | |
| const fileDetails = computed(() => {
 | |
|   return getFileInfo(attachment?.dataUrl || '');
 | |
| });
 | |
| 
 | |
| const displayFileName = computed(() => {
 | |
|   const { base, type } = fileDetails.value;
 | |
|   const truncatedName = (str, maxLength, hasExt) =>
 | |
|     str.length > maxLength
 | |
|       ? `${str.substring(0, maxLength).trimEnd()}${hasExt ? '..' : '...'}`
 | |
|       : str;
 | |
| 
 | |
|   return type
 | |
|     ? `${truncatedName(base, 12, true)}.${type}`
 | |
|     : truncatedName(base, 14, false);
 | |
| });
 | |
| 
 | |
| const textColorClass = computed(() => {
 | |
|   const colorMap = {
 | |
|     '7z': 'dark:text-[#EDEEF0] text-[#2F265F]',
 | |
|     csv: 'text-amber-12',
 | |
|     doc: 'dark:text-[#D6E1FF] text-[#1F2D5C]', // indigo-12
 | |
|     docx: 'dark:text-[#D6E1FF] text-[#1F2D5C]', // indigo-12
 | |
|     json: 'text-n-slate-12',
 | |
|     odt: 'dark:text-[#D6E1FF] text-[#1F2D5C]', // indigo-12
 | |
|     pdf: 'text-n-slate-12',
 | |
|     ppt: 'dark:text-[#FFE0C2] text-[#582D1D]',
 | |
|     pptx: 'dark:text-[#FFE0C2] text-[#582D1D]',
 | |
|     rar: 'dark:text-[#EDEEF0] text-[#2F265F]',
 | |
|     rtf: 'dark:text-[#D6E1FF] text-[#1F2D5C]', // indigo-12
 | |
|     tar: 'dark:text-[#EDEEF0] text-[#2F265F]',
 | |
|     txt: 'text-n-slate-12',
 | |
|     xls: 'text-n-teal-12',
 | |
|     xlsx: 'text-n-teal-12',
 | |
|     zip: 'dark:text-[#EDEEF0] text-[#2F265F]',
 | |
|   };
 | |
| 
 | |
|   return colorMap[fileDetails.value.type] || 'text-n-slate-12';
 | |
| });
 | |
| </script>
 | |
| 
 | |
| <template>
 | |
|   <div
 | |
|     class="h-9 bg-n-alpha-white gap-2 overflow-hidden items-center flex px-2 rounded-lg border border-n-container"
 | |
|   >
 | |
|     <FileIcon class="flex-shrink-0" :file-type="fileDetails.type" />
 | |
|     <span
 | |
|       class="flex-1 min-w-0 text-sm max-w-36"
 | |
|       :title="fileDetails.name"
 | |
|       :class="textColorClass"
 | |
|     >
 | |
|       {{ displayFileName }}
 | |
|     </span>
 | |
|     <a
 | |
|       v-tooltip="t('CONVERSATION.DOWNLOAD')"
 | |
|       class="flex-shrink-0 size-9 grid place-content-center cursor-pointer text-n-slate-11 hover:text-n-slate-12 transition-colors"
 | |
|       :href="attachment.dataUrl"
 | |
|       rel="noreferrer noopener nofollow"
 | |
|       target="_blank"
 | |
|     >
 | |
|       <Icon icon="i-lucide-download" />
 | |
|     </a>
 | |
|   </div>
 | |
| </template>
 |