UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

830 lines (735 loc) 29.2 kB
import * as i0 from '@angular/core'; import { PLATFORM_ID, Component, Inject, Input, Output, ContentChildren, NgModule } from '@angular/core'; import DxChat from 'devextreme/ui/chat'; import * as i1 from 'devextreme-angular/core'; import { DxComponent, DxTemplateHost, WatcherHelper, NestedOptionHost, IterableDifferHelper, DxIntegrationModule, DxTemplateModule } from 'devextreme-angular/core'; import { DxiAlertComponent, DxiItemComponent, DxiTypingUserComponent, DxiAlertModule, DxoDayHeaderFormatModule, DxiItemModule, DxoAuthorModule, DxoMessageTimestampFormatModule, DxiTypingUserModule, DxoUserModule } from 'devextreme-angular/ui/nested'; import { DxiChatAlertComponent, DxiChatItemComponent, DxiChatTypingUserComponent, DxiChatAlertModule, DxoChatAuthorModule, DxoChatDayHeaderFormatModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, DxiChatTypingUserModule, DxoChatUserModule } from 'devextreme-angular/ui/chat/nested'; /*! * devextreme-angular * Version: 24.2.6 * Build date: Mon Mar 17 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * * This software may be modified and distributed under the terms * of the MIT license. See the LICENSE file in the root of the project for details. * * https://github.com/DevExpress/devextreme-angular */ /* tslint:disable:max-line-length */ /** * The Chat UI component is an interactive interface that allows users to send and receive messages in real time. */ class DxChatComponent extends DxComponent { _watcherHelper; _idh; instance = null; /** * Specifies the shortcut key that sets focus on the UI component. */ get accessKey() { return this._getOption('accessKey'); } set accessKey(value) { this._setOption('accessKey', value); } /** * Specifies whether the UI component changes its visual state as a result of user interaction. */ get activeStateEnabled() { return this._getOption('activeStateEnabled'); } set activeStateEnabled(value) { this._setOption('activeStateEnabled', value); } /** * A list of available alerts. */ get alerts() { return this._getOption('alerts'); } set alerts(value) { this._setOption('alerts', value); } /** * Binds the UI component to data. */ get dataSource() { return this._getOption('dataSource'); } set dataSource(value) { this._setOption('dataSource', value); } /** * Specifies the day header format. */ get dayHeaderFormat() { return this._getOption('dayHeaderFormat'); } set dayHeaderFormat(value) { this._setOption('dayHeaderFormat', value); } /** * Specifies whether the UI component responds to user interaction. */ get disabled() { return this._getOption('disabled'); } set disabled(value) { this._setOption('disabled', value); } /** * Specifies the global attributes to be attached to the UI component's container element. */ get elementAttr() { return this._getOption('elementAttr'); } set elementAttr(value) { this._setOption('elementAttr', value); } /** * Specifies whether the Chat's input element can be focused using keyboard navigation. */ get focusStateEnabled() { return this._getOption('focusStateEnabled'); } set focusStateEnabled(value) { this._setOption('focusStateEnabled', value); } /** * Specifies the UI component's height. */ get height() { return this._getOption('height'); } set height(value) { this._setOption('height', value); } /** * Specifies text for a hint that appears when a user pauses on the UI component. */ get hint() { return this._getOption('hint'); } set hint(value) { this._setOption('hint', value); } /** * Specifies whether the UI component changes its state when a user pauses on it. */ get hoverStateEnabled() { return this._getOption('hoverStateEnabled'); } set hoverStateEnabled(value) { this._setOption('hoverStateEnabled', value); } /** * Specifies an array of chat messages. */ get items() { return this._getOption('items'); } set items(value) { this._setOption('items', value); } /** * Specifies a custom template for a chat message. */ get messageTemplate() { return this._getOption('messageTemplate'); } set messageTemplate(value) { this._setOption('messageTemplate', value); } /** * Specifies the message timestamp format. */ get messageTimestampFormat() { return this._getOption('messageTimestampFormat'); } set messageTimestampFormat(value) { this._setOption('messageTimestampFormat', value); } /** * Specifies whether the Chat UI component displays newly entered messages immediately. This property only applies if dataSource is used. */ get reloadOnChange() { return this._getOption('reloadOnChange'); } set reloadOnChange(value) { this._setOption('reloadOnChange', value); } /** * Switches the UI component to a right-to-left representation. */ get rtlEnabled() { return this._getOption('rtlEnabled'); } set rtlEnabled(value) { this._setOption('rtlEnabled', value); } /** * Specifies whether to show avatars. */ get showAvatar() { return this._getOption('showAvatar'); } set showAvatar(value) { this._setOption('showAvatar', value); } /** * Specifies whether to show day headers. */ get showDayHeaders() { return this._getOption('showDayHeaders'); } set showDayHeaders(value) { this._setOption('showDayHeaders', value); } /** * Specifies whether to show message time stamps. */ get showMessageTimestamp() { return this._getOption('showMessageTimestamp'); } set showMessageTimestamp(value) { this._setOption('showMessageTimestamp', value); } /** * Specifies whether to show user names. */ get showUserName() { return this._getOption('showUserName'); } set showUserName(value) { this._setOption('showUserName', value); } /** * An array of users who are currently typing. */ get typingUsers() { return this._getOption('typingUsers'); } set typingUsers(value) { this._setOption('typingUsers', value); } /** * Specifies the current chat user (messages displayed on the right side). */ get user() { return this._getOption('user'); } set user(value) { this._setOption('user', value); } /** * Specifies whether the UI component is visible. */ get visible() { return this._getOption('visible'); } set visible(value) { this._setOption('visible', value); } /** * Specifies the UI component's width. */ get width() { return this._getOption('width'); } set width(value) { this._setOption('width', value); } /** * A function that is executed before the UI component is disposed of. */ onDisposing; /** * A function used in JavaScript frameworks to save the UI component instance. */ onInitialized; /** * A function that is executed after a message is entered into the chat. */ onMessageEntered; /** * A function that is executed after a UI component property is changed. */ onOptionChanged; /** * A function that is called 2 seconds after a user stops typing or after a message is entered. */ onTypingEnd; /** * A function that is called after a user starts typing. */ onTypingStart; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ accessKeyChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ activeStateEnabledChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ alertsChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ dataSourceChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ dayHeaderFormatChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ disabledChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ elementAttrChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ focusStateEnabledChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ heightChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ hintChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ hoverStateEnabledChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ itemsChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ messageTemplateChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ messageTimestampFormatChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ reloadOnChangeChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ rtlEnabledChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ showAvatarChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ showDayHeadersChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ showMessageTimestampChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ showUserNameChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ typingUsersChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ userChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ visibleChange; /** * This member supports the internal infrastructure and is not intended to be used directly from your code. */ widthChange; get alertsChildren() { return this._getOption('alerts'); } set alertsChildren(value) { this._setChildren('alerts', value, 'DxiChatAlertComponent'); } get itemsChildren() { return this._getOption('items'); } set itemsChildren(value) { this._setChildren('items', value, 'DxiChatItemComponent'); } get typingUsersChildren() { return this._getOption('typingUsers'); } set typingUsersChildren(value) { this._setChildren('typingUsers', value, 'DxiChatTypingUserComponent'); } get alertsLegacyChildren() { return this._getOption('alerts'); } set alertsLegacyChildren(value) { this._setChildren('alerts', value, 'DxiAlertComponent'); } get itemsLegacyChildren() { return this._getOption('items'); } set itemsLegacyChildren(value) { this._setChildren('items', value, 'DxiItemComponent'); } get typingUsersLegacyChildren() { return this._getOption('typingUsers'); } set typingUsersLegacyChildren(value) { this._setChildren('typingUsers', value, 'DxiTypingUserComponent'); } constructor(elementRef, ngZone, templateHost, _watcherHelper, _idh, optionHost, transferState, platformId) { super(elementRef, ngZone, templateHost, _watcherHelper, transferState, platformId); this._watcherHelper = _watcherHelper; this._idh = _idh; this._createEventEmitters([ { subscribe: 'disposing', emit: 'onDisposing' }, { subscribe: 'initialized', emit: 'onInitialized' }, { subscribe: 'messageEntered', emit: 'onMessageEntered' }, { subscribe: 'optionChanged', emit: 'onOptionChanged' }, { subscribe: 'typingEnd', emit: 'onTypingEnd' }, { subscribe: 'typingStart', emit: 'onTypingStart' }, { emit: 'accessKeyChange' }, { emit: 'activeStateEnabledChange' }, { emit: 'alertsChange' }, { emit: 'dataSourceChange' }, { emit: 'dayHeaderFormatChange' }, { emit: 'disabledChange' }, { emit: 'elementAttrChange' }, { emit: 'focusStateEnabledChange' }, { emit: 'heightChange' }, { emit: 'hintChange' }, { emit: 'hoverStateEnabledChange' }, { emit: 'itemsChange' }, { emit: 'messageTemplateChange' }, { emit: 'messageTimestampFormatChange' }, { emit: 'reloadOnChangeChange' }, { emit: 'rtlEnabledChange' }, { emit: 'showAvatarChange' }, { emit: 'showDayHeadersChange' }, { emit: 'showMessageTimestampChange' }, { emit: 'showUserNameChange' }, { emit: 'typingUsersChange' }, { emit: 'userChange' }, { emit: 'visibleChange' }, { emit: 'widthChange' } ]); this._idh.setHost(this); optionHost.setHost(this); } _createInstance(element, options) { return new DxChat(element, options); } ngOnDestroy() { this._destroyWidget(); } ngOnChanges(changes) { super.ngOnChanges(changes); this.setupChanges('alerts', changes); this.setupChanges('dataSource', changes); this.setupChanges('items', changes); this.setupChanges('typingUsers', changes); } setupChanges(prop, changes) { if (!(prop in this._optionsToUpdate)) { this._idh.setup(prop, changes); } } ngDoCheck() { this._idh.doCheck('alerts'); this._idh.doCheck('dataSource'); this._idh.doCheck('items'); this._idh.doCheck('typingUsers'); this._watcherHelper.checkWatchers(); super.ngDoCheck(); super.clearChangedOptions(); } _setOption(name, value) { let isSetup = this._idh.setupSingle(name, value); let isChanged = this._idh.getChanges(name, value) !== null; if (isSetup || isChanged) { super._setOption(name, value); } } /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxChatComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DxTemplateHost }, { token: i1.WatcherHelper }, { token: i1.IterableDifferHelper }, { token: i1.NestedOptionHost }, { token: i0.TransferState }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DxChatComponent, selector: "dx-chat", inputs: { accessKey: "accessKey", activeStateEnabled: "activeStateEnabled", alerts: "alerts", dataSource: "dataSource", dayHeaderFormat: "dayHeaderFormat", disabled: "disabled", elementAttr: "elementAttr", focusStateEnabled: "focusStateEnabled", height: "height", hint: "hint", hoverStateEnabled: "hoverStateEnabled", items: "items", messageTemplate: "messageTemplate", messageTimestampFormat: "messageTimestampFormat", reloadOnChange: "reloadOnChange", rtlEnabled: "rtlEnabled", showAvatar: "showAvatar", showDayHeaders: "showDayHeaders", showMessageTimestamp: "showMessageTimestamp", showUserName: "showUserName", typingUsers: "typingUsers", user: "user", visible: "visible", width: "width" }, outputs: { onDisposing: "onDisposing", onInitialized: "onInitialized", onMessageEntered: "onMessageEntered", onOptionChanged: "onOptionChanged", onTypingEnd: "onTypingEnd", onTypingStart: "onTypingStart", accessKeyChange: "accessKeyChange", activeStateEnabledChange: "activeStateEnabledChange", alertsChange: "alertsChange", dataSourceChange: "dataSourceChange", dayHeaderFormatChange: "dayHeaderFormatChange", disabledChange: "disabledChange", elementAttrChange: "elementAttrChange", focusStateEnabledChange: "focusStateEnabledChange", heightChange: "heightChange", hintChange: "hintChange", hoverStateEnabledChange: "hoverStateEnabledChange", itemsChange: "itemsChange", messageTemplateChange: "messageTemplateChange", messageTimestampFormatChange: "messageTimestampFormatChange", reloadOnChangeChange: "reloadOnChangeChange", rtlEnabledChange: "rtlEnabledChange", showAvatarChange: "showAvatarChange", showDayHeadersChange: "showDayHeadersChange", showMessageTimestampChange: "showMessageTimestampChange", showUserNameChange: "showUserNameChange", typingUsersChange: "typingUsersChange", userChange: "userChange", visibleChange: "visibleChange", widthChange: "widthChange" }, host: { attributes: { "ngSkipHydration": "true" } }, providers: [ DxTemplateHost, WatcherHelper, NestedOptionHost, IterableDifferHelper ], queries: [{ propertyName: "alertsChildren", predicate: DxiChatAlertComponent }, { propertyName: "itemsChildren", predicate: DxiChatItemComponent }, { propertyName: "typingUsersChildren", predicate: DxiChatTypingUserComponent }, { propertyName: "alertsLegacyChildren", predicate: DxiAlertComponent }, { propertyName: "itemsLegacyChildren", predicate: DxiItemComponent }, { propertyName: "typingUsersLegacyChildren", predicate: DxiTypingUserComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: '', isInline: true }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxChatComponent, decorators: [{ type: Component, args: [{ selector: 'dx-chat', template: '', host: { ngSkipHydration: 'true' }, providers: [ DxTemplateHost, WatcherHelper, NestedOptionHost, IterableDifferHelper ] }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DxTemplateHost }, { type: i1.WatcherHelper }, { type: i1.IterableDifferHelper }, { type: i1.NestedOptionHost }, { type: i0.TransferState }, { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }], propDecorators: { accessKey: [{ type: Input }], activeStateEnabled: [{ type: Input }], alerts: [{ type: Input }], dataSource: [{ type: Input }], dayHeaderFormat: [{ type: Input }], disabled: [{ type: Input }], elementAttr: [{ type: Input }], focusStateEnabled: [{ type: Input }], height: [{ type: Input }], hint: [{ type: Input }], hoverStateEnabled: [{ type: Input }], items: [{ type: Input }], messageTemplate: [{ type: Input }], messageTimestampFormat: [{ type: Input }], reloadOnChange: [{ type: Input }], rtlEnabled: [{ type: Input }], showAvatar: [{ type: Input }], showDayHeaders: [{ type: Input }], showMessageTimestamp: [{ type: Input }], showUserName: [{ type: Input }], typingUsers: [{ type: Input }], user: [{ type: Input }], visible: [{ type: Input }], width: [{ type: Input }], onDisposing: [{ type: Output }], onInitialized: [{ type: Output }], onMessageEntered: [{ type: Output }], onOptionChanged: [{ type: Output }], onTypingEnd: [{ type: Output }], onTypingStart: [{ type: Output }], accessKeyChange: [{ type: Output }], activeStateEnabledChange: [{ type: Output }], alertsChange: [{ type: Output }], dataSourceChange: [{ type: Output }], dayHeaderFormatChange: [{ type: Output }], disabledChange: [{ type: Output }], elementAttrChange: [{ type: Output }], focusStateEnabledChange: [{ type: Output }], heightChange: [{ type: Output }], hintChange: [{ type: Output }], hoverStateEnabledChange: [{ type: Output }], itemsChange: [{ type: Output }], messageTemplateChange: [{ type: Output }], messageTimestampFormatChange: [{ type: Output }], reloadOnChangeChange: [{ type: Output }], rtlEnabledChange: [{ type: Output }], showAvatarChange: [{ type: Output }], showDayHeadersChange: [{ type: Output }], showMessageTimestampChange: [{ type: Output }], showUserNameChange: [{ type: Output }], typingUsersChange: [{ type: Output }], userChange: [{ type: Output }], visibleChange: [{ type: Output }], widthChange: [{ type: Output }], alertsChildren: [{ type: ContentChildren, args: [DxiChatAlertComponent] }], itemsChildren: [{ type: ContentChildren, args: [DxiChatItemComponent] }], typingUsersChildren: [{ type: ContentChildren, args: [DxiChatTypingUserComponent] }], alertsLegacyChildren: [{ type: ContentChildren, args: [DxiAlertComponent] }], itemsLegacyChildren: [{ type: ContentChildren, args: [DxiItemComponent] }], typingUsersLegacyChildren: [{ type: ContentChildren, args: [DxiTypingUserComponent] }] } }); class DxChatModule { /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxChatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); /** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DxChatModule, declarations: [DxChatComponent], imports: [DxiAlertModule, DxoDayHeaderFormatModule, DxiItemModule, DxoAuthorModule, DxoMessageTimestampFormatModule, DxiTypingUserModule, DxoUserModule, DxiChatAlertModule, DxoChatAuthorModule, DxoChatDayHeaderFormatModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, DxiChatTypingUserModule, DxoChatUserModule, DxIntegrationModule, DxTemplateModule], exports: [DxChatComponent, DxiAlertModule, DxoDayHeaderFormatModule, DxiItemModule, DxoAuthorModule, DxoMessageTimestampFormatModule, DxiTypingUserModule, DxoUserModule, DxiChatAlertModule, DxoChatAuthorModule, DxoChatDayHeaderFormatModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, DxiChatTypingUserModule, DxoChatUserModule, DxTemplateModule] }); /** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxChatModule, imports: [DxiAlertModule, DxoDayHeaderFormatModule, DxiItemModule, DxoAuthorModule, DxoMessageTimestampFormatModule, DxiTypingUserModule, DxoUserModule, DxiChatAlertModule, DxoChatAuthorModule, DxoChatDayHeaderFormatModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, DxiChatTypingUserModule, DxoChatUserModule, DxIntegrationModule, DxTemplateModule, DxiAlertModule, DxoDayHeaderFormatModule, DxiItemModule, DxoAuthorModule, DxoMessageTimestampFormatModule, DxiTypingUserModule, DxoUserModule, DxiChatAlertModule, DxoChatAuthorModule, DxoChatDayHeaderFormatModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, DxiChatTypingUserModule, DxoChatUserModule, DxTemplateModule] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DxChatModule, decorators: [{ type: NgModule, args: [{ imports: [ DxiAlertModule, DxoDayHeaderFormatModule, DxiItemModule, DxoAuthorModule, DxoMessageTimestampFormatModule, DxiTypingUserModule, DxoUserModule, DxiChatAlertModule, DxoChatAuthorModule, DxoChatDayHeaderFormatModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, DxiChatTypingUserModule, DxoChatUserModule, DxIntegrationModule, DxTemplateModule ], declarations: [ DxChatComponent ], exports: [ DxChatComponent, DxiAlertModule, DxoDayHeaderFormatModule, DxiItemModule, DxoAuthorModule, DxoMessageTimestampFormatModule, DxiTypingUserModule, DxoUserModule, DxiChatAlertModule, DxoChatAuthorModule, DxoChatDayHeaderFormatModule, DxiChatItemModule, DxoChatMessageTimestampFormatModule, DxiChatTypingUserModule, DxoChatUserModule, DxTemplateModule ] }] }] }); /** * Generated bundle index. Do not edit. */ export { DxChatComponent, DxChatModule }; //# sourceMappingURL=devextreme-angular-ui-chat.mjs.map