UNPKG

@rkosafo/cai.components

Version:

This package is under development and not ready for public use.

136 lines (135 loc) 4.82 kB
import type { CrudResult, PaginatedResult, TableFilter } from '../../index.js'; import type { Snippet } from 'svelte'; export interface MailPageInfo { currentPage: number; pageSize: number; totalCount: number; hasNextPage: boolean; hasPreviousPage: boolean; } export interface MailPaginatorProps extends MailPageInfo { onNextClick: () => void; onPreviousClick: () => void; } export type MailFavariteToggleType = 'favorite' | 'unfavorite'; export type MailMarkReadToggleType = 'read' | 'unread'; export interface MailToolBarProps { onBackClick: () => void; onRefreshClick: () => void; onComposeClick?: () => void; selectedMails?: number[]; showComposeButton?: boolean; showBackButton?: boolean; pageInfo?: MailPageInfo; showPagination?: boolean; showSearch?: boolean; customFilterComponent?: Snippet; onsearchChange?: (searchTerm: string) => void; onNextPageClick?: () => void; onPrevPageClick?: () => void; showArchiveButton?: boolean; onArchiveClick?: () => void; showDeleteButton?: boolean; onDeleteClick?: () => void; showMarkReadButton?: boolean; onToggleMarkReadClick?: (val: MailMarkReadToggleType) => void; showFavoriteButton?: boolean; isReadActive?: boolean; onToggleFavoriteClick?: (val: MailFavariteToggleType) => void; showMarkAsSpamButton?: boolean; onMarkAsSpamClick?: () => void; isFavoriteActive?: boolean; } export interface MailMenu { icon: string; title: string; count: number; path: string; } export interface MailSidebar { menus: MailMenu[]; setActiveMenu?: (val: MailMenu) => boolean; onClick?: (val: MailMenu) => void; } export interface MailingModuleProps { showSidePanel?: boolean; showPagination?: boolean; showComposeButton?: boolean; showSearch?: boolean; customFilterComponent?: Snippet; showArchiveButton?: boolean; showDeleteButton?: boolean; showMarkReadButton?: boolean; showFavoriteButton?: boolean; showMarkAsSpamButton?: boolean; showMarkAsImportantButton?: boolean; readInbox: (skip?: number, take?: number, filter?: TableFilter<any>) => Promise<PaginatedResult<MailingMessage>> | PaginatedResult<MailingMessage> | null; readOutbox?: (skip?: number, take?: number, filter?: TableFilter<any>) => Promise<PaginatedResult<MailingMessage>> | PaginatedResult<MailingMessage> | null; toggleArchieve?: (id: string | number) => Promise<CrudResult<any>> | CrudResult<any> | null; toggleSpam?: (id: string | number) => Promise<CrudResult<any>> | CrudResult<any> | null; deleteEntry?: (id: string | number) => Promise<CrudResult<any>> | CrudResult<any> | null; toggleAsRead?: (id: string | number, type?: MailMarkReadToggleType) => Promise<CrudResult<any>> | CrudResult<any> | null; toggleFavourite?: (id: string | number) => Promise<CrudResult<any>> | CrudResult<any> | null; toggelImportant?: (id: string | number) => Promise<CrudResult<any>> | CrudResult<any> | null; readAMessage: (id: string | number) => Promise<CrudResult<any>> | CrudResult<any> | null; showReplies?: boolean; } export interface MailingMessageCardChecked { id: number; checked: boolean; } export interface MailingMessage { id: number; sender: string; subject: string; date: Date; message: string; notes?: string; isStared: boolean; isImportant: boolean; isRead: boolean; isChecked?: boolean; isSent?: boolean; isHtml?: boolean; refEntityId?: number; receiver: string; user?: { id: number; firstName: string; surname: string; staffNumber?: string; }; } export interface MailingMessageCardProps extends MailingMessage { onItemSelected?: (id: number) => void; onItemChecked?: (val: MailingMessageCardChecked) => void; toggelImportant?: (id: number) => void; toggleFavorited?: (id: number) => void; showMarkAsImportant?: boolean; showMarkAsFavorite?: boolean; showCheckbox?: boolean; } export type MailingActiveBox = 'inbox' | 'outbox'; export interface MailingMessageViewerProps { readMessage: (id: number, type?: MailingActiveBox) => Promise<CrudResult<MailingMessage>> | CrudResult<MailingMessage> | null; recordId: number; updatePageInfo?: (val: MailPageInfo) => void; showReplies?: boolean; showHeader?: boolean; } export interface MailingHeaderData { subject: string; user: { firstName: string; surname: string; staffNumber: string; initials: string; }; to: string; } export type MailingReplyType = 'reply' | 'reply-all' | 'forward'; export interface MailingHeaderProps { data: MailingHeaderData; replyType: MailingReplyType | undefined; showReplies?: boolean; }