@acorex/components 21.0.1-next.50 → 21.0.1-next.52
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/fesm2022/acorex-components-accordion.mjs +18 -23
- package/fesm2022/acorex-components-accordion.mjs.map +1 -1
- package/fesm2022/acorex-components-action-sheet.mjs +17 -17
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-alert.mjs +14 -14
- package/fesm2022/acorex-components-alert.mjs.map +1 -1
- package/fesm2022/acorex-components-aspect-ratio.mjs +4 -4
- package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
- package/fesm2022/acorex-components-audio-wave.mjs +12 -11
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +9 -9
- package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
- package/fesm2022/acorex-components-avatar.mjs +13 -13
- package/fesm2022/acorex-components-avatar.mjs.map +1 -1
- package/fesm2022/acorex-components-badge.mjs +10 -10
- package/fesm2022/acorex-components-badge.mjs.map +1 -1
- package/fesm2022/acorex-components-bottom-navigation.mjs +12 -12
- package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs +12 -12
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs +26 -22
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-button.mjs +20 -20
- package/fesm2022/acorex-components-button.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +18 -18
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +11 -11
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-chips.mjs +12 -14
- package/fesm2022/acorex-components-chips.mjs.map +1 -1
- package/fesm2022/acorex-components-circular-progress.mjs +13 -11
- package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-code-editor.mjs +14 -14
- package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-collapse.mjs +22 -19
- package/fesm2022/acorex-components-collapse.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs +11 -11
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +31 -31
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +11 -11
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +33 -33
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +56 -56
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation2.mjs +229 -229
- package/fesm2022/acorex-components-conversation2.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +53 -53
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-list.mjs +6 -6
- package/fesm2022/acorex-components-data-list.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +33 -33
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +65 -493
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-box.mjs +10 -10
- package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-input.mjs +10 -10
- package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +11 -11
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +48 -41
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +13 -13
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer-legacy.mjs +14 -14
- package/fesm2022/acorex-components-drawer-legacy.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +16 -17
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +9 -9
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +18 -18
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-editor.mjs +12 -12
- package/fesm2022/acorex-components-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-file-explorer.mjs +28 -28
- package/fesm2022/acorex-components-file-explorer.mjs.map +1 -1
- package/fesm2022/acorex-components-flow-chart.mjs +18 -18
- package/fesm2022/acorex-components-flow-chart.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +35 -27
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-grid-layout-builder.mjs +12 -13
- package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +48 -48
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-image.mjs +10 -10
- package/fesm2022/acorex-components-image.mjs.map +1 -1
- package/fesm2022/acorex-components-json-viewer.mjs +9 -9
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +9 -7
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-kbd.mjs +10 -10
- package/fesm2022/acorex-components-kbd.mjs.map +1 -1
- package/fesm2022/acorex-components-label.mjs +9 -9
- package/fesm2022/acorex-components-label.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +10 -10
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-loading-dialog.mjs +12 -12
- package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs +23 -23
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-map.mjs +15 -15
- package/fesm2022/acorex-components-map.mjs.map +1 -1
- package/fesm2022/acorex-components-media-viewer.mjs +45 -45
- package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +29 -29
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/{acorex-components-modal-acorex-components-modal-DwBY73dZ.mjs → acorex-components-modal-acorex-components-modal-B03hJbP8.mjs} +24 -24
- package/fesm2022/acorex-components-modal-acorex-components-modal-B03hJbP8.mjs.map +1 -0
- package/fesm2022/acorex-components-modal-modal-content.component-DrHm0mZ4.mjs +214 -0
- package/fesm2022/acorex-components-modal-modal-content.component-DrHm0mZ4.mjs.map +1 -0
- package/fesm2022/acorex-components-modal.mjs +1 -1
- package/fesm2022/acorex-components-navbar.mjs +9 -9
- package/fesm2022/acorex-components-navbar.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +13 -13
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box-legacy.mjs +14 -32
- package/fesm2022/acorex-components-number-box-legacy.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box.mjs +10 -10
- package/fesm2022/acorex-components-number-box.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +10 -10
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-page.mjs +10 -10
- package/fesm2022/acorex-components-page.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +35 -40
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +14 -14
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-pdf-reader.mjs +9 -9
- package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +10 -10
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +20 -20
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +8 -8
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-popup.mjs +17 -17
- package/fesm2022/acorex-components-popup.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs +11 -9
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-qrcode.mjs +10 -10
- package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
- package/fesm2022/acorex-components-query-builder.mjs +9 -9
- package/fesm2022/acorex-components-query-builder.mjs.map +1 -1
- package/fesm2022/acorex-components-radio.mjs +10 -9
- package/fesm2022/acorex-components-radio.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs +40 -38
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs +11 -11
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-rate-picker.mjs +20 -35
- package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-rest-api-generator.mjs +25 -25
- package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
- package/fesm2022/acorex-components-result.mjs +8 -8
- package/fesm2022/acorex-components-result.mjs.map +1 -1
- package/fesm2022/acorex-components-routing-progress.mjs +8 -8
- package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
- package/fesm2022/acorex-components-rrule.mjs +11 -11
- package/fesm2022/acorex-components-rrule.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler-picker.mjs +73 -73
- package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +99 -70
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-scss.mjs +4 -4
- package/fesm2022/acorex-components-scss.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +17 -11
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +14 -12
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list-2.mjs +12 -12
- package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs +10 -10
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +81 -24
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-skeleton.mjs +8 -8
- package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
- package/fesm2022/acorex-components-slider.mjs +13 -13
- package/fesm2022/acorex-components-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-sliding-item.mjs +19 -19
- package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
- package/fesm2022/acorex-components-step-wizard.mjs +16 -16
- package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
- package/fesm2022/acorex-components-switch.mjs +14 -14
- package/fesm2022/acorex-components-switch.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +17 -17
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-tag-box.mjs +10 -10
- package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
- package/fesm2022/acorex-components-tag.mjs +10 -10
- package/fesm2022/acorex-components-tag.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +9 -9
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-text-box.mjs +27 -12
- package/fesm2022/acorex-components-text-box.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs +8 -8
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/fesm2022/acorex-components-time-line.mjs +14 -14
- package/fesm2022/acorex-components-time-line.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +13 -13
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-toolbar.mjs +10 -10
- package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +14 -14
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view-legacy.mjs +15 -15
- package/fesm2022/acorex-components-tree-view-legacy.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +12 -12
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +17 -17
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/fesm2022/acorex-components-video-player.mjs +9 -9
- package/fesm2022/acorex-components-video-player.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +45 -45
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/fesm2022/acorex-components.mjs.map +1 -1
- package/package.json +127 -127
- package/{accordion/index.d.ts → types/acorex-components-accordion.d.ts} +0 -1
- package/{button-group/index.d.ts → types/acorex-components-button-group.d.ts} +10 -8
- package/{button/index.d.ts → types/acorex-components-button.d.ts} +3 -3
- package/{check-box/index.d.ts → types/acorex-components-check-box.d.ts} +1 -1
- package/{chips/index.d.ts → types/acorex-components-chips.d.ts} +3 -8
- package/{collapse/index.d.ts → types/acorex-components-collapse.d.ts} +4 -6
- package/{conversation2/index.d.ts → types/acorex-components-conversation2.d.ts} +827 -827
- package/{data-table/index.d.ts → types/acorex-components-data-table.d.ts} +13 -256
- package/{grid-layout-builder/index.d.ts → types/acorex-components-grid-layout-builder.d.ts} +0 -1
- package/{loading/index.d.ts → types/acorex-components-loading.d.ts} +1 -1
- package/{menu/index.d.ts → types/acorex-components-menu.d.ts} +6 -6
- package/{paint/index.d.ts → types/acorex-components-paint.d.ts} +1 -6
- package/{radio/index.d.ts → types/acorex-components-radio.d.ts} +1 -1
- package/{rate-picker/index.d.ts → types/acorex-components-rate-picker.d.ts} +5 -15
- package/{scheduler-picker/index.d.ts → types/acorex-components-scheduler-picker.d.ts} +82 -81
- package/{scheduler/index.d.ts → types/acorex-components-scheduler.d.ts} +19 -11
- package/{select-box/index.d.ts → types/acorex-components-select-box.d.ts} +1 -1
- package/{side-menu/index.d.ts → types/acorex-components-side-menu.d.ts} +9 -2
- package/{slider/index.d.ts → types/acorex-components-slider.d.ts} +2 -2
- package/{tabs/index.d.ts → types/acorex-components-tabs.d.ts} +1 -1
- package/{tag/index.d.ts → types/acorex-components-tag.d.ts} +3 -3
- package/{text-box/index.d.ts → types/acorex-components-text-box.d.ts} +2 -0
- package/fesm2022/acorex-components-modal-acorex-components-modal-DwBY73dZ.mjs.map +0 -1
- package/fesm2022/acorex-components-modal-modal-content.component-DPMt_zaI.mjs +0 -212
- package/fesm2022/acorex-components-modal-modal-content.component-DPMt_zaI.mjs.map +0 -1
- /package/{action-sheet/index.d.ts → types/acorex-components-action-sheet.d.ts} +0 -0
- /package/{alert/index.d.ts → types/acorex-components-alert.d.ts} +0 -0
- /package/{aspect-ratio/index.d.ts → types/acorex-components-aspect-ratio.d.ts} +0 -0
- /package/{audio-wave/index.d.ts → types/acorex-components-audio-wave.d.ts} +0 -0
- /package/{autocomplete/index.d.ts → types/acorex-components-autocomplete.d.ts} +0 -0
- /package/{avatar/index.d.ts → types/acorex-components-avatar.d.ts} +0 -0
- /package/{badge/index.d.ts → types/acorex-components-badge.d.ts} +0 -0
- /package/{bottom-navigation/index.d.ts → types/acorex-components-bottom-navigation.d.ts} +0 -0
- /package/{breadcrumbs/index.d.ts → types/acorex-components-breadcrumbs.d.ts} +0 -0
- /package/{calendar/index.d.ts → types/acorex-components-calendar.d.ts} +0 -0
- /package/{circular-progress/index.d.ts → types/acorex-components-circular-progress.d.ts} +0 -0
- /package/{code-editor/index.d.ts → types/acorex-components-code-editor.d.ts} +0 -0
- /package/{color-box/index.d.ts → types/acorex-components-color-box.d.ts} +0 -0
- /package/{color-palette/index.d.ts → types/acorex-components-color-palette.d.ts} +0 -0
- /package/{command/index.d.ts → types/acorex-components-command.d.ts} +0 -0
- /package/{comment/index.d.ts → types/acorex-components-comment.d.ts} +0 -0
- /package/{conversation/index.d.ts → types/acorex-components-conversation.d.ts} +0 -0
- /package/{cron-job/index.d.ts → types/acorex-components-cron-job.d.ts} +0 -0
- /package/{data-list/index.d.ts → types/acorex-components-data-list.d.ts} +0 -0
- /package/{data-pager/index.d.ts → types/acorex-components-data-pager.d.ts} +0 -0
- /package/{datetime-box/index.d.ts → types/acorex-components-datetime-box.d.ts} +0 -0
- /package/{datetime-input/index.d.ts → types/acorex-components-datetime-input.d.ts} +0 -0
- /package/{datetime-picker/index.d.ts → types/acorex-components-datetime-picker.d.ts} +0 -0
- /package/{decorators/index.d.ts → types/acorex-components-decorators.d.ts} +0 -0
- /package/{dialog/index.d.ts → types/acorex-components-dialog.d.ts} +0 -0
- /package/{drawer-legacy/index.d.ts → types/acorex-components-drawer-legacy.d.ts} +0 -0
- /package/{drawer/index.d.ts → types/acorex-components-drawer.d.ts} +0 -0
- /package/{dropdown-button/index.d.ts → types/acorex-components-dropdown-button.d.ts} +0 -0
- /package/{dropdown/index.d.ts → types/acorex-components-dropdown.d.ts} +0 -0
- /package/{editor/index.d.ts → types/acorex-components-editor.d.ts} +0 -0
- /package/{file-explorer/index.d.ts → types/acorex-components-file-explorer.d.ts} +0 -0
- /package/{flow-chart/index.d.ts → types/acorex-components-flow-chart.d.ts} +0 -0
- /package/{form/index.d.ts → types/acorex-components-form.d.ts} +0 -0
- /package/{image-editor/index.d.ts → types/acorex-components-image-editor.d.ts} +0 -0
- /package/{image/index.d.ts → types/acorex-components-image.d.ts} +0 -0
- /package/{json-viewer/index.d.ts → types/acorex-components-json-viewer.d.ts} +0 -0
- /package/{kanban/index.d.ts → types/acorex-components-kanban.d.ts} +0 -0
- /package/{kbd/index.d.ts → types/acorex-components-kbd.d.ts} +0 -0
- /package/{label/index.d.ts → types/acorex-components-label.d.ts} +0 -0
- /package/{list/index.d.ts → types/acorex-components-list.d.ts} +0 -0
- /package/{loading-dialog/index.d.ts → types/acorex-components-loading-dialog.d.ts} +0 -0
- /package/{map/index.d.ts → types/acorex-components-map.d.ts} +0 -0
- /package/{media-viewer/index.d.ts → types/acorex-components-media-viewer.d.ts} +0 -0
- /package/{modal/index.d.ts → types/acorex-components-modal.d.ts} +0 -0
- /package/{navbar/index.d.ts → types/acorex-components-navbar.d.ts} +0 -0
- /package/{notification/index.d.ts → types/acorex-components-notification.d.ts} +0 -0
- /package/{number-box-legacy/index.d.ts → types/acorex-components-number-box-legacy.d.ts} +0 -0
- /package/{number-box/index.d.ts → types/acorex-components-number-box.d.ts} +0 -0
- /package/{otp/index.d.ts → types/acorex-components-otp.d.ts} +0 -0
- /package/{page/index.d.ts → types/acorex-components-page.d.ts} +0 -0
- /package/{password-box/index.d.ts → types/acorex-components-password-box.d.ts} +0 -0
- /package/{pdf-reader/index.d.ts → types/acorex-components-pdf-reader.d.ts} +0 -0
- /package/{phone-box/index.d.ts → types/acorex-components-phone-box.d.ts} +0 -0
- /package/{picker/index.d.ts → types/acorex-components-picker.d.ts} +0 -0
- /package/{popover/index.d.ts → types/acorex-components-popover.d.ts} +0 -0
- /package/{popup/index.d.ts → types/acorex-components-popup.d.ts} +0 -0
- /package/{progress-bar/index.d.ts → types/acorex-components-progress-bar.d.ts} +0 -0
- /package/{qrcode/index.d.ts → types/acorex-components-qrcode.d.ts} +0 -0
- /package/{query-builder/index.d.ts → types/acorex-components-query-builder.d.ts} +0 -0
- /package/{rail-navigation/index.d.ts → types/acorex-components-rail-navigation.d.ts} +0 -0
- /package/{range-slider/index.d.ts → types/acorex-components-range-slider.d.ts} +0 -0
- /package/{rest-api-generator/index.d.ts → types/acorex-components-rest-api-generator.d.ts} +0 -0
- /package/{result/index.d.ts → types/acorex-components-result.d.ts} +0 -0
- /package/{routing-progress/index.d.ts → types/acorex-components-routing-progress.d.ts} +0 -0
- /package/{rrule/index.d.ts → types/acorex-components-rrule.d.ts} +0 -0
- /package/{scss/index.d.ts → types/acorex-components-scss.d.ts} +0 -0
- /package/{search-box/index.d.ts → types/acorex-components-search-box.d.ts} +0 -0
- /package/{selection-list-2/index.d.ts → types/acorex-components-selection-list-2.d.ts} +0 -0
- /package/{selection-list/index.d.ts → types/acorex-components-selection-list.d.ts} +0 -0
- /package/{skeleton/index.d.ts → types/acorex-components-skeleton.d.ts} +0 -0
- /package/{sliding-item/index.d.ts → types/acorex-components-sliding-item.d.ts} +0 -0
- /package/{step-wizard/index.d.ts → types/acorex-components-step-wizard.d.ts} +0 -0
- /package/{switch/index.d.ts → types/acorex-components-switch.d.ts} +0 -0
- /package/{tag-box/index.d.ts → types/acorex-components-tag-box.d.ts} +0 -0
- /package/{text-area/index.d.ts → types/acorex-components-text-area.d.ts} +0 -0
- /package/{time-duration/index.d.ts → types/acorex-components-time-duration.d.ts} +0 -0
- /package/{time-line/index.d.ts → types/acorex-components-time-line.d.ts} +0 -0
- /package/{toast/index.d.ts → types/acorex-components-toast.d.ts} +0 -0
- /package/{toolbar/index.d.ts → types/acorex-components-toolbar.d.ts} +0 -0
- /package/{tooltip/index.d.ts → types/acorex-components-tooltip.d.ts} +0 -0
- /package/{tree-view-legacy/index.d.ts → types/acorex-components-tree-view-legacy.d.ts} +0 -0
- /package/{tree-view/index.d.ts → types/acorex-components-tree-view.d.ts} +0 -0
- /package/{uploader/index.d.ts → types/acorex-components-uploader.d.ts} +0 -0
- /package/{video-player/index.d.ts → types/acorex-components-video-player.d.ts} +0 -0
- /package/{wysiwyg/index.d.ts → types/acorex-components-wysiwyg.d.ts} +0 -0
- /package/{index.d.ts → types/acorex-components.d.ts} +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as _acorex_components_conversation2 from '@acorex/components/conversation2';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { OnDestroy, ViewContainerRef, WritableSignal, Signal, Type,
|
|
3
|
+
import { OnDestroy, ViewContainerRef, WritableSignal, Signal, Type, TemplateRef, OnInit, EventEmitter, InjectionToken, ElementRef, ModuleWithProviders, Provider } from '@angular/core';
|
|
4
4
|
import { AXComponentCloseEvent, AXHtmlEvent, AXClosableComponent } from '@acorex/cdk/common';
|
|
5
|
+
import { AXUploaderChangedEvent } from '@acorex/cdk/uploader';
|
|
5
6
|
import * as rxjs from 'rxjs';
|
|
6
7
|
import { Observable } from 'rxjs';
|
|
7
8
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
8
9
|
import { AXPopupService } from '@acorex/components/popup';
|
|
9
|
-
import { AXUploaderChangedEvent } from '@acorex/cdk/uploader';
|
|
10
10
|
import { AXPopoverComponent } from '@acorex/components/popover';
|
|
11
11
|
import { AXContextMenuOpeningEvent, AXContextMenuItemsClickEvent } from '@acorex/components/menu';
|
|
12
12
|
import { AXMapMarker } from '@acorex/components/map';
|
|
@@ -648,6 +648,140 @@ interface AXConversationSort {
|
|
|
648
648
|
direction: 'asc' | 'desc';
|
|
649
649
|
}
|
|
650
650
|
|
|
651
|
+
declare class AXComposerComponent implements OnDestroy {
|
|
652
|
+
#private;
|
|
653
|
+
private readonly conversationService;
|
|
654
|
+
private readonly messageApi;
|
|
655
|
+
private readonly composerService;
|
|
656
|
+
private readonly messageListService;
|
|
657
|
+
private readonly popupService;
|
|
658
|
+
private readonly config;
|
|
659
|
+
/** Access registry through conversation service */
|
|
660
|
+
private get registry();
|
|
661
|
+
/** Input element reference */
|
|
662
|
+
private readonly inputElementRef;
|
|
663
|
+
/** Draft text - use service */
|
|
664
|
+
readonly draftText: _angular_core.WritableSignal<string>;
|
|
665
|
+
/** Attachments - use service */
|
|
666
|
+
readonly attachments: _angular_core.WritableSignal<File[]>;
|
|
667
|
+
/** Editing message */
|
|
668
|
+
readonly editingMessage: _angular_core.WritableSignal<any>;
|
|
669
|
+
/** Replying to message */
|
|
670
|
+
readonly replyingToMessage: _angular_core.WritableSignal<AXMessage>;
|
|
671
|
+
/** Show typing indicator - use service */
|
|
672
|
+
readonly showTypingIndicator: _angular_core.WritableSignal<boolean>;
|
|
673
|
+
/** Message sent event */
|
|
674
|
+
readonly messageSent: _angular_core.OutputEmitterRef<AXSendMessageCommand>;
|
|
675
|
+
/** Emoji clicked event */
|
|
676
|
+
readonly emojiClick: _angular_core.OutputEmitterRef<void>;
|
|
677
|
+
/** Attach clicked event */
|
|
678
|
+
readonly attachClick: _angular_core.OutputEmitterRef<void>;
|
|
679
|
+
/** Voice clicked event */
|
|
680
|
+
readonly voiceClick: _angular_core.OutputEmitterRef<void>;
|
|
681
|
+
/** Active conversation */
|
|
682
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
683
|
+
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
684
|
+
/** Active component from service */
|
|
685
|
+
readonly activeComponent: _angular_core.Signal<_acorex_components_conversation2.AXComposerActiveComponent>;
|
|
686
|
+
/** Emoji popover state */
|
|
687
|
+
private readonly emojiPopoverRef;
|
|
688
|
+
readonly emojiPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
689
|
+
readonly composerPopupComponent: typeof AXComposerPopupComponent;
|
|
690
|
+
/** Input placeholder - use service */
|
|
691
|
+
readonly placeholder: _angular_core.Signal<"Select a conversation" | "Type a message...">;
|
|
692
|
+
/** Sending message state */
|
|
693
|
+
readonly sendingMessage: _angular_core.WritableSignal<boolean>;
|
|
694
|
+
/** Typing indicator subject for rate limiting */
|
|
695
|
+
private readonly typingSubject;
|
|
696
|
+
constructor();
|
|
697
|
+
private draftSaveTimeout?;
|
|
698
|
+
/** Number of input rows - use service */
|
|
699
|
+
readonly inputRows: _angular_core.Signal<number>;
|
|
700
|
+
/** Can send message - use service */
|
|
701
|
+
readonly canSend: _angular_core.Signal<boolean>;
|
|
702
|
+
/** Left actions from registry - use service */
|
|
703
|
+
readonly leftActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
704
|
+
/** Right actions from registry - use service */
|
|
705
|
+
readonly rightActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
706
|
+
/** Left inline actions (location = 'inline' or undefined) */
|
|
707
|
+
readonly leftInlineActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
708
|
+
/** Left menu actions (location = 'menu') */
|
|
709
|
+
readonly leftMenuActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
710
|
+
/** Right inline actions (location = 'inline' or undefined) */
|
|
711
|
+
readonly rightInlineActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
712
|
+
/** Right menu actions (location = 'menu') */
|
|
713
|
+
readonly rightMenuActions: _angular_core.Signal<_acorex_components_conversation2.AXComposerAction[]>;
|
|
714
|
+
/** Handle key down */
|
|
715
|
+
onKeyDown(event: AXHtmlEvent<KeyboardEvent>): void;
|
|
716
|
+
/** Handle input */
|
|
717
|
+
onInput(): void;
|
|
718
|
+
/** Send typing indicator (throttled via RxJS) */
|
|
719
|
+
private sendTypingIndicator;
|
|
720
|
+
/** Cleanup on destroy */
|
|
721
|
+
ngOnDestroy(): void;
|
|
722
|
+
/** Handle send click */
|
|
723
|
+
onSendClick(): Promise<void>;
|
|
724
|
+
/** Handle emoji click */
|
|
725
|
+
onEmojiClick(event?: MouseEvent): Promise<void>;
|
|
726
|
+
/** Handle emoji popover closed */
|
|
727
|
+
onEmojiPopoverClosed(): void;
|
|
728
|
+
/** Handle emoji/sticker selection from popup */
|
|
729
|
+
onEmojiItemSelected(item: string | AXStickerPayload): void;
|
|
730
|
+
/** Send sticker message */
|
|
731
|
+
private sendSticker;
|
|
732
|
+
/** Get inputs for emoji popup component */
|
|
733
|
+
getEmojiPopupInputs(): Record<string, any>;
|
|
734
|
+
/** Handle attach click */
|
|
735
|
+
onAttachClick(): void;
|
|
736
|
+
/** Handle voice click */
|
|
737
|
+
onVoiceClick(): void;
|
|
738
|
+
/** Remove attachment */
|
|
739
|
+
removeAttachment(index: number): void;
|
|
740
|
+
/** Files selected via uploader */
|
|
741
|
+
onFilesSelected(e: AXUploaderChangedEvent): Promise<void>;
|
|
742
|
+
/**
|
|
743
|
+
* Validate file before upload
|
|
744
|
+
* @param file - File to validate
|
|
745
|
+
* @throws {Error} If file is invalid
|
|
746
|
+
*/
|
|
747
|
+
private validateFile;
|
|
748
|
+
/** Cancel edit/reply mode */
|
|
749
|
+
cancelEditReply(): void;
|
|
750
|
+
/** Reset all composer states (used when switching conversations) */
|
|
751
|
+
private resetComposerState;
|
|
752
|
+
/** Start editing a message */
|
|
753
|
+
startEdit(message: any): void;
|
|
754
|
+
/** Start replying to a message */
|
|
755
|
+
startReply(message: AXMessage): void;
|
|
756
|
+
/** Handle action click */
|
|
757
|
+
onActionClick(actionId: string, event?: MouseEvent): Promise<void>;
|
|
758
|
+
/** Check if action is enabled */
|
|
759
|
+
isActionEnabled(action: any): boolean;
|
|
760
|
+
/** Get replying sender name */
|
|
761
|
+
getReplyingSenderName(): string;
|
|
762
|
+
/** Get replying message text */
|
|
763
|
+
getReplyingMessageText(): string;
|
|
764
|
+
/** Preview object for replying banner (type, icon, value) */
|
|
765
|
+
getReplyingPreview(): {
|
|
766
|
+
value: string;
|
|
767
|
+
type: string;
|
|
768
|
+
icon: string;
|
|
769
|
+
} | null;
|
|
770
|
+
/** Preview object for editing banner (type, icon, value) */
|
|
771
|
+
getEditingPreview(): {
|
|
772
|
+
value: string;
|
|
773
|
+
type: string;
|
|
774
|
+
icon: string;
|
|
775
|
+
} | null;
|
|
776
|
+
/** Handle reply preview click - scroll to original message */
|
|
777
|
+
onReplyPreviewClick(): void;
|
|
778
|
+
/** Get inputs for dynamic component */
|
|
779
|
+
getComponentInputs(): Record<string, any>;
|
|
780
|
+
onEnter(event: AXHtmlEvent<KeyboardEvent>): Promise<void>;
|
|
781
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXComposerComponent, never>;
|
|
782
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXComposerComponent, "ax-conversation-composer", never, {}, { "messageSent": "messageSent"; "emojiClick": "emojiClick"; "attachClick": "attachClick"; "voiceClick": "voiceClick"; }, never, never, true, never>;
|
|
783
|
+
}
|
|
784
|
+
|
|
651
785
|
/**
|
|
652
786
|
* Abstract Base Registry
|
|
653
787
|
* Base class for all registries with common functionality
|
|
@@ -2015,126 +2149,6 @@ declare abstract class AXRealtimeApi {
|
|
|
2015
2149
|
}>;
|
|
2016
2150
|
}
|
|
2017
2151
|
|
|
2018
|
-
/**
|
|
2019
|
-
* Error severity levels
|
|
2020
|
-
*/
|
|
2021
|
-
type AXErrorSeverity = 'info' | 'warning' | 'error' | 'critical';
|
|
2022
|
-
/**
|
|
2023
|
-
* Conversation error event
|
|
2024
|
-
*/
|
|
2025
|
-
interface AXConversationError {
|
|
2026
|
-
/** Error code */
|
|
2027
|
-
code: string;
|
|
2028
|
-
/** Error message */
|
|
2029
|
-
message: string;
|
|
2030
|
-
/** Severity level */
|
|
2031
|
-
severity: AXErrorSeverity;
|
|
2032
|
-
/** Source operation */
|
|
2033
|
-
operation: string;
|
|
2034
|
-
/** Original error */
|
|
2035
|
-
originalError?: unknown;
|
|
2036
|
-
/** HTTP status code (if applicable) */
|
|
2037
|
-
statusCode?: number;
|
|
2038
|
-
/** Additional context */
|
|
2039
|
-
context?: Record<string, unknown>;
|
|
2040
|
-
/** Timestamp */
|
|
2041
|
-
timestamp: Date;
|
|
2042
|
-
/** Whether error was handled */
|
|
2043
|
-
handled: boolean;
|
|
2044
|
-
/** Recovery suggestions */
|
|
2045
|
-
recoverySuggestions?: string[];
|
|
2046
|
-
}
|
|
2047
|
-
/**
|
|
2048
|
-
* Error Handler Configuration
|
|
2049
|
-
*/
|
|
2050
|
-
interface AXErrorHandlerConfig {
|
|
2051
|
-
/** Log errors to console */
|
|
2052
|
-
logToConsole?: boolean;
|
|
2053
|
-
/** Show user-friendly error messages */
|
|
2054
|
-
showUserMessages?: boolean;
|
|
2055
|
-
/** Retry failed operations automatically */
|
|
2056
|
-
autoRetry?: boolean;
|
|
2057
|
-
/** Number of retry attempts */
|
|
2058
|
-
maxRetries?: number;
|
|
2059
|
-
/** Custom error handler */
|
|
2060
|
-
customHandler?: (error: AXConversationError) => void;
|
|
2061
|
-
}
|
|
2062
|
-
/**
|
|
2063
|
-
* Error Handler Service
|
|
2064
|
-
*/
|
|
2065
|
-
declare class AXErrorHandlerService {
|
|
2066
|
-
private readonly injectedConfig;
|
|
2067
|
-
private readonly _errors$;
|
|
2068
|
-
private readonly _config;
|
|
2069
|
-
/** Error stream */
|
|
2070
|
-
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
2071
|
-
constructor();
|
|
2072
|
-
/**
|
|
2073
|
-
* Configure error handler
|
|
2074
|
-
*/
|
|
2075
|
-
configure(config: Partial<AXErrorHandlerConfig>): void;
|
|
2076
|
-
/**
|
|
2077
|
-
* Handle an error
|
|
2078
|
-
*/
|
|
2079
|
-
handle(error: unknown, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
2080
|
-
/**
|
|
2081
|
-
* Handle API error
|
|
2082
|
-
*/
|
|
2083
|
-
handleApiError(apiError: AXApiError, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
2084
|
-
/**
|
|
2085
|
-
* Normalize any error to conversation error format
|
|
2086
|
-
*/
|
|
2087
|
-
private normalizeError;
|
|
2088
|
-
/**
|
|
2089
|
-
* Check if error is API error
|
|
2090
|
-
*/
|
|
2091
|
-
private isApiError;
|
|
2092
|
-
/**
|
|
2093
|
-
* Determine severity based on status code
|
|
2094
|
-
*/
|
|
2095
|
-
private determineSeverity;
|
|
2096
|
-
/**
|
|
2097
|
-
* Get recovery suggestions based on error
|
|
2098
|
-
*/
|
|
2099
|
-
private getRecoverySuggestions;
|
|
2100
|
-
/**
|
|
2101
|
-
* Get default recovery suggestions
|
|
2102
|
-
*/
|
|
2103
|
-
private getDefaultRecoverySuggestions;
|
|
2104
|
-
/**
|
|
2105
|
-
* Log error to console
|
|
2106
|
-
*/
|
|
2107
|
-
private logError;
|
|
2108
|
-
/**
|
|
2109
|
-
* Get user-friendly error message
|
|
2110
|
-
*/
|
|
2111
|
-
getUserFriendlyMessage(error: AXConversationError): string;
|
|
2112
|
-
/**
|
|
2113
|
-
* Check if error is retryable
|
|
2114
|
-
*/
|
|
2115
|
-
isRetryable(error: AXConversationError): boolean;
|
|
2116
|
-
/**
|
|
2117
|
-
* Execute an operation with automatic retry logic
|
|
2118
|
-
* @param operation - The async operation to execute
|
|
2119
|
-
* @param operationName - Name of the operation for error tracking
|
|
2120
|
-
* @param context - Additional context for error handling
|
|
2121
|
-
* @returns Promise resolving to the operation result
|
|
2122
|
-
* @throws {AXConversationError} If all retries fail
|
|
2123
|
-
*/
|
|
2124
|
-
executeWithRetry<T>(operation: () => Promise<T>, operationName: string, context?: Record<string, unknown>): Promise<T>;
|
|
2125
|
-
/**
|
|
2126
|
-
* Delay helper for retry backoff
|
|
2127
|
-
* @param ms - Milliseconds to delay
|
|
2128
|
-
*/
|
|
2129
|
-
private delay;
|
|
2130
|
-
/**
|
|
2131
|
-
* Clear error history
|
|
2132
|
-
*/
|
|
2133
|
-
clear(): void;
|
|
2134
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXErrorHandlerService, never>;
|
|
2135
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXErrorHandlerService>;
|
|
2136
|
-
}
|
|
2137
|
-
|
|
2138
2152
|
/**
|
|
2139
2153
|
* Composer tab registration
|
|
2140
2154
|
*/
|
|
@@ -2684,9 +2698,9 @@ declare class AXConversationService {
|
|
|
2684
2698
|
/** Error state */
|
|
2685
2699
|
readonly error: _angular_core.Signal<Error>;
|
|
2686
2700
|
/** Connection status */
|
|
2687
|
-
readonly connectionStatus$: rxjs.Observable<AXConnectionStatus>;
|
|
2701
|
+
readonly connectionStatus$: rxjs.Observable<_acorex_components_conversation2.AXConnectionStatus>;
|
|
2688
2702
|
/** Error stream */
|
|
2689
|
-
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
2703
|
+
readonly errors$: rxjs.Observable<_acorex_components_conversation2.AXConversationError>;
|
|
2690
2704
|
readonly onMessageReceived: rxjs.Observable<AXMessage>;
|
|
2691
2705
|
readonly onMessageUpdated: rxjs.Observable<AXMessage>;
|
|
2692
2706
|
readonly onMessageDeleted: rxjs.Observable<string>;
|
|
@@ -2698,7 +2712,7 @@ declare class AXConversationService {
|
|
|
2698
2712
|
type: "reply" | "forward";
|
|
2699
2713
|
}>;
|
|
2700
2714
|
private _currentUser;
|
|
2701
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
2715
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
2702
2716
|
constructor();
|
|
2703
2717
|
/**
|
|
2704
2718
|
* Initialize the service
|
|
@@ -3169,7 +3183,7 @@ declare class AXComposerService {
|
|
|
3169
3183
|
private readonly _editMessage;
|
|
3170
3184
|
readonly replyMessage: _angular_core.Signal<AXMessage>;
|
|
3171
3185
|
readonly editMessage: _angular_core.Signal<AXMessage>;
|
|
3172
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
3186
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3173
3187
|
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
3174
3188
|
/** Active component being shown in composer (full-width mode) */
|
|
3175
3189
|
private readonly _activeComponent;
|
|
@@ -3241,341 +3255,108 @@ declare class AXComposerService {
|
|
|
3241
3255
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXComposerService>;
|
|
3242
3256
|
}
|
|
3243
3257
|
|
|
3244
|
-
declare class
|
|
3245
|
-
#private;
|
|
3258
|
+
declare class AXConversationContainerComponent {
|
|
3246
3259
|
private readonly conversationService;
|
|
3247
|
-
|
|
3248
|
-
|
|
3249
|
-
|
|
3250
|
-
|
|
3251
|
-
|
|
3252
|
-
/**
|
|
3253
|
-
|
|
3254
|
-
/**
|
|
3255
|
-
|
|
3256
|
-
/**
|
|
3257
|
-
readonly
|
|
3258
|
-
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
|
|
3262
|
-
|
|
3263
|
-
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3260
|
+
protected readonly config: _acorex_components_conversation2.AXConversationConfig;
|
|
3261
|
+
/** Custom CSS class */
|
|
3262
|
+
readonly customClass: _angular_core.InputSignal<string>;
|
|
3263
|
+
/** Loading state */
|
|
3264
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
3265
|
+
/** Error state */
|
|
3266
|
+
readonly error: _angular_core.Signal<Error>;
|
|
3267
|
+
/** Active conversation */
|
|
3268
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3269
|
+
/** Container CSS classes */
|
|
3270
|
+
readonly containerClasses: _angular_core.Signal<string>;
|
|
3271
|
+
closeActiveConversation(): void;
|
|
3272
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerComponent, never>;
|
|
3273
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationContainerComponent, "ax-conversation-container", never, { "customClass": { "alias": "customClass"; "required": false; "isSignal": true; }; }, {}, never, ["ax-conversation-sidebar, [ax-conversation-sidebar]", "ax-conversation-info-bar, [ax-conversation-info-bar]", "ax-conversation-message-list, [ax-conversation-message-list]", "ax-conversation-composer, [ax-conversation-composer]", "ax-conversation-empty"], true, never>;
|
|
3274
|
+
}
|
|
3275
|
+
|
|
3276
|
+
declare class AXConversationContainerDirective {
|
|
3277
|
+
private readonly conversationService;
|
|
3278
|
+
/** Active conversation */
|
|
3279
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3280
|
+
/** Loading state */
|
|
3281
|
+
readonly loading: _angular_core.Signal<boolean>;
|
|
3282
|
+
/** Error state */
|
|
3283
|
+
readonly error: _angular_core.Signal<Error>;
|
|
3284
|
+
closeActiveConversation(): void;
|
|
3285
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerDirective, never>;
|
|
3286
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXConversationContainerDirective, "[axConversationContainer]", never, {}, {}, never, never, true, never>;
|
|
3287
|
+
}
|
|
3288
|
+
|
|
3289
|
+
interface DropdownMenuItem {
|
|
3290
|
+
id: string;
|
|
3291
|
+
label: string;
|
|
3292
|
+
icon?: string;
|
|
3293
|
+
disabled?: boolean;
|
|
3294
|
+
divider?: boolean;
|
|
3295
|
+
destructive?: boolean;
|
|
3296
|
+
shortcut?: string;
|
|
3297
|
+
}
|
|
3298
|
+
declare class AXInfoBarComponent {
|
|
3299
|
+
private readonly conversationService;
|
|
3300
|
+
private readonly infoBar;
|
|
3301
|
+
protected get registry(): _acorex_components_conversation2.AXRegistryService;
|
|
3274
3302
|
/** Active conversation */
|
|
3275
3303
|
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
3276
|
-
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
3277
3304
|
/** Active component from service */
|
|
3278
|
-
readonly activeComponent: _angular_core.Signal<
|
|
3279
|
-
/**
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
readonly
|
|
3283
|
-
/**
|
|
3284
|
-
readonly
|
|
3285
|
-
/**
|
|
3286
|
-
readonly
|
|
3287
|
-
/**
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
/**
|
|
3292
|
-
readonly
|
|
3293
|
-
/**
|
|
3294
|
-
readonly
|
|
3295
|
-
/**
|
|
3296
|
-
readonly
|
|
3297
|
-
/**
|
|
3298
|
-
|
|
3299
|
-
/**
|
|
3300
|
-
|
|
3301
|
-
/**
|
|
3302
|
-
|
|
3303
|
-
/**
|
|
3304
|
-
|
|
3305
|
-
/**
|
|
3306
|
-
|
|
3307
|
-
/** Handle
|
|
3308
|
-
|
|
3309
|
-
/** Handle input */
|
|
3310
|
-
onInput(): void;
|
|
3311
|
-
/** Send typing indicator (throttled via RxJS) */
|
|
3312
|
-
private sendTypingIndicator;
|
|
3313
|
-
/** Cleanup on destroy */
|
|
3314
|
-
ngOnDestroy(): void;
|
|
3315
|
-
/** Handle send click */
|
|
3316
|
-
onSendClick(): Promise<void>;
|
|
3317
|
-
/** Handle emoji click */
|
|
3318
|
-
onEmojiClick(event?: MouseEvent): Promise<void>;
|
|
3319
|
-
/** Handle emoji popover closed */
|
|
3320
|
-
onEmojiPopoverClosed(): void;
|
|
3321
|
-
/** Handle emoji/sticker selection from popup */
|
|
3322
|
-
onEmojiItemSelected(item: string | AXStickerPayload): void;
|
|
3323
|
-
/** Send sticker message */
|
|
3324
|
-
private sendSticker;
|
|
3325
|
-
/** Get inputs for emoji popup component */
|
|
3326
|
-
getEmojiPopupInputs(): Record<string, any>;
|
|
3327
|
-
/** Handle attach click */
|
|
3328
|
-
onAttachClick(): void;
|
|
3329
|
-
/** Handle voice click */
|
|
3330
|
-
onVoiceClick(): void;
|
|
3331
|
-
/** Remove attachment */
|
|
3332
|
-
removeAttachment(index: number): void;
|
|
3333
|
-
/** Files selected via uploader */
|
|
3334
|
-
onFilesSelected(e: AXUploaderChangedEvent): Promise<void>;
|
|
3335
|
-
/**
|
|
3336
|
-
* Validate file before upload
|
|
3337
|
-
* @param file - File to validate
|
|
3338
|
-
* @throws {Error} If file is invalid
|
|
3339
|
-
*/
|
|
3340
|
-
private validateFile;
|
|
3341
|
-
/** Cancel edit/reply mode */
|
|
3342
|
-
cancelEditReply(): void;
|
|
3343
|
-
/** Reset all composer states (used when switching conversations) */
|
|
3344
|
-
private resetComposerState;
|
|
3345
|
-
/** Start editing a message */
|
|
3346
|
-
startEdit(message: any): void;
|
|
3347
|
-
/** Start replying to a message */
|
|
3348
|
-
startReply(message: AXMessage): void;
|
|
3349
|
-
/** Handle action click */
|
|
3350
|
-
onActionClick(actionId: string, event?: MouseEvent): Promise<void>;
|
|
3351
|
-
/** Check if action is enabled */
|
|
3352
|
-
isActionEnabled(action: any): boolean;
|
|
3353
|
-
/** Get replying sender name */
|
|
3354
|
-
getReplyingSenderName(): string;
|
|
3355
|
-
/** Get replying message text */
|
|
3356
|
-
getReplyingMessageText(): string;
|
|
3357
|
-
/** Preview object for replying banner (type, icon, value) */
|
|
3358
|
-
getReplyingPreview(): {
|
|
3359
|
-
value: string;
|
|
3360
|
-
type: string;
|
|
3361
|
-
icon: string;
|
|
3362
|
-
} | null;
|
|
3363
|
-
/** Preview object for editing banner (type, icon, value) */
|
|
3364
|
-
getEditingPreview(): {
|
|
3365
|
-
value: string;
|
|
3366
|
-
type: string;
|
|
3367
|
-
icon: string;
|
|
3368
|
-
} | null;
|
|
3369
|
-
/** Handle reply preview click - scroll to original message */
|
|
3370
|
-
onReplyPreviewClick(): void;
|
|
3305
|
+
readonly activeComponent: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarActiveComponent>;
|
|
3306
|
+
/** Members popover reference */
|
|
3307
|
+
readonly membersPopoverRef: _angular_core.Signal<AXPopoverComponent>;
|
|
3308
|
+
/** Members popover target element */
|
|
3309
|
+
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
3310
|
+
/** Loading state for async actions */
|
|
3311
|
+
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
3312
|
+
/** Avatar clicked event */
|
|
3313
|
+
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
3314
|
+
/** Search clicked event */
|
|
3315
|
+
readonly searchClick: _angular_core.OutputEmitterRef<void>;
|
|
3316
|
+
/** Search query changed event */
|
|
3317
|
+
readonly searchQuery: _angular_core.OutputEmitterRef<string>;
|
|
3318
|
+
/** Menu item clicked event */
|
|
3319
|
+
readonly menuItemAction: _angular_core.OutputEmitterRef<string>;
|
|
3320
|
+
/** Inline action buttons from registry */
|
|
3321
|
+
readonly inlineActions: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarAction[]>;
|
|
3322
|
+
/** Dropdown menu items from registry */
|
|
3323
|
+
readonly menuItems: _angular_core.Signal<DropdownMenuItem[]>;
|
|
3324
|
+
/** Get conversation status - delegate to utils */
|
|
3325
|
+
getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
|
|
3326
|
+
/** Get subtitle text - delegate to utils */
|
|
3327
|
+
getSubtitle(conversation: AXConversation): string;
|
|
3328
|
+
/** Get initials from name - delegate to utils */
|
|
3329
|
+
getInitials(name: string): string;
|
|
3330
|
+
/** Handle avatar click */
|
|
3331
|
+
onAvatarClick(): void;
|
|
3332
|
+
/** Handle members click - open popover */
|
|
3333
|
+
onMembersClick(event: MouseEvent): void;
|
|
3334
|
+
/** Handle inline action click */
|
|
3335
|
+
onInlineActionClick(actionId: string): Promise<void>;
|
|
3371
3336
|
/** Get inputs for dynamic component */
|
|
3372
3337
|
getComponentInputs(): Record<string, any>;
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3338
|
+
/** Handle close component */
|
|
3339
|
+
onCloseComponent(): void;
|
|
3340
|
+
/** Handle menu item click */
|
|
3341
|
+
onMenuItemClick(item: DropdownMenuItem): Promise<void>;
|
|
3342
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarComponent, never>;
|
|
3343
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
|
|
3376
3344
|
}
|
|
3377
3345
|
|
|
3378
3346
|
/**
|
|
3379
|
-
*
|
|
3380
|
-
* Centralized configuration values to avoid magic numbers
|
|
3347
|
+
* Active component state in info-bar
|
|
3381
3348
|
*/
|
|
3349
|
+
interface AXInfoBarActiveComponent {
|
|
3350
|
+
/** Action that triggered this component */
|
|
3351
|
+
action: AXInfoBarAction;
|
|
3352
|
+
/** Component to render */
|
|
3353
|
+
component: Type<unknown>;
|
|
3354
|
+
/** Component inputs */
|
|
3355
|
+
inputs?: Record<string, unknown>;
|
|
3356
|
+
}
|
|
3382
3357
|
/**
|
|
3383
|
-
*
|
|
3384
|
-
|
|
3385
|
-
interface AXConversationConfig {
|
|
3386
|
-
/** Number of messages to load per page */
|
|
3387
|
-
messagePageSize?: number;
|
|
3388
|
-
/** Number of conversations to load per page */
|
|
3389
|
-
conversationPageSize?: number;
|
|
3390
|
-
/** Scroll threshold for detecting scroll events */
|
|
3391
|
-
scrollThreshold?: number;
|
|
3392
|
-
/** Infinite scroll threshold */
|
|
3393
|
-
infiniteScrollThreshold?: number;
|
|
3394
|
-
/** Typing indicator timeout in milliseconds */
|
|
3395
|
-
typingIndicatorTimeout?: number;
|
|
3396
|
-
/** Typing indicator throttle in milliseconds (for rate limiting) */
|
|
3397
|
-
typingIndicatorThrottle?: number;
|
|
3398
|
-
/** Message highlight duration in milliseconds */
|
|
3399
|
-
messageHighlightDuration?: number;
|
|
3400
|
-
/** Search debounce delay in milliseconds */
|
|
3401
|
-
debounceSearch?: number;
|
|
3402
|
-
/** Date separator inactivity fade delay in milliseconds */
|
|
3403
|
-
/** Maximum messages per conversation */
|
|
3404
|
-
maxMessagesPerConversation?: number;
|
|
3405
|
-
/** Maximum total messages in store */
|
|
3406
|
-
maxTotalMessages?: number;
|
|
3407
|
-
/** Maximum cached conversations */
|
|
3408
|
-
maxCachedConversations?: number;
|
|
3409
|
-
/** Minimum sidebar width in pixels */
|
|
3410
|
-
minSidebarWidth?: number;
|
|
3411
|
-
/** Maximum sidebar width in pixels */
|
|
3412
|
-
maxSidebarWidth?: number;
|
|
3413
|
-
/** Default sidebar width in pixels */
|
|
3414
|
-
defaultSidebarWidth?: number;
|
|
3415
|
-
/** Virtual scroll item size in pixels */
|
|
3416
|
-
virtualScrollItemSize?: number;
|
|
3417
|
-
/** Virtual scroll minimum buffer in pixels */
|
|
3418
|
-
virtualScrollMinBuffer?: number;
|
|
3419
|
-
/** Virtual scroll maximum buffer in pixels */
|
|
3420
|
-
virtualScrollMaxBuffer?: number;
|
|
3421
|
-
/** Filter cache size */
|
|
3422
|
-
filterCacheSize?: number;
|
|
3423
|
-
/** Maximum file size in bytes */
|
|
3424
|
-
maxFileSize?: number;
|
|
3425
|
-
/** Allowed file types (glob patterns like 'image/*') */
|
|
3426
|
-
allowedFileTypes?: string[];
|
|
3427
|
-
/** Maximum message length in characters */
|
|
3428
|
-
maxMessageLength?: number;
|
|
3429
|
-
/** Minimum message length in characters */
|
|
3430
|
-
minMessageLength?: number;
|
|
3431
|
-
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
3432
|
-
messageReadThreshold?: number;
|
|
3433
|
-
}
|
|
3434
|
-
|
|
3435
|
-
/**
|
|
3436
|
-
* Default Configuration Values
|
|
3437
|
-
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
3438
|
-
*/
|
|
3439
|
-
|
|
3440
|
-
/**
|
|
3441
|
-
* Default conversation configuration
|
|
3442
|
-
* All values are explicitly defined here for easy maintenance and documentation
|
|
3443
|
-
*/
|
|
3444
|
-
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
3445
|
-
/**
|
|
3446
|
-
* Helper function to merge user config with defaults
|
|
3447
|
-
* Properly handles array merging to avoid reference issues
|
|
3448
|
-
* @param userConfig - User-provided configuration
|
|
3449
|
-
* @returns Merged configuration with all required fields
|
|
3450
|
-
*/
|
|
3451
|
-
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
3452
|
-
|
|
3453
|
-
/**
|
|
3454
|
-
* Dependency Injection Tokens
|
|
3455
|
-
* InjectionTokens for configuration and dependencies
|
|
3456
|
-
*/
|
|
3457
|
-
|
|
3458
|
-
/**
|
|
3459
|
-
* Configuration token for conversation component
|
|
3460
|
-
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
3461
|
-
*/
|
|
3462
|
-
declare const CONVERSATION_CONFIG: InjectionToken<AXConversationConfig>;
|
|
3463
|
-
/**
|
|
3464
|
-
* Token for configuring AXErrorHandlerService
|
|
3465
|
-
*/
|
|
3466
|
-
declare const ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXErrorHandlerConfig>>;
|
|
3467
|
-
|
|
3468
|
-
/**
|
|
3469
|
-
* Registry Configuration Tokens
|
|
3470
|
-
* Injection tokens for configuring default registry values
|
|
3471
|
-
*/
|
|
3472
|
-
|
|
3473
|
-
/**
|
|
3474
|
-
* Additional message renderers configuration
|
|
3475
|
-
* Provide this token to add custom message renderers in addition to built-in ones
|
|
3476
|
-
* Note: Built-in renderers (text, image, video, audio, voice, file, location, sticker, contact, system, fallback) are automatically registered
|
|
3477
|
-
*/
|
|
3478
|
-
declare const DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXMessageRenderer[]>;
|
|
3479
|
-
/**
|
|
3480
|
-
* Default message actions configuration
|
|
3481
|
-
* Provide this token to override default message actions
|
|
3482
|
-
*/
|
|
3483
|
-
declare const DEFAULT_MESSAGE_ACTIONS: InjectionToken<AXMessageAction[]>;
|
|
3484
|
-
/**
|
|
3485
|
-
* Default composer tabs configuration
|
|
3486
|
-
* Provide this token to override default composer tabs (emoji, stickers, etc.)
|
|
3487
|
-
*/
|
|
3488
|
-
declare const DEFAULT_COMPOSER_TABS: InjectionToken<AXComposerTab[]>;
|
|
3489
|
-
/**
|
|
3490
|
-
* Default composer actions configuration
|
|
3491
|
-
* Provide this token to override default composer actions (attach, voice, etc.)
|
|
3492
|
-
*/
|
|
3493
|
-
declare const DEFAULT_COMPOSER_ACTIONS: InjectionToken<AXComposerAction[]>;
|
|
3494
|
-
/**
|
|
3495
|
-
* Default conversation tabs configuration
|
|
3496
|
-
* Provide this token to override default conversation tabs (all, private, groups, etc.)
|
|
3497
|
-
*/
|
|
3498
|
-
declare const DEFAULT_CONVERSATION_TABS: InjectionToken<AXConversationTab[]>;
|
|
3499
|
-
/**
|
|
3500
|
-
* Default info bar actions configuration
|
|
3501
|
-
* Provide this token to override default info bar actions (mute, archive, block, etc.)
|
|
3502
|
-
*/
|
|
3503
|
-
declare const DEFAULT_INFO_BAR_ACTIONS: InjectionToken<AXInfoBarAction[]>;
|
|
3504
|
-
/**
|
|
3505
|
-
* Default conversation item actions configuration
|
|
3506
|
-
* Provide this token to override default conversation item actions (mute, delete, archive, etc.)
|
|
3507
|
-
*/
|
|
3508
|
-
declare const DEFAULT_CONVERSATION_ITEM_ACTIONS: InjectionToken<AXConversationItemAction[]>;
|
|
3509
|
-
/**
|
|
3510
|
-
* Registry configuration interface
|
|
3511
|
-
*/
|
|
3512
|
-
interface AXRegistryConfiguration {
|
|
3513
|
-
/** Additional message renderers to register (built-in renderers are automatic) */
|
|
3514
|
-
messageRenderers?: AXMessageRenderer[];
|
|
3515
|
-
/** Message actions to register by default */
|
|
3516
|
-
messageActions?: AXMessageAction[];
|
|
3517
|
-
/** Composer tabs to register by default */
|
|
3518
|
-
composerTabs?: AXComposerTab[];
|
|
3519
|
-
/** Composer actions to register by default */
|
|
3520
|
-
composerActions?: AXComposerAction[];
|
|
3521
|
-
/** Conversation tabs to register by default */
|
|
3522
|
-
conversationTabs?: AXConversationTab[];
|
|
3523
|
-
/** Info bar actions to register by default */
|
|
3524
|
-
infoBarActions?: AXInfoBarAction[];
|
|
3525
|
-
/** Conversation item actions to register by default */
|
|
3526
|
-
conversationItemActions?: AXConversationItemAction[];
|
|
3527
|
-
}
|
|
3528
|
-
/**
|
|
3529
|
-
* Complete registry configuration token
|
|
3530
|
-
* Provide this for comprehensive registry configuration
|
|
3531
|
-
*/
|
|
3532
|
-
declare const REGISTRY_CONFIG: InjectionToken<AXRegistryConfiguration>;
|
|
3533
|
-
|
|
3534
|
-
declare class AXConversationContainerComponent {
|
|
3535
|
-
private readonly conversationService;
|
|
3536
|
-
protected readonly config: AXConversationConfig;
|
|
3537
|
-
/** Custom CSS class */
|
|
3538
|
-
readonly customClass: _angular_core.InputSignal<string>;
|
|
3539
|
-
/** Loading state */
|
|
3540
|
-
readonly loading: _angular_core.Signal<boolean>;
|
|
3541
|
-
/** Error state */
|
|
3542
|
-
readonly error: _angular_core.Signal<Error>;
|
|
3543
|
-
/** Active conversation */
|
|
3544
|
-
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3545
|
-
/** Container CSS classes */
|
|
3546
|
-
readonly containerClasses: _angular_core.Signal<string>;
|
|
3547
|
-
closeActiveConversation(): void;
|
|
3548
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerComponent, never>;
|
|
3549
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationContainerComponent, "ax-conversation-container", never, { "customClass": { "alias": "customClass"; "required": false; "isSignal": true; }; }, {}, never, ["ax-conversation-sidebar, [ax-conversation-sidebar]", "ax-conversation-info-bar, [ax-conversation-info-bar]", "ax-conversation-message-list, [ax-conversation-message-list]", "ax-conversation-composer, [ax-conversation-composer]", "ax-conversation-empty"], true, never>;
|
|
3550
|
-
}
|
|
3551
|
-
|
|
3552
|
-
declare class AXConversationContainerDirective {
|
|
3553
|
-
private readonly conversationService;
|
|
3554
|
-
/** Active conversation */
|
|
3555
|
-
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3556
|
-
/** Loading state */
|
|
3557
|
-
readonly loading: _angular_core.Signal<boolean>;
|
|
3558
|
-
/** Error state */
|
|
3559
|
-
readonly error: _angular_core.Signal<Error>;
|
|
3560
|
-
closeActiveConversation(): void;
|
|
3561
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerDirective, never>;
|
|
3562
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXConversationContainerDirective, "[axConversationContainer]", never, {}, {}, never, never, true, never>;
|
|
3563
|
-
}
|
|
3564
|
-
|
|
3565
|
-
/**
|
|
3566
|
-
* Active component state in info-bar
|
|
3567
|
-
*/
|
|
3568
|
-
interface AXInfoBarActiveComponent {
|
|
3569
|
-
/** Action that triggered this component */
|
|
3570
|
-
action: AXInfoBarAction;
|
|
3571
|
-
/** Component to render */
|
|
3572
|
-
component: Type<unknown>;
|
|
3573
|
-
/** Component inputs */
|
|
3574
|
-
inputs?: Record<string, unknown>;
|
|
3575
|
-
}
|
|
3576
|
-
/**
|
|
3577
|
-
* Info Bar Service
|
|
3578
|
-
* Manages info bar state and actions
|
|
3358
|
+
* Info Bar Service
|
|
3359
|
+
* Manages info bar state and actions
|
|
3579
3360
|
*/
|
|
3580
3361
|
declare class AXInfoBarService {
|
|
3581
3362
|
private readonly conversationService;
|
|
@@ -3645,67 +3426,289 @@ declare class AXInfoBarService {
|
|
|
3645
3426
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXInfoBarService>;
|
|
3646
3427
|
}
|
|
3647
3428
|
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
|
|
3651
|
-
|
|
3652
|
-
|
|
3653
|
-
|
|
3654
|
-
private readonly
|
|
3655
|
-
|
|
3656
|
-
private readonly
|
|
3657
|
-
|
|
3658
|
-
|
|
3659
|
-
|
|
3660
|
-
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
|
|
3429
|
+
declare class AXMessageListComponent implements OnDestroy {
|
|
3430
|
+
private readonly conversationService;
|
|
3431
|
+
private readonly messageListService;
|
|
3432
|
+
protected readonly config: _acorex_components_conversation2.AXConversationConfig;
|
|
3433
|
+
/** Custom avatar template for message list items */
|
|
3434
|
+
readonly avatarTemplate: _angular_core.InputSignal<TemplateRef<AXMessageAvatarTemplateContext>>;
|
|
3435
|
+
private readonly timeouts;
|
|
3436
|
+
private readonly replyCounts;
|
|
3437
|
+
private readonly forwardCounts;
|
|
3438
|
+
readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
|
|
3439
|
+
readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
|
|
3440
|
+
readonly reactionPopover: _angular_core.Signal<any>;
|
|
3441
|
+
readonly availableReactions: _angular_core.WritableSignal<string[]>;
|
|
3442
|
+
private get registry();
|
|
3443
|
+
/** Message list element reference */
|
|
3444
|
+
private readonly messageListRef;
|
|
3445
|
+
/** Messages container element reference */
|
|
3446
|
+
private readonly messagesContainerRef;
|
|
3447
|
+
/** Loading state - use service */
|
|
3448
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
3449
|
+
/** Loading more messages state - use service */
|
|
3450
|
+
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
3451
|
+
/** Show scroll to bottom button - use service */
|
|
3452
|
+
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
3453
|
+
/** Active conversation */
|
|
3454
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3455
|
+
/** Messages */
|
|
3664
3456
|
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
3457
|
+
/** Message action event */
|
|
3458
|
+
readonly messageAction: _angular_core.OutputEmitterRef<{
|
|
3459
|
+
message: AXMessage;
|
|
3460
|
+
action: string;
|
|
3461
|
+
}>;
|
|
3462
|
+
/** Current user from service */
|
|
3463
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
3464
|
+
/** Message grouped by date - use service */
|
|
3465
|
+
readonly messageGroups: _angular_core.Signal<{
|
|
3466
|
+
date: string;
|
|
3467
|
+
dateLabel: string;
|
|
3468
|
+
messages: AXMessage[];
|
|
3469
|
+
}[]>;
|
|
3470
|
+
constructor();
|
|
3471
|
+
private intersectionObserver?;
|
|
3665
3472
|
/**
|
|
3666
|
-
*
|
|
3667
|
-
*/
|
|
3668
|
-
initialize(): Promise<void>;
|
|
3669
|
-
/**
|
|
3670
|
-
* Set all conversations (replaces existing)
|
|
3671
|
-
* @param conversations - Array of conversations
|
|
3672
|
-
*/
|
|
3673
|
-
setConversations(conversations: AXConversation[]): void;
|
|
3674
|
-
/**
|
|
3675
|
-
* Add multiple conversations (append to existing)
|
|
3676
|
-
* Used for pagination - appends new conversations without replacing existing ones
|
|
3677
|
-
* @param conversations - Array of conversations to add
|
|
3678
|
-
*/
|
|
3679
|
-
addConversations(conversations: AXConversation[]): void;
|
|
3680
|
-
/**
|
|
3681
|
-
* Add or update a single conversation
|
|
3682
|
-
* @param conversation - Conversation to add/update
|
|
3683
|
-
*/
|
|
3684
|
-
setConversation(conversation: AXConversation): void;
|
|
3685
|
-
/**
|
|
3686
|
-
* Get a conversation by ID
|
|
3687
|
-
* @param conversationId - Conversation ID
|
|
3688
|
-
* @returns Conversation or undefined
|
|
3689
|
-
*/
|
|
3690
|
-
getConversation(conversationId: string): AXConversation | undefined;
|
|
3691
|
-
/**
|
|
3692
|
-
* Update a conversation with partial data
|
|
3693
|
-
* @param conversationId - Conversation ID
|
|
3694
|
-
* @param updates - Partial conversation updates
|
|
3695
|
-
*/
|
|
3696
|
-
updateConversation(conversationId: string, updates: Partial<AXConversation>): void;
|
|
3697
|
-
/**
|
|
3698
|
-
* Delete a conversation
|
|
3699
|
-
* @param conversationId - Conversation ID
|
|
3473
|
+
* Setup intersection observer to mark messages as read when visible
|
|
3700
3474
|
*/
|
|
3701
|
-
|
|
3475
|
+
private setupIntersectionObserver;
|
|
3702
3476
|
/**
|
|
3703
|
-
*
|
|
3704
|
-
* @param message - The message to set as last message
|
|
3477
|
+
* Mark message as read
|
|
3705
3478
|
*/
|
|
3706
|
-
|
|
3707
|
-
/**
|
|
3708
|
-
|
|
3479
|
+
private markMessageAsRead;
|
|
3480
|
+
/** Get message CSS classes */
|
|
3481
|
+
getMessageClasses(message: AXMessage): string;
|
|
3482
|
+
/** Get bubble CSS classes */
|
|
3483
|
+
getBubbleClasses(message: AXMessage): string;
|
|
3484
|
+
/** Check if message is from current user */
|
|
3485
|
+
isOwnMessage(message: AXMessage): boolean;
|
|
3486
|
+
/** Should show avatar */
|
|
3487
|
+
shouldShowAvatar(message: AXMessage): boolean;
|
|
3488
|
+
/** Should show sender name */
|
|
3489
|
+
shouldShowSenderName(message: AXMessage): boolean;
|
|
3490
|
+
/** Get sender name */
|
|
3491
|
+
getSenderName(message: AXMessage): string;
|
|
3492
|
+
/** Get sender avatar */
|
|
3493
|
+
getSenderAvatar(message: AXMessage): string | undefined;
|
|
3494
|
+
/** Get original sender name for forwarded messages */
|
|
3495
|
+
getOriginalSenderName(message: AXMessage): string;
|
|
3496
|
+
/** Get forwarded text with sender and conversation info */
|
|
3497
|
+
getForwardedText(message: AXMessage): string;
|
|
3498
|
+
/** Resolve renderer component for message */
|
|
3499
|
+
getRendererComponent(message: AXMessage): _angular_core.Type<any>;
|
|
3500
|
+
/** Provide inputs for the dynamic renderer */
|
|
3501
|
+
getRendererInputs(message: AXMessage): {
|
|
3502
|
+
message: AXMessage;
|
|
3503
|
+
};
|
|
3504
|
+
/** Get status icon */
|
|
3505
|
+
getStatusIcon(message: AXMessage): string;
|
|
3506
|
+
/** Get status icon CSS classes */
|
|
3507
|
+
getStatusIconClasses(message: AXMessage): string;
|
|
3508
|
+
/** Get status tooltip text */
|
|
3509
|
+
getStatusTooltip(message: AXMessage): string;
|
|
3510
|
+
/** Get first unread message ID */
|
|
3511
|
+
readonly firstUnreadMessageId: _angular_core.Signal<string>;
|
|
3512
|
+
/** Get grouped reactions */
|
|
3513
|
+
getGroupedReactions(message: AXMessage): Array<{
|
|
3514
|
+
emoji: string;
|
|
3515
|
+
count: number;
|
|
3516
|
+
userIds: string[];
|
|
3517
|
+
hasReacted: boolean;
|
|
3518
|
+
}>;
|
|
3519
|
+
/** Get reaction tooltip text */
|
|
3520
|
+
getReactionTooltip(reaction: {
|
|
3521
|
+
emoji: string;
|
|
3522
|
+
count: number;
|
|
3523
|
+
userIds: string[];
|
|
3524
|
+
hasReacted: boolean;
|
|
3525
|
+
}): string;
|
|
3526
|
+
/** Toggle reaction picker */
|
|
3527
|
+
toggleReactionPicker(messageId: string, event: MouseEvent): void;
|
|
3528
|
+
/** Close reaction picker */
|
|
3529
|
+
closeReactionPicker(): void;
|
|
3530
|
+
/** Check if current user has reacted with specific emoji */
|
|
3531
|
+
hasUserReacted(message: AXMessage, emoji: string): boolean;
|
|
3532
|
+
/** Check if current user has reacted with specific emoji by message ID */
|
|
3533
|
+
hasUserReactedById(messageId: string, emoji: string): boolean;
|
|
3534
|
+
/** Handle reaction click by message ID */
|
|
3535
|
+
onReactionClickById(messageId: string, emoji: string): void;
|
|
3536
|
+
/** Get message by ID */
|
|
3537
|
+
getMessageById(messageId: string): AXMessage | undefined;
|
|
3538
|
+
/** Load available reactions from API */
|
|
3539
|
+
private loadAvailableReactions;
|
|
3540
|
+
/** Get message actions from registry */
|
|
3541
|
+
getMessageActions(message: AXMessage): _acorex_components_conversation2.AXMessageAction[];
|
|
3542
|
+
/** Get initials from name */
|
|
3543
|
+
getInitials(name: string): string;
|
|
3544
|
+
/** Handle reaction click */
|
|
3545
|
+
onReactionClick(message: AXMessage, emoji: string): void;
|
|
3546
|
+
/** Handle message action */
|
|
3547
|
+
onMessageAction(message: AXMessage, action: any): Promise<void>;
|
|
3548
|
+
/** Handle scroll events */
|
|
3549
|
+
onScroll(event: Event): void;
|
|
3550
|
+
/** Handle infinite scroll threshold */
|
|
3551
|
+
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
3552
|
+
/** Load older messages - delegate to service */
|
|
3553
|
+
private loadOlderMessages;
|
|
3554
|
+
/** Check if user is near bottom of scroll */
|
|
3555
|
+
private isUserNearBottom;
|
|
3556
|
+
/** Scroll to bottom */
|
|
3557
|
+
scrollToBottom(smooth?: boolean): void;
|
|
3558
|
+
/** Scroll to specific message */
|
|
3559
|
+
scrollToMessage(messageId: string): void;
|
|
3560
|
+
/** Cleanup timeouts and observers on destroy */
|
|
3561
|
+
ngOnDestroy(): void;
|
|
3562
|
+
/** Get message preview text for reply */
|
|
3563
|
+
getMessagePreviewText(message: AXMessage): {
|
|
3564
|
+
value: string;
|
|
3565
|
+
type: string;
|
|
3566
|
+
icon: string;
|
|
3567
|
+
};
|
|
3568
|
+
/** Get ARIA label for message */
|
|
3569
|
+
getMessageAriaLabel(message: AXMessage): string;
|
|
3570
|
+
/** Get reply count for a message (fetches from API across all conversations) */
|
|
3571
|
+
getReplyCount(message: AXMessage): number;
|
|
3572
|
+
/** Get forward count for a message (fetches from API across all conversations) */
|
|
3573
|
+
getForwardCount(message: AXMessage): number;
|
|
3574
|
+
/**
|
|
3575
|
+
* Refresh count for a specific message from API
|
|
3576
|
+
* This is called when a new reply or forward is detected globally
|
|
3577
|
+
*/
|
|
3578
|
+
private refreshCount;
|
|
3579
|
+
/** Show thread view for a message */
|
|
3580
|
+
showThread(message: AXMessage): void;
|
|
3581
|
+
/** Handle context menu opening for messages */
|
|
3582
|
+
handleMessageContextMenuOpening(event: AXContextMenuOpeningEvent, message: AXMessage): void;
|
|
3583
|
+
/** Handle context menu item click for messages */
|
|
3584
|
+
handleMessageContextMenuItemClick(event: AXContextMenuItemsClickEvent, message: AXMessage): void;
|
|
3585
|
+
/**
|
|
3586
|
+
* TrackBy function for message groups
|
|
3587
|
+
* Tracks by date only to prevent re-rendering when messages are added
|
|
3588
|
+
*/
|
|
3589
|
+
trackMessageGroup(index: number, group: {
|
|
3590
|
+
date: string;
|
|
3591
|
+
messages: AXMessage[];
|
|
3592
|
+
}): string;
|
|
3593
|
+
/**
|
|
3594
|
+
* TrackBy function for messages
|
|
3595
|
+
* Tracks by ID only to prevent unnecessary re-renders
|
|
3596
|
+
*/
|
|
3597
|
+
trackMessage(index: number, message: AXMessage): string;
|
|
3598
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMessageListComponent, never>;
|
|
3599
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMessageListComponent, "ax-conversation-message-list", never, { "avatarTemplate": { "alias": "avatarTemplate"; "required": false; "isSignal": true; }; }, { "messageAction": "messageAction"; }, never, never, true, never>;
|
|
3600
|
+
}
|
|
3601
|
+
interface AXMessageAvatarTemplateContext {
|
|
3602
|
+
$implicit: AXMessage;
|
|
3603
|
+
size: number;
|
|
3604
|
+
senderName: string;
|
|
3605
|
+
senderAvatar?: string;
|
|
3606
|
+
}
|
|
3607
|
+
|
|
3608
|
+
declare class AXMessageListService {
|
|
3609
|
+
private readonly conversationService;
|
|
3610
|
+
private readonly composerService;
|
|
3611
|
+
private readonly config;
|
|
3612
|
+
private get registry();
|
|
3613
|
+
readonly activeConversation: _angular_core.Signal<_acorex_components_conversation2.AXConversation>;
|
|
3614
|
+
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
3615
|
+
readonly currentUser: _angular_core.Signal<_acorex_components_conversation2.AXParticipant>;
|
|
3616
|
+
/** Loading state */
|
|
3617
|
+
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
3618
|
+
/** Loading more messages state */
|
|
3619
|
+
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
3620
|
+
/** Show scroll to bottom button */
|
|
3621
|
+
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
3622
|
+
/** Scroll requests counter */
|
|
3623
|
+
readonly scrollRequests: _angular_core.WritableSignal<number>;
|
|
3624
|
+
/** Current page for pagination */
|
|
3625
|
+
private readonly currentPage;
|
|
3626
|
+
/** Has more messages to load */
|
|
3627
|
+
private readonly hasMoreMessages;
|
|
3628
|
+
/** Message grouped by date */
|
|
3629
|
+
readonly messageGroups: _angular_core.Signal<{
|
|
3630
|
+
date: string;
|
|
3631
|
+
dateLabel: string;
|
|
3632
|
+
messages: AXMessage[];
|
|
3633
|
+
}[]>;
|
|
3634
|
+
/**
|
|
3635
|
+
* Load more messages (pagination)
|
|
3636
|
+
*/
|
|
3637
|
+
loadMoreMessages(): Promise<void>;
|
|
3638
|
+
/**
|
|
3639
|
+
* Reset pagination (call when conversation changes)
|
|
3640
|
+
*/
|
|
3641
|
+
resetPagination(): void;
|
|
3642
|
+
getMenuActions(message: AXMessage): _acorex_components_conversation2.AXMessageAction[];
|
|
3643
|
+
executeAction(message: AXMessage, actionId: string): Promise<void>;
|
|
3644
|
+
reactToMessage(messageId: string, emoji: string): Promise<void>;
|
|
3645
|
+
/** Request message list to scroll to bottom */
|
|
3646
|
+
requestScrollToBottom(): void;
|
|
3647
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMessageListService, never>;
|
|
3648
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXMessageListService>;
|
|
3649
|
+
}
|
|
3650
|
+
|
|
3651
|
+
/**
|
|
3652
|
+
* Conversation Store Service
|
|
3653
|
+
* Unified signal-based store for conversations and messages
|
|
3654
|
+
*/
|
|
3655
|
+
declare class AXConversationStoreService {
|
|
3656
|
+
private readonly config;
|
|
3657
|
+
private readonly errorHandler;
|
|
3658
|
+
/** All conversations (keyed by ID) */
|
|
3659
|
+
private readonly _conversations;
|
|
3660
|
+
/** All messages (keyed by message ID) */
|
|
3661
|
+
private readonly _messages;
|
|
3662
|
+
/** Message IDs grouped by conversation */
|
|
3663
|
+
private readonly _conversationMessages;
|
|
3664
|
+
/** All conversations as array (unsorted - sorting is handled by consumers) */
|
|
3665
|
+
readonly conversations: _angular_core.Signal<AXConversation[]>;
|
|
3666
|
+
/** All messages as array */
|
|
3667
|
+
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
3668
|
+
/**
|
|
3669
|
+
* Initialize the store
|
|
3670
|
+
*/
|
|
3671
|
+
initialize(): Promise<void>;
|
|
3672
|
+
/**
|
|
3673
|
+
* Set all conversations (replaces existing)
|
|
3674
|
+
* @param conversations - Array of conversations
|
|
3675
|
+
*/
|
|
3676
|
+
setConversations(conversations: AXConversation[]): void;
|
|
3677
|
+
/**
|
|
3678
|
+
* Add multiple conversations (append to existing)
|
|
3679
|
+
* Used for pagination - appends new conversations without replacing existing ones
|
|
3680
|
+
* @param conversations - Array of conversations to add
|
|
3681
|
+
*/
|
|
3682
|
+
addConversations(conversations: AXConversation[]): void;
|
|
3683
|
+
/**
|
|
3684
|
+
* Add or update a single conversation
|
|
3685
|
+
* @param conversation - Conversation to add/update
|
|
3686
|
+
*/
|
|
3687
|
+
setConversation(conversation: AXConversation): void;
|
|
3688
|
+
/**
|
|
3689
|
+
* Get a conversation by ID
|
|
3690
|
+
* @param conversationId - Conversation ID
|
|
3691
|
+
* @returns Conversation or undefined
|
|
3692
|
+
*/
|
|
3693
|
+
getConversation(conversationId: string): AXConversation | undefined;
|
|
3694
|
+
/**
|
|
3695
|
+
* Update a conversation with partial data
|
|
3696
|
+
* @param conversationId - Conversation ID
|
|
3697
|
+
* @param updates - Partial conversation updates
|
|
3698
|
+
*/
|
|
3699
|
+
updateConversation(conversationId: string, updates: Partial<AXConversation>): void;
|
|
3700
|
+
/**
|
|
3701
|
+
* Delete a conversation
|
|
3702
|
+
* @param conversationId - Conversation ID
|
|
3703
|
+
*/
|
|
3704
|
+
deleteConversation(conversationId: string): void;
|
|
3705
|
+
/**
|
|
3706
|
+
* Update conversation's last message
|
|
3707
|
+
* @param message - The message to set as last message
|
|
3708
|
+
*/
|
|
3709
|
+
updateLastMessage(message: AXMessage): void;
|
|
3710
|
+
/**
|
|
3711
|
+
* Increment unread count
|
|
3709
3712
|
* @param conversationId - Conversation ID
|
|
3710
3713
|
*/
|
|
3711
3714
|
incrementUnreadCount(conversationId: string): void;
|
|
@@ -3816,367 +3819,208 @@ declare class AXConversationStoreService {
|
|
|
3816
3819
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationStoreService>;
|
|
3817
3820
|
}
|
|
3818
3821
|
|
|
3819
|
-
|
|
3820
|
-
|
|
3821
|
-
|
|
3822
|
-
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
3831
|
-
|
|
3832
|
-
|
|
3833
|
-
/**
|
|
3834
|
-
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
/**
|
|
3838
|
-
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
/**
|
|
3842
|
-
|
|
3822
|
+
/**
|
|
3823
|
+
* Error severity levels
|
|
3824
|
+
*/
|
|
3825
|
+
type AXErrorSeverity = 'info' | 'warning' | 'error' | 'critical';
|
|
3826
|
+
/**
|
|
3827
|
+
* Conversation error event
|
|
3828
|
+
*/
|
|
3829
|
+
interface AXConversationError {
|
|
3830
|
+
/** Error code */
|
|
3831
|
+
code: string;
|
|
3832
|
+
/** Error message */
|
|
3833
|
+
message: string;
|
|
3834
|
+
/** Severity level */
|
|
3835
|
+
severity: AXErrorSeverity;
|
|
3836
|
+
/** Source operation */
|
|
3837
|
+
operation: string;
|
|
3838
|
+
/** Original error */
|
|
3839
|
+
originalError?: unknown;
|
|
3840
|
+
/** HTTP status code (if applicable) */
|
|
3841
|
+
statusCode?: number;
|
|
3842
|
+
/** Additional context */
|
|
3843
|
+
context?: Record<string, unknown>;
|
|
3844
|
+
/** Timestamp */
|
|
3845
|
+
timestamp: Date;
|
|
3846
|
+
/** Whether error was handled */
|
|
3847
|
+
handled: boolean;
|
|
3848
|
+
/** Recovery suggestions */
|
|
3849
|
+
recoverySuggestions?: string[];
|
|
3850
|
+
}
|
|
3851
|
+
/**
|
|
3852
|
+
* Error Handler Configuration
|
|
3853
|
+
*/
|
|
3854
|
+
interface AXErrorHandlerConfig {
|
|
3855
|
+
/** Log errors to console */
|
|
3856
|
+
logToConsole?: boolean;
|
|
3857
|
+
/** Show user-friendly error messages */
|
|
3858
|
+
showUserMessages?: boolean;
|
|
3859
|
+
/** Retry failed operations automatically */
|
|
3860
|
+
autoRetry?: boolean;
|
|
3861
|
+
/** Number of retry attempts */
|
|
3862
|
+
maxRetries?: number;
|
|
3863
|
+
/** Custom error handler */
|
|
3864
|
+
customHandler?: (error: AXConversationError) => void;
|
|
3865
|
+
}
|
|
3866
|
+
/**
|
|
3867
|
+
* Error Handler Service
|
|
3868
|
+
*/
|
|
3869
|
+
declare class AXErrorHandlerService {
|
|
3870
|
+
private readonly injectedConfig;
|
|
3871
|
+
private readonly _errors$;
|
|
3872
|
+
private readonly _config;
|
|
3873
|
+
/** Error stream */
|
|
3874
|
+
readonly errors$: rxjs.Observable<AXConversationError>;
|
|
3875
|
+
constructor();
|
|
3876
|
+
/**
|
|
3877
|
+
* Configure error handler
|
|
3843
3878
|
*/
|
|
3844
|
-
|
|
3879
|
+
configure(config: Partial<AXErrorHandlerConfig>): void;
|
|
3845
3880
|
/**
|
|
3846
|
-
*
|
|
3881
|
+
* Handle an error
|
|
3847
3882
|
*/
|
|
3848
|
-
|
|
3883
|
+
handle(error: unknown, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3849
3884
|
/**
|
|
3850
|
-
*
|
|
3885
|
+
* Handle API error
|
|
3851
3886
|
*/
|
|
3852
|
-
|
|
3887
|
+
handleApiError(apiError: AXApiError, operation: string, context?: Record<string, unknown>): AXConversationError;
|
|
3853
3888
|
/**
|
|
3854
|
-
*
|
|
3889
|
+
* Normalize any error to conversation error format
|
|
3855
3890
|
*/
|
|
3856
|
-
|
|
3891
|
+
private normalizeError;
|
|
3857
3892
|
/**
|
|
3858
|
-
*
|
|
3893
|
+
* Check if error is API error
|
|
3859
3894
|
*/
|
|
3860
|
-
|
|
3895
|
+
private isApiError;
|
|
3861
3896
|
/**
|
|
3862
|
-
*
|
|
3897
|
+
* Determine severity based on status code
|
|
3863
3898
|
*/
|
|
3864
|
-
|
|
3899
|
+
private determineSeverity;
|
|
3865
3900
|
/**
|
|
3866
|
-
*
|
|
3901
|
+
* Get recovery suggestions based on error
|
|
3867
3902
|
*/
|
|
3868
|
-
|
|
3903
|
+
private getRecoverySuggestions;
|
|
3869
3904
|
/**
|
|
3870
|
-
*
|
|
3905
|
+
* Get default recovery suggestions
|
|
3871
3906
|
*/
|
|
3872
|
-
|
|
3907
|
+
private getDefaultRecoverySuggestions;
|
|
3873
3908
|
/**
|
|
3874
|
-
*
|
|
3909
|
+
* Log error to console
|
|
3875
3910
|
*/
|
|
3876
|
-
|
|
3911
|
+
private logError;
|
|
3877
3912
|
/**
|
|
3878
|
-
*
|
|
3913
|
+
* Get user-friendly error message
|
|
3879
3914
|
*/
|
|
3880
|
-
|
|
3915
|
+
getUserFriendlyMessage(error: AXConversationError): string;
|
|
3881
3916
|
/**
|
|
3882
|
-
*
|
|
3917
|
+
* Check if error is retryable
|
|
3883
3918
|
*/
|
|
3884
|
-
|
|
3919
|
+
isRetryable(error: AXConversationError): boolean;
|
|
3885
3920
|
/**
|
|
3886
|
-
*
|
|
3921
|
+
* Execute an operation with automatic retry logic
|
|
3922
|
+
* @param operation - The async operation to execute
|
|
3923
|
+
* @param operationName - Name of the operation for error tracking
|
|
3924
|
+
* @param context - Additional context for error handling
|
|
3925
|
+
* @returns Promise resolving to the operation result
|
|
3926
|
+
* @throws {AXConversationError} If all retries fail
|
|
3887
3927
|
*/
|
|
3888
|
-
|
|
3928
|
+
executeWithRetry<T>(operation: () => Promise<T>, operationName: string, context?: Record<string, unknown>): Promise<T>;
|
|
3889
3929
|
/**
|
|
3890
|
-
*
|
|
3930
|
+
* Delay helper for retry backoff
|
|
3931
|
+
* @param ms - Milliseconds to delay
|
|
3891
3932
|
*/
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileUploadService, never>;
|
|
3900
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXFileUploadService>;
|
|
3933
|
+
private delay;
|
|
3934
|
+
/**
|
|
3935
|
+
* Clear error history
|
|
3936
|
+
*/
|
|
3937
|
+
clear(): void;
|
|
3938
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXErrorHandlerService, never>;
|
|
3939
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXErrorHandlerService>;
|
|
3901
3940
|
}
|
|
3902
3941
|
|
|
3903
|
-
interface
|
|
3904
|
-
|
|
3905
|
-
|
|
3906
|
-
|
|
3907
|
-
|
|
3908
|
-
divider?: boolean;
|
|
3909
|
-
destructive?: boolean;
|
|
3910
|
-
shortcut?: string;
|
|
3942
|
+
interface FileUploadProgress {
|
|
3943
|
+
file: File;
|
|
3944
|
+
progress: number;
|
|
3945
|
+
status: 'pending' | 'uploading' | 'completed' | 'error';
|
|
3946
|
+
error?: string;
|
|
3911
3947
|
}
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
/** Active conversation */
|
|
3917
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
3918
|
-
/** Active component from service */
|
|
3919
|
-
readonly activeComponent: _angular_core.Signal<AXInfoBarActiveComponent>;
|
|
3920
|
-
/** Members popover reference */
|
|
3921
|
-
readonly membersPopoverRef: _angular_core.Signal<AXPopoverComponent>;
|
|
3922
|
-
/** Members popover target element */
|
|
3923
|
-
readonly membersPopoverTarget: _angular_core.WritableSignal<HTMLElement>;
|
|
3924
|
-
/** Loading state for async actions */
|
|
3925
|
-
readonly actionLoading: _angular_core.WritableSignal<boolean>;
|
|
3926
|
-
/** Avatar clicked event */
|
|
3927
|
-
readonly avatarClick: _angular_core.OutputEmitterRef<void>;
|
|
3928
|
-
/** Search clicked event */
|
|
3929
|
-
readonly searchClick: _angular_core.OutputEmitterRef<void>;
|
|
3930
|
-
/** Search query changed event */
|
|
3931
|
-
readonly searchQuery: _angular_core.OutputEmitterRef<string>;
|
|
3932
|
-
/** Menu item clicked event */
|
|
3933
|
-
readonly menuItemAction: _angular_core.OutputEmitterRef<string>;
|
|
3934
|
-
/** Inline action buttons from registry */
|
|
3935
|
-
readonly inlineActions: _angular_core.Signal<_acorex_components_conversation2.AXInfoBarAction[]>;
|
|
3936
|
-
/** Dropdown menu items from registry */
|
|
3937
|
-
readonly menuItems: _angular_core.Signal<DropdownMenuItem[]>;
|
|
3938
|
-
/** Get conversation status - delegate to utils */
|
|
3939
|
-
getStatus(conversation: AXConversation): 'online' | 'offline' | 'away' | undefined;
|
|
3940
|
-
/** Get subtitle text - delegate to utils */
|
|
3941
|
-
getSubtitle(conversation: AXConversation): string;
|
|
3942
|
-
/** Get initials from name - delegate to utils */
|
|
3943
|
-
getInitials(name: string): string;
|
|
3944
|
-
/** Handle avatar click */
|
|
3945
|
-
onAvatarClick(): void;
|
|
3946
|
-
/** Handle members click - open popover */
|
|
3947
|
-
onMembersClick(event: MouseEvent): void;
|
|
3948
|
-
/** Handle inline action click */
|
|
3949
|
-
onInlineActionClick(actionId: string): Promise<void>;
|
|
3950
|
-
/** Get inputs for dynamic component */
|
|
3951
|
-
getComponentInputs(): Record<string, any>;
|
|
3952
|
-
/** Handle close component */
|
|
3953
|
-
onCloseComponent(): void;
|
|
3954
|
-
/** Handle menu item click */
|
|
3955
|
-
onMenuItemClick(item: DropdownMenuItem): Promise<void>;
|
|
3956
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXInfoBarComponent, never>;
|
|
3957
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXInfoBarComponent, "ax-conversation-info-bar", never, {}, { "avatarClick": "avatarClick"; "searchClick": "searchClick"; "searchQuery": "searchQuery"; "menuItemAction": "menuItemAction"; }, never, ["ax-prefix"], true, never>;
|
|
3948
|
+
interface FilePreview {
|
|
3949
|
+
file: File;
|
|
3950
|
+
preview?: string;
|
|
3951
|
+
type: 'image' | 'video' | 'audio' | 'file';
|
|
3958
3952
|
}
|
|
3959
|
-
|
|
3960
|
-
|
|
3961
|
-
private
|
|
3962
|
-
private readonly messageListService;
|
|
3963
|
-
protected readonly config: AXConversationConfig;
|
|
3964
|
-
/** Custom avatar template for message list items */
|
|
3965
|
-
readonly avatarTemplate: _angular_core.InputSignal<TemplateRef<AXMessageAvatarTemplateContext>>;
|
|
3966
|
-
private readonly timeouts;
|
|
3967
|
-
private readonly replyCounts;
|
|
3968
|
-
private readonly forwardCounts;
|
|
3969
|
-
readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
|
|
3970
|
-
readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
|
|
3971
|
-
readonly reactionPopover: _angular_core.Signal<any>;
|
|
3972
|
-
readonly availableReactions: _angular_core.WritableSignal<string[]>;
|
|
3973
|
-
private get registry();
|
|
3974
|
-
/** Message list element reference */
|
|
3975
|
-
private readonly messageListRef;
|
|
3976
|
-
/** Messages container element reference */
|
|
3977
|
-
private readonly messagesContainerRef;
|
|
3978
|
-
/** Loading state - use service */
|
|
3979
|
-
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
3980
|
-
/** Loading more messages state - use service */
|
|
3981
|
-
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
3982
|
-
/** Show scroll to bottom button - use service */
|
|
3983
|
-
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
3984
|
-
/** Active conversation */
|
|
3985
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
3986
|
-
/** Messages */
|
|
3987
|
-
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
3988
|
-
/** Message action event */
|
|
3989
|
-
readonly messageAction: _angular_core.OutputEmitterRef<{
|
|
3990
|
-
message: AXMessage;
|
|
3991
|
-
action: string;
|
|
3992
|
-
}>;
|
|
3993
|
-
/** Current user from service */
|
|
3994
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
3995
|
-
/** Message grouped by date - use service */
|
|
3996
|
-
readonly messageGroups: _angular_core.Signal<{
|
|
3997
|
-
date: string;
|
|
3998
|
-
dateLabel: string;
|
|
3999
|
-
messages: AXMessage[];
|
|
4000
|
-
}[]>;
|
|
4001
|
-
constructor();
|
|
4002
|
-
private intersectionObserver?;
|
|
3953
|
+
declare class AXFileUploadService {
|
|
3954
|
+
private readonly config;
|
|
3955
|
+
private uploadProgress$;
|
|
4003
3956
|
/**
|
|
4004
|
-
*
|
|
3957
|
+
* Get upload progress observable
|
|
4005
3958
|
*/
|
|
4006
|
-
|
|
3959
|
+
getUploadProgress(): Observable<FileUploadProgress>;
|
|
4007
3960
|
/**
|
|
4008
|
-
*
|
|
3961
|
+
* Read file as data URL for preview
|
|
4009
3962
|
*/
|
|
4010
|
-
|
|
4011
|
-
/**
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
/**
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
/**
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
/**
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
|
|
4027
|
-
/** Get forwarded text with sender and conversation info */
|
|
4028
|
-
getForwardedText(message: AXMessage): string;
|
|
4029
|
-
/** Resolve renderer component for message */
|
|
4030
|
-
getRendererComponent(message: AXMessage): _angular_core.Type<any>;
|
|
4031
|
-
/** Provide inputs for the dynamic renderer */
|
|
4032
|
-
getRendererInputs(message: AXMessage): {
|
|
4033
|
-
message: AXMessage;
|
|
4034
|
-
};
|
|
4035
|
-
/** Get status icon */
|
|
4036
|
-
getStatusIcon(message: AXMessage): string;
|
|
4037
|
-
/** Get status icon CSS classes */
|
|
4038
|
-
getStatusIconClasses(message: AXMessage): string;
|
|
4039
|
-
/** Get status tooltip text */
|
|
4040
|
-
getStatusTooltip(message: AXMessage): string;
|
|
4041
|
-
/** Get first unread message ID */
|
|
4042
|
-
readonly firstUnreadMessageId: _angular_core.Signal<string>;
|
|
4043
|
-
/** Get grouped reactions */
|
|
4044
|
-
getGroupedReactions(message: AXMessage): Array<{
|
|
4045
|
-
emoji: string;
|
|
4046
|
-
count: number;
|
|
4047
|
-
userIds: string[];
|
|
4048
|
-
hasReacted: boolean;
|
|
4049
|
-
}>;
|
|
4050
|
-
/** Get reaction tooltip text */
|
|
4051
|
-
getReactionTooltip(reaction: {
|
|
4052
|
-
emoji: string;
|
|
4053
|
-
count: number;
|
|
4054
|
-
userIds: string[];
|
|
4055
|
-
hasReacted: boolean;
|
|
4056
|
-
}): string;
|
|
4057
|
-
/** Toggle reaction picker */
|
|
4058
|
-
toggleReactionPicker(messageId: string, event: MouseEvent): void;
|
|
4059
|
-
/** Close reaction picker */
|
|
4060
|
-
closeReactionPicker(): void;
|
|
4061
|
-
/** Check if current user has reacted with specific emoji */
|
|
4062
|
-
hasUserReacted(message: AXMessage, emoji: string): boolean;
|
|
4063
|
-
/** Check if current user has reacted with specific emoji by message ID */
|
|
4064
|
-
hasUserReactedById(messageId: string, emoji: string): boolean;
|
|
4065
|
-
/** Handle reaction click by message ID */
|
|
4066
|
-
onReactionClickById(messageId: string, emoji: string): void;
|
|
4067
|
-
/** Get message by ID */
|
|
4068
|
-
getMessageById(messageId: string): AXMessage | undefined;
|
|
4069
|
-
/** Load available reactions from API */
|
|
4070
|
-
private loadAvailableReactions;
|
|
4071
|
-
/** Get message actions from registry */
|
|
4072
|
-
getMessageActions(message: AXMessage): _acorex_components_conversation2.AXMessageAction[];
|
|
4073
|
-
/** Get initials from name */
|
|
4074
|
-
getInitials(name: string): string;
|
|
4075
|
-
/** Handle reaction click */
|
|
4076
|
-
onReactionClick(message: AXMessage, emoji: string): void;
|
|
4077
|
-
/** Handle message action */
|
|
4078
|
-
onMessageAction(message: AXMessage, action: any): Promise<void>;
|
|
4079
|
-
/** Handle scroll events */
|
|
4080
|
-
onScroll(event: Event): void;
|
|
4081
|
-
/** Handle infinite scroll threshold */
|
|
4082
|
-
onScrollThreshold(edge: 'top' | 'bottom'): Promise<void>;
|
|
4083
|
-
/** Load older messages - delegate to service */
|
|
4084
|
-
private loadOlderMessages;
|
|
4085
|
-
/** Check if user is near bottom of scroll */
|
|
4086
|
-
private isUserNearBottom;
|
|
4087
|
-
/** Scroll to bottom */
|
|
4088
|
-
scrollToBottom(smooth?: boolean): void;
|
|
4089
|
-
/** Scroll to specific message */
|
|
4090
|
-
scrollToMessage(messageId: string): void;
|
|
4091
|
-
/** Cleanup timeouts and observers on destroy */
|
|
4092
|
-
ngOnDestroy(): void;
|
|
4093
|
-
/** Get message preview text for reply */
|
|
4094
|
-
getMessagePreviewText(message: AXMessage): {
|
|
4095
|
-
value: string;
|
|
4096
|
-
type: string;
|
|
4097
|
-
icon: string;
|
|
4098
|
-
};
|
|
4099
|
-
/** Get ARIA label for message */
|
|
4100
|
-
getMessageAriaLabel(message: AXMessage): string;
|
|
4101
|
-
/** Get reply count for a message (fetches from API across all conversations) */
|
|
4102
|
-
getReplyCount(message: AXMessage): number;
|
|
4103
|
-
/** Get forward count for a message (fetches from API across all conversations) */
|
|
4104
|
-
getForwardCount(message: AXMessage): number;
|
|
3963
|
+
readFileAsDataURL(file: File): Promise<string>;
|
|
3964
|
+
/**
|
|
3965
|
+
* Get file type category
|
|
3966
|
+
*/
|
|
3967
|
+
getFileType(file: File): 'image' | 'video' | 'audio' | 'file';
|
|
3968
|
+
/**
|
|
3969
|
+
* Generate file preview
|
|
3970
|
+
*/
|
|
3971
|
+
generatePreview(file: File): Promise<FilePreview>;
|
|
3972
|
+
/**
|
|
3973
|
+
* Generate previews for multiple files
|
|
3974
|
+
*/
|
|
3975
|
+
generatePreviews(files: File[]): Promise<FilePreview[]>;
|
|
3976
|
+
/**
|
|
3977
|
+
* Get video duration
|
|
3978
|
+
*/
|
|
3979
|
+
getVideoDuration(file: File): Promise<number>;
|
|
4105
3980
|
/**
|
|
4106
|
-
*
|
|
4107
|
-
* This is called when a new reply or forward is detected globally
|
|
3981
|
+
* Get audio duration
|
|
4108
3982
|
*/
|
|
4109
|
-
|
|
4110
|
-
/** Show thread view for a message */
|
|
4111
|
-
showThread(message: AXMessage): void;
|
|
4112
|
-
/** Handle context menu opening for messages */
|
|
4113
|
-
handleMessageContextMenuOpening(event: AXContextMenuOpeningEvent, message: AXMessage): void;
|
|
4114
|
-
/** Handle context menu item click for messages */
|
|
4115
|
-
handleMessageContextMenuItemClick(event: AXContextMenuItemsClickEvent, message: AXMessage): void;
|
|
3983
|
+
getAudioDuration(file: File): Promise<number>;
|
|
4116
3984
|
/**
|
|
4117
|
-
*
|
|
4118
|
-
* Tracks by date only to prevent re-rendering when messages are added
|
|
3985
|
+
* Format file size
|
|
4119
3986
|
*/
|
|
4120
|
-
|
|
4121
|
-
date: string;
|
|
4122
|
-
messages: AXMessage[];
|
|
4123
|
-
}): string;
|
|
3987
|
+
formatFileSize(bytes: number): string;
|
|
4124
3988
|
/**
|
|
4125
|
-
*
|
|
4126
|
-
* Tracks by ID only to prevent unnecessary re-renders
|
|
3989
|
+
* Format duration (seconds to mm:ss)
|
|
4127
3990
|
*/
|
|
4128
|
-
|
|
4129
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXMessageListComponent, never>;
|
|
4130
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXMessageListComponent, "ax-conversation-message-list", never, { "avatarTemplate": { "alias": "avatarTemplate"; "required": false; "isSignal": true; }; }, { "messageAction": "messageAction"; }, never, never, true, never>;
|
|
4131
|
-
}
|
|
4132
|
-
interface AXMessageAvatarTemplateContext {
|
|
4133
|
-
$implicit: AXMessage;
|
|
4134
|
-
size: number;
|
|
4135
|
-
senderName: string;
|
|
4136
|
-
senderAvatar?: string;
|
|
4137
|
-
}
|
|
4138
|
-
|
|
4139
|
-
declare class AXMessageListService {
|
|
4140
|
-
private readonly conversationService;
|
|
4141
|
-
private readonly composerService;
|
|
4142
|
-
private readonly config;
|
|
4143
|
-
private get registry();
|
|
4144
|
-
readonly activeConversation: _angular_core.Signal<AXConversation>;
|
|
4145
|
-
readonly activeMessages: _angular_core.Signal<AXMessage[]>;
|
|
4146
|
-
readonly currentUser: _angular_core.Signal<AXParticipant>;
|
|
4147
|
-
/** Loading state */
|
|
4148
|
-
readonly loading: _angular_core.WritableSignal<boolean>;
|
|
4149
|
-
/** Loading more messages state */
|
|
4150
|
-
readonly loadingMore: _angular_core.WritableSignal<boolean>;
|
|
4151
|
-
/** Show scroll to bottom button */
|
|
4152
|
-
readonly showScrollButton: _angular_core.WritableSignal<boolean>;
|
|
4153
|
-
/** Scroll requests counter */
|
|
4154
|
-
readonly scrollRequests: _angular_core.WritableSignal<number>;
|
|
4155
|
-
/** Current page for pagination */
|
|
4156
|
-
private readonly currentPage;
|
|
4157
|
-
/** Has more messages to load */
|
|
4158
|
-
private readonly hasMoreMessages;
|
|
4159
|
-
/** Message grouped by date */
|
|
4160
|
-
readonly messageGroups: _angular_core.Signal<{
|
|
4161
|
-
date: string;
|
|
4162
|
-
dateLabel: string;
|
|
4163
|
-
messages: AXMessage[];
|
|
4164
|
-
}[]>;
|
|
3991
|
+
formatDuration(seconds: number): string;
|
|
4165
3992
|
/**
|
|
4166
|
-
*
|
|
3993
|
+
* Validate file type
|
|
4167
3994
|
*/
|
|
4168
|
-
|
|
3995
|
+
validateFileType(file: File, allowedTypes: string[]): boolean;
|
|
4169
3996
|
/**
|
|
4170
|
-
*
|
|
3997
|
+
* Validate file size
|
|
4171
3998
|
*/
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
3999
|
+
validateFileSize(file: File, maxSizeInMB: number): boolean;
|
|
4000
|
+
/**
|
|
4001
|
+
* Filter files by type
|
|
4002
|
+
*/
|
|
4003
|
+
filterFilesByType(files: File[], allowedTypes: string[]): File[];
|
|
4004
|
+
/**
|
|
4005
|
+
* Validate file type against conversation config
|
|
4006
|
+
*/
|
|
4007
|
+
isFileTypeAllowed(file: File): boolean;
|
|
4008
|
+
/**
|
|
4009
|
+
* Validate file size against conversation config
|
|
4010
|
+
*/
|
|
4011
|
+
isFileSizeAllowed(file: File): boolean;
|
|
4012
|
+
/**
|
|
4013
|
+
* Validate a set of files using conversation config
|
|
4014
|
+
*/
|
|
4015
|
+
validateFilesWithConfig(files: File[]): {
|
|
4016
|
+
accepted: File[];
|
|
4017
|
+
rejected: {
|
|
4018
|
+
file: File;
|
|
4019
|
+
reason: string;
|
|
4020
|
+
}[];
|
|
4021
|
+
};
|
|
4022
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXFileUploadService, never>;
|
|
4023
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXFileUploadService>;
|
|
4180
4024
|
}
|
|
4181
4025
|
|
|
4182
4026
|
declare class AXForwardMessageDialogComponent implements OnInit {
|
|
@@ -4273,7 +4117,7 @@ declare class AXSidebarService {
|
|
|
4273
4117
|
|
|
4274
4118
|
declare class AXSidebarComponent implements OnDestroy {
|
|
4275
4119
|
readonly sidebar: AXSidebarService;
|
|
4276
|
-
protected readonly config: AXConversationConfig;
|
|
4120
|
+
protected readonly config: _acorex_components_conversation2.AXConversationConfig;
|
|
4277
4121
|
/** Conversation selected event */
|
|
4278
4122
|
readonly conversationSelected: _angular_core.OutputEmitterRef<AXConversation>;
|
|
4279
4123
|
/** Search debouncing */
|
|
@@ -4324,6 +4168,162 @@ declare class AXInfiniteScrollDirective {
|
|
|
4324
4168
|
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>;
|
|
4325
4169
|
}
|
|
4326
4170
|
|
|
4171
|
+
/**
|
|
4172
|
+
* Conversation Configuration Interface
|
|
4173
|
+
* Centralized configuration values to avoid magic numbers
|
|
4174
|
+
*/
|
|
4175
|
+
/**
|
|
4176
|
+
* Main configuration interface for the conversation component
|
|
4177
|
+
*/
|
|
4178
|
+
interface AXConversationConfig {
|
|
4179
|
+
/** Number of messages to load per page */
|
|
4180
|
+
messagePageSize?: number;
|
|
4181
|
+
/** Number of conversations to load per page */
|
|
4182
|
+
conversationPageSize?: number;
|
|
4183
|
+
/** Scroll threshold for detecting scroll events */
|
|
4184
|
+
scrollThreshold?: number;
|
|
4185
|
+
/** Infinite scroll threshold */
|
|
4186
|
+
infiniteScrollThreshold?: number;
|
|
4187
|
+
/** Typing indicator timeout in milliseconds */
|
|
4188
|
+
typingIndicatorTimeout?: number;
|
|
4189
|
+
/** Typing indicator throttle in milliseconds (for rate limiting) */
|
|
4190
|
+
typingIndicatorThrottle?: number;
|
|
4191
|
+
/** Message highlight duration in milliseconds */
|
|
4192
|
+
messageHighlightDuration?: number;
|
|
4193
|
+
/** Search debounce delay in milliseconds */
|
|
4194
|
+
debounceSearch?: number;
|
|
4195
|
+
/** Date separator inactivity fade delay in milliseconds */
|
|
4196
|
+
/** Maximum messages per conversation */
|
|
4197
|
+
maxMessagesPerConversation?: number;
|
|
4198
|
+
/** Maximum total messages in store */
|
|
4199
|
+
maxTotalMessages?: number;
|
|
4200
|
+
/** Maximum cached conversations */
|
|
4201
|
+
maxCachedConversations?: number;
|
|
4202
|
+
/** Minimum sidebar width in pixels */
|
|
4203
|
+
minSidebarWidth?: number;
|
|
4204
|
+
/** Maximum sidebar width in pixels */
|
|
4205
|
+
maxSidebarWidth?: number;
|
|
4206
|
+
/** Default sidebar width in pixels */
|
|
4207
|
+
defaultSidebarWidth?: number;
|
|
4208
|
+
/** Virtual scroll item size in pixels */
|
|
4209
|
+
virtualScrollItemSize?: number;
|
|
4210
|
+
/** Virtual scroll minimum buffer in pixels */
|
|
4211
|
+
virtualScrollMinBuffer?: number;
|
|
4212
|
+
/** Virtual scroll maximum buffer in pixels */
|
|
4213
|
+
virtualScrollMaxBuffer?: number;
|
|
4214
|
+
/** Filter cache size */
|
|
4215
|
+
filterCacheSize?: number;
|
|
4216
|
+
/** Maximum file size in bytes */
|
|
4217
|
+
maxFileSize?: number;
|
|
4218
|
+
/** Allowed file types (glob patterns like 'image/*') */
|
|
4219
|
+
allowedFileTypes?: string[];
|
|
4220
|
+
/** Maximum message length in characters */
|
|
4221
|
+
maxMessageLength?: number;
|
|
4222
|
+
/** Minimum message length in characters */
|
|
4223
|
+
minMessageLength?: number;
|
|
4224
|
+
/** Threshold for marking messages as read (0.0 to 1.0, default: 0.3) */
|
|
4225
|
+
messageReadThreshold?: number;
|
|
4226
|
+
}
|
|
4227
|
+
|
|
4228
|
+
/**
|
|
4229
|
+
* Default Configuration Values
|
|
4230
|
+
* Centralized defaults to avoid magic numbers throughout the codebase
|
|
4231
|
+
*/
|
|
4232
|
+
|
|
4233
|
+
/**
|
|
4234
|
+
* Default conversation configuration
|
|
4235
|
+
* All values are explicitly defined here for easy maintenance and documentation
|
|
4236
|
+
*/
|
|
4237
|
+
declare const AX_DEFAULT_CONVERSATION_CONFIG: Required<AXConversationConfig>;
|
|
4238
|
+
/**
|
|
4239
|
+
* Helper function to merge user config with defaults
|
|
4240
|
+
* Properly handles array merging to avoid reference issues
|
|
4241
|
+
* @param userConfig - User-provided configuration
|
|
4242
|
+
* @returns Merged configuration with all required fields
|
|
4243
|
+
*/
|
|
4244
|
+
declare function mergeWithDefaults(userConfig?: Partial<AXConversationConfig>): Required<AXConversationConfig>;
|
|
4245
|
+
|
|
4246
|
+
/**
|
|
4247
|
+
* Dependency Injection Tokens
|
|
4248
|
+
* InjectionTokens for configuration and dependencies
|
|
4249
|
+
*/
|
|
4250
|
+
|
|
4251
|
+
/**
|
|
4252
|
+
* Configuration token for conversation component
|
|
4253
|
+
* Uses centralized defaults from AX_DEFAULT_CONVERSATION_CONFIG
|
|
4254
|
+
*/
|
|
4255
|
+
declare const CONVERSATION_CONFIG: InjectionToken<AXConversationConfig>;
|
|
4256
|
+
/**
|
|
4257
|
+
* Token for configuring AXErrorHandlerService
|
|
4258
|
+
*/
|
|
4259
|
+
declare const ERROR_HANDLER_CONFIG: InjectionToken<Partial<AXErrorHandlerConfig>>;
|
|
4260
|
+
|
|
4261
|
+
/**
|
|
4262
|
+
* Registry Configuration Tokens
|
|
4263
|
+
* Injection tokens for configuring default registry values
|
|
4264
|
+
*/
|
|
4265
|
+
|
|
4266
|
+
/**
|
|
4267
|
+
* Additional message renderers configuration
|
|
4268
|
+
* Provide this token to add custom message renderers in addition to built-in ones
|
|
4269
|
+
* Note: Built-in renderers (text, image, video, audio, voice, file, location, sticker, contact, system, fallback) are automatically registered
|
|
4270
|
+
*/
|
|
4271
|
+
declare const DEFAULT_MESSAGE_RENDERERS: InjectionToken<AXMessageRenderer[]>;
|
|
4272
|
+
/**
|
|
4273
|
+
* Default message actions configuration
|
|
4274
|
+
* Provide this token to override default message actions
|
|
4275
|
+
*/
|
|
4276
|
+
declare const DEFAULT_MESSAGE_ACTIONS: InjectionToken<AXMessageAction[]>;
|
|
4277
|
+
/**
|
|
4278
|
+
* Default composer tabs configuration
|
|
4279
|
+
* Provide this token to override default composer tabs (emoji, stickers, etc.)
|
|
4280
|
+
*/
|
|
4281
|
+
declare const DEFAULT_COMPOSER_TABS: InjectionToken<AXComposerTab[]>;
|
|
4282
|
+
/**
|
|
4283
|
+
* Default composer actions configuration
|
|
4284
|
+
* Provide this token to override default composer actions (attach, voice, etc.)
|
|
4285
|
+
*/
|
|
4286
|
+
declare const DEFAULT_COMPOSER_ACTIONS: InjectionToken<AXComposerAction[]>;
|
|
4287
|
+
/**
|
|
4288
|
+
* Default conversation tabs configuration
|
|
4289
|
+
* Provide this token to override default conversation tabs (all, private, groups, etc.)
|
|
4290
|
+
*/
|
|
4291
|
+
declare const DEFAULT_CONVERSATION_TABS: InjectionToken<AXConversationTab[]>;
|
|
4292
|
+
/**
|
|
4293
|
+
* Default info bar actions configuration
|
|
4294
|
+
* Provide this token to override default info bar actions (mute, archive, block, etc.)
|
|
4295
|
+
*/
|
|
4296
|
+
declare const DEFAULT_INFO_BAR_ACTIONS: InjectionToken<AXInfoBarAction[]>;
|
|
4297
|
+
/**
|
|
4298
|
+
* Default conversation item actions configuration
|
|
4299
|
+
* Provide this token to override default conversation item actions (mute, delete, archive, etc.)
|
|
4300
|
+
*/
|
|
4301
|
+
declare const DEFAULT_CONVERSATION_ITEM_ACTIONS: InjectionToken<AXConversationItemAction[]>;
|
|
4302
|
+
/**
|
|
4303
|
+
* Registry configuration interface
|
|
4304
|
+
*/
|
|
4305
|
+
interface AXRegistryConfiguration {
|
|
4306
|
+
/** Additional message renderers to register (built-in renderers are automatic) */
|
|
4307
|
+
messageRenderers?: AXMessageRenderer[];
|
|
4308
|
+
/** Message actions to register by default */
|
|
4309
|
+
messageActions?: AXMessageAction[];
|
|
4310
|
+
/** Composer tabs to register by default */
|
|
4311
|
+
composerTabs?: AXComposerTab[];
|
|
4312
|
+
/** Composer actions to register by default */
|
|
4313
|
+
composerActions?: AXComposerAction[];
|
|
4314
|
+
/** Conversation tabs to register by default */
|
|
4315
|
+
conversationTabs?: AXConversationTab[];
|
|
4316
|
+
/** Info bar actions to register by default */
|
|
4317
|
+
infoBarActions?: AXInfoBarAction[];
|
|
4318
|
+
/** Conversation item actions to register by default */
|
|
4319
|
+
conversationItemActions?: AXConversationItemAction[];
|
|
4320
|
+
}
|
|
4321
|
+
/**
|
|
4322
|
+
* Complete registry configuration token
|
|
4323
|
+
* Provide this for comprehensive registry configuration
|
|
4324
|
+
*/
|
|
4325
|
+
declare const REGISTRY_CONFIG: InjectionToken<AXRegistryConfiguration>;
|
|
4326
|
+
|
|
4327
4327
|
declare class AXIndexedDBUserApi extends AXUserApi {
|
|
4328
4328
|
getCurrentUser(): Promise<AXParticipant>;
|
|
4329
4329
|
updateProfile(updates: AXUserProfileUpdate): Promise<AXParticipant>;
|
|
@@ -4959,7 +4959,7 @@ declare class AXConversationInfoPanelComponent extends AXClosableComponent imple
|
|
|
4959
4959
|
editTitle: string;
|
|
4960
4960
|
editAvatar: string;
|
|
4961
4961
|
/** Get filtered members based on search */
|
|
4962
|
-
get filteredMembers(): AXParticipant[];
|
|
4962
|
+
get filteredMembers(): _acorex_components_conversation2.AXParticipant[];
|
|
4963
4963
|
/** Handle tab change */
|
|
4964
4964
|
onTabChange(event: any): void;
|
|
4965
4965
|
ngOnInit(): void;
|
|
@@ -5008,7 +5008,7 @@ declare class AXInfoBarSearchComponent {
|
|
|
5008
5008
|
/** Current index from service */
|
|
5009
5009
|
readonly currentIndex: _angular_core.Signal<number>;
|
|
5010
5010
|
/** Messages from conversation */
|
|
5011
|
-
readonly messages: _angular_core.Signal<AXMessage[]>;
|
|
5011
|
+
readonly messages: _angular_core.Signal<_acorex_components_conversation2.AXMessage[]>;
|
|
5012
5012
|
constructor();
|
|
5013
5013
|
/** Handle search input change */
|
|
5014
5014
|
onSearchChange(value: string): void;
|