@fundamental-ngx/core 0.36.0-rc.19 → 0.36.0-rc.21

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 (129) hide show
  1. package/action-bar/package.json +1 -1
  2. package/action-sheet/package.json +1 -1
  3. package/alert/package.json +1 -1
  4. package/avatar/package.json +1 -1
  5. package/avatar-group/package.json +1 -1
  6. package/bar/package.json +1 -1
  7. package/breadcrumb/package.json +1 -1
  8. package/busy-indicator/package.json +1 -1
  9. package/button/package.json +1 -1
  10. package/calendar/package.json +1 -1
  11. package/card/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/checkbox/package.json +1 -1
  14. package/combobox/package.json +1 -1
  15. package/content-density/package.json +2 -2
  16. package/date-picker/package.json +1 -1
  17. package/datetime/package.json +1 -1
  18. package/datetime-picker/package.json +1 -1
  19. package/dialog/package.json +1 -1
  20. package/dynamic-page/package.json +1 -1
  21. package/dynamic-side-content/package.json +1 -1
  22. package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +23 -13
  23. package/esm2020/feed-list-item/components/list/feed-list.component.mjs +5 -1
  24. package/esm2020/feed-list-item/feed-list-item.module.mjs +4 -5
  25. package/esm2020/utils/directives/truncate/truncate.directive.mjs +27 -96
  26. package/esm2020/utils/pipes/pipe.module.mjs +33 -4
  27. package/esm2020/utils/pipes/truncate.pipe.mjs +16 -0
  28. package/esm2020/utils/public_api.mjs +2 -1
  29. package/facets/package.json +1 -1
  30. package/feed-input/package.json +1 -1
  31. package/feed-list-item/components/item/feed-list-item.component.d.ts +6 -6
  32. package/feed-list-item/esm2020/components/item/feed-list-item.component.mjs +23 -13
  33. package/feed-list-item/esm2020/components/list/feed-list.component.mjs +5 -1
  34. package/feed-list-item/esm2020/feed-list-item.module.mjs +4 -5
  35. package/feed-list-item/feed-list-item.module.d.ts +1 -1
  36. package/feed-list-item/fesm2015/fundamental-ngx-core-feed-list-item.mjs +29 -15
  37. package/feed-list-item/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  38. package/feed-list-item/fesm2020/fundamental-ngx-core-feed-list-item.mjs +29 -15
  39. package/feed-list-item/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  40. package/feed-list-item/package.json +1 -1
  41. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +29 -15
  42. package/fesm2015/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  43. package/fesm2015/fundamental-ngx-core-utils.mjs +71 -96
  44. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  45. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +29 -15
  46. package/fesm2020/fundamental-ngx-core-feed-list-item.mjs.map +1 -1
  47. package/fesm2020/fundamental-ngx-core-utils.mjs +71 -96
  48. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  49. package/file-uploader/package.json +1 -1
  50. package/fixed-card-layout/package.json +1 -1
  51. package/flexible-column-layout/package.json +1 -1
  52. package/form/package.json +1 -1
  53. package/formatted-text/package.json +1 -1
  54. package/grid-list/package.json +1 -1
  55. package/icon/package.json +1 -1
  56. package/illustrated-message/package.json +1 -1
  57. package/infinite-scroll/package.json +1 -1
  58. package/info-label/package.json +1 -1
  59. package/inline-help/package.json +1 -1
  60. package/input-group/package.json +1 -1
  61. package/layout-grid/package.json +1 -1
  62. package/layout-panel/package.json +1 -1
  63. package/link/package.json +1 -1
  64. package/list/package.json +1 -1
  65. package/menu/package.json +1 -1
  66. package/message-box/package.json +1 -1
  67. package/message-strip/package.json +1 -1
  68. package/message-toast/package.json +1 -1
  69. package/micro-process-flow/package.json +1 -1
  70. package/mobile-mode/package.json +1 -1
  71. package/multi-input/package.json +1 -1
  72. package/nested-list/package.json +1 -1
  73. package/notification/package.json +1 -1
  74. package/object-identifier/package.json +1 -1
  75. package/object-marker/package.json +1 -1
  76. package/object-number/package.json +1 -1
  77. package/object-status/package.json +1 -1
  78. package/overflow-layout/package.json +4 -4
  79. package/package.json +2 -2
  80. package/pagination/package.json +1 -1
  81. package/panel/package.json +1 -1
  82. package/popover/package.json +1 -1
  83. package/product-switch/package.json +1 -1
  84. package/progress-indicator/package.json +1 -1
  85. package/quick-view/package.json +1 -1
  86. package/radio/package.json +1 -1
  87. package/rating-indicator/package.json +1 -1
  88. package/resizable-card-layout/package.json +1 -1
  89. package/scroll-spy/package.json +1 -1
  90. package/scrollbar/package.json +1 -1
  91. package/segmented-button/package.json +1 -1
  92. package/select/package.json +1 -1
  93. package/shared/package.json +1 -1
  94. package/shellbar/package.json +1 -1
  95. package/side-navigation/package.json +1 -1
  96. package/slider/package.json +1 -1
  97. package/split-button/package.json +1 -1
  98. package/splitter/package.json +1 -1
  99. package/status-indicator/package.json +1 -1
  100. package/step-input/package.json +1 -1
  101. package/switch/package.json +1 -1
  102. package/table/package.json +1 -1
  103. package/tabs/package.json +1 -1
  104. package/text/package.json +1 -1
  105. package/theming/package.json +1 -1
  106. package/tile/package.json +1 -1
  107. package/time/package.json +1 -1
  108. package/time-picker/package.json +1 -1
  109. package/timeline/package.json +1 -1
  110. package/title/package.json +1 -1
  111. package/token/package.json +1 -1
  112. package/toolbar/package.json +1 -1
  113. package/tree/package.json +1 -1
  114. package/upload-collection/package.json +1 -1
  115. package/utils/directives/truncate/truncate.directive.d.ts +21 -51
  116. package/utils/esm2020/directives/truncate/truncate.directive.mjs +27 -96
  117. package/utils/esm2020/pipes/pipe.module.mjs +33 -4
  118. package/utils/esm2020/pipes/truncate.pipe.mjs +16 -0
  119. package/utils/esm2020/public_api.mjs +2 -1
  120. package/utils/fesm2015/fundamental-ngx-core-utils.mjs +71 -96
  121. package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  122. package/utils/fesm2020/fundamental-ngx-core-utils.mjs +71 -96
  123. package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  124. package/utils/package.json +1 -1
  125. package/utils/pipes/pipe.module.d.ts +2 -1
  126. package/utils/pipes/truncate.pipe.d.ts +7 -0
  127. package/utils/public_api.d.ts +1 -0
  128. package/vertical-navigation/package.json +1 -1
  129. package/wizard/package.json +1 -1
@@ -72,6 +72,10 @@ export class FeedListComponent {
72
72
  _refreshItems() {
73
73
  (this.feedItems || []).forEach((feedItem) => {
74
74
  feedItem.mobile = this.mobile;
75
+ if (feedItem.maxCharsAtDefault && this.mobile) {
76
+ feedItem.setDefaultMaxChars();
77
+ feedItem.setHasMore();
78
+ }
75
79
  });
76
80
  }
77
81
  }
@@ -107,4 +111,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
107
111
  * function is responsible for order which css classes are applied
108
112
  */
109
113
  buildComponentCssClass: [] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2ZlZWQtbGlzdC1pdGVtL2NvbXBvbmVudHMvbGlzdC9mZWVkLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmVlZC1saXN0LWl0ZW0vY29tcG9uZW50cy9saXN0L2ZlZWQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUtMLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQVN6RSxNQUFNLE9BQU8saUJBQWlCO0lBc0MxQixjQUFjO0lBQ2QsWUFBNkIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFuQ3BEOztXQUVHO1FBRUgsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQU1mOztXQUVHO1FBRUgsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmOztXQUVHO1FBRUgsZUFBVSxHQUFHLEtBQUssQ0FBQztJQVdvQyxDQUFDO0lBRXhELGNBQWM7SUFDZCxxQkFBcUI7UUFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksUUFBUSxJQUFJLE9BQU8sSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFO1lBQ2hELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFPRCxBQUpBOzs7T0FHRztJQUNILHNCQUFzQjtRQUNsQixPQUFPO1lBQ0gsY0FBYyxDQUFDLElBQUk7WUFDbkIsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNqRCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGNBQWM7SUFDTixhQUFhO1FBQ2pCLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN4QyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs4R0EvRlEsaUJBQWlCO2tHQUFqQixpQkFBaUIsb09BZ0NULHFCQUFxQixrREM1RDFDLDBEQUNBO0FEaUdJO0lBTEMsYUFBYTs7OzsrREFhYjsyRkE5RVEsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNJLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTTtpR0FLL0MsS0FBSztzQkFESixLQUFLO2dCQU1OLFNBQVM7c0JBRFIsS0FBSztnQkFNTixjQUFjO3NCQURiLEtBQUs7Z0JBTU4sTUFBTTtzQkFETCxLQUFLO2dCQU1OLE9BQU87c0JBRE4sS0FBSztnQkFNTixVQUFVO3NCQURULEtBQUs7Z0JBTU4sU0FBUztzQkFEUixlQUFlO3VCQUFDLHFCQUFxQjs7UUFrQ3RDOzs7V0FHRztRQUNILHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgUXVlcnlMaXN0LFxuICAgIEFmdGVyQ29udGVudENoZWNrZWRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGFwcGx5Q3NzQ2xhc3MgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgQ3NzQ2xhc3NCdWlsZGVyIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcblxuaW1wb3J0IHsgQ1NTX0NMQVNTX05BTUUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRmVlZExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vaXRlbS9mZWVkLWxpc3QtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkLWZlZWQtbGlzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZlZWQtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmVlZC1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGZWVkTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIENzc0NsYXNzQnVpbGRlciB7XG4gICAgLyoqIFVzZXIncyBjdXN0b20gY2xhc3NlcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgY2xhc3M6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIHRvIHRoZSBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsID0gJyc7XG4gICAgLyoqXG4gICAgICogYXJpYS1sYWJlbGxlZGJ5IGZvciBlbGVtZW50IGRlc2NyaWJpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcmlhTGFiZWxsZWRieTogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFwcGx5IG1vYmlsZSB2aWV3XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBtb2JpbGUgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBGZWVkIGxpc3QgaXRlbXMgd2lsbCBiZSBkaXNwbGF5IGluIGEgZ3JvdXAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBpc0dyb3VwID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBJdCByZW1vdmVzIGJvcmRlciBpZiBpdGVtcyBhcmUgZGlzcGxheWluZyBpbiBhIGdyb3VwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYm9yZGVyTGVzcyA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIEdldHMgZmVlZCBsaXN0IGl0ZW1zXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihGZWVkTGlzdEl0ZW1Db21wb25lbnQpXG4gICAgZmVlZEl0ZW1zOiBRdWVyeUxpc3Q8RmVlZExpc3RJdGVtQ29tcG9uZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSAkZmVlZEl0ZW1DaGFuZ2VzOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVmcmVzaEl0ZW1zKCk7XG4gICAgICAgIHRoaXMuX2xpc3Rlbk9uRmVlZEl0ZW1zKCk7XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKCdtb2JpbGUnIGluIGNoYW5nZXMgfHwgJ2JvcmRlckxlc3MnIGluIGNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb21wb25lbnRDc3NDbGFzcygpO1xuICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy4kZmVlZEl0ZW1DaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLiRmZWVkSXRlbUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBhcHBseUNzc0NsYXNzXG4gICAgLyoqIENzc0NsYXNzQnVpbGRlciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb25cbiAgICAgKiBmdW5jdGlvbiBtdXN0IHJldHVybiBzaW5nbGUgc3RyaW5nXG4gICAgICogZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIG9yZGVyIHdoaWNoIGNzcyBjbGFzc2VzIGFyZSBhcHBsaWVkXG4gICAgICovXG4gICAgYnVpbGRDb21wb25lbnRDc3NDbGFzcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBDU1NfQ0xBU1NfTkFNRS5saXN0LFxuICAgICAgICAgICAgdGhpcy5jbGFzcyxcbiAgICAgICAgICAgIHRoaXMuYm9yZGVyTGVzcyA/IGAke0NTU19DTEFTU19OQU1FLmxpc3R9LS1uby1ib3JkZXJgIDogJycsXG4gICAgICAgICAgICB0aGlzLmlzR3JvdXAgPyBgJHtDU1NfQ0xBU1NfTkFNRS5saXN0fS0tZ3JvdXBgIDogJycsXG4gICAgICAgICAgICB0aGlzLm1vYmlsZSA/IGAke0NTU19DTEFTU19OQU1FLmxpc3R9LS1zYCA6ICcnXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBlbGVtZW50UmVmKCk6IEVsZW1lbnRSZWY8YW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGlzdGVuT25GZWVkSXRlbXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuJGZlZWRJdGVtQ2hhbmdlcyA9IHRoaXMuZmVlZEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3JlZnJlc2hJdGVtcygpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hJdGVtcygpOiB2b2lkIHtcbiAgICAgICAgKHRoaXMuZmVlZEl0ZW1zIHx8IFtdKS5mb3JFYWNoKChmZWVkSXRlbSkgPT4ge1xuICAgICAgICAgICAgZmVlZEl0ZW0ubW9iaWxlID0gdGhpcy5tb2JpbGU7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250ZW50IHNlbGVjdD1cImZkLWZlZWQtbGlzdC1pdGVtXCI+PC9uZy1jb250ZW50PlxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2ZlZWQtbGlzdC1pdGVtL2NvbXBvbmVudHMvbGlzdC9mZWVkLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmVlZC1saXN0LWl0ZW0vY29tcG9uZW50cy9saXN0L2ZlZWQtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxFQUtMLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsZUFBZSxFQUNmLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOztBQVN6RSxNQUFNLE9BQU8saUJBQWlCO0lBc0MxQixjQUFjO0lBQ2QsWUFBNkIsV0FBdUI7UUFBdkIsZ0JBQVcsR0FBWCxXQUFXLENBQVk7UUFuQ3BEOztXQUVHO1FBRUgsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQU1mOztXQUVHO1FBRUgsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmOztXQUVHO1FBRUgsZUFBVSxHQUFHLEtBQUssQ0FBQztJQVdvQyxDQUFDO0lBRXhELGNBQWM7SUFDZCxxQkFBcUI7UUFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxjQUFjO0lBQ2QsUUFBUTtRQUNKLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFDRCxjQUFjO0lBQ2QsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksUUFBUSxJQUFJLE9BQU8sSUFBSSxZQUFZLElBQUksT0FBTyxFQUFFO1lBQ2hELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUN4QjtJQUNMLENBQUM7SUFFRCxjQUFjO0lBQ2QsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN2QztJQUNMLENBQUM7SUFPRCxBQUpBOzs7T0FHRztJQUNILHNCQUFzQjtRQUNsQixPQUFPO1lBQ0gsY0FBYyxDQUFDLElBQUk7WUFDbkIsSUFBSSxDQUFDLEtBQUs7WUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtTQUNqRCxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7SUFDZCxVQUFVO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRCxjQUFjO0lBQ04sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVELGNBQWM7SUFDTixhQUFhO1FBQ2pCLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN4QyxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDOUIsSUFBSSxRQUFRLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDM0MsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzlCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUN6QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7OEdBbkdRLGlCQUFpQjtrR0FBakIsaUJBQWlCLG9PQWdDVCxxQkFBcUIsa0RDNUQxQywwREFDQTtBRGlHSTtJQUxDLGFBQWE7Ozs7K0RBYWI7MkZBOUVRLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFDSSxjQUFjLGlCQUdULGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU07aUdBSy9DLEtBQUs7c0JBREosS0FBSztnQkFNTixTQUFTO3NCQURSLEtBQUs7Z0JBTU4sY0FBYztzQkFEYixLQUFLO2dCQU1OLE1BQU07c0JBREwsS0FBSztnQkFNTixPQUFPO3NCQUROLEtBQUs7Z0JBTU4sVUFBVTtzQkFEVCxLQUFLO2dCQU1OLFNBQVM7c0JBRFIsZUFBZTt1QkFBQyxxQkFBcUI7O1FBa0N0Qzs7O1dBR0c7UUFDSCxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25DaGFuZ2VzLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBBZnRlckNvbnRlbnRDaGVja2VkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhcHBseUNzc0NsYXNzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IENzc0NsYXNzQnVpbGRlciB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5cbmltcG9ydCB7IENTU19DTEFTU19OQU1FIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEZlZWRMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2l0ZW0vZmVlZC1saXN0LWl0ZW0uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC1mZWVkLWxpc3QnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mZWVkLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZlZWQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRmVlZExpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBDc3NDbGFzc0J1aWxkZXIge1xuICAgIC8qKiBVc2VyJ3MgY3VzdG9tIGNsYXNzZXMgKi9cbiAgICBASW5wdXQoKVxuICAgIGNsYXNzOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZSB0byB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbCA9ICcnO1xuICAgIC8qKlxuICAgICAqIGFyaWEtbGFiZWxsZWRieSBmb3IgZWxlbWVudCBkZXNjcmliaW5nLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXJpYUxhYmVsbGVkYnk6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBcHBseSBtb2JpbGUgdmlld1xuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgbW9iaWxlID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRmVlZCBsaXN0IGl0ZW1zIHdpbGwgYmUgZGlzcGxheSBpbiBhIGdyb3VwLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNHcm91cCA9IHRydWU7XG4gICAgLyoqXG4gICAgICogSXQgcmVtb3ZlcyBib3JkZXIgaWYgaXRlbXMgYXJlIGRpc3BsYXlpbmcgaW4gYSBncm91cC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGJvcmRlckxlc3MgPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBHZXRzIGZlZWQgbGlzdCBpdGVtc1xuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRmVlZExpc3RJdGVtQ29tcG9uZW50KVxuICAgIGZlZWRJdGVtczogUXVlcnlMaXN0PEZlZWRMaXN0SXRlbUNvbXBvbmVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgJGZlZWRJdGVtQ2hhbmdlczogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hJdGVtcygpO1xuICAgICAgICB0aGlzLl9saXN0ZW5PbkZlZWRJdGVtcygpO1xuICAgIH1cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmICgnbW9iaWxlJyBpbiBjaGFuZ2VzIHx8ICdib3JkZXJMZXNzJyBpbiBjaGFuZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hJdGVtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuJGZlZWRJdGVtQ2hhbmdlcykge1xuICAgICAgICAgICAgdGhpcy4kZmVlZEl0ZW1DaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBAYXBwbHlDc3NDbGFzc1xuICAgIC8qKiBDc3NDbGFzc0J1aWxkZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uXG4gICAgICogZnVuY3Rpb24gbXVzdCByZXR1cm4gc2luZ2xlIHN0cmluZ1xuICAgICAqIGZ1bmN0aW9uIGlzIHJlc3BvbnNpYmxlIGZvciBvcmRlciB3aGljaCBjc3MgY2xhc3NlcyBhcmUgYXBwbGllZFxuICAgICAqL1xuICAgIGJ1aWxkQ29tcG9uZW50Q3NzQ2xhc3MoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgQ1NTX0NMQVNTX05BTUUubGlzdCxcbiAgICAgICAgICAgIHRoaXMuY2xhc3MsXG4gICAgICAgICAgICB0aGlzLmJvcmRlckxlc3MgPyBgJHtDU1NfQ0xBU1NfTkFNRS5saXN0fS0tbm8tYm9yZGVyYCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5pc0dyb3VwID8gYCR7Q1NTX0NMQVNTX05BTUUubGlzdH0tLWdyb3VwYCA6ICcnLFxuICAgICAgICAgICAgdGhpcy5tb2JpbGUgPyBgJHtDU1NfQ0xBU1NfTkFNRS5saXN0fS0tc2AgOiAnJ1xuICAgICAgICBdO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZWxlbWVudFJlZigpOiBFbGVtZW50UmVmPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2xpc3Rlbk9uRmVlZEl0ZW1zKCk6IHZvaWQge1xuICAgICAgICB0aGlzLiRmZWVkSXRlbUNoYW5nZXMgPSB0aGlzLmZlZWRJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9yZWZyZXNoSXRlbXMoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoSXRlbXMoKTogdm9pZCB7XG4gICAgICAgICh0aGlzLmZlZWRJdGVtcyB8fCBbXSkuZm9yRWFjaCgoZmVlZEl0ZW0pID0+IHtcbiAgICAgICAgICAgIGZlZWRJdGVtLm1vYmlsZSA9IHRoaXMubW9iaWxlO1xuICAgICAgICAgICAgaWYgKGZlZWRJdGVtLm1heENoYXJzQXREZWZhdWx0ICYmIHRoaXMubW9iaWxlKSB7XG4gICAgICAgICAgICAgICAgZmVlZEl0ZW0uc2V0RGVmYXVsdE1heENoYXJzKCk7XG4gICAgICAgICAgICAgICAgZmVlZEl0ZW0uc2V0SGFzTW9yZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJmZC1mZWVkLWxpc3QtaXRlbVwiPjwvbmctY29udGVudD5cbiJdfQ==
@@ -9,7 +9,6 @@ import { FeedListActionComponent } from './components/feed-list-action/feed-list
9
9
  import { FeedListFooterComponent } from './components/feed-list-footer/feed-list-footer.component';
10
10
  import { FeedListFooterBylineDirective } from './directives/byline.directive';
11
11
  import { PipeModule } from '@fundamental-ngx/core/utils';
12
- import { TruncateModule } from '@fundamental-ngx/core/utils';
13
12
  import { I18nModule } from '@fundamental-ngx/i18n';
14
13
  import * as i0 from "@angular/core";
15
14
  export class FeedListItemModule {
@@ -20,13 +19,13 @@ FeedListItemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
20
19
  FeedListAvatarComponent,
21
20
  FeedListActionComponent,
22
21
  FeedListFooterComponent,
23
- FeedListFooterBylineDirective], imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule], exports: [FeedListComponent,
22
+ FeedListFooterBylineDirective], imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule], exports: [FeedListComponent,
24
23
  FeedListItemComponent,
25
24
  FeedListAvatarComponent,
26
25
  FeedListActionComponent,
27
26
  FeedListFooterComponent,
28
27
  FeedListFooterBylineDirective] });
29
- FeedListItemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule] });
28
+ FeedListItemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule] });
30
29
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, decorators: [{
31
30
  type: NgModule,
32
31
  args: [{
@@ -38,7 +37,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
38
37
  FeedListFooterComponent,
39
38
  FeedListFooterBylineDirective
40
39
  ],
41
- imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule],
40
+ imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule],
42
41
  exports: [
43
42
  FeedListComponent,
44
43
  FeedListItemComponent,
@@ -49,4 +48,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
49
48
  ]
50
49
  }]
51
50
  }] });
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1saXN0LWl0ZW0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmVlZC1saXN0LWl0ZW0vZmVlZC1saXN0LWl0ZW0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFxQm5ELE1BQU0sT0FBTyxrQkFBa0I7OytHQUFsQixrQkFBa0I7Z0hBQWxCLGtCQUFrQixpQkFqQnZCLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsNkJBQTZCLGFBRXZCLFlBQVksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxVQUFVLGFBRTNGLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsNkJBQTZCO2dIQUd4QixrQkFBa0IsWUFWakIsWUFBWSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFVBQVU7MkZBVXRGLGtCQUFrQjtrQkFuQjlCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7cUJBQ2hDO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUM7b0JBQ2hHLE9BQU8sRUFBRTt3QkFDTCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2Qix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsNkJBQTZCO3FCQUNoQztpQkFDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQgeyBMaW5rTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2xpbmsnO1xuaW1wb3J0IHsgRm9ybWF0dGVkVGV4dE1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9mb3JtYXR0ZWQtdGV4dCc7XG5pbXBvcnQgeyBGZWVkTGlzdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaXRlbS9mZWVkLWxpc3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmVlZExpc3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGlzdC9mZWVkLWxpc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEZlZWRMaXN0QXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZlZWQtbGlzdC1hdmF0YXIvZmVlZC1saXN0LWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmVlZExpc3RBY3Rpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmVlZC1saXN0LWFjdGlvbi9mZWVkLWxpc3QtYWN0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGZWVkTGlzdEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mZWVkLWxpc3QtZm9vdGVyL2ZlZWQtbGlzdC1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEZlZWRMaXN0Rm9vdGVyQnlsaW5lRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2J5bGluZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUGlwZU1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBUcnVuY2F0ZU1vZHVsZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS91dGlscyc7XG5pbXBvcnQgeyBJMThuTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9pMThuJztcblxuQE5nTW9kdWxlKHtcbiAgICBkZWNsYXJhdGlvbnM6IFtcbiAgICAgICAgRmVlZExpc3RDb21wb25lbnQsXG4gICAgICAgIEZlZWRMaXN0SXRlbUNvbXBvbmVudCxcbiAgICAgICAgRmVlZExpc3RBdmF0YXJDb21wb25lbnQsXG4gICAgICAgIEZlZWRMaXN0QWN0aW9uQ29tcG9uZW50LFxuICAgICAgICBGZWVkTGlzdEZvb3RlckNvbXBvbmVudCxcbiAgICAgICAgRmVlZExpc3RGb290ZXJCeWxpbmVEaXJlY3RpdmVcbiAgICBdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFBpcGVNb2R1bGUsIEZvcm1hdHRlZFRleHRNb2R1bGUsIExpbmtNb2R1bGUsIFRydW5jYXRlTW9kdWxlLCBJMThuTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbXG4gICAgICAgIEZlZWRMaXN0Q29tcG9uZW50LFxuICAgICAgICBGZWVkTGlzdEl0ZW1Db21wb25lbnQsXG4gICAgICAgIEZlZWRMaXN0QXZhdGFyQ29tcG9uZW50LFxuICAgICAgICBGZWVkTGlzdEFjdGlvbkNvbXBvbmVudCxcbiAgICAgICAgRmVlZExpc3RGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEZlZWRMaXN0Rm9vdGVyQnlsaW5lRGlyZWN0aXZlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBGZWVkTGlzdEl0ZW1Nb2R1bGUge31cbiJdfQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZC1saXN0LWl0ZW0ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZmVlZC1saXN0LWl0ZW0vZmVlZC1saXN0LWl0ZW0ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNuRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQXFCbkQsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQWpCdkIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLHVCQUF1QjtRQUN2Qiw2QkFBNkIsYUFFdkIsWUFBWSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxhQUUzRSxpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLHVCQUF1QjtRQUN2Qix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLDZCQUE2QjtnSEFHeEIsa0JBQWtCLFlBVmpCLFlBQVksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFVBQVU7MkZBVXRFLGtCQUFrQjtrQkFuQjlCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFO3dCQUNWLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7cUJBQ2hDO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQztvQkFDaEYsT0FBTyxFQUFFO3dCQUNMLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLHVCQUF1Qjt3QkFDdkIsdUJBQXVCO3dCQUN2Qiw2QkFBNkI7cUJBQ2hDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IExpbmtNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbGluayc7XG5pbXBvcnQgeyBGb3JtYXR0ZWRUZXh0TW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Zvcm1hdHRlZC10ZXh0JztcbmltcG9ydCB7IEZlZWRMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9pdGVtL2ZlZWQtbGlzdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGZWVkTGlzdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9saXN0L2ZlZWQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmVlZExpc3RBdmF0YXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvZmVlZC1saXN0LWF2YXRhci9mZWVkLWxpc3QtYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGZWVkTGlzdEFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9mZWVkLWxpc3QtYWN0aW9uL2ZlZWQtbGlzdC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEZlZWRMaXN0Rm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2ZlZWQtbGlzdC1mb290ZXIvZmVlZC1saXN0LWZvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmVlZExpc3RGb290ZXJCeWxpbmVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvYnlsaW5lLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBQaXBlTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEkxOG5Nb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBGZWVkTGlzdENvbXBvbmVudCxcbiAgICAgICAgRmVlZExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBGZWVkTGlzdEF2YXRhckNvbXBvbmVudCxcbiAgICAgICAgRmVlZExpc3RBY3Rpb25Db21wb25lbnQsXG4gICAgICAgIEZlZWRMaXN0Rm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBGZWVkTGlzdEZvb3RlckJ5bGluZURpcmVjdGl2ZVxuICAgIF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUGlwZU1vZHVsZSwgRm9ybWF0dGVkVGV4dE1vZHVsZSwgTGlua01vZHVsZSwgSTE4bk1vZHVsZV0sXG4gICAgZXhwb3J0czogW1xuICAgICAgICBGZWVkTGlzdENvbXBvbmVudCxcbiAgICAgICAgRmVlZExpc3RJdGVtQ29tcG9uZW50LFxuICAgICAgICBGZWVkTGlzdEF2YXRhckNvbXBvbmVudCxcbiAgICAgICAgRmVlZExpc3RBY3Rpb25Db21wb25lbnQsXG4gICAgICAgIEZlZWRMaXN0Rm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBGZWVkTGlzdEZvb3RlckJ5bGluZURpcmVjdGl2ZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRmVlZExpc3RJdGVtTW9kdWxlIHt9XG4iXX0=
@@ -12,6 +12,6 @@ import * as i10 from "@fundamental-ngx/core/link";
12
12
  import * as i11 from "@fundamental-ngx/i18n";
13
13
  export declare class FeedListItemModule {
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<FeedListItemModule, never>;
15
- static ɵmod: i0.ɵɵNgModuleDeclaration<FeedListItemModule, [typeof i1.FeedListComponent, typeof i2.FeedListItemComponent, typeof i3.FeedListAvatarComponent, typeof i4.FeedListActionComponent, typeof i5.FeedListFooterComponent, typeof i6.FeedListFooterBylineDirective], [typeof i7.CommonModule, typeof i8.PipeModule, typeof i9.FormattedTextModule, typeof i10.LinkModule, typeof i8.TruncateModule, typeof i11.I18nModule], [typeof i1.FeedListComponent, typeof i2.FeedListItemComponent, typeof i3.FeedListAvatarComponent, typeof i4.FeedListActionComponent, typeof i5.FeedListFooterComponent, typeof i6.FeedListFooterBylineDirective]>;
15
+ static ɵmod: i0.ɵɵNgModuleDeclaration<FeedListItemModule, [typeof i1.FeedListComponent, typeof i2.FeedListItemComponent, typeof i3.FeedListAvatarComponent, typeof i4.FeedListActionComponent, typeof i5.FeedListFooterComponent, typeof i6.FeedListFooterBylineDirective], [typeof i7.CommonModule, typeof i8.PipeModule, typeof i9.FormattedTextModule, typeof i10.LinkModule, typeof i11.I18nModule], [typeof i1.FeedListComponent, typeof i2.FeedListItemComponent, typeof i3.FeedListAvatarComponent, typeof i4.FeedListActionComponent, typeof i5.FeedListFooterComponent, typeof i6.FeedListFooterBylineDirective]>;
16
16
  static ɵinj: i0.ɵɵInjectorDeclaration<FeedListItemModule>;
17
17
  }
@@ -8,7 +8,7 @@ import * as i2 from '@fundamental-ngx/core/formatted-text';
8
8
  import { FormattedTextModule } from '@fundamental-ngx/core/formatted-text';
9
9
  import { __decorate, __metadata } from 'tslib';
10
10
  import * as i4 from '@fundamental-ngx/core/utils';
11
- import { applyCssClass, PipeModule, TruncateModule } from '@fundamental-ngx/core/utils';
11
+ import { applyCssClass, PipeModule } from '@fundamental-ngx/core/utils';
12
12
  import * as i5 from '@fundamental-ngx/i18n';
13
13
  import { I18nModule } from '@fundamental-ngx/i18n';
14
14
 
@@ -19,9 +19,8 @@ const CSS_CLASS_NAME = {
19
19
 
20
20
  class FeedListItemComponent {
21
21
  /** @hidden */
22
- constructor(_elementRef, _changeDetectorRef) {
22
+ constructor(_elementRef) {
23
23
  this._elementRef = _elementRef;
24
- this._changeDetectorRef = _changeDetectorRef;
25
24
  /**
26
25
  * Sets the `aria-label` attribute to the element.
27
26
  */
@@ -35,6 +34,7 @@ class FeedListItemComponent {
35
34
  * Apply mobile view
36
35
  */
37
36
  this.mobile = false;
37
+ this.maxCharsAtDefault = false;
38
38
  /**
39
39
  * Apply body class by default
40
40
  */
@@ -48,15 +48,30 @@ class FeedListItemComponent {
48
48
  */
49
49
  this.hasMore = false;
50
50
  }
51
+ setHasMore() {
52
+ if (this.text) {
53
+ this.hasMore = this.text.length > this.maxChars;
54
+ }
55
+ }
56
+ setDefaultMaxChars() {
57
+ this.maxChars = this.mobile ? 300 : 500;
58
+ }
51
59
  /** @hidden */
52
60
  ngOnInit() {
53
61
  this.buildComponentCssClass();
62
+ if (!this.maxChars) {
63
+ this.setDefaultMaxChars();
64
+ this.maxCharsAtDefault = true;
65
+ }
66
+ this.setHasMore();
54
67
  }
55
68
  /** @hidden */
56
69
  ngOnChanges(changes) {
57
70
  if ('class' in changes || 'isRichText' in changes) {
58
71
  this.buildComponentCssClass();
59
72
  }
73
+ this.maxCharsAtDefault && this.setDefaultMaxChars();
74
+ this.setHasMore();
60
75
  }
61
76
  /** CssClassBuilder interface implementation
62
77
  * function must return single string
@@ -73,14 +88,9 @@ class FeedListItemComponent {
73
88
  toggleTextView() {
74
89
  this.isCollapsed = !this.isCollapsed;
75
90
  }
76
- /** @hidden */
77
- checkCharCount(isMore) {
78
- this.hasMore = isMore;
79
- this._changeDetectorRef.detectChanges();
80
- }
81
91
  }
82
- FeedListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
83
- FeedListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FeedListItemComponent, selector: "fd-feed-list-item", inputs: { class: "class", authorTitle: "authorTitle", authorLink: "authorLink", text: "text", maxChars: "maxChars", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", moreLabel: "moreLabel", lessLabel: "lessLabel", isRichText: "isRichText", mobile: "mobile" }, host: { properties: { "class.fd-feed-list__body": "this.isFeedListItemBody" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span\n fd-truncate\n [fdTruncateState]=\"isCollapsed\"\n [fdTruncateChars]=\"maxChars\"\n [fdTruncateTargetText]=\"text\"\n (charCountUpdate)=\"checkCharCount($event)\"\n >\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormattedTextComponent, selector: "fd-formatted-text", inputs: ["htmlText", "convertedLinksDefaultTarget", "height", "width"], exportAs: ["fd-formatted-text"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "directive", type: i4.TruncateDirective, selector: "[fd-truncate]", inputs: ["fdTruncateTargetText", "fdTruncateChars", "fdTruncateState"], outputs: ["charCountUpdate"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
92
+ FeedListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
93
+ FeedListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FeedListItemComponent, selector: "fd-feed-list-item", inputs: { class: "class", authorTitle: "authorTitle", authorLink: "authorLink", text: "text", maxChars: "maxChars", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", moreLabel: "moreLabel", lessLabel: "lessLabel", isRichText: "isRichText", mobile: "mobile" }, host: { properties: { "class.fd-feed-list__body": "this.isFeedListItemBody" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span>\n {{ isCollapsed ? (text | truncate: maxChars) : text }}\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormattedTextComponent, selector: "fd-formatted-text", inputs: ["htmlText", "convertedLinksDefaultTarget", "height", "width"], exportAs: ["fd-formatted-text"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }, { kind: "pipe", type: i4.TruncatePipe, name: "truncate" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
94
  __decorate([
85
95
  applyCssClass,
86
96
  __metadata("design:type", Function),
@@ -89,8 +99,8 @@ __decorate([
89
99
  ], FeedListItemComponent.prototype, "buildComponentCssClass", null);
90
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, decorators: [{
91
101
  type: Component,
92
- args: [{ selector: 'fd-feed-list-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span\n fd-truncate\n [fdTruncateState]=\"isCollapsed\"\n [fdTruncateChars]=\"maxChars\"\n [fdTruncateTargetText]=\"text\"\n (charCountUpdate)=\"checkCharCount($event)\"\n >\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"] }]
93
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { class: [{
102
+ args: [{ selector: 'fd-feed-list-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span>\n {{ isCollapsed ? (text | truncate: maxChars) : text }}\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"] }]
103
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { class: [{
94
104
  type: Input
95
105
  }], authorTitle: [{
96
106
  type: Input
@@ -190,6 +200,10 @@ class FeedListComponent {
190
200
  _refreshItems() {
191
201
  (this.feedItems || []).forEach((feedItem) => {
192
202
  feedItem.mobile = this.mobile;
203
+ if (feedItem.maxCharsAtDefault && this.mobile) {
204
+ feedItem.setDefaultMaxChars();
205
+ feedItem.setHasMore();
206
+ }
193
207
  });
194
208
  }
195
209
  }
@@ -291,13 +305,13 @@ FeedListItemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
291
305
  FeedListAvatarComponent,
292
306
  FeedListActionComponent,
293
307
  FeedListFooterComponent,
294
- FeedListFooterBylineDirective], imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule], exports: [FeedListComponent,
308
+ FeedListFooterBylineDirective], imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule], exports: [FeedListComponent,
295
309
  FeedListItemComponent,
296
310
  FeedListAvatarComponent,
297
311
  FeedListActionComponent,
298
312
  FeedListFooterComponent,
299
313
  FeedListFooterBylineDirective] });
300
- FeedListItemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule] });
314
+ FeedListItemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule] });
301
315
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, decorators: [{
302
316
  type: NgModule,
303
317
  args: [{
@@ -309,7 +323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
309
323
  FeedListFooterComponent,
310
324
  FeedListFooterBylineDirective
311
325
  ],
312
- imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule],
326
+ imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule],
313
327
  exports: [
314
328
  FeedListComponent,
315
329
  FeedListItemComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-feed-list-item.mjs","sources":["../../../../../libs/core/src/lib/feed-list-item/constants.ts","../../../../../libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.html","../../../../../libs/core/src/lib/feed-list-item/components/list/feed-list.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/list/feed-list.component.html","../../../../../libs/core/src/lib/feed-list-item/components/feed-list-avatar/feed-list-avatar.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/feed-list-action/feed-list-action.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/feed-list-footer/feed-list-footer.component.ts","../../../../../libs/core/src/lib/feed-list-item/directives/byline.directive.ts","../../../../../libs/core/src/lib/feed-list-item/feed-list-item.module.ts","../../../../../libs/core/src/lib/feed-list-item/fundamental-ngx-core-feed-list-item.ts"],"sourcesContent":["export const CSS_CLASS_NAME = {\n list: 'fd-feed-list',\n item: 'fd-feed-list__item'\n};\n","import { HostBinding } from '@angular/core';\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Input,\n SimpleChanges,\n ElementRef,\n OnInit,\n OnChanges,\n ChangeDetectorRef\n} from '@angular/core';\nimport { applyCssClass, CssClassBuilder } from '@fundamental-ngx/core/utils';\nimport { Nullable } from '@fundamental-ngx/core/shared';\n\nimport { CSS_CLASS_NAME } from '../../constants';\n\n@Component({\n selector: 'fd-feed-list-item',\n templateUrl: './feed-list-item.component.html',\n styleUrls: ['./feed-list-item.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FeedListItemComponent implements OnInit, OnChanges, CssClassBuilder {\n /** User's custom classes */\n @Input()\n class: string;\n\n /**\n * Author of feed\n */\n @Input()\n authorTitle: string;\n\n /**\n * Link to Author of feed\n */\n @Input()\n authorLink: Nullable<string>;\n\n /**\n * Feed text\n */\n @Input()\n text: string;\n\n /**\n * Max preview characters of Feed text. If you have more than max characters text, you can toggle preview/full text with more/less button.\n */\n @Input()\n maxChars?: number;\n\n /**\n * Sets the `aria-label` attribute to the element.\n */\n @Input()\n ariaLabel = '';\n\n /**\n * aria-labelledby for element describing.\n */\n @Input()\n ariaLabelledby: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for more button\n */\n @Input()\n moreLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for less button\n */\n @Input()\n lessLabel: string;\n\n /**\n * Apply rich feed text, please note - we use a formatted text component with this option, it has a list of controlled tags and attibutes.\n * This feature should be handled with care as it allows for countless custom layouts.\n */\n @Input()\n isRichText = false;\n\n /**\n * Apply mobile view\n */\n @Input()\n mobile = false;\n\n /**\n * Apply body class by default\n */\n @HostBinding('class.fd-feed-list__body')\n isFeedListItemBody = true;\n\n /**\n * Shows toggle state of feed text - more or less\n */\n isCollapsed = true;\n\n /**\n * Shows have you more line than max lines\n */\n hasMore = false;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef, private readonly _changeDetectorRef: ChangeDetectorRef) {}\n\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('class' in changes || 'isRichText' in changes) {\n this.buildComponentCssClass();\n }\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return [CSS_CLASS_NAME.item, this.class, this.isRichText ? '' : `${CSS_CLASS_NAME.item}--collapsible`];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n\n /** @hidden */\n toggleTextView(): void {\n this.isCollapsed = !this.isCollapsed;\n }\n\n /** @hidden */\n checkCharCount(isMore: boolean): void {\n this.hasMore = isMore;\n this._changeDetectorRef.detectChanges();\n }\n}\n","<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span\n fd-truncate\n [fdTruncateState]=\"isCollapsed\"\n [fdTruncateChars]=\"maxChars\"\n [fdTruncateTargetText]=\"text\"\n (charCountUpdate)=\"checkCharCount($event)\"\n >\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n","import {\n Component,\n ElementRef,\n Input,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n AfterContentChecked\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { applyCssClass } from '@fundamental-ngx/core/utils';\nimport { CssClassBuilder } from '@fundamental-ngx/core/utils';\n\nimport { CSS_CLASS_NAME } from '../../constants';\nimport { FeedListItemComponent } from '../item/feed-list-item.component';\n\n@Component({\n selector: 'fd-feed-list',\n templateUrl: './feed-list.component.html',\n styleUrls: ['./feed-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FeedListComponent implements OnInit, AfterContentChecked, OnDestroy, OnChanges, CssClassBuilder {\n /** User's custom classes */\n @Input()\n class: string;\n /**\n * Sets the `aria-label` attribute to the element.\n */\n @Input()\n ariaLabel = '';\n /**\n * aria-labelledby for element describing.\n */\n @Input()\n ariaLabelledby: string;\n /**\n * Apply mobile view\n */\n @Input()\n mobile = false;\n /**\n * Feed list items will be display in a group.\n */\n @Input()\n isGroup = true;\n /**\n * It removes border if items are displaying in a group.\n */\n @Input()\n borderLess = false;\n /**\n * Gets feed list items\n */\n @ContentChildren(FeedListItemComponent)\n feedItems: QueryList<FeedListItemComponent>;\n\n /** @hidden */\n private $feedItemChanges: Subscription;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentChecked(): void {\n this._refreshItems();\n this._listenOnFeedItems();\n }\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('mobile' in changes || 'borderLess' in changes) {\n this.buildComponentCssClass();\n this._refreshItems();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.$feedItemChanges) {\n this.$feedItemChanges.unsubscribe();\n }\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return [\n CSS_CLASS_NAME.list,\n this.class,\n this.borderLess ? `${CSS_CLASS_NAME.list}--no-border` : '',\n this.isGroup ? `${CSS_CLASS_NAME.list}--group` : '',\n this.mobile ? `${CSS_CLASS_NAME.list}--s` : ''\n ];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n\n /** @hidden */\n private _listenOnFeedItems(): void {\n this.$feedItemChanges = this.feedItems.changes.subscribe(() => this._refreshItems());\n }\n\n /** @hidden */\n private _refreshItems(): void {\n (this.feedItems || []).forEach((feedItem) => {\n feedItem.mobile = this.mobile;\n });\n }\n}\n","<ng-content select=\"fd-feed-list-item\"></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'fd-feed-list-avatar',\n template: '<ng-content></ng-content>',\n host: { class: 'fd-feed-list__thumb' }\n})\nexport class FeedListAvatarComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'fd-feed-list-action',\n template: '<ng-content></ng-content>',\n host: { class: 'fd-feed-list__actions' }\n})\nexport class FeedListActionComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'fd-feed-list-footer',\n template: '<ng-content></ng-content>',\n host: { class: 'fd-feed-list__footer' }\n})\nexport class FeedListFooterComponent {}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-item-footer-byline]'\n})\nexport class FeedListFooterBylineDirective {\n @HostBinding('class.fd-feed-list__footer--byline')\n fdBylineClass = true;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FormattedTextModule } from '@fundamental-ngx/core/formatted-text';\nimport { FeedListItemComponent } from './components/item/feed-list-item.component';\nimport { FeedListComponent } from './components/list/feed-list.component';\nimport { FeedListAvatarComponent } from './components/feed-list-avatar/feed-list-avatar.component';\nimport { FeedListActionComponent } from './components/feed-list-action/feed-list-action.component';\nimport { FeedListFooterComponent } from './components/feed-list-footer/feed-list-footer.component';\nimport { FeedListFooterBylineDirective } from './directives/byline.directive';\nimport { PipeModule } from '@fundamental-ngx/core/utils';\nimport { TruncateModule } from '@fundamental-ngx/core/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n declarations: [\n FeedListComponent,\n FeedListItemComponent,\n FeedListAvatarComponent,\n FeedListActionComponent,\n FeedListFooterComponent,\n FeedListFooterBylineDirective\n ],\n imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule],\n exports: [\n FeedListComponent,\n FeedListItemComponent,\n FeedListAvatarComponent,\n FeedListActionComponent,\n FeedListFooterComponent,\n FeedListFooterBylineDirective\n ]\n})\nexport class FeedListItemModule {}\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":"fundamental-ngx-core-feed-list-item.mjs","sources":["../../../../../libs/core/src/lib/feed-list-item/constants.ts","../../../../../libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/item/feed-list-item.component.html","../../../../../libs/core/src/lib/feed-list-item/components/list/feed-list.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/list/feed-list.component.html","../../../../../libs/core/src/lib/feed-list-item/components/feed-list-avatar/feed-list-avatar.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/feed-list-action/feed-list-action.component.ts","../../../../../libs/core/src/lib/feed-list-item/components/feed-list-footer/feed-list-footer.component.ts","../../../../../libs/core/src/lib/feed-list-item/directives/byline.directive.ts","../../../../../libs/core/src/lib/feed-list-item/feed-list-item.module.ts","../../../../../libs/core/src/lib/feed-list-item/fundamental-ngx-core-feed-list-item.ts"],"sourcesContent":["export const CSS_CLASS_NAME = {\n list: 'fd-feed-list',\n item: 'fd-feed-list__item'\n};\n","import { HostBinding } from '@angular/core';\nimport {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n Input,\n SimpleChanges,\n ElementRef,\n OnInit,\n OnChanges\n} from '@angular/core';\nimport { applyCssClass, CssClassBuilder } from '@fundamental-ngx/core/utils';\nimport { Nullable } from '@fundamental-ngx/core/shared';\n\nimport { CSS_CLASS_NAME } from '../../constants';\n\n@Component({\n selector: 'fd-feed-list-item',\n templateUrl: './feed-list-item.component.html',\n styleUrls: ['./feed-list-item.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FeedListItemComponent implements OnInit, OnChanges, CssClassBuilder {\n /** User's custom classes */\n @Input()\n class: string;\n\n /**\n * Author of feed\n */\n @Input()\n authorTitle: string;\n\n /**\n * Link to Author of feed\n */\n @Input()\n authorLink: Nullable<string>;\n\n /**\n * Feed text\n */\n @Input()\n text: string;\n\n /**\n * Max preview characters of Feed text. If you have more than max characters text, you can toggle preview/full text with more/less button.\n */\n @Input()\n maxChars: number;\n\n /**\n * Sets the `aria-label` attribute to the element.\n */\n @Input()\n ariaLabel = '';\n\n /**\n * aria-labelledby for element describing.\n */\n @Input()\n ariaLabelledby: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for more button\n */\n @Input()\n moreLabel: string;\n\n /**\n * @deprecated use i18n capabilities instead\n * Text for less button\n */\n @Input()\n lessLabel: string;\n\n /**\n * Apply rich feed text, please note - we use a formatted text component with this option, it has a list of controlled tags and attibutes.\n * This feature should be handled with care as it allows for countless custom layouts.\n */\n @Input()\n isRichText = false;\n\n /**\n * Apply mobile view\n */\n @Input()\n mobile = false;\n\n maxCharsAtDefault = false;\n /**\n * Apply body class by default\n */\n @HostBinding('class.fd-feed-list__body')\n isFeedListItemBody = true;\n\n /**\n * Shows toggle state of feed text - more or less\n */\n isCollapsed = true;\n\n /**\n * Shows have you more line than max lines\n */\n hasMore = false;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n setHasMore(): void {\n if (this.text) {\n this.hasMore = this.text.length > this.maxChars;\n }\n }\n\n setDefaultMaxChars(): void {\n this.maxChars = this.mobile ? 300 : 500;\n }\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n if (!this.maxChars) {\n this.setDefaultMaxChars();\n this.maxCharsAtDefault = true;\n }\n this.setHasMore();\n }\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('class' in changes || 'isRichText' in changes) {\n this.buildComponentCssClass();\n }\n this.maxCharsAtDefault && this.setDefaultMaxChars();\n this.setHasMore();\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return [CSS_CLASS_NAME.item, this.class, this.isRichText ? '' : `${CSS_CLASS_NAME.item}--collapsible`];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n\n /** @hidden */\n toggleTextView(): void {\n this.isCollapsed = !this.isCollapsed;\n }\n}\n","<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span>\n {{ isCollapsed ? (text | truncate: maxChars) : text }}\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n","import {\n Component,\n ElementRef,\n Input,\n OnInit,\n OnDestroy,\n OnChanges,\n SimpleChanges,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ContentChildren,\n QueryList,\n AfterContentChecked\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { applyCssClass } from '@fundamental-ngx/core/utils';\nimport { CssClassBuilder } from '@fundamental-ngx/core/utils';\n\nimport { CSS_CLASS_NAME } from '../../constants';\nimport { FeedListItemComponent } from '../item/feed-list-item.component';\n\n@Component({\n selector: 'fd-feed-list',\n templateUrl: './feed-list.component.html',\n styleUrls: ['./feed-list.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FeedListComponent implements OnInit, AfterContentChecked, OnDestroy, OnChanges, CssClassBuilder {\n /** User's custom classes */\n @Input()\n class: string;\n /**\n * Sets the `aria-label` attribute to the element.\n */\n @Input()\n ariaLabel = '';\n /**\n * aria-labelledby for element describing.\n */\n @Input()\n ariaLabelledby: string;\n /**\n * Apply mobile view\n */\n @Input()\n mobile = false;\n /**\n * Feed list items will be display in a group.\n */\n @Input()\n isGroup = true;\n /**\n * It removes border if items are displaying in a group.\n */\n @Input()\n borderLess = false;\n /**\n * Gets feed list items\n */\n @ContentChildren(FeedListItemComponent)\n feedItems: QueryList<FeedListItemComponent>;\n\n /** @hidden */\n private $feedItemChanges: Subscription;\n\n /** @hidden */\n constructor(private readonly _elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentChecked(): void {\n this._refreshItems();\n this._listenOnFeedItems();\n }\n /** @hidden */\n ngOnInit(): void {\n this.buildComponentCssClass();\n }\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if ('mobile' in changes || 'borderLess' in changes) {\n this.buildComponentCssClass();\n this._refreshItems();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n if (this.$feedItemChanges) {\n this.$feedItemChanges.unsubscribe();\n }\n }\n\n @applyCssClass\n /** CssClassBuilder interface implementation\n * function must return single string\n * function is responsible for order which css classes are applied\n */\n buildComponentCssClass(): string[] {\n return [\n CSS_CLASS_NAME.list,\n this.class,\n this.borderLess ? `${CSS_CLASS_NAME.list}--no-border` : '',\n this.isGroup ? `${CSS_CLASS_NAME.list}--group` : '',\n this.mobile ? `${CSS_CLASS_NAME.list}--s` : ''\n ];\n }\n\n /** @hidden */\n elementRef(): ElementRef<any> {\n return this._elementRef;\n }\n\n /** @hidden */\n private _listenOnFeedItems(): void {\n this.$feedItemChanges = this.feedItems.changes.subscribe(() => this._refreshItems());\n }\n\n /** @hidden */\n private _refreshItems(): void {\n (this.feedItems || []).forEach((feedItem) => {\n feedItem.mobile = this.mobile;\n if (feedItem.maxCharsAtDefault && this.mobile) {\n feedItem.setDefaultMaxChars();\n feedItem.setHasMore();\n }\n });\n }\n}\n","<ng-content select=\"fd-feed-list-item\"></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'fd-feed-list-avatar',\n template: '<ng-content></ng-content>',\n host: { class: 'fd-feed-list__thumb' }\n})\nexport class FeedListAvatarComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'fd-feed-list-action',\n template: '<ng-content></ng-content>',\n host: { class: 'fd-feed-list__actions' }\n})\nexport class FeedListActionComponent {}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'fd-feed-list-footer',\n template: '<ng-content></ng-content>',\n host: { class: 'fd-feed-list__footer' }\n})\nexport class FeedListFooterComponent {}\n","import { Directive, HostBinding } from '@angular/core';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-item-footer-byline]'\n})\nexport class FeedListFooterBylineDirective {\n @HostBinding('class.fd-feed-list__footer--byline')\n fdBylineClass = true;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { FormattedTextModule } from '@fundamental-ngx/core/formatted-text';\nimport { FeedListItemComponent } from './components/item/feed-list-item.component';\nimport { FeedListComponent } from './components/list/feed-list.component';\nimport { FeedListAvatarComponent } from './components/feed-list-avatar/feed-list-avatar.component';\nimport { FeedListActionComponent } from './components/feed-list-action/feed-list-action.component';\nimport { FeedListFooterComponent } from './components/feed-list-footer/feed-list-footer.component';\nimport { FeedListFooterBylineDirective } from './directives/byline.directive';\nimport { PipeModule } from '@fundamental-ngx/core/utils';\nimport { I18nModule } from '@fundamental-ngx/i18n';\n\n@NgModule({\n declarations: [\n FeedListComponent,\n FeedListItemComponent,\n FeedListAvatarComponent,\n FeedListActionComponent,\n FeedListFooterComponent,\n FeedListFooterBylineDirective\n ],\n imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule],\n exports: [\n FeedListComponent,\n FeedListItemComponent,\n FeedListAvatarComponent,\n FeedListActionComponent,\n FeedListFooterComponent,\n FeedListFooterBylineDirective\n ]\n})\nexport class FeedListItemModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAAO,MAAM,cAAc,GAAG;AAC1B,IAAA,IAAI,EAAE,cAAc;AACpB,IAAA,IAAI,EAAE,oBAAoB;CAC7B;;MCoBY,qBAAqB,CAAA;;AAsF9B,IAAA,WAAA,CAA6B,WAAuB,EAAA;AAAvB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAzDpD;;AAEG;AAEH,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AAsBf;;;AAGG;AAEH,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAEnB;;AAEG;AAEH,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAEf,QAAA,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAC1B;;AAEG;AAEH,QAAA,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC;AAE1B;;AAEG;AACH,QAAA,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;AAEnB;;AAEG;AACH,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;KAGwC;IAExD,UAAU,GAAA;QACN,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;AACnD,SAAA;KACJ;IAED,kBAAkB,GAAA;AACd,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;KAC3C;;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AACjC,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;;AAGD,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,EAAE;YAC/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;AACjC,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;AAOD;;;AADG;IACH,sBAAsB,GAAA;QAClB,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,CAAG,EAAA,cAAc,CAAC,IAAI,CAAe,aAAA,CAAA,CAAC,CAAC;KAC1G;;IAGD,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;IAGD,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;KACxC;;kHArIQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,2aCvBlC,41FA8EA,EAAA,MAAA,EAAA,CAAA,4cAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;ADkEI,UAAA,CAAA;IALC,aAAa;;;;CAOb,EAAA,qBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;2FA3HQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,41FAAA,EAAA,MAAA,EAAA,CAAA,4cAAA,CAAA,EAAA,CAAA;iGAK/C,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAON,WAAW,EAAA,CAAA;sBADV,KAAK;gBAON,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,IAAI,EAAA,CAAA;sBADH,KAAK;gBAON,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAON,SAAS,EAAA,CAAA;sBADR,KAAK;gBAON,cAAc,EAAA,CAAA;sBADb,KAAK;gBAQN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAQN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAQN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAON,MAAM,EAAA,CAAA;sBADL,KAAK;gBAQN,kBAAkB,EAAA,CAAA;sBADjB,WAAW;uBAAC,0BAA0B,CAAA;;AA6CvC;;;AAGG;AACH,QAAA,sBAAsB,EAAA,EAAA,EAAA,EAAA,CAAA;;MEpHb,iBAAiB,CAAA;;AAuC1B,IAAA,WAAA,CAA6B,WAAuB,EAAA;AAAvB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAnCpD;;AAEG;AAEH,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AAMf;;AAEG;AAEH,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AACf;;AAEG;AAEH,QAAA,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;AACf;;AAEG;AAEH,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;KAWqC;;IAGxD,qBAAqB,GAAA;QACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,sBAAsB,EAAE,CAAC;KACjC;;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,IAAI,QAAQ,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,EAAE;YAChD,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;;IAGD,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACvB,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;AACvC,SAAA;KACJ;AAOD;;;AADG;IACH,sBAAsB,GAAA;QAClB,OAAO;AACH,YAAA,cAAc,CAAC,IAAI;AACnB,YAAA,IAAI,CAAC,KAAK;AACV,YAAA,IAAI,CAAC,UAAU,GAAG,CAAA,EAAG,cAAc,CAAC,IAAI,CAAA,WAAA,CAAa,GAAG,EAAE;AAC1D,YAAA,IAAI,CAAC,OAAO,GAAG,CAAA,EAAG,cAAc,CAAC,IAAI,CAAA,OAAA,CAAS,GAAG,EAAE;AACnD,YAAA,IAAI,CAAC,MAAM,GAAG,CAAA,EAAG,cAAc,CAAC,IAAI,CAAA,GAAA,CAAK,GAAG,EAAE;SACjD,CAAC;KACL;;IAGD,UAAU,GAAA;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;IAGO,kBAAkB,GAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KACxF;;IAGO,aAAa,GAAA;AACjB,QAAA,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,QAAQ,KAAI;AACxC,YAAA,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAC9B,YAAA,IAAI,QAAQ,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,EAAE;gBAC3C,QAAQ,CAAC,kBAAkB,EAAE,CAAC;gBAC9B,QAAQ,CAAC,UAAU,EAAE,CAAC;AACzB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;8GAnGQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAgCT,qBAAqB,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5D1C,0DACA,EAAA,MAAA,EAAA,CAAA,2iLAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;ADiGI,UAAA,CAAA;IALC,aAAa;;;;CAab,EAAA,iBAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;2FA9EQ,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,iBAGT,iBAAiB,CAAC,IAAI,EACpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,0DAAA,EAAA,MAAA,EAAA,CAAA,2iLAAA,CAAA,EAAA,CAAA;iGAK/C,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAMN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAMN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAMN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAMN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAMN,UAAU,EAAA,CAAA;sBADT,KAAK;gBAMN,SAAS,EAAA,CAAA;sBADR,eAAe;uBAAC,qBAAqB,CAAA;;AAkCtC;;;AAGG;AACH,QAAA,sBAAsB,EAAA,EAAA,EAAA,EAAA,CAAA;;ME3Fb,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4GAHtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE;iBACzC,CAAA;;;MCCY,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,8GAHtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE;iBAC3C,CAAA;;;MCCY,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,6GAHtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG5B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE;iBAC1C,CAAA;;;MCAY,6BAA6B,CAAA;AAJ1C,IAAA,WAAA,GAAA;AAMI,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;KACxB;;0HAHY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8GAA7B,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oCAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAJzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,yBAAyB;iBACtC,CAAA;8BAGG,aAAa,EAAA,CAAA;sBADZ,WAAW;uBAAC,oCAAoC,CAAA;;;MC0BxC,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAjBvB,iBAAiB;QACjB,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;AACvB,QAAA,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAEvB,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,CAAA,EAAA,OAAA,EAAA,CAE3E,iBAAiB;QACjB,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB;QACvB,uBAAuB;QACvB,6BAA6B,CAAA,EAAA,CAAA,CAAA;gHAGxB,kBAAkB,EAAA,OAAA,EAAA,CAVjB,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,CAAA,EAAA,CAAA,CAAA;2FAUtE,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,iBAAiB;wBACjB,qBAAqB;wBACrB,uBAAuB;wBACvB,uBAAuB;wBACvB,uBAAuB;wBACvB,6BAA6B;AAChC,qBAAA;oBACD,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,CAAC;AAChF,oBAAA,OAAO,EAAE;wBACL,iBAAiB;wBACjB,qBAAqB;wBACrB,uBAAuB;wBACvB,uBAAuB;wBACvB,uBAAuB;wBACvB,6BAA6B;AAChC,qBAAA;iBACJ,CAAA;;;AChCD;;AAEG;;;;"}
@@ -8,7 +8,7 @@ import * as i2 from '@fundamental-ngx/core/formatted-text';
8
8
  import { FormattedTextModule } from '@fundamental-ngx/core/formatted-text';
9
9
  import { __decorate, __metadata } from 'tslib';
10
10
  import * as i4 from '@fundamental-ngx/core/utils';
11
- import { applyCssClass, PipeModule, TruncateModule } from '@fundamental-ngx/core/utils';
11
+ import { applyCssClass, PipeModule } from '@fundamental-ngx/core/utils';
12
12
  import * as i5 from '@fundamental-ngx/i18n';
13
13
  import { I18nModule } from '@fundamental-ngx/i18n';
14
14
 
@@ -19,9 +19,8 @@ const CSS_CLASS_NAME = {
19
19
 
20
20
  class FeedListItemComponent {
21
21
  /** @hidden */
22
- constructor(_elementRef, _changeDetectorRef) {
22
+ constructor(_elementRef) {
23
23
  this._elementRef = _elementRef;
24
- this._changeDetectorRef = _changeDetectorRef;
25
24
  /**
26
25
  * Sets the `aria-label` attribute to the element.
27
26
  */
@@ -35,6 +34,7 @@ class FeedListItemComponent {
35
34
  * Apply mobile view
36
35
  */
37
36
  this.mobile = false;
37
+ this.maxCharsAtDefault = false;
38
38
  /**
39
39
  * Apply body class by default
40
40
  */
@@ -48,15 +48,30 @@ class FeedListItemComponent {
48
48
  */
49
49
  this.hasMore = false;
50
50
  }
51
+ setHasMore() {
52
+ if (this.text) {
53
+ this.hasMore = this.text.length > this.maxChars;
54
+ }
55
+ }
56
+ setDefaultMaxChars() {
57
+ this.maxChars = this.mobile ? 300 : 500;
58
+ }
51
59
  /** @hidden */
52
60
  ngOnInit() {
53
61
  this.buildComponentCssClass();
62
+ if (!this.maxChars) {
63
+ this.setDefaultMaxChars();
64
+ this.maxCharsAtDefault = true;
65
+ }
66
+ this.setHasMore();
54
67
  }
55
68
  /** @hidden */
56
69
  ngOnChanges(changes) {
57
70
  if ('class' in changes || 'isRichText' in changes) {
58
71
  this.buildComponentCssClass();
59
72
  }
73
+ this.maxCharsAtDefault && this.setDefaultMaxChars();
74
+ this.setHasMore();
60
75
  }
61
76
  /** CssClassBuilder interface implementation
62
77
  * function must return single string
@@ -73,14 +88,9 @@ class FeedListItemComponent {
73
88
  toggleTextView() {
74
89
  this.isCollapsed = !this.isCollapsed;
75
90
  }
76
- /** @hidden */
77
- checkCharCount(isMore) {
78
- this.hasMore = isMore;
79
- this._changeDetectorRef.detectChanges();
80
- }
81
91
  }
82
- FeedListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
83
- FeedListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FeedListItemComponent, selector: "fd-feed-list-item", inputs: { class: "class", authorTitle: "authorTitle", authorLink: "authorLink", text: "text", maxChars: "maxChars", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", moreLabel: "moreLabel", lessLabel: "lessLabel", isRichText: "isRichText", mobile: "mobile" }, host: { properties: { "class.fd-feed-list__body": "this.isFeedListItemBody" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span\n fd-truncate\n [fdTruncateState]=\"isCollapsed\"\n [fdTruncateChars]=\"maxChars\"\n [fdTruncateTargetText]=\"text\"\n (charCountUpdate)=\"checkCharCount($event)\"\n >\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormattedTextComponent, selector: "fd-formatted-text", inputs: ["htmlText", "convertedLinksDefaultTarget", "height", "width"], exportAs: ["fd-formatted-text"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "directive", type: i4.TruncateDirective, selector: "[fd-truncate]", inputs: ["fdTruncateTargetText", "fdTruncateChars", "fdTruncateState"], outputs: ["charCountUpdate"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
92
+ FeedListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
93
+ FeedListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: FeedListItemComponent, selector: "fd-feed-list-item", inputs: { class: "class", authorTitle: "authorTitle", authorLink: "authorLink", text: "text", maxChars: "maxChars", ariaLabel: "ariaLabel", ariaLabelledby: "ariaLabelledby", moreLabel: "moreLabel", lessLabel: "lessLabel", isRichText: "isRichText", mobile: "mobile" }, host: { properties: { "class.fd-feed-list__body": "this.isFeedListItemBody" } }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span>\n {{ isCollapsed ? (text | truncate: maxChars) : text }}\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.FormattedTextComponent, selector: "fd-formatted-text", inputs: ["htmlText", "convertedLinksDefaultTarget", "height", "width"], exportAs: ["fd-formatted-text"] }, { kind: "component", type: i3.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { kind: "pipe", type: i4.SafePipe, name: "safe" }, { kind: "pipe", type: i4.TruncatePipe, name: "truncate" }, { kind: "pipe", type: i5.FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
94
  __decorate([
85
95
  applyCssClass,
86
96
  __metadata("design:type", Function),
@@ -89,8 +99,8 @@ __decorate([
89
99
  ], FeedListItemComponent.prototype, "buildComponentCssClass", null);
90
100
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemComponent, decorators: [{
91
101
  type: Component,
92
- args: [{ selector: 'fd-feed-list-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span\n fd-truncate\n [fdTruncateState]=\"isCollapsed\"\n [fdTruncateChars]=\"maxChars\"\n [fdTruncateTargetText]=\"text\"\n (charCountUpdate)=\"checkCharCount($event)\"\n >\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"] }]
93
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { class: [{
102
+ args: [{ selector: 'fd-feed-list-item', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"mobile; then headerTmpl; else avatarContent\"></ng-container>\n<div class=\"fd-feed-list__content\">\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </ng-container>\n <p class=\"fd-feed-list__text\">\n <ng-container *ngIf=\"!isRichText\">\n <ng-container *ngTemplateOutlet=\"feedContent; context: { $implicit: author }\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"isRichText\">\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <fd-formatted-text [htmlText]=\"text\"></fd-formatted-text>\n </ng-container>\n </p>\n <ng-container *ngIf=\"!mobile\">\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #avatarContent>\n <ng-content select=\"fd-feed-list-avatar\"></ng-content>\n</ng-template>\n<ng-template #actionContent>\n <ng-content select=\"fd-feed-list-action\"></ng-content>\n</ng-template>\n<ng-template #footerContent>\n <ng-content select=\"fd-feed-list-footer\"></ng-content>\n</ng-template>\n\n<ng-template #author>\n <span class=\"fd-feed-list__name\">\n <ng-container *ngIf=\"authorLink; else authorTitleTemplate\">\n <a\n target=\"_blank\"\n fd-link\n [attr.title]=\"authorTitle\"\n [attr.href]=\"authorLink | safe: 'url'\"\n [emphasized]=\"true\"\n >\n <ng-container *ngTemplateOutlet=\"authorTitleTemplate\"></ng-container>\n </a> </ng-container\n >:\n </span>\n</ng-template>\n<ng-template #authorTitleTemplate>\n {{ authorTitle }}\n</ng-template>\n\n<ng-template #feedContent let-param>\n <ng-container *ngTemplateOutlet=\"param\"></ng-container>\n <span>\n {{ isCollapsed ? (text | truncate: maxChars) : text }}\n </span>\n <a\n fd-link\n class=\"fd-feed-list__link--more\"\n *ngIf=\"!isRichText && hasMore\"\n (click)=\"toggleTextView()\"\n [innerText]=\"\n isCollapsed\n ? moreLabel || ('coreFeedListItem.moreLabel' | fdTranslate)\n : lessLabel || ('coreFeedListItem.lessLabel' | fdTranslate)\n \"\n ></a>\n</ng-template>\n\n<ng-template #headerTmpl>\n <div class=\"fd-feed-list__wrapper\">\n <div class=\"fd-feed-list__wrapper fd-feed-list__wrapper--header\">\n <ng-container *ngTemplateOutlet=\"avatarContent\"></ng-container>\n <div>\n <ng-container *ngTemplateOutlet=\"author\"></ng-container>\n <ng-container *ngTemplateOutlet=\"footerContent\"></ng-container>\n </div>\n </div>\n <ng-container *ngTemplateOutlet=\"actionContent\"></ng-container>\n </div>\n</ng-template>\n", styles: [".fd-feed-list__name a{max-width:75%;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.fd-feed-list__thumb{display:flex;align-items:center;justify-content:center;max-width:3rem;flex:0 0 3rem;height:3rem;overflow:hidden}.fd-feed-list__thumb img{width:100%;height:100%;object-fit:contain}.fd-feed-list__link--more{cursor:pointer;text-transform:initial}.fd-feed-list__link--more:hover{text-decoration:underline}\n"] }]
103
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { class: [{
94
104
  type: Input
95
105
  }], authorTitle: [{
96
106
  type: Input
@@ -190,6 +200,10 @@ class FeedListComponent {
190
200
  _refreshItems() {
191
201
  (this.feedItems || []).forEach((feedItem) => {
192
202
  feedItem.mobile = this.mobile;
203
+ if (feedItem.maxCharsAtDefault && this.mobile) {
204
+ feedItem.setDefaultMaxChars();
205
+ feedItem.setHasMore();
206
+ }
193
207
  });
194
208
  }
195
209
  }
@@ -291,13 +305,13 @@ FeedListItemModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
291
305
  FeedListAvatarComponent,
292
306
  FeedListActionComponent,
293
307
  FeedListFooterComponent,
294
- FeedListFooterBylineDirective], imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule], exports: [FeedListComponent,
308
+ FeedListFooterBylineDirective], imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule], exports: [FeedListComponent,
295
309
  FeedListItemComponent,
296
310
  FeedListAvatarComponent,
297
311
  FeedListActionComponent,
298
312
  FeedListFooterComponent,
299
313
  FeedListFooterBylineDirective] });
300
- FeedListItemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule] });
314
+ FeedListItemModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule] });
301
315
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: FeedListItemModule, decorators: [{
302
316
  type: NgModule,
303
317
  args: [{
@@ -309,7 +323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
309
323
  FeedListFooterComponent,
310
324
  FeedListFooterBylineDirective
311
325
  ],
312
- imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, TruncateModule, I18nModule],
326
+ imports: [CommonModule, PipeModule, FormattedTextModule, LinkModule, I18nModule],
313
327
  exports: [
314
328
  FeedListComponent,
315
329
  FeedListItemComponent,