@propbinder/mobile-design 0.2.50 → 0.2.52

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.
Files changed (221) hide show
  1. package/fesm2022/propbinder-mobile-design.mjs +26206 -0
  2. package/fesm2022/propbinder-mobile-design.mjs.map +1 -0
  3. package/index.d.ts +8193 -0
  4. package/package.json +39 -3
  5. package/ng-package.json +0 -24
  6. package/src/animations/page-transitions.ts +0 -165
  7. package/src/components/action-list-item/ds-mobile-action-list-item.ts +0 -102
  8. package/src/components/action-list-item/index.ts +0 -2
  9. package/src/components/app-icon/ds-app-icon.ts +0 -133
  10. package/src/components/app-icon/index.ts +0 -2
  11. package/src/components/attachment-preview/ds-mobile-attachment-preview.css +0 -139
  12. package/src/components/attachment-preview/ds-mobile-attachment-preview.ts +0 -164
  13. package/src/components/attachment-preview/index.ts +0 -1
  14. package/src/components/avatar-with-badge/ds-avatar-with-badge.ts +0 -142
  15. package/src/components/avatar-with-badge/index.ts +0 -2
  16. package/src/components/booking-modal/ds-mobile-booking-confirmation-wrapper.ts +0 -71
  17. package/src/components/booking-modal/ds-mobile-booking-modal.service.ts +0 -121
  18. package/src/components/booking-modal/ds-mobile-booking-modal.ts +0 -598
  19. package/src/components/booking-modal/ds-mobile-booking-summary.ts +0 -161
  20. package/src/components/booking-modal/index.ts +0 -4
  21. package/src/components/bottom-sheet/ds-mobile-actions-bottom-sheet.ts +0 -266
  22. package/src/components/bottom-sheet/ds-mobile-bottom-sheet-header.ts +0 -146
  23. package/src/components/bottom-sheet/ds-mobile-bottom-sheet-wrapper.ts +0 -156
  24. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.css +0 -101
  25. package/src/components/bottom-sheet/ds-mobile-bottom-sheet.service.ts +0 -169
  26. package/src/components/bottom-sheet/ds-mobile-confirmation-sheet.ts +0 -211
  27. package/src/components/bottom-sheet/ds-mobile-post-create-bottom-sheet.ts +0 -578
  28. package/src/components/bottom-sheet/ds-mobile-profile-actions-sheet.ts +0 -614
  29. package/src/components/bottom-sheet/index.ts +0 -8
  30. package/src/components/bottom-sheet/modal-shadow-fix.ts +0 -42
  31. package/src/components/card-inline/ds-mobile-card-inline.ts +0 -301
  32. package/src/components/card-inline/index.ts +0 -2
  33. package/src/components/card-inline-banner/ds-mobile-card-inline-banner.ts +0 -118
  34. package/src/components/card-inline-banner/index.ts +0 -1
  35. package/src/components/card-inline-contact/ds-mobile-card-inline-contact.ts +0 -120
  36. package/src/components/card-inline-contact/index.ts +0 -1
  37. package/src/components/card-inline-file/ds-mobile-card-inline-file.ts +0 -141
  38. package/src/components/card-inline-file/index.ts +0 -1
  39. package/src/components/chat-modal/ds-mobile-chat-modal.css +0 -159
  40. package/src/components/chat-modal/ds-mobile-chat-modal.service.ts +0 -105
  41. package/src/components/chat-modal/ds-mobile-chat-modal.ts +0 -918
  42. package/src/components/chat-modal/index.ts +0 -8
  43. package/src/components/comment/ds-mobile-comment.ts +0 -568
  44. package/src/components/comment/index.ts +0 -2
  45. package/src/components/contact-list-item/ds-mobile-contact-list-item.ts +0 -182
  46. package/src/components/contact-list-item/index.ts +0 -2
  47. package/src/components/content/ds-mobile-content.ts +0 -139
  48. package/src/components/content/index.ts +0 -2
  49. package/src/components/dropdown/ds-mobile-dropdown.css +0 -199
  50. package/src/components/dropdown/ds-mobile-dropdown.ts +0 -340
  51. package/src/components/dropdown/index.ts +0 -2
  52. package/src/components/ds-mobile-tabs.css +0 -407
  53. package/src/components/ds-mobile-tabs.ts +0 -216
  54. package/src/components/empty-state/ds-mobile-empty-state.ts +0 -120
  55. package/src/components/empty-state/index.ts +0 -2
  56. package/src/components/fab/ds-mobile-fab.ts +0 -315
  57. package/src/components/fab/index.ts +0 -1
  58. package/src/components/facility-creation-modal/ds-mobile-facility-creation-confirmation-wrapper.ts +0 -121
  59. package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.css +0 -189
  60. package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.service.ts +0 -135
  61. package/src/components/facility-creation-modal/ds-mobile-facility-creation-modal.ts +0 -656
  62. package/src/components/facility-creation-modal/index.ts +0 -9
  63. package/src/components/facility-creation-modal/sheets/ds-mobile-access-sheet.ts +0 -105
  64. package/src/components/facility-creation-modal/sheets/ds-mobile-price-sheet.ts +0 -188
  65. package/src/components/facility-creation-modal/sheets/ds-mobile-when-can-book-sheet.ts +0 -460
  66. package/src/components/facility-creation-modal/sheets/ds-mobile-who-can-book-sheet.ts +0 -134
  67. package/src/components/facility-detail-modal/ds-mobile-facility-detail-modal.service.ts +0 -69
  68. package/src/components/facility-detail-modal/ds-mobile-facility-detail-modal.ts +0 -379
  69. package/src/components/facility-detail-modal/index.ts +0 -2
  70. package/src/components/file-attachment/ds-mobile-file-attachment.ts +0 -164
  71. package/src/components/file-attachment/index.ts +0 -2
  72. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.css +0 -214
  73. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.service.ts +0 -84
  74. package/src/components/handbook-detail-modal/ds-mobile-handbook-detail-modal.ts +0 -424
  75. package/src/components/handbook-detail-modal/index.ts +0 -3
  76. package/src/components/handbook-folder/ds-mobile-handbook-folder-mini.ts +0 -175
  77. package/src/components/handbook-folder/ds-mobile-handbook-folder.ts +0 -533
  78. package/src/components/handbook-folder/index.ts +0 -4
  79. package/src/components/header-content/ds-mobile-header-content.ts +0 -222
  80. package/src/components/header-content/index.ts +0 -2
  81. package/src/components/illustration/ds-mobile-illustration.ts +0 -124
  82. package/src/components/illustration/index.ts +0 -2
  83. package/src/components/index.ts +0 -124
  84. package/src/components/inline-photo/ds-mobile-inline-photo.ts +0 -361
  85. package/src/components/inline-photo/index.ts +0 -1
  86. package/src/components/inline-tabs/ds-mobile-inline-tabs.ts +0 -132
  87. package/src/components/inline-tabs/index.ts +0 -2
  88. package/src/components/interactive-list-item-booking/ds-mobile-interactive-list-item-booking.ts +0 -350
  89. package/src/components/interactive-list-item-booking/index.ts +0 -1
  90. package/src/components/interactive-list-item-inquiry/ds-mobile-interactive-list-item-inquiry.ts +0 -321
  91. package/src/components/interactive-list-item-inquiry/index.ts +0 -2
  92. package/src/components/interactive-list-item-message/ds-mobile-interactive-list-item-message.ts +0 -237
  93. package/src/components/interactive-list-item-message/index.ts +0 -2
  94. package/src/components/interactive-list-item-post/ds-mobile-interactive-list-item-post.ts +0 -549
  95. package/src/components/interactive-list-item-post/ds-mobile-post-pdf-attachment.ts +0 -124
  96. package/src/components/interactive-list-item-post/index.ts +0 -13
  97. package/src/components/lightbox/ds-mobile-lightbox-footer.ts +0 -315
  98. package/src/components/lightbox/ds-mobile-lightbox-header.ts +0 -202
  99. package/src/components/lightbox/ds-mobile-lightbox-image.ts +0 -484
  100. package/src/components/lightbox/ds-mobile-lightbox-pdf.css +0 -377
  101. package/src/components/lightbox/ds-mobile-lightbox-pdf.ts +0 -374
  102. package/src/components/lightbox/ds-mobile-lightbox.css +0 -587
  103. package/src/components/lightbox/ds-mobile-lightbox.service.ts +0 -296
  104. package/src/components/lightbox/ds-mobile-lightbox.ts +0 -529
  105. package/src/components/lightbox/index.ts +0 -22
  106. package/src/components/list-item/ds-mobile-list-item.ts +0 -603
  107. package/src/components/list-item/index.ts +0 -2
  108. package/src/components/list-item-static/ds-mobile-list-item-static.ts +0 -133
  109. package/src/components/list-item-static/index.ts +0 -2
  110. package/src/components/loader-overlay/ds-mobile-loader-overlay.css +0 -49
  111. package/src/components/loader-overlay/ds-mobile-loader-overlay.ts +0 -77
  112. package/src/components/loader-overlay/index.ts +0 -1
  113. package/src/components/logo/ds-logo.ts +0 -95
  114. package/src/components/logo/index.ts +0 -2
  115. package/src/components/message-bubble/ds-mobile-message-bubble.ts +0 -633
  116. package/src/components/message-bubble/index.ts +0 -7
  117. package/src/components/message-composer/ds-mobile-message-composer.ts +0 -1146
  118. package/src/components/message-composer/index.ts +0 -7
  119. package/src/components/modal/ds-mobile-modal.css +0 -163
  120. package/src/components/modal/ds-mobile-modal.service.ts +0 -329
  121. package/src/components/modal/index.ts +0 -8
  122. package/src/components/modal-base/ds-mobile-modal-base.css +0 -378
  123. package/src/components/modal-base/ds-mobile-modal-base.ts +0 -261
  124. package/src/components/modal-base/index.ts +0 -2
  125. package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.css +0 -112
  126. package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.service.ts +0 -93
  127. package/src/components/new-inquiry-modal/ds-mobile-new-inquiry-modal.ts +0 -442
  128. package/src/components/new-inquiry-modal/index.ts +0 -4
  129. package/src/components/offline-banner/ds-mobile-offline-banner.ts +0 -135
  130. package/src/components/offline-banner/index.ts +0 -1
  131. package/src/components/page-details/ds-mobile-page-details.css +0 -83
  132. package/src/components/page-details/ds-mobile-page-details.ts +0 -282
  133. package/src/components/page-details/index.ts +0 -2
  134. package/src/components/page-main/ds-mobile-page-main.css +0 -68
  135. package/src/components/page-main/ds-mobile-page-main.ts +0 -421
  136. package/src/components/page-main/index.ts +0 -2
  137. package/src/components/post-composer/ds-mobile-post-composer.ts +0 -140
  138. package/src/components/post-composer/index.ts +0 -2
  139. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.css +0 -390
  140. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.service.ts +0 -108
  141. package/src/components/post-detail-modal/ds-mobile-post-detail-modal.ts +0 -722
  142. package/src/components/post-detail-modal/index.ts +0 -9
  143. package/src/components/property-banner/ds-mobile-property-banner.ts +0 -95
  144. package/src/components/property-banner/index.ts +0 -2
  145. package/src/components/section/ds-mobile-section.ts +0 -263
  146. package/src/components/section/index.ts +0 -2
  147. package/src/components/shared/directives/index.ts +0 -2
  148. package/src/components/shared/directives/long-press.directive.ts +0 -212
  149. package/src/components/shared/index.ts +0 -3
  150. package/src/components/shared/mobile-modal-base.ts +0 -457
  151. package/src/components/shared/mobile-page-base.ts +0 -204
  152. package/src/components/swiper/ds-mobile-swiper-with-nav.ts +0 -160
  153. package/src/components/swiper/ds-mobile-swiper.ts +0 -327
  154. package/src/components/swiper/index.ts +0 -3
  155. package/src/components/system-message-banner/ds-mobile-system-message-banner.ts +0 -129
  156. package/src/components/system-message-banner/index.ts +0 -2
  157. package/src/components/tab-bar/ds-mobile-tab-bar.css +0 -533
  158. package/src/components/tab-bar/ds-mobile-tab-bar.ts +0 -735
  159. package/src/components/tab-bar/index.ts +0 -2
  160. package/src/components/tabs/ds-mobile-tabs.css +0 -25
  161. package/src/components/tabs/ds-mobile-tabs.ts +0 -89
  162. package/src/components/tabs/index.ts +0 -2
  163. package/src/components/text-input/ds-text-input.ts +0 -287
  164. package/src/components/text-input/index.ts +0 -2
  165. package/src/examples/booking.page.ts +0 -434
  166. package/src/examples/community.page.ts +0 -776
  167. package/src/examples/handbook.page.ts +0 -324
  168. package/src/examples/home.page.ts +0 -347
  169. package/src/examples/index.ts +0 -12
  170. package/src/examples/inquiries.example.ts +0 -273
  171. package/src/examples/inquiry-detail.example.css +0 -189
  172. package/src/examples/inquiry-detail.example.ts +0 -415
  173. package/src/examples/mobile-tabs-example.component.ts +0 -208
  174. package/src/examples/post-create.page.ts +0 -311
  175. package/src/examples/post-detail.page.ts +0 -296
  176. package/src/examples/sign-in.page.ts +0 -291
  177. package/src/examples/whitelabel-demo-modal.component.ts +0 -1094
  178. package/src/examples/whitelabel-demo-modal.service.ts +0 -77
  179. package/src/models/index.ts +0 -7
  180. package/src/models/post.model.ts +0 -41
  181. package/src/pages/community.page.ts +0 -769
  182. package/src/pages/handbook.page.ts +0 -388
  183. package/src/pages/home.page.ts +0 -303
  184. package/src/pages/index.ts +0 -11
  185. package/src/pages/inquiries.example.ts +0 -273
  186. package/src/pages/inquiry-detail.example.css +0 -189
  187. package/src/pages/inquiry-detail.example.ts +0 -415
  188. package/src/pages/mobile-tabs-example.component.ts +0 -179
  189. package/src/pages/post-create.page.ts +0 -311
  190. package/src/pages/post-detail.page.ts +0 -296
  191. package/src/pages/sign-in.page.ts +0 -291
  192. package/src/pages/whitelabel-demo-modal.component.ts +0 -1094
  193. package/src/pages/whitelabel-demo-modal.service.ts +0 -77
  194. package/src/public-api.ts +0 -6
  195. package/src/services/base-modal.service.ts +0 -101
  196. package/src/services/index.ts +0 -11
  197. package/src/services/posts.service.ts +0 -542
  198. package/src/services/tracking-permission.service.ts +0 -88
  199. package/src/services/user.service.ts +0 -60
  200. package/src/services/whitelabel.service.ts +0 -675
  201. package/tsconfig.lib.json +0 -17
  202. package/tsconfig.lib.prod.json +0 -9
  203. package/tsconfig.spec.json +0 -13
  204. /package/{src/assets → assets}/fonts/Brockmann-Bold.otf +0 -0
  205. /package/{src/assets → assets}/fonts/Brockmann-BoldItalic.otf +0 -0
  206. /package/{src/assets → assets}/fonts/Brockmann-Medium.otf +0 -0
  207. /package/{src/assets → assets}/fonts/Brockmann-MediumItalic.otf +0 -0
  208. /package/{src/assets → assets}/fonts/Brockmann-Regular.otf +0 -0
  209. /package/{src/assets → assets}/fonts/Brockmann-RegularItalic.otf +0 -0
  210. /package/{src/assets → assets}/fonts/Brockmann-SemiBold.otf +0 -0
  211. /package/{src/assets → assets}/fonts/Brockmann-SemiBoldItalic.otf +0 -0
  212. /package/{src/assets → assets}/fonts/Brockmann_desktop_license.pdf +0 -0
  213. /package/{src/assets → assets}/fonts/brockmann-medium-webfont.woff2 +0 -0
  214. /package/{src/assets → assets}/fonts/brockmann-mediumitalic-webfont.woff2 +0 -0
  215. /package/{src/assets → assets}/fonts/brockmann-regular-webfont.woff2 +0 -0
  216. /package/{src/assets → assets}/fonts/brockmann-regularitalic-webfont.woff2 +0 -0
  217. /package/{src/assets → assets}/fonts/brockmann-semibold-webfont.woff2 +0 -0
  218. /package/{src/assets → assets}/fonts/brockmann-semibolditalic-webfont.woff2 +0 -0
  219. /package/{src/styles → styles}/ionic.css +0 -0
  220. /package/{src/components/shared → styles}/mobile-common.css +0 -0
  221. /package/{src/components/shared → styles}/mobile-page-base.css +0 -0
@@ -1,296 +0,0 @@
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
-