PAV 정부 과제 프로젝트 - front
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

79 lines
3.1 KiB

// ** Checks if an object is empty (returns boolean)
export const isObjEmpty = obj => Object.keys(obj).length === 0
// ** Returns K format from a number
export const kFormatter = num => (num > 999 ? `${(num / 1000).toFixed(1)}k` : num)
// ** Converts HTML to string
export const htmlToString = html => html.replace(/<\/?[^>]+(>|$)/g, '')
// ** Checks if the passed date is today
const isToday = date => {
const today = new Date()
return (
/* eslint-disable operator-linebreak */
date.getDate() === today.getDate() &&
date.getMonth() === today.getMonth() &&
date.getFullYear() === today.getFullYear()
/* eslint-enable */
)
}
/**
** Format and return date in Humanize format
** Intl docs: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/format
** Intl Constructor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat
* @param {String} value date to format
* @param {Object} formatting Intl object to format with
*/
export const formatDate = (value, formatting = { month: 'short', day: 'numeric', year: 'numeric' }) => {
if (!value) return value
return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))
}
// ** Returns short month of passed date
export const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {
const date = new Date(value)
let formatting = { month: 'short', day: 'numeric' }
if (toTimeForCurrentDay && isToday(date)) {
formatting = { hour: 'numeric', minute: 'numeric' }
}
return new Intl.DateTimeFormat('en-US', formatting).format(new Date(value))
}
/**
** Return if user is logged in
** This is completely up to you and how you want to store the token in your frontend application
* ? e.g. If you are using cookies to store the application please update this function
*/
export const isUserLoggedIn = () => localStorage.getItem('userData')
export const getUserData = () => JSON.parse(localStorage.getItem('userData'))
/**
** This function is used for demo purpose route navigation
** In real app you won't need this function because your app will navigate to same route for each users regardless of ability
** Please note role field is just for showing purpose it's not used by anything in frontend
** We are checking role just for ease
* ? NOTE: If you have different pages to navigate based on user ability then this function can be useful. However, you need to update it.
* @param {String} userRole Role of user
*/
export const getHomeRouteForLoggedInUser = userRole => {
if (userRole === 'admin') return '/'
if (userRole === 'client') return '/access-control'
return '/login'
}
// ** React Select Theme Colors
export const selectThemeColors = theme => ({
...theme,
colors: {
...theme.colors,
primary25: '#7367f01a', // for option hover bg-color
primary: '#7367f0', // for selected option bg-color
neutral10: '#7367f0', // for tags bg-color
neutral20: '#ededed', // for input border-color
neutral30: '#ededed' // for input hover border-color
}
})