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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) 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/package.json +1 -1
  25. package/content-density/package.json +3 -3
  26. package/date-picker/package.json +1 -1
  27. package/datetime/package.json +1 -1
  28. package/datetime-picker/package.json +1 -1
  29. package/dialog/package.json +1 -1
  30. package/dynamic-page/package.json +1 -1
  31. package/dynamic-side-content/package.json +1 -1
  32. package/esm2020/breadcrumb/breadcrumb-item.component.mjs +44 -23
  33. package/esm2020/breadcrumb/breadcrumb.component.mjs +93 -88
  34. package/esm2020/breadcrumb/breadcrumb.module.mjs +12 -4
  35. package/esm2020/overflow-layout/directives/overflow-expand.directive.mjs +6 -4
  36. package/esm2020/overflow-layout/directives/overflow-item-container-ref.directive.mjs +2 -2
  37. package/esm2020/overflow-layout/directives/overflow-item-ref.directive.mjs +20 -8
  38. package/esm2020/overflow-layout/directives/overflow-layout-item-container.directive.mjs +30 -3
  39. package/esm2020/overflow-layout/directives/overflow-layout-item.directive.mjs +12 -3
  40. package/esm2020/overflow-layout/index.mjs +3 -1
  41. package/esm2020/overflow-layout/interfaces/overflow-expand.interface.mjs +1 -1
  42. package/esm2020/overflow-layout/interfaces/overflow-item-ref.interface.mjs +1 -1
  43. package/esm2020/overflow-layout/interfaces/overflow-item.interface.mjs +1 -1
  44. package/esm2020/overflow-layout/overflow-layout.component.mjs +83 -157
  45. package/esm2020/overflow-layout/overflow-layout.service.mjs +241 -0
  46. package/esm2020/time/time-column/time-column.component.mjs +7 -8
  47. package/esm2020/utils/functions/resize-observable.mjs +9 -2
  48. package/facets/package.json +1 -1
  49. package/feed-input/package.json +1 -1
  50. package/feed-list-item/package.json +1 -1
  51. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +147 -114
  52. package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  53. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs +378 -166
  54. package/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  55. package/fesm2015/fundamental-ngx-core-time.mjs +6 -7
  56. package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  57. package/fesm2015/fundamental-ngx-core-utils.mjs +8 -1
  58. package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  59. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +144 -111
  60. package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
  61. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs +375 -165
  62. package/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  63. package/fesm2020/fundamental-ngx-core-time.mjs +6 -7
  64. package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  65. package/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
  66. package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  67. package/file-uploader/package.json +1 -1
  68. package/fixed-card-layout/package.json +1 -1
  69. package/flexible-column-layout/package.json +1 -1
  70. package/form/package.json +1 -1
  71. package/formatted-text/package.json +1 -1
  72. package/grid-list/package.json +1 -1
  73. package/icon/package.json +1 -1
  74. package/illustrated-message/package.json +1 -1
  75. package/infinite-scroll/package.json +1 -1
  76. package/info-label/package.json +1 -1
  77. package/inline-help/package.json +1 -1
  78. package/input-group/package.json +1 -1
  79. package/layout-grid/package.json +1 -1
  80. package/layout-panel/package.json +1 -1
  81. package/link/package.json +1 -1
  82. package/list/package.json +1 -1
  83. package/menu/package.json +1 -1
  84. package/message-box/package.json +1 -1
  85. package/message-strip/package.json +1 -1
  86. package/message-toast/package.json +1 -1
  87. package/micro-process-flow/package.json +1 -1
  88. package/mobile-mode/package.json +1 -1
  89. package/multi-input/package.json +1 -1
  90. package/nested-list/package.json +1 -1
  91. package/notification/package.json +1 -1
  92. package/object-identifier/package.json +1 -1
  93. package/object-marker/package.json +1 -1
  94. package/object-number/package.json +1 -1
  95. package/object-status/package.json +1 -1
  96. package/overflow-layout/directives/overflow-expand.directive.d.ts +6 -5
  97. package/overflow-layout/directives/overflow-item-ref.directive.d.ts +16 -6
  98. package/overflow-layout/directives/overflow-layout-item-container.directive.d.ts +13 -1
  99. package/overflow-layout/directives/overflow-layout-item.directive.d.ts +7 -2
  100. package/overflow-layout/esm2020/directives/overflow-expand.directive.mjs +6 -4
  101. package/overflow-layout/esm2020/directives/overflow-item-container-ref.directive.mjs +2 -2
  102. package/overflow-layout/esm2020/directives/overflow-item-ref.directive.mjs +20 -8
  103. package/overflow-layout/esm2020/directives/overflow-layout-item-container.directive.mjs +30 -3
  104. package/overflow-layout/esm2020/directives/overflow-layout-item.directive.mjs +12 -3
  105. package/overflow-layout/esm2020/index.mjs +3 -1
  106. package/overflow-layout/esm2020/interfaces/overflow-expand.interface.mjs +1 -1
  107. package/overflow-layout/esm2020/interfaces/overflow-item-ref.interface.mjs +1 -1
  108. package/overflow-layout/esm2020/interfaces/overflow-item.interface.mjs +1 -1
  109. package/overflow-layout/esm2020/overflow-layout.component.mjs +83 -157
  110. package/overflow-layout/esm2020/overflow-layout.service.mjs +241 -0
  111. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs +378 -166
  112. package/overflow-layout/fesm2015/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  113. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs +375 -165
  114. package/overflow-layout/fesm2020/fundamental-ngx-core-overflow-layout.mjs.map +1 -1
  115. package/overflow-layout/index.d.ts +2 -0
  116. package/overflow-layout/interfaces/overflow-expand.interface.d.ts +4 -4
  117. package/overflow-layout/interfaces/overflow-item-ref.interface.d.ts +14 -3
  118. package/overflow-layout/interfaces/overflow-item.interface.d.ts +2 -1
  119. package/overflow-layout/overflow-layout.component.d.ts +19 -31
  120. package/overflow-layout/overflow-layout.service.d.ts +90 -0
  121. package/overflow-layout/package.json +14 -13
  122. package/overflow-layout/tokens/overflow-expand.token.d.ts +1 -1
  123. package/overflow-layout/tokens/overflow-item-ref.token.d.ts +1 -1
  124. package/package.json +1 -1
  125. package/pagination/package.json +1 -1
  126. package/panel/package.json +1 -1
  127. package/popover/package.json +1 -1
  128. package/product-switch/package.json +1 -1
  129. package/progress-indicator/package.json +1 -1
  130. package/quick-view/package.json +1 -1
  131. package/radio/package.json +1 -1
  132. package/rating-indicator/package.json +1 -1
  133. package/resizable-card-layout/package.json +1 -1
  134. package/scroll-spy/package.json +1 -1
  135. package/scrollbar/package.json +1 -1
  136. package/segmented-button/package.json +1 -1
  137. package/select/package.json +1 -1
  138. package/shared/package.json +1 -1
  139. package/shellbar/package.json +1 -1
  140. package/side-navigation/package.json +1 -1
  141. package/slider/package.json +1 -1
  142. package/split-button/package.json +1 -1
  143. package/splitter/package.json +1 -1
  144. package/status-indicator/package.json +1 -1
  145. package/step-input/package.json +1 -1
  146. package/switch/package.json +1 -1
  147. package/table/package.json +1 -1
  148. package/tabs/package.json +1 -1
  149. package/text/package.json +1 -1
  150. package/theming/package.json +1 -1
  151. package/tile/package.json +1 -1
  152. package/time/esm2020/time-column/time-column.component.mjs +7 -8
  153. package/time/fesm2015/fundamental-ngx-core-time.mjs +6 -7
  154. package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
  155. package/time/fesm2020/fundamental-ngx-core-time.mjs +6 -7
  156. package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
  157. package/time/package.json +1 -1
  158. package/time/time-column/time-column.component.d.ts +1 -0
  159. package/time-picker/package.json +1 -1
  160. package/timeline/package.json +1 -1
  161. package/title/package.json +1 -1
  162. package/token/package.json +1 -1
  163. package/toolbar/package.json +1 -1
  164. package/tree/package.json +1 -1
  165. package/upload-collection/package.json +1 -1
  166. package/utils/esm2020/functions/resize-observable.mjs +9 -2
  167. package/utils/fesm2015/fundamental-ngx-core-utils.mjs +8 -1
  168. package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
  169. package/utils/fesm2020/fundamental-ngx-core-utils.mjs +8 -1
  170. package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
  171. package/utils/package.json +1 -1
  172. package/vertical-navigation/package.json +1 -1
  173. package/wizard/package.json +1 -1
@@ -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';
10
+ import * as i4 from '@fundamental-ngx/core/link';
11
+ import { LinkComponent, LinkModule } from '@fundamental-ngx/core/link';
9
12
  import * as i1 from '@fundamental-ngx/core/utils';
10
- import { PipeModule } from '@fundamental-ngx/core/utils';
11
- import { BehaviorSubject, Subscription, startWith, map, tap, firstValueFrom, debounceTime } from 'rxjs';
12
- import * as i2 from '@fundamental-ngx/core/menu';
13
+ import { DestroyedService, PipeModule } from '@fundamental-ngx/core/utils';
14
+ import { BehaviorSubject, takeUntil } from 'rxjs';
15
+ import * as i3 from '@fundamental-ngx/core/menu';
13
16
  import { MenuComponent, MenuModule } from '@fundamental-ngx/core/menu';
14
- import * as i4 from '@fundamental-ngx/core/icon';
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,46 +29,67 @@ 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');
32
+ /** @hidden */
33
+ constructor(elementRef) {
34
+ this.elementRef = elementRef;
35
+ /** @hidden */
36
+ this._attached = false;
35
37
  }
36
38
  /** @hidden */
37
- get elementRef() {
38
- return this._elementRef;
39
+ get _needsClickProxy() {
40
+ return (!!this.breadcrumbLink?.elementRef().nativeElement.getAttribute('href') || !!this.breadcrumbLink.routerLink);
39
41
  }
40
42
  /** @hidden */
41
- get width() {
42
- return this._elementRef.nativeElement.getBoundingClientRect().width;
43
+ ngAfterViewInit() {
44
+ this._attach();
45
+ }
46
+ /**
47
+ * Sets breadcrumb item dom portal.
48
+ */
49
+ setPortal() {
50
+ if (!this.portal) {
51
+ this.portal = new DomPortal(this.elementRef);
52
+ }
43
53
  }
44
54
  /** @hidden */
45
- get needsClickProxy() {
46
- return (!!this.breadcrumbLink?.elementRef().nativeElement.getAttribute('href') || !!this.breadcrumbLink.routerLink);
55
+ _detach() {
56
+ if (!this._attached) {
57
+ return;
58
+ }
59
+ if (this.linkContentPortal?.isAttached) {
60
+ this.linkContentPortal?.detach();
61
+ }
62
+ if (this.breadcrumbItemPortal?.isAttached) {
63
+ this.breadcrumbItemPortal?.detach();
64
+ }
65
+ this._attached = false;
47
66
  }
48
67
  /** @hidden */
49
- ngAfterViewInit() {
50
- if (this.breadcrumbLink) {
68
+ _attach() {
69
+ if (this._attached) {
70
+ return;
71
+ }
72
+ if (this.breadcrumbLink && this.breadcrumbLink.contentSpan) {
51
73
  this.linkContentPortal = new DomPortal(this.breadcrumbLink.contentSpan.nativeElement);
52
74
  }
53
75
  this.breadcrumbItemPortal = new DomPortal(this.elementRef.nativeElement.firstElementChild);
54
- this._cdR.detectChanges();
76
+ this._attached = true;
55
77
  }
56
78
  }
57
- 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 });
58
- 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 });
79
+ BreadcrumbItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
80
+ 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 });
59
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbItemComponent, decorators: [{
60
82
  type: Component,
61
83
  args: [{
62
84
  selector: 'fd-breadcrumb-item',
63
- template: '<div style="display: inline"><ng-content></ng-content></div>',
85
+ template: '<ng-content></ng-content>',
64
86
  host: {
65
87
  class: 'fd-breadcrumb__item'
66
- }
88
+ },
89
+ encapsulation: ViewEncapsulation.None,
90
+ changeDetection: ChangeDetectionStrategy.OnPush
67
91
  }]
68
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { breadcrumbLink: [{
92
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { breadcrumbLink: [{
69
93
  type: ContentChild,
70
94
  args: [forwardRef(() => LinkComponent)]
71
95
  }] } });
@@ -82,85 +106,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
82
106
  * ```
83
107
  */
84
108
  class BreadcrumbComponent {
85
- constructor(elementRef, _rtlService, _cdRef, _resizeObserver, _ngZone) {
109
+ /** @hidden */
110
+ constructor(elementRef, _onDestroy$, _rtlService, _cdr) {
86
111
  this.elementRef = elementRef;
112
+ this._onDestroy$ = _onDestroy$;
87
113
  this._rtlService = _rtlService;
88
- this._cdRef = _cdRef;
89
- this._resizeObserver = _resizeObserver;
90
- this._ngZone = _ngZone;
91
- /** @hidden */
92
- this._collapsedBreadcrumbItems = [];
93
- /** @hidden */
94
- this._placement$ = new BehaviorSubject('bottom-start');
114
+ this._cdr = _cdr;
95
115
  /** Whether to append items to the overflow dropdown in reverse order. Default is true. */
96
116
  this.reverse = false;
117
+ /**
118
+ * Event emitted when visible items count is changed.
119
+ */
120
+ this.visibleItemsCount = new EventEmitter();
121
+ /**
122
+ * Event emitted when hidden items count is changed.
123
+ */
124
+ this.hiddenItemsCount = new EventEmitter();
125
+ /**
126
+ * @hidden
127
+ * Array of breadcrumb items.
128
+ */
129
+ this._items = [];
97
130
  /** @hidden */
98
- this._subscriptions = new Subscription();
99
- /** @hidden */
100
- this._itemToSize = new Map();
131
+ this._placement$ = new BehaviorSubject('bottom-start');
101
132
  }
102
- /** @hidden */
103
- ngOnInit() {
104
- if (this._rtlService) {
105
- this._subscriptions.add(this._rtlService.rtl.subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start')));
133
+ /**
134
+ * @deprecated
135
+ * Breadcrumbs component now uses more advanced calculation mechanism without the need of specifying the container element.
136
+ *
137
+ * The element to act as the breadcrumb container. When provided, the breadcrumb's responsive collapsing behavior
138
+ * performs better. When not provided, the immediate parent element's width will be used.
139
+ */
140
+ set containerElement(_) {
141
+ if (isDevMode()) {
142
+ console.warn('Breadcrumbs component now uses more advanced calculation mechanism without the need of specifying the container element.');
106
143
  }
107
144
  }
108
145
  /** @hidden */
109
- ngAfterViewInit() {
110
- this._subscriptions.add(this._breadcrumbItems.changes
111
- .pipe(startWith(this._breadcrumbItems), map((items) => items.toArray()), map((items) => items.map((item) => [item, item.width])), tap((itemToSize) => (this._itemToSize = new Map(itemToSize))))
112
- .subscribe());
113
- firstValueFrom(this._ngZone.onStable).then(() => {
114
- this._subscriptions.add(this._resizeObserver
115
- .observe(this.containerElement || this.elementRef.nativeElement.parentElement)
116
- // Add small delay for performance reasons.
117
- .pipe(debounceTime(30))
118
- .subscribe(() => this.onResize()));
119
- });
146
+ ngOnInit() {
147
+ this._rtlService?.rtl
148
+ .pipe(takeUntil(this._onDestroy$))
149
+ .subscribe((value) => this._placement$.next(value ? 'bottom-end' : 'bottom-start'));
120
150
  }
121
151
  /** @hidden */
122
- ngOnDestroy() {
123
- this._subscriptions.unsubscribe();
124
- }
125
- /**
126
- * Callback function when breadcrumbs container has been resized.
127
- */
128
152
  onResize() {
129
- if (!this.elementRef.nativeElement.parentElement) {
130
- return;
131
- }
132
- this._containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;
133
- if (this.containerElement) {
134
- this._containerBoundary = this.containerElement.getBoundingClientRect().width;
135
- }
136
- if (this._overflowContainer) {
137
- this._containerBoundary -= this._overflowContainer.nativeElement.getBoundingClientRect().width;
138
- }
139
- let visibleSum = 0;
140
- const breadcrumbItemComponents = this._breadcrumbItems.toArray();
141
- let i;
142
- for (i = breadcrumbItemComponents.length - 1; i >= 0; i--) {
143
- const breadcrumbItem = breadcrumbItemComponents[i];
144
- const itemSize = this._itemToSize.has(breadcrumbItem)
145
- ? this._itemToSize.get(breadcrumbItem)
146
- : breadcrumbItem.width;
147
- if (visibleSum + itemSize <= this._containerBoundary) {
148
- visibleSum += itemSize;
149
- breadcrumbItem.show();
150
- }
151
- else {
152
- break;
153
- }
154
- }
155
- const collapsedBreadcrumbItems = breadcrumbItemComponents.slice(0, ++i);
156
- this._collapsedBreadcrumbItems = this.reverse ? collapsedBreadcrumbItems : collapsedBreadcrumbItems.reverse();
157
- this._collapsedBreadcrumbItems.forEach((item) => item.hide());
158
- this._cdRef.detectChanges();
159
- }
160
- /** @hidden */
161
- _keyDownHandle(event) {
162
- this._menuComponent.toggle();
163
- event.preventDefault();
153
+ this._overflowLayout.triggerRecalculation();
164
154
  }
165
155
  /**
166
156
  * We catch interactions with item, Enter, Space, Mouse click and Touch click,
@@ -172,29 +162,66 @@ class BreadcrumbComponent {
172
162
  breadcrumbItem.breadcrumbLink.elementRef().nativeElement.click();
173
163
  }
174
164
  }
165
+ /** @hidden */
166
+ ngAfterViewInit() {
167
+ this._setItems();
168
+ this._contentItems.changes.subscribe(() => this._setItems());
169
+ }
170
+ /** @hidden */
171
+ _keyDownHandle(event) {
172
+ this._menuComponent.toggle();
173
+ event.preventDefault();
174
+ }
175
+ /** @hidden */
176
+ _onHiddenChange(isHidden, breadcrumb) {
177
+ if (!isHidden) {
178
+ breadcrumb._detach();
179
+ }
180
+ else {
181
+ breadcrumb._attach();
182
+ }
183
+ }
184
+ /** @hidden */
185
+ _onVisibleItemsCountChange(visibleItemsCount) {
186
+ this.visibleItemsCount.emit(visibleItemsCount);
187
+ }
188
+ /** @hidden */
189
+ _onHiddenItemsCountChange(hiddenItemsCount) {
190
+ this.hiddenItemsCount.emit(hiddenItemsCount);
191
+ }
192
+ /** @hidden */
193
+ _setItems() {
194
+ this._contentItems.forEach((item) => item.setPortal());
195
+ this._items = this._contentItems.toArray();
196
+ this._cdr.detectChanges();
197
+ }
175
198
  }
176
- 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 });
177
- 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 });
199
+ 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 });
200
+ 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 });
178
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
179
202
  type: Component,
180
203
  args: [{ selector: 'fd-breadcrumb', host: {
181
204
  class: 'fd-breadcrumb'
182
- }, 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"] }]
183
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.RtlService, decorators: [{
205
+ }, 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"] }]
206
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DestroyedService }, { type: i1.RtlService, decorators: [{
184
207
  type: Optional
185
- }] }, { type: i0.ChangeDetectorRef }, { type: i1.ResizeObserverService }, { type: i0.NgZone }]; }, propDecorators: { _breadcrumbItems: [{
208
+ }] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { containerElement: [{
209
+ type: Input
210
+ }], reverse: [{
211
+ type: Input
212
+ }], visibleItemsCount: [{
213
+ type: Output
214
+ }], hiddenItemsCount: [{
215
+ type: Output
216
+ }], _contentItems: [{
186
217
  type: ContentChildren,
187
- args: [forwardRef(() => BreadcrumbItemComponent)]
218
+ args: [BreadcrumbItemComponent]
188
219
  }], _menuComponent: [{
189
220
  type: ViewChild,
190
221
  args: [MenuComponent]
191
- }], _overflowContainer: [{
222
+ }], _overflowLayout: [{
192
223
  type: ViewChild,
193
- args: ['overflowBreadcrumbsContainer']
194
- }], containerElement: [{
195
- type: Input
196
- }], reverse: [{
197
- type: Input
224
+ args: [OverflowLayoutComponent]
198
225
  }] } });
199
226
 
200
227
  class DeprecatedBreadcrumbsCompactDirective extends DeprecatedCompactDirective {
@@ -233,7 +260,9 @@ BreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", versio
233
260
  LinkModule,
234
261
  PortalModule,
235
262
  PipeModule,
236
- ContentDensityModule], exports: [BreadcrumbComponent,
263
+ ContentDensityModule,
264
+ OverflowLayoutModule,
265
+ ButtonModule], exports: [BreadcrumbComponent,
237
266
  BreadcrumbItemComponent,
238
267
  LinkModule,
239
268
  DeprecatedBreadcrumbsCompactDirective,
@@ -246,7 +275,9 @@ BreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", versio
246
275
  LinkModule,
247
276
  PortalModule,
248
277
  PipeModule,
249
- ContentDensityModule
278
+ ContentDensityModule,
279
+ OverflowLayoutModule,
280
+ ButtonModule
250
281
  ], LinkModule,
251
282
  ContentDensityModule] });
252
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbModule, decorators: [{
@@ -260,7 +291,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
260
291
  LinkModule,
261
292
  PortalModule,
262
293
  PipeModule,
263
- ContentDensityModule
294
+ ContentDensityModule,
295
+ OverflowLayoutModule,
296
+ ButtonModule
264
297
  ],
265
298
  exports: [
266
299
  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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"}