@propbinder/mobile-design 0.2.50 → 0.2.53

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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@propbinder/mobile-design",
3
- "version": "0.2.50",
3
+ "version": "0.2.53",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0 || ^21.0.0",
6
6
  "@angular/core": "^20.3.0 || ^21.0.0"
@@ -8,5 +8,41 @@
8
8
  "dependencies": {
9
9
  "tslib": "^2.3.0"
10
10
  },
11
- "sideEffects": false
12
- }
11
+ "sideEffects": [
12
+ "./styles/**/*.css",
13
+ "./ui/**/*.css"
14
+ ],
15
+ "module": "fesm2022/propbinder-mobile-design.mjs",
16
+ "typings": "index.d.ts",
17
+ "exports": {
18
+ "./package.json": {
19
+ "default": "./package.json"
20
+ },
21
+ ".": {
22
+ "types": "./index.d.ts",
23
+ "default": "./fesm2022/propbinder-mobile-design.mjs"
24
+ },
25
+ "./styles/*": {
26
+ "default": "./styles/*"
27
+ },
28
+ "./styles/globals.css": {
29
+ "default": "./styles/globals.css"
30
+ },
31
+ "./styles/ionic.css": {
32
+ "default": "./styles/ionic.css"
33
+ },
34
+ "./styles/mobile-common.css": {
35
+ "default": "./styles/mobile-common.css"
36
+ },
37
+ "./styles/mobile-page-base.css": {
38
+ "default": "./styles/mobile-page-base.css"
39
+ },
40
+ "./ui/*": {
41
+ "default": "./ui/*"
42
+ },
43
+ "./assets/*": {
44
+ "default": "./assets/*"
45
+ }
46
+ },
47
+ "types": "./index.d.ts"
48
+ }
package/ng-package.json DELETED
@@ -1,24 +0,0 @@
1
- {
2
- "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
- "dest": "../../dist/mobile-design-lib",
4
- "lib": {
5
- "entryFile": "src/public-api.ts"
6
- },
7
- "assets": [
8
- {
9
- "input": "src/styles",
10
- "glob": "**/*.css",
11
- "output": "styles"
12
- },
13
- {
14
- "input": "src/components/shared",
15
- "glob": "*.css",
16
- "output": "styles"
17
- },
18
- {
19
- "input": "src/assets",
20
- "glob": "**/*",
21
- "output": "assets"
22
- }
23
- ]
24
- }
@@ -1,165 +0,0 @@
1
- import { Animation } from '@ionic/angular';
2
- import { createAnimation } from '@ionic/core';
3
-
4
- /**
5
- * Custom page transition - iOS-style push/pop with dark overlay
6
- *
7
- * FORWARD (navigating TO detail):
8
- * - Entering page (detail): slides in from RIGHT, z-index 10 (on top)
9
- * - Leaving page (list): slides LEFT slightly, z-index 9 (underneath)
10
- * - Dark overlay: fades in on leaving page (opacity 0 to 0.70)
11
- *
12
- * REVERSE (swipe back FROM detail):
13
- * - Entering page (list): slides in from LEFT, z-index 9 (underneath)
14
- * - Leaving page (detail): slides out to RIGHT, z-index 10 (on top)
15
- * - Dark overlay: fades out on entering page (main page underneath, opacity 0.70 to 0)
16
- */
17
- export const customPageTransition = (_: HTMLElement, opts: any): Animation => {
18
- const DURATION = 600;
19
- const isBackDirection = opts.direction === 'back';
20
-
21
- const rootTransition = createAnimation()
22
- .duration(opts.duration || DURATION)
23
- .easing('cubic-bezier(0.32,0.72,0,1)');
24
-
25
- // Create overlay element
26
- // Forward: overlay on leaving page (main page underneath)
27
- // Back: overlay on entering page (main page underneath)
28
- const overlayEl = document.createElement('div');
29
- overlayEl.style.position = 'absolute';
30
- overlayEl.style.top = '0';
31
- overlayEl.style.left = '0';
32
- overlayEl.style.right = '0';
33
- overlayEl.style.bottom = '0';
34
- overlayEl.style.backgroundColor = '#000';
35
- overlayEl.style.opacity = isBackDirection ? '0.70' : '0';
36
- overlayEl.style.zIndex = '1';
37
- overlayEl.style.pointerEvents = 'none';
38
-
39
- // Add overlay to the page that should have it (main page underneath)
40
- // Forward: leaving page is main page
41
- // Back: entering page is main page
42
- const targetPageEl = isBackDirection ? opts.enteringEl : opts.leavingEl;
43
- if (targetPageEl) {
44
- const currentPosition = window.getComputedStyle(targetPageEl).position;
45
- if (currentPosition === 'static') {
46
- targetPageEl.style.position = 'relative';
47
- }
48
- targetPageEl.appendChild(overlayEl);
49
- }
50
-
51
- // Entering page animation
52
- const enteringPage = createAnimation()
53
- .addElement(opts.enteringEl)
54
- .beforeRemoveClass('ion-page-invisible')
55
- .beforeStyles({
56
- 'z-index': isBackDirection ? '9' : '10',
57
- 'opacity': '1'
58
- })
59
- .fromTo('transform',
60
- isBackDirection ? 'translateX(-20%)' : 'translateX(100%)',
61
- 'translateX(0)'
62
- );
63
-
64
- // Leaving page animation
65
- const leavingPage = createAnimation()
66
- .addElement(opts.leavingEl)
67
- .beforeStyles({
68
- 'z-index': isBackDirection ? '10' : '9'
69
- })
70
- .fromTo('transform',
71
- 'translateX(0)',
72
- isBackDirection ? 'translateX(100%)' : 'translateX(-20%)'
73
- );
74
-
75
- // Overlay fade animation
76
- const overlayAnimation = createAnimation()
77
- .addElement(overlayEl)
78
- .fromTo('opacity',
79
- isBackDirection ? '0.70' : '0',
80
- isBackDirection ? '0' : '0.70'
81
- );
82
-
83
- // Clean up overlay after animation completes
84
- rootTransition.afterAddWrite(() => {
85
- if (overlayEl && overlayEl.parentNode) {
86
- overlayEl.parentNode.removeChild(overlayEl);
87
- }
88
- });
89
-
90
- rootTransition.addAnimation([enteringPage, leavingPage, overlayAnimation]);
91
-
92
- return rootTransition;
93
- };
94
-
95
- /**
96
- * Custom back transition - iOS style where page slides out to reveal page underneath
97
- * The entering page (inquiries) slides in from the LEFT underneath
98
- * The leaving page (detail) slides out to the RIGHT on top
99
- * Dark overlay: fades out on entering page (main page underneath, opacity 0.70 to 0)
100
- */
101
- export const customBackTransition = (_: HTMLElement, opts: any): Animation => {
102
- const DURATION = 700;
103
-
104
- const rootTransition = createAnimation()
105
- .duration(opts.duration || DURATION)
106
- .easing('cubic-bezier(0.32,0.72,0,1)');
107
-
108
- // Create overlay element for the entering page (main page underneath)
109
- // This page should already have an overlay from the forward transition, but we'll ensure it exists
110
- const overlayEl = document.createElement('div');
111
- overlayEl.style.position = 'absolute';
112
- overlayEl.style.top = '0';
113
- overlayEl.style.left = '0';
114
- overlayEl.style.right = '0';
115
- overlayEl.style.bottom = '0';
116
- overlayEl.style.backgroundColor = '#000';
117
- overlayEl.style.opacity = '0.70';
118
- overlayEl.style.zIndex = '1';
119
- overlayEl.style.pointerEvents = 'none';
120
-
121
- // Ensure entering page has relative positioning for overlay
122
- const enteringPageEl = opts.enteringEl as HTMLElement;
123
- if (enteringPageEl) {
124
- const currentPosition = window.getComputedStyle(enteringPageEl).position;
125
- if (currentPosition === 'static') {
126
- enteringPageEl.style.position = 'relative';
127
- }
128
- enteringPageEl.appendChild(overlayEl);
129
- }
130
-
131
- // Entering page: underneath, sliding in from LEFT (-20% to 0)
132
- const enteringPage = createAnimation()
133
- .addElement(opts.enteringEl)
134
- .beforeRemoveClass('ion-page-invisible')
135
- .beforeStyles({
136
- 'z-index': '9',
137
- 'opacity': '1'
138
- })
139
- .fromTo('transform', 'translateX(-20%)', 'translateX(0)');
140
-
141
- // Leaving page: on top, sliding out to the RIGHT (0 to 100%)
142
- const leavingPage = createAnimation()
143
- .addElement(opts.leavingEl)
144
- .beforeStyles({
145
- 'z-index': '10',
146
- })
147
- .fromTo('transform', 'translateX(0)', 'translateX(100%)');
148
-
149
- // Overlay fade out animation on the entering page (main page)
150
- const overlayAnimation = createAnimation()
151
- .addElement(overlayEl)
152
- .fromTo('opacity', '0.70', '0');
153
-
154
- // Clean up overlay after animation completes
155
- rootTransition.afterAddWrite(() => {
156
- if (overlayEl && overlayEl.parentNode) {
157
- overlayEl.parentNode.removeChild(overlayEl);
158
- }
159
- });
160
-
161
- rootTransition.addAnimation([enteringPage, leavingPage, overlayAnimation]);
162
-
163
- return rootTransition;
164
- };
165
-
@@ -1,102 +0,0 @@
1
- import { Component, input, output } from '@angular/core';
2
- import { DsMobileListItemComponent } from '../list-item/ds-mobile-list-item';
3
-
4
- /**
5
- * DsMobileActionListItemComponent
6
- *
7
- * Specialized list item for action sheets and menus.
8
- * Wraps ds-mobile-list-item with action-specific styling:
9
- * - Vertically centered content
10
- * - Interactive by default
11
- * - No dividers (controlled per-item)
12
- *
13
- * @example
14
- * ```html
15
- * <ds-mobile-action-list-item
16
- * title="Edit"
17
- * [showDivider]="true"
18
- * (itemClick)="handleEdit()">
19
- * <ds-icon content-leading name="remixEditLine" size="20px" />
20
- * </ds-mobile-action-list-item>
21
- * ```
22
- */
23
- @Component({
24
- selector: 'ds-mobile-action-list-item',
25
- standalone: true,
26
- imports: [DsMobileListItemComponent],
27
- template: `
28
- <ds-mobile-list-item [title]="title()" [interactive]="true" [enableLongPress]="false" [showDivider]="showDivider()" [disabled]="disabled()" (itemClick)="itemClick.emit()">
29
- <div class="action-icon-wrapper" content-leading>
30
- <ng-content select="[action-icon]" />
31
- </div>
32
-
33
- <div content-trailing>
34
- <ng-content select="[content-trailing]" />
35
- </div>
36
- </ds-mobile-list-item>
37
- `,
38
- styles: [
39
- `
40
- /* Center all content vertically for action items */
41
- :host ::ng-deep ds-mobile-list-item .list-item-inner {
42
- align-items: center;
43
- }
44
-
45
- /* Center icon within leading slot */
46
- :host ::ng-deep ds-mobile-list-item .content-leading {
47
- align-items: center;
48
- justify-content: center;
49
- }
50
-
51
- /* Wrapper div must fill parent height and center icon */
52
- :host ::ng-deep .action-icon-wrapper {
53
- display: flex;
54
- align-items: center;
55
- justify-content: center;
56
- width: 100%;
57
- height: 100%;
58
- }
59
-
60
- /* Remove gap from content-main for single-line actions */
61
- :host ::ng-deep ds-mobile-list-item .content-main {
62
- gap: 0;
63
- justify-content: center;
64
- }
65
-
66
- /* Remove blue focus border/ring and set Ionic variables */
67
- :host {
68
- outline: none;
69
- --background-focused: transparent;
70
- --background-activated: transparent;
71
- -webkit-tap-highlight-color: transparent;
72
- }
73
-
74
- :host ::ng-deep ds-mobile-list-item {
75
- outline: none;
76
- }
77
- `,
78
- ],
79
- })
80
- export class DsMobileActionListItemComponent {
81
- /**
82
- * Action title text
83
- */
84
- title = input.required<string>();
85
-
86
- /**
87
- * Whether to show divider below item
88
- * @default false
89
- */
90
- showDivider = input<boolean>(false);
91
-
92
- /**
93
- * Whether the action is disabled
94
- * @default false
95
- */
96
- disabled = input<boolean>(false);
97
-
98
- /**
99
- * Emits when the action item is clicked
100
- */
101
- itemClick = output<void>();
102
- }
@@ -1,2 +0,0 @@
1
- export * from './ds-mobile-action-list-item';
2
-
@@ -1,133 +0,0 @@
1
- import { Component, Input, inject, computed } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { WhitelabelService } from '../../services/whitelabel.service';
4
-
5
- export type AppIconSize = 'sm' | 'md' | 'lg' | 'xl';
6
-
7
- /**
8
- * DsAppIconComponent
9
- *
10
- * Displays the organization's logomark styled as an app icon with rounded corners
11
- * and shadow. The logomark fill color adapts to the background.
12
- * Perfect for sign-in pages, splash screens, etc.
13
- *
14
- * Uses percentage-based padding and border-radius for perfect proportional scaling.
15
- *
16
- * @example
17
- * Sign-in page (large):
18
- * ```html
19
- * <ds-app-icon size="xl" />
20
- * ```
21
- *
22
- * Settings preview (small):
23
- * ```html
24
- * <ds-app-icon size="sm" />
25
- * ```
26
- */
27
- @Component({
28
- selector: 'ds-app-icon',
29
- standalone: true,
30
- imports: [CommonModule],
31
- host: {
32
- '[class]': 'sizeClass()'
33
- },
34
- template: `
35
- <div class="app-icon">
36
- <img
37
- [src]="whitelabelService.logoMarkUrl()"
38
- [alt]="whitelabelService.logoAlt() + ' app icon'"
39
- class="app-icon__logo"
40
- />
41
- </div>
42
- `,
43
- styles: [`
44
- :host {
45
- display: inline-block;
46
- flex-shrink: 0;
47
- vertical-align: top;
48
- }
49
-
50
- .app-icon {
51
- display: flex;
52
- align-items: center;
53
- justify-content: center;
54
- background: var(--app-icon-background, var(--color-app-icon-surface, #6B5FF5));
55
- /* Rounded corners - scales with size */
56
- border-radius: 20%;
57
- /* Padding scales with size - logomark fills ~70% of container */
58
- padding: 15%;
59
- width: 100%;
60
- height: 100%;
61
- }
62
-
63
- .app-icon__logo {
64
- width: 100%;
65
- height: 100%;
66
- object-fit: contain;
67
- display: block;
68
- }
69
-
70
- /* Size variants - applied to :host, everything inside scales automatically! */
71
- :host(.app-icon--sm) {
72
- width: 16px;
73
- height: 16px;
74
- }
75
-
76
- :host(.app-icon--sm) .app-icon {
77
- box-shadow:
78
- inset 0 0 0.75px 0 rgba(255, 255, 255, 0.5),
79
- inset 0 0 15px 0 rgba(255, 255, 255, 0.2);
80
- }
81
-
82
- :host(.app-icon--md) {
83
- width: 24px;
84
- height: 24px;
85
- }
86
-
87
- :host(.app-icon--md) .app-icon {
88
- box-shadow:
89
- inset 0 0 1.5px 0 rgba(255, 255, 255, 0.5),
90
- inset 0 0 30px 0 rgba(255, 255, 255, 0.2);
91
- }
92
-
93
- :host(.app-icon--lg) {
94
- width: 32px;
95
- height: 32px;
96
- }
97
-
98
- :host(.app-icon--lg) .app-icon {
99
- box-shadow:
100
- inset 0 0 2.25px 0 rgba(255, 255, 255, 0.5),
101
- inset 0 0 45px 0 rgba(255, 255, 255, 0.2);
102
- }
103
-
104
- :host(.app-icon--xl) {
105
- width: 64px;
106
- height: 64px;
107
- }
108
-
109
- :host(.app-icon--xl) .app-icon {
110
- box-shadow:
111
- inset 0 0 3px 0 rgba(255, 255, 255, 0.5),
112
- inset 0 0 60px 0 rgba(255, 255, 255, 0.2);
113
- }
114
- `]
115
- })
116
- export class DsAppIconComponent {
117
- whitelabelService = inject(WhitelabelService);
118
-
119
- /**
120
- * Size of the app icon
121
- * - sm: 16x16px (padding: 2.4px, radius: 3.2px)
122
- * - md: 32x32px (padding: 4.8px, radius: 6.4px)
123
- * - lg: 48x48px (padding: 7.2px, radius: 9.6px)
124
- * - xl: 64x64px (padding: 9.6px, radius: 12.8px)
125
- */
126
- @Input() size: AppIconSize = 'lg';
127
-
128
- /**
129
- * Computed CSS class for size variant
130
- */
131
- sizeClass = computed(() => `app-icon app-icon--${this.size}`);
132
- }
133
-
@@ -1,2 +0,0 @@
1
- export { DsAppIconComponent, type AppIconSize } from './ds-app-icon';
2
-
@@ -1,139 +0,0 @@
1
- /* ============================================
2
- ATTACHMENT PREVIEW COMPONENT
3
- ============================================ */
4
-
5
- :host {
6
- display: block;
7
- }
8
-
9
- .attachment-preview {
10
- position: relative;
11
- width: 96px;
12
- height: 96px;
13
- border-radius: 12px;
14
- overflow: visible;
15
- }
16
-
17
- .attachment-preview.loading {
18
- opacity: 0.8;
19
- }
20
-
21
- /* ============================================
22
- IMAGE PREVIEW
23
- ============================================ */
24
-
25
- .preview-image {
26
- width: 100%;
27
- height: 100%;
28
- display: block;
29
- border-radius: 12px;
30
- border: 1px solid var(--border-color-default);
31
- -o-object-fit: cover;
32
- object-fit: cover;
33
- }
34
-
35
- /* ============================================
36
- FILE PREVIEW
37
- ============================================ */
38
-
39
- .preview-file {
40
- width: 100%;
41
- height: 100%;
42
- display: flex;
43
- flex-direction: column;
44
- align-items: center;
45
- justify-content: flex-end;
46
- gap: 10px;
47
- background: var(--color-background-neutral-primary, #ffffff);
48
- border: 1px solid var(--border-color-default);
49
- border-radius: 12px;
50
- padding: 8px;
51
- padding-bottom: 10px;
52
- }
53
-
54
- .file-info {
55
- display: flex;
56
- flex-direction: column;
57
- align-items: center;
58
- gap: 2px;
59
- width: 100%;
60
- min-width: 0;
61
- }
62
-
63
- .file-name {
64
- font-family: 'Brockmann', sans-serif;
65
- font-size: var(--font-size-xs);
66
- font-weight: 400;
67
- color: var(--text-color-default-primary);
68
- text-align: center;
69
- width: 100%;
70
- overflow: hidden;
71
- text-overflow: ellipsis;
72
- white-space: nowrap;
73
- line-height: 1.2;
74
- }
75
-
76
- .file-type-label {
77
- font-family: 'Brockmann', sans-serif;
78
- font-size: var(--font-size-xs);
79
- font-weight: 400;
80
- color: var(--text-color-default-tertiary);
81
- line-height: 1;
82
- }
83
-
84
- .file-avatar {
85
- display: flex;
86
- align-items: center;
87
- justify-content: center;
88
- }
89
-
90
- /* File type avatar colors */
91
- .file-avatar ::ng-deep .file-pdf .avatar--icon {
92
- background-color: #ff5757 !important;
93
- }
94
-
95
- .file-avatar ::ng-deep .file-doc .avatar--icon,
96
- .file-avatar ::ng-deep .file-docx .avatar--icon {
97
- background-color: var(--color-blue-base, #3B82F6) !important;
98
- }
99
-
100
- .file-avatar ::ng-deep .file-xls .avatar--icon,
101
- .file-avatar ::ng-deep .file-xlsx .avatar--icon {
102
- background-color: var(--color-green-base, #10B981) !important;
103
- }
104
-
105
- .file-avatar ::ng-deep .file-other .avatar--icon {
106
- background-color: var(--text-color-default-tertiary, #999999) !important;
107
- }
108
-
109
- /* ============================================
110
- REMOVE BUTTON
111
- ============================================ */
112
-
113
- .remove-btn {
114
- position: absolute;
115
- top: -8px;
116
- right: -8px;
117
- width: 24px;
118
- height: 24px;
119
- border-radius: 50%;
120
- background: rgba(0, 0, 0, 0.6);
121
- backdrop-filter: blur(8px);
122
- border: 2px solid white;
123
- color: white;
124
- display: flex;
125
- align-items: center;
126
- justify-content: center;
127
- cursor: pointer;
128
- transition: all 0.2s ease;
129
- padding: 0;
130
- }
131
-
132
- .remove-btn:hover {
133
- background: rgba(0, 0, 0, 0.8);
134
- transform: scale(1.05);
135
- }
136
-
137
- .remove-btn:active {
138
- transform: scale(0.95);
139
- }