@fundamental-ngx/core 0.34.3-rc.3 → 0.34.3-rc.30
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.
- package/action-bar/package.json +1 -1
- package/action-sheet/package.json +1 -1
- package/alert/package.json +1 -1
- package/avatar/package.json +1 -1
- package/avatar-group/package.json +1 -1
- package/bar/button-bar/button-bar.component.d.ts +5 -1
- package/bar/esm2020/button-bar/button-bar.component.mjs +10 -3
- package/bar/fesm2015/fundamental-ngx-core-bar.mjs +9 -2
- package/bar/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
- package/bar/fesm2020/fundamental-ngx-core-bar.mjs +9 -2
- package/bar/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
- package/bar/package.json +1 -1
- package/breadcrumb/breadcrumb.component.d.ts +3 -1
- package/breadcrumb/esm2020/breadcrumb.component.mjs +10 -4
- package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs +9 -3
- package/breadcrumb/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs +9 -3
- package/breadcrumb/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/breadcrumb/package.json +1 -1
- package/busy-indicator/package.json +1 -1
- package/button/package.json +1 -1
- package/calendar/package.json +1 -1
- package/card/package.json +1 -1
- package/carousel/carousel.component.d.ts +20 -3
- package/carousel/esm2020/carousel.component.mjs +90 -26
- package/carousel/fesm2015/fundamental-ngx-core-carousel.mjs +89 -25
- package/carousel/fesm2015/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/carousel/fesm2020/fundamental-ngx-core-carousel.mjs +89 -25
- package/carousel/fesm2020/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/carousel/package.json +1 -1
- package/checkbox/checkbox/checkbox.component.d.ts +1 -1
- package/checkbox/esm2020/checkbox/checkbox.component.mjs +2 -2
- package/checkbox/fesm2015/fundamental-ngx-core-checkbox.mjs +1 -1
- package/checkbox/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/checkbox/fesm2020/fundamental-ngx-core-checkbox.mjs +1 -1
- package/checkbox/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/checkbox/package.json +1 -1
- package/combobox/combobox.component.d.ts +2 -1
- package/combobox/combobox.module.d.ts +11 -10
- package/combobox/esm2020/combobox.component.mjs +4 -3
- package/combobox/esm2020/combobox.module.mjs +7 -6
- package/combobox/esm2020/list-group.pipe.mjs +16 -0
- package/combobox/esm2020/public_api.mjs +2 -1
- package/combobox/fesm2015/fundamental-ngx-core-combobox.mjs +30 -16
- package/combobox/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/combobox/fesm2020/fundamental-ngx-core-combobox.mjs +30 -16
- package/combobox/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/{utils/pipes → combobox}/list-group.pipe.d.ts +2 -1
- package/combobox/package.json +1 -1
- package/combobox/public_api.d.ts +1 -0
- package/date-picker/esm2020/date-picker.component.mjs +3 -3
- package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs +2 -2
- package/date-picker/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs +2 -2
- package/date-picker/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/date-picker/package.json +1 -1
- package/datetime/package.json +1 -1
- package/datetime-picker/datetime-picker.component.d.ts +7 -1
- package/datetime-picker/datetime-picker.module.d.ts +3 -2
- package/datetime-picker/esm2020/datetime-picker.component.mjs +21 -10
- package/datetime-picker/esm2020/datetime-picker.module.mjs +5 -1
- package/datetime-picker/fesm2015/fundamental-ngx-core-datetime-picker.mjs +25 -10
- package/datetime-picker/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/datetime-picker/fesm2020/fundamental-ngx-core-datetime-picker.mjs +25 -10
- package/datetime-picker/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/datetime-picker/package.json +1 -1
- package/dialog/base/dialog-content-base.class.d.ts +8 -4
- package/dialog/esm2020/base/dialog-content-base.class.mjs +1 -1
- package/dialog/esm2020/dialog-default/dialog-default.component.mjs +3 -3
- package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs +2 -2
- package/dialog/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs +2 -2
- package/dialog/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/dialog/package.json +1 -1
- package/dynamic-page/dynamic-page-content/dynamic-page-content.component.d.ts +8 -3
- package/dynamic-page/dynamic-page.component.d.ts +7 -3
- package/dynamic-page/esm2020/dynamic-page-content/dynamic-page-content.component.mjs +17 -8
- package/dynamic-page/esm2020/dynamic-page.component.mjs +29 -8
- package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs +58 -29
- package/dynamic-page/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs +57 -29
- package/dynamic-page/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/dynamic-page/package.json +1 -1
- package/dynamic-side-content/package.json +1 -1
- package/esm2020/bar/button-bar/button-bar.component.mjs +10 -3
- package/esm2020/breadcrumb/breadcrumb.component.mjs +10 -4
- package/esm2020/carousel/carousel.component.mjs +90 -26
- package/esm2020/checkbox/checkbox/checkbox.component.mjs +2 -2
- package/esm2020/combobox/combobox.component.mjs +4 -3
- package/esm2020/combobox/combobox.module.mjs +7 -6
- package/esm2020/combobox/list-group.pipe.mjs +16 -0
- package/esm2020/combobox/public_api.mjs +2 -1
- package/esm2020/date-picker/date-picker.component.mjs +3 -3
- package/esm2020/datetime-picker/datetime-picker.component.mjs +21 -10
- package/esm2020/datetime-picker/datetime-picker.module.mjs +5 -1
- package/esm2020/dialog/base/dialog-content-base.class.mjs +1 -1
- package/esm2020/dialog/dialog-default/dialog-default.component.mjs +3 -3
- package/esm2020/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +17 -8
- package/esm2020/dynamic-page/dynamic-page.component.mjs +29 -8
- package/esm2020/facets/facet/facet.component.mjs +3 -3
- package/esm2020/feed-list-item/components/item/feed-list-item.component.mjs +1 -1
- package/esm2020/fixed-card-layout/fixed-card-layout.component.mjs +19 -4
- package/esm2020/form/form-label/form-label.component.mjs +14 -6
- package/esm2020/form/form-label/form-label.module.mjs +5 -4
- package/esm2020/form/form-message/form-message.component.mjs +1 -1
- package/esm2020/grid-list/components/grid-list/grid-list-base.component.mjs +1 -1
- package/esm2020/grid-list/components/grid-list-item/grid-list-item.component.mjs +3 -3
- package/esm2020/grid-list/helpers/parse-layout-pattern.mjs +2 -2
- package/esm2020/link/link.component.mjs +6 -3
- package/esm2020/menu/services/menu.service.mjs +8 -6
- package/esm2020/message-box/message-box-default/message-box-default.component.mjs +3 -3
- package/esm2020/message-toast/constants.mjs +3 -0
- package/esm2020/message-toast/message-toast-service/message-toast.service.mjs +15 -7
- package/esm2020/message-toast/message-toast.module.mjs +43 -3
- package/esm2020/message-toast/public_api.mjs +2 -1
- package/esm2020/multi-input/multi-input.component.mjs +2 -2
- package/esm2020/pagination/pagination.component.mjs +7 -7
- package/esm2020/popover/base/base-popover.class.mjs +2 -2
- package/esm2020/popover/popover-container/popover-container.directive.mjs +36 -0
- package/esm2020/popover/popover-service/popover.service.mjs +12 -3
- package/esm2020/popover/popover.module.mjs +10 -5
- package/esm2020/popover/public_api.mjs +2 -1
- package/esm2020/quick-view/quick-view-group-item-label/quick-view-group-item-label.component.mjs +1 -1
- package/esm2020/rating-indicator/components/rating-indicator.component.mjs +4 -7
- package/esm2020/select/select.component.mjs +1 -10
- package/esm2020/select/select.interface.mjs +1 -1
- package/esm2020/shared/interfaces/form-states.mjs +1 -1
- package/esm2020/shared/public_api.mjs +2 -1
- package/esm2020/shared/utils/form.mjs +5 -0
- package/esm2020/slider/slider.component.mjs +3 -3
- package/esm2020/text/text.component.mjs +1 -1
- package/esm2020/tile/directives/numeric-content.directives.mjs +1 -1
- package/esm2020/time/time-column/time-column.component.mjs +2 -2
- package/esm2020/time-picker/time-picker.component.mjs +6 -3
- package/esm2020/utils/pipes/pipe.module.mjs +4 -33
- package/esm2020/utils/public_api.mjs +1 -2
- package/facets/esm2020/facet/facet.component.mjs +3 -3
- package/facets/fesm2015/fundamental-ngx-core-facets.mjs +2 -2
- package/facets/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
- package/facets/fesm2020/fundamental-ngx-core-facets.mjs +2 -2
- package/facets/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
- package/facets/package.json +1 -1
- package/feed-input/package.json +1 -1
- package/feed-list-item/esm2020/components/item/feed-list-item.component.mjs +1 -1
- package/feed-list-item/fesm2015/fundamental-ngx-core-feed-list-item.mjs +1 -1
- package/feed-list-item/fesm2020/fundamental-ngx-core-feed-list-item.mjs +1 -1
- package/feed-list-item/package.json +1 -1
- package/fesm2015/fundamental-ngx-core-bar.mjs +9 -2
- package/fesm2015/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-breadcrumb.mjs +9 -3
- package/fesm2015/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-carousel.mjs +89 -25
- package/fesm2015/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-checkbox.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-combobox.mjs +30 -16
- package/fesm2015/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-date-picker.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs +25 -10
- package/fesm2015/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dialog.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs +58 -29
- package/fesm2015/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-feed-list-item.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +19 -3
- package/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-form.mjs +17 -8
- package/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-grid-list.mjs +3 -3
- package/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-link.mjs +5 -2
- package/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-menu.mjs +7 -5
- package/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-message-toast.mjs +57 -9
- package/fesm2015/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-pagination.mjs +6 -6
- package/fesm2015/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-popover.mjs +51 -8
- package/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-quick-view.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs +3 -6
- package/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-select.mjs +1 -10
- package/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-shared.mjs +6 -1
- package/fesm2015/fundamental-ngx-core-shared.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-slider.mjs +2 -2
- package/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-text.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-time-picker.mjs +5 -2
- package/fesm2015/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-time.mjs +1 -1
- package/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2015/fundamental-ngx-core-utils.mjs +4 -46
- package/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-bar.mjs +9 -2
- package/fesm2020/fundamental-ngx-core-bar.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-breadcrumb.mjs +9 -3
- package/fesm2020/fundamental-ngx-core-breadcrumb.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-carousel.mjs +89 -25
- package/fesm2020/fundamental-ngx-core-carousel.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-checkbox.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-checkbox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-combobox.mjs +30 -16
- package/fesm2020/fundamental-ngx-core-combobox.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-date-picker.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-date-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs +25 -10
- package/fesm2020/fundamental-ngx-core-datetime-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dialog.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-dialog.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs +57 -29
- package/fesm2020/fundamental-ngx-core-dynamic-page.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-facets.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-facets.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-feed-list-item.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +18 -3
- package/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-form.mjs +17 -8
- package/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-grid-list.mjs +3 -3
- package/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-link.mjs +5 -2
- package/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-menu.mjs +7 -5
- package/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-box.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-message-toast.mjs +55 -9
- package/fesm2020/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-pagination.mjs +6 -6
- package/fesm2020/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-popover.mjs +50 -8
- package/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-quick-view.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs +3 -6
- package/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-select.mjs +1 -10
- package/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-shared.mjs +6 -1
- package/fesm2020/fundamental-ngx-core-shared.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-slider.mjs +2 -2
- package/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-text.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-time-picker.mjs +5 -2
- package/fesm2020/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-time.mjs +1 -1
- package/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
- package/fesm2020/fundamental-ngx-core-utils.mjs +4 -46
- package/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/file-uploader/package.json +1 -1
- package/fixed-card-layout/esm2020/fixed-card-layout.component.mjs +19 -4
- package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs +19 -3
- package/fixed-card-layout/fesm2015/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs +18 -3
- package/fixed-card-layout/fesm2020/fundamental-ngx-core-fixed-card-layout.mjs.map +1 -1
- package/fixed-card-layout/fixed-card-layout.component.d.ts +4 -2
- package/fixed-card-layout/package.json +1 -1
- package/flexible-column-layout/package.json +1 -1
- package/form/esm2020/form-label/form-label.component.mjs +14 -6
- package/form/esm2020/form-label/form-label.module.mjs +5 -4
- package/form/esm2020/form-message/form-message.component.mjs +1 -1
- package/form/fesm2015/fundamental-ngx-core-form.mjs +17 -8
- package/form/fesm2015/fundamental-ngx-core-form.mjs.map +1 -1
- package/form/fesm2020/fundamental-ngx-core-form.mjs +17 -8
- package/form/fesm2020/fundamental-ngx-core-form.mjs.map +1 -1
- package/form/form-label/form-label.component.d.ts +3 -1
- package/form/form-label/form-label.module.d.ts +2 -1
- package/form/form-message/form-message.component.d.ts +5 -3
- package/form/package.json +1 -1
- package/formatted-text/package.json +1 -1
- package/grid-list/components/grid-list/grid-list-base.component.d.ts +1 -1
- package/grid-list/components/grid-list-item/grid-list-item.component.d.ts +2 -2
- package/grid-list/esm2020/components/grid-list/grid-list-base.component.mjs +1 -1
- package/grid-list/esm2020/components/grid-list-item/grid-list-item.component.mjs +3 -3
- package/grid-list/esm2020/helpers/parse-layout-pattern.mjs +2 -2
- package/grid-list/fesm2015/fundamental-ngx-core-grid-list.mjs +3 -3
- package/grid-list/fesm2015/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/grid-list/fesm2020/fundamental-ngx-core-grid-list.mjs +3 -3
- package/grid-list/fesm2020/fundamental-ngx-core-grid-list.mjs.map +1 -1
- package/grid-list/package.json +1 -1
- package/icon/package.json +1 -1
- package/illustrated-message/package.json +1 -1
- package/infinite-scroll/package.json +1 -1
- package/info-label/package.json +1 -1
- package/inline-help/package.json +1 -1
- package/input-group/package.json +1 -1
- package/layout-grid/package.json +1 -1
- package/layout-panel/package.json +1 -1
- package/link/esm2020/link.component.mjs +6 -3
- package/link/fesm2015/fundamental-ngx-core-link.mjs +5 -2
- package/link/fesm2015/fundamental-ngx-core-link.mjs.map +1 -1
- package/link/fesm2020/fundamental-ngx-core-link.mjs +5 -2
- package/link/fesm2020/fundamental-ngx-core-link.mjs.map +1 -1
- package/link/link.component.d.ts +3 -1
- package/link/package.json +1 -1
- package/list/package.json +1 -1
- package/menu/esm2020/services/menu.service.mjs +8 -6
- package/menu/fesm2015/fundamental-ngx-core-menu.mjs +7 -5
- package/menu/fesm2015/fundamental-ngx-core-menu.mjs.map +1 -1
- package/menu/fesm2020/fundamental-ngx-core-menu.mjs +7 -5
- package/menu/fesm2020/fundamental-ngx-core-menu.mjs.map +1 -1
- package/menu/package.json +1 -1
- package/message-box/esm2020/message-box-default/message-box-default.component.mjs +3 -3
- package/message-box/fesm2015/fundamental-ngx-core-message-box.mjs +2 -2
- package/message-box/fesm2015/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/message-box/fesm2020/fundamental-ngx-core-message-box.mjs +2 -2
- package/message-box/fesm2020/fundamental-ngx-core-message-box.mjs.map +1 -1
- package/message-box/package.json +1 -1
- package/message-strip/package.json +1 -1
- package/message-toast/constants.d.ts +3 -0
- package/message-toast/esm2020/constants.mjs +3 -0
- package/message-toast/esm2020/message-toast-service/message-toast.service.mjs +15 -7
- package/message-toast/esm2020/message-toast.module.mjs +43 -3
- package/message-toast/esm2020/public_api.mjs +2 -1
- package/message-toast/fesm2015/fundamental-ngx-core-message-toast.mjs +57 -9
- package/message-toast/fesm2015/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/message-toast/fesm2020/fundamental-ngx-core-message-toast.mjs +55 -9
- package/message-toast/fesm2020/fundamental-ngx-core-message-toast.mjs.map +1 -1
- package/message-toast/message-toast-service/message-toast.service.d.ts +2 -1
- package/message-toast/message-toast.module.d.ts +14 -0
- package/message-toast/package.json +1 -1
- package/message-toast/public_api.d.ts +1 -0
- package/micro-process-flow/package.json +1 -1
- package/mobile-mode/package.json +1 -1
- package/multi-input/esm2020/multi-input.component.mjs +2 -2
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs +1 -1
- package/multi-input/fesm2015/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs +1 -1
- package/multi-input/fesm2020/fundamental-ngx-core-multi-input.mjs.map +1 -1
- package/multi-input/multi-input.component.d.ts +3 -3
- package/multi-input/package.json +1 -1
- package/nested-list/package.json +1 -1
- package/notification/package.json +1 -1
- package/object-identifier/package.json +1 -1
- package/object-marker/package.json +1 -1
- package/object-number/package.json +1 -1
- package/object-status/package.json +1 -1
- package/package.json +2 -2
- package/pagination/esm2020/pagination.component.mjs +7 -7
- package/pagination/fesm2015/fundamental-ngx-core-pagination.mjs +6 -6
- package/pagination/fesm2015/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/pagination/fesm2020/fundamental-ngx-core-pagination.mjs +6 -6
- package/pagination/fesm2020/fundamental-ngx-core-pagination.mjs.map +1 -1
- package/pagination/package.json +1 -1
- package/pagination/pagination.component.d.ts +4 -4
- package/panel/package.json +1 -1
- package/popover/base/base-popover.class.d.ts +1 -1
- package/popover/esm2020/base/base-popover.class.mjs +2 -2
- package/popover/esm2020/popover-container/popover-container.directive.mjs +36 -0
- package/popover/esm2020/popover-service/popover.service.mjs +12 -3
- package/popover/esm2020/popover.module.mjs +10 -5
- package/popover/esm2020/public_api.mjs +2 -1
- package/popover/fesm2015/fundamental-ngx-core-popover.mjs +51 -8
- package/popover/fesm2015/fundamental-ngx-core-popover.mjs.map +1 -1
- package/popover/fesm2020/fundamental-ngx-core-popover.mjs +50 -8
- package/popover/fesm2020/fundamental-ngx-core-popover.mjs.map +1 -1
- package/popover/package.json +1 -1
- package/popover/popover-container/popover-container.directive.d.ts +17 -0
- package/popover/popover-service/popover.service.d.ts +4 -2
- package/popover/popover.module.d.ts +5 -4
- package/popover/public_api.d.ts +1 -0
- package/product-switch/package.json +1 -1
- package/progress-indicator/package.json +1 -1
- package/quick-view/esm2020/quick-view-group-item-label/quick-view-group-item-label.component.mjs +1 -1
- package/quick-view/fesm2015/fundamental-ngx-core-quick-view.mjs +1 -1
- package/quick-view/fesm2020/fundamental-ngx-core-quick-view.mjs +1 -1
- package/quick-view/package.json +1 -1
- package/radio/package.json +1 -1
- package/rating-indicator/esm2020/components/rating-indicator.component.mjs +4 -7
- package/rating-indicator/fesm2015/fundamental-ngx-core-rating-indicator.mjs +3 -6
- package/rating-indicator/fesm2015/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/rating-indicator/fesm2020/fundamental-ngx-core-rating-indicator.mjs +3 -6
- package/rating-indicator/fesm2020/fundamental-ngx-core-rating-indicator.mjs.map +1 -1
- package/rating-indicator/package.json +1 -1
- package/resizable-card-layout/package.json +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/scroll-spy/package.json +1 -1
- package/scrollbar/package.json +1 -1
- package/segmented-button/package.json +1 -1
- package/select/esm2020/select.component.mjs +1 -10
- package/select/esm2020/select.interface.mjs +1 -1
- package/select/fesm2015/fundamental-ngx-core-select.mjs +1 -10
- package/select/fesm2015/fundamental-ngx-core-select.mjs.map +1 -1
- package/select/fesm2020/fundamental-ngx-core-select.mjs +1 -10
- package/select/fesm2020/fundamental-ngx-core-select.mjs.map +1 -1
- package/select/package.json +1 -1
- package/select/select.component.d.ts +5 -11
- package/select/select.interface.d.ts +1 -2
- package/shared/esm2020/interfaces/form-states.mjs +1 -1
- package/shared/esm2020/public_api.mjs +2 -1
- package/shared/esm2020/utils/form.mjs +5 -0
- package/shared/fesm2015/fundamental-ngx-core-shared.mjs +6 -1
- package/shared/fesm2015/fundamental-ngx-core-shared.mjs.map +1 -1
- package/shared/fesm2020/fundamental-ngx-core-shared.mjs +6 -1
- package/shared/fesm2020/fundamental-ngx-core-shared.mjs.map +1 -1
- package/shared/interfaces/form-states.d.ts +1 -1
- package/shared/package.json +1 -1
- package/shared/public_api.d.ts +1 -0
- package/shared/utils/form.d.ts +2 -0
- package/shellbar/package.json +1 -1
- package/side-navigation/package.json +1 -1
- package/slider/esm2020/slider.component.mjs +3 -3
- package/slider/fesm2015/fundamental-ngx-core-slider.mjs +2 -2
- package/slider/fesm2015/fundamental-ngx-core-slider.mjs.map +1 -1
- package/slider/fesm2020/fundamental-ngx-core-slider.mjs +2 -2
- package/slider/fesm2020/fundamental-ngx-core-slider.mjs.map +1 -1
- package/slider/package.json +1 -1
- package/split-button/package.json +1 -1
- package/splitter/package.json +1 -1
- package/status-indicator/package.json +1 -1
- package/step-input/package.json +1 -1
- package/switch/package.json +1 -1
- package/table/package.json +1 -1
- package/tabs/package.json +1 -1
- package/text/esm2020/text.component.mjs +1 -1
- package/text/fesm2015/fundamental-ngx-core-text.mjs +1 -1
- package/text/fesm2020/fundamental-ngx-core-text.mjs +1 -1
- package/text/package.json +1 -1
- package/tile/directives/numeric-content.directives.d.ts +5 -5
- package/tile/esm2020/directives/numeric-content.directives.mjs +1 -1
- package/tile/fesm2015/fundamental-ngx-core-tile.mjs.map +1 -1
- package/tile/fesm2020/fundamental-ngx-core-tile.mjs.map +1 -1
- package/tile/package.json +1 -1
- package/time/esm2020/time-column/time-column.component.mjs +2 -2
- package/time/fesm2015/fundamental-ngx-core-time.mjs +1 -1
- package/time/fesm2015/fundamental-ngx-core-time.mjs.map +1 -1
- package/time/fesm2020/fundamental-ngx-core-time.mjs +1 -1
- package/time/fesm2020/fundamental-ngx-core-time.mjs.map +1 -1
- package/time/package.json +1 -1
- package/time-picker/esm2020/time-picker.component.mjs +6 -3
- package/time-picker/fesm2015/fundamental-ngx-core-time-picker.mjs +5 -2
- package/time-picker/fesm2015/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/time-picker/fesm2020/fundamental-ngx-core-time-picker.mjs +5 -2
- package/time-picker/fesm2020/fundamental-ngx-core-time-picker.mjs.map +1 -1
- package/time-picker/package.json +1 -1
- package/timeline/package.json +1 -1
- package/title/package.json +1 -1
- package/token/package.json +1 -1
- package/toolbar/package.json +1 -1
- package/tree/package.json +1 -1
- package/upload-collection/package.json +1 -1
- package/utils/esm2020/pipes/pipe.module.mjs +4 -33
- package/utils/esm2020/public_api.mjs +1 -2
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs +4 -46
- package/utils/fesm2015/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs +4 -46
- package/utils/fesm2020/fundamental-ngx-core-utils.mjs.map +1 -1
- package/utils/package.json +1 -1
- package/utils/pipes/pipe.module.d.ts +4 -5
- package/utils/public_api.d.ts +0 -1
- package/vertical-navigation/package.json +1 -1
- package/wizard/package.json +1 -1
- package/esm2020/utils/pipes/list-group.pipe.mjs +0 -16
- package/utils/esm2020/pipes/list-group.pipe.mjs +0 -16
|
@@ -115,6 +115,8 @@ class BreadcrumbComponent {
|
|
|
115
115
|
this.collapsedBreadcrumbItems = [];
|
|
116
116
|
/** @hidden */
|
|
117
117
|
this.placement$ = new BehaviorSubject('bottom-start');
|
|
118
|
+
/** Whether or not to append items to the overflow dropdown in reverse order. Default is true. */
|
|
119
|
+
this.reverse = false;
|
|
118
120
|
/** @hidden */
|
|
119
121
|
this._subscriptions = new Subscription();
|
|
120
122
|
}
|
|
@@ -193,7 +195,9 @@ class BreadcrumbComponent {
|
|
|
193
195
|
i < this.breadcrumbItems.length) {
|
|
194
196
|
const breadcrumbItem = this.breadcrumbItems.filter((item, index) => index === i)[0];
|
|
195
197
|
if (this.collapsedBreadcrumbItems.indexOf(breadcrumbItem) === -1) {
|
|
196
|
-
this.
|
|
198
|
+
this.reverse
|
|
199
|
+
? this.collapsedBreadcrumbItems.push(breadcrumbItem)
|
|
200
|
+
: this.collapsedBreadcrumbItems.unshift(breadcrumbItem);
|
|
197
201
|
}
|
|
198
202
|
// hide the original breadcrumb items that have been moved in to the collapsed menu
|
|
199
203
|
breadcrumbItem.elementRef.nativeElement.style.display = 'none';
|
|
@@ -264,12 +268,12 @@ class BreadcrumbComponent {
|
|
|
264
268
|
}
|
|
265
269
|
}
|
|
266
270
|
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: i1.ContentDensityService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
267
|
-
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { compact: "compact", containerElement: "containerElement" }, host: { listeners: { "window:resize": "onResize()" }, classAttribute: "fd-breadcrumb" }, queries: [{ propertyName: "breadcrumbItems", predicate: i0.forwardRef(function () { return BreadcrumbItemDirective; }) }], viewQueries: [{ propertyName: "menuComponent", first: true, predicate: MenuComponent, descendants: true }], ngImport: i0, template: "<fd-menu #menu [compact]=\"compact\" closeOnEscapeKey=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.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", "compact", "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"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: BreadcrumbItemDirective, selector: "fd-breadcrumb-item" }, { type: i2.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { type: BreadcrumbLinkDirective, selector: "[fd-breadcrumb-link]", inputs: ["routerLink"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
271
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { compact: "compact", containerElement: "containerElement", reverse: "reverse" }, host: { listeners: { "window:resize": "onResize()" }, classAttribute: "fd-breadcrumb" }, queries: [{ propertyName: "breadcrumbItems", predicate: i0.forwardRef(function () { return BreadcrumbItemDirective; }) }], viewQueries: [{ propertyName: "menuComponent", first: true, predicate: MenuComponent, descendants: true }], ngImport: i0, template: "<fd-menu #menu [compact]=\"compact\" [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.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", "compact", "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"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: BreadcrumbItemDirective, selector: "fd-breadcrumb-item" }, { type: i2.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { type: BreadcrumbLinkDirective, selector: "[fd-breadcrumb-link]", inputs: ["routerLink"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
268
272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
269
273
|
type: Component,
|
|
270
274
|
args: [{ selector: 'fd-breadcrumb', host: {
|
|
271
275
|
class: 'fd-breadcrumb'
|
|
272
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-menu #menu [compact]=\"compact\" closeOnEscapeKey=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.fd-breadcrumb{display:inline-block;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}\n"] }]
|
|
276
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-menu #menu [compact]=\"compact\" [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.fd-breadcrumb{display:inline-block;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}\n"] }]
|
|
273
277
|
}], ctorParameters: function () {
|
|
274
278
|
return [{ type: i0.ElementRef }, { type: i1.RtlService, decorators: [{
|
|
275
279
|
type: Optional
|
|
@@ -286,6 +290,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
|
|
|
286
290
|
args: [MenuComponent]
|
|
287
291
|
}], containerElement: [{
|
|
288
292
|
type: Input
|
|
293
|
+
}], reverse: [{
|
|
294
|
+
type: Input
|
|
289
295
|
}], onResize: [{
|
|
290
296
|
type: HostListener,
|
|
291
297
|
args: ['window:resize', []]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-breadcrumb.mjs","sources":["../../../../../libs/core/src/lib/breadcrumb/breadcrumb-link.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb-item.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.html","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.module.ts","../../../../../libs/core/src/lib/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n/**\n * Breadcrumb link directive. Use Angular router options (such as 'routerLink' and 'queryParams') with this directive.\n *\n * ```html\n * <a fd-breadcrumb-link [routerLink]=\"'some-url'\" [queryParams]=\"'params'\">Breadcrumb Link</a>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-breadcrumb-link]',\n host: {\n class: 'fd-breadcrumb__link'\n }\n})\nexport class BreadcrumbLinkDirective {\n /** @hidden */\n @Input()\n routerLink = '';\n\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n constructor(private _elementRef: ElementRef) {}\n}\n","import { AfterContentInit, ContentChild, Directive, ElementRef, forwardRef } from '@angular/core';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-breadcrumb-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-breadcrumb-item',\n host: {\n class: 'fd-breadcrumb__item'\n }\n})\nexport class BreadcrumbItemDirective implements AfterContentInit {\n /** @hidden */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n href = '';\n\n /** @hidden */\n routerLink = '';\n\n /** @hidden */\n @ContentChild(forwardRef(() => BreadcrumbLinkDirective))\n breadcrumbLink: BreadcrumbLinkDirective;\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.breadcrumbLink && this.breadcrumbLink.elementRef.nativeElement.getAttribute('href')) {\n this.href = this.breadcrumbLink.elementRef.nativeElement.getAttribute('href');\n }\n if (this.breadcrumbLink && this.breadcrumbLink.routerLink) {\n this.routerLink = this.breadcrumbLink.routerLink;\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { RtlService } from '@fundamental-ngx/core/utils';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { KeyUtil } from '@fundamental-ngx/core/utils';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\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-breadcrumb-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 AfterContentInit, OnInit, OnDestroy {\n /** Whenever links wrapped inside overflow should be displayed in compact mode */\n @Input()\n compact?: boolean;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => BreadcrumbItemDirective))\n breadcrumbItems: QueryList<BreadcrumbItemDirective>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n menuComponent: MenuComponent;\n\n /** @hidden */\n collapsedBreadcrumbItems: Array<BreadcrumbItemDirective> = [];\n\n /** @hidden used to compare to the current width to know whether to collapse or expand breadcrumbs */\n previousContainerWidth: number;\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 /** @hidden */\n containerBoundary: number;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n constructor(\n public elementRef: ElementRef,\n @Optional() private _rtlService: RtlService,\n @Optional() private _contentDensityService: ContentDensityService,\n private _cdRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.onResize();\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 if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._cdRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n @HostListener('window:resize', [])\n onResize(): void {\n if (!this.elementRef.nativeElement.parentElement) {\n return;\n }\n this.containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n this.containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n /*\n if this is the first load and there is no previousContainerWidth,\n or the container boundary is smaller than the previousContainerWidth\n */\n if (!this.previousContainerWidth || this.containerBoundary < this.previousContainerWidth) {\n // and the breadcrumbs extend past the window\n if (this.elementRef.nativeElement.getBoundingClientRect().width > this.containerBoundary) {\n this.collapseBreadcrumbs();\n }\n } else if (this.collapsedBreadcrumbItems.length) {\n // if the screen is getting bigger and there are collapsed breadcrumbs\n this.expandBreadcrumbs();\n }\n this.previousContainerWidth = this.containerBoundary;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n keyDownHandle(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.menuComponent.toggle();\n event.preventDefault();\n }\n }\n\n /** @hidden */\n getContainerBoundary(): number {\n let containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n\n return containerBoundary;\n }\n\n /**\n * @hidden\n *\n * This function moves breadcrumbs from the original QueryList of BreadCrumbItemDirectives into the array of\n * collapsedBreadcrumbItems.\n * */\n collapseBreadcrumbs(): void {\n let i = 0;\n const containerBoundary = this.getContainerBoundary();\n // move the breadcrumb items into a collapsed menu one by one, until the last one is inside the window\n while (\n this.elementRef.nativeElement.getBoundingClientRect().width > containerBoundary &&\n i < this.breadcrumbItems.length\n ) {\n const breadcrumbItem = this.breadcrumbItems.filter((item, index) => index === i)[0];\n if (this.collapsedBreadcrumbItems.indexOf(breadcrumbItem) === -1) {\n this.collapsedBreadcrumbItems.push(breadcrumbItem);\n }\n // hide the original breadcrumb items that have been moved in to the collapsed menu\n breadcrumbItem.elementRef.nativeElement.style.display = 'none';\n i++;\n }\n }\n\n /**\n * @hidden\n *\n * This function removes breadcrumb items from the collapsedBreadcrumbItems array and makes them visible again in the\n * original QueryList of BreadcrumbItemDirectives.\n * */\n expandBreadcrumbs(): void {\n let breakLoop = false;\n let i = 0;\n const originalCollapsedLength = this.collapsedBreadcrumbItems.length;\n while (this.fitInBoundries() && !breakLoop && i < originalCollapsedLength) {\n // get the most recently collapsed breadcrumb\n const collapsedItemToPop = this.getCollapsedItem();\n // find the corresponding breadcrumb from the original breadcrumb item QueryList\n const breadcrumbToCheck = this.getBreadcrumbToCheck(collapsedItemToPop);\n /*\n set display: 'inline-block' and visibility: 'hidden' - this way, the parent breadcrumb component's width will\n contain the width of the breadcrumb item we might pop, without actually making the item visible to the user\n */\n this.applyStylesToBreadcrumb(breadcrumbToCheck);\n\n if (this.fitInBoundries()) {\n /*\n if the width of the breadcrumb component is still smaller than the window width, including the\n breadcrumbToCheck, pop the latest collapsedBreadcrumbItem\n */\n this.popLastElement();\n this.makeBreadcrumbVisible(breadcrumbToCheck);\n } else {\n /*\n if the width of the breadcrumb component is wider than the window after making the breadcrumbToCheck's\n display: 'inline-block', then put it's display back to 'none' and don't pop the collapsedBreadcrumbItem\n */\n this.makeBreadcrumbInvisible(breadcrumbToCheck);\n breakLoop = true;\n }\n i++;\n }\n }\n\n private fitInBoundries(): boolean {\n return this.elementRef.nativeElement.getBoundingClientRect().width < this.getContainerBoundary();\n }\n\n private getCollapsedItem(): BreadcrumbItemDirective {\n return this.collapsedBreadcrumbItems[this.collapsedBreadcrumbItems.length - 1];\n }\n\n private getBreadcrumbToCheck(collapsedItemToPop: BreadcrumbItemDirective): BreadcrumbItemDirective {\n return this.breadcrumbItems.filter((item) => item === collapsedItemToPop)[0];\n }\n\n private applyStylesToBreadcrumb(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'inline-block';\n breadcrumb.elementRef.nativeElement.style.visibility = 'hidden';\n }\n\n private popLastElement(): void {\n this.collapsedBreadcrumbItems.pop();\n // make the breadcrumb we checked visible\n }\n\n private makeBreadcrumbVisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.visibility = 'visible';\n }\n\n private makeBreadcrumbInvisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'none';\n }\n}\n","<fd-menu #menu [compact]=\"compact\" closeOnEscapeKey=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { MenuModule } from '@fundamental-ngx/core/menu';\n\n@NgModule({\n imports: [CommonModule, IconModule, PopoverModule, MenuModule, RouterModule],\n exports: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective],\n declarations: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective]\n})\nexport class BreadcrumbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA;;;;;;;MAea,uBAAuB;IAShC,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;;QAN3C,eAAU,GAAG,EAAE,CAAC;KAM+B;IAJ/C,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;oHAPQ,uBAAuB;wGAAvB,uBAAuB;2FAAvB,uBAAuB;kBARnC,SAAS;mBAAC;;;oBAGP,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE;wBACF,KAAK,EAAE,qBAAqB;qBAC/B;iBACJ;iGAIG,UAAU;sBADT,KAAK;;;AChBV;;;;;;;;;MAiBa,uBAAuB;IAgBhC,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;;QAT3C,SAAI,GAAG,EAAE,CAAC;;QAGV,eAAU,GAAG,EAAE,CAAC;KAM+B;;IAd/C,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;IAeD,kBAAkB;QACd,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC1F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SACjF;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;SACpD;KACJ;;oHA1BQ,uBAAuB;wGAAvB,uBAAuB,0LAaD,uBAAuB;2FAb7C,uBAAuB;kBARnC,SAAS;mBAAC;;;oBAGP,QAAQ,EAAE,oBAAoB;oBAC9B,IAAI,EAAE;wBACF,KAAK,EAAE,qBAAqB;qBAC/B;iBACJ;iGAeG,cAAc;sBADb,YAAY;uBAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC;;;ACP3D;;;;;;;;;;;MAuBa,mBAAmB;IAmC5B,YACW,UAAsB,EACT,WAAuB,EACvB,sBAA6C,EACzD,MAAyB;QAH1B,eAAU,GAAV,UAAU,CAAY;QACT,gBAAW,GAAX,WAAW,CAAY;QACvB,2BAAsB,GAAtB,sBAAsB,CAAuB;QACzD,WAAM,GAAN,MAAM,CAAmB;;QAzBrC,6BAAwB,GAAmC,EAAE,CAAC;;QAM9D,eAAU,GAAG,IAAI,eAAe,CAAY,cAAc,CAAC,CAAC;;QAapD,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;KAOxC;;IAGJ,kBAAkB;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;KACnB;;IAGD,QAAQ;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,GAAG,cAAc,CAAC,CAAC,CACzG,CAAC;SACL;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,SAAS;gBAC9D,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;aAC9B,CAAC,CACL,CAAC;SACL;KACJ;;IAGD,WAAW;QACP,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACrC;;IAID,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE;YAC9C,OAAO;SACV;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QACnG,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;SAChF;;;;;QAKD,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE;;YAEtF,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;gBACtF,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;SACJ;aAAM,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE;;YAE7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;KAC/B;;IAGD,aAAa,CAAC,KAAoB;QAC9B,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;;IAGD,oBAAoB;QAChB,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QAClG,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;SAC3E;QAED,OAAO,iBAAiB,CAAC;KAC5B;;;;;;;IAQD,mBAAmB;QACf,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;;QAEtD,OACI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,iBAAiB;YAC/E,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EACjC;YACE,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC9D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACtD;;YAED,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/D,CAAC,EAAE,CAAC;SACP;KACJ;;;;;;;IAQD,iBAAiB;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;QACrE,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,uBAAuB,EAAE;;YAEvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;;YAEnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;;;;;YAKxE,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAEhD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;;;;;gBAKvB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;aACjD;iBAAM;;;;;gBAKH,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBAChD,SAAS,GAAG,IAAI,CAAC;aACpB;YACD,CAAC,EAAE,CAAC;SACP;KACJ;IAEO,cAAc;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;KACpG;IAEO,gBAAgB;QACpB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAClF;IAEO,oBAAoB,CAAC,kBAA2C;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;KAChF;IAEO,uBAAuB,CAAC,UAAmC;QAC/D,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;QACnE,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;KACnE;IAEO,cAAc;QAClB,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC;;KAEvC;IAEO,qBAAqB,CAAC,UAAmC;QAC7D,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;KACpE;IAEO,uBAAuB,CAAC,UAAmC;QAC/D,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KAC9D;;gHA9MQ,mBAAmB;oGAAnB,mBAAmB,uRAMM,uBAAuB,gFAI9C,aAAa,gDC3D5B,s6BAoBA;2FD6Ba,mBAAmB;kBAZ/B,SAAS;+BAGI,eAAe,QACnB;wBACF,KAAK,EAAE,eAAe;qBACzB,iBAGc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM;;;8BAuC1C,QAAQ;;8BACR,QAAQ;;yBAnCb,OAAO;sBADN,KAAK;gBAKN,eAAe;sBADd,eAAe;uBAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC;gBAK1D,aAAa;sBADZ,SAAS;uBAAC,aAAa;gBAiBxB,gBAAgB;sBADf,KAAK;gBA6CN,QAAQ;sBADP,YAAY;uBAAC,eAAe,EAAE,EAAE;;;MEvGxB,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBAFV,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,aAF1E,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,aACjE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB;8GAGtE,gBAAgB,YAJhB,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC;2FAInE,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC;oBAC5E,OAAO,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;oBAChF,YAAY,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;iBACxF;;;ACfD;;;;;;"}
|
|
1
|
+
{"version":3,"file":"fundamental-ngx-core-breadcrumb.mjs","sources":["../../../../../libs/core/src/lib/breadcrumb/breadcrumb-link.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb-item.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.html","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.module.ts","../../../../../libs/core/src/lib/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n/**\n * Breadcrumb link directive. Use Angular router options (such as 'routerLink' and 'queryParams') with this directive.\n *\n * ```html\n * <a fd-breadcrumb-link [routerLink]=\"'some-url'\" [queryParams]=\"'params'\">Breadcrumb Link</a>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-breadcrumb-link]',\n host: {\n class: 'fd-breadcrumb__link'\n }\n})\nexport class BreadcrumbLinkDirective {\n /** @hidden */\n @Input()\n routerLink = '';\n\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n constructor(private _elementRef: ElementRef) {}\n}\n","import { AfterContentInit, ContentChild, Directive, ElementRef, forwardRef } from '@angular/core';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-breadcrumb-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-breadcrumb-item',\n host: {\n class: 'fd-breadcrumb__item'\n }\n})\nexport class BreadcrumbItemDirective implements AfterContentInit {\n /** @hidden */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n href = '';\n\n /** @hidden */\n routerLink = '';\n\n /** @hidden */\n @ContentChild(forwardRef(() => BreadcrumbLinkDirective))\n breadcrumbLink: BreadcrumbLinkDirective;\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.breadcrumbLink && this.breadcrumbLink.elementRef.nativeElement.getAttribute('href')) {\n this.href = this.breadcrumbLink.elementRef.nativeElement.getAttribute('href');\n }\n if (this.breadcrumbLink && this.breadcrumbLink.routerLink) {\n this.routerLink = this.breadcrumbLink.routerLink;\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { RtlService } from '@fundamental-ngx/core/utils';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { KeyUtil } from '@fundamental-ngx/core/utils';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\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-breadcrumb-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 AfterContentInit, OnInit, OnDestroy {\n /** Whenever links wrapped inside overflow should be displayed in compact mode */\n @Input()\n compact?: boolean;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => BreadcrumbItemDirective))\n breadcrumbItems: QueryList<BreadcrumbItemDirective>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n menuComponent: MenuComponent;\n\n /** @hidden */\n collapsedBreadcrumbItems: Array<BreadcrumbItemDirective> = [];\n\n /** @hidden used to compare to the current width to know whether to collapse or expand breadcrumbs */\n previousContainerWidth: number;\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 or not 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 constructor(\n public elementRef: ElementRef,\n @Optional() private _rtlService: RtlService,\n @Optional() private _contentDensityService: ContentDensityService,\n private _cdRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.onResize();\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 if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._cdRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n @HostListener('window:resize', [])\n onResize(): void {\n if (!this.elementRef.nativeElement.parentElement) {\n return;\n }\n this.containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n this.containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n /*\n if this is the first load and there is no previousContainerWidth,\n or the container boundary is smaller than the previousContainerWidth\n */\n if (!this.previousContainerWidth || this.containerBoundary < this.previousContainerWidth) {\n // and the breadcrumbs extend past the window\n if (this.elementRef.nativeElement.getBoundingClientRect().width > this.containerBoundary) {\n this.collapseBreadcrumbs();\n }\n } else if (this.collapsedBreadcrumbItems.length) {\n // if the screen is getting bigger and there are collapsed breadcrumbs\n this.expandBreadcrumbs();\n }\n this.previousContainerWidth = this.containerBoundary;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n keyDownHandle(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.menuComponent.toggle();\n event.preventDefault();\n }\n }\n\n /** @hidden */\n getContainerBoundary(): number {\n let containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n\n return containerBoundary;\n }\n\n /**\n * @hidden\n *\n * This function moves breadcrumbs from the original QueryList of BreadCrumbItemDirectives into the array of\n * collapsedBreadcrumbItems.\n * */\n collapseBreadcrumbs(): void {\n let i = 0;\n const containerBoundary = this.getContainerBoundary();\n // move the breadcrumb items into a collapsed menu one by one, until the last one is inside the window\n while (\n this.elementRef.nativeElement.getBoundingClientRect().width > containerBoundary &&\n i < this.breadcrumbItems.length\n ) {\n const breadcrumbItem = this.breadcrumbItems.filter((item, index) => index === i)[0];\n if (this.collapsedBreadcrumbItems.indexOf(breadcrumbItem) === -1) {\n this.reverse\n ? this.collapsedBreadcrumbItems.push(breadcrumbItem)\n : this.collapsedBreadcrumbItems.unshift(breadcrumbItem);\n }\n // hide the original breadcrumb items that have been moved in to the collapsed menu\n breadcrumbItem.elementRef.nativeElement.style.display = 'none';\n i++;\n }\n }\n\n /**\n * @hidden\n *\n * This function removes breadcrumb items from the collapsedBreadcrumbItems array and makes them visible again in the\n * original QueryList of BreadcrumbItemDirectives.\n * */\n expandBreadcrumbs(): void {\n let breakLoop = false;\n let i = 0;\n const originalCollapsedLength = this.collapsedBreadcrumbItems.length;\n while (this.fitInBoundries() && !breakLoop && i < originalCollapsedLength) {\n // get the most recently collapsed breadcrumb\n const collapsedItemToPop = this.getCollapsedItem();\n // find the corresponding breadcrumb from the original breadcrumb item QueryList\n const breadcrumbToCheck = this.getBreadcrumbToCheck(collapsedItemToPop);\n /*\n set display: 'inline-block' and visibility: 'hidden' - this way, the parent breadcrumb component's width will\n contain the width of the breadcrumb item we might pop, without actually making the item visible to the user\n */\n this.applyStylesToBreadcrumb(breadcrumbToCheck);\n\n if (this.fitInBoundries()) {\n /*\n if the width of the breadcrumb component is still smaller than the window width, including the\n breadcrumbToCheck, pop the latest collapsedBreadcrumbItem\n */\n this.popLastElement();\n this.makeBreadcrumbVisible(breadcrumbToCheck);\n } else {\n /*\n if the width of the breadcrumb component is wider than the window after making the breadcrumbToCheck's\n display: 'inline-block', then put it's display back to 'none' and don't pop the collapsedBreadcrumbItem\n */\n this.makeBreadcrumbInvisible(breadcrumbToCheck);\n breakLoop = true;\n }\n i++;\n }\n }\n\n private fitInBoundries(): boolean {\n return this.elementRef.nativeElement.getBoundingClientRect().width < this.getContainerBoundary();\n }\n\n private getCollapsedItem(): BreadcrumbItemDirective {\n return this.collapsedBreadcrumbItems[this.collapsedBreadcrumbItems.length - 1];\n }\n\n private getBreadcrumbToCheck(collapsedItemToPop: BreadcrumbItemDirective): BreadcrumbItemDirective {\n return this.breadcrumbItems.filter((item) => item === collapsedItemToPop)[0];\n }\n\n private applyStylesToBreadcrumb(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'inline-block';\n breadcrumb.elementRef.nativeElement.style.visibility = 'hidden';\n }\n\n private popLastElement(): void {\n this.collapsedBreadcrumbItems.pop();\n // make the breadcrumb we checked visible\n }\n\n private makeBreadcrumbVisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.visibility = 'visible';\n }\n\n private makeBreadcrumbInvisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'none';\n }\n}\n","<fd-menu #menu [compact]=\"compact\" [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { MenuModule } from '@fundamental-ngx/core/menu';\n\n@NgModule({\n imports: [CommonModule, IconModule, PopoverModule, MenuModule, RouterModule],\n exports: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective],\n declarations: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective]\n})\nexport class BreadcrumbModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA;;;;;;;MAea,uBAAuB;IAShC,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;;QAN3C,eAAU,GAAG,EAAE,CAAC;KAM+B;IAJ/C,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;oHAPQ,uBAAuB;wGAAvB,uBAAuB;2FAAvB,uBAAuB;kBARnC,SAAS;mBAAC;;;oBAGP,QAAQ,EAAE,sBAAsB;oBAChC,IAAI,EAAE;wBACF,KAAK,EAAE,qBAAqB;qBAC/B;iBACJ;iGAIG,UAAU;sBADT,KAAK;;;AChBV;;;;;;;;;MAiBa,uBAAuB;IAgBhC,YAAoB,WAAuB;QAAvB,gBAAW,GAAX,WAAW,CAAY;;QAT3C,SAAI,GAAG,EAAE,CAAC;;QAGV,eAAU,GAAG,EAAE,CAAC;KAM+B;;IAd/C,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;;IAeD,kBAAkB;QACd,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YAC1F,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SACjF;QACD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;SACpD;KACJ;;oHA1BQ,uBAAuB;wGAAvB,uBAAuB,0LAaD,uBAAuB;2FAb7C,uBAAuB;kBARnC,SAAS;mBAAC;;;oBAGP,QAAQ,EAAE,oBAAoB;oBAC9B,IAAI,EAAE;wBACF,KAAK,EAAE,qBAAqB;qBAC/B;iBACJ;iGAeG,cAAc;sBADb,YAAY;uBAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC;;;ACP3D;;;;;;;;;;;MAuBa,mBAAmB;IAuC5B,YACW,UAAsB,EACT,WAAuB,EACvB,sBAA6C,EACzD,MAAyB;QAH1B,eAAU,GAAV,UAAU,CAAY;QACT,gBAAW,GAAX,WAAW,CAAY;QACvB,2BAAsB,GAAtB,sBAAsB,CAAuB;QACzD,WAAM,GAAN,MAAM,CAAmB;;QA7BrC,6BAAwB,GAAmC,EAAE,CAAC;;QAM9D,eAAU,GAAG,IAAI,eAAe,CAAY,cAAc,CAAC,CAAC;;QAW5D,YAAO,GAAG,KAAK,CAAC;;QAMR,mBAAc,GAAG,IAAI,YAAY,EAAE,CAAC;KAOxC;;IAGJ,kBAAkB;QACd,IAAI,CAAC,QAAQ,EAAE,CAAC;KACnB;;IAGD,QAAQ;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,GAAG,cAAc,CAAC,CAAC,CACzG,CAAC;SACL;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC3D,IAAI,CAAC,cAAc,CAAC,GAAG,CACnB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,SAAS;gBAC9D,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;aAC9B,CAAC,CACL,CAAC;SACL;KACJ;;IAGD,WAAW;QACP,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;KACrC;;IAID,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,EAAE;YAC9C,OAAO;SACV;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QACnG,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;SAChF;;;;;QAKD,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE;;YAEtF,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE;gBACtF,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;SACJ;aAAM,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE;;YAE7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;KAC/B;;IAGD,aAAa,CAAC,KAAoB;QAC9B,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;SAC1B;KACJ;;IAGD,oBAAoB;QAChB,IAAI,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;QAClG,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;SAC3E;QAED,OAAO,iBAAiB,CAAC;KAC5B;;;;;;;IAQD,mBAAmB;QACf,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;;QAEtD,OACI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,iBAAiB;YAC/E,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EACjC;YACE,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC9D,IAAI,CAAC,OAAO;sBACN,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC;sBAClD,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;aAC/D;;YAED,cAAc,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC/D,CAAC,EAAE,CAAC;SACP;KACJ;;;;;;;IAQD,iBAAiB;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,uBAAuB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;QACrE,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,GAAG,uBAAuB,EAAE;;YAEvE,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;;YAEnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;;;;;YAKxE,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;YAEhD,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;;;;;gBAKvB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;aACjD;iBAAM;;;;;gBAKH,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;gBAChD,SAAS,GAAG,IAAI,CAAC;aACpB;YACD,CAAC,EAAE,CAAC;SACP;KACJ;IAEO,cAAc;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;KACpG;IAEO,gBAAgB;QACpB,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAClF;IAEO,oBAAoB,CAAC,kBAA2C;QACpE,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;KAChF;IAEO,uBAAuB,CAAC,UAAmC;QAC/D,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;QACnE,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;KACnE;IAEO,cAAc;QAClB,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC;;KAEvC;IAEO,qBAAqB,CAAC,UAAmC;QAC7D,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;KACpE;IAEO,uBAAuB,CAAC,UAAmC;QAC/D,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KAC9D;;gHApNQ,mBAAmB;oGAAnB,mBAAmB,2SAMM,uBAAuB,gFAI9C,aAAa,gDC3D5B,w6BAoBA;2FD6Ba,mBAAmB;kBAZ/B,SAAS;+BAGI,eAAe,QACnB;wBACF,KAAK,EAAE,eAAe;qBACzB,iBAGc,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM;;;8BA2C1C,QAAQ;;8BACR,QAAQ;;yBAvCb,OAAO;sBADN,KAAK;gBAKN,eAAe;sBADd,eAAe;uBAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC;gBAK1D,aAAa;sBADZ,SAAS;uBAAC,aAAa;gBAiBxB,gBAAgB;sBADf,KAAK;gBAKN,OAAO;sBADN,KAAK;gBA6CN,QAAQ;sBADP,YAAY;uBAAC,eAAe,EAAE,EAAE;;;ME3GxB,gBAAgB;;6GAAhB,gBAAgB;8GAAhB,gBAAgB,iBAFV,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,aAF1E,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,aACjE,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB;8GAGtE,gBAAgB,YAJhB,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC;2FAInE,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC;oBAC5E,OAAO,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;oBAChF,YAAY,EAAE,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,uBAAuB,CAAC;iBACxF;;;ACfD;;;;;;"}
|
|
@@ -115,6 +115,8 @@ class BreadcrumbComponent {
|
|
|
115
115
|
this.collapsedBreadcrumbItems = [];
|
|
116
116
|
/** @hidden */
|
|
117
117
|
this.placement$ = new BehaviorSubject('bottom-start');
|
|
118
|
+
/** Whether or not to append items to the overflow dropdown in reverse order. Default is true. */
|
|
119
|
+
this.reverse = false;
|
|
118
120
|
/** @hidden */
|
|
119
121
|
this._subscriptions = new Subscription();
|
|
120
122
|
}
|
|
@@ -193,7 +195,9 @@ class BreadcrumbComponent {
|
|
|
193
195
|
i < this.breadcrumbItems.length) {
|
|
194
196
|
const breadcrumbItem = this.breadcrumbItems.filter((item, index) => index === i)[0];
|
|
195
197
|
if (this.collapsedBreadcrumbItems.indexOf(breadcrumbItem) === -1) {
|
|
196
|
-
this.
|
|
198
|
+
this.reverse
|
|
199
|
+
? this.collapsedBreadcrumbItems.push(breadcrumbItem)
|
|
200
|
+
: this.collapsedBreadcrumbItems.unshift(breadcrumbItem);
|
|
197
201
|
}
|
|
198
202
|
// hide the original breadcrumb items that have been moved in to the collapsed menu
|
|
199
203
|
breadcrumbItem.elementRef.nativeElement.style.display = 'none';
|
|
@@ -264,12 +268,12 @@ class BreadcrumbComponent {
|
|
|
264
268
|
}
|
|
265
269
|
}
|
|
266
270
|
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: i1.ContentDensityService, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
267
|
-
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { compact: "compact", containerElement: "containerElement" }, host: { listeners: { "window:resize": "onResize()" }, classAttribute: "fd-breadcrumb" }, queries: [{ propertyName: "breadcrumbItems", predicate: i0.forwardRef(function () { return BreadcrumbItemDirective; }) }], viewQueries: [{ propertyName: "menuComponent", first: true, predicate: MenuComponent, descendants: true }], ngImport: i0, template: "<fd-menu #menu [compact]=\"compact\" closeOnEscapeKey=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.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", "compact", "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"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: BreadcrumbItemDirective, selector: "fd-breadcrumb-item" }, { type: i2.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { type: BreadcrumbLinkDirective, selector: "[fd-breadcrumb-link]", inputs: ["routerLink"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
271
|
+
BreadcrumbComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.4", type: BreadcrumbComponent, selector: "fd-breadcrumb", inputs: { compact: "compact", containerElement: "containerElement", reverse: "reverse" }, host: { listeners: { "window:resize": "onResize()" }, classAttribute: "fd-breadcrumb" }, queries: [{ propertyName: "breadcrumbItems", predicate: i0.forwardRef(function () { return BreadcrumbItemDirective; }) }], viewQueries: [{ propertyName: "menuComponent", first: true, predicate: MenuComponent, descendants: true }], ngImport: i0, template: "<fd-menu #menu [compact]=\"compact\" [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.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", "compact", "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"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2.MenuInteractiveDirective, selector: "[fd-menu-interactive]" }, { type: i2.MenuTitleDirective, selector: "[fd-menu-title]" }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: BreadcrumbItemDirective, selector: "fd-breadcrumb-item" }, { type: i2.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { type: BreadcrumbLinkDirective, selector: "[fd-breadcrumb-link]", inputs: ["routerLink"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
268
272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImport: i0, type: BreadcrumbComponent, decorators: [{
|
|
269
273
|
type: Component,
|
|
270
274
|
args: [{ selector: 'fd-breadcrumb', host: {
|
|
271
275
|
class: 'fd-breadcrumb'
|
|
272
|
-
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-menu #menu [compact]=\"compact\" closeOnEscapeKey=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.fd-breadcrumb{display:inline-block;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}\n"] }]
|
|
276
|
+
}, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<fd-menu #menu [compact]=\"compact\" [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n", styles: ["/*!\n * Fundamental Library Styles v0.24.0-rc.8\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{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;display:flex;flex-wrap:wrap;align-items:center;list-style:none}.fd-breadcrumb:after,.fd-breadcrumb:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapContent_LabelColor)}.fd-breadcrumb__item:after,.fd-breadcrumb__item:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__item:after{content:\"/\";color:var(--sapContent_LabelColor);margin-right:.25rem;margin-left:.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__link{font-size:var(--sapFontSize);line-height:var(--sapContent_LineHeight);color:var(--sapTextColor);font-family:var(--sapFontFamily);font-weight:400;box-sizing:border-box;padding:0;margin:0;border:0;color:var(--sapLinkColor);-webkit-text-decoration:var(--fdLink_Text_Decoration);text-decoration:var(--fdLink_Text_Decoration);text-shadow:var(--sapContent_TextShadow);line-height:inherit;display:inline-block;transition:all 125ms ease-in}.fd-breadcrumb__link:after,.fd-breadcrumb__link:before{box-sizing:inherit;font-size:inherit}.fd-breadcrumb__link--emphasized{font-weight:700}.fd-breadcrumb__link:visited{color:var(--sapLink_Visited_Color)}.fd-breadcrumb__link.is-hover,.fd-breadcrumb__link:hover{color:var(--sapLink_Hover_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-focus,.fd-breadcrumb__link:focus{z-index:5;box-shadow:none;outline-offset:-.0625rem;outline-width:var(--sapContent_FocusWidth);outline-color:var(--sapContent_FocusColor);outline-style:var(--sapContent_FocusStyle);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link.is-active,.fd-breadcrumb__link:active{color:var(--sapLink_Active_Color);-webkit-text-decoration:var(--fdLink_Text_Decoration_Opposite);text-decoration:var(--fdLink_Text_Decoration_Opposite)}.fd-breadcrumb__link--inverted{color:var(--sapLink_InvertedColor);text-shadow:none}.fd-breadcrumb__link--inverted.is-hover,.fd-breadcrumb__link--inverted:hover{color:var(--sapLink_InvertedColor)}.fd-breadcrumb__link--inverted.is-focus,.fd-breadcrumb__link--inverted:focus{z-index:5;outline-color:var(--sapContent_ContrastFocusColor)}.fd-breadcrumb__link--subtle{color:var(--sapLink_SubtleColor)}.fd-breadcrumb__link.is-disabled,.fd-breadcrumb__link:disabled,.fd-breadcrumb__link[aria-disabled=true]{opacity:var(--sapContent_DisabledOpacity);color:var(--sapLinkColor);pointer-events:none}.fd-breadcrumb__link>img{vertical-align:bottom}.fd-breadcrumb__link:focus .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:active .fd-breadcrumb__dropdown-icon,.fd-breadcrumb__link:active:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Active_Color)}.fd-breadcrumb__link:hover .fd-breadcrumb__dropdown-icon{color:var(--sapLink_Hover_Color)}.fd-breadcrumb__dropdown-icon [class*=sap-icon],.fd-breadcrumb__dropdown-icon[class*=sap-icon]{color:inherit;background:inherit;font-size:inherit;border-radius:inherit;line-height:1;text-decoration:inherit;color:var(--sapLinkColor)}.fd-breadcrumb{display:inline-block;white-space:nowrap}.fd-breadcrumb .fd-breadcrumb__collapsed{cursor:pointer}\n"] }]
|
|
273
277
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.RtlService, decorators: [{
|
|
274
278
|
type: Optional
|
|
275
279
|
}] }, { type: i1.ContentDensityService, decorators: [{
|
|
@@ -284,6 +288,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.4", ngImpor
|
|
|
284
288
|
args: [MenuComponent]
|
|
285
289
|
}], containerElement: [{
|
|
286
290
|
type: Input
|
|
291
|
+
}], reverse: [{
|
|
292
|
+
type: Input
|
|
287
293
|
}], onResize: [{
|
|
288
294
|
type: HostListener,
|
|
289
295
|
args: ['window:resize', []]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fundamental-ngx-core-breadcrumb.mjs","sources":["../../../../../libs/core/src/lib/breadcrumb/breadcrumb-link.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb-item.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.html","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.module.ts","../../../../../libs/core/src/lib/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n/**\n * Breadcrumb link directive. Use Angular router options (such as 'routerLink' and 'queryParams') with this directive.\n *\n * ```html\n * <a fd-breadcrumb-link [routerLink]=\"'some-url'\" [queryParams]=\"'params'\">Breadcrumb Link</a>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-breadcrumb-link]',\n host: {\n class: 'fd-breadcrumb__link'\n }\n})\nexport class BreadcrumbLinkDirective {\n /** @hidden */\n @Input()\n routerLink = '';\n\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n constructor(private _elementRef: ElementRef) {}\n}\n","import { AfterContentInit, ContentChild, Directive, ElementRef, forwardRef } from '@angular/core';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-breadcrumb-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-breadcrumb-item',\n host: {\n class: 'fd-breadcrumb__item'\n }\n})\nexport class BreadcrumbItemDirective implements AfterContentInit {\n /** @hidden */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n href = '';\n\n /** @hidden */\n routerLink = '';\n\n /** @hidden */\n @ContentChild(forwardRef(() => BreadcrumbLinkDirective))\n breadcrumbLink: BreadcrumbLinkDirective;\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.breadcrumbLink && this.breadcrumbLink.elementRef.nativeElement.getAttribute('href')) {\n this.href = this.breadcrumbLink.elementRef.nativeElement.getAttribute('href');\n }\n if (this.breadcrumbLink && this.breadcrumbLink.routerLink) {\n this.routerLink = this.breadcrumbLink.routerLink;\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { RtlService } from '@fundamental-ngx/core/utils';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { KeyUtil } from '@fundamental-ngx/core/utils';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\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-breadcrumb-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 AfterContentInit, OnInit, OnDestroy {\n /** Whenever links wrapped inside overflow should be displayed in compact mode */\n @Input()\n compact?: boolean;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => BreadcrumbItemDirective))\n breadcrumbItems: QueryList<BreadcrumbItemDirective>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n menuComponent: MenuComponent;\n\n /** @hidden */\n collapsedBreadcrumbItems: Array<BreadcrumbItemDirective> = [];\n\n /** @hidden used to compare to the current width to know whether to collapse or expand breadcrumbs */\n previousContainerWidth: number;\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 /** @hidden */\n containerBoundary: number;\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n constructor(\n public elementRef: ElementRef,\n @Optional() private _rtlService: RtlService,\n @Optional() private _contentDensityService: ContentDensityService,\n private _cdRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.onResize();\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 if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._cdRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n @HostListener('window:resize', [])\n onResize(): void {\n if (!this.elementRef.nativeElement.parentElement) {\n return;\n }\n this.containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n this.containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n /*\n if this is the first load and there is no previousContainerWidth,\n or the container boundary is smaller than the previousContainerWidth\n */\n if (!this.previousContainerWidth || this.containerBoundary < this.previousContainerWidth) {\n // and the breadcrumbs extend past the window\n if (this.elementRef.nativeElement.getBoundingClientRect().width > this.containerBoundary) {\n this.collapseBreadcrumbs();\n }\n } else if (this.collapsedBreadcrumbItems.length) {\n // if the screen is getting bigger and there are collapsed breadcrumbs\n this.expandBreadcrumbs();\n }\n this.previousContainerWidth = this.containerBoundary;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n keyDownHandle(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.menuComponent.toggle();\n event.preventDefault();\n }\n }\n\n /** @hidden */\n getContainerBoundary(): number {\n let containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n\n return containerBoundary;\n }\n\n /**\n * @hidden\n *\n * This function moves breadcrumbs from the original QueryList of BreadCrumbItemDirectives into the array of\n * collapsedBreadcrumbItems.\n * */\n collapseBreadcrumbs(): void {\n let i = 0;\n const containerBoundary = this.getContainerBoundary();\n // move the breadcrumb items into a collapsed menu one by one, until the last one is inside the window\n while (\n this.elementRef.nativeElement.getBoundingClientRect().width > containerBoundary &&\n i < this.breadcrumbItems.length\n ) {\n const breadcrumbItem = this.breadcrumbItems.filter((item, index) => index === i)[0];\n if (this.collapsedBreadcrumbItems.indexOf(breadcrumbItem) === -1) {\n this.collapsedBreadcrumbItems.push(breadcrumbItem);\n }\n // hide the original breadcrumb items that have been moved in to the collapsed menu\n breadcrumbItem.elementRef.nativeElement.style.display = 'none';\n i++;\n }\n }\n\n /**\n * @hidden\n *\n * This function removes breadcrumb items from the collapsedBreadcrumbItems array and makes them visible again in the\n * original QueryList of BreadcrumbItemDirectives.\n * */\n expandBreadcrumbs(): void {\n let breakLoop = false;\n let i = 0;\n const originalCollapsedLength = this.collapsedBreadcrumbItems.length;\n while (this.fitInBoundries() && !breakLoop && i < originalCollapsedLength) {\n // get the most recently collapsed breadcrumb\n const collapsedItemToPop = this.getCollapsedItem();\n // find the corresponding breadcrumb from the original breadcrumb item QueryList\n const breadcrumbToCheck = this.getBreadcrumbToCheck(collapsedItemToPop);\n /*\n set display: 'inline-block' and visibility: 'hidden' - this way, the parent breadcrumb component's width will\n contain the width of the breadcrumb item we might pop, without actually making the item visible to the user\n */\n this.applyStylesToBreadcrumb(breadcrumbToCheck);\n\n if (this.fitInBoundries()) {\n /*\n if the width of the breadcrumb component is still smaller than the window width, including the\n breadcrumbToCheck, pop the latest collapsedBreadcrumbItem\n */\n this.popLastElement();\n this.makeBreadcrumbVisible(breadcrumbToCheck);\n } else {\n /*\n if the width of the breadcrumb component is wider than the window after making the breadcrumbToCheck's\n display: 'inline-block', then put it's display back to 'none' and don't pop the collapsedBreadcrumbItem\n */\n this.makeBreadcrumbInvisible(breadcrumbToCheck);\n breakLoop = true;\n }\n i++;\n }\n }\n\n private fitInBoundries(): boolean {\n return this.elementRef.nativeElement.getBoundingClientRect().width < this.getContainerBoundary();\n }\n\n private getCollapsedItem(): BreadcrumbItemDirective {\n return this.collapsedBreadcrumbItems[this.collapsedBreadcrumbItems.length - 1];\n }\n\n private getBreadcrumbToCheck(collapsedItemToPop: BreadcrumbItemDirective): BreadcrumbItemDirective {\n return this.breadcrumbItems.filter((item) => item === collapsedItemToPop)[0];\n }\n\n private applyStylesToBreadcrumb(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'inline-block';\n breadcrumb.elementRef.nativeElement.style.visibility = 'hidden';\n }\n\n private popLastElement(): void {\n this.collapsedBreadcrumbItems.pop();\n // make the breadcrumb we checked visible\n }\n\n private makeBreadcrumbVisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.visibility = 'visible';\n }\n\n private makeBreadcrumbInvisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'none';\n }\n}\n","<fd-menu #menu [compact]=\"compact\" closeOnEscapeKey=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { MenuModule } from '@fundamental-ngx/core/menu';\n\n@NgModule({\n imports: [CommonModule, IconModule, PopoverModule, MenuModule, RouterModule],\n exports: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective],\n declarations: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective]\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-link.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb-item.directive.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.ts","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.component.html","../../../../../libs/core/src/lib/breadcrumb/breadcrumb.module.ts","../../../../../libs/core/src/lib/breadcrumb/fundamental-ngx-core-breadcrumb.ts"],"sourcesContent":["import { Directive, ElementRef, Input } from '@angular/core';\n\n/**\n * Breadcrumb link directive. Use Angular router options (such as 'routerLink' and 'queryParams') with this directive.\n *\n * ```html\n * <a fd-breadcrumb-link [routerLink]=\"'some-url'\" [queryParams]=\"'params'\">Breadcrumb Link</a>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-breadcrumb-link]',\n host: {\n class: 'fd-breadcrumb__link'\n }\n})\nexport class BreadcrumbLinkDirective {\n /** @hidden */\n @Input()\n routerLink = '';\n\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n constructor(private _elementRef: ElementRef) {}\n}\n","import { AfterContentInit, ContentChild, Directive, ElementRef, forwardRef } from '@angular/core';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\n\n/**\n * Breadcrumb item directive. Must have child breadcrumb link directives.\n *\n * ```html\n * <fd-breadcrumb-item>\n * <a fd-breadcrumb-link [routerLink]=\"'#'\">Breadcrumb Link</a>\n * </fd-breadcrumb-item>\n * ```\n */\n@Directive({\n // TODO to be discussed\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'fd-breadcrumb-item',\n host: {\n class: 'fd-breadcrumb__item'\n }\n})\nexport class BreadcrumbItemDirective implements AfterContentInit {\n /** @hidden */\n get elementRef(): ElementRef {\n return this._elementRef;\n }\n\n /** @hidden */\n href = '';\n\n /** @hidden */\n routerLink = '';\n\n /** @hidden */\n @ContentChild(forwardRef(() => BreadcrumbLinkDirective))\n breadcrumbLink: BreadcrumbLinkDirective;\n\n constructor(private _elementRef: ElementRef) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n if (this.breadcrumbLink && this.breadcrumbLink.elementRef.nativeElement.getAttribute('href')) {\n this.href = this.breadcrumbLink.elementRef.nativeElement.getAttribute('href');\n }\n if (this.breadcrumbLink && this.breadcrumbLink.routerLink) {\n this.routerLink = this.breadcrumbLink.routerLink;\n }\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { RtlService } from '@fundamental-ngx/core/utils';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { KeyUtil } from '@fundamental-ngx/core/utils';\nimport { MenuComponent } from '@fundamental-ngx/core/menu';\nimport { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport { Placement } from '@fundamental-ngx/core/shared';\nimport { ContentDensityService } from '@fundamental-ngx/core/utils';\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-breadcrumb-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 AfterContentInit, OnInit, OnDestroy {\n /** Whenever links wrapped inside overflow should be displayed in compact mode */\n @Input()\n compact?: boolean;\n\n /** @hidden */\n @ContentChildren(forwardRef(() => BreadcrumbItemDirective))\n breadcrumbItems: QueryList<BreadcrumbItemDirective>;\n\n /** @hidden */\n @ViewChild(MenuComponent)\n menuComponent: MenuComponent;\n\n /** @hidden */\n collapsedBreadcrumbItems: Array<BreadcrumbItemDirective> = [];\n\n /** @hidden used to compare to the current width to know whether to collapse or expand breadcrumbs */\n previousContainerWidth: number;\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 or not 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 constructor(\n public elementRef: ElementRef,\n @Optional() private _rtlService: RtlService,\n @Optional() private _contentDensityService: ContentDensityService,\n private _cdRef: ChangeDetectorRef\n ) {}\n\n /** @hidden */\n ngAfterContentInit(): void {\n this.onResize();\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 if (this.compact === undefined && this._contentDensityService) {\n this._subscriptions.add(\n this._contentDensityService._isCompactDensity.subscribe((isCompact) => {\n this.compact = isCompact;\n this._cdRef.markForCheck();\n })\n );\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n @HostListener('window:resize', [])\n onResize(): void {\n if (!this.elementRef.nativeElement.parentElement) {\n return;\n }\n this.containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n this.containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n /*\n if this is the first load and there is no previousContainerWidth,\n or the container boundary is smaller than the previousContainerWidth\n */\n if (!this.previousContainerWidth || this.containerBoundary < this.previousContainerWidth) {\n // and the breadcrumbs extend past the window\n if (this.elementRef.nativeElement.getBoundingClientRect().width > this.containerBoundary) {\n this.collapseBreadcrumbs();\n }\n } else if (this.collapsedBreadcrumbItems.length) {\n // if the screen is getting bigger and there are collapsed breadcrumbs\n this.expandBreadcrumbs();\n }\n this.previousContainerWidth = this.containerBoundary;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n keyDownHandle(event: KeyboardEvent): void {\n if (KeyUtil.isKeyCode(event, [ENTER, SPACE])) {\n this.menuComponent.toggle();\n event.preventDefault();\n }\n }\n\n /** @hidden */\n getContainerBoundary(): number {\n let containerBoundary = this.elementRef.nativeElement.parentElement.getBoundingClientRect().width;\n if (this.containerElement) {\n containerBoundary = this.containerElement.getBoundingClientRect().width;\n }\n\n return containerBoundary;\n }\n\n /**\n * @hidden\n *\n * This function moves breadcrumbs from the original QueryList of BreadCrumbItemDirectives into the array of\n * collapsedBreadcrumbItems.\n * */\n collapseBreadcrumbs(): void {\n let i = 0;\n const containerBoundary = this.getContainerBoundary();\n // move the breadcrumb items into a collapsed menu one by one, until the last one is inside the window\n while (\n this.elementRef.nativeElement.getBoundingClientRect().width > containerBoundary &&\n i < this.breadcrumbItems.length\n ) {\n const breadcrumbItem = this.breadcrumbItems.filter((item, index) => index === i)[0];\n if (this.collapsedBreadcrumbItems.indexOf(breadcrumbItem) === -1) {\n this.reverse\n ? this.collapsedBreadcrumbItems.push(breadcrumbItem)\n : this.collapsedBreadcrumbItems.unshift(breadcrumbItem);\n }\n // hide the original breadcrumb items that have been moved in to the collapsed menu\n breadcrumbItem.elementRef.nativeElement.style.display = 'none';\n i++;\n }\n }\n\n /**\n * @hidden\n *\n * This function removes breadcrumb items from the collapsedBreadcrumbItems array and makes them visible again in the\n * original QueryList of BreadcrumbItemDirectives.\n * */\n expandBreadcrumbs(): void {\n let breakLoop = false;\n let i = 0;\n const originalCollapsedLength = this.collapsedBreadcrumbItems.length;\n while (this.fitInBoundries() && !breakLoop && i < originalCollapsedLength) {\n // get the most recently collapsed breadcrumb\n const collapsedItemToPop = this.getCollapsedItem();\n // find the corresponding breadcrumb from the original breadcrumb item QueryList\n const breadcrumbToCheck = this.getBreadcrumbToCheck(collapsedItemToPop);\n /*\n set display: 'inline-block' and visibility: 'hidden' - this way, the parent breadcrumb component's width will\n contain the width of the breadcrumb item we might pop, without actually making the item visible to the user\n */\n this.applyStylesToBreadcrumb(breadcrumbToCheck);\n\n if (this.fitInBoundries()) {\n /*\n if the width of the breadcrumb component is still smaller than the window width, including the\n breadcrumbToCheck, pop the latest collapsedBreadcrumbItem\n */\n this.popLastElement();\n this.makeBreadcrumbVisible(breadcrumbToCheck);\n } else {\n /*\n if the width of the breadcrumb component is wider than the window after making the breadcrumbToCheck's\n display: 'inline-block', then put it's display back to 'none' and don't pop the collapsedBreadcrumbItem\n */\n this.makeBreadcrumbInvisible(breadcrumbToCheck);\n breakLoop = true;\n }\n i++;\n }\n }\n\n private fitInBoundries(): boolean {\n return this.elementRef.nativeElement.getBoundingClientRect().width < this.getContainerBoundary();\n }\n\n private getCollapsedItem(): BreadcrumbItemDirective {\n return this.collapsedBreadcrumbItems[this.collapsedBreadcrumbItems.length - 1];\n }\n\n private getBreadcrumbToCheck(collapsedItemToPop: BreadcrumbItemDirective): BreadcrumbItemDirective {\n return this.breadcrumbItems.filter((item) => item === collapsedItemToPop)[0];\n }\n\n private applyStylesToBreadcrumb(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'inline-block';\n breadcrumb.elementRef.nativeElement.style.visibility = 'hidden';\n }\n\n private popLastElement(): void {\n this.collapsedBreadcrumbItems.pop();\n // make the breadcrumb we checked visible\n }\n\n private makeBreadcrumbVisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.visibility = 'visible';\n }\n\n private makeBreadcrumbInvisible(breadcrumb: BreadcrumbItemDirective): void {\n breadcrumb.elementRef.nativeElement.style.display = 'none';\n }\n}\n","<fd-menu #menu [compact]=\"compact\" [closeOnEscapeKey]=\"true\" [focusAutoCapture]=\"true\" [placement]=\"placement$ | async\">\n <li fd-menu-item *ngFor=\"let collapsedBreadcrumbItem of collapsedBreadcrumbItems\">\n <a\n fd-menu-interactive\n [attr.href]=\"collapsedBreadcrumbItem.href\"\n [routerLink]=\"collapsedBreadcrumbItem.routerLink\"\n >\n <span fd-menu-title>{{ collapsedBreadcrumbItem.elementRef.nativeElement.innerText }}</span>\n </a>\n </li>\n</fd-menu>\n\n<fd-breadcrumb-item *ngIf=\"collapsedBreadcrumbItems.length\" [fdMenuTrigger]=\"menu\">\n <a fd-breadcrumb-link tabindex=\"0\" class=\"fd-breadcrumb__collapsed\" (keydown)=\"keyDownHandle($event)\">\n ...\n <i role=\"presentation\" class=\"fd-breadcrumb__dropdown-icon sap-icon sap-icon--slim-arrow-down\"></i>\n </a>\n</fd-breadcrumb-item>\n\n<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { BreadcrumbComponent } from './breadcrumb.component';\nimport { BreadcrumbItemDirective } from './breadcrumb-item.directive';\nimport { BreadcrumbLinkDirective } from './breadcrumb-link.directive';\nimport { IconModule } from '@fundamental-ngx/core/icon';\nimport { PopoverModule } from '@fundamental-ngx/core/popover';\nimport { MenuModule } from '@fundamental-ngx/core/menu';\n\n@NgModule({\n imports: [CommonModule, IconModule, PopoverModule, MenuModule, RouterModule],\n exports: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective],\n declarations: [BreadcrumbComponent, BreadcrumbItemDirective, BreadcrumbLinkDirective]\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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"}
|
package/breadcrumb/package.json
CHANGED
package/button/package.json
CHANGED
package/calendar/package.json
CHANGED
package/card/package.json
CHANGED
|
@@ -11,6 +11,10 @@ export declare enum SlideDirection {
|
|
|
11
11
|
NEXT = 1,
|
|
12
12
|
PREVIOUS = 2
|
|
13
13
|
}
|
|
14
|
+
export interface FittingSlidesAndWidth {
|
|
15
|
+
width: number;
|
|
16
|
+
slides: number;
|
|
17
|
+
}
|
|
14
18
|
declare class CarouselActiveSlides {
|
|
15
19
|
readonly activeItems: CarouselItemComponent[];
|
|
16
20
|
readonly slideDirection: string;
|
|
@@ -22,7 +26,7 @@ export declare class CarouselComponent implements OnInit, AfterContentInit, Afte
|
|
|
22
26
|
private readonly _changeDetectorRef;
|
|
23
27
|
private readonly _carouselService;
|
|
24
28
|
private readonly _rtlService;
|
|
25
|
-
/**
|
|
29
|
+
/** ID for the Carousel. */
|
|
26
30
|
id: string;
|
|
27
31
|
/** Sets aria-label attribute for carousel */
|
|
28
32
|
ariaLabel: any;
|
|
@@ -68,7 +72,8 @@ export declare class CarouselComponent implements OnInit, AfterContentInit, Afte
|
|
|
68
72
|
/** Is carousel is vertical. Default value is false. */
|
|
69
73
|
vertical: boolean;
|
|
70
74
|
/** Number of items to be visible at a time */
|
|
71
|
-
visibleSlidesCount: number;
|
|
75
|
+
set visibleSlidesCount(value: number | 'auto');
|
|
76
|
+
get visibleSlidesCount(): number | 'auto';
|
|
72
77
|
/** An event that is emitted after a slide transition has happened */
|
|
73
78
|
readonly slideChange: EventEmitter<CarouselActiveSlides>;
|
|
74
79
|
/**
|
|
@@ -108,6 +113,10 @@ export declare class CarouselComponent implements OnInit, AfterContentInit, Afte
|
|
|
108
113
|
/** @hidden */
|
|
109
114
|
get _slidesWrapperSizePx(): string;
|
|
110
115
|
/** @hidden */
|
|
116
|
+
private _visibleSlidesCount;
|
|
117
|
+
/** @hidden */
|
|
118
|
+
private _visibleSlidesNumericCount;
|
|
119
|
+
/** @hidden */
|
|
111
120
|
private _resourceStrings;
|
|
112
121
|
/** @hidden */
|
|
113
122
|
private _config;
|
|
@@ -185,7 +194,7 @@ export declare class CarouselComponent implements OnInit, AfterContentInit, Afte
|
|
|
185
194
|
/** @hidden On Swiping of slide, manage page indicator */
|
|
186
195
|
private _onSlideSwipe;
|
|
187
196
|
/**
|
|
188
|
-
* @hidden Making slides visible when slides are dragged. Otherwise it looses the effect.
|
|
197
|
+
* @hidden Making slides visible when slides are dragged. Otherwise, it looses the effect.
|
|
189
198
|
*/
|
|
190
199
|
private _onSlideDrag;
|
|
191
200
|
/**
|
|
@@ -193,6 +202,14 @@ export declare class CarouselComponent implements OnInit, AfterContentInit, Afte
|
|
|
193
202
|
* Resizes inner carousel container to fit all items in the viewport and hide those which are not fully in it.
|
|
194
203
|
*/
|
|
195
204
|
private _resizeContentContainer;
|
|
205
|
+
/**
|
|
206
|
+
* @hidden
|
|
207
|
+
* Calculates how many slides can be shown within current carousel viewport.
|
|
208
|
+
* @returns Object containing fitting slides count and total width of those slides.
|
|
209
|
+
*/
|
|
210
|
+
private _getFittingSlidesAndWidth;
|
|
211
|
+
/** @hidden */
|
|
212
|
+
private _getVisibleSlidesCount;
|
|
196
213
|
static ɵfac: i0.ɵɵFactoryDeclaration<CarouselComponent, [null, null, null, null, { optional: true; }]>;
|
|
197
214
|
static ɵcmp: i0.ɵɵComponentDeclaration<CarouselComponent, "fd-carousel", never, { "id": "id"; "ariaLabel": "ariaLabel"; "ariaLabelledBy": "ariaLabelledBy"; "ariaDescribedBy": "ariaDescribedBy"; "pageIndicatorsOrientation": "pageIndicatorsOrientation"; "height": "height"; "width": "width"; "loop": "loop"; "leftNavigationBtnLabel": "leftNavigationBtnLabel"; "rightNavigationBtnLabel": "rightNavigationBtnLabel"; "navigation": "navigation"; "navigatorInPageIndicator": "navigatorInPageIndicator"; "numericIndicator": "numericIndicator"; "pageIndicatorContainer": "pageIndicatorContainer"; "pageIndicator": "pageIndicator"; "resourceStrings": "resourceStrings"; "slideTransitionDuration": "slideTransitionDuration"; "swipeEnabled": "swipeEnabled"; "vertical": "vertical"; "visibleSlidesCount": "visibleSlidesCount"; }, { "slideChange": "slideChange"; }, ["slides"], ["*"]>;
|
|
198
215
|
}
|