@acorex/components 20.4.14 → 20.4.16
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.
- package/conversation2/index.d.ts +143 -34
- package/fab/README.md +3 -0
- package/fab/index.d.ts +26 -0
- package/fesm2022/acorex-components-conversation.mjs +1 -1
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation2.mjs +221 -221
- package/fesm2022/acorex-components-conversation2.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +2 -2
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-fab.mjs +47 -0
- package/fesm2022/acorex-components-fab.mjs.map +1 -0
- package/fesm2022/acorex-components-loading.mjs +71 -31
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +3 -2
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +6 -6
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +2 -0
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/loading/index.d.ts +3 -1
- package/package.json +31 -27
- package/popover/index.d.ts +2 -1
package/conversation2/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as _angular_core from '@angular/core';
|
|
|
3
3
|
import { OnDestroy, ViewContainerRef, WritableSignal, Signal, Type, InputSignal, InjectionToken, OnInit, EventEmitter, TemplateRef, ElementRef, ModuleWithProviders, Provider } from '@angular/core';
|
|
4
4
|
import { AXComponentCloseEvent, AXHtmlEvent, AXDataSource, AXClosableComponent } from '@acorex/cdk/common';
|
|
5
5
|
import * as rxjs from 'rxjs';
|
|
6
|
-
import { Observable } from 'rxjs';
|
|
6
|
+
import { Observable, BehaviorSubject, Subject } from 'rxjs';
|
|
7
7
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
8
8
|
import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
|
|
9
9
|
import { AXUploaderChangedEvent } from '@acorex/cdk/uploader';
|
|
@@ -4414,7 +4414,116 @@ declare class AXInfiniteScrollDirective {
|
|
|
4414
4414
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXInfiniteScrollDirective, "[axInfiniteScroll]", never, { "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "edge": { "alias": "edge"; "required": false; "isSignal": true; }; }, { "scrollThreshold": "scrollThreshold"; }, never, never, true, never>;
|
|
4415
4415
|
}
|
|
4416
4416
|
|
|
4417
|
-
|
|
4417
|
+
/**
|
|
4418
|
+
* IndexedDB Storage Wrapper
|
|
4419
|
+
* Provides persistent storage for conversation data
|
|
4420
|
+
*/
|
|
4421
|
+
|
|
4422
|
+
declare const AXConversationIndexedDbStores: {
|
|
4423
|
+
readonly PARTICIPANTS: "participants";
|
|
4424
|
+
readonly CONVERSATIONS: "conversations";
|
|
4425
|
+
readonly MESSAGES: "messages";
|
|
4426
|
+
readonly SETTINGS: "settings";
|
|
4427
|
+
};
|
|
4428
|
+
declare class AXConversationIndexedDbStorage {
|
|
4429
|
+
private db;
|
|
4430
|
+
private initPromise;
|
|
4431
|
+
/**
|
|
4432
|
+
* Initialize IndexedDB
|
|
4433
|
+
*/
|
|
4434
|
+
init(): Promise<void>;
|
|
4435
|
+
/**
|
|
4436
|
+
* Get a value from a store
|
|
4437
|
+
*/
|
|
4438
|
+
get<T>(storeName: string, key: string): Promise<T | undefined>;
|
|
4439
|
+
/**
|
|
4440
|
+
* Get all values from a store
|
|
4441
|
+
*/
|
|
4442
|
+
getAll<T>(storeName: string): Promise<T[]>;
|
|
4443
|
+
/**
|
|
4444
|
+
* Get values by index
|
|
4445
|
+
*/
|
|
4446
|
+
getAllByIndex<T>(storeName: string, indexName: string, query: IDBValidKey): Promise<T[]>;
|
|
4447
|
+
/**
|
|
4448
|
+
* Put a value into a store
|
|
4449
|
+
*/
|
|
4450
|
+
put<T>(storeName: string, value: T): Promise<void>;
|
|
4451
|
+
/**
|
|
4452
|
+
* Delete a value from a store
|
|
4453
|
+
*/
|
|
4454
|
+
delete(storeName: string, key: string): Promise<void>;
|
|
4455
|
+
/**
|
|
4456
|
+
* Clear all data from a store
|
|
4457
|
+
*/
|
|
4458
|
+
clear(storeName: string): Promise<void>;
|
|
4459
|
+
getParticipant(id: string): Promise<AXParticipant | undefined>;
|
|
4460
|
+
getAllParticipants(): Promise<AXParticipant[]>;
|
|
4461
|
+
putParticipant(participant: AXParticipant): Promise<void>;
|
|
4462
|
+
getConversation(id: string): Promise<AXConversation | undefined>;
|
|
4463
|
+
getAllConversations(): Promise<AXConversation[]>;
|
|
4464
|
+
putConversation(conversation: AXConversation): Promise<void>;
|
|
4465
|
+
deleteConversation(id: string): Promise<void>;
|
|
4466
|
+
getMessage(id: string): Promise<AXMessage | undefined>;
|
|
4467
|
+
getAllMessages(): Promise<AXMessage[]>;
|
|
4468
|
+
getMessagesByConversation(conversationId: string): Promise<AXMessage[]>;
|
|
4469
|
+
putMessage(message: AXMessage): Promise<void>;
|
|
4470
|
+
deleteMessage(id: string): Promise<void>;
|
|
4471
|
+
getSetting(key: string): Promise<any>;
|
|
4472
|
+
putSetting(key: string, value: any): Promise<void>;
|
|
4473
|
+
}
|
|
4474
|
+
declare const axConversationIndexedDbStorage: AXConversationIndexedDbStorage;
|
|
4475
|
+
|
|
4476
|
+
/**
|
|
4477
|
+
* Shared In-Memory Storage
|
|
4478
|
+
* Internal storage shared between all IndexedDB API implementations
|
|
4479
|
+
* This is NOT a service - just a shared data structure
|
|
4480
|
+
*/
|
|
4481
|
+
|
|
4482
|
+
declare class AXConversationSharedStorage {
|
|
4483
|
+
readonly connectionStatus$: BehaviorSubject<AXConnectionStatus>;
|
|
4484
|
+
readonly participants: Map<string, AXParticipant>;
|
|
4485
|
+
readonly conversations: Map<string, AXConversation>;
|
|
4486
|
+
readonly messages: Map<string, AXMessage>;
|
|
4487
|
+
readonly messagesByConversation: Map<string, string[]>;
|
|
4488
|
+
readonly messageStream$: Subject<AXMessage>;
|
|
4489
|
+
readonly messageUpdates$: Subject<AXMessage>;
|
|
4490
|
+
readonly messageDeletions$: Subject<string>;
|
|
4491
|
+
readonly typingIndicators$: Subject<AXTypingIndicator>;
|
|
4492
|
+
readonly presenceUpdates$: Subject<AXPresenceUpdate>;
|
|
4493
|
+
readonly conversationUpdates$: Subject<AXConversation>;
|
|
4494
|
+
readonly currentUserId = "current-user";
|
|
4495
|
+
private isSeeded;
|
|
4496
|
+
private presenceInterval?;
|
|
4497
|
+
private messageSimulationInterval?;
|
|
4498
|
+
private isLoadedFromDB;
|
|
4499
|
+
/**
|
|
4500
|
+
* Load data from IndexedDB
|
|
4501
|
+
*/
|
|
4502
|
+
loadFromIndexedDB(): Promise<void>;
|
|
4503
|
+
/**
|
|
4504
|
+
* Seed initial data if not already seeded
|
|
4505
|
+
*/
|
|
4506
|
+
seedIfEmpty(): Promise<void>;
|
|
4507
|
+
/**
|
|
4508
|
+
* Simulate user presence changes (online/offline/away)
|
|
4509
|
+
*/
|
|
4510
|
+
private startPresenceSimulation;
|
|
4511
|
+
/**
|
|
4512
|
+
* Simulate random messages from users
|
|
4513
|
+
*/
|
|
4514
|
+
private startMessageSimulation;
|
|
4515
|
+
/**
|
|
4516
|
+
* Stop presence simulation
|
|
4517
|
+
*/
|
|
4518
|
+
stopPresenceSimulation(): void;
|
|
4519
|
+
/**
|
|
4520
|
+
* Stop message simulation
|
|
4521
|
+
*/
|
|
4522
|
+
stopMessageSimulation(): void;
|
|
4523
|
+
}
|
|
4524
|
+
declare const conversationSharedStorage: AXConversationSharedStorage;
|
|
4525
|
+
|
|
4526
|
+
declare class AXConversationIndexedDbUserApi extends AXUserApi {
|
|
4418
4527
|
getCurrentUser(): Promise<AXParticipant>;
|
|
4419
4528
|
updateProfile(updates: AXUserProfileUpdate): Promise<AXParticipant>;
|
|
4420
4529
|
uploadAvatar(file: File): Promise<string>;
|
|
@@ -4430,11 +4539,11 @@ declare class AXIndexedDBUserApi extends AXUserApi {
|
|
|
4430
4539
|
reportUser(_userId: string, _reason: AXBlockReportReason): Promise<void>;
|
|
4431
4540
|
getUserSettings(): Promise<Record<string, any>>;
|
|
4432
4541
|
updateUserSettings(_settings: Record<string, any>): Promise<void>;
|
|
4433
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
4434
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
4542
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbUserApi, never>;
|
|
4543
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbUserApi>;
|
|
4435
4544
|
}
|
|
4436
4545
|
|
|
4437
|
-
declare class
|
|
4546
|
+
declare class AXConversationIndexedDbConversationApi extends AXConversationApi {
|
|
4438
4547
|
createConversation(data: AXConversationCreateData): Promise<AXConversation>;
|
|
4439
4548
|
getConversation(conversationId: string): Promise<AXConversation>;
|
|
4440
4549
|
getConversations(pagination: AXPagination, _filters?: AXConversationFilters): Promise<AXPaginatedResult<AXConversation>>;
|
|
@@ -4467,11 +4576,11 @@ declare class AXIndexedDBConversationApi extends AXConversationApi {
|
|
|
4467
4576
|
saveDraft(_conversationId: string, _draft: string): Promise<void>;
|
|
4468
4577
|
getDraft(_conversationId: string): Promise<string | null>;
|
|
4469
4578
|
clearDraft(_conversationId: string): Promise<void>;
|
|
4470
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
4471
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
4579
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbConversationApi, never>;
|
|
4580
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbConversationApi>;
|
|
4472
4581
|
}
|
|
4473
4582
|
|
|
4474
|
-
declare class
|
|
4583
|
+
declare class AXConversationIndexedDbMessageApi extends AXMessageApi {
|
|
4475
4584
|
sendMessage(command: AXSendMessageCommand): Promise<AXMessage>;
|
|
4476
4585
|
getMessage(messageId: string): Promise<AXMessage>;
|
|
4477
4586
|
getMessages(conversationId: string, pagination: AXPagination): Promise<AXPaginatedResult<AXMessage>>;
|
|
@@ -4513,11 +4622,11 @@ declare class AXIndexedDBMessageApi extends AXMessageApi {
|
|
|
4513
4622
|
markMessagesAsRead(_messageIds: string[]): Promise<void>;
|
|
4514
4623
|
bulkDeleteMessages(_conversationId: string, _messageIds: string[], _forEveryone?: boolean): Promise<void>;
|
|
4515
4624
|
exportMessages(_conversationId: string, _format: 'json' | 'csv' | 'txt'): Promise<string | Blob>;
|
|
4516
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
4517
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
4625
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbMessageApi, never>;
|
|
4626
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbMessageApi>;
|
|
4518
4627
|
}
|
|
4519
4628
|
|
|
4520
|
-
declare class
|
|
4629
|
+
declare class AXConversationIndexedDbRealtimeApi extends AXRealtimeApi {
|
|
4521
4630
|
readonly connectionStatus$: Observable<AXConnectionStatus>;
|
|
4522
4631
|
connect(_options?: AXConnectionOptions): Promise<void>;
|
|
4523
4632
|
disconnect(): Promise<void>;
|
|
@@ -4567,8 +4676,8 @@ declare class AXIndexedDBRealtimeApi extends AXRealtimeApi {
|
|
|
4567
4676
|
conversationId: string;
|
|
4568
4677
|
draft: string | null;
|
|
4569
4678
|
}>;
|
|
4570
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
4571
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
4679
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbRealtimeApi, never>;
|
|
4680
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbRealtimeApi>;
|
|
4572
4681
|
}
|
|
4573
4682
|
|
|
4574
4683
|
/**
|
|
@@ -4578,10 +4687,10 @@ declare class AXIndexedDBRealtimeApi extends AXRealtimeApi {
|
|
|
4578
4687
|
* @security API key should be provided via injection token in production
|
|
4579
4688
|
* @example
|
|
4580
4689
|
* ```typescript
|
|
4581
|
-
* export const
|
|
4690
|
+
* export const AXConversationAiApiKey = new InjectionToken<string>('AXConversationAiApiKey');
|
|
4582
4691
|
*
|
|
4583
4692
|
* providers: [
|
|
4584
|
-
* { provide:
|
|
4693
|
+
* { provide: AXConversationAiApiKey, useValue: environment.geminiApiKey }
|
|
4585
4694
|
* ]
|
|
4586
4695
|
* ```
|
|
4587
4696
|
*/
|
|
@@ -4590,11 +4699,11 @@ declare class AXIndexedDBRealtimeApi extends AXRealtimeApi {
|
|
|
4590
4699
|
* Injection token for AI API key
|
|
4591
4700
|
* Provide this in your app config to avoid hardcoding the API key
|
|
4592
4701
|
*/
|
|
4593
|
-
declare const
|
|
4702
|
+
declare const AXConversationAiApiKey: InjectionToken<string>;
|
|
4594
4703
|
/**
|
|
4595
4704
|
* Configuration for AI Responder
|
|
4596
4705
|
*/
|
|
4597
|
-
interface
|
|
4706
|
+
interface AXConversationAiResponderConfig {
|
|
4598
4707
|
/** Maximum retry attempts for failed requests */
|
|
4599
4708
|
maxRetries?: number;
|
|
4600
4709
|
/** Timeout for API requests in milliseconds */
|
|
@@ -4602,7 +4711,7 @@ interface AXAIResponderConfig {
|
|
|
4602
4711
|
/** Enable fallback to random replies on error */
|
|
4603
4712
|
useFallbackReplies?: boolean;
|
|
4604
4713
|
}
|
|
4605
|
-
declare class
|
|
4714
|
+
declare class AXConversationAiResponderService {
|
|
4606
4715
|
private readonly injectedApiKey;
|
|
4607
4716
|
private readonly config;
|
|
4608
4717
|
/**
|
|
@@ -4637,12 +4746,12 @@ declare class AXAIResponderService {
|
|
|
4637
4746
|
/**
|
|
4638
4747
|
* Update configuration
|
|
4639
4748
|
*/
|
|
4640
|
-
configure(config: Partial<
|
|
4641
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
4642
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
4749
|
+
configure(config: Partial<AXConversationAiResponderConfig>): void;
|
|
4750
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAiResponderService, never>;
|
|
4751
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationAiResponderService>;
|
|
4643
4752
|
}
|
|
4644
4753
|
|
|
4645
|
-
declare class
|
|
4754
|
+
declare class AXConversationIndexedDbMessageAiApi extends AXConversationIndexedDbMessageApi {
|
|
4646
4755
|
private readonly aiResponder;
|
|
4647
4756
|
private readonly AI_TYPING_INDICATOR_DELAY;
|
|
4648
4757
|
private readonly AI_RESPONSE_DELAY;
|
|
@@ -4674,8 +4783,8 @@ declare class AXIndexedDBMessageAIApi extends AXIndexedDBMessageApi {
|
|
|
4674
4783
|
* Delay helper
|
|
4675
4784
|
*/
|
|
4676
4785
|
private delay;
|
|
4677
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
4678
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<
|
|
4786
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationIndexedDbMessageAiApi, never>;
|
|
4787
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationIndexedDbMessageAiApi>;
|
|
4679
4788
|
}
|
|
4680
4789
|
|
|
4681
4790
|
interface AudioFile {
|
|
@@ -5571,19 +5680,19 @@ declare class AXConversation2Module {
|
|
|
5571
5680
|
* @example
|
|
5572
5681
|
* ```typescript
|
|
5573
5682
|
* import {
|
|
5574
|
-
*
|
|
5575
|
-
*
|
|
5576
|
-
*
|
|
5577
|
-
*
|
|
5683
|
+
* AXConversationIndexedDbUserApi,
|
|
5684
|
+
* AXConversationIndexedDbConversationApi,
|
|
5685
|
+
* AXConversationIndexedDbMessageApi,
|
|
5686
|
+
* AXConversationIndexedDbRealtimeApi
|
|
5578
5687
|
* } from '@acorex/components/conversation2';
|
|
5579
5688
|
*
|
|
5580
5689
|
* export const appConfig: ApplicationConfig = {
|
|
5581
5690
|
* providers: [
|
|
5582
5691
|
* provideConversation({
|
|
5583
|
-
* userApi:
|
|
5584
|
-
* conversationApi:
|
|
5585
|
-
* messageApi:
|
|
5586
|
-
* realtimeApi:
|
|
5692
|
+
* userApi: AXConversationIndexedDbUserApi,
|
|
5693
|
+
* conversationApi: AXConversationIndexedDbConversationApi,
|
|
5694
|
+
* messageApi: AXConversationIndexedDbMessageApi,
|
|
5695
|
+
* realtimeApi: AXConversationIndexedDbRealtimeApi,
|
|
5587
5696
|
* config: { },
|
|
5588
5697
|
* registry: { messageActions: [myCustomAction] }
|
|
5589
5698
|
* })
|
|
@@ -6230,5 +6339,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
|
|
|
6230
6339
|
*/
|
|
6231
6340
|
type AXErrorCode = typeof MESSAGE_ERRORS[keyof typeof MESSAGE_ERRORS]['code'] | typeof FILE_ERRORS[keyof typeof FILE_ERRORS]['code'] | typeof USER_ERRORS[keyof typeof USER_ERRORS]['code'] | typeof CONVERSATION_ERRORS[keyof typeof CONVERSATION_ERRORS]['code'] | typeof CONNECTION_ERRORS[keyof typeof CONNECTION_ERRORS]['code'] | typeof LOCATION_ERRORS[keyof typeof LOCATION_ERRORS]['code'] | typeof URL_ERRORS[keyof typeof URL_ERRORS]['code'] | typeof PERMISSION_ERRORS[keyof typeof PERMISSION_ERRORS]['code'];
|
|
6232
6341
|
|
|
6233
|
-
export {
|
|
6234
|
-
export type {
|
|
6342
|
+
export { AXAudioInfoBarBannerComponent, AXAudioPickerComponent, AXAudioRendererComponent, AXBaseRegistry, AXComposerActionRegistry, AXComposerComponent, AXComposerPopupComponent, AXComposerService, AXComposerTabRegistry, AXConversation2Module, AXConversationAiApiKey, AXConversationAiResponderService, AXConversationApi, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationIndexedDbConversationApi, AXConversationIndexedDbMessageAiApi, AXConversationIndexedDbMessageApi, AXConversationIndexedDbRealtimeApi, AXConversationIndexedDbStorage, AXConversationIndexedDbStores, AXConversationIndexedDbUserApi, AXConversationInfoPanelComponent, AXConversationItemActionRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationService, AXConversationSharedStorage, AXConversationStoreService, AXConversationTabRegistry, AXEmojiTabComponent, AXErrorHandlerService, AXFallbackRendererComponent, AXFilePickerComponent, AXFileRendererComponent, AXFileUploadService, AXForwardMessageDialogComponent, AXImagePickerComponent, AXImageRendererComponent, AXInfiniteScrollDirective, AXInfoBarActionRegistry, AXInfoBarComponent, AXInfoBarSearchComponent, AXInfoBarService, AXLocationPickerComponent, AXLocationRendererComponent, AXMessageActionRegistry, AXMessageApi, AXMessageListComponent, AXMessageListService, AXMessageRendererRegistry, AXNewConversationDialogComponent, AXPickerFooterComponent, AXPickerHeaderComponent, AXRealtimeApi, AXRegistryService, AXSidebarComponent, AXSidebarService, AXStickerRendererComponent, AXStickerTabComponent, AXSystemRendererComponent, AXTextRendererComponent, AXUserApi, AXVideoInfoBarBannerComponent, AXVideoPickerComponent, AXVideoRendererComponent, AXVoiceInfoBarBannerComponent, AXVoiceRecorderComponent, AXVoiceRendererComponent, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_INFO_ACTION, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_COPY_ACTION, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, CONNECTION_ERRORS, CONVERSATION_CONFIG, CONVERSATION_ERRORS, DEFAULT_COMPOSER_ACTIONS, DEFAULT_COMPOSER_TABS, DEFAULT_CONVERSATION_ITEM_ACTIONS, DEFAULT_CONVERSATION_TABS, DEFAULT_INFO_BAR_ACTIONS, DEFAULT_MESSAGE_ACTIONS, DEFAULT_MESSAGE_RENDERERS, ERROR_HANDLER_CONFIG, ERROR_MESSAGES, FILE_ERRORS, LOCATION_ERRORS, MESSAGE_ERRORS, PERMISSION_ERRORS, REGISTRY_CONFIG, URL_ERRORS, USER_ERRORS, axConversationIndexedDbStorage, conversationSharedStorage, formatErrorMessage, getDefaultConversationItemActions, getErrorMessage, mergeWithDefaults, provideConversation, sanitizeInput, validateConversationId, validateEmail, validateFile, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds };
|
|
6343
|
+
export type { AXApiError, AXAudioPayload, AXBlockReportReason, AXCallEvent, AXComposerAction, AXComposerActionContext, AXComposerActiveComponent, AXComposerTab, AXConnectionEvent, AXConnectionOptions, AXConnectionStatus, AXConversation, AXConversationAiResponderConfig, AXConversationConfig, AXConversationCreateData, AXConversationError, AXConversationFilter, AXConversationFilters, AXConversationItemAction, AXConversationItemActionContext, AXConversationMetadata, AXConversationOptions, AXConversationPermissions, AXConversationSettings, AXConversationSettingsUpdate, AXConversationSort, AXConversationStatus, AXConversationTab, AXConversationType, AXConversationUpdateData, AXDeleteMessageCommand, AXEditMessageCommand, AXErrorCode, AXErrorHandlerConfig, AXErrorMessage, AXErrorSeverity, AXFilePayload, AXFileValidationResult, AXGroupedReaction, AXImagePayload, AXInfoBarAction, AXInfoBarActionContext, AXInfoBarActiveBanner, AXInfoBarActiveComponent, AXLink, AXLinkPreview, AXLocationPayload, AXMention, AXMessage, AXMessageAction, AXMessageActionContext, AXMessageAvatarTemplateContext, AXMessageForwardData, AXMessageInfoBarBannerComponent, AXMessagePayload, AXMessageRenderer, AXMessageRendererCapabilities, AXMessageRendererComponent, AXMessageRendererContentState, AXMessageRendererState, AXMessageSearchFilters, AXMessageStatus, AXMessageType, AXNotificationEvent, AXPaginatedResult, AXPagination, AXParticipant, AXParticipantRole, AXParticipantStatus, AXParticipantUpdate, AXPinnedMessage, AXPollOption, AXPollPayload, AXPresenceStatus, AXPresenceUpdate, AXReaction, AXReadReceipt, AXRegistryConfiguration, AXRegistryItem, AXSendMessageCommand, AXStickerPayload, AXSystemPayload, AXTextFormat, AXTextPayload, AXTypingIndicator, AXUserProfileUpdate, AXUserRole, AXUserSearchFilters, AXValidationResult, AXVideoPayload, AXVoicePayload, DropdownMenuItem, FilePreview, FileUploadProgress };
|
package/fab/README.md
ADDED
package/fab/index.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { AXClickEvent } from '@acorex/cdk/common';
|
|
3
|
+
|
|
4
|
+
declare class AXFabItemComponent {
|
|
5
|
+
label: _angular_core.InputSignal<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Fires each time the user clicks the button.
|
|
8
|
+
* @event
|
|
9
|
+
*/
|
|
10
|
+
onClick: _angular_core.OutputEmitterRef<AXClickEvent>;
|
|
11
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFabItemComponent, never>;
|
|
12
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFabItemComponent, "ax-fab-item", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, ["ax-icon"], true, never>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
declare class AXFabComponent {
|
|
16
|
+
label: _angular_core.InputSignal<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Fires each time the user clicks the button.
|
|
19
|
+
* @event
|
|
20
|
+
*/
|
|
21
|
+
onClick: _angular_core.OutputEmitterRef<AXClickEvent>;
|
|
22
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFabComponent, never>;
|
|
23
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXFabComponent, "ax-fab", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, ["ax-icon", "ax-fab-item"], true, never>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { AXFabComponent, AXFabItemComponent };
|
|
@@ -522,7 +522,7 @@ class AXConversationMessageComponent extends MXBaseComponent {
|
|
|
522
522
|
return `${this.isOwn ? 'ax-state-own' : ''} ${!this.isOwn ? 'ax-state-other' : ''}`;
|
|
523
523
|
}
|
|
524
524
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationMessageComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
525
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXConversationMessageComponent, isStandalone: true, selector: "ax-conversation-message", inputs: { isReplyArrowShown: { classPropertyName: "isReplyArrowShown", publicName: "isReplyArrowShown", isSignal: true, isRequired: false, transformFunction: null }, chatMessage: { classPropertyName: "chatMessage", publicName: "chatMessage", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionMenuOpening: "onActionMenuOpening", onReplyClick: "onReplyClick" }, host: { properties: { "class": "this.__hostClass" } }, providers: [{ provide: AXComponent, useExisting: AXConversationMessageComponent }], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (chatMessage().fromId) {\n @if (avatar()) {\n <ng-container [ngTemplateOutlet]=\"avatar()\"></ng-container>\n } @else {\n <ax-avatar color=\"primary\" [size]=\"36\"> </ax-avatar>\n }\n}\n\n@if (isOwn && isReplyArrowShown()) {\n <i (click)=\"replyHandler(chatMessage())\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div\n class=\"ax-message-content\"\n [class]=\"'ax-type-' + messageType()\"\n [class.ax-state-own]=\"!chatMessage().fromId\"\n [class.ax-state-other]=\"chatMessage().fromId\"\n>\n <div class=\"ax-action-button\">\n @if (chatMessage()?.userName) {\n <div class=\"ax-message-user-name\">\n <ax-text>{{ chatMessage().userName }}</ax-text>\n </div>\n }\n\n @if (chatMessage()?.showActionButton) {\n <div class=\"ax-message-action-button\">\n <ax-menu openOn=\"click\" [hasArrow]=\"false\">\n <ax-menu-item class=\"ax-parent-menu-item\">\n <ax-text (click)=\"handleActionClick()\">...</ax-text>\n\n @for (item of actionButtonItemsPrivate(); track item.text) {\n <ax-menu-item [color]=\"item.color\" (onClick)=\"item.onClick(chatMessage().id)\">\n <ax-text>{{ item.text }}</ax-text>\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n\n @for (innerItem of item.items; track innerItem.text) {\n <ax-menu-item [color]=\"innerItem.color\" (onClick)=\"innerItem.onClick(chatMessage().id)\">\n <ax-text>{{ innerItem.text }}</ax-text>\n <ax-prefix>\n <ax-icon [icon]=\"innerItem.icon\"></ax-icon>\n </ax-prefix>\n </ax-menu-item>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n </ax-menu>\n </div>\n }\n </div>\n\n <ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div>\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n\n@if (!isOwn && isReplyArrowShown()) {\n <i (click)=\"replyHandler(chatMessage())\" class=\"fa-solid fa-reply ax-rotate ax-cursor-pointer\"></i>\n}\n", styles: ["ax-conversation-message{display:flex;align-items:flex-end;margin:.5rem}ax-conversation-message .ax-message-reply-container{padding:.75rem}ax-conversation-message .ax-message-reply-container,ax-conversation-message .ax-image-reply-container,ax-conversation-message .ax-video-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;margin-bottom:.25rem;overflow:hidden}ax-conversation-message .ax-message-reply-container .file,ax-conversation-message .ax-image-reply-container .file,ax-conversation-message .ax-video-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i,ax-conversation-message .ax-image-reply-container .file i,ax-conversation-message .ax-video-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video,ax-conversation-message .ax-image-reply-container img,ax-conversation-message .ax-image-reply-container video,ax-conversation-message .ax-video-reply-container img,ax-conversation-message .ax-video-reply-container video{max-width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:var(--ax-sys-border-radius);overflow:hidden;width:fit-content;max-width:50%;margin-inline-start:.5rem}ax-conversation-message .ax-message-content .ax-action-button{display:grid;grid-template-columns:repeat(2,1fr)}ax-conversation-message .ax-message-content .ax-action-button .ax-message-user-name{justify-self:start;grid-column:1}ax-conversation-message .ax-message-content .ax-action-button .ax-message-action-button{justify-self:end;grid-column:2}ax-conversation-message .ax-message-content .ax-action-button ax-menu.ax-action-list-horizontal{min-width:0;gap:0}ax-conversation-message .ax-message-content .ax-action-button .ax-parent-menu-item{height:auto!important;padding:0!important}ax-conversation-message .ax-message-content.ax-type-video{padding:0}ax-conversation-message .ax-message-content.ax-type-image{padding:0}ax-conversation-message .ax-message-content .ax-chat-message-status{padding:.25rem .5rem}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-surface))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-on-primary))}ax-conversation-message .ax-rotate{transform:scaleX(-1);margin-inline-start:.5rem}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"], dependencies: [{ kind: "component", type: AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "shape", "look"], outputs: ["sizeChange"] }, { kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "repositionOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "component", type: AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i1$1.AXMenuItemComponent, selector: "ax-menu-item", inputs: ["name", "data", "disabled", "color"], outputs: ["onClick"] }, { kind: "component", type: i1$1.AXMenuComponent, selector: "ax-menu", inputs: ["orientation", "openOn", "closeOn", "items", "hasArrow"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
525
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.3", type: AXConversationMessageComponent, isStandalone: true, selector: "ax-conversation-message", inputs: { isReplyArrowShown: { classPropertyName: "isReplyArrowShown", publicName: "isReplyArrowShown", isSignal: true, isRequired: false, transformFunction: null }, chatMessage: { classPropertyName: "chatMessage", publicName: "chatMessage", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onActionMenuOpening: "onActionMenuOpening", onReplyClick: "onReplyClick" }, host: { properties: { "class": "this.__hostClass" } }, providers: [{ provide: AXComponent, useExisting: AXConversationMessageComponent }], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (chatMessage().fromId) {\n @if (avatar()) {\n <ng-container [ngTemplateOutlet]=\"avatar()\"></ng-container>\n } @else {\n <ax-avatar color=\"primary\" [size]=\"36\"> </ax-avatar>\n }\n}\n\n@if (isOwn && isReplyArrowShown()) {\n <i (click)=\"replyHandler(chatMessage())\" class=\"fa-solid fa-reply ax-cursor-pointer\"></i>\n}\n\n<div\n class=\"ax-message-content\"\n [class]=\"'ax-type-' + messageType()\"\n [class.ax-state-own]=\"!chatMessage().fromId\"\n [class.ax-state-other]=\"chatMessage().fromId\"\n>\n <div class=\"ax-action-button\">\n @if (chatMessage()?.userName) {\n <div class=\"ax-message-user-name\">\n <ax-text>{{ chatMessage().userName }}</ax-text>\n </div>\n }\n\n @if (chatMessage()?.showActionButton) {\n <div class=\"ax-message-action-button\">\n <ax-menu openOn=\"click\" [hasArrow]=\"false\">\n <ax-menu-item class=\"ax-parent-menu-item\">\n <ax-text (click)=\"handleActionClick()\">...</ax-text>\n\n @for (item of actionButtonItemsPrivate(); track item.text) {\n <ax-menu-item [color]=\"item.color\" (onClick)=\"item.onClick(chatMessage().id)\">\n <ax-text>{{ item.text }}</ax-text>\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n\n @for (innerItem of item.items; track innerItem.text) {\n <ax-menu-item [color]=\"innerItem.color\" (onClick)=\"innerItem.onClick(chatMessage().id)\">\n <ax-text>{{ innerItem.text }}</ax-text>\n <ax-prefix>\n <ax-icon [icon]=\"innerItem.icon\"></ax-icon>\n </ax-prefix>\n </ax-menu-item>\n }\n </ax-menu-item>\n }\n </ax-menu-item>\n </ax-menu>\n </div>\n }\n </div>\n\n <ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"_handleAttached($event)\"></ng-template>\n\n <div class=\"ax-chat-message-status\">\n <div class=\"ax-message-prefix\"></div>\n <div>\n <div class=\"ax-message-suffix\"></div>\n <span>\n {{ chatMessage().sendTime | format: 'datetime' : 'HH:mm' | async }}\n </span>\n <span>\n @if (isOwn) {\n @if (chatMessage().deliverTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-check ax-message-status\"></i>\n }\n @if (chatMessage().readTime && chatMessage().sendTime) {\n <i class=\"ax-icon ax-icon-dobble-check ax-message-status\"></i>\n }\n }\n </span>\n </div>\n </div>\n</div>\n\n@if (!chatMessage().sendTime) {\n <ax-button class=\"ax-resend-button ax-xs\" color=\"danger\" #b>\n <ax-icon class=\"ax-icon ax-icon-error\"></ax-icon>\n\n <ax-popover [target]=\"b\" placement=\"bottom-end\" #popover>\n <div>\n <ax-content> </ax-content>\n <ax-button-item-list>\n @if (chatMessage().onResendClick) {\n <ax-button-item text=\"Resend\" (onClick)=\"handleResendClick()\">\n <ax-icon class=\"ax-icon ax-icon-reload ax-bold\"></ax-icon>\n </ax-button-item>\n }\n @if (chatMessage().onDeleteClick) {\n <ax-button-item text=\"Delete\" color=\"danger\" (onClick)=\"handleDeleteClick()\">\n <ax-icon class=\"ax-icon ax-icon-clear ax-bold\"></ax-icon>\n </ax-button-item>\n }\n </ax-button-item-list>\n </div>\n </ax-popover>\n </ax-button>\n}\n\n@if (!isOwn && isReplyArrowShown()) {\n <i (click)=\"replyHandler(chatMessage())\" class=\"fa-solid fa-reply ax-rotate ax-cursor-pointer\"></i>\n}\n", styles: ["ax-conversation-message{display:flex;align-items:flex-end;margin:.5rem}ax-conversation-message .ax-message-reply-container{padding:.75rem}ax-conversation-message .ax-message-reply-container,ax-conversation-message .ax-image-reply-container,ax-conversation-message .ax-video-reply-container{border-left:.3rem solid rgb(var(--ax-comp-conversation-border-color));border-radius:.75rem;margin-bottom:.25rem;overflow:hidden}ax-conversation-message .ax-message-reply-container .file,ax-conversation-message .ax-image-reply-container .file,ax-conversation-message .ax-video-reply-container .file{display:flex;align-items:center}ax-conversation-message .ax-message-reply-container .file i,ax-conversation-message .ax-image-reply-container .file i,ax-conversation-message .ax-video-reply-container .file i{margin-inline-end:.5rem}ax-conversation-message .ax-message-reply-container img,ax-conversation-message .ax-message-reply-container video,ax-conversation-message .ax-image-reply-container img,ax-conversation-message .ax-image-reply-container video,ax-conversation-message .ax-video-reply-container img,ax-conversation-message .ax-video-reply-container video{max-width:6rem}ax-conversation-message.ax-state-own{justify-content:flex-end}ax-conversation-message.ax-state-own .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-own-color-fore));color:rgb(var(--ax-comp-conversation-own-color))}ax-conversation-message.ax-state-own .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-own-reply-color));color:rgb(var(--ax-comp-conversation-own-reply-color-fore))}ax-conversation-message.ax-state-other .ax-conversation-controller button{background-color:rgb(var(--ax-comp-conversation-other-color-fore));color:rgb(var(--ax-comp-conversation-other-color))}ax-conversation-message.ax-state-other .ax-message-reply-container{background-color:rgb(var(--ax-comp-conversation-other-reply-color));color:rgb(var(--ax-comp-conversation-other-reply-color-fore))}ax-conversation-message .ax-conversation-controller button{width:2.5rem;height:2.5rem;border-radius:999rem;display:flex;align-items:center;justify-content:center}ax-conversation-message .ax-conversation-controller button ax-loading-spinner{display:flex}ax-conversation-message .ax-conversation-controller button.ax-state-error{background-color:rgb(var(--ax-sys-color-danger-surface));color:rgb(var(--ax-sys-color-danger-fore))}ax-conversation-message .ax-conversation-controller button>i{width:1.5rem;height:1.5rem;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}ax-conversation-message .ax-message-content{display:flex;flex-direction:column;gap:.25rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;border-radius:var(--ax-sys-border-radius);overflow:hidden;width:fit-content;max-width:50%;margin-inline-start:.5rem}ax-conversation-message .ax-message-content .ax-action-button{display:grid;grid-template-columns:repeat(2,1fr)}ax-conversation-message .ax-message-content .ax-action-button .ax-message-user-name{justify-self:start;grid-column:1}ax-conversation-message .ax-message-content .ax-action-button .ax-message-action-button{justify-self:end;grid-column:2}ax-conversation-message .ax-message-content .ax-action-button ax-menu.ax-action-list-horizontal{min-width:0;gap:0}ax-conversation-message .ax-message-content .ax-action-button .ax-parent-menu-item{height:auto!important;padding:0!important}ax-conversation-message .ax-message-content.ax-type-video{padding:0}ax-conversation-message .ax-message-content.ax-type-image{padding:0}ax-conversation-message .ax-message-content .ax-chat-message-status{padding:.25rem .5rem}ax-conversation-message .ax-message-content.ax-state-own{border-end-end-radius:0!important;background-color:rgb(var(--ax-comp-conversation-own-color));color:rgb(var(--ax-comp-conversation-own-color-fore));justify-content:flex-end}ax-conversation-message .ax-message-content.ax-state-own .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-own-color-fore))}ax-conversation-message .ax-message-content.ax-state-other{border-end-start-radius:0!important;background-color:rgb(var(--ax-comp-conversation-other-color));color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content.ax-state-other .ax-chat-message-status{color:rgb(var(--ax-comp-conversation-other-color-fore))}ax-conversation-message .ax-message-content .ax-chat-message-status{display:flex;justify-content:space-between;align-items:center;font-size:.75rem}ax-conversation-message .ax-message-content .ax-chat-message-status>div{display:flex;gap:.125rem;align-items:center}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-message-status{color:rgb(var(--ax-comp-conversation-status-color))}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon{font-weight:700;font-size:.875rem}ax-conversation-message .ax-message-content .ax-chat-message-status .ax-icon-error{color:rgb(var(--ax-sys-color-danger-surface))}ax-conversation-message .ax-message-content ax-prefix,ax-conversation-message .ax-message-content ax-suffix{display:none}ax-conversation-message .ax-resend-button{border-radius:999rem}ax-conversation-message .ax-cursor-pointer{cursor:pointer}ax-conversation-message .ax-rounded{border-radius:.75rem}ax-conversation-message .ax-message-content p{padding:.75rem;color:rgba(var(--ax-sys-color-on-primary))}ax-conversation-message .ax-rotate{transform:scaleX(-1);margin-inline-start:.5rem}@media (min-width: 320px) and (max-width: 640px){ax-conversation-message ax-avatar{display:none!important}ax-conversation-message .ax-message-content{max-width:100%}}\n"], dependencies: [{ kind: "component", type: AXAvatarComponent, selector: "ax-avatar", inputs: ["color", "size", "shape", "look"], outputs: ["sizeChange"] }, { kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "repositionOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "component", type: AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i1$1.AXMenuItemComponent, selector: "ax-menu-item", inputs: ["name", "data", "disabled", "color"], outputs: ["onClick"] }, { kind: "component", type: i1$1.AXMenuComponent, selector: "ax-menu", inputs: ["orientation", "openOn", "closeOn", "items", "hasArrow"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXFormatPipe, name: "format" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
526
526
|
}
|
|
527
527
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImport: i0, type: AXConversationMessageComponent, decorators: [{
|
|
528
528
|
type: Component,
|