UNPKG

@procraft/widget-order

Version:

Order widget for landing

106 lines (92 loc) 2.41 kB
import moment, { Moment } from 'moment' type DateTime = Moment | Date | string export const roundByStep = (v: number, s = 1.0) => { const inv = 1.0 / s return Math.round(v * inv) / inv } export const roundStd = (num: number, decimalPlaces: number) => { const p = Math.pow(10, decimalPlaces) const e = Number.EPSILON * num * p return Math.round(num * p + e) / p } export const getCurrencyPrefix = (currency: string) => { switch (currency) { case 'USD': return '$' default: return '' } } export const getCurrencySuffix = (currency: string) => { switch (currency) { case 'RUB': return ' ₽' case 'USD': return '' case 'KZT': return ' ₸' case 'UAH': return ' ₴' default: return `\u202F${currency}` } } export type DateOptionalTimeReplacement = '00:00' | '23:59' export function isNowYear(dateMoment: DateTime | null): boolean { if (dateMoment) { dateMoment = moment(dateMoment) return moment().year() === dateMoment.year() } else { return false } } /** * Returns date in format like "September 11" or "11 Сентября" */ export function formatDate(dateMoment: DateTime | null): string { if (dateMoment) { dateMoment = moment(dateMoment) if (!isNowYear(dateMoment)) { return dateMoment.format('D MMMM YYYY') } else { return dateMoment.format('D MMMM') } } else { return '' } } export function hasTime( dateMoment: Moment, optionalTimeReplacement: DateOptionalTimeReplacement = '00:00' ): boolean { if (optionalTimeReplacement == '23:59') { return !(dateMoment.hours() === 23 && dateMoment.minutes() === 59) } else { return dateMoment.hours() * 60 + dateMoment.minutes() > 0 } } export function formatTimeHoursMinutes(dateMoment: DateTime | null): string { if (dateMoment) { return moment(dateMoment).format('HH:mm') } else { return '' } } export function formatDateOptionalTime( dateMoment: DateTime | null, separator = ' в ', optionalTimeReplacement: DateOptionalTimeReplacement = '00:00' ): string { if (dateMoment) { const timestamp = moment(dateMoment) if (hasTime(timestamp, optionalTimeReplacement)) { return `${formatDate(timestamp)}${separator}${formatTimeHoursMinutes( timestamp )}` } else { return formatDate(timestamp) } } else { return '' } }