mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-14 15:11:52 +00:00
* feat: initial SPA setup for banking * wip: bring over new banking module * feat: added Espresso design tokens * feat: button styles * fix: add all ink colors * wip: espresso design system changes * feat: button and badge espresso components * fix: button styling for reconcile * feat: Espresso progress bar * feat: Espresso toggle switch * feat: Espresso tabs design * fix: vertical tab support * fix: button sizing across modals * feat: Espresso style table layout * feat: Espresso tooltip * feat: Espresso elevations and checkbox * feat: Dialog with Espresso styles * feat: Espresso textarea * fix: input styles * fix: colors on bank picker * fix: breadcrumb styling * fix: bank picker styling * feat: create doctypes and fields for bank reconciliation * feat: APIs for banking * fix: use date format parser * fix: font styling to match Espresso * wip: settings modal * feat: settings dialog component * fix: icons and invalid requests * feat: preferences tab * fix: adjust icon stroke width to 1.5 * feat: rule configuration in settings * fix: remove sheet component * feat: alert and error banner component * feat: dropdown in Espresso * feat: popover and select in Espresso * fix: cleanup more styles * fix: match size of link fields * feat: command styling * fix: remove unused style tokens * fix: styles for global date picker dropdown * fix: styles for match and reconcile * feat: table Espresso component * feat: remove all other design tokens * fix: remove unused tokens * fix: form elements * fix: remove unused styles and fix filters in bank transaction list * feat: fetch bank rec doctypes for filtering * fix: record payment modal * feat: support for dark mode switching * fix: move bank logos to public folder * feat: add support for RTL * feat: support for RTL * chore: send layout direction in dev boot * fix: make checkbox work in RTL * feat: dark mode support * fix: dark mode style * feat: bank logos in dark mode * feat: dark mode bank logos * chore: use dark mode bank logos everywhere * chore: move rule evaluation to controller * chore: add tests for bank transaction rules * fix: move deps to fix actions errors * fix: move tw-animate-css to deps * fix: remove shadcn * fix: do not open modal if no transactions selected * fix: add translation strings * feat: add banner on existing bank reconciliation tool * feat: bank statement import * fix: translations and layout directions * fix: validation for transaction matching rule * fix: styles * fix: show conflicting transactions in alert * fix: show help text for new banking module forms * feat: show total debits and credits * fix: dark mode colors in automatic config * feat: add keyboard shortcuts help * feat: added keyboard shortcut for settings * fix: decrease size of progress bar * chore: bump packages * feat: add tests for statement import * fix: settings dialog * fix: show banner on small screens * fix: show banner when no bank account set
68 lines
1.9 KiB
TypeScript
68 lines
1.9 KiB
TypeScript
/**
|
|
* Function to return extension of a file
|
|
* @param filename name of the file with extension
|
|
* @returns extension
|
|
*/
|
|
export const getFileExtension = (filename: string) => {
|
|
|
|
const fileNameWithoutQuery = filename?.split('?')[0]
|
|
|
|
const extension = fileNameWithoutQuery?.split('.').pop()?.toLocaleLowerCase() ?? ''
|
|
return extension;
|
|
}
|
|
|
|
/**
|
|
* Function to format bytes to human readable format
|
|
* @param bytes size in bytes
|
|
* @param decimals number of decimal places
|
|
* @returns string of human readable size
|
|
*/
|
|
export const formatBytes = (bytes: number, decimals = 2) => {
|
|
|
|
if (bytes === 0) return '0 Bytes'
|
|
|
|
const k = 1024
|
|
const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
|
|
|
|
const i = Math.floor(Math.log(bytes) / Math.log(k))
|
|
|
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(decimals)) + ' ' + sizes[i]
|
|
}
|
|
|
|
|
|
export const imageExt = ["jpeg", "jpg", "png"]
|
|
|
|
export const excelExt = ['csv', 'xls', 'xlsx']
|
|
|
|
export const pptExt = ['ppt', 'pptx']
|
|
|
|
export const wordExt = ['doc', 'docx']
|
|
|
|
export const videoExt = ['mp4', 'mkv', 'webm', 'avi', 'mov']
|
|
|
|
export const audioExt = ['mp3', 'wav', 'ogg', 'flac']
|
|
|
|
export const getFileType = (ext: string) => {
|
|
switch (ext) {
|
|
case 'pdf': return 'pdf'
|
|
case 'doc': return 'word'
|
|
case 'docx': return 'word'
|
|
case 'xls': return 'excel'
|
|
case 'xlsx': return 'excel'
|
|
case 'ppt': return 'powerpoint'
|
|
case 'pptx': return 'powerpoint'
|
|
case 'mp3': return 'audio'
|
|
case 'wav': return 'audio'
|
|
case 'ogg': return 'audio'
|
|
case 'flac': return 'audio'
|
|
case 'mp4': return 'video'
|
|
case 'mkv': return 'video'
|
|
case 'webm': return 'video'
|
|
case 'avi': return 'video'
|
|
case 'mov': return 'video'
|
|
case 'jpeg': return 'image'
|
|
case 'jpg': return 'image'
|
|
case 'png': return 'image'
|
|
default: return 'file'
|
|
}
|
|
} |