@memberjunction/ng-conversations 6.2.0-edge.0 → 6.2.0-edge.2
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/README.md +43 -2
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +19 -3
- package/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts.map +1 -1
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js +39 -7
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts +74 -6
- package/dist/lib/components/agent/active-agent-indicator.component.d.ts.map +1 -1
- package/dist/lib/components/agent/active-agent-indicator.component.js +111 -21
- package/dist/lib/components/agent/active-agent-indicator.component.js.map +1 -1
- package/dist/lib/components/agent/agent-process-panel.component.d.ts +31 -5
- package/dist/lib/components/agent/agent-process-panel.component.d.ts.map +1 -1
- package/dist/lib/components/agent/agent-process-panel.component.js +71 -15
- package/dist/lib/components/agent/agent-process-panel.component.js.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.d.ts +65 -9
- package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +169 -57
- package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.d.ts +77 -11
- package/dist/lib/components/attachment/image-viewer.component.d.ts.map +1 -1
- package/dist/lib/components/attachment/image-viewer.component.js +181 -47
- package/dist/lib/components/attachment/image-viewer.component.js.map +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts +129 -19
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js +350 -116
- package/dist/lib/components/collection/artifact-collection-picker-modal.component.js.map +1 -1
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts +60 -8
- package/dist/lib/components/collection/artifact-create-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/artifact-create-modal.component.js +130 -46
- package/dist/lib/components/collection/artifact-create-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts +63 -3
- package/dist/lib/components/collection/collection-artifact-card.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-artifact-card.component.js +113 -19
- package/dist/lib/components/collection/collection-artifact-card.component.js.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts +54 -8
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +130 -46
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.d.ts +70 -10
- package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +175 -53
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.d.ts +89 -9
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.js +220 -70
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts +89 -11
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +154 -40
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +390 -38
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +951 -367
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/composer/ai-composer.component.d.ts +213 -18
- package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -1
- package/dist/lib/components/composer/ai-composer.component.js +388 -44
- package/dist/lib/components/composer/ai-composer.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts +12 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-agent-picker.component.js +26 -4
- package/dist/lib/components/conversation/conversation-agent-picker.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +1191 -124
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +2816 -785
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +139 -19
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.js +296 -59
- package/dist/lib/components/conversation/conversation-empty-state.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.d.ts +579 -78
- package/dist/lib/components/conversation/conversation-list.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-list.component.js +2322 -823
- package/dist/lib/components/conversation/conversation-list.component.js.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts +42 -4
- package/dist/lib/components/conversation/pinned-messages-panel.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.js +93 -21
- package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
- package/dist/lib/components/dialogs/input-dialog.component.d.ts +57 -11
- package/dist/lib/components/dialogs/input-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/dialogs/input-dialog.component.js +128 -16
- package/dist/lib/components/dialogs/input-dialog.component.js.map +1 -1
- package/dist/lib/components/dialogs/rating-dialog.component.d.ts +68 -10
- package/dist/lib/components/dialogs/rating-dialog.component.d.ts.map +1 -1
- package/dist/lib/components/dialogs/rating-dialog.component.js +151 -27
- package/dist/lib/components/dialogs/rating-dialog.component.js.map +1 -1
- package/dist/lib/components/export/export-modal.component.d.ts +84 -10
- package/dist/lib/components/export/export-modal.component.d.ts.map +1 -1
- package/dist/lib/components/export/export-modal.component.js +173 -49
- package/dist/lib/components/export/export-modal.component.js.map +1 -1
- package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts +29 -3
- package/dist/lib/components/global-tasks/global-tasks-panel.component.d.ts.map +1 -1
- package/dist/lib/components/global-tasks/global-tasks-panel.component.js +58 -12
- package/dist/lib/components/global-tasks/global-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/library/library-full-view.component.d.ts +57 -8
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/library/library-full-view.component.js +119 -35
- package/dist/lib/components/library/library-full-view.component.js.map +1 -1
- package/dist/lib/components/members/members-modal.component.d.ts +76 -10
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
- package/dist/lib/components/members/members-modal.component.js +164 -50
- package/dist/lib/components/members/members-modal.component.js.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.d.ts +49 -5
- package/dist/lib/components/message/actionable-commands.component.d.ts.map +1 -1
- package/dist/lib/components/message/actionable-commands.component.js +140 -26
- package/dist/lib/components/message/actionable-commands.component.js.map +1 -1
- package/dist/lib/components/message/conversation-message-rating.component.d.ts +46 -10
- package/dist/lib/components/message/conversation-message-rating.component.d.ts.map +1 -1
- package/dist/lib/components/message/conversation-message-rating.component.js +120 -36
- package/dist/lib/components/message/conversation-message-rating.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +613 -74
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +1390 -422
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +490 -29
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +1088 -244
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.d.ts +297 -29
- package/dist/lib/components/message/message-list.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-list.component.js +598 -123
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts +64 -5
- package/dist/lib/components/navigation/conversation-navigation.component.d.ts.map +1 -1
- package/dist/lib/components/navigation/conversation-navigation.component.js +101 -11
- package/dist/lib/components/navigation/conversation-navigation.component.js.map +1 -1
- package/dist/lib/components/notification/activity-indicator.component.d.ts +6 -2
- package/dist/lib/components/notification/activity-indicator.component.d.ts.map +1 -1
- package/dist/lib/components/notification/activity-indicator.component.js +13 -3
- package/dist/lib/components/notification/activity-indicator.component.js.map +1 -1
- package/dist/lib/components/notification/notification-badge.component.d.ts +15 -3
- package/dist/lib/components/notification/notification-badge.component.d.ts.map +1 -1
- package/dist/lib/components/notification/notification-badge.component.js +36 -8
- package/dist/lib/components/notification/notification-badge.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +4 -4
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.d.ts +93 -11
- package/dist/lib/components/project/project-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/project/project-form-modal.component.js +348 -87
- package/dist/lib/components/project/project-form-modal.component.js.map +1 -1
- package/dist/lib/components/project/project-selector.component.d.ts +78 -8
- package/dist/lib/components/project/project-selector.component.d.ts.map +1 -1
- package/dist/lib/components/project/project-selector.component.js +177 -46
- package/dist/lib/components/project/project-selector.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.js +2 -2
- package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.js +2 -2
- package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +18 -18
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts +47 -23
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.js +136 -92
- package/dist/lib/components/realtime/realtime-session-timeline-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js +4 -4
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js +3 -3
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +13 -11
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.js +29 -25
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts +3 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.d.ts.map +1 -1
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js +6 -2
- package/dist/lib/components/realtime/whiteboard/whiteboard-channel.js.map +1 -1
- package/dist/lib/components/search/search-panel.component.d.ts +133 -22
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +312 -83
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/share/share-modal.component.d.ts +69 -9
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/share/share-modal.component.js +139 -31
- package/dist/lib/components/share/share-modal.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts +48 -8
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
- package/dist/lib/components/shared/user-picker.component.js +110 -30
- package/dist/lib/components/shared/user-picker.component.js.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts +114 -11
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +199 -21
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.d.ts +20 -1
- package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.js +25 -5
- package/dist/lib/components/sidebar/routines-section.component.js.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.d.ts +19 -0
- package/dist/lib/components/slots/slot-interfaces.d.ts.map +1 -1
- package/dist/lib/components/slots/slot-interfaces.js.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.d.ts +95 -13
- package/dist/lib/components/task/tasks-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/task/tasks-full-view.component.js +223 -75
- package/dist/lib/components/task/tasks-full-view.component.js.map +1 -1
- package/dist/lib/components/tasks/task-widget.component.d.ts +46 -6
- package/dist/lib/components/tasks/task-widget.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/task-widget.component.js +100 -16
- package/dist/lib/components/tasks/task-widget.component.js.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +64 -7
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +127 -27
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.d.ts +66 -8
- package/dist/lib/components/thread/thread-panel.component.d.ts.map +1 -1
- package/dist/lib/components/thread/thread-panel.component.js +146 -36
- package/dist/lib/components/thread/thread-panel.component.js.map +1 -1
- package/dist/lib/components/toast/toast.component.d.ts +11 -1
- package/dist/lib/components/toast/toast.component.d.ts.map +1 -1
- package/dist/lib/components/toast/toast.component.js +25 -5
- package/dist/lib/components/toast/toast.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +385 -42
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +891 -292
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +8 -0
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js +8 -1
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -1
- package/dist/lib/directives/chat-slot.directive.d.ts +5 -1
- package/dist/lib/directives/chat-slot.directive.d.ts.map +1 -1
- package/dist/lib/directives/chat-slot.directive.js.map +1 -1
- package/dist/lib/directives/search-shortcut.directive.d.ts +9 -1
- package/dist/lib/directives/search-shortcut.directive.d.ts.map +1 -1
- package/dist/lib/directives/search-shortcut.directive.js +14 -4
- package/dist/lib/directives/search-shortcut.directive.js.map +1 -1
- package/dist/lib/events/chat-events.d.ts +34 -7
- package/dist/lib/events/chat-events.d.ts.map +1 -1
- package/dist/lib/events/chat-events.js +37 -7
- package/dist/lib/events/chat-events.js.map +1 -1
- package/dist/lib/models/agent-turn.model.d.ts +113 -0
- package/dist/lib/models/agent-turn.model.d.ts.map +1 -0
- package/dist/lib/models/agent-turn.model.js +12 -0
- package/dist/lib/models/agent-turn.model.js.map +1 -0
- package/dist/lib/models/collection-view.model.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +8 -0
- package/dist/lib/models/conversation-state.model.d.ts.map +1 -1
- package/dist/lib/models/conversation-state.model.js.map +1 -1
- package/dist/lib/models/lazy-artifact-info.d.ts +44 -12
- package/dist/lib/models/lazy-artifact-info.d.ts.map +1 -1
- package/dist/lib/models/lazy-artifact-info.js +98 -34
- package/dist/lib/models/lazy-artifact-info.js.map +1 -1
- package/dist/lib/services/active-tasks.service.d.ts +30 -4
- package/dist/lib/services/active-tasks.service.d.ts.map +1 -1
- package/dist/lib/services/active-tasks.service.js +71 -19
- package/dist/lib/services/active-tasks.service.js.map +1 -1
- package/dist/lib/services/agent-state.service.d.ts +17 -1
- package/dist/lib/services/agent-state.service.d.ts.map +1 -1
- package/dist/lib/services/agent-state.service.js +48 -16
- package/dist/lib/services/agent-state.service.js.map +1 -1
- package/dist/lib/services/artifact-permission.service.d.ts +39 -0
- package/dist/lib/services/artifact-permission.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-permission.service.js +152 -17
- package/dist/lib/services/artifact-permission.service.js.map +1 -1
- package/dist/lib/services/artifact-state.service.d.ts +58 -5
- package/dist/lib/services/artifact-state.service.d.ts.map +1 -1
- package/dist/lib/services/artifact-state.service.js +135 -35
- package/dist/lib/services/artifact-state.service.js.map +1 -1
- package/dist/lib/services/collection-permission.service.d.ts +28 -0
- package/dist/lib/services/collection-permission.service.d.ts.map +1 -1
- package/dist/lib/services/collection-permission.service.js +88 -32
- package/dist/lib/services/collection-permission.service.js.map +1 -1
- package/dist/lib/services/collection-state.service.d.ts +11 -1
- package/dist/lib/services/collection-state.service.d.ts.map +1 -1
- package/dist/lib/services/collection-state.service.js +25 -5
- package/dist/lib/services/collection-state.service.js.map +1 -1
- package/dist/lib/services/conversation-agent.service.d.ts +47 -4
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +85 -20
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-attachment.service.d.ts +17 -0
- package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-attachment.service.js +38 -10
- package/dist/lib/services/conversation-attachment.service.js.map +1 -1
- package/dist/lib/services/conversation-liveness-dom.service.d.ts +42 -0
- package/dist/lib/services/conversation-liveness-dom.service.d.ts.map +1 -0
- package/dist/lib/services/conversation-liveness-dom.service.js +74 -0
- package/dist/lib/services/conversation-liveness-dom.service.js.map +1 -0
- package/dist/lib/services/conversation-streaming.service.d.ts +22 -0
- package/dist/lib/services/conversation-streaming.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-streaming.service.js +50 -10
- package/dist/lib/services/conversation-streaming.service.js.map +1 -1
- package/dist/lib/services/data-cache.service.d.ts +31 -0
- package/dist/lib/services/data-cache.service.d.ts.map +1 -1
- package/dist/lib/services/data-cache.service.js +71 -15
- package/dist/lib/services/data-cache.service.js.map +1 -1
- package/dist/lib/services/dialog.service.d.ts +13 -0
- package/dist/lib/services/dialog.service.d.ts.map +1 -1
- package/dist/lib/services/dialog.service.js +25 -5
- package/dist/lib/services/dialog.service.js.map +1 -1
- package/dist/lib/services/export.service.d.ts +2 -0
- package/dist/lib/services/export.service.d.ts.map +1 -1
- package/dist/lib/services/export.service.js +5 -1
- package/dist/lib/services/export.service.js.map +1 -1
- package/dist/lib/services/mention-parser.service.d.ts +10 -0
- package/dist/lib/services/mention-parser.service.d.ts.map +1 -1
- package/dist/lib/services/mention-parser.service.js +25 -5
- package/dist/lib/services/mention-parser.service.js.map +1 -1
- package/dist/lib/services/notification.service.d.ts +54 -6
- package/dist/lib/services/notification.service.d.ts.map +1 -1
- package/dist/lib/services/notification.service.js +123 -27
- package/dist/lib/services/notification.service.js.map +1 -1
- package/dist/lib/services/realtime-audio-recorder.d.ts +4 -4
- package/dist/lib/services/realtime-audio-recorder.js +12 -12
- package/dist/lib/services/realtime-audio-recorder.js.map +1 -1
- package/dist/lib/services/realtime-pcm-wav.d.ts +4 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -1
- package/dist/lib/services/realtime-pcm-wav.js +10 -2
- package/dist/lib/services/realtime-pcm-wav.js.map +1 -1
- package/dist/lib/services/search.service.d.ts +42 -9
- package/dist/lib/services/search.service.d.ts.map +1 -1
- package/dist/lib/services/search.service.js +103 -23
- package/dist/lib/services/search.service.js.map +1 -1
- package/dist/lib/services/toast.service.d.ts +19 -1
- package/dist/lib/services/toast.service.d.ts.map +1 -1
- package/dist/lib/services/toast.service.js +45 -9
- package/dist/lib/services/toast.service.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +56 -5
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +113 -16
- package/dist/lib/services/ui-command-handler.service.js.map +1 -1
- package/dist/lib/utils/agent-artifact-summary.d.ts +2 -2
- package/dist/lib/utils/agent-artifact-summary.js +3 -3
- package/dist/lib/utils/agent-artifact-summary.js.map +1 -1
- package/dist/lib/utils/agent-turn-routing.d.ts +70 -0
- package/dist/lib/utils/agent-turn-routing.d.ts.map +1 -0
- package/dist/lib/utils/agent-turn-routing.js +84 -0
- package/dist/lib/utils/agent-turn-routing.js.map +1 -0
- package/dist/lib/utils/artifact-panel-action.d.ts +15 -4
- package/dist/lib/utils/artifact-panel-action.d.ts.map +1 -1
- package/dist/lib/utils/artifact-panel-action.js +10 -2
- package/dist/lib/utils/artifact-panel-action.js.map +1 -1
- package/dist/lib/utils/decision-routing.d.ts +68 -0
- package/dist/lib/utils/decision-routing.d.ts.map +1 -0
- package/dist/lib/utils/decision-routing.js +101 -0
- package/dist/lib/utils/decision-routing.js.map +1 -0
- package/dist/lib/utils/distinct-artifacts.d.ts +2 -0
- package/dist/lib/utils/distinct-artifacts.d.ts.map +1 -1
- package/dist/lib/utils/distinct-artifacts.js +5 -1
- package/dist/lib/utils/distinct-artifacts.js.map +1 -1
- package/dist/lib/utils/plan-mode-preference.d.ts +2 -2
- package/dist/lib/utils/plan-mode-preference.js +6 -6
- package/dist/lib/utils/plan-mode-preference.js.map +1 -1
- package/dist/public-api.d.ts +5 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +8 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +32 -32
|
@@ -119,19 +119,91 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
119
119
|
dialogService;
|
|
120
120
|
toastService;
|
|
121
121
|
cdr;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
122
|
+
Conversation;
|
|
123
|
+
/** @deprecated Use {@link Conversation}. */
|
|
124
|
+
set conversation(value) {
|
|
125
|
+
this.Conversation = value;
|
|
126
|
+
}
|
|
127
|
+
/** @deprecated Use {@link Conversation}. */
|
|
128
|
+
get conversation() {
|
|
129
|
+
return this.Conversation;
|
|
130
|
+
}
|
|
131
|
+
CurrentUser;
|
|
132
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
133
|
+
set currentUser(value) {
|
|
134
|
+
this.CurrentUser = value;
|
|
135
|
+
}
|
|
136
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
137
|
+
get currentUser() {
|
|
138
|
+
return this.CurrentUser;
|
|
139
|
+
}
|
|
140
|
+
IsOpen = false;
|
|
141
|
+
/** @deprecated Use {@link IsOpen}. */
|
|
142
|
+
set isOpen(value) {
|
|
143
|
+
this.IsOpen = value;
|
|
144
|
+
}
|
|
145
|
+
/** @deprecated Use {@link IsOpen}. */
|
|
146
|
+
get isOpen() {
|
|
147
|
+
return this.IsOpen;
|
|
148
|
+
}
|
|
149
|
+
Closed = new EventEmitter();
|
|
150
|
+
/**
|
|
151
|
+
* @deprecated Use {@link Closed}.
|
|
152
|
+
*
|
|
153
|
+
* The same emitter under the old binding name, so a template still binding
|
|
154
|
+
* (closed) keeps working. Must stay AFTER Closed: class fields
|
|
155
|
+
* initialise in order, and the other way round this captures undefined.
|
|
156
|
+
*/
|
|
157
|
+
closed = this.Closed;
|
|
158
|
+
Permissions = [];
|
|
159
|
+
/** @deprecated Use {@link Permissions}. */
|
|
160
|
+
get permissions() {
|
|
161
|
+
return this.Permissions;
|
|
162
|
+
}
|
|
163
|
+
/** @deprecated Use {@link Permissions}. */
|
|
164
|
+
set permissions(value) {
|
|
165
|
+
this.Permissions = value;
|
|
166
|
+
}
|
|
167
|
+
NewUserEmail = '';
|
|
168
|
+
/** @deprecated Use {@link NewUserEmail}. */
|
|
169
|
+
get newUserEmail() {
|
|
170
|
+
return this.NewUserEmail;
|
|
171
|
+
}
|
|
172
|
+
/** @deprecated Use {@link NewUserEmail}. */
|
|
173
|
+
set newUserEmail(value) {
|
|
174
|
+
this.NewUserEmail = value;
|
|
175
|
+
}
|
|
176
|
+
IsPublicLink = false;
|
|
177
|
+
/** @deprecated Use {@link IsPublicLink}. */
|
|
178
|
+
get isPublicLink() {
|
|
179
|
+
return this.IsPublicLink;
|
|
180
|
+
}
|
|
181
|
+
/** @deprecated Use {@link IsPublicLink}. */
|
|
182
|
+
set isPublicLink(value) {
|
|
183
|
+
this.IsPublicLink = value;
|
|
184
|
+
}
|
|
185
|
+
ShareLink = '';
|
|
186
|
+
/** @deprecated Use {@link ShareLink}. */
|
|
187
|
+
get shareLink() {
|
|
188
|
+
return this.ShareLink;
|
|
189
|
+
}
|
|
190
|
+
/** @deprecated Use {@link ShareLink}. */
|
|
191
|
+
set shareLink(value) {
|
|
192
|
+
this.ShareLink = value;
|
|
193
|
+
}
|
|
194
|
+
AccessLevels = [
|
|
131
195
|
{ label: 'Can View', value: 'View' },
|
|
132
196
|
{ label: 'Can Edit', value: 'Edit' },
|
|
133
197
|
{ label: 'Owner', value: 'Owner' }
|
|
134
198
|
];
|
|
199
|
+
/** @deprecated Use {@link AccessLevels}. */
|
|
200
|
+
get accessLevels() {
|
|
201
|
+
return this.AccessLevels;
|
|
202
|
+
}
|
|
203
|
+
/** @deprecated Use {@link AccessLevels}. */
|
|
204
|
+
set accessLevels(value) {
|
|
205
|
+
this.AccessLevels = value;
|
|
206
|
+
}
|
|
135
207
|
CONVERSATIONS_RESOURCE_TYPE_ID = '81D4BC3D-9FEB-EF11-B01A-286B35C04427';
|
|
136
208
|
constructor(dialogService, toastService, cdr) {
|
|
137
209
|
super();
|
|
@@ -140,7 +212,7 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
140
212
|
this.cdr = cdr;
|
|
141
213
|
}
|
|
142
214
|
ngOnInit() {
|
|
143
|
-
if (this.
|
|
215
|
+
if (this.Conversation) {
|
|
144
216
|
this.loadPermissions();
|
|
145
217
|
this.updateShareLink();
|
|
146
218
|
}
|
|
@@ -150,7 +222,7 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
150
222
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
151
223
|
const result = await rv.RunView({
|
|
152
224
|
EntityName: 'MJ: Resource Permissions',
|
|
153
|
-
ExtraFilter: `ResourceTypeID='${this.CONVERSATIONS_RESOURCE_TYPE_ID}' AND ResourceRecordID='${this.
|
|
225
|
+
ExtraFilter: `ResourceTypeID='${this.CONVERSATIONS_RESOURCE_TYPE_ID}' AND ResourceRecordID='${this.Conversation.ID}' AND Status='Approved'`,
|
|
154
226
|
ResultType: 'entity_object'
|
|
155
227
|
});
|
|
156
228
|
if (result.Success && result.Results) {
|
|
@@ -176,7 +248,7 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
176
248
|
return null;
|
|
177
249
|
});
|
|
178
250
|
const resolvedPermissions = await Promise.all(permissionPromises);
|
|
179
|
-
this.
|
|
251
|
+
this.Permissions = resolvedPermissions.filter(p => p !== null);
|
|
180
252
|
}
|
|
181
253
|
}
|
|
182
254
|
catch (error) {
|
|
@@ -186,15 +258,23 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
186
258
|
this.cdr.detectChanges();
|
|
187
259
|
}
|
|
188
260
|
}
|
|
189
|
-
|
|
261
|
+
GetAccessLevel(permission) {
|
|
190
262
|
return permission.permissionLevel;
|
|
191
263
|
}
|
|
192
|
-
|
|
264
|
+
/** @deprecated Use {@link GetAccessLevel}. */
|
|
265
|
+
getAccessLevel(permission) {
|
|
266
|
+
return this.GetAccessLevel(permission);
|
|
267
|
+
}
|
|
268
|
+
async OnAccessLevelChange(permission, level) {
|
|
193
269
|
permission.permissionLevel = level;
|
|
194
270
|
await this.savePermission(permission);
|
|
195
271
|
}
|
|
196
|
-
|
|
197
|
-
|
|
272
|
+
/** @deprecated Use {@link OnAccessLevelChange}. */
|
|
273
|
+
async onAccessLevelChange(permission, level) {
|
|
274
|
+
return this.OnAccessLevelChange(permission, level);
|
|
275
|
+
}
|
|
276
|
+
async OnAddUser() {
|
|
277
|
+
const email = this.NewUserEmail.trim();
|
|
198
278
|
if (!email)
|
|
199
279
|
return;
|
|
200
280
|
// Simple email validation
|
|
@@ -203,7 +283,7 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
203
283
|
return;
|
|
204
284
|
}
|
|
205
285
|
// Check if user already has access
|
|
206
|
-
if (this.
|
|
286
|
+
if (this.Permissions.some(p => p.userEmail === email)) {
|
|
207
287
|
await this.dialogService.alert('User Already Has Access', 'This user already has access');
|
|
208
288
|
return;
|
|
209
289
|
}
|
|
@@ -228,8 +308,8 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
228
308
|
permissionLevel: 'View'
|
|
229
309
|
};
|
|
230
310
|
await this.savePermission(newPermission);
|
|
231
|
-
this.
|
|
232
|
-
this.
|
|
311
|
+
this.Permissions.push(newPermission);
|
|
312
|
+
this.NewUserEmail = '';
|
|
233
313
|
this.toastService.success(`Access granted to ${user.Email}`);
|
|
234
314
|
this.cdr.detectChanges();
|
|
235
315
|
}
|
|
@@ -238,7 +318,11 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
238
318
|
this.toastService.error('Failed to add user');
|
|
239
319
|
}
|
|
240
320
|
}
|
|
241
|
-
|
|
321
|
+
/** @deprecated Use {@link OnAddUser}. */
|
|
322
|
+
async onAddUser() {
|
|
323
|
+
return this.OnAddUser();
|
|
324
|
+
}
|
|
325
|
+
async OnRemoveUser(permission) {
|
|
242
326
|
const confirmed = await this.dialogService.confirm({
|
|
243
327
|
title: 'Remove Access',
|
|
244
328
|
message: `Remove access for ${permission.userEmail}?`,
|
|
@@ -257,7 +341,7 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
257
341
|
throw new Error('Failed to delete permission');
|
|
258
342
|
}
|
|
259
343
|
}
|
|
260
|
-
this.
|
|
344
|
+
this.Permissions = this.Permissions.filter(p => p.userId !== permission.userId);
|
|
261
345
|
this.toastService.success(`Access removed for ${permission.userEmail}`);
|
|
262
346
|
}
|
|
263
347
|
catch (error) {
|
|
@@ -265,6 +349,10 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
265
349
|
this.toastService.error('Failed to remove user');
|
|
266
350
|
}
|
|
267
351
|
}
|
|
352
|
+
/** @deprecated Use {@link OnRemoveUser}. */
|
|
353
|
+
async onRemoveUser(permission) {
|
|
354
|
+
return this.OnRemoveUser(permission);
|
|
355
|
+
}
|
|
268
356
|
async savePermission(permission) {
|
|
269
357
|
try {
|
|
270
358
|
const md = this.ProviderToUse;
|
|
@@ -277,7 +365,7 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
277
365
|
else {
|
|
278
366
|
// Create new permission
|
|
279
367
|
permEntity.ResourceTypeID = this.CONVERSATIONS_RESOURCE_TYPE_ID;
|
|
280
|
-
permEntity.ResourceRecordID = this.
|
|
368
|
+
permEntity.ResourceRecordID = this.Conversation.ID;
|
|
281
369
|
permEntity.Type = 'User';
|
|
282
370
|
permEntity.UserID = permission.userId;
|
|
283
371
|
permEntity.PermissionLevel = permission.permissionLevel;
|
|
@@ -297,7 +385,7 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
297
385
|
throw error;
|
|
298
386
|
}
|
|
299
387
|
}
|
|
300
|
-
async
|
|
388
|
+
async OnTogglePublicLink() {
|
|
301
389
|
try {
|
|
302
390
|
// Note: Public link functionality uses the conversation ID directly.
|
|
303
391
|
// For enhanced security with unique tokens, password protection, and expiration,
|
|
@@ -309,19 +397,23 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
309
397
|
await this.dialogService.alert('Error', 'Failed to update sharing settings');
|
|
310
398
|
}
|
|
311
399
|
}
|
|
400
|
+
/** @deprecated Use {@link OnTogglePublicLink}. */
|
|
401
|
+
async onTogglePublicLink() {
|
|
402
|
+
return this.OnTogglePublicLink();
|
|
403
|
+
}
|
|
312
404
|
updateShareLink() {
|
|
313
|
-
if (this.
|
|
405
|
+
if (this.IsPublicLink && this.Conversation) {
|
|
314
406
|
// Generate shareable link
|
|
315
407
|
const baseUrl = window.location.origin;
|
|
316
|
-
this.
|
|
408
|
+
this.ShareLink = `${baseUrl}/chat/${this.Conversation.ID}`;
|
|
317
409
|
}
|
|
318
410
|
else {
|
|
319
|
-
this.
|
|
411
|
+
this.ShareLink = '';
|
|
320
412
|
}
|
|
321
413
|
}
|
|
322
|
-
async
|
|
414
|
+
async OnCopyLink() {
|
|
323
415
|
try {
|
|
324
|
-
await navigator.clipboard.writeText(this.
|
|
416
|
+
await navigator.clipboard.writeText(this.ShareLink);
|
|
325
417
|
this.toastService.success('Link copied to clipboard');
|
|
326
418
|
}
|
|
327
419
|
catch (err) {
|
|
@@ -329,11 +421,19 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
329
421
|
this.toastService.error('Failed to copy link');
|
|
330
422
|
}
|
|
331
423
|
}
|
|
424
|
+
/** @deprecated Use {@link OnCopyLink}. */
|
|
425
|
+
async onCopyLink() {
|
|
426
|
+
return this.OnCopyLink();
|
|
427
|
+
}
|
|
428
|
+
OnClose() {
|
|
429
|
+
this.Closed.emit();
|
|
430
|
+
}
|
|
431
|
+
/** @deprecated Use {@link OnClose}. */
|
|
332
432
|
onClose() {
|
|
333
|
-
this.
|
|
433
|
+
return this.OnClose();
|
|
334
434
|
}
|
|
335
435
|
static ɵfac = function ShareModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ShareModalComponent)(i0.ɵɵdirectiveInject(i1.DialogService), i0.ɵɵdirectiveInject(i2.ToastService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
336
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ShareModalComponent, selectors: [["mj-share-modal"]], inputs: { conversation: "conversation", currentUser: "currentUser", isOpen: "isOpen" }, outputs: { closed: "closed" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "Visible"], [3, "Close", "Title", "Width", "Height", "Visible"], [1, "share-content"], [1, "add-user-section"], [1, "add-user-form"], ["type", "text", "placeholder", "Enter email address", 1, "mj-textbox", 2, "flex", "1", 3, "ngModelChange", "ngModel"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "permissions-section"], [1, "permission-list"], ["Icon", "fa-solid fa-user-group", "Title", "No one has been given access yet", "Size", "compact"], [1, "permission-item"], [1, "link-section"], [1, "link-controls"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "link-display"], ["mjButton", "", 3, "click"], [1, "user-info"], [1, "fas", "fa-user-circle"], [1, "user-details"], [1, "user-name"], [1, "user-email"], [1, "permission-controls"], [1, "mj-select", 2, "width", "120px", 3, "ngModelChange", "ngModel"], [3, "value"], ["title", "Remove access", 1, "btn-remove", 3, "click"], [1, "fas", "fa-times"], ["type", "text", "readonly", "", 1, "mj-textbox", 2, "flex", "1", 3, "value"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fas", "fa-copy"]], template: function ShareModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
436
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ShareModalComponent, selectors: [["mj-share-modal"]], inputs: { Conversation: "Conversation", conversation: "conversation", CurrentUser: "CurrentUser", currentUser: "currentUser", IsOpen: "IsOpen", isOpen: "isOpen" }, outputs: { Closed: "Closed", closed: "closed" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "Visible"], [3, "Close", "Title", "Width", "Height", "Visible"], [1, "share-content"], [1, "add-user-section"], [1, "add-user-form"], ["type", "text", "placeholder", "Enter email address", 1, "mj-textbox", 2, "flex", "1", 3, "ngModelChange", "ngModel"], ["mjButton", "", "variant", "primary", 3, "click"], [1, "permissions-section"], [1, "permission-list"], ["Icon", "fa-solid fa-user-group", "Title", "No one has been given access yet", "Size", "compact"], [1, "permission-item"], [1, "link-section"], [1, "link-controls"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "link-display"], ["mjButton", "", 3, "click"], [1, "user-info"], [1, "fas", "fa-user-circle"], [1, "user-details"], [1, "user-name"], [1, "user-email"], [1, "permission-controls"], [1, "mj-select", 2, "width", "120px", 3, "ngModelChange", "ngModel"], [3, "value"], ["title", "Remove access", 1, "btn-remove", 3, "click"], [1, "fas", "fa-times"], ["type", "text", "readonly", "", 1, "mj-textbox", 2, "flex", "1", 3, "value"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "fas", "fa-copy"]], template: function ShareModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
337
437
|
i0.ɵɵconditionalCreate(0, ShareModalComponent_Conditional_0_Template, 27, 8, "mj-dialog", 0);
|
|
338
438
|
} if (rf & 2) {
|
|
339
439
|
i0.ɵɵconditional(ctx.isOpen ? 0 : -1);
|
|
@@ -432,12 +532,20 @@ export class ShareModalComponent extends BaseAngularComponent {
|
|
|
432
532
|
</mj-dialog>
|
|
433
533
|
}
|
|
434
534
|
`, styles: ["\n .share-content { display: flex; flex-direction: column; gap: 24px; }\n\n .add-user-section h4,\n .permissions-section h4,\n .link-section h4 { margin: 0 0 12px 0; font-size: 14px; font-weight: 600; }\n\n .add-user-form { display: flex; gap: 8px; }\n\n .permission-list { border: 1px solid #D9D9D9; border-radius: 4px; max-height: 300px; overflow-y: auto; }\n .permission-item { padding: 12px; border-bottom: 1px solid #E8E8E8; display: flex; justify-content: space-between; align-items: center; }\n .permission-item:last-child { border-bottom: none; }\n\n .user-info { display: flex; align-items: center; gap: 12px; flex: 1; }\n .user-info i { font-size: 32px; color: #999; }\n .user-details { display: flex; flex-direction: column; }\n .user-name { font-size: 14px; font-weight: 500; }\n .user-email { font-size: 12px; color: #666; }\n\n .permission-controls { display: flex; align-items: center; gap: 8px; }\n .btn-remove { padding: 6px 8px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #999; }\n .btn-remove:hover { background: #FFEBEE; color: #D32F2F; }\n\n .link-controls { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }\n .link-controls label { font-size: 13px; }\n\n .link-display { display: flex; gap: 8px; }\n "] }]
|
|
435
|
-
}], () => [{ type: i1.DialogService }, { type: i2.ToastService }, { type: i0.ChangeDetectorRef }], {
|
|
535
|
+
}], () => [{ type: i1.DialogService }, { type: i2.ToastService }, { type: i0.ChangeDetectorRef }], { Conversation: [{
|
|
536
|
+
type: Input
|
|
537
|
+
}], conversation: [{
|
|
538
|
+
type: Input
|
|
539
|
+
}], CurrentUser: [{
|
|
436
540
|
type: Input
|
|
437
541
|
}], currentUser: [{
|
|
438
542
|
type: Input
|
|
543
|
+
}], IsOpen: [{
|
|
544
|
+
type: Input
|
|
439
545
|
}], isOpen: [{
|
|
440
546
|
type: Input
|
|
547
|
+
}], Closed: [{
|
|
548
|
+
type: Output
|
|
441
549
|
}], closed: [{
|
|
442
550
|
type: Output
|
|
443
551
|
}] }); })();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/share/share-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { MJConversationEntity, MJResourcePermissionEntity, MJUserEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata } from '@memberjunction/core';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\n\ninterface SharePermission {\n permissionId: string | null;\n userId: string;\n userEmail: string;\n userName: string;\n permissionLevel: 'View' | 'Edit' | 'Owner';\n}\n\n@Component({\n standalone: false,\n selector: 'mj-share-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"'Share: ' + (conversation.Name || '')\"\n [Width]=\"500\"\n [Height]=\"600\"\n [Visible]=\"true\"\n (Close)=\"onClose()\">\n <div class=\"share-content\">\n <div class=\"add-user-section\">\n <h4>Add People</h4>\n <div class=\"add-user-form\">\n <input\n type=\"text\"\n [(ngModel)]=\"newUserEmail\"\n placeholder=\"Enter email address\"\n class=\"mj-textbox\"\n style=\"flex: 1;\">\n <button mjButton variant=\"primary\" (click)=\"onAddUser()\">\n Add\n </button>\n </div>\n </div>\n <div class=\"permissions-section\">\n <h4>People with Access</h4>\n <div class=\"permission-list\">\n @if (permissions.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-user-group\"\n Title=\"No one has been given access yet\"\n Size=\"compact\" />\n }\n @for (permission of permissions; track permission) {\n <div class=\"permission-item\">\n <div class=\"user-info\">\n <i class=\"fas fa-user-circle\"></i>\n <div class=\"user-details\">\n <div class=\"user-name\">{{ permission.userName }}</div>\n <div class=\"user-email\">{{ permission.userEmail }}</div>\n </div>\n </div>\n <div class=\"permission-controls\">\n <select\n [ngModel]=\"permission.permissionLevel\"\n (ngModelChange)=\"onAccessLevelChange(permission, $event)\"\n style=\"width: 120px;\" class=\"mj-select\">\n @for (level of accessLevels; track level.value) {\n <option [value]=\"level.value\">{{ level.label }}</option>\n }\n </select>\n <button\n class=\"btn-remove\"\n (click)=\"onRemoveUser(permission)\"\n title=\"Remove access\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"link-section\">\n <h4>Share Link</h4>\n <div class=\"link-controls\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"isPublicLink\"\n (ngModelChange)=\"onTogglePublicLink()\">\n <label>Anyone with the link can view</label>\n </div>\n @if (isPublicLink) {\n <div class=\"link-display\">\n <input\n type=\"text\"\n [value]=\"shareLink\"\n readonly\n class=\"mj-textbox\"\n style=\"flex: 1;\">\n <button mjButton variant=\"flat\" (click)=\"onCopyLink()\">\n <i class=\"fas fa-copy\"></i> Copy\n </button>\n </div>\n }\n </div>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onClose()\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .share-content { display: flex; flex-direction: column; gap: 24px; }\n\n .add-user-section h4,\n .permissions-section h4,\n .link-section h4 { margin: 0 0 12px 0; font-size: 14px; font-weight: 600; }\n\n .add-user-form { display: flex; gap: 8px; }\n\n .permission-list { border: 1px solid #D9D9D9; border-radius: 4px; max-height: 300px; overflow-y: auto; }\n .permission-item { padding: 12px; border-bottom: 1px solid #E8E8E8; display: flex; justify-content: space-between; align-items: center; }\n .permission-item:last-child { border-bottom: none; }\n\n .user-info { display: flex; align-items: center; gap: 12px; flex: 1; }\n .user-info i { font-size: 32px; color: #999; }\n .user-details { display: flex; flex-direction: column; }\n .user-name { font-size: 14px; font-weight: 500; }\n .user-email { font-size: 12px; color: #666; }\n\n .permission-controls { display: flex; align-items: center; gap: 8px; }\n .btn-remove { padding: 6px 8px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #999; }\n .btn-remove:hover { background: #FFEBEE; color: #D32F2F; }\n\n .link-controls { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }\n .link-controls label { font-size: 13px; }\n\n .link-display { display: flex; gap: 8px; }\n `]\n})\nexport class ShareModalComponent extends BaseAngularComponent implements OnInit {\n @Input() conversation!: MJConversationEntity;\n @Input() currentUser!: UserInfo;\n @Input() isOpen: boolean = false;\n\n @Output() closed = new EventEmitter<void>();\n\n public permissions: SharePermission[] = [];\n public newUserEmail: string = '';\n public isPublicLink: boolean = false;\n public shareLink: string = '';\n\n public accessLevels = [\n { label: 'Can View', value: 'View' },\n { label: 'Can Edit', value: 'Edit' },\n { label: 'Owner', value: 'Owner' }\n ];\n\n private readonly CONVERSATIONS_RESOURCE_TYPE_ID = '81D4BC3D-9FEB-EF11-B01A-286B35C04427';\n\n constructor(\n private dialogService: DialogService,\n private toastService: ToastService,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n\n ngOnInit() {\n if (this.conversation) {\n this.loadPermissions();\n this.updateShareLink();\n }\n }\n\n private async loadPermissions(): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID='${this.CONVERSATIONS_RESOURCE_TYPE_ID}' AND ResourceRecordID='${this.conversation.ID}' AND Status='Approved'`,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n const permissionPromises = result.Results.map(async (perm) => {\n if (perm.UserID) {\n const userRv = RunView.FromMetadataProvider(this.ProviderToUse);\n const userResult = await userRv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `ID='${perm.UserID}'`,\n ResultType: 'entity_object'\n });\n\n if (userResult.Success && userResult.Results && userResult.Results.length > 0) {\n const user = userResult.Results[0];\n return {\n permissionId: perm.ID,\n userId: perm.UserID,\n userEmail: user.Email,\n userName: user.Name,\n permissionLevel: perm.PermissionLevel || 'View'\n } as SharePermission;\n }\n }\n return null;\n });\n\n const resolvedPermissions = await Promise.all(permissionPromises);\n this.permissions = resolvedPermissions.filter(p => p !== null) as SharePermission[];\n }\n } catch (error) {\n console.error('Failed to load permissions:', error);\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n getAccessLevel(permission: SharePermission): string {\n return permission.permissionLevel;\n }\n\n async onAccessLevelChange(permission: SharePermission, level: 'View' | 'Edit' | 'Owner'): Promise<void> {\n permission.permissionLevel = level;\n await this.savePermission(permission);\n }\n\n async onAddUser(): Promise<void> {\n const email = this.newUserEmail.trim();\n if (!email) return;\n\n // Simple email validation\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n await this.dialogService.alert('Invalid Email', 'Please enter a valid email address');\n return;\n }\n\n // Check if user already has access\n if (this.permissions.some(p => p.userEmail === email)) {\n await this.dialogService.alert('User Already Has Access', 'This user already has access');\n return;\n }\n\n try {\n // Look up user by email\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const userResult = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `Email='${email}'`,\n ResultType: 'entity_object'\n });\n\n if (!userResult.Success || !userResult.Results || userResult.Results.length === 0) {\n await this.dialogService.alert('User Not Found', 'No user found with that email address');\n return;\n }\n\n const user = userResult.Results[0];\n const newPermission: SharePermission = {\n permissionId: null,\n userId: user.ID,\n userEmail: user.Email,\n userName: user.Name,\n permissionLevel: 'View'\n };\n\n await this.savePermission(newPermission);\n this.permissions.push(newPermission);\n this.newUserEmail = '';\n this.toastService.success(`Access granted to ${user.Email}`);\n this.cdr.detectChanges();\n } catch (error) {\n console.error('Failed to add user:', error);\n this.toastService.error('Failed to add user');\n }\n }\n\n async onRemoveUser(permission: SharePermission): Promise<void> {\n const confirmed = await this.dialogService.confirm({\n title: 'Remove Access',\n message: `Remove access for ${permission.userEmail}?`,\n okText: 'Remove',\n cancelText: 'Cancel'\n });\n\n if (!confirmed) return;\n\n try {\n if (permission.permissionId) {\n const md = this.ProviderToUse;\n const permEntity = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n await permEntity.Load(permission.permissionId);\n\n const deleteResult = await permEntity.Delete();\n if (!deleteResult) {\n throw new Error('Failed to delete permission');\n }\n }\n\n this.permissions = this.permissions.filter(p => p.userId !== permission.userId);\n this.toastService.success(`Access removed for ${permission.userEmail}`);\n } catch (error) {\n console.error('Failed to remove user:', error);\n this.toastService.error('Failed to remove user');\n }\n }\n\n private async savePermission(permission: SharePermission): Promise<void> {\n try {\n const md = this.ProviderToUse;\n const permEntity = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n\n if (permission.permissionId) {\n // Update existing permission\n await permEntity.Load(permission.permissionId);\n permEntity.PermissionLevel = permission.permissionLevel;\n } else {\n // Create new permission\n permEntity.ResourceTypeID = this.CONVERSATIONS_RESOURCE_TYPE_ID;\n permEntity.ResourceRecordID = this.conversation.ID;\n permEntity.Type = 'User';\n permEntity.UserID = permission.userId;\n permEntity.PermissionLevel = permission.permissionLevel;\n permEntity.Status = 'Approved';\n }\n\n const saveResult = await permEntity.Save();\n if (!saveResult) {\n throw new Error('Failed to save permission');\n }\n\n // Update the permission ID if it was a new permission\n if (!permission.permissionId) {\n permission.permissionId = permEntity.ID;\n }\n } catch (error) {\n console.error('Failed to save permission:', error);\n throw error;\n }\n }\n\n async onTogglePublicLink(): Promise<void> {\n try {\n // Note: Public link functionality uses the conversation ID directly.\n // For enhanced security with unique tokens, password protection, and expiration,\n // future migration should add: PublicAccessToken, PublicAccessPassword, PublicAccessExpiresAt fields\n this.updateShareLink();\n } catch (error) {\n console.error('Failed to toggle public link:', error);\n await this.dialogService.alert('Error', 'Failed to update sharing settings');\n }\n }\n\n private updateShareLink(): void {\n if (this.isPublicLink && this.conversation) {\n // Generate shareable link\n const baseUrl = window.location.origin;\n this.shareLink = `${baseUrl}/chat/${this.conversation.ID}`;\n } else {\n this.shareLink = '';\n }\n }\n\n async onCopyLink(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.shareLink);\n this.toastService.success('Link copied to clipboard');\n } catch (err) {\n console.error('Failed to copy link:', err);\n this.toastService.error('Failed to copy link');\n }\n }\n\n onClose(): void {\n this.closed.emit();\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"share-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/share/share-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, ChangeDetectorRef } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { MJConversationEntity, MJResourcePermissionEntity, MJUserEntity } from '@memberjunction/core-entities';\nimport { UserInfo, RunView, Metadata } from '@memberjunction/core';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\n\ninterface SharePermission {\n permissionId: string | null;\n userId: string;\n userEmail: string;\n userName: string;\n permissionLevel: 'View' | 'Edit' | 'Owner';\n}\n\n@Component({\n standalone: false,\n selector: 'mj-share-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"'Share: ' + (conversation.Name || '')\"\n [Width]=\"500\"\n [Height]=\"600\"\n [Visible]=\"true\"\n (Close)=\"onClose()\">\n <div class=\"share-content\">\n <div class=\"add-user-section\">\n <h4>Add People</h4>\n <div class=\"add-user-form\">\n <input\n type=\"text\"\n [(ngModel)]=\"newUserEmail\"\n placeholder=\"Enter email address\"\n class=\"mj-textbox\"\n style=\"flex: 1;\">\n <button mjButton variant=\"primary\" (click)=\"onAddUser()\">\n Add\n </button>\n </div>\n </div>\n <div class=\"permissions-section\">\n <h4>People with Access</h4>\n <div class=\"permission-list\">\n @if (permissions.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-user-group\"\n Title=\"No one has been given access yet\"\n Size=\"compact\" />\n }\n @for (permission of permissions; track permission) {\n <div class=\"permission-item\">\n <div class=\"user-info\">\n <i class=\"fas fa-user-circle\"></i>\n <div class=\"user-details\">\n <div class=\"user-name\">{{ permission.userName }}</div>\n <div class=\"user-email\">{{ permission.userEmail }}</div>\n </div>\n </div>\n <div class=\"permission-controls\">\n <select\n [ngModel]=\"permission.permissionLevel\"\n (ngModelChange)=\"onAccessLevelChange(permission, $event)\"\n style=\"width: 120px;\" class=\"mj-select\">\n @for (level of accessLevels; track level.value) {\n <option [value]=\"level.value\">{{ level.label }}</option>\n }\n </select>\n <button\n class=\"btn-remove\"\n (click)=\"onRemoveUser(permission)\"\n title=\"Remove access\">\n <i class=\"fas fa-times\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n <div class=\"link-section\">\n <h4>Share Link</h4>\n <div class=\"link-controls\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"isPublicLink\"\n (ngModelChange)=\"onTogglePublicLink()\">\n <label>Anyone with the link can view</label>\n </div>\n @if (isPublicLink) {\n <div class=\"link-display\">\n <input\n type=\"text\"\n [value]=\"shareLink\"\n readonly\n class=\"mj-textbox\"\n style=\"flex: 1;\">\n <button mjButton variant=\"flat\" (click)=\"onCopyLink()\">\n <i class=\"fas fa-copy\"></i> Copy\n </button>\n </div>\n }\n </div>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onClose()\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .share-content { display: flex; flex-direction: column; gap: 24px; }\n\n .add-user-section h4,\n .permissions-section h4,\n .link-section h4 { margin: 0 0 12px 0; font-size: 14px; font-weight: 600; }\n\n .add-user-form { display: flex; gap: 8px; }\n\n .permission-list { border: 1px solid #D9D9D9; border-radius: 4px; max-height: 300px; overflow-y: auto; }\n .permission-item { padding: 12px; border-bottom: 1px solid #E8E8E8; display: flex; justify-content: space-between; align-items: center; }\n .permission-item:last-child { border-bottom: none; }\n\n .user-info { display: flex; align-items: center; gap: 12px; flex: 1; }\n .user-info i { font-size: 32px; color: #999; }\n .user-details { display: flex; flex-direction: column; }\n .user-name { font-size: 14px; font-weight: 500; }\n .user-email { font-size: 12px; color: #666; }\n\n .permission-controls { display: flex; align-items: center; gap: 8px; }\n .btn-remove { padding: 6px 8px; background: transparent; border: none; cursor: pointer; border-radius: 3px; color: #999; }\n .btn-remove:hover { background: #FFEBEE; color: #D32F2F; }\n\n .link-controls { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }\n .link-controls label { font-size: 13px; }\n\n .link-display { display: flex; gap: 8px; }\n `]\n})\nexport class ShareModalComponent extends BaseAngularComponent implements OnInit {\n @Input() Conversation!: MJConversationEntity;\n\n /** @deprecated Use {@link Conversation}. */\n @Input() set conversation(value: MJConversationEntity) {\n this.Conversation = value;\n }\n /** @deprecated Use {@link Conversation}. */\n get conversation(): MJConversationEntity {\n return this.Conversation;\n }\n @Input() CurrentUser!: UserInfo;\n\n /** @deprecated Use {@link CurrentUser}. */\n @Input() set currentUser(value: UserInfo) {\n this.CurrentUser = value;\n }\n /** @deprecated Use {@link CurrentUser}. */\n get currentUser(): UserInfo {\n return this.CurrentUser;\n }\n @Input() IsOpen: boolean = false;\n\n /** @deprecated Use {@link IsOpen}. */\n @Input() set isOpen(value: boolean) {\n this.IsOpen = value;\n }\n /** @deprecated Use {@link IsOpen}. */\n get isOpen(): boolean {\n return this.IsOpen;\n }\n\n @Output() Closed = new EventEmitter<void>();\n\n /**\n * @deprecated Use {@link Closed}.\n *\n * The same emitter under the old binding name, so a template still binding\n * (closed) keeps working. Must stay AFTER Closed: class fields\n * initialise in order, and the other way round this captures undefined.\n */\n @Output() closed = this.Closed;\n\n public Permissions: SharePermission[] = [];\n\n /** @deprecated Use {@link Permissions}. */\n public get permissions(): SharePermission[] {\n return this.Permissions;\n }\n /** @deprecated Use {@link Permissions}. */\n public set permissions(value: SharePermission[]) {\n this.Permissions = value;\n }\n public NewUserEmail: string = '';\n\n /** @deprecated Use {@link NewUserEmail}. */\n public get newUserEmail(): string {\n return this.NewUserEmail;\n }\n /** @deprecated Use {@link NewUserEmail}. */\n public set newUserEmail(value: string) {\n this.NewUserEmail = value;\n }\n public IsPublicLink: boolean = false;\n\n /** @deprecated Use {@link IsPublicLink}. */\n public get isPublicLink(): boolean {\n return this.IsPublicLink;\n }\n /** @deprecated Use {@link IsPublicLink}. */\n public set isPublicLink(value: boolean) {\n this.IsPublicLink = value;\n }\n public ShareLink: string = '';\n\n /** @deprecated Use {@link ShareLink}. */\n public get shareLink(): string {\n return this.ShareLink;\n }\n /** @deprecated Use {@link ShareLink}. */\n public set shareLink(value: string) {\n this.ShareLink = value;\n }\n\n public AccessLevels = [\n { label: 'Can View', value: 'View' },\n { label: 'Can Edit', value: 'Edit' },\n { label: 'Owner', value: 'Owner' }\n ];\n\n /** @deprecated Use {@link AccessLevels}. */\n public get accessLevels() {\n return this.AccessLevels;\n }\n /** @deprecated Use {@link AccessLevels}. */\n public set accessLevels(value) {\n this.AccessLevels = value;\n }\n\n private readonly CONVERSATIONS_RESOURCE_TYPE_ID = '81D4BC3D-9FEB-EF11-B01A-286B35C04427';\n\n constructor(\n private dialogService: DialogService,\n private toastService: ToastService,\n private cdr: ChangeDetectorRef\n ) {\n super();}\n\n ngOnInit() {\n if (this.Conversation) {\n this.loadPermissions();\n this.updateShareLink();\n }\n }\n\n private async loadPermissions(): Promise<void> {\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView<MJResourcePermissionEntity>({\n EntityName: 'MJ: Resource Permissions',\n ExtraFilter: `ResourceTypeID='${this.CONVERSATIONS_RESOURCE_TYPE_ID}' AND ResourceRecordID='${this.Conversation.ID}' AND Status='Approved'`,\n ResultType: 'entity_object'\n });\n\n if (result.Success && result.Results) {\n const permissionPromises = result.Results.map(async (perm) => {\n if (perm.UserID) {\n const userRv = RunView.FromMetadataProvider(this.ProviderToUse);\n const userResult = await userRv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `ID='${perm.UserID}'`,\n ResultType: 'entity_object'\n });\n\n if (userResult.Success && userResult.Results && userResult.Results.length > 0) {\n const user = userResult.Results[0];\n return {\n permissionId: perm.ID,\n userId: perm.UserID,\n userEmail: user.Email,\n userName: user.Name,\n permissionLevel: perm.PermissionLevel || 'View'\n } as SharePermission;\n }\n }\n return null;\n });\n\n const resolvedPermissions = await Promise.all(permissionPromises);\n this.Permissions = resolvedPermissions.filter(p => p !== null) as SharePermission[];\n }\n } catch (error) {\n console.error('Failed to load permissions:', error);\n } finally {\n this.cdr.detectChanges();\n }\n }\n\n GetAccessLevel(permission: SharePermission): string {\n return permission.permissionLevel;\n }\n\n /** @deprecated Use {@link GetAccessLevel}. */\n getAccessLevel(permission: SharePermission): string {\n return this.GetAccessLevel(permission);\n }\n\n async OnAccessLevelChange(permission: SharePermission, level: 'View' | 'Edit' | 'Owner'): Promise<void> {\n permission.permissionLevel = level;\n await this.savePermission(permission);\n }\n\n /** @deprecated Use {@link OnAccessLevelChange}. */\n async onAccessLevelChange(permission: SharePermission, level: 'View' | 'Edit' | 'Owner'): Promise<void> {\n return this.OnAccessLevelChange(permission, level);\n }\n\n async OnAddUser(): Promise<void> {\n const email = this.NewUserEmail.trim();\n if (!email) return;\n\n // Simple email validation\n if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) {\n await this.dialogService.alert('Invalid Email', 'Please enter a valid email address');\n return;\n }\n\n // Check if user already has access\n if (this.Permissions.some(p => p.userEmail === email)) {\n await this.dialogService.alert('User Already Has Access', 'This user already has access');\n return;\n }\n\n try {\n // Look up user by email\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const userResult = await rv.RunView<MJUserEntity>({\n EntityName: 'MJ: Users',\n ExtraFilter: `Email='${email}'`,\n ResultType: 'entity_object'\n });\n\n if (!userResult.Success || !userResult.Results || userResult.Results.length === 0) {\n await this.dialogService.alert('User Not Found', 'No user found with that email address');\n return;\n }\n\n const user = userResult.Results[0];\n const newPermission: SharePermission = {\n permissionId: null,\n userId: user.ID,\n userEmail: user.Email,\n userName: user.Name,\n permissionLevel: 'View'\n };\n\n await this.savePermission(newPermission);\n this.Permissions.push(newPermission);\n this.NewUserEmail = '';\n this.toastService.success(`Access granted to ${user.Email}`);\n this.cdr.detectChanges();\n } catch (error) {\n console.error('Failed to add user:', error);\n this.toastService.error('Failed to add user');\n }\n }\n\n /** @deprecated Use {@link OnAddUser}. */\n async onAddUser(): Promise<void> {\n return this.OnAddUser();\n }\n\n async OnRemoveUser(permission: SharePermission): Promise<void> {\n const confirmed = await this.dialogService.confirm({\n title: 'Remove Access',\n message: `Remove access for ${permission.userEmail}?`,\n okText: 'Remove',\n cancelText: 'Cancel'\n });\n\n if (!confirmed) return;\n\n try {\n if (permission.permissionId) {\n const md = this.ProviderToUse;\n const permEntity = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n await permEntity.Load(permission.permissionId);\n\n const deleteResult = await permEntity.Delete();\n if (!deleteResult) {\n throw new Error('Failed to delete permission');\n }\n }\n\n this.Permissions = this.Permissions.filter(p => p.userId !== permission.userId);\n this.toastService.success(`Access removed for ${permission.userEmail}`);\n } catch (error) {\n console.error('Failed to remove user:', error);\n this.toastService.error('Failed to remove user');\n }\n }\n\n /** @deprecated Use {@link OnRemoveUser}. */\n async onRemoveUser(permission: SharePermission): Promise<void> {\n return this.OnRemoveUser(permission);\n }\n\n private async savePermission(permission: SharePermission): Promise<void> {\n try {\n const md = this.ProviderToUse;\n const permEntity = await md.GetEntityObject<MJResourcePermissionEntity>('MJ: Resource Permissions');\n\n if (permission.permissionId) {\n // Update existing permission\n await permEntity.Load(permission.permissionId);\n permEntity.PermissionLevel = permission.permissionLevel;\n } else {\n // Create new permission\n permEntity.ResourceTypeID = this.CONVERSATIONS_RESOURCE_TYPE_ID;\n permEntity.ResourceRecordID = this.Conversation.ID;\n permEntity.Type = 'User';\n permEntity.UserID = permission.userId;\n permEntity.PermissionLevel = permission.permissionLevel;\n permEntity.Status = 'Approved';\n }\n\n const saveResult = await permEntity.Save();\n if (!saveResult) {\n throw new Error('Failed to save permission');\n }\n\n // Update the permission ID if it was a new permission\n if (!permission.permissionId) {\n permission.permissionId = permEntity.ID;\n }\n } catch (error) {\n console.error('Failed to save permission:', error);\n throw error;\n }\n }\n\n async OnTogglePublicLink(): Promise<void> {\n try {\n // Note: Public link functionality uses the conversation ID directly.\n // For enhanced security with unique tokens, password protection, and expiration,\n // future migration should add: PublicAccessToken, PublicAccessPassword, PublicAccessExpiresAt fields\n this.updateShareLink();\n } catch (error) {\n console.error('Failed to toggle public link:', error);\n await this.dialogService.alert('Error', 'Failed to update sharing settings');\n }\n }\n\n /** @deprecated Use {@link OnTogglePublicLink}. */\n async onTogglePublicLink(): Promise<void> {\n return this.OnTogglePublicLink();\n }\n\n private updateShareLink(): void {\n if (this.IsPublicLink && this.Conversation) {\n // Generate shareable link\n const baseUrl = window.location.origin;\n this.ShareLink = `${baseUrl}/chat/${this.Conversation.ID}`;\n } else {\n this.ShareLink = '';\n }\n }\n\n async OnCopyLink(): Promise<void> {\n try {\n await navigator.clipboard.writeText(this.ShareLink);\n this.toastService.success('Link copied to clipboard');\n } catch (err) {\n console.error('Failed to copy link:', err);\n this.toastService.error('Failed to copy link');\n }\n }\n\n /** @deprecated Use {@link OnCopyLink}. */\n async onCopyLink(): Promise<void> {\n return this.OnCopyLink();\n }\n\n OnClose(): void {\n this.Closed.emit();\n }\n\n /** @deprecated Use {@link OnClose}. */\n onClose(): void {\n return this.OnClose();\n }\n}"]}
|
|
@@ -11,22 +11,62 @@ export interface UserSearchResult {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class UserPickerComponent extends BaseAngularComponent implements OnInit, OnDestroy {
|
|
13
13
|
private cdr;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
CurrentUser: UserInfo;
|
|
15
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
16
|
+
set currentUser(value: UserInfo);
|
|
17
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
18
|
+
get currentUser(): UserInfo;
|
|
19
|
+
ExcludeUserIds: string[];
|
|
20
|
+
/** @deprecated Use {@link ExcludeUserIds}. */
|
|
21
|
+
set excludeUserIds(value: string[]);
|
|
22
|
+
/** @deprecated Use {@link ExcludeUserIds}. */
|
|
23
|
+
get excludeUserIds(): string[];
|
|
24
|
+
Placeholder: string;
|
|
25
|
+
/** @deprecated Use {@link Placeholder}. */
|
|
26
|
+
set placeholder(value: string);
|
|
27
|
+
/** @deprecated Use {@link Placeholder}. */
|
|
28
|
+
get placeholder(): string;
|
|
17
29
|
constructor(cdr: ChangeDetectorRef);
|
|
30
|
+
UserSelected: EventEmitter<UserSearchResult>;
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated Use {@link UserSelected}.
|
|
33
|
+
*
|
|
34
|
+
* The same emitter under the old binding name, so a template still binding
|
|
35
|
+
* (userSelected) keeps working. Must stay AFTER UserSelected: class fields
|
|
36
|
+
* initialise in order, and the other way round this captures undefined.
|
|
37
|
+
*/
|
|
18
38
|
userSelected: EventEmitter<UserSearchResult>;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
39
|
+
SearchQuery: string;
|
|
40
|
+
/** @deprecated Use {@link SearchQuery}. */
|
|
41
|
+
get searchQuery(): string;
|
|
42
|
+
/** @deprecated Use {@link SearchQuery}. */
|
|
43
|
+
set searchQuery(value: string);
|
|
44
|
+
SearchResults: UserSearchResult[];
|
|
45
|
+
/** @deprecated Use {@link SearchResults}. */
|
|
46
|
+
get searchResults(): UserSearchResult[];
|
|
47
|
+
/** @deprecated Use {@link SearchResults}. */
|
|
48
|
+
set searchResults(value: UserSearchResult[]);
|
|
49
|
+
IsSearching: boolean;
|
|
50
|
+
/** @deprecated Use {@link IsSearching}. */
|
|
51
|
+
get isSearching(): boolean;
|
|
52
|
+
/** @deprecated Use {@link IsSearching}. */
|
|
53
|
+
set isSearching(value: boolean);
|
|
54
|
+
ShowResults: boolean;
|
|
55
|
+
/** @deprecated Use {@link ShowResults}. */
|
|
56
|
+
get showResults(): boolean;
|
|
57
|
+
/** @deprecated Use {@link ShowResults}. */
|
|
58
|
+
set showResults(value: boolean);
|
|
23
59
|
ngOnInit(): void;
|
|
24
60
|
ngOnDestroy(): void;
|
|
25
61
|
private handleClickOutside;
|
|
62
|
+
OnSearch(): void;
|
|
63
|
+
/** @deprecated Use {@link OnSearch}. */
|
|
26
64
|
onSearch(): void;
|
|
65
|
+
OnSelectUser(user: UserSearchResult): void;
|
|
66
|
+
/** @deprecated Use {@link OnSelectUser}. */
|
|
27
67
|
onSelectUser(user: UserSearchResult): void;
|
|
28
68
|
private performSearch;
|
|
29
69
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserPickerComponent, never>;
|
|
30
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<UserPickerComponent, "mj-user-picker", never, { "currentUser": { "alias": "currentUser"; "required": false; }; "excludeUserIds": { "alias": "excludeUserIds"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, { "userSelected": "userSelected"; }, never, never, true, never>;
|
|
70
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UserPickerComponent, "mj-user-picker", never, { "CurrentUser": { "alias": "CurrentUser"; "required": false; }; "currentUser": { "alias": "currentUser"; "required": false; }; "ExcludeUserIds": { "alias": "ExcludeUserIds"; "required": false; }; "excludeUserIds": { "alias": "excludeUserIds"; "required": false; }; "Placeholder": { "alias": "Placeholder"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, { "UserSelected": "UserSelected"; "userSelected": "userSelected"; }, never, never, true, never>;
|
|
31
71
|
}
|
|
32
72
|
//# sourceMappingURL=user-picker.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/shared/user-picker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAIrE,OAAO,EAAE,QAAQ,EAAW,MAAM,sBAAsB,CAAC;;AAGzD,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAyKa,mBAAoB,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"user-picker.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/shared/user-picker.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAIrE,OAAO,EAAE,QAAQ,EAAW,MAAM,sBAAsB,CAAC;;AAGzD,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAyKa,mBAAoB,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS;IAgC1E,OAAO,CAAC,GAAG;IA/Bd,WAAW,EAAG,QAAQ,CAAC;IAEhC,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,QAAQ,EAEvC;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,QAAQ,CAE1B;IACQ,cAAc,EAAE,MAAM,EAAE,CAAM;IAEvC,8CAA8C;IAC9C,IAAa,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAE1C;IACD,8CAA8C;IAC9C,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IACQ,WAAW,EAAE,MAAM,CAAwC;IAEpE,2CAA2C;IAC3C,IAAa,WAAW,CAAC,KAAK,EAAE,MAAM,EAErC;IACD,2CAA2C;IAC3C,IAAI,WAAW,IAAI,MAAM,CAExB;gBAEmB,GAAG,EAAE,iBAAiB;IAGhC,YAAY,iCAAwC;IAE9D;;;;;;OAMG;IACO,YAAY,iCAAqB;IAE3C,WAAW,EAAE,MAAM,CAAM;IAEzB,2CAA2C;IAC3C,IAAI,WAAW,IAAI,MAAM,CAExB;IACD,2CAA2C;IAC3C,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAE5B;IACD,aAAa,EAAE,gBAAgB,EAAE,CAAM;IAEvC,6CAA6C;IAC7C,IAAI,aAAa,IAAI,gBAAgB,EAAE,CAEtC;IACD,6CAA6C;IAC7C,IAAI,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAE1C;IACD,WAAW,EAAE,OAAO,CAAS;IAE7B,2CAA2C;IAC3C,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,2CAA2C;IAC3C,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAE7B;IACD,WAAW,EAAE,OAAO,CAAS;IAE7B,2CAA2C;IAC3C,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,2CAA2C;IAC3C,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,EAE7B;IAED,QAAQ,IAAI,IAAI;IAKhB,WAAW,IAAI,IAAI;IAInB,OAAO,CAAC,kBAAkB;IAO1B,QAAQ,IAAI,IAAI;IAShB,wCAAwC;IACxC,QAAQ,IAAI,IAAI;IAIhB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAO1C,4CAA4C;IAC5C,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;YAI5B,aAAa;yCAjIlB,mBAAmB;2CAAnB,mBAAmB;CAmM/B"}
|