@design-factory/angular 21.1.0 → 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 +64 -62
- 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 +652 -401
- 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 +29 -19
- 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 +589 -589
- 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 +10 -16
- 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 +98 -14
- 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 +35 -47
- 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, computed, signal, inject, ElementRef, forwardRef, Directive, ContentChildren, 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, NgbDropdownItem, NgbDropdownMenu, 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,29 +57,36 @@ 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 */ []));
|
|
58
62
|
/**
|
|
59
63
|
* The external href of the navigation link, which will be used as the link target. Use {@link routerLink} for internal links.
|
|
60
64
|
*/
|
|
61
|
-
this.href = input(
|
|
65
|
+
this.href = input(/* @ts-ignore */
|
|
66
|
+
...(ngDevMode ? [undefined, { debugName: "href" }] : /* istanbul ignore next */ []));
|
|
62
67
|
/**
|
|
63
68
|
* The internal router link of the navigation link, which will be used as the link target. Use {@link href} for external links.
|
|
64
69
|
*/
|
|
65
|
-
this.routerLink = input(
|
|
66
|
-
|
|
67
|
-
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 */ []));
|
|
68
76
|
/**
|
|
69
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 }.
|
|
70
78
|
*/
|
|
71
|
-
this.routerLinkActiveOptions = input({ exact: false },
|
|
72
|
-
|
|
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 */ []));
|
|
73
83
|
/**
|
|
74
84
|
* Indicates if the link is currently active based on the Router state.
|
|
75
85
|
*/
|
|
76
86
|
this.active = this._active.asReadonly();
|
|
77
87
|
}
|
|
78
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
79
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: `
|
|
80
90
|
@if (externalLink()) {
|
|
81
91
|
<a class="df-topnav-navigation-link" [attr.href]="href()" target="_blank">
|
|
82
92
|
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
@@ -94,9 +104,9 @@ class DfTopNavNavigationLink extends DfTopNavNavigationElement {
|
|
|
94
104
|
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
95
105
|
</a>
|
|
96
106
|
}
|
|
97
|
-
`, 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-
|
|
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 }); }
|
|
98
108
|
}
|
|
99
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationLink, decorators: [{
|
|
100
110
|
type: Component,
|
|
101
111
|
args: [{ selector: 'df-topnav-navigation-link', template: `
|
|
102
112
|
@if (externalLink()) {
|
|
@@ -119,81 +129,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
119
129
|
`, host: {
|
|
120
130
|
role: 'listitem',
|
|
121
131
|
'[style.display]': '"contents"'
|
|
122
|
-
},
|
|
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"] }]
|
|
123
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 }] }] } });
|
|
124
134
|
|
|
125
|
-
// TODO - Implement the dropdown mode of the TopNav using the dropdown wrapper and remove the DfTopNavDropdownToggle directive.
|
|
126
135
|
/**
|
|
127
|
-
*
|
|
128
|
-
* 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...
|
|
129
137
|
*
|
|
130
|
-
* This override of ng-bootstrap allowed to avoid setting the `dropdown-toggle` class on the toggle button.
|
|
131
|
-
*
|
|
132
|
-
* It will be removed once the dropdown mode is implemented using a more generic approach that can be used in other components as well.
|
|
133
|
-
*/
|
|
134
|
-
class DfTopNavDropdownToggle {
|
|
135
|
-
constructor() {
|
|
136
|
-
this.dropdown = inject(NgbDropdown);
|
|
137
|
-
this.nativeElement = inject(ElementRef).nativeElement;
|
|
138
|
-
}
|
|
139
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
140
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavDropdownToggle, isStandalone: true, selector: "[dfTopNavDropdownToggle]", host: { listeners: { "click": "dropdown.toggle()", "keydown.ArrowUp": "dropdown.onKeyDown($any($event))", "keydown.ArrowDown": "dropdown.onKeyDown($any($event))", "keydown.Home": "dropdown.onKeyDown($any($event))", "keydown.End": "dropdown.onKeyDown($any($event))", "keydown.Tab": "dropdown.onKeyDown($any($event))", "keydown.Shift.Tab": "dropdown.onKeyDown($any($event))" }, properties: { "attr.aria-expanded": "dropdown.isOpen()" } }, providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => DfTopNavDropdownToggle) }], ngImport: i0 }); }
|
|
141
|
-
}
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownToggle, decorators: [{
|
|
143
|
-
type: Directive,
|
|
144
|
-
args: [{
|
|
145
|
-
selector: '[dfTopNavDropdownToggle]',
|
|
146
|
-
host: {
|
|
147
|
-
'[attr.aria-expanded]': 'dropdown.isOpen()',
|
|
148
|
-
'(click)': 'dropdown.toggle()',
|
|
149
|
-
'(keydown.ArrowUp)': 'dropdown.onKeyDown($any($event))',
|
|
150
|
-
'(keydown.ArrowDown)': 'dropdown.onKeyDown($any($event))',
|
|
151
|
-
'(keydown.Home)': 'dropdown.onKeyDown($any($event))',
|
|
152
|
-
'(keydown.End)': 'dropdown.onKeyDown($any($event))',
|
|
153
|
-
'(keydown.Tab)': 'dropdown.onKeyDown($any($event))',
|
|
154
|
-
'(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))'
|
|
155
|
-
},
|
|
156
|
-
providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => DfTopNavDropdownToggle) }]
|
|
157
|
-
}]
|
|
158
|
-
}] });
|
|
159
|
-
/**
|
|
160
138
|
* @internal
|
|
161
|
-
* Temporary menu directive for the dropdown mode of the TopNav.
|
|
162
|
-
*
|
|
163
|
-
* This override allowed to wrap the links into a list structure and keep the keyboard navigation working.
|
|
164
|
-
*
|
|
165
|
-
* It will be removed once the dropdown mode is implemented using a more generic approach that can be used in other components as well.
|
|
166
139
|
*/
|
|
167
|
-
class
|
|
140
|
+
class DfTopNavNavigationItemDropdownToggle {
|
|
168
141
|
constructor() {
|
|
169
|
-
|
|
170
|
-
|
|
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
|
+
});
|
|
171
152
|
}
|
|
172
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
173
|
-
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" }] }); }
|
|
174
158
|
}
|
|
175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
176
|
-
type:
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItemDropdownToggle, decorators: [{
|
|
160
|
+
type: Component,
|
|
177
161
|
args: [{
|
|
178
|
-
selector
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
'(keydown.End)': 'dropdown.onKeyDown($any($event))',
|
|
186
|
-
'(keydown.Enter)': 'dropdown.onKeyDown($any($event))',
|
|
187
|
-
'(keydown.Space)': 'dropdown.onKeyDown($any($event))',
|
|
188
|
-
'(keydown.Tab)': 'dropdown.onKeyDown($any($event))',
|
|
189
|
-
'(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))'
|
|
190
|
-
},
|
|
191
|
-
providers: [{ provide: NgbDropdownMenu, useExisting: forwardRef(() => DfTopNavDropdownMenu) }]
|
|
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
|
+
`
|
|
192
169
|
}]
|
|
193
|
-
}], propDecorators: {
|
|
194
|
-
type: ContentChildren,
|
|
195
|
-
args: [NgbDropdownItem, { descendants: true }]
|
|
196
|
-
}] } });
|
|
170
|
+
}], ctorParameters: () => [], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dfTopNavNavigationItemDropdownToggle", required: true }] }] } });
|
|
197
171
|
/**
|
|
198
172
|
* The TopNav navigation item component, used to display a navigation link in the TopNav which can have child navigation links.
|
|
199
173
|
*
|
|
@@ -206,63 +180,60 @@ class DfTopNavNavigationItem extends DfTopNavNavigationElement {
|
|
|
206
180
|
/**
|
|
207
181
|
* The label of the navigation item, which will be displayed as the link text.
|
|
208
182
|
*/
|
|
209
|
-
this.label = input.required(
|
|
183
|
+
this.label = input.required(/* @ts-ignore */
|
|
184
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
210
185
|
/**
|
|
211
186
|
* The routerLink of the navigation item, which will be used as the link target. It should be an internal route.
|
|
212
187
|
*/
|
|
213
|
-
this.routerLink = input.required(
|
|
214
|
-
|
|
215
|
-
this.
|
|
216
|
-
|
|
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 */ []));
|
|
217
195
|
this.topNav = inject(DfTopNav);
|
|
218
|
-
this.dropdownMode = computed(() => this.topNav.mode() === 'dropdown',
|
|
196
|
+
this.dropdownMode = computed(() => this.topNav.mode() === 'dropdown', /* @ts-ignore */
|
|
197
|
+
...(ngDevMode ? [{ debugName: "dropdownMode" }] : /* istanbul ignore next */ []));
|
|
219
198
|
this.dropdownId = `topnav-dropdown-button-${generateId()}`;
|
|
220
199
|
/**
|
|
221
200
|
* Indicates if the navigation item is currently active based on the Router state of its child links.
|
|
222
201
|
*/
|
|
223
|
-
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 */ []));
|
|
224
204
|
}
|
|
225
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
226
|
-
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: `
|
|
227
207
|
@if (dropdownMode()) {
|
|
228
|
-
<
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
[attr.aria-current]="childLink.active() ? 'page' : null"
|
|
258
|
-
>
|
|
259
|
-
{{ childLink.label() }}
|
|
260
|
-
</a>
|
|
261
|
-
}
|
|
262
|
-
</div>
|
|
263
|
-
}
|
|
264
|
-
</div>
|
|
265
|
-
</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>
|
|
266
237
|
} @else {
|
|
267
238
|
<a
|
|
268
239
|
class="df-topnav-navigation-link"
|
|
@@ -273,50 +244,41 @@ class DfTopNavNavigationItem extends DfTopNavNavigationElement {
|
|
|
273
244
|
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
274
245
|
</a>
|
|
275
246
|
}
|
|
276
|
-
`, 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 }); }
|
|
277
248
|
}
|
|
278
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItem, decorators: [{
|
|
279
250
|
type: Component,
|
|
280
251
|
args: [{ selector: 'df-topnav-navigation-item', template: `
|
|
281
252
|
@if (dropdownMode()) {
|
|
282
|
-
<
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
[attr.aria-current]="childLink.active() ? 'page' : null"
|
|
312
|
-
>
|
|
313
|
-
{{ childLink.label() }}
|
|
314
|
-
</a>
|
|
315
|
-
}
|
|
316
|
-
</div>
|
|
317
|
-
}
|
|
318
|
-
</div>
|
|
319
|
-
</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>
|
|
320
282
|
} @else {
|
|
321
283
|
<a
|
|
322
284
|
class="df-topnav-navigation-link"
|
|
@@ -327,47 +289,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
327
289
|
<span [attr.data-text]="label()">{{ label() }}</span>
|
|
328
290
|
</a>
|
|
329
291
|
}
|
|
330
|
-
`,
|
|
292
|
+
`, host: {
|
|
331
293
|
'[style.display]': '"contents"',
|
|
332
294
|
role: 'listitem'
|
|
333
|
-
}, imports: [RouterLink,
|
|
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"] }]
|
|
334
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 }] }] } });
|
|
335
297
|
|
|
336
298
|
/**
|
|
337
|
-
* @internal
|
|
338
|
-
* Styles the buttons used in the TopNav.
|
|
339
|
-
*/
|
|
340
|
-
class DfTopNavButton {
|
|
341
|
-
constructor() {
|
|
342
|
-
/**
|
|
343
|
-
* The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
|
|
344
|
-
*/
|
|
345
|
-
this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
|
|
346
|
-
/**
|
|
347
|
-
* 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.
|
|
348
|
-
*/
|
|
349
|
-
this.icon = input(false, { ...(ngDevMode ? { debugName: "icon" } : {}), transform: booleanAttribute });
|
|
350
|
-
}
|
|
351
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
352
|
-
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 }); }
|
|
353
|
-
}
|
|
354
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, decorators: [{
|
|
355
|
-
type: Component,
|
|
356
|
-
args: [{ selector: 'button[dfTopNavButton]', host: {
|
|
357
|
-
class: 'df-topnav-btn',
|
|
358
|
-
'[class.df-topnav-btn-icon]': 'icon()',
|
|
359
|
-
'[class]': "'df-topnav-btn-' + appearance()"
|
|
360
|
-
}, 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"] }]
|
|
361
|
-
}], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }] } });
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* @internal
|
|
365
299
|
* An Injection Token for the DfTopNavQuickActionElement interface, which represents a navigation quick action in the top navigation component.
|
|
300
|
+
*
|
|
301
|
+
* @since 22.0
|
|
366
302
|
*/
|
|
367
303
|
const DF_TOPNAV_QUICK_ACTION_ELEMENT = new InjectionToken('DF_TOPNAV_QUICK_ACTION_ELEMENT');
|
|
368
304
|
/**
|
|
369
|
-
* @internal
|
|
370
305
|
* An abstract class that defines the structure of a quick action element in the top navigation component.
|
|
306
|
+
*
|
|
307
|
+
* @since 22.0
|
|
371
308
|
*/
|
|
372
309
|
class DfTopNavQuickActionElement {
|
|
373
310
|
}
|
|
@@ -379,10 +316,10 @@ class DfTopNavQuickActionElement {
|
|
|
379
316
|
* @since 21.1
|
|
380
317
|
*/
|
|
381
318
|
class DfTopNavQuickActionButtonContent {
|
|
382
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
383
|
-
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 }); }
|
|
384
321
|
}
|
|
385
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
322
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonContent, decorators: [{
|
|
386
323
|
type: Directive,
|
|
387
324
|
args: [{ selector: 'ng-template[dfTopNavQuickActionButtonContent]' }]
|
|
388
325
|
}] });
|
|
@@ -393,10 +330,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
393
330
|
* @since 21.1
|
|
394
331
|
*/
|
|
395
332
|
class DfTopNavQuickActionButtonIcon {
|
|
396
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
397
|
-
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 }); }
|
|
398
335
|
}
|
|
399
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonIcon, decorators: [{
|
|
400
337
|
type: Directive,
|
|
401
338
|
args: [{ selector: 'ng-template[dfTopNavQuickActionButtonIcon]' }]
|
|
402
339
|
}] });
|
|
@@ -409,7 +346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
409
346
|
*
|
|
410
347
|
* The icon can be set through the {@link DfTopNavQuickActionButton.icon} input or by using the {@link DfTopNavQuickActionButtonIcon} directive.
|
|
411
348
|
*
|
|
412
|
-
* 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}
|
|
413
350
|
* @since 21.1
|
|
414
351
|
*/
|
|
415
352
|
class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
@@ -418,27 +355,31 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
|
418
355
|
/**
|
|
419
356
|
* The appearance of the quick action button, which will determine its color. It can be either 'primary' or 'neutral'.
|
|
420
357
|
*/
|
|
421
|
-
this.appearance = input('neutral',
|
|
358
|
+
this.appearance = input('neutral', /* @ts-ignore */
|
|
359
|
+
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
422
360
|
/**
|
|
423
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.
|
|
424
362
|
*/
|
|
425
|
-
this.label = input.required(
|
|
363
|
+
this.label = input.required(/* @ts-ignore */
|
|
364
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
426
365
|
/**
|
|
427
366
|
* The icon of the quick action button.
|
|
428
367
|
*/
|
|
429
|
-
this.icon = input(
|
|
368
|
+
this.icon = input(/* @ts-ignore */
|
|
369
|
+
...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
430
370
|
/**
|
|
431
371
|
* Whether the quick action button is disabled or not.
|
|
432
372
|
*/
|
|
433
|
-
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
|
|
373
|
+
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
434
374
|
/**
|
|
435
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.
|
|
436
376
|
*/
|
|
437
377
|
this.act = output();
|
|
438
|
-
this.actionContent = contentChild(DfTopNavQuickActionButtonContent, { ...(ngDevMode ? { debugName: "actionContent" } : {}), read: TemplateRef });
|
|
439
|
-
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 });
|
|
440
380
|
this.popover = viewChild.required('popover');
|
|
441
|
-
this.isLg =
|
|
381
|
+
this.isLg = trackWindow('lg');
|
|
382
|
+
this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
|
|
442
383
|
/**
|
|
443
384
|
* Need to close the popover on smaller screen
|
|
444
385
|
*/
|
|
@@ -450,13 +391,14 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
|
450
391
|
}
|
|
451
392
|
});
|
|
452
393
|
}
|
|
453
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
454
|
-
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: `
|
|
455
396
|
<button
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
[
|
|
397
|
+
dfButton
|
|
398
|
+
transparent
|
|
399
|
+
appearance="text"
|
|
400
|
+
[variant]="appearance()"
|
|
401
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
460
402
|
[attr.aria-label]="label()"
|
|
461
403
|
[ngbPopover]="actionContent()"
|
|
462
404
|
placement="bottom-end"
|
|
@@ -466,22 +408,24 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
|
|
|
466
408
|
#popover="ngbPopover"
|
|
467
409
|
[disabled]="disabled()"
|
|
468
410
|
(click)="act.emit()"
|
|
411
|
+
class="df-btn-icononly df-topnav-quick-action-btn"
|
|
469
412
|
>
|
|
470
413
|
<ng-template #dfTopNavQuickActionDefaultIcon>
|
|
471
|
-
<
|
|
414
|
+
<df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
|
|
472
415
|
</ng-template>
|
|
473
416
|
<ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
|
|
474
417
|
</button>
|
|
475
|
-
`, 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 }); }
|
|
476
419
|
}
|
|
477
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButton, decorators: [{
|
|
478
421
|
type: Component,
|
|
479
422
|
args: [{ selector: 'df-topnav-quick-action-button', template: `
|
|
480
423
|
<button
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
[
|
|
424
|
+
dfButton
|
|
425
|
+
transparent
|
|
426
|
+
appearance="text"
|
|
427
|
+
[variant]="appearance()"
|
|
428
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
485
429
|
[attr.aria-label]="label()"
|
|
486
430
|
[ngbPopover]="actionContent()"
|
|
487
431
|
placement="bottom-end"
|
|
@@ -491,16 +435,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
491
435
|
#popover="ngbPopover"
|
|
492
436
|
[disabled]="disabled()"
|
|
493
437
|
(click)="act.emit()"
|
|
438
|
+
class="df-btn-icononly df-topnav-quick-action-btn"
|
|
494
439
|
>
|
|
495
440
|
<ng-template #dfTopNavQuickActionDefaultIcon>
|
|
496
|
-
<
|
|
441
|
+
<df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
|
|
497
442
|
</ng-template>
|
|
498
443
|
<ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
|
|
499
444
|
</button>
|
|
500
|
-
`, 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"] }]
|
|
501
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 }] }] } });
|
|
502
447
|
|
|
503
|
-
// 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.
|
|
504
448
|
/**
|
|
505
449
|
* AppContainer is a simple wrapper component that provides a consistent layout for applications using the {@link DfTopNav} component.
|
|
506
450
|
*
|
|
@@ -510,24 +454,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
510
454
|
* @since 21.1
|
|
511
455
|
*/
|
|
512
456
|
class DfAppContainer {
|
|
513
|
-
isSideItem(item) {
|
|
514
|
-
return 'children' in item;
|
|
515
|
-
}
|
|
516
457
|
constructor() {
|
|
517
458
|
this.topnav = contentChild.required(DfTopNav);
|
|
518
|
-
this.sidenav = viewChild(
|
|
519
|
-
|
|
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 */ []));
|
|
520
463
|
this.drawerContainerActions = viewChild.required('drawerContainerActions');
|
|
521
464
|
// Sync the state of the sidenav with the topnav on initialization and whenever the state of the sidenav changes
|
|
522
465
|
effect(() => {
|
|
523
466
|
this.topnav().navExpanded.set(!this.sidenav()?.isMinimized());
|
|
524
467
|
});
|
|
525
468
|
effect(() => {
|
|
526
|
-
let sidenavMinimized = false;
|
|
527
|
-
let sidenav = undefined;
|
|
528
469
|
const topnavExpanded = this.topnav().navExpanded();
|
|
470
|
+
const sidenav = this.sidenav();
|
|
471
|
+
let sidenavMinimized = false;
|
|
529
472
|
untracked(() => {
|
|
530
|
-
sidenav = this.sidenav();
|
|
531
473
|
sidenavMinimized = sidenav?.isMinimized() ?? false;
|
|
532
474
|
});
|
|
533
475
|
// we need this condition to make sure to not call toggleMinimize when the drawer has not rendered yet (issue with the drawer toggleMinimze)
|
|
@@ -539,133 +481,43 @@ class DfAppContainer {
|
|
|
539
481
|
ngAfterContentInit() {
|
|
540
482
|
this.topnav()['inAppContainer'].set(true);
|
|
541
483
|
}
|
|
542
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
543
|
-
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: `
|
|
544
486
|
<ng-content select="df-topnav" />
|
|
545
487
|
<ng-content select="df-env-banner" />
|
|
546
488
|
<div class="df-app-container-content" #drawerContainerActions>
|
|
547
489
|
@if (sidenavContent().length) {
|
|
548
|
-
<df-sidenav
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
<df-sidenav-item [label]="element2.label()">
|
|
555
|
-
@for (element3 of element2.children(); track element3.label()) {
|
|
556
|
-
@if (isSideItem(element3)) {
|
|
557
|
-
<df-sidenav-item [label]="element3.label()">
|
|
558
|
-
@for (element4 of element3.children(); track element4.label()) {
|
|
559
|
-
@if (!isSideItem(element4)) {
|
|
560
|
-
<df-sidenav-link
|
|
561
|
-
[label]="element4.label()"
|
|
562
|
-
[linkPath]="element4.href()"
|
|
563
|
-
[active]="element4.external() ? false : undefined"
|
|
564
|
-
[routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
|
|
565
|
-
/>
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
</df-sidenav-item>
|
|
569
|
-
} @else {
|
|
570
|
-
<df-sidenav-link
|
|
571
|
-
[label]="element3.label()"
|
|
572
|
-
[linkPath]="element3.href()"
|
|
573
|
-
[active]="element3.external() ? false : undefined"
|
|
574
|
-
[routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
|
|
575
|
-
/>
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
</df-sidenav-item>
|
|
579
|
-
} @else {
|
|
580
|
-
<df-sidenav-link
|
|
581
|
-
[label]="element2.label()"
|
|
582
|
-
[linkPath]="element2.href()"
|
|
583
|
-
[active]="element2.external() ? false : undefined"
|
|
584
|
-
[routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
|
|
585
|
-
/>
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
</df-sidenav-item>
|
|
589
|
-
} @else {
|
|
590
|
-
<df-sidenav-link
|
|
591
|
-
[label]="element1.label()"
|
|
592
|
-
[linkPath]="element1.href()"
|
|
593
|
-
[active]="element1.external() ? false : undefined"
|
|
594
|
-
[routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
|
|
595
|
-
/>
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
</df-sidenav>
|
|
490
|
+
<df-sidenav-input
|
|
491
|
+
[className]="'df-sidenav-light-sky'"
|
|
492
|
+
[items]="sidenavContent()"
|
|
493
|
+
[searchable]="false"
|
|
494
|
+
[resizable]="false"
|
|
495
|
+
/>
|
|
599
496
|
}
|
|
600
497
|
<ng-content select="main" />
|
|
601
498
|
</div>
|
|
602
|
-
`, 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 }); }
|
|
603
500
|
}
|
|
604
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAppContainer, decorators: [{
|
|
605
502
|
type: Component,
|
|
606
503
|
args: [{ selector: 'df-app-container', template: `
|
|
607
504
|
<ng-content select="df-topnav" />
|
|
608
505
|
<ng-content select="df-env-banner" />
|
|
609
506
|
<div class="df-app-container-content" #drawerContainerActions>
|
|
610
507
|
@if (sidenavContent().length) {
|
|
611
|
-
<df-sidenav
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
<df-sidenav-item [label]="element2.label()">
|
|
618
|
-
@for (element3 of element2.children(); track element3.label()) {
|
|
619
|
-
@if (isSideItem(element3)) {
|
|
620
|
-
<df-sidenav-item [label]="element3.label()">
|
|
621
|
-
@for (element4 of element3.children(); track element4.label()) {
|
|
622
|
-
@if (!isSideItem(element4)) {
|
|
623
|
-
<df-sidenav-link
|
|
624
|
-
[label]="element4.label()"
|
|
625
|
-
[linkPath]="element4.href()"
|
|
626
|
-
[active]="element4.external() ? false : undefined"
|
|
627
|
-
[routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
|
|
628
|
-
/>
|
|
629
|
-
}
|
|
630
|
-
}
|
|
631
|
-
</df-sidenav-item>
|
|
632
|
-
} @else {
|
|
633
|
-
<df-sidenav-link
|
|
634
|
-
[label]="element3.label()"
|
|
635
|
-
[linkPath]="element3.href()"
|
|
636
|
-
[active]="element3.external() ? false : undefined"
|
|
637
|
-
[routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
|
|
638
|
-
/>
|
|
639
|
-
}
|
|
640
|
-
}
|
|
641
|
-
</df-sidenav-item>
|
|
642
|
-
} @else {
|
|
643
|
-
<df-sidenav-link
|
|
644
|
-
[label]="element2.label()"
|
|
645
|
-
[linkPath]="element2.href()"
|
|
646
|
-
[active]="element2.external() ? false : undefined"
|
|
647
|
-
[routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
|
|
648
|
-
/>
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
</df-sidenav-item>
|
|
652
|
-
} @else {
|
|
653
|
-
<df-sidenav-link
|
|
654
|
-
[label]="element1.label()"
|
|
655
|
-
[linkPath]="element1.href()"
|
|
656
|
-
[active]="element1.external() ? false : undefined"
|
|
657
|
-
[routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
|
|
658
|
-
/>
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
</df-sidenav>
|
|
508
|
+
<df-sidenav-input
|
|
509
|
+
[className]="'df-sidenav-light-sky'"
|
|
510
|
+
[items]="sidenavContent()"
|
|
511
|
+
[searchable]="false"
|
|
512
|
+
[resizable]="false"
|
|
513
|
+
/>
|
|
662
514
|
}
|
|
663
515
|
<ng-content select="main" />
|
|
664
516
|
</div>
|
|
665
517
|
`, host: {
|
|
666
518
|
class: 'df-app-container'
|
|
667
|
-
},
|
|
668
|
-
}], 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 }] }] } });
|
|
669
521
|
|
|
670
522
|
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
671
523
|
/**
|
|
@@ -676,10 +528,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
676
528
|
* @since 21.1
|
|
677
529
|
*/
|
|
678
530
|
class DfTopNavQuickActionInTopNav {
|
|
679
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
680
|
-
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 }); }
|
|
681
533
|
}
|
|
682
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
534
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInTopNav, decorators: [{
|
|
683
535
|
type: Directive,
|
|
684
536
|
args: [{ selector: 'ng-template[dfTopNavQuickActionInTopNav]' }]
|
|
685
537
|
}] });
|
|
@@ -691,10 +543,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
691
543
|
* @since 21.1
|
|
692
544
|
*/
|
|
693
545
|
class DfTopNavQuickActionInDrawer {
|
|
694
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
695
|
-
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 }); }
|
|
696
548
|
}
|
|
697
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
549
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInDrawer, decorators: [{
|
|
698
550
|
type: Directive,
|
|
699
551
|
args: [{ selector: 'ng-template[dfTopNavQuickActionInDrawer]' }]
|
|
700
552
|
}] });
|
|
@@ -706,25 +558,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
706
558
|
* It should be used inside a {@link DfTopNavQuickActions} component.
|
|
707
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.
|
|
708
560
|
*
|
|
709
|
-
* 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}
|
|
710
562
|
* @since 21.1
|
|
711
563
|
*/
|
|
712
564
|
class DfTopNavQuickAction extends DfTopNavQuickActionElement {
|
|
713
565
|
constructor() {
|
|
714
566
|
super(...arguments);
|
|
715
567
|
this.content = contentChild.required(DfTopNavQuickActionInTopNav, { read: TemplateRef });
|
|
716
|
-
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'];
|
|
717
570
|
}
|
|
718
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
719
|
-
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"] }] }); }
|
|
720
573
|
}
|
|
721
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
574
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickAction, decorators: [{
|
|
722
575
|
type: Component,
|
|
723
576
|
args: [{
|
|
724
577
|
selector: 'df-topnav-quick-action',
|
|
725
578
|
template: ` <ng-container *ngTemplateOutlet="content()" /> `,
|
|
726
579
|
imports: [NgTemplateOutlet],
|
|
727
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
728
580
|
providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }]
|
|
729
581
|
}]
|
|
730
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 }] }] } });
|
|
@@ -737,10 +589,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
737
589
|
* @since 21.1
|
|
738
590
|
*/
|
|
739
591
|
class DfTopNavQuickActionSearchInput {
|
|
740
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
741
|
-
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 }); }
|
|
742
594
|
}
|
|
743
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
595
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearchInput, decorators: [{
|
|
744
596
|
type: Component,
|
|
745
597
|
args: [{
|
|
746
598
|
// eslint-disable-next-line @angular-eslint/component-selector
|
|
@@ -749,7 +601,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
749
601
|
type: 'search',
|
|
750
602
|
class: 'df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon'
|
|
751
603
|
},
|
|
752
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
753
604
|
template: ``
|
|
754
605
|
}]
|
|
755
606
|
}] });
|
|
@@ -758,7 +609,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
758
609
|
*
|
|
759
610
|
* It should be used inside a {@link DfTopNavQuickActions} component and contain a ng-template with an input {@link DfTopNavQuickActionSearchInput}.
|
|
760
611
|
*
|
|
761
|
-
* 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}
|
|
762
613
|
* @since 21.1
|
|
763
614
|
*/
|
|
764
615
|
class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
|
|
@@ -771,26 +622,27 @@ class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
|
|
|
771
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.
|
|
772
623
|
* See [ARIA guidelines](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/search_role) for more information.
|
|
773
624
|
*/
|
|
774
|
-
this.ariaLabel = input(
|
|
625
|
+
this.ariaLabel = input(/* @ts-ignore */
|
|
626
|
+
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
775
627
|
}
|
|
776
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
777
|
-
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: `
|
|
778
630
|
<div class="df-topnav-quick-action-search-container input-group">
|
|
779
631
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
780
|
-
<
|
|
632
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
781
633
|
</div>
|
|
782
634
|
<ng-container *ngTemplateOutlet="templateRef()" />
|
|
783
635
|
</div>
|
|
784
|
-
`, 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" }] }); }
|
|
785
637
|
}
|
|
786
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearch, decorators: [{
|
|
787
639
|
type: Component,
|
|
788
640
|
args: [{
|
|
789
641
|
selector: 'df-topnav-quick-action-search',
|
|
790
642
|
template: `
|
|
791
643
|
<div class="df-topnav-quick-action-search-container input-group">
|
|
792
644
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
793
|
-
<
|
|
645
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
794
646
|
</div>
|
|
795
647
|
<ng-container *ngTemplateOutlet="templateRef()" />
|
|
796
648
|
</div>
|
|
@@ -799,8 +651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
799
651
|
role: 'search',
|
|
800
652
|
'[attr.aria-label]': 'ariaLabel()'
|
|
801
653
|
},
|
|
802
|
-
imports: [NgTemplateOutlet],
|
|
803
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
654
|
+
imports: [NgTemplateOutlet, DfIcon],
|
|
804
655
|
providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }]
|
|
805
656
|
}]
|
|
806
657
|
}], propDecorators: { templateRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
@@ -808,7 +659,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
808
659
|
/**
|
|
809
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.
|
|
810
661
|
*
|
|
811
|
-
* 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}
|
|
812
663
|
* @since 21.1
|
|
813
664
|
*/
|
|
814
665
|
class DfTopNavQuickActions {
|
|
@@ -827,33 +678,51 @@ class DfTopNavQuickActions {
|
|
|
827
678
|
actionBtn.act.emit();
|
|
828
679
|
}
|
|
829
680
|
}
|
|
681
|
+
actionLabelToId(actionBtn) {
|
|
682
|
+
return 'df-drawer-button-' + actionBtn.label().toLocaleLowerCase().replace(/ /g, '-');
|
|
683
|
+
}
|
|
830
684
|
constructor() {
|
|
831
685
|
/**
|
|
832
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.
|
|
833
687
|
*/
|
|
834
|
-
this.reversedVertical = input(true,
|
|
688
|
+
this.reversedVertical = input(true, /* @ts-ignore */
|
|
689
|
+
...(ngDevMode ? [{ debugName: "reversedVertical" }] : /* istanbul ignore next */ []));
|
|
835
690
|
/**
|
|
836
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.
|
|
837
692
|
*/
|
|
838
|
-
this.tabletDrawerContainer = input(
|
|
693
|
+
this.tabletDrawerContainer = input(/* @ts-ignore */
|
|
694
|
+
...(ngDevMode ? [undefined, { debugName: "tabletDrawerContainer" }] : /* istanbul ignore next */ []));
|
|
839
695
|
this.appContainer = inject(DfAppContainer, { optional: true });
|
|
840
|
-
this._actionElements = contentChildren(DF_TOPNAV_QUICK_ACTION_ELEMENT,
|
|
841
|
-
|
|
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 });
|
|
842
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 */ []));
|
|
843
704
|
// Responsive signals
|
|
844
|
-
this.isMd =
|
|
845
|
-
this.isLg =
|
|
705
|
+
this.isMd = trackWindow('md');
|
|
706
|
+
this.isLg = trackWindow('lg');
|
|
846
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
|
|
847
708
|
this.drawerContainer = computed(() => this.isMd()
|
|
848
709
|
? (this.tabletDrawerContainer() ??
|
|
849
710
|
this.appContainer?.['drawerContainerActions']?.()?.nativeElement ??
|
|
850
711
|
this.document.body)
|
|
851
|
-
: this.document.body,
|
|
852
|
-
|
|
853
|
-
this.
|
|
854
|
-
|
|
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 */ []));
|
|
855
720
|
// the selected quick action in the
|
|
856
|
-
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'];
|
|
857
726
|
// resets the menu state when resizing to large screens, as the drawer will be closed and the selected button will be hidden
|
|
858
727
|
effect(() => {
|
|
859
728
|
if (this.isLg()) {
|
|
@@ -865,9 +734,19 @@ class DfTopNavQuickActions {
|
|
|
865
734
|
this.selectedQuickAction.set(undefined);
|
|
866
735
|
}
|
|
867
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
|
+
});
|
|
868
747
|
}
|
|
869
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
870
|
-
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>
|
|
871
750
|
<ng-content />
|
|
872
751
|
</ng-template>
|
|
873
752
|
<div class="df-topnav-quick-actions">
|
|
@@ -875,18 +754,18 @@ class DfTopNavQuickActions {
|
|
|
875
754
|
<ng-container *ngTemplateOutlet="topnavQuickActions" />
|
|
876
755
|
} @else {
|
|
877
756
|
<button
|
|
878
|
-
|
|
879
|
-
|
|
757
|
+
dfIconButton
|
|
758
|
+
appearance="text"
|
|
759
|
+
variant="neutral"
|
|
760
|
+
transparent
|
|
761
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
880
762
|
aria-label="Toggle quick actions menu"
|
|
881
763
|
i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
|
|
882
764
|
(click)="menuExpanded.set(!menuExpanded())"
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
888
|
-
></span>
|
|
889
|
-
</button>
|
|
765
|
+
class="fal"
|
|
766
|
+
[class.fa-xmark]="menuExpanded()"
|
|
767
|
+
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
768
|
+
></button>
|
|
890
769
|
<df-drawer
|
|
891
770
|
class="df-topnav-drawer-host"
|
|
892
771
|
position="inline-end"
|
|
@@ -902,8 +781,13 @@ class DfTopNavQuickActions {
|
|
|
902
781
|
>
|
|
903
782
|
@let selected = selectedQuickAction();
|
|
904
783
|
@if (selected) {
|
|
905
|
-
<button
|
|
906
|
-
|
|
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" />
|
|
907
791
|
<span>{{ selected.label() }}</span>
|
|
908
792
|
</button>
|
|
909
793
|
<hr class="df-topnav-drawer-divider" />
|
|
@@ -918,7 +802,7 @@ class DfTopNavQuickActions {
|
|
|
918
802
|
[attr.aria-label]="searchElement()!.ariaLabel()"
|
|
919
803
|
>
|
|
920
804
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
921
|
-
<
|
|
805
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
922
806
|
</div>
|
|
923
807
|
<ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
|
|
924
808
|
</div>
|
|
@@ -930,17 +814,18 @@ class DfTopNavQuickActions {
|
|
|
930
814
|
class="df-topnav-drawer-button"
|
|
931
815
|
(click)="clickQuickAction(actionElement)"
|
|
932
816
|
[disabled]="actionElement.disabled()"
|
|
817
|
+
#drawerButton
|
|
818
|
+
[id]="actionLabelToId(actionElement)"
|
|
933
819
|
>
|
|
934
820
|
<ng-template #dfQuickActionDefaultIcon>
|
|
935
|
-
<
|
|
821
|
+
<df-icon class="fal" [class]="actionElement.icon()" />
|
|
936
822
|
</ng-template>
|
|
937
823
|
<ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
|
|
938
824
|
<span>{{ actionElement.label() }}</span>
|
|
939
825
|
@if (actionElement['actionContent']()) {
|
|
940
|
-
<
|
|
826
|
+
<df-icon
|
|
941
827
|
class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
|
|
942
|
-
|
|
943
|
-
></span>
|
|
828
|
+
/>
|
|
944
829
|
}
|
|
945
830
|
</button>
|
|
946
831
|
} @else {
|
|
@@ -951,9 +836,9 @@ class DfTopNavQuickActions {
|
|
|
951
836
|
}
|
|
952
837
|
</df-drawer>
|
|
953
838
|
}
|
|
954
|
-
</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 }); }
|
|
955
840
|
}
|
|
956
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
841
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActions, decorators: [{
|
|
957
842
|
type: Component,
|
|
958
843
|
args: [{ selector: 'df-topnav-quick-actions', host: {
|
|
959
844
|
'[style.display]': "'contents'",
|
|
@@ -966,18 +851,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
966
851
|
<ng-container *ngTemplateOutlet="topnavQuickActions" />
|
|
967
852
|
} @else {
|
|
968
853
|
<button
|
|
969
|
-
|
|
970
|
-
|
|
854
|
+
dfIconButton
|
|
855
|
+
appearance="text"
|
|
856
|
+
variant="neutral"
|
|
857
|
+
transparent
|
|
858
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
971
859
|
aria-label="Toggle quick actions menu"
|
|
972
860
|
i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
|
|
973
861
|
(click)="menuExpanded.set(!menuExpanded())"
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
979
|
-
></span>
|
|
980
|
-
</button>
|
|
862
|
+
class="fal"
|
|
863
|
+
[class.fa-xmark]="menuExpanded()"
|
|
864
|
+
[class.fa-ellipsis-vertical]="!menuExpanded()"
|
|
865
|
+
></button>
|
|
981
866
|
<df-drawer
|
|
982
867
|
class="df-topnav-drawer-host"
|
|
983
868
|
position="inline-end"
|
|
@@ -993,8 +878,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
993
878
|
>
|
|
994
879
|
@let selected = selectedQuickAction();
|
|
995
880
|
@if (selected) {
|
|
996
|
-
<button
|
|
997
|
-
|
|
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" />
|
|
998
888
|
<span>{{ selected.label() }}</span>
|
|
999
889
|
</button>
|
|
1000
890
|
<hr class="df-topnav-drawer-divider" />
|
|
@@ -1009,7 +899,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1009
899
|
[attr.aria-label]="searchElement()!.ariaLabel()"
|
|
1010
900
|
>
|
|
1011
901
|
<div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
|
|
1012
|
-
<
|
|
902
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
1013
903
|
</div>
|
|
1014
904
|
<ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
|
|
1015
905
|
</div>
|
|
@@ -1021,17 +911,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1021
911
|
class="df-topnav-drawer-button"
|
|
1022
912
|
(click)="clickQuickAction(actionElement)"
|
|
1023
913
|
[disabled]="actionElement.disabled()"
|
|
914
|
+
#drawerButton
|
|
915
|
+
[id]="actionLabelToId(actionElement)"
|
|
1024
916
|
>
|
|
1025
917
|
<ng-template #dfQuickActionDefaultIcon>
|
|
1026
|
-
<
|
|
918
|
+
<df-icon class="fal" [class]="actionElement.icon()" />
|
|
1027
919
|
</ng-template>
|
|
1028
920
|
<ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
|
|
1029
921
|
<span>{{ actionElement.label() }}</span>
|
|
1030
922
|
@if (actionElement['actionContent']()) {
|
|
1031
|
-
<
|
|
923
|
+
<df-icon
|
|
1032
924
|
class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
|
|
1033
|
-
|
|
1034
|
-
></span>
|
|
925
|
+
/>
|
|
1035
926
|
}
|
|
1036
927
|
</button>
|
|
1037
928
|
} @else {
|
|
@@ -1042,8 +933,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1042
933
|
}
|
|
1043
934
|
</df-drawer>
|
|
1044
935
|
}
|
|
1045
|
-
</div>`, imports: [DfDrawer, NgTemplateOutlet,
|
|
1046
|
-
}], 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 }] }] } });
|
|
1047
938
|
|
|
1048
939
|
/**
|
|
1049
940
|
* TopNav (Top Navigation Bar) provides consistent access to product-level navigation and global actions across Amadeus applications.
|
|
@@ -1057,39 +948,43 @@ class DfTopNav {
|
|
|
1057
948
|
constructor() {
|
|
1058
949
|
/**
|
|
1059
950
|
* The style of the TopNav main nav, which determines the applied styles. Can be either "basic" or "mirror".
|
|
1060
|
-
*
|
|
1061
|
-
*/
|
|
1062
|
-
this.mainNavStyle = input(...(ngDevMode ? [undefined, { debugName: "mainNavStyle" }] : []));
|
|
1063
|
-
/**
|
|
1064
|
-
* The style of the TopNav secondary nav, which determines the applied styles. Can be either "basic" or "mirror".
|
|
1065
|
-
* When not provided, the applied mode will be opposite to the main nav style.
|
|
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.
|
|
1066
952
|
*/
|
|
1067
|
-
this.
|
|
953
|
+
this.mainNavStyle = input(/* @ts-ignore */
|
|
954
|
+
...(ngDevMode ? [undefined, { debugName: "mainNavStyle" }] : /* istanbul ignore next */ []));
|
|
1068
955
|
/**
|
|
1069
956
|
* The mode of the TopNav, which determines the behavior of the navigation. Can be either "sidenav" or "dropdown".
|
|
1070
957
|
*/
|
|
1071
|
-
this.mode = input('sidenav',
|
|
958
|
+
this.mode = input('sidenav', /* @ts-ignore */
|
|
959
|
+
...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
1072
960
|
/**
|
|
1073
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.
|
|
1074
962
|
*/
|
|
1075
|
-
this.navExpanded = model(false,
|
|
963
|
+
this.navExpanded = model(false, /* @ts-ignore */
|
|
964
|
+
...(ngDevMode ? [{ debugName: "navExpanded" }] : /* istanbul ignore next */ []));
|
|
1076
965
|
/**
|
|
1077
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.
|
|
1078
967
|
*/
|
|
1079
|
-
this.superheader = input(
|
|
968
|
+
this.superheader = input(/* @ts-ignore */
|
|
969
|
+
...(ngDevMode ? [undefined, { debugName: "superheader" }] : /* istanbul ignore next */ []));
|
|
1080
970
|
/**
|
|
1081
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.
|
|
1082
972
|
* When not provided, the toggle button will be shown automatically when there are navigation links and the screen size is smaller than large.
|
|
1083
973
|
*/
|
|
1084
|
-
this.showToggle = input(false, { ...(ngDevMode ? { debugName: "showToggle" } : {}), transform: booleanAttribute });
|
|
1085
|
-
this.navigationContainer = contentChild(DfTopNavNavigation,
|
|
1086
|
-
|
|
1087
|
-
this.
|
|
1088
|
-
|
|
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 */ []));
|
|
1089
983
|
/**
|
|
1090
984
|
* Signal that indicates when the links need to be displayed in the topnav instead of the navbar.
|
|
1091
985
|
*/
|
|
1092
|
-
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 */ []));
|
|
1093
988
|
/**
|
|
1094
989
|
* The content of the sidenav, which is derived from the TopNav navigation elements.
|
|
1095
990
|
*/
|
|
@@ -1121,27 +1016,36 @@ class DfTopNav {
|
|
|
1121
1016
|
const mapNavElementToSideNavItem = (el) => {
|
|
1122
1017
|
if (el instanceof DfTopNavNavigationLink) {
|
|
1123
1018
|
return {
|
|
1124
|
-
label: el.label,
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
routerLinkActiveOptions: el.routerLinkActiveOptions
|
|
1019
|
+
label: el.label(),
|
|
1020
|
+
linkPath: el['resolvedLink'](),
|
|
1021
|
+
active: el['externalLink']() ? false : undefined,
|
|
1022
|
+
routerLinkActiveOptions: el.routerLinkActiveOptions()
|
|
1128
1023
|
};
|
|
1129
1024
|
}
|
|
1130
1025
|
{
|
|
1131
1026
|
return {
|
|
1132
|
-
label: el.label,
|
|
1133
|
-
children:
|
|
1027
|
+
label: el.label(),
|
|
1028
|
+
children: (el['childElements']() ?? []).map(mapNavElementToSideNavItem)
|
|
1134
1029
|
};
|
|
1135
1030
|
}
|
|
1136
1031
|
};
|
|
1137
1032
|
return navElements.map(mapNavElementToSideNavItem);
|
|
1138
|
-
},
|
|
1033
|
+
}, /* @ts-ignore */
|
|
1034
|
+
...(ngDevMode ? [{ debugName: "sidenavContent" }] : /* istanbul ignore next */ []));
|
|
1139
1035
|
// Responsive signals
|
|
1140
|
-
this.isLg =
|
|
1141
|
-
this.isXl =
|
|
1142
|
-
this.appliedSuperheader = computed(() => this.superheader() ?? this.navElements().length > 5,
|
|
1143
|
-
|
|
1144
|
-
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 */ []));
|
|
1145
1049
|
// The drawer and sidenav should never be opened together. Those two effects ensure that.
|
|
1146
1050
|
effect(() => {
|
|
1147
1051
|
if (this.navExpanded()) {
|
|
@@ -1171,8 +1075,8 @@ class DfTopNav {
|
|
|
1171
1075
|
});
|
|
1172
1076
|
}
|
|
1173
1077
|
}
|
|
1174
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1175
|
-
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: `
|
|
1176
1080
|
<ng-template #navContent>
|
|
1177
1081
|
<ng-content select="df-topnav-navigation" />
|
|
1178
1082
|
</ng-template>
|
|
@@ -1187,19 +1091,19 @@ class DfTopNav {
|
|
|
1187
1091
|
>
|
|
1188
1092
|
@if (showToggle() || (sidenavContent().length && !isLg())) {
|
|
1189
1093
|
<button
|
|
1190
|
-
|
|
1191
|
-
|
|
1094
|
+
dfIconButton
|
|
1095
|
+
appearance="text"
|
|
1096
|
+
variant="neutral"
|
|
1097
|
+
transparent
|
|
1098
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
1192
1099
|
aria-label="Toggle navigation menu"
|
|
1193
1100
|
i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
|
|
1194
1101
|
(click)="navExpanded.set(!navExpanded())"
|
|
1195
1102
|
aria-haspopup="dialog"
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
[class.fa-bars]="!navExpanded()"
|
|
1201
|
-
></span>
|
|
1202
|
-
</button>
|
|
1103
|
+
class="fal df-topnav-toggle-button"
|
|
1104
|
+
[class.fa-xmark]="navExpanded()"
|
|
1105
|
+
[class.fa-bars]="!navExpanded()"
|
|
1106
|
+
></button>
|
|
1203
1107
|
}
|
|
1204
1108
|
<ng-content select="df-topnav-brand" />
|
|
1205
1109
|
@if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
|
|
@@ -1210,8 +1114,8 @@ class DfTopNav {
|
|
|
1210
1114
|
@if (appliedSuperheader() && (!inAppContainer() || isLg())) {
|
|
1211
1115
|
<nav
|
|
1212
1116
|
class="df-topnav-nav"
|
|
1213
|
-
[class.df-topnav-nav-basic]="
|
|
1214
|
-
[class.df-topnav-nav-mirror]="
|
|
1117
|
+
[class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
|
|
1118
|
+
[class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
|
|
1215
1119
|
aria-label="Secondary"
|
|
1216
1120
|
i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
|
|
1217
1121
|
>
|
|
@@ -1219,9 +1123,9 @@ class DfTopNav {
|
|
|
1219
1123
|
</nav>
|
|
1220
1124
|
}
|
|
1221
1125
|
</header>
|
|
1222
|
-
`, 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 }); }
|
|
1223
1127
|
}
|
|
1224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1128
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNav, decorators: [{
|
|
1225
1129
|
type: Component,
|
|
1226
1130
|
args: [{ selector: 'df-topnav', template: `
|
|
1227
1131
|
<ng-template #navContent>
|
|
@@ -1238,19 +1142,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1238
1142
|
>
|
|
1239
1143
|
@if (showToggle() || (sidenavContent().length && !isLg())) {
|
|
1240
1144
|
<button
|
|
1241
|
-
|
|
1242
|
-
|
|
1145
|
+
dfIconButton
|
|
1146
|
+
appearance="text"
|
|
1147
|
+
variant="neutral"
|
|
1148
|
+
transparent
|
|
1149
|
+
[mirror]="mainNavAppliedStyle() === 'mirror'"
|
|
1243
1150
|
aria-label="Toggle navigation menu"
|
|
1244
1151
|
i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
|
|
1245
1152
|
(click)="navExpanded.set(!navExpanded())"
|
|
1246
1153
|
aria-haspopup="dialog"
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
[class.fa-bars]="!navExpanded()"
|
|
1252
|
-
></span>
|
|
1253
|
-
</button>
|
|
1154
|
+
class="fal df-topnav-toggle-button"
|
|
1155
|
+
[class.fa-xmark]="navExpanded()"
|
|
1156
|
+
[class.fa-bars]="!navExpanded()"
|
|
1157
|
+
></button>
|
|
1254
1158
|
}
|
|
1255
1159
|
<ng-content select="df-topnav-brand" />
|
|
1256
1160
|
@if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
|
|
@@ -1261,8 +1165,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1261
1165
|
@if (appliedSuperheader() && (!inAppContainer() || isLg())) {
|
|
1262
1166
|
<nav
|
|
1263
1167
|
class="df-topnav-nav"
|
|
1264
|
-
[class.df-topnav-nav-basic]="
|
|
1265
|
-
[class.df-topnav-nav-mirror]="
|
|
1168
|
+
[class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
|
|
1169
|
+
[class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
|
|
1266
1170
|
aria-label="Secondary"
|
|
1267
1171
|
i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
|
|
1268
1172
|
>
|
|
@@ -1270,10 +1174,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1270
1174
|
</nav>
|
|
1271
1175
|
}
|
|
1272
1176
|
</header>
|
|
1273
|
-
`,
|
|
1177
|
+
`, imports: [DfIconButton, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, host: {
|
|
1274
1178
|
class: 'df-topnav'
|
|
1275
|
-
}, styles: ["@media(
|
|
1276
|
-
}], 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 }] }] } });
|
|
1277
1181
|
|
|
1278
1182
|
/**
|
|
1279
1183
|
* A directive to mark the company template in the {@link DfTopNavBrand} brand component.
|
|
@@ -1282,10 +1186,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1282
1186
|
* @since 21.1
|
|
1283
1187
|
*/
|
|
1284
1188
|
class DfTopNavBrandLinkContent {
|
|
1285
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1286
|
-
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 }); }
|
|
1287
1191
|
}
|
|
1288
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrandLinkContent, decorators: [{
|
|
1289
1193
|
type: Directive,
|
|
1290
1194
|
args: [{
|
|
1291
1195
|
selector: 'ng-template[dfTopNavBrandLinkContent]'
|
|
@@ -1294,7 +1198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1294
1198
|
/**
|
|
1295
1199
|
* The TopNav brand component, used to display the company and product information.
|
|
1296
1200
|
*
|
|
1297
|
-
* See {@link https://design-factory.amadeus.net/components/topnav/
|
|
1201
|
+
* See {@link https://design-factory.amadeus.net/components/topnav/developer#brand|Design Factory example}
|
|
1298
1202
|
* @since 21.1
|
|
1299
1203
|
*/
|
|
1300
1204
|
class DfTopNavBrand {
|
|
@@ -1302,24 +1206,27 @@ class DfTopNavBrand {
|
|
|
1302
1206
|
/**
|
|
1303
1207
|
* The URL to navigate to when the brand is clicked. Defaults to "/".
|
|
1304
1208
|
*/
|
|
1305
|
-
this.href = input('/',
|
|
1209
|
+
this.href = input('/', /* @ts-ignore */
|
|
1210
|
+
...(ngDevMode ? [{ debugName: "href" }] : /* istanbul ignore next */ []));
|
|
1306
1211
|
/**
|
|
1307
1212
|
* The product.
|
|
1308
1213
|
*/
|
|
1309
|
-
this.product = input(
|
|
1214
|
+
this.product = input(/* @ts-ignore */
|
|
1215
|
+
...(ngDevMode ? [undefined, { debugName: "product" }] : /* istanbul ignore next */ []));
|
|
1310
1216
|
/**
|
|
1311
1217
|
* The module.
|
|
1312
1218
|
*/
|
|
1313
|
-
this.module = input(
|
|
1219
|
+
this.module = input(/* @ts-ignore */
|
|
1220
|
+
...(ngDevMode ? [undefined, { debugName: "module" }] : /* istanbul ignore next */ []));
|
|
1314
1221
|
/**
|
|
1315
1222
|
* Whether to display the Amadeus logo as a vector graphic instead of text.
|
|
1316
1223
|
*/
|
|
1317
|
-
this.amaudeusLogoVector = input(false, { ...(ngDevMode ? { debugName: "amaudeusLogoVector" } : {}), transform: booleanAttribute });
|
|
1318
|
-
this.brandLinkContent = contentChild(DfTopNavBrandLinkContent, { ...(ngDevMode ? { debugName: "brandLinkContent" } : {}), read: TemplateRef });
|
|
1319
|
-
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');
|
|
1320
1227
|
}
|
|
1321
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1322
|
-
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: `
|
|
1323
1230
|
<div class="df-topnav-brand">
|
|
1324
1231
|
<a class="df-topnav-brand-link" [routerLink]="href()">
|
|
1325
1232
|
<ng-template #defaultLink>
|
|
@@ -1390,9 +1297,9 @@ class DfTopNavBrand {
|
|
|
1390
1297
|
<span class="df-topnav-brand-module">{{ module() }}</span>
|
|
1391
1298
|
}
|
|
1392
1299
|
</div>
|
|
1393
|
-
`, 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 }); }
|
|
1394
1301
|
}
|
|
1395
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrand, decorators: [{
|
|
1396
1303
|
type: Component,
|
|
1397
1304
|
args: [{ selector: 'df-topnav-brand', template: `
|
|
1398
1305
|
<div class="df-topnav-brand">
|
|
@@ -1465,9 +1372,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1465
1372
|
<span class="df-topnav-brand-module">{{ module() }}</span>
|
|
1466
1373
|
}
|
|
1467
1374
|
</div>
|
|
1468
|
-
`,
|
|
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"] }]
|
|
1469
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 }] }] } });
|
|
1470
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 }] }] } });
|
|
1471
1425
|
/**
|
|
1472
1426
|
* DfTopNavQuickActionThemePicker is a topnav quick action dropdown component that allows users to select a theme mode for the application.
|
|
1473
1427
|
*
|
|
@@ -1483,133 +1437,179 @@ class DfTopNavQuickActionThemePicker extends DfTopNavQuickAction {
|
|
|
1483
1437
|
*
|
|
1484
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.
|
|
1485
1439
|
*/
|
|
1486
|
-
this.themeOptions = input.required(
|
|
1440
|
+
this.themeOptions = input.required(/* @ts-ignore */
|
|
1441
|
+
...(ngDevMode ? [{ debugName: "themeOptions" }] : /* istanbul ignore next */ []));
|
|
1487
1442
|
/**
|
|
1488
1443
|
* The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
|
|
1489
1444
|
*/
|
|
1490
|
-
this.appearance = input('neutral',
|
|
1445
|
+
this.appearance = input('neutral', /* @ts-ignore */
|
|
1446
|
+
...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
|
|
1491
1447
|
this.mapThemeToIcon = computed(() => {
|
|
1492
1448
|
const map = new Map();
|
|
1493
1449
|
for (const option of this.themeOptions()) {
|
|
1494
1450
|
map.set(option.themeMode, option.icon);
|
|
1495
1451
|
}
|
|
1496
1452
|
return map;
|
|
1497
|
-
},
|
|
1498
|
-
|
|
1453
|
+
}, /* @ts-ignore */
|
|
1454
|
+
...(ngDevMode ? [{ debugName: "mapThemeToIcon" }] : /* istanbul ignore next */ []));
|
|
1499
1455
|
this.content = viewChild.required('themePickerContent');
|
|
1456
|
+
this.drawerContent = viewChild('themePickerDrawerContent', /* @ts-ignore */
|
|
1457
|
+
...(ngDevMode ? [{ debugName: "drawerContent" }] : /* istanbul ignore next */ []));
|
|
1500
1458
|
}
|
|
1501
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1502
|
-
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: `
|
|
1503
1461
|
<ng-template #themePickerContent>
|
|
1504
|
-
<
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
[class.active]="themeOption.themeMode === themeService.selected()"
|
|
1530
|
-
(click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1531
|
-
>
|
|
1532
|
-
<span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
|
|
1533
|
-
{{ themeOption.themeMode | titlecase }}
|
|
1534
|
-
</button>
|
|
1535
|
-
}
|
|
1536
|
-
</div>
|
|
1537
|
-
</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>
|
|
1538
1487
|
</ng-template>
|
|
1539
1488
|
<ng-container *ngTemplateOutlet="themePickerContent" />
|
|
1540
|
-
|
|
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 }); }
|
|
1541
1517
|
}
|
|
1542
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1518
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePicker, decorators: [{
|
|
1543
1519
|
type: Component,
|
|
1544
|
-
args: [{
|
|
1520
|
+
args: [{
|
|
1521
|
+
selector: 'df-topnav-quick-action-theme-picker',
|
|
1522
|
+
template: `
|
|
1545
1523
|
<ng-template #themePickerContent>
|
|
1546
|
-
<
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
[class.active]="themeOption.themeMode === themeService.selected()"
|
|
1572
|
-
(click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
|
|
1573
|
-
>
|
|
1574
|
-
<span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
|
|
1575
|
-
{{ themeOption.themeMode | titlecase }}
|
|
1576
|
-
</button>
|
|
1577
|
-
}
|
|
1578
|
-
</div>
|
|
1579
|
-
</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>
|
|
1580
1549
|
</ng-template>
|
|
1581
1550
|
<ng-container *ngTemplateOutlet="themePickerContent" />
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
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,
|
|
1587
1583
|
TitleCasePipe,
|
|
1588
1584
|
NgTemplateOutlet,
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
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 }] }] } });
|
|
1592
1592
|
|
|
1593
1593
|
/**
|
|
1594
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).
|
|
1595
1595
|
*
|
|
1596
|
-
* 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}
|
|
1597
1597
|
* @since 21.1
|
|
1598
1598
|
*/
|
|
1599
1599
|
class DfEnvBanner {
|
|
1600
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1601
|
-
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 }); }
|
|
1602
1602
|
}
|
|
1603
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfEnvBanner, decorators: [{
|
|
1604
1604
|
type: Component,
|
|
1605
|
-
args: [{ selector: 'df-env-banner', template: `<ng-content />`,
|
|
1605
|
+
args: [{ selector: 'df-env-banner', template: `<ng-content />`, encapsulation: ViewEncapsulation.None, host: {
|
|
1606
1606
|
class: 'df-env-banner'
|
|
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(
|
|
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"] }]
|
|
1608
1608
|
}] });
|
|
1609
1609
|
|
|
1610
1610
|
/**
|
|
1611
1611
|
* Generated bundle index. Do not edit.
|
|
1612
1612
|
*/
|
|
1613
1613
|
|
|
1614
|
-
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 };
|
|
1615
1615
|
//# sourceMappingURL=design-factory-angular-topnav.mjs.map
|