@memberjunction/ng-conversations 5.43.0 → 5.44.0
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/dist/lib/components/active-tasks/active-tasks-panel.component.d.ts +0 -1
- 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 +56 -52
- package/dist/lib/components/active-tasks/active-tasks-panel.component.js.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +37 -41
- package/dist/lib/components/artifact/artifact-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-form-modal.component.js +10 -14
- package/dist/lib/components/collection/collection-form-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +41 -45
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +22 -36
- package/dist/lib/components/collection/collection-view.component.js.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.d.ts +4 -0
- package/dist/lib/components/collection/collections-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collections-full-view.component.js +134 -166
- package/dist/lib/components/collection/collections-full-view.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +73 -8
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +487 -123
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/pinned-messages-panel.component.js +6 -9
- package/dist/lib/components/conversation/pinned-messages-panel.component.js.map +1 -1
- package/dist/lib/components/library/library-full-view.component.d.ts.map +1 -1
- package/dist/lib/components/library/library-full-view.component.js +20 -24
- package/dist/lib/components/library/library-full-view.component.js.map +1 -1
- package/dist/lib/components/members/members-modal.component.d.ts.map +1 -1
- package/dist/lib/components/members/members-modal.component.js +10 -11
- package/dist/lib/components/members/members-modal.component.js.map +1 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +49 -28
- package/dist/lib/components/mention/mention-dropdown.component.js.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.d.ts.map +1 -1
- package/dist/lib/components/mention/mention-editor.component.js +24 -10
- package/dist/lib/components/mention/mention-editor.component.js.map +1 -1
- package/dist/lib/components/message/message-input-box.component.d.ts +11 -16
- package/dist/lib/components/message/message-input-box.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input-box.component.js +52 -46
- package/dist/lib/components/message/message-input-box.component.js.map +1 -1
- package/dist/lib/components/message/message-input.component.d.ts +83 -18
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +238 -151
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +10 -1
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +67 -15
- package/dist/lib/components/message/message-item.component.js.map +1 -1
- package/dist/lib/components/message/message-list.component.js +6 -9
- package/dist/lib/components/message/message-list.component.js.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.d.ts +3 -0
- package/dist/lib/components/overlay/chat-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/overlay/chat-overlay.component.js +9 -4
- package/dist/lib/components/overlay/chat-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts +45 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.d.ts.map +1 -1
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js +10 -0
- package/dist/lib/components/realtime/channels/base-realtime-channel-client.js.map +1 -1
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts +46 -0
- package/dist/lib/components/realtime/channels/client-context-channel.d.ts.map +1 -0
- package/dist/lib/components/realtime/channels/client-context-channel.js +174 -0
- package/dist/lib/components/realtime/channels/client-context-channel.js.map +1 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts +123 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.d.ts.map +1 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js +397 -0
- package/dist/lib/components/realtime/evidence-playback/realtime-evidence-playback.component.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts +103 -0
- package/dist/lib/components/realtime/media/media-channel-state.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-state.js +143 -0
- package/dist/lib/components/realtime/media/media-channel-state.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-tools.d.ts +24 -0
- package/dist/lib/components/realtime/media/media-channel-tools.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel-tools.js +107 -0
- package/dist/lib/components/realtime/media/media-channel-tools.js.map +1 -0
- package/dist/lib/components/realtime/media/media-channel.d.ts +89 -0
- package/dist/lib/components/realtime/media/media-channel.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/media-channel.js +253 -0
- package/dist/lib/components/realtime/media/media-channel.js.map +1 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts +141 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.d.ts.map +1 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js +574 -0
- package/dist/lib/components/realtime/media/realtime-media-surface.component.js.map +1 -0
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts +59 -14
- package/dist/lib/components/realtime/realtime-activity-rail.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-activity-rail.component.js +277 -74
- package/dist/lib/components/realtime/realtime-activity-rail.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts +28 -27
- package/dist/lib/components/realtime/realtime-agent-banner.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-banner.component.js +144 -143
- package/dist/lib/components/realtime/realtime-agent-banner.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts +12 -0
- package/dist/lib/components/realtime/realtime-agent-picker.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-agent-picker.component.js +105 -43
- package/dist/lib/components/realtime/realtime-agent-picker.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-audio-visuals.d.ts +2 -2
- package/dist/lib/components/realtime/realtime-audio-visuals.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-audio-visuals.js.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.d.ts +41 -7
- package/dist/lib/components/realtime/realtime-composer.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-composer.component.js +216 -102
- package/dist/lib/components/realtime/realtime-composer.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts +0 -2
- package/dist/lib/components/realtime/realtime-delegation-card.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-delegation-card.component.js +67 -71
- package/dist/lib/components/realtime/realtime-delegation-card.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts +364 -44
- package/dist/lib/components/realtime/realtime-session-overlay.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-overlay.component.js +839 -153
- package/dist/lib/components/realtime/realtime-session-overlay.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.d.ts +5 -5
- package/dist/lib/components/realtime/realtime-session-state.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-session-state.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts +70 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.js +115 -0
- package/dist/lib/components/realtime/realtime-surface-tab-style.js.map +1 -0
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts +55 -57
- package/dist/lib/components/realtime/realtime-surface-tabs.component.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js +165 -143
- package/dist/lib/components/realtime/realtime-surface-tabs.component.js.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts +80 -71
- package/dist/lib/components/realtime/realtime-surface-tabs.model.d.ts.map +1 -1
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js +83 -113
- package/dist/lib/components/realtime/realtime-surface-tabs.model.js.map +1 -1
- package/dist/lib/components/realtime/realtime-ui-config.d.ts +270 -0
- package/dist/lib/components/realtime/realtime-ui-config.d.ts.map +1 -0
- package/dist/lib/components/realtime/realtime-ui-config.js +212 -0
- package/dist/lib/components/realtime/realtime-ui-config.js.map +1 -0
- package/dist/lib/components/search/search-panel.component.d.ts +2 -0
- package/dist/lib/components/search/search-panel.component.d.ts.map +1 -1
- package/dist/lib/components/search/search-panel.component.js +92 -101
- package/dist/lib/components/search/search-panel.component.js.map +1 -1
- package/dist/lib/components/share/share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/share/share-modal.component.js +10 -11
- package/dist/lib/components/share/share-modal.component.js.map +1 -1
- package/dist/lib/components/shared/user-picker.component.d.ts.map +1 -1
- package/dist/lib/components/shared/user-picker.component.js +12 -15
- package/dist/lib/components/shared/user-picker.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +5 -0
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +18 -7
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/conversations.module.d.ts +29 -26
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +37 -6
- package/dist/lib/conversations.module.js.map +1 -1
- package/dist/lib/models/conversation-state.model.d.ts +6 -3
- 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/services/conversation-agent.service.d.ts +2 -2
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +6 -2
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts +17 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.js +58 -2
- package/dist/lib/services/mention-autocomplete.service.js.map +1 -1
- package/dist/lib/services/realtime-audio-recorder.d.ts +143 -0
- package/dist/lib/services/realtime-audio-recorder.d.ts.map +1 -0
- package/dist/lib/services/realtime-audio-recorder.js +379 -0
- package/dist/lib/services/realtime-audio-recorder.js.map +1 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts +75 -0
- package/dist/lib/services/realtime-pcm-wav.d.ts.map +1 -0
- package/dist/lib/services/realtime-pcm-wav.js +205 -0
- package/dist/lib/services/realtime-pcm-wav.js.map +1 -0
- package/dist/lib/services/realtime-session-review.service.d.ts +28 -1
- package/dist/lib/services/realtime-session-review.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session-review.service.js +12 -3
- package/dist/lib/services/realtime-session-review.service.js.map +1 -1
- package/dist/lib/services/realtime-session.service.d.ts +210 -20
- package/dist/lib/services/realtime-session.service.d.ts.map +1 -1
- package/dist/lib/services/realtime-session.service.js +452 -21
- package/dist/lib/services/realtime-session.service.js.map +1 -1
- package/dist/lib/services/realtime-sessions-adapter.js +1 -1
- package/dist/lib/services/realtime-sessions-adapter.js.map +1 -1
- package/dist/lib/services/ui-command-handler.service.d.ts +7 -2
- package/dist/lib/services/ui-command-handler.service.d.ts.map +1 -1
- package/dist/lib/services/ui-command-handler.service.js +6 -2
- package/dist/lib/services/ui-command-handler.service.js.map +1 -1
- package/dist/lib/utils/plan-mode-preference.d.ts +62 -0
- package/dist/lib/utils/plan-mode-preference.d.ts.map +1 -0
- package/dist/lib/utils/plan-mode-preference.js +130 -0
- package/dist/lib/utils/plan-mode-preference.js.map +1 -0
- package/dist/public-api.d.ts +6 -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 +28 -26
- package/dist/__tests__/attachment-badge.test.d.ts +0 -2
- package/dist/__tests__/attachment-badge.test.d.ts.map +0 -1
- package/dist/__tests__/attachment-badge.test.js +0 -66
- package/dist/__tests__/attachment-badge.test.js.map +0 -1
- package/dist/__tests__/channel-optional-surface.test.d.ts +0 -2
- package/dist/__tests__/channel-optional-surface.test.d.ts.map +0 -1
- package/dist/__tests__/channel-optional-surface.test.js +0 -53
- package/dist/__tests__/channel-optional-surface.test.js.map +0 -1
- package/dist/__tests__/chat-events.test.d.ts +0 -14
- package/dist/__tests__/chat-events.test.d.ts.map +0 -1
- package/dist/__tests__/chat-events.test.js +0 -109
- package/dist/__tests__/chat-events.test.js.map +0 -1
- package/dist/__tests__/collections-full-view.test.d.ts +0 -2
- package/dist/__tests__/collections-full-view.test.d.ts.map +0 -1
- package/dist/__tests__/collections-full-view.test.js +0 -225
- package/dist/__tests__/collections-full-view.test.js.map +0 -1
- package/dist/__tests__/conversation-cache.test.d.ts +0 -2
- package/dist/__tests__/conversation-cache.test.d.ts.map +0 -1
- package/dist/__tests__/conversation-cache.test.js +0 -233
- package/dist/__tests__/conversation-cache.test.js.map +0 -1
- package/dist/__tests__/conversation-naming.test.d.ts +0 -2
- package/dist/__tests__/conversation-naming.test.d.ts.map +0 -1
- package/dist/__tests__/conversation-naming.test.js +0 -110
- package/dist/__tests__/conversation-naming.test.js.map +0 -1
- package/dist/__tests__/delegation-result-parser.test.d.ts +0 -2
- package/dist/__tests__/delegation-result-parser.test.d.ts.map +0 -1
- package/dist/__tests__/delegation-result-parser.test.js +0 -107
- package/dist/__tests__/delegation-result-parser.test.js.map +0 -1
- package/dist/__tests__/distinct-artifacts.test.d.ts +0 -2
- package/dist/__tests__/distinct-artifacts.test.d.ts.map +0 -1
- package/dist/__tests__/distinct-artifacts.test.js +0 -56
- package/dist/__tests__/distinct-artifacts.test.js.map +0 -1
- package/dist/__tests__/event-wiring.test.d.ts +0 -15
- package/dist/__tests__/event-wiring.test.d.ts.map +0 -1
- package/dist/__tests__/event-wiring.test.js +0 -100
- package/dist/__tests__/event-wiring.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -7
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/__tests__/narration-template.test.d.ts +0 -2
- package/dist/__tests__/narration-template.test.d.ts.map +0 -1
- package/dist/__tests__/narration-template.test.js +0 -76
- package/dist/__tests__/narration-template.test.js.map +0 -1
- package/dist/__tests__/notification-model.test.d.ts +0 -2
- package/dist/__tests__/notification-model.test.d.ts.map +0 -1
- package/dist/__tests__/notification-model.test.js +0 -68
- package/dist/__tests__/notification-model.test.js.map +0 -1
- package/dist/__tests__/realtime-agent-picker-models.test.d.ts +0 -2
- package/dist/__tests__/realtime-agent-picker-models.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-agent-picker-models.test.js +0 -49
- package/dist/__tests__/realtime-agent-picker-models.test.js.map +0 -1
- package/dist/__tests__/realtime-audio-visuals.test.d.ts +0 -2
- package/dist/__tests__/realtime-audio-visuals.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-audio-visuals.test.js +0 -123
- package/dist/__tests__/realtime-audio-visuals.test.js.map +0 -1
- package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts +0 -2
- package/dist/__tests__/realtime-delegation-card-cancel.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-delegation-card-cancel.test.js +0 -48
- package/dist/__tests__/realtime-delegation-card-cancel.test.js.map +0 -1
- package/dist/__tests__/realtime-disclosure.test.d.ts +0 -2
- package/dist/__tests__/realtime-disclosure.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-disclosure.test.js +0 -164
- package/dist/__tests__/realtime-disclosure.test.js.map +0 -1
- package/dist/__tests__/realtime-pairing.test.d.ts +0 -2
- package/dist/__tests__/realtime-pairing.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-pairing.test.js +0 -207
- package/dist/__tests__/realtime-pairing.test.js.map +0 -1
- package/dist/__tests__/realtime-review-lifecycle.test.d.ts +0 -2
- package/dist/__tests__/realtime-review-lifecycle.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-review-lifecycle.test.js +0 -154
- package/dist/__tests__/realtime-review-lifecycle.test.js.map +0 -1
- package/dist/__tests__/realtime-session-cancel-usage.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-cancel-usage.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-cancel-usage.test.js +0 -230
- package/dist/__tests__/realtime-session-cancel-usage.test.js.map +0 -1
- package/dist/__tests__/realtime-session-channels.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-channels.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-channels.test.js +0 -252
- package/dist/__tests__/realtime-session-channels.test.js.map +0 -1
- package/dist/__tests__/realtime-session-client-tools.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-client-tools.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-client-tools.test.js +0 -103
- package/dist/__tests__/realtime-session-client-tools.test.js.map +0 -1
- package/dist/__tests__/realtime-session-minimized.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-minimized.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-minimized.test.js +0 -32
- package/dist/__tests__/realtime-session-minimized.test.js.map +0 -1
- package/dist/__tests__/realtime-session-mint.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-mint.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-mint.test.js +0 -69
- package/dist/__tests__/realtime-session-mint.test.js.map +0 -1
- package/dist/__tests__/realtime-session-policy.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-policy.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-policy.test.js +0 -303
- package/dist/__tests__/realtime-session-policy.test.js.map +0 -1
- package/dist/__tests__/realtime-session-review.service.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-review.service.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-review.service.test.js +0 -743
- package/dist/__tests__/realtime-session-review.service.test.js.map +0 -1
- package/dist/__tests__/realtime-session-state.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-state.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-state.test.js +0 -83
- package/dist/__tests__/realtime-session-state.test.js.map +0 -1
- package/dist/__tests__/realtime-session-timeline-card.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-timeline-card.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-timeline-card.test.js +0 -106
- package/dist/__tests__/realtime-session-timeline-card.test.js.map +0 -1
- package/dist/__tests__/realtime-session-timeline.test.d.ts +0 -2
- package/dist/__tests__/realtime-session-timeline.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-session-timeline.test.js +0 -142
- package/dist/__tests__/realtime-session-timeline.test.js.map +0 -1
- package/dist/__tests__/realtime-sessions-adapter.test.d.ts +0 -19
- package/dist/__tests__/realtime-sessions-adapter.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-sessions-adapter.test.js +0 -188
- package/dist/__tests__/realtime-sessions-adapter.test.js.map +0 -1
- package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts +0 -2
- package/dist/__tests__/realtime-surface-panel-prefs.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-surface-panel-prefs.test.js +0 -100
- package/dist/__tests__/realtime-surface-panel-prefs.test.js.map +0 -1
- package/dist/__tests__/realtime-surface-tabs-model.test.d.ts +0 -2
- package/dist/__tests__/realtime-surface-tabs-model.test.d.ts.map +0 -1
- package/dist/__tests__/realtime-surface-tabs-model.test.js +0 -193
- package/dist/__tests__/realtime-surface-tabs-model.test.js.map +0 -1
- package/dist/__tests__/remote-browser-audio-player.test.d.ts +0 -2
- package/dist/__tests__/remote-browser-audio-player.test.d.ts.map +0 -1
- package/dist/__tests__/remote-browser-audio-player.test.js +0 -137
- package/dist/__tests__/remote-browser-audio-player.test.js.map +0 -1
- package/dist/__tests__/remote-browser-channel.test.d.ts +0 -2
- package/dist/__tests__/remote-browser-channel.test.d.ts.map +0 -1
- package/dist/__tests__/remote-browser-channel.test.js +0 -585
- package/dist/__tests__/remote-browser-channel.test.js.map +0 -1
- package/dist/__tests__/search-service.test.d.ts +0 -2
- package/dist/__tests__/search-service.test.d.ts.map +0 -1
- package/dist/__tests__/search-service.test.js +0 -114
- package/dist/__tests__/search-service.test.js.map +0 -1
- package/dist/__tests__/slot-defaults.test.d.ts +0 -24
- package/dist/__tests__/slot-defaults.test.d.ts.map +0 -1
- package/dist/__tests__/slot-defaults.test.js +0 -63
- package/dist/__tests__/slot-defaults.test.js.map +0 -1
- package/dist/__tests__/toast-service.test.d.ts +0 -2
- package/dist/__tests__/toast-service.test.d.ts.map +0 -1
- package/dist/__tests__/toast-service.test.js +0 -143
- package/dist/__tests__/toast-service.test.js.map +0 -1
- package/dist/__tests__/user-authorization.test.d.ts +0 -2
- package/dist/__tests__/user-authorization.test.d.ts.map +0 -1
- package/dist/__tests__/user-authorization.test.js +0 -97
- package/dist/__tests__/user-authorization.test.js.map +0 -1
- package/dist/__tests__/voice-session-narration.test.d.ts +0 -2
- package/dist/__tests__/voice-session-narration.test.d.ts.map +0 -1
- package/dist/__tests__/voice-session-narration.test.js +0 -609
- package/dist/__tests__/voice-session-narration.test.js.map +0 -1
- package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-artifact-viewer.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-artifact-viewer.test.js +0 -101
- package/dist/__tests__/whiteboard-artifact-viewer.test.js.map +0 -1
- package/dist/__tests__/whiteboard-channel.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-channel.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-channel.test.js +0 -260
- package/dist/__tests__/whiteboard-channel.test.js.map +0 -1
- package/dist/__tests__/whiteboard-restore-state.test.d.ts +0 -2
- package/dist/__tests__/whiteboard-restore-state.test.d.ts.map +0 -1
- package/dist/__tests__/whiteboard-restore-state.test.js +0 -108
- package/dist/__tests__/whiteboard-restore-state.test.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
2
|
import { FormsModule } from '@angular/forms';
|
|
3
|
-
import { MJWindowComponent, MJButtonDirective } from '@memberjunction/ng-ui-components';
|
|
3
|
+
import { MJWindowComponent, MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';
|
|
4
4
|
import { UserPickerComponent } from '../shared/user-picker.component';
|
|
5
5
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -109,14 +109,10 @@ function CollectionShareModalComponent_Conditional_0_Conditional_7_Template(rf,
|
|
|
109
109
|
i0.ɵɵproperty("disabled", !ctx_r1.selectedUser);
|
|
110
110
|
} }
|
|
111
111
|
function CollectionShareModalComponent_Conditional_0_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
112
|
-
i0.ɵɵ
|
|
113
|
-
i0.ɵɵelement(1, "i", 34);
|
|
114
|
-
i0.ɵɵelementStart(2, "p");
|
|
115
|
-
i0.ɵɵtext(3, "Not shared with anyone yet");
|
|
116
|
-
i0.ɵɵelementEnd()();
|
|
112
|
+
i0.ɵɵelement(0, "mj-empty-state", 10);
|
|
117
113
|
} }
|
|
118
114
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
119
|
-
i0.ɵɵelementStart(0, "span",
|
|
115
|
+
i0.ɵɵelementStart(0, "span", 37);
|
|
120
116
|
i0.ɵɵtext(1);
|
|
121
117
|
i0.ɵɵelementEnd();
|
|
122
118
|
} if (rf & 2) {
|
|
@@ -125,31 +121,31 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
125
121
|
i0.ɵɵtextInterpolate1("shared by ", permission_r7.sharedByUserName);
|
|
126
122
|
} }
|
|
127
123
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
-
i0.ɵɵelementStart(0, "span",
|
|
124
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
129
125
|
i0.ɵɵelement(1, "i", 31);
|
|
130
126
|
i0.ɵɵtext(2, " Share ");
|
|
131
127
|
i0.ɵɵelementEnd();
|
|
132
128
|
} }
|
|
133
129
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
-
i0.ɵɵelementStart(0, "span",
|
|
130
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
135
131
|
i0.ɵɵelement(1, "i", 32);
|
|
136
132
|
i0.ɵɵtext(2, " Edit ");
|
|
137
133
|
i0.ɵɵelementEnd();
|
|
138
134
|
} }
|
|
139
135
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
-
i0.ɵɵelementStart(0, "span",
|
|
136
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
141
137
|
i0.ɵɵelement(1, "i", 33);
|
|
142
138
|
i0.ɵɵtext(2, " Delete ");
|
|
143
139
|
i0.ɵɵelementEnd();
|
|
144
140
|
} }
|
|
145
141
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
-
i0.ɵɵelementStart(0, "div",
|
|
142
|
+
i0.ɵɵelementStart(0, "div", 38)(1, "span", 41);
|
|
147
143
|
i0.ɵɵelement(2, "i", 24);
|
|
148
144
|
i0.ɵɵtext(3, " Read ");
|
|
149
145
|
i0.ɵɵelementEnd();
|
|
150
|
-
i0.ɵɵconditionalCreate(4, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_4_Template, 3, 0, "span",
|
|
151
|
-
i0.ɵɵconditionalCreate(5, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_5_Template, 3, 0, "span",
|
|
152
|
-
i0.ɵɵconditionalCreate(6, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_6_Template, 3, 0, "span",
|
|
146
|
+
i0.ɵɵconditionalCreate(4, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_4_Template, 3, 0, "span", 41);
|
|
147
|
+
i0.ɵɵconditionalCreate(5, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_5_Template, 3, 0, "span", 41);
|
|
148
|
+
i0.ɵɵconditionalCreate(6, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_6_Template, 3, 0, "span", 41);
|
|
153
149
|
i0.ɵɵelementEnd();
|
|
154
150
|
} if (rf & 2) {
|
|
155
151
|
const permission_r7 = i0.ɵɵnextContext().$implicit;
|
|
@@ -162,7 +158,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
162
158
|
} }
|
|
163
159
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
164
160
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
165
|
-
i0.ɵɵelementStart(0, "label",
|
|
161
|
+
i0.ɵɵelementStart(0, "label", 43)(1, "input", 30);
|
|
166
162
|
i0.ɵɵtwoWayListener("ngModelChange", function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_5_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r8); const permission_r7 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵtwoWayBindingSet(permission_r7.editingPermissions.canShare, $event) || (permission_r7.editingPermissions.canShare = $event); return i0.ɵɵresetView($event); });
|
|
167
163
|
i0.ɵɵelementEnd();
|
|
168
164
|
i0.ɵɵelementStart(2, "span");
|
|
@@ -175,7 +171,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
175
171
|
} }
|
|
176
172
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
177
173
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
178
|
-
i0.ɵɵelementStart(0, "label",
|
|
174
|
+
i0.ɵɵelementStart(0, "label", 43)(1, "input", 30);
|
|
179
175
|
i0.ɵɵtwoWayListener("ngModelChange", function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_6_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r9); const permission_r7 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵtwoWayBindingSet(permission_r7.editingPermissions.canEdit, $event) || (permission_r7.editingPermissions.canEdit = $event); return i0.ɵɵresetView($event); });
|
|
180
176
|
i0.ɵɵelementEnd();
|
|
181
177
|
i0.ɵɵelementStart(2, "span");
|
|
@@ -188,7 +184,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
188
184
|
} }
|
|
189
185
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
190
186
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
191
|
-
i0.ɵɵelementStart(0, "label",
|
|
187
|
+
i0.ɵɵelementStart(0, "label", 43)(1, "input", 30);
|
|
192
188
|
i0.ɵɵtwoWayListener("ngModelChange", function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_7_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const permission_r7 = i0.ɵɵnextContext(2).$implicit; i0.ɵɵtwoWayBindingSet(permission_r7.editingPermissions.canDelete, $event) || (permission_r7.editingPermissions.canDelete = $event); return i0.ɵɵresetView($event); });
|
|
193
189
|
i0.ɵɵelementEnd();
|
|
194
190
|
i0.ɵɵelementStart(2, "span");
|
|
@@ -200,14 +196,14 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
200
196
|
i0.ɵɵtwoWayProperty("ngModel", permission_r7.editingPermissions.canDelete);
|
|
201
197
|
} }
|
|
202
198
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
-
i0.ɵɵelementStart(0, "div",
|
|
199
|
+
i0.ɵɵelementStart(0, "div", 39)(1, "label", 42);
|
|
204
200
|
i0.ɵɵelement(2, "input", 22);
|
|
205
201
|
i0.ɵɵelementStart(3, "span");
|
|
206
202
|
i0.ɵɵtext(4, "Read");
|
|
207
203
|
i0.ɵɵelementEnd()();
|
|
208
|
-
i0.ɵɵconditionalCreate(5, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_5_Template, 4, 1, "label",
|
|
209
|
-
i0.ɵɵconditionalCreate(6, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_6_Template, 4, 1, "label",
|
|
210
|
-
i0.ɵɵconditionalCreate(7, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_7_Template, 4, 1, "label",
|
|
204
|
+
i0.ɵɵconditionalCreate(5, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_5_Template, 4, 1, "label", 43);
|
|
205
|
+
i0.ɵɵconditionalCreate(6, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_6_Template, 4, 1, "label", 43);
|
|
206
|
+
i0.ɵɵconditionalCreate(7, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_7_Template, 4, 1, "label", 43);
|
|
211
207
|
i0.ɵɵelementEnd();
|
|
212
208
|
} if (rf & 2) {
|
|
213
209
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -222,28 +218,28 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
222
218
|
} }
|
|
223
219
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
224
220
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
225
|
-
i0.ɵɵelementStart(0, "button",
|
|
221
|
+
i0.ɵɵelementStart(0, "button", 44);
|
|
226
222
|
i0.ɵɵlistener("click", function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const permission_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onEditPermission(permission_r7)); });
|
|
227
|
-
i0.ɵɵelement(1, "i",
|
|
223
|
+
i0.ɵɵelement(1, "i", 45);
|
|
228
224
|
i0.ɵɵelementEnd();
|
|
229
|
-
i0.ɵɵelementStart(2, "button",
|
|
225
|
+
i0.ɵɵelementStart(2, "button", 46);
|
|
230
226
|
i0.ɵɵlistener("click", function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_1_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r11); const permission_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onRevokePermission(permission_r7)); });
|
|
231
|
-
i0.ɵɵelement(3, "i",
|
|
227
|
+
i0.ɵɵelement(3, "i", 47);
|
|
232
228
|
i0.ɵɵelementEnd();
|
|
233
229
|
} }
|
|
234
230
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
235
231
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
236
|
-
i0.ɵɵelementStart(0, "button",
|
|
232
|
+
i0.ɵɵelementStart(0, "button", 48);
|
|
237
233
|
i0.ɵɵlistener("click", function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const permission_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onSavePermission(permission_r7)); });
|
|
238
|
-
i0.ɵɵelement(1, "i",
|
|
234
|
+
i0.ɵɵelement(1, "i", 49);
|
|
239
235
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵelementStart(2, "button",
|
|
236
|
+
i0.ɵɵelementStart(2, "button", 50);
|
|
241
237
|
i0.ɵɵlistener("click", function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r12); const permission_r7 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.onCancelEdit(permission_r7)); });
|
|
242
|
-
i0.ɵɵelement(3, "i",
|
|
238
|
+
i0.ɵɵelement(3, "i", 47);
|
|
243
239
|
i0.ɵɵelementEnd();
|
|
244
240
|
} }
|
|
245
241
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
246
|
-
i0.ɵɵelementStart(0, "div",
|
|
242
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
247
243
|
i0.ɵɵconditionalCreate(1, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_1_Template, 4, 0)(2, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_2_Template, 4, 0);
|
|
248
244
|
i0.ɵɵelementEnd();
|
|
249
245
|
} if (rf & 2) {
|
|
@@ -252,17 +248,17 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
252
248
|
i0.ɵɵconditional(!permission_r7.isEditing ? 1 : 2);
|
|
253
249
|
} }
|
|
254
250
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
255
|
-
i0.ɵɵelementStart(0, "div",
|
|
251
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 15);
|
|
256
252
|
i0.ɵɵelement(2, "i", 16);
|
|
257
253
|
i0.ɵɵelementEnd();
|
|
258
|
-
i0.ɵɵelementStart(3, "div",
|
|
254
|
+
i0.ɵɵelementStart(3, "div", 35)(4, "div", 36)(5, "span", 18);
|
|
259
255
|
i0.ɵɵtext(6);
|
|
260
256
|
i0.ɵɵelementEnd();
|
|
261
|
-
i0.ɵɵconditionalCreate(7, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_7_Template, 2, 1, "span",
|
|
257
|
+
i0.ɵɵconditionalCreate(7, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_7_Template, 2, 1, "span", 37);
|
|
262
258
|
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵconditionalCreate(8, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Template, 7, 3, "div",
|
|
259
|
+
i0.ɵɵconditionalCreate(8, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Template, 7, 3, "div", 38)(9, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Template, 8, 4, "div", 39);
|
|
264
260
|
i0.ɵɵelementEnd();
|
|
265
|
-
i0.ɵɵconditionalCreate(10, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Template, 3, 1, "div",
|
|
261
|
+
i0.ɵɵconditionalCreate(10, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Template, 3, 1, "div", 40);
|
|
266
262
|
i0.ɵɵelementEnd();
|
|
267
263
|
} if (rf & 2) {
|
|
268
264
|
const permission_r7 = ctx.$implicit;
|
|
@@ -278,7 +274,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Templa
|
|
|
278
274
|
} }
|
|
279
275
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
280
276
|
i0.ɵɵelementStart(0, "div", 11);
|
|
281
|
-
i0.ɵɵrepeaterCreate(1, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Template, 11, 4, "div",
|
|
277
|
+
i0.ɵɵrepeaterCreate(1, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Template, 11, 4, "div", 34, _forTrack0);
|
|
282
278
|
i0.ɵɵelementEnd();
|
|
283
279
|
} if (rf & 2) {
|
|
284
280
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -302,7 +298,7 @@ function CollectionShareModalComponent_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
302
298
|
i0.ɵɵelement(10, "i", 9);
|
|
303
299
|
i0.ɵɵtext(11);
|
|
304
300
|
i0.ɵɵelementEnd();
|
|
305
|
-
i0.ɵɵconditionalCreate(12, CollectionShareModalComponent_Conditional_0_Conditional_12_Template,
|
|
301
|
+
i0.ɵɵconditionalCreate(12, CollectionShareModalComponent_Conditional_0_Conditional_12_Template, 1, 0, "mj-empty-state", 10)(13, CollectionShareModalComponent_Conditional_0_Conditional_13_Template, 3, 0, "div", 11);
|
|
306
302
|
i0.ɵɵelementEnd()();
|
|
307
303
|
i0.ɵɵelementStart(14, "div", 12)(15, "button", 13);
|
|
308
304
|
i0.ɵɵlistener("click", function CollectionShareModalComponent_Conditional_0_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
@@ -507,15 +503,15 @@ export class CollectionShareModalComponent {
|
|
|
507
503
|
this.cancelled.emit();
|
|
508
504
|
}
|
|
509
505
|
static ɵfac = function CollectionShareModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionShareModalComponent)(i0.ɵɵdirectiveInject(i1.CollectionPermissionService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
510
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionShareModalComponent, selectors: [["mj-collection-share-modal"]], inputs: { isOpen: "isOpen", collection: "collection", currentUser: "currentUser", currentUserPermissions: "currentUserPermissions" }, outputs: { saved: "saved", cancelled: "cancelled" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [3, "Close", "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [1, "share-modal-content"], [1, "add-user-section"], [1, "section-title"], [1, "fa-solid", "fa-user-plus"], [3, "userSelected", "currentUser", "excludeUserIds"], [1, "permissions-form"], [1, "permissions-list-section"], [1, "fa-solid", "fa-users"], [
|
|
506
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionShareModalComponent, selectors: [["mj-collection-share-modal"]], inputs: { isOpen: "isOpen", collection: "collection", currentUser: "currentUser", currentUserPermissions: "currentUserPermissions" }, outputs: { saved: "saved", cancelled: "cancelled" }, features: [i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[3, "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [3, "Close", "Title", "Width", "Height", "MinWidth", "MinHeight", "Visible"], [1, "share-modal-content"], [1, "add-user-section"], [1, "section-title"], [1, "fa-solid", "fa-user-plus"], [3, "userSelected", "currentUser", "excludeUserIds"], [1, "permissions-form"], [1, "permissions-list-section"], [1, "fa-solid", "fa-users"], ["Icon", "fa-solid fa-user-slash", "Title", "Not shared with anyone yet", "Size", "compact"], [1, "permissions-list"], [1, "modal-actions"], ["mjButton", "", 3, "click"], [1, "selected-user-info"], [1, "user-avatar"], [1, "fa-solid", "fa-user"], [1, "user-details"], [1, "user-name"], [1, "user-email"], [1, "permissions-grid"], [1, "permission-checkbox", "disabled"], ["type", "checkbox", "disabled", "", 3, "checked"], [1, "permission-label"], [1, "fa-solid", "fa-eye"], [1, "permission-desc"], [1, "permission-checkbox"], [1, "form-actions"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "fa-solid", "fa-plus"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "fa-solid", "fa-share-nodes"], [1, "fa-solid", "fa-pen-to-square"], [1, "fa-solid", "fa-trash"], [1, "permission-item"], [1, "permission-details"], [1, "permission-user"], [1, "shared-by"], [1, "permission-badges"], [1, "permissions-edit-grid"], [1, "permission-actions"], [1, "permission-badge"], [1, "permission-checkbox-small", "disabled"], [1, "permission-checkbox-small"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Remove", 3, "click"], [1, "fa-solid", "fa-xmark"], ["mjButton", "", "variant", "success", "size", "sm", "title", "Save", 3, "click"], [1, "fa-solid", "fa-check"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Cancel", 3, "click"]], template: function CollectionShareModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
511
507
|
i0.ɵɵconditionalCreate(0, CollectionShareModalComponent_Conditional_0_Template, 17, 11, "mj-window", 0);
|
|
512
508
|
} if (rf & 2) {
|
|
513
509
|
i0.ɵɵconditional(ctx.isOpen && ctx.collection ? 0 : -1);
|
|
514
|
-
} }, dependencies: [FormsModule, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, MJWindowComponent, MJButtonDirective, UserPickerComponent], styles: [".share-modal-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.add-user-section[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 24px;\n}\n\n.selected-user-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 16px 0;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n}\n\n.user-avatar[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.user-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n.user-details[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.user-details[_ngcontent-%COMP%] .user-email[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.permissions-form[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.permissions-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px;\n margin: 16px 0;\n}\n\n.permission-checkbox[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.permission-checkbox[_ngcontent-%COMP%]:hover:not(.disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox.disabled[_ngcontent-%COMP%] {\n opacity: 0.6;\n cursor: not-allowed;\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n margin-right: 8px;\n}\n.permission-checkbox[_ngcontent-%COMP%] .permission-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-checkbox[_ngcontent-%COMP%] .permission-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n.permission-checkbox[_ngcontent-%COMP%] .permission-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-left: 28px;\n}\n\n.form-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 16px;\n}\n\n.permissions-list-section[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.permissions-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.permission-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: background 0.2s;\n}\n.permission-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.permission-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.permission-user[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.permission-user[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-user[_ngcontent-%COMP%] .shared-by[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.permission-badges[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n}\n.permission-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.permissions-edit-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.permission-checkbox-small[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n cursor: pointer;\n}\n.permission-checkbox-small.disabled[_ngcontent-%COMP%] {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.permission-checkbox-small[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n margin: 0;\n}\n.permission-checkbox-small[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n}\n\n.permission-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.
|
|
510
|
+
} }, dependencies: [FormsModule, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, UserPickerComponent], styles: [".share-modal-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n}\n\n.section-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.add-user-section[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 24px;\n}\n\n.selected-user-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 16px 0;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n}\n\n.user-avatar[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.user-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n.user-details[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.user-details[_ngcontent-%COMP%] .user-email[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.permissions-form[_ngcontent-%COMP%] {\n margin-top: 16px;\n}\n\n.permissions-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px;\n margin: 16px 0;\n}\n\n.permission-checkbox[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.permission-checkbox[_ngcontent-%COMP%]:hover:not(.disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox.disabled[_ngcontent-%COMP%] {\n opacity: 0.6;\n cursor: not-allowed;\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n margin-right: 8px;\n}\n.permission-checkbox[_ngcontent-%COMP%] .permission-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-checkbox[_ngcontent-%COMP%] .permission-label[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n.permission-checkbox[_ngcontent-%COMP%] .permission-desc[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-left: 28px;\n}\n\n.form-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 16px;\n}\n\n.permissions-list-section[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.permissions-list[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.permission-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: background 0.2s;\n}\n.permission-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.permission-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.permission-user[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.permission-user[_ngcontent-%COMP%] .user-name[_ngcontent-%COMP%] {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-user[_ngcontent-%COMP%] .shared-by[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.permission-badges[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.permission-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n}\n.permission-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.permissions-edit-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.permission-checkbox-small[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n cursor: pointer;\n}\n.permission-checkbox-small.disabled[_ngcontent-%COMP%] {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.permission-checkbox-small[_ngcontent-%COMP%] input[type=checkbox][_ngcontent-%COMP%] {\n margin: 0;\n}\n.permission-checkbox-small[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n}\n\n.permission-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary) !important;\n color: var(--mj-text-inverse) !important;\n border: none !important;\n padding: 8px 16px;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.btn-primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover) !important;\n}\n.btn-primary[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface) !important;\n color: var(--mj-text-secondary) !important;\n border: 1px solid var(--mj-border-default) !important;\n padding: 8px 16px;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n}\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken) !important;\n border-color: var(--mj-border-strong) !important;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n padding: 0;\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n}\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n.btn-icon.btn-success[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n border-color: var(--mj-status-success);\n}\n.btn-icon.btn-success[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-success-bg);\n}\n.btn-icon.btn-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: var(--mj-status-error);\n}\n.btn-icon.btn-danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error-bg);\n}\n.btn-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.modal-actions[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-end;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n}"] });
|
|
515
511
|
}
|
|
516
512
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionShareModalComponent, [{
|
|
517
513
|
type: Component,
|
|
518
|
-
args: [{ selector: 'mj-collection-share-modal', standalone: true, imports: [FormsModule, MJWindowComponent, MJButtonDirective, UserPickerComponent], template: `
|
|
514
|
+
args: [{ selector: 'mj-collection-share-modal', standalone: true, imports: [FormsModule, MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, UserPickerComponent], template: `
|
|
519
515
|
@if (isOpen && collection) {
|
|
520
516
|
<mj-window
|
|
521
517
|
[Title]="'Share: ' + collection.Name"
|
|
@@ -617,10 +613,10 @@ export class CollectionShareModalComponent {
|
|
|
617
613
|
</h3>
|
|
618
614
|
|
|
619
615
|
@if (permissions.length === 0) {
|
|
620
|
-
<
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
616
|
+
<mj-empty-state
|
|
617
|
+
Icon="fa-solid fa-user-slash"
|
|
618
|
+
Title="Not shared with anyone yet"
|
|
619
|
+
Size="compact" />
|
|
624
620
|
} @else {
|
|
625
621
|
<div class="permissions-list">
|
|
626
622
|
@for (permission of permissions; track permission.id) {
|
|
@@ -716,7 +712,7 @@ export class CollectionShareModalComponent {
|
|
|
716
712
|
</div>
|
|
717
713
|
</mj-window>
|
|
718
714
|
}
|
|
719
|
-
`, styles: [".share-modal-content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n.section-title i {\n color: var(--mj-brand-primary);\n}\n\n.add-user-section {\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 24px;\n}\n\n.selected-user-info {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 16px 0;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n}\n\n.user-avatar {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.user-details {\n flex: 1;\n min-width: 0;\n}\n.user-details .user-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.user-details .user-email {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.permissions-form {\n margin-top: 16px;\n}\n\n.permissions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px;\n margin: 16px 0;\n}\n\n.permission-checkbox {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.permission-checkbox:hover:not(.disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox.disabled {\n opacity: 0.6;\n cursor: not-allowed;\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox input[type=checkbox] {\n margin-right: 8px;\n}\n.permission-checkbox .permission-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-checkbox .permission-label i {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n.permission-checkbox .permission-desc {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-left: 28px;\n}\n\n.form-actions {\n display: flex;\n gap: 8px;\n margin-top: 16px;\n}\n\n.permissions-list-section {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.permissions-list {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.permission-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: background 0.2s;\n}\n.permission-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.permission-details {\n flex: 1;\n min-width: 0;\n}\n\n.permission-user {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.permission-user .user-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-user .shared-by {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.permission-badges {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n}\n.permission-badge i {\n font-size: 10px;\n}\n\n.permissions-edit-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.permission-checkbox-small {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n cursor: pointer;\n}\n.permission-checkbox-small.disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.permission-checkbox-small input[type=checkbox] {\n margin: 0;\n}\n.permission-checkbox-small span {\n color: var(--mj-text-primary);\n}\n\n.permission-actions {\n display: flex;\n gap: 4px;\n}\n\n.
|
|
715
|
+
`, styles: [".share-modal-content {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding: 20px;\n height: 100%;\n overflow-y: auto;\n}\n\n.section-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n.section-title i {\n color: var(--mj-brand-primary);\n}\n\n.add-user-section {\n border-bottom: 1px solid var(--mj-border-default);\n padding-bottom: 24px;\n}\n\n.selected-user-info {\n display: flex;\n align-items: center;\n gap: 12px;\n margin: 16px 0;\n padding: 12px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n}\n\n.user-avatar {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: var(--mj-brand-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 16px;\n flex-shrink: 0;\n}\n\n.user-details {\n flex: 1;\n min-width: 0;\n}\n.user-details .user-name {\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.user-details .user-email {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 2px;\n}\n\n.permissions-form {\n margin-top: 16px;\n}\n\n.permissions-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\n gap: 12px;\n margin: 16px 0;\n}\n\n.permission-checkbox {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n}\n.permission-checkbox:hover:not(.disabled) {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox.disabled {\n opacity: 0.6;\n cursor: not-allowed;\n background: var(--mj-bg-surface-sunken);\n}\n.permission-checkbox input[type=checkbox] {\n margin-right: 8px;\n}\n.permission-checkbox .permission-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-checkbox .permission-label i {\n color: var(--mj-brand-primary);\n font-size: 12px;\n}\n.permission-checkbox .permission-desc {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-left: 28px;\n}\n\n.form-actions {\n display: flex;\n gap: 8px;\n margin-top: 16px;\n}\n\n.permissions-list-section {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.permissions-list {\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.permission-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n transition: background 0.2s;\n}\n.permission-item:hover {\n background: var(--mj-bg-surface-sunken);\n}\n\n.permission-details {\n flex: 1;\n min-width: 0;\n}\n\n.permission-user {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.permission-user .user-name {\n font-weight: 500;\n color: var(--mj-text-primary);\n font-size: 14px;\n}\n.permission-user .shared-by {\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.permission-badges {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n}\n\n.permission-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 4px;\n font-size: 12px;\n font-weight: 500;\n}\n.permission-badge i {\n font-size: 10px;\n}\n\n.permissions-edit-grid {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.permission-checkbox-small {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n cursor: pointer;\n}\n.permission-checkbox-small.disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.permission-checkbox-small input[type=checkbox] {\n margin: 0;\n}\n.permission-checkbox-small span {\n color: var(--mj-text-primary);\n}\n\n.permission-actions {\n display: flex;\n gap: 4px;\n}\n\n.btn-primary {\n background: var(--mj-brand-primary) !important;\n color: var(--mj-text-inverse) !important;\n border: none !important;\n padding: 8px 16px;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover) !important;\n}\n.btn-primary:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.btn-primary i {\n font-size: 12px;\n}\n\n.btn-secondary {\n background: var(--mj-bg-surface) !important;\n color: var(--mj-text-secondary) !important;\n border: 1px solid var(--mj-border-default) !important;\n padding: 8px 16px;\n border-radius: 6px;\n font-weight: 500;\n cursor: pointer;\n}\n.btn-secondary:hover {\n background: var(--mj-bg-surface-sunken) !important;\n border-color: var(--mj-border-strong) !important;\n}\n\n.btn-icon {\n width: 32px;\n height: 32px;\n padding: 0;\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s;\n}\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n.btn-icon.btn-success {\n color: var(--mj-status-success);\n border-color: var(--mj-status-success);\n}\n.btn-icon.btn-success:hover {\n background: var(--mj-status-success-bg);\n}\n.btn-icon.btn-danger {\n color: var(--mj-status-error);\n border-color: var(--mj-status-error);\n}\n.btn-icon.btn-danger:hover {\n background: var(--mj-status-error-bg);\n}\n.btn-icon i {\n font-size: 14px;\n}\n\n.modal-actions {\n display: flex;\n justify-content: flex-end;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n}\n"] }]
|
|
720
716
|
}], () => [{ type: i1.CollectionPermissionService }, { type: i0.ChangeDetectorRef }], { isOpen: [{
|
|
721
717
|
type: Input
|
|
722
718
|
}], collection: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-share-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-share-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MJWindowComponent, MJButtonDirective } from '@memberjunction/ng-ui-components';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { CollectionPermissionService, CollectionPermission, PermissionSet } from '../../services/collection-permission.service';\nimport { UserPickerComponent, UserSearchResult } from '../shared/user-picker.component';\nimport { UUIDsEqual } from '@memberjunction/global';\n\ninterface PermissionDisplay extends CollectionPermission {\n isEditing: boolean;\n editingPermissions: PermissionSet;\n}\n\n@Component({\n selector: 'mj-collection-share-modal',\n standalone: true,\n imports: [FormsModule, MJWindowComponent, MJButtonDirective, UserPickerComponent],\n template: `\n @if (isOpen && collection) {\n <mj-window\n [Title]=\"'Share: ' + collection.Name\"\n [Width]=\"600\"\n [Height]=\"500\"\n [MinWidth]=\"400\"\n [MinHeight]=\"400\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\"\n >\n <div class=\"share-modal-content\">\n <!-- Add User Section -->\n <div class=\"add-user-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-user-plus\"></i>\n Share with User\n </h3>\n\n <mj-user-picker\n [currentUser]=\"currentUser\"\n [excludeUserIds]=\"getExcludedUserIds()\"\n (userSelected)=\"onUserSelected($event)\"\n ></mj-user-picker>\n\n @if (selectedUser) {\n <div class=\"permissions-form\">\n <div class=\"selected-user-info\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"user-details\">\n <div class=\"user-name\">{{ selectedUser.name }}</div>\n <div class=\"user-email\">{{ selectedUser.email }}</div>\n </div>\n </div>\n\n <div class=\"permissions-grid\">\n <label class=\"permission-checkbox disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-eye\"></i>\n Read\n </span>\n <span class=\"permission-desc\">View collection and artifacts</span>\n </label>\n\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canShare\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Share\n </span>\n <span class=\"permission-desc\">Share with others</span>\n </label>\n }\n\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canEdit\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Edit\n </span>\n <span class=\"permission-desc\">Add/remove artifacts</span>\n </label>\n }\n\n @if (availablePermissions.includes('Delete')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canDelete\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </span>\n <span class=\"permission-desc\">Delete collection</span>\n </label>\n }\n </div>\n\n <div class=\"form-actions\">\n <button mjButton variant=\"primary\" (click)=\"onAddUser()\" [disabled]=\"!selectedUser\">\n <i class=\"fa-solid fa-plus\"></i>\n Add User\n </button>\n <button mjButton (click)=\"onClearSelection()\">\n Cancel\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Current Permissions Section -->\n <div class=\"permissions-list-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-users\"></i>\n Shared With ({{ permissions.length }})\n </h3>\n\n @if (permissions.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-user-slash\"></i>\n <p>Not shared with anyone yet</p>\n </div>\n } @else {\n <div class=\"permissions-list\">\n @for (permission of permissions; track permission.id) {\n <div class=\"permission-item\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"permission-details\">\n <div class=\"permission-user\">\n <span class=\"user-name\">{{ permission.userName }}</span>\n @if (permission.sharedByUserName) {\n <span class=\"shared-by\">shared by {{ permission.sharedByUserName }}</span>\n }\n </div>\n\n @if (!permission.isEditing) {\n <div class=\"permission-badges\">\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-eye\"></i> Read\n </span>\n @if (permission.canShare) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-share-nodes\"></i> Share\n </span>\n }\n @if (permission.canEdit) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-pen-to-square\"></i> Edit\n </span>\n }\n @if (permission.canDelete) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-trash\"></i> Delete\n </span>\n }\n </div>\n } @else {\n <div class=\"permissions-edit-grid\">\n <label class=\"permission-checkbox-small disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span>Read</span>\n </label>\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canShare\">\n <span>Share</span>\n </label>\n }\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canEdit\">\n <span>Edit</span>\n </label>\n }\n @if (availablePermissions.includes('Delete')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canDelete\">\n <span>Delete</span>\n </label>\n }\n </div>\n }\n </div>\n\n @if (canModifyPermissions) {\n <div class=\"permission-actions\">\n @if (!permission.isEditing) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onEditPermission(permission)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button mjButton variant=\"danger\" size=\"sm\" (click)=\"onRevokePermission(permission)\" title=\"Remove\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n } @else {\n <button mjButton variant=\"success\" size=\"sm\" (click)=\"onSavePermission(permission)\" title=\"Save\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onCancelEdit(permission)\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"modal-actions\">\n <button mjButton (click)=\"onCancel()\">Close</button>\n </div>\n </mj-window>\n }\n `,\n styleUrls: ['./collection-share-modal.component.css']\n})\nexport class CollectionShareModalComponent implements OnInit, OnChanges {\n @Input() isOpen: boolean = false;\n @Input() collection: MJCollectionEntity | null = null;\n @Input() currentUser!: UserInfo;\n @Input() currentUserPermissions: CollectionPermission | null = null;\n\n @Output() saved = new EventEmitter<void>();\n @Output() cancelled = new EventEmitter<void>();\n\n permissions: PermissionDisplay[] = [];\n selectedUser: UserSearchResult | null = null;\n availablePermissions: string[] = [];\n canModifyPermissions: boolean = false;\n\n newPermissions: PermissionSet = {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n constructor(\n private permissionService: CollectionPermissionService,\n private cdr: ChangeDetectorRef\n ) {}\n\n async ngOnInit(): Promise<void> {\n if (this.collection) {\n await this.loadPermissions();\n this.updateAvailablePermissions();\n this.cdr.detectChanges(); // zone.js 0.15: sync changes after async don't trigger CD\n }\n }\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n // Reload permissions when modal opens or collection/permissions change\n const modalOpened = changes['isOpen']?.currentValue === true && changes['isOpen']?.previousValue === false;\n const collectionChanged = changes['collection'] && !changes['collection'].isFirstChange();\n const permissionsChanged = changes['currentUserPermissions'] && !changes['currentUserPermissions'].isFirstChange();\n\n if ((modalOpened || collectionChanged || permissionsChanged) && this.collection) {\n await this.loadPermissions();\n this.updateAvailablePermissions();\n this.cdr.detectChanges(); // zone.js 0.15: sync changes after async don't trigger CD\n }\n }\n\n private async loadPermissions(): Promise<void> {\n if (!this.collection) return;\n\n const perms = await this.permissionService.loadPermissions(this.collection.ID, this.currentUser);\n this.permissions = perms.map(p => ({\n ...p,\n isEditing: false,\n editingPermissions: {\n canRead: p.canRead,\n canShare: p.canShare,\n canEdit: p.canEdit,\n canDelete: p.canDelete\n }\n }));\n this.cdr.detectChanges();\n }\n\n private updateAvailablePermissions(): void {\n // User is owner if:\n // 1. OwnerID is null/undefined (backwards compatibility with old collections)\n // 2. OwnerID matches current user ID\n const isOwner = !this.collection?.OwnerID || UUIDsEqual(this.collection.OwnerID, this.currentUser.ID);\n\n // Allow modification if user is owner OR has Share permission\n this.canModifyPermissions = isOwner || (this.currentUserPermissions?.canShare || false);\n\n const userPerms = this.currentUserPermissions || {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n this.availablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);\n console.log('Share modal permissions:', {\n collectionId: this.collection?.ID,\n ownerId: this.collection?.OwnerID,\n currentUserId: this.currentUser.ID,\n isOwner,\n availablePermissions: this.availablePermissions\n });\n }\n\n getExcludedUserIds(): string[] {\n const ids = this.permissions.map(p => p.userId);\n ids.push(this.currentUser.ID); // Can't share with yourself\n if (this.collection?.OwnerID) {\n ids.push(this.collection.OwnerID); // Owner already has all permissions\n }\n return ids;\n }\n\n onUserSelected(user: UserSearchResult): void {\n this.selectedUser = user;\n this.cdr.detectChanges();\n }\n\n onClearSelection(): void {\n this.selectedUser = null;\n this.newPermissions = {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n this.cdr.detectChanges();\n }\n\n async onAddUser(): Promise<void> {\n if (!this.selectedUser || !this.collection) return;\n\n try {\n // User is owner if OwnerID is null (old collections) or matches current user\n const isOwner = !this.collection.OwnerID || UUIDsEqual(this.collection.OwnerID, this.currentUser.ID);\n const userPerms = this.currentUserPermissions || {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(this.newPermissions, userPerms, isOwner)) {\n alert('You cannot grant permissions you do not have');\n return;\n }\n\n // Use cascade grant to apply permissions to all child collections\n await this.permissionService.grantPermissionCascade(\n this.collection.ID,\n this.selectedUser.id,\n this.newPermissions,\n this.currentUser.ID,\n this.currentUser\n );\n\n await this.loadPermissions();\n this.onClearSelection();\n this.saved.emit();\n } catch (error) {\n console.error('Error adding user:', error);\n alert('Failed to add user. Please try again.');\n }\n }\n\n onEditPermission(permission: PermissionDisplay): void {\n permission.isEditing = true;\n this.cdr.detectChanges();\n }\n\n onCancelEdit(permission: PermissionDisplay): void {\n permission.isEditing = false;\n permission.editingPermissions = {\n canRead: permission.canRead,\n canShare: permission.canShare,\n canEdit: permission.canEdit,\n canDelete: permission.canDelete\n };\n this.cdr.detectChanges();\n }\n\n async onSavePermission(permission: PermissionDisplay): Promise<void> {\n try {\n // User is owner if OwnerID is null (old collections) or matches current user\n const isOwner = !this.collection?.OwnerID || UUIDsEqual(this.collection?.OwnerID, this.currentUser.ID);\n const userPerms = this.currentUserPermissions || {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(permission.editingPermissions, userPerms, isOwner)) {\n alert('You cannot grant permissions you do not have');\n return;\n }\n\n // Use cascade update to apply changes to all child collections\n await this.permissionService.updatePermissionCascade(\n this.collection!.ID,\n permission.userId,\n permission.editingPermissions,\n this.currentUser\n );\n\n await this.loadPermissions();\n this.saved.emit();\n } catch (error) {\n console.error('Error updating permission:', error);\n alert('Failed to update permissions. Please try again.');\n }\n }\n\n async onRevokePermission(permission: PermissionDisplay): Promise<void> {\n if (!confirm(`Remove ${permission.userName}'s access to this collection and all its child collections?`)) {\n return;\n }\n\n try {\n // Use cascade revoke to remove access from all child collections\n await this.permissionService.revokePermissionCascade(\n this.collection!.ID,\n permission.userId,\n this.currentUser\n );\n await this.loadPermissions();\n this.saved.emit();\n } catch (error) {\n console.error('Error revoking permission:', error);\n alert('Failed to revoke permission. Please try again.');\n }\n }\n\n onCancel(): void {\n this.cancelled.emit();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"collection-share-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-share-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { MJWindowComponent, MJButtonDirective, MJEmptyStateComponent } from '@memberjunction/ng-ui-components';\nimport { UserInfo } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { CollectionPermissionService, CollectionPermission, PermissionSet } from '../../services/collection-permission.service';\nimport { UserPickerComponent, UserSearchResult } from '../shared/user-picker.component';\nimport { UUIDsEqual } from '@memberjunction/global';\n\ninterface PermissionDisplay extends CollectionPermission {\n isEditing: boolean;\n editingPermissions: PermissionSet;\n}\n\n@Component({\n selector: 'mj-collection-share-modal',\n standalone: true,\n imports: [FormsModule, MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, UserPickerComponent],\n template: `\n @if (isOpen && collection) {\n <mj-window\n [Title]=\"'Share: ' + collection.Name\"\n [Width]=\"600\"\n [Height]=\"500\"\n [MinWidth]=\"400\"\n [MinHeight]=\"400\"\n [Visible]=\"true\"\n (Close)=\"onCancel()\"\n >\n <div class=\"share-modal-content\">\n <!-- Add User Section -->\n <div class=\"add-user-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-user-plus\"></i>\n Share with User\n </h3>\n\n <mj-user-picker\n [currentUser]=\"currentUser\"\n [excludeUserIds]=\"getExcludedUserIds()\"\n (userSelected)=\"onUserSelected($event)\"\n ></mj-user-picker>\n\n @if (selectedUser) {\n <div class=\"permissions-form\">\n <div class=\"selected-user-info\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"user-details\">\n <div class=\"user-name\">{{ selectedUser.name }}</div>\n <div class=\"user-email\">{{ selectedUser.email }}</div>\n </div>\n </div>\n\n <div class=\"permissions-grid\">\n <label class=\"permission-checkbox disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-eye\"></i>\n Read\n </span>\n <span class=\"permission-desc\">View collection and artifacts</span>\n </label>\n\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canShare\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n Share\n </span>\n <span class=\"permission-desc\">Share with others</span>\n </label>\n }\n\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canEdit\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-pen-to-square\"></i>\n Edit\n </span>\n <span class=\"permission-desc\">Add/remove artifacts</span>\n </label>\n }\n\n @if (availablePermissions.includes('Delete')) {\n <label class=\"permission-checkbox\">\n <input type=\"checkbox\" [(ngModel)]=\"newPermissions.canDelete\">\n <span class=\"permission-label\">\n <i class=\"fa-solid fa-trash\"></i>\n Delete\n </span>\n <span class=\"permission-desc\">Delete collection</span>\n </label>\n }\n </div>\n\n <div class=\"form-actions\">\n <button mjButton variant=\"primary\" (click)=\"onAddUser()\" [disabled]=\"!selectedUser\">\n <i class=\"fa-solid fa-plus\"></i>\n Add User\n </button>\n <button mjButton (click)=\"onClearSelection()\">\n Cancel\n </button>\n </div>\n </div>\n }\n </div>\n\n <!-- Current Permissions Section -->\n <div class=\"permissions-list-section\">\n <h3 class=\"section-title\">\n <i class=\"fa-solid fa-users\"></i>\n Shared With ({{ permissions.length }})\n </h3>\n\n @if (permissions.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-user-slash\"\n Title=\"Not shared with anyone yet\"\n Size=\"compact\" />\n } @else {\n <div class=\"permissions-list\">\n @for (permission of permissions; track permission.id) {\n <div class=\"permission-item\">\n <div class=\"user-avatar\">\n <i class=\"fa-solid fa-user\"></i>\n </div>\n <div class=\"permission-details\">\n <div class=\"permission-user\">\n <span class=\"user-name\">{{ permission.userName }}</span>\n @if (permission.sharedByUserName) {\n <span class=\"shared-by\">shared by {{ permission.sharedByUserName }}</span>\n }\n </div>\n\n @if (!permission.isEditing) {\n <div class=\"permission-badges\">\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-eye\"></i> Read\n </span>\n @if (permission.canShare) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-share-nodes\"></i> Share\n </span>\n }\n @if (permission.canEdit) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-pen-to-square\"></i> Edit\n </span>\n }\n @if (permission.canDelete) {\n <span class=\"permission-badge\">\n <i class=\"fa-solid fa-trash\"></i> Delete\n </span>\n }\n </div>\n } @else {\n <div class=\"permissions-edit-grid\">\n <label class=\"permission-checkbox-small disabled\">\n <input type=\"checkbox\" [checked]=\"true\" disabled>\n <span>Read</span>\n </label>\n @if (availablePermissions.includes('Share')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canShare\">\n <span>Share</span>\n </label>\n }\n @if (availablePermissions.includes('Edit')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canEdit\">\n <span>Edit</span>\n </label>\n }\n @if (availablePermissions.includes('Delete')) {\n <label class=\"permission-checkbox-small\">\n <input type=\"checkbox\" [(ngModel)]=\"permission.editingPermissions.canDelete\">\n <span>Delete</span>\n </label>\n }\n </div>\n }\n </div>\n\n @if (canModifyPermissions) {\n <div class=\"permission-actions\">\n @if (!permission.isEditing) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onEditPermission(permission)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n <button mjButton variant=\"danger\" size=\"sm\" (click)=\"onRevokePermission(permission)\" title=\"Remove\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n } @else {\n <button mjButton variant=\"success\" size=\"sm\" (click)=\"onSavePermission(permission)\" title=\"Save\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"onCancelEdit(permission)\" title=\"Cancel\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n </div>\n\n <div class=\"modal-actions\">\n <button mjButton (click)=\"onCancel()\">Close</button>\n </div>\n </mj-window>\n }\n `,\n styleUrls: ['./collection-share-modal.component.css']\n})\nexport class CollectionShareModalComponent implements OnInit, OnChanges {\n @Input() isOpen: boolean = false;\n @Input() collection: MJCollectionEntity | null = null;\n @Input() currentUser!: UserInfo;\n @Input() currentUserPermissions: CollectionPermission | null = null;\n\n @Output() saved = new EventEmitter<void>();\n @Output() cancelled = new EventEmitter<void>();\n\n permissions: PermissionDisplay[] = [];\n selectedUser: UserSearchResult | null = null;\n availablePermissions: string[] = [];\n canModifyPermissions: boolean = false;\n\n newPermissions: PermissionSet = {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n constructor(\n private permissionService: CollectionPermissionService,\n private cdr: ChangeDetectorRef\n ) {}\n\n async ngOnInit(): Promise<void> {\n if (this.collection) {\n await this.loadPermissions();\n this.updateAvailablePermissions();\n this.cdr.detectChanges(); // zone.js 0.15: sync changes after async don't trigger CD\n }\n }\n\n async ngOnChanges(changes: SimpleChanges): Promise<void> {\n // Reload permissions when modal opens or collection/permissions change\n const modalOpened = changes['isOpen']?.currentValue === true && changes['isOpen']?.previousValue === false;\n const collectionChanged = changes['collection'] && !changes['collection'].isFirstChange();\n const permissionsChanged = changes['currentUserPermissions'] && !changes['currentUserPermissions'].isFirstChange();\n\n if ((modalOpened || collectionChanged || permissionsChanged) && this.collection) {\n await this.loadPermissions();\n this.updateAvailablePermissions();\n this.cdr.detectChanges(); // zone.js 0.15: sync changes after async don't trigger CD\n }\n }\n\n private async loadPermissions(): Promise<void> {\n if (!this.collection) return;\n\n const perms = await this.permissionService.loadPermissions(this.collection.ID, this.currentUser);\n this.permissions = perms.map(p => ({\n ...p,\n isEditing: false,\n editingPermissions: {\n canRead: p.canRead,\n canShare: p.canShare,\n canEdit: p.canEdit,\n canDelete: p.canDelete\n }\n }));\n this.cdr.detectChanges();\n }\n\n private updateAvailablePermissions(): void {\n // User is owner if:\n // 1. OwnerID is null/undefined (backwards compatibility with old collections)\n // 2. OwnerID matches current user ID\n const isOwner = !this.collection?.OwnerID || UUIDsEqual(this.collection.OwnerID, this.currentUser.ID);\n\n // Allow modification if user is owner OR has Share permission\n this.canModifyPermissions = isOwner || (this.currentUserPermissions?.canShare || false);\n\n const userPerms = this.currentUserPermissions || {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n this.availablePermissions = this.permissionService.getAvailablePermissions(userPerms, isOwner);\n console.log('Share modal permissions:', {\n collectionId: this.collection?.ID,\n ownerId: this.collection?.OwnerID,\n currentUserId: this.currentUser.ID,\n isOwner,\n availablePermissions: this.availablePermissions\n });\n }\n\n getExcludedUserIds(): string[] {\n const ids = this.permissions.map(p => p.userId);\n ids.push(this.currentUser.ID); // Can't share with yourself\n if (this.collection?.OwnerID) {\n ids.push(this.collection.OwnerID); // Owner already has all permissions\n }\n return ids;\n }\n\n onUserSelected(user: UserSearchResult): void {\n this.selectedUser = user;\n this.cdr.detectChanges();\n }\n\n onClearSelection(): void {\n this.selectedUser = null;\n this.newPermissions = {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n this.cdr.detectChanges();\n }\n\n async onAddUser(): Promise<void> {\n if (!this.selectedUser || !this.collection) return;\n\n try {\n // User is owner if OwnerID is null (old collections) or matches current user\n const isOwner = !this.collection.OwnerID || UUIDsEqual(this.collection.OwnerID, this.currentUser.ID);\n const userPerms = this.currentUserPermissions || {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(this.newPermissions, userPerms, isOwner)) {\n alert('You cannot grant permissions you do not have');\n return;\n }\n\n // Use cascade grant to apply permissions to all child collections\n await this.permissionService.grantPermissionCascade(\n this.collection.ID,\n this.selectedUser.id,\n this.newPermissions,\n this.currentUser.ID,\n this.currentUser\n );\n\n await this.loadPermissions();\n this.onClearSelection();\n this.saved.emit();\n } catch (error) {\n console.error('Error adding user:', error);\n alert('Failed to add user. Please try again.');\n }\n }\n\n onEditPermission(permission: PermissionDisplay): void {\n permission.isEditing = true;\n this.cdr.detectChanges();\n }\n\n onCancelEdit(permission: PermissionDisplay): void {\n permission.isEditing = false;\n permission.editingPermissions = {\n canRead: permission.canRead,\n canShare: permission.canShare,\n canEdit: permission.canEdit,\n canDelete: permission.canDelete\n };\n this.cdr.detectChanges();\n }\n\n async onSavePermission(permission: PermissionDisplay): Promise<void> {\n try {\n // User is owner if OwnerID is null (old collections) or matches current user\n const isOwner = !this.collection?.OwnerID || UUIDsEqual(this.collection?.OwnerID, this.currentUser.ID);\n const userPerms = this.currentUserPermissions || {\n canRead: true,\n canShare: false,\n canEdit: false,\n canDelete: false\n };\n\n // Validate permissions\n if (!this.permissionService.validatePermissions(permission.editingPermissions, userPerms, isOwner)) {\n alert('You cannot grant permissions you do not have');\n return;\n }\n\n // Use cascade update to apply changes to all child collections\n await this.permissionService.updatePermissionCascade(\n this.collection!.ID,\n permission.userId,\n permission.editingPermissions,\n this.currentUser\n );\n\n await this.loadPermissions();\n this.saved.emit();\n } catch (error) {\n console.error('Error updating permission:', error);\n alert('Failed to update permissions. Please try again.');\n }\n }\n\n async onRevokePermission(permission: PermissionDisplay): Promise<void> {\n if (!confirm(`Remove ${permission.userName}'s access to this collection and all its child collections?`)) {\n return;\n }\n\n try {\n // Use cascade revoke to remove access from all child collections\n await this.permissionService.revokePermissionCascade(\n this.collection!.ID,\n permission.userId,\n this.currentUser\n );\n await this.loadPermissions();\n this.saved.emit();\n } catch (error) {\n console.error('Error revoking permission:', error);\n alert('Failed to revoke permission. Please try again.');\n }\n }\n\n onCancel(): void {\n this.cancelled.emit();\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-view.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAuB,EAA8B,MAAM,+BAA+B,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;;AAGnE,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAChC,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,
|
|
1
|
+
{"version":3,"file":"collection-view.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-view.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAuB,EAA8B,MAAM,+BAA+B,CAAC;AAC1I,OAAO,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;;AAGnE,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAChC,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvC,qBA4Ga,uBAAwB,SAAQ,oBAAqB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAuB3F,OAAO,CAAC,GAAG;IAtBd,UAAU,EAAG,kBAAkB,CAAC;IAChC,WAAW,EAAG,QAAQ,CAAC;IACvB,aAAa,EAAG,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAQ;IAG1B,gBAAgB,EAAE,KAAK,CAAC;QAC7B,OAAO,EAAE,uBAAuB,CAAC;QACjC,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,CAAC,CAAM;IACD,QAAQ,EAAE,QAAQ,CAAU;IAC5B,MAAM,EAAE,MAAM,CAAU;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACzC,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAa;IACtD,kBAAkB,UAAS;IAE3B,WAAW;;;QAIhB;gBAEkB,GAAG,EAAE,iBAAiB;IAG1C,QAAQ;IAIR,WAAW,CAAC,OAAO,EAAE,aAAa;IAMlC,WAAW;YAOG,aAAa;IAsD3B,OAAO,CAAC,iBAAiB;IAazB,YAAY,IAAI,IAAI;IAIpB,kBAAkB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAIhG,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAQ5F,qBAAqB,IAAI,IAAI;IAM7B,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,IAAI;IAItF,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,uBAAuB,CAAC;QAAC,QAAQ,EAAE,gBAAgB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CvG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;yCAtLzB,uBAAuB;2CAAvB,uBAAuB;CAmOnC"}
|