@lucca-front/ng 20.3.3-rc.6 → 21.0.0-rc.1

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 (261) hide show
  1. package/api/index.d.ts +18 -0
  2. package/breadcrumbs/index.d.ts +1 -3
  3. package/callout/index.d.ts +8 -2
  4. package/chip/index.d.ts +3 -2
  5. package/clear/index.d.ts +30 -0
  6. package/code/index.d.ts +9 -0
  7. package/container/index.d.ts +2 -2
  8. package/core/index.d.ts +6 -6
  9. package/core-select/department/index.d.ts +1 -1
  10. package/core-select/index.d.ts +2 -1
  11. package/core-select/occupation-category/index.d.ts +26 -0
  12. package/data-table/index.d.ts +68 -30
  13. package/date/index.d.ts +18 -0
  14. package/date2/index.d.ts +15 -15
  15. package/department/index.d.ts +10 -1
  16. package/divider/index.d.ts +7 -4
  17. package/dropdown/index.d.ts +6 -3
  18. package/establishment/index.d.ts +15 -0
  19. package/fancy-box/index.d.ts +2 -1
  20. package/fesm2022/lucca-front-ng-a11y.mjs +32 -32
  21. package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
  22. package/fesm2022/lucca-front-ng-animations.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-api.mjs +76 -59
  24. package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-app-layout.mjs +8 -8
  26. package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-box.mjs +8 -8
  28. package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-breadcrumbs.mjs +18 -30
  30. package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-button.mjs +12 -7
  32. package/fesm2022/lucca-front-ng-button.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-callout.mjs +117 -64
  34. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-chip.mjs +29 -25
  36. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-clear.mjs +94 -0
  38. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -0
  39. package/fesm2022/lucca-front-ng-code.mjs +21 -0
  40. package/fesm2022/lucca-front-ng-code.mjs.map +1 -0
  41. package/fesm2022/lucca-front-ng-comment.mjs +31 -31
  42. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-container.mjs +18 -18
  44. package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-core-select-api.mjs +14 -16
  46. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-core-select-department.mjs +16 -18
  48. package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-core-select-establishment.mjs +18 -19
  50. package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
  51. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +12 -13
  52. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
  53. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +79 -0
  54. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -0
  55. package/fesm2022/lucca-front-ng-core-select-user.mjs +60 -62
  56. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  57. package/fesm2022/lucca-front-ng-core-select.mjs +103 -113
  58. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  59. package/fesm2022/lucca-front-ng-core.mjs +48 -49
  60. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  61. package/fesm2022/lucca-front-ng-data-table.mjs +266 -87
  62. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  63. package/fesm2022/lucca-front-ng-date.mjs +113 -97
  64. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  65. package/fesm2022/lucca-front-ng-date2.mjs +134 -136
  66. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  67. package/fesm2022/lucca-front-ng-department.mjs +56 -47
  68. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  69. package/fesm2022/lucca-front-ng-dialog.mjs +53 -56
  70. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  71. package/fesm2022/lucca-front-ng-divider.mjs +13 -15
  72. package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
  73. package/fesm2022/lucca-front-ng-dropdown.mjs +225 -224
  74. package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
  75. package/fesm2022/lucca-front-ng-empty-state.mjs +13 -9
  76. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  77. package/fesm2022/lucca-front-ng-establishment.mjs +85 -71
  78. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  79. package/fesm2022/lucca-front-ng-fancy-box.mjs +10 -6
  80. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  81. package/fesm2022/lucca-front-ng-file-upload.mjs +112 -112
  82. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  83. package/fesm2022/lucca-front-ng-filter-pills.mjs +78 -81
  84. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  85. package/fesm2022/lucca-front-ng-footer.mjs +12 -19
  86. package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
  87. package/fesm2022/lucca-front-ng-form-field.mjs +88 -88
  88. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  89. package/fesm2022/lucca-front-ng-form-header.mjs +23 -0
  90. package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -0
  91. package/fesm2022/lucca-front-ng-form.mjs +24 -0
  92. package/fesm2022/lucca-front-ng-form.mjs.map +1 -0
  93. package/fesm2022/lucca-front-ng-formly.mjs +77 -77
  94. package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
  95. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +19 -20
  96. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
  97. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs.map +1 -1
  98. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +3 -2
  99. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map +1 -1
  100. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
  101. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +206 -150
  102. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  103. package/fesm2022/lucca-front-ng-forms.mjs +185 -171
  104. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  105. package/fesm2022/lucca-front-ng-gauge.mjs +26 -26
  106. package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -1
  107. package/fesm2022/lucca-front-ng-grid.mjs +26 -26
  108. package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
  109. package/fesm2022/lucca-front-ng-highlight-data.mjs +20 -20
  110. package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
  111. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +17 -32
  112. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
  113. package/fesm2022/lucca-front-ng-icon.mjs +6 -6
  114. package/fesm2022/lucca-front-ng-icon.mjs.map +1 -1
  115. package/fesm2022/lucca-front-ng-index-table.mjs +355 -0
  116. package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -0
  117. package/fesm2022/lucca-front-ng-inline-message.mjs +4 -4
  118. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  119. package/fesm2022/lucca-front-ng-input.mjs +67 -57
  120. package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
  121. package/fesm2022/lucca-front-ng-link.mjs +24 -23
  122. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  123. package/fesm2022/lucca-front-ng-listbox.mjs +31 -31
  124. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  125. package/fesm2022/lucca-front-ng-listing.mjs +28 -24
  126. package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
  127. package/fesm2022/lucca-front-ng-loading.mjs +11 -11
  128. package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
  129. package/fesm2022/lucca-front-ng-main-layout.mjs +14 -14
  130. package/fesm2022/lucca-front-ng-main-layout.mjs.map +1 -1
  131. package/fesm2022/lucca-front-ng-mobile-push.mjs +39 -31
  132. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  133. package/fesm2022/lucca-front-ng-modal.mjs +57 -62
  134. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  135. package/fesm2022/lucca-front-ng-multi-select.mjs +247 -230
  136. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  137. package/fesm2022/lucca-front-ng-new-badge.mjs +4 -4
  138. package/fesm2022/lucca-front-ng-new-badge.mjs.map +1 -1
  139. package/fesm2022/lucca-front-ng-number-format.mjs +11 -13
  140. package/fesm2022/lucca-front-ng-number-format.mjs.map +1 -1
  141. package/fesm2022/lucca-front-ng-number.mjs +11 -10
  142. package/fesm2022/lucca-front-ng-number.mjs.map +1 -1
  143. package/fesm2022/lucca-front-ng-numeric-badge.mjs +22 -10
  144. package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
  145. package/fesm2022/lucca-front-ng-option.mjs +287 -240
  146. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  147. package/fesm2022/lucca-front-ng-page-header.mjs +11 -11
  148. package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
  149. package/fesm2022/lucca-front-ng-pagination.mjs +38 -38
  150. package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
  151. package/fesm2022/lucca-front-ng-plg-push.mjs +54 -5
  152. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  153. package/fesm2022/lucca-front-ng-popover.mjs +38 -28
  154. package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
  155. package/fesm2022/lucca-front-ng-popover2.mjs +36 -33
  156. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  157. package/fesm2022/lucca-front-ng-popup.mjs +13 -10
  158. package/fesm2022/lucca-front-ng-popup.mjs.map +1 -1
  159. package/fesm2022/lucca-front-ng-progress-bar.mjs +28 -0
  160. package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -0
  161. package/fesm2022/lucca-front-ng-read-more.mjs +46 -78
  162. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  163. package/fesm2022/lucca-front-ng-safe-content.mjs +10 -11
  164. package/fesm2022/lucca-front-ng-safe-content.mjs.map +1 -1
  165. package/fesm2022/lucca-front-ng-scroll-box.mjs +46 -0
  166. package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -0
  167. package/fesm2022/lucca-front-ng-scroll.mjs +10 -8
  168. package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
  169. package/fesm2022/lucca-front-ng-scrollBox.mjs +1 -66
  170. package/fesm2022/lucca-front-ng-scrollBox.mjs.map +1 -1
  171. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +98 -0
  172. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -0
  173. package/fesm2022/lucca-front-ng-segmented-control.mjs +71 -0
  174. package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -0
  175. package/fesm2022/lucca-front-ng-segmentedControl.mjs +1 -66
  176. package/fesm2022/lucca-front-ng-segmentedControl.mjs.map +1 -1
  177. package/fesm2022/lucca-front-ng-segmentedControlTabs.mjs +1 -93
  178. package/fesm2022/lucca-front-ng-segmentedControlTabs.mjs.map +1 -1
  179. package/fesm2022/lucca-front-ng-select.mjs +21 -20
  180. package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
  181. package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
  182. package/fesm2022/lucca-front-ng-sidepanel.mjs.map +1 -1
  183. package/fesm2022/lucca-front-ng-simple-select.mjs +75 -67
  184. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  185. package/fesm2022/lucca-front-ng-skeleton.mjs +46 -44
  186. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  187. package/fesm2022/lucca-front-ng-sortable-list.mjs +49 -0
  188. package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -0
  189. package/fesm2022/lucca-front-ng-status-badge.mjs +34 -0
  190. package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -0
  191. package/fesm2022/lucca-front-ng-statusBadge.mjs +1 -29
  192. package/fesm2022/lucca-front-ng-statusBadge.mjs.map +1 -1
  193. package/fesm2022/lucca-front-ng-table-of-content.mjs +39 -0
  194. package/fesm2022/lucca-front-ng-table-of-content.mjs.map +1 -0
  195. package/fesm2022/lucca-front-ng-tag.mjs +35 -13
  196. package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
  197. package/fesm2022/lucca-front-ng-time.mjs +132 -142
  198. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  199. package/fesm2022/lucca-front-ng-title.mjs +10 -10
  200. package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
  201. package/fesm2022/lucca-front-ng-toast.mjs +26 -23
  202. package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
  203. package/fesm2022/lucca-front-ng-tooltip.mjs +40 -32
  204. package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
  205. package/fesm2022/lucca-front-ng-tree-select.mjs +20 -21
  206. package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
  207. package/fesm2022/lucca-front-ng-user-popover.mjs +23 -27
  208. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  209. package/fesm2022/lucca-front-ng-user.mjs +134 -111
  210. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  211. package/fesm2022/lucca-front-ng-vertical-navigation.mjs +91 -0
  212. package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -0
  213. package/file-upload/index.d.ts +25 -25
  214. package/footer/index.d.ts +7 -7
  215. package/form/index.d.ts +9 -0
  216. package/form-field/index.d.ts +33 -32
  217. package/form-header/index.d.ts +9 -0
  218. package/forms/index.d.ts +39 -37
  219. package/forms/rich-text-input/index.d.ts +4 -1
  220. package/gauge/index.d.ts +17 -17
  221. package/grid/index.d.ts +14 -14
  222. package/horizontal-navigation/index.d.ts +5 -8
  223. package/index-table/index.d.ts +103 -0
  224. package/input/index.d.ts +27 -15
  225. package/link/index.d.ts +3 -4
  226. package/listbox/index.d.ts +20 -20
  227. package/listing/index.d.ts +13 -9
  228. package/loading/index.d.ts +4 -4
  229. package/main-layout/index.d.ts +3 -3
  230. package/modal/index.d.ts +3 -2
  231. package/multi-select/index.d.ts +13 -3
  232. package/number/index.d.ts +3 -0
  233. package/option/index.d.ts +58 -4
  234. package/package.json +125 -69
  235. package/page-header/index.d.ts +5 -5
  236. package/plg-push/index.d.ts +13 -1
  237. package/popover/index.d.ts +12 -0
  238. package/popup/index.d.ts +3 -0
  239. package/progress-bar/index.d.ts +14 -0
  240. package/read-more/index.d.ts +6 -12
  241. package/scroll/index.d.ts +3 -0
  242. package/scroll-box/index.d.ts +15 -0
  243. package/scrollBox/index.d.ts +1 -19
  244. package/segmented-control/index.d.ts +28 -0
  245. package/segmented-control-tabs/index.d.ts +34 -0
  246. package/segmentedControl/index.d.ts +1 -28
  247. package/segmentedControlTabs/index.d.ts +1 -34
  248. package/select/index.d.ts +5 -4
  249. package/simple-select/index.d.ts +1 -0
  250. package/skeleton/index.d.ts +2 -1
  251. package/sortable-list/index.d.ts +22 -0
  252. package/src/components/cdk/_dragDrop.scss +31 -3
  253. package/src/definitions/option/_option-item.scss +6 -0
  254. package/status-badge/index.d.ts +16 -0
  255. package/statusBadge/index.d.ts +1 -16
  256. package/table-of-content/index.d.ts +16 -0
  257. package/time/index.d.ts +30 -30
  258. package/toast/index.d.ts +3 -0
  259. package/tooltip/index.d.ts +9 -0
  260. package/user/index.d.ts +20 -3
  261. package/vertical-navigation/index.d.ts +42 -0
@@ -1,4 +1,4 @@
1
- import { NgTemplateOutlet, DatePipe } from '@angular/common';
1
+ import { DatePipe, NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
3
  import { InjectionToken, inject, LOCALE_ID, computed, input, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChildren, forwardRef, booleanAttribute, Input } from '@angular/core';
4
4
  import { PortalDirective } from '@lucca-front/ng/core';
@@ -19,28 +19,28 @@ class CommentComponent {
19
19
  minute: 'numeric',
20
20
  });
21
21
  this.#parentBlock = inject(COMMENT_BLOCK_INSTANCE);
22
- this.noAvatar = computed(() => this.#parentBlock.noAvatar(), ...(ngDevMode ? [{ debugName: "noAvatar" }] : []));
23
- this.avatar = computed(() => this.#parentBlock.avatar(), ...(ngDevMode ? [{ debugName: "avatar" }] : []));
24
- this.authorName = computed(() => this.#parentBlock.authorName(), ...(ngDevMode ? [{ debugName: "authorName" }] : []));
25
- this.size = computed(() => this.#parentBlock.size(), ...(ngDevMode ? [{ debugName: "size" }] : []));
26
- this.date = input(...(ngDevMode ? [undefined, { debugName: "date" }] : []));
22
+ this.noAvatar = computed(() => this.#parentBlock.noAvatar());
23
+ this.avatar = computed(() => this.#parentBlock.avatar());
24
+ this.authorName = computed(() => this.#parentBlock.authorName());
25
+ this.size = computed(() => this.#parentBlock.size());
26
+ this.date = input();
27
27
  /**
28
28
  * format given to the date pipe for display.
29
29
  *
30
30
  * See https://angular.dev/api/common/DatePipe#custom-format-options
31
31
  */
32
- this.datePipeFormat = input(undefined, ...(ngDevMode ? [{ debugName: "datePipeFormat" }] : []));
33
- this.content = input(...(ngDevMode ? [undefined, { debugName: "content" }] : []));
32
+ this.datePipeFormat = input(undefined);
33
+ this.content = input();
34
34
  this.contentIsHTML = computed(() => {
35
35
  return /<\/?[a-z][\s\S]*>/i.test(this.content());
36
- }, ...(ngDevMode ? [{ debugName: "contentIsHTML" }] : []));
36
+ });
37
37
  this.dateDisplay = computed(() => {
38
38
  const formatted = this.#intlDateTimeFormat.format(this.date());
39
39
  return `${formatted[0].toUpperCase()}${formatted.slice(1)}`;
40
- }, ...(ngDevMode ? [{ debugName: "dateDisplay" }] : []));
40
+ });
41
41
  this.role = computed(() => {
42
42
  return this.#parentBlock.isSingleComment() ? null : 'listitem';
43
- }, ...(ngDevMode ? [{ debugName: "role" }] : []));
43
+ });
44
44
  }
45
45
  #locale;
46
46
  #intlDateTimeFormat;
@@ -48,15 +48,15 @@ class CommentComponent {
48
48
  get roleAttr() {
49
49
  return this.role();
50
50
  }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: CommentComponent, isStandalone: true, selector: "lu-comment", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, datePipeFormat: { classPropertyName: "datePipeFormat", publicName: "datePipeFormat", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "this.roleAttr" }, classAttribute: "commentWrapper-item" }, ngImport: i0, template: "<div class=\"comment\" [class.mod-noAvatar]=\"noAvatar()\" [class.mod-S]=\"size() === 'S'\">\n\t<div class=\"comment-infos\">\n\t\t@if (!noAvatar()) {\n\t\t\t<div class=\"pr-u-displayContents\" aria-hidden=\"true\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"avatar()\" />\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"comment-infos-content\">\n\t\t\t<span class=\"comment-infos-name\"><ng-container *luPortal=\"authorName()\" /></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (datePipeFormat()) {\n\t\t\t\t\t{{ date() | date: datePipeFormat() }}\n\t\t\t\t} @else if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\" />\n\t\t\t\t} @else {\n\t\t\t\t\t{{ date() | date }}\n\t\t\t\t}\n\t\t\t</time>\n\t\t</div>\n\t</div>\n\t<blockquote class=\"comment-content\">\n\t\t@if (contentIsHTML()) {\n\t\t\t<div class=\"comment-content-textContainerOptional\" [innerHTML]=\"content()\"></div>\n\t\t} @else {\n\t\t\t<p class=\"comment-content-text\" [innerHTML]=\"content()\"></p>\n\t\t}\n\t</blockquote>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content />\n</ng-template>\n", styles: ["@charset \"UTF-8\";@layer components{.comment{--components-comment-max-width: 66ch;--components-comment-text-font: var(--pr-t-font-body-M);--components-comment-margin: 0;--components-comment-content-margin: calc(1.5rem + var(--pr-t-spacings-100));--components-comment-info-separator: \"\\2022\";--components-comment-info-content-display: block;--components-comment-info-direction: row;--components-comment-align: start;--components-comment-border-radius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default);--components-comment-text-fontSize: var(--pr-t-font-body-M-fontSize);--components-comment-text-lineHeight: var(--pr-t-font-body-M-lineHeight);container:comment/inline-size;display:flex;flex-direction:column;gap:var(--pr-t-spacings-50);max-inline-size:var(--components-comment-max-width);align-items:var(--components-comment-align);margin-inline-start:var(--components-comment-margin)}.comment .avatar{--components-avatar-size: 1.5rem;--components-avatar-fontSize: var(--pr-t-font-fontSize-150);--components-avatar-placeholder-size: .75rem;--components-avatar-border: 1px}.commentWrapper{display:flex;flex-direction:column;gap:var(--pr-t-spacings-100);margin:0;padding:0;list-style-type:none}.comment-infos{display:flex;font-style:normal;gap:var(--pr-t-spacings-100);justify-content:flex-start;align-items:flex-start;flex-direction:var(--components-comment-info-direction)}.comment-infos-content{flex-direction:column;display:var(--components-comment-info-content-display);font:var(--pr-t-font-body-S);margin-block:var(--pr-t-spacings-25)}.comment-infos-date{color:var(--pr-t-color-text-subtle)}.comment-infos-name{color:var(--pr-t-color-text)}.comment-infos-name+.comment-infos-date:before{color:var(--palettes-neutral-400);padding-inline:1ch;content:var(--components-comment-info-separator)/\"\"}.comment-content{background-color:var(--components-comment-background-color, var(--palettes-neutral-50));border-radius:var(--components-comment-border-radius);display:flex;flex-direction:column;gap:var(--pr-t-spacings-150);margin-block:0;margin-inline:var(--components-comment-content-margin) 0;max-inline-size:fit-content;padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-150)}.comment-content-text{margin-block-end:0;overflow-wrap:break-word;font:var(--components-comment-text-font)}.comment-content-textContainerOptional{display:flex;flex-direction:column;gap:var(--pr-t-spacings-100);font:var(--components-comment-text-font)}.comment-content-textContainerOptional>*{margin:0}}@layer mods{.comment.mod-S{--components-comment-text-font: var(--pr-t-font-body-S)}.comment.mod-noAvatar{--components-comment-content-margin: 0}@container comment not (min-width: 25rem){.comment-infos-content{--components-comment-info-content-display: flex}.comment-infos-name+.comment-infos-date:before{--components-comment-info-separator: none}}}@layer components{.commentWrapper{--components-comment-max-width: 66ch;--components-comment-text-font: var(--pr-t-font-body-M);--components-comment-margin: 0;--components-comment-content-margin: calc(1.5rem + var(--pr-t-spacings-100));--components-comment-info-separator: \"\\2022\";--components-comment-info-content-display: block;--components-comment-info-direction: row;--components-comment-align: start;--components-comment-border-radius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default);--components-comment-text-fontSize: var(--pr-t-font-body-M-fontSize);--components-comment-text-lineHeight: var(--pr-t-font-body-M-lineHeight)}}@layer mods{.commentWrapper.mod-S .comment{--components-comment-text-font: var(--pr-t-font-body-S)}.commentWrapper.mod-compact .commentWrapper-item:not(:first-child) .comment-infos{border:0;clip:rect(1px,1px,1px,1px);margin:-1px;overflow:hidden;padding:0;position:absolute;block-size:1px;inline-size:1px;white-space:nowrap;contain:paint}.commentWrapper.mod-chatAnswer .comment{--components-comment-info-direction: row-reverse;--components-comment-background-color: var(--palettes-product-50);--components-comment-align: end;--components-comment-margin: auto;--components-comment-border-radius: var(--pr-t-border-radius-default) var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default)}.commentWrapper.mod-chatAnswer .comment-content{margin-block:0;margin-inline:0 var(--components-comment-content-margin)}}@layer components{.commentWrapperChat{margin:0;padding:0;list-style-type:none;display:flex;flex-direction:column;gap:var(--pr-t-spacings-200)}.commentWrapperChat .comment{--components-comment-max-width: min(66ch, calc(100% - var(--components-comment-content-margin)))}}\n"], dependencies: [{ kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "ngmodule", type: LuUserPictureModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
51
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
52
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: CommentComponent, isStandalone: true, selector: "lu-comment", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, datePipeFormat: { classPropertyName: "datePipeFormat", publicName: "datePipeFormat", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "this.roleAttr" }, classAttribute: "commentWrapper-item" }, ngImport: i0, template: "<div class=\"comment\" [class.mod-noAvatar]=\"noAvatar()\" [class.mod-S]=\"size() === 'S'\">\n\t<div class=\"comment-infos\">\n\t\t@if (!noAvatar()) {\n\t\t\t<div class=\"pr-u-displayContents\" aria-hidden=\"true\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"avatar()\" />\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"comment-infos-content\">\n\t\t\t<span class=\"comment-infos-name\"><ng-container *luPortal=\"authorName()\" /></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (datePipeFormat()) {\n\t\t\t\t\t{{ date() | date: datePipeFormat() }}\n\t\t\t\t} @else if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\" />\n\t\t\t\t} @else {\n\t\t\t\t\t{{ date() | date }}\n\t\t\t\t}\n\t\t\t</time>\n\t\t</div>\n\t</div>\n\t<blockquote class=\"comment-content\">\n\t\t@if (contentIsHTML()) {\n\t\t\t<div class=\"comment-content-textContainerOptional\" [innerHTML]=\"content()\"></div>\n\t\t} @else {\n\t\t\t<p class=\"comment-content-text\" [innerHTML]=\"content()\"></p>\n\t\t}\n\t</blockquote>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content />\n</ng-template>\n", styles: ["@charset \"UTF-8\";@layer components{.comment{--components-comment-max-width: 66ch;--components-comment-text-font: var(--pr-t-font-body-M);--components-comment-margin: 0;--components-comment-content-margin: calc(1.5rem + var(--pr-t-spacings-100));--components-comment-info-separator: \"\\2022\";--components-comment-info-content-display: block;--components-comment-info-direction: row;--components-comment-align: start;--components-comment-border-radius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default);--components-comment-text-fontSize: var(--pr-t-font-body-M-fontSize);--components-comment-text-lineHeight: var(--pr-t-font-body-M-lineHeight);container:comment/inline-size;display:flex;flex-direction:column;gap:var(--pr-t-spacings-50);max-inline-size:var(--components-comment-max-width);align-items:var(--components-comment-align);margin-inline-start:var(--components-comment-margin)}.comment .avatar{--components-avatar-size: 1.5rem;--components-avatar-fontSize: var(--pr-t-font-fontSize-150);--components-avatar-placeholder-size: .75rem;--components-avatar-border: 1px}.commentWrapper{display:flex;flex-direction:column;gap:var(--pr-t-spacings-100);margin:0;padding:0;list-style-type:none}.comment-infos{display:flex;font-style:normal;gap:var(--pr-t-spacings-100);justify-content:flex-start;align-items:flex-start;flex-direction:var(--components-comment-info-direction)}.comment-infos-content{flex-direction:column;display:var(--components-comment-info-content-display);font:var(--pr-t-font-body-S);margin-block:var(--pr-t-spacings-25)}.comment-infos-date{color:var(--pr-t-color-text-subtle)}.comment-infos-name{color:var(--pr-t-color-text)}.comment-infos-name+.comment-infos-date:before{color:var(--palettes-neutral-400);padding-inline:1ch;content:var(--components-comment-info-separator)/\"\"}.comment-content{background-color:var(--components-comment-background-color, var(--palettes-neutral-50));border-radius:var(--components-comment-border-radius);display:flex;flex-direction:column;gap:var(--pr-t-spacings-150);margin-block:0;margin-inline:var(--components-comment-content-margin) 0;max-inline-size:fit-content;padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-150)}.comment-content-text{margin-block-end:0;overflow-wrap:break-word;font:var(--components-comment-text-font)}.comment-content-textContainerOptional{display:flex;flex-direction:column;gap:var(--pr-t-spacings-100);font:var(--components-comment-text-font)}.comment-content-textContainerOptional>*{margin:0}}@layer mods{.comment.mod-S{--components-comment-text-font: var(--pr-t-font-body-S)}.comment.mod-noAvatar{--components-comment-content-margin: 0}@container comment not (min-width: 25rem){.comment-infos-content{--components-comment-info-content-display: flex}.comment-infos-name+.comment-infos-date:before{--components-comment-info-separator: none}}}@layer components{.commentWrapper{--components-comment-max-width: 66ch;--components-comment-text-font: var(--pr-t-font-body-M);--components-comment-margin: 0;--components-comment-content-margin: calc(1.5rem + var(--pr-t-spacings-100));--components-comment-info-separator: \"\\2022\";--components-comment-info-content-display: block;--components-comment-info-direction: row;--components-comment-align: start;--components-comment-border-radius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default);--components-comment-text-fontSize: var(--pr-t-font-body-M-fontSize);--components-comment-text-lineHeight: var(--pr-t-font-body-M-lineHeight)}}@layer mods{.commentWrapper.mod-S .comment{--components-comment-text-font: var(--pr-t-font-body-S)}.commentWrapper.mod-compact .commentWrapper-item:not(:first-child) .comment-infos{border:0;clip:rect(1px,1px,1px,1px);margin:-1px;overflow:hidden;padding:0;position:absolute;block-size:1px;inline-size:1px;white-space:nowrap;contain:paint}.commentWrapper.mod-chatAnswer .comment{--components-comment-info-direction: row-reverse;--components-comment-background-color: var(--palettes-product-50);--components-comment-align: end;--components-comment-margin: auto;--components-comment-border-radius: var(--pr-t-border-radius-default) var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default)}.commentWrapper.mod-chatAnswer .comment-content{margin-block:0;margin-inline:0 var(--components-comment-content-margin)}}@layer components{.commentWrapperChat{margin:0;padding:0;list-style-type:none;display:flex;flex-direction:column;gap:var(--pr-t-spacings-200)}.commentWrapperChat .comment{--components-comment-max-width: min(66ch, calc(100% - var(--components-comment-content-margin)))}}\n"], dependencies: [{ kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "ngmodule", type: LuUserPictureModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
53
53
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CommentComponent, decorators: [{
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentComponent, decorators: [{
55
55
  type: Component,
56
- args: [{ selector: 'lu-comment', standalone: true, imports: [PortalDirective, DatePipe, LuUserPictureModule, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
56
+ args: [{ selector: 'lu-comment', imports: [PortalDirective, DatePipe, LuUserPictureModule, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
57
57
  class: 'commentWrapper-item',
58
58
  }, template: "<div class=\"comment\" [class.mod-noAvatar]=\"noAvatar()\" [class.mod-S]=\"size() === 'S'\">\n\t<div class=\"comment-infos\">\n\t\t@if (!noAvatar()) {\n\t\t\t<div class=\"pr-u-displayContents\" aria-hidden=\"true\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"avatar()\" />\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"comment-infos-content\">\n\t\t\t<span class=\"comment-infos-name\"><ng-container *luPortal=\"authorName()\" /></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (datePipeFormat()) {\n\t\t\t\t\t{{ date() | date: datePipeFormat() }}\n\t\t\t\t} @else if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\" />\n\t\t\t\t} @else {\n\t\t\t\t\t{{ date() | date }}\n\t\t\t\t}\n\t\t\t</time>\n\t\t</div>\n\t</div>\n\t<blockquote class=\"comment-content\">\n\t\t@if (contentIsHTML()) {\n\t\t\t<div class=\"comment-content-textContainerOptional\" [innerHTML]=\"content()\"></div>\n\t\t} @else {\n\t\t\t<p class=\"comment-content-text\" [innerHTML]=\"content()\"></p>\n\t\t}\n\t</blockquote>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content />\n</ng-template>\n", styles: ["@charset \"UTF-8\";@layer components{.comment{--components-comment-max-width: 66ch;--components-comment-text-font: var(--pr-t-font-body-M);--components-comment-margin: 0;--components-comment-content-margin: calc(1.5rem + var(--pr-t-spacings-100));--components-comment-info-separator: \"\\2022\";--components-comment-info-content-display: block;--components-comment-info-direction: row;--components-comment-align: start;--components-comment-border-radius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default);--components-comment-text-fontSize: var(--pr-t-font-body-M-fontSize);--components-comment-text-lineHeight: var(--pr-t-font-body-M-lineHeight);container:comment/inline-size;display:flex;flex-direction:column;gap:var(--pr-t-spacings-50);max-inline-size:var(--components-comment-max-width);align-items:var(--components-comment-align);margin-inline-start:var(--components-comment-margin)}.comment .avatar{--components-avatar-size: 1.5rem;--components-avatar-fontSize: var(--pr-t-font-fontSize-150);--components-avatar-placeholder-size: .75rem;--components-avatar-border: 1px}.commentWrapper{display:flex;flex-direction:column;gap:var(--pr-t-spacings-100);margin:0;padding:0;list-style-type:none}.comment-infos{display:flex;font-style:normal;gap:var(--pr-t-spacings-100);justify-content:flex-start;align-items:flex-start;flex-direction:var(--components-comment-info-direction)}.comment-infos-content{flex-direction:column;display:var(--components-comment-info-content-display);font:var(--pr-t-font-body-S);margin-block:var(--pr-t-spacings-25)}.comment-infos-date{color:var(--pr-t-color-text-subtle)}.comment-infos-name{color:var(--pr-t-color-text)}.comment-infos-name+.comment-infos-date:before{color:var(--palettes-neutral-400);padding-inline:1ch;content:var(--components-comment-info-separator)/\"\"}.comment-content{background-color:var(--components-comment-background-color, var(--palettes-neutral-50));border-radius:var(--components-comment-border-radius);display:flex;flex-direction:column;gap:var(--pr-t-spacings-150);margin-block:0;margin-inline:var(--components-comment-content-margin) 0;max-inline-size:fit-content;padding-block:var(--pr-t-spacings-100);padding-inline:var(--pr-t-spacings-150)}.comment-content-text{margin-block-end:0;overflow-wrap:break-word;font:var(--components-comment-text-font)}.comment-content-textContainerOptional{display:flex;flex-direction:column;gap:var(--pr-t-spacings-100);font:var(--components-comment-text-font)}.comment-content-textContainerOptional>*{margin:0}}@layer mods{.comment.mod-S{--components-comment-text-font: var(--pr-t-font-body-S)}.comment.mod-noAvatar{--components-comment-content-margin: 0}@container comment not (min-width: 25rem){.comment-infos-content{--components-comment-info-content-display: flex}.comment-infos-name+.comment-infos-date:before{--components-comment-info-separator: none}}}@layer components{.commentWrapper{--components-comment-max-width: 66ch;--components-comment-text-font: var(--pr-t-font-body-M);--components-comment-margin: 0;--components-comment-content-margin: calc(1.5rem + var(--pr-t-spacings-100));--components-comment-info-separator: \"\\2022\";--components-comment-info-content-display: block;--components-comment-info-direction: row;--components-comment-align: start;--components-comment-border-radius: var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default);--components-comment-text-fontSize: var(--pr-t-font-body-M-fontSize);--components-comment-text-lineHeight: var(--pr-t-font-body-M-lineHeight)}}@layer mods{.commentWrapper.mod-S .comment{--components-comment-text-font: var(--pr-t-font-body-S)}.commentWrapper.mod-compact .commentWrapper-item:not(:first-child) .comment-infos{border:0;clip:rect(1px,1px,1px,1px);margin:-1px;overflow:hidden;padding:0;position:absolute;block-size:1px;inline-size:1px;white-space:nowrap;contain:paint}.commentWrapper.mod-chatAnswer .comment{--components-comment-info-direction: row-reverse;--components-comment-background-color: var(--palettes-product-50);--components-comment-align: end;--components-comment-margin: auto;--components-comment-border-radius: var(--pr-t-border-radius-default) var(--pr-t-border-radius-small) var(--pr-t-border-radius-default) var(--pr-t-border-radius-default)}.commentWrapper.mod-chatAnswer .comment-content{margin-block:0;margin-inline:0 var(--components-comment-content-margin)}}@layer components{.commentWrapperChat{margin:0;padding:0;list-style-type:none;display:flex;flex-direction:column;gap:var(--pr-t-spacings-200)}.commentWrapperChat .comment{--components-comment-max-width: min(66ch, calc(100% - var(--components-comment-content-margin)))}}\n"] }]
59
- }], propDecorators: { date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], datePipeFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "datePipeFormat", required: false }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], roleAttr: [{
59
+ }], propDecorators: { roleAttr: [{
60
60
  type: HostBinding,
61
61
  args: ['attr.role']
62
62
  }] } });
@@ -66,31 +66,31 @@ class CommentBlockComponent {
66
66
  this.compact = false;
67
67
  this.small = false;
68
68
  this.chatAnswer = false;
69
- this.comments = contentChildren(CommentComponent, ...(ngDevMode ? [{ debugName: "comments", read: CommentComponent, descendants: true }] : [{ read: CommentComponent, descendants: true }]));
70
- this.authorName = input(...(ngDevMode ? [undefined, { debugName: "authorName" }] : []));
71
- this.avatar = input(...(ngDevMode ? [undefined, { debugName: "avatar" }] : []));
72
- this.size = input(...(ngDevMode ? [undefined, { debugName: "size" }] : []));
69
+ this.comments = contentChildren(CommentComponent, { read: CommentComponent, descendants: true });
70
+ this.authorName = input();
71
+ this.avatar = input();
72
+ this.size = input();
73
73
  this.noAvatar = computed(() => {
74
74
  return !this.avatar();
75
- }, ...(ngDevMode ? [{ debugName: "noAvatar" }] : []));
75
+ });
76
76
  this.isSingleComment = computed(() => {
77
77
  return this.comments().length === 1;
78
- }, ...(ngDevMode ? [{ debugName: "isSingleComment" }] : []));
78
+ });
79
79
  this.#chatBlock = inject(COMMENT_CHAT_INSTANCE, { optional: true });
80
80
  this.role = this.#chatBlock ? 'listitem' : null;
81
81
  }
82
82
  #chatBlock;
83
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CommentBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
84
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: CommentBlockComponent, isStandalone: true, selector: "lu-comment-block", inputs: { compact: { classPropertyName: "compact", publicName: "compact", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, small: { classPropertyName: "small", publicName: "small", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, chatAnswer: { classPropertyName: "chatAnswer", publicName: "chatAnswer", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, authorName: { classPropertyName: "authorName", publicName: "authorName", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "this.role" } }, providers: [
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.2", type: CommentBlockComponent, isStandalone: true, selector: "lu-comment-block", inputs: { compact: { classPropertyName: "compact", publicName: "compact", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, small: { classPropertyName: "small", publicName: "small", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, chatAnswer: { classPropertyName: "chatAnswer", publicName: "chatAnswer", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, authorName: { classPropertyName: "authorName", publicName: "authorName", isSignal: true, isRequired: false, transformFunction: null }, avatar: { classPropertyName: "avatar", publicName: "avatar", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.role": "this.role" } }, providers: [
85
85
  {
86
86
  provide: COMMENT_BLOCK_INSTANCE,
87
87
  useExisting: forwardRef(() => CommentBlockComponent),
88
88
  },
89
89
  ], queries: [{ propertyName: "comments", predicate: CommentComponent, descendants: true, read: CommentComponent, isSignal: true }], ngImport: i0, template: "<ng-template #content><ng-content /></ng-template>\n\n@if (isSingleComment()) {\n\t<div class=\"commentWrapper\" [class.mod-S]=\"small\" [class.mod-compact]=\"compact\" [class.mod-chatAnswer]=\"chatAnswer\">\n\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t</div>\n} @else {\n\t<ol class=\"commentWrapper\" [class.mod-S]=\"small\" [class.mod-compact]=\"compact\" [class.mod-chatAnswer]=\"chatAnswer\">\n\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t</ol>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CommentBlockComponent, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentBlockComponent, decorators: [{
92
92
  type: Component,
93
- args: [{ selector: 'lu-comment-block', standalone: true, imports: [NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
93
+ args: [{ selector: 'lu-comment-block', imports: [NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
94
94
  {
95
95
  provide: COMMENT_BLOCK_INSTANCE,
96
96
  useExisting: forwardRef(() => CommentBlockComponent),
@@ -111,23 +111,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
111
111
  args: [{
112
112
  transform: booleanAttribute,
113
113
  }]
114
- }], comments: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CommentComponent), { ...{ read: CommentComponent, descendants: true }, isSignal: true }] }], authorName: [{ type: i0.Input, args: [{ isSignal: true, alias: "authorName", required: false }] }], avatar: [{ type: i0.Input, args: [{ isSignal: true, alias: "avatar", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], role: [{
114
+ }], role: [{
115
115
  type: HostBinding,
116
116
  args: ['attr.role']
117
117
  }] } });
118
118
 
119
119
  class CommentChatComponent {
120
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CommentChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.12", type: CommentChatComponent, isStandalone: true, selector: "lu-comment-chat", providers: [
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentChatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.2", type: CommentChatComponent, isStandalone: true, selector: "lu-comment-chat", providers: [
122
122
  {
123
123
  provide: COMMENT_CHAT_INSTANCE,
124
124
  useExisting: forwardRef(() => CommentChatComponent),
125
125
  },
126
126
  ], ngImport: i0, template: "<ol class=\"commentWrapperChat\">\n\t<ng-content />\n</ol>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: CommentChatComponent, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentChatComponent, decorators: [{
129
129
  type: Component,
130
- args: [{ selector: 'lu-comment-chat', standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
130
+ args: [{ selector: 'lu-comment-chat', imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
131
131
  {
132
132
  provide: COMMENT_CHAT_INSTANCE,
133
133
  useExisting: forwardRef(() => CommentChatComponent),
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-comment.mjs","sources":["../../../packages/ng/comment/token.ts","../../../packages/ng/comment/comment/comment.component.ts","../../../packages/ng/comment/comment/comment.component.html","../../../packages/ng/comment/comment-block/comment-block.component.ts","../../../packages/ng/comment/comment-block/comment-block.component.html","../../../packages/ng/comment/comment-chat/comment-chat.component.ts","../../../packages/ng/comment/comment-chat/comment-chat.component.html","../../../packages/ng/comment/lucca-front-ng-comment.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { CommentBlockComponent } from './comment-block/comment-block.component';\nimport { CommentChatComponent } from './comment-chat/comment-chat.component';\n\nexport const COMMENT_BLOCK_INSTANCE = new InjectionToken<CommentBlockComponent>('COMMENT_BLOCK_INSTANCE');\nexport const COMMENT_CHAT_INSTANCE = new InjectionToken<CommentChatComponent>('COMMENT_CHAT_INSTANCE');\n","import { DatePipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject, input, LOCALE_ID, ViewEncapsulation } from '@angular/core';\nimport { PortalDirective } from '@lucca-front/ng/core';\nimport { LuUserPictureModule } from '@lucca-front/ng/user';\nimport { COMMENT_BLOCK_INSTANCE } from '../token';\n\n@Component({\n\tselector: 'lu-comment',\n\tstandalone: true,\n\timports: [PortalDirective, DatePipe, LuUserPictureModule, NgTemplateOutlet],\n\ttemplateUrl: './comment.component.html',\n\tstyleUrl: './comment.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'commentWrapper-item',\n\t},\n})\nexport class CommentComponent {\n\t#locale = inject(LOCALE_ID);\n\t#intlDateTimeFormat = new Intl.DateTimeFormat(this.#locale, {\n\t\tweekday: 'long',\n\t\tyear: 'numeric',\n\t\tmonth: 'short',\n\t\tday: 'numeric',\n\t\thour: 'numeric',\n\t\tminute: 'numeric',\n\t});\n\n\t#parentBlock = inject(COMMENT_BLOCK_INSTANCE);\n\n\tnoAvatar = computed(() => this.#parentBlock.noAvatar());\n\n\tavatar = computed(() => this.#parentBlock.avatar());\n\n\tauthorName = computed(() => this.#parentBlock.authorName());\n\n\tsize = computed(() => this.#parentBlock.size());\n\n\tdate = input<Date>();\n\n\t/**\n\t * format given to the date pipe for display.\n\t *\n\t * See https://angular.dev/api/common/DatePipe#custom-format-options\n\t */\n\tdatePipeFormat = input<string | undefined>(undefined);\n\n\tcontent = input<string>();\n\n\tcontentIsHTML = computed(() => {\n\t\treturn /<\\/?[a-z][\\s\\S]*>/i.test(this.content());\n\t});\n\n\tdateDisplay = computed(() => {\n\t\tconst formatted = this.#intlDateTimeFormat.format(this.date());\n\t\treturn `${formatted[0].toUpperCase()}${formatted.slice(1)}`;\n\t});\n\n\trole = computed(() => {\n\t\treturn this.#parentBlock.isSingleComment() ? null : 'listitem';\n\t});\n\n\t@HostBinding('attr.role')\n\tget roleAttr(): string {\n\t\treturn this.role();\n\t}\n}\n","<div class=\"comment\" [class.mod-noAvatar]=\"noAvatar()\" [class.mod-S]=\"size() === 'S'\">\n\t<div class=\"comment-infos\">\n\t\t@if (!noAvatar()) {\n\t\t\t<div class=\"pr-u-displayContents\" aria-hidden=\"true\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"avatar()\" />\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"comment-infos-content\">\n\t\t\t<span class=\"comment-infos-name\"><ng-container *luPortal=\"authorName()\" /></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (datePipeFormat()) {\n\t\t\t\t\t{{ date() | date: datePipeFormat() }}\n\t\t\t\t} @else if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\" />\n\t\t\t\t} @else {\n\t\t\t\t\t{{ date() | date }}\n\t\t\t\t}\n\t\t\t</time>\n\t\t</div>\n\t</div>\n\t<blockquote class=\"comment-content\">\n\t\t@if (contentIsHTML()) {\n\t\t\t<div class=\"comment-content-textContainerOptional\" [innerHTML]=\"content()\"></div>\n\t\t} @else {\n\t\t\t<p class=\"comment-content-text\" [innerHTML]=\"content()\"></p>\n\t\t}\n\t</blockquote>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content />\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChildren, forwardRef, HostBinding, inject, Input, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { PortalContent } from '@lucca-front/ng/core';\nimport { CommentComponent } from '../comment/comment.component';\nimport { COMMENT_BLOCK_INSTANCE, COMMENT_CHAT_INSTANCE } from '../token';\n\n@Component({\n\tselector: 'lu-comment-block',\n\tstandalone: true,\n\timports: [NgTemplateOutlet],\n\ttemplateUrl: './comment-block.component.html',\n\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\n\tproviders: [\n\t\t{\n\t\t\tprovide: COMMENT_BLOCK_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => CommentBlockComponent),\n\t\t},\n\t],\n})\nexport class CommentBlockComponent {\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tcompact = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tsmall = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tchatAnswer = false;\n\n\tcomments = contentChildren(CommentComponent, { read: CommentComponent, descendants: true });\n\n\tauthorName = input<PortalContent>();\n\n\tavatar = input<TemplateRef<unknown>>();\n\n\tsize = input<'S' | 'M'>();\n\n\tnoAvatar = computed(() => {\n\t\treturn !this.avatar();\n\t});\n\n\tisSingleComment = computed(() => {\n\t\treturn this.comments().length === 1;\n\t});\n\n\t#chatBlock = inject(COMMENT_CHAT_INSTANCE, { optional: true });\n\n\t@HostBinding('attr.role')\n\tpublic role = this.#chatBlock ? 'listitem' : null;\n}\n","<ng-template #content><ng-content /></ng-template>\n\n@if (isSingleComment()) {\n\t<div class=\"commentWrapper\" [class.mod-S]=\"small\" [class.mod-compact]=\"compact\" [class.mod-chatAnswer]=\"chatAnswer\">\n\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t</div>\n} @else {\n\t<ol class=\"commentWrapper\" [class.mod-S]=\"small\" [class.mod-compact]=\"compact\" [class.mod-chatAnswer]=\"chatAnswer\">\n\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t</ol>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { COMMENT_CHAT_INSTANCE } from '../token';\n\n@Component({\n\tselector: 'lu-comment-chat',\n\tstandalone: true,\n\timports: [],\n\ttemplateUrl: './comment-chat.component.html',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\n\tproviders: [\n\t\t{\n\t\t\tprovide: COMMENT_CHAT_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => CommentChatComponent),\n\t\t},\n\t],\n})\nexport class CommentChatComponent {}\n","<ol class=\"commentWrapperChat\">\n\t<ng-content />\n</ol>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAIO,MAAM,sBAAsB,GAAG,IAAI,cAAc,CAAwB,wBAAwB,CAAC;AAClG,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAuB,uBAAuB,CAAC;;MCazF,gBAAgB,CAAA;AAZ7B,IAAA,WAAA,GAAA;AAaC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;QAC3B,IAAA,CAAA,mBAAmB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE;AAC3D,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,MAAM,EAAE,SAAS;AACjB,SAAA,CAAC;AAEF,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAE7C,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,oDAAC;AAEvD,QAAA,IAAA,CAAA,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,kDAAC;AAEnD,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,sDAAC;AAE3D,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,gDAAC;QAE/C,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAQ;AAEpB;;;;AAIG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAqB,SAAS,0DAAC;QAErD,IAAA,CAAA,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AAEzB,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC7B,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACjD,QAAA,CAAC,yDAAC;AAEF,QAAA,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AAC9D,YAAA,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA,EAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC5D,QAAA,CAAC,uDAAC;AAEF,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAAK;AACpB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,IAAI,GAAG,UAAU;AAC/D,QAAA,CAAC,gDAAC;AAMF,IAAA;AAhDA,IAAA,OAAO;AACP,IAAA,mBAAmB;AASnB,IAAA,YAAY;AAkCZ,IAAA,IACI,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE;IACnB;+GAhDY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClB7B,wnCAgCA,EAAA,MAAA,EAAA,CAAA,wmJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDvBW,eAAe,+FAAY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAA/C,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FASvB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;+BACC,YAAY,EAAA,UAAA,EACV,IAAI,EAAA,OAAA,EACP,CAAC,eAAe,EAAE,QAAQ,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAG5D,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACL,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,qBAAA,EAAA,QAAA,EAAA,wnCAAA,EAAA,MAAA,EAAA,CAAA,wmJAAA,CAAA,EAAA;;sBA+CA,WAAW;uBAAC,WAAW;;;MEzCZ,qBAAqB,CAAA;AAhBlC,IAAA,WAAA,GAAA;QAoBC,IAAA,CAAA,OAAO,GAAG,KAAK;QAKf,IAAA,CAAA,KAAK,GAAG,KAAK;QAKb,IAAA,CAAA,UAAU,GAAG,KAAK;QAElB,IAAA,CAAA,QAAQ,GAAG,eAAe,CAAC,gBAAgB,4CAAI,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAA,CAAA,GAAA,CAA3C,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA,CAAA,CAAC;QAE3F,IAAA,CAAA,UAAU,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAiB;QAEnC,IAAA,CAAA,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAwB;QAEtC,IAAA,CAAA,IAAI,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAa;AAEzB,QAAA,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;AACxB,YAAA,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;AACtB,QAAA,CAAC,oDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;YAC/B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC;AACpC,QAAA,CAAC,2DAAC;QAEF,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAGvD,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,IAAI;AACjD,IAAA;AAJA,IAAA,UAAU;+GAhCE,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,qLAErB,gBAAgB,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAKhB,gBAAgB,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAKhB,gBAAgB,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAnBjB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;AACpD,aAAA;AACD,SAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAkB0B,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAU,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCtE,2dAWA,4CDFW,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAad,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,CAAC,gBAAgB,CAAC,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EAEpC;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;AACpD,yBAAA;AACD,qBAAA,EAAA,QAAA,EAAA,2dAAA,EAAA;;sBAGA,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACN,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,qBAAA;;sBAGA,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACN,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,qBAAA;;sBAGA,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA;AACN,wBAAA,SAAS,EAAE,gBAAgB;AAC3B,qBAAA;kFAG0B,gBAAgB,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,IAAI,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA;sBAkBzF,WAAW;uBAAC,WAAW;;;MEtCZ,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,SAAA,EAPrB;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACnD,aAAA;AACD,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBF,8DAGA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FDea,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,UAAA,EACf,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,aAAA,EAEI,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EAEpC;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACnD,yBAAA;AACD,qBAAA,EAAA,QAAA,EAAA,8DAAA,EAAA;;;AEhBF;;AAEG;;;;"}
1
+ {"version":3,"file":"lucca-front-ng-comment.mjs","sources":["../../../packages/ng/comment/token.ts","../../../packages/ng/comment/comment/comment.component.ts","../../../packages/ng/comment/comment/comment.component.html","../../../packages/ng/comment/comment-block/comment-block.component.ts","../../../packages/ng/comment/comment-block/comment-block.component.html","../../../packages/ng/comment/comment-chat/comment-chat.component.ts","../../../packages/ng/comment/comment-chat/comment-chat.component.html","../../../packages/ng/comment/lucca-front-ng-comment.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { CommentBlockComponent } from './comment-block/comment-block.component';\nimport { CommentChatComponent } from './comment-chat/comment-chat.component';\n\nexport const COMMENT_BLOCK_INSTANCE = new InjectionToken<CommentBlockComponent>('COMMENT_BLOCK_INSTANCE');\nexport const COMMENT_CHAT_INSTANCE = new InjectionToken<CommentChatComponent>('COMMENT_CHAT_INSTANCE');\n","import { DatePipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject, input, LOCALE_ID, ViewEncapsulation } from '@angular/core';\nimport { PortalDirective } from '@lucca-front/ng/core';\nimport { LuUserPictureModule } from '@lucca-front/ng/user';\nimport { COMMENT_BLOCK_INSTANCE } from '../token';\n\n@Component({\n\tselector: 'lu-comment',\n\timports: [PortalDirective, DatePipe, LuUserPictureModule, NgTemplateOutlet],\n\ttemplateUrl: './comment.component.html',\n\tstyleUrl: './comment.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'commentWrapper-item',\n\t},\n})\nexport class CommentComponent {\n\t#locale = inject(LOCALE_ID);\n\t#intlDateTimeFormat = new Intl.DateTimeFormat(this.#locale, {\n\t\tweekday: 'long',\n\t\tyear: 'numeric',\n\t\tmonth: 'short',\n\t\tday: 'numeric',\n\t\thour: 'numeric',\n\t\tminute: 'numeric',\n\t});\n\n\t#parentBlock = inject(COMMENT_BLOCK_INSTANCE);\n\n\tnoAvatar = computed(() => this.#parentBlock.noAvatar());\n\n\tavatar = computed(() => this.#parentBlock.avatar());\n\n\tauthorName = computed(() => this.#parentBlock.authorName());\n\n\tsize = computed(() => this.#parentBlock.size());\n\n\tdate = input<Date>();\n\n\t/**\n\t * format given to the date pipe for display.\n\t *\n\t * See https://angular.dev/api/common/DatePipe#custom-format-options\n\t */\n\tdatePipeFormat = input<string | undefined>(undefined);\n\n\tcontent = input<string>();\n\n\tcontentIsHTML = computed(() => {\n\t\treturn /<\\/?[a-z][\\s\\S]*>/i.test(this.content());\n\t});\n\n\tdateDisplay = computed(() => {\n\t\tconst formatted = this.#intlDateTimeFormat.format(this.date());\n\t\treturn `${formatted[0].toUpperCase()}${formatted.slice(1)}`;\n\t});\n\n\trole = computed(() => {\n\t\treturn this.#parentBlock.isSingleComment() ? null : 'listitem';\n\t});\n\n\t@HostBinding('attr.role')\n\tget roleAttr(): string {\n\t\treturn this.role();\n\t}\n}\n","<div class=\"comment\" [class.mod-noAvatar]=\"noAvatar()\" [class.mod-S]=\"size() === 'S'\">\n\t<div class=\"comment-infos\">\n\t\t@if (!noAvatar()) {\n\t\t\t<div class=\"pr-u-displayContents\" aria-hidden=\"true\">\n\t\t\t\t<ng-container *ngTemplateOutlet=\"avatar()\" />\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"comment-infos-content\">\n\t\t\t<span class=\"comment-infos-name\"><ng-container *luPortal=\"authorName()\" /></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (datePipeFormat()) {\n\t\t\t\t\t{{ date() | date: datePipeFormat() }}\n\t\t\t\t} @else if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\" />\n\t\t\t\t} @else {\n\t\t\t\t\t{{ date() | date }}\n\t\t\t\t}\n\t\t\t</time>\n\t\t</div>\n\t</div>\n\t<blockquote class=\"comment-content\">\n\t\t@if (contentIsHTML()) {\n\t\t\t<div class=\"comment-content-textContainerOptional\" [innerHTML]=\"content()\"></div>\n\t\t} @else {\n\t\t\t<p class=\"comment-content-text\" [innerHTML]=\"content()\"></p>\n\t\t}\n\t</blockquote>\n</div>\n\n<ng-template #contentTpl>\n\t<ng-content />\n</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChildren, forwardRef, HostBinding, inject, Input, input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { PortalContent } from '@lucca-front/ng/core';\nimport { CommentComponent } from '../comment/comment.component';\nimport { COMMENT_BLOCK_INSTANCE, COMMENT_CHAT_INSTANCE } from '../token';\n\n@Component({\n\tselector: 'lu-comment-block',\n\timports: [NgTemplateOutlet],\n\ttemplateUrl: './comment-block.component.html',\n\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\n\tproviders: [\n\t\t{\n\t\t\tprovide: COMMENT_BLOCK_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => CommentBlockComponent),\n\t\t},\n\t],\n})\nexport class CommentBlockComponent {\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tcompact = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tsmall = false;\n\n\t@Input({\n\t\ttransform: booleanAttribute,\n\t})\n\tchatAnswer = false;\n\n\tcomments = contentChildren(CommentComponent, { read: CommentComponent, descendants: true });\n\n\tauthorName = input<PortalContent>();\n\n\tavatar = input<TemplateRef<unknown>>();\n\n\tsize = input<'S' | 'M'>();\n\n\tnoAvatar = computed(() => {\n\t\treturn !this.avatar();\n\t});\n\n\tisSingleComment = computed(() => {\n\t\treturn this.comments().length === 1;\n\t});\n\n\t#chatBlock = inject(COMMENT_CHAT_INSTANCE, { optional: true });\n\n\t@HostBinding('attr.role')\n\tpublic role = this.#chatBlock ? 'listitem' : null;\n}\n","<ng-template #content><ng-content /></ng-template>\n\n@if (isSingleComment()) {\n\t<div class=\"commentWrapper\" [class.mod-S]=\"small\" [class.mod-compact]=\"compact\" [class.mod-chatAnswer]=\"chatAnswer\">\n\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t</div>\n} @else {\n\t<ol class=\"commentWrapper\" [class.mod-S]=\"small\" [class.mod-compact]=\"compact\" [class.mod-chatAnswer]=\"chatAnswer\">\n\t\t<ng-container *ngTemplateOutlet=\"content\" />\n\t</ol>\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { COMMENT_CHAT_INSTANCE } from '../token';\n\n@Component({\n\tselector: 'lu-comment-chat',\n\timports: [],\n\ttemplateUrl: './comment-chat.component.html',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\n\tproviders: [\n\t\t{\n\t\t\tprovide: COMMENT_CHAT_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => CommentChatComponent),\n\t\t},\n\t],\n})\nexport class CommentChatComponent {}\n","<ol class=\"commentWrapperChat\">\n\t<ng-content />\n</ol>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,29 +1,29 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, booleanAttribute, ViewEncapsulation, Component } from '@angular/core';
2
+ import { input, booleanAttribute, computed, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
3
 
4
4
  class ContainerComponent {
5
5
  constructor() {
6
- this.center = input(false, ...(ngDevMode ? [{ debugName: "center", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
7
- this.overflow = input(false, ...(ngDevMode ? [{ debugName: "overflow", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
8
- this.max = input(null, ...(ngDevMode ? [{ debugName: "max" }] : []));
6
+ this.center = input(false, { transform: booleanAttribute });
7
+ this.overflow = input(false, { transform: booleanAttribute });
8
+ this.max = input(null);
9
+ this.classesConfig = computed(() => {
10
+ return {
11
+ ['mod-center']: this.center(),
12
+ ['mod-overflow']: this.overflow(),
13
+ [`mod-max${this.max()}`]: !!this.max(),
14
+ };
15
+ });
9
16
  }
10
- get classesConfig() {
11
- return {
12
- ['mod-center']: this.center(),
13
- ['mod-overflow']: this.overflow(),
14
- [`mod-max${this.max()}`]: !!this.max(),
15
- };
16
- }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.12", type: ContainerComponent, isStandalone: true, selector: "lu-container", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, overflow: { classPropertyName: "overflow", publicName: "overflow", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classesConfig" }, classAttribute: "container" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer components{.container{--components-container-minInlineSize: 0;--components-container-max-width: var(--commons-container-maxWidth);--components-container-padding: var(--commons-container-padding);padding:var(--commons-container-padding);min-inline-size:var(--components-container-minInlineSize);max-inline-size:var(--commons-container-maxWidth);margin-inline:var(--commons-container-marginInline);position:relative;display:block}}@layer mods{.container.mod-center{--commons-container-marginInline: auto}.container.mod-S{--commons-container-padding: var(--pr-t-spacings-200)}.container.mod-maxM{--commons-container-maxWidth: var(--commons-container-maxWidthM)}.container.mod-maxL{--commons-container-maxWidth: var(--commons-container-maxWidthL)}.container.mod-maxXL{--commons-container-maxWidth: var(--commons-container-maxWidthXL)}.container.mod-maxXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXL)}.container.mod-maxXXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXXL)}.container.mod-overflow{--components-container-minInlineSize: fit-content}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.0.2", type: ContainerComponent, isStandalone: true, selector: "lu-container", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, overflow: { classPropertyName: "overflow", publicName: "overflow", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classesConfig()" }, classAttribute: "container" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: ["@layer components{.container{--components-container-minInlineSize: 0;--components-container-max-width: var(--commons-container-maxWidth);--components-container-padding: var(--commons-container-padding);padding:var(--commons-container-padding);min-inline-size:var(--components-container-minInlineSize);max-inline-size:var(--commons-container-maxWidth);margin-inline:var(--commons-container-marginInline);position:relative;display:block}}@layer mods{.container.mod-center{--commons-container-marginInline: auto}.container.mod-S{--commons-container-padding: var(--pr-t-spacings-200)}.container.mod-maxM{--commons-container-maxWidth: var(--commons-container-maxWidthM)}.container.mod-maxL{--commons-container-maxWidth: var(--commons-container-maxWidthL)}.container.mod-maxXL{--commons-container-maxWidth: var(--commons-container-maxWidthXL)}.container.mod-maxXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXL)}.container.mod-maxXXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXXL)}.container.mod-overflow{--components-container-minInlineSize: fit-content}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ContainerComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ContainerComponent, decorators: [{
21
21
  type: Component,
22
- args: [{ selector: 'lu-container', standalone: true, template: '<ng-content />', encapsulation: ViewEncapsulation.None, host: {
22
+ args: [{ selector: 'lu-container', template: '<ng-content />', encapsulation: ViewEncapsulation.None, host: {
23
23
  class: 'container',
24
- '[class]': 'classesConfig',
25
- }, styles: ["@layer components{.container{--components-container-minInlineSize: 0;--components-container-max-width: var(--commons-container-maxWidth);--components-container-padding: var(--commons-container-padding);padding:var(--commons-container-padding);min-inline-size:var(--components-container-minInlineSize);max-inline-size:var(--commons-container-maxWidth);margin-inline:var(--commons-container-marginInline);position:relative;display:block}}@layer mods{.container.mod-center{--commons-container-marginInline: auto}.container.mod-S{--commons-container-padding: var(--pr-t-spacings-200)}.container.mod-maxM{--commons-container-maxWidth: var(--commons-container-maxWidthM)}.container.mod-maxL{--commons-container-maxWidth: var(--commons-container-maxWidthL)}.container.mod-maxXL{--commons-container-maxWidth: var(--commons-container-maxWidthXL)}.container.mod-maxXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXL)}.container.mod-maxXXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXXL)}.container.mod-overflow{--components-container-minInlineSize: fit-content}}\n"] }]
26
- }], propDecorators: { center: [{ type: i0.Input, args: [{ isSignal: true, alias: "center", required: false }] }], overflow: [{ type: i0.Input, args: [{ isSignal: true, alias: "overflow", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
24
+ '[class]': 'classesConfig()',
25
+ }, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["@layer components{.container{--components-container-minInlineSize: 0;--components-container-max-width: var(--commons-container-maxWidth);--components-container-padding: var(--commons-container-padding);padding:var(--commons-container-padding);min-inline-size:var(--components-container-minInlineSize);max-inline-size:var(--commons-container-maxWidth);margin-inline:var(--commons-container-marginInline);position:relative;display:block}}@layer mods{.container.mod-center{--commons-container-marginInline: auto}.container.mod-S{--commons-container-padding: var(--pr-t-spacings-200)}.container.mod-maxM{--commons-container-maxWidth: var(--commons-container-maxWidthM)}.container.mod-maxL{--commons-container-maxWidth: var(--commons-container-maxWidthL)}.container.mod-maxXL{--commons-container-maxWidth: var(--commons-container-maxWidthXL)}.container.mod-maxXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXL)}.container.mod-maxXXXL{--commons-container-maxWidth: var(--commons-container-maxWidthXXXL)}.container.mod-overflow{--components-container-minInlineSize: fit-content}}\n"] }]
26
+ }] });
27
27
 
28
28
  /**
29
29
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-container.mjs","sources":["../../../packages/ng/container/container.component.ts","../../../packages/ng/container/lucca-front-ng-container.ts"],"sourcesContent":["import { booleanAttribute, Component, input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-container',\n\tstandalone: true,\n\tstyleUrl: './container.component.scss',\n\ttemplate: '<ng-content />',\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'container',\n\t\t'[class]': 'classesConfig',\n\t},\n})\nexport class ContainerComponent {\n\tcenter = input(false, { transform: booleanAttribute });\n\toverflow = input(false, { transform: booleanAttribute });\n\tmax = input<null | 'M' | 'L' | 'XL' | 'XXL' | 'XXXL'>(null);\n\n\tget classesConfig() {\n\t\treturn {\n\t\t\t['mod-center']: this.center(),\n\t\t\t['mod-overflow']: this.overflow(),\n\t\t\t[`mod-max${this.max()}`]: !!this.max(),\n\t\t};\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAaa,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;AAYC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,0CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,4CAAI,SAAS,EAAE,gBAAgB,EAAA,CAAA,GAAA,CAA7B,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAC;AACxD,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAA2C,IAAI,+CAAC;AAS3D,IAAA;AAPA,IAAA,IAAI,aAAa,GAAA;QAChB,OAAO;AACN,YAAA,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7B,YAAA,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;SACtC;IACF;+GAXY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,mhBAPpB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wkCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAOd,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;+BACC,cAAc,EAAA,UAAA,EACZ,IAAI,EAAA,QAAA,EAEN,gBAAgB,iBACX,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACL,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,SAAS,EAAE,eAAe;AAC1B,qBAAA,EAAA,MAAA,EAAA,CAAA,wkCAAA,CAAA,EAAA;;;ACXF;;AAEG;;;;"}
1
+ {"version":3,"file":"lucca-front-ng-container.mjs","sources":["../../../packages/ng/container/container.component.ts","../../../packages/ng/container/lucca-front-ng-container.ts"],"sourcesContent":["import { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n\tselector: 'lu-container',\n\tstyleUrl: './container.component.scss',\n\ttemplate: '<ng-content />',\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'container',\n\t\t'[class]': 'classesConfig()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ContainerComponent {\n\tcenter = input(false, { transform: booleanAttribute });\n\toverflow = input(false, { transform: booleanAttribute });\n\tmax = input<null | 'M' | 'L' | 'XL' | 'XXL' | 'XXXL'>(null);\n\n\tclassesConfig = computed(() => {\n\t\treturn {\n\t\t\t['mod-center']: this.center(),\n\t\t\t['mod-overflow']: this.overflow(),\n\t\t\t[`mod-max${this.max()}`]: !!this.max(),\n\t\t};\n\t});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAaa,kBAAkB,CAAA;AAX/B,IAAA,WAAA,GAAA;QAYC,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QACtD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AACxD,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAA2C,IAAI,CAAC;AAE3D,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC7B,OAAO;AACN,gBAAA,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE;AAC7B,gBAAA,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,EAAE;AACjC,gBAAA,CAAC,CAAU,OAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;aACtC;AACF,SAAC,CAAC;AACF;8GAZY,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,qhBARpB,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wkCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAQd,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,YAEd,gBAAgB,EAAA,aAAA,EACX,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACL,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,SAAS,EAAE,iBAAiB;qBAC5B,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,MAAA,EAAA,CAAA,wkCAAA,CAAA,EAAA;;;ACXhD;;AAEG;;;;"}
@@ -65,10 +65,10 @@ class ALuCoreSelectApiDirective {
65
65
  this.destroy$.next();
66
66
  this.destroy$.complete();
67
67
  }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ALuCoreSelectApiDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
69
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.12", type: ALuCoreSelectApiDirective, isStandalone: true, ngImport: i0 }); }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ALuCoreSelectApiDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
69
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.2", type: ALuCoreSelectApiDirective, isStandalone: true, ngImport: i0 }); }
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: ALuCoreSelectApiDirective, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ALuCoreSelectApiDirective, decorators: [{
72
72
  type: Directive
73
73
  }] });
74
74
 
@@ -114,21 +114,20 @@ class LuCoreSelectApiV3Directive extends ALuCoreSelectApiDirective {
114
114
  },
115
115
  })), map((res) => res.data.items));
116
116
  }
117
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: LuCoreSelectApiV3Directive, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
118
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.12", type: LuCoreSelectApiV3Directive, isStandalone: true, selector: "lu-simple-select[apiV3],lu-multi-select[apiV3]", inputs: { apiV3: "apiV3", fields: "fields", orderBy: "orderBy", filters: "filters" }, providers: [
117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuCoreSelectApiV3Directive, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
118
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.0.2", type: LuCoreSelectApiV3Directive, isStandalone: true, selector: "lu-simple-select[apiV3],lu-multi-select[apiV3]", inputs: { apiV3: "apiV3", fields: "fields", orderBy: "orderBy", filters: "filters" }, providers: [
119
119
  {
120
120
  provide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,
121
121
  useExisting: forwardRef(() => LuCoreSelectApiV3Directive),
122
122
  },
123
123
  ], usesInheritance: true, ngImport: i0 }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: LuCoreSelectApiV3Directive, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuCoreSelectApiV3Directive, decorators: [{
126
126
  type: Directive,
127
127
  args: [{
128
128
  // The attribute is already prefixed with "lu-simple-select"
129
129
  // eslint-disable-next-line @angular-eslint/directive-selector
130
130
  selector: 'lu-simple-select[apiV3],lu-multi-select[apiV3]',
131
- standalone: true,
132
131
  providers: [
133
132
  {
134
133
  provide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,
@@ -149,10 +148,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
149
148
  class LuCoreSelectApiV4Directive extends ALuCoreSelectApiDirective {
150
149
  constructor() {
151
150
  super(...arguments);
152
- this.apiV4 = model.required(...(ngDevMode ? [{ debugName: "apiV4" }] : []));
153
- this.sort = input('+name', ...(ngDevMode ? [{ debugName: "sort" }] : []));
154
- this.filters = input({}, ...(ngDevMode ? [{ debugName: "filters" }] : []));
155
- this.searchDelimiter = input(' ', ...(ngDevMode ? [{ debugName: "searchDelimiter" }] : []));
151
+ this.apiV4 = model.required();
152
+ this.sort = input('+name');
153
+ this.filters = input({});
154
+ this.searchDelimiter = input(' ');
156
155
  this.httpClient = inject(HttpClient);
157
156
  this.clue = toSignal(this.clue$);
158
157
  this.params$ = toObservable(computed(() => {
@@ -184,21 +183,20 @@ class LuCoreSelectApiV4Directive extends ALuCoreSelectApiDirective {
184
183
  })
185
184
  .pipe(map((res) => (Array.isArray(res) ? res : res?.items) ?? []));
186
185
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: LuCoreSelectApiV4Directive, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
188
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.12", type: LuCoreSelectApiV4Directive, isStandalone: true, selector: "lu-simple-select[apiV4],lu-multi-select[apiV4]", inputs: { apiV4: { classPropertyName: "apiV4", publicName: "apiV4", isSignal: true, isRequired: true, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, searchDelimiter: { classPropertyName: "searchDelimiter", publicName: "searchDelimiter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apiV4: "apiV4Change" }, providers: [
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuCoreSelectApiV4Directive, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
187
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.2", type: LuCoreSelectApiV4Directive, isStandalone: true, selector: "lu-simple-select[apiV4],lu-multi-select[apiV4]", inputs: { apiV4: { classPropertyName: "apiV4", publicName: "apiV4", isSignal: true, isRequired: true, transformFunction: null }, sort: { classPropertyName: "sort", publicName: "sort", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, searchDelimiter: { classPropertyName: "searchDelimiter", publicName: "searchDelimiter", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { apiV4: "apiV4Change" }, providers: [
189
188
  {
190
189
  provide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,
191
190
  useExisting: forwardRef(() => LuCoreSelectApiV4Directive),
192
191
  },
193
192
  ], usesInheritance: true, ngImport: i0 }); }
194
193
  }
195
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: LuCoreSelectApiV4Directive, decorators: [{
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuCoreSelectApiV4Directive, decorators: [{
196
195
  type: Directive,
197
196
  args: [{
198
197
  // The attribute is already prefixed with "lu-simple-select"
199
198
  // eslint-disable-next-line @angular-eslint/directive-selector
200
199
  selector: 'lu-simple-select[apiV4],lu-multi-select[apiV4]',
201
- standalone: true,
202
200
  providers: [
203
201
  {
204
202
  provide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,
@@ -206,7 +204,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
206
204
  },
207
205
  ],
208
206
  }]
209
- }], propDecorators: { apiV4: [{ type: i0.Input, args: [{ isSignal: true, alias: "apiV4", required: true }] }, { type: i0.Output, args: ["apiV4Change"] }], sort: [{ type: i0.Input, args: [{ isSignal: true, alias: "sort", required: false }] }], filters: [{ type: i0.Input, args: [{ isSignal: true, alias: "filters", required: false }] }], searchDelimiter: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchDelimiter", required: false }] }] } });
207
+ }] });
210
208
 
211
209
  /**
212
210
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-core-select-api.mjs","sources":["../../../packages/ng/core-select/api/api.directive.ts","../../../packages/ng/core-select/api/api-v3.directive.ts","../../../packages/ng/core-select/api/api-v4.directive.ts","../../../packages/ng/core-select/api/lucca-front-ng-core-select-api.ts"],"sourcesContent":["import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { ALuSelectInputComponent, coreSelectDefaultOptionComparer, coreSelectDefaultOptionKey, LuOptionComparer } from '@lucca-front/ng/core-select';\nimport { catchError, combineLatest, concatMap, debounceTime, distinctUntilChanged, map, merge, Observable, of, pairwise, scan, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nexport const LU_SELECT_MAGIC_PAGE_SIZE = 20;\nexport const MAGIC_DEBOUNCE_DURATION = 250;\n\n@Directive()\nexport abstract class ALuCoreSelectApiDirective<TOption, TParams = Record<string, string | number | boolean>> implements OnDestroy, OnInit {\n\tprotected destroy$ = new Subject<void>();\n\tprotected pageSize = LU_SELECT_MAGIC_PAGE_SIZE;\n\tprotected debounceDuration = MAGIC_DEBOUNCE_DURATION;\n\n\tpublic select = inject<ALuSelectInputComponent<TOption, unknown>>(ALuSelectInputComponent);\n\n\tprotected page$ = this.select.nextPage.pipe(\n\t\tscan((page) => page + 1, 0),\n\t\tstartWith(0),\n\t);\n\n\tprotected clue$ = this.select.clueChange.pipe(debounceTime(this.debounceDuration), startWith(''));\n\n\t/**\n\t * Create an object that will be used as params for the api call\n\t */\n\tprotected abstract params$: Observable<TParams>;\n\n\t/**\n\t * Compare two options to know if they are the same. For example, compare by id or by JSON\n\t */\n\tprotected optionComparer: LuOptionComparer<TOption> = (a, b) => this.optionKey(a) === this.optionKey(b);\n\n\t/**\n\t * Return a unique key to identify the option in for-of loops\n\t */\n\tprotected abstract optionKey: (option: TOption) => unknown;\n\n\t/**\n\t * Return the options for the given params and page\n\t */\n\tprotected abstract getOptions(params: TParams, page: number): Observable<TOption[]>;\n\n\tpublic ngOnInit(): void {\n\t\tif (this.select.optionComparer === coreSelectDefaultOptionComparer) {\n\t\t\tthis.select.optionComparer = this.optionComparer;\n\t\t}\n\n\t\tif (this.select.optionKey === coreSelectDefaultOptionKey) {\n\t\t\tthis.select.optionKey = this.optionKey;\n\t\t}\n\n\t\tthis.buildOptions()\n\t\t\t.pipe(takeUntil(this.destroy$))\n\t\t\t.subscribe((options) => (this.select.options = options));\n\t}\n\n\tprotected buildOptions(): Observable<TOption[]> {\n\t\t// Prevent a double call to getOptions when the clue is changed while the panel is closed\n\t\tconst clueIsPendingDebounce$ = merge(this.select.clueChange.pipe(map(() => true)), this.clue$.pipe(map(() => false))).pipe(distinctUntilChanged());\n\t\tconst isOpen$ = combineLatest([this.select.isPanelOpen$, clueIsPendingDebounce$]).pipe(\n\t\t\tdebounceTime(0),\n\t\t\tstartWith([false, false]),\n\t\t\tpairwise(),\n\t\t\ttap(([[wasOpen], [isOpen, clueIsPendingDebounce]]) => {\n\t\t\t\t// Start the loader as soon as the panel is opened to avoid a short display of the \"no result\" message\n\t\t\t\tif (!wasOpen && isOpen && clueIsPendingDebounce) {\n\t\t\t\t\tthis.select.loading = true;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tmap(([[wasOpen], [isOpen, clueIsPendingDebounce]]) => (isOpen && !wasOpen ? !clueIsPendingDebounce : isOpen)),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\n\t\treturn combineLatest([this.params$, isOpen$]).pipe(\n\t\t\tswitchMap(([params, isOpened]) => {\n\t\t\t\tconst hasNextPage$ = new Subject<void>();\n\n\t\t\t\treturn isOpened\n\t\t\t\t\t? this.page$.pipe(\n\t\t\t\t\t\t\ttakeUntil(hasNextPage$),\n\t\t\t\t\t\t\tconcatMap((page) => this.getOptionsPage(params, page).pipe(map(({ items, isLastPage }) => ({ items, isLastPage, page })))),\n\t\t\t\t\t\t\ttap(({ isLastPage }) => {\n\t\t\t\t\t\t\t\tif (isLastPage) {\n\t\t\t\t\t\t\t\t\t// `getOptionsPage` can emit multiple times (for example, when adding homonyms additional information),\n\t\t\t\t\t\t\t\t\t// so we cannot use takeWhile here.\n\t\t\t\t\t\t\t\t\thasNextPage$.next();\n\t\t\t\t\t\t\t\t\thasNextPage$.complete();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tscan(\n\t\t\t\t\t\t\t\t(acc, { items, page }) => {\n\t\t\t\t\t\t\t\t\tacc[page] = items;\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{} as Record<number, TOption[]>,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tmap((pages) => Object.values(pages).flat()),\n\t\t\t\t\t\t)\n\t\t\t\t\t: of([] as TOption[]);\n\t\t\t}),\n\t\t);\n\t}\n\n\tprotected getOptionsPage(params: TParams, page: number): Observable<{ items: TOption[]; isLastPage: boolean }> {\n\t\tthis.select.loading = true;\n\n\t\treturn this.getOptions(params, page).pipe(\n\t\t\tcatchError(() => of([] as TOption[])),\n\t\t\ttap(() => (this.select.loading = false)),\n\t\t\tmap((items) => ({ items, isLastPage: items.length < this.pageSize })),\n\t\t);\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis.destroy$.next();\n\t\tthis.destroy$.complete();\n\t}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, forwardRef, inject, Input } from '@angular/core';\nimport { ILuApiCollectionResponse, ILuApiItem } from '@lucca-front/ng/api';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider } from '@lucca-front/ng/core-select';\nimport { BehaviorSubject, combineLatest, debounceTime, map, Observable, ReplaySubject, switchMap, take } from 'rxjs';\nimport { ALuCoreSelectApiDirective } from './api.directive';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[apiV3],lu-multi-select[apiV3]',\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectApiV3Directive),\n\t\t},\n\t],\n})\nexport class LuCoreSelectApiV3Directive<T extends ILuApiItem> extends ALuCoreSelectApiDirective<T> implements CoreSelectApiTotalCountProvider {\n\t@Input()\n\tpublic set apiV3(value: string) {\n\t\tthis.url$.next(value);\n\t}\n\n\t@Input()\n\tpublic set fields(value: string) {\n\t\tthis.fields$.next(value);\n\t}\n\n\t@Input()\n\tpublic set orderBy(value: string | null) {\n\t\tthis.orderBy$.next(value);\n\t}\n\n\t@Input()\n\tpublic set filters(value: Record<string, string | number | boolean>) {\n\t\tthis.filters$.next(value);\n\t}\n\n\tprotected url$ = new ReplaySubject<string>(1);\n\tprotected fields$ = new BehaviorSubject<string>('id,name');\n\tprotected orderBy$ = new BehaviorSubject<string | null>('name,asc');\n\tprotected filters$ = new BehaviorSubject<Record<string, string | number | boolean>>({});\n\n\tprotected httpClient = inject(HttpClient);\n\n\tprotected override params$ = combineLatest([this.fields$, this.filters$, this.orderBy$, this.clue$]).pipe(\n\t\tmap(([fields, filters, orderBy, clue]) => ({\n\t\t\t...filters,\n\t\t\t...(fields ? { fields } : {}),\n\t\t\t...(orderBy ? { orderBy } : {}),\n\t\t\t...(clue ? { name: `like,${clue}` } : {}),\n\t\t})),\n\t);\n\n\tpublic totalCount$ = combineLatest([this.url$, this.filters$]).pipe(\n\t\tdebounceTime(250),\n\t\tswitchMap(([url, params]) =>\n\t\t\tthis.httpClient.get<{ data: { count: number } }>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tfields: 'collection.count',\n\t\t\t\t},\n\t\t\t}),\n\t\t),\n\t\tmap((res) => res.data?.count ?? 0),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.url$.pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap((url) =>\n\t\t\t\tthis.httpClient.get<ILuApiCollectionResponse<T>>(url, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\t...params,\n\t\t\t\t\t\tpaging: `${page * this.pageSize},${this.pageSize}`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tmap((res) => res.data.items),\n\t\t);\n\t}\n\n\tprotected override optionKey = (option: T) => option.id;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { computed, Directive, forwardRef, inject, input, model } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ILuApiItem } from '@lucca-front/ng/api';\nimport { applySearchDelimiter, CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider } from '@lucca-front/ng/core-select';\nimport { debounceTime, map, Observable, switchMap } from 'rxjs';\nimport { ALuCoreSelectApiDirective } from './api.directive';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[apiV4],lu-multi-select[apiV4]',\n\tstandalone: true,\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectApiV4Directive),\n\t\t},\n\t],\n})\nexport class LuCoreSelectApiV4Directive<T extends ILuApiItem> extends ALuCoreSelectApiDirective<T> implements CoreSelectApiTotalCountProvider {\n\tapiV4 = model.required<string>();\n\tsort = input<string | null>('+name');\n\tfilters = input<Record<string, string | number | boolean>>({});\n\tsearchDelimiter = input<string>(' ');\n\n\tprotected httpClient = inject(HttpClient);\n\n\tprotected clue = toSignal(this.clue$);\n\n\tprotected override params$: Observable<Record<string, string | number | boolean>> = toObservable(\n\t\tcomputed(() => {\n\t\t\tconst sort = this.sort();\n\t\t\tconst clue = this.clue();\n\t\t\tconst searchDelimiter = this.searchDelimiter();\n\t\t\treturn {\n\t\t\t\t...this.filters(),\n\t\t\t\t...(sort ? { sort } : {}),\n\t\t\t\t...(clue ? { search: applySearchDelimiter(clue, searchDelimiter) } : {}),\n\t\t\t};\n\t\t}),\n\t);\n\n\tpublic totalCount$ = toObservable(computed(() => ({ url: this.apiV4(), filters: this.filters() }))).pipe(\n\t\tdebounceTime(250),\n\t\tswitchMap(({ url, filters }) =>\n\t\t\tthis.httpClient.get<{ count: number }>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\t...filters,\n\t\t\t\t\t['fields.root']: 'count',\n\t\t\t\t},\n\t\t\t}),\n\t\t),\n\t\tmap((res) => res?.count ?? 0),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.httpClient\n\t\t\t.get<T[] | { items: T[] }>(this.apiV4(), {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tpage: page + 1,\n\t\t\t\t\tlimit: this.pageSize,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map((res) => (Array.isArray(res) ? res : res?.items) ?? []));\n\t}\n\n\tprotected override optionKey = (option: T) => option.id;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-core-select-api.mjs","sources":["../../../packages/ng/core-select/api/api.directive.ts","../../../packages/ng/core-select/api/api-v3.directive.ts","../../../packages/ng/core-select/api/api-v4.directive.ts","../../../packages/ng/core-select/api/lucca-front-ng-core-select-api.ts"],"sourcesContent":["import { Directive, inject, OnDestroy, OnInit } from '@angular/core';\nimport { ALuSelectInputComponent, coreSelectDefaultOptionComparer, coreSelectDefaultOptionKey, LuOptionComparer } from '@lucca-front/ng/core-select';\nimport { catchError, combineLatest, concatMap, debounceTime, distinctUntilChanged, map, merge, Observable, of, pairwise, scan, startWith, Subject, switchMap, takeUntil, tap } from 'rxjs';\n\nexport const LU_SELECT_MAGIC_PAGE_SIZE = 20;\nexport const MAGIC_DEBOUNCE_DURATION = 250;\n\n@Directive()\nexport abstract class ALuCoreSelectApiDirective<TOption, TParams = Record<string, string | number | boolean>> implements OnDestroy, OnInit {\n\tprotected destroy$ = new Subject<void>();\n\tprotected pageSize = LU_SELECT_MAGIC_PAGE_SIZE;\n\tprotected debounceDuration = MAGIC_DEBOUNCE_DURATION;\n\n\tpublic select = inject<ALuSelectInputComponent<TOption, unknown>>(ALuSelectInputComponent);\n\n\tprotected page$ = this.select.nextPage.pipe(\n\t\tscan((page) => page + 1, 0),\n\t\tstartWith(0),\n\t);\n\n\tprotected clue$ = this.select.clueChange.pipe(debounceTime(this.debounceDuration), startWith(''));\n\n\t/**\n\t * Create an object that will be used as params for the api call\n\t */\n\tprotected abstract params$: Observable<TParams>;\n\n\t/**\n\t * Compare two options to know if they are the same. For example, compare by id or by JSON\n\t */\n\tprotected optionComparer: LuOptionComparer<TOption> = (a, b) => this.optionKey(a) === this.optionKey(b);\n\n\t/**\n\t * Return a unique key to identify the option in for-of loops\n\t */\n\tprotected abstract optionKey: (option: TOption) => unknown;\n\n\t/**\n\t * Return the options for the given params and page\n\t */\n\tprotected abstract getOptions(params: TParams, page: number): Observable<TOption[]>;\n\n\tpublic ngOnInit(): void {\n\t\tif (this.select.optionComparer === coreSelectDefaultOptionComparer) {\n\t\t\tthis.select.optionComparer = this.optionComparer;\n\t\t}\n\n\t\tif (this.select.optionKey === coreSelectDefaultOptionKey) {\n\t\t\tthis.select.optionKey = this.optionKey;\n\t\t}\n\n\t\tthis.buildOptions()\n\t\t\t.pipe(takeUntil(this.destroy$))\n\t\t\t.subscribe((options) => (this.select.options = options));\n\t}\n\n\tprotected buildOptions(): Observable<TOption[]> {\n\t\t// Prevent a double call to getOptions when the clue is changed while the panel is closed\n\t\tconst clueIsPendingDebounce$ = merge(this.select.clueChange.pipe(map(() => true)), this.clue$.pipe(map(() => false))).pipe(distinctUntilChanged());\n\t\tconst isOpen$ = combineLatest([this.select.isPanelOpen$, clueIsPendingDebounce$]).pipe(\n\t\t\tdebounceTime(0),\n\t\t\tstartWith([false, false]),\n\t\t\tpairwise(),\n\t\t\ttap(([[wasOpen], [isOpen, clueIsPendingDebounce]]) => {\n\t\t\t\t// Start the loader as soon as the panel is opened to avoid a short display of the \"no result\" message\n\t\t\t\tif (!wasOpen && isOpen && clueIsPendingDebounce) {\n\t\t\t\t\tthis.select.loading = true;\n\t\t\t\t}\n\t\t\t}),\n\t\t\tmap(([[wasOpen], [isOpen, clueIsPendingDebounce]]) => (isOpen && !wasOpen ? !clueIsPendingDebounce : isOpen)),\n\t\t\tdistinctUntilChanged(),\n\t\t);\n\n\t\treturn combineLatest([this.params$, isOpen$]).pipe(\n\t\t\tswitchMap(([params, isOpened]) => {\n\t\t\t\tconst hasNextPage$ = new Subject<void>();\n\n\t\t\t\treturn isOpened\n\t\t\t\t\t? this.page$.pipe(\n\t\t\t\t\t\t\ttakeUntil(hasNextPage$),\n\t\t\t\t\t\t\tconcatMap((page) => this.getOptionsPage(params, page).pipe(map(({ items, isLastPage }) => ({ items, isLastPage, page })))),\n\t\t\t\t\t\t\ttap(({ isLastPage }) => {\n\t\t\t\t\t\t\t\tif (isLastPage) {\n\t\t\t\t\t\t\t\t\t// `getOptionsPage` can emit multiple times (for example, when adding homonyms additional information),\n\t\t\t\t\t\t\t\t\t// so we cannot use takeWhile here.\n\t\t\t\t\t\t\t\t\thasNextPage$.next();\n\t\t\t\t\t\t\t\t\thasNextPage$.complete();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\tscan(\n\t\t\t\t\t\t\t\t(acc, { items, page }) => {\n\t\t\t\t\t\t\t\t\tacc[page] = items;\n\t\t\t\t\t\t\t\t\treturn acc;\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{} as Record<number, TOption[]>,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tmap((pages) => Object.values(pages).flat()),\n\t\t\t\t\t\t)\n\t\t\t\t\t: of([] as TOption[]);\n\t\t\t}),\n\t\t);\n\t}\n\n\tprotected getOptionsPage(params: TParams, page: number): Observable<{ items: TOption[]; isLastPage: boolean }> {\n\t\tthis.select.loading = true;\n\n\t\treturn this.getOptions(params, page).pipe(\n\t\t\tcatchError(() => of([] as TOption[])),\n\t\t\ttap(() => (this.select.loading = false)),\n\t\t\tmap((items) => ({ items, isLastPage: items.length < this.pageSize })),\n\t\t);\n\t}\n\n\tpublic ngOnDestroy(): void {\n\t\tthis.destroy$.next();\n\t\tthis.destroy$.complete();\n\t}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, forwardRef, inject, Input } from '@angular/core';\nimport { ILuApiCollectionResponse, ILuApiItem } from '@lucca-front/ng/api';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider } from '@lucca-front/ng/core-select';\nimport { BehaviorSubject, combineLatest, debounceTime, map, Observable, ReplaySubject, switchMap, take } from 'rxjs';\nimport { ALuCoreSelectApiDirective } from './api.directive';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[apiV3],lu-multi-select[apiV3]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectApiV3Directive),\n\t\t},\n\t],\n})\nexport class LuCoreSelectApiV3Directive<T extends ILuApiItem> extends ALuCoreSelectApiDirective<T> implements CoreSelectApiTotalCountProvider {\n\t@Input()\n\tpublic set apiV3(value: string) {\n\t\tthis.url$.next(value);\n\t}\n\n\t@Input()\n\tpublic set fields(value: string) {\n\t\tthis.fields$.next(value);\n\t}\n\n\t@Input()\n\tpublic set orderBy(value: string | null) {\n\t\tthis.orderBy$.next(value);\n\t}\n\n\t@Input()\n\tpublic set filters(value: Record<string, string | number | boolean>) {\n\t\tthis.filters$.next(value);\n\t}\n\n\tprotected url$ = new ReplaySubject<string>(1);\n\tprotected fields$ = new BehaviorSubject<string>('id,name');\n\tprotected orderBy$ = new BehaviorSubject<string | null>('name,asc');\n\tprotected filters$ = new BehaviorSubject<Record<string, string | number | boolean>>({});\n\n\tprotected httpClient = inject(HttpClient);\n\n\tprotected override params$ = combineLatest([this.fields$, this.filters$, this.orderBy$, this.clue$]).pipe(\n\t\tmap(([fields, filters, orderBy, clue]) => ({\n\t\t\t...filters,\n\t\t\t...(fields ? { fields } : {}),\n\t\t\t...(orderBy ? { orderBy } : {}),\n\t\t\t...(clue ? { name: `like,${clue}` } : {}),\n\t\t})),\n\t);\n\n\tpublic totalCount$ = combineLatest([this.url$, this.filters$]).pipe(\n\t\tdebounceTime(250),\n\t\tswitchMap(([url, params]) =>\n\t\t\tthis.httpClient.get<{ data: { count: number } }>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tfields: 'collection.count',\n\t\t\t\t},\n\t\t\t}),\n\t\t),\n\t\tmap((res) => res.data?.count ?? 0),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.url$.pipe(\n\t\t\ttake(1),\n\t\t\tswitchMap((url) =>\n\t\t\t\tthis.httpClient.get<ILuApiCollectionResponse<T>>(url, {\n\t\t\t\t\tparams: {\n\t\t\t\t\t\t...params,\n\t\t\t\t\t\tpaging: `${page * this.pageSize},${this.pageSize}`,\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t),\n\t\t\tmap((res) => res.data.items),\n\t\t);\n\t}\n\n\tprotected override optionKey = (option: T) => option.id;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { computed, Directive, forwardRef, inject, input, model } from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ILuApiItem } from '@lucca-front/ng/api';\nimport { applySearchDelimiter, CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider } from '@lucca-front/ng/core-select';\nimport { debounceTime, map, Observable, switchMap } from 'rxjs';\nimport { ALuCoreSelectApiDirective } from './api.directive';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[apiV4],lu-multi-select[apiV4]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectApiV4Directive),\n\t\t},\n\t],\n})\nexport class LuCoreSelectApiV4Directive<T extends ILuApiItem> extends ALuCoreSelectApiDirective<T> implements CoreSelectApiTotalCountProvider {\n\tapiV4 = model.required<string>();\n\tsort = input<string | null>('+name');\n\tfilters = input<Record<string, string | number | boolean>>({});\n\tsearchDelimiter = input<string>(' ');\n\n\tprotected httpClient = inject(HttpClient);\n\n\tprotected clue = toSignal(this.clue$);\n\n\tprotected override params$: Observable<Record<string, string | number | boolean>> = toObservable(\n\t\tcomputed(() => {\n\t\t\tconst sort = this.sort();\n\t\t\tconst clue = this.clue();\n\t\t\tconst searchDelimiter = this.searchDelimiter();\n\t\t\treturn {\n\t\t\t\t...this.filters(),\n\t\t\t\t...(sort ? { sort } : {}),\n\t\t\t\t...(clue ? { search: applySearchDelimiter(clue, searchDelimiter) } : {}),\n\t\t\t};\n\t\t}),\n\t);\n\n\tpublic totalCount$ = toObservable(computed(() => ({ url: this.apiV4(), filters: this.filters() }))).pipe(\n\t\tdebounceTime(250),\n\t\tswitchMap(({ url, filters }) =>\n\t\t\tthis.httpClient.get<{ count: number }>(url, {\n\t\t\t\tparams: {\n\t\t\t\t\t...filters,\n\t\t\t\t\t['fields.root']: 'count',\n\t\t\t\t},\n\t\t\t}),\n\t\t),\n\t\tmap((res) => res?.count ?? 0),\n\t);\n\n\tprotected override getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.httpClient\n\t\t\t.get<T[] | { items: T[] }>(this.apiV4(), {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tpage: page + 1,\n\t\t\t\t\tlimit: this.pageSize,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map((res) => (Array.isArray(res) ? res : res?.items) ?? []));\n\t}\n\n\tprotected override optionKey = (option: T) => option.id;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}