@memberjunction/ng-conversations 5.43.0 → 5.45.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.d.ts +3 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/artifact/artifact-share-modal.component.js +52 -52
- 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.d.ts +3 -1
- package/dist/lib/components/collection/collection-share-modal.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-share-modal.component.js +56 -56
- package/dist/lib/components/collection/collection-share-modal.component.js.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.d.ts +3 -1
- package/dist/lib/components/collection/collection-tree.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-tree.component.js +10 -7
- package/dist/lib/components/collection/collection-tree.component.js.map +1 -1
- package/dist/lib/components/collection/collection-view.component.d.ts +3 -1
- package/dist/lib/components/collection/collection-view.component.d.ts.map +1 -1
- package/dist/lib/components/collection/collection-view.component.js +29 -41
- 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/composer/ai-composer.component.d.ts +103 -0
- package/dist/lib/components/composer/ai-composer.component.d.ts.map +1 -0
- package/dist/lib/components/composer/ai-composer.component.js +263 -0
- package/dist/lib/components/composer/ai-composer.component.js.map +1 -0
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts +76 -12
- package/dist/lib/components/conversation/conversation-chat-area.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-chat-area.component.js +522 -158
- package/dist/lib/components/conversation/conversation-chat-area.component.js.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.component.d.ts.map +1 -1
- package/dist/lib/components/conversation/conversation-empty-state.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/message/message-input.component.d.ts +87 -23
- package/dist/lib/components/message/message-input.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-input.component.js +245 -158
- package/dist/lib/components/message/message-input.component.js.map +1 -1
- package/dist/lib/components/message/message-item.component.d.ts +11 -3
- package/dist/lib/components/message/message-item.component.d.ts.map +1 -1
- package/dist/lib/components/message/message-item.component.js +73 -21
- 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 +4 -1
- 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/sidebar/conversation-sidebar.component.d.ts +11 -3
- package/dist/lib/components/sidebar/conversation-sidebar.component.d.ts.map +1 -1
- package/dist/lib/components/sidebar/conversation-sidebar.component.js +34 -10
- package/dist/lib/components/sidebar/conversation-sidebar.component.js.map +1 -1
- package/dist/lib/components/sidebar/routines-section.component.d.ts +73 -0
- package/dist/lib/components/sidebar/routines-section.component.d.ts.map +1 -0
- package/dist/lib/components/sidebar/routines-section.component.js +211 -0
- package/dist/lib/components/sidebar/routines-section.component.js.map +1 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts +12 -0
- package/dist/lib/components/tasks/tasks-dropdown.component.d.ts.map +1 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js +37 -1
- package/dist/lib/components/tasks/tasks-dropdown.component.js.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts +16 -5
- package/dist/lib/components/workspace/conversation-workspace.component.d.ts.map +1 -1
- package/dist/lib/components/workspace/conversation-workspace.component.js +51 -31
- package/dist/lib/components/workspace/conversation-workspace.component.js.map +1 -1
- package/dist/lib/composer-plugins/agent-mention.provider.d.ts +16 -0
- package/dist/lib/composer-plugins/agent-mention.provider.d.ts.map +1 -0
- package/dist/lib/composer-plugins/agent-mention.provider.js +28 -0
- package/dist/lib/composer-plugins/agent-mention.provider.js.map +1 -0
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts +20 -0
- package/dist/lib/composer-plugins/base-conversation-mention.provider.d.ts.map +1 -0
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js +32 -0
- package/dist/lib/composer-plugins/base-conversation-mention.provider.js.map +1 -0
- package/dist/lib/composer-plugins/load-composer-plugins.d.ts +9 -0
- package/dist/lib/composer-plugins/load-composer-plugins.d.ts.map +1 -0
- package/dist/lib/composer-plugins/load-composer-plugins.js +17 -0
- package/dist/lib/composer-plugins/load-composer-plugins.js.map +1 -0
- package/dist/lib/composer-plugins/record-mention.provider.d.ts +14 -0
- package/dist/lib/composer-plugins/record-mention.provider.d.ts.map +1 -0
- package/dist/lib/composer-plugins/record-mention.provider.js +26 -0
- package/dist/lib/composer-plugins/record-mention.provider.js.map +1 -0
- package/dist/lib/composer-plugins/skill-command.provider.d.ts +15 -0
- package/dist/lib/composer-plugins/skill-command.provider.d.ts.map +1 -0
- package/dist/lib/composer-plugins/skill-command.provider.js +27 -0
- package/dist/lib/composer-plugins/skill-command.provider.js.map +1 -0
- package/dist/lib/conversations.module.d.ts +68 -64
- package/dist/lib/conversations.module.d.ts.map +1 -1
- package/dist/lib/conversations.module.js +69 -18
- 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 +9 -2
- package/dist/lib/services/conversation-agent.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-agent.service.js +26 -2
- package/dist/lib/services/conversation-agent.service.js.map +1 -1
- package/dist/lib/services/conversation-attachment.service.d.ts +1 -1
- package/dist/lib/services/conversation-attachment.service.d.ts.map +1 -1
- package/dist/lib/services/conversation-attachment.service.js.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.d.ts +42 -19
- package/dist/lib/services/mention-autocomplete.service.d.ts.map +1 -1
- package/dist/lib/services/mention-autocomplete.service.js +113 -18
- 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 +29 -3
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +46 -3
- package/dist/public-api.js.map +1 -1
- package/package.json +30 -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
- package/dist/lib/components/mention/mention-dropdown.component.d.ts +0 -53
- package/dist/lib/components/mention/mention-dropdown.component.d.ts.map +0 -1
- package/dist/lib/components/mention/mention-dropdown.component.js +0 -276
- package/dist/lib/components/mention/mention-dropdown.component.js.map +0 -1
- package/dist/lib/components/mention/mention-editor.component.d.ts +0 -256
- package/dist/lib/components/mention/mention-editor.component.d.ts.map +0 -1
- package/dist/lib/components/mention/mention-editor.component.js +0 -1233
- package/dist/lib/components/mention/mention-editor.component.js.map +0 -1
- package/dist/lib/components/message/message-input-box.component.d.ts +0 -137
- package/dist/lib/components/message/message-input-box.component.d.ts.map +0 -1
- package/dist/lib/components/message/message-input-box.component.js +0 -321
- package/dist/lib/components/message/message-input-box.component.js.map +0 -1
|
@@ -21,14 +21,13 @@ function CollectionFormModalComponent_Conditional_0_Conditional_14_Template(rf,
|
|
|
21
21
|
i0.ɵɵtextInterpolate(ctx_r1.parentCollection.Name);
|
|
22
22
|
} }
|
|
23
23
|
function CollectionFormModalComponent_Conditional_0_Conditional_15_Template(rf, ctx) { if (rf & 1) {
|
|
24
|
-
i0.ɵɵelementStart(0, "
|
|
25
|
-
i0.ɵɵ
|
|
26
|
-
i0.ɵɵtext(2);
|
|
24
|
+
i0.ɵɵelementStart(0, "mj-alert", 9);
|
|
25
|
+
i0.ɵɵtext(1);
|
|
27
26
|
i0.ɵɵelementEnd();
|
|
28
27
|
} if (rf & 2) {
|
|
29
28
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
30
|
-
i0.ɵɵadvance(
|
|
31
|
-
i0.ɵɵ
|
|
29
|
+
i0.ɵɵadvance();
|
|
30
|
+
i0.ɵɵtextInterpolate(ctx_r1.errorMessage);
|
|
32
31
|
} }
|
|
33
32
|
function CollectionFormModalComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
34
33
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
@@ -51,7 +50,7 @@ function CollectionFormModalComponent_Conditional_0_Template(rf, ctx) { if (rf &
|
|
|
51
50
|
i0.ɵɵtext(13, " ");
|
|
52
51
|
i0.ɵɵelementEnd()();
|
|
53
52
|
i0.ɵɵconditionalCreate(14, CollectionFormModalComponent_Conditional_0_Conditional_14_Template, 7, 1, "div", 4);
|
|
54
|
-
i0.ɵɵconditionalCreate(15, CollectionFormModalComponent_Conditional_0_Conditional_15_Template,
|
|
53
|
+
i0.ɵɵconditionalCreate(15, CollectionFormModalComponent_Conditional_0_Conditional_15_Template, 2, 1, "mj-alert", 9);
|
|
55
54
|
i0.ɵɵelementEnd();
|
|
56
55
|
i0.ɵɵelementStart(16, "mj-dialog-actions")(17, "button", 10);
|
|
57
56
|
i0.ɵɵlistener("click", function CollectionFormModalComponent_Conditional_0_Template_button_click_17_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onCancel()); });
|
|
@@ -213,11 +212,11 @@ export class CollectionFormModalComponent extends BaseAngularComponent {
|
|
|
213
212
|
this.errorMessage = '';
|
|
214
213
|
}
|
|
215
214
|
static ɵfac = function CollectionFormModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionFormModalComponent)(i0.ɵɵdirectiveInject(i1.ToastService), i0.ɵɵdirectiveInject(i2.CollectionPermissionService)); };
|
|
216
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionFormModalComponent, selectors: [["mj-collection-form-modal"]], inputs: { isOpen: "isOpen", collection: "collection", parentCollection: "parentCollection", environmentId: "environmentId", currentUser: "currentUser" }, outputs: { saved: "saved", cancelled: "cancelled" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["nameInput", ""], [3, "Title", "Width", "MinWidth", "Visible"], [3, "Close", "Title", "Width", "MinWidth", "Visible"], [1, "collection-form"], [1, "form-group"], [1, "form-label"], [1, "required"], ["type", "text", "placeholder", "Collection name", 1, "k-textbox", "form-control", 3, "ngModelChange", "keydown.enter", "ngModel"], ["placeholder", "Optional description", "rows", "3", 1, "k-textarea", "form-control", 3, "ngModelChange", "ngModel"], [
|
|
215
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CollectionFormModalComponent, selectors: [["mj-collection-form-modal"]], inputs: { isOpen: "isOpen", collection: "collection", parentCollection: "parentCollection", environmentId: "environmentId", currentUser: "currentUser" }, outputs: { saved: "saved", cancelled: "cancelled" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [["nameInput", ""], [3, "Title", "Width", "MinWidth", "Visible"], [3, "Close", "Title", "Width", "MinWidth", "Visible"], [1, "collection-form"], [1, "form-group"], [1, "form-label"], [1, "required"], ["type", "text", "placeholder", "Collection name", 1, "k-textbox", "form-control", 3, "ngModelChange", "keydown.enter", "ngModel"], ["placeholder", "Optional description", "rows", "3", 1, "k-textarea", "form-control", 3, "ngModelChange", "ngModel"], ["Variant", "error"], ["mjButton", "", 3, "click", "disabled"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], [1, "parent-info"], [1, "fas", "fa-folder"]], template: function CollectionFormModalComponent_Template(rf, ctx) { if (rf & 1) {
|
|
217
216
|
i0.ɵɵconditionalCreate(0, CollectionFormModalComponent_Conditional_0_Template, 21, 11, "mj-dialog", 1);
|
|
218
217
|
} if (rf & 2) {
|
|
219
218
|
i0.ɵɵconditional(ctx.isOpen ? 0 : -1);
|
|
220
|
-
} }, dependencies: [i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.MJButtonDirective, i4.MJDialogComponent, i4.MJDialogActionsComponent], styles: [".collection-form[_ngcontent-%COMP%] {\n padding: 20px 0;\n }\n\n .form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .form-label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .form-control[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .parent-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }
|
|
219
|
+
} }, dependencies: [i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.MJButtonDirective, i4.MJDialogComponent, i4.MJDialogActionsComponent, i4.MJAlertComponent], styles: [".collection-form[_ngcontent-%COMP%] {\n padding: 20px 0;\n }\n\n .form-group[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n }\n\n .form-label[_ngcontent-%COMP%] {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n }\n\n .form-control[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .parent-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n }"] });
|
|
221
220
|
}
|
|
222
221
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionFormModalComponent, [{
|
|
223
222
|
type: Component,
|
|
@@ -261,10 +260,7 @@ export class CollectionFormModalComponent extends BaseAngularComponent {
|
|
|
261
260
|
</div>
|
|
262
261
|
}
|
|
263
262
|
@if (errorMessage) {
|
|
264
|
-
<
|
|
265
|
-
<i class="fas fa-exclamation-circle"></i>
|
|
266
|
-
{{ errorMessage }}
|
|
267
|
-
</div>
|
|
263
|
+
<mj-alert Variant="error">{{ errorMessage }}</mj-alert>
|
|
268
264
|
}
|
|
269
265
|
</div>
|
|
270
266
|
<mj-dialog-actions>
|
|
@@ -280,7 +276,7 @@ export class CollectionFormModalComponent extends BaseAngularComponent {
|
|
|
280
276
|
</mj-dialog-actions>
|
|
281
277
|
</mj-dialog>
|
|
282
278
|
}
|
|
283
|
-
`, styles: ["\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n
|
|
279
|
+
`, styles: ["\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n "] }]
|
|
284
280
|
}], () => [{ type: i1.ToastService }, { type: i2.CollectionPermissionService }], { isOpen: [{
|
|
285
281
|
type: Input
|
|
286
282
|
}], collection: [{
|
|
@@ -296,5 +292,5 @@ export class CollectionFormModalComponent extends BaseAngularComponent {
|
|
|
296
292
|
}], cancelled: [{
|
|
297
293
|
type: Output
|
|
298
294
|
}] }); })();
|
|
299
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionFormModalComponent, { className: "CollectionFormModalComponent", filePath: "src/lib/components/collection/collection-form-modal.component.ts", lineNumber:
|
|
295
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionFormModalComponent, { className: "CollectionFormModalComponent", filePath: "src/lib/components/collection/collection-form-modal.component.ts", lineNumber: 113 }); })();
|
|
300
296
|
//# sourceMappingURL=collection-form-modal.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { UserInfo, Metadata } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Modal for creating and editing collections\n */\n@Component({\n standalone: false,\n selector: 'mj-collection-form-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"collection?.ID ? 'Edit Collection' : 'New Collection'\"\n (Close)=\"onCancel()\"\n [Width]=\"500\"\n [MinWidth]=\"300\"\n [Visible]=\"true\">\n <div class=\"collection-form\">\n <div class=\"form-group\">\n <label class=\"form-label\">\n Name <span class=\"required\">*</span>\n </label>\n <input\n type=\"text\"\n class=\"k-textbox form-control\"\n [(ngModel)]=\"formData.name\"\n placeholder=\"Collection name\"\n #nameInput\n (keydown.enter)=\"onSave()\">\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea\n class=\"k-textarea form-control\"\n [(ngModel)]=\"formData.description\"\n placeholder=\"Optional description\"\n rows=\"3\">\n </textarea>\n </div>\n @if (parentCollection) {\n <div class=\"form-group\">\n <label class=\"form-label\">Parent Collection</label>\n <div class=\"parent-info\">\n <i class=\"fas fa-folder\"></i>\n <span>{{ parentCollection.Name }}</span>\n </div>\n </div>\n }\n @if (errorMessage) {\n <div class=\"form-error\">\n <i class=\"fas fa-exclamation-circle\"></i>\n {{ errorMessage }}\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\" [disabled]=\"isSaving\">\n Cancel\n </button>\n <button mjButton\n variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave || isSaving\">\n {{ isSaving ? 'Saving...' : 'Save' }}\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n\n .form-error {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px;\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 6px;\n color: var(--mj-status-error);\n font-size: 14px;\n }\n\n .form-error i {\n flex-shrink: 0;\n }\n `]\n})\nexport class CollectionFormModalComponent extends BaseAngularComponent implements OnChanges {\n @Input() isOpen: boolean = false;\n @Input() collection?: MJCollectionEntity;\n @Input() parentCollection?: MJCollectionEntity;\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n\n @Output() saved = new EventEmitter<MJCollectionEntity>();\n @Output() cancelled = new EventEmitter<void>();\n\n public formData = {\n name: '',\n description: ''\n };\n\n public isSaving: boolean = false;\n public errorMessage: string = '';\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges) {\n // Bind provider-aware service to this component's provider on every input change pass.\n this.permissionService.Provider = this.ProviderToUse;\n\n if (changes['collection'] || changes['isOpen']) {\n if (this.isOpen && this.collection) {\n this.formData.name = this.collection.Name || '';\n this.formData.description = this.collection.Description || '';\n } else if (this.isOpen && !this.collection) {\n this.formData = { name: '', description: '' };\n }\n }\n }\n\n get canSave(): boolean {\n return this.formData.name.trim().length > 0;\n }\n\n async onSave(): Promise<void> {\n if (!this.canSave) return;\n\n this.isSaving = true;\n this.errorMessage = '';\n\n try {\n // Validate permissions before saving\n if (this.collection) {\n // Editing existing collection - need Edit permission\n if (this.collection.OwnerID && !UUIDsEqual(this.collection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for this collection.';\n this.isSaving = false;\n return;\n }\n }\n } else if (this.parentCollection) {\n // Creating child collection - need Edit permission on parent\n if (this.parentCollection.OwnerID && !UUIDsEqual(this.parentCollection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.parentCollection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for the parent collection.';\n this.isSaving = false;\n return;\n }\n }\n }\n\n const md = this.ProviderToUse;\n const collection = this.collection ||\n await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n\n collection.Name = this.formData.name.trim();\n collection.Description = this.formData.description.trim() || null;\n collection.EnvironmentID = this.environmentId;\n\n // Set owner and parent relationship if creating new collection\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection inherits parent's owner to maintain permission hierarchy\n collection.ParentID = this.parentCollection.ID;\n collection.OwnerID = this.parentCollection.OwnerID || this.currentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.currentUser.ID;\n }\n } else if (this.parentCollection) {\n // Updating existing collection's parent\n collection.ParentID = this.parentCollection.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n // If creating new collection, set up permissions\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection - copy non-owner permissions from parent.\n // (The owner gets implicit full access via OwnerID; no self-share row is written.)\n await this.permissionService.copyParentPermissions(\n this.parentCollection.ID,\n collection.ID,\n this.currentUser\n );\n }\n // Root collection: nothing to do. CollectionPermissionProvider treats OwnerID as\n // an implicit full-access grant — writing a self-share row was redundant and was\n // failing server-side auth on freshly-created collections.\n }\n\n this.toastService.success(\n this.collection ? 'Collection updated successfully' : 'Collection created successfully'\n );\n this.saved.emit(collection);\n this.resetForm();\n } else {\n this.errorMessage = collection.LatestResult?.Message || 'Failed to save collection';\n this.toastService.error(this.errorMessage);\n }\n } catch (error) {\n console.error('Error saving collection:', error);\n this.errorMessage = 'An unexpected error occurred';\n this.toastService.error(this.errorMessage);\n } finally {\n this.isSaving = false;\n }\n }\n\n onCancel(): void {\n this.resetForm();\n this.cancelled.emit();\n }\n\n private resetForm(): void {\n this.formData = {\n name: '',\n description: ''\n };\n this.errorMessage = '';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"collection-form-modal.component.js","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-form-modal.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nimport { UserInfo, Metadata } from '@memberjunction/core';\nimport { MJCollectionEntity } from '@memberjunction/core-entities';\nimport { DialogService } from '../../services/dialog.service';\nimport { ToastService } from '../../services/toast.service';\nimport { CollectionPermissionService } from '../../services/collection-permission.service';\nimport { UUIDsEqual } from '@memberjunction/global';\n\n/**\n * Modal for creating and editing collections\n */\n@Component({\n standalone: false,\n selector: 'mj-collection-form-modal',\n template: `\n @if (isOpen) {\n <mj-dialog\n [Title]=\"collection?.ID ? 'Edit Collection' : 'New Collection'\"\n (Close)=\"onCancel()\"\n [Width]=\"500\"\n [MinWidth]=\"300\"\n [Visible]=\"true\">\n <div class=\"collection-form\">\n <div class=\"form-group\">\n <label class=\"form-label\">\n Name <span class=\"required\">*</span>\n </label>\n <input\n type=\"text\"\n class=\"k-textbox form-control\"\n [(ngModel)]=\"formData.name\"\n placeholder=\"Collection name\"\n #nameInput\n (keydown.enter)=\"onSave()\">\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea\n class=\"k-textarea form-control\"\n [(ngModel)]=\"formData.description\"\n placeholder=\"Optional description\"\n rows=\"3\">\n </textarea>\n </div>\n @if (parentCollection) {\n <div class=\"form-group\">\n <label class=\"form-label\">Parent Collection</label>\n <div class=\"parent-info\">\n <i class=\"fas fa-folder\"></i>\n <span>{{ parentCollection.Name }}</span>\n </div>\n </div>\n }\n @if (errorMessage) {\n <mj-alert Variant=\"error\">{{ errorMessage }}</mj-alert>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"onCancel()\" [disabled]=\"isSaving\">\n Cancel\n </button>\n <button mjButton\n variant=\"primary\"\n (click)=\"onSave()\"\n [disabled]=\"!canSave || isSaving\">\n {{ isSaving ? 'Saving...' : 'Save' }}\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n }\n `,\n styles: [`\n .collection-form {\n padding: 20px 0;\n }\n\n .form-group {\n margin-bottom: 20px;\n }\n\n .form-label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .required {\n color: var(--mj-status-error);\n }\n\n .form-control {\n width: 100%;\n }\n\n .parent-info {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-sunken);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n color: var(--mj-text-muted);\n }\n\n .parent-info i {\n color: var(--mj-brand-primary);\n }\n `]\n})\nexport class CollectionFormModalComponent extends BaseAngularComponent implements OnChanges {\n @Input() isOpen: boolean = false;\n @Input() collection?: MJCollectionEntity;\n @Input() parentCollection?: MJCollectionEntity;\n @Input() environmentId!: string;\n @Input() currentUser!: UserInfo;\n\n @Output() saved = new EventEmitter<MJCollectionEntity>();\n @Output() cancelled = new EventEmitter<void>();\n\n public formData = {\n name: '',\n description: ''\n };\n\n public isSaving: boolean = false;\n public errorMessage: string = '';\n\n constructor(\n private toastService: ToastService,\n private permissionService: CollectionPermissionService\n ) {\n super();}\n\n ngOnChanges(changes: SimpleChanges) {\n // Bind provider-aware service to this component's provider on every input change pass.\n this.permissionService.Provider = this.ProviderToUse;\n\n if (changes['collection'] || changes['isOpen']) {\n if (this.isOpen && this.collection) {\n this.formData.name = this.collection.Name || '';\n this.formData.description = this.collection.Description || '';\n } else if (this.isOpen && !this.collection) {\n this.formData = { name: '', description: '' };\n }\n }\n }\n\n get canSave(): boolean {\n return this.formData.name.trim().length > 0;\n }\n\n async onSave(): Promise<void> {\n if (!this.canSave) return;\n\n this.isSaving = true;\n this.errorMessage = '';\n\n try {\n // Validate permissions before saving\n if (this.collection) {\n // Editing existing collection - need Edit permission\n if (this.collection.OwnerID && !UUIDsEqual(this.collection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.collection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for this collection.';\n this.isSaving = false;\n return;\n }\n }\n } else if (this.parentCollection) {\n // Creating child collection - need Edit permission on parent\n if (this.parentCollection.OwnerID && !UUIDsEqual(this.parentCollection.OwnerID, this.currentUser.ID)) {\n const permission = await this.permissionService.checkPermission(\n this.parentCollection.ID,\n this.currentUser.ID,\n this.currentUser\n );\n\n if (!permission?.canEdit) {\n this.errorMessage = 'You do not have Edit permission for the parent collection.';\n this.isSaving = false;\n return;\n }\n }\n }\n\n const md = this.ProviderToUse;\n const collection = this.collection ||\n await md.GetEntityObject<MJCollectionEntity>('MJ: Collections', this.currentUser);\n\n collection.Name = this.formData.name.trim();\n collection.Description = this.formData.description.trim() || null;\n collection.EnvironmentID = this.environmentId;\n\n // Set owner and parent relationship if creating new collection\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection inherits parent's owner to maintain permission hierarchy\n collection.ParentID = this.parentCollection.ID;\n collection.OwnerID = this.parentCollection.OwnerID || this.currentUser.ID;\n } else {\n // Root collection - current user becomes owner\n collection.OwnerID = this.currentUser.ID;\n }\n } else if (this.parentCollection) {\n // Updating existing collection's parent\n collection.ParentID = this.parentCollection.ID;\n }\n\n const saved = await collection.Save();\n if (saved) {\n // If creating new collection, set up permissions\n if (!this.collection) {\n if (this.parentCollection) {\n // Child collection - copy non-owner permissions from parent.\n // (The owner gets implicit full access via OwnerID; no self-share row is written.)\n await this.permissionService.copyParentPermissions(\n this.parentCollection.ID,\n collection.ID,\n this.currentUser\n );\n }\n // Root collection: nothing to do. CollectionPermissionProvider treats OwnerID as\n // an implicit full-access grant — writing a self-share row was redundant and was\n // failing server-side auth on freshly-created collections.\n }\n\n this.toastService.success(\n this.collection ? 'Collection updated successfully' : 'Collection created successfully'\n );\n this.saved.emit(collection);\n this.resetForm();\n } else {\n this.errorMessage = collection.LatestResult?.Message || 'Failed to save collection';\n this.toastService.error(this.errorMessage);\n }\n } catch (error) {\n console.error('Error saving collection:', error);\n this.errorMessage = 'An unexpected error occurred';\n this.toastService.error(this.errorMessage);\n } finally {\n this.isSaving = false;\n }\n }\n\n onCancel(): void {\n this.resetForm();\n this.cancelled.emit();\n }\n\n private resetForm(): void {\n this.formData = {\n name: '',\n description: ''\n };\n this.errorMessage = '';\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { EventEmitter, OnInit, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { MJConfirmService } from '@memberjunction/ng-ui-components';
|
|
2
3
|
import { UserInfo } from '@memberjunction/core';
|
|
3
4
|
import { MJCollectionEntity } from '@memberjunction/core-entities';
|
|
4
5
|
import { CollectionPermissionService, CollectionPermission, PermissionSet } from '../../services/collection-permission.service';
|
|
@@ -11,6 +12,7 @@ interface PermissionDisplay extends CollectionPermission {
|
|
|
11
12
|
export declare class CollectionShareModalComponent implements OnInit, OnChanges {
|
|
12
13
|
private permissionService;
|
|
13
14
|
private cdr;
|
|
15
|
+
private confirmService;
|
|
14
16
|
isOpen: boolean;
|
|
15
17
|
collection: MJCollectionEntity | null;
|
|
16
18
|
currentUser: UserInfo;
|
|
@@ -22,7 +24,7 @@ export declare class CollectionShareModalComponent implements OnInit, OnChanges
|
|
|
22
24
|
availablePermissions: string[];
|
|
23
25
|
canModifyPermissions: boolean;
|
|
24
26
|
newPermissions: PermissionSet;
|
|
25
|
-
constructor(permissionService: CollectionPermissionService, cdr: ChangeDetectorRef);
|
|
27
|
+
constructor(permissionService: CollectionPermissionService, cdr: ChangeDetectorRef, confirmService: MJConfirmService);
|
|
26
28
|
ngOnInit(): Promise<void>;
|
|
27
29
|
ngOnChanges(changes: SimpleChanges): Promise<void>;
|
|
28
30
|
private loadPermissions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection-share-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-share-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"collection-share-modal.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/collection/collection-share-modal.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAG5H,OAAO,EAA+D,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEjI,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAChI,OAAO,EAAuB,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;;AAGxF,UAAU,iBAAkB,SAAQ,oBAAoB;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,aAAa,CAAC;CACrC;AAED,qBAgNa,6BAA8B,YAAW,MAAM,EAAE,SAAS;IAsB/D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,cAAc;IAvBjB,MAAM,EAAE,OAAO,CAAS;IACxB,UAAU,EAAE,kBAAkB,GAAG,IAAI,CAAQ;IAC7C,WAAW,EAAG,QAAQ,CAAC;IACvB,sBAAsB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IAE1D,KAAK,qBAA4B;IACjC,SAAS,qBAA4B;IAE/C,WAAW,EAAE,iBAAiB,EAAE,CAAM;IACtC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAQ;IAC7C,oBAAoB,EAAE,MAAM,EAAE,CAAM;IACpC,oBAAoB,EAAE,OAAO,CAAS;IAEtC,cAAc,EAAE,aAAa,CAK3B;gBAGU,iBAAiB,EAAE,2BAA2B,EAC9C,GAAG,EAAE,iBAAiB,EACtB,cAAc,EAAE,gBAAgB;IAGtC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQzB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAa1C,eAAe;IAiB7B,OAAO,CAAC,0BAA0B;IA0BlC,kBAAkB,IAAI,MAAM,EAAE;IAS9B,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAK5C,gBAAgB,IAAI,IAAI;IAWlB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAqChC,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAKrD,YAAY,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAW3C,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC9D,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE,QAAQ,IAAI,IAAI;yCA9NP,6BAA6B;2CAA7B,6BAA6B;CAiOzC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
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
|
+
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
4
5
|
import { UserPickerComponent } from '../shared/user-picker.component';
|
|
5
6
|
import { UUIDsEqual } from '@memberjunction/global';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "../../services/collection-permission.service";
|
|
8
|
-
import * as i2 from "@
|
|
9
|
+
import * as i2 from "@memberjunction/ng-ui-components";
|
|
10
|
+
import * as i3 from "@angular/forms";
|
|
9
11
|
const _forTrack0 = ($index, $item) => $item.id;
|
|
10
12
|
function CollectionShareModalComponent_Conditional_0_Conditional_7_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
11
13
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
@@ -109,14 +111,10 @@ function CollectionShareModalComponent_Conditional_0_Conditional_7_Template(rf,
|
|
|
109
111
|
i0.ɵɵproperty("disabled", !ctx_r1.selectedUser);
|
|
110
112
|
} }
|
|
111
113
|
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()();
|
|
114
|
+
i0.ɵɵelement(0, "mj-empty-state", 10);
|
|
117
115
|
} }
|
|
118
116
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
119
|
-
i0.ɵɵelementStart(0, "span",
|
|
117
|
+
i0.ɵɵelementStart(0, "span", 37);
|
|
120
118
|
i0.ɵɵtext(1);
|
|
121
119
|
i0.ɵɵelementEnd();
|
|
122
120
|
} if (rf & 2) {
|
|
@@ -125,31 +123,31 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
125
123
|
i0.ɵɵtextInterpolate1("shared by ", permission_r7.sharedByUserName);
|
|
126
124
|
} }
|
|
127
125
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
128
|
-
i0.ɵɵelementStart(0, "span",
|
|
126
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
129
127
|
i0.ɵɵelement(1, "i", 31);
|
|
130
128
|
i0.ɵɵtext(2, " Share ");
|
|
131
129
|
i0.ɵɵelementEnd();
|
|
132
130
|
} }
|
|
133
131
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
-
i0.ɵɵelementStart(0, "span",
|
|
132
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
135
133
|
i0.ɵɵelement(1, "i", 32);
|
|
136
134
|
i0.ɵɵtext(2, " Edit ");
|
|
137
135
|
i0.ɵɵelementEnd();
|
|
138
136
|
} }
|
|
139
137
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
-
i0.ɵɵelementStart(0, "span",
|
|
138
|
+
i0.ɵɵelementStart(0, "span", 41);
|
|
141
139
|
i0.ɵɵelement(1, "i", 33);
|
|
142
140
|
i0.ɵɵtext(2, " Delete ");
|
|
143
141
|
i0.ɵɵelementEnd();
|
|
144
142
|
} }
|
|
145
143
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
-
i0.ɵɵelementStart(0, "div",
|
|
144
|
+
i0.ɵɵelementStart(0, "div", 38)(1, "span", 41);
|
|
147
145
|
i0.ɵɵelement(2, "i", 24);
|
|
148
146
|
i0.ɵɵtext(3, " Read ");
|
|
149
147
|
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",
|
|
148
|
+
i0.ɵɵconditionalCreate(4, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_4_Template, 3, 0, "span", 41);
|
|
149
|
+
i0.ɵɵconditionalCreate(5, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_5_Template, 3, 0, "span", 41);
|
|
150
|
+
i0.ɵɵconditionalCreate(6, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Conditional_6_Template, 3, 0, "span", 41);
|
|
153
151
|
i0.ɵɵelementEnd();
|
|
154
152
|
} if (rf & 2) {
|
|
155
153
|
const permission_r7 = i0.ɵɵnextContext().$implicit;
|
|
@@ -162,7 +160,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
162
160
|
} }
|
|
163
161
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
164
162
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
165
|
-
i0.ɵɵelementStart(0, "label",
|
|
163
|
+
i0.ɵɵelementStart(0, "label", 43)(1, "input", 30);
|
|
166
164
|
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
165
|
i0.ɵɵelementEnd();
|
|
168
166
|
i0.ɵɵelementStart(2, "span");
|
|
@@ -175,7 +173,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
175
173
|
} }
|
|
176
174
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
177
175
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
178
|
-
i0.ɵɵelementStart(0, "label",
|
|
176
|
+
i0.ɵɵelementStart(0, "label", 43)(1, "input", 30);
|
|
179
177
|
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
178
|
i0.ɵɵelementEnd();
|
|
181
179
|
i0.ɵɵelementStart(2, "span");
|
|
@@ -188,7 +186,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
188
186
|
} }
|
|
189
187
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
190
188
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
191
|
-
i0.ɵɵelementStart(0, "label",
|
|
189
|
+
i0.ɵɵelementStart(0, "label", 43)(1, "input", 30);
|
|
192
190
|
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
191
|
i0.ɵɵelementEnd();
|
|
194
192
|
i0.ɵɵelementStart(2, "span");
|
|
@@ -200,14 +198,14 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
200
198
|
i0.ɵɵtwoWayProperty("ngModel", permission_r7.editingPermissions.canDelete);
|
|
201
199
|
} }
|
|
202
200
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
203
|
-
i0.ɵɵelementStart(0, "div",
|
|
201
|
+
i0.ɵɵelementStart(0, "div", 39)(1, "label", 42);
|
|
204
202
|
i0.ɵɵelement(2, "input", 22);
|
|
205
203
|
i0.ɵɵelementStart(3, "span");
|
|
206
204
|
i0.ɵɵtext(4, "Read");
|
|
207
205
|
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",
|
|
206
|
+
i0.ɵɵconditionalCreate(5, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_5_Template, 4, 1, "label", 43);
|
|
207
|
+
i0.ɵɵconditionalCreate(6, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_6_Template, 4, 1, "label", 43);
|
|
208
|
+
i0.ɵɵconditionalCreate(7, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_9_Conditional_7_Template, 4, 1, "label", 43);
|
|
211
209
|
i0.ɵɵelementEnd();
|
|
212
210
|
} if (rf & 2) {
|
|
213
211
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -222,28 +220,28 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
222
220
|
} }
|
|
223
221
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
224
222
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
225
|
-
i0.ɵɵelementStart(0, "button",
|
|
223
|
+
i0.ɵɵelementStart(0, "button", 44);
|
|
226
224
|
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",
|
|
225
|
+
i0.ɵɵelement(1, "i", 45);
|
|
228
226
|
i0.ɵɵelementEnd();
|
|
229
|
-
i0.ɵɵelementStart(2, "button",
|
|
227
|
+
i0.ɵɵelementStart(2, "button", 46);
|
|
230
228
|
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",
|
|
229
|
+
i0.ɵɵelement(3, "i", 47);
|
|
232
230
|
i0.ɵɵelementEnd();
|
|
233
231
|
} }
|
|
234
232
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
235
233
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
236
|
-
i0.ɵɵelementStart(0, "button",
|
|
234
|
+
i0.ɵɵelementStart(0, "button", 48);
|
|
237
235
|
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",
|
|
236
|
+
i0.ɵɵelement(1, "i", 49);
|
|
239
237
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵelementStart(2, "button",
|
|
238
|
+
i0.ɵɵelementStart(2, "button", 50);
|
|
241
239
|
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",
|
|
240
|
+
i0.ɵɵelement(3, "i", 47);
|
|
243
241
|
i0.ɵɵelementEnd();
|
|
244
242
|
} }
|
|
245
243
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
246
|
-
i0.ɵɵelementStart(0, "div",
|
|
244
|
+
i0.ɵɵelementStart(0, "div", 40);
|
|
247
245
|
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
246
|
i0.ɵɵelementEnd();
|
|
249
247
|
} if (rf & 2) {
|
|
@@ -252,17 +250,17 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Condit
|
|
|
252
250
|
i0.ɵɵconditional(!permission_r7.isEditing ? 1 : 2);
|
|
253
251
|
} }
|
|
254
252
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
255
|
-
i0.ɵɵelementStart(0, "div",
|
|
253
|
+
i0.ɵɵelementStart(0, "div", 34)(1, "div", 15);
|
|
256
254
|
i0.ɵɵelement(2, "i", 16);
|
|
257
255
|
i0.ɵɵelementEnd();
|
|
258
|
-
i0.ɵɵelementStart(3, "div",
|
|
256
|
+
i0.ɵɵelementStart(3, "div", 35)(4, "div", 36)(5, "span", 18);
|
|
259
257
|
i0.ɵɵtext(6);
|
|
260
258
|
i0.ɵɵelementEnd();
|
|
261
|
-
i0.ɵɵconditionalCreate(7, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_7_Template, 2, 1, "span",
|
|
259
|
+
i0.ɵɵconditionalCreate(7, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_7_Template, 2, 1, "span", 37);
|
|
262
260
|
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵconditionalCreate(8, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_8_Template, 7, 3, "div",
|
|
261
|
+
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
262
|
i0.ɵɵelementEnd();
|
|
265
|
-
i0.ɵɵconditionalCreate(10, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Template, 3, 1, "div",
|
|
263
|
+
i0.ɵɵconditionalCreate(10, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Conditional_10_Template, 3, 1, "div", 40);
|
|
266
264
|
i0.ɵɵelementEnd();
|
|
267
265
|
} if (rf & 2) {
|
|
268
266
|
const permission_r7 = ctx.$implicit;
|
|
@@ -278,7 +276,7 @@ function CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Templa
|
|
|
278
276
|
} }
|
|
279
277
|
function CollectionShareModalComponent_Conditional_0_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
280
278
|
i0.ɵɵelementStart(0, "div", 11);
|
|
281
|
-
i0.ɵɵrepeaterCreate(1, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Template, 11, 4, "div",
|
|
279
|
+
i0.ɵɵrepeaterCreate(1, CollectionShareModalComponent_Conditional_0_Conditional_13_For_2_Template, 11, 4, "div", 34, _forTrack0);
|
|
282
280
|
i0.ɵɵelementEnd();
|
|
283
281
|
} if (rf & 2) {
|
|
284
282
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -302,7 +300,7 @@ function CollectionShareModalComponent_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
302
300
|
i0.ɵɵelement(10, "i", 9);
|
|
303
301
|
i0.ɵɵtext(11);
|
|
304
302
|
i0.ɵɵelementEnd();
|
|
305
|
-
i0.ɵɵconditionalCreate(12, CollectionShareModalComponent_Conditional_0_Conditional_12_Template,
|
|
303
|
+
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
304
|
i0.ɵɵelementEnd()();
|
|
307
305
|
i0.ɵɵelementStart(14, "div", 12)(15, "button", 13);
|
|
308
306
|
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()); });
|
|
@@ -323,6 +321,7 @@ function CollectionShareModalComponent_Conditional_0_Template(rf, ctx) { if (rf
|
|
|
323
321
|
export class CollectionShareModalComponent {
|
|
324
322
|
permissionService;
|
|
325
323
|
cdr;
|
|
324
|
+
confirmService;
|
|
326
325
|
isOpen = false;
|
|
327
326
|
collection = null;
|
|
328
327
|
currentUser;
|
|
@@ -339,9 +338,10 @@ export class CollectionShareModalComponent {
|
|
|
339
338
|
canEdit: false,
|
|
340
339
|
canDelete: false
|
|
341
340
|
};
|
|
342
|
-
constructor(permissionService, cdr) {
|
|
341
|
+
constructor(permissionService, cdr, confirmService) {
|
|
343
342
|
this.permissionService = permissionService;
|
|
344
343
|
this.cdr = cdr;
|
|
344
|
+
this.confirmService = confirmService;
|
|
345
345
|
}
|
|
346
346
|
async ngOnInit() {
|
|
347
347
|
if (this.collection) {
|
|
@@ -435,7 +435,7 @@ export class CollectionShareModalComponent {
|
|
|
435
435
|
};
|
|
436
436
|
// Validate permissions
|
|
437
437
|
if (!this.permissionService.validatePermissions(this.newPermissions, userPerms, isOwner)) {
|
|
438
|
-
|
|
438
|
+
MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);
|
|
439
439
|
return;
|
|
440
440
|
}
|
|
441
441
|
// Use cascade grant to apply permissions to all child collections
|
|
@@ -446,7 +446,7 @@ export class CollectionShareModalComponent {
|
|
|
446
446
|
}
|
|
447
447
|
catch (error) {
|
|
448
448
|
console.error('Error adding user:', error);
|
|
449
|
-
|
|
449
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to add user. Please try again.', 'error', 5000);
|
|
450
450
|
}
|
|
451
451
|
}
|
|
452
452
|
onEditPermission(permission) {
|
|
@@ -475,7 +475,7 @@ export class CollectionShareModalComponent {
|
|
|
475
475
|
};
|
|
476
476
|
// Validate permissions
|
|
477
477
|
if (!this.permissionService.validatePermissions(permission.editingPermissions, userPerms, isOwner)) {
|
|
478
|
-
|
|
478
|
+
MJNotificationService.Instance.CreateSimpleNotification('You cannot grant permissions you do not have', 'warning', 4000);
|
|
479
479
|
return;
|
|
480
480
|
}
|
|
481
481
|
// Use cascade update to apply changes to all child collections
|
|
@@ -485,11 +485,11 @@ export class CollectionShareModalComponent {
|
|
|
485
485
|
}
|
|
486
486
|
catch (error) {
|
|
487
487
|
console.error('Error updating permission:', error);
|
|
488
|
-
|
|
488
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to update permissions. Please try again.', 'error', 5000);
|
|
489
489
|
}
|
|
490
490
|
}
|
|
491
491
|
async onRevokePermission(permission) {
|
|
492
|
-
if (!
|
|
492
|
+
if (!(await this.confirmService.ConfirmDelete({ title: 'Remove Access', message: `Remove ${permission.userName}'s access to this collection and all its child collections?`, confirmText: 'Remove' }))) {
|
|
493
493
|
return;
|
|
494
494
|
}
|
|
495
495
|
try {
|
|
@@ -500,22 +500,22 @@ export class CollectionShareModalComponent {
|
|
|
500
500
|
}
|
|
501
501
|
catch (error) {
|
|
502
502
|
console.error('Error revoking permission:', error);
|
|
503
|
-
|
|
503
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to revoke permission. Please try again.', 'error', 5000);
|
|
504
504
|
}
|
|
505
505
|
}
|
|
506
506
|
onCancel() {
|
|
507
507
|
this.cancelled.emit();
|
|
508
508
|
}
|
|
509
|
-
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"], [
|
|
509
|
+
static ɵfac = function CollectionShareModalComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CollectionShareModalComponent)(i0.ɵɵdirectiveInject(i1.CollectionPermissionService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i2.MJConfirmService)); };
|
|
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"], ["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
511
|
i0.ɵɵconditionalCreate(0, CollectionShareModalComponent_Conditional_0_Template, 17, 11, "mj-window", 0);
|
|
512
512
|
} if (rf & 2) {
|
|
513
513
|
i0.ɵɵconditional(ctx.isOpen && ctx.collection ? 0 : -1);
|
|
514
|
-
} }, dependencies: [FormsModule,
|
|
514
|
+
} }, dependencies: [FormsModule, i3.CheckboxControlValueAccessor, i3.NgControlStatus, i3.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
515
|
}
|
|
516
516
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CollectionShareModalComponent, [{
|
|
517
517
|
type: Component,
|
|
518
|
-
args: [{ selector: 'mj-collection-share-modal', standalone: true, imports: [FormsModule, MJWindowComponent, MJButtonDirective, UserPickerComponent], template: `
|
|
518
|
+
args: [{ selector: 'mj-collection-share-modal', standalone: true, imports: [FormsModule, MJWindowComponent, MJButtonDirective, MJEmptyStateComponent, UserPickerComponent], template: `
|
|
519
519
|
@if (isOpen && collection) {
|
|
520
520
|
<mj-window
|
|
521
521
|
[Title]="'Share: ' + collection.Name"
|
|
@@ -617,10 +617,10 @@ export class CollectionShareModalComponent {
|
|
|
617
617
|
</h3>
|
|
618
618
|
|
|
619
619
|
@if (permissions.length === 0) {
|
|
620
|
-
<
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
620
|
+
<mj-empty-state
|
|
621
|
+
Icon="fa-solid fa-user-slash"
|
|
622
|
+
Title="Not shared with anyone yet"
|
|
623
|
+
Size="compact" />
|
|
624
624
|
} @else {
|
|
625
625
|
<div class="permissions-list">
|
|
626
626
|
@for (permission of permissions; track permission.id) {
|
|
@@ -716,8 +716,8 @@ export class CollectionShareModalComponent {
|
|
|
716
716
|
</div>
|
|
717
717
|
</mj-window>
|
|
718
718
|
}
|
|
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.
|
|
720
|
-
}], () => [{ type: i1.CollectionPermissionService }, { type: i0.ChangeDetectorRef }], { isOpen: [{
|
|
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.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
|
+
}], () => [{ type: i1.CollectionPermissionService }, { type: i0.ChangeDetectorRef }, { type: i2.MJConfirmService }], { isOpen: [{
|
|
721
721
|
type: Input
|
|
722
722
|
}], collection: [{
|
|
723
723
|
type: Input
|
|
@@ -730,5 +730,5 @@ export class CollectionShareModalComponent {
|
|
|
730
730
|
}], cancelled: [{
|
|
731
731
|
type: Output
|
|
732
732
|
}] }); })();
|
|
733
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionShareModalComponent, { className: "CollectionShareModalComponent", filePath: "src/lib/components/collection/collection-share-modal.component.ts", lineNumber:
|
|
733
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CollectionShareModalComponent, { className: "CollectionShareModalComponent", filePath: "src/lib/components/collection/collection-share-modal.component.ts", lineNumber: 225 }); })();
|
|
734
734
|
//# sourceMappingURL=collection-share-modal.component.js.map
|