@fundamental-ngx/core 0.35.3 → 0.35.4-rc.10

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 (212) 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/breadcrumb-item.component.d.ts +20 -13
  8. package/breadcrumb/breadcrumb.component.d.ts +46 -34
  9. package/breadcrumb/breadcrumb.module.d.ts +3 -1
  10. package/breadcrumb/esm2020/breadcrumb-item.component.mjs +44 -23
  11. package/breadcrumb/esm2020/breadcrumb.component.mjs +93 -88
  12. package/breadcrumb/esm2020/breadcrumb.module.mjs +12 -4
  13. package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs +147 -114
  14. package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  15. package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs +144 -111
  16. package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  17. package/breadcrumb/package.json +1 -1
  18. package/busy-indicator/package.json +1 -1
  19. package/button/package.json +1 -1
  20. package/calendar/package.json +1 -1
  21. package/card/package.json +1 -1
  22. package/carousel/package.json +1 -1
  23. package/checkbox/package.json +1 -1
  24. package/combobox/combobox.component.d.ts +8 -1
  25. package/combobox/combobox.interface.d.ts +1 -0
  26. package/combobox/esm2020/combobox-mobile/combobox-mobile.component.mjs +2 -2
  27. package/combobox/esm2020/combobox.component.mjs +22 -9
  28. package/combobox/esm2020/combobox.interface.mjs +1 -1
  29. package/combobox/fesm2015/fundamental-ngx-core-combobox.mjs +22 -9
  30. package/combobox/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
  31. package/combobox/fesm2020/fundamental-ngx-core-combobox.mjs +22 -9
  32. package/combobox/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
  33. package/combobox/package.json +1 -1
  34. package/content-density/esm2020/classes/deprecated-compact.directive.mjs +4 -4
  35. package/content-density/esm2020/classes/deprecated-condensed.directive.mjs +3 -3
  36. package/content-density/esm2020/classes/deprecated-cozy.directive.mjs +3 -3
  37. package/content-density/fesm2015/fundamental-ngx-core-content-density.mjs +7 -7
  38. package/content-density/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
  39. package/content-density/fesm2020/fundamental-ngx-core-content-density.mjs +7 -7
  40. package/content-density/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
  41. package/content-density/package.json +3 -3
  42. package/date-picker/package.json +1 -1
  43. package/datetime/package.json +1 -1
  44. package/datetime-picker/package.json +1 -1
  45. package/dialog/package.json +1 -1
  46. package/dynamic-page/package.json +1 -1
  47. package/dynamic-side-content/package.json +1 -1
  48. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +44 -23
  49. package/esm2020/breadcrumb/breadcrumb.component.mjs +93 -88
  50. package/esm2020/breadcrumb/breadcrumb.module.mjs +12 -4
  51. package/esm2020/combobox/combobox-mobile/combobox-mobile.component.mjs +2 -2
  52. package/esm2020/combobox/combobox.component.mjs +22 -9
  53. package/esm2020/combobox/combobox.interface.mjs +1 -1
  54. package/esm2020/content-density/classes/deprecated-compact.directive.mjs +4 -4
  55. package/esm2020/content-density/classes/deprecated-condensed.directive.mjs +3 -3
  56. package/esm2020/content-density/classes/deprecated-cozy.directive.mjs +3 -3
  57. package/esm2020/overflow-layout/directives/overflow-expand.directive.mjs +6 -4
  58. package/esm2020/overflow-layout/directives/overflow-item-container-ref.directive.mjs +2 -2
  59. package/esm2020/overflow-layout/directives/overflow-item-ref.directive.mjs +20 -8
  60. package/esm2020/overflow-layout/directives/overflow-layout-item-container.directive.mjs +30 -3
  61. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +12 -3
  62. package/esm2020/overflow-layout/index.mjs +3 -1
  63. package/esm2020/overflow-layout/interfaces/overflow-expand.interface.mjs +1 -1
  64. package/esm2020/overflow-layout/interfaces/overflow-item-ref.interface.mjs +1 -1
  65. package/esm2020/overflow-layout/interfaces/overflow-item.interface.mjs +1 -1
  66. package/esm2020/overflow-layout/overflow-layout.component.mjs +83 -157
  67. package/esm2020/overflow-layout/overflow-layout.service.mjs +241 -0
  68. package/esm2020/tile/directives/numeric-content.directives.mjs +1 -1
  69. package/esm2020/time/time-column/time-column.component.mjs +7 -8
  70. package/esm2020/utils/functions/resize-observable.mjs +9 -2
  71. package/facets/package.json +1 -1
  72. package/feed-input/package.json +1 -1
  73. package/feed-list-item/package.json +1 -1
  74. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +147 -114
  75. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  76. package/fesm2015/fundamental-ngx-core-combobox.mjs +22 -9
  77. package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
  78. package/fesm2015/fundamental-ngx-core-content-density.mjs +7 -7
  79. package/fesm2015/fundamental-ngx-core-content-density.mjs.map +1 -1
  80. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +378 -166
  81. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  82. package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
  83. package/fesm2015/fundamental-ngx-core-time.mjs +6 -7
  84. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  85. package/fesm2015/fundamental-ngx-core-utils.mjs +8 -1
  86. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  87. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +144 -111
  88. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  89. package/fesm2020/fundamental-ngx-core-combobox.mjs +22 -9
  90. package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
  91. package/fesm2020/fundamental-ngx-core-content-density.mjs +7 -7
  92. package/fesm2020/fundamental-ngx-core-content-density.mjs.map +1 -1
  93. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +375 -165
  94. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  95. package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
  96. package/fesm2020/fundamental-ngx-core-time.mjs +6 -7
  97. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  98. package/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
  99. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  100. package/file-uploader/package.json +1 -1
  101. package/fixed-card-layout/package.json +1 -1
  102. package/flexible-column-layout/package.json +1 -1
  103. package/form/package.json +1 -1
  104. package/formatted-text/package.json +1 -1
  105. package/grid-list/package.json +1 -1
  106. package/icon/package.json +1 -1
  107. package/illustrated-message/package.json +1 -1
  108. package/infinite-scroll/package.json +1 -1
  109. package/info-label/package.json +1 -1
  110. package/inline-help/package.json +1 -1
  111. package/input-group/package.json +1 -1
  112. package/layout-grid/package.json +1 -1
  113. package/layout-panel/package.json +1 -1
  114. package/link/package.json +1 -1
  115. package/list/package.json +1 -1
  116. package/menu/package.json +1 -1
  117. package/message-box/package.json +1 -1
  118. package/message-strip/package.json +1 -1
  119. package/message-toast/package.json +1 -1
  120. package/micro-process-flow/package.json +1 -1
  121. package/mobile-mode/package.json +1 -1
  122. package/multi-input/package.json +1 -1
  123. package/nested-list/package.json +1 -1
  124. package/notification/package.json +1 -1
  125. package/object-identifier/package.json +1 -1
  126. package/object-marker/package.json +1 -1
  127. package/object-number/package.json +1 -1
  128. package/object-status/package.json +1 -1
  129. package/overflow-layout/directives/overflow-expand.directive.d.ts +6 -5
  130. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +16 -6
  131. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +13 -1
  132. package/overflow-layout/directives/overflow-layout-item.directive.d.ts +7 -2
  133. package/overflow-layout/esm2020/directives/overflow-expand.directive.mjs +6 -4
  134. package/overflow-layout/esm2020/directives/overflow-item-container-ref.directive.mjs +2 -2
  135. package/overflow-layout/esm2020/directives/overflow-item-ref.directive.mjs +20 -8
  136. package/overflow-layout/esm2020/directives/overflow-layout-item-container.directive.mjs +30 -3
  137. package/overflow-layout/esm2020/directives/overflow-layout-item.directive.mjs +12 -3
  138. package/overflow-layout/esm2020/index.mjs +3 -1
  139. package/overflow-layout/esm2020/interfaces/overflow-expand.interface.mjs +1 -1
  140. package/overflow-layout/esm2020/interfaces/overflow-item-ref.interface.mjs +1 -1
  141. package/overflow-layout/esm2020/interfaces/overflow-item.interface.mjs +1 -1
  142. package/overflow-layout/esm2020/overflow-layout.component.mjs +83 -157
  143. package/overflow-layout/esm2020/overflow-layout.service.mjs +241 -0
  144. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs +378 -166
  145. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  146. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs +375 -165
  147. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  148. package/overflow-layout/index.d.ts +2 -0
  149. package/overflow-layout/interfaces/overflow-expand.interface.d.ts +4 -4
  150. package/overflow-layout/interfaces/overflow-item-ref.interface.d.ts +14 -3
  151. package/overflow-layout/interfaces/overflow-item.interface.d.ts +2 -1
  152. package/overflow-layout/overflow-layout.component.d.ts +19 -31
  153. package/overflow-layout/overflow-layout.service.d.ts +90 -0
  154. package/overflow-layout/package.json +14 -13
  155. package/overflow-layout/tokens/overflow-expand.token.d.ts +1 -1
  156. package/overflow-layout/tokens/overflow-item-ref.token.d.ts +1 -1
  157. package/package.json +1 -1
  158. package/pagination/package.json +1 -1
  159. package/panel/package.json +1 -1
  160. package/popover/package.json +1 -1
  161. package/product-switch/package.json +1 -1
  162. package/progress-indicator/package.json +1 -1
  163. package/quick-view/package.json +1 -1
  164. package/radio/package.json +1 -1
  165. package/rating-indicator/package.json +1 -1
  166. package/resizable-card-layout/package.json +1 -1
  167. package/schematics/ng-add/index.js +5 -1
  168. package/schematics/ng-add/index.js.map +1 -1
  169. package/scroll-spy/package.json +1 -1
  170. package/scrollbar/package.json +1 -1
  171. package/segmented-button/package.json +1 -1
  172. package/select/package.json +1 -1
  173. package/shared/package.json +1 -1
  174. package/shellbar/package.json +1 -1
  175. package/side-navigation/package.json +1 -1
  176. package/slider/package.json +1 -1
  177. package/split-button/package.json +1 -1
  178. package/splitter/package.json +1 -1
  179. package/status-indicator/package.json +1 -1
  180. package/step-input/package.json +1 -1
  181. package/switch/package.json +1 -1
  182. package/table/package.json +1 -1
  183. package/tabs/package.json +1 -1
  184. package/text/package.json +1 -1
  185. package/theming/package.json +1 -1
  186. package/tile/directives/numeric-content.directives.d.ts +2 -3
  187. package/tile/esm2020/directives/numeric-content.directives.mjs +1 -1
  188. package/tile/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
  189. package/tile/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
  190. package/tile/package.json +1 -1
  191. package/time/esm2020/time-column/time-column.component.mjs +7 -8
  192. package/time/fesm2015/fundamental-ngx-core-time.mjs +6 -7
  193. package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  194. package/time/fesm2020/fundamental-ngx-core-time.mjs +6 -7
  195. package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  196. package/time/package.json +1 -1
  197. package/time/time-column/time-column.component.d.ts +1 -0
  198. package/time-picker/package.json +1 -1
  199. package/timeline/package.json +1 -1
  200. package/title/package.json +1 -1
  201. package/token/package.json +1 -1
  202. package/toolbar/package.json +1 -1
  203. package/tree/package.json +1 -1
  204. package/upload-collection/package.json +1 -1
  205. package/utils/esm2020/functions/resize-observable.mjs +9 -2
  206. package/utils/fesm2015/fundamental-ngx-core-utils.mjs +8 -1
  207. package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  208. package/utils/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
  209. package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  210. package/utils/package.json +1 -1
  211. package/vertical-navigation/package.json +1 -1
  212. package/wizard/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-input",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.10",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core/feed-list-item",
3
- "version": "0.35.3",
3
+ "version": "0.35.4-rc.10",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.0.0",
6
6
  "@angular/core": "^13.0.0"
@@ -1,17 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ContentChild, forwardRef, ViewEncapsulation, ChangeDetectionStrategy, Optional, ContentChildren, ViewChild, Input, Directive, NgModule } from '@angular/core';
3
- import * as i5 from '@angular/common';
2
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChild, forwardRef, EventEmitter, isDevMode, Optional, Input, Output, ContentChildren, ViewChild, Directive, NgModule } from '@angular/core';
3
+ import * as i6 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
- import * as i3 from '@fundamental-ngx/core/link';
6
- import { LinkComponent, LinkModule } from '@fundamental-ngx/core/link';
7
- import * as i6 from '@angular/cdk/portal';
5
+ import { ButtonModule } from '@fundamental-ngx/core/button';
6
+ import * as i2 from '@fundamental-ngx/core/overflow-layout';
7
+ import { OverflowLayoutComponent, OverflowLayoutModule } from '@fundamental-ngx/core/overflow-layout';
8
+ import * as i7 from '@angular/cdk/portal';
8
9
  import { DomPortal, PortalModule } from '@angular/cdk/portal';
9
- import { BehaviorSubject, Subscription, startWith, map, tap, firstValueFrom, debounceTime } from 'rxjs';
10
- import * as i2 from '@fundamental-ngx/core/menu';
11
- import { MenuComponent, MenuModule } from '@fundamental-ngx/core/menu';
10
+ import * as i4 from '@fundamental-ngx/core/link';
11
+ import { LinkComponent, LinkModule } from '@fundamental-ngx/core/link';
12
12
  import * as i1 from '@fundamental-ngx/core/utils';
13
- import { PipeModule } from '@fundamental-ngx/core/utils';
14
- import * as i4 from '@fundamental-ngx/core/icon';
13
+ import { DestroyedService, PipeModule } from '@fundamental-ngx/core/utils';
14
+ import { BehaviorSubject, takeUntil } from 'rxjs';
15
+ import * as i3 from '@fundamental-ngx/core/menu';
16
+ import { MenuComponent, MenuModule } from '@fundamental-ngx/core/menu';
17
+ import * as i5 from '@fundamental-ngx/core/icon';
15
18
  import { IconModule } from '@fundamental-ngx/core/icon';
16
19
  import { PopoverModule } from '@fundamental-ngx/core/popover';
17
20
  import { DeprecatedCompactDirective, CONTENT_DENSITY_DIRECTIVE, ContentDensityModule } from '@fundamental-ngx/core/content-density';
@@ -26,47 +29,69 @@ import { DeprecatedCompactDirective, CONTENT_DENSITY_DIRECTIVE, ContentDensityMo
26
29
  * ```
27
30
  */
28
31
  class BreadcrumbItemComponent {
29
- constructor(_elementRef, renderer2, _cdR) {
30
- this._elementRef = _elementRef;
31
- this.renderer2 = renderer2;
32
- this._cdR = _cdR;
33
- this.show = () => this.renderer2.setStyle(this._elementRef.nativeElement, 'display', 'inline-block');
34
- this.hide = () => this.renderer2.setStyle(this._elementRef.nativeElement, 'display', 'none');
35
- }
36
32
  /** @hidden */
37
- get elementRef() {
38
- return this._elementRef;
39
- }
40
- /** @hidden */
41
- get width() {
42
- return this._elementRef.nativeElement.getBoundingClientRect().width;
33
+ constructor(elementRef) {
34
+ this.elementRef = elementRef;
35
+ /** @hidden */
36
+ this._attached = false;
43
37
  }
44
38
  /** @hidden */
45
- get needsClickProxy() {
39
+ get _needsClickProxy() {
46
40
  var _a;
47
41
  return (!!((_a = this.breadcrumbLink) === null || _a === void 0 ? void 0 : _a.elementRef().nativeElement.getAttribute('href')) || !!this.breadcrumbLink.routerLink);
48
42
  }
49
43
  /** @hidden */
50
44
  ngAfterViewInit() {
51
- if (this.breadcrumbLink) {
45
+ this._attach();
46
+ }
47
+ /**
48
+ * Sets breadcrumb item dom portal.
49
+ */
50
+ setPortal() {
51
+ if (!this.portal) {
52
+ this.portal = new DomPortal(this.elementRef);
53
+ }
54
+ }
55
+ /** @hidden */
56
+ _detach() {
57
+ var _a, _b, _c, _d;
58
+ if (!this._attached) {
59
+ return;
60
+ }
61
+ if ((_a = this.linkContentPortal) === null || _a === void 0 ? void 0 : _a.isAttached) {
62
+ (_b = this.linkContentPortal) === null || _b === void 0 ? void 0 : _b.detach();
63
+ }
64
+ if ((_c = this.breadcrumbItemPortal) === null || _c === void 0 ? void 0 : _c.isAttached) {
65
+ (_d = this.breadcrumbItemPortal) === null || _d === void 0 ? void 0 : _d.detach();
66
+ }
67
+ this._attached = false;
68
+ }
69
+ /** @hidden */
70
+ _attach() {
71
+ if (this._attached) {
72
+ return;
73
+ }
74
+ if (this.breadcrumbLink && this.breadcrumbLink.contentSpan) {
52
75
  this.linkContentPortal = new DomPortal(this.breadcrumbLink.contentSpan.nativeElement);
53
76
  }
54
77
  this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild);
55
- this._cdR.detectChanges();
78
+ this._attached = true;
56
79
  }
57
80
  }
58
- BreadcrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
59
- BreadcrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbItemComponent, selector: "fd-breadcrumb-item", host: { classAttribute: "fd-breadcrumb__item" }, queries: [{ propertyName: "breadcrumbLink", first: true, predicate: i0.forwardRef(function () { return LinkComponent; }), descendants: true }], ngImport: i0, template: '<div style="display: inline"><ng-content></ng-content></div>', isInline: true });
81
+ BreadcrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
82
+ BreadcrumbItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbItemComponent, selector: "fd-breadcrumb-item", host: { classAttribute: "fd-breadcrumb__item" }, queries: [{ propertyName: "breadcrumbLink", first: true, predicate: i0.forwardRef(function () { return LinkComponent; }), descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
60
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
61
84
  type: Component,
62
85
  args: [{
63
86
  selector: 'fd-breadcrumb-item',
64
- template: '<div style="display: inline"><ng-content></ng-content></div>',
87
+ template: '<ng-content></ng-content>',
65
88
  host: {
66
89
  class: 'fd-breadcrumb__item'
67
- }
90
+ },
91
+ encapsulation: ViewEncapsulation.None,
92
+ changeDetection: ChangeDetectionStrategy.OnPush
68
93
  }]
69
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { breadcrumbLink: [{
94
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { breadcrumbLink: [{
70
95
  type: ContentChild,
71
96
  args: [forwardRef(() => LinkComponent)]
72
97
  }] } });
@@ -83,85 +108,50 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
83
108
  * ```
84
109
  */
85
110
  class BreadcrumbComponent {
86
- constructor(elementRef, _rtlService, _cdRef, _resizeObserver, _ngZone) {
111
+ /** @hidden */
112
+ constructor(elementRef, _onDestroy$, _rtlService, _cdr) {
87
113
  this.elementRef = elementRef;
114
+ this._onDestroy$ = _onDestroy$;
88
115
  this._rtlService = _rtlService;
89
- this._cdRef = _cdRef;
90
- this._resizeObserver = _resizeObserver;
91
- this._ngZone = _ngZone;
92
- /** @hidden */
93
- this._collapsedBreadcrumbItems = [];
94
- /** @hidden */
95
- this._placement$ = new BehaviorSubject('bottom-start');
116
+ this._cdr = _cdr;
96
117
  /** Whether to append items to the overflow dropdown in reverse order. Default is true. */
97
118
  this.reverse = false;
119
+ /**
120
+ * Event emitted when visible items count is changed.
121
+ */
122
+ this.visibleItemsCount = new EventEmitter();
123
+ /**
124
+ * Event emitted when hidden items count is changed.
125
+ */
126
+ this.hiddenItemsCount = new EventEmitter();
127
+ /**
128
+ * @hidden
129
+ * Array of breadcrumb items.
130
+ */
131
+ this._items = [];
98
132
  /** @hidden */
99
- this._subscriptions = new Subscription();
100
- /** @hidden */
101
- this._itemToSize = new Map();
133
+ this._placement$ = new BehaviorSubject('bottom-start');
102
134
  }
103
- /** @hidden */
104
- ngOnInit() {
105
- if (this._rtlService) {
106
- this._subscriptions.add(this._rtlService.rtl.subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start')));
135
+ /**
136
+ * @deprecated
137
+ * Breadcrumbs component now uses more advanced calculation mechanism without the need of specifying the container element.
138
+ *
139
+ * The element to act as the breadcrumb container. When provided, the breadcrumb's responsive collapsing behavior
140
+ * performs better. When not provided, the immediate parent element's width will be used.
141
+ */
142
+ set containerElement(_) {
143
+ if (isDevMode()) {
144
+ console.warn('Breadcrumbs component now uses more advanced calculation mechanism without the need of specifying the container element.');
107
145
  }
108
146
  }
109
147
  /** @hidden */
110
- ngAfterViewInit() {
111
- this._subscriptions.add(this._breadcrumbItems.changes
112
- .pipe(startWith(this._breadcrumbItems), map((items) => items.toArray()), map((items) => items.map((item) => [item, item.width])), tap((itemToSize) => (this._itemToSize = new Map(itemToSize))))
113
- .subscribe());
114
- firstValueFrom(this._ngZone.onStable).then(() => {
115
- this._subscriptions.add(this._resizeObserver
116
- .observe(this.containerElement || this.elementRef.nativeElement.parentElement)
117
- // Add small delay for performance reasons.
118
- .pipe(debounceTime(30))
119
- .subscribe(() => this.onResize()));
120
- });
148
+ ngOnInit() {
149
+ var _a;
150
+ (_a = this._rtlService) === null || _a === void 0 ? void 0 : _a.rtl.pipe(takeUntil(this._onDestroy$)).subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start'));
121
151
  }
122
152
  /** @hidden */
123
- ngOnDestroy() {
124
- this._subscriptions.unsubscribe();
125
- }
126
- /**
127
- * Callback function when breadcrumbs container has been resized.
128
- */
129
153
  onResize() {
130
- if (!this.elementRef.nativeElement.parentElement) {
131
- return;
132
- }
133
- this._containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;
134
- if (this.containerElement) {
135
- this._containerBoundary = this.containerElement.getBoundingClientRect().width;
136
- }
137
- if (this._overflowContainer) {
138
- this._containerBoundary -= this._overflowContainer.nativeElement.getBoundingClientRect().width;
139
- }
140
- let visibleSum = 0;
141
- const breadcrumbItemComponents = this._breadcrumbItems.toArray();
142
- let i;
143
- for (i = breadcrumbItemComponents.length - 1; i >= 0; i--) {
144
- const breadcrumbItem = breadcrumbItemComponents[i];
145
- const itemSize = this._itemToSize.has(breadcrumbItem)
146
- ? this._itemToSize.get(breadcrumbItem)
147
- : breadcrumbItem.width;
148
- if (visibleSum + itemSize <= this._containerBoundary) {
149
- visibleSum += itemSize;
150
- breadcrumbItem.show();
151
- }
152
- else {
153
- break;
154
- }
155
- }
156
- const collapsedBreadcrumbItems = breadcrumbItemComponents.slice(0, ++i);
157
- this._collapsedBreadcrumbItems = this.reverse ? collapsedBreadcrumbItems : collapsedBreadcrumbItems.reverse();
158
- this._collapsedBreadcrumbItems.forEach((item) => item.hide());
159
- this._cdRef.detectChanges();
160
- }
161
- /** @hidden */
162
- _keyDownHandle(event) {
163
- this._menuComponent.toggle();
164
- event.preventDefault();
154
+ this._overflowLayout.triggerRecalculation();
165
155
  }
166
156
  /**
167
157
  * We catch interactions with item, Enter, Space, Mouse click and Touch click,
@@ -173,31 +163,68 @@ class BreadcrumbComponent {
173
163
  breadcrumbItem.breadcrumbLink.elementRef().nativeElement.click();
174
164
  }
175
165
  }
166
+ /** @hidden */
167
+ ngAfterViewInit() {
168
+ this._setItems();
169
+ this._contentItems.changes.subscribe(() => this._setItems());
170
+ }
171
+ /** @hidden */
172
+ _keyDownHandle(event) {
173
+ this._menuComponent.toggle();
174
+ event.preventDefault();
175
+ }
176
+ /** @hidden */
177
+ _onHiddenChange(isHidden, breadcrumb) {
178
+ if (!isHidden) {
179
+ breadcrumb._detach();
180
+ }
181
+ else {
182
+ breadcrumb._attach();
183
+ }
184
+ }
185
+ /** @hidden */
186
+ _onVisibleItemsCountChange(visibleItemsCount) {
187
+ this.visibleItemsCount.emit(visibleItemsCount);
188
+ }
189
+ /** @hidden */
190
+ _onHiddenItemsCountChange(hiddenItemsCount) {
191
+ this.hiddenItemsCount.emit(hiddenItemsCount);
192
+ }
193
+ /** @hidden */
194
+ _setItems() {
195
+ this._contentItems.forEach((item) => item.setPortal());
196
+ this._items = this._contentItems.toArray();
197
+ this._cdr.detectChanges();
198
+ }
176
199
  }
177
- BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }, { token: i1.ResizeObserverService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
178
- BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { containerElement: "containerElement", reverse: "reverse" }, host: { classAttribute: "fd-breadcrumb" }, queries: [{ propertyName: "_breadcrumbItems", predicate: i0.forwardRef(function () { return BreadcrumbItemComponent; }) }], viewQueries: [{ propertyName: "_menuComponent", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_overflowContainer", first: true, predicate: ["overflowBreadcrumbsContainer"], descendants: true }], ngImport: i0, template: "<fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of _collapsedBreadcrumbItems\">\n <li fd-menu-item [disabled]=\"breadcrumbItem.breadcrumbLink ? breadcrumbItem.breadcrumbLink.disabled : false\">\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.breadcrumbLink._postfixIconName\">\n <fd-menu-addon [glyph]=\"breadcrumbItem.breadcrumbLink._postfixIconName\"></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.breadcrumbItemPortal\"></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n</fd-menu>\n\n<span\n class=\"fd-breadcrumb__item\"\n *ngIf=\"_collapsedBreadcrumbItems.length\"\n [fdMenuTrigger]=\"menu\"\n #overflowBreadcrumbsContainer\n>\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n ...\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n</span>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-breadcrumb\n .fd-breadcrumb__item\n .fd-breadcrump__link\n*/.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:inline-block;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}\n"], components: [{ type: i2.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { type: i2.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { type: i2.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "glyph", "submenuIndicator", "ariaHidden"] }, { type: i3.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { type: i4.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }, { type: i6.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i2.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
200
+ BreadcrumbComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbComponent, deps: [{ token: i0.ElementRef }, { token: i1.DestroyedService }, { token: i1.RtlService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
201
+ BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { containerElement: "containerElement", reverse: "reverse" }, outputs: { visibleItemsCount: "visibleItemsCount", hiddenItemsCount: "hiddenItemsCount" }, host: { classAttribute: "fd-breadcrumb" }, providers: [DestroyedService], queries: [{ propertyName: "_contentItems", predicate: BreadcrumbItemComponent }], viewQueries: [{ propertyName: "_menuComponent", first: true, predicate: MenuComponent, descendants: true }, { propertyName: "_overflowLayout", first: true, predicate: OverflowLayoutComponent, descendants: true }], ngImport: i0, template: "<fd-overflow-layout\n [reverseHiddenItems]=\"reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n>\n <ng-container *ngFor=\"let breadcrumb of _items\">\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of breadcrumbs\">\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem.item, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.item.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\">\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n </fd-menu>\n <span class=\"fd-breadcrumb__item\" *ngIf=\"breadcrumbs.length > 0\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n \u2026\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n </ng-container>\n</fd-overflow-layout>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-breadcrumb\n .fd-breadcrumb__item\n .fd-breadcrump__link\n*/.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"], components: [{ type: i2.OverflowLayoutComponent, selector: "fd-overflow-layout", inputs: ["maxVisibleItems", "showMorePosition", "reverseHiddenItems", "enableKeyboardNavigation"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { type: i3.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { type: i3.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { type: i3.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "glyph", "submenuIndicator", "ariaHidden"] }, { type: i4.LinkComponent, selector: "[fdLink], [fd-link], [fd-breadcrumb-link]", inputs: ["class", "emphasized", "disabled", "inverted", "subtle", "undecorated"] }, { type: i5.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }], directives: [{ type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.OverflowItemRefDirective, selector: "[fdOverflowItemRef]", inputs: ["fdOverflowItemRef"] }, { type: i2.OverflowLayoutItemDirective, selector: "[fdOverflowLayoutItem]", inputs: ["focusable", "forceVisibility"], outputs: ["hiddenChange"] }, { type: i7.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { type: i2.OverflowExpandDirective, selector: "[fdOverflowExpand]", inputs: ["fdOverflowExpandItems"] }, { type: i3.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MenuTitleDirective, selector: "[fd-menu-title]" }, { type: i3.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
179
202
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
180
203
  type: Component,
181
204
  args: [{ selector: 'fd-breadcrumb', host: {
182
205
  class: 'fd-breadcrumb'
183
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of _collapsedBreadcrumbItems\">\n <li fd-menu-item [disabled]=\"breadcrumbItem.breadcrumbLink ? breadcrumbItem.breadcrumbLink.disabled : false\">\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.breadcrumbLink._postfixIconName\">\n <fd-menu-addon [glyph]=\"breadcrumbItem.breadcrumbLink._postfixIconName\"></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.breadcrumbItemPortal\"></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n</fd-menu>\n\n<span\n class=\"fd-breadcrumb__item\"\n *ngIf=\"_collapsedBreadcrumbItems.length\"\n [fdMenuTrigger]=\"menu\"\n #overflowBreadcrumbsContainer\n>\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n ...\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n</span>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-breadcrumb\n .fd-breadcrumb__item\n .fd-breadcrump__link\n*/.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:inline-block;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}\n"] }]
206
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [DestroyedService], template: "<fd-overflow-layout\n [reverseHiddenItems]=\"reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n>\n <ng-container *ngFor=\"let breadcrumb of _items\">\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of breadcrumbs\">\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem.item, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.item.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\">\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n </fd-menu>\n <span class=\"fd-breadcrumb__item\" *ngIf=\"breadcrumbs.length > 0\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n \u2026\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n </ng-container>\n</fd-overflow-layout>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.4\n * Copyright (c) 2022 SAP SE or an SAP affiliate company.\n * Licensed under Apache License 2.0 (https://github.com/SAP/fundamental-styles/blob/main/LICENSE)\n *//*!\n.fd-breadcrumb\n .fd-breadcrumb__item\n .fd-breadcrump__link\n*/.fd-breadcrumb{-webkit-box-sizing:border-box;-ms-flex-wrap:wrap;align-items:center;border:0;box-sizing:border-box;color:var(--sapTextColor);display:flex;flex-wrap:wrap;font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);list-style:none;margin:0;padding:0}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{-webkit-box-sizing:border-box;border:0;box-sizing:border-box;color:var(--sapTextColor);color:var(--sapContent_LabelColor);font-family:var(--sapFontFamily);font-size:var(--sapFontSize);font-weight:400;line-height:var(--sapContent_LineHeight);margin:0;padding:0}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{color:var(--sapContent_LabelColor);content:\"/\";margin-left:.25rem;margin-right:.25rem}.fd-breadcrumb__item:last-child:after{content:none}.fd-breadcrumb__item .fd-breadcrumb__popover-body{border:none;border-top-left-radius:.125rem;border-top-right-radius:.125rem}.fd-breadcrumb{display:flex;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}.fd-breadcrumb__item:last-child:after{content:\"/\"}.fd-overflow-layout__item--last .fd-breadcrumb__item:after{content:none}\n"] }]
184
207
  }], ctorParameters: function () {
185
- return [{ type: i0.ElementRef }, { type: i1.RtlService, decorators: [{
208
+ return [{ type: i0.ElementRef }, { type: i1.DestroyedService }, { type: i1.RtlService, decorators: [{
186
209
  type: Optional
187
- }] }, { type: i0.ChangeDetectorRef }, { type: i1.ResizeObserverService }, { type: i0.NgZone }];
188
- }, propDecorators: { _breadcrumbItems: [{
210
+ }] }, { type: i0.ChangeDetectorRef }];
211
+ }, propDecorators: { containerElement: [{
212
+ type: Input
213
+ }], reverse: [{
214
+ type: Input
215
+ }], visibleItemsCount: [{
216
+ type: Output
217
+ }], hiddenItemsCount: [{
218
+ type: Output
219
+ }], _contentItems: [{
189
220
  type: ContentChildren,
190
- args: [forwardRef(() => BreadcrumbItemComponent)]
221
+ args: [BreadcrumbItemComponent]
191
222
  }], _menuComponent: [{
192
223
  type: ViewChild,
193
224
  args: [MenuComponent]
194
- }], _overflowContainer: [{
225
+ }], _overflowLayout: [{
195
226
  type: ViewChild,
196
- args: ['overflowBreadcrumbsContainer']
197
- }], containerElement: [{
198
- type: Input
199
- }], reverse: [{
200
- type: Input
227
+ args: [OverflowLayoutComponent]
201
228
  }] } });
202
229
 
203
230
  class DeprecatedBreadcrumbsCompactDirective extends DeprecatedCompactDirective {
@@ -236,7 +263,9 @@ BreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
236
263
  LinkModule,
237
264
  PortalModule,
238
265
  PipeModule,
239
- ContentDensityModule], exports: [BreadcrumbComponent,
266
+ ContentDensityModule,
267
+ OverflowLayoutModule,
268
+ ButtonModule], exports: [BreadcrumbComponent,
240
269
  BreadcrumbItemComponent,
241
270
  LinkModule,
242
271
  DeprecatedBreadcrumbsCompactDirective,
@@ -249,7 +278,9 @@ BreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
249
278
  LinkModule,
250
279
  PortalModule,
251
280
  PipeModule,
252
- ContentDensityModule
281
+ ContentDensityModule,
282
+ OverflowLayoutModule,
283
+ ButtonModule
253
284
  ], LinkModule,
254
285
  ContentDensityModule] });
255
286
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbModule, decorators: [{
@@ -263,7 +294,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
263
294
  LinkModule,
264
295
  PortalModule,
265
296
  PipeModule,
266
- ContentDensityModule
297
+ ContentDensityModule,
298
+ OverflowLayoutModule,
299
+ ButtonModule
267
300
  ],
268
301
  exports: [
269
302
  BreadcrumbComponent,
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-breadcrumb.mjs","sources":["../../../../libs/core/src/lib/breadcrumb/breadcrumb-item.component.ts","../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.ts","../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.html","../../../../libs/core/src/lib/breadcrumb/deprecated-breadcrumbs-compact.directive.ts","../../../../libs/core/src/lib/breadcrumb/breadcrumb.module.ts","../../../../libs/core/src/lib/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n forwardRef,\n Renderer2\n} from '@angular/core';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\nimport { DomPortal } from '@angular/cdk/portal';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Component({\n selector: 'fd-breadcrumb-item',\n template: '<div style=\"display: inline\"><ng-content></ng-content></div>',\n host: {\n class: 'fd-breadcrumb__item'\n }\n})\nexport class BreadcrumbItemComponent implements AfterViewInit {\n /** @hidden */\n get elementRef(): ElementRef<HTMLElement> {\n return this._elementRef;\n }\n\n /** @hidden */\n @ContentChild(forwardRef(() => LinkComponent))\n breadcrumbLink: LinkComponent;\n\n /** @hidden */\n get width(): number {\n return this._elementRef.nativeElement.getBoundingClientRect().width;\n }\n\n /** In case there is no link in Item and breadcrumb item is non-interactive, we move whole item content to menu item title */\n breadcrumbItemPortal: DomPortal<Element>;\n\n /** When breadcrumb item has link in it, we are moving link content to menu item title */\n linkContentPortal: DomPortal;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private renderer2: Renderer2,\n private _cdR: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n get needsClickProxy(): boolean {\n return (\n !!this.breadcrumbLink?.elementRef().nativeElement.getAttribute('href') || !!this.breadcrumbLink.routerLink\n );\n }\n\n show = (): void => this.renderer2.setStyle(this._elementRef.nativeElement, 'display', 'inline-block');\n hide = (): void => this.renderer2.setStyle(this._elementRef.nativeElement, 'display', 'none');\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.breadcrumbLink) {\n this.linkContentPortal = new DomPortal<HTMLElement>(this.breadcrumbLink.contentSpan.nativeElement);\n }\n this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild as Element);\n this._cdR.detectChanges();\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n forwardRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { ResizeObserverService, RtlService } from '@fundamental-ngx/core/utils';\nimport { BehaviorSubject, debounceTime, firstValueFrom, map, startWith, Subscription, tap } from 'rxjs';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { Placement } from '@fundamental-ngx/core/shared';\n\n/**\n * Breadcrumb parent wrapper directive. Must have breadcrumb item child directives.\n *\n * ```html\n * <fd-breadcrumb>\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * </fd-breadcrumb>\n * ```\n */\n@Component({\n // TODO to be discussed\n // eslint-disable-next-line\n selector: 'fd-breadcrumb',\n host: {\n class: 'fd-breadcrumb'\n },\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbComponent implements AfterViewInit, OnInit, OnDestroy {\n /** @hidden */\n @ContentChildren(forwardRef(() => BreadcrumbItemComponent))\n _breadcrumbItems: QueryList<BreadcrumbItemComponent>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n _menuComponent: MenuComponent;\n\n @ViewChild('overflowBreadcrumbsContainer')\n private readonly _overflowContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n _collapsedBreadcrumbItems: Array<BreadcrumbItemComponent> = [];\n\n /** @hidden */\n _placement$ = new BehaviorSubject<Placement>('bottom-start');\n\n /**\n * The element to act as the breadcrumb container. When provided, the breadcrumb's responsive collapsing behavior\n * performs better. When not provided, the immediate parent element's width will be used.\n */\n @Input()\n containerElement: HTMLElement;\n\n /** Whether to append items to the overflow dropdown in reverse order. Default is true. */\n @Input()\n reverse = false;\n\n /** @hidden */\n _containerBoundary: number;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n private _itemToSize = new Map<BreadcrumbItemComponent, number>();\n\n constructor(\n public readonly elementRef: ElementRef<Element>,\n @Optional() private readonly _rtlService: RtlService | null,\n private readonly _cdRef: ChangeDetectorRef,\n private readonly _resizeObserver: ResizeObserverService,\n private readonly _ngZone: NgZone\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n if (this._rtlService) {\n this._subscriptions.add(\n this._rtlService.rtl.subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start'))\n );\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._subscriptions.add(\n this._breadcrumbItems.changes\n .pipe(\n startWith(this._breadcrumbItems),\n map((items) => items.toArray() as BreadcrumbItemComponent[]),\n map((items) => items.map((item) => [item, item.width]) as [BreadcrumbItemComponent, number][]),\n tap((itemToSize: [BreadcrumbItemComponent, number][]) => (this._itemToSize = new Map(itemToSize)))\n )\n .subscribe()\n );\n firstValueFrom(this._ngZone.onStable).then(() => {\n this._subscriptions.add(\n this._resizeObserver\n .observe(this.containerElement || (this.elementRef.nativeElement.parentElement as Element))\n // Add small delay for performance reasons.\n .pipe(debounceTime(30))\n .subscribe(() => this.onResize())\n );\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /**\n * Callback function when breadcrumbs container has been resized.\n */\n onResize(): void {\n if (!this.elementRef.nativeElement.parentElement) {\n return;\n }\n this._containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n\n if (this.containerElement) {\n this._containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n\n if (this._overflowContainer) {\n this._containerBoundary -= this._overflowContainer.nativeElement.getBoundingClientRect().width;\n }\n\n let visibleSum = 0;\n const breadcrumbItemComponents = this._breadcrumbItems.toArray();\n let i;\n for (i = breadcrumbItemComponents.length - 1; i >= 0; i--) {\n const breadcrumbItem = breadcrumbItemComponents[i];\n const itemSize = this._itemToSize.has(breadcrumbItem)\n ? (this._itemToSize.get(breadcrumbItem) as number)\n : breadcrumbItem.width;\n if (visibleSum + itemSize <= this._containerBoundary) {\n visibleSum += itemSize;\n breadcrumbItem.show();\n } else {\n break;\n }\n }\n const collapsedBreadcrumbItems = breadcrumbItemComponents.slice(0, ++i);\n this._collapsedBreadcrumbItems = this.reverse ? collapsedBreadcrumbItems : collapsedBreadcrumbItems.reverse();\n this._collapsedBreadcrumbItems.forEach((item) => item.hide());\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n _keyDownHandle(event: Event): void {\n this._menuComponent.toggle();\n event.preventDefault();\n }\n\n /**\n * We catch interactions with item, Enter, Space, Mouse click and Touch click,\n * if original element had router link we are proxying click to that element\n * */\n itemClicked(breadcrumbItem: BreadcrumbItemComponent, $event: any): void {\n if (breadcrumbItem.needsClickProxy) {\n $event.preventDefault();\n breadcrumbItem.breadcrumbLink.elementRef().nativeElement.click();\n }\n }\n}\n","<fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of _collapsedBreadcrumbItems\">\n <li fd-menu-item [disabled]=\"breadcrumbItem.breadcrumbLink ? breadcrumbItem.breadcrumbLink.disabled : false\">\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.breadcrumbLink._postfixIconName\">\n <fd-menu-addon [glyph]=\"breadcrumbItem.breadcrumbLink._postfixIconName\"></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.breadcrumbItemPortal\"></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n</fd-menu>\n\n<span\n class=\"fd-breadcrumb__item\"\n *ngIf=\"_collapsedBreadcrumbItems.length\"\n [fdMenuTrigger]=\"menu\"\n #overflowBreadcrumbsContainer\n>\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n ...\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n</span>\n\n<ng-content></ng-content>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-breadcrumb[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedBreadcrumbsCompactDirective)\n }\n ]\n})\nexport class DeprecatedBreadcrumbsCompactDirective extends DeprecatedCompactDirective {\n constructor() {\n super('fd-breadcrumb');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { MenuModule } from '@fundamental-ngx/core/menu';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { PipeModule } from '@fundamental-ngx/core/utils';\nimport { DeprecatedBreadcrumbsCompactDirective } from './deprecated-breadcrumbs-compact.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n imports: [\n CommonModule,\n IconModule,\n PopoverModule,\n MenuModule,\n LinkModule,\n PortalModule,\n PipeModule,\n ContentDensityModule\n ],\n exports: [\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n LinkModule,\n DeprecatedBreadcrumbsCompactDirective,\n ContentDensityModule\n ],\n declarations: [BreadcrumbComponent, BreadcrumbItemComponent, DeprecatedBreadcrumbsCompactDirective]\n})\nexport class BreadcrumbModule {}\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-breadcrumb.mjs","sources":["../../../../libs/core/src/lib/breadcrumb/breadcrumb-item.component.ts","../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.ts","../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.html","../../../../libs/core/src/lib/breadcrumb/deprecated-breadcrumbs-compact.directive.ts","../../../../libs/core/src/lib/breadcrumb/breadcrumb.module.ts","../../../../libs/core/src/lib/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { DomPortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n forwardRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { LinkComponent } from '@fundamental-ngx/core/link';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Component({\n selector: 'fd-breadcrumb-item',\n template: '<ng-content></ng-content>',\n host: {\n class: 'fd-breadcrumb__item'\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BreadcrumbItemComponent implements AfterViewInit {\n /** @hidden */\n @ContentChild(forwardRef(() => LinkComponent))\n breadcrumbLink: LinkComponent;\n\n /** In case there is no link in Item and breadcrumb item is non-interactive, we move whole item content to menu item title */\n breadcrumbItemPortal: DomPortal<Element>;\n\n /** When breadcrumb item has link in it, we are moving link content to menu item title */\n linkContentPortal: DomPortal;\n\n /**\n * Breadcrumb item dom portal.\n */\n portal: DomPortal;\n\n /** @hidden */\n private _attached = false;\n\n /** @hidden */\n constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n /** @hidden */\n get _needsClickProxy(): boolean {\n return (\n !!this.breadcrumbLink?.elementRef().nativeElement.getAttribute('href') || !!this.breadcrumbLink.routerLink\n );\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._attach();\n }\n\n /**\n * Sets breadcrumb item dom portal.\n */\n setPortal(): void {\n if (!this.portal) {\n this.portal = new DomPortal(this.elementRef);\n }\n }\n\n /** @hidden */\n _detach(): void {\n if (!this._attached) {\n return;\n }\n\n if (this.linkContentPortal?.isAttached) {\n this.linkContentPortal?.detach();\n }\n\n if (this.breadcrumbItemPortal?.isAttached) {\n this.breadcrumbItemPortal?.detach();\n }\n\n this._attached = false;\n }\n\n /** @hidden */\n _attach(): void {\n if (this._attached) {\n return;\n }\n\n if (this.breadcrumbLink && this.breadcrumbLink.contentSpan) {\n this.linkContentPortal = new DomPortal<HTMLElement>(this.breadcrumbLink.contentSpan.nativeElement);\n }\n\n this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild as Element);\n this._attached = true;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n isDevMode,\n OnInit,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { OverflowLayoutComponent } from '@fundamental-ngx/core/overflow-layout';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { DestroyedService, RtlService } from '@fundamental-ngx/core/utils';\nimport { BehaviorSubject, takeUntil } from 'rxjs';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { Placement } from '@fundamental-ngx/core/shared';\n\n/**\n * Breadcrumb parent wrapper directive. Must have breadcrumb item child directives.\n *\n * ```html\n * <fd-breadcrumb>\n * <fd-breadcrumb-item>\n * <a fd-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * </fd-breadcrumb>\n * ```\n */\n@Component({\n selector: 'fd-breadcrumb',\n host: {\n class: 'fd-breadcrumb'\n },\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DestroyedService]\n})\nexport class BreadcrumbComponent implements OnInit, AfterViewInit {\n /**\n * @deprecated\n * Breadcrumbs component now uses more advanced calculation mechanism without the need of specifying the container element.\n *\n * The element to act as the breadcrumb container. When provided, the breadcrumb's responsive collapsing behavior\n * performs better. When not provided, the immediate parent element's width will be used.\n */\n @Input()\n set containerElement(_: HTMLElement) {\n if (isDevMode()) {\n console.warn(\n 'Breadcrumbs component now uses more advanced calculation mechanism without the need of specifying the container element.'\n );\n }\n }\n\n /** Whether to append items to the overflow dropdown in reverse order. Default is true. */\n @Input()\n reverse = false;\n\n /**\n * Event emitted when visible items count is changed.\n */\n @Output()\n visibleItemsCount = new EventEmitter<number>();\n\n /**\n * Event emitted when hidden items count is changed.\n */\n @Output()\n hiddenItemsCount = new EventEmitter<number>();\n\n /** @hidden */\n @ContentChildren(BreadcrumbItemComponent)\n private readonly _contentItems: QueryList<BreadcrumbItemComponent>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n private readonly _menuComponent: MenuComponent;\n\n /** @hidden */\n @ViewChild(OverflowLayoutComponent)\n private readonly _overflowLayout: OverflowLayoutComponent;\n\n /**\n * @hidden\n * Array of breadcrumb items.\n */\n _items: BreadcrumbItemComponent[] = [];\n\n /** @hidden */\n _placement$ = new BehaviorSubject<Placement>('bottom-start');\n\n /** @hidden */\n constructor(\n public elementRef: ElementRef<HTMLElement>,\n private _onDestroy$: DestroyedService,\n @Optional() private _rtlService: RtlService | null,\n private _cdr: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngOnInit(): void {\n this._rtlService?.rtl\n .pipe(takeUntil(this._onDestroy$))\n .subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start'));\n }\n\n /** @hidden */\n onResize(): void {\n this._overflowLayout.triggerRecalculation();\n }\n\n /**\n * We catch interactions with item, Enter, Space, Mouse click and Touch click,\n * if original element had router link we are proxying click to that element\n * */\n itemClicked(breadcrumbItem: any, $event: any): void {\n if (breadcrumbItem.needsClickProxy) {\n $event.preventDefault();\n breadcrumbItem.breadcrumbLink.elementRef().nativeElement.click();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n this._setItems();\n\n this._contentItems.changes.subscribe(() => this._setItems());\n }\n\n /** @hidden */\n _keyDownHandle(event: Event): void {\n this._menuComponent.toggle();\n event.preventDefault();\n }\n\n /** @hidden */\n _onHiddenChange(isHidden: boolean, breadcrumb: BreadcrumbItemComponent): void {\n if (!isHidden) {\n breadcrumb._detach();\n } else {\n breadcrumb._attach();\n }\n }\n\n /** @hidden */\n _onVisibleItemsCountChange(visibleItemsCount: number): void {\n this.visibleItemsCount.emit(visibleItemsCount);\n }\n\n /** @hidden */\n _onHiddenItemsCountChange(hiddenItemsCount: number): void {\n this.hiddenItemsCount.emit(hiddenItemsCount);\n }\n\n /** @hidden */\n private _setItems(): void {\n this._contentItems.forEach((item) => item.setPortal());\n this._items = this._contentItems.toArray();\n this._cdr.detectChanges();\n }\n}\n","<fd-overflow-layout\n [reverseHiddenItems]=\"reverse\"\n showMorePosition=\"left\"\n [enableKeyboardNavigation]=\"false\"\n (visibleItemsCount)=\"_onVisibleItemsCountChange($event)\"\n (hiddenItemsCount)=\"_onHiddenItemsCountChange($event)\"\n>\n <ng-container *ngFor=\"let breadcrumb of _items\">\n <div\n *fdOverflowItemRef=\"breadcrumb; let hidden\"\n fdOverflowLayoutItem\n (hiddenChange)=\"_onHiddenChange($event, breadcrumb)\"\n >\n <ng-template [cdkPortalOutlet]=\"breadcrumb.portal\"></ng-template>\n </div>\n </ng-container>\n <ng-container *fdOverflowExpand=\"let breadcrumbs; items: _items\">\n <fd-menu #menu [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"_placement$ | async\">\n <ng-container *ngFor=\"let breadcrumbItem of breadcrumbs\">\n <li\n fd-menu-item\n [disabled]=\"\n breadcrumbItem.item.breadcrumbLink ? breadcrumbItem.item.breadcrumbLink.disabled : false\n \"\n >\n <a\n fd-menu-interactive\n (click)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.enter)=\"itemClicked(breadcrumbItem.item, $event)\"\n (keydown.space)=\"itemClicked(breadcrumbItem.item, $event)\"\n >\n <ng-container *ngIf=\"breadcrumbItem?.item.breadcrumbLink; else portalContent\">\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\">\n <fd-menu-addon\n position=\"before\"\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._prefixIconName\"\n ></fd-menu-addon>\n </ng-container>\n <span fd-menu-title>\n <ng-container [cdkPortalOutlet]=\"breadcrumbItem.item.linkContentPortal\"></ng-container>\n </span>\n <ng-container *ngIf=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\">\n <fd-menu-addon\n [glyph]=\"breadcrumbItem.item.breadcrumbLink._postfixIconName\"\n ></fd-menu-addon>\n </ng-container>\n </ng-container>\n <ng-template #portalContent>\n <span fd-menu-title>\n <ng-container\n [cdkPortalOutlet]=\"breadcrumbItem.item.breadcrumbItemPortal\"\n ></ng-container>\n </span>\n </ng-template>\n </a>\n </li>\n </ng-container>\n </fd-menu>\n <span class=\"fd-breadcrumb__item\" *ngIf=\"breadcrumbs.length > 0\" [fdMenuTrigger]=\"menu\">\n <a\n fd-link\n tabindex=\"0\"\n class=\"fd-breadcrumb__collapsed\"\n (keydown.enter)=\"_keyDownHandle($event)\"\n (keydown.space)=\"_keyDownHandle($event)\"\n >\n …\n <fd-icon glyph=\"slim-arrow-down\"></fd-icon>\n </a>\n </span>\n </ng-container>\n</fd-overflow-layout>\n\n<ng-content></ng-content>\n","import { Directive, forwardRef } from '@angular/core';\nimport { CONTENT_DENSITY_DIRECTIVE, DeprecatedCompactDirective } from '@fundamental-ngx/core/content-density';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-breadcrumb[compact]',\n providers: [\n {\n provide: CONTENT_DENSITY_DIRECTIVE,\n useExisting: forwardRef(() => DeprecatedBreadcrumbsCompactDirective)\n }\n ]\n})\nexport class DeprecatedBreadcrumbsCompactDirective extends DeprecatedCompactDirective {\n constructor() {\n super('fd-breadcrumb');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from '@fundamental-ngx/core/button';\nimport { OverflowLayoutModule } from '@fundamental-ngx/core/overflow-layout';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { BreadcrumbItemComponent } from './breadcrumb-item.component';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { MenuModule } from '@fundamental-ngx/core/menu';\nimport { LinkModule } from '@fundamental-ngx/core/link';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { PipeModule } from '@fundamental-ngx/core/utils';\nimport { DeprecatedBreadcrumbsCompactDirective } from './deprecated-breadcrumbs-compact.directive';\nimport { ContentDensityModule } from '@fundamental-ngx/core/content-density';\n\n@NgModule({\n imports: [\n CommonModule,\n IconModule,\n PopoverModule,\n MenuModule,\n LinkModule,\n PortalModule,\n PipeModule,\n ContentDensityModule,\n OverflowLayoutModule,\n ButtonModule\n ],\n exports: [\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n LinkModule,\n DeprecatedBreadcrumbsCompactDirective,\n ContentDensityModule\n ],\n declarations: [BreadcrumbComponent, BreadcrumbItemComponent, DeprecatedBreadcrumbsCompactDirective]\n})\nexport class BreadcrumbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}