@lucca-front/ng 20.3.0-rc.1 → 20.3.0-rc.2

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 (124) hide show
  1. package/button/index.d.ts +3 -4
  2. package/callout/index.d.ts +10 -2
  3. package/comment/index.d.ts +7 -1
  4. package/core-select/department/index.d.ts +1 -0
  5. package/core-select/index.d.ts +4 -2
  6. package/core-select/user/index.d.ts +1 -0
  7. package/date2/index.d.ts +8 -3
  8. package/dialog/index.d.ts +2 -2
  9. package/fesm2022/lucca-front-ng-api.mjs +6 -6
  10. package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
  11. package/fesm2022/lucca-front-ng-box.mjs +2 -2
  12. package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
  13. package/fesm2022/lucca-front-ng-button.mjs +9 -13
  14. package/fesm2022/lucca-front-ng-button.mjs.map +1 -1
  15. package/fesm2022/lucca-front-ng-callout.mjs +35 -12
  16. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-comment.mjs +10 -4
  18. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  19. package/fesm2022/lucca-front-ng-core-select-department.mjs +10 -1
  20. package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
  21. package/fesm2022/lucca-front-ng-core-select-user.mjs +1 -0
  22. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-core-select.mjs +5 -1
  24. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-date.mjs +4 -4
  26. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-date2.mjs +44 -12
  28. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-department.mjs +2 -2
  30. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-dialog.mjs +5 -5
  32. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-empty-state.mjs +4 -4
  34. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-establishment.mjs +4 -4
  36. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-file-upload.mjs +6 -6
  38. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-filter-pills.mjs +4 -4
  40. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-footer.mjs +2 -2
  42. package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-form-field.mjs +10 -6
  44. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-formly.mjs +30 -30
  46. package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +6 -2
  48. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +4 -0
  50. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map +1 -1
  51. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +42 -0
  52. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -0
  53. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +40 -31
  54. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  55. package/fesm2022/lucca-front-ng-forms.mjs +19 -26
  56. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  57. package/fesm2022/lucca-front-ng-gauge.mjs +50 -0
  58. package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -0
  59. package/fesm2022/lucca-front-ng-icon.mjs +4 -3
  60. package/fesm2022/lucca-front-ng-icon.mjs.map +1 -1
  61. package/fesm2022/lucca-front-ng-inline-message.mjs +2 -2
  62. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  63. package/fesm2022/lucca-front-ng-listbox.mjs +1 -1
  64. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  65. package/fesm2022/lucca-front-ng-listing.mjs +3 -3
  66. package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
  67. package/fesm2022/lucca-front-ng-mobile-push.mjs +1 -1
  68. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  69. package/fesm2022/lucca-front-ng-modal.mjs +6 -6
  70. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  71. package/fesm2022/lucca-front-ng-multi-select.mjs +27 -13
  72. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  73. package/fesm2022/lucca-front-ng-option.mjs +8 -8
  74. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  75. package/fesm2022/lucca-front-ng-page-header.mjs +2 -2
  76. package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
  77. package/fesm2022/lucca-front-ng-pagination.mjs +3 -3
  78. package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
  79. package/fesm2022/lucca-front-ng-plg-push.mjs +1 -1
  80. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  81. package/fesm2022/lucca-front-ng-popover.mjs +5 -5
  82. package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
  83. package/fesm2022/lucca-front-ng-popover2.mjs +2 -2
  84. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  85. package/fesm2022/lucca-front-ng-read-more.mjs +2 -2
  86. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  87. package/fesm2022/lucca-front-ng-segmentedControl.mjs +72 -0
  88. package/fesm2022/lucca-front-ng-segmentedControl.mjs.map +1 -0
  89. package/fesm2022/lucca-front-ng-segmentedControlTabs.mjs +99 -0
  90. package/fesm2022/lucca-front-ng-segmentedControlTabs.mjs.map +1 -0
  91. package/fesm2022/lucca-front-ng-select.mjs +2 -2
  92. package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
  93. package/fesm2022/lucca-front-ng-simple-select.mjs +4 -4
  94. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  95. package/fesm2022/lucca-front-ng-skeleton.mjs +12 -12
  96. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  97. package/fesm2022/lucca-front-ng-tag.mjs +8 -5
  98. package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
  99. package/fesm2022/lucca-front-ng-toast.mjs +2 -2
  100. package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
  101. package/fesm2022/lucca-front-ng-tree-select.mjs +3 -2
  102. package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
  103. package/fesm2022/lucca-front-ng-user-popover.mjs +77 -74
  104. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  105. package/fesm2022/lucca-front-ng-user.mjs +16 -11
  106. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  107. package/form-field/index.d.ts +6 -2
  108. package/forms/index.d.ts +5 -2
  109. package/forms/rich-text-input/formatters/html/index.d.ts +3 -2
  110. package/forms/rich-text-input/formatters/markdown/index.d.ts +1 -0
  111. package/forms/rich-text-input/formatters/plain-text/index.d.ts +15 -0
  112. package/forms/rich-text-input/index.d.ts +9 -6
  113. package/gauge/index.d.ts +28 -0
  114. package/icon/index.d.ts +3 -2
  115. package/package.json +36 -15
  116. package/schematics/class-prefix/index.js +11 -0
  117. package/schematics/lib/angular-component-ast.js +11 -1
  118. package/segmentedControl/index.d.ts +28 -0
  119. package/segmentedControlTabs/index.d.ts +34 -0
  120. package/src/components/_picker.scss +1 -2
  121. package/tag/index.d.ts +6 -4
  122. package/tree-select/index.d.ts +2 -1
  123. package/user/index.d.ts +2 -1
  124. package/user-popover/index.d.ts +2 -0
@@ -24,6 +24,12 @@ class CommentComponent {
24
24
  this.authorName = computed(() => this.#parentBlock.authorName());
25
25
  this.size = computed(() => this.#parentBlock.size());
26
26
  this.date = input();
27
+ /**
28
+ * format given to the date pipe for display.
29
+ *
30
+ * See https://angular.dev/api/common/DatePipe#custom-format-options
31
+ */
32
+ this.datePipeFormat = input(undefined);
27
33
  this.content = input();
28
34
  this.contentIsHTML = computed(() => {
29
35
  return /<\/?[a-z][\s\S]*>/i.test(this.content());
@@ -43,13 +49,13 @@ class CommentComponent {
43
49
  return this.role();
44
50
  }
45
51
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- 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 }, 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()\"></ng-container>\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()\"></ng-container></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\"></ng-container>\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 reset,base,components,mods,states,product,utils;@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 }); }
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 reset,base,components,mods,states,product,utils;@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 }); }
47
53
  }
48
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentComponent, decorators: [{
49
55
  type: Component,
50
56
  args: [{ selector: 'lu-comment', standalone: true, imports: [PortalDirective, DatePipe, LuUserPictureModule, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
51
57
  class: 'commentWrapper-item',
52
- }, 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()\"></ng-container>\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()\"></ng-container></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\"></ng-container>\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 reset,base,components,mods,states,product,utils;@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"] }]
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 reset,base,components,mods,states,product,utils;@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"] }]
53
59
  }], propDecorators: { roleAttr: [{
54
60
  type: HostBinding,
55
61
  args: ['attr.role']
@@ -80,7 +86,7 @@ class CommentBlockComponent {
80
86
  provide: COMMENT_BLOCK_INSTANCE,
81
87
  useExisting: forwardRef(() => CommentBlockComponent),
82
88
  },
83
- ], 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\"></ng-container>\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\"></ng-container>\n\t</ol>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
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 }); }
84
90
  }
85
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: CommentBlockComponent, decorators: [{
86
92
  type: Component,
@@ -89,7 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImpor
89
95
  provide: COMMENT_BLOCK_INSTANCE,
90
96
  useExisting: forwardRef(() => CommentBlockComponent),
91
97
  },
92
- ], 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\"></ng-container>\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\"></ng-container>\n\t</ol>\n}\n" }]
98
+ ], 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" }]
93
99
  }], propDecorators: { compact: [{
94
100
  type: Input,
95
101
  args: [{
@@ -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\tstyleUrls: ['./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\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()\"></ng-container>\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()\"></ng-container></span>&ngsp;\n\t\t\t<time class=\"comment-infos-date\" [attr.datetime]=\"date().toISOString()\">\n\t\t\t\t@if (dateDisplay()) {\n\t\t\t\t\t<ng-container *luPortal=\"dateDisplay()\"></ng-container>\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\"></ng-container>\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\"></ng-container>\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":"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"}
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\tstyleUrls: ['./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":"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"}
@@ -51,7 +51,9 @@ class LuCoreSelectDepartmentsDirective extends ALuCoreSelectApiDirective {
51
51
  ...(appInstanceId ? { appInstanceId } : {}),
52
52
  };
53
53
  }));
54
- this.totalCount$ = this.select.options$.pipe(map((opts) => opts.length));
54
+ this.totalCount$ = this.select.options$.pipe(map((opts) => {
55
+ return opts.map((branch) => this.flattenTree(branch)).flat().length;
56
+ }));
55
57
  this.optionKey = (option) => {
56
58
  return 'node' in option ? option.node.id : option.id;
57
59
  };
@@ -87,6 +89,13 @@ class LuCoreSelectDepartmentsDirective extends ALuCoreSelectApiDirective {
87
89
  })
88
90
  .filter((o) => !!o);
89
91
  }
92
+ flattenTree(branch) {
93
+ const result = [branch.node];
94
+ if (branch.children.length > 0) {
95
+ result.push(...branch.children.map((child) => this.flattenTree(child)).flat());
96
+ }
97
+ return result;
98
+ }
90
99
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: LuCoreSelectDepartmentsDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
91
100
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.2", type: LuCoreSelectDepartmentsDirective, isStandalone: true, selector: "lu-simple-select[departments],lu-multi-select[departments]", inputs: { url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, filters: { classPropertyName: "filters", publicName: "filters", isSignal: true, isRequired: false, transformFunction: null }, operationIds: { classPropertyName: "operationIds", publicName: "operationIds", isSignal: true, isRequired: false, transformFunction: null }, uniqueOperationIds: { classPropertyName: "uniqueOperationIds", publicName: "uniqueOperationIds", isSignal: true, isRequired: false, transformFunction: null }, appInstanceId: { classPropertyName: "appInstanceId", publicName: "appInstanceId", isSignal: true, isRequired: false, transformFunction: null }, searchDelimiter: { classPropertyName: "searchDelimiter", publicName: "searchDelimiter", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
92
101
  {
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-core-select-department.mjs","sources":["../../../packages/ng/core-select/department/noop-tree-select.directive.ts","../../../packages/ng/core-select/department/departments.directive.ts","../../../packages/ng/core-select/department/lucca-front-ng-core-select-department.ts"],"sourcesContent":["import { Directive, inject, input, linkedSignal } from '@angular/core';\nimport { ALuSelectInputComponent, TreeGenerator, TreeGroupingFn, TreeNode } from '@lucca-front/ng/core-select';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[noopTreeSelect],lu-multi-select[noopTreeSelect]',\n\tstandalone: true,\n})\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class NoopTreeSelectDirective<T extends TreeNode<any>, V> implements TreeGenerator<T, T> {\n\t#select = inject<ALuSelectInputComponent<T, V>>(ALuSelectInputComponent);\n\n\tgroupingFnInput = input<TreeGroupingFn<T>>(() => null, { alias: 'noopTreeSelect' });\n\n\tgroupingFn = linkedSignal(() => this.groupingFnInput());\n\n\tconstructor() {\n\t\tthis.#select.treeGenerator = this;\n\t}\n\n\tgenerateTrees(items: T[]): T[] {\n\t\treturn items;\n\t}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { computed, Directive, forwardRef, inject, input, OnInit } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider, TreeNode } from '@lucca-front/ng/core-select';\nimport { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { NoopTreeSelectDirective } from './noop-tree-select.directive';\nimport { ILuDepartment } from '@lucca-front/ng/department';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\" / \"lu-multi-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[departments],lu-multi-select[departments]',\n\tstandalone: true,\n\texportAs: 'luDepartments',\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectDepartmentsDirective),\n\t\t},\n\t],\n\thostDirectives: [NoopTreeSelectDirective],\n})\nexport class LuCoreSelectDepartmentsDirective<T extends ILuDepartment = ILuDepartment> extends ALuCoreSelectApiDirective<TreeNode<T>> implements OnInit, CoreSelectApiTotalCountProvider {\n\tprotected httpClient = inject(HttpClient);\n\n\turl = input<string>('/organization/structure/api/departments/tree');\n\tfilters = input<Record<string, string | number | boolean> | null>(null);\n\toperationIds = input<readonly number[] | null>(null);\n\tuniqueOperationIds = input<readonly number[] | null>(null);\n\tappInstanceId = input<number | null>(null);\n\tsearchDelimiter = input<string>(' ');\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t}\n\n\tprotected override buildOptions(): Observable<TreeNode<T>[]> {\n\t\treturn combineLatest([super.buildOptions(), this.clue$]).pipe(\n\t\t\tmap(([data, clue]) => {\n\t\t\t\treturn this.trim(data, clue);\n\t\t\t}),\n\t\t);\n\t}\n\n\tprotected override getOptions(params: Record<string, string | number | boolean> | null): Observable<TreeNode<T>[]> {\n\t\treturn this.httpClient\n\t\t\t.get<TreeNode<T>>(this.url(), {\n\t\t\t\tparams,\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\treturn data.children;\n\t\t\t\t}),\n\t\t\t);\n\t}\n\n\ttrim(options: TreeNode<T>[], clue: string): TreeNode<T>[] {\n\t\treturn options\n\t\t\t.map((option) => {\n\t\t\t\tif (option.node.name.toLowerCase().includes(clue.toLowerCase())) {\n\t\t\t\t\treturn { ...option };\n\t\t\t\t}\n\t\t\t\tconst trimmedChildren = option.children ? this.trim(option.children, clue) : [];\n\t\t\t\tif (trimmedChildren.length) {\n\t\t\t\t\treturn { ...option, children: trimmedChildren };\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t})\n\t\t\t.filter((o) => !!o);\n\t}\n\n\tprotected override params$: Observable<Record<string, string | number | boolean>> = toObservable(\n\t\tcomputed(() => {\n\t\t\tconst operationIds = this.operationIds();\n\t\t\tconst uniqueOperationIds = this.uniqueOperationIds();\n\t\t\tconst appInstanceId = this.appInstanceId();\n\t\t\treturn {\n\t\t\t\t...this.filters(),\n\t\t\t\t...(operationIds ? { operations: operationIds.join(',') } : {}),\n\t\t\t\t...(uniqueOperationIds ? { uniqueOperations: uniqueOperationIds.join(',') } : {}),\n\t\t\t\t...(appInstanceId ? { appInstanceId } : {}),\n\t\t\t};\n\t\t}),\n\t);\n\n\tpublic totalCount$ = this.select.options$.pipe(map((opts) => opts.length));\n\n\tprotected override optionKey = (option: TreeNode<T> | T) => {\n\t\treturn 'node' in option ? option.node.id : option.id;\n\t};\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NoopTreeSelectDirective"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-core-select-department.mjs","sources":["../../../packages/ng/core-select/department/noop-tree-select.directive.ts","../../../packages/ng/core-select/department/departments.directive.ts","../../../packages/ng/core-select/department/lucca-front-ng-core-select-department.ts"],"sourcesContent":["import { Directive, inject, input, linkedSignal } from '@angular/core';\nimport { ALuSelectInputComponent, TreeGenerator, TreeGroupingFn, TreeNode } from '@lucca-front/ng/core-select';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[noopTreeSelect],lu-multi-select[noopTreeSelect]',\n\tstandalone: true,\n})\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class NoopTreeSelectDirective<T extends TreeNode<any>, V> implements TreeGenerator<T, T> {\n\t#select = inject<ALuSelectInputComponent<T, V>>(ALuSelectInputComponent);\n\n\tgroupingFnInput = input<TreeGroupingFn<T>>(() => null, { alias: 'noopTreeSelect' });\n\n\tgroupingFn = linkedSignal(() => this.groupingFnInput());\n\n\tconstructor() {\n\t\tthis.#select.treeGenerator = this;\n\t}\n\n\tgenerateTrees(items: T[]): T[] {\n\t\treturn items;\n\t}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { computed, Directive, forwardRef, inject, input, OnInit } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider, TreeNode } from '@lucca-front/ng/core-select';\nimport { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { NoopTreeSelectDirective } from './noop-tree-select.directive';\nimport { ILuDepartment } from '@lucca-front/ng/department';\n\n@Directive({\n\t// The attribute is already prefixed with \"lu-simple-select\" / \"lu-multi-select\"\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[departments],lu-multi-select[departments]',\n\tstandalone: true,\n\texportAs: 'luDepartments',\n\tproviders: [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(() => LuCoreSelectDepartmentsDirective),\n\t\t},\n\t],\n\thostDirectives: [NoopTreeSelectDirective],\n})\nexport class LuCoreSelectDepartmentsDirective<T extends ILuDepartment = ILuDepartment> extends ALuCoreSelectApiDirective<TreeNode<T>> implements OnInit, CoreSelectApiTotalCountProvider {\n\tprotected httpClient = inject(HttpClient);\n\n\turl = input<string>('/organization/structure/api/departments/tree');\n\tfilters = input<Record<string, string | number | boolean> | null>(null);\n\toperationIds = input<readonly number[] | null>(null);\n\tuniqueOperationIds = input<readonly number[] | null>(null);\n\tappInstanceId = input<number | null>(null);\n\tsearchDelimiter = input<string>(' ');\n\n\tpublic override ngOnInit(): void {\n\t\tsuper.ngOnInit();\n\t}\n\n\tprotected override buildOptions(): Observable<TreeNode<T>[]> {\n\t\treturn combineLatest([super.buildOptions(), this.clue$]).pipe(\n\t\t\tmap(([data, clue]) => {\n\t\t\t\treturn this.trim(data, clue);\n\t\t\t}),\n\t\t);\n\t}\n\n\tprotected override getOptions(params: Record<string, string | number | boolean> | null): Observable<TreeNode<T>[]> {\n\t\treturn this.httpClient\n\t\t\t.get<TreeNode<T>>(this.url(), {\n\t\t\t\tparams,\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tmap((data) => {\n\t\t\t\t\treturn data.children;\n\t\t\t\t}),\n\t\t\t);\n\t}\n\n\ttrim(options: TreeNode<T>[], clue: string): TreeNode<T>[] {\n\t\treturn options\n\t\t\t.map((option) => {\n\t\t\t\tif (option.node.name.toLowerCase().includes(clue.toLowerCase())) {\n\t\t\t\t\treturn { ...option };\n\t\t\t\t}\n\t\t\t\tconst trimmedChildren = option.children ? this.trim(option.children, clue) : [];\n\t\t\t\tif (trimmedChildren.length) {\n\t\t\t\t\treturn { ...option, children: trimmedChildren };\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t\t})\n\t\t\t.filter((o) => !!o);\n\t}\n\n\tprotected override params$: Observable<Record<string, string | number | boolean>> = toObservable(\n\t\tcomputed(() => {\n\t\t\tconst operationIds = this.operationIds();\n\t\t\tconst uniqueOperationIds = this.uniqueOperationIds();\n\t\t\tconst appInstanceId = this.appInstanceId();\n\t\t\treturn {\n\t\t\t\t...this.filters(),\n\t\t\t\t...(operationIds ? { operations: operationIds.join(',') } : {}),\n\t\t\t\t...(uniqueOperationIds ? { uniqueOperations: uniqueOperationIds.join(',') } : {}),\n\t\t\t\t...(appInstanceId ? { appInstanceId } : {}),\n\t\t\t};\n\t\t}),\n\t);\n\n\tpublic totalCount$ = this.select.options$.pipe(\n\t\tmap((opts) => {\n\t\t\treturn opts.map((branch) => this.flattenTree(branch)).flat().length;\n\t\t}),\n\t);\n\n\tprotected flattenTree(branch: TreeNode<T>): T[] {\n\t\tconst result: T[] = [branch.node];\n\t\tif (branch.children.length > 0) {\n\t\t\tresult.push(...branch.children.map((child) => this.flattenTree(child)).flat());\n\t\t}\n\t\treturn result;\n\t}\n\n\tprotected override optionKey = (option: TreeNode<T> | T) => {\n\t\treturn 'node' in option ? option.node.id : option.id;\n\t};\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NoopTreeSelectDirective"],"mappings":"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"}
@@ -300,6 +300,7 @@ class LuCoreSelectUsersDirective extends ALuCoreSelectApiDirective {
300
300
  this.meParams$ = toObservable(computed(() => ({
301
301
  fields: this.#userFields,
302
302
  ...this.filters(),
303
+ ...(this.uniqueOperationIds() ? { uniqueOperations: this.uniqueOperationIds().join(',') } : {}),
303
304
  ...(this.operationIds() ? { operations: this.operationIds().join(',') } : {}),
304
305
  ...(this.appInstanceId() ? { appInstanceId: this.appInstanceId() } : {}),
305
306
  id: this.currentUserId,
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-core-select-user.mjs","sources":["../../../packages/ng/core-select/user/me.provider.ts","../../../packages/ng/core-select/user/translations.ts","../../../packages/ng/core-select/user/user.translate.ts","../../../packages/ng/core-select/user/former-employees.component.ts","../../../packages/ng/core-select/user/user-displayer.component.ts","../../../packages/ng/core-select/user/user-homonym.service.ts","../../../packages/ng/core-select/user/user-option.component.ts","../../../packages/ng/core-select/user/users.directive.ts","../../../packages/ng/core-select/user/lucca-front-ng-core-select-user.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport const LU_CORE_SELECT_CURRENT_USER_ID = new InjectionToken<number>('LuCoreSelectCurrentUserId');\n\nexport function provideCoreSelectCurrentUserId(factory: () => number): Provider {\n\treturn {\n\t\tprovide: LU_CORE_SELECT_CURRENT_USER_ID,\n\t\tuseFactory: factory,\n\t};\n}\n","export const Translations = {\n\ten: {\n\t\tme: 'Me:',\n\t\tincludeFormerEmployees: 'Include former employees',\n\t},\n\tde: {\n\t\tme: 'Ich:',\n\t\tincludeFormerEmployees: 'Ausgeschiedene Mitarbeitende einbeziehen',\n\t},\n\tfr: {\n\t\tme: 'Moi :',\n\t\tincludeFormerEmployees: 'Inclure les collaborateurs partis',\n\t},\n\tit: {\n\t\tme: 'Io:',\n\t\tincludeFormerEmployees: 'Includere gli ex collaboratori',\n\t},\n\tnl: {\n\t\tme: 'Ik:',\n\t\tincludeFormerEmployees: 'Inclusief medewerkers die zijn vertrokken',\n\t},\n\t'nl-BE': {\n\t\tme: 'Ik:',\n\t\tincludeFormerEmployees: 'Inclusief medewerkers die zijn vertrokken',\n\t},\n\tes: {\n\t\tme: 'Yo:',\n\t\tincludeFormerEmployees: 'Incluir a los empleados inactivos',\n\t},\n\tpt: {\n\t\tme: 'Eu:',\n\t\tincludeFormerEmployees: 'Incluir os trabalhadores que saíram',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_CORE_SELECT_USER_TRANSLATIONS = new InjectionToken('LuCoreSelectUserTranslations', {\n\tfactory: () => luCoreSelectUserTranslations,\n});\n\nexport interface LuCoreSelectUserTranslations {\n\tme: string;\n\tincludeFormerEmployees: string;\n}\n\nexport const luCoreSelectUserTranslations: LuTranslation<LuCoreSelectUserTranslations> = Translations;\n","import { Component, inject, InjectionToken, WritableSignal } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ɵCoreSelectPanelElement } from '@lucca-front/ng/core-select';\nimport { LU_CORE_SELECT_USER_TRANSLATIONS } from './user.translate';\n\nexport interface FormerEmployeesContext {\n\tincludeFormerEmployees: WritableSignal<boolean>;\n}\n\nexport const FORMER_EMPLOYEES_CONTEXT = new InjectionToken<FormerEmployeesContext>('FormerEmployeesContext');\n\n@Component({\n\tselector: 'lu-core-select-former-employees',\n\tstyleUrl: './former-employees.component.scss',\n\tstandalone: true,\n\timports: [FormsModule],\n\thostDirectives: [ɵCoreSelectPanelElement],\n\ttemplate: `\n\t\t<div class=\"formerEmployeeDisplayer optionItem\">\n\t\t\t<div class=\"optionItem-value\" [class.is-selected]=\"context.includeFormerEmployees()\" (click)=\"context.includeFormerEmployees.set(!context.includeFormerEmployees())\">\n\t\t\t\t{{ intl.includeFormerEmployees }}\n\t\t\t</div>\n\t\t</div>\n\t`,\n})\nexport class LuCoreSelectFormerEmployeesComponent {\n\treadonly intl = getIntl(LU_CORE_SELECT_USER_TRANSLATIONS);\n\treadonly context = inject(FORMER_EMPLOYEES_CONTEXT);\n\treadonly #selectableItem = inject(ɵCoreSelectPanelElement);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set('select-former-employees');\n\t\toutputToObservable(this.#selectableItem.selected)\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.context.includeFormerEmployees.set(!this.context.includeFormerEmployees());\n\t\t\t});\n\t}\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { LuCoreSelectUser } from './user-option.model';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-displayer',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t<span translate=\"no\">{{ user | luUserDisplay: userDirective.displayFormat() }}</span>\n\t\t</ng-container>\n\t`,\n\tstandalone: true,\n})\nexport class LuUserDisplayerComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectUser>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { LuDisplayFormat, luUserDisplay } from '@lucca-front/ng/user';\nimport { Observable, map, of, startWith, tap } from 'rxjs';\nimport { LuCoreSelectUser } from './user-option.model';\n\n@Injectable({ providedIn: 'root' })\nexport class LuCoreSelectUserHomonymsService {\n\tprotected http = inject(HttpClient);\n\tprotected cache: Record<number, string> = {};\n\n\tprotected extractHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Set<T['id']> {\n\t\tconst usersByFullName: Record<string, T[]> = {};\n\n\t\tfor (const user of users) {\n\t\t\tconst name = luUserDisplay(user, format);\n\t\t\tusersByFullName[name] ||= [];\n\t\t\tusersByFullName[name].push(user);\n\t\t}\n\n\t\treturn new Set(\n\t\t\tObject.values(usersByFullName)\n\t\t\t\t.filter((users) => users.length > 1)\n\t\t\t\t.flatMap((users) => users.map((user) => user.id)),\n\t\t);\n\t}\n\n\tpublic handleHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Observable<T[]> {\n\t\tconst homonyms = this.extractHomonyms(users, format);\n\n\t\tif (homonyms.size === 0) {\n\t\t\treturn of(users);\n\t\t}\n\n\t\treturn this.getAdditionalInformationByUserId(Array.from(homonyms)).pipe(\n\t\t\tmap((additionalInformation) =>\n\t\t\t\tusers.map((user) =>\n\t\t\t\t\thomonyms.has(user.id)\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...user,\n\t\t\t\t\t\t\t\tadditionalInformation: this.cache[user.id] || additionalInformation[user.id],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: user,\n\t\t\t\t),\n\t\t\t),\n\t\t\tstartWith(users),\n\t\t);\n\t}\n\n\tprotected getAdditionalInformationByUserId<T extends LuCoreSelectUser>(homonyms: T['id'][]): Observable<Record<number, string>> {\n\t\tconst userIds = homonyms.filter((userId) => !this.cache[userId]);\n\n\t\tif (userIds.length === 0) {\n\t\t\treturn of({});\n\t\t}\n\n\t\treturn this.http\n\t\t\t.get<ILuApiCollectionResponse<{ id: number; department?: { name: string } }>>(`/api/v3/users`, {\n\t\t\t\tparams: {\n\t\t\t\t\tid: userIds.join(','),\n\t\t\t\t\tfields: 'id,department.name',\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tmap((res) => res.data.items),\n\t\t\t\tmap((infos) =>\n\t\t\t\t\tinfos.reduce<Record<number, string>>(\n\t\t\t\t\t\t(acc, info) => ({\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[info.id]: info.department?.name || '',\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\ttap((infos) => {\n\t\t\t\t\tthis.cache = {\n\t\t\t\t\t\t...this.cache,\n\t\t\t\t\t\t...infos,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t}\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { map, startWith } from 'rxjs';\nimport { LuCoreSelectUser, LuCoreSelectWithAdditionnalInformation } from './user-option.model';\nimport { LU_CORE_SELECT_USER_TRANSLATIONS } from './user.translate';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-option',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe, ɵLuOptionOutletDirective],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t<div *ngIf=\"userDirective.displayMeOption() && user.id === userDirective.currentUserId && hasEmptyClue$ | async; else notMe\">\n\t\t\t\t<strong>{{ intl.me }}</strong\n\t\t\t\t>&ngsp;\n\t\t\t\t<strong translate=\"no\"><ng-container *luOptionOutlet=\"customUserOptionTpl() || defaultUserTpl; value: user\" /></strong>\n\t\t\t</div>\n\n\t\t\t<ng-template #notMe>\n\t\t\t\t<div *luOptionOutlet=\"customUserOptionTpl() || defaultUserTpl; value: user\"></div>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-select-additionalInformation\" *ngIf=\"user.additionalInformation\">({{ user.additionalInformation }})</div>\n\t\t</ng-container>\n\n\t\t<ng-template #defaultUserTpl let-user>\n\t\t\t<span translate=\"no\">{{ user | luUserDisplay: userDirective.displayFormat() }}</span>\n\t\t</ng-template>\n\t`,\n\tstandalone: true,\n\tstyles: [\n\t\t`\n\t\t\t.lu-select-additionalInformation {\n\t\t\t\tfont-size: 80%;\n\t\t\t\tfont-style: italic;\n\t\t\t\tmargin-block-start: -0.25em;\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class LuUserOptionComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectWithAdditionnalInformation<LuCoreSelectUser>>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n\tprotected intl = getIntl(LU_CORE_SELECT_USER_TRANSLATIONS);\n\tprotected hasEmptyClue$ = this.userDirective.select.clueChange.pipe(\n\t\tstartWith(this.userDirective.select.clue),\n\t\tmap((clue) => !clue),\n\t);\n\tprotected customUserOptionTpl = this.userDirective.customUserOptionTpl;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, Input, Provider, TemplateRef, Type, booleanAttribute, computed, effect, forwardRef, inject, input, model, signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider, LuOptionContext, applySearchDelimiter } from '@lucca-front/ng/core-select';\nimport { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';\nimport { LuDisplayFormat, LuDisplayFullname } from '@lucca-front/ng/user';\nimport { EMPTY, Observable, catchError, combineLatest, debounceTime, map, of, shareReplay, switchMap, take, tap } from 'rxjs';\nimport { FORMER_EMPLOYEES_CONTEXT, LuCoreSelectFormerEmployeesComponent } from './former-employees.component';\nimport { LU_CORE_SELECT_CURRENT_USER_ID } from './me.provider';\nimport { LuUserDisplayerComponent } from './user-displayer.component';\nimport { LuCoreSelectUserHomonymsService } from './user-homonym.service';\nimport { LuUserOptionComponent } from './user-option.component';\nimport { LuCoreSelectUser, LuCoreSelectWithAdditionnalInformation } from './user-option.model';\n\nexport function provideCoreSelectUsersContext<T extends LuCoreSelectUser = LuCoreSelectUser>(directiveFn: () => Type<LuCoreSelectUsersDirective<T>>): Provider[] {\n\treturn [\n\t\t...provideBaseCoreSelectUsersContext(directiveFn),\n\t\t{\n\t\t\tprovide: LuCoreSelectUsersDirective,\n\t\t\tuseExisting: forwardRef(directiveFn),\n\t\t},\n\t];\n}\n\nfunction provideBaseCoreSelectUsersContext<T extends LuCoreSelectUser = LuCoreSelectUser>(directiveFn: () => Type<LuCoreSelectUsersDirective<T>>): Provider[] {\n\treturn [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(directiveFn),\n\t\t},\n\t\t{\n\t\t\tprovide: FORMER_EMPLOYEES_CONTEXT,\n\t\t\tuseExisting: forwardRef(directiveFn),\n\t\t},\n\t];\n}\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[users],lu-multi-select[users]',\n\tstandalone: true,\n\texportAs: 'luUsers',\n\tproviders: [provideBaseCoreSelectUsersContext(() => LuCoreSelectUsersDirective)],\n})\nexport class LuCoreSelectUsersDirective<T extends LuCoreSelectUser = LuCoreSelectUser>\n\textends ALuCoreSelectApiDirective<LuCoreSelectWithAdditionnalInformation<T>>\n\timplements CoreSelectApiTotalCountProvider\n{\n\t#defaultSearchUrl = '/api/v3/users/search';\n\t#defaultScopedSearchUrl = '/api/v3/users/scopedsearch';\n\t#userHomonymsService = inject(LuCoreSelectUserHomonymsService);\n\n\t// Not overridable so it will ease employee API migration\n\t#userFields = 'id,firstName,lastName,picture.href';\n\n\tprotected httpClient = inject(HttpClient);\n\tpublic currentUserId = inject(LU_CORE_SELECT_CURRENT_USER_ID);\n\n\tdisplayFormat = input<LuDisplayFormat>(LuDisplayFullname.lastfirst);\n\n\tfilters = input<Record<string, string | number | boolean>>({});\n\turl = input<string | null>(null);\n\torderBy = input<string | null>(null);\n\toperationIds = input<readonly number[] | null>(null);\n\tuniqueOperationIds = input<readonly number[] | null>(null);\n\tappInstanceId = input<number | null>(null);\n\tenableFormerEmployees = input(false, { transform: booleanAttribute });\n\tdisplayMeOption = input(true);\n\tcustomUserOptionTpl = model<TemplateRef<LuOptionContext<T>> | Type<unknown> | undefined>();\n\n\tincludeFormerEmployees = signal(false);\n\tsearchDelimiter = input<string>(' ');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.select.optionTpl.set(LuUserOptionComponent);\n\t\tthis.select.valueTpl.set(LuUserDisplayerComponent);\n\n\t\teffect(() => {\n\t\t\tconst enableFormerEmployees = this.enableFormerEmployees();\n\n\t\t\tif (enableFormerEmployees) {\n\t\t\t\tuntracked(() => this.select.panelHeaderTpl.set(LuCoreSelectFormerEmployeesComponent));\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected defaultUrl = computed(() => (this.uniqueOperationIds()?.length || (this.appInstanceId() && this.operationIds()?.length) ? this.#defaultScopedSearchUrl : this.#defaultSearchUrl));\n\tprotected urlOrDefault = computed(() => this.url() ?? this.defaultUrl());\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 orderBy = this.orderBy();\n\t\t\tconst clue = this.clue();\n\t\t\tconst operationIds = this.operationIds();\n\t\t\tconst uniqueOperationIds = this.uniqueOperationIds();\n\t\t\tconst appInstanceId = this.appInstanceId();\n\t\t\tconst searchDelimiter = this.searchDelimiter();\n\t\t\tconst formerEmployees = this.includeFormerEmployees();\n\n\t\t\treturn {\n\t\t\t\tfields: this.#userFields,\n\t\t\t\t...this.filters(),\n\t\t\t\t...(orderBy ? { orderBy } : {}),\n\t\t\t\t...(clue ? { clue: applySearchDelimiter(clue, searchDelimiter) } : {}),\n\t\t\t\t...(operationIds ? { operations: operationIds.join(',') } : {}),\n\t\t\t\t...(uniqueOperationIds ? { uniqueOperations: uniqueOperationIds.join(',') } : {}),\n\t\t\t\t...(appInstanceId ? { appInstanceId } : {}),\n\t\t\t\t...(formerEmployees ? { formerEmployees } : {}),\n\t\t\t};\n\t\t}),\n\t);\n\n\tprotected meParams$ = toObservable(\n\t\tcomputed(() => ({\n\t\t\tfields: this.#userFields,\n\t\t\t...this.filters(),\n\t\t\t...(this.operationIds() ? { operations: this.operationIds().join(',') } : {}),\n\t\t\t...(this.appInstanceId() ? { appInstanceId: this.appInstanceId() } : {}),\n\t\t\tid: this.currentUserId,\n\t\t})),\n\t);\n\n\tprotected me$ = this.meParams$.pipe(\n\t\tswitchMap((params) =>\n\t\t\tthis.httpClient\n\t\t\t\t.get<\n\t\t\t\t\tILuApiCollectionResponse<{\n\t\t\t\t\t\titem: T;\n\t\t\t\t\t}>\n\t\t\t\t>(this.urlOrDefault(), { params })\n\t\t\t\t.pipe(catchError(() => EMPTY)),\n\t\t),\n\t\tmap((res) => res.data.items.map(({ item }) => item)[0] ?? null),\n\t\ttakeUntilDestroyed(),\n\t\tshareReplay(1),\n\t);\n\n\tpublic totalCount$ = toObservable(computed(() => ({ url: this.urlOrDefault(), 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\tfields: 'collection.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 getMe(): Observable<T | null> {\n\t\treturn this.me$.pipe(take(1));\n\t}\n\n\tprotected getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.httpClient\n\t\t\t.get<ILuApiCollectionResponse<{ item: T }>>(this.urlOrDefault(), {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tpaging: `${page * this.pageSize},${this.pageSize}`,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map((res) => res.data.items.map(({ item }) => item)));\n\t}\n\n\tprotected override getOptionsPage(\n\t\tparams: Record<string, string | number | boolean>,\n\t\tpage: number,\n\t): Observable<{\n\t\titems: LuCoreSelectWithAdditionnalInformation<T>[];\n\t\tisLastPage: boolean;\n\t}> {\n\t\tconst hasClue = !!params['clue'];\n\t\tconst displayMe = this.displayMeOption() && !hasClue;\n\t\tconst prependMe = displayMe && page === 0;\n\n\t\tthis.select.loading = true;\n\n\t\tconst me$ = prependMe ? this.getMe() : of(null);\n\n\t\tconst users$ = this.getOptions(params, page).pipe(\n\t\t\tmap((users) => ({ items: users, isLastPage: users.length < this.pageSize })),\n\t\t\ttap(() => (this.select.loading = false)),\n\t\t);\n\n\t\tconst page$ = combineLatest([me$, users$]).pipe(\n\t\t\tmap(([me, { items, isLastPage }]) => {\n\t\t\t\t// If \"me\" is displayed as first option, we remove it from the list of users\n\t\t\t\tconst filteredItems = displayMe ? items.filter((u) => u.id !== this.currentUserId) : items;\n\t\t\t\treturn { items: me && prependMe ? [me, ...filteredItems] : filteredItems, isLastPage };\n\t\t\t}),\n\t\t);\n\n\t\treturn page$.pipe(\n\t\t\tswitchMap((page) =>\n\t\t\t\tthis.#userHomonymsService.handleHomonyms(page.items, this.displayFormat()).pipe(\n\t\t\t\t\tmap((items) => ({\n\t\t\t\t\t\titems,\n\t\t\t\t\t\tisLastPage: page.isLastPage,\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t}\n\n\tprotected override optionKey = (option: T) => option.id;\n}\n\n@Directive({\n\tselector: '[luUserOption]',\n\tstandalone: true,\n})\nexport class LuCoreSelectUserOptionDirective<T extends LuCoreSelectUser = LuCoreSelectUser> {\n\t#templateRef = inject(TemplateRef<LuOptionContext<T>>);\n\n\t@Input({ alias: 'luUserOptionUsersRef' }) set usersDirective(usersDirective: LuCoreSelectUsersDirective<T>) {\n\t\tusersDirective.customUserOptionTpl.set(this.#templateRef);\n\t}\n\n\tpublic static ngTemplateContextGuard<T extends LuCoreSelectUser>(_dir: LuCoreSelectUserOptionDirective<T>, ctx: unknown): ctx is { $implicit: T } {\n\t\treturn true;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵCoreSelectPanelElement","ɵLuOptionOutletDirective"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-core-select-user.mjs","sources":["../../../packages/ng/core-select/user/me.provider.ts","../../../packages/ng/core-select/user/translations.ts","../../../packages/ng/core-select/user/user.translate.ts","../../../packages/ng/core-select/user/former-employees.component.ts","../../../packages/ng/core-select/user/user-displayer.component.ts","../../../packages/ng/core-select/user/user-homonym.service.ts","../../../packages/ng/core-select/user/user-option.component.ts","../../../packages/ng/core-select/user/users.directive.ts","../../../packages/ng/core-select/user/lucca-front-ng-core-select-user.ts"],"sourcesContent":["import { InjectionToken, Provider } from '@angular/core';\n\nexport const LU_CORE_SELECT_CURRENT_USER_ID = new InjectionToken<number>('LuCoreSelectCurrentUserId');\n\nexport function provideCoreSelectCurrentUserId(factory: () => number): Provider {\n\treturn {\n\t\tprovide: LU_CORE_SELECT_CURRENT_USER_ID,\n\t\tuseFactory: factory,\n\t};\n}\n","export const Translations = {\n\ten: {\n\t\tme: 'Me:',\n\t\tincludeFormerEmployees: 'Include former employees',\n\t},\n\tde: {\n\t\tme: 'Ich:',\n\t\tincludeFormerEmployees: 'Ausgeschiedene Mitarbeitende einbeziehen',\n\t},\n\tfr: {\n\t\tme: 'Moi :',\n\t\tincludeFormerEmployees: 'Inclure les collaborateurs partis',\n\t},\n\tit: {\n\t\tme: 'Io:',\n\t\tincludeFormerEmployees: 'Includere gli ex collaboratori',\n\t},\n\tnl: {\n\t\tme: 'Ik:',\n\t\tincludeFormerEmployees: 'Inclusief medewerkers die zijn vertrokken',\n\t},\n\t'nl-BE': {\n\t\tme: 'Ik:',\n\t\tincludeFormerEmployees: 'Inclusief medewerkers die zijn vertrokken',\n\t},\n\tes: {\n\t\tme: 'Yo:',\n\t\tincludeFormerEmployees: 'Incluir a los empleados inactivos',\n\t},\n\tpt: {\n\t\tme: 'Eu:',\n\t\tincludeFormerEmployees: 'Incluir os trabalhadores que saíram',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_CORE_SELECT_USER_TRANSLATIONS = new InjectionToken('LuCoreSelectUserTranslations', {\n\tfactory: () => luCoreSelectUserTranslations,\n});\n\nexport interface LuCoreSelectUserTranslations {\n\tme: string;\n\tincludeFormerEmployees: string;\n}\n\nexport const luCoreSelectUserTranslations: LuTranslation<LuCoreSelectUserTranslations> = Translations;\n","import { Component, inject, InjectionToken, WritableSignal } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ɵCoreSelectPanelElement } from '@lucca-front/ng/core-select';\nimport { LU_CORE_SELECT_USER_TRANSLATIONS } from './user.translate';\n\nexport interface FormerEmployeesContext {\n\tincludeFormerEmployees: WritableSignal<boolean>;\n}\n\nexport const FORMER_EMPLOYEES_CONTEXT = new InjectionToken<FormerEmployeesContext>('FormerEmployeesContext');\n\n@Component({\n\tselector: 'lu-core-select-former-employees',\n\tstyleUrl: './former-employees.component.scss',\n\tstandalone: true,\n\timports: [FormsModule],\n\thostDirectives: [ɵCoreSelectPanelElement],\n\ttemplate: `\n\t\t<div class=\"formerEmployeeDisplayer optionItem\">\n\t\t\t<div class=\"optionItem-value\" [class.is-selected]=\"context.includeFormerEmployees()\" (click)=\"context.includeFormerEmployees.set(!context.includeFormerEmployees())\">\n\t\t\t\t{{ intl.includeFormerEmployees }}\n\t\t\t</div>\n\t\t</div>\n\t`,\n})\nexport class LuCoreSelectFormerEmployeesComponent {\n\treadonly intl = getIntl(LU_CORE_SELECT_USER_TRANSLATIONS);\n\treadonly context = inject(FORMER_EMPLOYEES_CONTEXT);\n\treadonly #selectableItem = inject(ɵCoreSelectPanelElement);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set('select-former-employees');\n\t\toutputToObservable(this.#selectableItem.selected)\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.context.includeFormerEmployees.set(!this.context.includeFormerEmployees());\n\t\t\t});\n\t}\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { LuCoreSelectUser } from './user-option.model';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-displayer',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t<span translate=\"no\">{{ user | luUserDisplay: userDirective.displayFormat() }}</span>\n\t\t</ng-container>\n\t`,\n\tstandalone: true,\n})\nexport class LuUserDisplayerComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectUser>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { LuDisplayFormat, luUserDisplay } from '@lucca-front/ng/user';\nimport { Observable, map, of, startWith, tap } from 'rxjs';\nimport { LuCoreSelectUser } from './user-option.model';\n\n@Injectable({ providedIn: 'root' })\nexport class LuCoreSelectUserHomonymsService {\n\tprotected http = inject(HttpClient);\n\tprotected cache: Record<number, string> = {};\n\n\tprotected extractHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Set<T['id']> {\n\t\tconst usersByFullName: Record<string, T[]> = {};\n\n\t\tfor (const user of users) {\n\t\t\tconst name = luUserDisplay(user, format);\n\t\t\tusersByFullName[name] ||= [];\n\t\t\tusersByFullName[name].push(user);\n\t\t}\n\n\t\treturn new Set(\n\t\t\tObject.values(usersByFullName)\n\t\t\t\t.filter((users) => users.length > 1)\n\t\t\t\t.flatMap((users) => users.map((user) => user.id)),\n\t\t);\n\t}\n\n\tpublic handleHomonyms<T extends LuCoreSelectUser>(users: T[], format: LuDisplayFormat): Observable<T[]> {\n\t\tconst homonyms = this.extractHomonyms(users, format);\n\n\t\tif (homonyms.size === 0) {\n\t\t\treturn of(users);\n\t\t}\n\n\t\treturn this.getAdditionalInformationByUserId(Array.from(homonyms)).pipe(\n\t\t\tmap((additionalInformation) =>\n\t\t\t\tusers.map((user) =>\n\t\t\t\t\thomonyms.has(user.id)\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t...user,\n\t\t\t\t\t\t\t\tadditionalInformation: this.cache[user.id] || additionalInformation[user.id],\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: user,\n\t\t\t\t),\n\t\t\t),\n\t\t\tstartWith(users),\n\t\t);\n\t}\n\n\tprotected getAdditionalInformationByUserId<T extends LuCoreSelectUser>(homonyms: T['id'][]): Observable<Record<number, string>> {\n\t\tconst userIds = homonyms.filter((userId) => !this.cache[userId]);\n\n\t\tif (userIds.length === 0) {\n\t\t\treturn of({});\n\t\t}\n\n\t\treturn this.http\n\t\t\t.get<ILuApiCollectionResponse<{ id: number; department?: { name: string } }>>(`/api/v3/users`, {\n\t\t\t\tparams: {\n\t\t\t\t\tid: userIds.join(','),\n\t\t\t\t\tfields: 'id,department.name',\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(\n\t\t\t\tmap((res) => res.data.items),\n\t\t\t\tmap((infos) =>\n\t\t\t\t\tinfos.reduce<Record<number, string>>(\n\t\t\t\t\t\t(acc, info) => ({\n\t\t\t\t\t\t\t...acc,\n\t\t\t\t\t\t\t[info.id]: info.department?.name || '',\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t{},\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\ttap((infos) => {\n\t\t\t\t\tthis.cache = {\n\t\t\t\t\t\t...this.cache,\n\t\t\t\t\t\t...infos,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t}\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport { Component, inject } from '@angular/core';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuUserDisplayPipe } from '@lucca-front/ng/user';\nimport { map, startWith } from 'rxjs';\nimport { LuCoreSelectUser, LuCoreSelectWithAdditionnalInformation } from './user-option.model';\nimport { LU_CORE_SELECT_USER_TRANSLATIONS } from './user.translate';\nimport { LuCoreSelectUsersDirective } from './users.directive';\n\n@Component({\n\tselector: 'lu-user-option',\n\timports: [NgIf, AsyncPipe, LuUserDisplayPipe, ɵLuOptionOutletDirective],\n\ttemplate: `\n\t\t<ng-container *ngIf=\"context.option$ | async as user\">\n\t\t\t<div *ngIf=\"userDirective.displayMeOption() && user.id === userDirective.currentUserId && hasEmptyClue$ | async; else notMe\">\n\t\t\t\t<strong>{{ intl.me }}</strong\n\t\t\t\t>&ngsp;\n\t\t\t\t<strong translate=\"no\"><ng-container *luOptionOutlet=\"customUserOptionTpl() || defaultUserTpl; value: user\" /></strong>\n\t\t\t</div>\n\n\t\t\t<ng-template #notMe>\n\t\t\t\t<div *luOptionOutlet=\"customUserOptionTpl() || defaultUserTpl; value: user\"></div>\n\t\t\t</ng-template>\n\t\t\t<div class=\"lu-select-additionalInformation\" *ngIf=\"user.additionalInformation\">({{ user.additionalInformation }})</div>\n\t\t</ng-container>\n\n\t\t<ng-template #defaultUserTpl let-user>\n\t\t\t<span translate=\"no\">{{ user | luUserDisplay: userDirective.displayFormat() }}</span>\n\t\t</ng-template>\n\t`,\n\tstandalone: true,\n\tstyles: [\n\t\t`\n\t\t\t.lu-select-additionalInformation {\n\t\t\t\tfont-size: 80%;\n\t\t\t\tfont-style: italic;\n\t\t\t\tmargin-block-start: -0.25em;\n\t\t\t}\n\t\t`,\n\t],\n})\nexport class LuUserOptionComponent {\n\tprotected context = inject<ILuOptionContext<LuCoreSelectWithAdditionnalInformation<LuCoreSelectUser>>>(LU_OPTION_CONTEXT);\n\tprotected userDirective = inject(LuCoreSelectUsersDirective);\n\tprotected intl = getIntl(LU_CORE_SELECT_USER_TRANSLATIONS);\n\tprotected hasEmptyClue$ = this.userDirective.select.clueChange.pipe(\n\t\tstartWith(this.userDirective.select.clue),\n\t\tmap((clue) => !clue),\n\t);\n\tprotected customUserOptionTpl = this.userDirective.customUserOptionTpl;\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Directive, Input, Provider, TemplateRef, Type, booleanAttribute, computed, effect, forwardRef, inject, input, model, signal, untracked } from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { ILuApiCollectionResponse } from '@lucca-front/ng/api';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, CoreSelectApiTotalCountProvider, LuOptionContext, applySearchDelimiter } from '@lucca-front/ng/core-select';\nimport { ALuCoreSelectApiDirective } from '@lucca-front/ng/core-select/api';\nimport { LuDisplayFormat, LuDisplayFullname } from '@lucca-front/ng/user';\nimport { EMPTY, Observable, catchError, combineLatest, debounceTime, map, of, shareReplay, switchMap, take, tap } from 'rxjs';\nimport { FORMER_EMPLOYEES_CONTEXT, LuCoreSelectFormerEmployeesComponent } from './former-employees.component';\nimport { LU_CORE_SELECT_CURRENT_USER_ID } from './me.provider';\nimport { LuUserDisplayerComponent } from './user-displayer.component';\nimport { LuCoreSelectUserHomonymsService } from './user-homonym.service';\nimport { LuUserOptionComponent } from './user-option.component';\nimport { LuCoreSelectUser, LuCoreSelectWithAdditionnalInformation } from './user-option.model';\n\nexport function provideCoreSelectUsersContext<T extends LuCoreSelectUser = LuCoreSelectUser>(directiveFn: () => Type<LuCoreSelectUsersDirective<T>>): Provider[] {\n\treturn [\n\t\t...provideBaseCoreSelectUsersContext(directiveFn),\n\t\t{\n\t\t\tprovide: LuCoreSelectUsersDirective,\n\t\t\tuseExisting: forwardRef(directiveFn),\n\t\t},\n\t];\n}\n\nfunction provideBaseCoreSelectUsersContext<T extends LuCoreSelectUser = LuCoreSelectUser>(directiveFn: () => Type<LuCoreSelectUsersDirective<T>>): Provider[] {\n\treturn [\n\t\t{\n\t\t\tprovide: CORE_SELECT_API_TOTAL_COUNT_PROVIDER,\n\t\t\tuseExisting: forwardRef(directiveFn),\n\t\t},\n\t\t{\n\t\t\tprovide: FORMER_EMPLOYEES_CONTEXT,\n\t\t\tuseExisting: forwardRef(directiveFn),\n\t\t},\n\t];\n}\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[users],lu-multi-select[users]',\n\tstandalone: true,\n\texportAs: 'luUsers',\n\tproviders: [provideBaseCoreSelectUsersContext(() => LuCoreSelectUsersDirective)],\n})\nexport class LuCoreSelectUsersDirective<T extends LuCoreSelectUser = LuCoreSelectUser>\n\textends ALuCoreSelectApiDirective<LuCoreSelectWithAdditionnalInformation<T>>\n\timplements CoreSelectApiTotalCountProvider\n{\n\t#defaultSearchUrl = '/api/v3/users/search';\n\t#defaultScopedSearchUrl = '/api/v3/users/scopedsearch';\n\t#userHomonymsService = inject(LuCoreSelectUserHomonymsService);\n\n\t// Not overridable so it will ease employee API migration\n\t#userFields = 'id,firstName,lastName,picture.href';\n\n\tprotected httpClient = inject(HttpClient);\n\tpublic currentUserId = inject(LU_CORE_SELECT_CURRENT_USER_ID);\n\n\tdisplayFormat = input<LuDisplayFormat>(LuDisplayFullname.lastfirst);\n\n\tfilters = input<Record<string, string | number | boolean>>({});\n\turl = input<string | null>(null);\n\torderBy = input<string | null>(null);\n\toperationIds = input<readonly number[] | null>(null);\n\tuniqueOperationIds = input<readonly number[] | null>(null);\n\tappInstanceId = input<number | null>(null);\n\tenableFormerEmployees = input(false, { transform: booleanAttribute });\n\tdisplayMeOption = input(true);\n\tcustomUserOptionTpl = model<TemplateRef<LuOptionContext<T>> | Type<unknown> | undefined>();\n\n\tincludeFormerEmployees = signal(false);\n\tsearchDelimiter = input<string>(' ');\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.select.optionTpl.set(LuUserOptionComponent);\n\t\tthis.select.valueTpl.set(LuUserDisplayerComponent);\n\n\t\teffect(() => {\n\t\t\tconst enableFormerEmployees = this.enableFormerEmployees();\n\n\t\t\tif (enableFormerEmployees) {\n\t\t\t\tuntracked(() => this.select.panelHeaderTpl.set(LuCoreSelectFormerEmployeesComponent));\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected defaultUrl = computed(() => (this.uniqueOperationIds()?.length || (this.appInstanceId() && this.operationIds()?.length) ? this.#defaultScopedSearchUrl : this.#defaultSearchUrl));\n\tprotected urlOrDefault = computed(() => this.url() ?? this.defaultUrl());\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 orderBy = this.orderBy();\n\t\t\tconst clue = this.clue();\n\t\t\tconst operationIds = this.operationIds();\n\t\t\tconst uniqueOperationIds = this.uniqueOperationIds();\n\t\t\tconst appInstanceId = this.appInstanceId();\n\t\t\tconst searchDelimiter = this.searchDelimiter();\n\t\t\tconst formerEmployees = this.includeFormerEmployees();\n\n\t\t\treturn {\n\t\t\t\tfields: this.#userFields,\n\t\t\t\t...this.filters(),\n\t\t\t\t...(orderBy ? { orderBy } : {}),\n\t\t\t\t...(clue ? { clue: applySearchDelimiter(clue, searchDelimiter) } : {}),\n\t\t\t\t...(operationIds ? { operations: operationIds.join(',') } : {}),\n\t\t\t\t...(uniqueOperationIds ? { uniqueOperations: uniqueOperationIds.join(',') } : {}),\n\t\t\t\t...(appInstanceId ? { appInstanceId } : {}),\n\t\t\t\t...(formerEmployees ? { formerEmployees } : {}),\n\t\t\t};\n\t\t}),\n\t);\n\n\tprotected meParams$ = toObservable(\n\t\tcomputed(() => ({\n\t\t\tfields: this.#userFields,\n\t\t\t...this.filters(),\n\t\t\t...(this.uniqueOperationIds() ? { uniqueOperations: this.uniqueOperationIds().join(',') } : {}),\n\t\t\t...(this.operationIds() ? { operations: this.operationIds().join(',') } : {}),\n\t\t\t...(this.appInstanceId() ? { appInstanceId: this.appInstanceId() } : {}),\n\t\t\tid: this.currentUserId,\n\t\t})),\n\t);\n\n\tprotected me$ = this.meParams$.pipe(\n\t\tswitchMap((params) =>\n\t\t\tthis.httpClient\n\t\t\t\t.get<\n\t\t\t\t\tILuApiCollectionResponse<{\n\t\t\t\t\t\titem: T;\n\t\t\t\t\t}>\n\t\t\t\t>(this.urlOrDefault(), { params })\n\t\t\t\t.pipe(catchError(() => EMPTY)),\n\t\t),\n\t\tmap((res) => res.data.items.map(({ item }) => item)[0] ?? null),\n\t\ttakeUntilDestroyed(),\n\t\tshareReplay(1),\n\t);\n\n\tpublic totalCount$ = toObservable(computed(() => ({ url: this.urlOrDefault(), 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\tfields: 'collection.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 getMe(): Observable<T | null> {\n\t\treturn this.me$.pipe(take(1));\n\t}\n\n\tprotected getOptions(params: Record<string, string | number | boolean>, page: number): Observable<T[]> {\n\t\treturn this.httpClient\n\t\t\t.get<ILuApiCollectionResponse<{ item: T }>>(this.urlOrDefault(), {\n\t\t\t\tparams: {\n\t\t\t\t\t...params,\n\t\t\t\t\tpaging: `${page * this.pageSize},${this.pageSize}`,\n\t\t\t\t},\n\t\t\t})\n\t\t\t.pipe(map((res) => res.data.items.map(({ item }) => item)));\n\t}\n\n\tprotected override getOptionsPage(\n\t\tparams: Record<string, string | number | boolean>,\n\t\tpage: number,\n\t): Observable<{\n\t\titems: LuCoreSelectWithAdditionnalInformation<T>[];\n\t\tisLastPage: boolean;\n\t}> {\n\t\tconst hasClue = !!params['clue'];\n\t\tconst displayMe = this.displayMeOption() && !hasClue;\n\t\tconst prependMe = displayMe && page === 0;\n\n\t\tthis.select.loading = true;\n\n\t\tconst me$ = prependMe ? this.getMe() : of(null);\n\n\t\tconst users$ = this.getOptions(params, page).pipe(\n\t\t\tmap((users) => ({ items: users, isLastPage: users.length < this.pageSize })),\n\t\t\ttap(() => (this.select.loading = false)),\n\t\t);\n\n\t\tconst page$ = combineLatest([me$, users$]).pipe(\n\t\t\tmap(([me, { items, isLastPage }]) => {\n\t\t\t\t// If \"me\" is displayed as first option, we remove it from the list of users\n\t\t\t\tconst filteredItems = displayMe ? items.filter((u) => u.id !== this.currentUserId) : items;\n\t\t\t\treturn { items: me && prependMe ? [me, ...filteredItems] : filteredItems, isLastPage };\n\t\t\t}),\n\t\t);\n\n\t\treturn page$.pipe(\n\t\t\tswitchMap((page) =>\n\t\t\t\tthis.#userHomonymsService.handleHomonyms(page.items, this.displayFormat()).pipe(\n\t\t\t\t\tmap((items) => ({\n\t\t\t\t\t\titems,\n\t\t\t\t\t\tisLastPage: page.isLastPage,\n\t\t\t\t\t})),\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t}\n\n\tprotected override optionKey = (option: T) => option.id;\n}\n\n@Directive({\n\tselector: '[luUserOption]',\n\tstandalone: true,\n})\nexport class LuCoreSelectUserOptionDirective<T extends LuCoreSelectUser = LuCoreSelectUser> {\n\t#templateRef = inject(TemplateRef<LuOptionContext<T>>);\n\n\t@Input({ alias: 'luUserOptionUsersRef' }) set usersDirective(usersDirective: LuCoreSelectUsersDirective<T>) {\n\t\tusersDirective.customUserOptionTpl.set(this.#templateRef);\n\t}\n\n\tpublic static ngTemplateContextGuard<T extends LuCoreSelectUser>(_dir: LuCoreSelectUserOptionDirective<T>, ctx: unknown): ctx is { $implicit: T } {\n\t\treturn true;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵCoreSelectPanelElement","ɵLuOptionOutletDirective"],"mappings":"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"}
@@ -529,6 +529,8 @@ class ALuSelectInputComponent {
529
529
  this.coreIntl = getIntl(LU_CORE_SELECT_TRANSLATIONS);
530
530
  this.filterPillHost = inject(FILTER_PILL_HOST_COMPONENT, { optional: true });
531
531
  this.filterPillMode = false;
532
+ this.panelClosed = output();
533
+ this.panelOpened = output();
532
534
  this.placeholder$ = new BehaviorSubject('');
533
535
  this.disabled$ = new BehaviorSubject(false);
534
536
  this.filterPillDisabled = toSignal(this.disabled$);
@@ -686,6 +688,7 @@ class ALuSelectInputComponent {
686
688
  return;
687
689
  }
688
690
  this.isPanelOpen$.next(true);
691
+ this.panelOpened.emit();
689
692
  if (this.searchable) {
690
693
  this.clueChanged(clue);
691
694
  }
@@ -725,6 +728,7 @@ class ALuSelectInputComponent {
725
728
  if (!this.isPanelOpen) {
726
729
  return;
727
730
  }
731
+ this.panelClosed.emit();
728
732
  this.emptyClue();
729
733
  this.activeDescendant$.next('');
730
734
  this.changeDetectorRef.markForCheck();
@@ -776,7 +780,7 @@ class ALuSelectInputComponent {
776
780
  this.isPanelOpen$.next(false);
777
781
  }
778
782
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ALuSelectInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
779
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.2", type: ALuSelectInputComponent, isStandalone: true, inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, addOptionLabel: { classPropertyName: "addOptionLabel", publicName: "addOptionLabel", isSignal: false, isRequired: false, transformFunction: null }, addOptionStrategy: { classPropertyName: "addOptionStrategy", publicName: "addOptionStrategy", isSignal: false, isRequired: false, transformFunction: null }, overlayConfig: { classPropertyName: "overlayConfig", publicName: "overlayConfig", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, optionComparer: { classPropertyName: "optionComparer", publicName: "optionComparer", isSignal: false, isRequired: false, transformFunction: null }, optionKey: { classPropertyName: "optionKey", publicName: "optionKey", isSignal: false, isRequired: false, transformFunction: null }, noClueIcon: { classPropertyName: "noClueIcon", publicName: "noClueIcon", isSignal: true, isRequired: false, transformFunction: null }, inputTabindex: { classPropertyName: "inputTabindex", publicName: "inputTabindex", isSignal: true, isRequired: false, transformFunction: null }, optionTpl: { classPropertyName: "optionTpl", publicName: "optionTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, panelHeaderTpl: { classPropertyName: "panelHeaderTpl", publicName: "panelHeaderTpl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { optionTpl: "optionTplChange", valueTpl: "valueTplChange", panelHeaderTpl: "panelHeaderTplChange", clueChange: "clueChange", nextPage: "nextPage", previousPage: "previousPage", addOption: "addOption" }, host: { listeners: { "click": "onClickOpenPanel($event)", "keydown": "onKeyDownNavigation($event)" }, properties: { "class.is-clearable": "this.clearable", "class.is-selected": "this.isSelectedClass", "class.is-searchFilled": "this.isSearchFilledClass", "class.mod-noClueIcon": "this.isNoClueIconClass" } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0 }); }
783
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.2", type: ALuSelectInputComponent, isStandalone: true, inputs: { placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, addOptionLabel: { classPropertyName: "addOptionLabel", publicName: "addOptionLabel", isSignal: false, isRequired: false, transformFunction: null }, addOptionStrategy: { classPropertyName: "addOptionStrategy", publicName: "addOptionStrategy", isSignal: false, isRequired: false, transformFunction: null }, overlayConfig: { classPropertyName: "overlayConfig", publicName: "overlayConfig", isSignal: false, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: false, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: false, isRequired: false, transformFunction: null }, optionComparer: { classPropertyName: "optionComparer", publicName: "optionComparer", isSignal: false, isRequired: false, transformFunction: null }, optionKey: { classPropertyName: "optionKey", publicName: "optionKey", isSignal: false, isRequired: false, transformFunction: null }, noClueIcon: { classPropertyName: "noClueIcon", publicName: "noClueIcon", isSignal: true, isRequired: false, transformFunction: null }, inputTabindex: { classPropertyName: "inputTabindex", publicName: "inputTabindex", isSignal: true, isRequired: false, transformFunction: null }, optionTpl: { classPropertyName: "optionTpl", publicName: "optionTpl", isSignal: true, isRequired: false, transformFunction: null }, valueTpl: { classPropertyName: "valueTpl", publicName: "valueTpl", isSignal: true, isRequired: false, transformFunction: null }, panelHeaderTpl: { classPropertyName: "panelHeaderTpl", publicName: "panelHeaderTpl", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { panelClosed: "panelClosed", panelOpened: "panelOpened", optionTpl: "optionTplChange", valueTpl: "valueTplChange", panelHeaderTpl: "panelHeaderTplChange", clueChange: "clueChange", nextPage: "nextPage", previousPage: "previousPage", addOption: "addOption" }, host: { listeners: { "click": "onClickOpenPanel($event)", "keydown": "onKeyDownNavigation($event)" }, properties: { "class.is-clearable": "this.clearable", "class.is-selected": "this.isSelectedClass", "class.is-searchFilled": "this.isSearchFilledClass", "class.mod-noClueIcon": "this.isNoClueIconClass" } }, viewQueries: [{ propertyName: "inputElementRef", first: true, predicate: ["inputElement"], descendants: true }], ngImport: i0 }); }
780
784
  }
781
785
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.2", ngImport: i0, type: ALuSelectInputComponent, decorators: [{
782
786
  type: Directive