@design-factory/angular 21.1.0-next.1 → 22.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/docs/components/accordion/accessibility.md +45 -0
- package/.ai/docs/components/accordion/api.md +279 -0
- package/.ai/docs/components/accordion/developer.md +43 -0
- package/.ai/docs/components/accordion/guidelines.md +99 -0
- package/.ai/docs/components/accordion/overview.md +17 -0
- package/.ai/docs/components/alert/accessibility.md +24 -0
- package/.ai/docs/components/alert/api.md +65 -0
- package/.ai/docs/components/alert/developer.md +63 -0
- package/.ai/docs/components/alert/guidelines.md +62 -0
- package/.ai/docs/components/alert/overview.md +12 -0
- package/.ai/docs/components/button/accessibility.md +25 -0
- package/.ai/docs/components/button/api.md +71 -0
- package/.ai/docs/components/button/developer.md +52 -0
- package/.ai/docs/components/button/guidelines.md +75 -0
- package/.ai/docs/components/button/overview.md +15 -0
- package/.ai/docs/components/buttongroup/api.md +16 -0
- package/.ai/docs/components/buttongroup/developer.md +32 -0
- package/.ai/docs/components/drawer/accessibility.md +15 -0
- package/.ai/docs/components/drawer/api.md +56 -0
- package/.ai/docs/components/drawer/developer.md +36 -0
- package/.ai/docs/components/drawer/examples.md +9 -0
- package/.ai/docs/components/drawer/guidelines.md +58 -0
- package/.ai/docs/components/drawer/overview.md +19 -0
- package/.ai/docs/components/dropdown/accessibility.md +27 -0
- package/.ai/docs/components/dropdown/api.md +85 -0
- package/.ai/docs/components/dropdown/developer.md +59 -0
- package/.ai/docs/components/dropdown/guidelines.md +80 -0
- package/.ai/docs/components/dropdown/overview.md +16 -0
- package/.ai/docs/components/sidenav/accessibility.md +48 -0
- package/.ai/docs/components/sidenav/api.md +110 -0
- package/.ai/docs/components/sidenav/developer.md +14 -0
- package/.ai/docs/components/sidenav/guidelines.md +83 -0
- package/.ai/docs/components/sidenav/overview.md +16 -0
- package/.ai/docs/components/tooltip/accessibility.md +11 -0
- package/.ai/docs/components/tooltip/api.md +39 -0
- package/.ai/docs/components/tooltip/developer.md +16 -0
- package/.ai/docs/components/tooltip/guidelines.md +84 -0
- package/.ai/docs/components/tooltip/overview.md +23 -0
- package/.ai/docs/components/topnav/accessibility.md +51 -0
- package/.ai/docs/components/topnav/api.md +190 -0
- package/.ai/docs/components/topnav/developer.md +43 -0
- package/.ai/docs/components/topnav/guidelines.md +121 -0
- package/.ai/docs/components/topnav/overview.md +17 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
- package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
- package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
- package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
- package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
- package/.ai/docs/demos/alert/card/alert-card.html +15 -0
- package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
- package/.ai/docs/demos/button/basic/button-basic.html +4 -0
- package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
- package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
- package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
- package/.ai/docs/demos/button/icons/button-icons.html +17 -0
- package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
- package/.ai/docs/demos/button/variants/button-variants.html +49 -0
- package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
- package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
- package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
- package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
- package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
- package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
- package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
- package/.ai/index.md +26 -0
- package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
- package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
- package/fesm2022/design-factory-angular-alert.mjs +312 -0
- package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
- package/fesm2022/design-factory-angular-button.mjs +240 -0
- package/fesm2022/design-factory-angular-button.mjs.map +1 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
- package/fesm2022/design-factory-angular-drawer.mjs +76 -81
- package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
- package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
- package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
- package/fesm2022/design-factory-angular-form-field.mjs +287 -0
- package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
- package/fesm2022/design-factory-angular-icon.mjs +24 -0
- package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
- package/fesm2022/design-factory-angular-input.mjs +34 -0
- package/fesm2022/design-factory-angular-input.mjs.map +1 -0
- package/fesm2022/design-factory-angular-internals.mjs +119 -39
- package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
- package/fesm2022/design-factory-angular-separator.mjs +43 -0
- package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
- package/fesm2022/design-factory-angular-sidenav.mjs +766 -438
- package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
- package/fesm2022/design-factory-angular-slider.mjs +451 -0
- package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
- package/fesm2022/design-factory-angular-theme.mjs +30 -20
- package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
- package/fesm2022/design-factory-angular-toggle.mjs +172 -0
- package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
- package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
- package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
- package/fesm2022/design-factory-angular-topnav.mjs +635 -558
- package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
- package/package.json +61 -8
- package/schematics/collection.json +35 -0
- package/schematics/component-migration/accordion/constants.d.ts +10 -0
- package/schematics/component-migration/accordion/constants.js +46 -0
- package/schematics/component-migration/accordion/guide.md +257 -0
- package/schematics/component-migration/accordion/index.d.ts +2 -0
- package/schematics/component-migration/accordion/index.js +5 -0
- package/schematics/component-migration/accordion/migration.d.ts +2 -0
- package/schematics/component-migration/accordion/migration.js +13 -0
- package/schematics/component-migration/accordion/schema.json +25 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
- package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
- package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
- package/schematics/component-migration/accordion/steps/title-content.js +75 -0
- package/schematics/component-migration/ai/prompt.md +83 -0
- package/schematics/component-migration/alert/guide.md +246 -0
- package/schematics/component-migration/alert/index.d.ts +2 -0
- package/schematics/component-migration/alert/index.js +5 -0
- package/schematics/component-migration/alert/migration.d.ts +2 -0
- package/schematics/component-migration/alert/migration.js +50 -0
- package/schematics/component-migration/alert/schema.json +25 -0
- package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
- package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
- package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
- package/schematics/component-migration/alert/steps/animation-input.js +17 -0
- package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
- package/schematics/component-migration/alert/steps/close-output.js +17 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
- package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
- package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
- package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
- package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
- package/schematics/component-migration/alert/steps/selector.js +18 -0
- package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-classes.js +97 -0
- package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-type.js +28 -0
- package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-reference.js +15 -0
- package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-todos.js +78 -0
- package/schematics/component-migration/button/guide.md +278 -0
- package/schematics/component-migration/button/index.d.ts +2 -0
- package/schematics/component-migration/button/index.js +5 -0
- package/schematics/component-migration/button/migration.d.ts +2 -0
- package/schematics/component-migration/button/migration.js +180 -0
- package/schematics/component-migration/button/schema.json +25 -0
- package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
- package/schematics/component-migration/button/steps/static-classes.js +128 -0
- package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/button/steps/template-todos.js +120 -0
- package/schematics/component-migration/button/types.d.ts +7 -0
- package/schematics/component-migration/button/types.js +2 -0
- package/schematics/component-migration/dropdown/guide.md +252 -0
- package/schematics/component-migration/dropdown/index.d.ts +2 -0
- package/schematics/component-migration/dropdown/index.js +5 -0
- package/schematics/component-migration/dropdown/migration.d.ts +2 -0
- package/schematics/component-migration/dropdown/migration.js +41 -0
- package/schematics/component-migration/dropdown/schema.json +25 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
- package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
- package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
- package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
- package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
- package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
- package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
- package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
- package/schematics/component-migration/index.d.ts +3 -0
- package/schematics/component-migration/index.js +26 -0
- package/schematics/component-migration/next-steps/index.d.ts +13 -0
- package/schematics/component-migration/next-steps/index.js +34 -0
- package/schematics/component-migration/registry.d.ts +1 -0
- package/schematics/component-migration/registry.js +15 -0
- package/schematics/component-migration/schema.json +20 -0
- package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
- package/schematics/component-migration/shared/ai-handoff.js +28 -0
- package/schematics/component-migration/shared/angular-component.d.ts +10 -0
- package/schematics/component-migration/shared/angular-component.js +125 -0
- package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
- package/schematics/component-migration/shared/button-visual-classes.js +111 -0
- package/schematics/component-migration/shared/component-context.d.ts +7 -0
- package/schematics/component-migration/shared/component-context.js +24 -0
- package/schematics/component-migration/shared/component-imports.d.ts +45 -0
- package/schematics/component-migration/shared/component-imports.js +380 -0
- package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
- package/schematics/component-migration/shared/create-component-schematic.js +55 -0
- package/schematics/component-migration/shared/import-edits.d.ts +11 -0
- package/schematics/component-migration/shared/import-edits.js +157 -0
- package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
- package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
- package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
- package/schematics/component-migration/shared/migrate-project.js +151 -0
- package/schematics/component-migration/shared/project-templates.d.ts +15 -0
- package/schematics/component-migration/shared/project-templates.js +43 -0
- package/schematics/component-migration/shared/scan-project.d.ts +3 -0
- package/schematics/component-migration/shared/scan-project.js +24 -0
- package/schematics/component-migration/shared/static-placement.d.ts +1 -0
- package/schematics/component-migration/shared/static-placement.js +45 -0
- package/schematics/component-migration/shared/template-edits.d.ts +28 -0
- package/schematics/component-migration/shared/template-edits.js +153 -0
- package/schematics/component-migration/shared/template-result.d.ts +3 -0
- package/schematics/component-migration/shared/template-result.js +11 -0
- package/schematics/component-migration/shared/testing.d.ts +13 -0
- package/schematics/component-migration/shared/testing.js +59 -0
- package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
- package/schematics/component-migration/shared/todo-comments.js +81 -0
- package/schematics/component-migration/shared/types.d.ts +41 -0
- package/schematics/component-migration/shared/types.js +2 -0
- package/schematics/component-migration/tooltip/guide.md +196 -0
- package/schematics/component-migration/tooltip/index.d.ts +2 -0
- package/schematics/component-migration/tooltip/index.js +5 -0
- package/schematics/component-migration/tooltip/migration.d.ts +2 -0
- package/schematics/component-migration/tooltip/migration.js +50 -0
- package/schematics/component-migration/tooltip/schema.json +25 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
- package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
- package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
- package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
- package/schematics/component-migration/utils/component-resource-collector.js +107 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
- package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
- package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
- package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
- package/schematics/component-migration/utils/typescript/decorators.js +41 -0
- package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
- package/schematics/component-migration/utils/typescript/functions.js +20 -0
- package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
- package/schematics/component-migration/utils/typescript/imports.js +110 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
- package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
- package/schematics/component-migration/utils/typescript/property-name.js +22 -0
- package/schematics/package.json +3 -0
- package/types/design-factory-angular-accordion.d.ts +553 -0
- package/types/design-factory-angular-alert.d.ts +166 -0
- package/types/design-factory-angular-breakpoints.d.ts +13 -0
- package/types/design-factory-angular-button.d.ts +166 -0
- package/types/design-factory-angular-buttongroup.d.ts +45 -0
- package/types/design-factory-angular-drawer.d.ts +19 -26
- package/types/design-factory-angular-dropdown.d.ts +148 -0
- package/types/design-factory-angular-form-field.d.ts +122 -0
- package/types/design-factory-angular-icon.d.ts +11 -0
- package/types/design-factory-angular-input.d.ts +16 -0
- package/types/design-factory-angular-internals.d.ts +78 -19
- package/types/design-factory-angular-separator.d.ts +29 -0
- package/types/design-factory-angular-sidenav.d.ts +114 -17
- package/types/design-factory-angular-slider.d.ts +239 -0
- package/types/design-factory-angular-toggle.d.ts +93 -0
- package/types/design-factory-angular-tooltip.d.ts +113 -0
- package/types/design-factory-angular-topnav.d.ts +47 -52
- package/drawer/README.md +0 -54
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { createNavManager } from '@design-factory/core/services/navManager';
|
|
2
|
-
import {
|
|
2
|
+
import { useDirectiveForHost } from '@design-factory/angular/internals';
|
|
3
|
+
import { trackWindow } from '@design-factory/angular/breakpoints';
|
|
3
4
|
import { NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
|
|
4
5
|
import * as i0 from '@angular/core';
|
|
5
|
-
import { input, model, inject, contentChild, computed, Directive, effect,
|
|
6
|
-
import
|
|
7
|
-
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import { input, model, inject, contentChild, computed, Directive, effect, Component, linkedSignal, viewChild, contentChildren, booleanAttribute, ElementRef, PLATFORM_ID, signal, Injector, afterRenderEffect, untracked, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
7
|
+
import { form, FormField } from '@angular/forms/signals';
|
|
8
8
|
import { DfDrawer } from '@design-factory/angular/drawer';
|
|
9
|
+
import { DfIcon } from '@design-factory/angular/icon';
|
|
9
10
|
import { RouterLink, RouterLinkActive } from '@angular/router';
|
|
11
|
+
import { DfIconButton } from '@design-factory/angular/button';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Base item class that is extended by desktop and mobile item components
|
|
@@ -19,23 +21,27 @@ class DfSidenavItemBaseComponent {
|
|
|
19
21
|
/**
|
|
20
22
|
* The label of the item
|
|
21
23
|
*/
|
|
22
|
-
this.label = input.required(
|
|
24
|
+
this.label = input.required(/* @ts-ignore */
|
|
25
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
23
26
|
/**
|
|
24
27
|
* Collapsed state of the item
|
|
25
28
|
* Only used for the desktop version
|
|
26
|
-
* @
|
|
29
|
+
* @defaultValue `false`
|
|
27
30
|
*/
|
|
28
|
-
this.collapsed = model(false,
|
|
31
|
+
this.collapsed = model(false, /* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
|
|
29
33
|
/**
|
|
30
34
|
* The icon class name or inline content (e.g., font awesome class)
|
|
31
|
-
* @
|
|
35
|
+
* @defaultValue `''`
|
|
32
36
|
*/
|
|
33
|
-
this.icon = input('',
|
|
37
|
+
this.icon = input('', /* @ts-ignore */
|
|
38
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
34
39
|
/**
|
|
35
40
|
* Whether the wrapper component has icon content (internally used)
|
|
36
|
-
* @
|
|
41
|
+
* @defaultValue `false`
|
|
37
42
|
*/
|
|
38
|
-
this.wrapperHasIconContent = input(false,
|
|
43
|
+
this.wrapperHasIconContent = input(false, /* @ts-ignore */
|
|
44
|
+
...(ngDevMode ? [{ debugName: "wrapperHasIconContent" }] : /* istanbul ignore next */ []));
|
|
39
45
|
this.sidenav = inject(DfSidenavComponent);
|
|
40
46
|
this.wrapperInstance = inject(DfSidenavItemComponent);
|
|
41
47
|
// check for the parent item to determine nesting level
|
|
@@ -44,14 +50,19 @@ class DfSidenavItemBaseComponent {
|
|
|
44
50
|
skipSelf: true
|
|
45
51
|
});
|
|
46
52
|
this.isFirstLevel = this.parentItem?.['parentWrapper'] === null;
|
|
47
|
-
this.iconContent = contentChild('dfSidenavIcon',
|
|
48
|
-
|
|
49
|
-
this.
|
|
50
|
-
|
|
53
|
+
this.iconContent = contentChild('dfSidenavIcon', /* @ts-ignore */
|
|
54
|
+
...(ngDevMode ? [{ debugName: "iconContent" }] : /* istanbul ignore next */ []));
|
|
55
|
+
this.hasActiveLinks = computed(() => this.childLinks().some((link) => link?.isActiveLink()), /* @ts-ignore */
|
|
56
|
+
...(ngDevMode ? [{ debugName: "hasActiveLinks" }] : /* istanbul ignore next */ []));
|
|
57
|
+
this.hasActiveItems = computed(() => this.childItems().some((item) => item?.hasActiveLinks()), /* @ts-ignore */
|
|
58
|
+
...(ngDevMode ? [{ debugName: "hasActiveItems" }] : /* istanbul ignore next */ []));
|
|
59
|
+
this.hasActiveChildren = computed(() => this.hasActiveLinks() || this.hasActiveItems(), /* @ts-ignore */
|
|
60
|
+
...(ngDevMode ? [{ debugName: "hasActiveChildren" }] : /* istanbul ignore next */ []));
|
|
51
61
|
/**
|
|
52
62
|
* Computed signal indicating if the item has visible children
|
|
53
63
|
*/
|
|
54
|
-
this.hasVisibleChildren = computed(() => this.childLinks().some((link) => link?.['isVisible']()),
|
|
64
|
+
this.hasVisibleChildren = computed(() => this.childLinks().some((link) => link?.['isVisible']()), /* @ts-ignore */
|
|
65
|
+
...(ngDevMode ? [{ debugName: "hasVisibleChildren" }] : /* istanbul ignore next */ []));
|
|
55
66
|
}
|
|
56
67
|
/**
|
|
57
68
|
* Method to toggle the collapsed state of the item
|
|
@@ -66,10 +77,10 @@ class DfSidenavItemBaseComponent {
|
|
|
66
77
|
this.collapsed.set(!this.collapsed());
|
|
67
78
|
}
|
|
68
79
|
}
|
|
69
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
70
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
81
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.4", type: DfSidenavItemBaseComponent, isStandalone: true, inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, wrapperHasIconContent: { classPropertyName: "wrapperHasIconContent", publicName: "wrapperHasIconContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, queries: [{ propertyName: "iconContent", first: true, predicate: ["dfSidenavIcon"], descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
71
82
|
}
|
|
72
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemBaseComponent, decorators: [{
|
|
73
84
|
type: Directive
|
|
74
85
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], wrapperHasIconContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapperHasIconContent", required: false }] }], iconContent: [{ type: i0.ContentChild, args: ['dfSidenavIcon', { isSignal: true }] }] } });
|
|
75
86
|
|
|
@@ -81,15 +92,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
81
92
|
class DfSidenavItemDesktopComponent extends DfSidenavItemBaseComponent {
|
|
82
93
|
constructor() {
|
|
83
94
|
super();
|
|
84
|
-
this.childLinks = computed(() => this.wrapperInstance['childrenLinks']().map((link) => link['desktopInstance']()),
|
|
85
|
-
|
|
95
|
+
this.childLinks = computed(() => this.wrapperInstance['childrenLinks']().map((link) => link['desktopInstance']()), /* @ts-ignore */
|
|
96
|
+
...(ngDevMode ? [{ debugName: "childLinks" }] : /* istanbul ignore next */ []));
|
|
97
|
+
this.childItems = computed(() => this.wrapperInstance['childrenItems']().map((item) => item['desktopInstance']()), /* @ts-ignore */
|
|
98
|
+
...(ngDevMode ? [{ debugName: "childItems" }] : /* istanbul ignore next */ []));
|
|
86
99
|
this.isVisible = computed(() => {
|
|
87
100
|
const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';
|
|
88
101
|
if (!search) {
|
|
89
102
|
return true;
|
|
90
103
|
}
|
|
91
104
|
return this.childLinks().some((link) => link?.['isVisible']());
|
|
92
|
-
},
|
|
105
|
+
}, /* @ts-ignore */
|
|
106
|
+
...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
93
107
|
// Automatically collapse when minimized
|
|
94
108
|
effect(() => {
|
|
95
109
|
if (this.sidenav.isMinimized()) {
|
|
@@ -109,28 +123,23 @@ class DfSidenavItemDesktopComponent extends DfSidenavItemBaseComponent {
|
|
|
109
123
|
}
|
|
110
124
|
});
|
|
111
125
|
}
|
|
112
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
113
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
126
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemDesktopComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
127
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavItemDesktopComponent, isStandalone: true, selector: "df-sidenav-item-desktop", host: { properties: { "class.df-hidden": "!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))" } }, usesInheritance: true, ngImport: i0, template: `
|
|
114
128
|
<button
|
|
115
|
-
class="
|
|
129
|
+
class="df-sidenav-button"
|
|
116
130
|
[class.df-sidenav-active-level]="sidenav.isMinimized() && hasActiveChildren() && isFirstLevel"
|
|
117
131
|
[class.df-sidenav-active]="hasActiveChildren()"
|
|
118
|
-
[class.w-100]="!sidenav.isMinimized()"
|
|
119
132
|
(click)="toggleCollapse()"
|
|
120
133
|
[attr.aria-expanded]="!collapsed()"
|
|
121
|
-
[class.justify-content-start]="!sidenav.isMinimized()"
|
|
122
134
|
[attr.aria-label]="label()"
|
|
123
135
|
>
|
|
124
136
|
<ng-content select="[dfSidenavIcon]" />
|
|
125
137
|
@if (icon()) {
|
|
126
|
-
<
|
|
138
|
+
<df-icon class="{{ icon() }}" />
|
|
127
139
|
}
|
|
128
140
|
@if (!sidenav.isMinimized()) {
|
|
129
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
130
|
-
<
|
|
131
|
-
[class.expanded]="!collapsed()"
|
|
132
|
-
class="fa-light df-sidenav-collapse-toggle fa-chevron-down ms-auto"
|
|
133
|
-
></span>
|
|
141
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
142
|
+
<df-icon [class.expanded]="!collapsed()" class="fa-light df-sidenav-collapse-toggle fa-chevron-down" />
|
|
134
143
|
}
|
|
135
144
|
</button>
|
|
136
145
|
|
|
@@ -140,34 +149,28 @@ class DfSidenavItemDesktopComponent extends DfSidenavItemBaseComponent {
|
|
|
140
149
|
<ng-template #content>
|
|
141
150
|
<ng-content />
|
|
142
151
|
</ng-template>
|
|
143
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }
|
|
152
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }] }); }
|
|
144
153
|
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemDesktopComponent, decorators: [{
|
|
146
155
|
type: Component,
|
|
147
156
|
args: [{
|
|
148
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
149
157
|
selector: 'df-sidenav-item-desktop',
|
|
150
158
|
template: `
|
|
151
159
|
<button
|
|
152
|
-
class="
|
|
160
|
+
class="df-sidenav-button"
|
|
153
161
|
[class.df-sidenav-active-level]="sidenav.isMinimized() && hasActiveChildren() && isFirstLevel"
|
|
154
162
|
[class.df-sidenav-active]="hasActiveChildren()"
|
|
155
|
-
[class.w-100]="!sidenav.isMinimized()"
|
|
156
163
|
(click)="toggleCollapse()"
|
|
157
164
|
[attr.aria-expanded]="!collapsed()"
|
|
158
|
-
[class.justify-content-start]="!sidenav.isMinimized()"
|
|
159
165
|
[attr.aria-label]="label()"
|
|
160
166
|
>
|
|
161
167
|
<ng-content select="[dfSidenavIcon]" />
|
|
162
168
|
@if (icon()) {
|
|
163
|
-
<
|
|
169
|
+
<df-icon class="{{ icon() }}" />
|
|
164
170
|
}
|
|
165
171
|
@if (!sidenav.isMinimized()) {
|
|
166
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
167
|
-
<
|
|
168
|
-
[class.expanded]="!collapsed()"
|
|
169
|
-
class="fa-light df-sidenav-collapse-toggle fa-chevron-down ms-auto"
|
|
170
|
-
></span>
|
|
172
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
173
|
+
<df-icon [class.expanded]="!collapsed()" class="fa-light df-sidenav-collapse-toggle fa-chevron-down" />
|
|
171
174
|
}
|
|
172
175
|
</button>
|
|
173
176
|
|
|
@@ -179,9 +182,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
179
182
|
</ng-template>
|
|
180
183
|
`,
|
|
181
184
|
host: {
|
|
182
|
-
'[class.
|
|
185
|
+
'[class.df-hidden]': '!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'
|
|
183
186
|
},
|
|
184
|
-
imports: [NgTemplateOutlet]
|
|
187
|
+
imports: [NgTemplateOutlet, DfIcon]
|
|
185
188
|
}]
|
|
186
189
|
}], ctorParameters: () => [] });
|
|
187
190
|
|
|
@@ -193,11 +196,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
193
196
|
class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
194
197
|
constructor() {
|
|
195
198
|
super(...arguments);
|
|
196
|
-
this.childLinks = computed(() => this.wrapperInstance['childrenLinks']().map((link) => link['mobileInstance']()),
|
|
197
|
-
|
|
198
|
-
this.
|
|
199
|
+
this.childLinks = computed(() => this.wrapperInstance['childrenLinks']().map((link) => link['mobileInstance']()), /* @ts-ignore */
|
|
200
|
+
...(ngDevMode ? [{ debugName: "childLinks" }] : /* istanbul ignore next */ []));
|
|
201
|
+
this.childItems = computed(() => this.wrapperInstance['childrenItems']().map((item) => item['mobileInstance']()), /* @ts-ignore */
|
|
202
|
+
...(ngDevMode ? [{ debugName: "childItems" }] : /* istanbul ignore next */ []));
|
|
203
|
+
this.isSearching = computed(() => !!this.sidenav['searchTerm']().trim(), /* @ts-ignore */
|
|
204
|
+
...(ngDevMode ? [{ debugName: "isSearching" }] : /* istanbul ignore next */ []));
|
|
199
205
|
// Check if this item is in the navigation path (is an ancestor of current panel)
|
|
200
|
-
this.isInNavigationPath = computed(() => this.sidenav['mobileNavigationStack']().includes(this.wrapperInstance),
|
|
206
|
+
this.isInNavigationPath = computed(() => this.sidenav['mobileNavigationStack']().includes(this.wrapperInstance), /* @ts-ignore */
|
|
207
|
+
...(ngDevMode ? [{ debugName: "isInNavigationPath" }] : /* istanbul ignore next */ []));
|
|
201
208
|
// Check if this item should show as mobile header
|
|
202
209
|
this.shouldShowMobileHeader = computed(() => {
|
|
203
210
|
// Don't show header when searching
|
|
@@ -205,7 +212,8 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
205
212
|
return false;
|
|
206
213
|
}
|
|
207
214
|
return this.sidenav['currentMobilePanel']() === this.wrapperInstance;
|
|
208
|
-
},
|
|
215
|
+
}, /* @ts-ignore */
|
|
216
|
+
...(ngDevMode ? [{ debugName: "shouldShowMobileHeader" }] : /* istanbul ignore next */ []));
|
|
209
217
|
// Determine if this item's children should be visible
|
|
210
218
|
this.shouldShowChildren = computed(() => {
|
|
211
219
|
// Mobile with search: show children to display matching links
|
|
@@ -214,7 +222,8 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
214
222
|
}
|
|
215
223
|
// Mobile without search: show if this item is in the navigation path
|
|
216
224
|
return this.isInNavigationPath();
|
|
217
|
-
},
|
|
225
|
+
}, /* @ts-ignore */
|
|
226
|
+
...(ngDevMode ? [{ debugName: "shouldShowChildren" }] : /* istanbul ignore next */ []));
|
|
218
227
|
// Determine if this item should be visible in the list
|
|
219
228
|
this.isVisibleInList = computed(() => {
|
|
220
229
|
// Mobile with search: don't show items, only links (items just provide structure)
|
|
@@ -236,7 +245,8 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
236
245
|
const parentMobile = this.parentItem?.['parentWrapper'];
|
|
237
246
|
return parentMobile === currentPanel && this.isVisible();
|
|
238
247
|
}
|
|
239
|
-
},
|
|
248
|
+
}, /* @ts-ignore */
|
|
249
|
+
...(ngDevMode ? [{ debugName: "isVisibleInList" }] : /* istanbul ignore next */ []));
|
|
240
250
|
// Determine if the entire component should be hidden
|
|
241
251
|
this.shouldHideComponent = computed(() => {
|
|
242
252
|
// Don't hide if this is the current mobile panel showing its children
|
|
@@ -245,7 +255,8 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
245
255
|
}
|
|
246
256
|
// Otherwise, use the regular visibility logic
|
|
247
257
|
return !this.isVisibleInList() && !this.shouldShowChildren();
|
|
248
|
-
},
|
|
258
|
+
}, /* @ts-ignore */
|
|
259
|
+
...(ngDevMode ? [{ debugName: "shouldHideComponent" }] : /* istanbul ignore next */ []));
|
|
249
260
|
this.isVisible = computed(() => {
|
|
250
261
|
const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';
|
|
251
262
|
if (!search) {
|
|
@@ -253,7 +264,8 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
253
264
|
}
|
|
254
265
|
// Check if this item's label matches
|
|
255
266
|
return String(this.label()).toLowerCase().includes(search);
|
|
256
|
-
},
|
|
267
|
+
}, /* @ts-ignore */
|
|
268
|
+
...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
257
269
|
// Check if this item has any matching children (for showing the container)
|
|
258
270
|
this.hasMatchingChildren = computed(() => {
|
|
259
271
|
const search = this.sidenav['searchTerm']().toLowerCase().trim() || '';
|
|
@@ -261,7 +273,8 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
261
273
|
return false;
|
|
262
274
|
}
|
|
263
275
|
return this.childLinks().some((link) => link?.['isVisible']());
|
|
264
|
-
},
|
|
276
|
+
}, /* @ts-ignore */
|
|
277
|
+
...(ngDevMode ? [{ debugName: "hasMatchingChildren" }] : /* istanbul ignore next */ []));
|
|
265
278
|
}
|
|
266
279
|
/**
|
|
267
280
|
* Handle click event on the item
|
|
@@ -275,58 +288,39 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
275
288
|
handleBackClick() {
|
|
276
289
|
this.sidenav.navigateBack();
|
|
277
290
|
}
|
|
278
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
279
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
291
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemMobileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
292
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavItemMobileComponent, isStandalone: true, selector: "df-sidenav-item-mobile", host: { properties: { "class.df-hidden": "shouldHideComponent() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))" }, classAttribute: "df-sidenav-mobile" }, usesInheritance: true, ngImport: i0, template: `
|
|
280
293
|
@if (shouldShowMobileHeader()) {
|
|
281
|
-
<div class="df-sidenav-mobile-header mobile
|
|
282
|
-
<button
|
|
283
|
-
class="
|
|
284
|
-
(click)="handleBackClick()"
|
|
285
|
-
[class.df-sidenav-active]="hasActiveChildren()"
|
|
286
|
-
>
|
|
287
|
-
<span class="fa-light df-sidenav-mobile-header-back-arrow fa-arrow-left me-4"></span>
|
|
294
|
+
<div class="df-sidenav-mobile-header df-sidenav-mobile" role="listitem">
|
|
295
|
+
<button class="df-sidenav-button" (click)="handleBackClick()" [class.df-sidenav-active]="hasActiveChildren()">
|
|
296
|
+
<df-icon class="fa-light df-sidenav-mobile-header-back-arrow fa-arrow-left" />
|
|
288
297
|
<ng-content select="[dfSidenavIcon]" />
|
|
289
298
|
@if (icon()) {
|
|
290
|
-
<
|
|
299
|
+
<df-icon class="{{ icon() }}" />
|
|
291
300
|
}
|
|
292
|
-
<span class="
|
|
301
|
+
<span class="df-sidenav-label">{{ label() }}</span>
|
|
293
302
|
</button>
|
|
294
303
|
</div>
|
|
295
304
|
}
|
|
296
305
|
|
|
297
306
|
<!-- Regular item button (hidden when it's the active mobile panel) -->
|
|
298
307
|
@if (isVisibleInList()) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
<
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
}
|
|
306
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
307
|
-
<span class="fa-light df-sidenav-collapse-toggle fa-chevron-right ms-auto"></span>
|
|
308
|
-
</div>
|
|
309
|
-
} @else {
|
|
310
|
-
<!-- Regular clickable button -->
|
|
311
|
-
<button
|
|
312
|
-
class="btn w-100 d-flex gap-3 justify-content-start df-sidenav-button"
|
|
313
|
-
(click)="handleItemClick()"
|
|
314
|
-
[class.df-sidenav-active]="hasActiveChildren()"
|
|
315
|
-
>
|
|
316
|
-
<ng-content select="[dfSidenavIcon]" />
|
|
317
|
-
@if (icon()) {
|
|
318
|
-
<span class="{{ icon() }}"></span>
|
|
319
|
-
}
|
|
320
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
308
|
+
<button class="df-sidenav-button" (click)="handleItemClick()" [class.df-sidenav-active]="hasActiveChildren()">
|
|
309
|
+
<ng-content select="[dfSidenavIcon]" />
|
|
310
|
+
@if (icon()) {
|
|
311
|
+
<df-icon class="{{ icon() }}" />
|
|
312
|
+
}
|
|
313
|
+
@if (!sidenav.isMinimized()) {
|
|
314
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
321
315
|
<!-- Mobile: Show forward arrow for items with children -->
|
|
322
|
-
<
|
|
323
|
-
|
|
324
|
-
|
|
316
|
+
<df-icon class="fa-light df-sidenav-collapse-toggle fa-chevron-right" />
|
|
317
|
+
}
|
|
318
|
+
</button>
|
|
325
319
|
}
|
|
326
320
|
|
|
327
321
|
<!-- Children container - rendered separately from the button -->
|
|
328
322
|
@if (shouldShowChildren()) {
|
|
329
|
-
<div role="list" class="mobile">
|
|
323
|
+
<div role="list" class="df-sidenav-mobile">
|
|
330
324
|
<ng-container [ngTemplateOutlet]="content" />
|
|
331
325
|
</div>
|
|
332
326
|
}
|
|
@@ -334,64 +328,44 @@ class DfSidenavItemMobileComponent extends DfSidenavItemBaseComponent {
|
|
|
334
328
|
<ng-template #content>
|
|
335
329
|
<ng-content />
|
|
336
330
|
</ng-template>
|
|
337
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }
|
|
331
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }] }); }
|
|
338
332
|
}
|
|
339
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
333
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemMobileComponent, decorators: [{
|
|
340
334
|
type: Component,
|
|
341
335
|
args: [{
|
|
342
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
343
336
|
selector: 'df-sidenav-item-mobile',
|
|
344
337
|
template: `
|
|
345
338
|
@if (shouldShowMobileHeader()) {
|
|
346
|
-
<div class="df-sidenav-mobile-header mobile
|
|
347
|
-
<button
|
|
348
|
-
class="
|
|
349
|
-
(click)="handleBackClick()"
|
|
350
|
-
[class.df-sidenav-active]="hasActiveChildren()"
|
|
351
|
-
>
|
|
352
|
-
<span class="fa-light df-sidenav-mobile-header-back-arrow fa-arrow-left me-4"></span>
|
|
339
|
+
<div class="df-sidenav-mobile-header df-sidenav-mobile" role="listitem">
|
|
340
|
+
<button class="df-sidenav-button" (click)="handleBackClick()" [class.df-sidenav-active]="hasActiveChildren()">
|
|
341
|
+
<df-icon class="fa-light df-sidenav-mobile-header-back-arrow fa-arrow-left" />
|
|
353
342
|
<ng-content select="[dfSidenavIcon]" />
|
|
354
343
|
@if (icon()) {
|
|
355
|
-
<
|
|
344
|
+
<df-icon class="{{ icon() }}" />
|
|
356
345
|
}
|
|
357
|
-
<span class="
|
|
346
|
+
<span class="df-sidenav-label">{{ label() }}</span>
|
|
358
347
|
</button>
|
|
359
348
|
</div>
|
|
360
349
|
}
|
|
361
350
|
|
|
362
351
|
<!-- Regular item button (hidden when it's the active mobile panel) -->
|
|
363
352
|
@if (isVisibleInList()) {
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
<
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
}
|
|
371
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
372
|
-
<span class="fa-light df-sidenav-collapse-toggle fa-chevron-right ms-auto"></span>
|
|
373
|
-
</div>
|
|
374
|
-
} @else {
|
|
375
|
-
<!-- Regular clickable button -->
|
|
376
|
-
<button
|
|
377
|
-
class="btn w-100 d-flex gap-3 justify-content-start df-sidenav-button"
|
|
378
|
-
(click)="handleItemClick()"
|
|
379
|
-
[class.df-sidenav-active]="hasActiveChildren()"
|
|
380
|
-
>
|
|
381
|
-
<ng-content select="[dfSidenavIcon]" />
|
|
382
|
-
@if (icon()) {
|
|
383
|
-
<span class="{{ icon() }}"></span>
|
|
384
|
-
}
|
|
385
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
353
|
+
<button class="df-sidenav-button" (click)="handleItemClick()" [class.df-sidenav-active]="hasActiveChildren()">
|
|
354
|
+
<ng-content select="[dfSidenavIcon]" />
|
|
355
|
+
@if (icon()) {
|
|
356
|
+
<df-icon class="{{ icon() }}" />
|
|
357
|
+
}
|
|
358
|
+
@if (!sidenav.isMinimized()) {
|
|
359
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
386
360
|
<!-- Mobile: Show forward arrow for items with children -->
|
|
387
|
-
<
|
|
388
|
-
|
|
389
|
-
|
|
361
|
+
<df-icon class="fa-light df-sidenav-collapse-toggle fa-chevron-right" />
|
|
362
|
+
}
|
|
363
|
+
</button>
|
|
390
364
|
}
|
|
391
365
|
|
|
392
366
|
<!-- Children container - rendered separately from the button -->
|
|
393
367
|
@if (shouldShowChildren()) {
|
|
394
|
-
<div role="list" class="mobile">
|
|
368
|
+
<div role="list" class="df-sidenav-mobile">
|
|
395
369
|
<ng-container [ngTemplateOutlet]="content" />
|
|
396
370
|
</div>
|
|
397
371
|
}
|
|
@@ -401,10 +375,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
401
375
|
</ng-template>
|
|
402
376
|
`,
|
|
403
377
|
host: {
|
|
404
|
-
class: 'mobile',
|
|
405
|
-
'[class.
|
|
378
|
+
class: 'df-sidenav-mobile',
|
|
379
|
+
'[class.df-hidden]': 'shouldHideComponent() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'
|
|
406
380
|
},
|
|
407
|
-
imports: [NgTemplateOutlet]
|
|
381
|
+
imports: [NgTemplateOutlet, DfIcon]
|
|
408
382
|
}]
|
|
409
383
|
}] });
|
|
410
384
|
|
|
@@ -417,34 +391,49 @@ class DfSidenavLinkBaseComponent {
|
|
|
417
391
|
/**
|
|
418
392
|
* The router link path for to the link
|
|
419
393
|
*/
|
|
420
|
-
this.linkPath = input.required(
|
|
394
|
+
this.linkPath = input.required(/* @ts-ignore */
|
|
395
|
+
...(ngDevMode ? [{ debugName: "linkPath" }] : /* istanbul ignore next */ []));
|
|
421
396
|
/**
|
|
422
397
|
* The label of the link
|
|
423
398
|
*/
|
|
424
|
-
this.label = input.required(
|
|
399
|
+
this.label = input.required(/* @ts-ignore */
|
|
400
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
425
401
|
/**
|
|
426
402
|
* The icon class name or inline content (e.g., font awesome class)
|
|
427
403
|
*/
|
|
428
|
-
this.icon = input('',
|
|
404
|
+
this.icon = input('', /* @ts-ignore */
|
|
405
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
429
406
|
/**
|
|
430
407
|
* Whether the wrapper component has icon content (internally used)
|
|
431
408
|
*/
|
|
432
|
-
this.wrapperHasIconContent = input(false,
|
|
409
|
+
this.wrapperHasIconContent = input(false, /* @ts-ignore */
|
|
410
|
+
...(ngDevMode ? [{ debugName: "wrapperHasIconContent" }] : /* istanbul ignore next */ []));
|
|
411
|
+
/**
|
|
412
|
+
* Explicitly sets the active state of the link. When provided, the link behaves
|
|
413
|
+
* as an external link (plain `<a href>`) and the Angular Router is not used.
|
|
414
|
+
* When `undefined` (default), the active state is determined by the Angular Router.
|
|
415
|
+
*/
|
|
416
|
+
this.active = input(/* @ts-ignore */
|
|
417
|
+
...(ngDevMode ? [undefined, { debugName: "active" }] : /* istanbul ignore next */ []));
|
|
433
418
|
/**
|
|
434
|
-
*
|
|
419
|
+
* Reflects the current active state of the link.
|
|
420
|
+
* Driven by the `active` input when provided, otherwise updated by the router via `(isActiveChange)`.
|
|
435
421
|
*/
|
|
436
|
-
this.isActiveLink =
|
|
422
|
+
this.isActiveLink = linkedSignal(() => this.active() ?? false, /* @ts-ignore */
|
|
423
|
+
...(ngDevMode ? [{ debugName: "isActiveLink" }] : /* istanbul ignore next */ []));
|
|
437
424
|
/**
|
|
438
425
|
* Options to determine when the router link is considered active
|
|
439
426
|
*/
|
|
440
|
-
this.routerLinkActiveOptions = input({ exact: false },
|
|
427
|
+
this.routerLinkActiveOptions = input({ exact: false }, /* @ts-ignore */
|
|
428
|
+
...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : /* istanbul ignore next */ []));
|
|
441
429
|
this.sidenav = inject(DfSidenavComponent);
|
|
442
430
|
this.parentItem = inject(DfSidenavItemComponent, {
|
|
443
431
|
optional: true,
|
|
444
432
|
skipSelf: true
|
|
445
433
|
});
|
|
446
434
|
this.isFirstLevel = this.parentItem === null;
|
|
447
|
-
this.iconContent = contentChild('dfSidenavIcon',
|
|
435
|
+
this.iconContent = contentChild('dfSidenavIcon', /* @ts-ignore */
|
|
436
|
+
...(ngDevMode ? [{ debugName: "iconContent" }] : /* istanbul ignore next */ []));
|
|
448
437
|
/**
|
|
449
438
|
* Computed signal indicating if the link is visible based on search term
|
|
450
439
|
*/
|
|
@@ -454,7 +443,8 @@ class DfSidenavLinkBaseComponent {
|
|
|
454
443
|
return true;
|
|
455
444
|
}
|
|
456
445
|
return this.label().toLowerCase().includes(search);
|
|
457
|
-
},
|
|
446
|
+
}, /* @ts-ignore */
|
|
447
|
+
...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
458
448
|
}
|
|
459
449
|
toggleSidenavOnSmallScreen() {
|
|
460
450
|
if (this.sidenav['isSmallScreen']()) {
|
|
@@ -462,12 +452,12 @@ class DfSidenavLinkBaseComponent {
|
|
|
462
452
|
}
|
|
463
453
|
return true;
|
|
464
454
|
}
|
|
465
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
466
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
455
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
456
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "22.0.4", type: DfSidenavLinkBaseComponent, isStandalone: true, inputs: { linkPath: { classPropertyName: "linkPath", publicName: "linkPath", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, wrapperHasIconContent: { classPropertyName: "wrapperHasIconContent", publicName: "wrapperHasIconContent", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "iconContent", first: true, predicate: ["dfSidenavIcon"], descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
467
457
|
}
|
|
468
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
458
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkBaseComponent, decorators: [{
|
|
469
459
|
type: Directive
|
|
470
|
-
}], propDecorators: { linkPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPath", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], wrapperHasIconContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapperHasIconContent", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }], iconContent: [{ type: i0.ContentChild, args: ['dfSidenavIcon', { isSignal: true }] }] } });
|
|
460
|
+
}], propDecorators: { linkPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPath", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], wrapperHasIconContent: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrapperHasIconContent", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }], iconContent: [{ type: i0.ContentChild, args: ['dfSidenavIcon', { isSignal: true }] }] } });
|
|
471
461
|
|
|
472
462
|
/**
|
|
473
463
|
* Component representing a leaf in the sidenav for desktop devices
|
|
@@ -478,70 +468,94 @@ class DfSidenavLinkDesktopComponent extends DfSidenavLinkBaseComponent {
|
|
|
478
468
|
super(...arguments);
|
|
479
469
|
this.anchor = viewChild.required('anchor');
|
|
480
470
|
}
|
|
481
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
482
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
471
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkDesktopComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
472
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavLinkDesktopComponent, isStandalone: true, selector: "df-sidenav-link-desktop", host: { properties: { "class.df-hidden": "!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))" } }, viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
473
|
+
@if (active() !== undefined) {
|
|
474
|
+
<a
|
|
475
|
+
class="df-sidenav-button"
|
|
476
|
+
[class.df-sidenav-active-level]="active()"
|
|
477
|
+
[href]="linkPath()"
|
|
478
|
+
target="_blank"
|
|
479
|
+
[attr.aria-label]="label()"
|
|
480
|
+
[attr.aria-current]="active() ? 'page' : null"
|
|
481
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
482
|
+
#anchor
|
|
483
|
+
>
|
|
484
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
485
|
+
</a>
|
|
486
|
+
} @else {
|
|
487
|
+
<a
|
|
488
|
+
class="df-sidenav-button"
|
|
489
|
+
routerLinkActive="df-sidenav-active-level"
|
|
490
|
+
ariaCurrentWhenActive="page"
|
|
491
|
+
(isActiveChange)="isActiveLink.set($event)"
|
|
492
|
+
[routerLink]="linkPath()"
|
|
493
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
494
|
+
[attr.aria-label]="label()"
|
|
495
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
496
|
+
#anchor
|
|
497
|
+
>
|
|
498
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
499
|
+
</a>
|
|
500
|
+
}
|
|
498
501
|
<ng-template #content>
|
|
499
502
|
<ng-content select="[dfSidenavIcon]" />
|
|
500
503
|
@if (icon()) {
|
|
501
|
-
<
|
|
504
|
+
<df-icon class="{{ icon() }}" />
|
|
502
505
|
}
|
|
503
506
|
@if (!sidenav.isMinimized()) {
|
|
504
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
507
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
505
508
|
}
|
|
506
509
|
</ng-template>
|
|
507
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }
|
|
510
|
+
`, isInline: true, 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"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }] }); }
|
|
508
511
|
}
|
|
509
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
512
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkDesktopComponent, decorators: [{
|
|
510
513
|
type: Component,
|
|
511
514
|
args: [{
|
|
512
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
513
515
|
selector: 'df-sidenav-link-desktop',
|
|
514
516
|
template: `
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
517
|
+
@if (active() !== undefined) {
|
|
518
|
+
<a
|
|
519
|
+
class="df-sidenav-button"
|
|
520
|
+
[class.df-sidenav-active-level]="active()"
|
|
521
|
+
[href]="linkPath()"
|
|
522
|
+
target="_blank"
|
|
523
|
+
[attr.aria-label]="label()"
|
|
524
|
+
[attr.aria-current]="active() ? 'page' : null"
|
|
525
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
526
|
+
#anchor
|
|
527
|
+
>
|
|
528
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
529
|
+
</a>
|
|
530
|
+
} @else {
|
|
531
|
+
<a
|
|
532
|
+
class="df-sidenav-button"
|
|
533
|
+
routerLinkActive="df-sidenav-active-level"
|
|
534
|
+
ariaCurrentWhenActive="page"
|
|
535
|
+
(isActiveChange)="isActiveLink.set($event)"
|
|
536
|
+
[routerLink]="linkPath()"
|
|
537
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
538
|
+
[attr.aria-label]="label()"
|
|
539
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
540
|
+
#anchor
|
|
541
|
+
>
|
|
542
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
543
|
+
</a>
|
|
544
|
+
}
|
|
530
545
|
<ng-template #content>
|
|
531
546
|
<ng-content select="[dfSidenavIcon]" />
|
|
532
547
|
@if (icon()) {
|
|
533
|
-
<
|
|
548
|
+
<df-icon class="{{ icon() }}" />
|
|
534
549
|
}
|
|
535
550
|
@if (!sidenav.isMinimized()) {
|
|
536
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
551
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
537
552
|
}
|
|
538
553
|
</ng-template>
|
|
539
554
|
`,
|
|
540
555
|
host: {
|
|
541
|
-
'[class.
|
|
542
|
-
class: 'd-flex'
|
|
556
|
+
'[class.df-hidden]': '!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'
|
|
543
557
|
},
|
|
544
|
-
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet]
|
|
558
|
+
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet, DfIcon]
|
|
545
559
|
}]
|
|
546
560
|
}], propDecorators: { anchor: [{ type: i0.ViewChild, args: ['anchor', { isSignal: true }] }] } });
|
|
547
561
|
|
|
@@ -554,8 +568,10 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
554
568
|
super(...arguments);
|
|
555
569
|
// Inject link wrapper to get parent wrapper reference
|
|
556
570
|
this.linkWrapper = inject(DfSidenavLinkComponent);
|
|
557
|
-
this.currentMobilePanel = computed(() => this.sidenav['currentMobilePanel']() ?? null,
|
|
558
|
-
|
|
571
|
+
this.currentMobilePanel = computed(() => this.sidenav['currentMobilePanel']() ?? null, /* @ts-ignore */
|
|
572
|
+
...(ngDevMode ? [{ debugName: "currentMobilePanel" }] : /* istanbul ignore next */ []));
|
|
573
|
+
this.isSearching = computed(() => !!this.sidenav['searchTerm']().trim(), /* @ts-ignore */
|
|
574
|
+
...(ngDevMode ? [{ debugName: "isSearching" }] : /* istanbul ignore next */ []));
|
|
559
575
|
this.isVisibleInList = computed(() => {
|
|
560
576
|
const currentPanel = this.currentMobilePanel();
|
|
561
577
|
const parentWrapper = this.linkWrapper['parentWrapper'];
|
|
@@ -572,7 +588,8 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
572
588
|
// Show links whose parent item wrapper matches the current panel
|
|
573
589
|
return parentWrapper === currentPanel && this.isVisible();
|
|
574
590
|
}
|
|
575
|
-
},
|
|
591
|
+
}, /* @ts-ignore */
|
|
592
|
+
...(ngDevMode ? [{ debugName: "isVisibleInList" }] : /* istanbul ignore next */ []));
|
|
576
593
|
// Build breadcrumb path for mobile search view
|
|
577
594
|
this.breadcrumbPath = computed(() => {
|
|
578
595
|
const path = [];
|
|
@@ -584,88 +601,114 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
584
601
|
currentItem = grandParent || null;
|
|
585
602
|
}
|
|
586
603
|
return path;
|
|
587
|
-
},
|
|
604
|
+
}, /* @ts-ignore */
|
|
605
|
+
...(ngDevMode ? [{ debugName: "breadcrumbPath" }] : /* istanbul ignore next */ []));
|
|
606
|
+
}
|
|
607
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkMobileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
608
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavLinkMobileComponent, isStandalone: true, selector: "df-sidenav-link-mobile", host: { properties: { "class.df-hidden": "!isVisibleInList() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))" }, styleAttribute: "display: flex;" }, usesInheritance: true, ngImport: i0, template: `
|
|
609
|
+
@if (active() !== undefined) {
|
|
610
|
+
<a
|
|
611
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
612
|
+
[class.df-sidenav-active-level]="active()"
|
|
613
|
+
[href]="linkPath()"
|
|
614
|
+
target="_blank"
|
|
615
|
+
[attr.aria-current]="active() ? 'page' : null"
|
|
616
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
617
|
+
>
|
|
618
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
619
|
+
</a>
|
|
620
|
+
} @else {
|
|
621
|
+
<a
|
|
622
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
623
|
+
routerLinkActive="df-sidenav-active-level"
|
|
624
|
+
ariaCurrentWhenActive="page"
|
|
625
|
+
(isActiveChange)="isActiveLink.set($event)"
|
|
626
|
+
[routerLink]="linkPath()"
|
|
627
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
628
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
629
|
+
>
|
|
630
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
631
|
+
</a>
|
|
588
632
|
}
|
|
589
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfSidenavLinkMobileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
590
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfSidenavLinkMobileComponent, isStandalone: true, selector: "df-sidenav-link-mobile", host: { properties: { "class.d-none": "!isVisibleInList() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))" }, classAttribute: "d-flex" }, usesInheritance: true, ngImport: i0, template: `
|
|
591
|
-
<a
|
|
592
|
-
class="btn df-sidenav-button d-flex gap-3 justify-content-start w-100 df-sidenav-breadcrumb-button"
|
|
593
|
-
routerLinkActive="df-sidenav-active-level"
|
|
594
|
-
ariaCurrentWhenActive="page"
|
|
595
|
-
(isActiveChange)="isActiveLink.set($event)"
|
|
596
|
-
[routerLink]="linkPath()"
|
|
597
|
-
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
598
|
-
(click)="toggleSidenavOnSmallScreen()"
|
|
599
|
-
>
|
|
600
|
-
<ng-container [ngTemplateOutlet]="content" />
|
|
601
|
-
</a>
|
|
602
633
|
<ng-template #content>
|
|
603
|
-
<
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
<div class="
|
|
609
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
634
|
+
<ng-content select="[dfSidenavIcon]" />
|
|
635
|
+
@if (icon()) {
|
|
636
|
+
<df-icon class="{{ icon() }}" />
|
|
637
|
+
}
|
|
638
|
+
@if (!sidenav.isMinimized()) {
|
|
639
|
+
<div class="df-sidenav-link-content-mobile">
|
|
640
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
610
641
|
@if (isSearching() && breadcrumbPath().length > 0) {
|
|
611
|
-
<small class="
|
|
642
|
+
<small class="df-sidenav-breadcrumb">
|
|
612
643
|
@for (item of breadcrumbPath(); track $index) {
|
|
613
644
|
<span>{{ item }}</span>
|
|
614
645
|
@if (!$last) {
|
|
615
|
-
<
|
|
646
|
+
<df-icon class="fa-arrow-right" />
|
|
616
647
|
}
|
|
617
648
|
}
|
|
618
649
|
</small>
|
|
619
650
|
}
|
|
620
651
|
</div>
|
|
621
|
-
|
|
652
|
+
}
|
|
622
653
|
</ng-template>
|
|
623
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }
|
|
654
|
+
`, isInline: true, 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"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }] }); }
|
|
624
655
|
}
|
|
625
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
656
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkMobileComponent, decorators: [{
|
|
626
657
|
type: Component,
|
|
627
658
|
args: [{
|
|
628
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
629
659
|
selector: 'df-sidenav-link-mobile',
|
|
630
660
|
template: `
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
661
|
+
@if (active() !== undefined) {
|
|
662
|
+
<a
|
|
663
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
664
|
+
[class.df-sidenav-active-level]="active()"
|
|
665
|
+
[href]="linkPath()"
|
|
666
|
+
target="_blank"
|
|
667
|
+
[attr.aria-current]="active() ? 'page' : null"
|
|
668
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
669
|
+
>
|
|
670
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
671
|
+
</a>
|
|
672
|
+
} @else {
|
|
673
|
+
<a
|
|
674
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
675
|
+
routerLinkActive="df-sidenav-active-level"
|
|
676
|
+
ariaCurrentWhenActive="page"
|
|
677
|
+
(isActiveChange)="isActiveLink.set($event)"
|
|
678
|
+
[routerLink]="linkPath()"
|
|
679
|
+
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
680
|
+
(click)="toggleSidenavOnSmallScreen()"
|
|
681
|
+
>
|
|
682
|
+
<ng-container [ngTemplateOutlet]="content" />
|
|
683
|
+
</a>
|
|
684
|
+
}
|
|
642
685
|
<ng-template #content>
|
|
643
|
-
<
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
<div class="
|
|
649
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
686
|
+
<ng-content select="[dfSidenavIcon]" />
|
|
687
|
+
@if (icon()) {
|
|
688
|
+
<df-icon class="{{ icon() }}" />
|
|
689
|
+
}
|
|
690
|
+
@if (!sidenav.isMinimized()) {
|
|
691
|
+
<div class="df-sidenav-link-content-mobile">
|
|
692
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
650
693
|
@if (isSearching() && breadcrumbPath().length > 0) {
|
|
651
|
-
<small class="
|
|
694
|
+
<small class="df-sidenav-breadcrumb">
|
|
652
695
|
@for (item of breadcrumbPath(); track $index) {
|
|
653
696
|
<span>{{ item }}</span>
|
|
654
697
|
@if (!$last) {
|
|
655
|
-
<
|
|
698
|
+
<df-icon class="fa-arrow-right" />
|
|
656
699
|
}
|
|
657
700
|
}
|
|
658
701
|
</small>
|
|
659
702
|
}
|
|
660
703
|
</div>
|
|
661
|
-
|
|
704
|
+
}
|
|
662
705
|
</ng-template>
|
|
663
706
|
`,
|
|
664
707
|
host: {
|
|
665
|
-
'[class.
|
|
666
|
-
|
|
708
|
+
'[class.df-hidden]': '!isVisibleInList() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))',
|
|
709
|
+
style: 'display: flex;'
|
|
667
710
|
},
|
|
668
|
-
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet]
|
|
711
|
+
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet, DfIcon]
|
|
669
712
|
}]
|
|
670
713
|
}] });
|
|
671
714
|
|
|
@@ -676,10 +719,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
676
719
|
* @since 21.0.0
|
|
677
720
|
*/
|
|
678
721
|
class DfSidenavIconDirective {
|
|
679
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
680
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
722
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
723
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfSidenavIconDirective, isStandalone: true, selector: "[dfSidenavIcon]", ngImport: i0 }); }
|
|
681
724
|
}
|
|
682
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
725
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavIconDirective, decorators: [{
|
|
683
726
|
type: Directive,
|
|
684
727
|
args: [{
|
|
685
728
|
selector: '[dfSidenavIcon]'
|
|
@@ -695,19 +738,30 @@ class DfSidenavLinkComponent {
|
|
|
695
738
|
/**
|
|
696
739
|
* The router link path for to the link
|
|
697
740
|
*/
|
|
698
|
-
this.linkPath = input.required(
|
|
741
|
+
this.linkPath = input.required(/* @ts-ignore */
|
|
742
|
+
...(ngDevMode ? [{ debugName: "linkPath" }] : /* istanbul ignore next */ []));
|
|
699
743
|
/**
|
|
700
744
|
* The label of the link
|
|
701
745
|
*/
|
|
702
|
-
this.label = input.required(
|
|
746
|
+
this.label = input.required(/* @ts-ignore */
|
|
747
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
703
748
|
/**
|
|
704
749
|
* The icon class name or inline content (e.g., font awesome class)
|
|
705
750
|
*/
|
|
706
|
-
this.icon = input('',
|
|
751
|
+
this.icon = input('', /* @ts-ignore */
|
|
752
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
707
753
|
/**
|
|
708
754
|
* Options to determine when the router link is considered active
|
|
709
755
|
*/
|
|
710
|
-
this.routerLinkActiveOptions = input({ exact: false },
|
|
756
|
+
this.routerLinkActiveOptions = input({ exact: false }, /* @ts-ignore */
|
|
757
|
+
...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : /* istanbul ignore next */ []));
|
|
758
|
+
/**
|
|
759
|
+
* Explicitly sets the active state of the link. When provided, the link renders as
|
|
760
|
+
* a plain `<a href>` (no Angular Router). When `undefined` (default), the Angular Router determines
|
|
761
|
+
* the active state.
|
|
762
|
+
*/
|
|
763
|
+
this.active = input(/* @ts-ignore */
|
|
764
|
+
...(ngDevMode ? [undefined, { debugName: "active" }] : /* istanbul ignore next */ []));
|
|
711
765
|
/**
|
|
712
766
|
* The parent wrapper item component (if any)
|
|
713
767
|
*/
|
|
@@ -718,17 +772,21 @@ class DfSidenavLinkComponent {
|
|
|
718
772
|
/**
|
|
719
773
|
* Reference to the desktop link component instance
|
|
720
774
|
*/
|
|
721
|
-
this.desktopInstance = viewChild(DfSidenavLinkDesktopComponent,
|
|
775
|
+
this.desktopInstance = viewChild(DfSidenavLinkDesktopComponent, /* @ts-ignore */
|
|
776
|
+
...(ngDevMode ? [{ debugName: "desktopInstance" }] : /* istanbul ignore next */ []));
|
|
722
777
|
/**
|
|
723
778
|
* Reference to the mobile link component instance
|
|
724
779
|
*/
|
|
725
|
-
this.mobileInstance = viewChild(DfSidenavLinkMobileComponent,
|
|
726
|
-
|
|
727
|
-
this.
|
|
780
|
+
this.mobileInstance = viewChild(DfSidenavLinkMobileComponent, /* @ts-ignore */
|
|
781
|
+
...(ngDevMode ? [{ debugName: "mobileInstance" }] : /* istanbul ignore next */ []));
|
|
782
|
+
this.iconContentQuery = contentChild(DfSidenavIconDirective, /* @ts-ignore */
|
|
783
|
+
...(ngDevMode ? [{ debugName: "iconContentQuery" }] : /* istanbul ignore next */ []));
|
|
784
|
+
this.wrapperHasIconContent = computed(() => this.icon() !== '' || this.iconContentQuery() !== undefined, /* @ts-ignore */
|
|
785
|
+
...(ngDevMode ? [{ debugName: "wrapperHasIconContent" }] : /* istanbul ignore next */ []));
|
|
728
786
|
this.sidenav = inject(DfSidenavComponent);
|
|
729
787
|
}
|
|
730
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
731
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
788
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
789
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavLinkComponent, isStandalone: true, selector: "df-sidenav-link", inputs: { linkPath: { classPropertyName: "linkPath", publicName: "linkPath", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "class.df-sidenav-mobile": "sidenav['isMobileDevice']()" }, styleAttribute: "display: block;" }, queries: [{ propertyName: "iconContentQuery", first: true, predicate: DfSidenavIconDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "desktopInstance", first: true, predicate: DfSidenavLinkDesktopComponent, descendants: true, isSignal: true }, { propertyName: "mobileInstance", first: true, predicate: DfSidenavLinkMobileComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
732
790
|
<ng-template #iconSlot>
|
|
733
791
|
<ng-content select="[dfSidenavIcon]" />
|
|
734
792
|
</ng-template>
|
|
@@ -741,6 +799,7 @@ class DfSidenavLinkComponent {
|
|
|
741
799
|
[linkPath]="linkPath()"
|
|
742
800
|
[label]="label()"
|
|
743
801
|
[icon]="icon()"
|
|
802
|
+
[active]="active()"
|
|
744
803
|
[wrapperHasIconContent]="wrapperHasIconContent()"
|
|
745
804
|
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
746
805
|
>
|
|
@@ -752,6 +811,7 @@ class DfSidenavLinkComponent {
|
|
|
752
811
|
[linkPath]="linkPath()"
|
|
753
812
|
[label]="label()"
|
|
754
813
|
[icon]="icon()"
|
|
814
|
+
[active]="active()"
|
|
755
815
|
[wrapperHasIconContent]="wrapperHasIconContent()"
|
|
756
816
|
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
757
817
|
>
|
|
@@ -759,13 +819,12 @@ class DfSidenavLinkComponent {
|
|
|
759
819
|
<ng-container [ngTemplateOutlet]="defaultContent" />
|
|
760
820
|
</df-sidenav-link-desktop>
|
|
761
821
|
}
|
|
762
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DfSidenavLinkDesktopComponent, selector: "df-sidenav-link-desktop" }, { kind: "component", type: DfSidenavLinkMobileComponent, selector: "df-sidenav-link-mobile" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }]
|
|
822
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DfSidenavLinkDesktopComponent, selector: "df-sidenav-link-desktop" }, { kind: "component", type: DfSidenavLinkMobileComponent, selector: "df-sidenav-link-mobile" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
763
823
|
}
|
|
764
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkComponent, decorators: [{
|
|
765
825
|
type: Component,
|
|
766
826
|
args: [{
|
|
767
827
|
selector: 'df-sidenav-link',
|
|
768
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
769
828
|
template: `
|
|
770
829
|
<ng-template #iconSlot>
|
|
771
830
|
<ng-content select="[dfSidenavIcon]" />
|
|
@@ -779,6 +838,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
779
838
|
[linkPath]="linkPath()"
|
|
780
839
|
[label]="label()"
|
|
781
840
|
[icon]="icon()"
|
|
841
|
+
[active]="active()"
|
|
782
842
|
[wrapperHasIconContent]="wrapperHasIconContent()"
|
|
783
843
|
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
784
844
|
>
|
|
@@ -790,6 +850,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
790
850
|
[linkPath]="linkPath()"
|
|
791
851
|
[label]="label()"
|
|
792
852
|
[icon]="icon()"
|
|
853
|
+
[active]="active()"
|
|
793
854
|
[wrapperHasIconContent]="wrapperHasIconContent()"
|
|
794
855
|
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
795
856
|
>
|
|
@@ -801,11 +862,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
801
862
|
imports: [DfSidenavLinkDesktopComponent, DfSidenavLinkMobileComponent, NgTemplateOutlet],
|
|
802
863
|
host: {
|
|
803
864
|
role: 'listitem',
|
|
804
|
-
|
|
805
|
-
'[class.mobile]': "sidenav['isMobileDevice']()"
|
|
865
|
+
style: 'display: block;',
|
|
866
|
+
'[class.df-sidenav-mobile]': "sidenav['isMobileDevice']()"
|
|
806
867
|
}
|
|
807
868
|
}]
|
|
808
|
-
}], propDecorators: { linkPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPath", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }], desktopInstance: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavLinkDesktopComponent), { isSignal: true }] }], mobileInstance: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavLinkMobileComponent), { isSignal: true }] }], iconContentQuery: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfSidenavIconDirective), { isSignal: true }] }] } });
|
|
869
|
+
}], propDecorators: { linkPath: [{ type: i0.Input, args: [{ isSignal: true, alias: "linkPath", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], desktopInstance: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavLinkDesktopComponent), { isSignal: true }] }], mobileInstance: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavLinkMobileComponent), { isSignal: true }] }], iconContentQuery: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfSidenavIconDirective), { isSignal: true }] }] } });
|
|
809
870
|
|
|
810
871
|
/**
|
|
811
872
|
* Sidenav element that should be nested inside <df-sidenav> or <df-sidenav-item>
|
|
@@ -816,16 +877,19 @@ class DfSidenavItemComponent {
|
|
|
816
877
|
/**
|
|
817
878
|
* Label of the sidenav item
|
|
818
879
|
*/
|
|
819
|
-
this.label = input.required(
|
|
880
|
+
this.label = input.required(/* @ts-ignore */
|
|
881
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
820
882
|
/**
|
|
821
883
|
* Flag whether the sidenav item is collapsed
|
|
822
|
-
* @
|
|
884
|
+
* @defaultValue `false`
|
|
823
885
|
*/
|
|
824
|
-
this.collapsed = model(false,
|
|
886
|
+
this.collapsed = model(false, /* @ts-ignore */
|
|
887
|
+
...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
|
|
825
888
|
/**
|
|
826
889
|
* Optional icon class for the sidenav item
|
|
827
890
|
*/
|
|
828
|
-
this.icon = input('',
|
|
891
|
+
this.icon = input('', /* @ts-ignore */
|
|
892
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
829
893
|
/**
|
|
830
894
|
* Reference to the parent element containing this item
|
|
831
895
|
*/
|
|
@@ -836,25 +900,29 @@ class DfSidenavItemComponent {
|
|
|
836
900
|
/**
|
|
837
901
|
* Child sidenav items nested inside this item
|
|
838
902
|
*/
|
|
839
|
-
this.childrenItems = contentChildren(DfSidenavItemComponent, { ...(ngDevMode ? { debugName: "childrenItems" } : {}), descendants: true });
|
|
903
|
+
this.childrenItems = contentChildren(DfSidenavItemComponent, { ...(ngDevMode ? { debugName: "childrenItems" } : /* istanbul ignore next */ {}), descendants: true });
|
|
840
904
|
/**
|
|
841
905
|
* Child sidenav links nested inside this item
|
|
842
906
|
*/
|
|
843
|
-
this.childrenLinks = contentChildren(DfSidenavLinkComponent, { ...(ngDevMode ? { debugName: "childrenLinks" } : {}), descendants: true });
|
|
907
|
+
this.childrenLinks = contentChildren(DfSidenavLinkComponent, { ...(ngDevMode ? { debugName: "childrenLinks" } : /* istanbul ignore next */ {}), descendants: true });
|
|
844
908
|
/**
|
|
845
909
|
* Reference to the desktop instance of the sidenav item
|
|
846
910
|
*/
|
|
847
|
-
this.desktopInstance = viewChild(DfSidenavItemDesktopComponent,
|
|
911
|
+
this.desktopInstance = viewChild(DfSidenavItemDesktopComponent, /* @ts-ignore */
|
|
912
|
+
...(ngDevMode ? [{ debugName: "desktopInstance" }] : /* istanbul ignore next */ []));
|
|
848
913
|
/**
|
|
849
914
|
* Reference to the mobile instance of the sidenav item
|
|
850
915
|
*/
|
|
851
|
-
this.mobileInstance = viewChild(DfSidenavItemMobileComponent,
|
|
852
|
-
|
|
853
|
-
this.
|
|
916
|
+
this.mobileInstance = viewChild(DfSidenavItemMobileComponent, /* @ts-ignore */
|
|
917
|
+
...(ngDevMode ? [{ debugName: "mobileInstance" }] : /* istanbul ignore next */ []));
|
|
918
|
+
this.iconContentQuery = contentChild(DfSidenavIconDirective, /* @ts-ignore */
|
|
919
|
+
...(ngDevMode ? [{ debugName: "iconContentQuery" }] : /* istanbul ignore next */ []));
|
|
920
|
+
this.wrapperHasIconContent = computed(() => this.icon() !== '' || this.iconContentQuery() !== undefined, /* @ts-ignore */
|
|
921
|
+
...(ngDevMode ? [{ debugName: "wrapperHasIconContent" }] : /* istanbul ignore next */ []));
|
|
854
922
|
this.sidenav = inject(DfSidenavComponent);
|
|
855
923
|
}
|
|
856
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
857
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
924
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
925
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavItemComponent, isStandalone: true, selector: "df-sidenav-item", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { attributes: { "role": "listitem" }, properties: { "class.df-sidenav-mobile": "sidenav['isMobileDevice']()" }, styleAttribute: "display: block;" }, queries: [{ propertyName: "childrenItems", predicate: DfSidenavItemComponent, descendants: true, isSignal: true }, { propertyName: "childrenLinks", predicate: DfSidenavLinkComponent, descendants: true, isSignal: true }, { propertyName: "iconContentQuery", first: true, predicate: DfSidenavIconDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "desktopInstance", first: true, predicate: DfSidenavItemDesktopComponent, descendants: true, isSignal: true }, { propertyName: "mobileInstance", first: true, predicate: DfSidenavItemMobileComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
858
926
|
<ng-template #iconSlot>
|
|
859
927
|
<ng-content select="[dfSidenavIcon]" />
|
|
860
928
|
</ng-template>
|
|
@@ -883,13 +951,12 @@ class DfSidenavItemComponent {
|
|
|
883
951
|
<ng-container [ngTemplateOutlet]="content" />
|
|
884
952
|
</df-sidenav-item-desktop>
|
|
885
953
|
}
|
|
886
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DfSidenavItemDesktopComponent, selector: "df-sidenav-item-desktop" }, { kind: "component", type: DfSidenavItemMobileComponent, selector: "df-sidenav-item-mobile" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }]
|
|
954
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DfSidenavItemDesktopComponent, selector: "df-sidenav-item-desktop" }, { kind: "component", type: DfSidenavItemMobileComponent, selector: "df-sidenav-item-mobile" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
|
|
887
955
|
}
|
|
888
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
956
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemComponent, decorators: [{
|
|
889
957
|
type: Component,
|
|
890
958
|
args: [{
|
|
891
959
|
selector: 'df-sidenav-item',
|
|
892
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
893
960
|
template: `
|
|
894
961
|
<ng-template #iconSlot>
|
|
895
962
|
<ng-content select="[dfSidenavIcon]" />
|
|
@@ -923,8 +990,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
923
990
|
imports: [DfSidenavItemDesktopComponent, DfSidenavItemMobileComponent, NgTemplateOutlet],
|
|
924
991
|
host: {
|
|
925
992
|
role: 'listitem',
|
|
926
|
-
|
|
927
|
-
'[class.mobile]': "sidenav['isMobileDevice']()"
|
|
993
|
+
style: 'display: block;',
|
|
994
|
+
'[class.df-sidenav-mobile]': "sidenav['isMobileDevice']()"
|
|
928
995
|
}
|
|
929
996
|
}]
|
|
930
997
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], childrenItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfSidenavItemComponent), { ...{ descendants: true }, isSignal: true }] }], childrenLinks: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfSidenavLinkComponent), { ...{ descendants: true }, isSignal: true }] }], desktopInstance: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavItemDesktopComponent), { isSignal: true }] }], mobileInstance: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavItemMobileComponent), { isSignal: true }] }], iconContentQuery: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfSidenavIconDirective), { isSignal: true }] }] } });
|
|
@@ -946,30 +1013,30 @@ class DfSidenavComponent {
|
|
|
946
1013
|
constructor() {
|
|
947
1014
|
/**
|
|
948
1015
|
* Flag whether the sidenav includes a search input
|
|
949
|
-
* @
|
|
1016
|
+
* @defaultValue `true`
|
|
950
1017
|
*/
|
|
951
|
-
this.searchable = input(true, { ...(ngDevMode ? { debugName: "searchable" } : {}), transform: booleanAttribute });
|
|
1018
|
+
this.searchable = input(true, { ...(ngDevMode ? { debugName: "searchable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
952
1019
|
/**
|
|
953
1020
|
* Flag whether the sidenav should be resizable
|
|
954
|
-
* @
|
|
1021
|
+
* @defaultValue `true`
|
|
955
1022
|
*/
|
|
956
|
-
this.resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : {}), transform: booleanAttribute });
|
|
1023
|
+
this.resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
957
1024
|
/**
|
|
958
1025
|
* Flag whether the sidenav should have the collapse button
|
|
959
|
-
* @
|
|
1026
|
+
* @defaultValue `true`
|
|
960
1027
|
*/
|
|
961
|
-
this.collapsible = input(true, { ...(ngDevMode ? { debugName: "collapsible" } : {}), transform: booleanAttribute });
|
|
1028
|
+
this.collapsible = input(true, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
962
1029
|
/**
|
|
963
1030
|
* Flag to enable the mobile sidenav display of the items.
|
|
964
|
-
* @
|
|
1031
|
+
* @defaultValue `true`
|
|
965
1032
|
*/
|
|
966
|
-
this.enableMobile = input(true, { ...(ngDevMode ? { debugName: "enableMobile" } : {}), transform: booleanAttribute });
|
|
1033
|
+
this.enableMobile = input(true, { ...(ngDevMode ? { debugName: "enableMobile" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
967
1034
|
/**
|
|
968
|
-
* @since 21.1.0
|
|
969
|
-
*
|
|
970
1035
|
* Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized.
|
|
1036
|
+
*
|
|
1037
|
+
* @since 21.1.0
|
|
971
1038
|
*/
|
|
972
|
-
this.disableInitialDesktopAutoScroll = input(false, { ...(ngDevMode ? { debugName: "disableInitialDesktopAutoScroll" } : {}), transform: booleanAttribute });
|
|
1039
|
+
this.disableInitialDesktopAutoScroll = input(false, { ...(ngDevMode ? { debugName: "disableInitialDesktopAutoScroll" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
973
1040
|
this._isMinimized = linkedSignal(() => {
|
|
974
1041
|
// in mobile devices, the default value is true (hiding the drawer) and does not track changes to the screen size
|
|
975
1042
|
if (this.isMobileDevice()) {
|
|
@@ -977,12 +1044,14 @@ class DfSidenavComponent {
|
|
|
977
1044
|
}
|
|
978
1045
|
// in desktop, we track the large screen signal in order to reset the minimized state
|
|
979
1046
|
// it allows resizing the window and have a more user-friendly behavior
|
|
980
|
-
return !this.isLargeUpScreen();
|
|
981
|
-
},
|
|
1047
|
+
return !this.isLargeUpScreen() && this.collapsible();
|
|
1048
|
+
}, /* @ts-ignore */
|
|
1049
|
+
...(ngDevMode ? [{ debugName: "_isMinimized" }] : /* istanbul ignore next */ []));
|
|
982
1050
|
/**
|
|
983
1051
|
* Flag to indicate if the sidenav is minimized
|
|
984
1052
|
*/
|
|
985
|
-
this.isMinimized = computed(() => this._isMinimized(),
|
|
1053
|
+
this.isMinimized = computed(() => this._isMinimized(), /* @ts-ignore */
|
|
1054
|
+
...(ngDevMode ? [{ debugName: "isMinimized" }] : /* istanbul ignore next */ []));
|
|
986
1055
|
this.hostRef = inject((ElementRef));
|
|
987
1056
|
this.scrollableContainer = viewChild.required('scrollableContainer');
|
|
988
1057
|
this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
@@ -1004,28 +1073,38 @@ class DfSidenavComponent {
|
|
|
1004
1073
|
}
|
|
1005
1074
|
return false;
|
|
1006
1075
|
}
|
|
1007
|
-
},
|
|
1008
|
-
|
|
1076
|
+
}, /* @ts-ignore */
|
|
1077
|
+
...(ngDevMode ? [{ debugName: "isMobileDevice" }] : /* istanbul ignore next */ []));
|
|
1078
|
+
this.searchInput = viewChild('textInput', /* @ts-ignore */
|
|
1079
|
+
...(ngDevMode ? [{ debugName: "searchInput" }] : /* istanbul ignore next */ []));
|
|
1009
1080
|
// Query all links to find active ones
|
|
1010
|
-
this.allLinks = contentChildren(DfSidenavLinkComponent, { ...(ngDevMode ? { debugName: "allLinks" } : {}), descendants: true });
|
|
1011
|
-
this.allItems = contentChildren(DfSidenavItemComponent, { ...(ngDevMode ? { debugName: "allItems" } : {}), descendants: true });
|
|
1012
|
-
this.width = signal(null,
|
|
1081
|
+
this.allLinks = contentChildren(DfSidenavLinkComponent, { ...(ngDevMode ? { debugName: "allLinks" } : /* istanbul ignore next */ {}), descendants: true });
|
|
1082
|
+
this.allItems = contentChildren(DfSidenavItemComponent, { ...(ngDevMode ? { debugName: "allItems" } : /* istanbul ignore next */ {}), descendants: true });
|
|
1083
|
+
this.width = signal(null, /* @ts-ignore */
|
|
1084
|
+
...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
|
|
1013
1085
|
this.savedWidth = null;
|
|
1014
|
-
this.searchTerm = signal('',
|
|
1086
|
+
this.searchTerm = signal('', /* @ts-ignore */
|
|
1087
|
+
...(ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []));
|
|
1088
|
+
this.searchTermFormField = form(this.searchTerm);
|
|
1015
1089
|
// Mobile navigation stack - tracks which item's children are currently displayed
|
|
1016
1090
|
// Using component references instead of labels for uniqueness
|
|
1017
|
-
this.mobileNavigationStack = signal([],
|
|
1091
|
+
this.mobileNavigationStack = signal([], /* @ts-ignore */
|
|
1092
|
+
...(ngDevMode ? [{ debugName: "mobileNavigationStack" }] : /* istanbul ignore next */ []));
|
|
1018
1093
|
this.currentMobilePanel = computed(() => {
|
|
1019
1094
|
const stack = this.mobileNavigationStack();
|
|
1020
1095
|
return stack.length > 0 ? stack[stack.length - 1] : null;
|
|
1021
|
-
},
|
|
1022
|
-
|
|
1023
|
-
this.
|
|
1024
|
-
this.
|
|
1025
|
-
this.
|
|
1026
|
-
|
|
1027
|
-
this.
|
|
1028
|
-
|
|
1096
|
+
}, /* @ts-ignore */
|
|
1097
|
+
...(ngDevMode ? [{ debugName: "currentMobilePanel" }] : /* istanbul ignore next */ []));
|
|
1098
|
+
this.isSm = trackWindow('sm');
|
|
1099
|
+
this.isLg = trackWindow('lg');
|
|
1100
|
+
this.isSmallScreen = computed(() => !this.isSm() && !this.isLg(), /* @ts-ignore */
|
|
1101
|
+
...(ngDevMode ? [{ debugName: "isSmallScreen" }] : /* istanbul ignore next */ []));
|
|
1102
|
+
this.isMediumScreen = computed(() => this.isSm() && !this.isLg(), /* @ts-ignore */
|
|
1103
|
+
...(ngDevMode ? [{ debugName: "isMediumScreen" }] : /* istanbul ignore next */ []));
|
|
1104
|
+
this.isLargeUpScreen = computed(() => this.isLg(), /* @ts-ignore */
|
|
1105
|
+
...(ngDevMode ? [{ debugName: "isLargeUpScreen" }] : /* istanbul ignore next */ []));
|
|
1106
|
+
this.backdrop = computed(() => this.isMediumScreen(), /* @ts-ignore */
|
|
1107
|
+
...(ngDevMode ? [{ debugName: "backdrop" }] : /* istanbul ignore next */ []));
|
|
1029
1108
|
this.navManager = createNavManager();
|
|
1030
1109
|
this.navManagerConfig = {
|
|
1031
1110
|
selector: (node) => node.querySelectorAll('input, button, a'),
|
|
@@ -1035,12 +1114,19 @@ class DfSidenavComponent {
|
|
|
1035
1114
|
}
|
|
1036
1115
|
};
|
|
1037
1116
|
this.injector = inject(Injector);
|
|
1117
|
+
// internal flag to allow mobile screen navigation to non-active item when minimized
|
|
1118
|
+
this.skipActiveItemNavigation = linkedSignal(() => {
|
|
1119
|
+
this.isMinimized();
|
|
1120
|
+
return false;
|
|
1121
|
+
}, /* @ts-ignore */
|
|
1122
|
+
...(ngDevMode ? [{ debugName: "skipActiveItemNavigation" }] : /* istanbul ignore next */ []));
|
|
1038
1123
|
this.contentHasIcons = computed(() => this.allItems().some((item) => item['wrapperHasIconContent']()) ||
|
|
1039
|
-
this.allLinks().some((link) => link['wrapperHasIconContent']()),
|
|
1124
|
+
this.allLinks().some((link) => link['wrapperHasIconContent']()), /* @ts-ignore */
|
|
1125
|
+
...(ngDevMode ? [{ debugName: "contentHasIcons" }] : /* istanbul ignore next */ []));
|
|
1040
1126
|
useDirectiveForHost(this.navManager.directive, this.navManagerConfig);
|
|
1041
1127
|
afterRenderEffect(() => {
|
|
1042
1128
|
if (this.isBrowser) {
|
|
1043
|
-
if (this.isMobileDevice() && !this._isMinimized()) {
|
|
1129
|
+
if (this.isMobileDevice() && !this._isMinimized() && !this.skipActiveItemNavigation()) {
|
|
1044
1130
|
// Delay to ensure DOM and contentChildren queries are ready
|
|
1045
1131
|
this.navigateToActiveItem();
|
|
1046
1132
|
}
|
|
@@ -1091,7 +1177,7 @@ class DfSidenavComponent {
|
|
|
1091
1177
|
}, { injector: this.injector });
|
|
1092
1178
|
});
|
|
1093
1179
|
}
|
|
1094
|
-
}, { ...(ngDevMode ? { debugName: "effectRef" } : {}), injector: this.injector });
|
|
1180
|
+
}, { ...(ngDevMode ? { debugName: "effectRef" } : /* istanbul ignore next */ {}), injector: this.injector });
|
|
1095
1181
|
}
|
|
1096
1182
|
/**
|
|
1097
1183
|
* Toggles the minimized state of the sidenav
|
|
@@ -1103,6 +1189,8 @@ class DfSidenavComponent {
|
|
|
1103
1189
|
if (minimized) {
|
|
1104
1190
|
this.savedWidth = this.width();
|
|
1105
1191
|
this.width.set(0);
|
|
1192
|
+
// reset mobile navigation stack to show root level icons (if any)
|
|
1193
|
+
this.mobileNavigationStack.set([]);
|
|
1106
1194
|
}
|
|
1107
1195
|
else {
|
|
1108
1196
|
this.width.set(this.savedWidth);
|
|
@@ -1116,6 +1204,8 @@ class DfSidenavComponent {
|
|
|
1116
1204
|
*/
|
|
1117
1205
|
visibleChangeHandler(isVisible) {
|
|
1118
1206
|
if (!isVisible) {
|
|
1207
|
+
// reset mobile navigation stack to show root level icons (if any)
|
|
1208
|
+
this.mobileNavigationStack.set([]);
|
|
1119
1209
|
this.width.set(0);
|
|
1120
1210
|
}
|
|
1121
1211
|
this._isMinimized.set(!isVisible);
|
|
@@ -1138,6 +1228,12 @@ class DfSidenavComponent {
|
|
|
1138
1228
|
}
|
|
1139
1229
|
}
|
|
1140
1230
|
}
|
|
1231
|
+
onMinimizedChange(isMinimized) {
|
|
1232
|
+
if (isMinimized) {
|
|
1233
|
+
this.mobileNavigationStack.set([]);
|
|
1234
|
+
}
|
|
1235
|
+
this._isMinimized.set(isMinimized);
|
|
1236
|
+
}
|
|
1141
1237
|
// utility to transfer focus from the button when minimized to the search input when uncollapsed
|
|
1142
1238
|
focusSearch() {
|
|
1143
1239
|
this.toggleMinimize(false);
|
|
@@ -1150,6 +1246,10 @@ class DfSidenavComponent {
|
|
|
1150
1246
|
* @param itemRef item to be added to the navigation stack
|
|
1151
1247
|
*/
|
|
1152
1248
|
navigateToChildren(itemRef) {
|
|
1249
|
+
if (this.isMinimized()) {
|
|
1250
|
+
this.toggleMinimize(false);
|
|
1251
|
+
this.skipActiveItemNavigation.set(true);
|
|
1252
|
+
}
|
|
1153
1253
|
const stack = this.mobileNavigationStack();
|
|
1154
1254
|
this.mobileNavigationStack.set([...stack, itemRef]);
|
|
1155
1255
|
}
|
|
@@ -1188,15 +1288,15 @@ class DfSidenavComponent {
|
|
|
1188
1288
|
this.mobileNavigationStack.set([]);
|
|
1189
1289
|
}
|
|
1190
1290
|
}
|
|
1191
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1192
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1291
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1292
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavComponent, isStandalone: true, selector: "df-sidenav", inputs: { searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, enableMobile: { classPropertyName: "enableMobile", publicName: "enableMobile", isSignal: true, isRequired: false, transformFunction: null }, disableInitialDesktopAutoScroll: { classPropertyName: "disableInitialDesktopAutoScroll", publicName: "disableInitialDesktopAutoScroll", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.df-sidenav-lg": "isLargeUpScreen()", "class.df-sidenav-withicon": "contentHasIcons()", "class.df-hidden": "!isLargeUpScreen() && _isMinimized()", "class.df-sidenav-drawer": "isMediumScreen() && !_isMinimized()", "class.df-sidenav-minimized": "isMinimized()" }, classAttribute: "df-sidenav" }, queries: [{ propertyName: "allLinks", predicate: DfSidenavLinkComponent, descendants: true, isSignal: true }, { propertyName: "allItems", predicate: DfSidenavItemComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "scrollableContainer", first: true, predicate: ["scrollableContainer"], descendants: true, isSignal: true }, { propertyName: "searchInput", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1193
1293
|
<df-drawer
|
|
1194
1294
|
#drawer
|
|
1195
1295
|
position="inline-start"
|
|
1196
1296
|
[className]="isSmallScreen() ? 'df-sidenav-mobile-drawer' : ''"
|
|
1197
1297
|
[visible]="!_isMinimized()"
|
|
1198
1298
|
(visibleChange)="visibleChangeHandler($event)"
|
|
1199
|
-
(minimizedChange)="
|
|
1299
|
+
(minimizedChange)="onMinimizedChange($event)"
|
|
1200
1300
|
(resizingChange)="resizingChangeHandler($event)"
|
|
1201
1301
|
[bodyScroll]="true"
|
|
1202
1302
|
[backdrop]="backdrop()"
|
|
@@ -1205,84 +1305,82 @@ class DfSidenavComponent {
|
|
|
1205
1305
|
[container]="isSmallScreen() ? null : hostRef.nativeElement"
|
|
1206
1306
|
[resizable]="resizable() && !isSmallScreen()"
|
|
1207
1307
|
[focusOnInit]="false"
|
|
1208
|
-
[configuration]="isLargeUpScreen() ? 'inline' : 'overlay'"
|
|
1308
|
+
[configuration]="isLargeUpScreen() || (isMediumScreen() && !collapsible()) ? 'inline' : 'overlay'"
|
|
1209
1309
|
>
|
|
1210
|
-
<
|
|
1211
|
-
|
|
1212
|
-
<div class="df-sidenav-header
|
|
1213
|
-
@if (
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1310
|
+
<nav class="df-sidenav-container">
|
|
1311
|
+
@if (searchable()) {
|
|
1312
|
+
<div class="df-sidenav-header" [class.df-sidenav-header-minimized]="_isMinimized()">
|
|
1313
|
+
@if (_isMinimized()) {
|
|
1314
|
+
<button
|
|
1315
|
+
dfIconButton
|
|
1316
|
+
appearance="outline"
|
|
1317
|
+
variant="neutral"
|
|
1318
|
+
class="df-sidenav-search-minimized fa-light fa-search"
|
|
1319
|
+
[class.df-sidenav-search-minimized-no-icons]="!contentHasIcons()"
|
|
1320
|
+
(click)="focusSearch()"
|
|
1321
|
+
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1322
|
+
aria-label="Search"
|
|
1323
|
+
></button>
|
|
1324
|
+
} @else {
|
|
1325
|
+
<div class="input-group">
|
|
1326
|
+
<div class="input-group-prepend">
|
|
1327
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
1328
|
+
</div>
|
|
1329
|
+
<input
|
|
1330
|
+
type="search"
|
|
1331
|
+
class="form-control df-input-withicon"
|
|
1332
|
+
i18n-placeholder="@@df.sidenav.search.placeholder"
|
|
1333
|
+
placeholder="Search"
|
|
1220
1334
|
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1221
1335
|
aria-label="Search"
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
i18n
|
|
1232
|
-
|
|
1233
|
-
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1234
|
-
aria-label="Search"
|
|
1235
|
-
[(ngModel)]="searchTerm"
|
|
1236
|
-
#textInput
|
|
1237
|
-
/>
|
|
1238
|
-
<div class="input-group-append">
|
|
1239
|
-
<button
|
|
1240
|
-
class="input-group-text fa-light fa-times"
|
|
1241
|
-
[class.df-sidenav-search-empty]="searchTerm() === ''"
|
|
1242
|
-
(click)="searchTerm.set(''); textInput.focus()"
|
|
1243
|
-
>
|
|
1244
|
-
<span class="visually-hidden" i18n="@@df.sidenav.search.clearText">Clear text</span>
|
|
1245
|
-
</button>
|
|
1246
|
-
</div>
|
|
1336
|
+
[formField]="searchTermFormField"
|
|
1337
|
+
#textInput
|
|
1338
|
+
/>
|
|
1339
|
+
<div class="input-group-append">
|
|
1340
|
+
<button
|
|
1341
|
+
class="input-group-text fa-light fa-times"
|
|
1342
|
+
[class.df-sidenav-search-empty]="searchTerm() === ''"
|
|
1343
|
+
(click)="searchTerm.set(''); textInput.focus(); $event.preventDefault()"
|
|
1344
|
+
>
|
|
1345
|
+
<span class="visually-hidden" i18n="@@df.sidenav.search.clearText">Clear text</span>
|
|
1346
|
+
</button>
|
|
1247
1347
|
</div>
|
|
1248
|
-
|
|
1348
|
+
</div>
|
|
1249
1349
|
}
|
|
1250
1350
|
</div>
|
|
1351
|
+
}
|
|
1251
1352
|
|
|
1252
|
-
|
|
1253
|
-
|
|
1353
|
+
<div role="list" class="df-sidenav-body" #scrollableContainer>
|
|
1354
|
+
<ng-content />
|
|
1355
|
+
</div>
|
|
1356
|
+
@if (collapsible() && !isSmallScreen()) {
|
|
1357
|
+
<div class="df-sidenav-footer">
|
|
1358
|
+
<button
|
|
1359
|
+
dfIconButton
|
|
1360
|
+
class="df-sidenav-toggle-minimized"
|
|
1361
|
+
[class.fa-arrow-right-to-line]="isMinimized()"
|
|
1362
|
+
[class.fa-arrow-left-to-line]="!isMinimized()"
|
|
1363
|
+
appearance="outline"
|
|
1364
|
+
(click)="toggleMinimize()"
|
|
1365
|
+
i18n-aria-label="@@df.sidenav.toggleMinimize.ariaLabel"
|
|
1366
|
+
aria-label="Toggle minimized sidenav"
|
|
1367
|
+
></button>
|
|
1254
1368
|
</div>
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
<button
|
|
1258
|
-
class="btn btn-outline-primary df-btn-icononly df-sidenav-toggle-minimized"
|
|
1259
|
-
(click)="toggleMinimize()"
|
|
1260
|
-
i18n-aria-label="@@df.sidenav.toggleMinimize.ariaLabel"
|
|
1261
|
-
aria-label="Toggle minimized sidenav"
|
|
1262
|
-
>
|
|
1263
|
-
@if (isMinimized()) {
|
|
1264
|
-
<span class="fa-arrow-right-to-line"></span>
|
|
1265
|
-
} @else {
|
|
1266
|
-
<span class="fa-arrow-left-to-line"></span>
|
|
1267
|
-
}
|
|
1268
|
-
</button>
|
|
1269
|
-
</div>
|
|
1270
|
-
}
|
|
1271
|
-
</nav>
|
|
1272
|
-
</div>
|
|
1369
|
+
}
|
|
1370
|
+
</nav>
|
|
1273
1371
|
</df-drawer>
|
|
1274
|
-
`, isInline: true, styles: [".df-sidenav{position:relative;--sidenav-minWidth: 44px;width:var(--sidenav-minWidth)}.df-sidenav.df-sidenav-withicon{--sidenav-minWidth:
|
|
1372
|
+
`, isInline: true, styles: [".df-sidenav{position:relative;--sidenav-minWidth: 44px;width:var(--sidenav-minWidth)}.df-sidenav.df-sidenav-withicon{--sidenav-minWidth: 80px}.df-sidenav.df-sidenav-lg{width:auto}.df-sidenav.df-sidenav-lg .df-drawer{--df-drawer-size: max-content}.df-sidenav.df-sidenav-light-sky .df-sidenav-body{scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-primary-subtle-background)}.df-sidenav.df-sidenav-light-sky .df-drawer,.df-sidenav.df-sidenav-light-sky .df-sidenav-button{background-color:var(--df-color-primary-subtle-background)}.df-sidenav .df-sidenav-search-empty{visibility:hidden}.df-sidenav .df-sidenav-mobile-drawer{top:var(--df-navbar-height, 56px)!important;height:calc(100vh - var(--df-navbar-height, 56px))!important}.df-sidenav nav{border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-sidenav.df-sidenav-drawer .df-drawer{z-index:2010}.df-sidenav .df-sidenav-container{display:flex;flex-direction:column;height:100%;padding:var(--df-spacing-5);padding-block-end:var(--df-spacing-3)}.df-sidenav .df-sidenav-link-content-mobile{display:flex;flex-direction:column;align-items:flex-start}.df-sidenav .df-sidenav-link-content-mobile .df-sidenav-breadcrumb{color:var(--df-color-subtext-foreground);display:flex;gap:var(--df-spacing-1)}.df-sidenav .df-drawer{background-color:var(--df-color-inert-neutral-main-background);height:100%;--df-drawer-size: 0;--df-drawer-min-size: var(--sidenav-minWidth);--df-drawer-max-size: max-content;z-index:10;transition:none}.df-sidenav .df-drawer.df-inline-start{border:none}.df-sidenav .df-drawer.df-collapse-show{--df-drawer-size: max-content}.df-sidenav .df-drawer.df-collapse-hide{display:block}.df-sidenav .df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-sidenav .df-sidenav-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.df-sidenav .df-sidenav-label:before{content:attr(title);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-sidenav .df-sidenav-mobile-header{padding-block-end:var(--df-spacing-2);border-block-end:1px solid var(--df-color-neutral-alt-default-border);margin-block-end:var(--df-spacing-2);font-weight:var(--df-typo-weight-regular)}.df-sidenav .df-sidenav-mobile-header .df-sidenav-button{gap:0}.df-sidenav .df-sidenav-mobile-header .df-sidenav-mobile-header-back-arrow{margin-inline-end:var(--df-spacing-4);color:var(--df-color-primary-alt-default-foreground)}.df-sidenav .df-sidenav-mobile-header .df-sidenav-active .df-sidenav-mobile-header-back-arrow{color:var(--df-color-primary-alt-active-foreground)}.df-sidenav .df-sidenav-mobile-header .df-sidenav-label{margin-inline-start:var(--df-spacing-3)}.df-sidenav.df-sidenav-minimized .df-sidenav-button{width:3rem}.df-sidenav.df-sidenav-minimized .df-sidenav-body{padding:0;overflow:visible}.df-sidenav .df-sidenav-body{padding:var(--df-spacing-2);scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);flex-grow:1;overflow-y:auto}.df-sidenav .df-sidenav-search-minimized{width:100%}.df-sidenav .df-sidenav-search-minimized-no-icons,.df-sidenav .df-sidenav-toggle-minimized{min-width:36px;position:relative;z-index:1}.df-sidenav .df-sidenav-header{margin-block-end:var(--df-spacing-3);overflow:visible;padding-inline:var(--df-spacing-2);position:relative}.df-sidenav .df-sidenav-header .input-group{flex-wrap:nowrap}.df-sidenav .df-sidenav-header.df-sidenav-header-minimized{padding-inline:0}.df-sidenav .df-sidenav-footer{overflow:visible;position:relative;padding-block:var(--df-spacing-3)}.df-sidenav [role=list] [role=listitem]{padding-inline-start:0}.df-sidenav [role=list] [role=listitem] [role=listitem]:not(.df-sidenav-mobile){padding-inline-start:var(--df-spacing-6);position:relative}.df-sidenav [role=list] [role=listitem] [role=listitem]:not(.df-sidenav-mobile):before{content:\"\";position:absolute;inset-inline-start:var(--df-spacing-5);top:0;bottom:0;width:1px;background-color:var(--df-color-neutral-soft-default-background)}.df-sidenav [role=list] [role=listitem] [role=listitem]:not(.df-sidenav-mobile) [role=listitem]:not(.df-sidenav-mobile){padding-inline-start:var(--df-spacing-6)}.df-sidenav .df-sidenav-button{align-items:center;border-radius:var(--df-borderRadius-main-medium);background-color:var(--df-color-inert-neutral-main-background);box-shadow:none;border:none;cursor:pointer;color:var(--df-color-neutral-alt-default-foreground);display:flex;font-weight:var(--df-typo-weight-regular);gap:var(--df-spacing-3);height:2.5rem;justify-content:start;margin-block-end:1px;padding-inline:var(--df-spacing-5);position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%}.df-sidenav .df-sidenav-button.df-sidenav-active{font-weight:var(--df-typo-weight-bold)}.df-sidenav .df-sidenav-button:focus-visible{z-index:1;outline:2px solid var(--df-color-focus-main-border);outline-offset:2px}.df-sidenav .df-sidenav-button.df-sidenav-breadcrumb-button{height:3rem}.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle{transition:transform .3s}@media(prefers-reduced-motion:reduce){.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle{transition:none}}.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle{color:var(--df-color-primary-alt-default-foreground);margin-inline-start:auto}.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle.expanded{transform:rotate(180deg)}.df-sidenav .df-sidenav-button:hover{background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-sidenav .df-sidenav-button:hover .df-sidenav-collapse-toggle{color:var(--df-color-primary-alt-hovered-foreground)}.df-sidenav .df-sidenav-button:active{background-color:var(--df-color-primary-alt-active-background)}.df-sidenav .df-sidenav-button:active .df-sidenav-collapse-toggle{color:var(--df-color-primary-alt-active-foreground)}.df-sidenav .df-sidenav-button.df-sidenav-active-level{font-weight:var(--df-typo-weight-bold);background-color:var(--df-color-primary-alt-active-background)}.df-sidenav .df-sidenav-button.df-sidenav-active-level:hover{background-color:var(--df-color-primary-alt-activeHovered-background)}.df-sidenav .df-sidenav-item-hidden{visibility:hidden;height:0;overflow:hidden}.df-sidenav .input-group.df-input-prepend .input-group-prepend{padding-inline-start:15px}\n"], dependencies: [{ kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { 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: "component", type: DfIcon, selector: "df-icon" }, { kind: "component", type: DfIconButton, selector: "button[dfIconButton], a[dfIconButton]" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
1275
1373
|
}
|
|
1276
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavComponent, decorators: [{
|
|
1277
1375
|
type: Component,
|
|
1278
|
-
args: [{
|
|
1376
|
+
args: [{ selector: 'df-sidenav', template: `
|
|
1279
1377
|
<df-drawer
|
|
1280
1378
|
#drawer
|
|
1281
1379
|
position="inline-start"
|
|
1282
1380
|
[className]="isSmallScreen() ? 'df-sidenav-mobile-drawer' : ''"
|
|
1283
1381
|
[visible]="!_isMinimized()"
|
|
1284
1382
|
(visibleChange)="visibleChangeHandler($event)"
|
|
1285
|
-
(minimizedChange)="
|
|
1383
|
+
(minimizedChange)="onMinimizedChange($event)"
|
|
1286
1384
|
(resizingChange)="resizingChangeHandler($event)"
|
|
1287
1385
|
[bodyScroll]="true"
|
|
1288
1386
|
[backdrop]="backdrop()"
|
|
@@ -1291,84 +1389,314 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1291
1389
|
[container]="isSmallScreen() ? null : hostRef.nativeElement"
|
|
1292
1390
|
[resizable]="resizable() && !isSmallScreen()"
|
|
1293
1391
|
[focusOnInit]="false"
|
|
1294
|
-
[configuration]="isLargeUpScreen() ? 'inline' : 'overlay'"
|
|
1392
|
+
[configuration]="isLargeUpScreen() || (isMediumScreen() && !collapsible()) ? 'inline' : 'overlay'"
|
|
1295
1393
|
>
|
|
1296
|
-
<
|
|
1297
|
-
|
|
1298
|
-
<div class="df-sidenav-header
|
|
1299
|
-
@if (
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1394
|
+
<nav class="df-sidenav-container">
|
|
1395
|
+
@if (searchable()) {
|
|
1396
|
+
<div class="df-sidenav-header" [class.df-sidenav-header-minimized]="_isMinimized()">
|
|
1397
|
+
@if (_isMinimized()) {
|
|
1398
|
+
<button
|
|
1399
|
+
dfIconButton
|
|
1400
|
+
appearance="outline"
|
|
1401
|
+
variant="neutral"
|
|
1402
|
+
class="df-sidenav-search-minimized fa-light fa-search"
|
|
1403
|
+
[class.df-sidenav-search-minimized-no-icons]="!contentHasIcons()"
|
|
1404
|
+
(click)="focusSearch()"
|
|
1405
|
+
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1406
|
+
aria-label="Search"
|
|
1407
|
+
></button>
|
|
1408
|
+
} @else {
|
|
1409
|
+
<div class="input-group">
|
|
1410
|
+
<div class="input-group-prepend">
|
|
1411
|
+
<df-icon class="input-group-text fa-light fa-search" />
|
|
1412
|
+
</div>
|
|
1413
|
+
<input
|
|
1414
|
+
type="search"
|
|
1415
|
+
class="form-control df-input-withicon"
|
|
1416
|
+
i18n-placeholder="@@df.sidenav.search.placeholder"
|
|
1417
|
+
placeholder="Search"
|
|
1306
1418
|
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1307
1419
|
aria-label="Search"
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
i18n
|
|
1318
|
-
|
|
1319
|
-
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1320
|
-
aria-label="Search"
|
|
1321
|
-
[(ngModel)]="searchTerm"
|
|
1322
|
-
#textInput
|
|
1323
|
-
/>
|
|
1324
|
-
<div class="input-group-append">
|
|
1325
|
-
<button
|
|
1326
|
-
class="input-group-text fa-light fa-times"
|
|
1327
|
-
[class.df-sidenav-search-empty]="searchTerm() === ''"
|
|
1328
|
-
(click)="searchTerm.set(''); textInput.focus()"
|
|
1329
|
-
>
|
|
1330
|
-
<span class="visually-hidden" i18n="@@df.sidenav.search.clearText">Clear text</span>
|
|
1331
|
-
</button>
|
|
1332
|
-
</div>
|
|
1420
|
+
[formField]="searchTermFormField"
|
|
1421
|
+
#textInput
|
|
1422
|
+
/>
|
|
1423
|
+
<div class="input-group-append">
|
|
1424
|
+
<button
|
|
1425
|
+
class="input-group-text fa-light fa-times"
|
|
1426
|
+
[class.df-sidenav-search-empty]="searchTerm() === ''"
|
|
1427
|
+
(click)="searchTerm.set(''); textInput.focus(); $event.preventDefault()"
|
|
1428
|
+
>
|
|
1429
|
+
<span class="visually-hidden" i18n="@@df.sidenav.search.clearText">Clear text</span>
|
|
1430
|
+
</button>
|
|
1333
1431
|
</div>
|
|
1334
|
-
|
|
1432
|
+
</div>
|
|
1335
1433
|
}
|
|
1336
1434
|
</div>
|
|
1435
|
+
}
|
|
1337
1436
|
|
|
1338
|
-
|
|
1339
|
-
|
|
1437
|
+
<div role="list" class="df-sidenav-body" #scrollableContainer>
|
|
1438
|
+
<ng-content />
|
|
1439
|
+
</div>
|
|
1440
|
+
@if (collapsible() && !isSmallScreen()) {
|
|
1441
|
+
<div class="df-sidenav-footer">
|
|
1442
|
+
<button
|
|
1443
|
+
dfIconButton
|
|
1444
|
+
class="df-sidenav-toggle-minimized"
|
|
1445
|
+
[class.fa-arrow-right-to-line]="isMinimized()"
|
|
1446
|
+
[class.fa-arrow-left-to-line]="!isMinimized()"
|
|
1447
|
+
appearance="outline"
|
|
1448
|
+
(click)="toggleMinimize()"
|
|
1449
|
+
i18n-aria-label="@@df.sidenav.toggleMinimize.ariaLabel"
|
|
1450
|
+
aria-label="Toggle minimized sidenav"
|
|
1451
|
+
></button>
|
|
1340
1452
|
</div>
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
<button
|
|
1344
|
-
class="btn btn-outline-primary df-btn-icononly df-sidenav-toggle-minimized"
|
|
1345
|
-
(click)="toggleMinimize()"
|
|
1346
|
-
i18n-aria-label="@@df.sidenav.toggleMinimize.ariaLabel"
|
|
1347
|
-
aria-label="Toggle minimized sidenav"
|
|
1348
|
-
>
|
|
1349
|
-
@if (isMinimized()) {
|
|
1350
|
-
<span class="fa-arrow-right-to-line"></span>
|
|
1351
|
-
} @else {
|
|
1352
|
-
<span class="fa-arrow-left-to-line"></span>
|
|
1353
|
-
}
|
|
1354
|
-
</button>
|
|
1355
|
-
</div>
|
|
1356
|
-
}
|
|
1357
|
-
</nav>
|
|
1358
|
-
</div>
|
|
1453
|
+
}
|
|
1454
|
+
</nav>
|
|
1359
1455
|
</df-drawer>
|
|
1360
|
-
`, imports: [
|
|
1456
|
+
`, imports: [FormField, DfDrawer, DfIcon, DfIconButton], encapsulation: ViewEncapsulation.None, host: {
|
|
1361
1457
|
class: 'df-sidenav',
|
|
1362
1458
|
'[class.df-sidenav-lg]': 'isLargeUpScreen()',
|
|
1363
1459
|
'[class.df-sidenav-withicon]': 'contentHasIcons()',
|
|
1364
|
-
'[class.
|
|
1365
|
-
'[class.df-sidenav-drawer]': 'isMediumScreen() && !_isMinimized()'
|
|
1366
|
-
|
|
1460
|
+
'[class.df-hidden]': '!isLargeUpScreen() && _isMinimized()',
|
|
1461
|
+
'[class.df-sidenav-drawer]': 'isMediumScreen() && !_isMinimized()',
|
|
1462
|
+
'[class.df-sidenav-minimized]': 'isMinimized()'
|
|
1463
|
+
}, styles: [".df-sidenav{position:relative;--sidenav-minWidth: 44px;width:var(--sidenav-minWidth)}.df-sidenav.df-sidenav-withicon{--sidenav-minWidth: 80px}.df-sidenav.df-sidenav-lg{width:auto}.df-sidenav.df-sidenav-lg .df-drawer{--df-drawer-size: max-content}.df-sidenav.df-sidenav-light-sky .df-sidenav-body{scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-primary-subtle-background)}.df-sidenav.df-sidenav-light-sky .df-drawer,.df-sidenav.df-sidenav-light-sky .df-sidenav-button{background-color:var(--df-color-primary-subtle-background)}.df-sidenav .df-sidenav-search-empty{visibility:hidden}.df-sidenav .df-sidenav-mobile-drawer{top:var(--df-navbar-height, 56px)!important;height:calc(100vh - var(--df-navbar-height, 56px))!important}.df-sidenav nav{border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-sidenav.df-sidenav-drawer .df-drawer{z-index:2010}.df-sidenav .df-sidenav-container{display:flex;flex-direction:column;height:100%;padding:var(--df-spacing-5);padding-block-end:var(--df-spacing-3)}.df-sidenav .df-sidenav-link-content-mobile{display:flex;flex-direction:column;align-items:flex-start}.df-sidenav .df-sidenav-link-content-mobile .df-sidenav-breadcrumb{color:var(--df-color-subtext-foreground);display:flex;gap:var(--df-spacing-1)}.df-sidenav .df-drawer{background-color:var(--df-color-inert-neutral-main-background);height:100%;--df-drawer-size: 0;--df-drawer-min-size: var(--sidenav-minWidth);--df-drawer-max-size: max-content;z-index:10;transition:none}.df-sidenav .df-drawer.df-inline-start{border:none}.df-sidenav .df-drawer.df-collapse-show{--df-drawer-size: max-content}.df-sidenav .df-drawer.df-collapse-hide{display:block}.df-sidenav .df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-sidenav .df-sidenav-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.df-sidenav .df-sidenav-label:before{content:attr(title);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-sidenav .df-sidenav-mobile-header{padding-block-end:var(--df-spacing-2);border-block-end:1px solid var(--df-color-neutral-alt-default-border);margin-block-end:var(--df-spacing-2);font-weight:var(--df-typo-weight-regular)}.df-sidenav .df-sidenav-mobile-header .df-sidenav-button{gap:0}.df-sidenav .df-sidenav-mobile-header .df-sidenav-mobile-header-back-arrow{margin-inline-end:var(--df-spacing-4);color:var(--df-color-primary-alt-default-foreground)}.df-sidenav .df-sidenav-mobile-header .df-sidenav-active .df-sidenav-mobile-header-back-arrow{color:var(--df-color-primary-alt-active-foreground)}.df-sidenav .df-sidenav-mobile-header .df-sidenav-label{margin-inline-start:var(--df-spacing-3)}.df-sidenav.df-sidenav-minimized .df-sidenav-button{width:3rem}.df-sidenav.df-sidenav-minimized .df-sidenav-body{padding:0;overflow:visible}.df-sidenav .df-sidenav-body{padding:var(--df-spacing-2);scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);flex-grow:1;overflow-y:auto}.df-sidenav .df-sidenav-search-minimized{width:100%}.df-sidenav .df-sidenav-search-minimized-no-icons,.df-sidenav .df-sidenav-toggle-minimized{min-width:36px;position:relative;z-index:1}.df-sidenav .df-sidenav-header{margin-block-end:var(--df-spacing-3);overflow:visible;padding-inline:var(--df-spacing-2);position:relative}.df-sidenav .df-sidenav-header .input-group{flex-wrap:nowrap}.df-sidenav .df-sidenav-header.df-sidenav-header-minimized{padding-inline:0}.df-sidenav .df-sidenav-footer{overflow:visible;position:relative;padding-block:var(--df-spacing-3)}.df-sidenav [role=list] [role=listitem]{padding-inline-start:0}.df-sidenav [role=list] [role=listitem] [role=listitem]:not(.df-sidenav-mobile){padding-inline-start:var(--df-spacing-6);position:relative}.df-sidenav [role=list] [role=listitem] [role=listitem]:not(.df-sidenav-mobile):before{content:\"\";position:absolute;inset-inline-start:var(--df-spacing-5);top:0;bottom:0;width:1px;background-color:var(--df-color-neutral-soft-default-background)}.df-sidenav [role=list] [role=listitem] [role=listitem]:not(.df-sidenav-mobile) [role=listitem]:not(.df-sidenav-mobile){padding-inline-start:var(--df-spacing-6)}.df-sidenav .df-sidenav-button{align-items:center;border-radius:var(--df-borderRadius-main-medium);background-color:var(--df-color-inert-neutral-main-background);box-shadow:none;border:none;cursor:pointer;color:var(--df-color-neutral-alt-default-foreground);display:flex;font-weight:var(--df-typo-weight-regular);gap:var(--df-spacing-3);height:2.5rem;justify-content:start;margin-block-end:1px;padding-inline:var(--df-spacing-5);position:relative;text-align:center;text-decoration:none;-webkit-user-select:none;user-select:none;width:100%}.df-sidenav .df-sidenav-button.df-sidenav-active{font-weight:var(--df-typo-weight-bold)}.df-sidenav .df-sidenav-button:focus-visible{z-index:1;outline:2px solid var(--df-color-focus-main-border);outline-offset:2px}.df-sidenav .df-sidenav-button.df-sidenav-breadcrumb-button{height:3rem}.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle{transition:transform .3s}@media(prefers-reduced-motion:reduce){.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle{transition:none}}.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle{color:var(--df-color-primary-alt-default-foreground);margin-inline-start:auto}.df-sidenav .df-sidenav-button .df-sidenav-collapse-toggle.expanded{transform:rotate(180deg)}.df-sidenav .df-sidenav-button:hover{background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-sidenav .df-sidenav-button:hover .df-sidenav-collapse-toggle{color:var(--df-color-primary-alt-hovered-foreground)}.df-sidenav .df-sidenav-button:active{background-color:var(--df-color-primary-alt-active-background)}.df-sidenav .df-sidenav-button:active .df-sidenav-collapse-toggle{color:var(--df-color-primary-alt-active-foreground)}.df-sidenav .df-sidenav-button.df-sidenav-active-level{font-weight:var(--df-typo-weight-bold);background-color:var(--df-color-primary-alt-active-background)}.df-sidenav .df-sidenav-button.df-sidenav-active-level:hover{background-color:var(--df-color-primary-alt-activeHovered-background)}.df-sidenav .df-sidenav-item-hidden{visibility:hidden;height:0;overflow:hidden}.df-sidenav .input-group.df-input-prepend .input-group-prepend{padding-inline-start:15px}\n"] }]
|
|
1367
1464
|
}], ctorParameters: () => [], propDecorators: { searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], enableMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableMobile", required: false }] }], disableInitialDesktopAutoScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableInitialDesktopAutoScroll", required: false }] }], scrollableContainer: [{ type: i0.ViewChild, args: ['scrollableContainer', { isSignal: true }] }], searchInput: [{ type: i0.ViewChild, args: ['textInput', { isSignal: true }] }], allLinks: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfSidenavLinkComponent), { ...{ descendants: true }, isSignal: true }] }], allItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfSidenavItemComponent), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
1368
1465
|
|
|
1466
|
+
// 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.
|
|
1467
|
+
/**
|
|
1468
|
+
* A wrapper of the {@link DfSidenavComponent} driven by a data array provided as an input.
|
|
1469
|
+
* All inputs are forwarded to the underlying {@link DfSidenavComponent}.
|
|
1470
|
+
*
|
|
1471
|
+
* @since 22.0
|
|
1472
|
+
*/
|
|
1473
|
+
class DfSidenavInput {
|
|
1474
|
+
constructor() {
|
|
1475
|
+
/**
|
|
1476
|
+
* Navigation items to render in the sidenav.
|
|
1477
|
+
*/
|
|
1478
|
+
this.items = input([], /* @ts-ignore */
|
|
1479
|
+
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
1480
|
+
/**
|
|
1481
|
+
* Class name applied to the underlying {@link DfSidenavComponent} host element.
|
|
1482
|
+
* @default ''
|
|
1483
|
+
*/
|
|
1484
|
+
this.className = input('', /* @ts-ignore */
|
|
1485
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
1486
|
+
/**
|
|
1487
|
+
* Flag whether the sidenav includes a search input.
|
|
1488
|
+
* @default false
|
|
1489
|
+
*/
|
|
1490
|
+
this.searchable = input(false, { ...(ngDevMode ? { debugName: "searchable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1491
|
+
/**
|
|
1492
|
+
* Flag whether the sidenav should be resizable.
|
|
1493
|
+
* @default false
|
|
1494
|
+
*/
|
|
1495
|
+
this.resizable = input(false, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1496
|
+
/**
|
|
1497
|
+
* Flag whether the sidenav should have the collapse button.
|
|
1498
|
+
* @default true
|
|
1499
|
+
*/
|
|
1500
|
+
this.collapsible = input(true, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1501
|
+
/**
|
|
1502
|
+
* Flag to enable the mobile sidenav display of the items.
|
|
1503
|
+
* @default true
|
|
1504
|
+
*/
|
|
1505
|
+
this.enableMobile = input(true, { ...(ngDevMode ? { debugName: "enableMobile" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1506
|
+
/**
|
|
1507
|
+
* Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized.
|
|
1508
|
+
* @default false
|
|
1509
|
+
*/
|
|
1510
|
+
this.disableInitialDesktopAutoScroll = input(false, { ...(ngDevMode ? { debugName: "disableInitialDesktopAutoScroll" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1511
|
+
this._sidenav = viewChild.required(DfSidenavComponent);
|
|
1512
|
+
/**
|
|
1513
|
+
* Whether the sidenav is currently minimized.
|
|
1514
|
+
*/
|
|
1515
|
+
this.isMinimized = computed(() => this._sidenav().isMinimized() ?? false, /* @ts-ignore */
|
|
1516
|
+
...(ngDevMode ? [{ debugName: "isMinimized" }] : /* istanbul ignore next */ []));
|
|
1517
|
+
}
|
|
1518
|
+
/**
|
|
1519
|
+
* Toggle or set the minimized state of the sidenav.
|
|
1520
|
+
*/
|
|
1521
|
+
toggleMinimize(minimized) {
|
|
1522
|
+
this._sidenav().toggleMinimize(minimized);
|
|
1523
|
+
}
|
|
1524
|
+
isSideItem(item) {
|
|
1525
|
+
return 'children' in item;
|
|
1526
|
+
}
|
|
1527
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1528
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfSidenavInput, isStandalone: true, selector: "df-sidenav-input", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, enableMobile: { classPropertyName: "enableMobile", publicName: "enableMobile", isSignal: true, isRequired: false, transformFunction: null }, disableInitialDesktopAutoScroll: { classPropertyName: "disableInitialDesktopAutoScroll", publicName: "disableInitialDesktopAutoScroll", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "_sidenav", first: true, predicate: DfSidenavComponent, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1529
|
+
<df-sidenav
|
|
1530
|
+
[class]="className()"
|
|
1531
|
+
[searchable]="searchable()"
|
|
1532
|
+
[resizable]="resizable()"
|
|
1533
|
+
[collapsible]="collapsible()"
|
|
1534
|
+
[enableMobile]="enableMobile()"
|
|
1535
|
+
[disableInitialDesktopAutoScroll]="disableInitialDesktopAutoScroll()"
|
|
1536
|
+
>
|
|
1537
|
+
@for (element1 of items(); track element1.label) {
|
|
1538
|
+
@if (isSideItem(element1)) {
|
|
1539
|
+
<df-sidenav-item
|
|
1540
|
+
[label]="element1.label"
|
|
1541
|
+
[icon]="element1.icon || ''"
|
|
1542
|
+
[collapsed]="element1.collapsed ?? false"
|
|
1543
|
+
(collapsedChange)="element1.collapsed = $event"
|
|
1544
|
+
>
|
|
1545
|
+
@for (element2 of element1.children; track element2.label) {
|
|
1546
|
+
@if (isSideItem(element2)) {
|
|
1547
|
+
<df-sidenav-item
|
|
1548
|
+
[label]="element2.label"
|
|
1549
|
+
[icon]="element2.icon || ''"
|
|
1550
|
+
[collapsed]="element2.collapsed ?? false"
|
|
1551
|
+
(collapsedChange)="element2.collapsed = $event"
|
|
1552
|
+
>
|
|
1553
|
+
@for (element3 of element2.children; track element3.label) {
|
|
1554
|
+
@if (isSideItem(element3)) {
|
|
1555
|
+
<df-sidenav-item
|
|
1556
|
+
[label]="element3.label"
|
|
1557
|
+
[icon]="element3.icon || ''"
|
|
1558
|
+
[collapsed]="element3.collapsed ?? false"
|
|
1559
|
+
(collapsedChange)="element3.collapsed = $event"
|
|
1560
|
+
>
|
|
1561
|
+
@for (element4 of element3.children; track element4.label) {
|
|
1562
|
+
@if (!isSideItem(element4)) {
|
|
1563
|
+
<df-sidenav-link
|
|
1564
|
+
[label]="element4.label"
|
|
1565
|
+
[icon]="element4.icon || ''"
|
|
1566
|
+
[linkPath]="element4.linkPath"
|
|
1567
|
+
[active]="element4.active"
|
|
1568
|
+
[routerLinkActiveOptions]="element4.routerLinkActiveOptions || { exact: false }"
|
|
1569
|
+
/>
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
</df-sidenav-item>
|
|
1573
|
+
} @else {
|
|
1574
|
+
<df-sidenav-link
|
|
1575
|
+
[label]="element3.label"
|
|
1576
|
+
[icon]="element3.icon || ''"
|
|
1577
|
+
[linkPath]="element3.linkPath"
|
|
1578
|
+
[active]="element3.active"
|
|
1579
|
+
[routerLinkActiveOptions]="element3.routerLinkActiveOptions || { exact: false }"
|
|
1580
|
+
/>
|
|
1581
|
+
}
|
|
1582
|
+
}
|
|
1583
|
+
</df-sidenav-item>
|
|
1584
|
+
} @else {
|
|
1585
|
+
<df-sidenav-link
|
|
1586
|
+
[label]="element2.label"
|
|
1587
|
+
[icon]="element2.icon || ''"
|
|
1588
|
+
[linkPath]="element2.linkPath"
|
|
1589
|
+
[active]="element2.active"
|
|
1590
|
+
[routerLinkActiveOptions]="element2.routerLinkActiveOptions || { exact: false }"
|
|
1591
|
+
/>
|
|
1592
|
+
}
|
|
1593
|
+
}
|
|
1594
|
+
</df-sidenav-item>
|
|
1595
|
+
} @else {
|
|
1596
|
+
<df-sidenav-link
|
|
1597
|
+
[label]="element1.label"
|
|
1598
|
+
[icon]="element1.icon || ''"
|
|
1599
|
+
[linkPath]="element1.linkPath"
|
|
1600
|
+
[active]="element1.active"
|
|
1601
|
+
[routerLinkActiveOptions]="element1.routerLinkActiveOptions || { exact: false }"
|
|
1602
|
+
/>
|
|
1603
|
+
}
|
|
1604
|
+
}
|
|
1605
|
+
</df-sidenav>
|
|
1606
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DfSidenavComponent, selector: "df-sidenav", inputs: ["searchable", "resizable", "collapsible", "enableMobile", "disableInitialDesktopAutoScroll"] }, { kind: "component", type: DfSidenavItemComponent, selector: "df-sidenav-item", inputs: ["label", "collapsed", "icon"], outputs: ["collapsedChange"] }, { kind: "component", type: DfSidenavLinkComponent, selector: "df-sidenav-link", inputs: ["linkPath", "label", "icon", "routerLinkActiveOptions", "active"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1607
|
+
}
|
|
1608
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavInput, decorators: [{
|
|
1609
|
+
type: Component,
|
|
1610
|
+
args: [{
|
|
1611
|
+
selector: 'df-sidenav-input',
|
|
1612
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1613
|
+
encapsulation: ViewEncapsulation.None,
|
|
1614
|
+
imports: [DfSidenavComponent, DfSidenavItemComponent, DfSidenavLinkComponent],
|
|
1615
|
+
template: `
|
|
1616
|
+
<df-sidenav
|
|
1617
|
+
[class]="className()"
|
|
1618
|
+
[searchable]="searchable()"
|
|
1619
|
+
[resizable]="resizable()"
|
|
1620
|
+
[collapsible]="collapsible()"
|
|
1621
|
+
[enableMobile]="enableMobile()"
|
|
1622
|
+
[disableInitialDesktopAutoScroll]="disableInitialDesktopAutoScroll()"
|
|
1623
|
+
>
|
|
1624
|
+
@for (element1 of items(); track element1.label) {
|
|
1625
|
+
@if (isSideItem(element1)) {
|
|
1626
|
+
<df-sidenav-item
|
|
1627
|
+
[label]="element1.label"
|
|
1628
|
+
[icon]="element1.icon || ''"
|
|
1629
|
+
[collapsed]="element1.collapsed ?? false"
|
|
1630
|
+
(collapsedChange)="element1.collapsed = $event"
|
|
1631
|
+
>
|
|
1632
|
+
@for (element2 of element1.children; track element2.label) {
|
|
1633
|
+
@if (isSideItem(element2)) {
|
|
1634
|
+
<df-sidenav-item
|
|
1635
|
+
[label]="element2.label"
|
|
1636
|
+
[icon]="element2.icon || ''"
|
|
1637
|
+
[collapsed]="element2.collapsed ?? false"
|
|
1638
|
+
(collapsedChange)="element2.collapsed = $event"
|
|
1639
|
+
>
|
|
1640
|
+
@for (element3 of element2.children; track element3.label) {
|
|
1641
|
+
@if (isSideItem(element3)) {
|
|
1642
|
+
<df-sidenav-item
|
|
1643
|
+
[label]="element3.label"
|
|
1644
|
+
[icon]="element3.icon || ''"
|
|
1645
|
+
[collapsed]="element3.collapsed ?? false"
|
|
1646
|
+
(collapsedChange)="element3.collapsed = $event"
|
|
1647
|
+
>
|
|
1648
|
+
@for (element4 of element3.children; track element4.label) {
|
|
1649
|
+
@if (!isSideItem(element4)) {
|
|
1650
|
+
<df-sidenav-link
|
|
1651
|
+
[label]="element4.label"
|
|
1652
|
+
[icon]="element4.icon || ''"
|
|
1653
|
+
[linkPath]="element4.linkPath"
|
|
1654
|
+
[active]="element4.active"
|
|
1655
|
+
[routerLinkActiveOptions]="element4.routerLinkActiveOptions || { exact: false }"
|
|
1656
|
+
/>
|
|
1657
|
+
}
|
|
1658
|
+
}
|
|
1659
|
+
</df-sidenav-item>
|
|
1660
|
+
} @else {
|
|
1661
|
+
<df-sidenav-link
|
|
1662
|
+
[label]="element3.label"
|
|
1663
|
+
[icon]="element3.icon || ''"
|
|
1664
|
+
[linkPath]="element3.linkPath"
|
|
1665
|
+
[active]="element3.active"
|
|
1666
|
+
[routerLinkActiveOptions]="element3.routerLinkActiveOptions || { exact: false }"
|
|
1667
|
+
/>
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
</df-sidenav-item>
|
|
1671
|
+
} @else {
|
|
1672
|
+
<df-sidenav-link
|
|
1673
|
+
[label]="element2.label"
|
|
1674
|
+
[icon]="element2.icon || ''"
|
|
1675
|
+
[linkPath]="element2.linkPath"
|
|
1676
|
+
[active]="element2.active"
|
|
1677
|
+
[routerLinkActiveOptions]="element2.routerLinkActiveOptions || { exact: false }"
|
|
1678
|
+
/>
|
|
1679
|
+
}
|
|
1680
|
+
}
|
|
1681
|
+
</df-sidenav-item>
|
|
1682
|
+
} @else {
|
|
1683
|
+
<df-sidenav-link
|
|
1684
|
+
[label]="element1.label"
|
|
1685
|
+
[icon]="element1.icon || ''"
|
|
1686
|
+
[linkPath]="element1.linkPath"
|
|
1687
|
+
[active]="element1.active"
|
|
1688
|
+
[routerLinkActiveOptions]="element1.routerLinkActiveOptions || { exact: false }"
|
|
1689
|
+
/>
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
</df-sidenav>
|
|
1693
|
+
`
|
|
1694
|
+
}]
|
|
1695
|
+
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], enableMobile: [{ type: i0.Input, args: [{ isSignal: true, alias: "enableMobile", required: false }] }], disableInitialDesktopAutoScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableInitialDesktopAutoScroll", required: false }] }], _sidenav: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavComponent), { isSignal: true }] }] } });
|
|
1696
|
+
|
|
1369
1697
|
/**
|
|
1370
1698
|
* Generated bundle index. Do not edit.
|
|
1371
1699
|
*/
|
|
1372
1700
|
|
|
1373
|
-
export { DfSidenavComponent, DfSidenavIconDirective, DfSidenavItemComponent, DfSidenavLinkComponent };
|
|
1701
|
+
export { DfSidenavComponent, DfSidenavIconDirective, DfSidenavInput, DfSidenavItemComponent, DfSidenavLinkComponent };
|
|
1374
1702
|
//# sourceMappingURL=design-factory-angular-sidenav.mjs.map
|