@daffodil/design 0.77.0 → 0.78.0
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/accordion/README.md +40 -2
- package/accordion/accordion/accordion/accordion.component.d.ts +1 -1
- package/accordion/accordion/accordion-item/accordion-item.component.d.ts +19 -8
- package/accordion/accordion/accordion-item-title/accordion-item-title.directive.d.ts +1 -1
- package/accordion/accordion.d.ts +4 -0
- package/accordion/accordion.module.d.ts +6 -7
- package/accordion/examples/basic-accordion/basic-accordion.component.d.ts +1 -1
- package/accordion/examples/public_api.d.ts +0 -1
- package/accordion/public_api.d.ts +1 -0
- package/article/README.md +42 -1
- package/article/article/article.component.d.ts +1 -1
- package/article/article-meta/article-meta.directive.d.ts +1 -1
- package/article/article.d.ts +3 -0
- package/article/article.module.d.ts +5 -4
- package/article/public_api.d.ts +2 -1
- package/button/README.md +41 -0
- package/button/button/button.component.d.ts +1 -1
- package/button/button.d.ts +3 -0
- package/button/button.module.d.ts +4 -4
- package/button/public_api.d.ts +2 -1
- package/callout/README.md +42 -0
- package/callout/callout/callout.component.d.ts +1 -1
- package/callout/callout-body/callout-body.directive.d.ts +1 -1
- package/callout/callout-icon/callout-icon.directive.d.ts +1 -1
- package/callout/callout-subtitle/callout-subtitle.directive.d.ts +1 -1
- package/callout/callout-tagline/callout-tagline.directive.d.ts +1 -1
- package/callout/callout-title/callout-title.directive.d.ts +1 -1
- package/callout/callout.d.ts +7 -0
- package/callout/callout.module.d.ts +9 -8
- package/callout/public_api.d.ts +1 -0
- package/card/README.md +41 -0
- package/card/card/card.component.d.ts +1 -1
- package/card/card-actions/card-actions.directive.d.ts +1 -1
- package/card/card-content/card-content.directive.d.ts +1 -1
- package/card/card-icon/card-icon.directive.d.ts +1 -1
- package/card/card-image/card-image.directive.d.ts +1 -1
- package/card/card-tagline/card-tagline.directive.d.ts +1 -1
- package/card/card-title/card-title.directive.d.ts +1 -1
- package/card/card.d.ts +8 -0
- package/card/card.module.d.ts +12 -9
- package/card/public_api.d.ts +1 -0
- package/container/README.md +42 -1
- package/container/container/container.component.d.ts +1 -1
- package/container/container.d.ts +2 -0
- package/container/container.module.d.ts +6 -3
- package/container/public_api.d.ts +1 -0
- package/core/openable/openable.d.ts +13 -0
- package/core/openable/openable.directive.d.ts +81 -0
- package/core/openable/public_api.d.ts +2 -0
- package/core/openable/utils/state-error.d.ts +1 -0
- package/core/public_api.d.ts +1 -0
- package/esm2022/accordion/accordion/accordion/accordion.component.mjs +3 -3
- package/esm2022/accordion/accordion/accordion-item/accordion-item.component.mjs +38 -22
- package/esm2022/accordion/accordion/accordion-item-title/accordion-item-title.directive.mjs +3 -2
- package/esm2022/accordion/accordion.mjs +9 -0
- package/esm2022/accordion/accordion.module.mjs +6 -14
- package/esm2022/accordion/examples/basic-accordion/basic-accordion.component.mjs +6 -3
- package/esm2022/accordion/examples/public_api.mjs +1 -2
- package/esm2022/accordion/public_api.mjs +2 -1
- package/esm2022/article/article/article.component.mjs +3 -3
- package/esm2022/article/article-meta/article-meta.directive.mjs +3 -2
- package/esm2022/article/article.mjs +7 -0
- package/esm2022/article/article.module.mjs +5 -5
- package/esm2022/article/examples/article-blockquote/article-blockquote.component.mjs +6 -4
- package/esm2022/article/examples/article-code-block/article-code-block.component.mjs +6 -4
- package/esm2022/article/examples/article-code-inline/article-code-inline.component.mjs +6 -4
- package/esm2022/article/examples/article-headings/article-headings.component.mjs +7 -3
- package/esm2022/article/examples/article-hr/article-hr.component.mjs +6 -4
- package/esm2022/article/examples/article-link/article-link.component.mjs +6 -4
- package/esm2022/article/examples/article-meta/article-meta.component.mjs +6 -4
- package/esm2022/article/examples/article-ol/article-ol.component.mjs +6 -4
- package/esm2022/article/examples/article-table/article-table.component.mjs +6 -4
- package/esm2022/article/examples/article-ul/article-ul.component.mjs +6 -4
- package/esm2022/article/public_api.mjs +3 -2
- package/esm2022/button/button/button.component.mjs +11 -6
- package/esm2022/button/button.mjs +7 -0
- package/esm2022/button/button.module.mjs +5 -11
- package/esm2022/button/examples/basic-button/basic-button.component.mjs +4 -6
- package/esm2022/button/examples/flat-button/flat-button.component.mjs +4 -6
- package/esm2022/button/examples/icon-button/icon-button.component.mjs +8 -4
- package/esm2022/button/examples/raised-button/raised-button.component.mjs +4 -6
- package/esm2022/button/examples/sizeable-button/sizeable-button.component.mjs +8 -4
- package/esm2022/button/examples/statusable-button/statusable-button.component.mjs +8 -4
- package/esm2022/button/examples/stroked-button/stroked-button.component.mjs +4 -6
- package/esm2022/button/examples/underline-button/underline-button.component.mjs +4 -6
- package/esm2022/button/public_api.mjs +3 -2
- package/esm2022/callout/callout/callout.component.mjs +4 -4
- package/esm2022/callout/callout-body/callout-body.directive.mjs +3 -2
- package/esm2022/callout/callout-icon/callout-icon.directive.mjs +3 -2
- package/esm2022/callout/callout-subtitle/callout-subtitle.directive.mjs +3 -2
- package/esm2022/callout/callout-tagline/callout-tagline.directive.mjs +3 -2
- package/esm2022/callout/callout-title/callout-title.directive.mjs +3 -2
- package/esm2022/callout/callout.mjs +15 -0
- package/esm2022/callout/callout.module.mjs +5 -5
- package/esm2022/callout/examples/callout-text-alignment/callout-text-alignment.component.mjs +10 -9
- package/esm2022/callout/examples/callout-theming/callout-theming.component.mjs +8 -7
- package/esm2022/callout/examples/callout-with-grid/callout-with-grid.component.mjs +9 -8
- package/esm2022/callout/examples/compact-callout/compact-callout.component.mjs +9 -8
- package/esm2022/callout/public_api.mjs +2 -1
- package/esm2022/card/card/card.component.mjs +3 -3
- package/esm2022/card/card-actions/card-actions.directive.mjs +3 -2
- package/esm2022/card/card-content/card-content.directive.mjs +3 -2
- package/esm2022/card/card-icon/card-icon.directive.mjs +3 -2
- package/esm2022/card/card-image/card-image.directive.mjs +3 -2
- package/esm2022/card/card-tagline/card-tagline.directive.mjs +3 -2
- package/esm2022/card/card-title/card-title.directive.mjs +3 -2
- package/esm2022/card/card.mjs +17 -0
- package/esm2022/card/card.module.mjs +7 -5
- package/esm2022/card/examples/basic-card/basic-card.component.mjs +9 -8
- package/esm2022/card/examples/card-orientation/card-orientation.component.mjs +10 -9
- package/esm2022/card/examples/card-theming/card-theming.component.mjs +4 -4
- package/esm2022/card/examples/linkable-card/linkable-card.component.mjs +6 -6
- package/esm2022/card/examples/raised-card/raised-card.component.mjs +6 -6
- package/esm2022/card/examples/stroked-card/stroked-card.component.mjs +6 -6
- package/esm2022/card/public_api.mjs +2 -1
- package/esm2022/checkbox/examples/basic-checkbox/basic-checkbox.component.mjs +4 -4
- package/esm2022/checkbox/examples/checkbox-set/checkbox-set.component.mjs +4 -4
- package/esm2022/container/container/container.component.mjs +3 -3
- package/esm2022/container/container.mjs +5 -0
- package/esm2022/container/container.module.mjs +6 -4
- package/esm2022/container/examples/container-sizes/container-sizes.component.mjs +4 -4
- package/esm2022/container/public_api.mjs +2 -1
- package/esm2022/core/openable/openable.directive.mjs +122 -0
- package/esm2022/core/openable/openable.mjs +2 -0
- package/esm2022/core/openable/public_api.mjs +2 -0
- package/esm2022/core/openable/utils/state-error.mjs +2 -0
- package/esm2022/core/public_api.mjs +2 -1
- package/esm2022/hero/examples/compact-hero/compact-hero.component.mjs +7 -6
- package/esm2022/hero/examples/hero-text-alignment/hero-text-alignment.component.mjs +10 -9
- package/esm2022/hero/examples/hero-theming/hero-theming.component.mjs +8 -7
- package/esm2022/hero/examples/hero-with-grid/hero-with-grid.component.mjs +9 -8
- package/esm2022/hero/hero/hero.component.mjs +4 -7
- package/esm2022/hero/hero-body/hero-body.directive.mjs +3 -2
- package/esm2022/hero/hero-icon/hero-icon.directive.mjs +3 -2
- package/esm2022/hero/hero-subtitle/hero-subtitle.directive.mjs +3 -2
- package/esm2022/hero/hero-tagline/hero-tagline.directive.mjs +3 -2
- package/esm2022/hero/hero-title/hero-title.directive.mjs +3 -2
- package/esm2022/hero/hero.mjs +15 -0
- package/esm2022/hero/hero.module.mjs +7 -5
- package/esm2022/hero/public_api.mjs +2 -1
- package/esm2022/image/examples/basic-image/basic-image.component.mjs +6 -4
- package/esm2022/image/examples/load-image/load-image.component.mjs +7 -4
- package/esm2022/image/examples/skeleton-image/skeleton-image.component.mjs +6 -4
- package/esm2022/image/image/image.component.mjs +3 -3
- package/esm2022/image/image.mjs +5 -0
- package/esm2022/image/image.module.mjs +7 -5
- package/esm2022/image/public_api.mjs +2 -1
- package/esm2022/link-set/link-set/link-set.component.mjs +3 -3
- package/esm2022/link-set/link-set-heading/link-set-heading.directive.mjs +3 -2
- package/esm2022/link-set/link-set-item/link-set-item.component.mjs +3 -2
- package/esm2022/link-set/link-set-subheading/link-set-subheading.directive.mjs +3 -2
- package/esm2022/link-set/link-set.mjs +11 -0
- package/esm2022/link-set/link-set.module.mjs +8 -6
- package/esm2022/link-set/public_api.mjs +2 -1
- package/esm2022/list/examples/basic-list/basic-list.component.mjs +7 -4
- package/esm2022/list/examples/icon-list/icon-list.component.mjs +4 -6
- package/esm2022/list/examples/multiline-list/multiline-list.component.mjs +7 -4
- package/esm2022/list/examples/nav-list/nav-list.component.mjs +4 -6
- package/esm2022/list/list/list.component.mjs +3 -3
- package/esm2022/list/list-item/list-item.component.mjs +8 -5
- package/esm2022/list/list.mjs +9 -0
- package/esm2022/list/list.module.mjs +8 -8
- package/esm2022/list/public_api.mjs +2 -1
- package/esm2022/loading-icon/examples/loading-icon-color/loading-icon-color.component.mjs +4 -4
- package/esm2022/loading-icon/examples/loading-icon-diameter/loading-icon-diameter.component.mjs +6 -4
- package/esm2022/loading-icon/loading-icon/loading-icon.component.mjs +3 -3
- package/esm2022/loading-icon/loading-icon.mjs +5 -0
- package/esm2022/loading-icon/loading-icon.module.mjs +6 -4
- package/esm2022/loading-icon/public_api.mjs +2 -1
- package/esm2022/media-gallery/examples/basic-media-gallery/basic-media-gallery.component.mjs +8 -5
- package/esm2022/media-gallery/examples/mismatched-sizes-media-gallery/mismatched-sizes-media-gallery.component.mjs +8 -5
- package/esm2022/media-gallery/examples/skeleton-media-gallery/skeleton-media-gallery.component.mjs +8 -5
- package/esm2022/media-gallery/media-gallery/media-gallery.component.mjs +9 -5
- package/esm2022/media-gallery/media-gallery.mjs +9 -0
- package/esm2022/media-gallery/media-gallery.module.mjs +11 -9
- package/esm2022/media-gallery/media-renderer/media-renderer.component.mjs +3 -2
- package/esm2022/media-gallery/public_api.mjs +2 -1
- package/esm2022/media-gallery/thumbnail/thumbnail.directive.mjs +3 -2
- package/esm2022/menu/examples/basic-menu/basic-menu.component.mjs +9 -5
- package/esm2022/menu/examples/basic-menu/menu-content/menu-content.component.mjs +6 -3
- package/esm2022/menu/menu/menu.component.mjs +6 -3
- package/esm2022/menu/menu-activator/menu-activator.component.mjs +3 -2
- package/esm2022/menu/menu-item/menu-item.component.mjs +8 -5
- package/esm2022/menu/menu.module.mjs +8 -7
- package/esm2022/menu/services/menu.service.mjs +8 -7
- package/esm2022/modal/examples/basic-modal/basic-modal.component.mjs +13 -5
- package/esm2022/modal/examples/basic-modal/modal-content.component.mjs +9 -5
- package/esm2022/modal/modal/modal.component.mjs +47 -21
- package/esm2022/modal/modal-actions/modal-actions.component.mjs +3 -2
- package/esm2022/modal/modal-close/modal-close.directive.mjs +3 -2
- package/esm2022/modal/modal-content/modal-content.component.mjs +3 -2
- package/esm2022/modal/modal-header/modal-header.component.mjs +14 -7
- package/esm2022/modal/modal-title/modal-title.directive.mjs +3 -2
- package/esm2022/modal/modal.mjs +13 -0
- package/esm2022/modal/modal.module.mjs +17 -11
- package/esm2022/modal/public_api.mjs +2 -1
- package/esm2022/modal/service/modal.service.mjs +7 -5
- package/esm2022/navbar/examples/basic-navbar/basic-navbar.component.mjs +9 -5
- package/esm2022/navbar/examples/contained-navbar/contained-navbar.component.mjs +9 -8
- package/esm2022/navbar/examples/navbar-theming/navbar-theming.component.mjs +8 -7
- package/esm2022/navbar/examples/raised-navbar/raised-navbar.component.mjs +9 -5
- package/esm2022/navbar/navbar/navbar.component.mjs +3 -6
- package/esm2022/navbar/navbar.mjs +5 -0
- package/esm2022/navbar/navbar.module.mjs +10 -4
- package/esm2022/navbar/public_api.mjs +2 -1
- package/esm2022/notification/examples/default-notification/default-notification.component.mjs +6 -6
- package/esm2022/notification/examples/dismissible-notification/dismissible-notification.component.mjs +4 -4
- package/esm2022/notification/examples/notification-orientations/notification-orientations.component.mjs +6 -6
- package/esm2022/notification/examples/notification-status/notification-status.component.mjs +6 -6
- package/esm2022/notification/examples/notification-with-actions/notification-with-actions.component.mjs +6 -6
- package/esm2022/notification/notification/notification.component.mjs +10 -6
- package/esm2022/notification/notification-actions/notification-actions.directive.mjs +3 -2
- package/esm2022/notification/notification-message/notification-message.directive.mjs +3 -2
- package/esm2022/notification/notification-subtitle/notification-subtitle.directive.mjs +3 -2
- package/esm2022/notification/notification-title/notification-title.directive.mjs +3 -2
- package/esm2022/notification/notification.mjs +15 -0
- package/esm2022/notification/notification.module.mjs +11 -8
- package/esm2022/notification/public_api.mjs +2 -1
- package/esm2022/paginator/examples/basic-paginator/basic-paginator.component.mjs +4 -4
- package/esm2022/paginator/examples/link-paginator/link-paginator.component.mjs +4 -4
- package/esm2022/paginator/paginator/paginator.component.mjs +12 -9
- package/esm2022/paginator/paginator.mjs +5 -0
- package/esm2022/paginator/paginator.module.mjs +9 -6
- package/esm2022/paginator/public_api.mjs +2 -1
- package/esm2022/progress-bar/examples/progress-bar-default/progress-bar-default.component.mjs +6 -4
- package/esm2022/progress-bar/examples/progress-bar-indeterminate/progress-bar-indeterminate.component.mjs +6 -4
- package/esm2022/progress-bar/examples/progress-bar-themes/progress-bar-themes.component.mjs +7 -4
- package/esm2022/progress-bar/progress-bar-label/progress-bar-label.directive.mjs +20 -0
- package/esm2022/progress-bar/progress-bar.component.mjs +5 -3
- package/esm2022/progress-bar/progress-bar.mjs +7 -0
- package/esm2022/progress-bar/progress-bar.module.mjs +11 -4
- package/esm2022/progress-bar/public_api.mjs +3 -1
- package/esm2022/sidebar/examples/basic-sidebar/basic-sidebar.component.mjs +6 -4
- package/esm2022/sidebar/examples/over-and-under-sidebars/over-and-under-sidebars.component.mjs +9 -8
- package/esm2022/sidebar/examples/side-fixed-sidebar/side-fixed-sidebar.component.mjs +5 -5
- package/esm2022/sidebar/examples/sidebar-with-sticky-content/sidebar-with-sticky-content.component.mjs +6 -4
- package/esm2022/sidebar/public_api.mjs +2 -1
- package/esm2022/sidebar/sidebar/sidebar.component.mjs +35 -15
- package/esm2022/sidebar/sidebar-footer/sidebar-footer.component.mjs +3 -3
- package/esm2022/sidebar/sidebar-header/sidebar-header-action/sidebar-header-action.directive.mjs +3 -2
- package/esm2022/sidebar/sidebar-header/sidebar-header-title/sidebar-header-title.directive.mjs +3 -2
- package/esm2022/sidebar/sidebar-header/sidebar-header.component.mjs +3 -3
- package/esm2022/sidebar/sidebar-viewport/sidebar-viewport.component.mjs +22 -38
- package/esm2022/sidebar/sidebar-viewport/utils/content-pad.mjs +6 -6
- package/esm2022/sidebar/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.mjs +3 -3
- package/esm2022/sidebar/sidebar.mjs +17 -0
- package/esm2022/sidebar/sidebar.module.mjs +8 -6
- package/esm2022/toast/examples/default-toast/default-toast.component.mjs +7 -4
- package/esm2022/toast/examples/toast-positions/toast-positions.component.mjs +8 -4
- package/esm2022/toast/examples/toast-status/toast-status.component.mjs +12 -7
- package/esm2022/toast/examples/toast-with-custom-duration/toast-with-custom-duration.component.mjs +7 -4
- package/esm2022/toast/public_api.mjs +2 -1
- package/esm2022/toast/service/toast.service.mjs +9 -10
- package/esm2022/toast/toast/toast-provider.mjs +7 -0
- package/esm2022/toast/toast/toast-template.component.mjs +30 -12
- package/esm2022/toast/toast/toast.component.mjs +6 -9
- package/esm2022/toast/toast-actions/toast-actions.directive.mjs +3 -2
- package/esm2022/toast/toast-message/toast-message.directive.mjs +3 -2
- package/esm2022/toast/toast-title/toast-title.directive.mjs +3 -2
- package/esm2022/toast/toast.module.mjs +10 -11
- package/esm2022/tree/examples/basic-tree/basic-tree.component.mjs +7 -4
- package/esm2022/tree/public_api.mjs +2 -2
- package/esm2022/tree/tree/tree.component.mjs +8 -5
- package/esm2022/tree/tree-item/tree-item.directive.mjs +3 -2
- package/esm2022/tree/tree.mjs +7 -0
- package/esm2022/tree/tree.module.mjs +9 -7
- package/fesm2022/daffodil-design-accordion-examples.mjs +7 -26
- package/fesm2022/daffodil-design-accordion-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-accordion.mjs +52 -38
- package/fesm2022/daffodil-design-accordion.mjs.map +1 -1
- package/fesm2022/daffodil-design-article-examples.mjs +41 -21
- package/fesm2022/daffodil-design-article-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-article.mjs +15 -9
- package/fesm2022/daffodil-design-article.mjs.map +1 -1
- package/fesm2022/daffodil-design-button-examples.mjs +27 -24
- package/fesm2022/daffodil-design-button-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-button.mjs +21 -18
- package/fesm2022/daffodil-design-button.mjs.map +1 -1
- package/fesm2022/daffodil-design-callout-examples.mjs +20 -19
- package/fesm2022/daffodil-design-callout-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-callout.mjs +27 -13
- package/fesm2022/daffodil-design-callout.mjs.map +1 -1
- package/fesm2022/daffodil-design-card-examples.mjs +23 -22
- package/fesm2022/daffodil-design-card-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-card.mjs +31 -13
- package/fesm2022/daffodil-design-card.mjs.map +1 -1
- package/fesm2022/daffodil-design-checkbox-examples.mjs +5 -5
- package/fesm2022/daffodil-design-checkbox-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-container-examples.mjs +3 -3
- package/fesm2022/daffodil-design-container-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-container.mjs +12 -6
- package/fesm2022/daffodil-design-container.mjs.map +1 -1
- package/fesm2022/daffodil-design-hero-examples.mjs +19 -18
- package/fesm2022/daffodil-design-hero-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-hero.mjs +29 -16
- package/fesm2022/daffodil-design-hero.mjs.map +1 -1
- package/fesm2022/daffodil-design-image-examples.mjs +14 -7
- package/fesm2022/daffodil-design-image-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-image.mjs +13 -7
- package/fesm2022/daffodil-design-image.mjs.map +1 -1
- package/fesm2022/daffodil-design-link-set.mjs +23 -11
- package/fesm2022/daffodil-design-link-set.mjs.map +1 -1
- package/fesm2022/daffodil-design-list-examples.mjs +14 -13
- package/fesm2022/daffodil-design-list-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-list.mjs +22 -14
- package/fesm2022/daffodil-design-list.mjs.map +1 -1
- package/fesm2022/daffodil-design-loading-icon-examples.mjs +7 -5
- package/fesm2022/daffodil-design-loading-icon-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-loading-icon.mjs +12 -6
- package/fesm2022/daffodil-design-loading-icon.mjs.map +1 -1
- package/fesm2022/daffodil-design-media-gallery-examples.mjs +17 -8
- package/fesm2022/daffodil-design-media-gallery-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-media-gallery.mjs +70 -57
- package/fesm2022/daffodil-design-media-gallery.mjs.map +1 -1
- package/fesm2022/daffodil-design-menu-examples.mjs +12 -5
- package/fesm2022/daffodil-design-menu-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-menu.mjs +55 -48
- package/fesm2022/daffodil-design-menu.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal-examples.mjs +17 -6
- package/fesm2022/daffodil-design-modal-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-modal.mjs +96 -49
- package/fesm2022/daffodil-design-modal.mjs.map +1 -1
- package/fesm2022/daffodil-design-navbar-examples.mjs +22 -15
- package/fesm2022/daffodil-design-navbar-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-navbar.mjs +16 -9
- package/fesm2022/daffodil-design-navbar.mjs.map +1 -1
- package/fesm2022/daffodil-design-notification-examples.mjs +16 -16
- package/fesm2022/daffodil-design-notification-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-notification.mjs +37 -19
- package/fesm2022/daffodil-design-notification.mjs.map +1 -1
- package/fesm2022/daffodil-design-paginator-examples.mjs +5 -5
- package/fesm2022/daffodil-design-paginator-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-paginator.mjs +23 -16
- package/fesm2022/daffodil-design-paginator.mjs.map +1 -1
- package/fesm2022/daffodil-design-progress-bar-examples.mjs +14 -7
- package/fesm2022/daffodil-design-progress-bar-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-progress-bar.mjs +38 -8
- package/fesm2022/daffodil-design-progress-bar.mjs.map +1 -1
- package/fesm2022/daffodil-design-sidebar-examples.mjs +19 -14
- package/fesm2022/daffodil-design-sidebar-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-sidebar.mjs +86 -68
- package/fesm2022/daffodil-design-sidebar.mjs.map +1 -1
- package/fesm2022/daffodil-design-toast-examples.mjs +23 -11
- package/fesm2022/daffodil-design-toast-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-toast.mjs +146 -127
- package/fesm2022/daffodil-design-toast.mjs.map +1 -1
- package/fesm2022/daffodil-design-tree-examples.mjs +6 -3
- package/fesm2022/daffodil-design-tree-examples.mjs.map +1 -1
- package/fesm2022/daffodil-design-tree.mjs +23 -35
- package/fesm2022/daffodil-design-tree.mjs.map +1 -1
- package/fesm2022/daffodil-design.mjs +123 -2
- package/fesm2022/daffodil-design.mjs.map +1 -1
- package/hero/README.md +41 -0
- package/hero/hero/hero.component.d.ts +1 -4
- package/hero/hero-body/hero-body.directive.d.ts +1 -1
- package/hero/hero-icon/hero-icon.directive.d.ts +1 -1
- package/hero/hero-subtitle/hero-subtitle.directive.d.ts +1 -1
- package/hero/hero-tagline/hero-tagline.directive.d.ts +1 -1
- package/hero/hero-title/hero-title.directive.d.ts +1 -1
- package/hero/hero.d.ts +7 -0
- package/hero/hero.module.d.ts +11 -8
- package/hero/public_api.d.ts +1 -0
- package/image/README.md +43 -7
- package/image/image/image.component.d.ts +1 -1
- package/image/image.d.ts +2 -0
- package/image/image.module.d.ts +6 -3
- package/image/public_api.d.ts +1 -0
- package/link-set/README.md +42 -1
- package/link-set/link-set/link-set.component.d.ts +1 -1
- package/link-set/link-set-heading/link-set-heading.directive.d.ts +1 -1
- package/link-set/link-set-item/link-set-item.component.d.ts +1 -1
- package/link-set/link-set-subheading/link-set-subheading.directive.d.ts +1 -1
- package/link-set/link-set.d.ts +5 -0
- package/link-set/link-set.module.d.ts +9 -6
- package/link-set/public_api.d.ts +1 -0
- package/list/README.md +42 -1
- package/list/list/list.component.d.ts +1 -1
- package/list/list-item/list-item.component.d.ts +1 -1
- package/list/list.d.ts +4 -0
- package/list/list.module.d.ts +7 -4
- package/list/public_api.d.ts +1 -0
- package/loading-icon/README.md +41 -0
- package/loading-icon/loading-icon/loading-icon.component.d.ts +1 -1
- package/loading-icon/loading-icon.d.ts +2 -0
- package/loading-icon/loading-icon.module.d.ts +6 -3
- package/loading-icon/public_api.d.ts +1 -0
- package/media-gallery/README.md +41 -0
- package/media-gallery/media-gallery/media-gallery.component.d.ts +1 -1
- package/media-gallery/media-gallery.d.ts +4 -0
- package/media-gallery/media-gallery.module.d.ts +8 -5
- package/media-gallery/media-renderer/media-renderer.component.d.ts +1 -1
- package/media-gallery/public_api.d.ts +1 -0
- package/media-gallery/thumbnail/thumbnail.directive.d.ts +1 -1
- package/menu/README.md +23 -0
- package/menu/menu/menu.component.d.ts +1 -1
- package/menu/menu-activator/menu-activator.component.d.ts +1 -1
- package/menu/menu-item/menu-item.component.d.ts +1 -1
- package/menu/menu.module.d.ts +6 -6
- package/menu/services/menu.service.d.ts +3 -2
- package/modal/README.md +41 -0
- package/modal/modal/modal.component.d.ts +20 -8
- package/modal/modal-actions/modal-actions.component.d.ts +1 -1
- package/modal/modal-close/modal-close.directive.d.ts +1 -1
- package/modal/modal-content/modal-content.component.d.ts +1 -1
- package/modal/modal-header/modal-header.component.d.ts +1 -1
- package/modal/modal-title/modal-title.directive.d.ts +1 -1
- package/modal/modal.d.ts +6 -0
- package/modal/modal.module.d.ts +15 -12
- package/modal/public_api.d.ts +1 -0
- package/navbar/README.md +41 -0
- package/navbar/navbar/navbar.component.d.ts +1 -4
- package/navbar/navbar.d.ts +2 -0
- package/navbar/navbar.module.d.ts +6 -2
- package/navbar/public_api.d.ts +1 -0
- package/notification/README.md +41 -0
- package/notification/notification/notification.component.d.ts +1 -1
- package/notification/notification-actions/notification-actions.directive.d.ts +1 -1
- package/notification/notification-message/notification-message.directive.d.ts +1 -1
- package/notification/notification-subtitle/notification-subtitle.directive.d.ts +1 -1
- package/notification/notification-title/notification-title.directive.d.ts +1 -1
- package/notification/notification.d.ts +7 -0
- package/notification/notification.module.d.ts +12 -9
- package/notification/public_api.d.ts +1 -0
- package/package.json +1 -1
- package/paginator/README.md +45 -4
- package/paginator/paginator/paginator.component.d.ts +1 -4
- package/paginator/paginator.d.ts +2 -0
- package/paginator/paginator.module.d.ts +8 -5
- package/paginator/public_api.d.ts +1 -0
- package/progress-bar/README.md +41 -0
- package/progress-bar/progress-bar-label/progress-bar-label.directive.d.ts +6 -0
- package/progress-bar/progress-bar.component.d.ts +1 -1
- package/progress-bar/progress-bar.d.ts +3 -0
- package/progress-bar/progress-bar.module.d.ts +7 -3
- package/progress-bar/public_api.d.ts +2 -0
- package/sidebar/README.md +78 -20
- package/sidebar/public_api.d.ts +1 -0
- package/sidebar/sidebar/sidebar.component.d.ts +19 -8
- package/sidebar/sidebar-footer/sidebar-footer.component.d.ts +1 -1
- package/sidebar/sidebar-header/sidebar-header-action/sidebar-header-action.directive.d.ts +1 -1
- package/sidebar/sidebar-header/sidebar-header-title/sidebar-header-title.directive.d.ts +1 -1
- package/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
- package/sidebar/sidebar-viewport/sidebar-viewport.component.d.ts +5 -17
- package/sidebar/sidebar-viewport/utils/content-pad.d.ts +2 -2
- package/sidebar/sidebar-viewport-backdrop/sidebar-viewport-backdrop.component.d.ts +1 -1
- package/sidebar/sidebar.d.ts +8 -0
- package/sidebar/sidebar.module.d.ts +13 -10
- package/toast/README.md +108 -33
- package/toast/public_api.d.ts +1 -0
- package/toast/service/toast.service.d.ts +4 -3
- package/toast/src/toast-theme.scss +1 -1
- package/toast/toast/toast-provider.d.ts +2 -0
- package/toast/toast/toast-template.component.d.ts +1 -1
- package/toast/toast/toast.component.d.ts +1 -3
- package/toast/toast-actions/toast-actions.directive.d.ts +1 -1
- package/toast/toast-message/toast-message.directive.d.ts +1 -1
- package/toast/toast-title/toast-title.directive.d.ts +1 -1
- package/toast/toast.module.d.ts +14 -12
- package/tree/README.md +41 -0
- package/tree/public_api.d.ts +1 -2
- package/tree/tree/tree.component.d.ts +1 -1
- package/tree/tree-item/tree-item.directive.d.ts +1 -1
- package/tree/tree.d.ts +3 -0
- package/tree/tree.module.d.ts +7 -4
- package/accordion/examples/accordion-examples.module.d.ts +0 -9
- package/esm2022/accordion/examples/accordion-examples.module.mjs +0 -26
- package/esm2022/tree/utils/transform-in-place.mjs +0 -23
- package/tree/utils/transform-in-place.d.ts +0 -15
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-design-toast.mjs","sources":["../../../libs/design/toast/src/options/daff-toast-options.ts","../../../libs/design/toast/src/service/position.service.ts","../../../libs/design/toast/src/service/changes-focus.ts","../../../libs/design/toast/src/toast-actions/toast-actions.directive.ts","../../../libs/design/toast/src/toast/toast.component.ts","../../../libs/design/toast/src/toast/toast.component.html","../../../libs/design/toast/src/toast-title/toast-title.directive.ts","../../../libs/design/toast/src/toast-message/toast-message.directive.ts","../../../libs/design/toast/src/toast/toast-template.component.ts","../../../libs/design/toast/src/toast.module.ts","../../../libs/design/toast/src/service/position-strategy.ts","../../../libs/design/toast/src/toast/toast-config.ts","../../../libs/design/toast/src/service/toast.service.ts","../../../libs/design/toast/src/daffodil-design-toast.ts"],"sourcesContent":["import {\n InjectionToken,\n ValueProvider,\n} from '@angular/core';\n\ntype Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };\ntype XOR<T, U> = (T | U) extends Record<string,unknown> ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;\n\nexport interface VerticalPositionTypes { vertical: 'top' | 'bottom' };\n\nexport interface HorizontalPositionTypes { horizontal: 'left' | 'center' | 'right' };\n\nexport type DaffToastPosition = VerticalPositionTypes & HorizontalPositionTypes;\n\nexport interface DaffToastOptions {\n position: DaffToastPosition;\n useParent: boolean;\n}\n\nexport const daffToastDefaultOptions: DaffToastOptions = {\n position: {\n vertical: 'top',\n horizontal: 'right',\n },\n useParent: true,\n};\n\nexport const DAFF_TOAST_OPTIONS = new InjectionToken('DAFF_TOAST_OPTIONS', { providedIn: 'root', factory: () => daffToastDefaultOptions });\n\nexport const provideDaffToastOptions = (options: DaffToastOptions): ValueProvider => ({ provide: DAFF_TOAST_OPTIONS, useValue: {\n ...daffToastDefaultOptions,\n ...options,\n}});\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n Inject,\n Injectable,\n} from '@angular/core';\n\nimport { DaffBreakpoints } from '@daffodil/design';\n\nimport {\n DaffToastOptions,\n DaffToastPosition,\n DAFF_TOAST_OPTIONS,\n} from '../options/daff-toast-options';\n\n@Injectable()\nexport class DaffToastPositionService {\n\n constructor(@Inject(DAFF_TOAST_OPTIONS) private options: DaffToastOptions, private mediaQuery: BreakpointObserver) {\n this._config = options.position;\n }\n\n private _config: DaffToastPosition;\n private _position: DaffToastPosition;\n\n get config(): DaffToastPosition {\n return this.mediaQuery.isMatched(DaffBreakpoints.MOBILE)\n ? this._position ?? this._config\n : <DaffToastPosition>{ vertical: 'bottom', horizontal: 'center' };\n }\n\n set config(val: DaffToastPosition) {\n this._config = val;\n }\n\n setPosition(position: DaffToastPosition) {\n this._position = position;\n }\n}\n","import { DaffToast } from '../interfaces/toast';\n\nexport const daffToastChangesFocus = (toast: DaffToast): boolean => toast.actions?.length > 0;\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffToastActions]',\n})\n\nexport class DaffToastActionsDirective {\n\n @HostBinding('class.daff-toast__actions') class = true;\n}\n","import {\n ConfigurableFocusTrap,\n ConfigurableFocusTrapFactory,\n} from '@angular/cdk/a11y';\nimport {\n Component,\n ElementRef,\n HostBinding,\n ContentChild,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n AfterViewInit,\n AfterContentInit,\n HostListener,\n Input,\n OnDestroy,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffFocusStackService,\n DaffPrefixable,\n DaffPrefixDirective,\n DaffStatusableDirective,\n} from '@daffodil/design';\n\nimport { DaffToast } from '../interfaces/toast';\nimport { daffToastChangesFocus } from '../service/changes-focus';\nimport { DaffToastActionsDirective } from '../toast-actions/toast-actions.directive';\n\n/**\n * DaffToastComponent provides a way to display and\n * communicate information for user actions or system updates.\n */\n@Component({\n selector: 'daff-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffStatusableDirective,\n inputs: ['status'],\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DaffToastComponent implements DaffPrefixable, AfterContentInit, AfterViewInit, OnDestroy {\n /** @docs-private */\n @HostBinding('class.daff-toast') class = true;\n\n /** @docs-private */\n @HostBinding('attr.role') role = 'status';\n\n @ContentChild(DaffToastActionsDirective)\n _actions: DaffToastActionsDirective;\n\n @ContentChild(DaffPrefixDirective)\n _prefix: DaffPrefixDirective;\n\n @Input() toast: DaffToast;\n\n /**\n * @docs-private\n */\n @HostListener('keydown.escape')\n onEscape() {\n this.toast.dismiss();\n }\n\n private _focusTrap: ConfigurableFocusTrap;\n\n constructor(\n private _elementRef: ElementRef,\n private _focusTrapFactory: ConfigurableFocusTrapFactory,\n private _focusStack: DaffFocusStackService,\n ) {\n }\n\n ngAfterContentInit() {\n if(daffToastChangesFocus(this.toast)) {\n this._focusTrap = this._focusTrapFactory.create(\n this._elementRef.nativeElement,\n );\n }\n }\n\n ngAfterViewInit() {\n if(daffToastChangesFocus(this.toast)) {\n this._focusStack.push();\n this._focusTrap.focusFirstTabbableElementWhenReady();\n }\n }\n\n ngOnDestroy() {\n if(daffToastChangesFocus(this.toast)) {\n this._focusTrap.destroy();\n }\n }\n}\n","<ng-container *ngIf=\"_prefix\">\n <ng-content select=\"[daffPrefix]\"></ng-content>\n</ng-container>\n<div class=\"daff-toast__details\">\n <div class=\"daff-toast__content\">\n <ng-content select=\"[daffToastTitle]\"></ng-content>\n <ng-content select=\"[daffToastMessage]\"></ng-content>\n </div>\n <ng-content select=\"[daffToastActions]\"></ng-content>\n</div>\n<ng-content></ng-content>\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffToastTitle]',\n})\n\nexport class DaffToastTitleDirective {\n\n @HostBinding('class.daff-toast__title') class = true;\n}\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffToastMessage]',\n})\n\nexport class DaffToastMessageDirective {\n\n @HostBinding('class.daff-toast__message') class = true;\n}\n","import {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n Input,\n ChangeDetectionStrategy,\n Component,\n ChangeDetectorRef,\n Inject,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\n\nimport { DaffToast } from '../interfaces/toast';\nimport {\n DaffToastOptions,\n DAFF_TOAST_OPTIONS,\n} from '../options/daff-toast-options';\nimport { DaffToastPositionService } from '../service/position.service';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <daff-toast\n *ngFor=\"let item of items | slice:0:3\"\n [toast]=\"item\"\n [status]=\"item.status ?? null\"\n (closeToast)=\"item.dismiss()\"\n [@slideIn]=\"slideAnimation\"\n [attr.role]=\"item.actions ? 'alertdialog' : undefined\"\n [attr.aria-labelledby]=\"item.actions ? item.title : undefined\"\n [attr.aria-describedby]=\"item.actions ? item.message : undefined\">\n <div daffToastTitle>{{ item.title }}</div>\n <div daffToastMessage>{{ item.message }}</div>\n <div daffToastActions *ngIf=\"item.actions\">\n <ng-container *ngFor=\"let action of item.actions\">\n <ng-container *ngTemplateOutlet=\"button;context:{ action, item }\"></ng-container>\n </ng-container>\n </div>\n <button daff-icon-button color=\"theme-contrast\"\n *ngIf=\"item.dismissible\"\n aria-label=\"close button\"\n [attr.aria-hidden]=\"item.actions ? undefined : true\"\n (click)=\"onCloseToast(item.dismiss())\">\n <fa-icon [icon]=\"faTimes\" size=\"sm\" [fixedWidth]=\"true\"></fa-icon>\n </button>\n </daff-toast>\n\n <ng-template #button let-action=\"action\" let-item=\"item\">\n <ng-container [ngSwitch]=\"action.type\">\n <button type=\"button\" *ngSwitchDefault daff-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'stroked'\" daff-stroked-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'raised'\" daff-raised-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'flat'\" daff-flat-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'underline'\" daff-underline-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n </ng-container>\n </ng-template>\n `,\n animations: [\n trigger('slideIn', [\n transition(':enter', [\n style({ opacity: '0', transform: 'translate({{startX}}, {{startY}})' }),\n animate('300ms ease-out', style({ opacity: '1', transform: 'translate({{endX}}, {{endY}})' })),\n ],\n { params: {\n startX: '0',\n startY: '0',\n endX: '0',\n endY: '0',\n } }),\n ]),\n ],\n})\nexport class DaffToastTemplateComponent {\n faTimes = faTimes;\n\n private _items: DaffToast[] = [];\n\n constructor(\n private cd: ChangeDetectorRef,\n @Inject(DAFF_TOAST_OPTIONS)\n private options: DaffToastOptions,\n private toastPosition: DaffToastPositionService,\n ) { }\n\n @Output() closeToast: EventEmitter<void> = new EventEmitter();\n\n onCloseToast(event: Event) {\n this.closeToast.emit();\n }\n\n get slideAnimation(): any {\n switch (this.toastPosition.config.horizontal + '-' + this.toastPosition.config.vertical) {\n case 'left-top':\n case 'left-bottom':\n return {\n value: 0,\n params: {\n startX: '-100%',\n endX: '0',\n startY: '0',\n endY: '0',\n },\n };\n case 'right-top':\n case 'right-bottom':\n return {\n value: 0,\n params: {\n startX: '100%',\n endX: '0',\n startY: '0',\n endY: '0',\n },\n };\n\n case 'center-top':\n return {\n value: 0,\n params: {\n startX: '0',\n endX: '0',\n startY: '-100%',\n endY: '0',\n },\n };\n\n case 'center-bottom':\n return {\n value: 0,\n params: {\n startX: '0',\n endX: '0',\n startY: '100%',\n endY: '0',\n },\n };\n }\n }\n\n @Input()\n get items(): DaffToast[] {\n return this._items;\n }\n set items(value: DaffToast[]) {\n this._items = value;\n this.cd.markForCheck();\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n\nimport { DaffPrefixSuffixModule } from '@daffodil/design';\nimport { DaffButtonModule } from '@daffodil/design/button';\n\nimport { DaffToastPositionService } from './service/position.service';\nimport { DaffToastTemplateComponent } from './toast/toast-template.component';\nimport { DaffToastComponent } from './toast/toast.component';\nimport { DaffToastActionsDirective } from './toast-actions/toast-actions.directive';\nimport { DaffToastMessageDirective } from './toast-message/toast-message.directive';\nimport { DaffToastTitleDirective } from './toast-title/toast-title.directive';\n\n\n@NgModule({\n imports: [\n CommonModule,\n DaffPrefixSuffixModule,\n DaffButtonModule,\n FontAwesomeModule,\n PortalModule,\n OverlayModule,\n ],\n declarations: [\n DaffToastComponent,\n DaffToastActionsDirective,\n DaffToastTitleDirective,\n DaffToastMessageDirective,\n DaffToastTemplateComponent,\n ],\n exports: [\n DaffToastComponent,\n DaffToastActionsDirective,\n DaffToastTitleDirective,\n DaffToastMessageDirective,\n DaffPrefixSuffixModule,\n ],\n providers: [\n DaffToastPositionService,\n ],\n})\nexport class DaffToastModule { }\n","import {\n GlobalPositionStrategy,\n PositionStrategy,\n} from '@angular/cdk/overlay';\n\nimport { DaffToastPosition } from '../options/daff-toast-options';\n\nexport const createPositionStrategy = (position: DaffToastPosition): PositionStrategy => {\n const strat = new GlobalPositionStrategy();\n\n switch ( position.horizontal ) {\n case 'left':\n strat.left('48px');\n break;\n case 'right':\n strat.right('48px');\n break;\n case 'center':\n strat.centerHorizontally();\n break;\n default:\n strat.right('48px');\n }\n\n switch(position.vertical) {\n case 'top':\n strat.top('80px');\n break;\n case 'bottom':\n strat.bottom('48px');\n break;\n default:\n strat.top('80px');\n }\n\n return strat;\n};\n","export interface DaffToastConfiguration {\n /**\n * The duration (in milliseconds) that a toast is visible before it's dismissed.\n */\n duration?: number;\n}\n\nexport const daffDefaultToastConfiguration: DaffToastConfiguration = {};\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EventEmitter,\n Inject,\n Injectable,\n OnDestroy,\n Optional,\n SkipSelf,\n} from '@angular/core';\nimport {\n EMPTY,\n interval,\n merge,\n of,\n Subscription,\n} from 'rxjs';\nimport {\n delay,\n filter,\n map,\n take,\n tap,\n} from 'rxjs/operators';\n\nimport {\n DaffBreakpoints,\n DaffFocusStackService,\n} from '@daffodil/design';\n\nimport { daffToastChangesFocus } from './changes-focus';\nimport { createPositionStrategy } from './position-strategy';\nimport { DaffToastPositionService } from './position.service';\nimport {\n DaffToast,\n DaffToastData,\n} from '../interfaces/toast';\nimport {\n DAFF_TOAST_OPTIONS,\n DaffToastOptions,\n} from '../options/daff-toast-options';\nimport {\n daffDefaultToastConfiguration,\n DaffToastConfiguration,\n} from '../toast/toast-config';\nimport { DaffToastTemplateComponent } from '../toast/toast-template.component';\nimport { DaffToastModule } from '../toast.module';\n\n@Injectable({ providedIn: DaffToastModule })\nexport class DaffToastService implements OnDestroy {\n\n private _sub: Subscription;\n\n private _toasts: DaffToast[] = [];\n\n private _overlayRef?: OverlayRef;\n\n private _template?: ComponentRef<DaffToastTemplateComponent>;\n\n constructor(\n private overlay: Overlay,\n @Inject(DAFF_TOAST_OPTIONS) private options: DaffToastOptions,\n @Optional() @SkipSelf() private _parentToast: DaffToastService,\n private mediaQuery: BreakpointObserver,\n private toastPosition: DaffToastPositionService,\n private focusStack: DaffFocusStackService,\n ) {\n this._sub = this.mediaQuery.observe(DaffBreakpoints.MOBILE).pipe(\n filter(() => this._overlayRef !== undefined),\n map((position) => createPositionStrategy(this.toastPosition.config)),\n tap((strategy) => this._overlayRef.updatePositionStrategy(strategy)),\n ).subscribe();\n }\n\n ngOnDestroy(): void {\n this._sub.unsubscribe();\n }\n\n private _attachToastTemplate(\n overlayRef: OverlayRef,\n ): ComponentRef<DaffToastTemplateComponent> {\n const template = overlayRef.attach(new ComponentPortal(DaffToastTemplateComponent));\n return template;\n }\n\n private _createOverlayRef(): OverlayRef {\n return this.overlay.create({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: createPositionStrategy(this.toastPosition.config),\n });\n }\n\n open(\n toast: DaffToastData,\n configuration?: Partial<DaffToastConfiguration>,\n ): DaffToast {\n if(this._parentToast && this.options.useParent) {\n return this._parentToast.open(toast, configuration);\n }\n\n const config: DaffToastConfiguration = {\n ...daffDefaultToastConfiguration,\n // sets the default duration to 5000ms if a toast does not have actions\n duration: toast.actions?.length > 0 ? undefined : 5000,\n ...configuration,\n };\n if(this._toasts.length === 0) {\n this._overlayRef = this._createOverlayRef();\n this._template = this._attachToastTemplate(this._overlayRef);\n }\n const dismissEvent = new EventEmitter<void>();\n const _toastPlus: DaffToast = {\n dismissible: true,\n ...toast,\n dismiss: () => {\n dismissEvent.emit();\n },\n dismissalStream: merge(\n config.duration ? of(undefined).pipe(delay(config.duration)) : EMPTY,\n dismissEvent,\n ).pipe(\n take(1),\n ),\n };\n\n _toastPlus.dismissalStream.subscribe(() => {\n this.close(_toastPlus);\n });\n\n this._toasts = [\n _toastPlus,\n ...this._toasts,\n ];\n\n this._template.instance.items = this._toasts;\n\n return _toastPlus;\n }\n\n close(toast: DaffToast): void {\n if(this._parentToast && this.options.useParent) {\n this._parentToast.close(toast);\n return;\n }\n\n if(daffToastChangesFocus(toast)) {\n this.focusStack.pop();\n }\n\n const index = this._toasts.indexOf(toast);\n if (index === -1) {\n throw new Error(\n 'The Toast that you are trying to remove does not exist.',\n );\n }\n\n this._toasts = this._toasts.filter(m => m !== toast);\n this._template.instance.items = [...this._toasts];\n\n // This currently overrides the \":leave\" animation as we currently\n // remove the animating element immediately after there are no more toasts,\n // without waiting for the animation to complete.\n if(this._toasts.length === 0) {\n this._overlayRef.dispose();\n this._template.destroy();\n this._overlayRef = undefined;\n this._template = undefined;\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i1.DaffToastPositionService","i2","i5.DaffToastComponent","i6.DaffToastActionsDirective","i7.DaffToastTitleDirective","i8.DaffToastMessageDirective","i3.DaffToastPositionService","i4"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-design-toast.mjs","sources":["../../../libs/design/toast/src/options/daff-toast-options.ts","../../../libs/design/toast/src/service/position.service.ts","../../../libs/design/toast/src/service/changes-focus.ts","../../../libs/design/toast/src/toast-actions/toast-actions.directive.ts","../../../libs/design/toast/src/toast/toast.component.ts","../../../libs/design/toast/src/toast/toast.component.html","../../../libs/design/toast/src/toast-message/toast-message.directive.ts","../../../libs/design/toast/src/toast-title/toast-title.directive.ts","../../../libs/design/toast/src/toast.module.ts","../../../libs/design/toast/src/service/position-strategy.ts","../../../libs/design/toast/src/toast/toast-config.ts","../../../libs/design/toast/src/toast/toast-template.component.ts","../../../libs/design/toast/src/service/toast.service.ts","../../../libs/design/toast/src/toast/toast-provider.ts","../../../libs/design/toast/src/daffodil-design-toast.ts"],"sourcesContent":["import {\n InjectionToken,\n ValueProvider,\n} from '@angular/core';\n\ntype Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };\ntype XOR<T, U> = (T | U) extends Record<string,unknown> ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;\n\nexport interface VerticalPositionTypes { vertical: 'top' | 'bottom' };\n\nexport interface HorizontalPositionTypes { horizontal: 'left' | 'center' | 'right' };\n\nexport type DaffToastPosition = VerticalPositionTypes & HorizontalPositionTypes;\n\nexport interface DaffToastOptions {\n position: DaffToastPosition;\n useParent: boolean;\n}\n\nexport const daffToastDefaultOptions: DaffToastOptions = {\n position: {\n vertical: 'top',\n horizontal: 'right',\n },\n useParent: true,\n};\n\nexport const DAFF_TOAST_OPTIONS = new InjectionToken('DAFF_TOAST_OPTIONS', { providedIn: 'root', factory: () => daffToastDefaultOptions });\n\nexport const provideDaffToastOptions = (options: DaffToastOptions): ValueProvider => ({ provide: DAFF_TOAST_OPTIONS, useValue: {\n ...daffToastDefaultOptions,\n ...options,\n}});\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n Inject,\n Injectable,\n} from '@angular/core';\n\nimport { DaffBreakpoints } from '@daffodil/design';\n\nimport {\n DaffToastOptions,\n DaffToastPosition,\n DAFF_TOAST_OPTIONS,\n} from '../options/daff-toast-options';\n\n@Injectable()\nexport class DaffToastPositionService {\n\n constructor(@Inject(DAFF_TOAST_OPTIONS) private options: DaffToastOptions, private mediaQuery: BreakpointObserver) {\n this._config = options.position;\n }\n\n private _config: DaffToastPosition;\n private _position: DaffToastPosition;\n\n get config(): DaffToastPosition {\n return this.mediaQuery.isMatched(DaffBreakpoints.MOBILE)\n ? this._position ?? this._config\n : <DaffToastPosition>{ vertical: 'bottom', horizontal: 'center' };\n }\n\n set config(val: DaffToastPosition) {\n this._config = val;\n }\n\n setPosition(position: DaffToastPosition) {\n this._position = position;\n }\n}\n","import { DaffToast } from '../interfaces/toast';\n\nexport const daffToastChangesFocus = (toast: DaffToast): boolean => toast.actions?.length > 0;\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffToastActions]',\n standalone: true,\n})\n\nexport class DaffToastActionsDirective {\n\n @HostBinding('class.daff-toast__actions') class = true;\n}\n","import {\n ConfigurableFocusTrap,\n ConfigurableFocusTrapFactory,\n} from '@angular/cdk/a11y';\nimport { NgIf } from '@angular/common';\nimport {\n Component,\n ElementRef,\n HostBinding,\n ContentChild,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n AfterViewInit,\n AfterContentInit,\n HostListener,\n Input,\n OnDestroy,\n} from '@angular/core';\n\nimport {\n DaffArticleEncapsulatedDirective,\n DaffFocusStackService,\n DaffPrefixable,\n DaffPrefixDirective,\n DaffStatusableDirective,\n} from '@daffodil/design';\n\nimport { DaffToast } from '../interfaces/toast';\nimport { daffToastChangesFocus } from '../service/changes-focus';\nimport { DaffToastActionsDirective } from '../toast-actions/toast-actions.directive';\n\n/**\n * DaffToastComponent provides a way to display and\n * communicate information for user actions or system updates.\n */\n@Component({\n selector: 'daff-toast',\n templateUrl: './toast.component.html',\n styleUrls: ['./toast.component.scss'],\n hostDirectives: [\n { directive: DaffArticleEncapsulatedDirective },\n {\n directive: DaffStatusableDirective,\n inputs: ['status'],\n },\n ],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n ],\n})\nexport class DaffToastComponent implements DaffPrefixable, AfterContentInit, AfterViewInit, OnDestroy {\n /** @docs-private */\n @HostBinding('class.daff-toast') class = true;\n\n @ContentChild(DaffToastActionsDirective)\n _actions: DaffToastActionsDirective;\n\n @ContentChild(DaffPrefixDirective)\n _prefix: DaffPrefixDirective;\n\n @Input() toast: DaffToast;\n\n /**\n * @docs-private\n */\n @HostListener('keydown.escape')\n onEscape() {\n this.toast.dismiss();\n }\n\n private _focusTrap: ConfigurableFocusTrap;\n\n constructor(\n private _elementRef: ElementRef,\n private _focusTrapFactory: ConfigurableFocusTrapFactory,\n private _focusStack: DaffFocusStackService,\n ) {\n }\n\n ngAfterContentInit() {\n if(daffToastChangesFocus(this.toast)) {\n this._focusTrap = this._focusTrapFactory.create(\n this._elementRef.nativeElement,\n );\n }\n }\n\n ngAfterViewInit() {\n if(daffToastChangesFocus(this.toast)) {\n this._focusStack.push();\n this._focusTrap.focusFirstTabbableElementWhenReady();\n }\n }\n\n ngOnDestroy() {\n if(daffToastChangesFocus(this.toast)) {\n this._focusTrap.destroy();\n }\n }\n}\n","<ng-container *ngIf=\"_prefix\">\n <ng-content select=\"[daffPrefix]\"></ng-content>\n</ng-container>\n<div class=\"daff-toast__details\">\n <div class=\"daff-toast__content\">\n <ng-content select=\"[daffToastTitle]\"></ng-content>\n <ng-content select=\"[daffToastMessage]\"></ng-content>\n </div>\n <ng-content select=\"[daffToastActions]\"></ng-content>\n</div>\n<ng-content></ng-content>\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffToastMessage]',\n standalone: true,\n})\n\nexport class DaffToastMessageDirective {\n\n @HostBinding('class.daff-toast__message') class = true;\n}\n","import {\n Directive,\n HostBinding,\n} from '@angular/core';\n\n@Directive({\n selector: '[daffToastTitle]',\n standalone: true,\n})\n\nexport class DaffToastTitleDirective {\n\n @HostBinding('class.daff-toast__title') class = true;\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n\nimport { DaffPrefixSuffixModule } from '@daffodil/design';\nimport { DaffButtonModule } from '@daffodil/design/button';\n\nimport { DaffToastPositionService } from './service/position.service';\nimport { DaffToastComponent } from './toast/toast.component';\nimport { DaffToastActionsDirective } from './toast-actions/toast-actions.directive';\nimport { DaffToastMessageDirective } from './toast-message/toast-message.directive';\nimport { DaffToastTitleDirective } from './toast-title/toast-title.directive';\n\n/**\n * @deprecated in favor of {@link daffProvideToast}\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffPrefixSuffixModule,\n DaffButtonModule,\n FontAwesomeModule,\n PortalModule,\n OverlayModule,\n DaffToastComponent,\n DaffToastActionsDirective,\n DaffToastTitleDirective,\n DaffToastMessageDirective,\n ],\n exports: [\n DaffToastComponent,\n DaffToastActionsDirective,\n DaffToastTitleDirective,\n DaffToastMessageDirective,\n DaffPrefixSuffixModule,\n ],\n providers: [\n DaffToastPositionService,\n ],\n})\nexport class DaffToastModule { }\n","import {\n GlobalPositionStrategy,\n PositionStrategy,\n} from '@angular/cdk/overlay';\n\nimport { DaffToastPosition } from '../options/daff-toast-options';\n\nexport const createPositionStrategy = (position: DaffToastPosition): PositionStrategy => {\n const strat = new GlobalPositionStrategy();\n\n switch ( position.horizontal ) {\n case 'left':\n strat.left('48px');\n break;\n case 'right':\n strat.right('48px');\n break;\n case 'center':\n strat.centerHorizontally();\n break;\n default:\n strat.right('48px');\n }\n\n switch(position.vertical) {\n case 'top':\n strat.top('80px');\n break;\n case 'bottom':\n strat.bottom('48px');\n break;\n default:\n strat.top('80px');\n }\n\n return strat;\n};\n","export interface DaffToastConfiguration {\n /**\n * The duration (in milliseconds) that a toast is visible before it's dismissed.\n */\n duration?: number;\n}\n\nexport const daffDefaultToastConfiguration: DaffToastConfiguration = {};\n","import {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n NgFor,\n NgIf,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgTemplateOutlet,\n SlicePipe,\n} from '@angular/common';\nimport {\n Input,\n ChangeDetectionStrategy,\n Component,\n ChangeDetectorRef,\n Inject,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\n\nimport { DAFF_BUTTON_COMPONENTS } from '@daffodil/design/button';\n\nimport { DaffToastComponent } from './toast.component';\nimport { DaffToast } from '../interfaces/toast';\nimport {\n DaffToastOptions,\n DAFF_TOAST_OPTIONS,\n} from '../options/daff-toast-options';\nimport { DaffToastPositionService } from '../service/position.service';\nimport { DaffToastActionsDirective } from '../toast-actions/toast-actions.directive';\nimport { DaffToastMessageDirective } from '../toast-message/toast-message.directive';\nimport { DaffToastTitleDirective } from '../toast-title/toast-title.directive';\n\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <daff-toast\n *ngFor=\"let item of items | slice:0:3\"\n [toast]=\"item\"\n [status]=\"item.status ?? null\"\n (closeToast)=\"item.dismiss()\"\n [@slideIn]=\"slideAnimation\"\n [attr.role]=\"item.actions ? 'alertdialog' : 'status'\"\n [attr.aria-labelledby]=\"item.actions ? item.title : undefined\"\n [attr.aria-describedby]=\"item.actions ? item.message : undefined\">\n <div daffToastTitle>{{ item.title }}</div>\n <div daffToastMessage>{{ item.message }}</div>\n <div daffToastActions *ngIf=\"item.actions\">\n <ng-container *ngFor=\"let action of item.actions\">\n <ng-container *ngTemplateOutlet=\"button;context:{ action, item }\"></ng-container>\n </ng-container>\n </div>\n <button daff-icon-button color=\"theme-contrast\"\n *ngIf=\"item.dismissible\"\n aria-label=\"close button\"\n [attr.aria-hidden]=\"item.actions ? undefined : true\"\n (click)=\"onCloseToast(item.dismiss())\">\n <fa-icon [icon]=\"faTimes\" size=\"sm\" [fixedWidth]=\"true\"></fa-icon>\n </button>\n </daff-toast>\n\n <ng-template #button let-action=\"action\" let-item=\"item\">\n <ng-container [ngSwitch]=\"action.type\">\n <button type=\"button\" *ngSwitchDefault daff-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'stroked'\" daff-stroked-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'raised'\" daff-raised-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'flat'\" daff-flat-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n <button type=\"button\" *ngSwitchCase=\"'underline'\" daff-underline-button\n [status]=\"action.status\"\n [color]=\"action.color\"\n [size]=\"action.size\"\n [attr.aria-label]=\"action.content\"\n (click)=\"action.eventEmitter?.emit({ event: $event, action})\">\n {{ action.content }}\n </button>\n </ng-container>\n </ng-template>\n `,\n animations: [\n trigger('slideIn', [\n transition(':enter', [\n style({ opacity: '0', transform: 'translate({{startX}}, {{startY}})' }),\n animate('300ms ease-out', style({ opacity: '1', transform: 'translate({{endX}}, {{endY}})' })),\n ],\n { params: {\n startX: '0',\n startY: '0',\n endX: '0',\n endY: '0',\n } }),\n ]),\n ],\n standalone: true,\n imports: [\n DAFF_BUTTON_COMPONENTS,\n DaffToastComponent,\n DaffToastActionsDirective,\n DaffToastTitleDirective,\n DaffToastMessageDirective,\n FaIconComponent,\n NgSwitch,\n NgFor,\n NgSwitchCase,\n NgSwitchDefault,\n NgIf,\n SlicePipe,\n NgTemplateOutlet,\n ],\n})\nexport class DaffToastTemplateComponent {\n faTimes = faTimes;\n\n private _items: DaffToast[] = [];\n\n constructor(\n private cd: ChangeDetectorRef,\n @Inject(DAFF_TOAST_OPTIONS)\n private options: DaffToastOptions,\n private toastPosition: DaffToastPositionService,\n ) { }\n\n @Output() closeToast: EventEmitter<void> = new EventEmitter();\n\n onCloseToast(event: Event) {\n this.closeToast.emit();\n }\n\n get slideAnimation(): any {\n switch (this.toastPosition.config.horizontal + '-' + this.toastPosition.config.vertical) {\n case 'left-top':\n case 'left-bottom':\n return {\n value: 0,\n params: {\n startX: '-100%',\n endX: '0',\n startY: '0',\n endY: '0',\n },\n };\n case 'right-top':\n case 'right-bottom':\n return {\n value: 0,\n params: {\n startX: '100%',\n endX: '0',\n startY: '0',\n endY: '0',\n },\n };\n\n case 'center-top':\n return {\n value: 0,\n params: {\n startX: '0',\n endX: '0',\n startY: '-100%',\n endY: '0',\n },\n };\n\n case 'center-bottom':\n return {\n value: 0,\n params: {\n startX: '0',\n endX: '0',\n startY: '100%',\n endY: '0',\n },\n };\n }\n }\n\n @Input()\n get items(): DaffToast[] {\n return this._items;\n }\n set items(value: DaffToast[]) {\n this._items = value;\n this.cd.markForCheck();\n }\n}\n","import { BreakpointObserver } from '@angular/cdk/layout';\nimport {\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n ComponentRef,\n EventEmitter,\n Inject,\n Injectable,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n} from '@angular/core';\nimport {\n EMPTY,\n merge,\n of,\n Subscription,\n} from 'rxjs';\nimport {\n delay,\n filter,\n map,\n take,\n tap,\n} from 'rxjs/operators';\n\nimport {\n DaffBreakpoints,\n DaffFocusStackService,\n} from '@daffodil/design';\n\nimport { daffToastChangesFocus } from './changes-focus';\nimport { createPositionStrategy } from './position-strategy';\nimport { DaffToastPositionService } from './position.service';\nimport {\n DaffToast,\n DaffToastData,\n} from '../interfaces/toast';\nimport {\n DAFF_TOAST_OPTIONS,\n DaffToastOptions,\n} from '../options/daff-toast-options';\nimport {\n daffDefaultToastConfiguration,\n DaffToastConfiguration,\n} from '../toast/toast-config';\nimport { DaffToastTemplateComponent } from '../toast/toast-template.component';\n\n@Injectable()\nexport class DaffToastService implements OnDestroy {\n\n private _sub: Subscription;\n\n private _toasts: DaffToast[] = [];\n\n private _overlayRef?: OverlayRef;\n\n private _template?: ComponentRef<DaffToastTemplateComponent>;\n\n constructor(\n private overlay: Overlay,\n @Inject(DAFF_TOAST_OPTIONS) private options: DaffToastOptions,\n @Optional() @SkipSelf() private _parentToast: DaffToastService,\n private mediaQuery: BreakpointObserver,\n private toastPosition: DaffToastPositionService,\n private focusStack: DaffFocusStackService,\n private injector: Injector,\n ) {\n this._sub = this.mediaQuery.observe(DaffBreakpoints.MOBILE).pipe(\n filter(() => this._overlayRef !== undefined),\n map((position) => createPositionStrategy(this.toastPosition.config)),\n tap((strategy) => this._overlayRef.updatePositionStrategy(strategy)),\n ).subscribe();\n }\n\n ngOnDestroy(): void {\n this._sub.unsubscribe();\n }\n\n private _attachToastTemplate(\n overlayRef: OverlayRef,\n ): ComponentRef<DaffToastTemplateComponent> {\n const template = overlayRef.attach(new ComponentPortal(DaffToastTemplateComponent, null, this.injector));\n return template;\n }\n\n private _createOverlayRef(): OverlayRef {\n return this.overlay.create({\n hasBackdrop: false,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n positionStrategy: createPositionStrategy(this.toastPosition.config),\n });\n }\n\n open(\n toast: DaffToastData,\n configuration?: Partial<DaffToastConfiguration>,\n ): DaffToast {\n if(this._parentToast && this.options.useParent) {\n return this._parentToast.open(toast, configuration);\n }\n\n const config: DaffToastConfiguration = {\n ...daffDefaultToastConfiguration,\n // sets the default duration to 5000ms if a toast does not have actions\n duration: toast.actions?.length > 0 ? undefined : 5000,\n ...configuration,\n };\n if(this._toasts.length === 0) {\n this._overlayRef = this._createOverlayRef();\n this._template = this._attachToastTemplate(this._overlayRef);\n }\n const dismissEvent = new EventEmitter<void>();\n const _toastPlus: DaffToast = {\n dismissible: true,\n ...toast,\n dismiss: () => {\n dismissEvent.emit();\n },\n dismissalStream: merge(\n config.duration ? of(undefined).pipe(delay(config.duration)) : EMPTY,\n dismissEvent,\n ).pipe(\n take(1),\n ),\n };\n\n _toastPlus.dismissalStream.subscribe(() => {\n this.close(_toastPlus);\n });\n\n this._toasts = [\n _toastPlus,\n ...this._toasts,\n ];\n\n this._template.instance.items = this._toasts;\n\n return _toastPlus;\n }\n\n close(toast: DaffToast): void {\n if(this._parentToast && this.options.useParent) {\n this._parentToast.close(toast);\n return;\n }\n\n if(daffToastChangesFocus(toast)) {\n this.focusStack.pop();\n }\n\n const index = this._toasts.indexOf(toast);\n if (index === -1) {\n throw new Error(\n 'The Toast that you are trying to remove does not exist.',\n );\n }\n\n this._toasts = this._toasts.filter(m => m !== toast);\n this._template.instance.items = [...this._toasts];\n\n // This currently overrides the \":leave\" animation as we currently\n // remove the animating element immediately after there are no more toasts,\n // without waiting for the animation to complete.\n if(this._toasts.length === 0) {\n this._overlayRef.dispose();\n this._template.destroy();\n this._overlayRef = undefined;\n this._template = undefined;\n }\n }\n}\n","import { Provider } from '@angular/core';\n\nimport { DaffToastPositionService } from '../service/position.service';\nimport { DaffToastService } from '../service/toast.service';\n\nexport const daffProvideToast = (): Provider[] => [\n DaffToastService,\n DaffToastPositionService,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.DaffToastPositionService","i2","i3","i3.DaffToastPositionService","i4"],"mappings":";;;;;;;;;;;;;;;;;;AAQqE,CAAC;AAEc,CAAC;AAS9E,MAAM,uBAAuB,GAAqB;AACvD,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,UAAU,EAAE,OAAO;AACpB,KAAA;AACD,IAAA,SAAS,EAAE,IAAI;CAChB,CAAC;MAEW,kBAAkB,GAAG,IAAI,cAAc,CAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,uBAAuB,EAAE,EAAE;AAE9H,MAAA,uBAAuB,GAAG,CAAC,OAAyB,MAAqB,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE;AAC7H,QAAA,GAAG,uBAAuB;AAC1B,QAAA,GAAG,OAAO;AACX,KAAA,EAAC;;MCjBW,wBAAwB,CAAA;IAEnC,WAAgD,CAAA,OAAyB,EAAU,UAA8B,EAAA;QAAjE,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QAAU,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;AAC/G,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;KACjC;AAKD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC;AACtD,cAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO;cACX,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;KACrE;IAED,IAAI,MAAM,CAAC,GAAsB,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;KACpB;AAED,IAAA,WAAW,CAAC,QAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;KAC3B;AArBU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAEf,kBAAkB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAF3B,wBAAwB,EAAA,CAAA,CAAA,EAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;0BAGI,MAAM;2BAAC,kBAAkB,CAAA;;;ACfjC,MAAM,qBAAqB,GAAG,CAAC,KAAgB,KAAc,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC;;MCQhF,yBAAyB,CAAA;AALtC,IAAA,WAAA,GAAA;QAO4C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AACxD,KAAA;iIAHY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAI2C,KAAK,EAAA,CAAA;sBAA9C,WAAW;uBAAC,2BAA2B,CAAA;;;ACmB1C;;;AAGG;MAmBU,kBAAkB,CAAA;AAY7B;;AAEG;IAEH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACtB;AAID,IAAA,WAAA,CACU,WAAuB,EACvB,iBAA+C,EAC/C,WAAkC,EAAA;QAFlC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;QACvB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAA8B;QAC/C,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;;QAvBX,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;KAyB7C;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAC7C,IAAI,CAAC,WAAW,CAAC,aAAa,CAC/B,CAAC;SACH;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,kCAAkC,EAAE,CAAC;SACtD;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3B;KACF;iIAhDU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,4BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,mPAIf,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGzB,mBAAmB,EC5DnC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gCAAA,EAAA,EAAA,EAAA,SAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,sZAWA,+lCDuCI,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAGK,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAlB9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAGN,cAAA,EAAA;wBACd,EAAE,SAAS,EAAE,gCAAgC,EAAE;AAC/C,wBAAA;AACE,4BAAA,SAAS,EAAE,uBAAuB;4BAClC,MAAM,EAAE,CAAC,QAAQ,CAAC;AACnB,yBAAA;qBACF,EACc,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA;wBACP,IAAI;AACL,qBAAA,EAAA,QAAA,EAAA,sZAAA,EAAA,MAAA,EAAA,CAAA,uiCAAA,CAAA,EAAA,CAAA;gKAIgC,KAAK,EAAA,CAAA;sBAArC,WAAW;uBAAC,kBAAkB,CAAA;gBAG/B,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,yBAAyB,CAAA;gBAIvC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,mBAAmB,CAAA;gBAGxB,KAAK,EAAA,CAAA;sBAAb,KAAK;gBAMN,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,gBAAgB,CAAA;;;ME1DnB,yBAAyB,CAAA;AALtC,IAAA,WAAA,GAAA;QAO4C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AACxD,KAAA;iIAHY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBALrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAI2C,KAAK,EAAA,CAAA;sBAA9C,WAAW;uBAAC,2BAA2B,CAAA;;;MCF7B,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;QAO0C,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AACtD,KAAA;iIAHY,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;8BAIyC,KAAK,EAAA,CAAA;sBAA5C,WAAW;uBAAC,yBAAyB,CAAA;;;ACGxC;;AAEG;MAyBU,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAtBxB,YAAY;YACZ,sBAAsB;YACtB,gBAAgB;YAChB,iBAAiB;YACjB,YAAY;YACZ,aAAa;YACb,kBAAkB;YAClB,yBAAyB;YACzB,uBAAuB;AACvB,YAAA,yBAAyB,aAGzB,kBAAkB;YAClB,yBAAyB;YACzB,uBAAuB;YACvB,yBAAyB;YACzB,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;AAMb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJf,SAAA,EAAA;YACT,wBAAwB;AACzB,SAAA,EAAA,OAAA,EAAA,CApBC,YAAY;YACZ,sBAAsB;YACtB,gBAAgB;YAChB,iBAAiB;YACjB,YAAY;AACZ,YAAA,aAAa,EAWb,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAMb,eAAe,EAAA,UAAA,EAAA,CAAA;kBAxB3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,sBAAsB;wBACtB,gBAAgB;wBAChB,iBAAiB;wBACjB,YAAY;wBACZ,aAAa;wBACb,kBAAkB;wBAClB,yBAAyB;wBACzB,uBAAuB;wBACvB,yBAAyB;AAC1B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,kBAAkB;wBAClB,yBAAyB;wBACzB,uBAAuB;wBACvB,yBAAyB;wBACzB,sBAAsB;AACvB,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,wBAAwB;AACzB,qBAAA;AACF,iBAAA,CAAA;;;AClCM,MAAM,sBAAsB,GAAG,CAAC,QAA2B,KAAsB;AACtF,IAAA,MAAM,KAAK,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAE3C,IAAA,QAAS,QAAQ,CAAC,UAAU;AAC1B,QAAA,KAAK,MAAM;AACT,YAAA,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,MAAM;AACR,QAAA,KAAK,OAAO;AACV,YAAA,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM;AACR,QAAA,KAAK,QAAQ;YACX,KAAK,CAAC,kBAAkB,EAAE,CAAC;YAC3B,MAAM;AACR,QAAA;AACE,YAAA,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;KACvB;AAED,IAAA,QAAO,QAAQ,CAAC,QAAQ;AACtB,QAAA,KAAK,KAAK;AACR,YAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAClB,MAAM;AACR,QAAA,KAAK,QAAQ;AACX,YAAA,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM;AACR,QAAA;AACE,YAAA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACrB;AAED,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;;AC7BM,MAAM,6BAA6B,GAA2B,EAAE;;MCyI1D,0BAA0B,CAAA;AAKrC,IAAA,WAAA,CACU,EAAqB,EAErB,OAAyB,EACzB,aAAuC,EAAA;QAHvC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAmB;QAErB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QACzB,IAAa,CAAA,aAAA,GAAb,aAAa,CAA0B;QARjD,IAAO,CAAA,OAAA,GAAG,OAAO,CAAC;QAEV,IAAM,CAAA,MAAA,GAAgB,EAAE,CAAC;AASvB,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAE,CAAC;KAFzD;AAIL,IAAA,YAAY,CAAC,KAAY,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,QAAQ,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ;AACrF,YAAA,KAAK,UAAU,CAAC;AAChB,YAAA,KAAK,aAAa;gBAChB,OAAO;AACL,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE;AACN,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,IAAI,EAAE,GAAG;AACT,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,IAAI,EAAE,GAAG;AACV,qBAAA;iBACF,CAAC;AACJ,YAAA,KAAK,WAAW,CAAC;AACjB,YAAA,KAAK,cAAc;gBACjB,OAAO;AACL,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE;AACN,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,IAAI,EAAE,GAAG;AACT,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,IAAI,EAAE,GAAG;AACV,qBAAA;iBACF,CAAC;AAEJ,YAAA,KAAK,YAAY;gBACf,OAAO;AACL,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE;AACN,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,IAAI,EAAE,GAAG;AACT,wBAAA,MAAM,EAAE,OAAO;AACf,wBAAA,IAAI,EAAE,GAAG;AACV,qBAAA;iBACF,CAAC;AAEJ,YAAA,KAAK,eAAe;gBAClB,OAAO;AACL,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,MAAM,EAAE;AACN,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,IAAI,EAAE,GAAG;AACT,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,IAAI,EAAE,GAAG;AACV,qBAAA;iBACF,CAAC;SACL;KACF;AAED,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAkB,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;KACxB;AA1EU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,mDAO3B,kBAAkB,EAAA,EAAA,EAAA,KAAA,EAAAC,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAPjB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAtG3B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsET,EAkBC,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,yRAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,0EAClB,yBAAyB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,uBAAuB,EACvB,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,yBAAyB,EACzB,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,eAAe,EACf,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAQ,6EACR,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACZ,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,SAAS,EACT,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EA5BN,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACV,OAAO,CAAC,SAAS,EAAE;gBACjB,UAAU,CAAC,QAAQ,EAAE;oBACnB,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,mCAAmC,EAAE,CAAC;AACvE,oBAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,+BAA+B,EAAE,CAAC,CAAC;iBAC/F,EACD,EAAE,MAAM,EAAE;AACR,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,MAAM,EAAE,GAAG;AACX,wBAAA,IAAI,EAAE,GAAG;AACT,wBAAA,IAAI,EAAE,GAAG;AACV,qBAAA,EAAE,CAAC;aACL,CAAC;AACH,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAkBU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAxGtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsET,EAAA,CAAA;AACD,oBAAA,UAAU,EAAE;wBACV,OAAO,CAAC,SAAS,EAAE;4BACjB,UAAU,CAAC,QAAQ,EAAE;gCACnB,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,mCAAmC,EAAE,CAAC;AACvE,gCAAA,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,+BAA+B,EAAE,CAAC,CAAC;6BAC/F,EACD,EAAE,MAAM,EAAE;AACR,oCAAA,MAAM,EAAE,GAAG;AACX,oCAAA,MAAM,EAAE,GAAG;AACX,oCAAA,IAAI,EAAE,GAAG;AACT,oCAAA,IAAI,EAAE,GAAG;AACV,iCAAA,EAAE,CAAC;yBACL,CAAC;AACH,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE;wBACP,sBAAsB;wBACtB,kBAAkB;wBAClB,yBAAyB;wBACzB,uBAAuB;wBACvB,yBAAyB;wBACzB,eAAe;wBACf,QAAQ;wBACR,KAAK;wBACL,YAAY;wBACZ,eAAe;wBACf,IAAI;wBACJ,SAAS;wBACT,gBAAgB;AACjB,qBAAA;AACF,iBAAA,CAAA;;0BAQI,MAAM;2BAAC,kBAAkB,CAAA;6EAKlB,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBAwDH,KAAK,EAAA,CAAA;sBADR,KAAK;;;MC9JK,gBAAgB,CAAA;AAU3B,IAAA,WAAA,CACU,OAAgB,EACY,OAAyB,EAC7B,YAA8B,EACtD,UAA8B,EAC9B,aAAuC,EACvC,UAAiC,EACjC,QAAkB,EAAA;QANlB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QACY,IAAO,CAAA,OAAA,GAAP,OAAO,CAAkB;QAC7B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAkB;QACtD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAoB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAA0B;QACvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAuB;QACjC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAbpB,IAAO,CAAA,OAAA,GAAgB,EAAE,CAAC;AAehC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,CAC9D,MAAM,CAAC,MAAM,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,EAC5C,GAAG,CAAC,CAAC,QAAQ,KAAK,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EACpE,GAAG,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CACrE,CAAC,SAAS,EAAE,CAAC;KACf;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KACzB;AAEO,IAAA,oBAAoB,CAC1B,UAAsB,EAAA;AAEtB,QAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAAC,0BAA0B,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzG,QAAA,OAAO,QAAQ,CAAC;KACjB;IAEO,iBAAiB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;AACzB,YAAA,WAAW,EAAE,KAAK;YAClB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE;YACpD,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AACpE,SAAA,CAAC,CAAC;KACJ;IAED,IAAI,CACF,KAAoB,EACpB,aAA+C,EAAA;QAE/C,IAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC9C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SACrD;AAED,QAAA,MAAM,MAAM,GAA2B;AACrC,YAAA,GAAG,6BAA6B;;AAEhC,YAAA,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI;AACtD,YAAA,GAAG,aAAa;SACjB,CAAC;QACF,IAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC9D;AACD,QAAA,MAAM,YAAY,GAAG,IAAI,YAAY,EAAQ,CAAC;AAC9C,QAAA,MAAM,UAAU,GAAc;AAC5B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,GAAG,KAAK;YACR,OAAO,EAAE,MAAK;gBACZ,YAAY,CAAC,IAAI,EAAE,CAAC;aACrB;AACD,YAAA,eAAe,EAAE,KAAK,CACpB,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,EACpE,YAAY,CACb,CAAC,IAAI,CACJ,IAAI,CAAC,CAAC,CAAC,CACR;SACF,CAAC;AAEF,QAAA,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC,MAAK;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AACzB,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG;YACb,UAAU;YACV,GAAG,IAAI,CAAC,OAAO;SAChB,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;AAE7C,QAAA,OAAO,UAAU,CAAC;KACnB;AAED,IAAA,KAAK,CAAC,KAAgB,EAAA;QACpB,IAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC9C,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC/B,OAAO;SACR;AAED,QAAA,IAAG,qBAAqB,CAAC,KAAK,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;SACvB;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;SACH;AAED,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;;;;QAKlD,IAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;AACzB,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC5B;KACF;AAzHU,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,2CAYjB,kBAAkB,EAAA,EAAA,EAAA,KAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;qIAZjB,gBAAgB,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;0BAaN,MAAM;2BAAC,kBAAkB,CAAA;;0BACzB,QAAQ;;0BAAI,QAAQ;;;AC7DZ,MAAA,gBAAgB,GAAG,MAAkB;IAChD,gBAAgB;IAChB,wBAAwB;;;ACP1B;;AAEG;;;;"}
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
3
3
|
import { RouterLink } from '@angular/router';
|
4
4
|
import * as i1 from '@daffodil/design/tree';
|
5
|
-
import { DaffTreeModule } from '@daffodil/design/tree';
|
5
|
+
import { DAFF_TREE_COMPONENTS, DaffTreeModule } from '@daffodil/design/tree';
|
6
6
|
|
7
7
|
class BasicTreeComponent {
|
8
8
|
constructor() {
|
@@ -32,11 +32,14 @@ class BasicTreeComponent {
|
|
32
32
|
};
|
33
33
|
}
|
34
34
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BasicTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
35
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: BasicTreeComponent, isStandalone: true, selector: "basic-tree", ngImport: i0, template: "<ul daff-tree [tree]=\"tree\">\n\t<ng-template #daffTreeItemWithChildrenTpl let-node>\n\t\t\t<button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n\t</ng-template>\n\t\n\t<ng-template #daffTreeItemTpl let-node>\n\t\t\t<a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n\t</ng-template>\n</ul>\n\n", dependencies: [{ kind: "
|
35
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: BasicTreeComponent, isStandalone: true, selector: "basic-tree", ngImport: i0, template: "<ul daff-tree [tree]=\"tree\">\n\t<ng-template #daffTreeItemWithChildrenTpl let-node>\n\t\t\t<button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n\t</ng-template>\n\t\n\t<ng-template #daffTreeItemTpl let-node>\n\t\t\t<a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n\t</ng-template>\n</ul>\n\n", dependencies: [{ kind: "component", type: i1.DaffTreeComponent, selector: "ul[daff-tree]", inputs: ["renderMode", "tree"] }, { kind: "directive", type: i1.DaffTreeItemDirective, selector: "[daffTreeItem]", inputs: ["node", "selected"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
36
36
|
}
|
37
37
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: BasicTreeComponent, decorators: [{
|
38
38
|
type: Component,
|
39
|
-
args: [{ selector: 'basic-tree', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
39
|
+
args: [{ selector: 'basic-tree', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
40
|
+
DAFF_TREE_COMPONENTS,
|
41
|
+
RouterLink,
|
42
|
+
], template: "<ul daff-tree [tree]=\"tree\">\n\t<ng-template #daffTreeItemWithChildrenTpl let-node>\n\t\t\t<button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n\t</ng-template>\n\t\n\t<ng-template #daffTreeItemTpl let-node>\n\t\t\t<a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n\t</ng-template>\n</ul>\n\n" }]
|
40
43
|
}] });
|
41
44
|
|
42
45
|
class DeepTreeComponent {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-design-tree-examples.mjs","sources":["../../../libs/design/tree/examples/src/basic-tree/basic-tree.component.ts","../../../libs/design/tree/examples/src/basic-tree/basic-tree.component.html","../../../libs/design/tree/examples/src/deep-tree/deep-tree.component.ts","../../../libs/design/tree/examples/src/deep-tree/deep-tree.component.html","../../../libs/design/tree/examples/src/public_api.ts","../../../libs/design/tree/examples/src/daffodil-design-tree-examples.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport {\n DaffTreeData,\n
|
1
|
+
{"version":3,"file":"daffodil-design-tree-examples.mjs","sources":["../../../libs/design/tree/examples/src/basic-tree/basic-tree.component.ts","../../../libs/design/tree/examples/src/basic-tree/basic-tree.component.html","../../../libs/design/tree/examples/src/deep-tree/deep-tree.component.ts","../../../libs/design/tree/examples/src/deep-tree/deep-tree.component.html","../../../libs/design/tree/examples/src/public_api.ts","../../../libs/design/tree/examples/src/daffodil-design-tree-examples.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport {\n DaffTreeData,\n DAFF_TREE_COMPONENTS,\n} from '@daffodil/design/tree';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'basic-tree',\n templateUrl: './basic-tree.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n DAFF_TREE_COMPONENTS,\n RouterLink,\n ],\n})\nexport class BasicTreeComponent {\n tree: DaffTreeData<unknown> = {\n title: 'Root',\n items: [\n {\n title: 'Example Children',\n items: [\n { title: 'Example Child', url: '#', id: '', items: [], data: {}},\n ],\n url: '#',\n id: '',\n data: {},\n },\n {\n title: 'Example Link',\n items: [],\n url: '#',\n id: '',\n data: {},\n },\n ],\n url: '',\n id: '',\n data: {},\n };\n}\n","<ul daff-tree [tree]=\"tree\">\n\t<ng-template #daffTreeItemWithChildrenTpl let-node>\n\t\t\t<button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n\t</ng-template>\n\t\n\t<ng-template #daffTreeItemTpl let-node>\n\t\t\t<a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n\t</ng-template>\n</ul>\n\n","import {\n ChangeDetectionStrategy,\n Component,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport {\n DaffTreeData,\n DaffTreeModule,\n} from '@daffodil/design/tree';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'deep-tree',\n templateUrl: './deep-tree.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [DaffTreeModule, RouterLink],\n})\nexport class DeepTreeComponent {\n tree: DaffTreeData<unknown> = {\n title: 'Root',\n items: [\n {\n title: 'Example Children',\n items: [\n {\n title: 'Example Child',\n url: '#',\n id: '',\n items: [\n {\n title: 'Nested Child',\n url: '#',\n id: '',\n items: [],\n data: {},\n },\n ],\n data: {},\n },\n ],\n url: '#',\n id: '',\n data: {},\n },\n {\n title: 'Example Link',\n items: [],\n url: '#',\n id: '',\n data: {},\n },\n ],\n url: '',\n id: '',\n data: {},\n };\n}\n","<ul daff-tree [tree]=\"tree\">\n\t<ng-template #daffTreeItemWithChildrenTpl let-node>\n\t\t\t<button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n\t</ng-template>\n\t\n\t<ng-template #daffTreeItemTpl let-node>\n\t\t\t<a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n\t</ng-template>\n</ul>\n\n","import { BasicTreeComponent } from './basic-tree/basic-tree.component';\nimport { DeepTreeComponent } from './deep-tree/deep-tree.component';\n\nexport {\n BasicTreeComponent,\n DeepTreeComponent,\n};\n\nexport const TREE_EXAMPLES = [\n BasicTreeComponent,\n DeepTreeComponent,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import
|
2
|
-
import { DOCUMENT, CommonModule } from '@angular/common';
|
1
|
+
import { NgFor, NgTemplateOutlet, DOCUMENT, CommonModule } from '@angular/common';
|
3
2
|
import * as i0 from '@angular/core';
|
4
3
|
import { Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, Input, ContentChild, Directive, HostListener, NgModule } from '@angular/core';
|
5
4
|
import * as i2 from '@daffodil/design';
|
@@ -230,9 +229,9 @@ class DaffTreeComponent {
|
|
230
229
|
});
|
231
230
|
}
|
232
231
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeComponent, deps: [{ token: DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Component }); }
|
233
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: DaffTreeComponent, selector: "ul[daff-tree]", inputs: { renderMode: "renderMode", tree: "tree" }, host: { properties: { "class.daff-tree": "this.class" } }, providers: [
|
232
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: DaffTreeComponent, isStandalone: true, selector: "ul[daff-tree]", inputs: { renderMode: "renderMode", tree: "tree" }, host: { properties: { "class.daff-tree": "this.class" } }, providers: [
|
234
233
|
DaffTreeNotifierService,
|
235
|
-
], queries: [{ propertyName: "withChildrenTemplate", first: true, predicate: ["daffTreeItemWithChildrenTpl"], descendants: true, static: true }, { propertyName: "treeItemTemplate", first: true, predicate: ["daffTreeItemTpl"], descendants: true, static: true }], usesOnChanges: true, hostDirectives: [{ directive: i2.DaffArticleEncapsulatedDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 1rem}.daff-tree li.hidden{display:none}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:.5rem 1rem .5rem 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:.25rem}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item.parent{position:relative;padding-right:2.5rem}.daff-tree-item.parent:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item.parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"], dependencies: [{ kind: "directive", type:
|
234
|
+
], queries: [{ propertyName: "withChildrenTemplate", first: true, predicate: ["daffTreeItemWithChildrenTpl"], descendants: true, static: true }, { propertyName: "treeItemTemplate", first: true, predicate: ["daffTreeItemTpl"], descendants: true, static: true }], usesOnChanges: true, hostDirectives: [{ directive: i2.DaffArticleEncapsulatedDirective }], ngImport: i0, template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 1rem}.daff-tree li.hidden{display:none}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:.5rem 1rem .5rem 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:.25rem}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item.parent{position:relative;padding-right:2.5rem}.daff-tree-item.parent:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item.parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
236
235
|
}
|
237
236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeComponent, decorators: [{
|
238
237
|
type: Component,
|
@@ -240,7 +239,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
240
239
|
DaffTreeNotifierService,
|
241
240
|
], hostDirectives: [{
|
242
241
|
directive: DaffArticleEncapsulatedDirective,
|
243
|
-
}],
|
242
|
+
}], standalone: true, imports: [
|
243
|
+
NgFor,
|
244
|
+
NgTemplateOutlet,
|
245
|
+
], template: "<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>", styles: [".daff-tree{margin:0;padding:0;list-style:none;--tree-padding: 1rem}.daff-tree li.hidden{display:none}.daff-tree-item{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;position:relative;background:none;border:0;padding:.5rem 1rem .5rem 0;line-height:1.5rem;font-weight:400;text-align:left;text-decoration:none;width:100%;padding-left:calc(var(--tree-padding) * (var(--depth)))}.daff-tree-item:before{content:\"\";position:absolute;top:0;bottom:0;left:0;width:.25rem}.daff-tree-item:focus,.daff-tree-item:focus-visible{z-index:1}.daff-tree-item.selected{font-weight:600}.daff-tree-item.parent{position:relative;padding-right:2.5rem}.daff-tree-item.parent:after{content:\"\";position:absolute;top:48%;right:1rem;display:inline-block;border-right:2px solid currentColor;border-bottom:2px solid currentColor;width:.5rem;height:.5rem;transform:translateY(-50%) rotate(45deg);transition:transform .15s}.daff-tree-item.parent.open:after{top:56%;transform:translateY(-50%) rotate(225deg)}\n"] }]
|
244
246
|
}], ctorParameters: () => [{ type: DaffTreeNotifierService }], propDecorators: { class: [{
|
245
247
|
type: HostBinding,
|
246
248
|
args: ['class.daff-tree']
|
@@ -364,12 +366,13 @@ class DaffTreeItemDirective {
|
|
364
366
|
}
|
365
367
|
}
|
366
368
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeItemDirective, deps: [{ token: DOCUMENT }, { token: DaffTreeNotifierService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
367
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: DaffTreeItemDirective, selector: "[daffTreeItem]", inputs: { node: "node", selected: "selected" }, host: { listeners: { "keydown.escape": "onEscape()", "click": "onClick()" }, properties: { "class.daff-tree-item": "this.class", "class.parent": "this.classParent", "attr.id": "this.id", "attr.aria-expanded": "this.ariaExpanded", "style.--depth": "this.depth", "class.selected": "this.selectedClass", "class.open": "this.openClass" } }, ngImport: i0 }); }
|
369
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.2", type: DaffTreeItemDirective, isStandalone: true, selector: "[daffTreeItem]", inputs: { node: "node", selected: "selected" }, host: { listeners: { "keydown.escape": "onEscape()", "click": "onClick()" }, properties: { "class.daff-tree-item": "this.class", "class.parent": "this.classParent", "attr.id": "this.id", "attr.aria-expanded": "this.ariaExpanded", "style.--depth": "this.depth", "class.selected": "this.selectedClass", "class.open": "this.openClass" } }, ngImport: i0 }); }
|
368
370
|
}
|
369
371
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeItemDirective, decorators: [{
|
370
372
|
type: Directive,
|
371
373
|
args: [{
|
372
374
|
selector: '[daffTreeItem]',
|
375
|
+
standalone: true,
|
373
376
|
}]
|
374
377
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
375
378
|
type: Inject,
|
@@ -407,22 +410,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
407
410
|
args: ['click']
|
408
411
|
}] } });
|
409
412
|
|
413
|
+
/**
|
414
|
+
* @deprecated in favor of {@link DAFF_TREE_COMPONENTS}
|
415
|
+
*/
|
410
416
|
class DaffTreeModule {
|
411
417
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
412
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeModule,
|
413
|
-
|
418
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeModule, imports: [CommonModule,
|
419
|
+
DaffTreeComponent,
|
420
|
+
DaffTreeItemDirective], exports: [DaffTreeComponent,
|
414
421
|
DaffTreeItemDirective] }); }
|
415
422
|
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeModule, imports: [CommonModule] }); }
|
416
423
|
}
|
417
424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: DaffTreeModule, decorators: [{
|
418
425
|
type: NgModule,
|
419
426
|
args: [{
|
420
|
-
declarations: [
|
421
|
-
DaffTreeComponent,
|
422
|
-
DaffTreeItemDirective,
|
423
|
-
],
|
424
427
|
imports: [
|
425
428
|
CommonModule,
|
429
|
+
DaffTreeComponent,
|
430
|
+
DaffTreeItemDirective,
|
426
431
|
],
|
427
432
|
exports: [
|
428
433
|
DaffTreeComponent,
|
@@ -431,28 +436,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImpor
|
|
431
436
|
}]
|
432
437
|
}] });
|
433
438
|
|
434
|
-
/**
|
435
|
-
* Transform a tree-like structure in-place into a {@link DaffTreeData}.
|
436
|
-
*
|
437
|
-
* This will mutate the original object, hydrating with additional properties.
|
438
|
-
*
|
439
|
-
* @param tree - The data structure representing tree-like data.
|
440
|
-
* @param transformFn - A user-supplied function that will transform the user
|
441
|
-
* type into a {@link DaffTreeData}
|
442
|
-
* @param key - The property of the your tree that indicates which
|
443
|
-
* key contains the "children" of your tree structure.
|
444
|
-
*
|
445
|
-
*/
|
446
|
-
const daffTransformTreeInPlace = (tree, transformFn, key) => traverse(tree, (el) => {
|
447
|
-
const r = Object.assign(el, transformFn(el));
|
448
|
-
r.items = el[key];
|
449
|
-
el = r;
|
450
|
-
return el;
|
451
|
-
},
|
452
|
-
// This type is confusing. I don't understand why it has to be here,
|
453
|
-
// the associated error message is incomprehensible.
|
454
|
-
key);
|
455
|
-
|
456
439
|
/**
|
457
440
|
* Transform a tree-like structure into a {@link DaffTreeData}.
|
458
441
|
*
|
@@ -478,9 +461,14 @@ const daffTransformTree = (tree, transformFn, key) => {
|
|
478
461
|
return transformedTree;
|
479
462
|
};
|
480
463
|
|
464
|
+
const DAFF_TREE_COMPONENTS = [
|
465
|
+
DaffTreeComponent,
|
466
|
+
DaffTreeItemDirective,
|
467
|
+
];
|
468
|
+
|
481
469
|
/**
|
482
470
|
* Generated bundle index. Do not edit.
|
483
471
|
*/
|
484
472
|
|
485
|
-
export { DaffTreeComponent, DaffTreeItemDirective, DaffTreeModule, daffTransformTree
|
473
|
+
export { DAFF_TREE_COMPONENTS, DaffTreeComponent, DaffTreeItemDirective, DaffTreeModule, daffTransformTree };
|
486
474
|
//# sourceMappingURL=daffodil-design-tree.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"daffodil-design-tree.mjs","sources":["../../../libs/design/tree/src/tree/tree-notifier.service.ts","../../../libs/design/tree/src/utils/flatten-tree.ts","../../../libs/design/tree/src/utils/traverse-tree.ts","../../../libs/design/tree/src/utils/hydrate-tree.ts","../../../libs/design/tree/src/tree/tree.component.ts","../../../libs/design/tree/src/tree/tree.component.html","../../../libs/design/tree/src/tree-item/tree-item.directive.ts","../../../libs/design/tree/src/tree.module.ts","../../../libs/design/tree/src/utils/transform-in-place.ts","../../../libs/design/tree/src/utils/transform.ts","../../../libs/design/tree/src/daffodil-design-tree.ts"],"sourcesContent":["import {\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * This service is used by tree-items to notify their parent\n * that the tree has to be re-computed.\n *\n * This service is a multiton associated with each tree instance.\n * It follows the same lifecycle has the tree it is associated with.\n */\n@Inject({})\nexport class DaffTreeNotifierService implements OnDestroy {\n\n /**\n * @docs-private\n */\n private _notice: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n /**\n * An observable that emits when the tree needs to be re-computed.\n */\n notice$ = this._notice.asObservable();\n\n /**\n * `notify` can be called to trigger a re-computation of the tree\n * if data has changed unexpectedly and a re-render did not occur.\n *\n * This should be used sparingly. Instead, prefer updating `data` on the tree\n * itself for performance reasons.\n */\n notify() {\n this._notice.next(true);\n }\n\n /**\n * Cleanup when the tree is destroyed.\n *\n * @docs-private\n */\n ngOnDestroy(): void {\n this._notice.complete();\n }\n}\n","import { collect } from '@daffodil/core';\n\nimport { DaffTreeUi } from '../interfaces/tree-ui';\n\n/**\n * A flattened node of a tree. This is used when translating the tree data\n * structure into an array.\n */\nexport interface DaffTreeFlatNode {\n id: number | string;\n title: string;\n url: string;\n level: number;\n hasChildren: boolean;\n data: unknown;\n visible: boolean;\n _treeRef: DaffTreeUi<unknown>;\n}\n\n/**\n * Flatten a DaffTreeUi<unknown> into an array, removing elements from the array\n * below nodes in the tree that are not open.\n */\nexport const flattenTree = (daffUiTree: DaffTreeUi<unknown>, removeNodes: boolean = false): DaffTreeFlatNode[] => {\n const tree: DaffTreeFlatNode[] = [];\n if(!daffUiTree) {\n return [];\n }\n\n let items = [\n {\n ...daffUiTree,\n level: 0,\n data: undefined,\n open: true,\n _treeRef: daffUiTree,\n },\n ];\n\n\n while(items) {\n const el = items.pop();\n if(!el) {\n break;\n }\n\n items = [\n ...items,\n ...el.items.map((i) => ({\n ...i,\n level:\n el.level + 1,\n _treeRef: i,\n })).reverse(),\n ];\n\n const hasClosedAncestor = el._treeRef.parent\n ? collect(el._treeRef.parent, (node) => node.parent ? [node.parent] : [], el.level).reduce(\n (acc, parent) => acc || !parent.open,\n false,\n )\n : false;\n\n if(!removeNodes && el._treeRef.parent) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: !hasClosedAncestor,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n } else if(removeNodes && el._treeRef.parent?.open) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: !hasClosedAncestor,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n }\n }\n\n return tree;\n};\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\n\n/**\n * Traverse the tree, pre-order, right-to-left\n */\nexport const traverse = <T extends Record<any, any>, V extends Record<any, any> = T>(\n tree: T,\n visit: (tree: T) => V,\n key: RecursiveTreeKeyOfType<T>,\n): V => {\n let stack = [\n tree,\n ];\n\n while(stack) {\n const el = stack.pop();\n if(!el) {\n break;\n }\n\n visit(el);\n\n stack = [\n ...stack,\n ...<T[]><unknown>el[key],\n ];\n }\n\n return tree;\n};\n","import { traverse } from './traverse-tree';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\n\nexport const daffDataTreeToUiTree = <T>(data: DaffTreeData<T>, parent: DaffTreeUi<T>, open: boolean = false): DaffTreeUi<T> => ({\n id: data.id ?? data.title,\n title: data.title,\n url: data.url,\n data: data.data,\n open,\n parent,\n items: [],\n});\n\n/**\n * This function translates the original data given to us by the client\n * to the internal representation of the tree used by the {@link DaffTreeComponent}\n */\nexport const hydrateTree = <T>(data: DaffTreeData<T>): DaffTreeUi<T> => {\n const tree = daffDataTreeToUiTree(data, undefined, true);\n\n let treeStack = [\n tree,\n ];\n\n traverse(data, (el) => {\n const treeEl = treeStack.pop();\n treeEl.items = el.items.map((i) => daffDataTreeToUiTree(i, treeEl, false));\n treeStack = [\n ...treeStack,\n ...treeEl.items,\n ];\n return el;\n }, 'items');\n\n return tree;\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\n\nimport { DaffTreeNotifierService } from './tree-notifier.service';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeRenderMode } from '../interfaces/tree-render-mode';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\nimport {\n DaffTreeFlatNode,\n flattenTree,\n} from '../utils/flatten-tree';\nimport { hydrateTree } from '../utils/hydrate-tree';\n\n/**\n * The `DaffTreeComponent` allows you to render tree structures as interactable ui.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData}.\n *\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[daff-tree]',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DaffTreeNotifierService,\n ],\n hostDirectives: [{\n directive: DaffArticleEncapsulatedDirective,\n }],\n})\nexport class DaffTreeComponent implements OnInit, OnChanges {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree') class = true;\n\n /**\n * The rendering mode for nodes in the tree.\n *\n * Default value is 'in-dom', which means nodes are present in the DOM.\n *\n * Generally, `not-in-dom` is faster as there are less DOM elements to render,\n * but there may be use-cases (like SEO) where having the tree in the DOM\n * is relevant.\n */\n @Input() renderMode: DaffTreeRenderMode;\n\n /**\n * The internal tree element.\n */\n private _tree: DaffTreeUi<unknown> = undefined;\n\n /**\n * The flattened tree data. You can iterate through this if you want to inspect\n * the resulting array structure we computed to render the tree.\n */\n public flatTree: DaffTreeFlatNode[] = [];\n\n /**\n * The tree data you would like to render.\n */\n @Input() tree: DaffTreeData<unknown>;\n\n /**\n * The template used to render tree-nodes that themselves have children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemWithChildrenTpl', { static: true })\n withChildrenTemplate: TemplateRef<any>;\n\n /**\n * The template used to render tree-nodes that have no children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemTpl', { static: true }) treeItemTemplate: TemplateRef<any>;\n\n constructor(private notifier: DaffTreeNotifierService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if(!changes.tree.currentValue) {\n this._tree = undefined;\n this.flatTree = [];\n return;\n }\n\n if(changes.renderMode && !changes.tree) {\n this.flatTree = flattenTree(this._tree, changes.renderMode.currentValue === 'not-in-dom');\n } else if(changes.renderMode || changes.tree) {\n this._tree = hydrateTree(changes.tree?.currentValue ?? this.tree);\n this.flatTree = flattenTree(this._tree, (changes.renderMode?.currentValue ?? this.renderMode) === 'not-in-dom');\n }\n }\n\n /**\n * The track-by function used to reduce tree-item re-renders\n */\n trackByTreeElement(index: number, el: any): any {\n return el.title;\n }\n\n /**\n * @docs-private\n */\n ngOnInit(): void {\n this.notifier.notice$.subscribe(() => {\n this.flatTree = flattenTree(this._tree, this.renderMode === 'not-in-dom');\n });\n }\n}\n","<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>","import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n HostBinding,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\n\nimport { DaffTreeNotifierService } from '../tree/tree-notifier.service';\nimport { DaffTreeFlatNode } from '../utils/flatten-tree';\n\n/**\n * The `DaffTreeItemDirective` allows you to demarcate the elements which are\n * tree-children that interact with the parent tree.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData} and `daff-tree` is a {@link DaffTreeComponent}.\n *\n */\n@Directive({\n selector: '[daffTreeItem]',\n})\nexport class DaffTreeItemDirective {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree-item') class = true;\n\n /**\n * The css class of a DaffTreeItemDirective that has children.\n *\n * @docs-private\n */\n @HostBinding('class.parent') classParent = false;\n\n /**\n * The html `id` of the tree item. This is derived from the {@link DaffTreeData}.\n *\n * @docs-private\n */\n @HostBinding('attr.id') id;\n\n /**\n * Accessibility property, notifying users about whether\n * or not the tree item is open.\n *\n * @docs-private\n */\n @HostBinding('attr.aria-expanded') ariaExpanded: string;\n\n /**\n * A css variable indicating the depth of the tree.\n * You can use this to style your templates if you want to\n * use different designs at different depths.\n */\n @HostBinding('style.--depth') depth: number;\n\n /**\n * The CSS class indicating whether or not the tree is `selected`.\n */\n @HostBinding('class.selected') get selectedClass() {\n return this.selected;\n };\n\n /**\n * The CSS class indicating whether or not the tree is `open`.\n */\n @HostBinding('class.open') openClass = false;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n *\n * @docs-private\n */\n private _node: DaffTreeFlatNode;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n */\n @Input()\n get node() {\n return this._node;\n };\n set node(val: DaffTreeFlatNode) {\n this._node = val;\n this.id = 'tree-' + this._node.id;\n this.depth = this._node.level;\n this.classParent = this._node.hasChildren;\n this.openClass = this._node._treeRef.open;\n\n if(this._node.hasChildren) {\n this.ariaExpanded = this._node._treeRef.open ? 'true' : 'false';\n }\n }\n\n /**\n * Whether or not the tree item is the currently active item.\n * Note that there is no requirement there there only be one active item at a time.\n */\n @Input() selected = false;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private treeNotifier: DaffTreeNotifierService,\n ) {}\n\n /**\n * @docs-private\n */\n @HostListener('keydown.escape')\n onEscape() {\n this.toggleParent(this.node);\n }\n\n /**\n * @docs-private\n */\n @HostListener('click')\n onClick() {\n if(this.node.hasChildren) {\n this.toggleTree(this.node);\n }\n this.treeNotifier.notify();\n }\n\n /**\n * Toggle the open state of the tree's parent.\n */\n toggleParent(node: DaffTreeFlatNode) {\n if(node._treeRef?.parent.parent === undefined) {\n return;\n }\n node._treeRef.parent.open = !node._treeRef.parent.open;\n (<Document>this.document).getElementById('tree-' + node._treeRef.parent.id).focus();\n }\n\n /**\n * Toggle the open state of this specific subtree tree.\n */\n toggleTree(node: DaffTreeFlatNode) {\n if(node._treeRef.open === false) {\n node._treeRef.open = true;\n } else {\n node._treeRef.open = false;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffTreeComponent } from './tree/tree.component';\nimport { DaffTreeItemDirective } from './tree-item/tree-item.directive';\n\n@NgModule({\n declarations: [\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n})\nexport class DaffTreeModule { }\n","import { traverse } from './traverse-tree';\nimport { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\nimport { DaffTreeData } from '../interfaces/tree-data';\n\n/**\n * Transform a tree-like structure in-place into a {@link DaffTreeData}.\n *\n * This will mutate the original object, hydrating with additional properties.\n *\n * @param tree - The data structure representing tree-like data.\n * @param transformFn - A user-supplied function that will transform the user\n * type into a {@link DaffTreeData}\n * @param key - The property of the your tree that indicates which\n * key contains the \"children\" of your tree structure.\n *\n */\nexport const daffTransformTreeInPlace = <\n // eslint-disable-next-line @typescript-eslint/no-restricted-types\n T extends Record<any,any>,\n>(\n tree: T,\n transformFn: (type: T) => T & DaffTreeData<unknown>,\n key: RecursiveTreeKeyOfType<T>,\n): DaffTreeData<unknown> => traverse<T, T & DaffTreeData<unknown>>(\n tree,\n (el) => {\n const r = Object.assign(el, transformFn(el));\n r.items = el[key];\n el = r;\n return <T & DaffTreeData<unknown>>el;\n },\n // This type is confusing. I don't understand why it has to be here,\n // the associated error message is incomprehensible.\n <T[string] extends T[] ? string : never>key,\n);\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\nimport { DaffTreeData } from '../interfaces/tree-data';\n\n/**\n * Transform a tree-like structure into a {@link DaffTreeData}.\n *\n * @param tree - The data structure representing tree-like data.\n * @param transformFn - A user-supplied function that will transform the user\n * type into a {@link DaffTreeData}\n * @param key - The property of the your tree that indicates which\n * key contains the \"children\" of your tree structure.\n *\n */\nexport const daffTransformTree = <\n // eslint-disable-next-line @typescript-eslint/no-restricted-types\n T extends Record<any,any>,\n V\n>(\n tree: T,\n transformFn: (type: T) => DaffTreeData<V>,\n key: RecursiveTreeKeyOfType<T>,\n): DaffTreeData<V> => {\n\n const transformedTree: DaffTreeData<V> = transformFn(tree);\n\n const queue: { node: T; parent: DaffTreeData<V> }[] = [{ node: tree, parent: transformedTree }];\n\n while (queue.length > 0) {\n const { node, parent } = queue.shift();\n\n const childItems = node[key];\n for (const child of <T[]>childItems) {\n const transformedChild: DaffTreeData<V> = transformFn(child);\n parent.items.push(transformedChild);\n queue.push({ node: child, parent: transformedChild });\n }\n }\n\n return transformedTree;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffTreeNotifierService"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"daffodil-design-tree.mjs","sources":["../../../libs/design/tree/src/tree/tree-notifier.service.ts","../../../libs/design/tree/src/utils/flatten-tree.ts","../../../libs/design/tree/src/utils/traverse-tree.ts","../../../libs/design/tree/src/utils/hydrate-tree.ts","../../../libs/design/tree/src/tree/tree.component.ts","../../../libs/design/tree/src/tree/tree.component.html","../../../libs/design/tree/src/tree-item/tree-item.directive.ts","../../../libs/design/tree/src/tree.module.ts","../../../libs/design/tree/src/utils/transform.ts","../../../libs/design/tree/src/tree.ts","../../../libs/design/tree/src/daffodil-design-tree.ts"],"sourcesContent":["import {\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n/**\n * This service is used by tree-items to notify their parent\n * that the tree has to be re-computed.\n *\n * This service is a multiton associated with each tree instance.\n * It follows the same lifecycle has the tree it is associated with.\n */\n@Inject({})\nexport class DaffTreeNotifierService implements OnDestroy {\n\n /**\n * @docs-private\n */\n private _notice: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n /**\n * An observable that emits when the tree needs to be re-computed.\n */\n notice$ = this._notice.asObservable();\n\n /**\n * `notify` can be called to trigger a re-computation of the tree\n * if data has changed unexpectedly and a re-render did not occur.\n *\n * This should be used sparingly. Instead, prefer updating `data` on the tree\n * itself for performance reasons.\n */\n notify() {\n this._notice.next(true);\n }\n\n /**\n * Cleanup when the tree is destroyed.\n *\n * @docs-private\n */\n ngOnDestroy(): void {\n this._notice.complete();\n }\n}\n","import { collect } from '@daffodil/core';\n\nimport { DaffTreeUi } from '../interfaces/tree-ui';\n\n/**\n * A flattened node of a tree. This is used when translating the tree data\n * structure into an array.\n */\nexport interface DaffTreeFlatNode {\n id: number | string;\n title: string;\n url: string;\n level: number;\n hasChildren: boolean;\n data: unknown;\n visible: boolean;\n _treeRef: DaffTreeUi<unknown>;\n}\n\n/**\n * Flatten a DaffTreeUi<unknown> into an array, removing elements from the array\n * below nodes in the tree that are not open.\n */\nexport const flattenTree = (daffUiTree: DaffTreeUi<unknown>, removeNodes: boolean = false): DaffTreeFlatNode[] => {\n const tree: DaffTreeFlatNode[] = [];\n if(!daffUiTree) {\n return [];\n }\n\n let items = [\n {\n ...daffUiTree,\n level: 0,\n data: undefined,\n open: true,\n _treeRef: daffUiTree,\n },\n ];\n\n\n while(items) {\n const el = items.pop();\n if(!el) {\n break;\n }\n\n items = [\n ...items,\n ...el.items.map((i) => ({\n ...i,\n level:\n el.level + 1,\n _treeRef: i,\n })).reverse(),\n ];\n\n const hasClosedAncestor = el._treeRef.parent\n ? collect(el._treeRef.parent, (node) => node.parent ? [node.parent] : [], el.level).reduce(\n (acc, parent) => acc || !parent.open,\n false,\n )\n : false;\n\n if(!removeNodes && el._treeRef.parent) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: !hasClosedAncestor,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n } else if(removeNodes && el._treeRef.parent?.open) {\n tree.push({\n id: el.id,\n title: el.title,\n level: el.level,\n url : el.url,\n visible: !hasClosedAncestor,\n hasChildren: el.items.length > 0,\n data: undefined,\n _treeRef: el._treeRef,\n });\n }\n }\n\n return tree;\n};\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\n\n/**\n * Traverse the tree, pre-order, right-to-left\n */\nexport const traverse = <T extends Record<any, any>, V extends Record<any, any> = T>(\n tree: T,\n visit: (tree: T) => V,\n key: RecursiveTreeKeyOfType<T>,\n): V => {\n let stack = [\n tree,\n ];\n\n while(stack) {\n const el = stack.pop();\n if(!el) {\n break;\n }\n\n visit(el);\n\n stack = [\n ...stack,\n ...<T[]><unknown>el[key],\n ];\n }\n\n return tree;\n};\n","import { traverse } from './traverse-tree';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\n\nexport const daffDataTreeToUiTree = <T>(data: DaffTreeData<T>, parent: DaffTreeUi<T>, open: boolean = false): DaffTreeUi<T> => ({\n id: data.id ?? data.title,\n title: data.title,\n url: data.url,\n data: data.data,\n open,\n parent,\n items: [],\n});\n\n/**\n * This function translates the original data given to us by the client\n * to the internal representation of the tree used by the {@link DaffTreeComponent}\n */\nexport const hydrateTree = <T>(data: DaffTreeData<T>): DaffTreeUi<T> => {\n const tree = daffDataTreeToUiTree(data, undefined, true);\n\n let treeStack = [\n tree,\n ];\n\n traverse(data, (el) => {\n const treeEl = treeStack.pop();\n treeEl.items = el.items.map((i) => daffDataTreeToUiTree(i, treeEl, false));\n treeStack = [\n ...treeStack,\n ...treeEl.items,\n ];\n return el;\n }, 'items');\n\n return tree;\n};\n","import {\n NgFor,\n NgTemplateOutlet,\n} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { DaffArticleEncapsulatedDirective } from '@daffodil/design';\n\nimport { DaffTreeNotifierService } from './tree-notifier.service';\nimport { DaffTreeData } from '../interfaces/tree-data';\nimport { DaffTreeRenderMode } from '../interfaces/tree-render-mode';\nimport { DaffTreeUi } from '../interfaces/tree-ui';\nimport {\n DaffTreeFlatNode,\n flattenTree,\n} from '../utils/flatten-tree';\nimport { hydrateTree } from '../utils/hydrate-tree';\n\n/**\n * The `DaffTreeComponent` allows you to render tree structures as interactable ui.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData}.\n *\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ul[daff-tree]',\n templateUrl: './tree.component.html',\n styleUrls: ['./tree.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n DaffTreeNotifierService,\n ],\n hostDirectives: [{\n directive: DaffArticleEncapsulatedDirective,\n }],\n standalone: true,\n imports: [\n NgFor,\n NgTemplateOutlet,\n ],\n})\nexport class DaffTreeComponent implements OnInit, OnChanges {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree') class = true;\n\n /**\n * The rendering mode for nodes in the tree.\n *\n * Default value is 'in-dom', which means nodes are present in the DOM.\n *\n * Generally, `not-in-dom` is faster as there are less DOM elements to render,\n * but there may be use-cases (like SEO) where having the tree in the DOM\n * is relevant.\n */\n @Input() renderMode: DaffTreeRenderMode;\n\n /**\n * The internal tree element.\n */\n private _tree: DaffTreeUi<unknown> = undefined;\n\n /**\n * The flattened tree data. You can iterate through this if you want to inspect\n * the resulting array structure we computed to render the tree.\n */\n public flatTree: DaffTreeFlatNode[] = [];\n\n /**\n * The tree data you would like to render.\n */\n @Input() tree: DaffTreeData<unknown>;\n\n /**\n * The template used to render tree-nodes that themselves have children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemWithChildrenTpl', { static: true })\n withChildrenTemplate: TemplateRef<any>;\n\n /**\n * The template used to render tree-nodes that have no children.\n *\n * @docs-private\n */\n @ContentChild('daffTreeItemTpl', { static: true }) treeItemTemplate: TemplateRef<any>;\n\n constructor(private notifier: DaffTreeNotifierService) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if(!changes.tree.currentValue) {\n this._tree = undefined;\n this.flatTree = [];\n return;\n }\n\n if(changes.renderMode && !changes.tree) {\n this.flatTree = flattenTree(this._tree, changes.renderMode.currentValue === 'not-in-dom');\n } else if(changes.renderMode || changes.tree) {\n this._tree = hydrateTree(changes.tree?.currentValue ?? this.tree);\n this.flatTree = flattenTree(this._tree, (changes.renderMode?.currentValue ?? this.renderMode) === 'not-in-dom');\n }\n }\n\n /**\n * The track-by function used to reduce tree-item re-renders\n */\n trackByTreeElement(index: number, el: any): any {\n return el.title;\n }\n\n /**\n * @docs-private\n */\n ngOnInit(): void {\n this.notifier.notice$.subscribe(() => {\n this.flatTree = flattenTree(this._tree, this.renderMode === 'not-in-dom');\n });\n }\n}\n","<ng-container *ngFor=\"let node of flatTree; trackBy: trackByTreeElement\">\n\t<ng-container>\n\t\t<li [attr.aria-level]=\"node.level\" [class.hidden]=\"!node.visible\">\n\t\t\t<ng-container\n\t\t\t\t*ngTemplateOutlet=\"node.hasChildren ? withChildrenTemplate : treeItemTemplate; context: { $implicit: node }\">\n\t\t\t</ng-container>\n\t\t</li>\n\t</ng-container>\n</ng-container>","import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n HostBinding,\n HostListener,\n Inject,\n Input,\n} from '@angular/core';\n\nimport { DaffTreeNotifierService } from '../tree/tree-notifier.service';\nimport { DaffTreeFlatNode } from '../utils/flatten-tree';\n\n/**\n * The `DaffTreeItemDirective` allows you to demarcate the elements which are\n * tree-children that interact with the parent tree.\n *\n * They can be used like:\n *\n * ```html\n * <ul daff-tree [tree]=\"tree\">\n * <ng-template #daffTreeItemWithChildrenTpl let-node>\n * <button daffTreeItem [node]=\"node\">{{ node.title }} </button>\n * </ng-template>\n *\n * <ng-template #daffTreeItemTpl let-node>\n * <a daffTreeItem [node]=\"node\" [routerLink]=\"node.url\">{{ node.title }}</a>\n * </ng-template>\n * </ul>\n * ```\n *\n * where `tree` is a {@link DaffTreeData} and `daff-tree` is a {@link DaffTreeComponent}.\n *\n */\n@Directive({\n selector: '[daffTreeItem]',\n standalone: true,\n})\nexport class DaffTreeItemDirective {\n\n /**\n * The css class of the daff-tree.\n *\n * @docs-private\n */\n @HostBinding('class.daff-tree-item') class = true;\n\n /**\n * The css class of a DaffTreeItemDirective that has children.\n *\n * @docs-private\n */\n @HostBinding('class.parent') classParent = false;\n\n /**\n * The html `id` of the tree item. This is derived from the {@link DaffTreeData}.\n *\n * @docs-private\n */\n @HostBinding('attr.id') id;\n\n /**\n * Accessibility property, notifying users about whether\n * or not the tree item is open.\n *\n * @docs-private\n */\n @HostBinding('attr.aria-expanded') ariaExpanded: string;\n\n /**\n * A css variable indicating the depth of the tree.\n * You can use this to style your templates if you want to\n * use different designs at different depths.\n */\n @HostBinding('style.--depth') depth: number;\n\n /**\n * The CSS class indicating whether or not the tree is `selected`.\n */\n @HostBinding('class.selected') get selectedClass() {\n return this.selected;\n };\n\n /**\n * The CSS class indicating whether or not the tree is `open`.\n */\n @HostBinding('class.open') openClass = false;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n *\n * @docs-private\n */\n private _node: DaffTreeFlatNode;\n\n /**\n * The {@link DaffTreeFlatNode} associated with this specific tree item.\n */\n @Input()\n get node() {\n return this._node;\n };\n set node(val: DaffTreeFlatNode) {\n this._node = val;\n this.id = 'tree-' + this._node.id;\n this.depth = this._node.level;\n this.classParent = this._node.hasChildren;\n this.openClass = this._node._treeRef.open;\n\n if(this._node.hasChildren) {\n this.ariaExpanded = this._node._treeRef.open ? 'true' : 'false';\n }\n }\n\n /**\n * Whether or not the tree item is the currently active item.\n * Note that there is no requirement there there only be one active item at a time.\n */\n @Input() selected = false;\n\n constructor(\n @Inject(DOCUMENT) private document: any,\n private treeNotifier: DaffTreeNotifierService,\n ) {}\n\n /**\n * @docs-private\n */\n @HostListener('keydown.escape')\n onEscape() {\n this.toggleParent(this.node);\n }\n\n /**\n * @docs-private\n */\n @HostListener('click')\n onClick() {\n if(this.node.hasChildren) {\n this.toggleTree(this.node);\n }\n this.treeNotifier.notify();\n }\n\n /**\n * Toggle the open state of the tree's parent.\n */\n toggleParent(node: DaffTreeFlatNode) {\n if(node._treeRef?.parent.parent === undefined) {\n return;\n }\n node._treeRef.parent.open = !node._treeRef.parent.open;\n (<Document>this.document).getElementById('tree-' + node._treeRef.parent.id).focus();\n }\n\n /**\n * Toggle the open state of this specific subtree tree.\n */\n toggleTree(node: DaffTreeFlatNode) {\n if(node._treeRef.open === false) {\n node._treeRef.open = true;\n } else {\n node._treeRef.open = false;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { DaffTreeComponent } from './tree/tree.component';\nimport { DaffTreeItemDirective } from './tree-item/tree-item.directive';\n\n/**\n * @deprecated in favor of {@link DAFF_TREE_COMPONENTS}\n */\n@NgModule({\n imports: [\n CommonModule,\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n exports: [\n DaffTreeComponent,\n DaffTreeItemDirective,\n ],\n})\nexport class DaffTreeModule { }\n","import { RecursiveTreeKeyOfType } from '../interfaces/recursive-key';\nimport { DaffTreeData } from '../interfaces/tree-data';\n\n/**\n * Transform a tree-like structure into a {@link DaffTreeData}.\n *\n * @param tree - The data structure representing tree-like data.\n * @param transformFn - A user-supplied function that will transform the user\n * type into a {@link DaffTreeData}\n * @param key - The property of the your tree that indicates which\n * key contains the \"children\" of your tree structure.\n *\n */\nexport const daffTransformTree = <\n // eslint-disable-next-line @typescript-eslint/no-restricted-types\n T extends Record<any,any>,\n V\n>(\n tree: T,\n transformFn: (type: T) => DaffTreeData<V>,\n key: RecursiveTreeKeyOfType<T>,\n): DaffTreeData<V> => {\n\n const transformedTree: DaffTreeData<V> = transformFn(tree);\n\n const queue: { node: T; parent: DaffTreeData<V> }[] = [{ node: tree, parent: transformedTree }];\n\n while (queue.length > 0) {\n const { node, parent } = queue.shift();\n\n const childItems = node[key];\n for (const child of <T[]>childItems) {\n const transformedChild: DaffTreeData<V> = transformFn(child);\n parent.items.push(transformedChild);\n queue.push({ node: child, parent: transformedChild });\n }\n }\n\n return transformedTree;\n};\n","import { DaffTreeComponent } from './tree/tree.component';\nimport { DaffTreeItemDirective } from './tree-item/tree-item.directive';\n\nexport const DAFF_TREE_COMPONENTS = <const> [\n DaffTreeComponent,\n DaffTreeItemDirective,\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffTreeNotifierService"],"mappings":"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"}
|