@propbinder/mobile-design 0.2.48 → 0.2.50
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/ng-package.json +24 -0
- package/package.json +3 -39
- package/src/animations/page-transitions.ts +165 -0
- package/src/assets/fonts/brockmann-mediumitalic-webfont.woff2 +0 -0
- package/src/assets/fonts/brockmann-regularitalic-webfont.woff2 +0 -0
- package/src/assets/fonts/brockmann-semibolditalic-webfont.woff2 +0 -0
- package/src/components/action-list-item/ds-mobile-action-list-item.ts +102 -0
- package/src/components/action-list-item/index.ts +2 -0
- package/src/components/app-icon/ds-app-icon.ts +133 -0
- package/src/components/app-icon/index.ts +2 -0
- package/src/components/attachment-preview/ds-mobile-attachment-preview.css +139 -0
- package/src/components/attachment-preview/ds-mobile-attachment-preview.ts +164 -0
- package/src/components/attachment-preview/index.ts +1 -0
- package/src/components/avatar-with-badge/ds-avatar-with-badge.ts +142 -0
- package/src/components/avatar-with-badge/index.ts +2 -0
- package/src/components/booking-modal/ds-mobile-booking-confirmation-wrapper.ts +71 -0
- package/src/components/booking-modal/ds-mobile-booking-modal.service.ts +121 -0
- package/src/components/booking-modal/ds-mobile-booking-modal.ts +598 -0
- package/src/components/booking-modal/ds-mobile-booking-summary.ts +161 -0
- package/src/components/booking-modal/index.ts +4 -0
- package/src/components/bottom-sheet/ds-mobile-actions-bottom-sheet.ts +266 -0
- package/src/components/bottom-sheet/ds-mobile-bottom-sheet-header.ts +146 -0
- package/src/components/bottom-sheet/ds-mobile-bottom-sheet-wrapper.ts +156 -0
- package/src/components/bottom-sheet/ds-mobile-bottom-sheet.css +101 -0
- package/src/components/bottom-sheet/ds-mobile-bottom-sheet.service.ts +169 -0
- package/src/components/bottom-sheet/ds-mobile-confirmation-sheet.ts +211 -0
- package/src/components/bottom-sheet/ds-mobile-post-create-bottom-sheet.ts +578 -0
- package/src/components/bottom-sheet/ds-mobile-profile-actions-sheet.ts +614 -0
- package/src/components/bottom-sheet/index.ts +8 -0
- package/src/components/bottom-sheet/modal-shadow-fix.ts +42 -0
- package/src/components/card-inline/ds-mobile-card-inline.ts +301 -0
- package/src/components/card-inline/index.ts +2 -0
- package/src/components/card-inline-banner/ds-mobile-card-inline-banner.ts +118 -0
- package/src/components/card-inline-banner/index.ts +1 -0
- package/src/components/card-inline-contact/ds-mobile-card-inline-contact.ts +120 -0
- package/src/components/card-inline-contact/index.ts +1 -0
- package/src/components/card-inline-file/ds-mobile-card-inline-file.ts +141 -0
- package/src/components/card-inline-file/index.ts +1 -0
- package/src/components/chat-modal/ds-mobile-chat-modal.css +159 -0
- package/src/components/chat-modal/ds-mobile-chat-modal.service.ts +105 -0
- package/src/components/chat-modal/ds-mobile-chat-modal.ts +918 -0
- package/src/components/chat-modal/index.ts +8 -0
- package/src/components/comment/ds-mobile-comment.ts +568 -0
- package/src/components/comment/index.ts +2 -0
- package/src/components/contact-list-item/ds-mobile-contact-list-item.ts +182 -0
- package/src/components/contact-list-item/index.ts +2 -0
- package/src/components/content/ds-mobile-content.ts +139 -0
- package/src/components/content/index.ts +2 -0
- package/src/components/dropdown/ds-mobile-dropdown.css +199 -0
- package/src/components/dropdown/ds-mobile-dropdown.ts +340 -0
- package/src/components/dropdown/index.ts +2 -0
- package/src/components/ds-mobile-tabs.css +407 -0
- package/src/components/ds-mobile-tabs.ts +216 -0
- package/src/components/empty-state/ds-mobile-empty-state.ts +120 -0
- package/src/components/empty-state/index.ts +2 -0
- package/src/components/fab/ds-mobile-fab.ts +315 -0
- package/src/components/fab/index.ts +1 -0
- package/src/components/facility-creation-modal/ds-mobile-facility-creation-confirmation-wrapper.ts +121 -0
- package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.css +189 -0
- package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.service.ts +135 -0
- package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.ts +656 -0
- package/src/components/facility-creation-modal/index.ts +9 -0
- package/src/components/facility-creation-modal/sheets/ds-mobile-access-sheet.ts +105 -0
- package/src/components/facility-creation-modal/sheets/ds-mobile-price-sheet.ts +188 -0
- package/src/components/facility-creation-modal/sheets/ds-mobile-when-can-book-sheet.ts +460 -0
- package/src/components/facility-creation-modal/sheets/ds-mobile-who-can-book-sheet.ts +134 -0
- package/src/components/facility-detail-modal/ds-mobile-facility-detail-modal.service.ts +69 -0
- package/src/components/facility-detail-modal/ds-mobile-facility-detail-modal.ts +379 -0
- package/src/components/facility-detail-modal/index.ts +2 -0
- package/src/components/file-attachment/ds-mobile-file-attachment.ts +164 -0
- package/src/components/file-attachment/index.ts +2 -0
- package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.css +214 -0
- package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.service.ts +84 -0
- package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.ts +424 -0
- package/src/components/handbook-detail-modal/index.ts +3 -0
- package/src/components/handbook-folder/ds-mobile-handbook-folder-mini.ts +175 -0
- package/src/components/handbook-folder/ds-mobile-handbook-folder.ts +533 -0
- package/src/components/handbook-folder/index.ts +4 -0
- package/src/components/header-content/ds-mobile-header-content.ts +222 -0
- package/src/components/header-content/index.ts +2 -0
- package/src/components/illustration/ds-mobile-illustration.ts +124 -0
- package/src/components/illustration/index.ts +2 -0
- package/src/components/index.ts +124 -0
- package/src/components/inline-photo/ds-mobile-inline-photo.ts +361 -0
- package/src/components/inline-photo/index.ts +1 -0
- package/src/components/inline-tabs/ds-mobile-inline-tabs.ts +132 -0
- package/src/components/inline-tabs/index.ts +2 -0
- package/src/components/interactive-list-item-booking/ds-mobile-interactive-list-item-booking.ts +350 -0
- package/src/components/interactive-list-item-booking/index.ts +1 -0
- package/src/components/interactive-list-item-inquiry/ds-mobile-interactive-list-item-inquiry.ts +321 -0
- package/src/components/interactive-list-item-inquiry/index.ts +2 -0
- package/src/components/interactive-list-item-message/ds-mobile-interactive-list-item-message.ts +237 -0
- package/src/components/interactive-list-item-message/index.ts +2 -0
- package/src/components/interactive-list-item-post/ds-mobile-interactive-list-item-post.ts +549 -0
- package/src/components/interactive-list-item-post/ds-mobile-post-pdf-attachment.ts +124 -0
- package/src/components/interactive-list-item-post/index.ts +13 -0
- package/src/components/lightbox/ds-mobile-lightbox-footer.ts +315 -0
- package/src/components/lightbox/ds-mobile-lightbox-header.ts +202 -0
- package/src/components/lightbox/ds-mobile-lightbox-image.ts +484 -0
- package/src/components/lightbox/ds-mobile-lightbox-pdf.css +377 -0
- package/src/components/lightbox/ds-mobile-lightbox-pdf.ts +374 -0
- package/src/components/lightbox/ds-mobile-lightbox.css +587 -0
- package/src/components/lightbox/ds-mobile-lightbox.service.ts +296 -0
- package/src/components/lightbox/ds-mobile-lightbox.ts +529 -0
- package/src/components/lightbox/index.ts +22 -0
- package/src/components/list-item/ds-mobile-list-item.ts +603 -0
- package/src/components/list-item/index.ts +2 -0
- package/src/components/list-item-static/ds-mobile-list-item-static.ts +133 -0
- package/src/components/list-item-static/index.ts +2 -0
- package/src/components/loader-overlay/ds-mobile-loader-overlay.css +49 -0
- package/src/components/loader-overlay/ds-mobile-loader-overlay.ts +77 -0
- package/src/components/loader-overlay/index.ts +1 -0
- package/src/components/logo/ds-logo.ts +95 -0
- package/src/components/logo/index.ts +2 -0
- package/src/components/message-bubble/ds-mobile-message-bubble.ts +633 -0
- package/src/components/message-bubble/index.ts +7 -0
- package/src/components/message-composer/ds-mobile-message-composer.ts +1146 -0
- package/src/components/message-composer/index.ts +7 -0
- package/src/components/modal/ds-mobile-modal.css +163 -0
- package/src/components/modal/ds-mobile-modal.service.ts +329 -0
- package/src/components/modal/index.ts +8 -0
- package/src/components/modal-base/ds-mobile-modal-base.css +378 -0
- package/src/components/modal-base/ds-mobile-modal-base.ts +261 -0
- package/src/components/modal-base/index.ts +2 -0
- package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.css +112 -0
- package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.service.ts +93 -0
- package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.ts +442 -0
- package/src/components/new-inquiry-modal/index.ts +4 -0
- package/src/components/offline-banner/ds-mobile-offline-banner.ts +135 -0
- package/src/components/offline-banner/index.ts +1 -0
- package/src/components/page-details/ds-mobile-page-details.css +83 -0
- package/src/components/page-details/ds-mobile-page-details.ts +282 -0
- package/src/components/page-details/index.ts +2 -0
- package/src/components/page-main/ds-mobile-page-main.css +68 -0
- package/src/components/page-main/ds-mobile-page-main.ts +421 -0
- package/src/components/page-main/index.ts +2 -0
- package/src/components/post-composer/ds-mobile-post-composer.ts +140 -0
- package/src/components/post-composer/index.ts +2 -0
- package/src/components/post-detail-modal/ds-mobile-post-detail-modal.css +390 -0
- package/src/components/post-detail-modal/ds-mobile-post-detail-modal.service.ts +108 -0
- package/src/components/post-detail-modal/ds-mobile-post-detail-modal.ts +722 -0
- package/src/components/post-detail-modal/index.ts +9 -0
- package/src/components/property-banner/ds-mobile-property-banner.ts +95 -0
- package/src/components/property-banner/index.ts +2 -0
- package/src/components/section/ds-mobile-section.ts +263 -0
- package/src/components/section/index.ts +2 -0
- package/src/components/shared/directives/index.ts +2 -0
- package/src/components/shared/directives/long-press.directive.ts +212 -0
- package/src/components/shared/index.ts +3 -0
- package/src/components/shared/mobile-modal-base.ts +457 -0
- package/src/components/shared/mobile-page-base.ts +204 -0
- package/src/components/swiper/ds-mobile-swiper-with-nav.ts +160 -0
- package/src/components/swiper/ds-mobile-swiper.ts +327 -0
- package/src/components/swiper/index.ts +3 -0
- package/src/components/system-message-banner/ds-mobile-system-message-banner.ts +129 -0
- package/src/components/system-message-banner/index.ts +2 -0
- package/src/components/tab-bar/ds-mobile-tab-bar.css +533 -0
- package/src/components/tab-bar/ds-mobile-tab-bar.ts +735 -0
- package/src/components/tab-bar/index.ts +2 -0
- package/src/components/tabs/ds-mobile-tabs.css +25 -0
- package/src/components/tabs/ds-mobile-tabs.ts +89 -0
- package/src/components/tabs/index.ts +2 -0
- package/src/components/text-input/ds-text-input.ts +287 -0
- package/src/components/text-input/index.ts +2 -0
- package/src/examples/booking.page.ts +434 -0
- package/src/examples/community.page.ts +776 -0
- package/src/examples/handbook.page.ts +324 -0
- package/src/examples/home.page.ts +347 -0
- package/src/examples/index.ts +12 -0
- package/src/examples/inquiries.example.ts +273 -0
- package/src/examples/inquiry-detail.example.css +189 -0
- package/src/examples/inquiry-detail.example.ts +415 -0
- package/src/examples/mobile-tabs-example.component.ts +208 -0
- package/src/examples/post-create.page.ts +311 -0
- package/src/examples/post-detail.page.ts +296 -0
- package/src/examples/sign-in.page.ts +291 -0
- package/src/examples/whitelabel-demo-modal.component.ts +1094 -0
- package/src/examples/whitelabel-demo-modal.service.ts +77 -0
- package/src/models/index.ts +7 -0
- package/src/models/post.model.ts +41 -0
- package/src/pages/community.page.ts +769 -0
- package/src/pages/handbook.page.ts +388 -0
- package/src/pages/home.page.ts +303 -0
- package/src/pages/index.ts +11 -0
- package/src/pages/inquiries.example.ts +273 -0
- package/src/pages/inquiry-detail.example.css +189 -0
- package/src/pages/inquiry-detail.example.ts +415 -0
- package/src/pages/mobile-tabs-example.component.ts +179 -0
- package/src/pages/post-create.page.ts +311 -0
- package/src/pages/post-detail.page.ts +296 -0
- package/src/pages/sign-in.page.ts +291 -0
- package/src/pages/whitelabel-demo-modal.component.ts +1094 -0
- package/src/pages/whitelabel-demo-modal.service.ts +77 -0
- package/src/public-api.ts +6 -0
- package/src/services/base-modal.service.ts +101 -0
- package/src/services/index.ts +11 -0
- package/src/services/posts.service.ts +542 -0
- package/src/services/tracking-permission.service.ts +88 -0
- package/src/services/user.service.ts +60 -0
- package/src/services/whitelabel.service.ts +675 -0
- package/{styles → src/styles}/ionic.css +25 -0
- package/tsconfig.lib.json +17 -0
- package/tsconfig.lib.prod.json +9 -0
- package/tsconfig.spec.json +13 -0
- package/fesm2022/propbinder-mobile-design.mjs +0 -26168
- package/fesm2022/propbinder-mobile-design.mjs.map +0 -1
- package/index.d.ts +0 -8169
- /package/{assets → src/assets}/fonts/Brockmann-Bold.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann-BoldItalic.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann-Medium.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann-MediumItalic.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann-Regular.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann-RegularItalic.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann-SemiBold.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann-SemiBoldItalic.otf +0 -0
- /package/{assets → src/assets}/fonts/Brockmann_desktop_license.pdf +0 -0
- /package/{assets → src/assets}/fonts/brockmann-medium-webfont.woff2 +0 -0
- /package/{assets → src/assets}/fonts/brockmann-regular-webfont.woff2 +0 -0
- /package/{assets → src/assets}/fonts/brockmann-semibold-webfont.woff2 +0 -0
- /package/{styles → src/components/shared}/mobile-common.css +0 -0
- /package/{styles → src/components/shared}/mobile-page-base.css +0 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { Injectable, ApplicationRef, ComponentRef, createComponent, EnvironmentInjector, Injector } from '@angular/core';
|
|
2
|
+
import { DsMobileLightboxImageComponent } from './ds-mobile-lightbox-image';
|
|
3
|
+
import { DsMobileLightboxPdfComponent } from './ds-mobile-lightbox-pdf';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Media file types supported by the lightbox
|
|
7
|
+
*/
|
|
8
|
+
export type LightboxMediaType = 'image' | 'pdf';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Base media file interface
|
|
12
|
+
*/
|
|
13
|
+
export interface LightboxMediaFile {
|
|
14
|
+
/** File source URL */
|
|
15
|
+
src: string;
|
|
16
|
+
/** Media type - determines which viewer to use */
|
|
17
|
+
type: LightboxMediaType;
|
|
18
|
+
/** File title */
|
|
19
|
+
title?: string;
|
|
20
|
+
/** File description */
|
|
21
|
+
description?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Image data for lightbox display
|
|
26
|
+
*/
|
|
27
|
+
export interface LightboxImage extends LightboxMediaFile {
|
|
28
|
+
type: 'image';
|
|
29
|
+
/** Alt text for accessibility */
|
|
30
|
+
alt?: string;
|
|
31
|
+
/** Thumbnail URL for faster loading (optional) */
|
|
32
|
+
thumbnail?: string;
|
|
33
|
+
/** Whether the image is liked */
|
|
34
|
+
isLiked?: boolean;
|
|
35
|
+
/** Number of likes */
|
|
36
|
+
likeCount?: number;
|
|
37
|
+
/** Number of comments */
|
|
38
|
+
commentCount?: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* PDF document data for lightbox display
|
|
43
|
+
*/
|
|
44
|
+
export interface LightboxPdf extends LightboxMediaFile {
|
|
45
|
+
type: 'pdf';
|
|
46
|
+
/** File size in bytes (optional, for display) */
|
|
47
|
+
fileSize?: number;
|
|
48
|
+
/** Number of pages (optional, for display) */
|
|
49
|
+
pageCount?: number;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Author metadata for the lightbox
|
|
54
|
+
*/
|
|
55
|
+
export interface LightboxAuthor {
|
|
56
|
+
/** Author name */
|
|
57
|
+
name: string;
|
|
58
|
+
/** Author role/subtitle */
|
|
59
|
+
role?: string;
|
|
60
|
+
/** Author avatar URL */
|
|
61
|
+
avatarSrc?: string;
|
|
62
|
+
/** Author avatar initials (if no photo) */
|
|
63
|
+
avatarInitials?: string;
|
|
64
|
+
/** Avatar type */
|
|
65
|
+
avatarType?: 'photo' | 'initials';
|
|
66
|
+
/** Timestamp */
|
|
67
|
+
timestamp?: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Configuration options for image lightbox
|
|
72
|
+
*/
|
|
73
|
+
export interface LightboxImageOptions {
|
|
74
|
+
/** Array of images to display */
|
|
75
|
+
images: LightboxImage[];
|
|
76
|
+
/** Author information to display in header */
|
|
77
|
+
author?: LightboxAuthor;
|
|
78
|
+
/** Initial image index to show (0-based) */
|
|
79
|
+
initialIndex?: number;
|
|
80
|
+
/** Enable pinch-to-zoom and double-tap zoom */
|
|
81
|
+
enableZoom?: boolean;
|
|
82
|
+
/** Show navigation controls (arrows, counter) */
|
|
83
|
+
showControls?: boolean;
|
|
84
|
+
/** Enable swipe gestures to navigate between images */
|
|
85
|
+
enableSwipe?: boolean;
|
|
86
|
+
/** Show image info (title, description) */
|
|
87
|
+
showInfo?: boolean;
|
|
88
|
+
/** Show like & comment action buttons */
|
|
89
|
+
showActions?: boolean;
|
|
90
|
+
/** Animation type for opening */
|
|
91
|
+
animation?: 'fade' | 'zoom' | 'slide';
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Configuration options for PDF lightbox
|
|
96
|
+
*/
|
|
97
|
+
export interface LightboxPdfOptions {
|
|
98
|
+
/** PDF document to display */
|
|
99
|
+
pdf: LightboxPdf;
|
|
100
|
+
/** Author information to display */
|
|
101
|
+
author?: LightboxAuthor;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Generic lightbox options (for backward compatibility)
|
|
106
|
+
*/
|
|
107
|
+
export type LightboxOptions = LightboxImageOptions;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* DsMobileLightboxService
|
|
111
|
+
*
|
|
112
|
+
* Service for displaying media files (images and PDFs) in full-screen viewers.
|
|
113
|
+
* - Images: Full-screen modal with gestures (pinch-zoom, swipe navigation)
|
|
114
|
+
* - PDFs: Native device PDF viewer (iOS/Android)
|
|
115
|
+
*
|
|
116
|
+
* Features:
|
|
117
|
+
* - Full-screen image viewing with gestures
|
|
118
|
+
* - Native PDF viewing
|
|
119
|
+
* - Swipe navigation between images
|
|
120
|
+
* - Pinch-to-zoom and double-tap zoom for images
|
|
121
|
+
* - Mobile-optimized touch gestures
|
|
122
|
+
* - Share functionality
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* constructor(private lightbox: DsMobileLightboxService) {}
|
|
127
|
+
*
|
|
128
|
+
* // Open images
|
|
129
|
+
* async openImages() {
|
|
130
|
+
* const modal = await this.lightbox.openImages({
|
|
131
|
+
* images: [
|
|
132
|
+
* {
|
|
133
|
+
* type: 'image',
|
|
134
|
+
* src: 'https://example.com/image1.jpg',
|
|
135
|
+
* title: 'Beautiful Sunset'
|
|
136
|
+
* }
|
|
137
|
+
* ]
|
|
138
|
+
* });
|
|
139
|
+
*
|
|
140
|
+
* // Listen for when lightbox is dismissed
|
|
141
|
+
* const { data } = await modal.onDidDismiss();
|
|
142
|
+
* if (data?.action === 'comment') {
|
|
143
|
+
* // Open post detail modal with comment focus
|
|
144
|
+
* this.openPostDetail({ focusComment: true });
|
|
145
|
+
* }
|
|
146
|
+
* }
|
|
147
|
+
*
|
|
148
|
+
* // Open PDF
|
|
149
|
+
* async openPdf() {
|
|
150
|
+
* await this.lightbox.openPdf({
|
|
151
|
+
* pdf: {
|
|
152
|
+
* type: 'pdf',
|
|
153
|
+
* src: 'https://example.com/document.pdf',
|
|
154
|
+
* title: 'Document'
|
|
155
|
+
* }
|
|
156
|
+
* });
|
|
157
|
+
* }
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
@Injectable({
|
|
161
|
+
providedIn: 'root'
|
|
162
|
+
})
|
|
163
|
+
export class DsMobileLightboxService {
|
|
164
|
+
private currentLightbox: ComponentRef<any> | null = null;
|
|
165
|
+
|
|
166
|
+
constructor(
|
|
167
|
+
private appRef: ApplicationRef,
|
|
168
|
+
private injector: EnvironmentInjector
|
|
169
|
+
) {}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Open the lightbox with images (backward compatible method)
|
|
173
|
+
*
|
|
174
|
+
* @param options Configuration options for the image lightbox
|
|
175
|
+
* @returns Promise that resolves to a dismiss function
|
|
176
|
+
*/
|
|
177
|
+
async open(options: LightboxOptions): Promise<() => void> {
|
|
178
|
+
return this.openImages(options);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Open the image lightbox with one or more images
|
|
183
|
+
*
|
|
184
|
+
* @param options Configuration options for the image lightbox
|
|
185
|
+
* @returns Promise that resolves to a dismiss function
|
|
186
|
+
*/
|
|
187
|
+
async openImages(options: LightboxImageOptions): Promise<() => void> {
|
|
188
|
+
console.log('[Lightbox] Opening images with options:', options);
|
|
189
|
+
|
|
190
|
+
// Close any existing lightbox
|
|
191
|
+
if (this.currentLightbox) {
|
|
192
|
+
this.close();
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Create the component
|
|
196
|
+
const componentRef = createComponent(DsMobileLightboxImageComponent, {
|
|
197
|
+
environmentInjector: this.injector
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// Set component props
|
|
201
|
+
componentRef.instance.images = options.images;
|
|
202
|
+
componentRef.instance.author = options.author;
|
|
203
|
+
componentRef.instance.initialIndex = options.initialIndex ?? 0;
|
|
204
|
+
componentRef.instance.enableZoom = options.enableZoom !== false;
|
|
205
|
+
componentRef.instance.showControls = options.showControls !== false;
|
|
206
|
+
componentRef.instance.enableSwipe = options.enableSwipe !== false;
|
|
207
|
+
componentRef.instance.showInfo = options.showInfo !== false;
|
|
208
|
+
componentRef.instance.showActions = options.showActions ?? false;
|
|
209
|
+
componentRef.instance.animation = options.animation ?? 'fade';
|
|
210
|
+
|
|
211
|
+
// Set up close callback
|
|
212
|
+
componentRef.instance.onCloseRequested = () => {
|
|
213
|
+
this.close();
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
// Attach to application
|
|
217
|
+
this.appRef.attachView(componentRef.hostView);
|
|
218
|
+
|
|
219
|
+
// Append to body
|
|
220
|
+
const domElem = (componentRef.hostView as any).rootNodes[0] as HTMLElement;
|
|
221
|
+
document.body.appendChild(domElem);
|
|
222
|
+
|
|
223
|
+
// Store reference
|
|
224
|
+
this.currentLightbox = componentRef;
|
|
225
|
+
|
|
226
|
+
console.log('[Lightbox] Image lightbox rendered');
|
|
227
|
+
|
|
228
|
+
// Return dismiss function
|
|
229
|
+
return () => this.close();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Open the PDF lightbox (opens native PDF viewer)
|
|
234
|
+
*
|
|
235
|
+
* @param options Configuration options for the PDF lightbox
|
|
236
|
+
* @returns Promise that resolves to a dismiss function
|
|
237
|
+
*/
|
|
238
|
+
async openPdf(options: LightboxPdfOptions): Promise<() => void> {
|
|
239
|
+
console.log('[Lightbox] Opening PDF with options:', options);
|
|
240
|
+
|
|
241
|
+
// Close any existing lightbox
|
|
242
|
+
if (this.currentLightbox) {
|
|
243
|
+
this.close();
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Create the component
|
|
247
|
+
const componentRef = createComponent(DsMobileLightboxPdfComponent, {
|
|
248
|
+
environmentInjector: this.injector
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// Set component props
|
|
252
|
+
componentRef.instance.pdf = options.pdf;
|
|
253
|
+
componentRef.instance.author = options.author;
|
|
254
|
+
|
|
255
|
+
// Set up close callback
|
|
256
|
+
componentRef.instance.onCloseRequested = () => {
|
|
257
|
+
this.close();
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
// Attach to application
|
|
261
|
+
this.appRef.attachView(componentRef.hostView);
|
|
262
|
+
|
|
263
|
+
// Append to body
|
|
264
|
+
const domElem = (componentRef.hostView as any).rootNodes[0] as HTMLElement;
|
|
265
|
+
document.body.appendChild(domElem);
|
|
266
|
+
|
|
267
|
+
// Store reference
|
|
268
|
+
this.currentLightbox = componentRef;
|
|
269
|
+
|
|
270
|
+
console.log('[Lightbox] PDF lightbox rendered');
|
|
271
|
+
|
|
272
|
+
// Return dismiss function
|
|
273
|
+
return () => this.close();
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Close the currently open lightbox
|
|
278
|
+
*/
|
|
279
|
+
close(): void {
|
|
280
|
+
if (this.currentLightbox) {
|
|
281
|
+
const domElem = (this.currentLightbox.hostView as any).rootNodes[0] as HTMLElement;
|
|
282
|
+
domElem.remove();
|
|
283
|
+
this.appRef.detachView(this.currentLightbox.hostView);
|
|
284
|
+
this.currentLightbox.destroy();
|
|
285
|
+
this.currentLightbox = null;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Check if a lightbox is currently open
|
|
291
|
+
*/
|
|
292
|
+
isOpen(): boolean {
|
|
293
|
+
return this.currentLightbox !== null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|