@trycourier/courier-ui-inbox 1.0.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ import { CourierInboxMenuOption } from './courier-inbox-option-menu';
2
+ import { CourierInboxFeedType } from '../types/feed-type';
3
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
4
+ export declare class CourierInboxHeaderTitle extends HTMLElement {
5
+ private _themeSubscription;
6
+ private _option;
7
+ private _feedType?;
8
+ private _titleElement;
9
+ private _iconElement;
10
+ private _unreadBadge;
11
+ private _container;
12
+ private _style;
13
+ constructor(themeManager: CourierInboxThemeManager, option: CourierInboxMenuOption);
14
+ private getStyles;
15
+ private refreshTheme;
16
+ updateSelectedOption(option: CourierInboxMenuOption, feedType: CourierInboxFeedType, unreadCount: number): void;
17
+ private updateFilter;
18
+ disconnectedCallback(): void;
19
+ }
@@ -0,0 +1,30 @@
1
+ import { CourierInboxFeedType } from '../types/feed-type';
2
+ import { CourierElement } from '@trycourier/courier-ui-core';
3
+ import { CourierInboxHeaderFactoryProps } from '../types/factories';
4
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
5
+ export type CourierInboxHeaderMenuItemId = CourierInboxFeedType | 'markAllRead' | 'archiveAll' | 'archiveRead';
6
+ export declare class CourierInboxHeader extends CourierElement {
7
+ private _themeSubscription;
8
+ private _feedType;
9
+ private _unreadCount;
10
+ private getFilterOptions;
11
+ private getActionOptions;
12
+ private _titleSection?;
13
+ private _filterMenu?;
14
+ private _actionMenu?;
15
+ private _style?;
16
+ private _onFeedTypeChange;
17
+ constructor(props: {
18
+ themeManager: CourierInboxThemeManager;
19
+ onFeedTypeChange: (feedType: CourierInboxFeedType) => void;
20
+ });
21
+ static get observedAttributes(): string[];
22
+ private refreshTheme;
23
+ private handleOptionMenuItemClick;
24
+ render(props: CourierInboxHeaderFactoryProps): void;
25
+ private refreshTitleSection;
26
+ build(newElement: HTMLElement | undefined | null): void;
27
+ defaultElement(): HTMLElement;
28
+ private getStyles;
29
+ disconnectedCallback(): void;
30
+ }
@@ -0,0 +1,17 @@
1
+ import { CourierInboxIcon, CourierInboxTheme } from '../types/courier-inbox-theme';
2
+ export type CourierListItemActionMenuOption = {
3
+ id: string;
4
+ icon: CourierInboxIcon;
5
+ onClick: () => void;
6
+ };
7
+ export declare class CourierListItemActionMenu extends HTMLElement {
8
+ private _theme;
9
+ private _options;
10
+ private _style;
11
+ constructor(theme: CourierInboxTheme);
12
+ private getStyles;
13
+ setOptions(options: CourierListItemActionMenuOption[]): void;
14
+ private renderMenu;
15
+ show(): void;
16
+ hide(): void;
17
+ }
@@ -0,0 +1,36 @@
1
+ import { InboxAction, InboxMessage } from '../../@trycourier/courier-js/src';
2
+ import { CourierInboxFeedType } from '../types/feed-type';
3
+ import { CourierInboxTheme } from '../types/courier-inbox-theme';
4
+ export declare class CourierListItem extends HTMLElement {
5
+ private _theme;
6
+ private _message;
7
+ private _feedType;
8
+ private _isMobile;
9
+ private _titleElement;
10
+ private _subtitleElement;
11
+ private _timeElement;
12
+ private _style;
13
+ private _menu;
14
+ private _unreadIndicator;
15
+ private _actionsContainer;
16
+ private _longPressTimeout;
17
+ private _isLongPress;
18
+ private onItemClick;
19
+ private onItemLongPress;
20
+ private onItemActionClick;
21
+ constructor(theme: CourierInboxTheme);
22
+ private _setupHoverBehavior;
23
+ private _setupLongPressBehavior;
24
+ setOnLongPress(cb: (message: InboxMessage) => void): void;
25
+ private _getMenuOptions;
26
+ private _showMenu;
27
+ private _hideMenu;
28
+ private _getStyles;
29
+ private _refreshStyles;
30
+ connectedCallback(): void;
31
+ setMessage(message: InboxMessage, feedType: CourierInboxFeedType): void;
32
+ setOnItemClick(cb: (message: InboxMessage) => void): void;
33
+ setOnItemActionClick(cb: (message: InboxMessage, action: InboxAction) => void): void;
34
+ setOnItemLongPress(cb: (message: InboxMessage) => void): void;
35
+ private _updateContent;
36
+ }
@@ -0,0 +1,53 @@
1
+ import { InboxAction, InboxMessage } from '../../@trycourier/courier-js/src';
2
+ import { InboxDataSet } from '../types/inbox-data-set';
3
+ import { CourierInboxFeedType } from '../types/feed-type';
4
+ import { CourierInboxStateErrorFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateLoadingFactoryProps, CourierInboxListItemFactoryProps, CourierInboxPaginationItemFactoryProps } from '../types/factories';
5
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
6
+ export declare class CourierInboxList extends HTMLElement {
7
+ private _themeSubscription;
8
+ private _messages;
9
+ private _feedType;
10
+ private _isLoading;
11
+ private _error;
12
+ private _canPaginate;
13
+ private _onMessageClick;
14
+ private _onMessageActionClick;
15
+ private _onMessageLongPress;
16
+ private _onRefresh;
17
+ private _onPaginationTrigger?;
18
+ private _listItemFactory?;
19
+ private _paginationItemFactory?;
20
+ private _loadingStateFactory?;
21
+ private _emptyStateFactory?;
22
+ private _errorStateFactory?;
23
+ get messages(): InboxMessage[];
24
+ constructor(props: {
25
+ themeManager: CourierInboxThemeManager;
26
+ onRefresh: () => void;
27
+ onPaginationTrigger: (feedType: CourierInboxFeedType) => void;
28
+ onMessageClick: (message: InboxMessage, index: number) => void;
29
+ onMessageActionClick: (message: InboxMessage, action: InboxAction, index: number) => void;
30
+ onMessageLongPress: (message: InboxMessage, index: number) => void;
31
+ });
32
+ private getStyles;
33
+ private reset;
34
+ setDataSet(dataSet: InboxDataSet): void;
35
+ addPage(dataSet: InboxDataSet): void;
36
+ addMessage(message: InboxMessage, index?: number): void;
37
+ removeMessage(index?: number): void;
38
+ updateMessage(message: InboxMessage, index?: number): void;
39
+ setFeedType(feedType: CourierInboxFeedType): void;
40
+ setLoading(isLoading: boolean): void;
41
+ setError(error: Error | null): void;
42
+ setErrorNoClient(): void;
43
+ private handleRetry;
44
+ private handleRefresh;
45
+ private render;
46
+ setLoadingStateFactory(factory: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => HTMLElement): void;
47
+ setEmptyStateFactory(factory: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => HTMLElement): void;
48
+ setErrorStateFactory(factory: (props: CourierInboxStateErrorFactoryProps | undefined | null) => HTMLElement): void;
49
+ setListItemFactory(factory: (props: CourierInboxListItemFactoryProps | undefined | null) => HTMLElement): void;
50
+ setPaginationItemFactory(factory: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => HTMLElement): void;
51
+ refreshTheme(): void;
52
+ disconnectedCallback(): void;
53
+ }
@@ -0,0 +1,14 @@
1
+ import { CourierElement } from '@trycourier/courier-ui-core';
2
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
3
+ export declare class CourierInboxMenuButton extends CourierElement {
4
+ private _themeSubscription;
5
+ private _container?;
6
+ private _triggerButton?;
7
+ private _unreadCountBadge?;
8
+ constructor(themeBus: CourierInboxThemeManager);
9
+ defaultElement(): HTMLElement;
10
+ private getStyles;
11
+ onUnreadCountChange(unreadCount: number): void;
12
+ private updateTheme;
13
+ disconnectedCallback(): void;
14
+ }
@@ -0,0 +1,51 @@
1
+ import { CourierInboxDatastoreEvents } from '../datastore/datatore-events';
2
+ import { CourierInboxHeaderFactoryProps, CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxMenuButtonFactoryProps, CourierInboxPaginationItemFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxStateLoadingFactoryProps } from '../types/factories';
3
+ import { CourierInboxFeedType } from '../types/feed-type';
4
+ import { CourierInboxTheme } from '../types/courier-inbox-theme';
5
+ export type CourierInboxPopupAlignment = 'top-right' | 'top-left' | 'top-center' | 'bottom-right' | 'bottom-left' | 'bottom-center' | 'center-right' | 'center-left' | 'center-center';
6
+ export declare class CourierInboxMenu extends HTMLElement implements CourierInboxDatastoreEvents {
7
+ private _width;
8
+ private _height;
9
+ private _popupAlignment;
10
+ private _top;
11
+ private _right;
12
+ private _bottom;
13
+ private _left;
14
+ private _themeManager;
15
+ get theme(): CourierInboxTheme;
16
+ setLightTheme(theme: CourierInboxTheme): void;
17
+ setDarkTheme(theme: CourierInboxTheme): void;
18
+ private _triggerButton;
19
+ private _popup;
20
+ private _inbox;
21
+ private _style;
22
+ private _datastoreListener?;
23
+ private _popupMenuButtonFactory?;
24
+ static get observedAttributes(): string[];
25
+ constructor();
26
+ private refreshTheme;
27
+ private getStyles;
28
+ attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
29
+ onUnreadCountChange(_: number): void;
30
+ onMessageClick(handler?: (props: CourierInboxListItemFactoryProps) => void): void;
31
+ onMessageActionClick(handler?: (props: CourierInboxListItemActionFactoryProps) => void): void;
32
+ onMessageLongPress(handler?: (props: CourierInboxListItemFactoryProps) => void): void;
33
+ private isValidPosition;
34
+ private updatePopupPosition;
35
+ private togglePopup;
36
+ private handleOutsideClick;
37
+ setContent(element: HTMLElement): void;
38
+ setSize(width: string, height: string): void;
39
+ setPosition(position: CourierInboxPopupAlignment): void;
40
+ setFeedType(feedType: CourierInboxFeedType): void;
41
+ setPopupHeader(factory: (props: CourierInboxHeaderFactoryProps | undefined | null) => HTMLElement): void;
42
+ removePopupHeader(): void;
43
+ setPopupLoadingState(factory: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => HTMLElement): void;
44
+ setPopupEmptyState(factory: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => HTMLElement): void;
45
+ setPopupErrorState(factory: (props: CourierInboxStateErrorFactoryProps | undefined | null) => HTMLElement): void;
46
+ setPopupListItem(factory: (props: CourierInboxListItemFactoryProps | undefined | null) => HTMLElement): void;
47
+ setPopupPaginationItem(factory: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => HTMLElement): void;
48
+ setPopupMenuButton(factory: (props: CourierInboxMenuButtonFactoryProps | undefined | null) => HTMLElement): void;
49
+ private render;
50
+ disconnectedCallback(): void;
51
+ }
@@ -0,0 +1,20 @@
1
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
2
+ import { CourierInboxMenuOption } from './courier-inbox-option-menu';
3
+ export declare class CourierInboxOptionMenuItem extends HTMLElement {
4
+ private _option;
5
+ private _isSelected?;
6
+ private _content;
7
+ private _itemIcon;
8
+ private _title;
9
+ private _selectionIcon;
10
+ private _style;
11
+ private _themeManager;
12
+ constructor(props: {
13
+ option: CourierInboxMenuOption;
14
+ selectable: boolean;
15
+ isSelected: boolean;
16
+ themeManager: CourierInboxThemeManager;
17
+ });
18
+ private getStyles;
19
+ refreshTheme(): void;
20
+ }
@@ -0,0 +1,32 @@
1
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
2
+ import { CourierInboxHeaderMenuItemId } from './courier-inbox-header';
3
+ import { CourierInboxIcon } from '../types/courier-inbox-theme';
4
+ export type CourierInboxMenuOptionType = 'filters' | 'actions';
5
+ export type CourierInboxMenuOption = {
6
+ id: CourierInboxHeaderMenuItemId;
7
+ text: string;
8
+ icon: CourierInboxIcon;
9
+ selectionIcon?: CourierInboxIcon | null;
10
+ onClick: (option: CourierInboxMenuOption) => void;
11
+ };
12
+ export declare class CourierInboxOptionMenu extends HTMLElement {
13
+ private _themeSubscription;
14
+ private _type;
15
+ private _selectedIndex;
16
+ private _options;
17
+ private _selectable;
18
+ private _onMenuOpen;
19
+ private _menuButton;
20
+ private _menu;
21
+ private _style;
22
+ constructor(themeManager: CourierInboxThemeManager, type: CourierInboxMenuOptionType, selectable: boolean, options: CourierInboxMenuOption[], onMenuOpen: () => void);
23
+ private getStyles;
24
+ private refreshTheme;
25
+ setOptions(options: CourierInboxMenuOption[]): void;
26
+ private refreshMenuItems;
27
+ private toggleMenu;
28
+ private handleOutsideClick;
29
+ closeMenu(): void;
30
+ selectOption(option: CourierInboxMenuOption): void;
31
+ disconnectedCallback(): void;
32
+ }
@@ -0,0 +1,14 @@
1
+ import { CourierInboxTheme } from '../types/courier-inbox-theme';
2
+ export declare class CourierInboxPaginationListItem extends HTMLElement {
3
+ private skeletonLoadingList?;
4
+ private observer;
5
+ private customItem?;
6
+ private onPaginationTrigger;
7
+ constructor(props: {
8
+ theme: CourierInboxTheme;
9
+ customItem?: HTMLElement;
10
+ onPaginationTrigger: () => void;
11
+ });
12
+ private getStyles;
13
+ disconnectedCallback(): void;
14
+ }
@@ -0,0 +1,6 @@
1
+ import { CourierInboxTheme } from '../types/courier-inbox-theme';
2
+ export declare class CourierInboxSkeletonListItem extends HTMLElement {
3
+ private _shadow;
4
+ constructor(theme: CourierInboxTheme, opacity: number);
5
+ private getStyles;
6
+ }
@@ -0,0 +1,8 @@
1
+ import { CourierElement } from '@trycourier/courier-ui-core';
2
+ import { CourierInboxTheme } from '../types/courier-inbox-theme';
3
+ export declare class CourierInboxSkeletonList extends CourierElement {
4
+ private _theme;
5
+ constructor(theme: CourierInboxTheme);
6
+ defaultElement(): HTMLElement;
7
+ private getStyles;
8
+ }
@@ -0,0 +1,43 @@
1
+ import { CourierInboxFeedType } from '../types/feed-type';
2
+ import { CourierInboxHeaderFactoryProps, CourierInboxListItemActionFactoryProps, CourierInboxListItemFactoryProps, CourierInboxPaginationItemFactoryProps, CourierInboxStateEmptyFactoryProps, CourierInboxStateErrorFactoryProps, CourierInboxStateLoadingFactoryProps } from '../types/factories';
3
+ import { CourierInboxTheme } from '../types/courier-inbox-theme';
4
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
5
+ export declare class CourierInbox extends HTMLElement {
6
+ private _currentFeed;
7
+ private _themeManager;
8
+ get theme(): CourierInboxTheme;
9
+ setLightTheme(theme: CourierInboxTheme): void;
10
+ setDarkTheme(theme: CourierInboxTheme): void;
11
+ private _shadow;
12
+ private _list;
13
+ private _datastoreListener;
14
+ private _authListener;
15
+ private _style;
16
+ private _header;
17
+ private _headerFactory;
18
+ private _onMessageClick?;
19
+ private _onMessageActionClick?;
20
+ private _onMessageLongPress?;
21
+ private _defaultProps;
22
+ static get observedAttributes(): string[];
23
+ constructor(themeManager?: CourierInboxThemeManager);
24
+ private refreshTheme;
25
+ private getStyles;
26
+ setHeader(factory: (props: CourierInboxHeaderFactoryProps | undefined | null) => HTMLElement): void;
27
+ removeHeader(): void;
28
+ setLoadingState(factory: (props: CourierInboxStateLoadingFactoryProps | undefined | null) => HTMLElement): void;
29
+ setEmptyState(factory: (props: CourierInboxStateEmptyFactoryProps | undefined | null) => HTMLElement): void;
30
+ setErrorState(factory: (props: CourierInboxStateErrorFactoryProps | undefined | null) => HTMLElement): void;
31
+ setListItem(factory: (props: CourierInboxListItemFactoryProps | undefined | null) => HTMLElement): void;
32
+ setPaginationItem(factory: (props: CourierInboxPaginationItemFactoryProps | undefined | null) => HTMLElement): void;
33
+ onMessageClick(handler?: (props: CourierInboxListItemFactoryProps) => void): void;
34
+ onMessageActionClick(handler?: (props: CourierInboxListItemActionFactoryProps) => void): void;
35
+ onMessageLongPress(handler?: (props: CourierInboxListItemFactoryProps) => void): void;
36
+ setFeedType(feedType: CourierInboxFeedType): void;
37
+ private updateHeader;
38
+ private load;
39
+ refresh(): void;
40
+ connectedCallback(): void;
41
+ disconnectedCallback(): void;
42
+ attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
43
+ }
@@ -0,0 +1,18 @@
1
+ import { CourierInboxThemeManager } from '../types/courier-inbox-theme-manager';
2
+ export type CourierUnreadCountLocation = 'button' | 'header';
3
+ export declare class CourierUnreadCountBadge extends HTMLElement {
4
+ private _themeSubscription;
5
+ private _location;
6
+ private _count;
7
+ private _badge;
8
+ private _style;
9
+ constructor(props: {
10
+ themeBus: CourierInboxThemeManager;
11
+ location: CourierUnreadCountLocation;
12
+ });
13
+ private getStyles;
14
+ setCount(count: number): void;
15
+ refreshTheme(location: CourierUnreadCountLocation): void;
16
+ private updateBadge;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,6 @@
1
+ import { CourierInboxDatastoreEvents } from './datatore-events';
2
+ export declare class CourierInboxDataStoreListener {
3
+ readonly events: CourierInboxDatastoreEvents;
4
+ constructor(events: CourierInboxDatastoreEvents);
5
+ remove(): void;
6
+ }
@@ -0,0 +1,42 @@
1
+ import { InboxMessage } from '../../@trycourier/courier-js/src';
2
+ import { InboxDataSet } from '../types/inbox-data-set';
3
+ import { CourierInboxDataStoreListener } from './datastore-listener';
4
+ import { CourierInboxFeedType } from '../types/feed-type';
5
+ export declare class CourierInboxDatastore {
6
+ private static instance;
7
+ private _inboxDataSet?;
8
+ private _archiveDataSet?;
9
+ private _dataStoreListeners;
10
+ private _unreadCount?;
11
+ private isPaginatingInbox;
12
+ private isPaginatingArchive;
13
+ static get shared(): CourierInboxDatastore;
14
+ get unreadCount(): number;
15
+ get inboxDataSet(): InboxDataSet;
16
+ get archiveDataSet(): InboxDataSet;
17
+ addDataStoreListener(listener: CourierInboxDataStoreListener): void;
18
+ removeDataStoreListener(listener: CourierInboxDataStoreListener): void;
19
+ private fetchDataSet;
20
+ private fetchUnreadCount;
21
+ load(props?: {
22
+ feedType: CourierInboxFeedType;
23
+ canUseCache: boolean;
24
+ }): Promise<void>;
25
+ private connectSocket;
26
+ private getMessage;
27
+ fetchNextPageOfMessages(props: {
28
+ feedType: CourierInboxFeedType;
29
+ }): Promise<InboxDataSet | null>;
30
+ private applyLocalMessageChange;
31
+ readMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
32
+ unreadMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
33
+ openMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
34
+ clickMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
35
+ archiveMessage(message: InboxMessage, canCallApi?: boolean): Promise<void>;
36
+ readAllMessages(canCallApi?: boolean): Promise<void>;
37
+ private findInsertIndex;
38
+ private addPage;
39
+ private addMessage;
40
+ private removeMessage;
41
+ private updateMessage;
42
+ }
@@ -0,0 +1,12 @@
1
+ import { CourierInboxFeedType } from '../types/feed-type';
2
+ import { InboxDataSet } from '../types/inbox-data-set';
3
+ import { InboxMessage } from '../../@trycourier/courier-js/src';
4
+ export declare class CourierInboxDatastoreEvents {
5
+ onDataSetChange?(dataSet: InboxDataSet, feedType: CourierInboxFeedType): void;
6
+ onPageAdded?(dataSet: InboxDataSet, feedType: CourierInboxFeedType): void;
7
+ onUnreadCountChange?(unreadCount: number): void;
8
+ onMessageAdd?(message: InboxMessage, index: number, feedType: CourierInboxFeedType): void;
9
+ onMessageRemove?(message: InboxMessage, index: number, feedType: CourierInboxFeedType): void;
10
+ onMessageUpdate?(message: InboxMessage, index: number, feedType: CourierInboxFeedType): void;
11
+ onError?(error: Error): void;
12
+ }
@@ -0,0 +1,13 @@
1
+ export * from './components/courier-inbox';
2
+ export * from './components/courier-inbox-header';
3
+ export * from './components/courier-inbox-list-item';
4
+ export * from './components/courier-inbox-menu';
5
+ export * from './utils/extensions';
6
+ export * from './types/factories';
7
+ export * from './types/feed-type';
8
+ export * from './types/courier-inbox-theme';
9
+ export * from './types/courier-inbox-theme-manager';
10
+ export * from './types/inbox-data-set';
11
+ export * from './datastore/datastore';
12
+ export * from './datastore/datastore-listener';
13
+ export * from './datastore/datatore-events';