@rkosafo/cai.components
Version:
This package is under development and not ready for public use.
143 lines (142 loc) • 4.2 kB
JavaScript
import { browser } from '$app/environment';
import clsx, {} from 'clsx';
import { quintOut } from 'svelte/easing';
import { crossfade } from 'svelte/transition';
import { twMerge } from 'tailwind-merge';
export { default as Popper } from './Popper.svelte';
export * from './closeButton/index.js';
export { trapFocus } from './action.js';
export * from './tableHeightUtils.js';
import dayjs from 'dayjs';
export function cn(...inputs) {
return twMerge(clsx(inputs));
}
export function saveToLocalStorage(key, data) {
if (browser) {
window.localStorage.setItem(key, JSON.stringify(data));
}
}
export function loadFromLocalStorage(key) {
if (browser) {
const data = window.localStorage.getItem(key);
if (data) {
try {
return JSON.parse(data);
}
catch (e) {
console.log(`Could not parse: ${data}`);
}
}
else {
return undefined;
}
}
}
export function extractQueryParam(queryString, index = 'q') {
const urlParams = new URLSearchParams(queryString);
const warehouse = urlParams.get(index);
return warehouse ?? '';
}
export const [send, receive] = crossfade({
duration: (d) => Math.sqrt(d * 200),
fallback(node, params) {
const style = getComputedStyle(node);
const transform = style.transform === 'none' ? '' : style.transform;
return {
duration: 600,
easing: quintOut,
css: (t) => `
transform: ${transform} translateX(${(1 - t) * 100}%);
opacity: ${t}
`
};
}
});
export function getInitials(val) {
if (!val)
return '';
return val
.split(' ')
.filter((x) => x.length > 1)
.map((x) => x[0])
.join('');
}
export function getInitials2(x) {
if (!x)
return '';
var xs = x.trim().split(' ');
if (xs.length === 1)
return x[0].toUpperCase();
if (xs.length === 0)
return 'X';
return `${xs[0][0]}${xs[xs.length - 1][0]}`.toUpperCase();
}
export function findTicketCategoryParents(selectedItem, data) {
function findParentsRecursive(category, categories) {
for (const item of categories) {
if (item === category) {
return [item.name];
}
else if (item.items) {
const parents = findParentsRecursive(category, item.items);
if (parents) {
return [item.name, ...parents];
}
}
}
return null;
}
const parentStack = findParentsRecursive(selectedItem, data);
return parentStack;
}
export function formatTicketDate(x) {
let today = dayjs();
let date = dayjs(x);
if (today.isSame(date, 'day')) {
return date.format('hh:mm a');
}
else if (date.add(7, 'day').isSame(today)) {
return date.format('ddd');
}
else {
return date.format('ddd DD,MM,YYYY');
}
}
export function formatTicketHeader(x) {
let today = dayjs();
let date = dayjs(x);
// const yesterday = today.subtract(1, 'day');
const difference = today.diff(date, 'day');
const isDateInCurrentWeek = today.startOf('week').isSame(date.startOf('week'), 'day');
// console.log(difference);
if (today.isSame(date, 'day')) {
return 'Today';
}
else if (difference === 0) {
return 'Yesterday';
}
else if (isDateInCurrentWeek) {
return date.format('dddd');
}
else {
return date.format('ddd DD,MMM,YYYY');
}
}
export function isImage(path) {
return (path?.toLowerCase().includes('jpeg') ||
path?.toLowerCase().includes('png') ||
path?.toLowerCase().includes('webq') ||
path?.toLowerCase().includes('jpg'));
}
export function isPdf(path) {
return path.toLowerCase().endsWith('.pdf');
}
export function isWord(path) {
return path.toLowerCase().includes('docs');
}
export function isPPT(path) {
return path.toLowerCase().includes('pptx');
}
export function isExcel(path) {
return path?.toLowerCase().includes('csv') || path?.toLowerCase().includes('xlsx');
}