@design-factory/angular 21.1.0-next.1 → 22.0.0-next.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/.ai/docs/components/accordion/accessibility.md +45 -0
- package/.ai/docs/components/accordion/api.md +279 -0
- package/.ai/docs/components/accordion/developer.md +43 -0
- package/.ai/docs/components/accordion/guidelines.md +99 -0
- package/.ai/docs/components/accordion/overview.md +17 -0
- package/.ai/docs/components/alert/accessibility.md +24 -0
- package/.ai/docs/components/alert/api.md +65 -0
- package/.ai/docs/components/alert/developer.md +63 -0
- package/.ai/docs/components/alert/guidelines.md +62 -0
- package/.ai/docs/components/alert/overview.md +12 -0
- package/.ai/docs/components/button/accessibility.md +25 -0
- package/.ai/docs/components/button/api.md +71 -0
- package/.ai/docs/components/button/developer.md +52 -0
- package/.ai/docs/components/button/guidelines.md +75 -0
- package/.ai/docs/components/button/overview.md +15 -0
- package/.ai/docs/components/buttongroup/api.md +16 -0
- package/.ai/docs/components/buttongroup/developer.md +32 -0
- package/.ai/docs/components/drawer/accessibility.md +15 -0
- package/.ai/docs/components/drawer/api.md +56 -0
- package/.ai/docs/components/drawer/developer.md +36 -0
- package/.ai/docs/components/drawer/examples.md +9 -0
- package/.ai/docs/components/drawer/guidelines.md +58 -0
- package/.ai/docs/components/drawer/overview.md +19 -0
- package/.ai/docs/components/dropdown/accessibility.md +27 -0
- package/.ai/docs/components/dropdown/api.md +85 -0
- package/.ai/docs/components/dropdown/developer.md +59 -0
- package/.ai/docs/components/dropdown/guidelines.md +80 -0
- package/.ai/docs/components/dropdown/overview.md +16 -0
- package/.ai/docs/components/sidenav/accessibility.md +48 -0
- package/.ai/docs/components/sidenav/api.md +110 -0
- package/.ai/docs/components/sidenav/developer.md +14 -0
- package/.ai/docs/components/sidenav/guidelines.md +83 -0
- package/.ai/docs/components/sidenav/overview.md +16 -0
- package/.ai/docs/components/tooltip/accessibility.md +11 -0
- package/.ai/docs/components/tooltip/api.md +39 -0
- package/.ai/docs/components/tooltip/developer.md +16 -0
- package/.ai/docs/components/tooltip/guidelines.md +84 -0
- package/.ai/docs/components/tooltip/overview.md +23 -0
- package/.ai/docs/components/topnav/accessibility.md +51 -0
- package/.ai/docs/components/topnav/api.md +190 -0
- package/.ai/docs/components/topnav/developer.md +43 -0
- package/.ai/docs/components/topnav/guidelines.md +121 -0
- package/.ai/docs/components/topnav/overview.md +17 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
- package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
- package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
- package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
- package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
- package/.ai/docs/demos/alert/card/alert-card.html +15 -0
- package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
- package/.ai/docs/demos/button/basic/button-basic.html +4 -0
- package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
- package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
- package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
- package/.ai/docs/demos/button/icons/button-icons.html +17 -0
- package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
- package/.ai/docs/demos/button/variants/button-variants.html +49 -0
- package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
- package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
- package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
- package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
- package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
- package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
- package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
- package/.ai/index.md +26 -0
- package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
- package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
- package/fesm2022/design-factory-angular-alert.mjs +312 -0
- package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
- package/fesm2022/design-factory-angular-button.mjs +240 -0
- package/fesm2022/design-factory-angular-button.mjs.map +1 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
- package/fesm2022/design-factory-angular-drawer.mjs +76 -81
- package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
- package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
- package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
- package/fesm2022/design-factory-angular-form-field.mjs +287 -0
- package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
- package/fesm2022/design-factory-angular-icon.mjs +24 -0
- package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
- package/fesm2022/design-factory-angular-input.mjs +34 -0
- package/fesm2022/design-factory-angular-input.mjs.map +1 -0
- package/fesm2022/design-factory-angular-internals.mjs +119 -39
- package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
- package/fesm2022/design-factory-angular-separator.mjs +43 -0
- package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
- package/fesm2022/design-factory-angular-sidenav.mjs +766 -438
- package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
- package/fesm2022/design-factory-angular-slider.mjs +451 -0
- package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
- package/fesm2022/design-factory-angular-theme.mjs +30 -20
- package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
- package/fesm2022/design-factory-angular-toggle.mjs +172 -0
- package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
- package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
- package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
- package/fesm2022/design-factory-angular-topnav.mjs +635 -558
- package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
- package/package.json +61 -8
- package/schematics/collection.json +35 -0
- package/schematics/component-migration/accordion/constants.d.ts +10 -0
- package/schematics/component-migration/accordion/constants.js +46 -0
- package/schematics/component-migration/accordion/guide.md +257 -0
- package/schematics/component-migration/accordion/index.d.ts +2 -0
- package/schematics/component-migration/accordion/index.js +5 -0
- package/schematics/component-migration/accordion/migration.d.ts +2 -0
- package/schematics/component-migration/accordion/migration.js +13 -0
- package/schematics/component-migration/accordion/schema.json +25 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
- package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
- package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
- package/schematics/component-migration/accordion/steps/title-content.js +75 -0
- package/schematics/component-migration/ai/prompt.md +83 -0
- package/schematics/component-migration/alert/guide.md +246 -0
- package/schematics/component-migration/alert/index.d.ts +2 -0
- package/schematics/component-migration/alert/index.js +5 -0
- package/schematics/component-migration/alert/migration.d.ts +2 -0
- package/schematics/component-migration/alert/migration.js +50 -0
- package/schematics/component-migration/alert/schema.json +25 -0
- package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
- package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
- package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
- package/schematics/component-migration/alert/steps/animation-input.js +17 -0
- package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
- package/schematics/component-migration/alert/steps/close-output.js +17 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
- package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
- package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
- package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
- package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
- package/schematics/component-migration/alert/steps/selector.js +18 -0
- package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-classes.js +97 -0
- package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-type.js +28 -0
- package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-reference.js +15 -0
- package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-todos.js +78 -0
- package/schematics/component-migration/button/guide.md +278 -0
- package/schematics/component-migration/button/index.d.ts +2 -0
- package/schematics/component-migration/button/index.js +5 -0
- package/schematics/component-migration/button/migration.d.ts +2 -0
- package/schematics/component-migration/button/migration.js +180 -0
- package/schematics/component-migration/button/schema.json +25 -0
- package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
- package/schematics/component-migration/button/steps/static-classes.js +128 -0
- package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/button/steps/template-todos.js +120 -0
- package/schematics/component-migration/button/types.d.ts +7 -0
- package/schematics/component-migration/button/types.js +2 -0
- package/schematics/component-migration/dropdown/guide.md +252 -0
- package/schematics/component-migration/dropdown/index.d.ts +2 -0
- package/schematics/component-migration/dropdown/index.js +5 -0
- package/schematics/component-migration/dropdown/migration.d.ts +2 -0
- package/schematics/component-migration/dropdown/migration.js +41 -0
- package/schematics/component-migration/dropdown/schema.json +25 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
- package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
- package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
- package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
- package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
- package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
- package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
- package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
- package/schematics/component-migration/index.d.ts +3 -0
- package/schematics/component-migration/index.js +26 -0
- package/schematics/component-migration/next-steps/index.d.ts +13 -0
- package/schematics/component-migration/next-steps/index.js +34 -0
- package/schematics/component-migration/registry.d.ts +1 -0
- package/schematics/component-migration/registry.js +15 -0
- package/schematics/component-migration/schema.json +20 -0
- package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
- package/schematics/component-migration/shared/ai-handoff.js +28 -0
- package/schematics/component-migration/shared/angular-component.d.ts +10 -0
- package/schematics/component-migration/shared/angular-component.js +125 -0
- package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
- package/schematics/component-migration/shared/button-visual-classes.js +111 -0
- package/schematics/component-migration/shared/component-context.d.ts +7 -0
- package/schematics/component-migration/shared/component-context.js +24 -0
- package/schematics/component-migration/shared/component-imports.d.ts +45 -0
- package/schematics/component-migration/shared/component-imports.js +380 -0
- package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
- package/schematics/component-migration/shared/create-component-schematic.js +55 -0
- package/schematics/component-migration/shared/import-edits.d.ts +11 -0
- package/schematics/component-migration/shared/import-edits.js +157 -0
- package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
- package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
- package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
- package/schematics/component-migration/shared/migrate-project.js +151 -0
- package/schematics/component-migration/shared/project-templates.d.ts +15 -0
- package/schematics/component-migration/shared/project-templates.js +43 -0
- package/schematics/component-migration/shared/scan-project.d.ts +3 -0
- package/schematics/component-migration/shared/scan-project.js +24 -0
- package/schematics/component-migration/shared/static-placement.d.ts +1 -0
- package/schematics/component-migration/shared/static-placement.js +45 -0
- package/schematics/component-migration/shared/template-edits.d.ts +28 -0
- package/schematics/component-migration/shared/template-edits.js +153 -0
- package/schematics/component-migration/shared/template-result.d.ts +3 -0
- package/schematics/component-migration/shared/template-result.js +11 -0
- package/schematics/component-migration/shared/testing.d.ts +13 -0
- package/schematics/component-migration/shared/testing.js +59 -0
- package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
- package/schematics/component-migration/shared/todo-comments.js +81 -0
- package/schematics/component-migration/shared/types.d.ts +41 -0
- package/schematics/component-migration/shared/types.js +2 -0
- package/schematics/component-migration/tooltip/guide.md +196 -0
- package/schematics/component-migration/tooltip/index.d.ts +2 -0
- package/schematics/component-migration/tooltip/index.js +5 -0
- package/schematics/component-migration/tooltip/migration.d.ts +2 -0
- package/schematics/component-migration/tooltip/migration.js +50 -0
- package/schematics/component-migration/tooltip/schema.json +25 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
- package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
- package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
- package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
- package/schematics/component-migration/utils/component-resource-collector.js +107 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
- package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
- package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
- package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
- package/schematics/component-migration/utils/typescript/decorators.js +41 -0
- package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
- package/schematics/component-migration/utils/typescript/functions.js +20 -0
- package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
- package/schematics/component-migration/utils/typescript/imports.js +110 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
- package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
- package/schematics/component-migration/utils/typescript/property-name.js +22 -0
- package/schematics/package.json +3 -0
- package/types/design-factory-angular-accordion.d.ts +553 -0
- package/types/design-factory-angular-alert.d.ts +166 -0
- package/types/design-factory-angular-breakpoints.d.ts +13 -0
- package/types/design-factory-angular-button.d.ts +166 -0
- package/types/design-factory-angular-buttongroup.d.ts +45 -0
- package/types/design-factory-angular-drawer.d.ts +19 -26
- package/types/design-factory-angular-dropdown.d.ts +148 -0
- package/types/design-factory-angular-form-field.d.ts +122 -0
- package/types/design-factory-angular-icon.d.ts +11 -0
- package/types/design-factory-angular-input.d.ts +16 -0
- package/types/design-factory-angular-internals.d.ts +78 -19
- package/types/design-factory-angular-separator.d.ts +29 -0
- package/types/design-factory-angular-sidenav.d.ts +114 -17
- package/types/design-factory-angular-slider.d.ts +239 -0
- package/types/design-factory-angular-toggle.d.ts +93 -0
- package/types/design-factory-angular-tooltip.d.ts +113 -0
- package/types/design-factory-angular-topnav.d.ts +47 -52
- package/drawer/README.md +0 -54
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, contentChildren, ViewEncapsulation, ChangeDetectionStrategy, Component, input, signal, inject, ElementRef, forwardRef, Directive, computed, booleanAttribute, output, contentChild, TemplateRef, viewChild, effect, untracked, DOCUMENT, model, isDevMode } from '@angular/core';
|
|
3
1
|
import { NgTemplateOutlet, TitleCasePipe } from '@angular/common';
|
|
4
|
-
import
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { InjectionToken, contentChildren, ViewEncapsulation, Component, input, computed, signal, inject, ElementRef, effect, Directive, booleanAttribute, output, contentChild, TemplateRef, viewChild, untracked, DOCUMENT, viewChildren, model, isDevMode } from '@angular/core';
|
|
4
|
+
import { trackWindow } from '@design-factory/angular/breakpoints';
|
|
5
|
+
import { DfButton, DfIconButton } from '@design-factory/angular/button';
|
|
5
6
|
import { RouterLink, RouterLinkActive } from '@angular/router';
|
|
6
|
-
import { NgbDropdown, NgbDropdownAnchor, NgbDropdownMenu, NgbDropdownItem, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap/dropdown';
|
|
7
7
|
import { generateId } from '@design-factory/core/utils/id';
|
|
8
|
+
import { DfIcon } from '@design-factory/angular/icon';
|
|
9
|
+
import { DfDropdown, DfDropdownItemLink, DfDropdownItemButton, DfDropdownToggle } from '@design-factory/angular/dropdown';
|
|
8
10
|
import { NgbPopover } from '@ng-bootstrap/ng-bootstrap/popover';
|
|
9
11
|
import { DfDrawer } from '@design-factory/angular/drawer';
|
|
10
|
-
import {
|
|
12
|
+
import { DfSidenavInput } from '@design-factory/angular/sidenav';
|
|
11
13
|
import { DfThemeService } from '@design-factory/angular/theme';
|
|
12
14
|
|
|
13
15
|
/**
|
|
@@ -29,17 +31,18 @@ class DfTopNavNavigationElement {
|
|
|
29
31
|
*/
|
|
30
32
|
class DfTopNavNavigation {
|
|
31
33
|
constructor() {
|
|
32
|
-
this.childrenElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT,
|
|
34
|
+
this.childrenElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT, /* @ts-ignore */
|
|
35
|
+
...(ngDevMode ? [{ debugName: "childrenElements" }] : /* istanbul ignore next */ []));
|
|
33
36
|
}
|
|
34
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
35
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
37
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigation, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavNavigation, isStandalone: true, selector: "df-topnav-navigation", host: { attributes: { "role": "list" }, classAttribute: "df-topnav-navigation" }, queries: [{ propertyName: "childrenElements", predicate: DF_TOPNAV_NAVIGATION_ELEMENT, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-topnav-navigation{display:flex}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
36
39
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigation, decorators: [{
|
|
38
41
|
type: Component,
|
|
39
42
|
args: [{ selector: 'df-topnav-navigation', template: `<ng-content />`, host: {
|
|
40
43
|
class: 'df-topnav-navigation',
|
|
41
44
|
role: 'list'
|
|
42
|
-
},
|
|
45
|
+
}, encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation{display:flex}\n"] }]
|
|
43
46
|
}], propDecorators: { childrenElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_NAVIGATION_ELEMENT), { isSignal: true }] }] } });
|
|
44
47
|
|
|
45
48
|
/**
|
|
@@ -54,88 +57,117 @@ class DfTopNavNavigationLink extends DfTopNavNavigationElement {
|
|
|
54
57
|
/**
|
|
55
58
|
* The label of the navigation link, which will be displayed as the link text.
|
|
56
59
|
*/
|
|
57
|
-
this.label = input.required(
|
|
60
|
+
this.label = input.required(/* @ts-ignore */
|
|
61
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
62
|
+
/**
|
|
63
|
+
* The external href of the navigation link, which will be used as the link target. Use {@link routerLink} for internal links.
|
|
64
|
+
*/
|
|
65
|
+
this.href = input(/* @ts-ignore */
|
|
66
|
+
...(ngDevMode ? [undefined, { debugName: "href" }] : /* istanbul ignore next */ []));
|
|
58
67
|
/**
|
|
59
|
-
* The
|
|
68
|
+
* The internal router link of the navigation link, which will be used as the link target. Use {@link href} for external links.
|
|
60
69
|
*/
|
|
61
|
-
this.
|
|
70
|
+
this.routerLink = input(/* @ts-ignore */
|
|
71
|
+
...(ngDevMode ? [undefined, { debugName: "routerLink" }] : /* istanbul ignore next */ []));
|
|
72
|
+
this.resolvedLink = computed(() => this.routerLink() ?? this.href(), /* @ts-ignore */
|
|
73
|
+
...(ngDevMode ? [{ debugName: "resolvedLink" }] : /* istanbul ignore next */ []));
|
|
74
|
+
this.externalLink = computed(() => !!this.href(), /* @ts-ignore */
|
|
75
|
+
...(ngDevMode ? [{ debugName: "externalLink" }] : /* istanbul ignore next */ []));
|
|
62
76
|
/**
|
|
63
77
|
* The options to determine when the link is active based on the Router state. It can be either an object of type IsActiveMatchOptions or an object with an "exact" boolean property. When not provided, it defaults to { exact: false }.
|
|
64
78
|
*/
|
|
65
|
-
this.routerLinkActiveOptions = input({ exact: false },
|
|
66
|
-
|
|
79
|
+
this.routerLinkActiveOptions = input({ exact: false }, /* @ts-ignore */
|
|
80
|
+
...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : /* istanbul ignore next */ []));
|
|
81
|
+
this._active = signal(false, /* @ts-ignore */
|
|
82
|
+
...(ngDevMode ? [{ debugName: "_active" }] : /* istanbul ignore next */ []));
|
|
67
83
|
/**
|
|
68
84
|
* Indicates if the link is currently active based on the Router state.
|
|
69
85
|
*/
|
|
70
86
|
this.active = this._active.asReadonly();
|
|
71
87
|
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
73
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
74
|
-
|
|
75
|
-
class="df-topnav-navigation-link"
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationLink, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
89
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavNavigationLink, isStandalone: true, selector: "df-topnav-navigation-link", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "style.display": "\"contents\"" } }, providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationLink }], usesInheritance: true, ngImport: i0, template: `
|
|
90
|
+
@if (externalLink()) {
|
|
91
|
+
<a class="df-topnav-navigation-link" [attr.href]="href()" target="_blank">
|
|
92
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
93
|
+
</a>
|
|
94
|
+
} @else {
|
|
95
|
+
<a
|
|
96
|
+
class="df-topnav-navigation-link"
|
|
97
|
+
[routerLink]="routerLink()"
|
|
98
|
+
routerLinkActive="df-topnav-navigation-link-active"
|
|
99
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
100
|
+
ariaCurrentWhenActive="page"
|
|
101
|
+
[attr.data-text]="label()"
|
|
102
|
+
(isActiveChange)="_active.set($event)"
|
|
103
|
+
>
|
|
104
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
105
|
+
</a>
|
|
106
|
+
}
|
|
107
|
+
`, isInline: true, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
86
108
|
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationLink, decorators: [{
|
|
88
110
|
type: Component,
|
|
89
111
|
args: [{ selector: 'df-topnav-navigation-link', template: `
|
|
90
|
-
|
|
91
|
-
class="df-topnav-navigation-link"
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
@if (externalLink()) {
|
|
113
|
+
<a class="df-topnav-navigation-link" [attr.href]="href()" target="_blank">
|
|
114
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
115
|
+
</a>
|
|
116
|
+
} @else {
|
|
117
|
+
<a
|
|
118
|
+
class="df-topnav-navigation-link"
|
|
119
|
+
[routerLink]="routerLink()"
|
|
120
|
+
routerLinkActive="df-topnav-navigation-link-active"
|
|
121
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
122
|
+
ariaCurrentWhenActive="page"
|
|
123
|
+
[attr.data-text]="label()"
|
|
124
|
+
(isActiveChange)="_active.set($event)"
|
|
125
|
+
>
|
|
126
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
127
|
+
</a>
|
|
128
|
+
}
|
|
101
129
|
`, host: {
|
|
102
130
|
role: 'listitem',
|
|
103
131
|
'[style.display]': '"contents"'
|
|
104
|
-
},
|
|
105
|
-
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: true }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }] } });
|
|
132
|
+
}, imports: [RouterLink, RouterLinkActive], providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationLink }], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"] }]
|
|
133
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }] } });
|
|
106
134
|
|
|
107
|
-
// TODO - Implement the dropdown mode of the TopNav using the dropdown wrapper and remove the DfTopNavDropdownToggle directive.
|
|
108
135
|
/**
|
|
109
|
-
*
|
|
110
|
-
* Temporary toggle directive for the dropdown mode of the TopNav, which will be used to toggle the dropdown menu when the navigation item is clicked.
|
|
136
|
+
* The dropdown toggle does not use dfButton styles and requires to be recoded...
|
|
111
137
|
*
|
|
112
|
-
*
|
|
138
|
+
* @internal
|
|
113
139
|
*/
|
|
114
|
-
class
|
|
140
|
+
class DfTopNavNavigationItemDropdownToggle {
|
|
115
141
|
constructor() {
|
|
116
|
-
|
|
117
|
-
|
|
142
|
+
/**
|
|
143
|
+
* The dropdown instance controlled by this toggle element.
|
|
144
|
+
*
|
|
145
|
+
* Pass the referenced {@link DfDropdown} instance to connect the host button to its menu.
|
|
146
|
+
*/
|
|
147
|
+
this.dropdown = input.required({ ...(ngDevMode ? { debugName: "dropdown" } : /* istanbul ignore next */ {}), alias: 'dfTopNavNavigationItemDropdownToggle' });
|
|
148
|
+
const element = inject(ElementRef).nativeElement;
|
|
149
|
+
effect(() => {
|
|
150
|
+
this.dropdown()['toggleElement'].set(element);
|
|
151
|
+
});
|
|
118
152
|
}
|
|
119
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
120
|
-
static { this.ɵ
|
|
153
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItemDropdownToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
154
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DfTopNavNavigationItemDropdownToggle, isStandalone: true, selector: "button[dfTopNavNavigationItemDropdownToggle]", inputs: { dropdown: { classPropertyName: "dropdown", publicName: "dfTopNavNavigationItemDropdownToggle", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
155
|
+
<ng-content />
|
|
156
|
+
<df-icon class="fal" [class.fa-chevron-down]="!dropdown().isOpen()" [class.fa-chevron-up]="dropdown().isOpen()" />
|
|
157
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DfIcon, selector: "df-icon" }] }); }
|
|
121
158
|
}
|
|
122
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
123
|
-
type:
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItemDropdownToggle, decorators: [{
|
|
160
|
+
type: Component,
|
|
124
161
|
args: [{
|
|
125
|
-
selector
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
'(keydown.End)': 'dropdown.onKeyDown($any($event))',
|
|
133
|
-
'(keydown.Tab)': 'dropdown.onKeyDown($any($event))',
|
|
134
|
-
'(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))'
|
|
135
|
-
},
|
|
136
|
-
providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => DfTopNavDropdownToggle) }]
|
|
162
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
163
|
+
selector: 'button[dfTopNavNavigationItemDropdownToggle]',
|
|
164
|
+
imports: [DfIcon],
|
|
165
|
+
template: `
|
|
166
|
+
<ng-content />
|
|
167
|
+
<df-icon class="fal" [class.fa-chevron-down]="!dropdown().isOpen()" [class.fa-chevron-up]="dropdown().isOpen()" />
|
|
168
|
+
`
|
|
137
169
|
}]
|
|
138
|
-
}] });
|
|
170
|
+
}], ctorParameters: () => [], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dfTopNavNavigationItemDropdownToggle", required: true }] }] } });
|
|
139
171
|
/**
|
|
140
172
|
* The TopNav navigation item component, used to display a navigation link in the TopNav which can have child navigation links.
|
|
141
173
|
*
|
|
@@ -148,158 +180,131 @@ class DfTopNavNavigationItem extends DfTopNavNavigationElement {
|
|
|
148
180
|
/**
|
|
149
181
|
* The label of the navigation item, which will be displayed as the link text.
|
|
150
182
|
*/
|
|
151
|
-
this.label = input.required(
|
|
183
|
+
this.label = input.required(/* @ts-ignore */
|
|
184
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
152
185
|
/**
|
|
153
|
-
* The
|
|
186
|
+
* The routerLink of the navigation item, which will be used as the link target. It should be an internal route.
|
|
154
187
|
*/
|
|
155
|
-
this.
|
|
156
|
-
|
|
157
|
-
this.
|
|
158
|
-
|
|
188
|
+
this.routerLink = input.required(/* @ts-ignore */
|
|
189
|
+
...(ngDevMode ? [{ debugName: "routerLink" }] : /* istanbul ignore next */ []));
|
|
190
|
+
this.childElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT, /* @ts-ignore */
|
|
191
|
+
...(ngDevMode ? [{ debugName: "childElements" }] : /* istanbul ignore next */ []));
|
|
192
|
+
this.deepChildLinks = contentChildren(DfTopNavNavigationLink, { ...(ngDevMode ? { debugName: "deepChildLinks" } : /* istanbul ignore next */ {}), descendants: true });
|
|
193
|
+
this.rootChildLinks = computed(() => this.childElements().filter((child) => child instanceof DfTopNavNavigationLink), /* @ts-ignore */
|
|
194
|
+
...(ngDevMode ? [{ debugName: "rootChildLinks" }] : /* istanbul ignore next */ []));
|
|
159
195
|
this.topNav = inject(DfTopNav);
|
|
160
|
-
this.dropdownMode = computed(() => this.topNav.mode() === 'dropdown',
|
|
196
|
+
this.dropdownMode = computed(() => this.topNav.mode() === 'dropdown', /* @ts-ignore */
|
|
197
|
+
...(ngDevMode ? [{ debugName: "dropdownMode" }] : /* istanbul ignore next */ []));
|
|
161
198
|
this.dropdownId = `topnav-dropdown-button-${generateId()}`;
|
|
162
199
|
/**
|
|
163
200
|
* Indicates if the navigation item is currently active based on the Router state of its child links.
|
|
164
201
|
*/
|
|
165
|
-
this.active = computed(() => this.deepChildLinks().some((link) => link.active()),
|
|
202
|
+
this.active = computed(() => this.deepChildLinks().some((link) => link.active()), /* @ts-ignore */
|
|
203
|
+
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
166
204
|
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
168
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
205
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
206
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavNavigationItem, isStandalone: true, selector: "df-topnav-navigation-item", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "style.display": "\"contents\"" } }, providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationItem }], queries: [{ propertyName: "childElements", predicate: DF_TOPNAV_NAVIGATION_ELEMENT, isSignal: true }, { propertyName: "deepChildLinks", predicate: DfTopNavNavigationLink, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
169
207
|
@if (dropdownMode()) {
|
|
170
|
-
<
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
<
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
</div>
|
|
201
|
-
</div>
|
|
208
|
+
<button
|
|
209
|
+
[dfTopNavNavigationItemDropdownToggle]="dropdown"
|
|
210
|
+
type="button"
|
|
211
|
+
class="df-topnav-navigation-link"
|
|
212
|
+
[class.df-topnav-navigation-link-active]="active()"
|
|
213
|
+
aria-haspopup="true"
|
|
214
|
+
>
|
|
215
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
216
|
+
</button>
|
|
217
|
+
<df-dropdown #dropdown placement="bottom-start" role="list">
|
|
218
|
+
@for (childLink of rootChildLinks(); track childLink) {
|
|
219
|
+
<div role="listitem">
|
|
220
|
+
@if (childLink.href()) {
|
|
221
|
+
<a dfDropdownItem [attr.href]="childLink.href()" target="_blank">
|
|
222
|
+
<span>{{ childLink.label() }}</span>
|
|
223
|
+
</a>
|
|
224
|
+
} @else {
|
|
225
|
+
<a
|
|
226
|
+
dfDropdownItem
|
|
227
|
+
[routerLink]="childLink.routerLink()!"
|
|
228
|
+
[active]="childLink.active()"
|
|
229
|
+
[attr.aria-current]="childLink.active() ? 'page' : null"
|
|
230
|
+
>
|
|
231
|
+
{{ childLink.label() }}
|
|
232
|
+
</a>
|
|
233
|
+
}
|
|
234
|
+
</div>
|
|
235
|
+
}
|
|
236
|
+
</df-dropdown>
|
|
202
237
|
} @else {
|
|
203
238
|
<a
|
|
204
239
|
class="df-topnav-navigation-link"
|
|
205
|
-
[routerLink]="
|
|
240
|
+
[routerLink]="routerLink()"
|
|
206
241
|
[class.df-topnav-navigation-link-active]="active()"
|
|
207
242
|
[attr.aria-current]="active() ? 'page' : null"
|
|
208
|
-
[attr.data-text]="label()"
|
|
209
243
|
>
|
|
210
|
-
<span>{{ label() }}</span>
|
|
244
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
211
245
|
</a>
|
|
212
246
|
}
|
|
213
|
-
`, isInline: true, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-
|
|
247
|
+
`, isInline: true, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: DfDropdown, selector: "df-dropdown", inputs: ["opened", "placement", "size", "container"], outputs: ["openedChange"] }, { kind: "directive", type: DfDropdownItemLink, selector: "a[dfDropdownItem]", inputs: ["active", "disabled"] }, { kind: "component", type: DfTopNavNavigationItemDropdownToggle, selector: "button[dfTopNavNavigationItemDropdownToggle]", inputs: ["dfTopNavNavigationItemDropdownToggle"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
214
248
|
}
|
|
215
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItem, decorators: [{
|
|
216
250
|
type: Component,
|
|
217
251
|
args: [{ selector: 'df-topnav-navigation-item', template: `
|
|
218
252
|
@if (dropdownMode()) {
|
|
219
|
-
<
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
<
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}
|
|
249
|
-
</div>
|
|
250
|
-
</div>
|
|
253
|
+
<button
|
|
254
|
+
[dfTopNavNavigationItemDropdownToggle]="dropdown"
|
|
255
|
+
type="button"
|
|
256
|
+
class="df-topnav-navigation-link"
|
|
257
|
+
[class.df-topnav-navigation-link-active]="active()"
|
|
258
|
+
aria-haspopup="true"
|
|
259
|
+
>
|
|
260
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
261
|
+
</button>
|
|
262
|
+
<df-dropdown #dropdown placement="bottom-start" role="list">
|
|
263
|
+
@for (childLink of rootChildLinks(); track childLink) {
|
|
264
|
+
<div role="listitem">
|
|
265
|
+
@if (childLink.href()) {
|
|
266
|
+
<a dfDropdownItem [attr.href]="childLink.href()" target="_blank">
|
|
267
|
+
<span>{{ childLink.label() }}</span>
|
|
268
|
+
</a>
|
|
269
|
+
} @else {
|
|
270
|
+
<a
|
|
271
|
+
dfDropdownItem
|
|
272
|
+
[routerLink]="childLink.routerLink()!"
|
|
273
|
+
[active]="childLink.active()"
|
|
274
|
+
[attr.aria-current]="childLink.active() ? 'page' : null"
|
|
275
|
+
>
|
|
276
|
+
{{ childLink.label() }}
|
|
277
|
+
</a>
|
|
278
|
+
}
|
|
279
|
+
</div>
|
|
280
|
+
}
|
|
281
|
+
</df-dropdown>
|
|
251
282
|
} @else {
|
|
252
283
|
<a
|
|
253
284
|
class="df-topnav-navigation-link"
|
|
254
|
-
[routerLink]="
|
|
285
|
+
[routerLink]="routerLink()"
|
|
255
286
|
[class.df-topnav-navigation-link-active]="active()"
|
|
256
287
|
[attr.aria-current]="active() ? 'page' : null"
|
|
257
|
-
[attr.data-text]="label()"
|
|
258
288
|
>
|
|
259
|
-
<span>{{ label() }}</span>
|
|
289
|
+
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
260
290
|
</a>
|
|
261
291
|
}
|
|
262
|
-
`,
|
|
292
|
+
`, host: {
|
|
263
293
|
'[style.display]': '"contents"',
|
|
264
294
|
role: 'listitem'
|
|
265
|
-
}, imports: [RouterLink,
|
|
266
|
-
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }],
|
|
295
|
+
}, imports: [RouterLink, DfDropdown, DfDropdownItemLink, DfTopNavNavigationItemDropdownToggle], providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationItem }], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"] }]
|
|
296
|
+
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: true }] }], childElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_NAVIGATION_ELEMENT), { isSignal: true }] }], deepChildLinks: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfTopNavNavigationLink), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
267
297
|
|
|
268
298
|
/**
|
|
269
|
-
* @internal
|
|
270
|
-
* Styles the buttons used in the TopNav.
|
|
271
|
-
*/
|
|
272
|
-
class DfTopNavButton {
|
|
273
|
-
constructor() {
|
|
274
|
-
/**
|
|
275
|
-
* The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
|
|
276
|
-
*/
|
|
277
|
-
this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
|
|
278
|
-
/**
|
|
279
|
-
* Whether the button is an icon button or not. If true, the button will have a fixed width and height and no padding, to fit only an icon.
|
|
280
|
-
*/
|
|
281
|
-
this.icon = input(false, { ...(ngDevMode ? { debugName: "icon" } : {}), transform: booleanAttribute });
|
|
282
|
-
}
|
|
283
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
284
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DfTopNavButton, isStandalone: true, selector: "button[dfTopNavButton]", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.df-topnav-btn-icon": "icon()", "class": "'df-topnav-btn-' + appearance()" }, classAttribute: "df-topnav-btn" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-topnav-btn{display:flex;align-items:center;justify-content:center;border-radius:var(--df-borderRadius-main-medium);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;gap:var(--df-spacing-3);padding:.3125rem var(--df-spacing-4);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-btn{transition:none}}.df-topnav-btn{background-color:var(--df-topnav-btn-bg-color)}.df-topnav-btn:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-topnav-btn-bg-color),0 0 0 4px var(--df-topnav-btn-border-color)}.df-topnav-btn:disabled{cursor:not-allowed}.df-topnav-btn.df-topnav-btn-icon{width:2.25rem;height:2.25rem;padding:0}.df-topnav-nav-basic .df-topnav-btn-primary{color:var(--df-button-text-basic-color-primary-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-basic-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-basic-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-primary:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral{color:var(--df-button-text-basic-color-neutral-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-basic-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-basic-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary{color:var(--df-button-text-mirror-color-primary-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-mirror-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-mirror-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral{color:var(--df-button-text-mirror-color-neutral-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-mirror-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-mirror-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
285
|
-
}
|
|
286
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, decorators: [{
|
|
287
|
-
type: Component,
|
|
288
|
-
args: [{ selector: 'button[dfTopNavButton]', host: {
|
|
289
|
-
class: 'df-topnav-btn',
|
|
290
|
-
'[class.df-topnav-btn-icon]': 'icon()',
|
|
291
|
-
'[class]': "'df-topnav-btn-' + appearance()"
|
|
292
|
-
}, template: `<ng-content />`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".df-topnav-btn{display:flex;align-items:center;justify-content:center;border-radius:var(--df-borderRadius-main-medium);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;gap:var(--df-spacing-3);padding:.3125rem var(--df-spacing-4);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-btn{transition:none}}.df-topnav-btn{background-color:var(--df-topnav-btn-bg-color)}.df-topnav-btn:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-topnav-btn-bg-color),0 0 0 4px var(--df-topnav-btn-border-color)}.df-topnav-btn:disabled{cursor:not-allowed}.df-topnav-btn.df-topnav-btn-icon{width:2.25rem;height:2.25rem;padding:0}.df-topnav-nav-basic .df-topnav-btn-primary{color:var(--df-button-text-basic-color-primary-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-basic-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-basic-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-primary:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral{color:var(--df-button-text-basic-color-neutral-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-basic-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-basic-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary{color:var(--df-button-text-mirror-color-primary-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-mirror-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-mirror-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral{color:var(--df-button-text-mirror-color-neutral-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-mirror-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-mirror-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}\n"] }]
|
|
293
|
-
}], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }] } });
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* @internal
|
|
297
299
|
* An Injection Token for the DfTopNavQuickActionElement interface, which represents a navigation quick action in the top navigation component.
|
|
300
|
+
*
|
|
301
|
+
* @since 22.0
|
|
298
302
|
*/
|
|
299
303
|
const DF_TOPNAV_QUICK_ACTION_ELEMENT = new InjectionToken('DF_TOPNAV_QUICK_ACTION_ELEMENT');
|
|
300
304
|
/**
|
|
301
|
-
* @internal
|
|
302
305
|
* An abstract class that defines the structure of a quick action element in the top navigation component.
|
|
306
|
+
*
|
|
307
|
+
* @since 22.0
|
|
303
308
|
*/
|
|
304
309
|
class DfTopNavQuickActionElement {
|
|
305
310
|
}
|
|
@@ -311,10 +316,10 @@ class DfTopNavQuickActionElement {
|
|
|
311
316
|
* @since 21.1
|
|
312
317
|
*/
|
|
313
318
|
class DfTopNavQuickActionButtonContent {
|
|
314
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
315
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
319
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
320
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionButtonContent, isStandalone: true, selector: "ng-template[dfTopNavQuickActionButtonContent]", ngImport: i0 }); }
|
|
316
321
|
}
|
|
317
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonContent, decorators: [{
|
|
318
323
|
type: Directive,
|
|
319
324
|
args: [{ selector: 'ng-template[dfTopNavQuickActionButtonContent]' }]
|
|
320
325
|
}] });
|
|
@@ -325,10 +330,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
325
330
|
* @since 21.1
|
|
326
331
|
*/
|
|
327
332
|
class DfTopNavQuickActionButtonIcon {
|
|
328
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
329
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
333
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
334
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionButtonIcon, isStandalone: true, selector: "ng-template[dfTopNavQuickActionButtonIcon]", ngImport: i0 }); }
|
|
330
335
|
}
|
|
331
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonIcon, decorators: [{
|
|
332
337
|
type: Directive,
|
|
333
338
|
args: [{ selector: 'ng-template[dfTopNavQuickActionButtonIcon]' }]
|
|
334
339
|
}] });
|
|
@@ -341,7 +346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
341
346
|
*
|
|
342
347
|
* The icon can be set through the {@link DfTopNavQuickActionButton.icon} input or by using the {@link DfTopNavQuickActionButtonIcon} directive.
|
|
343
348
|
*
|
|
344
|
-
* See {@link https://design-factory.amadeus.net/components/topnav/
|
|
349
|
+
* See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
|
|
345
350
|
* @since 21.1
|
|
346
351
|
*/
|
|
347
352
|
class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
@@ -350,27 +355,31 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
|
350
355
|
/**
|
|
351
356
|
* The appearance of the quick action button, which will determine its color. It can be either 'primary' or 'neutral'.
|
|
352
357
|
*/
|
|
353
|
-
this.appearance = input('neutral',
|
|
358
|
+
this.appearance = input('neutral', /* @ts-ignore */
|
|
359
|
+
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
354
360
|
/**
|
|
355
361
|
* The label of the quick action button, which will be used as the aria-label attribute for accessibility on desktop and label in the drawer.
|
|
356
362
|
*/
|
|
357
|
-
this.label = input.required(
|
|
363
|
+
this.label = input.required(/* @ts-ignore */
|
|
364
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
358
365
|
/**
|
|
359
366
|
* The icon of the quick action button.
|
|
360
367
|
*/
|
|
361
|
-
this.icon = input(
|
|
368
|
+
this.icon = input(/* @ts-ignore */
|
|
369
|
+
...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
362
370
|
/**
|
|
363
371
|
* Whether the quick action button is disabled or not.
|
|
364
372
|
*/
|
|
365
|
-
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
373
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
366
374
|
/**
|
|
367
375
|
* The event emitted when the quick action button is clicked. It can be used to perform an action instead of showing the associated popover or drawer content.
|
|
368
376
|
*/
|
|
369
377
|
this.act = output();
|
|
370
|
-
this.actionContent = contentChild(DfTopNavQuickActionButtonContent, { ...(ngDevMode ? { debugName: "actionContent" } : {}), read: TemplateRef });
|
|
371
|
-
this.actionIcon = contentChild(DfTopNavQuickActionButtonIcon, { ...(ngDevMode ? { debugName: "actionIcon" } : {}), read: TemplateRef });
|
|
378
|
+
this.actionContent = contentChild(DfTopNavQuickActionButtonContent, { ...(ngDevMode ? { debugName: "actionContent" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
379
|
+
this.actionIcon = contentChild(DfTopNavQuickActionButtonIcon, { ...(ngDevMode ? { debugName: "actionIcon" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
372
380
|
this.popover = viewChild.required('popover');
|
|
373
|
-
this.isLg =
|
|
381
|
+
this.isLg = trackWindow('lg');
|
|
382
|
+
this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
|
|
374
383
|
/**
|
|
375
384
|
* Need to close the popover on smaller screen
|
|
376
385
|
*/
|
|
@@ -382,13 +391,14 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
|
382
391
|
}
|
|
383
392
|
});
|
|
384
393
|
}
|
|
385
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
386
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
394
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
395
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavQuickActionButton, isStandalone: true, selector: "df-topnav-quick-action-button", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { act: "act" }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionButton }], queries: [{ propertyName: "actionContent", first: true, predicate: DfTopNavQuickActionButtonContent, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "actionIcon", first: true, predicate: DfTopNavQuickActionButtonIcon, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
387
396
|
<button
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
[
|
|
397
|
+
dfButton
|
|
398
|
+
transparent
|
|
399
|
+
appearance="text"
|
|
400
|
+
[variant]="appearance()"
|
|
401
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
392
402
|
[attr.aria-label]="label()"
|
|
393
403
|
[ngbPopover]="actionContent()"
|
|
394
404
|
placement="bottom-end"
|
|
@@ -398,22 +408,24 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
|
398
408
|
#popover="ngbPopover"
|
|
399
409
|
[disabled]="disabled()"
|
|
400
410
|
(click)="act.emit()"
|
|
411
|
+
class="df-btn-icononly df-topnav-quick-action-btn"
|
|
401
412
|
>
|
|
402
413
|
<ng-template #dfTopNavQuickActionDefaultIcon>
|
|
403
|
-
<
|
|
414
|
+
<df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
|
|
404
415
|
</ng-template>
|
|
405
416
|
<ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
|
|
406
417
|
</button>
|
|
407
|
-
`, isInline: true, styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-quick-action-popover{z-index:2010}}\n"], dependencies: [{ kind: "component", type:
|
|
418
|
+
`, isInline: true, styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-quick-action-popover{z-index:2010}}\n"], dependencies: [{ kind: "component", type: DfButton, selector: "button[dfButton], a[dfButton]" }, { kind: "directive", type: NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "popoverContext", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
408
419
|
}
|
|
409
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButton, decorators: [{
|
|
410
421
|
type: Component,
|
|
411
422
|
args: [{ selector: 'df-topnav-quick-action-button', template: `
|
|
412
423
|
<button
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
[
|
|
424
|
+
dfButton
|
|
425
|
+
transparent
|
|
426
|
+
appearance="text"
|
|
427
|
+
[variant]="appearance()"
|
|
428
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
417
429
|
[attr.aria-label]="label()"
|
|
418
430
|
[ngbPopover]="actionContent()"
|
|
419
431
|
placement="bottom-end"
|
|
@@ -423,16 +435,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
423
435
|
#popover="ngbPopover"
|
|
424
436
|
[disabled]="disabled()"
|
|
425
437
|
(click)="act.emit()"
|
|
438
|
+
class="df-btn-icononly df-topnav-quick-action-btn"
|
|
426
439
|
>
|
|
427
440
|
<ng-template #dfTopNavQuickActionDefaultIcon>
|
|
428
|
-
<
|
|
441
|
+
<df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
|
|
429
442
|
</ng-template>
|
|
430
443
|
<ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
|
|
431
444
|
</button>
|
|
432
|
-
`, imports: [
|
|
445
|
+
`, imports: [DfButton, NgbPopover, NgTemplateOutlet, DfIcon], encapsulation: ViewEncapsulation.None, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionButton }], styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-quick-action-popover{z-index:2010}}\n"] }]
|
|
433
446
|
}], ctorParameters: () => [], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], act: [{ type: i0.Output, args: ["act"] }], actionContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionButtonContent), { ...{ read: TemplateRef }, isSignal: true }] }], actionIcon: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionButtonIcon), { ...{ read: TemplateRef }, isSignal: true }] }], popover: [{ type: i0.ViewChild, args: ['popover', { isSignal: true }] }] } });
|
|
434
447
|
|
|
435
|
-
// Warning: I am deeply sorry for the pyramid of doom that is the nested for loops in the template, but I could not find a better way to render the nested sidenav items and keep sidenav items contentChild queries working.
|
|
436
448
|
/**
|
|
437
449
|
* AppContainer is a simple wrapper component that provides a consistent layout for applications using the {@link DfTopNav} component.
|
|
438
450
|
*
|
|
@@ -442,24 +454,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
442
454
|
* @since 21.1
|
|
443
455
|
*/
|
|
444
456
|
class DfAppContainer {
|
|
445
|
-
isSideItem(item) {
|
|
446
|
-
return 'children' in item;
|
|
447
|
-
}
|
|
448
457
|
constructor() {
|
|
449
458
|
this.topnav = contentChild.required(DfTopNav);
|
|
450
|
-
this.sidenav = viewChild(
|
|
451
|
-
|
|
459
|
+
this.sidenav = viewChild(DfSidenavInput, /* @ts-ignore */
|
|
460
|
+
...(ngDevMode ? [{ debugName: "sidenav" }] : /* istanbul ignore next */ []));
|
|
461
|
+
this.sidenavContent = computed(() => this.topnav()['sidenavContent']() ?? [], /* @ts-ignore */
|
|
462
|
+
...(ngDevMode ? [{ debugName: "sidenavContent" }] : /* istanbul ignore next */ []));
|
|
452
463
|
this.drawerContainerActions = viewChild.required('drawerContainerActions');
|
|
453
464
|
// Sync the state of the sidenav with the topnav on initialization and whenever the state of the sidenav changes
|
|
454
465
|
effect(() => {
|
|
455
466
|
this.topnav().navExpanded.set(!this.sidenav()?.isMinimized());
|
|
456
467
|
});
|
|
457
468
|
effect(() => {
|
|
458
|
-
let sidenavMinimized = false;
|
|
459
|
-
let sidenav = undefined;
|
|
460
469
|
const topnavExpanded = this.topnav().navExpanded();
|
|
470
|
+
const sidenav = this.sidenav();
|
|
471
|
+
let sidenavMinimized = false;
|
|
461
472
|
untracked(() => {
|
|
462
|
-
sidenav = this.sidenav();
|
|
463
473
|
sidenavMinimized = sidenav?.isMinimized() ?? false;
|
|
464
474
|
});
|
|
465
475
|
// we need this condition to make sure to not call toggleMinimize when the drawer has not rendered yet (issue with the drawer toggleMinimze)
|
|
@@ -471,125 +481,43 @@ class DfAppContainer {
|
|
|
471
481
|
ngAfterContentInit() {
|
|
472
482
|
this.topnav()['inAppContainer'].set(true);
|
|
473
483
|
}
|
|
474
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
475
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
484
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAppContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
485
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfAppContainer, isStandalone: true, selector: "df-app-container", host: { classAttribute: "df-app-container" }, queries: [{ propertyName: "topnav", first: true, predicate: DfTopNav, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "sidenav", first: true, predicate: DfSidenavInput, descendants: true, isSignal: true }, { propertyName: "drawerContainerActions", first: true, predicate: ["drawerContainerActions"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
476
486
|
<ng-content select="df-topnav" />
|
|
477
487
|
<ng-content select="df-env-banner" />
|
|
478
488
|
<div class="df-app-container-content" #drawerContainerActions>
|
|
479
489
|
@if (sidenavContent().length) {
|
|
480
|
-
<df-sidenav
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
<df-sidenav-item [label]="element2.label()">
|
|
487
|
-
@for (element3 of element2.children(); track element3.label()) {
|
|
488
|
-
@if (isSideItem(element3)) {
|
|
489
|
-
<df-sidenav-item [label]="element3.label()">
|
|
490
|
-
@for (element4 of element3.children(); track element4.label()) {
|
|
491
|
-
@if (!isSideItem(element4)) {
|
|
492
|
-
<df-sidenav-link
|
|
493
|
-
[label]="element4.label()"
|
|
494
|
-
[linkPath]="element4.href()"
|
|
495
|
-
[routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
|
|
496
|
-
/>
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
</df-sidenav-item>
|
|
500
|
-
} @else {
|
|
501
|
-
<df-sidenav-link
|
|
502
|
-
[label]="element3.label()"
|
|
503
|
-
[linkPath]="element3.href()"
|
|
504
|
-
[routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
|
|
505
|
-
/>
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
</df-sidenav-item>
|
|
509
|
-
} @else {
|
|
510
|
-
<df-sidenav-link
|
|
511
|
-
[label]="element2.label()"
|
|
512
|
-
[linkPath]="element2.href()"
|
|
513
|
-
[routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
|
|
514
|
-
/>
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
</df-sidenav-item>
|
|
518
|
-
} @else {
|
|
519
|
-
<df-sidenav-link
|
|
520
|
-
[label]="element1.label()"
|
|
521
|
-
[linkPath]="element1.href()"
|
|
522
|
-
[routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
|
|
523
|
-
/>
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
</df-sidenav>
|
|
490
|
+
<df-sidenav-input
|
|
491
|
+
[className]="'df-sidenav-light-sky'"
|
|
492
|
+
[items]="sidenavContent()"
|
|
493
|
+
[searchable]="false"
|
|
494
|
+
[resizable]="false"
|
|
495
|
+
/>
|
|
527
496
|
}
|
|
528
497
|
<ng-content select="main" />
|
|
529
498
|
</div>
|
|
530
|
-
`, isInline: true, styles: [".df-app-container{height:100dvh;width:100%;display:flex;flex-direction:column}.df-app-container-content{flex-grow:1;display:flex;width:100%;position:relative;overflow:hidden}main{flex-grow:1;overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);scroll-padding-top:var(--df-spacing-5)}\n"], dependencies: [{ kind: "component", type:
|
|
499
|
+
`, isInline: true, styles: [".df-app-container{height:100dvh;width:100%;display:flex;flex-direction:column}.df-app-container-content{flex-grow:1;display:flex;width:100%;position:relative;overflow:hidden}main{flex-grow:1;overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);scroll-padding-top:var(--df-spacing-5)}\n"], dependencies: [{ kind: "component", type: DfSidenavInput, selector: "df-sidenav-input", inputs: ["items", "className", "searchable", "resizable", "collapsible", "enableMobile", "disableInitialDesktopAutoScroll"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
531
500
|
}
|
|
532
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAppContainer, decorators: [{
|
|
533
502
|
type: Component,
|
|
534
503
|
args: [{ selector: 'df-app-container', template: `
|
|
535
504
|
<ng-content select="df-topnav" />
|
|
536
505
|
<ng-content select="df-env-banner" />
|
|
537
506
|
<div class="df-app-container-content" #drawerContainerActions>
|
|
538
507
|
@if (sidenavContent().length) {
|
|
539
|
-
<df-sidenav
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
<df-sidenav-item [label]="element2.label()">
|
|
546
|
-
@for (element3 of element2.children(); track element3.label()) {
|
|
547
|
-
@if (isSideItem(element3)) {
|
|
548
|
-
<df-sidenav-item [label]="element3.label()">
|
|
549
|
-
@for (element4 of element3.children(); track element4.label()) {
|
|
550
|
-
@if (!isSideItem(element4)) {
|
|
551
|
-
<df-sidenav-link
|
|
552
|
-
[label]="element4.label()"
|
|
553
|
-
[linkPath]="element4.href()"
|
|
554
|
-
[routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
|
|
555
|
-
/>
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
</df-sidenav-item>
|
|
559
|
-
} @else {
|
|
560
|
-
<df-sidenav-link
|
|
561
|
-
[label]="element3.label()"
|
|
562
|
-
[linkPath]="element3.href()"
|
|
563
|
-
[routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
|
|
564
|
-
/>
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
</df-sidenav-item>
|
|
568
|
-
} @else {
|
|
569
|
-
<df-sidenav-link
|
|
570
|
-
[label]="element2.label()"
|
|
571
|
-
[linkPath]="element2.href()"
|
|
572
|
-
[routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
|
|
573
|
-
/>
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
</df-sidenav-item>
|
|
577
|
-
} @else {
|
|
578
|
-
<df-sidenav-link
|
|
579
|
-
[label]="element1.label()"
|
|
580
|
-
[linkPath]="element1.href()"
|
|
581
|
-
[routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
|
|
582
|
-
/>
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
</df-sidenav>
|
|
508
|
+
<df-sidenav-input
|
|
509
|
+
[className]="'df-sidenav-light-sky'"
|
|
510
|
+
[items]="sidenavContent()"
|
|
511
|
+
[searchable]="false"
|
|
512
|
+
[resizable]="false"
|
|
513
|
+
/>
|
|
586
514
|
}
|
|
587
515
|
<ng-content select="main" />
|
|
588
516
|
</div>
|
|
589
517
|
`, host: {
|
|
590
518
|
class: 'df-app-container'
|
|
591
|
-
},
|
|
592
|
-
}], ctorParameters: () => [], propDecorators: { topnav: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNav), { isSignal: true }] }], sidenav: [{ type: i0.ViewChild, args: [i0.forwardRef(() =>
|
|
519
|
+
}, encapsulation: ViewEncapsulation.None, imports: [DfSidenavInput], styles: [".df-app-container{height:100dvh;width:100%;display:flex;flex-direction:column}.df-app-container-content{flex-grow:1;display:flex;width:100%;position:relative;overflow:hidden}main{flex-grow:1;overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);scroll-padding-top:var(--df-spacing-5)}\n"] }]
|
|
520
|
+
}], ctorParameters: () => [], propDecorators: { topnav: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNav), { isSignal: true }] }], sidenav: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavInput), { isSignal: true }] }], drawerContainerActions: [{ type: i0.ViewChild, args: ['drawerContainerActions', { isSignal: true }] }] } });
|
|
593
521
|
|
|
594
522
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
595
523
|
/**
|
|
@@ -600,10 +528,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
600
528
|
* @since 21.1
|
|
601
529
|
*/
|
|
602
530
|
class DfTopNavQuickActionInTopNav {
|
|
603
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
604
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
531
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInTopNav, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
532
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionInTopNav, isStandalone: true, selector: "ng-template[dfTopNavQuickActionInTopNav]", ngImport: i0 }); }
|
|
605
533
|
}
|
|
606
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
534
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInTopNav, decorators: [{
|
|
607
535
|
type: Directive,
|
|
608
536
|
args: [{ selector: 'ng-template[dfTopNavQuickActionInTopNav]' }]
|
|
609
537
|
}] });
|
|
@@ -615,10 +543,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
615
543
|
* @since 21.1
|
|
616
544
|
*/
|
|
617
545
|
class DfTopNavQuickActionInDrawer {
|
|
618
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
619
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
546
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInDrawer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
547
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionInDrawer, isStandalone: true, selector: "ng-template[dfTopNavQuickActionInDrawer]", ngImport: i0 }); }
|
|
620
548
|
}
|
|
621
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
549
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInDrawer, decorators: [{
|
|
622
550
|
type: Directive,
|
|
623
551
|
args: [{ selector: 'ng-template[dfTopNavQuickActionInDrawer]' }]
|
|
624
552
|
}] });
|
|
@@ -630,25 +558,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
630
558
|
* It should be used inside a {@link DfTopNavQuickActions} component.
|
|
631
559
|
* It requires a {@link DfTopNavQuickActionInTopNav} template to be provided as content, which will be displayed in desktop. An optional {@link DfTopNavQuickActionInDrawer} template can also be provided, which will be displayed in mobile and tablet instead of the topnav template.
|
|
632
560
|
*
|
|
633
|
-
* See {@link https://design-factory.amadeus.net/components/topnav/
|
|
561
|
+
* See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
|
|
634
562
|
* @since 21.1
|
|
635
563
|
*/
|
|
636
564
|
class DfTopNavQuickAction extends DfTopNavQuickActionElement {
|
|
637
565
|
constructor() {
|
|
638
566
|
super(...arguments);
|
|
639
567
|
this.content = contentChild.required(DfTopNavQuickActionInTopNav, { read: TemplateRef });
|
|
640
|
-
this.drawerContent = contentChild(DfTopNavQuickActionInDrawer, { ...(ngDevMode ? { debugName: "drawerContent" } : {}), read: TemplateRef });
|
|
568
|
+
this.drawerContent = contentChild(DfTopNavQuickActionInDrawer, { ...(ngDevMode ? { debugName: "drawerContent" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
569
|
+
this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
|
|
641
570
|
}
|
|
642
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
643
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
571
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickAction, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
572
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavQuickAction, isStandalone: true, selector: "df-topnav-quick-action", providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }], queries: [{ propertyName: "content", first: true, predicate: DfTopNavQuickActionInTopNav, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "drawerContent", first: true, predicate: DfTopNavQuickActionInDrawer, descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: ` <ng-container *ngTemplateOutlet="content()" /> `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
644
573
|
}
|
|
645
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
574
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickAction, decorators: [{
|
|
646
575
|
type: Component,
|
|
647
576
|
args: [{
|
|
648
577
|
selector: 'df-topnav-quick-action',
|
|
649
578
|
template: ` <ng-container *ngTemplateOutlet="content()" /> `,
|
|
650
579
|
imports: [NgTemplateOutlet],
|
|
651
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
652
580
|
providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }]
|
|
653
581
|
}]
|
|
654
582
|
}], propDecorators: { content: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionInTopNav), { ...{ read: TemplateRef }, isSignal: true }] }], drawerContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionInDrawer), { ...{ read: TemplateRef }, isSignal: true }] }] } });
|
|
@@ -661,10 +589,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
661
589
|
* @since 21.1
|
|
662
590
|
*/
|
|
663
591
|
class DfTopNavQuickActionSearchInput {
|
|
664
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
665
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
592
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
593
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionSearchInput, isStandalone: true, selector: "input[dfTopNavQuickActionSearchInput]", host: { attributes: { "type": "search" }, classAttribute: "df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon" }, ngImport: i0, template: ``, isInline: true }); }
|
|
666
594
|
}
|
|
667
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearchInput, decorators: [{
|
|
668
596
|
type: Component,
|
|
669
597
|
args: [{
|
|
670
598
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
@@ -673,7 +601,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
673
601
|
type: 'search',
|
|
674
602
|
class: 'df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon'
|
|
675
603
|
},
|
|
676
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
677
604
|
template: ``
|
|
678
605
|
}]
|
|
679
606
|
}] });
|
|
@@ -682,7 +609,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
682
609
|
*
|
|
683
610
|
* It should be used inside a {@link DfTopNavQuickActions} component and contain a ng-template with an input {@link DfTopNavQuickActionSearchInput}.
|
|
684
611
|
*
|
|
685
|
-
* See {@link https://design-factory.amadeus.net/components/topnav/
|
|
612
|
+
* See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
|
|
686
613
|
* @since 21.1
|
|
687
614
|
*/
|
|
688
615
|
class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
|
|
@@ -695,26 +622,27 @@ class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
|
|
|
695
622
|
* It is required to set it if you have more than one global search in your page, to allow assistive technologies to differentiate between them.
|
|
696
623
|
* See [ARIA guidelines](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/search_role) for more information.
|
|
697
624
|
*/
|
|
698
|
-
this.ariaLabel = input(
|
|
625
|
+
this.ariaLabel = input(/* @ts-ignore */
|
|
626
|
+
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
699
627
|
}
|
|
700
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
701
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "
|
|
628
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearch, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
629
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavQuickActionSearch, isStandalone: true, selector: "df-topnav-quick-action-search", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "search" }, properties: { "attr.aria-label": "ariaLabel()" } }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }], queries: [{ propertyName: "templateRef", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
702
630
|
<div class="df-topnav-quick-action-search-container input-group">
|
|
703
631
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
704
|
-
<
|
|
632
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
705
633
|
</div>
|
|
706
634
|
<ng-container *ngTemplateOutlet="templateRef()" />
|
|
707
635
|
</div>
|
|
708
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }
|
|
636
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }] }); }
|
|
709
637
|
}
|
|
710
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearch, decorators: [{
|
|
711
639
|
type: Component,
|
|
712
640
|
args: [{
|
|
713
641
|
selector: 'df-topnav-quick-action-search',
|
|
714
642
|
template: `
|
|
715
643
|
<div class="df-topnav-quick-action-search-container input-group">
|
|
716
644
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
717
|
-
<
|
|
645
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
718
646
|
</div>
|
|
719
647
|
<ng-container *ngTemplateOutlet="templateRef()" />
|
|
720
648
|
</div>
|
|
@@ -723,8 +651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
723
651
|
role: 'search',
|
|
724
652
|
'[attr.aria-label]': 'ariaLabel()'
|
|
725
653
|
},
|
|
726
|
-
imports: [NgTemplateOutlet],
|
|
727
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
654
|
+
imports: [NgTemplateOutlet, DfIcon],
|
|
728
655
|
providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }]
|
|
729
656
|
}]
|
|
730
657
|
}], propDecorators: { templateRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
@@ -732,7 +659,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
732
659
|
/**
|
|
733
660
|
* The TopNav quick actions component, used to display a list of quick action buttons in the TopNav. On large screens, the buttons are displayed inline, while on smaller screens, they are displayed in a drawer.
|
|
734
661
|
*
|
|
735
|
-
* See {@link https://design-factory.amadeus.net/components/topnav/
|
|
662
|
+
* See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
|
|
736
663
|
* @since 21.1
|
|
737
664
|
*/
|
|
738
665
|
class DfTopNavQuickActions {
|
|
@@ -751,33 +678,51 @@ class DfTopNavQuickActions {
|
|
|
751
678
|
actionBtn.act.emit();
|
|
752
679
|
}
|
|
753
680
|
}
|
|
681
|
+
actionLabelToId(actionBtn) {
|
|
682
|
+
return 'df-drawer-button-' + actionBtn.label().toLocaleLowerCase().replace(/ /g, '-');
|
|
683
|
+
}
|
|
754
684
|
constructor() {
|
|
755
685
|
/**
|
|
756
686
|
* When true, the quick action buttons will be displayed in reversed order in the drawer on smaller screens. This is useful when the quick actions are defined in the template in the same order as the navigation items, so that the first quick action is closest to the navigation on smaller screens. Defaults to true.
|
|
757
687
|
*/
|
|
758
|
-
this.reversedVertical = input(true,
|
|
688
|
+
this.reversedVertical = input(true, /* @ts-ignore */
|
|
689
|
+
...(ngDevMode ? [{ debugName: "reversedVertical" }] : /* istanbul ignore next */ []));
|
|
759
690
|
/**
|
|
760
691
|
* The container element in which the drawer will be rendered on smaller screens. By default, it will try to render in the drawer container provided by the app container, and if not available, it will render in the body element. This input can be used to specify a different container element for the drawer.
|
|
761
692
|
*/
|
|
762
|
-
this.tabletDrawerContainer = input(
|
|
693
|
+
this.tabletDrawerContainer = input(/* @ts-ignore */
|
|
694
|
+
...(ngDevMode ? [undefined, { debugName: "tabletDrawerContainer" }] : /* istanbul ignore next */ []));
|
|
763
695
|
this.appContainer = inject(DfAppContainer, { optional: true });
|
|
764
|
-
this._actionElements = contentChildren(DF_TOPNAV_QUICK_ACTION_ELEMENT,
|
|
765
|
-
|
|
696
|
+
this._actionElements = contentChildren(DF_TOPNAV_QUICK_ACTION_ELEMENT, /* @ts-ignore */
|
|
697
|
+
...(ngDevMode ? [{ debugName: "_actionElements" }] : /* istanbul ignore next */ []));
|
|
698
|
+
this.drawer = viewChild('drawer', { ...(ngDevMode ? { debugName: "drawer" } : /* istanbul ignore next */ {}), read: DfDrawer });
|
|
766
699
|
this.document = inject(DOCUMENT);
|
|
700
|
+
this.selectedBtn = viewChild('selectedBtn', /* @ts-ignore */
|
|
701
|
+
...(ngDevMode ? [{ debugName: "selectedBtn" }] : /* istanbul ignore next */ []));
|
|
702
|
+
this.drawerButtons = viewChildren('drawerButton', /* @ts-ignore */
|
|
703
|
+
...(ngDevMode ? [{ debugName: "drawerButtons" }] : /* istanbul ignore next */ []));
|
|
767
704
|
// Responsive signals
|
|
768
|
-
this.isMd =
|
|
769
|
-
this.isLg =
|
|
705
|
+
this.isMd = trackWindow('md');
|
|
706
|
+
this.isLg = trackWindow('lg');
|
|
770
707
|
// the drawer container is the app container drawer container if available, otherwise it falls back to the body element. On md screens, it can be overridden by the tabletDrawerContainer input
|
|
771
708
|
this.drawerContainer = computed(() => this.isMd()
|
|
772
709
|
? (this.tabletDrawerContainer() ??
|
|
773
710
|
this.appContainer?.['drawerContainerActions']?.()?.nativeElement ??
|
|
774
711
|
this.document.body)
|
|
775
|
-
: this.document.body,
|
|
776
|
-
|
|
777
|
-
this.
|
|
778
|
-
|
|
712
|
+
: this.document.body, /* @ts-ignore */
|
|
713
|
+
...(ngDevMode ? [{ debugName: "drawerContainer" }] : /* istanbul ignore next */ []));
|
|
714
|
+
this.actionElements = computed(() => (this.reversedVertical() && !this.isLg() ? [...this._actionElements()].reverse() : this._actionElements()).filter((el) => !(el instanceof DfTopNavQuickActionSearch)), /* @ts-ignore */
|
|
715
|
+
...(ngDevMode ? [{ debugName: "actionElements" }] : /* istanbul ignore next */ []));
|
|
716
|
+
this.searchElement = computed(() => this._actionElements().find((el) => el instanceof DfTopNavQuickActionSearch), /* @ts-ignore */
|
|
717
|
+
...(ngDevMode ? [{ debugName: "searchElement" }] : /* istanbul ignore next */ []));
|
|
718
|
+
this.menuExpanded = signal(false, /* @ts-ignore */
|
|
719
|
+
...(ngDevMode ? [{ debugName: "menuExpanded" }] : /* istanbul ignore next */ []));
|
|
779
720
|
// the selected quick action in the
|
|
780
|
-
this.selectedQuickAction = signal(undefined,
|
|
721
|
+
this.selectedQuickAction = signal(undefined, /* @ts-ignore */
|
|
722
|
+
...(ngDevMode ? [{ debugName: "selectedQuickAction" }] : /* istanbul ignore next */ []));
|
|
723
|
+
this.prevSelectedQuickAction = signal(undefined, /* @ts-ignore */
|
|
724
|
+
...(ngDevMode ? [{ debugName: "prevSelectedQuickAction" }] : /* istanbul ignore next */ []));
|
|
725
|
+
this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
|
|
781
726
|
// resets the menu state when resizing to large screens, as the drawer will be closed and the selected button will be hidden
|
|
782
727
|
effect(() => {
|
|
783
728
|
if (this.isLg()) {
|
|
@@ -789,9 +734,19 @@ class DfTopNavQuickActions {
|
|
|
789
734
|
this.selectedQuickAction.set(undefined);
|
|
790
735
|
}
|
|
791
736
|
});
|
|
737
|
+
effect(() => {
|
|
738
|
+
this.selectedBtn()?.nativeElement?.focus?.();
|
|
739
|
+
});
|
|
740
|
+
effect(() => {
|
|
741
|
+
if (this.prevSelectedQuickAction() && this.drawerButtons().length > 0) {
|
|
742
|
+
const prevSelectedBtn = this.drawerButtons().find((btn) => btn.nativeElement.id === this.actionLabelToId(this.prevSelectedQuickAction()));
|
|
743
|
+
prevSelectedBtn?.nativeElement?.focus?.();
|
|
744
|
+
this.prevSelectedQuickAction.set(undefined);
|
|
745
|
+
}
|
|
746
|
+
});
|
|
792
747
|
}
|
|
793
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
794
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
748
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
749
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavQuickActions, isStandalone: true, selector: "df-topnav-quick-actions", inputs: { reversedVertical: { classPropertyName: "reversedVertical", publicName: "reversedVertical", isSignal: true, isRequired: false, transformFunction: null }, tabletDrawerContainer: { classPropertyName: "tabletDrawerContainer", publicName: "tabletDrawerContainer", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "style.display": "'contents'" } }, queries: [{ propertyName: "_actionElements", predicate: DF_TOPNAV_QUICK_ACTION_ELEMENT, isSignal: true }], viewQueries: [{ propertyName: "drawer", first: true, predicate: ["drawer"], descendants: true, read: DfDrawer, isSignal: true }, { propertyName: "selectedBtn", first: true, predicate: ["selectedBtn"], descendants: true, isSignal: true }, { propertyName: "drawerButtons", predicate: ["drawerButton"], descendants: true, isSignal: true }], ngImport: i0, template: ` <ng-template #topnavQuickActions>
|
|
795
750
|
<ng-content />
|
|
796
751
|
</ng-template>
|
|
797
752
|
<div class="df-topnav-quick-actions">
|
|
@@ -799,18 +754,18 @@ class DfTopNavQuickActions {
|
|
|
799
754
|
<ng-container *ngTemplateOutlet="topnavQuickActions" />
|
|
800
755
|
} @else {
|
|
801
756
|
<button
|
|
802
|
-
|
|
803
|
-
|
|
757
|
+
dfIconButton
|
|
758
|
+
appearance="text"
|
|
759
|
+
variant="neutral"
|
|
760
|
+
transparent
|
|
761
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
804
762
|
aria-label="Toggle quick actions menu"
|
|
805
763
|
i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
|
|
806
764
|
(click)="menuExpanded.set(!menuExpanded())"
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
812
|
-
></span>
|
|
813
|
-
</button>
|
|
765
|
+
class="fal"
|
|
766
|
+
[class.fa-xmark]="menuExpanded()"
|
|
767
|
+
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
768
|
+
></button>
|
|
814
769
|
<df-drawer
|
|
815
770
|
class="df-topnav-drawer-host"
|
|
816
771
|
position="inline-end"
|
|
@@ -826,8 +781,13 @@ class DfTopNavQuickActions {
|
|
|
826
781
|
>
|
|
827
782
|
@let selected = selectedQuickAction();
|
|
828
783
|
@if (selected) {
|
|
829
|
-
<button
|
|
830
|
-
|
|
784
|
+
<button
|
|
785
|
+
type="button"
|
|
786
|
+
class="df-topnav-drawer-button"
|
|
787
|
+
(click)="prevSelectedQuickAction.set(selectedQuickAction()); selectedQuickAction.set(undefined)"
|
|
788
|
+
#selectedBtn
|
|
789
|
+
>
|
|
790
|
+
<df-icon class="fal fa-arrow-left df-topnav-drawer-button-icon" />
|
|
831
791
|
<span>{{ selected.label() }}</span>
|
|
832
792
|
</button>
|
|
833
793
|
<hr class="df-topnav-drawer-divider" />
|
|
@@ -842,7 +802,7 @@ class DfTopNavQuickActions {
|
|
|
842
802
|
[attr.aria-label]="searchElement()!.ariaLabel()"
|
|
843
803
|
>
|
|
844
804
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
845
|
-
<
|
|
805
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
846
806
|
</div>
|
|
847
807
|
<ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
|
|
848
808
|
</div>
|
|
@@ -854,17 +814,18 @@ class DfTopNavQuickActions {
|
|
|
854
814
|
class="df-topnav-drawer-button"
|
|
855
815
|
(click)="clickQuickAction(actionElement)"
|
|
856
816
|
[disabled]="actionElement.disabled()"
|
|
817
|
+
#drawerButton
|
|
818
|
+
[id]="actionLabelToId(actionElement)"
|
|
857
819
|
>
|
|
858
820
|
<ng-template #dfQuickActionDefaultIcon>
|
|
859
|
-
<
|
|
821
|
+
<df-icon class="fal" [class]="actionElement.icon()" />
|
|
860
822
|
</ng-template>
|
|
861
823
|
<ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
|
|
862
824
|
<span>{{ actionElement.label() }}</span>
|
|
863
825
|
@if (actionElement['actionContent']()) {
|
|
864
|
-
<
|
|
826
|
+
<df-icon
|
|
865
827
|
class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
|
|
866
|
-
|
|
867
|
-
></span>
|
|
828
|
+
/>
|
|
868
829
|
}
|
|
869
830
|
</button>
|
|
870
831
|
} @else {
|
|
@@ -875,9 +836,9 @@ class DfTopNavQuickActions {
|
|
|
875
836
|
}
|
|
876
837
|
</df-drawer>
|
|
877
838
|
}
|
|
878
|
-
</div>`, isInline: true, styles: [".df-topnav-quick-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--df-spacing-5)}.df-drawer.df-topnav-quick-actions-drawer{position:absolute!important;transition:none}.df-drawer.df-topnav-quick-actions-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-drawer.df-topnav-quick-actions-drawer-mobile{--df-drawer-size: 100vw;--df-drawer-max-size: 100vw;top:var(--df-navbar-height, 3.5rem)!important;height:calc(100dvh - var(--df-navbar-height, 3.5rem))!important}.df-drawer.df-topnav-quick-actions-drawer{transition:none;display:flex;flex-direction:column;padding:var(--df-spacing-5)
|
|
839
|
+
</div>`, isInline: true, styles: [".df-topnav-quick-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--df-spacing-5)}.df-dropdown .df-dropdown-item.df-topnav-quick-action-dropdown-item{display:flex;gap:var(--df-spacing-3)}.df-drawer.df-topnav-quick-actions-drawer{position:absolute!important;transition:none}.df-drawer.df-topnav-quick-actions-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-drawer.df-topnav-quick-actions-drawer-mobile{--df-drawer-size: 100vw;--df-drawer-max-size: 100vw;top:var(--df-navbar-height, 3.5rem)!important;height:calc(100dvh - var(--df-navbar-height, 3.5rem))!important}.df-drawer.df-topnav-quick-actions-drawer{transition:none;display:flex;flex-direction:column;padding:var(--df-spacing-5);background-color:var(--df-color-primary-subtle-background);overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background)}.df-drawer .df-topnav-drawer-buttons-container{display:flex;flex-direction:column;gap:1px}.df-drawer .df-topnav-drawer-button{height:2.5rem;display:flex;align-items:center;padding-inline:var(--df-spacing-5);border-radius:var(--df-borderRadius-main-medium);gap:var(--df-spacing-3);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;background-color:var(--df-color-primary-subtle-background);color:var(--df-color-neutral-alt-default-foreground);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-drawer .df-topnav-drawer-button{transition:none}}.df-drawer .df-topnav-drawer-button:not(:disabled) .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-default-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):focus-visible{z-index:1;box-shadow:0 0 0 2px var(--df-color-primary-subtle-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:disabled{cursor:not-allowed;color:var(--df-button-text-basic-color-disabled-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover{color:var(--df-color-neutral-alt-hovered-foreground);background-color:var(--df-color-primary-alt-hovered-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-hovered-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-hovered-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):active{color:var(--df-color-neutral-alt-pressed-foreground);background-color:var(--df-color-primary-alt-pressed-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):active:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-pressed-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):active .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-pressed-foreground)}.df-drawer .df-topnav-drawer-button-icon-end{margin-inline-start:auto}.df-drawer .df-topnav-drawer-divider{margin-top:var(--df-spacing-2);margin-bottom:var(--df-spacing-5);border-color:var(--df-color-neutral-alt-default-border)}.df-drawer .df-topnav-quick-action-dropdown-drawer{position:relative}.df-drawer .df-topnav-quick-action-dropdown-drawer .df-dropdown{min-width:100%}.df-topnav-drawer-host{display:none}\n"], dependencies: [{ kind: "component", type: DfDrawer, selector: "df-drawer", inputs: ["className", "bodyScroll", "backdrop", "closeOnBackdropClick", "container", "size", "resizable", "visible", "keepInDom", "configuration", "position", "focusOnInit"], outputs: ["sizeChange", "visibleChange", "minimizedChange", "maximizedChange", "resizingChange", "minSize", "maxSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIconButton, selector: "button[dfIconButton], a[dfIconButton]" }, { kind: "component", type: DfIcon, selector: "df-icon" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
879
840
|
}
|
|
880
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
841
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActions, decorators: [{
|
|
881
842
|
type: Component,
|
|
882
843
|
args: [{ selector: 'df-topnav-quick-actions', host: {
|
|
883
844
|
'[style.display]': "'contents'",
|
|
@@ -890,18 +851,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
890
851
|
<ng-container *ngTemplateOutlet="topnavQuickActions" />
|
|
891
852
|
} @else {
|
|
892
853
|
<button
|
|
893
|
-
|
|
894
|
-
|
|
854
|
+
dfIconButton
|
|
855
|
+
appearance="text"
|
|
856
|
+
variant="neutral"
|
|
857
|
+
transparent
|
|
858
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
895
859
|
aria-label="Toggle quick actions menu"
|
|
896
860
|
i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
|
|
897
861
|
(click)="menuExpanded.set(!menuExpanded())"
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
903
|
-
></span>
|
|
904
|
-
</button>
|
|
862
|
+
class="fal"
|
|
863
|
+
[class.fa-xmark]="menuExpanded()"
|
|
864
|
+
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
865
|
+
></button>
|
|
905
866
|
<df-drawer
|
|
906
867
|
class="df-topnav-drawer-host"
|
|
907
868
|
position="inline-end"
|
|
@@ -917,8 +878,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
917
878
|
>
|
|
918
879
|
@let selected = selectedQuickAction();
|
|
919
880
|
@if (selected) {
|
|
920
|
-
<button
|
|
921
|
-
|
|
881
|
+
<button
|
|
882
|
+
type="button"
|
|
883
|
+
class="df-topnav-drawer-button"
|
|
884
|
+
(click)="prevSelectedQuickAction.set(selectedQuickAction()); selectedQuickAction.set(undefined)"
|
|
885
|
+
#selectedBtn
|
|
886
|
+
>
|
|
887
|
+
<df-icon class="fal fa-arrow-left df-topnav-drawer-button-icon" />
|
|
922
888
|
<span>{{ selected.label() }}</span>
|
|
923
889
|
</button>
|
|
924
890
|
<hr class="df-topnav-drawer-divider" />
|
|
@@ -933,7 +899,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
933
899
|
[attr.aria-label]="searchElement()!.ariaLabel()"
|
|
934
900
|
>
|
|
935
901
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
936
|
-
<
|
|
902
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
937
903
|
</div>
|
|
938
904
|
<ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
|
|
939
905
|
</div>
|
|
@@ -945,17 +911,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
945
911
|
class="df-topnav-drawer-button"
|
|
946
912
|
(click)="clickQuickAction(actionElement)"
|
|
947
913
|
[disabled]="actionElement.disabled()"
|
|
914
|
+
#drawerButton
|
|
915
|
+
[id]="actionLabelToId(actionElement)"
|
|
948
916
|
>
|
|
949
917
|
<ng-template #dfQuickActionDefaultIcon>
|
|
950
|
-
<
|
|
918
|
+
<df-icon class="fal" [class]="actionElement.icon()" />
|
|
951
919
|
</ng-template>
|
|
952
920
|
<ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
|
|
953
921
|
<span>{{ actionElement.label() }}</span>
|
|
954
922
|
@if (actionElement['actionContent']()) {
|
|
955
|
-
<
|
|
923
|
+
<df-icon
|
|
956
924
|
class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
|
|
957
|
-
|
|
958
|
-
></span>
|
|
925
|
+
/>
|
|
959
926
|
}
|
|
960
927
|
</button>
|
|
961
928
|
} @else {
|
|
@@ -966,8 +933,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
966
933
|
}
|
|
967
934
|
</df-drawer>
|
|
968
935
|
}
|
|
969
|
-
</div>`, imports: [DfDrawer, NgTemplateOutlet,
|
|
970
|
-
}], ctorParameters: () => [], propDecorators: { reversedVertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "reversedVertical", required: false }] }], tabletDrawerContainer: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabletDrawerContainer", required: false }] }], _actionElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_QUICK_ACTION_ELEMENT), { isSignal: true }] }], drawer: [{ type: i0.ViewChild, args: ['drawer', { ...{ read: DfDrawer }, isSignal: true }] }] } });
|
|
936
|
+
</div>`, imports: [DfDrawer, NgTemplateOutlet, DfIconButton, DfIcon], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-quick-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--df-spacing-5)}.df-dropdown .df-dropdown-item.df-topnav-quick-action-dropdown-item{display:flex;gap:var(--df-spacing-3)}.df-drawer.df-topnav-quick-actions-drawer{position:absolute!important;transition:none}.df-drawer.df-topnav-quick-actions-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-drawer.df-topnav-quick-actions-drawer-mobile{--df-drawer-size: 100vw;--df-drawer-max-size: 100vw;top:var(--df-navbar-height, 3.5rem)!important;height:calc(100dvh - var(--df-navbar-height, 3.5rem))!important}.df-drawer.df-topnav-quick-actions-drawer{transition:none;display:flex;flex-direction:column;padding:var(--df-spacing-5);background-color:var(--df-color-primary-subtle-background);overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background)}.df-drawer .df-topnav-drawer-buttons-container{display:flex;flex-direction:column;gap:1px}.df-drawer .df-topnav-drawer-button{height:2.5rem;display:flex;align-items:center;padding-inline:var(--df-spacing-5);border-radius:var(--df-borderRadius-main-medium);gap:var(--df-spacing-3);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;background-color:var(--df-color-primary-subtle-background);color:var(--df-color-neutral-alt-default-foreground);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-drawer .df-topnav-drawer-button{transition:none}}.df-drawer .df-topnav-drawer-button:not(:disabled) .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-default-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):focus-visible{z-index:1;box-shadow:0 0 0 2px var(--df-color-primary-subtle-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:disabled{cursor:not-allowed;color:var(--df-button-text-basic-color-disabled-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover{color:var(--df-color-neutral-alt-hovered-foreground);background-color:var(--df-color-primary-alt-hovered-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-hovered-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-hovered-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):active{color:var(--df-color-neutral-alt-pressed-foreground);background-color:var(--df-color-primary-alt-pressed-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):active:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-pressed-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):active .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-pressed-foreground)}.df-drawer .df-topnav-drawer-button-icon-end{margin-inline-start:auto}.df-drawer .df-topnav-drawer-divider{margin-top:var(--df-spacing-2);margin-bottom:var(--df-spacing-5);border-color:var(--df-color-neutral-alt-default-border)}.df-drawer .df-topnav-quick-action-dropdown-drawer{position:relative}.df-drawer .df-topnav-quick-action-dropdown-drawer .df-dropdown{min-width:100%}.df-topnav-drawer-host{display:none}\n"] }]
|
|
937
|
+
}], ctorParameters: () => [], propDecorators: { reversedVertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "reversedVertical", required: false }] }], tabletDrawerContainer: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabletDrawerContainer", required: false }] }], _actionElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_QUICK_ACTION_ELEMENT), { isSignal: true }] }], drawer: [{ type: i0.ViewChild, args: ['drawer', { ...{ read: DfDrawer }, isSignal: true }] }], selectedBtn: [{ type: i0.ViewChild, args: ['selectedBtn', { isSignal: true }] }], drawerButtons: [{ type: i0.ViewChildren, args: ['drawerButton', { isSignal: true }] }] } });
|
|
971
938
|
|
|
972
939
|
/**
|
|
973
940
|
* TopNav (Top Navigation Bar) provides consistent access to product-level navigation and global actions across Amadeus applications.
|
|
@@ -981,39 +948,43 @@ class DfTopNav {
|
|
|
981
948
|
constructor() {
|
|
982
949
|
/**
|
|
983
950
|
* The style of the TopNav main nav, which determines the applied styles. Can be either "basic" or "mirror".
|
|
984
|
-
*
|
|
951
|
+
* If navigation links are present this input is ignored and the applied style will be determined based on the number of navigation links and the superheader input.
|
|
985
952
|
*/
|
|
986
|
-
this.mainNavStyle = input(
|
|
987
|
-
|
|
988
|
-
* The style of the TopNav secondary nav, which determines the applied styles. Can be either "basic" or "mirror".
|
|
989
|
-
* When not provided, the applied mode will be opposite to the main nav style.
|
|
990
|
-
*/
|
|
991
|
-
this.secondaryNavStyle = input(...(ngDevMode ? [undefined, { debugName: "secondaryNavStyle" }] : []));
|
|
953
|
+
this.mainNavStyle = input(/* @ts-ignore */
|
|
954
|
+
...(ngDevMode ? [undefined, { debugName: "mainNavStyle" }] : /* istanbul ignore next */ []));
|
|
992
955
|
/**
|
|
993
956
|
* The mode of the TopNav, which determines the behavior of the navigation. Can be either "sidenav" or "dropdown".
|
|
994
957
|
*/
|
|
995
|
-
this.mode = input('sidenav',
|
|
958
|
+
this.mode = input('sidenav', /* @ts-ignore */
|
|
959
|
+
...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
996
960
|
/**
|
|
997
961
|
* Indicates whether the navigation menu is expanded or collapsed. This is used to control the visibility of the sidenav menu when the TopNav is in "sidenav" mode on smaller screens. When set to true, the sidenav menu will be visible, and when set to false, it will be hidden.
|
|
998
962
|
*/
|
|
999
|
-
this.navExpanded = model(false,
|
|
963
|
+
this.navExpanded = model(false, /* @ts-ignore */
|
|
964
|
+
...(ngDevMode ? [{ debugName: "navExpanded" }] : /* istanbul ignore next */ []));
|
|
1000
965
|
/**
|
|
1001
966
|
* When set to true, the superheader layout will be applied, which moves the navigation to a second line and applies the "mirror" style to it. When not provided, the superheader layout will be applied automatically when there are more than 5 navigation links and the screen size is large or bigger.
|
|
1002
967
|
*/
|
|
1003
|
-
this.superheader = input(
|
|
968
|
+
this.superheader = input(/* @ts-ignore */
|
|
969
|
+
...(ngDevMode ? [undefined, { debugName: "superheader" }] : /* istanbul ignore next */ []));
|
|
1004
970
|
/**
|
|
1005
971
|
* When set to true, the toggle button will be always shown. Useful when the TopNav is used without any navigation links but the toggle button is still needed to access other content.
|
|
1006
972
|
* When not provided, the toggle button will be shown automatically when there are navigation links and the screen size is smaller than large.
|
|
1007
973
|
*/
|
|
1008
|
-
this.showToggle = input(false, { ...(ngDevMode ? { debugName: "showToggle" } : {}), transform: booleanAttribute });
|
|
1009
|
-
this.navigationContainer = contentChild(DfTopNavNavigation,
|
|
1010
|
-
|
|
1011
|
-
this.
|
|
1012
|
-
|
|
974
|
+
this.showToggle = input(false, { ...(ngDevMode ? { debugName: "showToggle" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
975
|
+
this.navigationContainer = contentChild(DfTopNavNavigation, /* @ts-ignore */
|
|
976
|
+
...(ngDevMode ? [{ debugName: "navigationContainer" }] : /* istanbul ignore next */ []));
|
|
977
|
+
this.navElements = computed(() => this.navigationContainer()?.['childrenElements']?.() ?? [], /* @ts-ignore */
|
|
978
|
+
...(ngDevMode ? [{ debugName: "navElements" }] : /* istanbul ignore next */ []));
|
|
979
|
+
this.navActions = contentChild(DfTopNavQuickActions, /* @ts-ignore */
|
|
980
|
+
...(ngDevMode ? [{ debugName: "navActions" }] : /* istanbul ignore next */ []));
|
|
981
|
+
this.inAppContainer = signal(false, /* @ts-ignore */
|
|
982
|
+
...(ngDevMode ? [{ debugName: "inAppContainer" }] : /* istanbul ignore next */ []));
|
|
1013
983
|
/**
|
|
1014
984
|
* Signal that indicates when the links need to be displayed in the topnav instead of the navbar.
|
|
1015
985
|
*/
|
|
1016
|
-
this.displayLinksInNav = computed(() => this.isXl() || (this.appliedSuperheader() && this.isLg()),
|
|
986
|
+
this.displayLinksInNav = computed(() => this.isXl() || (this.appliedSuperheader() && this.isLg()), /* @ts-ignore */
|
|
987
|
+
...(ngDevMode ? [{ debugName: "displayLinksInNav" }] : /* istanbul ignore next */ []));
|
|
1017
988
|
/**
|
|
1018
989
|
* The content of the sidenav, which is derived from the TopNav navigation elements.
|
|
1019
990
|
*/
|
|
@@ -1045,26 +1016,36 @@ class DfTopNav {
|
|
|
1045
1016
|
const mapNavElementToSideNavItem = (el) => {
|
|
1046
1017
|
if (el instanceof DfTopNavNavigationLink) {
|
|
1047
1018
|
return {
|
|
1048
|
-
label: el.label,
|
|
1049
|
-
|
|
1050
|
-
|
|
1019
|
+
label: el.label(),
|
|
1020
|
+
linkPath: el['resolvedLink'](),
|
|
1021
|
+
active: el['externalLink']() ? false : undefined,
|
|
1022
|
+
routerLinkActiveOptions: el.routerLinkActiveOptions()
|
|
1051
1023
|
};
|
|
1052
1024
|
}
|
|
1053
1025
|
{
|
|
1054
1026
|
return {
|
|
1055
|
-
label: el.label,
|
|
1056
|
-
children:
|
|
1027
|
+
label: el.label(),
|
|
1028
|
+
children: (el['childElements']() ?? []).map(mapNavElementToSideNavItem)
|
|
1057
1029
|
};
|
|
1058
1030
|
}
|
|
1059
1031
|
};
|
|
1060
1032
|
return navElements.map(mapNavElementToSideNavItem);
|
|
1061
|
-
},
|
|
1033
|
+
}, /* @ts-ignore */
|
|
1034
|
+
...(ngDevMode ? [{ debugName: "sidenavContent" }] : /* istanbul ignore next */ []));
|
|
1062
1035
|
// Responsive signals
|
|
1063
|
-
this.isLg =
|
|
1064
|
-
this.isXl =
|
|
1065
|
-
this.appliedSuperheader = computed(() => this.superheader() ?? this.navElements().length > 5,
|
|
1066
|
-
|
|
1067
|
-
this.
|
|
1036
|
+
this.isLg = trackWindow('lg');
|
|
1037
|
+
this.isXl = trackWindow('xl');
|
|
1038
|
+
this.appliedSuperheader = computed(() => this.superheader() ?? this.navElements().length > 5, /* @ts-ignore */
|
|
1039
|
+
...(ngDevMode ? [{ debugName: "appliedSuperheader" }] : /* istanbul ignore next */ []));
|
|
1040
|
+
this.mainNavAppliedStyle = computed(() => {
|
|
1041
|
+
if (this.navElements().length > 0) {
|
|
1042
|
+
return this.appliedSuperheader() ? 'basic' : 'mirror';
|
|
1043
|
+
}
|
|
1044
|
+
else {
|
|
1045
|
+
return this.mainNavStyle() ?? 'basic';
|
|
1046
|
+
}
|
|
1047
|
+
}, /* @ts-ignore */
|
|
1048
|
+
...(ngDevMode ? [{ debugName: "mainNavAppliedStyle" }] : /* istanbul ignore next */ []));
|
|
1068
1049
|
// The drawer and sidenav should never be opened together. Those two effects ensure that.
|
|
1069
1050
|
effect(() => {
|
|
1070
1051
|
if (this.navExpanded()) {
|
|
@@ -1094,8 +1075,8 @@ class DfTopNav {
|
|
|
1094
1075
|
});
|
|
1095
1076
|
}
|
|
1096
1077
|
}
|
|
1097
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1098
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1078
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNav, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1079
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNav, isStandalone: true, selector: "df-topnav", inputs: { mainNavStyle: { classPropertyName: "mainNavStyle", publicName: "mainNavStyle", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, navExpanded: { classPropertyName: "navExpanded", publicName: "navExpanded", isSignal: true, isRequired: false, transformFunction: null }, superheader: { classPropertyName: "superheader", publicName: "superheader", isSignal: true, isRequired: false, transformFunction: null }, showToggle: { classPropertyName: "showToggle", publicName: "showToggle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navExpanded: "navExpandedChange" }, host: { classAttribute: "df-topnav" }, queries: [{ propertyName: "navigationContainer", first: true, predicate: DfTopNavNavigation, descendants: true, isSignal: true }, { propertyName: "navActions", first: true, predicate: DfTopNavQuickActions, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1099
1080
|
<ng-template #navContent>
|
|
1100
1081
|
<ng-content select="df-topnav-navigation" />
|
|
1101
1082
|
</ng-template>
|
|
@@ -1110,19 +1091,19 @@ class DfTopNav {
|
|
|
1110
1091
|
>
|
|
1111
1092
|
@if (showToggle() || (sidenavContent().length && !isLg())) {
|
|
1112
1093
|
<button
|
|
1113
|
-
|
|
1114
|
-
|
|
1094
|
+
dfIconButton
|
|
1095
|
+
appearance="text"
|
|
1096
|
+
variant="neutral"
|
|
1097
|
+
transparent
|
|
1098
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
1115
1099
|
aria-label="Toggle navigation menu"
|
|
1116
1100
|
i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
|
|
1117
1101
|
(click)="navExpanded.set(!navExpanded())"
|
|
1118
1102
|
aria-haspopup="dialog"
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
[class.fa-bars]="!navExpanded()"
|
|
1124
|
-
></span>
|
|
1125
|
-
</button>
|
|
1103
|
+
class="fal df-topnav-toggle-button"
|
|
1104
|
+
[class.fa-xmark]="navExpanded()"
|
|
1105
|
+
[class.fa-bars]="!navExpanded()"
|
|
1106
|
+
></button>
|
|
1126
1107
|
}
|
|
1127
1108
|
<ng-content select="df-topnav-brand" />
|
|
1128
1109
|
@if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
|
|
@@ -1133,8 +1114,8 @@ class DfTopNav {
|
|
|
1133
1114
|
@if (appliedSuperheader() && (!inAppContainer() || isLg())) {
|
|
1134
1115
|
<nav
|
|
1135
1116
|
class="df-topnav-nav"
|
|
1136
|
-
[class.df-topnav-nav-basic]="
|
|
1137
|
-
[class.df-topnav-nav-mirror]="
|
|
1117
|
+
[class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
|
|
1118
|
+
[class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
|
|
1138
1119
|
aria-label="Secondary"
|
|
1139
1120
|
i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
|
|
1140
1121
|
>
|
|
@@ -1142,9 +1123,9 @@ class DfTopNav {
|
|
|
1142
1123
|
</nav>
|
|
1143
1124
|
}
|
|
1144
1125
|
</header>
|
|
1145
|
-
`, isInline: true, styles: ["@media(
|
|
1126
|
+
`, isInline: true, styles: ["@media(width>=576px)and (width<=991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-header{z-index:2010}}.df-topnav-toggle-button{position:relative}.df-topnav-header{position:relative;z-index:11;view-transition-name:df-topnav-header}body:not(:has(.df-env-banner)) .df-topnav-header{box-shadow:0 0 8px var(--df-color-shadow-1)}.df-topnav-nav{display:flex;align-items:center;height:3.5rem}.df-topnav-nav:first-of-type{padding-inline:var(--df-spacing-3)}@media(width>=1200px){.df-topnav-nav{gap:var(--df-spacing-5)}}.df-topnav-nav.df-topnav-nav-basic{background:var(--df-topnav-color-inert-basic-background);color:var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav.df-topnav-nav-mirror{background:var(--df-topnav-color-inert-mirror-background);color:var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-toggle-icon{width:2.25rem;height:1.5rem}.df-topnav-nav-border{border-bottom:1px solid var(--df-color-inert-neutral-main-border)}\n"], dependencies: [{ kind: "component", type: DfIconButton, selector: "button[dfIconButton], a[dfIconButton]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1146
1127
|
}
|
|
1147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNav, decorators: [{
|
|
1148
1129
|
type: Component,
|
|
1149
1130
|
args: [{ selector: 'df-topnav', template: `
|
|
1150
1131
|
<ng-template #navContent>
|
|
@@ -1161,19 +1142,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1161
1142
|
>
|
|
1162
1143
|
@if (showToggle() || (sidenavContent().length && !isLg())) {
|
|
1163
1144
|
<button
|
|
1164
|
-
|
|
1165
|
-
|
|
1145
|
+
dfIconButton
|
|
1146
|
+
appearance="text"
|
|
1147
|
+
variant="neutral"
|
|
1148
|
+
transparent
|
|
1149
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
1166
1150
|
aria-label="Toggle navigation menu"
|
|
1167
1151
|
i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
|
|
1168
1152
|
(click)="navExpanded.set(!navExpanded())"
|
|
1169
1153
|
aria-haspopup="dialog"
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
[class.fa-bars]="!navExpanded()"
|
|
1175
|
-
></span>
|
|
1176
|
-
</button>
|
|
1154
|
+
class="fal df-topnav-toggle-button"
|
|
1155
|
+
[class.fa-xmark]="navExpanded()"
|
|
1156
|
+
[class.fa-bars]="!navExpanded()"
|
|
1157
|
+
></button>
|
|
1177
1158
|
}
|
|
1178
1159
|
<ng-content select="df-topnav-brand" />
|
|
1179
1160
|
@if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
|
|
@@ -1184,8 +1165,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1184
1165
|
@if (appliedSuperheader() && (!inAppContainer() || isLg())) {
|
|
1185
1166
|
<nav
|
|
1186
1167
|
class="df-topnav-nav"
|
|
1187
|
-
[class.df-topnav-nav-basic]="
|
|
1188
|
-
[class.df-topnav-nav-mirror]="
|
|
1168
|
+
[class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
|
|
1169
|
+
[class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
|
|
1189
1170
|
aria-label="Secondary"
|
|
1190
1171
|
i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
|
|
1191
1172
|
>
|
|
@@ -1193,10 +1174,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1193
1174
|
</nav>
|
|
1194
1175
|
}
|
|
1195
1176
|
</header>
|
|
1196
|
-
`,
|
|
1177
|
+
`, imports: [DfIconButton, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, host: {
|
|
1197
1178
|
class: 'df-topnav'
|
|
1198
|
-
}, styles: ["@media(
|
|
1199
|
-
}], ctorParameters: () => [], propDecorators: { mainNavStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "mainNavStyle", required: false }] }],
|
|
1179
|
+
}, styles: ["@media(width>=576px)and (width<=991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-header{z-index:2010}}.df-topnav-toggle-button{position:relative}.df-topnav-header{position:relative;z-index:11;view-transition-name:df-topnav-header}body:not(:has(.df-env-banner)) .df-topnav-header{box-shadow:0 0 8px var(--df-color-shadow-1)}.df-topnav-nav{display:flex;align-items:center;height:3.5rem}.df-topnav-nav:first-of-type{padding-inline:var(--df-spacing-3)}@media(width>=1200px){.df-topnav-nav{gap:var(--df-spacing-5)}}.df-topnav-nav.df-topnav-nav-basic{background:var(--df-topnav-color-inert-basic-background);color:var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav.df-topnav-nav-mirror{background:var(--df-topnav-color-inert-mirror-background);color:var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-toggle-icon{width:2.25rem;height:1.5rem}.df-topnav-nav-border{border-bottom:1px solid var(--df-color-inert-neutral-main-border)}\n"] }]
|
|
1180
|
+
}], ctorParameters: () => [], propDecorators: { mainNavStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "mainNavStyle", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], navExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "navExpanded", required: false }] }, { type: i0.Output, args: ["navExpandedChange"] }], superheader: [{ type: i0.Input, args: [{ isSignal: true, alias: "superheader", required: false }] }], showToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggle", required: false }] }], navigationContainer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavNavigation), { isSignal: true }] }], navActions: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActions), { isSignal: true }] }] } });
|
|
1200
1181
|
|
|
1201
1182
|
/**
|
|
1202
1183
|
* A directive to mark the company template in the {@link DfTopNavBrand} brand component.
|
|
@@ -1205,10 +1186,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1205
1186
|
* @since 21.1
|
|
1206
1187
|
*/
|
|
1207
1188
|
class DfTopNavBrandLinkContent {
|
|
1208
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1209
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1189
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrandLinkContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1190
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavBrandLinkContent, isStandalone: true, selector: "ng-template[dfTopNavBrandLinkContent]", ngImport: i0 }); }
|
|
1210
1191
|
}
|
|
1211
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrandLinkContent, decorators: [{
|
|
1212
1193
|
type: Directive,
|
|
1213
1194
|
args: [{
|
|
1214
1195
|
selector: 'ng-template[dfTopNavBrandLinkContent]'
|
|
@@ -1217,7 +1198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1217
1198
|
/**
|
|
1218
1199
|
* The TopNav brand component, used to display the company and product information.
|
|
1219
1200
|
*
|
|
1220
|
-
* See {@link https://design-factory.amadeus.net/components/topnav/
|
|
1201
|
+
* See {@link https://design-factory.amadeus.net/components/topnav/developer#brand|Design Factory example}
|
|
1221
1202
|
* @since 21.1
|
|
1222
1203
|
*/
|
|
1223
1204
|
class DfTopNavBrand {
|
|
@@ -1225,24 +1206,27 @@ class DfTopNavBrand {
|
|
|
1225
1206
|
/**
|
|
1226
1207
|
* The URL to navigate to when the brand is clicked. Defaults to "/".
|
|
1227
1208
|
*/
|
|
1228
|
-
this.href = input('/',
|
|
1209
|
+
this.href = input('/', /* @ts-ignore */
|
|
1210
|
+
...(ngDevMode ? [{ debugName: "href" }] : /* istanbul ignore next */ []));
|
|
1229
1211
|
/**
|
|
1230
1212
|
* The product.
|
|
1231
1213
|
*/
|
|
1232
|
-
this.product = input(
|
|
1214
|
+
this.product = input(/* @ts-ignore */
|
|
1215
|
+
...(ngDevMode ? [undefined, { debugName: "product" }] : /* istanbul ignore next */ []));
|
|
1233
1216
|
/**
|
|
1234
1217
|
* The module.
|
|
1235
1218
|
*/
|
|
1236
|
-
this.module = input(
|
|
1219
|
+
this.module = input(/* @ts-ignore */
|
|
1220
|
+
...(ngDevMode ? [undefined, { debugName: "module" }] : /* istanbul ignore next */ []));
|
|
1237
1221
|
/**
|
|
1238
1222
|
* Whether to display the Amadeus logo as a vector graphic instead of text.
|
|
1239
1223
|
*/
|
|
1240
|
-
this.amaudeusLogoVector = input(false, { ...(ngDevMode ? { debugName: "amaudeusLogoVector" } : {}), transform: booleanAttribute });
|
|
1241
|
-
this.brandLinkContent = contentChild(DfTopNavBrandLinkContent, { ...(ngDevMode ? { debugName: "brandLinkContent" } : {}), read: TemplateRef });
|
|
1242
|
-
this.isSm =
|
|
1224
|
+
this.amaudeusLogoVector = input(false, { ...(ngDevMode ? { debugName: "amaudeusLogoVector" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1225
|
+
this.brandLinkContent = contentChild(DfTopNavBrandLinkContent, { ...(ngDevMode ? { debugName: "brandLinkContent" } : /* istanbul ignore next */ {}), read: TemplateRef });
|
|
1226
|
+
this.isSm = trackWindow('sm');
|
|
1243
1227
|
}
|
|
1244
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1245
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1228
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrand, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1229
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavBrand, isStandalone: true, selector: "df-topnav-brand", inputs: { href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: false, transformFunction: null }, module: { classPropertyName: "module", publicName: "module", isSignal: true, isRequired: false, transformFunction: null }, amaudeusLogoVector: { classPropertyName: "amaudeusLogoVector", publicName: "amaudeusLogoVector", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "brandLinkContent", first: true, predicate: DfTopNavBrandLinkContent, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
|
|
1246
1230
|
<div class="df-topnav-brand">
|
|
1247
1231
|
<a class="df-topnav-brand-link" [routerLink]="href()">
|
|
1248
1232
|
<ng-template #defaultLink>
|
|
@@ -1313,9 +1297,9 @@ class DfTopNavBrand {
|
|
|
1313
1297
|
<span class="df-topnav-brand-module">{{ module() }}</span>
|
|
1314
1298
|
}
|
|
1315
1299
|
</div>
|
|
1316
|
-
`, isInline: true, styles: [".df-topnav-brand{display:flex;align-items:center}.df-topnav-brand-link{display:flex;align-items:center;padding:var(--df-spacing-3);gap:var(--df-spacing-3);font-size:var(--df-typo-sizing-large);outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-brand-link{transition:none}}.df-topnav-brand-link{border-bottom:0!important
|
|
1300
|
+
`, isInline: true, styles: [".df-topnav-brand{display:flex;align-items:center}.df-topnav-brand-link{display:flex;align-items:center;padding:var(--df-spacing-3);gap:var(--df-spacing-3);font-size:var(--df-typo-sizing-large);outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-brand-link{transition:none}}.df-topnav-brand-link{border-bottom:0!important}.df-topnav-brand-company-amadeus-logo-mobile{width:1rem;height:1.25rem}.df-topnav-brand-company-amaudeus-logo-desktop{width:7rem;height:1rem}.df-topnav-brand-module-separator{height:1rem;width:1px;background-color:var(--df-color-inert-neutral-main-border);margin-inline-end:var(--df-spacing-3)}.df-topnav-brand-module{margin-top:calc(.75 * (var(--df-typo-sizing-large) - var(--df-typo-sizing-default)))}.df-topnav-brand-company-amadeus-text{font-weight:var(--df-typo-weight-medium)}.df-topnav-nav-basic .df-topnav-brand{color:var(--df-topnav-color-productName-basic-default-foreground)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-basic-default-foreground)!important;background-color:var(--df-topnav-color-inert-basic-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-basic-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-default-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-basic-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-basic-hovered-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-hovered-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-basic-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-basic-pressed-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-pressed-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-main-foreground)}.df-topnav-nav-mirror .df-topnav-brand{color:var(--df-topnav-color-productName-mirror-default-foreground)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-mirror-default-foreground)!important;background-color:var(--df-topnav-color-inert-mirror-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-default-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-mirror-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-hovered-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-hovered-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-mirror-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-pressed-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-pressed-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-alt-foreground)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1317
1301
|
}
|
|
1318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrand, decorators: [{
|
|
1319
1303
|
type: Component,
|
|
1320
1304
|
args: [{ selector: 'df-topnav-brand', template: `
|
|
1321
1305
|
<div class="df-topnav-brand">
|
|
@@ -1388,9 +1372,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1388
1372
|
<span class="df-topnav-brand-module">{{ module() }}</span>
|
|
1389
1373
|
}
|
|
1390
1374
|
</div>
|
|
1391
|
-
`,
|
|
1375
|
+
`, imports: [RouterLink, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-brand{display:flex;align-items:center}.df-topnav-brand-link{display:flex;align-items:center;padding:var(--df-spacing-3);gap:var(--df-spacing-3);font-size:var(--df-typo-sizing-large);outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-brand-link{transition:none}}.df-topnav-brand-link{border-bottom:0!important}.df-topnav-brand-company-amadeus-logo-mobile{width:1rem;height:1.25rem}.df-topnav-brand-company-amaudeus-logo-desktop{width:7rem;height:1rem}.df-topnav-brand-module-separator{height:1rem;width:1px;background-color:var(--df-color-inert-neutral-main-border);margin-inline-end:var(--df-spacing-3)}.df-topnav-brand-module{margin-top:calc(.75 * (var(--df-typo-sizing-large) - var(--df-typo-sizing-default)))}.df-topnav-brand-company-amadeus-text{font-weight:var(--df-typo-weight-medium)}.df-topnav-nav-basic .df-topnav-brand{color:var(--df-topnav-color-productName-basic-default-foreground)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-basic-default-foreground)!important;background-color:var(--df-topnav-color-inert-basic-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-basic-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-default-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-basic-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-basic-hovered-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-hovered-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-basic-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-basic-pressed-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-pressed-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-main-foreground)}.df-topnav-nav-mirror .df-topnav-brand{color:var(--df-topnav-color-productName-mirror-default-foreground)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-mirror-default-foreground)!important;background-color:var(--df-topnav-color-inert-mirror-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-default-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-mirror-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-hovered-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-hovered-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-mirror-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-pressed-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-pressed-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-alt-foreground)}\n"] }]
|
|
1392
1376
|
}], propDecorators: { href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], product: [{ type: i0.Input, args: [{ isSignal: true, alias: "product", required: false }] }], module: [{ type: i0.Input, args: [{ isSignal: true, alias: "module", required: false }] }], amaudeusLogoVector: [{ type: i0.Input, args: [{ isSignal: true, alias: "amaudeusLogoVector", required: false }] }], brandLinkContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavBrandLinkContent), { ...{ read: TemplateRef }, isSignal: true }] }] } });
|
|
1393
1377
|
|
|
1378
|
+
/**
|
|
1379
|
+
* The dropdown toggle does not use dfButton styles and requires to be recoded...
|
|
1380
|
+
*
|
|
1381
|
+
* @internal
|
|
1382
|
+
*/
|
|
1383
|
+
class DfTopNavQuickActionThemePickerDrawerToggle {
|
|
1384
|
+
constructor() {
|
|
1385
|
+
/**
|
|
1386
|
+
* The dropdown instance controlled by this toggle element.
|
|
1387
|
+
*
|
|
1388
|
+
* Pass the referenced {@link DfDropdown} instance to connect the host button to its menu.
|
|
1389
|
+
*/
|
|
1390
|
+
this.dropdown = input.required({ ...(ngDevMode ? { debugName: "dropdown" } : /* istanbul ignore next */ {}), alias: 'dfTopNavQuickActionThemePickerDrawerToggle' });
|
|
1391
|
+
const element = inject(ElementRef).nativeElement;
|
|
1392
|
+
effect(() => {
|
|
1393
|
+
this.dropdown()['toggleElement'].set(element);
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePickerDrawerToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1397
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DfTopNavQuickActionThemePickerDrawerToggle, isStandalone: true, selector: "button[dfTopNavQuickActionThemePickerDrawerToggle]", inputs: { dropdown: { classPropertyName: "dropdown", publicName: "dfTopNavQuickActionThemePickerDrawerToggle", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.df-show": "dropdown().isOpen()" } }, ngImport: i0, template: `
|
|
1398
|
+
<ng-content />
|
|
1399
|
+
<df-icon
|
|
1400
|
+
class="df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end fal"
|
|
1401
|
+
[class.fa-chevron-down]="!dropdown().isOpen()"
|
|
1402
|
+
[class.fa-chevron-up]="dropdown().isOpen()"
|
|
1403
|
+
/>
|
|
1404
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DfIcon, selector: "df-icon" }] }); }
|
|
1405
|
+
}
|
|
1406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePickerDrawerToggle, decorators: [{
|
|
1407
|
+
type: Component,
|
|
1408
|
+
args: [{
|
|
1409
|
+
// eslint-disable-next-line @angular-eslint/component-selector
|
|
1410
|
+
selector: 'button[dfTopNavQuickActionThemePickerDrawerToggle]',
|
|
1411
|
+
imports: [DfIcon],
|
|
1412
|
+
template: `
|
|
1413
|
+
<ng-content />
|
|
1414
|
+
<df-icon
|
|
1415
|
+
class="df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end fal"
|
|
1416
|
+
[class.fa-chevron-down]="!dropdown().isOpen()"
|
|
1417
|
+
[class.fa-chevron-up]="dropdown().isOpen()"
|
|
1418
|
+
/>
|
|
1419
|
+
`,
|
|
1420
|
+
host: {
|
|
1421
|
+
'[class.df-show]': 'dropdown().isOpen()'
|
|
1422
|
+
}
|
|
1423
|
+
}]
|
|
1424
|
+
}], ctorParameters: () => [], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dfTopNavQuickActionThemePickerDrawerToggle", required: true }] }] } });
|
|
1394
1425
|
/**
|
|
1395
1426
|
* DfTopNavQuickActionThemePicker is a topnav quick action dropdown component that allows users to select a theme mode for the application.
|
|
1396
1427
|
*
|
|
@@ -1406,133 +1437,179 @@ class DfTopNavQuickActionThemePicker extends DfTopNavQuickAction {
|
|
|
1406
1437
|
*
|
|
1407
1438
|
* Each option includes a `themeMode` which corresponds to a theme mode in the DfThemeService, and an `icon` which is a FontAwesome class name for the icon to display next to the option.
|
|
1408
1439
|
*/
|
|
1409
|
-
this.themeOptions = input.required(
|
|
1440
|
+
this.themeOptions = input.required(/* @ts-ignore */
|
|
1441
|
+
...(ngDevMode ? [{ debugName: "themeOptions" }] : /* istanbul ignore next */ []));
|
|
1410
1442
|
/**
|
|
1411
1443
|
* The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
|
|
1412
1444
|
*/
|
|
1413
|
-
this.appearance = input('neutral',
|
|
1445
|
+
this.appearance = input('neutral', /* @ts-ignore */
|
|
1446
|
+
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
1414
1447
|
this.mapThemeToIcon = computed(() => {
|
|
1415
1448
|
const map = new Map();
|
|
1416
1449
|
for (const option of this.themeOptions()) {
|
|
1417
1450
|
map.set(option.themeMode, option.icon);
|
|
1418
1451
|
}
|
|
1419
1452
|
return map;
|
|
1420
|
-
},
|
|
1421
|
-
|
|
1453
|
+
}, /* @ts-ignore */
|
|
1454
|
+
...(ngDevMode ? [{ debugName: "mapThemeToIcon" }] : /* istanbul ignore next */ []));
|
|
1422
1455
|
this.content = viewChild.required('themePickerContent');
|
|
1456
|
+
this.drawerContent = viewChild('themePickerDrawerContent', /* @ts-ignore */
|
|
1457
|
+
...(ngDevMode ? [{ debugName: "drawerContent" }] : /* istanbul ignore next */ []));
|
|
1423
1458
|
}
|
|
1424
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1425
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1459
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1460
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavQuickActionThemePicker, isStandalone: true, selector: "df-topnav-quick-action-theme-picker", inputs: { themeOptions: { classPropertyName: "themeOptions", publicName: "themeOptions", isSignal: true, isRequired: true, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionThemePicker }], viewQueries: [{ propertyName: "content", first: true, predicate: ["themePickerContent"], descendants: true, isSignal: true }, { propertyName: "drawerContent", first: true, predicate: ["themePickerDrawerContent"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
1426
1461
|
<ng-template #themePickerContent>
|
|
1427
|
-
<
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
[class.active]="themeOption.themeMode === themeService.selected()"
|
|
1453
|
-
(click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1454
|
-
>
|
|
1455
|
-
<span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
|
|
1456
|
-
{{ themeOption.themeMode | titlecase }}
|
|
1457
|
-
</button>
|
|
1458
|
-
}
|
|
1459
|
-
</div>
|
|
1460
|
-
</div>
|
|
1462
|
+
<button
|
|
1463
|
+
[dfDropdownToggle]="menu"
|
|
1464
|
+
appearance="text"
|
|
1465
|
+
[variant]="appearance()"
|
|
1466
|
+
transparent
|
|
1467
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
1468
|
+
aria-label="Choose theme"
|
|
1469
|
+
i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
|
|
1470
|
+
>
|
|
1471
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
|
|
1472
|
+
</button>
|
|
1473
|
+
<df-dropdown #menu placement="bottom-end" role="listbox">
|
|
1474
|
+
@for (themeOption of themeOptions(); track themeOption; let id = $index) {
|
|
1475
|
+
<button
|
|
1476
|
+
dfDropdownItem
|
|
1477
|
+
class="df-topnav-quick-action-dropdown-item"
|
|
1478
|
+
[active]="themeOption.themeMode === themeService.selected()"
|
|
1479
|
+
[attr.aria-selected]="themeOption.themeMode === themeService.selected()"
|
|
1480
|
+
(click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1481
|
+
>
|
|
1482
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
|
|
1483
|
+
{{ themeOption.themeMode | titlecase }}
|
|
1484
|
+
</button>
|
|
1485
|
+
}
|
|
1486
|
+
</df-dropdown>
|
|
1461
1487
|
</ng-template>
|
|
1462
1488
|
<ng-container *ngTemplateOutlet="themePickerContent" />
|
|
1463
|
-
|
|
1489
|
+
<ng-template #themePickerDrawerContent>
|
|
1490
|
+
<button
|
|
1491
|
+
[dfTopNavQuickActionThemePickerDrawerToggle]="menu"
|
|
1492
|
+
class="df-topnav-drawer-button"
|
|
1493
|
+
aria-label="Choose theme"
|
|
1494
|
+
i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
|
|
1495
|
+
>
|
|
1496
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
|
|
1497
|
+
<span class="me-auto">
|
|
1498
|
+
{{ themeService.selected() | titlecase }}
|
|
1499
|
+
</span>
|
|
1500
|
+
</button>
|
|
1501
|
+
<df-dropdown #menu placement="bottom-end" role="listbox" class="df-topnav-quick-action-dropdown-drawer">
|
|
1502
|
+
@for (themeOption of themeOptions(); track themeOption; let id = $index) {
|
|
1503
|
+
<button
|
|
1504
|
+
dfDropdownItem
|
|
1505
|
+
class="df-topnav-quick-action-dropdown-item"
|
|
1506
|
+
[active]="themeOption.themeMode === themeService.selected()"
|
|
1507
|
+
[attr.aria-selected]="themeOption.themeMode === themeService.selected()"
|
|
1508
|
+
(click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1509
|
+
>
|
|
1510
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
|
|
1511
|
+
{{ themeOption.themeMode | titlecase }}
|
|
1512
|
+
</button>
|
|
1513
|
+
}
|
|
1514
|
+
</df-dropdown>
|
|
1515
|
+
</ng-template>
|
|
1516
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DfDropdown, selector: "df-dropdown", inputs: ["opened", "placement", "size", "container"], outputs: ["openedChange"] }, { kind: "directive", type: DfDropdownItemButton, selector: "button[dfDropdownItem]", inputs: ["active", "disabled"] }, { kind: "component", type: DfDropdownToggle, selector: "button[dfDropdownToggle]", inputs: ["dfDropdownToggle", "iconOnly"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }, { kind: "component", type: DfTopNavQuickActionThemePickerDrawerToggle, selector: "button[dfTopNavQuickActionThemePickerDrawerToggle]", inputs: ["dfTopNavQuickActionThemePickerDrawerToggle"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1464
1517
|
}
|
|
1465
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1518
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePicker, decorators: [{
|
|
1466
1519
|
type: Component,
|
|
1467
|
-
args: [{
|
|
1520
|
+
args: [{
|
|
1521
|
+
selector: 'df-topnav-quick-action-theme-picker',
|
|
1522
|
+
template: `
|
|
1468
1523
|
<ng-template #themePickerContent>
|
|
1469
|
-
<
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
[class.active]="themeOption.themeMode === themeService.selected()"
|
|
1495
|
-
(click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1496
|
-
>
|
|
1497
|
-
<span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
|
|
1498
|
-
{{ themeOption.themeMode | titlecase }}
|
|
1499
|
-
</button>
|
|
1500
|
-
}
|
|
1501
|
-
</div>
|
|
1502
|
-
</div>
|
|
1524
|
+
<button
|
|
1525
|
+
[dfDropdownToggle]="menu"
|
|
1526
|
+
appearance="text"
|
|
1527
|
+
[variant]="appearance()"
|
|
1528
|
+
transparent
|
|
1529
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
1530
|
+
aria-label="Choose theme"
|
|
1531
|
+
i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
|
|
1532
|
+
>
|
|
1533
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
|
|
1534
|
+
</button>
|
|
1535
|
+
<df-dropdown #menu placement="bottom-end" role="listbox">
|
|
1536
|
+
@for (themeOption of themeOptions(); track themeOption; let id = $index) {
|
|
1537
|
+
<button
|
|
1538
|
+
dfDropdownItem
|
|
1539
|
+
class="df-topnav-quick-action-dropdown-item"
|
|
1540
|
+
[active]="themeOption.themeMode === themeService.selected()"
|
|
1541
|
+
[attr.aria-selected]="themeOption.themeMode === themeService.selected()"
|
|
1542
|
+
(click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1543
|
+
>
|
|
1544
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
|
|
1545
|
+
{{ themeOption.themeMode | titlecase }}
|
|
1546
|
+
</button>
|
|
1547
|
+
}
|
|
1548
|
+
</df-dropdown>
|
|
1503
1549
|
</ng-template>
|
|
1504
1550
|
<ng-container *ngTemplateOutlet="themePickerContent" />
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1551
|
+
<ng-template #themePickerDrawerContent>
|
|
1552
|
+
<button
|
|
1553
|
+
[dfTopNavQuickActionThemePickerDrawerToggle]="menu"
|
|
1554
|
+
class="df-topnav-drawer-button"
|
|
1555
|
+
aria-label="Choose theme"
|
|
1556
|
+
i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
|
|
1557
|
+
>
|
|
1558
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
|
|
1559
|
+
<span class="me-auto">
|
|
1560
|
+
{{ themeService.selected() | titlecase }}
|
|
1561
|
+
</span>
|
|
1562
|
+
</button>
|
|
1563
|
+
<df-dropdown #menu placement="bottom-end" role="listbox" class="df-topnav-quick-action-dropdown-drawer">
|
|
1564
|
+
@for (themeOption of themeOptions(); track themeOption; let id = $index) {
|
|
1565
|
+
<button
|
|
1566
|
+
dfDropdownItem
|
|
1567
|
+
class="df-topnav-quick-action-dropdown-item"
|
|
1568
|
+
[active]="themeOption.themeMode === themeService.selected()"
|
|
1569
|
+
[attr.aria-selected]="themeOption.themeMode === themeService.selected()"
|
|
1570
|
+
(click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1571
|
+
>
|
|
1572
|
+
<df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
|
|
1573
|
+
{{ themeOption.themeMode | titlecase }}
|
|
1574
|
+
</button>
|
|
1575
|
+
}
|
|
1576
|
+
</df-dropdown>
|
|
1577
|
+
</ng-template>
|
|
1578
|
+
`,
|
|
1579
|
+
imports: [
|
|
1580
|
+
DfDropdown,
|
|
1581
|
+
DfDropdownItemButton,
|
|
1582
|
+
DfDropdownToggle,
|
|
1510
1583
|
TitleCasePipe,
|
|
1511
1584
|
NgTemplateOutlet,
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1585
|
+
DfIcon,
|
|
1586
|
+
DfTopNavQuickActionThemePickerDrawerToggle
|
|
1587
|
+
],
|
|
1588
|
+
encapsulation: ViewEncapsulation.None,
|
|
1589
|
+
providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionThemePicker }]
|
|
1590
|
+
}]
|
|
1591
|
+
}], propDecorators: { themeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "themeOptions", required: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], content: [{ type: i0.ViewChild, args: ['themePickerContent', { isSignal: true }] }], drawerContent: [{ type: i0.ViewChild, args: ['themePickerDrawerContent', { isSignal: true }] }] } });
|
|
1515
1592
|
|
|
1516
1593
|
/**
|
|
1517
1594
|
* The environment banner component, used to display a banner at the top of the page indicating the current environment (e.g., development, staging, production).
|
|
1518
1595
|
*
|
|
1519
|
-
* See {@link https://design-factory.amadeus.net/components/topnav/
|
|
1596
|
+
* See {@link https://design-factory.amadeus.net/components/topnav/developer#environment-banner|Design Factory example}
|
|
1520
1597
|
* @since 21.1
|
|
1521
1598
|
*/
|
|
1522
1599
|
class DfEnvBanner {
|
|
1523
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1524
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1600
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfEnvBanner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1601
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: DfEnvBanner, isStandalone: true, selector: "df-env-banner", host: { classAttribute: "df-env-banner" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-env-banner{display:flex;width:100%;justify-content:center;background-color:var(--df-color-warning-soft-default-background);color:var(--df-color-warning-soft-default-foreground);font-size:var(--df-typo-sizing-xsmall);z-index:10;box-shadow:0 0 8px var(--df-color-shadow-1)}@media(width>=576px)and (width<=992px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-env-banner{z-index:2010}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1525
1602
|
}
|
|
1526
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfEnvBanner, decorators: [{
|
|
1527
1604
|
type: Component,
|
|
1528
|
-
args: [{ selector: 'df-env-banner', template: `<ng-content />`,
|
|
1605
|
+
args: [{ selector: 'df-env-banner', template: `<ng-content />`, encapsulation: ViewEncapsulation.None, host: {
|
|
1529
1606
|
class: 'df-env-banner'
|
|
1530
|
-
}, styles: [".df-env-banner{display:flex;width:100%;justify-content:center;background-color:var(--df-color-warning-soft-default-background);color:var(--df-color-warning-soft-default-foreground);font-size:var(--df-typo-sizing-xsmall);z-index:10;box-shadow:0 0 8px var(--df-color-shadow-1)}@media(
|
|
1607
|
+
}, styles: [".df-env-banner{display:flex;width:100%;justify-content:center;background-color:var(--df-color-warning-soft-default-background);color:var(--df-color-warning-soft-default-foreground);font-size:var(--df-typo-sizing-xsmall);z-index:10;box-shadow:0 0 8px var(--df-color-shadow-1)}@media(width>=576px)and (width<=992px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-env-banner{z-index:2010}}\n"] }]
|
|
1531
1608
|
}] });
|
|
1532
1609
|
|
|
1533
1610
|
/**
|
|
1534
1611
|
* Generated bundle index. Do not edit.
|
|
1535
1612
|
*/
|
|
1536
1613
|
|
|
1537
|
-
export { DfAppContainer, DfEnvBanner, DfTopNav, DfTopNavBrand, DfTopNavBrandLinkContent, DfTopNavNavigation, DfTopNavNavigationItem, DfTopNavNavigationLink, DfTopNavQuickAction, DfTopNavQuickActionButton, DfTopNavQuickActionButtonContent, DfTopNavQuickActionButtonIcon, DfTopNavQuickActionInDrawer, DfTopNavQuickActionInTopNav, DfTopNavQuickActionSearch, DfTopNavQuickActionSearchInput, DfTopNavQuickActionThemePicker, DfTopNavQuickActions };
|
|
1614
|
+
export { DF_TOPNAV_QUICK_ACTION_ELEMENT, DfAppContainer, DfEnvBanner, DfTopNav, DfTopNavBrand, DfTopNavBrandLinkContent, DfTopNavNavigation, DfTopNavNavigationItem, DfTopNavNavigationLink, DfTopNavQuickAction, DfTopNavQuickActionButton, DfTopNavQuickActionButtonContent, DfTopNavQuickActionButtonIcon, DfTopNavQuickActionElement, DfTopNavQuickActionInDrawer, DfTopNavQuickActionInTopNav, DfTopNavQuickActionSearch, DfTopNavQuickActionSearchInput, DfTopNavQuickActionThemePicker, DfTopNavQuickActions };
|
|
1538
1615
|
//# sourceMappingURL=design-factory-angular-topnav.mjs.map
|