@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
@@ -1,388 +0,0 @@
1
- import { Component, ViewChild } from '@angular/core';
2
- import { DsMobilePageMainComponent } from '../components/page-main';
3
- import { DsMobileSectionComponent } from '../components/section';
4
- import { DsMobileHandbookFolderComponent } from '../components/handbook-folder';
5
- import { DsMobileOfflineBannerComponent } from '../components/offline-banner';
6
- import { UserService } from '../services/user.service';
7
- import { HandbookItem } from '../components/handbook-detail-modal/ds-mobile-handbook-detail-modal';
8
-
9
- @Component({
10
- selector: 'app-mobile-handbook-page',
11
- standalone: true,
12
- imports: [
13
- DsMobilePageMainComponent,
14
- DsMobileSectionComponent,
15
- DsMobileHandbookFolderComponent,
16
- DsMobileOfflineBannerComponent,
17
- ],
18
- styles: [
19
- `
20
- .folders-grid {
21
- display: grid;
22
- grid-template-columns: repeat(2, 1fr);
23
- gap: 20px;
24
- justify-items: center;
25
- }
26
-
27
- /* 3 columns at tablet breakpoint (md: 768px) and above
28
- Content area at this breakpoint is ~864px max */
29
- @media (min-width: 768px) {
30
- .folders-grid {
31
- grid-template-columns: repeat(3, 1fr);
32
- }
33
- }
34
-
35
- ds-mobile-handbook-folder {
36
- width: 100%;
37
- }
38
- `,
39
- ],
40
- template: `
41
- <ds-mobile-page-main
42
- #pageComponent
43
- title="Håndbog"
44
- [avatarInitials]="userService.avatarInitials()"
45
- [avatarType]="userService.avatarType()"
46
- (refresh)="handleRefresh($event)"
47
- >
48
- <!-- Offline indicator -->
49
- @if (pageComponent.isOffline()) {
50
- <ds-mobile-offline-banner
51
- offline-indicator
52
- title="Ingen internetforbindelse"
53
- message="Nogle funktioner kan være utilgængelige">
54
- </ds-mobile-offline-banner>
55
- }
56
-
57
- <ds-mobile-section>
58
- <div class="folders-grid">
59
- <ds-mobile-handbook-folder
60
- [variant]="'pink'"
61
- [iconName]="'remixLightbulbLine'"
62
- [itemCount]="8"
63
- [label]="'Indflytningsmappe'"
64
- [items]="utilitiesItems"
65
- >
66
- </ds-mobile-handbook-folder>
67
-
68
- <ds-mobile-handbook-folder
69
- [variant]="'success'"
70
- [iconName]="'remixKey2Line'"
71
- [itemCount]="4"
72
- [label]="'Husorden'"
73
- [items]="sikkerhedsudstyrItems"
74
- >
75
- </ds-mobile-handbook-folder>
76
-
77
- <ds-mobile-handbook-folder
78
- [variant]="'blue'"
79
- [iconName]="'remixFileList3Line'"
80
- [itemCount]="8"
81
- [label]="'Parkering'"
82
- [items]="serviceContractsItems"
83
- >
84
- </ds-mobile-handbook-folder>
85
-
86
- <ds-mobile-handbook-folder
87
- [variant]="'warning'"
88
- [iconName]="'remixToolsLine'"
89
- [itemCount]="5"
90
- [label]="'Faciliteter'"
91
- [items]="equipmentItems"
92
- >
93
- </ds-mobile-handbook-folder>
94
- </div>
95
- </ds-mobile-section>
96
- </ds-mobile-page-main>
97
- `,
98
- })
99
- export class MobileHandbookPageComponent {
100
- @ViewChild('pageComponent') pageComponent!: DsMobilePageMainComponent;
101
-
102
- // Utilities folder data
103
- utilitiesItems: HandbookItem[] = [
104
- {
105
- title: 'El',
106
- description:
107
- 'Hovedeltavle placeret i kælderrum B-12. Nødafbryderknap er ved hovedindgangen. Alle kredsløb er mærket.',
108
- contacts: [
109
- {
110
- name: 'ElektroTek ApS',
111
- initials: 'E',
112
- contactPerson: 'Lars Nielsen',
113
- phoneNumber: '+45 23 45 67 89',
114
- },
115
- ],
116
- },
117
- {
118
- title: 'Elektrisk diagram',
119
- description:
120
- 'Komplet diagram over bygningens elektriske installation med alle kredsløb og afbrydere.',
121
- attachments: [{ name: 'Elektrisk_Diagram.pdf', type: 'pdf' }],
122
- },
123
- {
124
- title: 'Vandforsyning',
125
- description:
126
- 'Hovedvandhane er placeret i kælderens tekniske rum. Individuelle lejlighedsafspærringer er i gangpanelerne. Vandtryk overvåges automatisk.',
127
- contacts: [
128
- {
129
- name: 'VVS Hansen',
130
- initials: 'V',
131
- contactPerson: 'Peter Hansen',
132
- phoneNumber: '+45 34 56 78 90',
133
- },
134
- ],
135
- },
136
- {
137
- title: 'Varmesystem',
138
- description:
139
- 'Fjernvarmetilslutning i kælder. Termostater i hver enhed kan justeres individuelt. Systemet vedligeholdes kvartalsvis af certificerede teknikere.',
140
- contacts: [
141
- {
142
- name: 'Varme Service A/S',
143
- initials: 'V',
144
- contactPerson: 'Maria Jensen',
145
- phoneNumber: '+45 45 67 89 01',
146
- },
147
- ],
148
- },
149
- {
150
- title: 'Varmeanlæg dokumentation',
151
- description:
152
- 'Teknisk dokumentation og vedligeholdelseshistorik for bygningens varmesystem.',
153
- attachments: [
154
- { name: 'Varmeplan.pdf', type: 'pdf' },
155
- { name: 'Vedligeholdelseslog.pdf', type: 'pdf' },
156
- ],
157
- },
158
- {
159
- title: 'Internet & TV',
160
- description:
161
- 'Fiberforbindelse i bygningen. Distributionspanel er i stueetageteknisk rum. Hver lejlighed har ethernet-stik i stue og soveværelser.',
162
- contacts: [
163
- {
164
- name: 'TeleCom Solutions',
165
- initials: 'T',
166
- contactPerson: 'Anders Petersen',
167
- phoneNumber: '+45 56 78 90 12',
168
- },
169
- ],
170
- },
171
- {
172
- title: 'Netværksopsætning guide',
173
- attachments: [{ name: 'Netværksopsætning.pdf', type: 'pdf' }],
174
- },
175
- {
176
- title: 'Affaldshåndtering',
177
- description:
178
- 'Affaldssorteringsstation placeret i gården. Afhentninger: Dagrenovation (man/tor), Genbrug (ons), Organisk (tir/fre). Storskrald kræver booking.',
179
- attachments: [{ name: 'Affaldsretningslinjer.pdf', type: 'pdf' }],
180
- },
181
- ];
182
-
183
- // Safety Equipment folder data
184
- sikkerhedsudstyrItems: HandbookItem[] = [
185
- {
186
- title: 'Fælles områder og sikkerhed',
187
- description:
188
- 'Trappeopgange med nødbelysning og brandsikre døre. Postkasser placeret i indgangspartiet. Hold altid flugtveje fri.',
189
- images: [
190
- '/Assets/Dummy-photos/staircase.jpg',
191
- '/Assets/Dummy-photos/mailboxes.jpg',
192
- ],
193
- },
194
- {
195
- title: 'Hjertestarter (AED)',
196
- description:
197
- 'Automatisk hjertestarter placeret i stueetagen ved hovedindgangen. Tilgængelig 24/7. Ingen særlig uddannelse kræves - enheden guider dig gennem processen.',
198
- contacts: [
199
- {
200
- name: 'MediTech Service',
201
- initials: 'M',
202
- contactPerson: 'John Mortensen',
203
- phoneNumber: '+45 12 34 56 78',
204
- },
205
- ],
206
- attachments: [
207
- {
208
- name: 'Brandplan.pdf',
209
- type: 'pdf',
210
- url: 'https://portal-api.propbinder.com/Handbook/GetFile/50145267-d9a2-448b-a0e1-1af39d344818',
211
- },
212
- ],
213
- },
214
- {
215
- title: 'Brandslukningsudstyr',
216
- description:
217
- 'Brandslukkere placeret på hver etage. Eftersyn udføres årligt. Brandalarm aktiveres automatisk ved røg.',
218
- attachments: [{ name: 'Brandplan.pdf', type: 'pdf' }],
219
- },
220
- {
221
- title: 'Alarmsystem',
222
- description:
223
- 'Adgangskontrol med kodesystem ved alle indgange. Kode ændres kvartalsvis. Ved indbrud kontakt straks politiet og ejendomsadministrationen.',
224
- contacts: [
225
- {
226
- name: 'SecureHome A/S',
227
- initials: 'S',
228
- contactPerson: 'Henrik Johansen',
229
- phoneNumber: '+45 98 76 54 32',
230
- },
231
- ],
232
- },
233
- ];
234
-
235
- // Service Contracts folder data
236
- serviceContractsItems: HandbookItem[] = [
237
- {
238
- title: 'Rengøringsservice',
239
- description:
240
- 'Ugentlig rengøring af fællesarealer inklusiv indgangshal, trapper og elevatorer. Hovedrengøring kvartalsvis. Service leveres mandag-fredag, 6:00-9:00.',
241
- contacts: [
242
- {
243
- name: 'CleanCo Denmark',
244
- initials: 'C',
245
- contactPerson: 'Anne Kristensen',
246
- phoneNumber: '+45 89 01 23 45',
247
- },
248
- ],
249
- },
250
- {
251
- title: 'Rengøringskontrakt',
252
- attachments: [
253
- { name: 'Rengøringskontrakt_2024.pdf', type: 'pdf' },
254
- { name: 'Rengøringsplan.pdf', type: 'pdf' },
255
- ],
256
- },
257
- {
258
- title: 'Udendørs arealer',
259
- description:
260
- 'Fælles grønne områder med bede, siddepladser og terrasse. Beboere må frit benytte området. Respektér planterne og hold området pænt.',
261
- images: [
262
- '/Assets/Dummy-photos/park.jpg',
263
- '/Assets/Dummy-photos/yard.jpg',
264
- ],
265
- },
266
- {
267
- title: 'Havevedligeholdelse',
268
- description:
269
- 'Professionel havepleje inklusiv plæneklipning, hækklipning og blomsterbedvedligeholdelse. Vintersnefjerning inkluderet.',
270
- contacts: [
271
- {
272
- name: 'Green Gardens ApS',
273
- initials: 'G',
274
- contactPerson: 'Michael Olsen',
275
- phoneNumber: '+45 90 12 34 56',
276
- },
277
- ],
278
- },
279
- {
280
- title: 'Haveserviceaftale',
281
- attachments: [{ name: 'Haveserviceaftale.pdf', type: 'pdf' }],
282
- },
283
- {
284
- title: 'Vinduespolering',
285
- description:
286
- 'Professionel vinduespoleringsservice for alle udvendige vinduer to gange årligt - forår og efterår.',
287
- contacts: [
288
- {
289
- name: 'Crystal Clear Windows',
290
- initials: 'C',
291
- contactPerson: 'Lene Schmidt',
292
- phoneNumber: '+45 01 23 45 67',
293
- },
294
- ],
295
- },
296
- {
297
- title: 'Sikkerhedsservice',
298
- description:
299
- '24/7 overvågningsservice med alarmrespons. Direkte forbindelse til politi og brandvæsen.',
300
- contacts: [
301
- {
302
- name: 'SecureHome A/S',
303
- initials: 'S',
304
- contactPerson: 'Henrik Johansen',
305
- phoneNumber: '+45 12 34 56 78',
306
- },
307
- ],
308
- },
309
- {
310
- title: 'Sikkerhedskontrakt og procedurer',
311
- attachments: [
312
- { name: 'Sikkerhedskontrakt.pdf', type: 'pdf' },
313
- { name: 'Nødprocedurer.pdf', type: 'pdf' },
314
- ],
315
- },
316
- ];
317
-
318
- // Equipment folder data
319
- equipmentItems: HandbookItem[] = [
320
- {
321
- title: 'Balkon udsigt',
322
- description:
323
- 'Eksempel på udsigt fra øverste etagers balkoner. Flere lejligheder har privat altan med fantastisk udsyn.',
324
- images: ['/Assets/Dummy-photos/balcony-view.jpg'],
325
- },
326
- {
327
- title: 'Vaskerum',
328
- description:
329
- 'Fælles vaskerum med 4 vaskemaskiner og 4 tørretumblere. Bookingsystem tilgængeligt via beboerportal. Maskiner accepterer betalingskort. Åbningstider: 7:00-22:00.',
330
- contacts: [
331
- {
332
- name: 'WashTech Service',
333
- initials: 'W',
334
- contactPerson: 'Kirsten Berg',
335
- phoneNumber: '+45 34 56 78 90',
336
- },
337
- ],
338
- },
339
- {
340
- title: 'Vaskeri instruktioner',
341
- attachments: [
342
- { name: 'Vaskeinstruktioner.pdf', type: 'pdf' },
343
- { name: 'Bookingguide.pdf', type: 'pdf' },
344
- ],
345
- },
346
- {
347
- title: 'Vedligeholdelse og reparationer',
348
- description:
349
- 'Ved behov for reparationer eller vedligeholdelse i din lejlighed, kontakt vores hausmeister. Akutte problemer håndteres samme dag.',
350
- images: ['/Assets/Dummy-photos/handyman.jpg'],
351
- contacts: [
352
- {
353
- name: 'Hausmeister Service',
354
- initials: 'H',
355
- contactPerson: 'Erik Sørensen',
356
- phoneNumber: '+45 56 78 90 12',
357
- },
358
- ],
359
- },
360
- {
361
- title: 'Værktøjsudlån',
362
- description:
363
- 'Basis håndværktøj tilgængeligt til beboerbrug. Kvittér for værktøj ved receptionen. Returnér inden for 48 timer.',
364
- attachments: [
365
- { name: 'Værktøjsliste.pdf', type: 'pdf' },
366
- { name: 'Udlånspolitik.pdf', type: 'pdf' },
367
- ],
368
- },
369
- ];
370
-
371
- constructor(public userService: UserService) {}
372
-
373
- handleRefresh(event: any): void {
374
- console.log('Pull-to-refresh triggered');
375
-
376
- // Check if offline and complete immediately
377
- if (this.pageComponent?.isOffline()) {
378
- console.log('Cannot refresh while offline');
379
- event.target.complete();
380
- return;
381
- }
382
-
383
- setTimeout(() => {
384
- console.log('Refresh complete');
385
- event.target.complete();
386
- }, 1000);
387
- }
388
- }
@@ -1,303 +0,0 @@
1
- import { Component, computed, signal, ViewChild } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { DsButtonComponent } from '@propbinder/design-system';
4
- import { DsMobilePageMainComponent } from '../components/page-main';
5
- import { DsMobileSectionComponent } from '../components/section';
6
- import { DsMobileIllustrationComponent } from '../components/illustration';
7
- import { DsMobilePropertyBannerComponent } from '../components/property-banner';
8
- import { DsMobileInteractiveListItemPostComponent } from '../components/interactive-list-item-post';
9
- import { DsMobileOfflineBannerComponent } from '../components/offline-banner';
10
- import {
11
- PostContentComponent,
12
- PostTextComponent,
13
- PostActionsComponent,
14
- ActionLikeComponent,
15
- ActionCommentComponent
16
- } from '../components/interactive-list-item-post';
17
- import { DsMobileInteractiveListItemInquiryComponent } from '../components/interactive-list-item-inquiry';
18
- import { UserService } from '../services/user.service';
19
- import { PostsService } from '../services/posts.service';
20
- import { DsMobilePostDetailModalService } from '../components/post-detail-modal/ds-mobile-post-detail-modal.service';
21
-
22
- @Component({
23
- selector: 'app-home-page',
24
- standalone: true,
25
- imports: [
26
- DsButtonComponent,
27
- DsMobilePageMainComponent,
28
- DsMobileSectionComponent,
29
- DsMobileIllustrationComponent,
30
- DsMobilePropertyBannerComponent,
31
- DsMobileInteractiveListItemPostComponent,
32
- DsMobileInteractiveListItemInquiryComponent,
33
- DsMobileOfflineBannerComponent,
34
- PostContentComponent,
35
- PostTextComponent,
36
- PostActionsComponent,
37
- ActionLikeComponent,
38
- ActionCommentComponent
39
- ],
40
- styles: [`
41
- /* Posts list wrapper */
42
- .posts-list {
43
- display: flex;
44
- flex-direction: column;
45
- }
46
-
47
- /* Inquiries list wrapper */
48
- .inquiries-list {
49
- display: flex;
50
- flex-direction: column;
51
- }
52
-
53
- /* Empty state */
54
- .empty-state {
55
- display: flex;
56
- flex-direction: column;
57
- align-items: center;
58
- justify-content: center;
59
- padding: 20px;
60
- text-align: center;
61
- }
62
-
63
- .empty-state ds-button {
64
- display: block;
65
- margin-top: 16px;
66
- }
67
-
68
- .empty-state ds-button::ng-deep .btn {
69
- width: 100%;
70
- border-radius: 9999px;
71
- }
72
-
73
- .empty-state-title {
74
- font-family: 'Brockmann', sans-serif;
75
- font-size: var(--font-size-base);
76
- font-weight: 600;
77
- color: var(--color-text-primary);
78
- margin-top: -16px;
79
- z-index: 4;
80
- }
81
-
82
- .empty-state-description {
83
- font-family: 'Brockmann', sans-serif;
84
- font-size: var(--font-size-sm);
85
- color: var(--color-text-secondary);
86
- margin: 0;
87
- }
88
- `],
89
- template: `
90
- <ds-mobile-page-main
91
- #pageComponent
92
- title="Hjem"
93
- headerTitle="Velkommen, Lars"
94
- [avatarInitials]="userService.avatarInitials()"
95
- [avatarType]="userService.avatarType()"
96
- (refresh)="handleRefresh($event)">
97
-
98
- <!-- Offline indicator -->
99
- @if (pageComponent.isOffline()) {
100
- <ds-mobile-offline-banner
101
- offline-indicator
102
- title="Ingen internetforbindelse"
103
- message="Nogle funktioner kan være utilgængelige">
104
- </ds-mobile-offline-banner>
105
- }
106
-
107
- <!-- Property Banner in Header -->
108
- <ds-mobile-property-banner
109
- header-content
110
- address="Toftegårds Allé 5A, 2. tv."
111
- photoUrl="/Assets/Dummy-photos/building.jpg">
112
- </ds-mobile-property-banner>
113
-
114
- <!-- Recent Community Posts Section (with content) -->
115
- <ds-mobile-section
116
- headline="Seneste opslag"
117
- linkText="Se alle"
118
- (linkClick)="navigateToCommunity()">
119
-
120
- <div class="posts-list">
121
- @for (post of recentPosts(); track post.id) {
122
- <ds-mobile-interactive-list-item-post
123
- [authorName]="post.authorName"
124
- [authorRole]="post.authorRole"
125
- [timestamp]="post.timestamp"
126
- [avatarType]="post.avatarType"
127
- [avatarSrc]="post.avatarSrc || ''"
128
- [avatarInitials]="post.avatarInitials || ''"
129
- [showBadge]="post.showBadge || false"
130
- [clickable]="true"
131
- [enableLongPress]="false"
132
- (postClick)="openPost(post.id)"
133
- (commentClick)="openPost(post.id, true)">
134
-
135
- <post-content>
136
- @if (post.content) {
137
- <post-text>{{ post.content }}</post-text>
138
- }
139
- </post-content>
140
-
141
- <post-actions>
142
- <action-like [count]="post.likeCount" [active]="post.isLiked" />
143
- <action-comment [count]="post.commentCount" (commentClick)="openPost(post.id, true)" />
144
- </post-actions>
145
- </ds-mobile-interactive-list-item-post>
146
- }
147
- </div>
148
- </ds-mobile-section>
149
-
150
- <!-- Recent Community Posts Section (empty state) -->
151
- <ds-mobile-section>
152
- <div class="empty-state">
153
- <ds-mobile-illustration variant="post" alt="No posts" />
154
- <h3 class="empty-state-title">Ingen opslag endnu</h3>
155
- <p class="empty-state-description">Der er ingen opslag i fællesområdet i øjeblikket</p>
156
-
157
- <ds-button
158
- variant="secondary"
159
- trailingIcon="remixArrowRightSLine"
160
- (click)="navigateToCommunity()">
161
- Gå til fællesområdet
162
- </ds-button>
163
- </div>
164
- </ds-mobile-section>
165
-
166
- <!-- Open Inquiries Section (with content) -->
167
- <ds-mobile-section
168
- headline="Åbne henvendelser"
169
- linkText="Se alle"
170
- (linkClick)="navigateToInquiries()">
171
-
172
- <div class="inquiries-list">
173
- @for (inquiry of openInquiries(); track inquiry.id) {
174
- <ds-mobile-interactive-list-item-inquiry
175
- [title]="inquiry.title"
176
- [description]="inquiry.description"
177
- [status]="inquiry.status"
178
- [timestamp]="inquiry.timestamp"
179
- [iconName]="'remixTodoLine'"
180
- [clickable]="true"
181
- [showChevron]="false"
182
- [enableLongPress]="false"
183
- (inquiryClick)="openInquiryDetail(inquiry.id)">
184
- </ds-mobile-interactive-list-item-inquiry>
185
- }
186
- </div>
187
- </ds-mobile-section>
188
-
189
- <!-- Open Inquiries Section (empty state) -->
190
- <ds-mobile-section>
191
- <div class="empty-state">
192
- <ds-mobile-illustration variant="inquiry" alt="No inquiries" />
193
- <h3 class="empty-state-title">Ingen åbne henvendelser</h3>
194
- <p class="empty-state-description">Du har ingen åbne henvendelser i øjeblikket</p>
195
-
196
- <ds-button
197
- variant="secondary"
198
- trailingIcon="remixArrowRightSLine"
199
- (click)="navigateToInquiries()">
200
- Gå til henvendelser
201
- </ds-button>
202
- </div>
203
- </ds-mobile-section>
204
- </ds-mobile-page-main>
205
- `
206
- })
207
-
208
- export class MobileHomePageComponent {
209
- @ViewChild('pageComponent') pageComponent!: DsMobilePageMainComponent;
210
-
211
- // Get recent posts from PostsService - exclude pinned post (post-4) and limit to 3
212
- recentPosts = computed(() =>
213
- this.postsService.posts()
214
- .filter(post => post.id !== 'post-4') // Exclude pinned post
215
- .slice(0, 3)
216
- );
217
-
218
- // Mock inquiry data
219
- private allInquiries = signal([
220
- {
221
- id: '1',
222
- title: 'Tørretumbler virker ikke',
223
- description: 'I de sidste tre dage har jeg oplevet vedvarende problemer med tørretumbleren. Den starter, men stopper efter få minutter.',
224
- status: 'open' as const,
225
- timestamp: '12 dage siden'
226
- },
227
- {
228
- id: '2',
229
- title: 'Problem med vandtryk',
230
- description: 'Lavt vandtryk i badeværelseshåndvasken. Det er blevet gradvist værre i løbet af den sidste uge.',
231
- status: 'open' as const,
232
- timestamp: '5 dage siden'
233
- },
234
- {
235
- id: '3',
236
- title: 'Varme virker ikke ordentligt',
237
- description: 'Varmesystemet holder ikke den indstillede temperatur. Lejligheden er meget koldere, end den burde være.',
238
- status: 'closed' as const,
239
- timestamp: '2 måneder siden'
240
- }
241
- ]);
242
-
243
- // Filter for open inquiries and limit to 3
244
- openInquiries = computed(() =>
245
- this.allInquiries()
246
- .filter(inquiry => inquiry.status === 'open')
247
- .slice(0, 3)
248
- );
249
-
250
- constructor(
251
- private router: Router,
252
- public userService: UserService,
253
- private postsService: PostsService,
254
- private postModal: DsMobilePostDetailModalService
255
- ) {
256
- console.log('MobileHomePageComponent constructor');
257
- }
258
-
259
- handleRefresh(event: any): void {
260
- console.log('Pull-to-refresh triggered');
261
- setTimeout(() => {
262
- console.log('Refresh complete');
263
- event.target.complete();
264
- }, 1000);
265
- }
266
-
267
- async openPost(postId: string, focusComment: boolean = false): Promise<void> {
268
- console.log('Opening post:', postId, 'Focus comments:', focusComment);
269
-
270
- const post = this.postsService.getPostById(postId);
271
-
272
- if (post) {
273
- // Convert Post model to modal format (add postId and focusComment)
274
- const postData = {
275
- ...post,
276
- postId: post.id,
277
- avatarType: post.avatarType === 'icon' ? undefined : post.avatarType,
278
- focusComment
279
- };
280
-
281
- await this.postModal.open(postData, {
282
- currentUserName: 'Lars Mikkelsen',
283
- currentUserInitials: this.userService.avatarInitials()
284
- });
285
- }
286
- }
287
-
288
- openInquiryDetail(inquiryId: string): void {
289
- console.log('Opening inquiry:', inquiryId);
290
- this.router.navigate(['/inquiry-detail', inquiryId]);
291
- }
292
-
293
- navigateToCommunity(): void {
294
- console.log('Navigating to community page');
295
- this.router.navigate(['/announcements']);
296
- }
297
-
298
- navigateToInquiries(): void {
299
- console.log('Navigating to inquiries page');
300
- this.router.navigate(['/inquiries']);
301
- }
302
- }
303
-
@@ -1,11 +0,0 @@
1
- export * from './community.page';
2
- export * from './handbook.page';
3
- export * from './home.page';
4
- export * from './inquiries.example';
5
- export * from './inquiry-detail.example';
6
- export * from './mobile-tabs-example.component';
7
- export * from './post-create.page';
8
- export * from './post-detail.page';
9
- export * from './sign-in.page';
10
- export * from './whitelabel-demo-modal.component';
11
- export * from './whitelabel-demo-modal.service';