@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
|
@@ -520,22 +520,94 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
520
520
|
toastService;
|
|
521
521
|
permissionService;
|
|
522
522
|
cdr;
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
523
|
+
IsOpen = false;
|
|
524
|
+
/** @deprecated Use {@link IsOpen}. */
|
|
525
|
+
set isOpen(value) {
|
|
526
|
+
this.IsOpen = value;
|
|
527
|
+
}
|
|
528
|
+
/** @deprecated Use {@link IsOpen}. */
|
|
529
|
+
get isOpen() {
|
|
530
|
+
return this.IsOpen;
|
|
531
|
+
}
|
|
532
|
+
EnvironmentId;
|
|
533
|
+
/** @deprecated Use {@link EnvironmentId}. */
|
|
534
|
+
set environmentId(value) {
|
|
535
|
+
this.EnvironmentId = value;
|
|
536
|
+
}
|
|
537
|
+
/** @deprecated Use {@link EnvironmentId}. */
|
|
538
|
+
get environmentId() {
|
|
539
|
+
return this.EnvironmentId;
|
|
540
|
+
}
|
|
541
|
+
CurrentUser;
|
|
542
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
543
|
+
set currentUser(value) {
|
|
544
|
+
this.CurrentUser = value;
|
|
545
|
+
}
|
|
546
|
+
/** @deprecated Use {@link CurrentUser}. */
|
|
547
|
+
get currentUser() {
|
|
548
|
+
return this.CurrentUser;
|
|
549
|
+
}
|
|
526
550
|
/** Collections that already contain the *current version* — rendered with a green check and locked. */
|
|
527
|
-
|
|
551
|
+
ExcludeCollectionIds = [];
|
|
552
|
+
/** @deprecated Use {@link ExcludeCollectionIds}. */
|
|
553
|
+
set excludeCollectionIds(value) {
|
|
554
|
+
this.ExcludeCollectionIds = value;
|
|
555
|
+
}
|
|
556
|
+
/** @deprecated Use {@link ExcludeCollectionIds}. */
|
|
557
|
+
get excludeCollectionIds() {
|
|
558
|
+
return this.ExcludeCollectionIds;
|
|
559
|
+
}
|
|
528
560
|
/** ID of the artifact version being saved. Required for writes. */
|
|
529
|
-
|
|
561
|
+
ArtifactVersionId = null;
|
|
562
|
+
/** @deprecated Use {@link ArtifactVersionId}. */
|
|
563
|
+
set artifactVersionId(value) {
|
|
564
|
+
this.ArtifactVersionId = value;
|
|
565
|
+
}
|
|
566
|
+
/** @deprecated Use {@link ArtifactVersionId}. */
|
|
567
|
+
get artifactVersionId() {
|
|
568
|
+
return this.ArtifactVersionId;
|
|
569
|
+
}
|
|
530
570
|
/** Display-only: artifact name shown in the preview pane. */
|
|
531
|
-
|
|
571
|
+
ArtifactName = '';
|
|
572
|
+
/** @deprecated Use {@link ArtifactName}. */
|
|
573
|
+
set artifactName(value) {
|
|
574
|
+
this.ArtifactName = value;
|
|
575
|
+
}
|
|
576
|
+
/** @deprecated Use {@link ArtifactName}. */
|
|
577
|
+
get artifactName() {
|
|
578
|
+
return this.ArtifactName;
|
|
579
|
+
}
|
|
532
580
|
/** Display-only: version number shown in the preview pane. */
|
|
533
|
-
|
|
581
|
+
ArtifactVersionNumber = null;
|
|
582
|
+
/** @deprecated Use {@link ArtifactVersionNumber}. */
|
|
583
|
+
set artifactVersionNumber(value) {
|
|
584
|
+
this.ArtifactVersionNumber = value;
|
|
585
|
+
}
|
|
586
|
+
/** @deprecated Use {@link ArtifactVersionNumber}. */
|
|
587
|
+
get artifactVersionNumber() {
|
|
588
|
+
return this.ArtifactVersionNumber;
|
|
589
|
+
}
|
|
534
590
|
/** Fired when the save flow finishes (fully successful, or user acknowledged partial result). */
|
|
535
591
|
completed = new EventEmitter();
|
|
536
592
|
cancelled = new EventEmitter();
|
|
537
|
-
|
|
538
|
-
|
|
593
|
+
SearchInputRef;
|
|
594
|
+
/** @deprecated Use {@link SearchInputRef}. */
|
|
595
|
+
get searchInputRef() {
|
|
596
|
+
return this.SearchInputRef;
|
|
597
|
+
}
|
|
598
|
+
/** @deprecated Use {@link SearchInputRef}. */
|
|
599
|
+
set searchInputRef(value) {
|
|
600
|
+
this.SearchInputRef = value;
|
|
601
|
+
}
|
|
602
|
+
NewNameInputRef;
|
|
603
|
+
/** @deprecated Use {@link NewNameInputRef}. */
|
|
604
|
+
get newNameInputRef() {
|
|
605
|
+
return this.NewNameInputRef;
|
|
606
|
+
}
|
|
607
|
+
/** @deprecated Use {@link NewNameInputRef}. */
|
|
608
|
+
set newNameInputRef(value) {
|
|
609
|
+
this.NewNameInputRef = value;
|
|
610
|
+
}
|
|
539
611
|
// Data
|
|
540
612
|
allCollections = [];
|
|
541
613
|
editableCollections = [];
|
|
@@ -543,21 +615,93 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
543
615
|
collectionById = new Map();
|
|
544
616
|
expandedIds = new Set();
|
|
545
617
|
// Selection (normalized UUIDs so SQL Server vs Postgres casing doesn't bite us)
|
|
546
|
-
|
|
618
|
+
SelectedIds = new Set();
|
|
619
|
+
/** @deprecated Use {@link SelectedIds}. */
|
|
620
|
+
get selectedIds() {
|
|
621
|
+
return this.SelectedIds;
|
|
622
|
+
}
|
|
623
|
+
/** @deprecated Use {@link SelectedIds}. */
|
|
624
|
+
set selectedIds(value) {
|
|
625
|
+
this.SelectedIds = value;
|
|
626
|
+
}
|
|
547
627
|
// Filter / search
|
|
548
|
-
|
|
549
|
-
|
|
628
|
+
SearchQuery = '';
|
|
629
|
+
/** @deprecated Use {@link SearchQuery}. */
|
|
630
|
+
get searchQuery() {
|
|
631
|
+
return this.SearchQuery;
|
|
632
|
+
}
|
|
633
|
+
/** @deprecated Use {@link SearchQuery}. */
|
|
634
|
+
set searchQuery(value) {
|
|
635
|
+
this.SearchQuery = value;
|
|
636
|
+
}
|
|
637
|
+
FilterMode = 'editable';
|
|
638
|
+
/** @deprecated Use {@link FilterMode}. */
|
|
639
|
+
get filterMode() {
|
|
640
|
+
return this.FilterMode;
|
|
641
|
+
}
|
|
642
|
+
/** @deprecated Use {@link FilterMode}. */
|
|
643
|
+
set filterMode(value) {
|
|
644
|
+
this.FilterMode = value;
|
|
645
|
+
}
|
|
550
646
|
// Render output
|
|
551
|
-
|
|
647
|
+
VisibleNodes = [];
|
|
648
|
+
/** @deprecated Use {@link VisibleNodes}. */
|
|
649
|
+
get visibleNodes() {
|
|
650
|
+
return this.VisibleNodes;
|
|
651
|
+
}
|
|
652
|
+
/** @deprecated Use {@link VisibleNodes}. */
|
|
653
|
+
set visibleNodes(value) {
|
|
654
|
+
this.VisibleNodes = value;
|
|
655
|
+
}
|
|
552
656
|
// States
|
|
553
657
|
isLoading = false;
|
|
554
|
-
|
|
658
|
+
IsSaving = false;
|
|
659
|
+
/** @deprecated Use {@link IsSaving}. */
|
|
660
|
+
get isSaving() {
|
|
661
|
+
return this.IsSaving;
|
|
662
|
+
}
|
|
663
|
+
/** @deprecated Use {@link IsSaving}. */
|
|
664
|
+
set isSaving(value) {
|
|
665
|
+
this.IsSaving = value;
|
|
666
|
+
}
|
|
555
667
|
errorMessage = '';
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
668
|
+
ShowCreateForm = false;
|
|
669
|
+
/** @deprecated Use {@link ShowCreateForm}. */
|
|
670
|
+
get showCreateForm() {
|
|
671
|
+
return this.ShowCreateForm;
|
|
672
|
+
}
|
|
673
|
+
/** @deprecated Use {@link ShowCreateForm}. */
|
|
674
|
+
set showCreateForm(value) {
|
|
675
|
+
this.ShowCreateForm = value;
|
|
676
|
+
}
|
|
677
|
+
NewCollectionName = '';
|
|
678
|
+
/** @deprecated Use {@link NewCollectionName}. */
|
|
679
|
+
get newCollectionName() {
|
|
680
|
+
return this.NewCollectionName;
|
|
681
|
+
}
|
|
682
|
+
/** @deprecated Use {@link NewCollectionName}. */
|
|
683
|
+
set newCollectionName(value) {
|
|
684
|
+
this.NewCollectionName = value;
|
|
685
|
+
}
|
|
686
|
+
IsCreatingCollection = false;
|
|
687
|
+
/** @deprecated Use {@link IsCreatingCollection}. */
|
|
688
|
+
get isCreatingCollection() {
|
|
689
|
+
return this.IsCreatingCollection;
|
|
690
|
+
}
|
|
691
|
+
/** @deprecated Use {@link IsCreatingCollection}. */
|
|
692
|
+
set isCreatingCollection(value) {
|
|
693
|
+
this.IsCreatingCollection = value;
|
|
694
|
+
}
|
|
559
695
|
// Per-collection save outcomes
|
|
560
|
-
|
|
696
|
+
SaveResults = new Map();
|
|
697
|
+
/** @deprecated Use {@link SaveResults}. */
|
|
698
|
+
get saveResults() {
|
|
699
|
+
return this.SaveResults;
|
|
700
|
+
}
|
|
701
|
+
/** @deprecated Use {@link SaveResults}. */
|
|
702
|
+
set saveResults(value) {
|
|
703
|
+
this.SaveResults = value;
|
|
704
|
+
}
|
|
561
705
|
constructor(toastService, permissionService, cdr) {
|
|
562
706
|
super();
|
|
563
707
|
this.toastService = toastService;
|
|
@@ -569,57 +713,77 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
569
713
|
// ============================================================
|
|
570
714
|
async ngOnInit() {
|
|
571
715
|
this.permissionService.Provider = this.ProviderToUse;
|
|
572
|
-
if (this.
|
|
716
|
+
if (this.IsOpen) {
|
|
573
717
|
await this.loadCollections();
|
|
574
718
|
}
|
|
575
719
|
}
|
|
576
720
|
async ngOnChanges(changes) {
|
|
577
721
|
if (changes['isOpen']) {
|
|
578
|
-
if (this.
|
|
722
|
+
if (this.IsOpen) {
|
|
579
723
|
this.resetState();
|
|
580
724
|
await this.loadCollections();
|
|
581
725
|
// Autofocus search on next tick
|
|
582
|
-
Promise.resolve().then(() => this.
|
|
726
|
+
Promise.resolve().then(() => this.SearchInputRef?.nativeElement?.focus());
|
|
583
727
|
}
|
|
584
728
|
}
|
|
585
729
|
}
|
|
586
730
|
ngAfterViewInit() {
|
|
587
|
-
if (this.
|
|
588
|
-
this.
|
|
731
|
+
if (this.IsOpen) {
|
|
732
|
+
this.SearchInputRef?.nativeElement?.focus();
|
|
589
733
|
}
|
|
590
734
|
}
|
|
591
735
|
// ============================================================
|
|
592
736
|
// Selection helpers (normalized UUIDs)
|
|
593
737
|
// ============================================================
|
|
738
|
+
IsSelected(id) {
|
|
739
|
+
return this.SelectedIds.has(NormalizeUUID(id));
|
|
740
|
+
}
|
|
741
|
+
/** @deprecated Use {@link IsSelected}. */
|
|
594
742
|
isSelected(id) {
|
|
595
|
-
return this.
|
|
743
|
+
return this.IsSelected(id);
|
|
596
744
|
}
|
|
597
|
-
get
|
|
745
|
+
get SelectedCollections() {
|
|
598
746
|
const list = [];
|
|
599
|
-
for (const id of this.
|
|
747
|
+
for (const id of this.SelectedIds) {
|
|
600
748
|
const c = this.collectionById.get(id);
|
|
601
749
|
if (c)
|
|
602
750
|
list.push(c);
|
|
603
751
|
}
|
|
604
752
|
return list;
|
|
605
753
|
}
|
|
754
|
+
/** @deprecated Use {@link SelectedCollections}. */
|
|
755
|
+
get selectedCollections() {
|
|
756
|
+
return this.SelectedCollections;
|
|
757
|
+
}
|
|
758
|
+
get ResultsList() {
|
|
759
|
+
return Array.from(this.SaveResults.values());
|
|
760
|
+
}
|
|
761
|
+
/** @deprecated Use {@link ResultsList}. */
|
|
606
762
|
get resultsList() {
|
|
607
|
-
return
|
|
763
|
+
return this.ResultsList;
|
|
608
764
|
}
|
|
609
|
-
get
|
|
765
|
+
get SuccessCount() {
|
|
610
766
|
let n = 0;
|
|
611
|
-
for (const r of this.
|
|
767
|
+
for (const r of this.SaveResults.values())
|
|
612
768
|
if (r.status === 'success')
|
|
613
769
|
n++;
|
|
614
770
|
return n;
|
|
615
771
|
}
|
|
616
|
-
|
|
772
|
+
/** @deprecated Use {@link SuccessCount}. */
|
|
773
|
+
get successCount() {
|
|
774
|
+
return this.SuccessCount;
|
|
775
|
+
}
|
|
776
|
+
get FailedCount() {
|
|
617
777
|
let n = 0;
|
|
618
|
-
for (const r of this.
|
|
778
|
+
for (const r of this.SaveResults.values())
|
|
619
779
|
if (r.status === 'error')
|
|
620
780
|
n++;
|
|
621
781
|
return n;
|
|
622
782
|
}
|
|
783
|
+
/** @deprecated Use {@link FailedCount}. */
|
|
784
|
+
get failedCount() {
|
|
785
|
+
return this.FailedCount;
|
|
786
|
+
}
|
|
623
787
|
// ============================================================
|
|
624
788
|
// Load + tree build
|
|
625
789
|
// ============================================================
|
|
@@ -629,16 +793,16 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
629
793
|
this.userPermissions.clear();
|
|
630
794
|
this.collectionById.clear();
|
|
631
795
|
this.expandedIds.clear();
|
|
632
|
-
this.
|
|
633
|
-
this.
|
|
634
|
-
this.
|
|
635
|
-
this.
|
|
796
|
+
this.SelectedIds.clear();
|
|
797
|
+
this.VisibleNodes = [];
|
|
798
|
+
this.SearchQuery = '';
|
|
799
|
+
this.FilterMode = 'editable';
|
|
636
800
|
this.errorMessage = '';
|
|
637
|
-
this.
|
|
638
|
-
this.
|
|
639
|
-
this.
|
|
640
|
-
this.
|
|
641
|
-
this.
|
|
801
|
+
this.ShowCreateForm = false;
|
|
802
|
+
this.NewCollectionName = '';
|
|
803
|
+
this.SaveResults.clear();
|
|
804
|
+
this.IsSaving = false;
|
|
805
|
+
this.IsCreatingCollection = false;
|
|
642
806
|
}
|
|
643
807
|
async loadCollections() {
|
|
644
808
|
try {
|
|
@@ -647,10 +811,10 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
647
811
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
648
812
|
const result = await rv.RunView({
|
|
649
813
|
EntityName: 'MJ: Collections',
|
|
650
|
-
ExtraFilter: `EnvironmentID='${this.
|
|
814
|
+
ExtraFilter: `EnvironmentID='${this.EnvironmentId}'`,
|
|
651
815
|
OrderBy: 'Name ASC',
|
|
652
816
|
ResultType: 'entity_object'
|
|
653
|
-
}, this.
|
|
817
|
+
}, this.CurrentUser);
|
|
654
818
|
if (!result.Success) {
|
|
655
819
|
this.errorMessage = result.ErrorMessage || 'Failed to load collections';
|
|
656
820
|
return;
|
|
@@ -674,15 +838,15 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
674
838
|
}
|
|
675
839
|
}
|
|
676
840
|
async loadUserPermissions() {
|
|
677
|
-
const nonOwned = this.allCollections.filter(c => c.OwnerID && !UUIDsEqual(c.OwnerID, this.
|
|
841
|
+
const nonOwned = this.allCollections.filter(c => c.OwnerID && !UUIDsEqual(c.OwnerID, this.CurrentUser.ID));
|
|
678
842
|
if (nonOwned.length === 0)
|
|
679
843
|
return;
|
|
680
844
|
const ids = nonOwned.map(c => c.ID);
|
|
681
|
-
const permissions = await this.permissionService.checkBulkPermissions(ids, this.
|
|
845
|
+
const permissions = await this.permissionService.checkBulkPermissions(ids, this.CurrentUser.ID, this.CurrentUser);
|
|
682
846
|
permissions.forEach((permission, id) => this.userPermissions.set(id, permission));
|
|
683
847
|
}
|
|
684
848
|
canEdit(c) {
|
|
685
|
-
if (!c.OwnerID || UUIDsEqual(c.OwnerID, this.
|
|
849
|
+
if (!c.OwnerID || UUIDsEqual(c.OwnerID, this.CurrentUser.ID))
|
|
686
850
|
return true;
|
|
687
851
|
return this.userPermissions.get(c.ID)?.canEdit || false;
|
|
688
852
|
}
|
|
@@ -690,12 +854,12 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
690
854
|
// Tree rendering — flat list of CollectionNode, ordered DFS
|
|
691
855
|
// ============================================================
|
|
692
856
|
rebuildVisibleNodes() {
|
|
693
|
-
const q = this.
|
|
857
|
+
const q = this.SearchQuery.trim().toLowerCase();
|
|
694
858
|
if (q) {
|
|
695
|
-
this.
|
|
859
|
+
this.VisibleNodes = this.buildSearchNodes(q);
|
|
696
860
|
}
|
|
697
861
|
else {
|
|
698
|
-
this.
|
|
862
|
+
this.VisibleNodes = this.buildTreeNodes();
|
|
699
863
|
}
|
|
700
864
|
}
|
|
701
865
|
buildTreeNodes() {
|
|
@@ -754,33 +918,45 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
754
918
|
return names.join(' / ');
|
|
755
919
|
}
|
|
756
920
|
isAlreadyAdded(id) {
|
|
757
|
-
return this.
|
|
921
|
+
return this.ExcludeCollectionIds.some(eid => UUIDsEqual(eid, id));
|
|
758
922
|
}
|
|
759
923
|
// ============================================================
|
|
760
924
|
// Tree interactions
|
|
761
925
|
// ============================================================
|
|
762
|
-
|
|
763
|
-
if (this.
|
|
926
|
+
OnRowClick(node) {
|
|
927
|
+
if (this.IsSaving)
|
|
764
928
|
return;
|
|
765
929
|
if (node.alreadyContainsArtifact)
|
|
766
930
|
return;
|
|
767
|
-
this.
|
|
931
|
+
this.ToggleSelection(node.collection);
|
|
768
932
|
}
|
|
769
|
-
|
|
933
|
+
/** @deprecated Use {@link OnRowClick}. */
|
|
934
|
+
onRowClick(node) {
|
|
935
|
+
return this.OnRowClick(node);
|
|
936
|
+
}
|
|
937
|
+
ToggleSelection(c) {
|
|
770
938
|
const id = NormalizeUUID(c.ID);
|
|
771
|
-
if (this.
|
|
772
|
-
this.
|
|
939
|
+
if (this.SelectedIds.has(id)) {
|
|
940
|
+
this.SelectedIds.delete(id);
|
|
773
941
|
}
|
|
774
942
|
else {
|
|
775
|
-
this.
|
|
943
|
+
this.SelectedIds.add(id);
|
|
776
944
|
}
|
|
777
945
|
}
|
|
778
|
-
|
|
779
|
-
|
|
946
|
+
/** @deprecated Use {@link ToggleSelection}. */
|
|
947
|
+
toggleSelection(c) {
|
|
948
|
+
return this.ToggleSelection(c);
|
|
949
|
+
}
|
|
950
|
+
Deselect(id) {
|
|
951
|
+
if (this.IsSaving)
|
|
780
952
|
return;
|
|
781
|
-
this.
|
|
953
|
+
this.SelectedIds.delete(NormalizeUUID(id));
|
|
782
954
|
}
|
|
783
|
-
|
|
955
|
+
/** @deprecated Use {@link Deselect}. */
|
|
956
|
+
deselect(id) {
|
|
957
|
+
return this.Deselect(id);
|
|
958
|
+
}
|
|
959
|
+
ToggleExpand(node) {
|
|
784
960
|
if (!node.hasChildren)
|
|
785
961
|
return;
|
|
786
962
|
const id = NormalizeUUID(node.collection.ID);
|
|
@@ -792,48 +968,72 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
792
968
|
}
|
|
793
969
|
this.rebuildVisibleNodes();
|
|
794
970
|
}
|
|
971
|
+
/** @deprecated Use {@link ToggleExpand}. */
|
|
972
|
+
toggleExpand(node) {
|
|
973
|
+
return this.ToggleExpand(node);
|
|
974
|
+
}
|
|
975
|
+
OnSearchChange() {
|
|
976
|
+
this.rebuildVisibleNodes();
|
|
977
|
+
}
|
|
978
|
+
/** @deprecated Use {@link OnSearchChange}. */
|
|
795
979
|
onSearchChange() {
|
|
980
|
+
return this.OnSearchChange();
|
|
981
|
+
}
|
|
982
|
+
ClearSearch() {
|
|
983
|
+
this.SearchQuery = '';
|
|
796
984
|
this.rebuildVisibleNodes();
|
|
985
|
+
this.SearchInputRef?.nativeElement?.focus();
|
|
797
986
|
}
|
|
987
|
+
/** @deprecated Use {@link ClearSearch}. */
|
|
798
988
|
clearSearch() {
|
|
799
|
-
this.
|
|
800
|
-
this.rebuildVisibleNodes();
|
|
801
|
-
this.searchInputRef?.nativeElement?.focus();
|
|
989
|
+
return this.ClearSearch();
|
|
802
990
|
}
|
|
803
|
-
|
|
804
|
-
this.
|
|
991
|
+
SetFilter(mode) {
|
|
992
|
+
this.FilterMode = mode;
|
|
805
993
|
// 'recent' filter is a placeholder for now — same data, future sort change.
|
|
806
994
|
// Keeping the chip wired so the UI is honest and a future PR can flip the sort.
|
|
807
995
|
this.rebuildVisibleNodes();
|
|
808
996
|
}
|
|
997
|
+
/** @deprecated Use {@link SetFilter}. */
|
|
998
|
+
setFilter(mode) {
|
|
999
|
+
return this.SetFilter(mode);
|
|
1000
|
+
}
|
|
809
1001
|
// ============================================================
|
|
810
1002
|
// Create new collection (root-level only — keeps the picker simple)
|
|
811
1003
|
// ============================================================
|
|
812
|
-
|
|
813
|
-
this.
|
|
1004
|
+
OpenCreateForm() {
|
|
1005
|
+
this.ShowCreateForm = true;
|
|
814
1006
|
// Force the @if branch to render now, then focus the input it created.
|
|
815
1007
|
// A microtask alone isn't enough — Angular hasn't run change detection by then,
|
|
816
1008
|
// so the @ViewChild ref is still undefined.
|
|
817
1009
|
this.cdr.detectChanges();
|
|
818
|
-
this.
|
|
1010
|
+
this.NewNameInputRef?.nativeElement?.focus();
|
|
1011
|
+
}
|
|
1012
|
+
/** @deprecated Use {@link OpenCreateForm}. */
|
|
1013
|
+
openCreateForm() {
|
|
1014
|
+
return this.OpenCreateForm();
|
|
819
1015
|
}
|
|
1016
|
+
CancelCreate() {
|
|
1017
|
+
this.ShowCreateForm = false;
|
|
1018
|
+
this.NewCollectionName = '';
|
|
1019
|
+
}
|
|
1020
|
+
/** @deprecated Use {@link CancelCreate}. */
|
|
820
1021
|
cancelCreate() {
|
|
821
|
-
this.
|
|
822
|
-
this.newCollectionName = '';
|
|
1022
|
+
return this.CancelCreate();
|
|
823
1023
|
}
|
|
824
|
-
async
|
|
825
|
-
const name = this.
|
|
1024
|
+
async CreateCollection() {
|
|
1025
|
+
const name = this.NewCollectionName.trim();
|
|
826
1026
|
if (!name) {
|
|
827
1027
|
this.toastService.warning('Please enter a collection name');
|
|
828
1028
|
return;
|
|
829
1029
|
}
|
|
830
1030
|
try {
|
|
831
|
-
this.
|
|
1031
|
+
this.IsCreatingCollection = true;
|
|
832
1032
|
const p = this.ProviderToUse;
|
|
833
|
-
const collection = await p.GetEntityObject('MJ: Collections', this.
|
|
1033
|
+
const collection = await p.GetEntityObject('MJ: Collections', this.CurrentUser);
|
|
834
1034
|
collection.Name = name;
|
|
835
|
-
collection.EnvironmentID = this.
|
|
836
|
-
collection.OwnerID = this.
|
|
1035
|
+
collection.EnvironmentID = this.EnvironmentId;
|
|
1036
|
+
collection.OwnerID = this.CurrentUser.ID;
|
|
837
1037
|
const saved = await collection.Save();
|
|
838
1038
|
if (!saved) {
|
|
839
1039
|
this.toastService.error(collection.LatestResult?.CompleteMessage || 'Failed to create collection');
|
|
@@ -843,7 +1043,7 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
843
1043
|
// OwnerID as an implicit full-access grant. Writing a self-share row was both redundant
|
|
844
1044
|
// and triggering a server-side auth failure on freshly-created collections.
|
|
845
1045
|
this.toastService.success('Collection created');
|
|
846
|
-
this.
|
|
1046
|
+
this.CancelCreate();
|
|
847
1047
|
// Splice the new collection into local state directly. Re-running loadCollections() here
|
|
848
1048
|
// races with the server's cache-invalidation propagation and intermittently returns the
|
|
849
1049
|
// pre-create result; we already own the freshly-saved entity, so just use it.
|
|
@@ -851,7 +1051,7 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
851
1051
|
this.editableCollections = [...this.editableCollections, collection];
|
|
852
1052
|
this.collectionById.set(NormalizeUUID(collection.ID), collection);
|
|
853
1053
|
// Auto-select the new one
|
|
854
|
-
this.
|
|
1054
|
+
this.SelectedIds.add(NormalizeUUID(collection.ID));
|
|
855
1055
|
this.rebuildVisibleNodes();
|
|
856
1056
|
}
|
|
857
1057
|
catch (error) {
|
|
@@ -859,53 +1059,61 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
859
1059
|
this.toastService.error('Failed to create collection');
|
|
860
1060
|
}
|
|
861
1061
|
finally {
|
|
862
|
-
this.
|
|
1062
|
+
this.IsCreatingCollection = false;
|
|
863
1063
|
this.cdr.detectChanges();
|
|
864
1064
|
}
|
|
865
1065
|
}
|
|
1066
|
+
/** @deprecated Use {@link CreateCollection}. */
|
|
1067
|
+
async createCollection() {
|
|
1068
|
+
return this.CreateCollection();
|
|
1069
|
+
}
|
|
866
1070
|
// ============================================================
|
|
867
1071
|
// Save flow (writes happen here, dialog stays open until done)
|
|
868
1072
|
// ============================================================
|
|
869
|
-
async
|
|
870
|
-
if (this.
|
|
1073
|
+
async OnSave() {
|
|
1074
|
+
if (this.IsSaving)
|
|
871
1075
|
return;
|
|
872
|
-
if (this.
|
|
1076
|
+
if (this.SelectedIds.size === 0) {
|
|
873
1077
|
this.toastService.warning('Pick at least one collection');
|
|
874
1078
|
return;
|
|
875
1079
|
}
|
|
876
|
-
if (!this.
|
|
1080
|
+
if (!this.ArtifactVersionId) {
|
|
877
1081
|
this.toastService.error('No version selected to save');
|
|
878
1082
|
return;
|
|
879
1083
|
}
|
|
880
|
-
this.
|
|
881
|
-
this.
|
|
1084
|
+
this.IsSaving = true;
|
|
1085
|
+
this.SaveResults.clear();
|
|
882
1086
|
// Seed each result as pending so they render in order
|
|
883
|
-
for (const c of this.
|
|
884
|
-
this.
|
|
1087
|
+
for (const c of this.SelectedCollections) {
|
|
1088
|
+
this.SaveResults.set(NormalizeUUID(c.ID), {
|
|
885
1089
|
collectionId: c.ID,
|
|
886
1090
|
collectionName: c.Name,
|
|
887
1091
|
status: 'pending'
|
|
888
1092
|
});
|
|
889
1093
|
}
|
|
890
1094
|
this.cdr.detectChanges();
|
|
891
|
-
for (const c of this.
|
|
1095
|
+
for (const c of this.SelectedCollections) {
|
|
892
1096
|
await this.saveOne(c);
|
|
893
1097
|
}
|
|
894
|
-
this.
|
|
1098
|
+
this.IsSaving = false;
|
|
895
1099
|
// Auto-close on full success
|
|
896
|
-
if (this.
|
|
1100
|
+
if (this.FailedCount === 0) {
|
|
897
1101
|
this.emitCompleted();
|
|
898
1102
|
}
|
|
899
1103
|
else {
|
|
900
|
-
this.toastService.warning(`Saved to ${this.
|
|
1104
|
+
this.toastService.warning(`Saved to ${this.SuccessCount} of ${this.SaveResults.size} collections`);
|
|
901
1105
|
this.cdr.detectChanges();
|
|
902
1106
|
}
|
|
903
1107
|
}
|
|
904
|
-
|
|
905
|
-
|
|
1108
|
+
/** @deprecated Use {@link OnSave}. */
|
|
1109
|
+
async onSave() {
|
|
1110
|
+
return this.OnSave();
|
|
1111
|
+
}
|
|
1112
|
+
async RetryFailed() {
|
|
1113
|
+
if (this.IsSaving)
|
|
906
1114
|
return;
|
|
907
1115
|
const toRetry = [];
|
|
908
|
-
for (const r of this.
|
|
1116
|
+
for (const r of this.SaveResults.values()) {
|
|
909
1117
|
if (r.status === 'error') {
|
|
910
1118
|
const c = this.collectionById.get(NormalizeUUID(r.collectionId));
|
|
911
1119
|
if (c)
|
|
@@ -914,46 +1122,54 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
914
1122
|
}
|
|
915
1123
|
if (toRetry.length === 0)
|
|
916
1124
|
return;
|
|
917
|
-
this.
|
|
1125
|
+
this.IsSaving = true;
|
|
918
1126
|
this.cdr.detectChanges();
|
|
919
1127
|
for (const c of toRetry) {
|
|
920
1128
|
await this.saveOne(c);
|
|
921
1129
|
}
|
|
922
|
-
this.
|
|
923
|
-
if (this.
|
|
1130
|
+
this.IsSaving = false;
|
|
1131
|
+
if (this.FailedCount === 0) {
|
|
924
1132
|
this.emitCompleted();
|
|
925
1133
|
}
|
|
926
1134
|
else {
|
|
927
1135
|
this.cdr.detectChanges();
|
|
928
1136
|
}
|
|
929
1137
|
}
|
|
930
|
-
|
|
931
|
-
|
|
1138
|
+
/** @deprecated Use {@link RetryFailed}. */
|
|
1139
|
+
async retryFailed() {
|
|
1140
|
+
return this.RetryFailed();
|
|
1141
|
+
}
|
|
1142
|
+
async RetryOne(collectionId) {
|
|
1143
|
+
if (this.IsSaving)
|
|
932
1144
|
return;
|
|
933
1145
|
const c = this.collectionById.get(NormalizeUUID(collectionId));
|
|
934
1146
|
if (!c)
|
|
935
1147
|
return;
|
|
936
|
-
this.
|
|
1148
|
+
this.IsSaving = true;
|
|
937
1149
|
this.cdr.detectChanges();
|
|
938
1150
|
await this.saveOne(c);
|
|
939
|
-
this.
|
|
940
|
-
if (this.
|
|
1151
|
+
this.IsSaving = false;
|
|
1152
|
+
if (this.FailedCount === 0 && this.SuccessCount === this.SaveResults.size) {
|
|
941
1153
|
this.emitCompleted();
|
|
942
1154
|
}
|
|
943
1155
|
else {
|
|
944
1156
|
this.cdr.detectChanges();
|
|
945
1157
|
}
|
|
946
1158
|
}
|
|
1159
|
+
/** @deprecated Use {@link RetryOne}. */
|
|
1160
|
+
async retryOne(collectionId) {
|
|
1161
|
+
return this.RetryOne(collectionId);
|
|
1162
|
+
}
|
|
947
1163
|
async saveOne(collection) {
|
|
948
1164
|
const key = NormalizeUUID(collection.ID);
|
|
949
|
-
const r = this.
|
|
1165
|
+
const r = this.SaveResults.get(key);
|
|
950
1166
|
if (!r)
|
|
951
1167
|
return;
|
|
952
1168
|
r.status = 'saving';
|
|
953
1169
|
r.errorMessage = undefined;
|
|
954
1170
|
this.cdr.detectChanges();
|
|
955
1171
|
try {
|
|
956
|
-
const versionId = this.
|
|
1172
|
+
const versionId = this.ArtifactVersionId;
|
|
957
1173
|
if (!versionId) {
|
|
958
1174
|
r.status = 'error';
|
|
959
1175
|
r.errorMessage = 'No artifact version selected';
|
|
@@ -968,12 +1184,12 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
968
1184
|
ExtraFilter: `CollectionID='${collection.ID}' AND ArtifactVersionID='${versionId}'`,
|
|
969
1185
|
ResultType: 'simple',
|
|
970
1186
|
Fields: ['ID']
|
|
971
|
-
}, this.
|
|
1187
|
+
}, this.CurrentUser);
|
|
972
1188
|
if (existing.Success && (existing.Results?.length ?? 0) > 0) {
|
|
973
1189
|
r.status = 'success';
|
|
974
1190
|
return;
|
|
975
1191
|
}
|
|
976
|
-
const junction = await p.GetEntityObject('MJ: Collection Artifacts', this.
|
|
1192
|
+
const junction = await p.GetEntityObject('MJ: Collection Artifacts', this.CurrentUser);
|
|
977
1193
|
junction.CollectionID = collection.ID;
|
|
978
1194
|
junction.ArtifactVersionID = versionId;
|
|
979
1195
|
junction.Sequence = 0;
|
|
@@ -996,23 +1212,27 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
996
1212
|
// Close paths
|
|
997
1213
|
// ============================================================
|
|
998
1214
|
onCancel() {
|
|
999
|
-
if (this.
|
|
1215
|
+
if (this.IsSaving)
|
|
1000
1216
|
return; // can't close while writes are in flight
|
|
1001
1217
|
// If any saves completed before cancel, treat it as completion so the viewer reloads
|
|
1002
|
-
if (this.
|
|
1218
|
+
if (this.SuccessCount > 0) {
|
|
1003
1219
|
this.emitCompleted();
|
|
1004
1220
|
}
|
|
1005
1221
|
else {
|
|
1006
1222
|
this.cancelled.emit();
|
|
1007
1223
|
}
|
|
1008
1224
|
}
|
|
1009
|
-
|
|
1225
|
+
OnAcknowledgeAndClose() {
|
|
1010
1226
|
this.emitCompleted();
|
|
1011
1227
|
}
|
|
1228
|
+
/** @deprecated Use {@link OnAcknowledgeAndClose}. */
|
|
1229
|
+
onAcknowledgeAndClose() {
|
|
1230
|
+
return this.OnAcknowledgeAndClose();
|
|
1231
|
+
}
|
|
1012
1232
|
emitCompleted() {
|
|
1013
1233
|
const successIds = [];
|
|
1014
1234
|
const failedIds = [];
|
|
1015
|
-
for (const r of this.
|
|
1235
|
+
for (const r of this.SaveResults.values()) {
|
|
1016
1236
|
if (r.status === 'success')
|
|
1017
1237
|
successIds.push(r.collectionId);
|
|
1018
1238
|
else if (r.status === 'error')
|
|
@@ -1025,9 +1245,9 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
1025
1245
|
i0.ɵɵviewQuery(_c0, 5)(_c1, 5);
|
|
1026
1246
|
} if (rf & 2) {
|
|
1027
1247
|
let _t;
|
|
1028
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
|
1029
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
|
1030
|
-
} }, inputs: { isOpen: "isOpen", environmentId: "environmentId", currentUser: "currentUser", excludeCollectionIds: "excludeCollectionIds", artifactVersionId: "artifactVersionId", artifactName: "artifactName", artifactVersionNumber: "artifactVersionNumber" }, outputs: { completed: "completed", cancelled: "cancelled" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["searchInput", ""], ["newNameInput", ""], ["Title", "Save to Collection", 3, "Visible", "Width", "MinWidth"], ["Title", "Save to Collection", 3, "Close", "Visible", "Width", "MinWidth"], [1, "picker-shell"], [1, "pane", "pane-left"], [1, "toolbar"], [1, "search"], [1, "fa-solid", "fa-magnifying-glass"], ["type", "text", "placeholder", "Search collections\u2026", 3, "ngModelChange", "ngModel", "disabled"], ["title", "Clear", 1, "search-clear"], [1, "chip-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-user-pen"], [1, "fa-solid", "fa-clock"], [1, "tree-wrap"], [1, "state-block"], [1, "state-block", "error"], [1, "state-block", "muted"], ["role", "tree", 1, "tree"], [1, "pane", "pane-right"], [1, "preview-block"], [1, "block-label"], [1, "preview-card"], [1, "preview-thumb"], [1, "fa-solid", "fa-file-lines"], [1, "preview-meta"], [1, "preview-name", 3, "title"], [1, "badge", "neutral"], [1, "chips-block"], [1, "chips"], [1, "chips-empty"], [1, "footnote"], [1, "fa-solid", "fa-shield-halved"], ["mjButton", "", "variant", "primary"], ["title", "Clear", 1, "search-clear", 3, "click"], [1, "fa-solid", "fa-xmark"], ["text", "Loading collections\u2026", "size", "medium"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "link-btn", 3, "click"], [1, "fa-solid", "fa-folder-open"], [1, "empty-create-form"], ["type", "text", "placeholder", "Collection name", 1, "create-input", 3, "ngModelChange", "keydown.enter", "keydown.escape", "ngModel", "disabled"], [1, "empty-create-actions"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", "size", "sm", 3, "click", "disabled"], [1, "hint"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["role", "treeitem", 1, "row", 3, "selected", "already", "padding-left"], [1, "row", "create-row"], [1, "row", "create-form-row"], ["role", "treeitem", 1, "row", 3, "click"], [1, "caret", 3, "click"], [1, "fa-solid", 3, "fa-chevron-down", "fa-chevron-right"], [1, "check"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-folder", "folder-icon"], [1, "row-title"], [1, "row-ancestry"], [1, "row-tag", "success"], [1, "fa-solid"], [1, "row", "create-row", 3, "click"], [1, "caret"], [1, "check", "dashed"], [1, "block-count"], [1, "chip", "result", 3, "success", "error", "saving"], [1, "chip", "result"], [1, "chip-status"], [1, "fa-solid", "fa-circle"], [1, "chip-body"], [1, "chip-name"], [1, "chip-error"], ["title", "Retry", 1, "chip-action"], ["title", "Retry", 1, "chip-action", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "chip"], ["title", "Remove", 1, "chip-action", 3, "click", "disabled"], [1, "fa-solid", "fa-hand-pointer"], ["mjButton", "", "variant", "primary", 3, "click"], ["mjButton", "", 3, "click"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-bookmark"]], template: function ArtifactCollectionPickerModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1248
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.SearchInputRef = _t.first);
|
|
1249
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.NewNameInputRef = _t.first);
|
|
1250
|
+
} }, inputs: { IsOpen: "IsOpen", isOpen: "isOpen", EnvironmentId: "EnvironmentId", environmentId: "environmentId", CurrentUser: "CurrentUser", currentUser: "currentUser", ExcludeCollectionIds: "ExcludeCollectionIds", excludeCollectionIds: "excludeCollectionIds", ArtifactVersionId: "ArtifactVersionId", artifactVersionId: "artifactVersionId", ArtifactName: "ArtifactName", artifactName: "artifactName", ArtifactVersionNumber: "ArtifactVersionNumber", artifactVersionNumber: "artifactVersionNumber" }, outputs: { completed: "completed", cancelled: "cancelled" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["searchInput", ""], ["newNameInput", ""], ["Title", "Save to Collection", 3, "Visible", "Width", "MinWidth"], ["Title", "Save to Collection", 3, "Close", "Visible", "Width", "MinWidth"], [1, "picker-shell"], [1, "pane", "pane-left"], [1, "toolbar"], [1, "search"], [1, "fa-solid", "fa-magnifying-glass"], ["type", "text", "placeholder", "Search collections\u2026", 3, "ngModelChange", "ngModel", "disabled"], ["title", "Clear", 1, "search-clear"], [1, "chip-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-user-pen"], [1, "fa-solid", "fa-clock"], [1, "tree-wrap"], [1, "state-block"], [1, "state-block", "error"], [1, "state-block", "muted"], ["role", "tree", 1, "tree"], [1, "pane", "pane-right"], [1, "preview-block"], [1, "block-label"], [1, "preview-card"], [1, "preview-thumb"], [1, "fa-solid", "fa-file-lines"], [1, "preview-meta"], [1, "preview-name", 3, "title"], [1, "badge", "neutral"], [1, "chips-block"], [1, "chips"], [1, "chips-empty"], [1, "footnote"], [1, "fa-solid", "fa-shield-halved"], ["mjButton", "", "variant", "primary"], ["title", "Clear", 1, "search-clear", 3, "click"], [1, "fa-solid", "fa-xmark"], ["text", "Loading collections\u2026", "size", "medium"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "link-btn", 3, "click"], [1, "fa-solid", "fa-folder-open"], [1, "empty-create-form"], ["type", "text", "placeholder", "Collection name", 1, "create-input", 3, "ngModelChange", "keydown.enter", "keydown.escape", "ngModel", "disabled"], [1, "empty-create-actions"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], ["mjButton", "", "size", "sm", 3, "click", "disabled"], [1, "hint"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["role", "treeitem", 1, "row", 3, "selected", "already", "padding-left"], [1, "row", "create-row"], [1, "row", "create-form-row"], ["role", "treeitem", 1, "row", 3, "click"], [1, "caret", 3, "click"], [1, "fa-solid", 3, "fa-chevron-down", "fa-chevron-right"], [1, "check"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-folder", "folder-icon"], [1, "row-title"], [1, "row-ancestry"], [1, "row-tag", "success"], [1, "fa-solid"], [1, "row", "create-row", 3, "click"], [1, "caret"], [1, "check", "dashed"], [1, "block-count"], [1, "chip", "result", 3, "success", "error", "saving"], [1, "chip", "result"], [1, "chip-status"], [1, "fa-solid", "fa-circle"], [1, "chip-body"], [1, "chip-name"], [1, "chip-error"], ["title", "Retry", 1, "chip-action"], ["title", "Retry", 1, "chip-action", 3, "click"], [1, "fa-solid", "fa-rotate-right"], [1, "chip"], ["title", "Remove", 1, "chip-action", 3, "click", "disabled"], [1, "fa-solid", "fa-hand-pointer"], ["mjButton", "", "variant", "primary", 3, "click"], ["mjButton", "", 3, "click"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], ["mjButton", "", 3, "click", "disabled"], [1, "fa-solid", "fa-bookmark"]], template: function ArtifactCollectionPickerModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
1031
1251
|
i0.ɵɵconditionalCreate(0, ArtifactCollectionPickerModalComponent_Conditional_0_Template, 45, 19, "mj-dialog", 2);
|
|
1032
1252
|
} if (rf & 2) {
|
|
1033
1253
|
i0.ɵɵconditional(ctx.isOpen ? 0 : -1);
|
|
@@ -1328,28 +1548,42 @@ export class ArtifactCollectionPickerModalComponent extends BaseAngularComponent
|
|
|
1328
1548
|
</mj-dialog>
|
|
1329
1549
|
}
|
|
1330
1550
|
`, styles: ["\n /* ===== Shell ===== */\n .picker-shell {\n display: grid;\n grid-template-columns: 1fr 300px;\n min-height: 460px;\n max-height: 70vh;\n gap: 0;\n margin: -8px -4px 0;\n }\n .pane { display:flex; flex-direction:column; min-height: 0; }\n .pane-left { border-right: 1px solid var(--mj-border-subtle); }\n .pane-right { background: var(--mj-bg-surface-card); }\n\n /* ===== Toolbar / search / chip filters ===== */\n .toolbar {\n display:flex; gap: 8px; padding: 10px 12px;\n border-bottom: 1px solid var(--mj-border-subtle);\n flex-wrap: wrap;\n }\n .search {\n flex: 1; min-width: 200px;\n display:flex; align-items:center; gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid transparent;\n border-radius: 8px;\n transition: all .15s ease;\n }\n .search:focus-within {\n background: var(--mj-bg-surface);\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 18%, transparent);\n }\n .search i { color: var(--mj-text-muted); font-size: 13px; }\n .search input {\n flex: 1; border: 0; outline: 0; background: transparent;\n font-size: 13.5px; color: var(--mj-text-primary);\n min-width: 0;\n }\n .search input::placeholder { color: var(--mj-text-disabled); }\n .search-clear {\n background: transparent; border: 0; cursor: pointer;\n color: var(--mj-text-muted); padding: 2px 4px; border-radius: 4px;\n }\n .search-clear:hover { color: var(--mj-text-primary); background: var(--mj-bg-surface-hover); }\n\n .chip-btn {\n display:inline-flex; align-items:center; gap: 6px;\n padding: 7px 11px; border-radius: 8px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n font-size: 12.5px; font-weight: 600; cursor: pointer;\n transition: all .15s ease;\n }\n .chip-btn:hover:not(:disabled) { background: var(--mj-bg-surface-hover); color: var(--mj-text-primary); }\n .chip-btn.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n .chip-btn:disabled { opacity: .55; cursor: not-allowed; }\n\n /* ===== Tree ===== */\n .tree-wrap { flex: 1; overflow-y: auto; padding: 8px 8px 16px; }\n .tree { display:flex; flex-direction: column; gap: 1px; }\n .row {\n display:flex; align-items:center; gap: 10px;\n padding: 7px 12px; border-radius: 8px; cursor: pointer;\n user-select: none;\n border: 1px solid transparent;\n background: transparent;\n text-align: left;\n transition: background .12s ease;\n min-height: 36px;\n }\n .row:hover { background: var(--mj-bg-surface-hover); }\n .row.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 9%, var(--mj-bg-surface));\n border-color: color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n .row.already { cursor: default; }\n .row.already:hover { background: transparent; }\n .row.already .row-title { color: var(--mj-text-secondary); }\n\n .caret {\n width: 16px; flex-shrink: 0; text-align: center;\n color: var(--mj-text-muted); font-size: 10px;\n cursor: pointer;\n }\n .caret:hover { color: var(--mj-text-primary); }\n\n .check {\n width: 18px; height: 18px; border-radius: 5px;\n border: 1.5px solid var(--mj-border-strong);\n background: var(--mj-bg-surface);\n display:flex; align-items:center; justify-content:center;\n color: transparent; font-size: 10px; flex-shrink: 0;\n transition: all .12s ease;\n }\n .check.checked {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: #fff;\n }\n .check.locked {\n background: var(--mj-status-success);\n border-color: var(--mj-status-success);\n color: #fff;\n }\n .check.dashed {\n border-style: dashed;\n color: var(--mj-text-muted);\n }\n\n .folder-icon { font-size: 14px; flex-shrink: 0; }\n\n .row-title {\n flex: 1; font-size: 13.5px; font-weight: 600;\n color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .row-ancestry {\n font-weight: 500; color: var(--mj-text-muted); font-size: 12px;\n margin-left: 2px;\n }\n .row-tag {\n font-size: 11px; font-weight: 600; padding: 2px 8px;\n border-radius: 999px; flex-shrink: 0;\n }\n .row-tag.success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n }\n\n .create-row {\n width: 100%;\n border: 1.5px dashed var(--mj-border-strong);\n color: var(--mj-text-secondary);\n margin-top: 8px;\n background: transparent;\n }\n .create-row .row-title { color: var(--mj-text-secondary); font-weight: 600; }\n .create-row:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 4%, var(--mj-bg-surface));\n }\n .create-row:hover .row-title { color: var(--mj-brand-primary); }\n\n .create-form-row {\n margin-top: 8px;\n border: 1.5px solid var(--mj-border-focus);\n background: var(--mj-bg-surface);\n cursor: default;\n gap: 8px;\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n }\n .create-input {\n flex: 1; min-width: 0;\n padding: 7px 10px;\n font-size: 13.5px; color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n border: 1.5px solid var(--mj-border-strong);\n border-radius: 6px;\n outline: 0;\n transition: all .12s ease;\n }\n .create-input::placeholder {\n color: var(--mj-text-muted);\n }\n .create-input:focus {\n border-color: var(--mj-border-focus);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n }\n\n /* ===== State blocks ===== */\n .state-block {\n display:flex; flex-direction:column; align-items:center; justify-content:center;\n padding: 48px 24px; gap: 8px; color: var(--mj-text-muted);\n text-align: center;\n }\n .state-block i { font-size: 28px; opacity: .6; }\n .state-block.error { color: var(--mj-status-error-text); }\n .state-block .hint { font-size: 12.5px; color: var(--mj-text-disabled); margin: 0; }\n .state-block .link-btn {\n background: transparent; border: 0; color: var(--mj-text-link);\n font-weight: 600; cursor: pointer; font-size: 13px; padding: 6px 12px;\n }\n .state-block .link-btn:hover { color: var(--mj-text-link-hover); text-decoration: underline; }\n .state-block p { margin: 0; font-size: 13.5px; }\n /* Buttons inside state blocks: keep their icons at button scale, not the 28px empty-state glyph size */\n .state-block button i { font-size: inherit; opacity: 1; }\n .empty-create-form {\n display: flex; flex-direction: column; gap: 8px;\n width: 100%; max-width: 280px; margin-top: 4px;\n }\n .empty-create-actions { display: flex; gap: 8px; justify-content: center; }\n\n /* ===== Right pane ===== */\n .preview-block { padding: 16px 18px; border-bottom: 1px solid var(--mj-border-subtle); }\n .block-label {\n font-size: 11px; text-transform: uppercase; letter-spacing: .08em;\n font-weight: 700; color: var(--mj-text-muted); margin-bottom: 8px;\n display:flex; justify-content:space-between; align-items:center;\n }\n .block-count {\n color: var(--mj-brand-primary); font-size: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n padding: 2px 8px; border-radius: 999px;\n }\n .preview-card {\n display:flex; gap: 12px; align-items:center;\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default);\n border-radius: 10px; padding: 12px;\n box-shadow: 0 1px 2px rgba(15,23,42,.04);\n }\n .preview-thumb {\n width: 38px; height: 38px; border-radius: 9px; flex-shrink: 0;\n background: linear-gradient(135deg, var(--mj-color-accent-400), var(--mj-brand-primary));\n color: #fff; display:flex; align-items:center; justify-content:center;\n font-size: 14px;\n }\n .preview-meta { flex: 1; min-width: 0; display:flex; flex-direction: column; gap: 4px; }\n .preview-name {\n font-weight: 700; font-size: 13.5px; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .badge {\n display:inline-flex; align-items:center; gap: 4px;\n padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 600;\n width: fit-content;\n }\n .badge.neutral {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n }\n\n .chips-block { flex: 1; min-height: 0; display:flex; flex-direction: column;\n padding: 16px 18px 8px; overflow-y: auto; }\n .chips { display:flex; flex-direction: column; gap: 6px; }\n .chip {\n display:flex; align-items:center; gap: 10px; padding: 8px 10px;\n background: var(--mj-bg-surface); border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n }\n .chip-body { flex: 1; min-width: 0; }\n .chip-name {\n font-weight: 600; font-size: 13px; color: var(--mj-text-primary);\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .chip-error {\n font-size: 11.5px; color: var(--mj-status-error-text); margin-top: 2px;\n white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\n }\n .chip-action {\n width: 24px; height: 24px; border-radius: 6px;\n background: transparent; border: 0; cursor: pointer;\n color: var(--mj-text-muted); font-size: 11px;\n display:flex; align-items:center; justify-content:center;\n }\n .chip-action:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover); color: var(--mj-text-primary);\n }\n .chip-action:disabled { opacity: .4; cursor: not-allowed; }\n .chip-status {\n width: 20px; flex-shrink: 0; text-align: center; font-size: 12px;\n }\n .chip.result.success { border-color: color-mix(in srgb, var(--mj-status-success) 35%, transparent);\n background: var(--mj-status-success-bg); }\n .chip.result.success .chip-status { color: var(--mj-status-success-text); }\n .chip.result.error { border-color: color-mix(in srgb, var(--mj-status-error) 35%, transparent);\n background: var(--mj-status-error-bg); }\n .chip.result.error .chip-status { color: var(--mj-status-error-text); }\n .chip.result.saving .chip-status { color: var(--mj-brand-primary); }\n\n .chips-empty {\n flex: 1; display:flex; flex-direction: column; align-items: center; justify-content: center;\n padding: 32px 16px; text-align: center; color: var(--mj-text-muted);\n border: 1.5px dashed var(--mj-border-default); border-radius: 10px;\n }\n .chips-empty i { font-size: 22px; margin-bottom: 8px; opacity: .55; }\n .chips-empty p { margin: 0; font-size: 12.5px; }\n\n .footnote {\n padding: 12px 18px;\n font-size: 11.5px; color: var(--mj-text-muted);\n display:flex; align-items:center; gap: 6px;\n border-top: 1px solid var(--mj-border-subtle);\n }\n .footnote i { font-size: 11px; }\n\n /* Tighten dialog content padding so panes meet edges cleanly */\n :host ::ng-deep mj-dialog .k-window-content,\n :host ::ng-deep mj-dialog .mj-dialog-content {\n padding: 0 !important;\n }\n "] }]
|
|
1331
|
-
}], () => [{ type: i1.ToastService }, { type: i2.CollectionPermissionService }, { type: i0.ChangeDetectorRef }], {
|
|
1551
|
+
}], () => [{ type: i1.ToastService }, { type: i2.CollectionPermissionService }, { type: i0.ChangeDetectorRef }], { IsOpen: [{
|
|
1552
|
+
type: Input
|
|
1553
|
+
}], isOpen: [{
|
|
1554
|
+
type: Input
|
|
1555
|
+
}], EnvironmentId: [{
|
|
1332
1556
|
type: Input
|
|
1333
1557
|
}], environmentId: [{
|
|
1334
1558
|
type: Input
|
|
1559
|
+
}], CurrentUser: [{
|
|
1560
|
+
type: Input
|
|
1335
1561
|
}], currentUser: [{
|
|
1336
1562
|
type: Input
|
|
1563
|
+
}], ExcludeCollectionIds: [{
|
|
1564
|
+
type: Input
|
|
1337
1565
|
}], excludeCollectionIds: [{
|
|
1338
1566
|
type: Input
|
|
1567
|
+
}], ArtifactVersionId: [{
|
|
1568
|
+
type: Input
|
|
1339
1569
|
}], artifactVersionId: [{
|
|
1340
1570
|
type: Input
|
|
1571
|
+
}], ArtifactName: [{
|
|
1572
|
+
type: Input
|
|
1341
1573
|
}], artifactName: [{
|
|
1342
1574
|
type: Input
|
|
1575
|
+
}], ArtifactVersionNumber: [{
|
|
1576
|
+
type: Input
|
|
1343
1577
|
}], artifactVersionNumber: [{
|
|
1344
1578
|
type: Input
|
|
1345
1579
|
}], completed: [{
|
|
1346
1580
|
type: Output
|
|
1347
1581
|
}], cancelled: [{
|
|
1348
1582
|
type: Output
|
|
1349
|
-
}],
|
|
1583
|
+
}], SearchInputRef: [{
|
|
1350
1584
|
type: ViewChild,
|
|
1351
1585
|
args: ['searchInput']
|
|
1352
|
-
}],
|
|
1586
|
+
}], NewNameInputRef: [{
|
|
1353
1587
|
type: ViewChild,
|
|
1354
1588
|
args: ['newNameInput']
|
|
1355
1589
|
}] }); })();
|