@design-factory/angular 21.1.0-next.1 → 22.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/docs/components/accordion/accessibility.md +45 -0
- package/.ai/docs/components/accordion/api.md +279 -0
- package/.ai/docs/components/accordion/developer.md +43 -0
- package/.ai/docs/components/accordion/guidelines.md +99 -0
- package/.ai/docs/components/accordion/overview.md +17 -0
- package/.ai/docs/components/alert/accessibility.md +24 -0
- package/.ai/docs/components/alert/api.md +65 -0
- package/.ai/docs/components/alert/developer.md +63 -0
- package/.ai/docs/components/alert/guidelines.md +62 -0
- package/.ai/docs/components/alert/overview.md +12 -0
- package/.ai/docs/components/button/accessibility.md +25 -0
- package/.ai/docs/components/button/api.md +71 -0
- package/.ai/docs/components/button/developer.md +52 -0
- package/.ai/docs/components/button/guidelines.md +75 -0
- package/.ai/docs/components/button/overview.md +15 -0
- package/.ai/docs/components/buttongroup/api.md +16 -0
- package/.ai/docs/components/buttongroup/developer.md +32 -0
- package/.ai/docs/components/drawer/accessibility.md +15 -0
- package/.ai/docs/components/drawer/api.md +56 -0
- package/.ai/docs/components/drawer/developer.md +36 -0
- package/.ai/docs/components/drawer/examples.md +9 -0
- package/.ai/docs/components/drawer/guidelines.md +58 -0
- package/.ai/docs/components/drawer/overview.md +19 -0
- package/.ai/docs/components/dropdown/accessibility.md +27 -0
- package/.ai/docs/components/dropdown/api.md +85 -0
- package/.ai/docs/components/dropdown/developer.md +59 -0
- package/.ai/docs/components/dropdown/guidelines.md +80 -0
- package/.ai/docs/components/dropdown/overview.md +16 -0
- package/.ai/docs/components/sidenav/accessibility.md +48 -0
- package/.ai/docs/components/sidenav/api.md +110 -0
- package/.ai/docs/components/sidenav/developer.md +14 -0
- package/.ai/docs/components/sidenav/guidelines.md +83 -0
- package/.ai/docs/components/sidenav/overview.md +16 -0
- package/.ai/docs/components/tooltip/accessibility.md +11 -0
- package/.ai/docs/components/tooltip/api.md +39 -0
- package/.ai/docs/components/tooltip/developer.md +16 -0
- package/.ai/docs/components/tooltip/guidelines.md +84 -0
- package/.ai/docs/components/tooltip/overview.md +23 -0
- package/.ai/docs/components/topnav/accessibility.md +51 -0
- package/.ai/docs/components/topnav/api.md +190 -0
- package/.ai/docs/components/topnav/developer.md +43 -0
- package/.ai/docs/components/topnav/guidelines.md +121 -0
- package/.ai/docs/components/topnav/overview.md +17 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
- package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
- package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
- package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
- package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
- package/.ai/docs/demos/alert/card/alert-card.html +15 -0
- package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
- package/.ai/docs/demos/button/basic/button-basic.html +4 -0
- package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
- package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
- package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
- package/.ai/docs/demos/button/icons/button-icons.html +17 -0
- package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
- package/.ai/docs/demos/button/variants/button-variants.html +49 -0
- package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
- package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
- package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
- package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
- package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
- package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
- package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
- package/.ai/index.md +26 -0
- package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
- package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
- package/fesm2022/design-factory-angular-alert.mjs +312 -0
- package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
- package/fesm2022/design-factory-angular-button.mjs +240 -0
- package/fesm2022/design-factory-angular-button.mjs.map +1 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
- package/fesm2022/design-factory-angular-drawer.mjs +76 -81
- package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
- package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
- package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
- package/fesm2022/design-factory-angular-form-field.mjs +287 -0
- package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
- package/fesm2022/design-factory-angular-icon.mjs +24 -0
- package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
- package/fesm2022/design-factory-angular-input.mjs +34 -0
- package/fesm2022/design-factory-angular-input.mjs.map +1 -0
- package/fesm2022/design-factory-angular-internals.mjs +119 -39
- package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
- package/fesm2022/design-factory-angular-separator.mjs +43 -0
- package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
- package/fesm2022/design-factory-angular-sidenav.mjs +766 -438
- package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
- package/fesm2022/design-factory-angular-slider.mjs +451 -0
- package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
- package/fesm2022/design-factory-angular-theme.mjs +30 -20
- package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
- package/fesm2022/design-factory-angular-toggle.mjs +172 -0
- package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
- package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
- package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
- package/fesm2022/design-factory-angular-topnav.mjs +635 -558
- package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
- package/package.json +61 -8
- package/schematics/collection.json +35 -0
- package/schematics/component-migration/accordion/constants.d.ts +10 -0
- package/schematics/component-migration/accordion/constants.js +46 -0
- package/schematics/component-migration/accordion/guide.md +257 -0
- package/schematics/component-migration/accordion/index.d.ts +2 -0
- package/schematics/component-migration/accordion/index.js +5 -0
- package/schematics/component-migration/accordion/migration.d.ts +2 -0
- package/schematics/component-migration/accordion/migration.js +13 -0
- package/schematics/component-migration/accordion/schema.json +25 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
- package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
- package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
- package/schematics/component-migration/accordion/steps/title-content.js +75 -0
- package/schematics/component-migration/ai/prompt.md +83 -0
- package/schematics/component-migration/alert/guide.md +246 -0
- package/schematics/component-migration/alert/index.d.ts +2 -0
- package/schematics/component-migration/alert/index.js +5 -0
- package/schematics/component-migration/alert/migration.d.ts +2 -0
- package/schematics/component-migration/alert/migration.js +50 -0
- package/schematics/component-migration/alert/schema.json +25 -0
- package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
- package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
- package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
- package/schematics/component-migration/alert/steps/animation-input.js +17 -0
- package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
- package/schematics/component-migration/alert/steps/close-output.js +17 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
- package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
- package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
- package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
- package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
- package/schematics/component-migration/alert/steps/selector.js +18 -0
- package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-classes.js +97 -0
- package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-type.js +28 -0
- package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-reference.js +15 -0
- package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-todos.js +78 -0
- package/schematics/component-migration/button/guide.md +278 -0
- package/schematics/component-migration/button/index.d.ts +2 -0
- package/schematics/component-migration/button/index.js +5 -0
- package/schematics/component-migration/button/migration.d.ts +2 -0
- package/schematics/component-migration/button/migration.js +180 -0
- package/schematics/component-migration/button/schema.json +25 -0
- package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
- package/schematics/component-migration/button/steps/static-classes.js +128 -0
- package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/button/steps/template-todos.js +120 -0
- package/schematics/component-migration/button/types.d.ts +7 -0
- package/schematics/component-migration/button/types.js +2 -0
- package/schematics/component-migration/dropdown/guide.md +252 -0
- package/schematics/component-migration/dropdown/index.d.ts +2 -0
- package/schematics/component-migration/dropdown/index.js +5 -0
- package/schematics/component-migration/dropdown/migration.d.ts +2 -0
- package/schematics/component-migration/dropdown/migration.js +41 -0
- package/schematics/component-migration/dropdown/schema.json +25 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
- package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
- package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
- package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
- package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
- package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
- package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
- package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
- package/schematics/component-migration/index.d.ts +3 -0
- package/schematics/component-migration/index.js +26 -0
- package/schematics/component-migration/next-steps/index.d.ts +13 -0
- package/schematics/component-migration/next-steps/index.js +34 -0
- package/schematics/component-migration/registry.d.ts +1 -0
- package/schematics/component-migration/registry.js +15 -0
- package/schematics/component-migration/schema.json +20 -0
- package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
- package/schematics/component-migration/shared/ai-handoff.js +28 -0
- package/schematics/component-migration/shared/angular-component.d.ts +10 -0
- package/schematics/component-migration/shared/angular-component.js +125 -0
- package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
- package/schematics/component-migration/shared/button-visual-classes.js +111 -0
- package/schematics/component-migration/shared/component-context.d.ts +7 -0
- package/schematics/component-migration/shared/component-context.js +24 -0
- package/schematics/component-migration/shared/component-imports.d.ts +45 -0
- package/schematics/component-migration/shared/component-imports.js +380 -0
- package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
- package/schematics/component-migration/shared/create-component-schematic.js +55 -0
- package/schematics/component-migration/shared/import-edits.d.ts +11 -0
- package/schematics/component-migration/shared/import-edits.js +157 -0
- package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
- package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
- package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
- package/schematics/component-migration/shared/migrate-project.js +151 -0
- package/schematics/component-migration/shared/project-templates.d.ts +15 -0
- package/schematics/component-migration/shared/project-templates.js +43 -0
- package/schematics/component-migration/shared/scan-project.d.ts +3 -0
- package/schematics/component-migration/shared/scan-project.js +24 -0
- package/schematics/component-migration/shared/static-placement.d.ts +1 -0
- package/schematics/component-migration/shared/static-placement.js +45 -0
- package/schematics/component-migration/shared/template-edits.d.ts +28 -0
- package/schematics/component-migration/shared/template-edits.js +153 -0
- package/schematics/component-migration/shared/template-result.d.ts +3 -0
- package/schematics/component-migration/shared/template-result.js +11 -0
- package/schematics/component-migration/shared/testing.d.ts +13 -0
- package/schematics/component-migration/shared/testing.js +59 -0
- package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
- package/schematics/component-migration/shared/todo-comments.js +81 -0
- package/schematics/component-migration/shared/types.d.ts +41 -0
- package/schematics/component-migration/shared/types.js +2 -0
- package/schematics/component-migration/tooltip/guide.md +196 -0
- package/schematics/component-migration/tooltip/index.d.ts +2 -0
- package/schematics/component-migration/tooltip/index.js +5 -0
- package/schematics/component-migration/tooltip/migration.d.ts +2 -0
- package/schematics/component-migration/tooltip/migration.js +50 -0
- package/schematics/component-migration/tooltip/schema.json +25 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
- package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
- package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
- package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
- package/schematics/component-migration/utils/component-resource-collector.js +107 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
- package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
- package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
- package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
- package/schematics/component-migration/utils/typescript/decorators.js +41 -0
- package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
- package/schematics/component-migration/utils/typescript/functions.js +20 -0
- package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
- package/schematics/component-migration/utils/typescript/imports.js +110 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
- package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
- package/schematics/component-migration/utils/typescript/property-name.js +22 -0
- package/schematics/package.json +3 -0
- package/types/design-factory-angular-accordion.d.ts +553 -0
- package/types/design-factory-angular-alert.d.ts +166 -0
- package/types/design-factory-angular-breakpoints.d.ts +13 -0
- package/types/design-factory-angular-button.d.ts +166 -0
- package/types/design-factory-angular-buttongroup.d.ts +45 -0
- package/types/design-factory-angular-drawer.d.ts +19 -26
- package/types/design-factory-angular-dropdown.d.ts +148 -0
- package/types/design-factory-angular-form-field.d.ts +122 -0
- package/types/design-factory-angular-icon.d.ts +11 -0
- package/types/design-factory-angular-input.d.ts +16 -0
- package/types/design-factory-angular-internals.d.ts +78 -19
- package/types/design-factory-angular-separator.d.ts +29 -0
- package/types/design-factory-angular-sidenav.d.ts +114 -17
- package/types/design-factory-angular-slider.d.ts +239 -0
- package/types/design-factory-angular-toggle.d.ts +93 -0
- package/types/design-factory-angular-tooltip.d.ts +113 -0
- package/types/design-factory-angular-topnav.d.ts +47 -52
- package/drawer/README.md +0 -54
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
- Tooltip container **(1)** is the floating surface that displays the text.
|
|
2
|
+
- Text content **(2)** is the plain text only, providing short contextual information.
|
|
3
|
+
- Trigger element **(3)** is the element that activates the tooltip (icon, button, text, etc.).
|
|
4
|
+
|
|
5
|
+
This is the default and recommended tooltip variant across the product.
|
|
6
|
+
|
|
7
|
+
- Tooltip is displayed **above the trigger**, at a distance of 4px.
|
|
8
|
+
- Tooltip container is **center‑aligned** with the trigger
|
|
9
|
+
- Placement automatically adapts to avoid being rendered outside the viewport
|
|
10
|
+
|
|
11
|
+
The tooltip container must not exceed **320px** in width. When the content is longer than the available space, the text **wraps automatically onto multiple lines**.
|
|
12
|
+
|
|
13
|
+
- Keep the tooltips compact and easy to scan
|
|
14
|
+
- Keep text to **one short sentence** whenever possible
|
|
15
|
+
- Allow the system to handle placement automatically
|
|
16
|
+
- Allow text to wrap naturally within the container
|
|
17
|
+
|
|
18
|
+
- Don’t manually force placement unless strictly necessary
|
|
19
|
+
- Don’t create tooltips wider than 320px.
|
|
20
|
+
- Don’t truncate text or rely on horizontal scrolling.
|
|
21
|
+
- Don’t obscure the trigger element
|
|
22
|
+
|
|
23
|
+
Placement of the tooltip is automatic. It will try to be placed in the default placement, and if it is not possible (tooltip doesn’t fit within the screen), it will try the alternative placement shown below in order.
|
|
24
|
+
|
|
25
|
+
In special cases, a specific variant can be forced but the use of such enforcement is not recommended (e.g. it could be forced to show tooltips of the SideNav on the side instead of the default above)
|
|
26
|
+
|
|
27
|
+
- Rely on automatic placement to prevent screen overflow
|
|
28
|
+
- Ensure tooltips remain fully visible within the viewport
|
|
29
|
+
|
|
30
|
+
- Don’t disable adaptive placement
|
|
31
|
+
- Don’t allow tooltips to be clipped by the viewport
|
|
32
|
+
|
|
33
|
+
1. top (default): tooltip is placed above the trigger, with the tooltip container center aligned with the trigger.
|
|
34
|
+
2. top-start: tooltip is placed above the trigger, with the tooltip container left aligned, on left-to-right UI (on right-to-left, alignment is on the right).
|
|
35
|
+
3. top-end: tooltip is placed above the trigger, with the tooltip container right aligned, on left-to-right UI (on right-to-left, alignment is on the left).
|
|
36
|
+
|
|
37
|
+
1. bottom: tooltip is placed below the trigger, with the tooltip container center aligned with the trigger.
|
|
38
|
+
2. bottom-start: tooltip is placed below the trigger, with the tooltip container left aligned, on left-to-right UI (on right-to-left, alignment is on the right).
|
|
39
|
+
3. bottom-end: tooltip is placed below the trigger, with the tooltip container right aligned, on left-to-right UI (on right-to-left, alignment is on the left).
|
|
40
|
+
|
|
41
|
+
1. end: tooltip is placed next to the trigger, on the right (on left-to-right UI), with the tooltip container center aligned with the trigger.
|
|
42
|
+
2. end-end: tooltip is placed next to the trigger, on the right (on left-to-right UI), with the tooltip container and the trigger bottom aligned.
|
|
43
|
+
3. end-start: tooltip is placed next to the trigger, on the right (on left-to-right UI), with the tooltip container and the trigger top aligned.
|
|
44
|
+
|
|
45
|
+
1. start: tooltip is placed next to the trigger, on the left (on left-to-right UI), with the tooltip container center aligned with the trigger.
|
|
46
|
+
2. start-end: tooltip is placed next to the trigger, on the left (on left-to-right UI), with the tooltip container and the trigger bottom aligned.
|
|
47
|
+
3. start-start: tooltip is placed next to the trigger, on the left (on left-to-right UI), with the tooltip container and the trigger top aligned.
|
|
48
|
+
|
|
49
|
+
Tooltips are triggered by user interaction with the trigger element:
|
|
50
|
+
|
|
51
|
+
- **Mouse:**
|
|
52
|
+
- Appears on hover
|
|
53
|
+
- Disappears on mouse leave
|
|
54
|
+
- **Keyboard:**
|
|
55
|
+
- Appears when the trigger receives focus
|
|
56
|
+
- Disappears on blur or when pressing Esc
|
|
57
|
+
- **Touch:**
|
|
58
|
+
- Appears on long press
|
|
59
|
+
- Disappears when tapping outside
|
|
60
|
+
|
|
61
|
+
A short delay is applied before displaying the tooltip to avoid accidental activation.
|
|
62
|
+
|
|
63
|
+
Consideration to have:
|
|
64
|
+
|
|
65
|
+
- On **desktop**, tooltips are triggered by hover and focus.
|
|
66
|
+
- On **touch devices**, tooltips rely on long‑press interactions.
|
|
67
|
+
- Tooltips must never block or interfere with core interactions on small screens.
|
|
68
|
+
|
|
69
|
+
If information becomes important on mobile, prefer **inline help text** instead.
|
|
70
|
+
|
|
71
|
+
Regardless of screen size, the tooltip never exceeds 320px in width. On smaller viewports, content continues to wrap vertically to preserve readability.
|
|
72
|
+
|
|
73
|
+
Tooltip text must be:
|
|
74
|
+
|
|
75
|
+
- Plain text only
|
|
76
|
+
- Short and easy to scan
|
|
77
|
+
- Written in sentence case
|
|
78
|
+
- Focused on explaining what or why, not how
|
|
79
|
+
|
|
80
|
+
- "Refreshes the data"
|
|
81
|
+
- "Only visible to administrators"
|
|
82
|
+
|
|
83
|
+
- "Click here to refresh the data"
|
|
84
|
+
- "This button allows you to refresh the data displayed on the page"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
A **Tooltip** is a small, non‑interactive overlay that displays short, **plain‑text information** when users hover over, focus on, or long‑press an element.
|
|
2
|
+
|
|
3
|
+
Tooltips are used to **clarify the purpose of a control**, explain an icon, or provide brief contextual hints **without interrupting the user's flow**.
|
|
4
|
+
|
|
5
|
+
Tooltip content is **always optional** and must not contain information that is required to understand or use the interface.
|
|
6
|
+
|
|
7
|
+
- Use tooltips to clarify **icon‑only controls** or ambiguous UI elements
|
|
8
|
+
- Keep content **short, concise, and plain text only**
|
|
9
|
+
- Trigger tooltips on **hover and keyboard focus**
|
|
10
|
+
- Use tooltips as **supporting information**, not primary guidance
|
|
11
|
+
|
|
12
|
+
- Don’t include rich text, links, or interactive elements
|
|
13
|
+
- Don’t use tooltips for long explanations or instructions
|
|
14
|
+
- Don’t place critical or mandatory information in a tooltip
|
|
15
|
+
- Don’t rely on tooltips as the only way to understand an interface
|
|
16
|
+
|
|
17
|
+
Tooltips are often confused with other informational components:
|
|
18
|
+
|
|
19
|
+
- **Tooltip**: Use for short, plain‑text hints tied to a specific UI element.
|
|
20
|
+
- **Popover**: Use when richer information, structured content, or interactions are required.
|
|
21
|
+
- **Toast**: Use for system feedback unrelated to a specific control.
|
|
22
|
+
|
|
23
|
+
If information must be visible to all users or is essential to task completion, **do not use a tooltip**, instead write it in plain text.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
TopNav must be fully usable with keyboard-only interaction. Navigation order and behavior should stay consistent across desktop and mobile modes.
|
|
2
|
+
|
|
3
|
+
> **Info:** WCAG guidance for disclosure navigation menus is a good baseline for TopNav behavior: [View WCAG Disclosure Navigation Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/examples/disclosure-navigation/).
|
|
4
|
+
|
|
5
|
+
When users tab into TopNav from content above, focus should land on the first focusable element from left to right.
|
|
6
|
+
|
|
7
|
+
- If **Search** is present and focusable, **Search** receives first focus.
|
|
8
|
+
- If **Search** is not present, focus should land on the first focusable navigation control.
|
|
9
|
+
- If a skip link is available before TopNav, users should still be able to move directly to main content.
|
|
10
|
+
|
|
11
|
+
Screen readers should announce the region as a navigation landmark with the number of available items.
|
|
12
|
+
|
|
13
|
+
`Tab` moves focus to the next focusable control. `Shift+Tab` moves focus to the previous control.
|
|
14
|
+
|
|
15
|
+
Arrow keys are mainly relevant in screen-reader and menubar navigation contexts.
|
|
16
|
+
|
|
17
|
+
- `ArrowRight` reads or moves to the next item.
|
|
18
|
+
- `ArrowLeft` reads or moves to the previous item.
|
|
19
|
+
- If a grouped control is expanded, arrow keys should continue movement within that group before leaving it.
|
|
20
|
+
|
|
21
|
+
Arrow keys should not trigger unexpected page scrolling while the user is navigating TopNav controls.
|
|
22
|
+
|
|
23
|
+
- If the focused item is expandable, `Enter` and `Space` expand it.
|
|
24
|
+
- If the focused item is collapsible, `Enter` and `Space` collapse it.
|
|
25
|
+
- If the focused item is a navigation destination, `Enter` and `Space` activate it.
|
|
26
|
+
|
|
27
|
+
- `Home` moves focus to the first TopNav item in the current row.
|
|
28
|
+
- `End` moves focus to the last TopNav item in the current row.
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
Screen Readers should read:
|
|
33
|
+
|
|
34
|
+
1. read: **Amadeus text icon**
|
|
35
|
+
2. read: **input search**
|
|
36
|
+
3. read: **TopNav button**
|
|
37
|
+
4. read: **"item name", visit the page**
|
|
38
|
+
|
|
39
|
+
TopNav should not introduce heading-level jumps in page content.
|
|
40
|
+
|
|
41
|
+
- Keep page heading structure in the content area.
|
|
42
|
+
- Keep TopNav labels short and descriptive.
|
|
43
|
+
|
|
44
|
+
Expose TopNav as a navigation landmark so assistive technologies can locate it quickly.
|
|
45
|
+
|
|
46
|
+
- Announce it as top navigation with the number of items when possible.
|
|
47
|
+
- Keep landmark naming consistent across pages.
|
|
48
|
+
|
|
49
|
+
For users who zoom up to 300%, apply responsive TopNav behavior and preserve keyboard operability.
|
|
50
|
+
|
|
51
|
+
> **Warning:** Do not rely on horizontal scrolling to keep TopNav usable at high zoom. Move lower-priority actions into overflow behavior before reducing hit targets.
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# TopNav — API
|
|
2
|
+
|
|
3
|
+
## `df-topnav` — Component
|
|
4
|
+
|
|
5
|
+
_Since 21.1_
|
|
6
|
+
|
|
7
|
+
TopNav (Top Navigation Bar) provides consistent access to product-level navigation and global actions across Amadeus applications. It is recommended to be used with a DfAppContainer to ensure the correct layout and responsiveness, but it can also be used without it if needed. See Design Factory documentation for details and examples.
|
|
8
|
+
|
|
9
|
+
### Inputs
|
|
10
|
+
|
|
11
|
+
| Name | Type | Default | Description |
|
|
12
|
+
|------|------|---------|-------------|
|
|
13
|
+
| mainNavStyle | `'basic' \| 'mirror'` | | The style of the TopNav main nav, which determines the applied styles. Can be either "basic" or "mirror". 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. |
|
|
14
|
+
| mode | `'sidenav' \| 'dropdown'` | `'sidenav'` | The mode of the TopNav, which determines the behavior of the navigation. Can be either "sidenav" or "dropdown". |
|
|
15
|
+
| showToggle | `boolean` | `false` | 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. When not provided, the toggle button will be shown automatically when there are navigation links and the screen size is smaller than large. |
|
|
16
|
+
| superheader | `boolean` | | 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. |
|
|
17
|
+
|
|
18
|
+
## `df-env-banner` — Component
|
|
19
|
+
|
|
20
|
+
_Since 21.1_
|
|
21
|
+
|
|
22
|
+
The environment banner component, used to display a banner at the top of the page indicating the current environment (e.g., development, staging, production). See Design Factory example
|
|
23
|
+
|
|
24
|
+
## `df-app-container` — Component
|
|
25
|
+
|
|
26
|
+
_Since 21.1_
|
|
27
|
+
|
|
28
|
+
AppContainer is a simple wrapper component that provides a consistent layout for applications using the DfTopNav component. It ensures that the content of the application is displayed correctly below the DfTopNav and can be used to apply common styles or layout properties to the entire application. See Design Factory documentation for details and examples.
|
|
29
|
+
|
|
30
|
+
## `df-topnav-quick-actions` — Component
|
|
31
|
+
|
|
32
|
+
_Since 21.1_
|
|
33
|
+
|
|
34
|
+
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. See Design Factory example
|
|
35
|
+
|
|
36
|
+
### Inputs
|
|
37
|
+
|
|
38
|
+
| Name | Type | Default | Description |
|
|
39
|
+
|------|------|---------|-------------|
|
|
40
|
+
| reversedVertical | `boolean` | `true` | 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. |
|
|
41
|
+
| tabletDrawerContainer | `HTMLElement` | | 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. |
|
|
42
|
+
|
|
43
|
+
## `ng-template[dfTopNavQuickActionInTopNav]` — Directive
|
|
44
|
+
|
|
45
|
+
_Since 21.1_
|
|
46
|
+
|
|
47
|
+
The TopNav action "in topnav" content directive. It drives the display of the DfTopNavQuickAction on larger screens, where the quick action is displayed in a topnav.
|
|
48
|
+
|
|
49
|
+
## `ng-template[dfTopNavQuickActionInDrawer]` — Directive
|
|
50
|
+
|
|
51
|
+
_Since 21.1_
|
|
52
|
+
|
|
53
|
+
The TopNav action "in drawer" content directive. It drives the display of the DfTopNavQuickAction on smaller screens, where the quick action is displayed in a drawer.
|
|
54
|
+
|
|
55
|
+
## `df-topnav-quick-action` — Component
|
|
56
|
+
|
|
57
|
+
_Since 21.1_
|
|
58
|
+
|
|
59
|
+
The TopNav quick action component, used to display a quick action in the TopNav. Consider using the DfTopNavQuickActionButton component instead, which provides a button with the appropriate styling and behavior for quick actions in the TopNav. It should be used inside a DfTopNavQuickActions component. It requires a DfTopNavQuickActionInTopNav template to be provided as content, which will be displayed in desktop. An optional DfTopNavQuickActionInDrawer template can also be provided, which will be displayed in mobile and tablet instead of the topnav template. See Design Factory example
|
|
60
|
+
|
|
61
|
+
## `df-topnav-quick-action-theme-picker` — Component
|
|
62
|
+
|
|
63
|
+
_Since 21.1_
|
|
64
|
+
|
|
65
|
+
DfTopNavQuickActionThemePicker is a topnav quick action dropdown component that allows users to select a theme mode for the application. It uses the DfThemeService to manage theme state and apply the selected theme. The component displays an icon and label corresponding to the current theme selection and provides options for users to change the theme.
|
|
66
|
+
|
|
67
|
+
### Inputs
|
|
68
|
+
|
|
69
|
+
| Name | Type | Default | Description |
|
|
70
|
+
|------|------|---------|-------------|
|
|
71
|
+
| appearance | `'primary' \| 'neutral'` | `'neutral'` | The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'. |
|
|
72
|
+
| themeOptions | `{ themeMode: string; icon: string }[]` | | An array of theme options to display in the dropdown 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. |
|
|
73
|
+
|
|
74
|
+
## `input[dfTopNavQuickActionSearchInput]` — Component
|
|
75
|
+
|
|
76
|
+
_Since 21.1_
|
|
77
|
+
|
|
78
|
+
The TopNav quick action search input directive. It should be used inside a DfTopNavQuickActionSearch component.
|
|
79
|
+
|
|
80
|
+
## `df-topnav-quick-action-search` — Component
|
|
81
|
+
|
|
82
|
+
_Since 21.1_
|
|
83
|
+
|
|
84
|
+
The TopNav quick action search component, used to display a search input in the TopNav quick actions. It should be used inside a DfTopNavQuickActions component and contain a ng-template with an input DfTopNavQuickActionSearchInput. See Design Factory example
|
|
85
|
+
|
|
86
|
+
### Inputs
|
|
87
|
+
|
|
88
|
+
| Name | Type | Default | Description |
|
|
89
|
+
|------|------|---------|-------------|
|
|
90
|
+
| ariaLabel | `string` | | The aria-label of the search. 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. See ARIA guidelines for more information. |
|
|
91
|
+
|
|
92
|
+
## `ng-template[dfTopNavQuickActionButtonContent]` — Directive
|
|
93
|
+
|
|
94
|
+
_Since 21.1_
|
|
95
|
+
|
|
96
|
+
The TopNav action content directive, used to provide the content of the popover or drawer associated to a DfTopNavQuickActionButton. It is showed in a popover in desktop and in a drawer on tablet and mobile when the associated quick action button is clicked.
|
|
97
|
+
|
|
98
|
+
## `ng-template[dfTopNavQuickActionButtonIcon]` — Directive
|
|
99
|
+
|
|
100
|
+
_Since 21.1_
|
|
101
|
+
|
|
102
|
+
The TopNav action icon directive, used to provide a custom icon for the DfTopNavQuickActionButton. If not provided, the quick action button will use the default icon specified by the DfTopNavQuickActionButton.icon input.
|
|
103
|
+
|
|
104
|
+
## `df-topnav-quick-action-button` — Component
|
|
105
|
+
|
|
106
|
+
_Since 21.1_
|
|
107
|
+
|
|
108
|
+
The TopNav quick action button component, used to display a quick action button in the TopNav. It should be used inside a DfTopNavQuickActions component. It can be associated with a popover content using the DfTopNavQuickActionButtonContent directive or be used alone with the DfTopNavQuickActionButton.act output. The icon can be set through the DfTopNavQuickActionButton.icon input or by using the DfTopNavQuickActionButtonIcon directive. See Design Factory example
|
|
109
|
+
|
|
110
|
+
### Inputs
|
|
111
|
+
|
|
112
|
+
| Name | Type | Default | Description |
|
|
113
|
+
|------|------|---------|-------------|
|
|
114
|
+
| appearance | `'primary' \| 'neutral'` | `'neutral'` | The appearance of the quick action button, which will determine its color. It can be either 'primary' or 'neutral'. |
|
|
115
|
+
| disabled | `boolean` | `false` | Whether the quick action button is disabled or not. |
|
|
116
|
+
| icon | `string` | | The icon of the quick action button. |
|
|
117
|
+
| label | `string` | | 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. |
|
|
118
|
+
|
|
119
|
+
### Outputs
|
|
120
|
+
|
|
121
|
+
| Name | Type | Description |
|
|
122
|
+
|------|------|-------------|
|
|
123
|
+
| act | `void` | 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. |
|
|
124
|
+
|
|
125
|
+
## `df-topnav-navigation` — Component
|
|
126
|
+
|
|
127
|
+
_Since 21.1_
|
|
128
|
+
|
|
129
|
+
The TopNav navigation component, used to display a list of navigation items in the TopNav.
|
|
130
|
+
|
|
131
|
+
## `df-topnav-navigation-link` — Component
|
|
132
|
+
|
|
133
|
+
_Since 21.1_
|
|
134
|
+
|
|
135
|
+
The TopNav navigation item component, used to display a navigation link in the TopNav. It should be used inside a DfTopNavNavigation component.
|
|
136
|
+
|
|
137
|
+
### Inputs
|
|
138
|
+
|
|
139
|
+
| Name | Type | Default | Description |
|
|
140
|
+
|------|------|---------|-------------|
|
|
141
|
+
| href | `string` | | The external href of the navigation link, which will be used as the link target. Use routerLink for internal links. |
|
|
142
|
+
| label | `string` | | The label of the navigation link, which will be displayed as the link text. |
|
|
143
|
+
| routerLink | `string` | | The internal router link of the navigation link, which will be used as the link target. Use href for external links. |
|
|
144
|
+
| routerLinkActiveOptions | `IsActiveMatchOptions \| { exact: boolean }` | `{ exact: false }` | 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 }. |
|
|
145
|
+
|
|
146
|
+
### Properties
|
|
147
|
+
|
|
148
|
+
| Name | Type | Description |
|
|
149
|
+
|------|------|-------------|
|
|
150
|
+
| active | `Signal<boolean>` | Indicates if the link is currently active based on the Router state. |
|
|
151
|
+
|
|
152
|
+
## `df-topnav-navigation-item` — Component
|
|
153
|
+
|
|
154
|
+
_Since 21.1_
|
|
155
|
+
|
|
156
|
+
The TopNav navigation item component, used to display a navigation link in the TopNav which can have child navigation links. It should be used inside a DfTopNavNavigation component.
|
|
157
|
+
|
|
158
|
+
### Inputs
|
|
159
|
+
|
|
160
|
+
| Name | Type | Default | Description |
|
|
161
|
+
|------|------|---------|-------------|
|
|
162
|
+
| label | `string` | | The label of the navigation item, which will be displayed as the link text. |
|
|
163
|
+
| routerLink | `string` | | The routerLink of the navigation item, which will be used as the link target. It should be an internal route. |
|
|
164
|
+
|
|
165
|
+
### Properties
|
|
166
|
+
|
|
167
|
+
| Name | Type | Description |
|
|
168
|
+
|------|------|-------------|
|
|
169
|
+
| active | `Signal<boolean>` | Indicates if the navigation item is currently active based on the Router state of its child links. |
|
|
170
|
+
|
|
171
|
+
## `ng-template[dfTopNavBrandLinkContent]` — Directive
|
|
172
|
+
|
|
173
|
+
_Since 21.1_
|
|
174
|
+
|
|
175
|
+
A directive to mark the company template in the DfTopNavBrand brand component. This is used to customize the display of the company logo and name in the DfTopNavBrand brand component.
|
|
176
|
+
|
|
177
|
+
## `df-topnav-brand` — Component
|
|
178
|
+
|
|
179
|
+
_Since 21.1_
|
|
180
|
+
|
|
181
|
+
The TopNav brand component, used to display the company and product information. See Design Factory example
|
|
182
|
+
|
|
183
|
+
### Inputs
|
|
184
|
+
|
|
185
|
+
| Name | Type | Default | Description |
|
|
186
|
+
|------|------|---------|-------------|
|
|
187
|
+
| amaudeusLogoVector | `boolean` | `false` | Whether to display the Amadeus logo as a vector graphic instead of text. |
|
|
188
|
+
| href | `string` | `'/'` | The URL to navigate to when the brand is clicked. Defaults to "/". |
|
|
189
|
+
| module | `string` | | The module. |
|
|
190
|
+
| product | `string` | | The product. |
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
> **Tip:** Open them in a new tab with the button **Open in new tab** to observe the layout on different screen breakpoints.
|
|
2
|
+
|
|
3
|
+
The first part of a TopNav is the brand, which is used to display the product logo and name. It is a link re-directing to the homepage of the product.
|
|
4
|
+
|
|
5
|
+
The default behavior is showing Amadeus as the brand company, but it can be customized by providing a custom template with the `dfTopNavBrandLinkContent` directive.
|
|
6
|
+
|
|
7
|
+
> Demo source: [docs/demos/topnav/brand/](../../demos/topnav/brand/)
|
|
8
|
+
|
|
9
|
+
The second part of a TopNav is the navigation. It is used to configure the links of the app.
|
|
10
|
+
|
|
11
|
+
The default behavior creates one nav when the number of root nodes is **five or less** and two navs when the number of root nodes is **more than five**.
|
|
12
|
+
This behavior can be overriden by setting the `superheader` input of the topnav.
|
|
13
|
+
|
|
14
|
+
This first example showcases a flat navigation i.e. only root links.
|
|
15
|
+
|
|
16
|
+
> Demo source: [docs/demos/topnav/navigation/](../../demos/topnav/navigation/)
|
|
17
|
+
|
|
18
|
+
This second example showcases a tree navigation i.e. links with sub-links.
|
|
19
|
+
|
|
20
|
+
You can set the input `mode` to `dropdown` in order to show dropdowns instead of a sidenav on desktop. Note that this is only supported for a navigation nesting level of two or less.
|
|
21
|
+
|
|
22
|
+
> Demo source: [docs/demos/topnav/navigation/](../../demos/topnav/navigation/)
|
|
23
|
+
|
|
24
|
+
The third part of the TopNav contains the quick actions.
|
|
25
|
+
Quick actions can be user login, settings, notiications and more.
|
|
26
|
+
|
|
27
|
+
The component `DfTopNavQuickActionButton` allows to configure the look and the content of a quick action.
|
|
28
|
+
|
|
29
|
+
- For things like settings and notifications, you may set a template using the `dfTopNavQuickActionContent` directive that will be shown in a popover in desktop and in the drawer in mobile.
|
|
30
|
+
- For other actions, you can listen to the `act` output and perform the desired action.
|
|
31
|
+
|
|
32
|
+
You can also use:
|
|
33
|
+
|
|
34
|
+
- `DfTopNavQuickActionSearch` to setup a global search.
|
|
35
|
+
- `DfTopNavQuickActionThemePicker` to allow users to select a theme mode for the application.
|
|
36
|
+
- `DfTopNavQuickAction` for full control over the quick action content.
|
|
37
|
+
- `DfTopNavQuickActionThemePicker` to setup a light / dark mode picker
|
|
38
|
+
|
|
39
|
+
> Demo source: [docs/demos/topnav/quick-actions/](../../demos/topnav/quick-actions/)
|
|
40
|
+
|
|
41
|
+
The environment banner is used to display the current environment of the application, such as "Test Environment" or "Production Environment".
|
|
42
|
+
|
|
43
|
+
> Demo source: [docs/demos/topnav/environment-banner/](../../demos/topnav/environment-banner/)
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
The TopNav is structured around four areas.
|
|
2
|
+
|
|
3
|
+
- **Branding (1):** contains logo and product name. It should link to the product default page.
|
|
4
|
+
- **Search (2):** optional search entry point. It can be input based or icon only based on available width.
|
|
5
|
+
- **Quick actions (3):** optional global actions such as tenant, app switcher, AI, help, notifications, and profile.
|
|
6
|
+
- **Menu (4):** first level navigation with items and optional dropdowns for grouped destinations.
|
|
7
|
+
|
|
8
|
+
Practical guidance:
|
|
9
|
+
|
|
10
|
+
- Keep product and module names concise so they remain readable on tablet widths.
|
|
11
|
+
- Keep first level menu labels to one or two words when possible.
|
|
12
|
+
- Use the quick action area only for actions that remain useful regardless of the page the user is on.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
> **Warning:** In general, please use **"Amadeus (in Amadeus font) + Product name"**. The combination of **"Amadeus (woodmark) + website name"** is **reserved for corporate website** such as [Amadeus.com](https://amadeus.com), Amadeus Careers... For a full detail on when to use which, please refer to the following brand guidelines: [https://www.figma.com/design/MRzMbwwtkOz1Ct9MBHYXPY/Product-naming-in-UI-guide?node-id=3-56&t=IHx83kSSIV5I38im-1](https://www.figma.com/design/MRzMbwwtkOz1Ct9MBHYXPY/Product-naming-in-UI-guide?node-id=3-56&t=IHx83kSSIV5I38im-1)
|
|
17
|
+
|
|
18
|
+
- Do keep the order of branding, navigation, and actions stable across pages.
|
|
19
|
+
- Do provide accessible names for icon only actions and show tooltips on hover and focus.
|
|
20
|
+
- Do ensure the active first level destination remains clearly visible.
|
|
21
|
+
|
|
22
|
+
- Don't place page local actions in the quick actions area.
|
|
23
|
+
- Don't use the branding area for temporary campaign content.
|
|
24
|
+
- Don't mix first level and deep hierarchy items in the same row.
|
|
25
|
+
|
|
26
|
+
TopNav has three main variants based on first level navigation density.
|
|
27
|
+
|
|
28
|
+
Use this variant when navigation happens through landing flows or when global actions are the primary goal.
|
|
29
|
+
|
|
30
|
+
Use this as the default variant. It balances strong navigation visibility with enough room for global actions.
|
|
31
|
+
|
|
32
|
+
Use the two row superheader when first level navigation has more than five critical destinations that must remain visible.
|
|
33
|
+
|
|
34
|
+
- Do choose the smallest variant that keeps essential destinations visible.
|
|
35
|
+
- Do move low frequency destinations to secondary menus before moving to a superheader.
|
|
36
|
+
- Do validate localized labels because translated terms often require more horizontal space.
|
|
37
|
+
|
|
38
|
+
- Don't reserve empty slots for future items.
|
|
39
|
+
- Don't switch variants across pages without a clear information architecture reason.
|
|
40
|
+
- Don't keep crowded one row navigation when users struggle to scan labels quickly.
|
|
41
|
+
|
|
42
|
+
Other variants combine environment banners and dropdown capabilities to support ecosystem and navigation complexity.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
Use an environment banner when users must stay aware of environment or context, for example production versus test, or when they switch between tenant contexts.
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
Use dropdowns only when grouped destinations are genuinely related and users can predict the group content from the trigger label. If a SideNav is already present, keep the hierarchy there to avoid two competing navigation models.
|
|
51
|
+
|
|
52
|
+
- Do use environment banners only when users can take actions with high impact in the wrong context.
|
|
53
|
+
- Do keep dropdown groups short and semantically consistent.
|
|
54
|
+
- Do expose the current context clearly when a tenant or environment is active.
|
|
55
|
+
|
|
56
|
+
- Don't use environment banners for purely decorative messaging.
|
|
57
|
+
- Don't hide first level destinations in deep dropdown structures.
|
|
58
|
+
- Don't create overlapping groups where the same destination appears in multiple dropdowns.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
> **Info:** TopNav is the primary component of the Amadeus navigation pattern. Keep first level destinations in TopNav, use SideNav for deeper levels, and use Scrollspy for long in page sections.
|
|
63
|
+
|
|
64
|
+
Global actions support high frequency cross product tasks:
|
|
65
|
+
|
|
66
|
+
1. **User profile**: opens account actions, profile settings, and sign out.
|
|
67
|
+
2. **Notifications**: surfaces system updates and user specific events.
|
|
68
|
+
3. **Help center**: links to support and contextual assistance.
|
|
69
|
+
4. **AI**: gives access to assistant capabilities.
|
|
70
|
+
5. **App switcher**: lets users move between applications in the same ecosystem.
|
|
71
|
+
6. **Tenant**: shows and changes active tenant or context.
|
|
72
|
+
|
|
73
|
+
Guidance:
|
|
74
|
+
|
|
75
|
+
- Keep visual order stable because users develop muscle memory for these actions.
|
|
76
|
+
- Show unread counts only for truly actionable events.
|
|
77
|
+
- Ensure tenant switches are explicit and reversible.
|
|
78
|
+
- Keep icon semantics consistent with other navigation surfaces in the product.
|
|
79
|
+
|
|
80
|
+
On mobile, selecting the hamburger control morphs the icon into a close icon while the navigation panel slides from left to right. This panel should open with synchronized timing between icon and panel transitions.
|
|
81
|
+
|
|
82
|
+
Interaction guidance:
|
|
83
|
+
|
|
84
|
+
- Keep animation short and smooth so state change is clear without delaying navigation.
|
|
85
|
+
- Preserve current page highlight in the opened panel so users keep orientation.
|
|
86
|
+
- Block background content interaction while the mobile panel is open.
|
|
87
|
+
|
|
88
|
+
Keyboard and focus guidance:
|
|
89
|
+
|
|
90
|
+
- Enter and Space open and close the mobile panel trigger.
|
|
91
|
+
- Escape closes the panel and returns focus to the trigger.
|
|
92
|
+
- Tab cycles through interactive items in visual order.
|
|
93
|
+
- When dropdowns are present in desktop navigation, arrow navigation should move between sibling items and Escape should close the open dropdown.
|
|
94
|
+
|
|
95
|
+
Edge cases:
|
|
96
|
+
|
|
97
|
+
- If labels overflow, keep labels readable through truncation plus tooltip rather than shrinking text.
|
|
98
|
+
- If action count increases, move low priority actions into an overflow menu before reducing hit target size.
|
|
99
|
+
|
|
100
|
+
TopNav is available in desktop and mobile configurations. Below 1200px first level navigation items are moved to SideNav and are accessed through the hamburger pattern.
|
|
101
|
+
|
|
102
|
+
| Screen size | Configuration | Behaviour |
|
|
103
|
+
| --------------- | ----------------------- | ---------------------------------------------------------------------------- |
|
|
104
|
+
| >= 1200px | Desktop TopNav | First level navigation stays visible in TopNav. |
|
|
105
|
+
| 992px to 1199px | Transitional desktop | Keep essential actions visible. Prioritize core destinations. |
|
|
106
|
+
| < 992px | TopNav mobile + SideNav | Use full width top bar with hamburger trigger and slide in navigation panel. |
|
|
107
|
+
|
|
108
|
+
For narrow mobile displays, the opened navigation panel should take the full device width so labels remain readable and touch targets remain comfortable.
|
|
109
|
+
|
|
110
|
+
> **Tip:** Validate responsive behaviour with browser device emulation plus touch interaction testing. Window resizing alone does not reproduce full mobile interaction states.
|
|
111
|
+
|
|
112
|
+
Use clear and predictable language in TopNav labels so users can decide quickly where each destination leads.
|
|
113
|
+
|
|
114
|
+
Writing guidance:
|
|
115
|
+
|
|
116
|
+
- Prefer short nouns or noun phrases with one or two words.
|
|
117
|
+
- Keep naming style consistent across all first level items.
|
|
118
|
+
- Use user facing vocabulary instead of internal team terminology.
|
|
119
|
+
- Prioritize labels that reflect user goals rather than internal system structure.
|
|
120
|
+
|
|
121
|
+
> **Tip:** For a full view on UX Writing guidelines, check the following document: [Amadeus UX Writing Style Guide](<https://amadeusworkplace.sharepoint.com/:w:/r/sites/UXCommunity_official/_layouts/15/Doc.aspx?sourcedoc=%7BB0C79089-403F-41AE-AFA3-C5BEDFCB8254%7D&file=Amadeus%20UX%20Writing%20Style%20Guide%20(Brecht%20ALGOET_Marcos%20LLORENS).docx&action=default&mobileredirect=true>)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
TopNav provides persistent access to **product identity**, **first level navigation**, and **global actions** such as **search**, **profile**, **notifications**, and **tenant selection**.
|
|
2
|
+
|
|
3
|
+
Use **TopNav** when users move frequently between major product areas and need this structure to stay visible across pages. Keep the structure stable so users can build navigation memory and switch contexts faster.
|
|
4
|
+
|
|
5
|
+
- Use TopNav as the primary first level navigation surface for medium and large information architectures.
|
|
6
|
+
- Keep item labels short and concrete so users can scan the menu quickly.
|
|
7
|
+
- Reserve the right action area for global actions that remain relevant regardless of the page the user is on.
|
|
8
|
+
|
|
9
|
+
- Don't use TopNav as a full command toolbar. Place page specific actions in local page headers.
|
|
10
|
+
- Don't duplicate the same navigation level in TopNav and page body navigation.
|
|
11
|
+
- Don't overload the bar with decorative icons that do not trigger clear actions.
|
|
12
|
+
|
|
13
|
+
**TopNav** can work on its own for shallow navigation. For richer information architectures, pair **TopNav** with **SideNav** so the first level stays in **TopNav** while deeper levels move into **SideNav**. If a section still needs deep in page navigation, add **Scrollspy** in the content area.
|
|
14
|
+
|
|
15
|
+
> **Info:** Not sure how to split navigation levels across components? Check the [Navigation pattern](/patterns/navigation-pattern).
|
|
16
|
+
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<df-accordion itemHeadingLevel="3" [subtitleType]="subtitleType()" [addon]="addon()" [arrowPosition]="arrowPosition()">
|
|
2
|
+
<df-accordion-item
|
|
3
|
+
[visible]="true"
|
|
4
|
+
subtitle="Additional info about first item"
|
|
5
|
+
number="01"
|
|
6
|
+
iconClass="fa-light fa-home"
|
|
7
|
+
>
|
|
8
|
+
<ng-template dfAccordionItemTitle>First item</ng-template>
|
|
9
|
+
<ng-template dfAccordionItemBody>Content of the first accordion item.</ng-template>
|
|
10
|
+
</df-accordion-item>
|
|
11
|
+
|
|
12
|
+
<df-accordion-item subtitle="Additional info about second item" number="02" iconClass="fa-light fa-user">
|
|
13
|
+
<ng-template dfAccordionItemTitle>Second item</ng-template>
|
|
14
|
+
<ng-template dfAccordionItemBody>Content of the second accordion item.</ng-template>
|
|
15
|
+
</df-accordion-item>
|
|
16
|
+
|
|
17
|
+
<df-accordion-item subtitle="Additional info about third item" number="03" iconClass="fa-light fa-cog">
|
|
18
|
+
<ng-template dfAccordionItemTitle>Third item</ng-template>
|
|
19
|
+
<ng-template dfAccordionItemBody>Content of the third accordion item.</ng-template>
|
|
20
|
+
</df-accordion-item>
|
|
21
|
+
</df-accordion>
|
|
22
|
+
|
|
23
|
+
<hr class="my-6" />
|
|
24
|
+
|
|
25
|
+
<div class="d-inline-grid gap-4" style="grid-template-columns: auto auto">
|
|
26
|
+
<label class="form-label fw-semibold mb-0 align-self-center" for="subtitle-none">Subtitle</label>
|
|
27
|
+
<div class="btn-group btn-group-sm" ngDefaultControl role="radiogroup">
|
|
28
|
+
<input [(ngModel)]="subtitleType" class="btn-check" id="subtitle-none" name="subtitle" type="radio" value="none" />
|
|
29
|
+
<label class="btn btn-outline-primary" for="subtitle-none">None</label>
|
|
30
|
+
<input
|
|
31
|
+
[(ngModel)]="subtitleType"
|
|
32
|
+
class="btn-check"
|
|
33
|
+
id="subtitle-inline"
|
|
34
|
+
name="subtitle"
|
|
35
|
+
type="radio"
|
|
36
|
+
value="inline"
|
|
37
|
+
/>
|
|
38
|
+
<label class="btn btn-outline-primary" for="subtitle-inline">Inline</label>
|
|
39
|
+
<input
|
|
40
|
+
[(ngModel)]="subtitleType"
|
|
41
|
+
class="btn-check"
|
|
42
|
+
id="subtitle-block"
|
|
43
|
+
name="subtitle"
|
|
44
|
+
type="radio"
|
|
45
|
+
value="block"
|
|
46
|
+
/>
|
|
47
|
+
<label class="btn btn-outline-primary" for="subtitle-block">Block</label>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<label class="form-label fw-semibold mb-0 align-self-center" for="addon-none">Addon</label>
|
|
51
|
+
<div class="btn-group btn-group-sm" ngDefaultControl role="radiogroup">
|
|
52
|
+
<input [(ngModel)]="addon" class="btn-check" id="addon-none" name="addon" type="radio" value="none" />
|
|
53
|
+
<label class="btn btn-outline-primary" for="addon-none">None</label>
|
|
54
|
+
<input [(ngModel)]="addon" class="btn-check" id="addon-number" name="addon" type="radio" value="number" />
|
|
55
|
+
<label class="btn btn-outline-primary" for="addon-number">Numbers</label>
|
|
56
|
+
<input [(ngModel)]="addon" class="btn-check" id="addon-icon" name="addon" type="radio" value="icon" />
|
|
57
|
+
<label class="btn btn-outline-primary" for="addon-icon">Icon</label>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<label class="form-label fw-semibold mb-0 align-self-center" for="arrow-start">Arrow</label>
|
|
61
|
+
<div class="btn-group btn-group-sm" ngDefaultControl role="radiogroup">
|
|
62
|
+
<input
|
|
63
|
+
[(ngModel)]="arrowPosition"
|
|
64
|
+
[disabled]="addon() !== 'none'"
|
|
65
|
+
class="btn-check"
|
|
66
|
+
id="arrow-start"
|
|
67
|
+
name="arrow"
|
|
68
|
+
type="radio"
|
|
69
|
+
value="start"
|
|
70
|
+
/>
|
|
71
|
+
<label class="btn btn-outline-primary" for="arrow-start">Left</label>
|
|
72
|
+
<input [(ngModel)]="arrowPosition" class="btn-check" id="arrow-end" name="arrow" type="radio" value="end" />
|
|
73
|
+
<label class="btn btn-outline-primary" for="arrow-end">Right</label>
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Component, effect, signal } from '@angular/core';
|
|
2
|
+
import { FormsModule } from '@angular/forms';
|
|
3
|
+
import {
|
|
4
|
+
DfAccordion,
|
|
5
|
+
DfAccordionItem,
|
|
6
|
+
DfAccordionItemBody,
|
|
7
|
+
DfAccordionItemTitle
|
|
8
|
+
} from '@design-factory/angular/accordion';
|
|
9
|
+
|
|
10
|
+
@Component({
|
|
11
|
+
selector: 'df-demo-accordion-addons-subtitle',
|
|
12
|
+
templateUrl: './accordion-addons-subtitle.html',
|
|
13
|
+
imports: [DfAccordion, DfAccordionItem, DfAccordionItemBody, DfAccordionItemTitle, FormsModule]
|
|
14
|
+
})
|
|
15
|
+
export class DfDemoAccordionAddonsSubtitle {
|
|
16
|
+
protected readonly subtitleType = signal<'block' | 'inline' | 'none'>('none');
|
|
17
|
+
protected readonly addon = signal<'none' | 'icon' | 'number'>('none');
|
|
18
|
+
protected readonly arrowPosition = signal<'start' | 'end'>('end');
|
|
19
|
+
|
|
20
|
+
constructor() {
|
|
21
|
+
effect(() => {
|
|
22
|
+
if (this.addon() !== 'none' && this.arrowPosition() === 'start') {
|
|
23
|
+
this.arrowPosition.set('end');
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|