@kirbydesign/designsystem 11.11.2 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/fesm2022/kirbydesign-designsystem-accordion.mjs +246 -135
  2. package/fesm2022/kirbydesign-designsystem-accordion.mjs.map +1 -1
  3. package/fesm2022/kirbydesign-designsystem-action-group.mjs +229 -134
  4. package/fesm2022/kirbydesign-designsystem-action-group.mjs.map +1 -1
  5. package/fesm2022/kirbydesign-designsystem-avatar.mjs +98 -55
  6. package/fesm2022/kirbydesign-designsystem-avatar.mjs.map +1 -1
  7. package/fesm2022/kirbydesign-designsystem-badge.mjs +85 -42
  8. package/fesm2022/kirbydesign-designsystem-badge.mjs.map +1 -1
  9. package/fesm2022/kirbydesign-designsystem-button.mjs +203 -170
  10. package/fesm2022/kirbydesign-designsystem-button.mjs.map +1 -1
  11. package/fesm2022/kirbydesign-designsystem-calendar.mjs +524 -516
  12. package/fesm2022/kirbydesign-designsystem-calendar.mjs.map +1 -1
  13. package/fesm2022/kirbydesign-designsystem-card.mjs +407 -205
  14. package/fesm2022/kirbydesign-designsystem-card.mjs.map +1 -1
  15. package/fesm2022/kirbydesign-designsystem-chart.mjs +1388 -1469
  16. package/fesm2022/kirbydesign-designsystem-chart.mjs.map +1 -1
  17. package/fesm2022/kirbydesign-designsystem-checkbox.mjs +215 -176
  18. package/fesm2022/kirbydesign-designsystem-checkbox.mjs.map +1 -1
  19. package/fesm2022/kirbydesign-designsystem-config.mjs +50 -96
  20. package/fesm2022/kirbydesign-designsystem-config.mjs.map +1 -1
  21. package/fesm2022/kirbydesign-designsystem-data-table.mjs +180 -83
  22. package/fesm2022/kirbydesign-designsystem-data-table.mjs.map +1 -1
  23. package/fesm2022/kirbydesign-designsystem-divider.mjs +46 -19
  24. package/fesm2022/kirbydesign-designsystem-divider.mjs.map +1 -1
  25. package/fesm2022/kirbydesign-designsystem-dropdown.mjs +878 -752
  26. package/fesm2022/kirbydesign-designsystem-dropdown.mjs.map +1 -1
  27. package/fesm2022/kirbydesign-designsystem-empty-state.mjs +164 -91
  28. package/fesm2022/kirbydesign-designsystem-empty-state.mjs.map +1 -1
  29. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs +213 -85
  30. package/fesm2022/kirbydesign-designsystem-fab-sheet.mjs.map +1 -1
  31. package/fesm2022/kirbydesign-designsystem-flag.mjs +67 -33
  32. package/fesm2022/kirbydesign-designsystem-flag.mjs.map +1 -1
  33. package/fesm2022/kirbydesign-designsystem-form-field.mjs +1260 -891
  34. package/fesm2022/kirbydesign-designsystem-form-field.mjs.map +1 -1
  35. package/fesm2022/kirbydesign-designsystem-gesture.mjs +38 -23
  36. package/fesm2022/kirbydesign-designsystem-gesture.mjs.map +1 -1
  37. package/fesm2022/kirbydesign-designsystem-header.mjs +422 -182
  38. package/fesm2022/kirbydesign-designsystem-header.mjs.map +1 -1
  39. package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs +16 -14
  40. package/fesm2022/kirbydesign-designsystem-helpers-scss.mjs.map +1 -1
  41. package/fesm2022/kirbydesign-designsystem-helpers.mjs +251 -361
  42. package/fesm2022/kirbydesign-designsystem-helpers.mjs.map +1 -1
  43. package/fesm2022/kirbydesign-designsystem-icon.mjs +881 -296
  44. package/fesm2022/kirbydesign-designsystem-icon.mjs.map +1 -1
  45. package/fesm2022/kirbydesign-designsystem-item-group.mjs +52 -23
  46. package/fesm2022/kirbydesign-designsystem-item-group.mjs.map +1 -1
  47. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs +147 -43
  48. package/fesm2022/kirbydesign-designsystem-item-sliding.mjs.map +1 -1
  49. package/fesm2022/kirbydesign-designsystem-item.mjs +395 -151
  50. package/fesm2022/kirbydesign-designsystem-item.mjs.map +1 -1
  51. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs +136 -54
  52. package/fesm2022/kirbydesign-designsystem-kirby-app.mjs.map +1 -1
  53. package/fesm2022/kirbydesign-designsystem-list.mjs +1182 -697
  54. package/fesm2022/kirbydesign-designsystem-list.mjs.map +1 -1
  55. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs +166 -76
  56. package/fesm2022/kirbydesign-designsystem-loading-overlay.mjs.map +1 -1
  57. package/fesm2022/kirbydesign-designsystem-menu.mjs +420 -311
  58. package/fesm2022/kirbydesign-designsystem-menu.mjs.map +1 -1
  59. package/fesm2022/kirbydesign-designsystem-modal.mjs +2467 -1912
  60. package/fesm2022/kirbydesign-designsystem-modal.mjs.map +1 -1
  61. package/fesm2022/kirbydesign-designsystem-page.mjs +1505 -905
  62. package/fesm2022/kirbydesign-designsystem-page.mjs.map +1 -1
  63. package/fesm2022/kirbydesign-designsystem-popover.mjs +204 -169
  64. package/fesm2022/kirbydesign-designsystem-popover.mjs.map +1 -1
  65. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs +209 -158
  66. package/fesm2022/kirbydesign-designsystem-progress-circle.mjs.map +1 -1
  67. package/fesm2022/kirbydesign-designsystem-radio.mjs +537 -365
  68. package/fesm2022/kirbydesign-designsystem-radio.mjs.map +1 -1
  69. package/fesm2022/kirbydesign-designsystem-range.mjs +207 -150
  70. package/fesm2022/kirbydesign-designsystem-range.mjs.map +1 -1
  71. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs +217 -104
  72. package/fesm2022/kirbydesign-designsystem-reorder-list.mjs.map +1 -1
  73. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs +113 -38
  74. package/fesm2022/kirbydesign-designsystem-router-outlet.mjs.map +1 -1
  75. package/fesm2022/kirbydesign-designsystem-section-header.mjs +56 -18
  76. package/fesm2022/kirbydesign-designsystem-section-header.mjs.map +1 -1
  77. package/fesm2022/kirbydesign-designsystem-segmented-control.mjs +276 -232
  78. package/fesm2022/kirbydesign-designsystem-segmented-control.mjs.map +1 -1
  79. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs +319 -382
  80. package/fesm2022/kirbydesign-designsystem-shared-floating.mjs.map +1 -1
  81. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs +73 -84
  82. package/fesm2022/kirbydesign-designsystem-shared-portal.mjs.map +1 -1
  83. package/fesm2022/kirbydesign-designsystem-shared.mjs +665 -531
  84. package/fesm2022/kirbydesign-designsystem-shared.mjs.map +1 -1
  85. package/fesm2022/kirbydesign-designsystem-slide-button.mjs +140 -91
  86. package/fesm2022/kirbydesign-designsystem-slide-button.mjs.map +1 -1
  87. package/fesm2022/kirbydesign-designsystem-slide.mjs +360 -157
  88. package/fesm2022/kirbydesign-designsystem-slide.mjs.map +1 -1
  89. package/fesm2022/kirbydesign-designsystem-spinner.mjs +90 -32
  90. package/fesm2022/kirbydesign-designsystem-spinner.mjs.map +1 -1
  91. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs +348 -181
  92. package/fesm2022/kirbydesign-designsystem-tab-navigation.mjs.map +1 -1
  93. package/fesm2022/kirbydesign-designsystem-tabs.mjs +286 -121
  94. package/fesm2022/kirbydesign-designsystem-tabs.mjs.map +1 -1
  95. package/fesm2022/kirbydesign-designsystem-testing-base.mjs +6232 -3164
  96. package/fesm2022/kirbydesign-designsystem-testing-base.mjs.map +1 -1
  97. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs +118 -95
  98. package/fesm2022/kirbydesign-designsystem-testing-jasmine.mjs.map +1 -1
  99. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs +128 -101
  100. package/fesm2022/kirbydesign-designsystem-testing-jest.mjs.map +1 -1
  101. package/fesm2022/kirbydesign-designsystem-testing.mjs +236 -243
  102. package/fesm2022/kirbydesign-designsystem-testing.mjs.map +1 -1
  103. package/fesm2022/kirbydesign-designsystem-toast.mjs +98 -62
  104. package/fesm2022/kirbydesign-designsystem-toast.mjs.map +1 -1
  105. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs +155 -127
  106. package/fesm2022/kirbydesign-designsystem-toggle-button.mjs.map +1 -1
  107. package/fesm2022/kirbydesign-designsystem-toggle.mjs +180 -150
  108. package/fesm2022/kirbydesign-designsystem-toggle.mjs.map +1 -1
  109. package/fesm2022/kirbydesign-designsystem-types.mjs +39 -24
  110. package/fesm2022/kirbydesign-designsystem-types.mjs.map +1 -1
  111. package/fesm2022/kirbydesign-designsystem.mjs +516 -407
  112. package/fesm2022/kirbydesign-designsystem.mjs.map +1 -1
  113. package/icons/svg/megaphone.svg +3 -0
  114. package/icons/svg/person-blocked.svg +3 -0
  115. package/icons/svg/person-check.svg +3 -0
  116. package/icons/svg/person-close.svg +3 -0
  117. package/icons/svg/person-cloud.svg +3 -0
  118. package/icons/svg/person-power.svg +3 -0
  119. package/icons/svg/person-warning.svg +3 -0
  120. package/icons/svg/phone-device-pin.svg +3 -0
  121. package/icons/svg/phone-device.svg +3 -2
  122. package/package.json +11 -11
  123. package/readme.md +37 -0
  124. package/types/kirbydesign-designsystem-accordion.d.ts +72 -39
  125. package/types/kirbydesign-designsystem-accordion.d.ts.map +1 -1
  126. package/types/kirbydesign-designsystem-action-group.d.ts +46 -39
  127. package/types/kirbydesign-designsystem-action-group.d.ts.map +1 -1
  128. package/types/kirbydesign-designsystem-avatar.d.ts +58 -26
  129. package/types/kirbydesign-designsystem-avatar.d.ts.map +1 -1
  130. package/types/kirbydesign-designsystem-badge.d.ts +30 -19
  131. package/types/kirbydesign-designsystem-badge.d.ts.map +1 -1
  132. package/types/kirbydesign-designsystem-button.d.ts +70 -45
  133. package/types/kirbydesign-designsystem-button.d.ts.map +1 -1
  134. package/types/kirbydesign-designsystem-calendar.d.ts +193 -132
  135. package/types/kirbydesign-designsystem-calendar.d.ts.map +1 -1
  136. package/types/kirbydesign-designsystem-card.d.ts +120 -66
  137. package/types/kirbydesign-designsystem-card.d.ts.map +1 -1
  138. package/types/kirbydesign-designsystem-chart.d.ts +198 -172
  139. package/types/kirbydesign-designsystem-chart.d.ts.map +1 -1
  140. package/types/kirbydesign-designsystem-checkbox.d.ts +96 -68
  141. package/types/kirbydesign-designsystem-checkbox.d.ts.map +1 -1
  142. package/types/kirbydesign-designsystem-config.d.ts +17 -21
  143. package/types/kirbydesign-designsystem-config.d.ts.map +1 -1
  144. package/types/kirbydesign-designsystem-data-table.d.ts +46 -26
  145. package/types/kirbydesign-designsystem-data-table.d.ts.map +1 -1
  146. package/types/kirbydesign-designsystem-divider.d.ts +11 -9
  147. package/types/kirbydesign-designsystem-divider.d.ts.map +1 -1
  148. package/types/kirbydesign-designsystem-dropdown.d.ts +219 -166
  149. package/types/kirbydesign-designsystem-dropdown.d.ts.map +1 -1
  150. package/types/kirbydesign-designsystem-empty-state.d.ts +47 -35
  151. package/types/kirbydesign-designsystem-empty-state.d.ts.map +1 -1
  152. package/types/kirbydesign-designsystem-fab-sheet.d.ts +34 -28
  153. package/types/kirbydesign-designsystem-fab-sheet.d.ts.map +1 -1
  154. package/types/kirbydesign-designsystem-flag.d.ts +18 -13
  155. package/types/kirbydesign-designsystem-flag.d.ts.map +1 -1
  156. package/types/kirbydesign-designsystem-form-field.d.ts +409 -242
  157. package/types/kirbydesign-designsystem-form-field.d.ts.map +1 -1
  158. package/types/kirbydesign-designsystem-gesture.d.ts +41 -46
  159. package/types/kirbydesign-designsystem-gesture.d.ts.map +1 -1
  160. package/types/kirbydesign-designsystem-header.d.ts +102 -64
  161. package/types/kirbydesign-designsystem-header.d.ts.map +1 -1
  162. package/types/kirbydesign-designsystem-helpers-scss.d.ts +6 -8
  163. package/types/kirbydesign-designsystem-helpers-scss.d.ts.map +1 -1
  164. package/types/kirbydesign-designsystem-helpers.d.ts +83 -97
  165. package/types/kirbydesign-designsystem-helpers.d.ts.map +1 -1
  166. package/types/kirbydesign-designsystem-icon.d.ts +63 -59
  167. package/types/kirbydesign-designsystem-icon.d.ts.map +1 -1
  168. package/types/kirbydesign-designsystem-item-group.d.ts +6 -9
  169. package/types/kirbydesign-designsystem-item-group.d.ts.map +1 -1
  170. package/types/kirbydesign-designsystem-item-sliding.d.ts +30 -26
  171. package/types/kirbydesign-designsystem-item-sliding.d.ts.map +1 -1
  172. package/types/kirbydesign-designsystem-item.d.ts +93 -54
  173. package/types/kirbydesign-designsystem-item.d.ts.map +1 -1
  174. package/types/kirbydesign-designsystem-kirby-app.d.ts +18 -19
  175. package/types/kirbydesign-designsystem-kirby-app.d.ts.map +1 -1
  176. package/types/kirbydesign-designsystem-list.d.ts +382 -263
  177. package/types/kirbydesign-designsystem-list.d.ts.map +1 -1
  178. package/types/kirbydesign-designsystem-loading-overlay.d.ts +35 -24
  179. package/types/kirbydesign-designsystem-loading-overlay.d.ts.map +1 -1
  180. package/types/kirbydesign-designsystem-menu.d.ts +119 -69
  181. package/types/kirbydesign-designsystem-menu.d.ts.map +1 -1
  182. package/types/kirbydesign-designsystem-modal.d.ts +577 -455
  183. package/types/kirbydesign-designsystem-modal.d.ts.map +1 -1
  184. package/types/kirbydesign-designsystem-page.d.ts +304 -226
  185. package/types/kirbydesign-designsystem-page.d.ts.map +1 -1
  186. package/types/kirbydesign-designsystem-popover.d.ts +48 -40
  187. package/types/kirbydesign-designsystem-popover.d.ts.map +1 -1
  188. package/types/kirbydesign-designsystem-progress-circle.d.ts +59 -61
  189. package/types/kirbydesign-designsystem-progress-circle.d.ts.map +1 -1
  190. package/types/kirbydesign-designsystem-radio.d.ts +147 -98
  191. package/types/kirbydesign-designsystem-radio.d.ts.map +1 -1
  192. package/types/kirbydesign-designsystem-range.d.ts +90 -45
  193. package/types/kirbydesign-designsystem-range.d.ts.map +1 -1
  194. package/types/kirbydesign-designsystem-reorder-list.d.ts +44 -32
  195. package/types/kirbydesign-designsystem-reorder-list.d.ts.map +1 -1
  196. package/types/kirbydesign-designsystem-router-outlet.d.ts +23 -18
  197. package/types/kirbydesign-designsystem-router-outlet.d.ts.map +1 -1
  198. package/types/kirbydesign-designsystem-section-header.d.ts +5 -8
  199. package/types/kirbydesign-designsystem-section-header.d.ts.map +1 -1
  200. package/types/kirbydesign-designsystem-segmented-control.d.ts +123 -100
  201. package/types/kirbydesign-designsystem-segmented-control.d.ts.map +1 -1
  202. package/types/kirbydesign-designsystem-shared-floating.d.ts +183 -128
  203. package/types/kirbydesign-designsystem-shared-floating.d.ts.map +1 -1
  204. package/types/kirbydesign-designsystem-shared-portal.d.ts +29 -28
  205. package/types/kirbydesign-designsystem-shared-portal.d.ts.map +1 -1
  206. package/types/kirbydesign-designsystem-shared.d.ts +143 -139
  207. package/types/kirbydesign-designsystem-shared.d.ts.map +1 -1
  208. package/types/kirbydesign-designsystem-slide-button.d.ts +43 -34
  209. package/types/kirbydesign-designsystem-slide-button.d.ts.map +1 -1
  210. package/types/kirbydesign-designsystem-slide.d.ts +80 -59
  211. package/types/kirbydesign-designsystem-slide.d.ts.map +1 -1
  212. package/types/kirbydesign-designsystem-spinner.d.ts +13 -14
  213. package/types/kirbydesign-designsystem-spinner.d.ts.map +1 -1
  214. package/types/kirbydesign-designsystem-tab-navigation.d.ts +78 -55
  215. package/types/kirbydesign-designsystem-tab-navigation.d.ts.map +1 -1
  216. package/types/kirbydesign-designsystem-tabs.d.ts +50 -45
  217. package/types/kirbydesign-designsystem-tabs.d.ts.map +1 -1
  218. package/types/kirbydesign-designsystem-testing-base.d.ts +2430 -815
  219. package/types/kirbydesign-designsystem-testing-base.d.ts.map +1 -1
  220. package/types/kirbydesign-designsystem-testing-jasmine.d.ts +9 -10
  221. package/types/kirbydesign-designsystem-testing-jasmine.d.ts.map +1 -1
  222. package/types/kirbydesign-designsystem-testing-jest.d.ts +9 -10
  223. package/types/kirbydesign-designsystem-testing-jest.d.ts.map +1 -1
  224. package/types/kirbydesign-designsystem-testing.d.ts +52 -58
  225. package/types/kirbydesign-designsystem-testing.d.ts.map +1 -1
  226. package/types/kirbydesign-designsystem-toast.d.ts +25 -31
  227. package/types/kirbydesign-designsystem-toast.d.ts.map +1 -1
  228. package/types/kirbydesign-designsystem-toggle-button.d.ts +62 -56
  229. package/types/kirbydesign-designsystem-toggle-button.d.ts.map +1 -1
  230. package/types/kirbydesign-designsystem-toggle.d.ts +71 -63
  231. package/types/kirbydesign-designsystem-toggle.d.ts.map +1 -1
  232. package/types/kirbydesign-designsystem-types.d.ts +15 -22
  233. package/types/kirbydesign-designsystem-types.d.ts.map +1 -1
  234. package/types/kirbydesign-designsystem.d.ts +135 -123
  235. package/types/kirbydesign-designsystem.d.ts.map +1 -1
  236. package/accordion/package.json +0 -4
  237. package/action-group/package.json +0 -4
  238. package/avatar/package.json +0 -4
  239. package/badge/package.json +0 -4
  240. package/button/package.json +0 -4
  241. package/calendar/package.json +0 -4
  242. package/card/package.json +0 -4
  243. package/chart/package.json +0 -4
  244. package/checkbox/package.json +0 -4
  245. package/config/package.json +0 -4
  246. package/data-table/package.json +0 -4
  247. package/divider/package.json +0 -4
  248. package/dropdown/package.json +0 -4
  249. package/empty-state/package.json +0 -4
  250. package/fab-sheet/package.json +0 -4
  251. package/flag/package.json +0 -4
  252. package/form-field/package.json +0 -4
  253. package/gesture/package.json +0 -4
  254. package/header/package.json +0 -4
  255. package/helpers/package.json +0 -4
  256. package/helpers/scss/package.json +0 -4
  257. package/icon/package.json +0 -4
  258. package/item/package.json +0 -4
  259. package/item-group/package.json +0 -4
  260. package/item-sliding/package.json +0 -4
  261. package/kirby-app/package.json +0 -4
  262. package/list/package.json +0 -4
  263. package/loading-overlay/package.json +0 -4
  264. package/menu/package.json +0 -4
  265. package/modal/package.json +0 -4
  266. package/page/package.json +0 -4
  267. package/popover/package.json +0 -4
  268. package/progress-circle/package.json +0 -4
  269. package/radio/package.json +0 -4
  270. package/range/package.json +0 -4
  271. package/reorder-list/package.json +0 -4
  272. package/router-outlet/package.json +0 -4
  273. package/section-header/package.json +0 -4
  274. package/segmented-control/package.json +0 -4
  275. package/shared/floating/package.json +0 -4
  276. package/shared/package.json +0 -4
  277. package/shared/portal/package.json +0 -4
  278. package/slide/package.json +0 -4
  279. package/slide-button/package.json +0 -4
  280. package/spinner/package.json +0 -4
  281. package/tab-navigation/package.json +0 -4
  282. package/tabs/package.json +0 -4
  283. package/testing/package.json +0 -4
  284. package/testing-base/package.json +0 -4
  285. package/testing-jasmine/package.json +0 -4
  286. package/testing-jest/package.json +0 -4
  287. package/toast/package.json +0 -4
  288. package/toggle/package.json +0 -4
  289. package/toggle-button/package.json +0 -4
  290. package/types/package.json +0 -4
@@ -1,703 +1,1188 @@
1
- import * as i0 from '@angular/core';
2
- import { EventEmitter, HostListener, Input, Output, Directive, HostBinding, Injectable, ViewChild, ChangeDetectionStrategy, Component, TemplateRef, ContentChild, NgModule } from '@angular/core';
3
- import { Subject, fromEvent } from 'rxjs';
4
- import { takeUntil, debounceTime, filter, map } from 'rxjs/operators';
5
- import * as i1 from '@kirbydesign/designsystem/types';
6
- import { IonList, IonItemSliding, IonItemOptions, IonLabel, IonListHeader, IonItemGroup, IonItemDivider } from '@ionic/angular/standalone';
7
- import * as i1$1 from '@kirbydesign/designsystem/helpers';
8
- import { elementHasAncestor } from '@kirbydesign/designsystem/helpers';
9
- import { NgClass, NgTemplateOutlet, CommonModule } from '@angular/common';
10
- import { IconComponent, IconModule } from '@kirbydesign/designsystem/icon';
11
- import { forwardAttributes } from '@kirbydesign/designsystem/shared';
12
- import { SpinnerComponent, SpinnerModule } from '@kirbydesign/designsystem/spinner';
13
-
14
- /**
15
- * Specify debounce duration in ms
16
- */
1
+ import * as i0 from "@angular/core";
2
+ import { ChangeDetectionStrategy, Component, ContentChild, Directive, EventEmitter, HostBinding, HostListener, Injectable, Input, NgModule, Output, TemplateRef, ViewChild } from "@angular/core";
3
+ import { Subject, fromEvent } from "rxjs";
4
+ import { debounceTime, filter, map, takeUntil } from "rxjs/operators";
5
+ import * as i1$1 from "@kirbydesign/designsystem/types";
6
+ import { IonItemDivider, IonItemGroup, IonItemOptions, IonItemSliding, IonLabel, IonList, IonListHeader } from "@ionic/angular";
7
+ import * as i1 from "@kirbydesign/designsystem/helpers";
8
+ import { elementHasAncestor } from "@kirbydesign/designsystem/helpers";
9
+ import { CommonModule, NgClass, NgTemplateOutlet } from "@angular/common";
10
+ import { IconComponent, IconModule } from "@kirbydesign/designsystem/icon";
11
+ import { forwardAttributes } from "@kirbydesign/designsystem/shared";
12
+ import { SpinnerComponent, SpinnerModule } from "@kirbydesign/designsystem/spinner";
17
13
  const INFINITE_SCROLL_DEBOUNCE = 100;
18
- class InfiniteScrollDirective {
19
- constructor(elementRef, windowRef, zone) {
20
- this.elementRef = elementRef;
21
- this.windowRef = windowRef;
22
- this.zone = zone;
23
- /**
24
- * Event that will be triggered when the user has scrolled to
25
- * bottom of the element
26
- */
27
- this.scrollEnd = new EventEmitter();
28
- /**
29
- * If true then {@link scrollEnd} event should NOT be emitted
30
- */
31
- this.disabled = false;
32
- /**
33
- * Emits a new value on element scroll event
34
- */
35
- this.scroll$ = new Subject();
36
- /**
37
- * Completes on component destroy lifecycle event
38
- * used to unsubscribe from infinite observables
39
- */
40
- this.ngUnsubscribe$ = new Subject();
41
- /**
42
- * An offset from the bottom of the element to trigger {@link scrollEnd} event
43
- */
44
- this.offset = 0.8;
45
- }
46
- ngAfterViewInit() {
47
- /**
48
- * Subscribe to {@link scroll$} observable and emit {@link scrollEnd} event
49
- * when element scroll position has surpassed the offset.
50
- */
51
- this.scroll$
52
- .pipe(takeUntil(this.ngUnsubscribe$), debounceTime(INFINITE_SCROLL_DEBOUNCE), filter(() => !this.disabled), filter((scroll) => {
53
- return (scroll.elementHeight * (1 - this.offset) >=
54
- scroll.distanceToViewBottom - scroll.viewHeight);
55
- }))
56
- .subscribe(() => {
57
- this.scrollEnd.emit();
58
- });
59
- /**
60
- * Subscribe to the ionScroll event on the ion-content around the list (if any)
61
- * and emit {@link scrollEnd} event when element scroll position has surpassed the offset.
62
- */
63
- setTimeout(() => {
64
- const ionContent = this.elementRef.nativeElement.closest('ion-content');
65
- if (ionContent) {
66
- // we run the 'ionScroll' event outside angular, as it would trigger change detection on each scroll
67
- this.zone.runOutsideAngular(() => {
68
- fromEvent(ionContent, 'ionScroll')
69
- .pipe(takeUntil(this.ngUnsubscribe$), debounceTime(INFINITE_SCROLL_DEBOUNCE), filter(() => !this.disabled), map(() => this.getScroll()), filter((scroll) => {
70
- return (scroll.elementHeight * (1 - this.offset) >=
71
- scroll.distanceToViewBottom - scroll.viewHeight);
72
- }))
73
- .subscribe(() => {
74
- // we make sure to emit the event inside angular again. As we want to show the spinner and need change detection for that.
75
- this.zone.run(() => this.scrollEnd.emit());
76
- });
77
- });
78
- }
79
- });
80
- }
81
- /**
82
- * On element scroll event emit next {@link scroll$} observable value
83
- */
84
- onScroll() {
85
- if (this.disabled)
86
- return;
87
- const scroll = this.getScroll();
88
- this.scroll$.next(scroll);
89
- }
90
- /**
91
- * trigger {@link ngUnsubscribe} complete on component destroy lifecycle hook
92
- */
93
- ngOnDestroy() {
94
- this.ngUnsubscribe$.next();
95
- this.ngUnsubscribe$.complete();
96
- }
97
- getScroll() {
98
- const element = this.elementRef.nativeElement;
99
- const boundindClientRect = element.getBoundingClientRect();
100
- const distanceToViewBottom = boundindClientRect.bottom;
101
- const elementHeight = boundindClientRect.height;
102
- const viewHeight = this.windowRef.nativeWindow.innerHeight;
103
- return { distanceToViewBottom, elementHeight, viewHeight };
104
- }
105
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: InfiniteScrollDirective, deps: [{ token: i0.ElementRef }, { token: i1.WindowRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
106
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: InfiniteScrollDirective, isStandalone: true, selector: "[kirbyInfiniteScroll]", inputs: { disabled: "disabled" }, outputs: { scrollEnd: "scrollEnd" }, host: { listeners: { "window:scroll": "onScroll()" } }, ngImport: i0 }); }
107
- }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: InfiniteScrollDirective, decorators: [{
109
- type: Directive,
110
- args: [{ selector: '[kirbyInfiniteScroll]' }]
111
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.WindowRef }, { type: i0.NgZone }], propDecorators: { scrollEnd: [{
112
- type: Output
113
- }], disabled: [{
114
- type: Input
115
- }], onScroll: [{
116
- type: HostListener,
117
- args: ['window:scroll']
118
- }] } });
119
-
120
- class ListItemColorDirective {
121
- ngOnChanges() {
122
- this.color = this.getColor();
123
- }
124
- getColor() {
125
- if (!this.kirbyListItemColor || !this.item) {
126
- return;
127
- }
128
- const themeColor = this.kirbyListItemColor(this.item);
129
- return themeColor;
130
- }
131
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListItemColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
132
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: ListItemColorDirective, isStandalone: true, selector: "[kirbyListItemColor]", inputs: { kirbyListItemColor: "kirbyListItemColor", item: "item" }, host: { properties: { "class": "this.color" } }, usesOnChanges: true, ngImport: i0 }); }
133
- }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListItemColorDirective, decorators: [{
135
- type: Directive,
136
- args: [{ selector: '[kirbyListItemColor]' }]
137
- }], propDecorators: { kirbyListItemColor: [{
138
- type: Input
139
- }], item: [{
140
- type: Input
141
- }], color: [{
142
- type: HostBinding,
143
- args: ['class']
144
- }] } });
145
-
146
- class ListHelper {
147
- onLoadOnDemand(component) {
148
- if (component.isLoadOnDemandEnabled && !component._isLoading) {
149
- component._isLoading = true;
150
- component.loadOnDemand.emit({
151
- complete: (disableLoadOnDemand) => {
152
- component.isLoadOnDemandEnabled = !disableLoadOnDemand;
153
- component._isLoading = false;
154
- },
155
- });
156
- }
157
- }
158
- groupSections(items, getGroupName) {
159
- const groupsMap = new Map();
160
- items.forEach((item) => {
161
- const itemGroup = getGroupName(item);
162
- const groupItems = groupsMap.get(itemGroup);
163
- if (groupItems) {
164
- groupItems.push(item);
165
- }
166
- else {
167
- groupsMap.set(itemGroup, [item]);
168
- }
169
- });
170
- return Array.from(groupsMap)
171
- .sort(([name], [otherName]) => name.localeCompare(otherName))
172
- .map(([name, items]) => {
173
- return { name, items };
174
- });
175
- }
176
- groupStandAloneItems(items, standAloneProperty) {
177
- const list = items.reduce((accumulator, item) => {
178
- const lastList = accumulator[accumulator.length - 1];
179
- const lastItemInList = lastList[lastList.length - 1];
180
- if (!lastItemInList) {
181
- lastList.push(item);
182
- }
183
- else if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {
184
- lastList.push(item);
185
- }
186
- else {
187
- accumulator.push([item]);
188
- }
189
- return accumulator;
190
- }, [[]]);
191
- return list.map((items) => {
192
- return { items };
193
- });
194
- }
195
- groupSectionsWithStandAloneItems(items, getGroupName, standAloneProperty) {
196
- const sectionsMap = new Map();
197
- items.forEach((item) => {
198
- const sectionName = getGroupName(item);
199
- if (sectionsMap.has(sectionName)) {
200
- const section = sectionsMap.get(sectionName);
201
- const lastListInSection = section[section.length - 1];
202
- const lastItemInList = lastListInSection[lastListInSection.length - 1];
203
- if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) {
204
- lastListInSection.push(item);
205
- }
206
- else {
207
- section.push([item]);
208
- }
209
- }
210
- else {
211
- sectionsMap.set(sectionName, [[item]]);
212
- }
213
- });
214
- return Array.from(sectionsMap)
215
- .sort(([name], [otherName]) => name.localeCompare(otherName))
216
- .map(([name, lists]) => {
217
- return { name, lists };
218
- });
219
- }
220
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
221
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListHelper }); }
222
- }
223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListHelper, decorators: [{
224
- type: Injectable
225
- }] });
226
-
227
- class ListExperimentalComponent {
228
- closeAllSlidingItems(e) {
229
- if (elementHasAncestor(e.target, 'ion-item-option', 'ion-list')) {
230
- this.list.closeSlidingItems();
231
- }
232
- }
233
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListExperimentalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
234
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.18", type: ListExperimentalComponent, isStandalone: true, selector: "kirby-list-experimental", host: { listeners: { "click": "closeAllSlidingItems($event)" } }, viewQueries: [{ propertyName: "list", first: true, predicate: IonList, descendants: true, static: true }], ngImport: i0, template: "<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n <ng-content></ng-content>\n</div>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}.rounded{border-radius:16px;overflow:hidden}.shadow{box-shadow:0 1px 24px #1c1c1c0a}.first-item-padding>::ng-deep :first-child{--item-padding-top: 8px}.last-item-padding>::ng-deep :last-child{--item-padding-bottom: 8px}.first-item{border-top-left-radius:16px;border-top-right-radius:16px;overflow:hidden}.first-item>::ng-deep :first-child{--item-padding-top: 8px}.last-item{border-bottom-left-radius:16px;border-bottom-right-radius:16px;overflow:hidden}.last-item>::ng-deep :last-child{--item-padding-bottom: 8px}:host{display:block}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
235
- }
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListExperimentalComponent, decorators: [{
237
- type: Component,
238
- args: [{ selector: 'kirby-list-experimental', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n <ng-content></ng-content>\n</div>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}.rounded{border-radius:16px;overflow:hidden}.shadow{box-shadow:0 1px 24px #1c1c1c0a}.first-item-padding>::ng-deep :first-child{--item-padding-top: 8px}.last-item-padding>::ng-deep :last-child{--item-padding-bottom: 8px}.first-item{border-top-left-radius:16px;border-top-right-radius:16px;overflow:hidden}.first-item>::ng-deep :first-child{--item-padding-top: 8px}.last-item{border-bottom-left-radius:16px;border-bottom-right-radius:16px;overflow:hidden}.last-item>::ng-deep :last-child{--item-padding-bottom: 8px}:host{display:block}\n"] }]
239
- }], propDecorators: { list: [{
240
- type: ViewChild,
241
- args: [IonList, { static: true }]
242
- }], closeAllSlidingItems: [{
243
- type: HostListener,
244
- args: ['click', ['$event']]
245
- }] } });
246
-
247
- class ListHeaderComponent {
248
- constructor() { }
249
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
250
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.18", type: ListHeaderComponent, isStandalone: true, selector: "kirby-list-header", ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{background-color:transparent;display:flex;flex-direction:row;justify-content:space-between;width:100%;padding:24px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
251
- }
252
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListHeaderComponent, decorators: [{
253
- type: Component,
254
- args: [{ selector: 'kirby-list-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{background-color:transparent;display:flex;flex-direction:row;justify-content:space-between;width:100%;padding:24px}\n"] }]
255
- }], ctorParameters: () => [] });
256
-
257
- class ListItemComponent {
258
- constructor(platform) {
259
- this.platform = platform;
260
- this._isSwipingEnabled = false;
261
- this.swipeActions = [];
262
- this.itemSelect = new EventEmitter();
263
- this.swipeActionSelect = new EventEmitter();
264
- this.initializeSwipeActions();
265
- }
266
- _onItemSelect(item) {
267
- if (!this.isSelectable)
268
- return;
269
- this.itemSelect.emit(item);
270
- }
271
- _onSwipeActionSelect(swipeAction, item, event) {
272
- this.swipeActionSelect.emit({
273
- swipeAction,
274
- item,
275
- event,
276
- });
277
- }
278
- ngOnInit() {
279
- this.initializeSwipeActions();
280
- }
281
- ngAfterViewInit() {
282
- if (!this.itemTemplate) {
283
- console.warn('No item template was provided.');
284
- }
285
- }
286
- _hasSwipeActions(item) {
287
- if (!Array.isArray(this.swipeActions)) {
288
- return false;
289
- }
290
- return this.swipeActions.some((swipeAction) => {
291
- if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {
292
- return false;
293
- }
294
- if (swipeAction.isDisabled === true) {
295
- return false;
296
- }
297
- return swipeAction.position === 'left' || swipeAction.position === 'right';
298
- });
299
- }
300
- _getSwipeActions(item, direction) {
301
- if (!Array.isArray(this.swipeActions)) {
302
- return [];
303
- }
304
- return this.swipeActions.filter((swipeAction) => {
305
- if (this.isSwipeActionDisabled(swipeAction, item)) {
306
- return false;
307
- }
308
- return direction ? swipeAction.position === direction : true;
309
- });
310
- }
311
- isSwipeActionDisabled(swipeAction, item) {
312
- if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) {
313
- return true;
314
- }
315
- return swipeAction.isDisabled === true;
316
- }
317
- _getSwipeActionEnd(item) {
318
- if (this._getSwipeActions(item, 'left').length) {
319
- return 'start';
320
- }
321
- return 'end';
322
- }
323
- _getSwipeActionIcon(swipeAction, item) {
324
- if (!swipeAction.icon)
325
- return;
326
- if (swipeAction.icon instanceof Function) {
327
- return swipeAction.icon(item);
328
- }
329
- return swipeAction.icon;
330
- }
331
- _getSwipeActionTitle(swipeAction, item) {
332
- if (swipeAction.title instanceof Function) {
333
- return swipeAction.title(item);
334
- }
335
- return swipeAction.title;
336
- }
337
- _getSwipeActionType(swipeAction, item) {
338
- if (swipeAction.type instanceof Function) {
339
- return swipeAction.type(item);
340
- }
341
- return swipeAction.type;
342
- }
343
- initializeSwipeActions() {
344
- if (this.swipeActions && this.swipeActions.length) {
345
- this._isSwipingEnabled = this.platform.isTouch();
346
- }
347
- }
348
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListItemComponent, deps: [{ token: i1$1.PlatformService }], target: i0.ɵɵFactoryTarget.Component }); }
349
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ListItemComponent, isStandalone: true, selector: "kirby-list-item", inputs: { item: "item", boundaryClass: "boundaryClass", swipeActions: "swipeActions", itemTemplate: "itemTemplate", isSelected: "isSelected", isSelectable: "isSelectable", getItemColor: "getItemColor" }, outputs: { itemSelect: "itemSelect", swipeActionSelect: "swipeActionSelect" }, viewQueries: [{ propertyName: "ionItemSliding", first: true, predicate: IonItemSliding, descendants: true }], ngImport: i0, template: "<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:0 1px 24px #1c1c1c0a;background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: 56px;--padding-bottom: 8px;--padding-end: 16px;--padding-start: 16px;--padding-top: 8px;display:flex;font-size:clamp(12px,.875rem,28px);min-height:56px;overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:24px}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 16px 8px;font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:24px 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:0 1px 24px #1c1c1c0a;border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:16px}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxxl{margin-bottom:72px}.stand-alone-bottom-margin-xxxxl{margin-bottom:64px}.stand-alone-bottom-margin-xxxl{margin-bottom:56px}.stand-alone-bottom-margin-xxl{margin-bottom:48px}.stand-alone-bottom-margin-xl{margin-bottom:40px}.stand-alone-bottom-margin-l{margin-bottom:32px}.stand-alone-bottom-margin-m{margin-bottom:24px}.stand-alone-bottom-margin-s{margin-bottom:16px}.stand-alone-bottom-margin-xs{margin-bottom:12px}.stand-alone-bottom-margin-xxs{margin-bottom:8px}.stand-alone-bottom-margin-xxxs{margin-bottom:4px}.stand-alone-bottom-margin-xxxxs{margin-bottom:2px}\n", ".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{overflow:hidden}:host-context(.has-divider) ion-item-sliding:not(.last){border-bottom:1px solid var(--kirby-list-item-border-color, var(--kirby-background-color))}\n"], dependencies: [{ kind: "component", type: IonItemSliding, selector: "ion-item-sliding", inputs: ["disabled"] }, { kind: "directive", type: ListItemColorDirective, selector: "[kirbyListItemColor]", inputs: ["kirbyListItemColor", "item"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonItemOptions, selector: "ion-item-options", inputs: ["side"] }, { kind: "component", type: IconComponent, selector: "kirby-icon", inputs: ["size", "name"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }] }); }
350
- }
351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListItemComponent, decorators: [{
352
- type: Component,
353
- args: [{ selector: 'kirby-list-item', imports: [
354
- IonItemSliding,
355
- ListItemColorDirective,
356
- NgClass,
357
- NgTemplateOutlet,
358
- IonItemOptions,
359
- IconComponent,
360
- IonLabel,
361
- ], template: "<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:0 1px 24px #1c1c1c0a;background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: 56px;--padding-bottom: 8px;--padding-end: 16px;--padding-start: 16px;--padding-top: 8px;display:flex;font-size:clamp(12px,.875rem,28px);min-height:56px;overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:24px}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 16px 8px;font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:24px 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:0 1px 24px #1c1c1c0a;border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:16px}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxxl{margin-bottom:72px}.stand-alone-bottom-margin-xxxxl{margin-bottom:64px}.stand-alone-bottom-margin-xxxl{margin-bottom:56px}.stand-alone-bottom-margin-xxl{margin-bottom:48px}.stand-alone-bottom-margin-xl{margin-bottom:40px}.stand-alone-bottom-margin-l{margin-bottom:32px}.stand-alone-bottom-margin-m{margin-bottom:24px}.stand-alone-bottom-margin-s{margin-bottom:16px}.stand-alone-bottom-margin-xs{margin-bottom:12px}.stand-alone-bottom-margin-xxs{margin-bottom:8px}.stand-alone-bottom-margin-xxxs{margin-bottom:4px}.stand-alone-bottom-margin-xxxxs{margin-bottom:2px}\n", ".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}:host{overflow:hidden}:host-context(.has-divider) ion-item-sliding:not(.last){border-bottom:1px solid var(--kirby-list-item-border-color, var(--kirby-background-color))}\n"] }]
362
- }], ctorParameters: () => [{ type: i1$1.PlatformService }], propDecorators: { ionItemSliding: [{
363
- type: ViewChild,
364
- args: [IonItemSliding]
365
- }], item: [{
366
- type: Input
367
- }], boundaryClass: [{
368
- type: Input
369
- }], swipeActions: [{
370
- type: Input
371
- }], itemTemplate: [{
372
- type: Input
373
- }], isSelected: [{
374
- type: Input
375
- }], isSelectable: [{
376
- type: Input
377
- }], getItemColor: [{
378
- type: Input
379
- }], itemSelect: [{
380
- type: Output
381
- }], swipeActionSelect: [{
382
- type: Output
383
- }] } });
384
-
385
- class ListSectionHeaderComponent {
386
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListSectionHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
387
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.18", type: ListSectionHeaderComponent, isStandalone: true, selector: "kirby-list-section-header", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"header\">\n <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
388
- }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListSectionHeaderComponent, decorators: [{
390
- type: Component,
391
- args: [{ selector: 'kirby-list-section-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"header\">\n <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n" }]
392
- }], propDecorators: { title: [{
393
- type: Input
394
- }] } });
395
-
396
- class ListItemTemplateDirective {
397
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListItemTemplateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
398
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: ListItemTemplateDirective, isStandalone: true, selector: "[kirbyListItemTemplate]", ngImport: i0 }); }
399
- }
400
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListItemTemplateDirective, decorators: [{
401
- type: Directive,
402
- args: [{ selector: '[kirbyListItemTemplate]' }]
403
- }] });
404
- class ListHeaderDirective {
405
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
406
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: ListHeaderDirective, isStandalone: true, selector: "[kirbyListHeader], [kirbyListHeaderTemplate]", ngImport: i0 }); }
407
- }
408
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListHeaderDirective, decorators: [{
409
- type: Directive,
410
- args: [{ selector: '[kirbyListHeader], [kirbyListHeaderTemplate]' }]
411
- }] });
412
- class ListSectionHeaderDirective {
413
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListSectionHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
414
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: ListSectionHeaderDirective, isStandalone: true, selector: "[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]", ngImport: i0 }); }
415
- }
416
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListSectionHeaderDirective, decorators: [{
417
- type: Directive,
418
- args: [{ selector: '[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]' }]
419
- }] });
420
- class ListFooterDirective {
421
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListFooterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
422
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.18", type: ListFooterDirective, isStandalone: true, selector: "[kirbyListFooter], [kirbyListFooterTemplate]", ngImport: i0 }); }
423
- }
424
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListFooterDirective, decorators: [{
425
- type: Directive,
426
- args: [{ selector: '[kirbyListFooter], [kirbyListFooterTemplate]' }]
427
- }] });
428
-
429
- class ListComponent {
430
- get isShapeRounded() {
431
- return this.shape === 'rounded';
432
- }
433
- get isShapeNone() {
434
- return this.shape === 'none';
435
- }
436
- constructor(listHelper, element, renderer) {
437
- this.listHelper = listHelper;
438
- this.element = element;
439
- this.renderer = renderer;
440
- /**
441
- * Provide items for the list to render. Items must be provided in the order you expect them to be rendered.
442
- */
443
- this.items = [];
444
- /**
445
- * Bottom margin for stand alone items
446
- */
447
- this.standAloneSpacing = 'xxs';
448
- /**
449
- * Determines if dividers (bottom-border on list items) should be shown or not.
450
- */
451
- this.showDivider = true;
452
- /**
453
- * Determines if list row text should turn bold on selection
454
- */
455
- this.markSelectedRow = false;
456
- /**
457
- * Determine outline shape of:
458
- * - list, if {@link #isSectionsEnabled} is `false`
459
- * - section, if {@link #isSectionsEnabled} is `true`
460
- *
461
- * `square` means **without** rounded corners, `rounded` means **with** rounded corners., `none` means **without** padding, border, box-shadow and background.
462
- */
463
- this.shape = 'rounded';
464
- /**
465
- * Emitting event when more items are to be loaded.
466
- */
467
- this.loadOnDemand = new EventEmitter();
468
- /**
469
- * Determines if list items should have swipe actions or not
470
- * - the order of swipe actions is used to determine edge actions,
471
- * as well as their order of appearance on the screen.
472
- */
473
- this.swipeActions = [];
474
- /**
475
- * Emitting event when an item is selected (tapped on mobile, clicked on web)
476
- */
477
- this.itemSelect = new EventEmitter();
478
- this.disableSelectionHighlight = false;
479
- this._attributesToForward = ['aria-label', 'aria-labelledby'];
480
- }
481
- ngOnInit() {
482
- this._isSelectable = this.itemSelect.observers.length > 0;
483
- if (this.isLoadOnDemandEnabled === undefined) {
484
- this.isLoadOnDemandEnabled = this.loadOnDemand.observers.length > 0;
485
- }
486
- }
487
- ngOnChanges() {
488
- this._isSectionsEnabled = !!this.getSectionName;
489
- this._isStandAloneEnabled = !!this.getStandAloneByProperty;
490
- if (this._isSectionsEnabled && this._isStandAloneEnabled) {
491
- this._groupedItems = this.listHelper.groupSectionsWithStandAloneItems(this.items, this.getSectionName, this.getStandAloneByProperty);
492
- }
493
- else if (this._isSectionsEnabled) {
494
- this._groupedItems = this.listHelper.groupSections(this.items, this.getSectionName);
495
- }
496
- else if (this._isStandAloneEnabled) {
497
- this._groupedItems = this.listHelper.groupStandAloneItems(this.items, this.getStandAloneByProperty);
498
- }
499
- }
500
- ngAfterViewInit() {
501
- forwardAttributes(this.element.nativeElement, this._attributesToForward, this.renderer, this.element.nativeElement.querySelector('ion-list'));
502
- }
503
- _onLoadOnDemand() {
504
- this.listHelper.onLoadOnDemand(this);
505
- }
506
- sectionTrackBy(index, section) {
507
- return section?.name ?? index;
508
- }
509
- onItemSelect(item) {
510
- if (!this.disableSelectionHighlight) {
511
- this._selectedItem = item;
512
- }
513
- this.itemSelect.emit(item);
514
- }
515
- onSwipeActionSelect(args) {
516
- args.swipeAction.onSelected(args.item);
517
- this.list.closeSlidingItems();
518
- args.event.stopPropagation();
519
- }
520
- _getBoundaryClass(index, section) {
521
- if (index === 0) {
522
- if (this.headerTemplate)
523
- return null;
524
- else
525
- return section.length === 1 ? ['first', 'last'] : 'first';
526
- }
527
- if (index === section.length - 1) {
528
- return this.footerTemplate ? null : 'last';
529
- }
530
- return null;
531
- }
532
- standAloneClass() {
533
- return this._isStandAloneEnabled ? `stand-alone-bottom-margin-${this.standAloneSpacing}` : '';
534
- }
535
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListComponent, deps: [{ token: ListHelper }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
536
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: ListComponent, isStandalone: true, selector: "kirby-list", inputs: { items: "items", getItemColor: "getItemColor", getSectionName: "getSectionName", trackBy: "trackBy", getStandAloneByProperty: "getStandAloneByProperty", standAloneSpacing: "standAloneSpacing", noMoreItemsText: "noMoreItemsText", showDivider: "showDivider", markSelectedRow: "markSelectedRow", shape: "shape", hasItemSpacing: "hasItemSpacing", isLoadOnDemandEnabled: "isLoadOnDemandEnabled", swipeActions: "swipeActions", disableSelectionHighlight: "disableSelectionHighlight" }, outputs: { loadOnDemand: "loadOnDemand", itemSelect: "itemSelect" }, host: { properties: { "class.shape-rounded": "this.isShapeRounded", "class.shape-none": "this.isShapeNone", "class.item-spacing": "this.hasItemSpacing", "class.has-sections": "this._isSectionsEnabled", "class.has-stand-alone": "this._isStandAloneEnabled" } }, providers: [ListHelper], queries: [{ propertyName: "headerTemplate", first: true, predicate: ListHeaderDirective, descendants: true, read: TemplateRef }, { propertyName: "sectionHeaderTemplate", first: true, predicate: ListSectionHeaderDirective, descendants: true, read: TemplateRef }, { propertyName: "footerTemplate", first: true, predicate: ListFooterDirective, descendants: true, read: TemplateRef }, { propertyName: "itemTemplate", first: true, predicate: ListItemTemplateDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "list", first: true, predicate: ["list"], descendants: true, static: true }, { propertyName: "scrollDirective", first: true, predicate: InfiniteScrollDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:0 1px 24px #1c1c1c0a;background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: 56px;--padding-bottom: 8px;--padding-end: 16px;--padding-start: 16px;--padding-top: 8px;display:flex;font-size:clamp(12px,.875rem,28px);min-height:56px;overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:24px}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 16px 8px;font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:24px 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:0 1px 24px #1c1c1c0a;border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:16px}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxxl{margin-bottom:72px}.stand-alone-bottom-margin-xxxxl{margin-bottom:64px}.stand-alone-bottom-margin-xxxl{margin-bottom:56px}.stand-alone-bottom-margin-xxl{margin-bottom:48px}.stand-alone-bottom-margin-xl{margin-bottom:40px}.stand-alone-bottom-margin-l{margin-bottom:32px}.stand-alone-bottom-margin-m{margin-bottom:24px}.stand-alone-bottom-margin-s{margin-bottom:16px}.stand-alone-bottom-margin-xs{margin-bottom:12px}.stand-alone-bottom-margin-xxs{margin-bottom:8px}.stand-alone-bottom-margin-xxxs{margin-bottom:4px}.stand-alone-bottom-margin-xxxxs{margin-bottom:2px}\n"], dependencies: [{ kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[kirbyInfiniteScroll]", inputs: ["disabled"], outputs: ["scrollEnd"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: SpinnerComponent, selector: "kirby-spinner" }, { kind: "component", type: IonItemGroup, selector: "ion-item-group" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: IonItemDivider, selector: "ion-item-divider", inputs: ["color", "mode", "sticky"] }, { kind: "component", type: ListItemComponent, selector: "kirby-list-item", inputs: ["item", "boundaryClass", "swipeActions", "itemTemplate", "isSelected", "isSelectable", "getItemColor"], outputs: ["itemSelect", "swipeActionSelect"] }] }); }
537
- }
538
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListComponent, decorators: [{
539
- type: Component,
540
- args: [{ selector: 'kirby-list', providers: [ListHelper], imports: [
541
- IonList,
542
- InfiniteScrollDirective,
543
- IonListHeader,
544
- NgTemplateOutlet,
545
- SpinnerComponent,
546
- IonItemGroup,
547
- NgClass,
548
- IonItemDivider,
549
- ListItemComponent,
550
- ], template: "<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n", styles: [".kirby-line-clamp{display:-webkit-box;-webkit-line-clamp:var(--line-clamp, none);-webkit-box-orient:vertical;overflow:hidden}ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:0 1px 24px #1c1c1c0a;background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: 56px;--padding-bottom: 8px;--padding-end: 16px;--padding-start: 16px;--padding-top: 8px;display:flex;font-size:clamp(12px,.875rem,28px);min-height:56px;overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:24px}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 16px 8px;font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:24px 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:0 1px 24px #1c1c1c0a;border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:16px}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxxl{margin-bottom:72px}.stand-alone-bottom-margin-xxxxl{margin-bottom:64px}.stand-alone-bottom-margin-xxxl{margin-bottom:56px}.stand-alone-bottom-margin-xxl{margin-bottom:48px}.stand-alone-bottom-margin-xl{margin-bottom:40px}.stand-alone-bottom-margin-l{margin-bottom:32px}.stand-alone-bottom-margin-m{margin-bottom:24px}.stand-alone-bottom-margin-s{margin-bottom:16px}.stand-alone-bottom-margin-xs{margin-bottom:12px}.stand-alone-bottom-margin-xxs{margin-bottom:8px}.stand-alone-bottom-margin-xxxs{margin-bottom:4px}.stand-alone-bottom-margin-xxxxs{margin-bottom:2px}\n"] }]
551
- }], ctorParameters: () => [{ type: ListHelper }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { list: [{
552
- type: ViewChild,
553
- args: ['list', { static: true }]
554
- }], scrollDirective: [{
555
- type: ViewChild,
556
- args: [InfiniteScrollDirective]
557
- }], items: [{
558
- type: Input
559
- }], getItemColor: [{
560
- type: Input
561
- }], getSectionName: [{
562
- type: Input
563
- }], trackBy: [{
564
- type: Input
565
- }], getStandAloneByProperty: [{
566
- type: Input
567
- }], standAloneSpacing: [{
568
- type: Input
569
- }], noMoreItemsText: [{
570
- type: Input
571
- }], showDivider: [{
572
- type: Input
573
- }], markSelectedRow: [{
574
- type: Input
575
- }], shape: [{
576
- type: Input
577
- }], isShapeRounded: [{
578
- type: HostBinding,
579
- args: ['class.shape-rounded']
580
- }], isShapeNone: [{
581
- type: HostBinding,
582
- args: ['class.shape-none']
583
- }], hasItemSpacing: [{
584
- type: HostBinding,
585
- args: ['class.item-spacing']
586
- }, {
587
- type: Input
588
- }], isLoadOnDemandEnabled: [{
589
- type: Input
590
- }], loadOnDemand: [{
591
- type: Output
592
- }], swipeActions: [{
593
- type: Input
594
- }], itemSelect: [{
595
- type: Output
596
- }], disableSelectionHighlight: [{
597
- type: Input
598
- }], headerTemplate: [{
599
- type: ContentChild,
600
- args: [ListHeaderDirective, { static: false, read: TemplateRef }]
601
- }], sectionHeaderTemplate: [{
602
- type: ContentChild,
603
- args: [ListSectionHeaderDirective, { static: false, read: TemplateRef }]
604
- }], footerTemplate: [{
605
- type: ContentChild,
606
- args: [ListFooterDirective, { static: false, read: TemplateRef }]
607
- }], itemTemplate: [{
608
- type: ContentChild,
609
- args: [ListItemTemplateDirective, { static: true, read: TemplateRef }]
610
- }], _isSectionsEnabled: [{
611
- type: HostBinding,
612
- args: ['class.has-sections']
613
- }], _isStandAloneEnabled: [{
614
- type: HostBinding,
615
- args: ['class.has-stand-alone']
616
- }] } });
617
-
14
+ var InfiniteScrollDirective = class InfiniteScrollDirective {
15
+ constructor(elementRef, windowRef, zone) {
16
+ this.elementRef = elementRef;
17
+ this.windowRef = windowRef;
18
+ this.zone = zone;
19
+ this.scrollEnd = new EventEmitter();
20
+ this.disabled = false;
21
+ this.scroll$ = new Subject();
22
+ this.ngUnsubscribe$ = new Subject();
23
+ this.offset = .8;
24
+ }
25
+ ngAfterViewInit() {
26
+ this.scroll$.pipe(takeUntil(this.ngUnsubscribe$), debounceTime(100), filter(() => !this.disabled), filter((scroll) => {
27
+ return scroll.elementHeight * (1 - this.offset) >= scroll.distanceToViewBottom - scroll.viewHeight;
28
+ })).subscribe(() => {
29
+ this.scrollEnd.emit();
30
+ });
31
+ setTimeout(() => {
32
+ const ionContent = this.elementRef.nativeElement.closest("ion-content");
33
+ if (ionContent) this.zone.runOutsideAngular(() => {
34
+ fromEvent(ionContent, "ionScroll").pipe(takeUntil(this.ngUnsubscribe$), debounceTime(100), filter(() => !this.disabled), map(() => this.getScroll()), filter((scroll) => {
35
+ return scroll.elementHeight * (1 - this.offset) >= scroll.distanceToViewBottom - scroll.viewHeight;
36
+ })).subscribe(() => {
37
+ this.zone.run(() => this.scrollEnd.emit());
38
+ });
39
+ });
40
+ });
41
+ }
42
+ onScroll() {
43
+ if (this.disabled) return;
44
+ const scroll = this.getScroll();
45
+ this.scroll$.next(scroll);
46
+ }
47
+ ngOnDestroy() {
48
+ this.ngUnsubscribe$.next();
49
+ this.ngUnsubscribe$.complete();
50
+ }
51
+ getScroll() {
52
+ const boundindClientRect = this.elementRef.nativeElement.getBoundingClientRect();
53
+ return {
54
+ distanceToViewBottom: boundindClientRect.bottom,
55
+ elementHeight: boundindClientRect.height,
56
+ viewHeight: this.windowRef.nativeWindow.innerHeight
57
+ };
58
+ }
59
+ static {
60
+ this.ɵfac = i0.ɵɵngDeclareFactory({
61
+ minVersion: "12.0.0",
62
+ version: "22.2.2",
63
+ ngImport: i0,
64
+ type: InfiniteScrollDirective,
65
+ deps: [
66
+ { token: i0.ElementRef },
67
+ { token: i1$1.WindowRef },
68
+ { token: i0.NgZone }
69
+ ],
70
+ target: i0.ɵɵFactoryTarget.Directive
71
+ });
72
+ }
73
+ static {
74
+ this.ɵdir = i0.ɵɵngDeclareDirective({
75
+ minVersion: "14.0.0",
76
+ version: "22.2.2",
77
+ type: InfiniteScrollDirective,
78
+ isStandalone: true,
79
+ selector: "[kirbyInfiniteScroll]",
80
+ inputs: { disabled: "disabled" },
81
+ outputs: { scrollEnd: "scrollEnd" },
82
+ host: { listeners: { "window:scroll": "onScroll()" } },
83
+ ngImport: i0
84
+ });
85
+ }
86
+ };
87
+ i0.ɵɵngDeclareClassMetadata({
88
+ minVersion: "12.0.0",
89
+ version: "22.2.2",
90
+ ngImport: i0,
91
+ type: InfiniteScrollDirective,
92
+ decorators: [{
93
+ type: Directive,
94
+ args: [{ selector: "[kirbyInfiniteScroll]" }]
95
+ }],
96
+ ctorParameters: () => [
97
+ { type: i0.ElementRef },
98
+ { type: i1$1.WindowRef },
99
+ { type: i0.NgZone }
100
+ ],
101
+ propDecorators: {
102
+ scrollEnd: [{ type: Output }],
103
+ disabled: [{ type: Input }],
104
+ onScroll: [{
105
+ type: HostListener,
106
+ args: ["window:scroll"]
107
+ }]
108
+ }
109
+ });
110
+ var ListItemColorDirective = class ListItemColorDirective {
111
+ ngOnChanges() {
112
+ this.color = this.getColor();
113
+ }
114
+ getColor() {
115
+ if (!this.kirbyListItemColor || !this.item) return;
116
+ return this.kirbyListItemColor(this.item);
117
+ }
118
+ static {
119
+ this.ɵfac = i0.ɵɵngDeclareFactory({
120
+ minVersion: "12.0.0",
121
+ version: "22.2.2",
122
+ ngImport: i0,
123
+ type: ListItemColorDirective,
124
+ deps: [],
125
+ target: i0.ɵɵFactoryTarget.Directive
126
+ });
127
+ }
128
+ static {
129
+ this.ɵdir = i0.ɵɵngDeclareDirective({
130
+ minVersion: "14.0.0",
131
+ version: "22.2.2",
132
+ type: ListItemColorDirective,
133
+ isStandalone: true,
134
+ selector: "[kirbyListItemColor]",
135
+ inputs: {
136
+ kirbyListItemColor: "kirbyListItemColor",
137
+ item: "item"
138
+ },
139
+ host: { properties: { "class": "this.color" } },
140
+ usesOnChanges: true,
141
+ ngImport: i0
142
+ });
143
+ }
144
+ };
145
+ i0.ɵɵngDeclareClassMetadata({
146
+ minVersion: "12.0.0",
147
+ version: "22.2.2",
148
+ ngImport: i0,
149
+ type: ListItemColorDirective,
150
+ decorators: [{
151
+ type: Directive,
152
+ args: [{ selector: "[kirbyListItemColor]" }]
153
+ }],
154
+ propDecorators: {
155
+ kirbyListItemColor: [{ type: Input }],
156
+ item: [{ type: Input }],
157
+ color: [{
158
+ type: HostBinding,
159
+ args: ["class"]
160
+ }]
161
+ }
162
+ });
163
+ var ListHelper = class ListHelper {
164
+ onLoadOnDemand(component) {
165
+ if (component.isLoadOnDemandEnabled && !component._isLoading) {
166
+ component._isLoading = true;
167
+ component.loadOnDemand.emit({ complete: (disableLoadOnDemand) => {
168
+ component.isLoadOnDemandEnabled = !disableLoadOnDemand;
169
+ component._isLoading = false;
170
+ } });
171
+ }
172
+ }
173
+ groupSections(items, getGroupName) {
174
+ const groupsMap = /* @__PURE__ */ new Map();
175
+ items.forEach((item) => {
176
+ const itemGroup = getGroupName(item);
177
+ const groupItems = groupsMap.get(itemGroup);
178
+ if (groupItems) groupItems.push(item);
179
+ else groupsMap.set(itemGroup, [item]);
180
+ });
181
+ return Array.from(groupsMap).sort(([name], [otherName]) => name.localeCompare(otherName)).map(([name, items]) => {
182
+ return {
183
+ name,
184
+ items
185
+ };
186
+ });
187
+ }
188
+ groupStandAloneItems(items, standAloneProperty) {
189
+ return items.reduce((accumulator, item) => {
190
+ const lastList = accumulator[accumulator.length - 1];
191
+ const lastItemInList = lastList[lastList.length - 1];
192
+ if (!lastItemInList) lastList.push(item);
193
+ else if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) lastList.push(item);
194
+ else accumulator.push([item]);
195
+ return accumulator;
196
+ }, [[]]).map((items) => {
197
+ return { items };
198
+ });
199
+ }
200
+ groupSectionsWithStandAloneItems(items, getGroupName, standAloneProperty) {
201
+ const sectionsMap = /* @__PURE__ */ new Map();
202
+ items.forEach((item) => {
203
+ const sectionName = getGroupName(item);
204
+ if (sectionsMap.has(sectionName)) {
205
+ const section = sectionsMap.get(sectionName);
206
+ const lastListInSection = section[section.length - 1];
207
+ const lastItemInList = lastListInSection[lastListInSection.length - 1];
208
+ if (!item[standAloneProperty] && !lastItemInList[standAloneProperty]) lastListInSection.push(item);
209
+ else section.push([item]);
210
+ } else sectionsMap.set(sectionName, [[item]]);
211
+ });
212
+ return Array.from(sectionsMap).sort(([name], [otherName]) => name.localeCompare(otherName)).map(([name, lists]) => {
213
+ return {
214
+ name,
215
+ lists
216
+ };
217
+ });
218
+ }
219
+ static {
220
+ this.ɵfac = i0.ɵɵngDeclareFactory({
221
+ minVersion: "12.0.0",
222
+ version: "22.2.2",
223
+ ngImport: i0,
224
+ type: ListHelper,
225
+ deps: [],
226
+ target: i0.ɵɵFactoryTarget.Injectable
227
+ });
228
+ }
229
+ static {
230
+ this.ɵprov = i0.ɵɵngDeclareInjectable({
231
+ minVersion: "12.0.0",
232
+ version: "22.2.2",
233
+ ngImport: i0,
234
+ type: ListHelper
235
+ });
236
+ }
237
+ };
238
+ i0.ɵɵngDeclareClassMetadata({
239
+ minVersion: "12.0.0",
240
+ version: "22.2.2",
241
+ ngImport: i0,
242
+ type: ListHelper,
243
+ decorators: [{ type: Injectable }]
244
+ });
245
+ var ListExperimentalComponent = class ListExperimentalComponent {
246
+ closeAllSlidingItems(e) {
247
+ if (elementHasAncestor(e.target, "ion-item-option", "ion-list")) this.list.closeSlidingItems();
248
+ }
249
+ static {
250
+ this.ɵfac = i0.ɵɵngDeclareFactory({
251
+ minVersion: "12.0.0",
252
+ version: "22.2.2",
253
+ ngImport: i0,
254
+ type: ListExperimentalComponent,
255
+ deps: [],
256
+ target: i0.ɵɵFactoryTarget.Component
257
+ });
258
+ }
259
+ static {
260
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
261
+ minVersion: "14.0.0",
262
+ version: "22.2.2",
263
+ type: ListExperimentalComponent,
264
+ isStandalone: true,
265
+ selector: "kirby-list-experimental",
266
+ host: { listeners: { "click": "closeAllSlidingItems($event)" } },
267
+ viewQueries: [{
268
+ propertyName: "list",
269
+ first: true,
270
+ predicate: IonList,
271
+ descendants: true,
272
+ static: true
273
+ }],
274
+ ngImport: i0,
275
+ template: "<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n <ng-content></ng-content>\n</div>\n",
276
+ styles: [".rounded{border-top-left-radius:var(--kirby-border-radius-n);border-top-right-radius:var(--kirby-border-radius-n);border-bottom-left-radius:var(--kirby-border-radius-n);border-bottom-right-radius:var(--kirby-border-radius-n);overflow:hidden}.shadow{box-shadow:var(--kirby-elevation-2)}.first-item-padding>::ng-deep :first-child{--item-padding-top: var(--kirby-spacing-xxs)}.last-item-padding>::ng-deep :last-child{--item-padding-bottom: var(--kirby-spacing-xxs)}.first-item{border-top-left-radius:var(--kirby-border-radius-n);border-top-right-radius:var(--kirby-border-radius-n);overflow:hidden}.first-item>::ng-deep :first-child{--item-padding-top: var(--kirby-spacing-xxs)}.last-item{border-bottom-left-radius:var(--kirby-border-radius-n);border-bottom-right-radius:var(--kirby-border-radius-n);overflow:hidden}.last-item>::ng-deep :last-child{--item-padding-bottom: var(--kirby-spacing-xxs)}:host{display:block}\n"],
277
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
278
+ });
279
+ }
280
+ };
281
+ i0.ɵɵngDeclareClassMetadata({
282
+ minVersion: "12.0.0",
283
+ version: "22.2.2",
284
+ ngImport: i0,
285
+ type: ListExperimentalComponent,
286
+ decorators: [{
287
+ type: Component,
288
+ args: [{
289
+ selector: "kirby-list-experimental",
290
+ changeDetection: ChangeDetectionStrategy.OnPush,
291
+ template: "<ng-content select=\"[outside]\"></ng-content>\n<div class=\"rounded shadow first-item-padding last-item-padding\">\n <ng-content></ng-content>\n</div>\n",
292
+ styles: [".rounded{border-top-left-radius:var(--kirby-border-radius-n);border-top-right-radius:var(--kirby-border-radius-n);border-bottom-left-radius:var(--kirby-border-radius-n);border-bottom-right-radius:var(--kirby-border-radius-n);overflow:hidden}.shadow{box-shadow:var(--kirby-elevation-2)}.first-item-padding>::ng-deep :first-child{--item-padding-top: var(--kirby-spacing-xxs)}.last-item-padding>::ng-deep :last-child{--item-padding-bottom: var(--kirby-spacing-xxs)}.first-item{border-top-left-radius:var(--kirby-border-radius-n);border-top-right-radius:var(--kirby-border-radius-n);overflow:hidden}.first-item>::ng-deep :first-child{--item-padding-top: var(--kirby-spacing-xxs)}.last-item{border-bottom-left-radius:var(--kirby-border-radius-n);border-bottom-right-radius:var(--kirby-border-radius-n);overflow:hidden}.last-item>::ng-deep :last-child{--item-padding-bottom: var(--kirby-spacing-xxs)}:host{display:block}\n"]
293
+ }]
294
+ }],
295
+ propDecorators: {
296
+ list: [{
297
+ type: ViewChild,
298
+ args: [IonList, { static: true }]
299
+ }],
300
+ closeAllSlidingItems: [{
301
+ type: HostListener,
302
+ args: ["click", ["$event"]]
303
+ }]
304
+ }
305
+ });
306
+ var ListHeaderComponent = class ListHeaderComponent {
307
+ constructor() {}
308
+ static {
309
+ this.ɵfac = i0.ɵɵngDeclareFactory({
310
+ minVersion: "12.0.0",
311
+ version: "22.2.2",
312
+ ngImport: i0,
313
+ type: ListHeaderComponent,
314
+ deps: [],
315
+ target: i0.ɵɵFactoryTarget.Component
316
+ });
317
+ }
318
+ static {
319
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
320
+ minVersion: "14.0.0",
321
+ version: "22.2.2",
322
+ type: ListHeaderComponent,
323
+ isStandalone: true,
324
+ selector: "kirby-list-header",
325
+ ngImport: i0,
326
+ template: "<ng-content></ng-content>\n",
327
+ styles: [":host{background-color:transparent;display:flex;flex-direction:row;justify-content:space-between;width:100%;padding:var(--kirby-spacing-m)}\n"],
328
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
329
+ });
330
+ }
331
+ };
332
+ i0.ɵɵngDeclareClassMetadata({
333
+ minVersion: "12.0.0",
334
+ version: "22.2.2",
335
+ ngImport: i0,
336
+ type: ListHeaderComponent,
337
+ decorators: [{
338
+ type: Component,
339
+ args: [{
340
+ selector: "kirby-list-header",
341
+ changeDetection: ChangeDetectionStrategy.OnPush,
342
+ template: "<ng-content></ng-content>\n",
343
+ styles: [":host{background-color:transparent;display:flex;flex-direction:row;justify-content:space-between;width:100%;padding:var(--kirby-spacing-m)}\n"]
344
+ }]
345
+ }],
346
+ ctorParameters: () => []
347
+ });
348
+ var ListItemComponent = class ListItemComponent {
349
+ constructor(platform) {
350
+ this.platform = platform;
351
+ this._isSwipingEnabled = false;
352
+ this.swipeActions = [];
353
+ this.itemSelect = new EventEmitter();
354
+ this.swipeActionSelect = new EventEmitter();
355
+ this.initializeSwipeActions();
356
+ }
357
+ _onItemSelect(item) {
358
+ if (!this.isSelectable) return;
359
+ this.itemSelect.emit(item);
360
+ }
361
+ _onSwipeActionSelect(swipeAction, item, event) {
362
+ this.swipeActionSelect.emit({
363
+ swipeAction,
364
+ item,
365
+ event
366
+ });
367
+ }
368
+ ngOnInit() {
369
+ this.initializeSwipeActions();
370
+ }
371
+ ngAfterViewInit() {
372
+ if (!this.itemTemplate) console.warn("No item template was provided.");
373
+ }
374
+ _hasSwipeActions(item) {
375
+ if (!Array.isArray(this.swipeActions)) return false;
376
+ return this.swipeActions.some((swipeAction) => {
377
+ if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) return false;
378
+ if (swipeAction.isDisabled === true) return false;
379
+ return swipeAction.position === "left" || swipeAction.position === "right";
380
+ });
381
+ }
382
+ _getSwipeActions(item, direction) {
383
+ if (!Array.isArray(this.swipeActions)) return [];
384
+ return this.swipeActions.filter((swipeAction) => {
385
+ if (this.isSwipeActionDisabled(swipeAction, item)) return false;
386
+ return direction ? swipeAction.position === direction : true;
387
+ });
388
+ }
389
+ isSwipeActionDisabled(swipeAction, item) {
390
+ if (swipeAction.isDisabled instanceof Function && swipeAction.isDisabled(item)) return true;
391
+ return swipeAction.isDisabled === true;
392
+ }
393
+ _getSwipeActionEnd(item) {
394
+ if (this._getSwipeActions(item, "left").length) return "start";
395
+ return "end";
396
+ }
397
+ _getSwipeActionIcon(swipeAction, item) {
398
+ if (!swipeAction.icon) return;
399
+ if (swipeAction.icon instanceof Function) return swipeAction.icon(item);
400
+ return swipeAction.icon;
401
+ }
402
+ _getSwipeActionTitle(swipeAction, item) {
403
+ if (swipeAction.title instanceof Function) return swipeAction.title(item);
404
+ return swipeAction.title;
405
+ }
406
+ _getSwipeActionType(swipeAction, item) {
407
+ if (swipeAction.type instanceof Function) return swipeAction.type(item);
408
+ return swipeAction.type;
409
+ }
410
+ initializeSwipeActions() {
411
+ if (this.swipeActions && this.swipeActions.length) this._isSwipingEnabled = this.platform.isTouch();
412
+ }
413
+ static {
414
+ this.ɵfac = i0.ɵɵngDeclareFactory({
415
+ minVersion: "12.0.0",
416
+ version: "22.2.2",
417
+ ngImport: i0,
418
+ type: ListItemComponent,
419
+ deps: [{ token: i1.PlatformService }],
420
+ target: i0.ɵɵFactoryTarget.Component
421
+ });
422
+ }
423
+ static {
424
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
425
+ minVersion: "17.0.0",
426
+ version: "22.2.2",
427
+ type: ListItemComponent,
428
+ isStandalone: true,
429
+ selector: "kirby-list-item",
430
+ inputs: {
431
+ item: "item",
432
+ boundaryClass: "boundaryClass",
433
+ swipeActions: "swipeActions",
434
+ itemTemplate: "itemTemplate",
435
+ isSelected: "isSelected",
436
+ isSelectable: "isSelectable",
437
+ getItemColor: "getItemColor"
438
+ },
439
+ outputs: {
440
+ itemSelect: "itemSelect",
441
+ swipeActionSelect: "swipeActionSelect"
442
+ },
443
+ viewQueries: [{
444
+ propertyName: "ionItemSliding",
445
+ first: true,
446
+ predicate: IonItemSliding,
447
+ descendants: true
448
+ }],
449
+ ngImport: i0,
450
+ template: "<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n",
451
+ styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-2);background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-2);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n", ":host{overflow:hidden}:host-context(.has-divider) ion-item-sliding:not(.last){border-bottom:1px solid var(--kirby-list-item-border-color, var(--kirby-background-color))}\n"],
452
+ dependencies: [
453
+ {
454
+ kind: "component",
455
+ type: IonItemSliding,
456
+ selector: "ion-item-sliding",
457
+ inputs: ["disabled"],
458
+ outputs: ["ionDrag"]
459
+ },
460
+ {
461
+ kind: "directive",
462
+ type: ListItemColorDirective,
463
+ selector: "[kirbyListItemColor]",
464
+ inputs: ["kirbyListItemColor", "item"]
465
+ },
466
+ {
467
+ kind: "directive",
468
+ type: NgClass,
469
+ selector: "[ngClass]",
470
+ inputs: ["class", "ngClass"]
471
+ },
472
+ {
473
+ kind: "directive",
474
+ type: NgTemplateOutlet,
475
+ selector: "[ngTemplateOutlet]",
476
+ inputs: [
477
+ "ngTemplateOutletContext",
478
+ "ngTemplateOutlet",
479
+ "ngTemplateOutletInjector"
480
+ ]
481
+ },
482
+ {
483
+ kind: "component",
484
+ type: IonItemOptions,
485
+ selector: "ion-item-options",
486
+ inputs: ["side"],
487
+ outputs: ["ionSwipe"]
488
+ },
489
+ {
490
+ kind: "component",
491
+ type: IconComponent,
492
+ selector: "kirby-icon",
493
+ inputs: ["size", "name"]
494
+ },
495
+ {
496
+ kind: "component",
497
+ type: IonLabel,
498
+ selector: "ion-label",
499
+ inputs: [
500
+ "color",
501
+ "mode",
502
+ "position"
503
+ ]
504
+ }
505
+ ],
506
+ changeDetection: i0.ChangeDetectionStrategy.Eager
507
+ });
508
+ }
509
+ };
510
+ i0.ɵɵngDeclareClassMetadata({
511
+ minVersion: "12.0.0",
512
+ version: "22.2.2",
513
+ ngImport: i0,
514
+ type: ListItemComponent,
515
+ decorators: [{
516
+ type: Component,
517
+ args: [{
518
+ selector: "kirby-list-item",
519
+ imports: [
520
+ IonItemSliding,
521
+ ListItemColorDirective,
522
+ NgClass,
523
+ NgTemplateOutlet,
524
+ IonItemOptions,
525
+ IconComponent,
526
+ IonLabel
527
+ ],
528
+ changeDetection: ChangeDetectionStrategy.Eager,
529
+ template: "<ion-item-sliding\n [class.selected]=\"isSelected\"\n [kirbyListItemColor]=\"getItemColor\"\n [item]=\"item\"\n [disabled]=\"_isSwipingEnabled ? null : true\"\n keyHandler\n [ngClass]=\"boundaryClass\"\n (click)=\"_onItemSelect(item)\"\n>\n <ng-container\n *ngTemplateOutlet=\"swipeActionsTemplate; context: { $implicit: item }\"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item }\"></ng-container>\n</ion-item-sliding>\n\n<ng-template #swipeActionsTemplate let-item>\n @if (_hasSwipeActions(item)) {\n <ion-item-options [side]=\"_getSwipeActionEnd(item)\">\n <div class=\"swipe-action\">\n @for (swipeAction of _getSwipeActions(item); track swipeAction.title) {\n <ion-item-option\n [ngClass]=\"_getSwipeActionType(swipeAction, item)\"\n (click)=\"_onSwipeActionSelect(swipeAction, item, $event)\"\n >\n <div class=\"item-content\">\n @if (_getSwipeActionIcon(swipeAction, item)) {\n <kirby-icon size=\"sm\" [name]=\"_getSwipeActionIcon(swipeAction, item)\"></kirby-icon>\n }\n <ion-label>\n {{ _getSwipeActionTitle(swipeAction, item) }}\n </ion-label>\n </div>\n </ion-item-option>\n }\n </div>\n </ion-item-options>\n }\n</ng-template>\n",
530
+ styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-2);background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-2);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n", ":host{overflow:hidden}:host-context(.has-divider) ion-item-sliding:not(.last){border-bottom:1px solid var(--kirby-list-item-border-color, var(--kirby-background-color))}\n"]
531
+ }]
532
+ }],
533
+ ctorParameters: () => [{ type: i1.PlatformService }],
534
+ propDecorators: {
535
+ ionItemSliding: [{
536
+ type: ViewChild,
537
+ args: [IonItemSliding]
538
+ }],
539
+ item: [{ type: Input }],
540
+ boundaryClass: [{ type: Input }],
541
+ swipeActions: [{ type: Input }],
542
+ itemTemplate: [{ type: Input }],
543
+ isSelected: [{ type: Input }],
544
+ isSelectable: [{ type: Input }],
545
+ getItemColor: [{ type: Input }],
546
+ itemSelect: [{ type: Output }],
547
+ swipeActionSelect: [{ type: Output }]
548
+ }
549
+ });
550
+ var ListSectionHeaderComponent = class ListSectionHeaderComponent {
551
+ static {
552
+ this.ɵfac = i0.ɵɵngDeclareFactory({
553
+ minVersion: "12.0.0",
554
+ version: "22.2.2",
555
+ ngImport: i0,
556
+ type: ListSectionHeaderComponent,
557
+ deps: [],
558
+ target: i0.ɵɵFactoryTarget.Component
559
+ });
560
+ }
561
+ static {
562
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
563
+ minVersion: "14.0.0",
564
+ version: "22.2.2",
565
+ type: ListSectionHeaderComponent,
566
+ isStandalone: true,
567
+ selector: "kirby-list-section-header",
568
+ inputs: { title: "title" },
569
+ ngImport: i0,
570
+ template: "<div class=\"header\">\n <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n",
571
+ changeDetection: i0.ChangeDetectionStrategy.OnPush
572
+ });
573
+ }
574
+ };
575
+ i0.ɵɵngDeclareClassMetadata({
576
+ minVersion: "12.0.0",
577
+ version: "22.2.2",
578
+ ngImport: i0,
579
+ type: ListSectionHeaderComponent,
580
+ decorators: [{
581
+ type: Component,
582
+ args: [{
583
+ selector: "kirby-list-section-header",
584
+ changeDetection: ChangeDetectionStrategy.OnPush,
585
+ template: "<div class=\"header\">\n <span class=\"kirby-text-small\">{{ title }}</span>\n</div>\n"
586
+ }]
587
+ }],
588
+ propDecorators: { title: [{ type: Input }] }
589
+ });
590
+ var ListItemTemplateDirective = class ListItemTemplateDirective {
591
+ static {
592
+ this.ɵfac = i0.ɵɵngDeclareFactory({
593
+ minVersion: "12.0.0",
594
+ version: "22.2.2",
595
+ ngImport: i0,
596
+ type: ListItemTemplateDirective,
597
+ deps: [],
598
+ target: i0.ɵɵFactoryTarget.Directive
599
+ });
600
+ }
601
+ static {
602
+ this.ɵdir = i0.ɵɵngDeclareDirective({
603
+ minVersion: "14.0.0",
604
+ version: "22.2.2",
605
+ type: ListItemTemplateDirective,
606
+ isStandalone: true,
607
+ selector: "[kirbyListItemTemplate]",
608
+ ngImport: i0
609
+ });
610
+ }
611
+ };
612
+ i0.ɵɵngDeclareClassMetadata({
613
+ minVersion: "12.0.0",
614
+ version: "22.2.2",
615
+ ngImport: i0,
616
+ type: ListItemTemplateDirective,
617
+ decorators: [{
618
+ type: Directive,
619
+ args: [{ selector: "[kirbyListItemTemplate]" }]
620
+ }]
621
+ });
622
+ var ListHeaderDirective = class ListHeaderDirective {
623
+ static {
624
+ this.ɵfac = i0.ɵɵngDeclareFactory({
625
+ minVersion: "12.0.0",
626
+ version: "22.2.2",
627
+ ngImport: i0,
628
+ type: ListHeaderDirective,
629
+ deps: [],
630
+ target: i0.ɵɵFactoryTarget.Directive
631
+ });
632
+ }
633
+ static {
634
+ this.ɵdir = i0.ɵɵngDeclareDirective({
635
+ minVersion: "14.0.0",
636
+ version: "22.2.2",
637
+ type: ListHeaderDirective,
638
+ isStandalone: true,
639
+ selector: "[kirbyListHeader], [kirbyListHeaderTemplate]",
640
+ ngImport: i0
641
+ });
642
+ }
643
+ };
644
+ i0.ɵɵngDeclareClassMetadata({
645
+ minVersion: "12.0.0",
646
+ version: "22.2.2",
647
+ ngImport: i0,
648
+ type: ListHeaderDirective,
649
+ decorators: [{
650
+ type: Directive,
651
+ args: [{ selector: "[kirbyListHeader], [kirbyListHeaderTemplate]" }]
652
+ }]
653
+ });
654
+ var ListSectionHeaderDirective = class ListSectionHeaderDirective {
655
+ static {
656
+ this.ɵfac = i0.ɵɵngDeclareFactory({
657
+ minVersion: "12.0.0",
658
+ version: "22.2.2",
659
+ ngImport: i0,
660
+ type: ListSectionHeaderDirective,
661
+ deps: [],
662
+ target: i0.ɵɵFactoryTarget.Directive
663
+ });
664
+ }
665
+ static {
666
+ this.ɵdir = i0.ɵɵngDeclareDirective({
667
+ minVersion: "14.0.0",
668
+ version: "22.2.2",
669
+ type: ListSectionHeaderDirective,
670
+ isStandalone: true,
671
+ selector: "[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]",
672
+ ngImport: i0
673
+ });
674
+ }
675
+ };
676
+ i0.ɵɵngDeclareClassMetadata({
677
+ minVersion: "12.0.0",
678
+ version: "22.2.2",
679
+ ngImport: i0,
680
+ type: ListSectionHeaderDirective,
681
+ decorators: [{
682
+ type: Directive,
683
+ args: [{ selector: "[kirbyListSectionHeader], [kirbyListSectionHeaderTemplate]" }]
684
+ }]
685
+ });
686
+ var ListFooterDirective = class ListFooterDirective {
687
+ static {
688
+ this.ɵfac = i0.ɵɵngDeclareFactory({
689
+ minVersion: "12.0.0",
690
+ version: "22.2.2",
691
+ ngImport: i0,
692
+ type: ListFooterDirective,
693
+ deps: [],
694
+ target: i0.ɵɵFactoryTarget.Directive
695
+ });
696
+ }
697
+ static {
698
+ this.ɵdir = i0.ɵɵngDeclareDirective({
699
+ minVersion: "14.0.0",
700
+ version: "22.2.2",
701
+ type: ListFooterDirective,
702
+ isStandalone: true,
703
+ selector: "[kirbyListFooter], [kirbyListFooterTemplate]",
704
+ ngImport: i0
705
+ });
706
+ }
707
+ };
708
+ i0.ɵɵngDeclareClassMetadata({
709
+ minVersion: "12.0.0",
710
+ version: "22.2.2",
711
+ ngImport: i0,
712
+ type: ListFooterDirective,
713
+ decorators: [{
714
+ type: Directive,
715
+ args: [{ selector: "[kirbyListFooter], [kirbyListFooterTemplate]" }]
716
+ }]
717
+ });
718
+ var ListComponent = class ListComponent {
719
+ get isShapeRounded() {
720
+ return this.shape === "rounded";
721
+ }
722
+ get isShapeNone() {
723
+ return this.shape === "none";
724
+ }
725
+ constructor(listHelper, element, renderer) {
726
+ this.listHelper = listHelper;
727
+ this.element = element;
728
+ this.renderer = renderer;
729
+ this.items = [];
730
+ this.standAloneSpacing = "xxs";
731
+ this.showDivider = true;
732
+ this.markSelectedRow = false;
733
+ this.shape = "rounded";
734
+ this.loadOnDemand = new EventEmitter();
735
+ this.swipeActions = [];
736
+ this.itemSelect = new EventEmitter();
737
+ this.disableSelectionHighlight = false;
738
+ this._attributesToForward = ["aria-label", "aria-labelledby"];
739
+ }
740
+ ngOnInit() {
741
+ this._isSelectable = this.itemSelect.observers.length > 0;
742
+ if (this.isLoadOnDemandEnabled === void 0) this.isLoadOnDemandEnabled = this.loadOnDemand.observers.length > 0;
743
+ }
744
+ ngOnChanges() {
745
+ this._isSectionsEnabled = !!this.getSectionName;
746
+ this._isStandAloneEnabled = !!this.getStandAloneByProperty;
747
+ if (this._isSectionsEnabled && this._isStandAloneEnabled) this._groupedItems = this.listHelper.groupSectionsWithStandAloneItems(this.items, this.getSectionName, this.getStandAloneByProperty);
748
+ else if (this._isSectionsEnabled) this._groupedItems = this.listHelper.groupSections(this.items, this.getSectionName);
749
+ else if (this._isStandAloneEnabled) this._groupedItems = this.listHelper.groupStandAloneItems(this.items, this.getStandAloneByProperty);
750
+ }
751
+ ngAfterViewInit() {
752
+ forwardAttributes(this.element.nativeElement, this._attributesToForward, this.renderer, this.element.nativeElement.querySelector("ion-list"));
753
+ }
754
+ _onLoadOnDemand() {
755
+ this.listHelper.onLoadOnDemand(this);
756
+ }
757
+ sectionTrackBy(index, section) {
758
+ return section?.name ?? index;
759
+ }
760
+ onItemSelect(item) {
761
+ if (!this.disableSelectionHighlight) this._selectedItem = item;
762
+ this.itemSelect.emit(item);
763
+ }
764
+ onSwipeActionSelect(args) {
765
+ args.swipeAction.onSelected(args.item);
766
+ this.list.closeSlidingItems();
767
+ args.event.stopPropagation();
768
+ }
769
+ _getBoundaryClass(index, section) {
770
+ if (index === 0) {
771
+ if (this.headerTemplate) return null;
772
+ else return section.length === 1 ? ["first", "last"] : "first";
773
+ }
774
+ if (index === section.length - 1) return this.footerTemplate ? null : "last";
775
+ return null;
776
+ }
777
+ standAloneClass() {
778
+ return this._isStandAloneEnabled ? `stand-alone-bottom-margin-${this.standAloneSpacing}` : "";
779
+ }
780
+ static {
781
+ this.ɵfac = i0.ɵɵngDeclareFactory({
782
+ minVersion: "12.0.0",
783
+ version: "22.2.2",
784
+ ngImport: i0,
785
+ type: ListComponent,
786
+ deps: [
787
+ { token: ListHelper },
788
+ { token: i0.ElementRef },
789
+ { token: i0.Renderer2 }
790
+ ],
791
+ target: i0.ɵɵFactoryTarget.Component
792
+ });
793
+ }
794
+ static {
795
+ this.ɵcmp = i0.ɵɵngDeclareComponent({
796
+ minVersion: "17.0.0",
797
+ version: "22.2.2",
798
+ type: ListComponent,
799
+ isStandalone: true,
800
+ selector: "kirby-list",
801
+ inputs: {
802
+ items: "items",
803
+ getItemColor: "getItemColor",
804
+ getSectionName: "getSectionName",
805
+ trackBy: "trackBy",
806
+ getStandAloneByProperty: "getStandAloneByProperty",
807
+ standAloneSpacing: "standAloneSpacing",
808
+ noMoreItemsText: "noMoreItemsText",
809
+ showDivider: "showDivider",
810
+ markSelectedRow: "markSelectedRow",
811
+ shape: "shape",
812
+ hasItemSpacing: "hasItemSpacing",
813
+ isLoadOnDemandEnabled: "isLoadOnDemandEnabled",
814
+ swipeActions: "swipeActions",
815
+ disableSelectionHighlight: "disableSelectionHighlight"
816
+ },
817
+ outputs: {
818
+ loadOnDemand: "loadOnDemand",
819
+ itemSelect: "itemSelect"
820
+ },
821
+ host: { properties: {
822
+ "class.shape-rounded": "this.isShapeRounded",
823
+ "class.shape-none": "this.isShapeNone",
824
+ "class.item-spacing": "this.hasItemSpacing",
825
+ "class.has-sections": "this._isSectionsEnabled",
826
+ "class.has-stand-alone": "this._isStandAloneEnabled"
827
+ } },
828
+ providers: [ListHelper],
829
+ queries: [
830
+ {
831
+ propertyName: "headerTemplate",
832
+ first: true,
833
+ predicate: ListHeaderDirective,
834
+ descendants: true,
835
+ read: TemplateRef
836
+ },
837
+ {
838
+ propertyName: "sectionHeaderTemplate",
839
+ first: true,
840
+ predicate: ListSectionHeaderDirective,
841
+ descendants: true,
842
+ read: TemplateRef
843
+ },
844
+ {
845
+ propertyName: "footerTemplate",
846
+ first: true,
847
+ predicate: ListFooterDirective,
848
+ descendants: true,
849
+ read: TemplateRef
850
+ },
851
+ {
852
+ propertyName: "itemTemplate",
853
+ first: true,
854
+ predicate: ListItemTemplateDirective,
855
+ descendants: true,
856
+ read: TemplateRef,
857
+ static: true
858
+ }
859
+ ],
860
+ viewQueries: [{
861
+ propertyName: "list",
862
+ first: true,
863
+ predicate: ["list"],
864
+ descendants: true,
865
+ static: true
866
+ }, {
867
+ propertyName: "scrollDirective",
868
+ first: true,
869
+ predicate: InfiniteScrollDirective,
870
+ descendants: true
871
+ }],
872
+ usesOnChanges: true,
873
+ ngImport: i0,
874
+ template: "<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n",
875
+ styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-2);background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-2);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n"],
876
+ dependencies: [
877
+ {
878
+ kind: "component",
879
+ type: IonList,
880
+ selector: "ion-list",
881
+ inputs: [
882
+ "inset",
883
+ "lines",
884
+ "mode"
885
+ ]
886
+ },
887
+ {
888
+ kind: "directive",
889
+ type: InfiniteScrollDirective,
890
+ selector: "[kirbyInfiniteScroll]",
891
+ inputs: ["disabled"],
892
+ outputs: ["scrollEnd"]
893
+ },
894
+ {
895
+ kind: "component",
896
+ type: IonListHeader,
897
+ selector: "ion-list-header",
898
+ inputs: [
899
+ "color",
900
+ "lines",
901
+ "mode"
902
+ ]
903
+ },
904
+ {
905
+ kind: "directive",
906
+ type: NgTemplateOutlet,
907
+ selector: "[ngTemplateOutlet]",
908
+ inputs: [
909
+ "ngTemplateOutletContext",
910
+ "ngTemplateOutlet",
911
+ "ngTemplateOutletInjector"
912
+ ]
913
+ },
914
+ {
915
+ kind: "component",
916
+ type: SpinnerComponent,
917
+ selector: "kirby-spinner"
918
+ },
919
+ {
920
+ kind: "component",
921
+ type: IonItemGroup,
922
+ selector: "ion-item-group"
923
+ },
924
+ {
925
+ kind: "directive",
926
+ type: NgClass,
927
+ selector: "[ngClass]",
928
+ inputs: ["class", "ngClass"]
929
+ },
930
+ {
931
+ kind: "component",
932
+ type: IonItemDivider,
933
+ selector: "ion-item-divider",
934
+ inputs: [
935
+ "color",
936
+ "mode",
937
+ "sticky"
938
+ ]
939
+ },
940
+ {
941
+ kind: "component",
942
+ type: ListItemComponent,
943
+ selector: "kirby-list-item",
944
+ inputs: [
945
+ "item",
946
+ "boundaryClass",
947
+ "swipeActions",
948
+ "itemTemplate",
949
+ "isSelected",
950
+ "isSelectable",
951
+ "getItemColor"
952
+ ],
953
+ outputs: ["itemSelect", "swipeActionSelect"]
954
+ }
955
+ ],
956
+ changeDetection: i0.ChangeDetectionStrategy.Eager
957
+ });
958
+ }
959
+ };
960
+ i0.ɵɵngDeclareClassMetadata({
961
+ minVersion: "12.0.0",
962
+ version: "22.2.2",
963
+ ngImport: i0,
964
+ type: ListComponent,
965
+ decorators: [{
966
+ type: Component,
967
+ args: [{
968
+ selector: "kirby-list",
969
+ providers: [ListHelper],
970
+ imports: [
971
+ IonList,
972
+ InfiniteScrollDirective,
973
+ IonListHeader,
974
+ NgTemplateOutlet,
975
+ SpinnerComponent,
976
+ IonItemGroup,
977
+ NgClass,
978
+ IonItemDivider,
979
+ ListItemComponent
980
+ ],
981
+ changeDetection: ChangeDetectionStrategy.Eager,
982
+ template: "<ion-list\n #list\n kirbyInfiniteScroll\n (scrollEnd)=\"_onLoadOnDemand()\"\n [disabled]=\"!isLoadOnDemandEnabled\"\n class=\"list\"\n [class.has-header]=\"headerTemplate\"\n [class.has-footer]=\"footerTemplate\"\n [class.has-divider]=\"showDivider\"\n>\n @if (headerTemplate) {\n <ion-list-header>\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ion-list-header>\n }\n\n <ng-container\n *ngTemplateOutlet=\"\n _isSectionsEnabled || _isStandAloneEnabled ? groupedListTemplate : itemsTemplate;\n context: { $implicit: items }\n \"\n ></ng-container>\n\n @if (footerTemplate) {\n <div class=\"footer\">\n <ng-container *ngTemplateOutlet=\"footerTemplate\"></ng-container>\n </div>\n }\n</ion-list>\n\n@if (!isLoadOnDemandEnabled && noMoreItemsText) {\n <p class=\"no-more-items\">\n {{ noMoreItemsText }}\n </p>\n}\n@if (_isLoading) {\n <div class=\"loading\">\n <kirby-spinner></kirby-spinner>\n </div>\n}\n\n<ng-template #groupedListTemplate>\n @for (section of _groupedItems; track sectionTrackBy($index, section)) {\n <ion-item-group [ngClass]=\"standAloneClass()\">\n @if (_isSectionsEnabled) {\n <ion-item-divider>\n <ng-container\n *ngTemplateOutlet=\"sectionHeaderTemplate; context: { $implicit: section.name }\"\n ></ng-container>\n </ion-item-divider>\n }\n @if (_isSectionsEnabled && _isStandAloneEnabled) {\n @for (list of section.lists; track list) {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: list }\"\n ></ng-container>\n </div>\n }\n } @else {\n <div class=\"list-items\" [ngClass]=\"standAloneClass()\">\n <ng-container\n *ngTemplateOutlet=\"itemsTemplate; context: { $implicit: section.items }\"\n ></ng-container>\n </div>\n }\n </ion-item-group>\n }\n</ng-template>\n\n<ng-template #itemsTemplate let-items>\n @for (item of items; track trackBy ? trackBy($index, item) : $index; let i = $index) {\n <kirby-list-item\n [item]=\"item\"\n [itemTemplate]=\"itemTemplate\"\n [swipeActions]=\"swipeActions\"\n [boundaryClass]=\"_getBoundaryClass(i, items)\"\n [isSelectable]=\"_isSelectable\"\n [getItemColor]=\"getItemColor\"\n [isSelected]=\"_isSelectable && item === _selectedItem\"\n (itemSelect)=\"onItemSelect($event)\"\n (swipeActionSelect)=\"onSwipeActionSelect($event)\"\n [class.is-single]=\"items.length === 1\"\n ></kirby-list-item>\n }\n</ng-template>\n",
983
+ styles: ["ion-item-option.primary{background-color:var(--kirby-primary);color:var(--kirby-primary-contrast)}ion-item-option.secondary{background-color:var(--kirby-secondary);color:var(--kirby-secondary-contrast)}ion-item-option.tertiary{background-color:var(--kirby-tertiary);color:var(--kirby-tertiary-contrast)}ion-item-option.success{background-color:var(--kirby-success);color:var(--kirby-success-contrast)}ion-item-option.warning{background-color:var(--kirby-warning);color:var(--kirby-warning-contrast)}ion-item-option.danger{background-color:var(--kirby-danger);color:var(--kirby-danger-contrast)}ion-item-option.white-overlay{background-color:var(--kirby-white-overlay);color:var(--kirby-white-overlay-contrast)}ion-item-option.light{background-color:var(--kirby-light);color:var(--kirby-light-contrast)}ion-item-option.medium{background-color:var(--kirby-medium);color:var(--kirby-medium-contrast)}ion-item-option.dark{background-color:var(--kirby-dark);color:var(--kirby-dark-contrast)}ion-item-option.dark-overlay{background-color:var(--kirby-dark-overlay);color:var(--kirby-dark-overlay-contrast)}:host{display:block}:host(:not(kirby-list-item)){--kirby-list-border-top-radius: var( --kirby-content-border-top-radius, var(--kirby-border-radius-n) );--kirby-list-border-bottom-radius: var( --kirby-content-border-bottom-radius, var(--kirby-border-radius-n) )}.list{box-shadow:var(--kirby-elevation-2);background:transparent;contain:inherit;padding:0}ion-list-header{background-color:var(--kirby-white);border-bottom:1px solid var(--kirby-background-color);padding:0;text-transform:inherit;letter-spacing:inherit;font-weight:inherit;font-size:inherit;min-height:0;overflow:inherit}ion-item{--background: var(--kirby-white);--background-activated: var(--kirby-white-shade);--background-hover: var(--kirby-background-color);--background-focused: var(--kirby-background-color);--inner-border-width: 0;--ion-safe-area-right: 0;--min-height: var(--kirby-spacing-xxxl);--padding-bottom: var(--kirby-spacing-xxs);--padding-end: var(--kirby-spacing-s);--padding-start: var(--kirby-spacing-s);--padding-top: var(--kirby-spacing-xxs);display:flex;font-size:var(--kirby-font-size-s);min-height:var(--kirby-spacing-xxxl);overflow:visible;width:100%}ion-item-sliding{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color)}ion-item-sliding.item-sliding-active-slide{backface-visibility:hidden;transform:translateZ(0)}ion-item-sliding.light{--kirby-inputs-background-color: var(--kirby-white);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-divider-color: var(--kirby-medium);--kirby-inputs-elevation: var(--kirby-elevation-2);--kirby-item-background: var(--kirby-light);--kirby-item-background-activated: var(--kirby-light-shade);--kirby-item-background-focused: var(--kirby-light-shade);--kirby-item-background-hover: var(--kirby-light-tint)}ion-item-sliding.light ion-item{--background: var(--kirby-light);--color: var(--kirby-light-contrast);--background-activated: var(--kirby-light-shade);--background-focused: var(--kirby-light-shade);--background-hover: var(--kirby-light-tint)}ion-item-group{margin-bottom:var(--kirby-spacing-m)}ion-item-group:last-of-type{margin-bottom:0}ion-item-divider{--inner-padding-end: 0;--color: unset;background-color:transparent;border-color:transparent;min-height:0;padding:0 var(--kirby-spacing-s) var(--kirby-spacing-xxs) var(--kirby-spacing-s);font-weight:inherit}.footer{--kirby-inputs-background-color: var(--kirby-dark-overlay);--kirby-inputs-background-color-hover: var(--kirby-dark-overlay-10);--kirby-inputs-background-color-active: var(--kirby-dark-overlay-20);--kirby-inputs-color: var(--kirby-black);--kirby-inputs-indicator-background-color: var(--kirby-black);--kirby-inputs-indicator-color: var(--kirby-white);--kirby-inputs-placeholder-color: var(--kirby-semi-dark);--kirby-inputs-color-hover: var(--kirby-semi-dark);--kirby-inputs-elevation: none;--kirby-divider-color: var(--kirby-background-color);background-color:var(--kirby-white);border-top:1px solid var(--kirby-background-color);display:flex;align-items:center;justify-content:space-between;width:100%}.no-more-items,.loading{width:100%;padding:var(--kirby-spacing-m) 0;text-align:center}.swipe-action{display:flex;color:var(--kirby-black);background-color:transparent}.swipe-action ion-item-option{height:100%;display:inline-block;text-align:center}.swipe-action .item-content{display:inline-grid;min-width:70px;flex-direction:column}.swipe-action .item-content ion-label{--background: unset;--color: unset}ion-item-options[side=end]{border-bottom-width:0}:host-context(.has-sections) .list,:host-context(.has-stand-alone) .list{box-shadow:none}:host-context(.has-sections) .list-items,:host-context(.has-stand-alone) .list-items{box-shadow:var(--kirby-elevation-2);border-radius:var(--kirby-border-radius-n)}:host-context(.has-sections) .footer,:host-context(.has-stand-alone) .footer{background-color:transparent;border-top:none}:host-context(.has-sections) ion-list-header,:host-context(.has-stand-alone) ion-list-header{background-color:transparent;border-bottom:none}:host-context(.shape-rounded) .list,:host-context(.shape-rounded) .list-items{border-radius:var(--kirby-list-border-top-radius) var(--kirby-list-border-top-radius) var(--kirby-list-border-bottom-radius) var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item.first,:host-context(.shape-rounded) ion-item-sliding.first,:host-context(.shape-rounded) ion-list-header{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) ion-list-header{border-top-left-radius:var(--kirby-list-border-top-radius);border-top-right-radius:var(--kirby-list-border-top-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item,:host-context(.shape-rounded):not(.has-sections) .has-header ion-item-sliding{border-top-left-radius:0;border-top-right-radius:0}:host-context(.shape-rounded) ion-item.last,:host-context(.shape-rounded) ion-item-sliding.last,:host-context(.shape-rounded) .footer{-webkit-mask-image:radial-gradient(#fff,#000);mask-image:radial-gradient(#fff,#000)}:host-context(.shape-rounded) .footer{border-bottom-left-radius:var(--kirby-list-border-bottom-radius);border-bottom-right-radius:var(--kirby-list-border-bottom-radius)}:host-context(.shape-rounded) ion-item-sliding>ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item,:host-context(.shape-rounded):not(.has-sections) .has-footer ion-item-sliding{border-bottom-left-radius:0;border-bottom-right-radius:0}kirby-list-item{--kirby-content-border-top-radius: 0;--kirby-content-border-bottom-radius: 0}kirby-list-item:first-of-type{--kirby-content-border-top-radius: var(--kirby-list-border-top-radius)}kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: var(--kirby-list-border-bottom-radius)}.has-header kirby-list-item:first-of-type{--kirby-content-border-top-radius: 0}.has-footer kirby-list-item:last-of-type{--kirby-content-border-bottom-radius: 0}:host-context(.shape-none) .list,:host-context(.shape-none) .list-items{box-shadow:none;border-radius:unset;--kirby-item-background: transparent;--kirby-list-item-border-color: var(--kirby-medium)}:host-context(kirby-card){--kirby-list-item-border-color: var(--kirby-background-color)}:host-context(kirby-card.outlined){--kirby-list-item-border-color: var(--kirby-medium)}:host-context(.item-spacing) .list kirby-list-item{margin-bottom:var(--kirby-spacing-s)}:host-context(.item-spacing) .list kirby-list-item>ion-item,:host-context(.item-spacing) .list kirby-list-item:last-child{margin-bottom:0}.stand-alone-bottom-margin-xxxxs{margin-bottom:var(--kirby-spacing-xxxxs)}.stand-alone-bottom-margin-xxxs{margin-bottom:var(--kirby-spacing-xxxs)}.stand-alone-bottom-margin-xxs{margin-bottom:var(--kirby-spacing-xxs)}.stand-alone-bottom-margin-xs{margin-bottom:var(--kirby-spacing-xs)}.stand-alone-bottom-margin-sm{margin-bottom:var(--kirby-spacing-s)}.stand-alone-bottom-margin-md{margin-bottom:var(--kirby-spacing-m)}.stand-alone-bottom-margin-lg{margin-bottom:var(--kirby-spacing-l)}.stand-alone-bottom-margin-xl{margin-bottom:var(--kirby-spacing-xl)}.stand-alone-bottom-margin-xxl{margin-bottom:var(--kirby-spacing-xxl)}.stand-alone-bottom-margin-xxxl{margin-bottom:var(--kirby-spacing-xxxl)}\n"]
984
+ }]
985
+ }],
986
+ ctorParameters: () => [
987
+ { type: ListHelper },
988
+ { type: i0.ElementRef },
989
+ { type: i0.Renderer2 }
990
+ ],
991
+ propDecorators: {
992
+ list: [{
993
+ type: ViewChild,
994
+ args: ["list", { static: true }]
995
+ }],
996
+ scrollDirective: [{
997
+ type: ViewChild,
998
+ args: [InfiniteScrollDirective]
999
+ }],
1000
+ items: [{ type: Input }],
1001
+ getItemColor: [{ type: Input }],
1002
+ getSectionName: [{ type: Input }],
1003
+ trackBy: [{ type: Input }],
1004
+ getStandAloneByProperty: [{ type: Input }],
1005
+ standAloneSpacing: [{ type: Input }],
1006
+ noMoreItemsText: [{ type: Input }],
1007
+ showDivider: [{ type: Input }],
1008
+ markSelectedRow: [{ type: Input }],
1009
+ shape: [{ type: Input }],
1010
+ isShapeRounded: [{
1011
+ type: HostBinding,
1012
+ args: ["class.shape-rounded"]
1013
+ }],
1014
+ isShapeNone: [{
1015
+ type: HostBinding,
1016
+ args: ["class.shape-none"]
1017
+ }],
1018
+ hasItemSpacing: [{
1019
+ type: HostBinding,
1020
+ args: ["class.item-spacing"]
1021
+ }, { type: Input }],
1022
+ isLoadOnDemandEnabled: [{ type: Input }],
1023
+ loadOnDemand: [{ type: Output }],
1024
+ swipeActions: [{ type: Input }],
1025
+ itemSelect: [{ type: Output }],
1026
+ disableSelectionHighlight: [{ type: Input }],
1027
+ headerTemplate: [{
1028
+ type: ContentChild,
1029
+ args: [ListHeaderDirective, {
1030
+ static: false,
1031
+ read: TemplateRef
1032
+ }]
1033
+ }],
1034
+ sectionHeaderTemplate: [{
1035
+ type: ContentChild,
1036
+ args: [ListSectionHeaderDirective, {
1037
+ static: false,
1038
+ read: TemplateRef
1039
+ }]
1040
+ }],
1041
+ footerTemplate: [{
1042
+ type: ContentChild,
1043
+ args: [ListFooterDirective, {
1044
+ static: false,
1045
+ read: TemplateRef
1046
+ }]
1047
+ }],
1048
+ itemTemplate: [{
1049
+ type: ContentChild,
1050
+ args: [ListItemTemplateDirective, {
1051
+ static: true,
1052
+ read: TemplateRef
1053
+ }]
1054
+ }],
1055
+ _isSectionsEnabled: [{
1056
+ type: HostBinding,
1057
+ args: ["class.has-sections"]
1058
+ }],
1059
+ _isStandAloneEnabled: [{
1060
+ type: HostBinding,
1061
+ args: ["class.has-stand-alone"]
1062
+ }]
1063
+ }
1064
+ });
618
1065
  const reexportedImports = [
619
- ListComponent,
620
- ListItemComponent,
621
- ListItemTemplateDirective,
622
- ListSectionHeaderComponent,
623
- ListSectionHeaderDirective,
624
- ListHeaderDirective,
625
- ListHeaderComponent,
626
- ListFooterDirective,
627
- ListExperimentalComponent,
1066
+ ListComponent,
1067
+ ListItemComponent,
1068
+ ListItemTemplateDirective,
1069
+ ListSectionHeaderComponent,
1070
+ ListSectionHeaderDirective,
1071
+ ListHeaderDirective,
1072
+ ListHeaderComponent,
1073
+ ListFooterDirective,
1074
+ ListExperimentalComponent
628
1075
  ];
629
1076
  const imports = [
630
- ...reexportedImports,
631
- ListItemColorDirective,
632
- InfiniteScrollDirective,
633
- ListItemComponent,
1077
+ ...reexportedImports,
1078
+ ListItemColorDirective,
1079
+ InfiniteScrollDirective,
1080
+ ListItemComponent
634
1081
  ];
635
- class ListModule {
636
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
637
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.18", ngImport: i0, type: ListModule, imports: [CommonModule,
638
- IconModule,
639
- SpinnerModule,
640
- IonItemDivider,
641
- IonItemGroup,
642
- IonItemOptions,
643
- IonItemSliding,
644
- IonLabel,
645
- IonList,
646
- IonListHeader, ListComponent,
647
- ListItemComponent,
648
- ListItemTemplateDirective,
649
- ListSectionHeaderComponent,
650
- ListSectionHeaderDirective,
651
- ListHeaderDirective,
652
- ListHeaderComponent,
653
- ListFooterDirective,
654
- ListExperimentalComponent, ListItemColorDirective,
655
- InfiniteScrollDirective,
656
- ListItemComponent], exports: [ListComponent,
657
- ListItemComponent,
658
- ListItemTemplateDirective,
659
- ListSectionHeaderComponent,
660
- ListSectionHeaderDirective,
661
- ListHeaderDirective,
662
- ListHeaderComponent,
663
- ListFooterDirective,
664
- ListExperimentalComponent] }); }
665
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListModule, imports: [CommonModule,
666
- IconModule,
667
- SpinnerModule,
668
- IonItemDivider,
669
- IonItemGroup,
670
- IonItemOptions,
671
- IonItemSliding,
672
- IonLabel,
673
- IonList,
674
- IonListHeader, ListComponent,
675
- ListItemComponent, ListItemComponent] }); }
676
- }
677
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: ListModule, decorators: [{
678
- type: NgModule,
679
- args: [{
680
- imports: [
681
- CommonModule,
682
- IconModule,
683
- SpinnerModule,
684
- IonItemDivider,
685
- IonItemGroup,
686
- IonItemOptions,
687
- IonItemSliding,
688
- IonLabel,
689
- IonList,
690
- IonListHeader,
691
- ...imports,
692
- ],
693
- exports: reexportedImports,
694
- providers: [],
695
- }]
696
- }] });
697
-
698
- /**
699
- * Generated bundle index. Do not edit.
700
- */
701
-
1082
+ var ListModule = class ListModule {
1083
+ static {
1084
+ this.ɵfac = i0.ɵɵngDeclareFactory({
1085
+ minVersion: "12.0.0",
1086
+ version: "22.2.2",
1087
+ ngImport: i0,
1088
+ type: ListModule,
1089
+ deps: [],
1090
+ target: i0.ɵɵFactoryTarget.NgModule
1091
+ });
1092
+ }
1093
+ static {
1094
+ this.ɵmod = i0.ɵɵngDeclareNgModule({
1095
+ minVersion: "14.0.0",
1096
+ version: "22.2.2",
1097
+ ngImport: i0,
1098
+ type: ListModule,
1099
+ imports: [
1100
+ CommonModule,
1101
+ IconModule,
1102
+ SpinnerModule,
1103
+ IonItemDivider,
1104
+ IonItemGroup,
1105
+ IonItemOptions,
1106
+ IonItemSliding,
1107
+ IonLabel,
1108
+ IonList,
1109
+ IonListHeader,
1110
+ ListComponent,
1111
+ ListItemComponent,
1112
+ ListItemTemplateDirective,
1113
+ ListSectionHeaderComponent,
1114
+ ListSectionHeaderDirective,
1115
+ ListHeaderDirective,
1116
+ ListHeaderComponent,
1117
+ ListFooterDirective,
1118
+ ListExperimentalComponent,
1119
+ ListItemColorDirective,
1120
+ InfiniteScrollDirective,
1121
+ ListItemComponent
1122
+ ],
1123
+ exports: [
1124
+ ListComponent,
1125
+ ListItemComponent,
1126
+ ListItemTemplateDirective,
1127
+ ListSectionHeaderComponent,
1128
+ ListSectionHeaderDirective,
1129
+ ListHeaderDirective,
1130
+ ListHeaderComponent,
1131
+ ListFooterDirective,
1132
+ ListExperimentalComponent
1133
+ ]
1134
+ });
1135
+ }
1136
+ static {
1137
+ this.ɵinj = i0.ɵɵngDeclareInjector({
1138
+ minVersion: "12.0.0",
1139
+ version: "22.2.2",
1140
+ ngImport: i0,
1141
+ type: ListModule,
1142
+ imports: [
1143
+ CommonModule,
1144
+ IconModule,
1145
+ SpinnerModule,
1146
+ IonItemDivider,
1147
+ IonItemGroup,
1148
+ IonItemOptions,
1149
+ IonItemSliding,
1150
+ IonLabel,
1151
+ IonList,
1152
+ IonListHeader,
1153
+ ListComponent,
1154
+ ListItemComponent,
1155
+ ListItemComponent
1156
+ ]
1157
+ });
1158
+ }
1159
+ };
1160
+ i0.ɵɵngDeclareClassMetadata({
1161
+ minVersion: "12.0.0",
1162
+ version: "22.2.2",
1163
+ ngImport: i0,
1164
+ type: ListModule,
1165
+ decorators: [{
1166
+ type: NgModule,
1167
+ args: [{
1168
+ imports: [
1169
+ CommonModule,
1170
+ IconModule,
1171
+ SpinnerModule,
1172
+ IonItemDivider,
1173
+ IonItemGroup,
1174
+ IonItemOptions,
1175
+ IonItemSliding,
1176
+ IonLabel,
1177
+ IonList,
1178
+ IonListHeader,
1179
+ ...imports
1180
+ ],
1181
+ exports: reexportedImports,
1182
+ providers: []
1183
+ }]
1184
+ }]
1185
+ });
702
1186
  export { INFINITE_SCROLL_DEBOUNCE, InfiniteScrollDirective, ListComponent, ListExperimentalComponent, ListFooterDirective, ListHeaderComponent, ListHeaderDirective, ListHelper, ListItemColorDirective, ListItemComponent, ListItemTemplateDirective, ListModule, ListSectionHeaderComponent, ListSectionHeaderDirective };
703
- //# sourceMappingURL=kirbydesign-designsystem-list.mjs.map
1187
+
1188
+ //# sourceMappingURL=kirbydesign-designsystem-list.mjs.map