@design-factory/angular 21.1.0 → 22.0.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/docs/components/accordion/accessibility.md +45 -0
- package/.ai/docs/components/accordion/api.md +279 -0
- package/.ai/docs/components/accordion/developer.md +43 -0
- package/.ai/docs/components/accordion/guidelines.md +99 -0
- package/.ai/docs/components/accordion/overview.md +17 -0
- package/.ai/docs/components/alert/accessibility.md +24 -0
- package/.ai/docs/components/alert/api.md +65 -0
- package/.ai/docs/components/alert/developer.md +63 -0
- package/.ai/docs/components/alert/guidelines.md +62 -0
- package/.ai/docs/components/alert/overview.md +12 -0
- package/.ai/docs/components/button/accessibility.md +25 -0
- package/.ai/docs/components/button/api.md +71 -0
- package/.ai/docs/components/button/developer.md +52 -0
- package/.ai/docs/components/button/guidelines.md +75 -0
- package/.ai/docs/components/button/overview.md +15 -0
- package/.ai/docs/components/buttongroup/api.md +16 -0
- package/.ai/docs/components/buttongroup/developer.md +32 -0
- package/.ai/docs/components/drawer/accessibility.md +15 -0
- package/.ai/docs/components/drawer/api.md +56 -0
- package/.ai/docs/components/drawer/developer.md +36 -0
- package/.ai/docs/components/drawer/examples.md +9 -0
- package/.ai/docs/components/drawer/guidelines.md +58 -0
- package/.ai/docs/components/drawer/overview.md +19 -0
- package/.ai/docs/components/dropdown/accessibility.md +27 -0
- package/.ai/docs/components/dropdown/api.md +85 -0
- package/.ai/docs/components/dropdown/developer.md +59 -0
- package/.ai/docs/components/dropdown/guidelines.md +80 -0
- package/.ai/docs/components/dropdown/overview.md +16 -0
- package/.ai/docs/components/sidenav/accessibility.md +48 -0
- package/.ai/docs/components/sidenav/api.md +110 -0
- package/.ai/docs/components/sidenav/developer.md +14 -0
- package/.ai/docs/components/sidenav/guidelines.md +83 -0
- package/.ai/docs/components/sidenav/overview.md +16 -0
- package/.ai/docs/components/tooltip/accessibility.md +11 -0
- package/.ai/docs/components/tooltip/api.md +39 -0
- package/.ai/docs/components/tooltip/developer.md +16 -0
- package/.ai/docs/components/tooltip/guidelines.md +84 -0
- package/.ai/docs/components/tooltip/overview.md +23 -0
- package/.ai/docs/components/topnav/accessibility.md +51 -0
- package/.ai/docs/components/topnav/api.md +190 -0
- package/.ai/docs/components/topnav/developer.md +43 -0
- package/.ai/docs/components/topnav/guidelines.md +121 -0
- package/.ai/docs/components/topnav/overview.md +17 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
- package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
- package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
- package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
- package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
- package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
- package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
- package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
- package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
- package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
- package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
- package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
- package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
- package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
- package/.ai/docs/demos/alert/card/alert-card.html +15 -0
- package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
- package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
- package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
- package/.ai/docs/demos/button/basic/button-basic.html +4 -0
- package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
- package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
- package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
- package/.ai/docs/demos/button/icons/button-icons.html +17 -0
- package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
- package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
- package/.ai/docs/demos/button/variants/button-variants.html +49 -0
- package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
- package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
- package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
- package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
- package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
- package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
- package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
- package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
- package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
- package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
- package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
- package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
- package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
- package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
- package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
- package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
- package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
- package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
- package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
- package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
- package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
- package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
- package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
- package/.ai/index.md +26 -0
- package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
- package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
- package/fesm2022/design-factory-angular-alert.mjs +312 -0
- package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
- package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
- package/fesm2022/design-factory-angular-button.mjs +240 -0
- package/fesm2022/design-factory-angular-button.mjs.map +1 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
- package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
- package/fesm2022/design-factory-angular-drawer.mjs +64 -62
- package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
- package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
- package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
- package/fesm2022/design-factory-angular-form-field.mjs +287 -0
- package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
- package/fesm2022/design-factory-angular-icon.mjs +24 -0
- package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
- package/fesm2022/design-factory-angular-input.mjs +34 -0
- package/fesm2022/design-factory-angular-input.mjs.map +1 -0
- package/fesm2022/design-factory-angular-internals.mjs +119 -39
- package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
- package/fesm2022/design-factory-angular-separator.mjs +43 -0
- package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
- package/fesm2022/design-factory-angular-sidenav.mjs +652 -401
- package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
- package/fesm2022/design-factory-angular-slider.mjs +451 -0
- package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
- package/fesm2022/design-factory-angular-theme.mjs +29 -19
- package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
- package/fesm2022/design-factory-angular-toggle.mjs +172 -0
- package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
- package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
- package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
- package/fesm2022/design-factory-angular-topnav.mjs +589 -589
- package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
- package/package.json +61 -8
- package/schematics/collection.json +35 -0
- package/schematics/component-migration/accordion/constants.d.ts +10 -0
- package/schematics/component-migration/accordion/constants.js +46 -0
- package/schematics/component-migration/accordion/guide.md +257 -0
- package/schematics/component-migration/accordion/index.d.ts +2 -0
- package/schematics/component-migration/accordion/index.js +5 -0
- package/schematics/component-migration/accordion/migration.d.ts +2 -0
- package/schematics/component-migration/accordion/migration.js +13 -0
- package/schematics/component-migration/accordion/schema.json +25 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
- package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
- package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
- package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
- package/schematics/component-migration/accordion/steps/title-content.js +75 -0
- package/schematics/component-migration/ai/prompt.md +83 -0
- package/schematics/component-migration/alert/guide.md +246 -0
- package/schematics/component-migration/alert/index.d.ts +2 -0
- package/schematics/component-migration/alert/index.js +5 -0
- package/schematics/component-migration/alert/migration.d.ts +2 -0
- package/schematics/component-migration/alert/migration.js +50 -0
- package/schematics/component-migration/alert/schema.json +25 -0
- package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
- package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
- package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
- package/schematics/component-migration/alert/steps/animation-input.js +17 -0
- package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
- package/schematics/component-migration/alert/steps/close-output.js +17 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
- package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
- package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
- package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
- package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
- package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
- package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
- package/schematics/component-migration/alert/steps/selector.js +18 -0
- package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-classes.js +97 -0
- package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
- package/schematics/component-migration/alert/steps/static-type.js +28 -0
- package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-reference.js +15 -0
- package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
- package/schematics/component-migration/alert/steps/template-todos.js +78 -0
- package/schematics/component-migration/button/guide.md +278 -0
- package/schematics/component-migration/button/index.d.ts +2 -0
- package/schematics/component-migration/button/index.js +5 -0
- package/schematics/component-migration/button/migration.d.ts +2 -0
- package/schematics/component-migration/button/migration.js +180 -0
- package/schematics/component-migration/button/schema.json +25 -0
- package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
- package/schematics/component-migration/button/steps/static-classes.js +128 -0
- package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/button/steps/template-todos.js +120 -0
- package/schematics/component-migration/button/types.d.ts +7 -0
- package/schematics/component-migration/button/types.js +2 -0
- package/schematics/component-migration/dropdown/guide.md +252 -0
- package/schematics/component-migration/dropdown/index.d.ts +2 -0
- package/schematics/component-migration/dropdown/index.js +5 -0
- package/schematics/component-migration/dropdown/migration.d.ts +2 -0
- package/schematics/component-migration/dropdown/migration.js +41 -0
- package/schematics/component-migration/dropdown/schema.json +25 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
- package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
- package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
- package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
- package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
- package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
- package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
- package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
- package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
- package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
- package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
- package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
- package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
- package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
- package/schematics/component-migration/index.d.ts +3 -0
- package/schematics/component-migration/index.js +26 -0
- package/schematics/component-migration/next-steps/index.d.ts +13 -0
- package/schematics/component-migration/next-steps/index.js +34 -0
- package/schematics/component-migration/registry.d.ts +1 -0
- package/schematics/component-migration/registry.js +15 -0
- package/schematics/component-migration/schema.json +20 -0
- package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
- package/schematics/component-migration/shared/ai-handoff.js +28 -0
- package/schematics/component-migration/shared/angular-component.d.ts +10 -0
- package/schematics/component-migration/shared/angular-component.js +125 -0
- package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
- package/schematics/component-migration/shared/button-visual-classes.js +111 -0
- package/schematics/component-migration/shared/component-context.d.ts +7 -0
- package/schematics/component-migration/shared/component-context.js +24 -0
- package/schematics/component-migration/shared/component-imports.d.ts +45 -0
- package/schematics/component-migration/shared/component-imports.js +380 -0
- package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
- package/schematics/component-migration/shared/create-component-schematic.js +55 -0
- package/schematics/component-migration/shared/import-edits.d.ts +11 -0
- package/schematics/component-migration/shared/import-edits.js +157 -0
- package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
- package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
- package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
- package/schematics/component-migration/shared/migrate-project.js +151 -0
- package/schematics/component-migration/shared/project-templates.d.ts +15 -0
- package/schematics/component-migration/shared/project-templates.js +43 -0
- package/schematics/component-migration/shared/scan-project.d.ts +3 -0
- package/schematics/component-migration/shared/scan-project.js +24 -0
- package/schematics/component-migration/shared/static-placement.d.ts +1 -0
- package/schematics/component-migration/shared/static-placement.js +45 -0
- package/schematics/component-migration/shared/template-edits.d.ts +28 -0
- package/schematics/component-migration/shared/template-edits.js +153 -0
- package/schematics/component-migration/shared/template-result.d.ts +3 -0
- package/schematics/component-migration/shared/template-result.js +11 -0
- package/schematics/component-migration/shared/testing.d.ts +13 -0
- package/schematics/component-migration/shared/testing.js +59 -0
- package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
- package/schematics/component-migration/shared/todo-comments.js +81 -0
- package/schematics/component-migration/shared/types.d.ts +41 -0
- package/schematics/component-migration/shared/types.js +2 -0
- package/schematics/component-migration/tooltip/guide.md +196 -0
- package/schematics/component-migration/tooltip/index.d.ts +2 -0
- package/schematics/component-migration/tooltip/index.js +5 -0
- package/schematics/component-migration/tooltip/migration.d.ts +2 -0
- package/schematics/component-migration/tooltip/migration.js +50 -0
- package/schematics/component-migration/tooltip/schema.json +25 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
- package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
- package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
- package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
- package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
- package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
- package/schematics/component-migration/utils/component-resource-collector.js +107 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
- package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
- package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
- package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
- package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
- package/schematics/component-migration/utils/typescript/decorators.js +41 -0
- package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
- package/schematics/component-migration/utils/typescript/functions.js +20 -0
- package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
- package/schematics/component-migration/utils/typescript/imports.js +110 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
- package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
- package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
- package/schematics/component-migration/utils/typescript/property-name.js +22 -0
- package/schematics/package.json +3 -0
- package/types/design-factory-angular-accordion.d.ts +553 -0
- package/types/design-factory-angular-alert.d.ts +166 -0
- package/types/design-factory-angular-breakpoints.d.ts +13 -0
- package/types/design-factory-angular-button.d.ts +166 -0
- package/types/design-factory-angular-buttongroup.d.ts +45 -0
- package/types/design-factory-angular-drawer.d.ts +10 -16
- package/types/design-factory-angular-dropdown.d.ts +148 -0
- package/types/design-factory-angular-form-field.d.ts +122 -0
- package/types/design-factory-angular-icon.d.ts +11 -0
- package/types/design-factory-angular-input.d.ts +16 -0
- package/types/design-factory-angular-internals.d.ts +78 -19
- package/types/design-factory-angular-separator.d.ts +29 -0
- package/types/design-factory-angular-sidenav.d.ts +98 -14
- package/types/design-factory-angular-slider.d.ts +239 -0
- package/types/design-factory-angular-toggle.d.ts +93 -0
- package/types/design-factory-angular-tooltip.d.ts +113 -0
- package/types/design-factory-angular-topnav.d.ts +35 -47
- package/drawer/README.md +0 -54
|
@@ -1,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,41 +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 */ []));
|
|
433
411
|
/**
|
|
434
412
|
* Explicitly sets the active state of the link. When provided, the link behaves
|
|
435
413
|
* as an external link (plain `<a href>`) and the Angular Router is not used.
|
|
436
414
|
* When `undefined` (default), the active state is determined by the Angular Router.
|
|
437
415
|
*/
|
|
438
|
-
this.active = input(
|
|
416
|
+
this.active = input(/* @ts-ignore */
|
|
417
|
+
...(ngDevMode ? [undefined, { debugName: "active" }] : /* istanbul ignore next */ []));
|
|
439
418
|
/**
|
|
440
419
|
* Reflects the current active state of the link.
|
|
441
420
|
* Driven by the `active` input when provided, otherwise updated by the router via `(isActiveChange)`.
|
|
442
421
|
*/
|
|
443
|
-
this.isActiveLink = linkedSignal(() => this.active() ?? false,
|
|
422
|
+
this.isActiveLink = linkedSignal(() => this.active() ?? false, /* @ts-ignore */
|
|
423
|
+
...(ngDevMode ? [{ debugName: "isActiveLink" }] : /* istanbul ignore next */ []));
|
|
444
424
|
/**
|
|
445
425
|
* Options to determine when the router link is considered active
|
|
446
426
|
*/
|
|
447
|
-
this.routerLinkActiveOptions = input({ exact: false },
|
|
427
|
+
this.routerLinkActiveOptions = input({ exact: false }, /* @ts-ignore */
|
|
428
|
+
...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : /* istanbul ignore next */ []));
|
|
448
429
|
this.sidenav = inject(DfSidenavComponent);
|
|
449
430
|
this.parentItem = inject(DfSidenavItemComponent, {
|
|
450
431
|
optional: true,
|
|
451
432
|
skipSelf: true
|
|
452
433
|
});
|
|
453
434
|
this.isFirstLevel = this.parentItem === null;
|
|
454
|
-
this.iconContent = contentChild('dfSidenavIcon',
|
|
435
|
+
this.iconContent = contentChild('dfSidenavIcon', /* @ts-ignore */
|
|
436
|
+
...(ngDevMode ? [{ debugName: "iconContent" }] : /* istanbul ignore next */ []));
|
|
455
437
|
/**
|
|
456
438
|
* Computed signal indicating if the link is visible based on search term
|
|
457
439
|
*/
|
|
@@ -461,7 +443,8 @@ class DfSidenavLinkBaseComponent {
|
|
|
461
443
|
return true;
|
|
462
444
|
}
|
|
463
445
|
return this.label().toLowerCase().includes(search);
|
|
464
|
-
},
|
|
446
|
+
}, /* @ts-ignore */
|
|
447
|
+
...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
465
448
|
}
|
|
466
449
|
toggleSidenavOnSmallScreen() {
|
|
467
450
|
if (this.sidenav['isSmallScreen']()) {
|
|
@@ -469,10 +452,10 @@ class DfSidenavLinkBaseComponent {
|
|
|
469
452
|
}
|
|
470
453
|
return true;
|
|
471
454
|
}
|
|
472
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
473
|
-
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 }); }
|
|
474
457
|
}
|
|
475
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
458
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkBaseComponent, decorators: [{
|
|
476
459
|
type: Directive
|
|
477
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 }] }] } });
|
|
478
461
|
|
|
@@ -485,14 +468,12 @@ class DfSidenavLinkDesktopComponent extends DfSidenavLinkBaseComponent {
|
|
|
485
468
|
super(...arguments);
|
|
486
469
|
this.anchor = viewChild.required('anchor');
|
|
487
470
|
}
|
|
488
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
489
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: `
|
|
490
473
|
@if (active() !== undefined) {
|
|
491
474
|
<a
|
|
492
|
-
class="
|
|
493
|
-
[class.w-100]="!sidenav.isMinimized()"
|
|
475
|
+
class="df-sidenav-button"
|
|
494
476
|
[class.df-sidenav-active-level]="active()"
|
|
495
|
-
[class.justify-content-start]="!sidenav.isMinimized()"
|
|
496
477
|
[href]="linkPath()"
|
|
497
478
|
target="_blank"
|
|
498
479
|
[attr.aria-label]="label()"
|
|
@@ -504,13 +485,11 @@ class DfSidenavLinkDesktopComponent extends DfSidenavLinkBaseComponent {
|
|
|
504
485
|
</a>
|
|
505
486
|
} @else {
|
|
506
487
|
<a
|
|
507
|
-
class="
|
|
508
|
-
[class.w-100]="!sidenav.isMinimized()"
|
|
488
|
+
class="df-sidenav-button"
|
|
509
489
|
routerLinkActive="df-sidenav-active-level"
|
|
510
490
|
ariaCurrentWhenActive="page"
|
|
511
491
|
(isActiveChange)="isActiveLink.set($event)"
|
|
512
492
|
[routerLink]="linkPath()"
|
|
513
|
-
[class.justify-content-start]="!sidenav.isMinimized()"
|
|
514
493
|
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
515
494
|
[attr.aria-label]="label()"
|
|
516
495
|
(click)="toggleSidenavOnSmallScreen()"
|
|
@@ -522,26 +501,23 @@ class DfSidenavLinkDesktopComponent extends DfSidenavLinkBaseComponent {
|
|
|
522
501
|
<ng-template #content>
|
|
523
502
|
<ng-content select="[dfSidenavIcon]" />
|
|
524
503
|
@if (icon()) {
|
|
525
|
-
<
|
|
504
|
+
<df-icon class="{{ icon() }}" />
|
|
526
505
|
}
|
|
527
506
|
@if (!sidenav.isMinimized()) {
|
|
528
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
507
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
529
508
|
}
|
|
530
509
|
</ng-template>
|
|
531
|
-
`, 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" }] }); }
|
|
532
511
|
}
|
|
533
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
512
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkDesktopComponent, decorators: [{
|
|
534
513
|
type: Component,
|
|
535
514
|
args: [{
|
|
536
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
537
515
|
selector: 'df-sidenav-link-desktop',
|
|
538
516
|
template: `
|
|
539
517
|
@if (active() !== undefined) {
|
|
540
518
|
<a
|
|
541
|
-
class="
|
|
542
|
-
[class.w-100]="!sidenav.isMinimized()"
|
|
519
|
+
class="df-sidenav-button"
|
|
543
520
|
[class.df-sidenav-active-level]="active()"
|
|
544
|
-
[class.justify-content-start]="!sidenav.isMinimized()"
|
|
545
521
|
[href]="linkPath()"
|
|
546
522
|
target="_blank"
|
|
547
523
|
[attr.aria-label]="label()"
|
|
@@ -553,13 +529,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
553
529
|
</a>
|
|
554
530
|
} @else {
|
|
555
531
|
<a
|
|
556
|
-
class="
|
|
557
|
-
[class.w-100]="!sidenav.isMinimized()"
|
|
532
|
+
class="df-sidenav-button"
|
|
558
533
|
routerLinkActive="df-sidenav-active-level"
|
|
559
534
|
ariaCurrentWhenActive="page"
|
|
560
535
|
(isActiveChange)="isActiveLink.set($event)"
|
|
561
536
|
[routerLink]="linkPath()"
|
|
562
|
-
[class.justify-content-start]="!sidenav.isMinimized()"
|
|
563
537
|
[routerLinkActiveOptions]="routerLinkActiveOptions()"
|
|
564
538
|
[attr.aria-label]="label()"
|
|
565
539
|
(click)="toggleSidenavOnSmallScreen()"
|
|
@@ -571,18 +545,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
571
545
|
<ng-template #content>
|
|
572
546
|
<ng-content select="[dfSidenavIcon]" />
|
|
573
547
|
@if (icon()) {
|
|
574
|
-
<
|
|
548
|
+
<df-icon class="{{ icon() }}" />
|
|
575
549
|
}
|
|
576
550
|
@if (!sidenav.isMinimized()) {
|
|
577
|
-
<span class="sidenav-label" [title]="label()">{{ label() }}</span>
|
|
551
|
+
<span class="df-sidenav-label" [title]="label()">{{ label() }}</span>
|
|
578
552
|
}
|
|
579
553
|
</ng-template>
|
|
580
554
|
`,
|
|
581
555
|
host: {
|
|
582
|
-
'[class.
|
|
583
|
-
class: 'd-flex'
|
|
556
|
+
'[class.df-hidden]': '!isVisible() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))'
|
|
584
557
|
},
|
|
585
|
-
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet]
|
|
558
|
+
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet, DfIcon]
|
|
586
559
|
}]
|
|
587
560
|
}], propDecorators: { anchor: [{ type: i0.ViewChild, args: ['anchor', { isSignal: true }] }] } });
|
|
588
561
|
|
|
@@ -595,8 +568,10 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
595
568
|
super(...arguments);
|
|
596
569
|
// Inject link wrapper to get parent wrapper reference
|
|
597
570
|
this.linkWrapper = inject(DfSidenavLinkComponent);
|
|
598
|
-
this.currentMobilePanel = computed(() => this.sidenav['currentMobilePanel']() ?? null,
|
|
599
|
-
|
|
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 */ []));
|
|
600
575
|
this.isVisibleInList = computed(() => {
|
|
601
576
|
const currentPanel = this.currentMobilePanel();
|
|
602
577
|
const parentWrapper = this.linkWrapper['parentWrapper'];
|
|
@@ -613,7 +588,8 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
613
588
|
// Show links whose parent item wrapper matches the current panel
|
|
614
589
|
return parentWrapper === currentPanel && this.isVisible();
|
|
615
590
|
}
|
|
616
|
-
},
|
|
591
|
+
}, /* @ts-ignore */
|
|
592
|
+
...(ngDevMode ? [{ debugName: "isVisibleInList" }] : /* istanbul ignore next */ []));
|
|
617
593
|
// Build breadcrumb path for mobile search view
|
|
618
594
|
this.breadcrumbPath = computed(() => {
|
|
619
595
|
const path = [];
|
|
@@ -625,13 +601,14 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
625
601
|
currentItem = grandParent || null;
|
|
626
602
|
}
|
|
627
603
|
return path;
|
|
628
|
-
},
|
|
604
|
+
}, /* @ts-ignore */
|
|
605
|
+
...(ngDevMode ? [{ debugName: "breadcrumbPath" }] : /* istanbul ignore next */ []));
|
|
629
606
|
}
|
|
630
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
631
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
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: `
|
|
632
609
|
@if (active() !== undefined) {
|
|
633
610
|
<a
|
|
634
|
-
class="
|
|
611
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
635
612
|
[class.df-sidenav-active-level]="active()"
|
|
636
613
|
[href]="linkPath()"
|
|
637
614
|
target="_blank"
|
|
@@ -642,7 +619,7 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
642
619
|
</a>
|
|
643
620
|
} @else {
|
|
644
621
|
<a
|
|
645
|
-
class="
|
|
622
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
646
623
|
routerLinkActive="df-sidenav-active-level"
|
|
647
624
|
ariaCurrentWhenActive="page"
|
|
648
625
|
(isActiveChange)="isActiveLink.set($event)"
|
|
@@ -654,37 +631,36 @@ class DfSidenavLinkMobileComponent extends DfSidenavLinkBaseComponent {
|
|
|
654
631
|
</a>
|
|
655
632
|
}
|
|
656
633
|
<ng-template #content>
|
|
657
|
-
<
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
<div class="
|
|
663
|
-
<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>
|
|
664
641
|
@if (isSearching() && breadcrumbPath().length > 0) {
|
|
665
|
-
<small class="
|
|
642
|
+
<small class="df-sidenav-breadcrumb">
|
|
666
643
|
@for (item of breadcrumbPath(); track $index) {
|
|
667
644
|
<span>{{ item }}</span>
|
|
668
645
|
@if (!$last) {
|
|
669
|
-
<
|
|
646
|
+
<df-icon class="fa-arrow-right" />
|
|
670
647
|
}
|
|
671
648
|
}
|
|
672
649
|
</small>
|
|
673
650
|
}
|
|
674
651
|
</div>
|
|
675
|
-
|
|
652
|
+
}
|
|
676
653
|
</ng-template>
|
|
677
|
-
`, 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" }] }); }
|
|
678
655
|
}
|
|
679
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
656
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkMobileComponent, decorators: [{
|
|
680
657
|
type: Component,
|
|
681
658
|
args: [{
|
|
682
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
683
659
|
selector: 'df-sidenav-link-mobile',
|
|
684
660
|
template: `
|
|
685
661
|
@if (active() !== undefined) {
|
|
686
662
|
<a
|
|
687
|
-
class="
|
|
663
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
688
664
|
[class.df-sidenav-active-level]="active()"
|
|
689
665
|
[href]="linkPath()"
|
|
690
666
|
target="_blank"
|
|
@@ -695,7 +671,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
695
671
|
</a>
|
|
696
672
|
} @else {
|
|
697
673
|
<a
|
|
698
|
-
class="
|
|
674
|
+
class="df-sidenav-button df-sidenav-breadcrumb-button"
|
|
699
675
|
routerLinkActive="df-sidenav-active-level"
|
|
700
676
|
ariaCurrentWhenActive="page"
|
|
701
677
|
(isActiveChange)="isActiveLink.set($event)"
|
|
@@ -707,32 +683,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
707
683
|
</a>
|
|
708
684
|
}
|
|
709
685
|
<ng-template #content>
|
|
710
|
-
<
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
<div class="
|
|
716
|
-
<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>
|
|
717
693
|
@if (isSearching() && breadcrumbPath().length > 0) {
|
|
718
|
-
<small class="
|
|
694
|
+
<small class="df-sidenav-breadcrumb">
|
|
719
695
|
@for (item of breadcrumbPath(); track $index) {
|
|
720
696
|
<span>{{ item }}</span>
|
|
721
697
|
@if (!$last) {
|
|
722
|
-
<
|
|
698
|
+
<df-icon class="fa-arrow-right" />
|
|
723
699
|
}
|
|
724
700
|
}
|
|
725
701
|
</small>
|
|
726
702
|
}
|
|
727
703
|
</div>
|
|
728
|
-
|
|
704
|
+
}
|
|
729
705
|
</ng-template>
|
|
730
706
|
`,
|
|
731
707
|
host: {
|
|
732
|
-
'[class.
|
|
733
|
-
|
|
708
|
+
'[class.df-hidden]': '!isVisibleInList() || (sidenav.isMinimized() && (!isFirstLevel || !wrapperHasIconContent()))',
|
|
709
|
+
style: 'display: flex;'
|
|
734
710
|
},
|
|
735
|
-
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet]
|
|
711
|
+
imports: [RouterLink, RouterLinkActive, NgTemplateOutlet, DfIcon]
|
|
736
712
|
}]
|
|
737
713
|
}] });
|
|
738
714
|
|
|
@@ -743,10 +719,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
743
719
|
* @since 21.0.0
|
|
744
720
|
*/
|
|
745
721
|
class DfSidenavIconDirective {
|
|
746
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
747
|
-
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 }); }
|
|
748
724
|
}
|
|
749
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
725
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavIconDirective, decorators: [{
|
|
750
726
|
type: Directive,
|
|
751
727
|
args: [{
|
|
752
728
|
selector: '[dfSidenavIcon]'
|
|
@@ -762,25 +738,30 @@ class DfSidenavLinkComponent {
|
|
|
762
738
|
/**
|
|
763
739
|
* The router link path for to the link
|
|
764
740
|
*/
|
|
765
|
-
this.linkPath = input.required(
|
|
741
|
+
this.linkPath = input.required(/* @ts-ignore */
|
|
742
|
+
...(ngDevMode ? [{ debugName: "linkPath" }] : /* istanbul ignore next */ []));
|
|
766
743
|
/**
|
|
767
744
|
* The label of the link
|
|
768
745
|
*/
|
|
769
|
-
this.label = input.required(
|
|
746
|
+
this.label = input.required(/* @ts-ignore */
|
|
747
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
770
748
|
/**
|
|
771
749
|
* The icon class name or inline content (e.g., font awesome class)
|
|
772
750
|
*/
|
|
773
|
-
this.icon = input('',
|
|
751
|
+
this.icon = input('', /* @ts-ignore */
|
|
752
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
774
753
|
/**
|
|
775
754
|
* Options to determine when the router link is considered active
|
|
776
755
|
*/
|
|
777
|
-
this.routerLinkActiveOptions = input({ exact: false },
|
|
756
|
+
this.routerLinkActiveOptions = input({ exact: false }, /* @ts-ignore */
|
|
757
|
+
...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : /* istanbul ignore next */ []));
|
|
778
758
|
/**
|
|
779
759
|
* Explicitly sets the active state of the link. When provided, the link renders as
|
|
780
760
|
* a plain `<a href>` (no Angular Router). When `undefined` (default), the Angular Router determines
|
|
781
761
|
* the active state.
|
|
782
762
|
*/
|
|
783
|
-
this.active = input(
|
|
763
|
+
this.active = input(/* @ts-ignore */
|
|
764
|
+
...(ngDevMode ? [undefined, { debugName: "active" }] : /* istanbul ignore next */ []));
|
|
784
765
|
/**
|
|
785
766
|
* The parent wrapper item component (if any)
|
|
786
767
|
*/
|
|
@@ -791,17 +772,21 @@ class DfSidenavLinkComponent {
|
|
|
791
772
|
/**
|
|
792
773
|
* Reference to the desktop link component instance
|
|
793
774
|
*/
|
|
794
|
-
this.desktopInstance = viewChild(DfSidenavLinkDesktopComponent,
|
|
775
|
+
this.desktopInstance = viewChild(DfSidenavLinkDesktopComponent, /* @ts-ignore */
|
|
776
|
+
...(ngDevMode ? [{ debugName: "desktopInstance" }] : /* istanbul ignore next */ []));
|
|
795
777
|
/**
|
|
796
778
|
* Reference to the mobile link component instance
|
|
797
779
|
*/
|
|
798
|
-
this.mobileInstance = viewChild(DfSidenavLinkMobileComponent,
|
|
799
|
-
|
|
800
|
-
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 */ []));
|
|
801
786
|
this.sidenav = inject(DfSidenavComponent);
|
|
802
787
|
}
|
|
803
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
804
|
-
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: `
|
|
805
790
|
<ng-template #iconSlot>
|
|
806
791
|
<ng-content select="[dfSidenavIcon]" />
|
|
807
792
|
</ng-template>
|
|
@@ -834,13 +819,12 @@ class DfSidenavLinkComponent {
|
|
|
834
819
|
<ng-container [ngTemplateOutlet]="defaultContent" />
|
|
835
820
|
</df-sidenav-link-desktop>
|
|
836
821
|
}
|
|
837
|
-
`, 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"] }] }); }
|
|
838
823
|
}
|
|
839
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
824
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavLinkComponent, decorators: [{
|
|
840
825
|
type: Component,
|
|
841
826
|
args: [{
|
|
842
827
|
selector: 'df-sidenav-link',
|
|
843
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
844
828
|
template: `
|
|
845
829
|
<ng-template #iconSlot>
|
|
846
830
|
<ng-content select="[dfSidenavIcon]" />
|
|
@@ -878,8 +862,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
878
862
|
imports: [DfSidenavLinkDesktopComponent, DfSidenavLinkMobileComponent, NgTemplateOutlet],
|
|
879
863
|
host: {
|
|
880
864
|
role: 'listitem',
|
|
881
|
-
|
|
882
|
-
'[class.mobile]': "sidenav['isMobileDevice']()"
|
|
865
|
+
style: 'display: block;',
|
|
866
|
+
'[class.df-sidenav-mobile]': "sidenav['isMobileDevice']()"
|
|
883
867
|
}
|
|
884
868
|
}]
|
|
885
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 }] }] } });
|
|
@@ -893,16 +877,19 @@ class DfSidenavItemComponent {
|
|
|
893
877
|
/**
|
|
894
878
|
* Label of the sidenav item
|
|
895
879
|
*/
|
|
896
|
-
this.label = input.required(
|
|
880
|
+
this.label = input.required(/* @ts-ignore */
|
|
881
|
+
...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
897
882
|
/**
|
|
898
883
|
* Flag whether the sidenav item is collapsed
|
|
899
|
-
* @
|
|
884
|
+
* @defaultValue `false`
|
|
900
885
|
*/
|
|
901
|
-
this.collapsed = model(false,
|
|
886
|
+
this.collapsed = model(false, /* @ts-ignore */
|
|
887
|
+
...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
|
|
902
888
|
/**
|
|
903
889
|
* Optional icon class for the sidenav item
|
|
904
890
|
*/
|
|
905
|
-
this.icon = input('',
|
|
891
|
+
this.icon = input('', /* @ts-ignore */
|
|
892
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
906
893
|
/**
|
|
907
894
|
* Reference to the parent element containing this item
|
|
908
895
|
*/
|
|
@@ -913,25 +900,29 @@ class DfSidenavItemComponent {
|
|
|
913
900
|
/**
|
|
914
901
|
* Child sidenav items nested inside this item
|
|
915
902
|
*/
|
|
916
|
-
this.childrenItems = contentChildren(DfSidenavItemComponent, { ...(ngDevMode ? { debugName: "childrenItems" } : {}), descendants: true });
|
|
903
|
+
this.childrenItems = contentChildren(DfSidenavItemComponent, { ...(ngDevMode ? { debugName: "childrenItems" } : /* istanbul ignore next */ {}), descendants: true });
|
|
917
904
|
/**
|
|
918
905
|
* Child sidenav links nested inside this item
|
|
919
906
|
*/
|
|
920
|
-
this.childrenLinks = contentChildren(DfSidenavLinkComponent, { ...(ngDevMode ? { debugName: "childrenLinks" } : {}), descendants: true });
|
|
907
|
+
this.childrenLinks = contentChildren(DfSidenavLinkComponent, { ...(ngDevMode ? { debugName: "childrenLinks" } : /* istanbul ignore next */ {}), descendants: true });
|
|
921
908
|
/**
|
|
922
909
|
* Reference to the desktop instance of the sidenav item
|
|
923
910
|
*/
|
|
924
|
-
this.desktopInstance = viewChild(DfSidenavItemDesktopComponent,
|
|
911
|
+
this.desktopInstance = viewChild(DfSidenavItemDesktopComponent, /* @ts-ignore */
|
|
912
|
+
...(ngDevMode ? [{ debugName: "desktopInstance" }] : /* istanbul ignore next */ []));
|
|
925
913
|
/**
|
|
926
914
|
* Reference to the mobile instance of the sidenav item
|
|
927
915
|
*/
|
|
928
|
-
this.mobileInstance = viewChild(DfSidenavItemMobileComponent,
|
|
929
|
-
|
|
930
|
-
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 */ []));
|
|
931
922
|
this.sidenav = inject(DfSidenavComponent);
|
|
932
923
|
}
|
|
933
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
934
|
-
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: `
|
|
935
926
|
<ng-template #iconSlot>
|
|
936
927
|
<ng-content select="[dfSidenavIcon]" />
|
|
937
928
|
</ng-template>
|
|
@@ -960,13 +951,12 @@ class DfSidenavItemComponent {
|
|
|
960
951
|
<ng-container [ngTemplateOutlet]="content" />
|
|
961
952
|
</df-sidenav-item-desktop>
|
|
962
953
|
}
|
|
963
|
-
`, 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"] }] }); }
|
|
964
955
|
}
|
|
965
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
956
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavItemComponent, decorators: [{
|
|
966
957
|
type: Component,
|
|
967
958
|
args: [{
|
|
968
959
|
selector: 'df-sidenav-item',
|
|
969
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
970
960
|
template: `
|
|
971
961
|
<ng-template #iconSlot>
|
|
972
962
|
<ng-content select="[dfSidenavIcon]" />
|
|
@@ -1000,8 +990,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1000
990
|
imports: [DfSidenavItemDesktopComponent, DfSidenavItemMobileComponent, NgTemplateOutlet],
|
|
1001
991
|
host: {
|
|
1002
992
|
role: 'listitem',
|
|
1003
|
-
|
|
1004
|
-
'[class.mobile]': "sidenav['isMobileDevice']()"
|
|
993
|
+
style: 'display: block;',
|
|
994
|
+
'[class.df-sidenav-mobile]': "sidenav['isMobileDevice']()"
|
|
1005
995
|
}
|
|
1006
996
|
}]
|
|
1007
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 }] }] } });
|
|
@@ -1023,30 +1013,30 @@ class DfSidenavComponent {
|
|
|
1023
1013
|
constructor() {
|
|
1024
1014
|
/**
|
|
1025
1015
|
* Flag whether the sidenav includes a search input
|
|
1026
|
-
* @
|
|
1016
|
+
* @defaultValue `true`
|
|
1027
1017
|
*/
|
|
1028
|
-
this.searchable = input(true, { ...(ngDevMode ? { debugName: "searchable" } : {}), transform: booleanAttribute });
|
|
1018
|
+
this.searchable = input(true, { ...(ngDevMode ? { debugName: "searchable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1029
1019
|
/**
|
|
1030
1020
|
* Flag whether the sidenav should be resizable
|
|
1031
|
-
* @
|
|
1021
|
+
* @defaultValue `true`
|
|
1032
1022
|
*/
|
|
1033
|
-
this.resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : {}), transform: booleanAttribute });
|
|
1023
|
+
this.resizable = input(true, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1034
1024
|
/**
|
|
1035
1025
|
* Flag whether the sidenav should have the collapse button
|
|
1036
|
-
* @
|
|
1026
|
+
* @defaultValue `true`
|
|
1037
1027
|
*/
|
|
1038
|
-
this.collapsible = input(true, { ...(ngDevMode ? { debugName: "collapsible" } : {}), transform: booleanAttribute });
|
|
1028
|
+
this.collapsible = input(true, { ...(ngDevMode ? { debugName: "collapsible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1039
1029
|
/**
|
|
1040
1030
|
* Flag to enable the mobile sidenav display of the items.
|
|
1041
|
-
* @
|
|
1031
|
+
* @defaultValue `true`
|
|
1042
1032
|
*/
|
|
1043
|
-
this.enableMobile = input(true, { ...(ngDevMode ? { debugName: "enableMobile" } : {}), transform: booleanAttribute });
|
|
1033
|
+
this.enableMobile = input(true, { ...(ngDevMode ? { debugName: "enableMobile" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1044
1034
|
/**
|
|
1045
|
-
* @since 21.1.0
|
|
1046
|
-
*
|
|
1047
1035
|
* Flag to disable the automatic scroll to active link on desktop when the sidenav is initialized.
|
|
1036
|
+
*
|
|
1037
|
+
* @since 21.1.0
|
|
1048
1038
|
*/
|
|
1049
|
-
this.disableInitialDesktopAutoScroll = input(false, { ...(ngDevMode ? { debugName: "disableInitialDesktopAutoScroll" } : {}), transform: booleanAttribute });
|
|
1039
|
+
this.disableInitialDesktopAutoScroll = input(false, { ...(ngDevMode ? { debugName: "disableInitialDesktopAutoScroll" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1050
1040
|
this._isMinimized = linkedSignal(() => {
|
|
1051
1041
|
// in mobile devices, the default value is true (hiding the drawer) and does not track changes to the screen size
|
|
1052
1042
|
if (this.isMobileDevice()) {
|
|
@@ -1054,12 +1044,14 @@ class DfSidenavComponent {
|
|
|
1054
1044
|
}
|
|
1055
1045
|
// in desktop, we track the large screen signal in order to reset the minimized state
|
|
1056
1046
|
// it allows resizing the window and have a more user-friendly behavior
|
|
1057
|
-
return !this.isLargeUpScreen();
|
|
1058
|
-
},
|
|
1047
|
+
return !this.isLargeUpScreen() && this.collapsible();
|
|
1048
|
+
}, /* @ts-ignore */
|
|
1049
|
+
...(ngDevMode ? [{ debugName: "_isMinimized" }] : /* istanbul ignore next */ []));
|
|
1059
1050
|
/**
|
|
1060
1051
|
* Flag to indicate if the sidenav is minimized
|
|
1061
1052
|
*/
|
|
1062
|
-
this.isMinimized = computed(() => this._isMinimized(),
|
|
1053
|
+
this.isMinimized = computed(() => this._isMinimized(), /* @ts-ignore */
|
|
1054
|
+
...(ngDevMode ? [{ debugName: "isMinimized" }] : /* istanbul ignore next */ []));
|
|
1063
1055
|
this.hostRef = inject((ElementRef));
|
|
1064
1056
|
this.scrollableContainer = viewChild.required('scrollableContainer');
|
|
1065
1057
|
this.isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
|
|
@@ -1081,28 +1073,38 @@ class DfSidenavComponent {
|
|
|
1081
1073
|
}
|
|
1082
1074
|
return false;
|
|
1083
1075
|
}
|
|
1084
|
-
},
|
|
1085
|
-
|
|
1076
|
+
}, /* @ts-ignore */
|
|
1077
|
+
...(ngDevMode ? [{ debugName: "isMobileDevice" }] : /* istanbul ignore next */ []));
|
|
1078
|
+
this.searchInput = viewChild('textInput', /* @ts-ignore */
|
|
1079
|
+
...(ngDevMode ? [{ debugName: "searchInput" }] : /* istanbul ignore next */ []));
|
|
1086
1080
|
// Query all links to find active ones
|
|
1087
|
-
this.allLinks = contentChildren(DfSidenavLinkComponent, { ...(ngDevMode ? { debugName: "allLinks" } : {}), descendants: true });
|
|
1088
|
-
this.allItems = contentChildren(DfSidenavItemComponent, { ...(ngDevMode ? { debugName: "allItems" } : {}), descendants: true });
|
|
1089
|
-
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 */ []));
|
|
1090
1085
|
this.savedWidth = null;
|
|
1091
|
-
this.searchTerm = signal('',
|
|
1086
|
+
this.searchTerm = signal('', /* @ts-ignore */
|
|
1087
|
+
...(ngDevMode ? [{ debugName: "searchTerm" }] : /* istanbul ignore next */ []));
|
|
1088
|
+
this.searchTermFormField = form(this.searchTerm);
|
|
1092
1089
|
// Mobile navigation stack - tracks which item's children are currently displayed
|
|
1093
1090
|
// Using component references instead of labels for uniqueness
|
|
1094
|
-
this.mobileNavigationStack = signal([],
|
|
1091
|
+
this.mobileNavigationStack = signal([], /* @ts-ignore */
|
|
1092
|
+
...(ngDevMode ? [{ debugName: "mobileNavigationStack" }] : /* istanbul ignore next */ []));
|
|
1095
1093
|
this.currentMobilePanel = computed(() => {
|
|
1096
1094
|
const stack = this.mobileNavigationStack();
|
|
1097
1095
|
return stack.length > 0 ? stack[stack.length - 1] : null;
|
|
1098
|
-
},
|
|
1099
|
-
|
|
1100
|
-
this.
|
|
1101
|
-
this.
|
|
1102
|
-
this.
|
|
1103
|
-
|
|
1104
|
-
this.
|
|
1105
|
-
|
|
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 */ []));
|
|
1106
1108
|
this.navManager = createNavManager();
|
|
1107
1109
|
this.navManagerConfig = {
|
|
1108
1110
|
selector: (node) => node.querySelectorAll('input, button, a'),
|
|
@@ -1112,12 +1114,19 @@ class DfSidenavComponent {
|
|
|
1112
1114
|
}
|
|
1113
1115
|
};
|
|
1114
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 */ []));
|
|
1115
1123
|
this.contentHasIcons = computed(() => this.allItems().some((item) => item['wrapperHasIconContent']()) ||
|
|
1116
|
-
this.allLinks().some((link) => link['wrapperHasIconContent']()),
|
|
1124
|
+
this.allLinks().some((link) => link['wrapperHasIconContent']()), /* @ts-ignore */
|
|
1125
|
+
...(ngDevMode ? [{ debugName: "contentHasIcons" }] : /* istanbul ignore next */ []));
|
|
1117
1126
|
useDirectiveForHost(this.navManager.directive, this.navManagerConfig);
|
|
1118
1127
|
afterRenderEffect(() => {
|
|
1119
1128
|
if (this.isBrowser) {
|
|
1120
|
-
if (this.isMobileDevice() && !this._isMinimized()) {
|
|
1129
|
+
if (this.isMobileDevice() && !this._isMinimized() && !this.skipActiveItemNavigation()) {
|
|
1121
1130
|
// Delay to ensure DOM and contentChildren queries are ready
|
|
1122
1131
|
this.navigateToActiveItem();
|
|
1123
1132
|
}
|
|
@@ -1168,7 +1177,7 @@ class DfSidenavComponent {
|
|
|
1168
1177
|
}, { injector: this.injector });
|
|
1169
1178
|
});
|
|
1170
1179
|
}
|
|
1171
|
-
}, { ...(ngDevMode ? { debugName: "effectRef" } : {}), injector: this.injector });
|
|
1180
|
+
}, { ...(ngDevMode ? { debugName: "effectRef" } : /* istanbul ignore next */ {}), injector: this.injector });
|
|
1172
1181
|
}
|
|
1173
1182
|
/**
|
|
1174
1183
|
* Toggles the minimized state of the sidenav
|
|
@@ -1180,6 +1189,8 @@ class DfSidenavComponent {
|
|
|
1180
1189
|
if (minimized) {
|
|
1181
1190
|
this.savedWidth = this.width();
|
|
1182
1191
|
this.width.set(0);
|
|
1192
|
+
// reset mobile navigation stack to show root level icons (if any)
|
|
1193
|
+
this.mobileNavigationStack.set([]);
|
|
1183
1194
|
}
|
|
1184
1195
|
else {
|
|
1185
1196
|
this.width.set(this.savedWidth);
|
|
@@ -1193,6 +1204,8 @@ class DfSidenavComponent {
|
|
|
1193
1204
|
*/
|
|
1194
1205
|
visibleChangeHandler(isVisible) {
|
|
1195
1206
|
if (!isVisible) {
|
|
1207
|
+
// reset mobile navigation stack to show root level icons (if any)
|
|
1208
|
+
this.mobileNavigationStack.set([]);
|
|
1196
1209
|
this.width.set(0);
|
|
1197
1210
|
}
|
|
1198
1211
|
this._isMinimized.set(!isVisible);
|
|
@@ -1215,6 +1228,12 @@ class DfSidenavComponent {
|
|
|
1215
1228
|
}
|
|
1216
1229
|
}
|
|
1217
1230
|
}
|
|
1231
|
+
onMinimizedChange(isMinimized) {
|
|
1232
|
+
if (isMinimized) {
|
|
1233
|
+
this.mobileNavigationStack.set([]);
|
|
1234
|
+
}
|
|
1235
|
+
this._isMinimized.set(isMinimized);
|
|
1236
|
+
}
|
|
1218
1237
|
// utility to transfer focus from the button when minimized to the search input when uncollapsed
|
|
1219
1238
|
focusSearch() {
|
|
1220
1239
|
this.toggleMinimize(false);
|
|
@@ -1227,6 +1246,10 @@ class DfSidenavComponent {
|
|
|
1227
1246
|
* @param itemRef item to be added to the navigation stack
|
|
1228
1247
|
*/
|
|
1229
1248
|
navigateToChildren(itemRef) {
|
|
1249
|
+
if (this.isMinimized()) {
|
|
1250
|
+
this.toggleMinimize(false);
|
|
1251
|
+
this.skipActiveItemNavigation.set(true);
|
|
1252
|
+
}
|
|
1230
1253
|
const stack = this.mobileNavigationStack();
|
|
1231
1254
|
this.mobileNavigationStack.set([...stack, itemRef]);
|
|
1232
1255
|
}
|
|
@@ -1265,15 +1288,15 @@ class DfSidenavComponent {
|
|
|
1265
1288
|
this.mobileNavigationStack.set([]);
|
|
1266
1289
|
}
|
|
1267
1290
|
}
|
|
1268
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1269
|
-
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: `
|
|
1270
1293
|
<df-drawer
|
|
1271
1294
|
#drawer
|
|
1272
1295
|
position="inline-start"
|
|
1273
1296
|
[className]="isSmallScreen() ? 'df-sidenav-mobile-drawer' : ''"
|
|
1274
1297
|
[visible]="!_isMinimized()"
|
|
1275
1298
|
(visibleChange)="visibleChangeHandler($event)"
|
|
1276
|
-
(minimizedChange)="
|
|
1299
|
+
(minimizedChange)="onMinimizedChange($event)"
|
|
1277
1300
|
(resizingChange)="resizingChangeHandler($event)"
|
|
1278
1301
|
[bodyScroll]="true"
|
|
1279
1302
|
[backdrop]="backdrop()"
|
|
@@ -1282,84 +1305,82 @@ class DfSidenavComponent {
|
|
|
1282
1305
|
[container]="isSmallScreen() ? null : hostRef.nativeElement"
|
|
1283
1306
|
[resizable]="resizable() && !isSmallScreen()"
|
|
1284
1307
|
[focusOnInit]="false"
|
|
1285
|
-
[configuration]="isLargeUpScreen() ? 'inline' : 'overlay'"
|
|
1308
|
+
[configuration]="isLargeUpScreen() || (isMediumScreen() && !collapsible()) ? 'inline' : 'overlay'"
|
|
1286
1309
|
>
|
|
1287
|
-
<
|
|
1288
|
-
|
|
1289
|
-
<div class="df-sidenav-header
|
|
1290
|
-
@if (
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
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"
|
|
1297
1334
|
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1298
1335
|
aria-label="Search"
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
i18n
|
|
1309
|
-
|
|
1310
|
-
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1311
|
-
aria-label="Search"
|
|
1312
|
-
[(ngModel)]="searchTerm"
|
|
1313
|
-
#textInput
|
|
1314
|
-
/>
|
|
1315
|
-
<div class="input-group-append">
|
|
1316
|
-
<button
|
|
1317
|
-
class="input-group-text fa-light fa-times"
|
|
1318
|
-
[class.df-sidenav-search-empty]="searchTerm() === ''"
|
|
1319
|
-
(click)="searchTerm.set(''); textInput.focus()"
|
|
1320
|
-
>
|
|
1321
|
-
<span class="visually-hidden" i18n="@@df.sidenav.search.clearText">Clear text</span>
|
|
1322
|
-
</button>
|
|
1323
|
-
</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>
|
|
1324
1347
|
</div>
|
|
1325
|
-
|
|
1348
|
+
</div>
|
|
1326
1349
|
}
|
|
1327
1350
|
</div>
|
|
1351
|
+
}
|
|
1328
1352
|
|
|
1329
|
-
|
|
1330
|
-
|
|
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>
|
|
1331
1368
|
</div>
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
<button
|
|
1335
|
-
class="btn btn-outline-primary df-btn-icononly df-sidenav-toggle-minimized"
|
|
1336
|
-
(click)="toggleMinimize()"
|
|
1337
|
-
i18n-aria-label="@@df.sidenav.toggleMinimize.ariaLabel"
|
|
1338
|
-
aria-label="Toggle minimized sidenav"
|
|
1339
|
-
>
|
|
1340
|
-
@if (isMinimized()) {
|
|
1341
|
-
<span class="fa-arrow-right-to-line"></span>
|
|
1342
|
-
} @else {
|
|
1343
|
-
<span class="fa-arrow-left-to-line"></span>
|
|
1344
|
-
}
|
|
1345
|
-
</button>
|
|
1346
|
-
</div>
|
|
1347
|
-
}
|
|
1348
|
-
</nav>
|
|
1349
|
-
</div>
|
|
1369
|
+
}
|
|
1370
|
+
</nav>
|
|
1350
1371
|
</df-drawer>
|
|
1351
|
-
`, 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 }); }
|
|
1352
1373
|
}
|
|
1353
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1374
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfSidenavComponent, decorators: [{
|
|
1354
1375
|
type: Component,
|
|
1355
|
-
args: [{
|
|
1376
|
+
args: [{ selector: 'df-sidenav', template: `
|
|
1356
1377
|
<df-drawer
|
|
1357
1378
|
#drawer
|
|
1358
1379
|
position="inline-start"
|
|
1359
1380
|
[className]="isSmallScreen() ? 'df-sidenav-mobile-drawer' : ''"
|
|
1360
1381
|
[visible]="!_isMinimized()"
|
|
1361
1382
|
(visibleChange)="visibleChangeHandler($event)"
|
|
1362
|
-
(minimizedChange)="
|
|
1383
|
+
(minimizedChange)="onMinimizedChange($event)"
|
|
1363
1384
|
(resizingChange)="resizingChangeHandler($event)"
|
|
1364
1385
|
[bodyScroll]="true"
|
|
1365
1386
|
[backdrop]="backdrop()"
|
|
@@ -1368,84 +1389,314 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
1368
1389
|
[container]="isSmallScreen() ? null : hostRef.nativeElement"
|
|
1369
1390
|
[resizable]="resizable() && !isSmallScreen()"
|
|
1370
1391
|
[focusOnInit]="false"
|
|
1371
|
-
[configuration]="isLargeUpScreen() ? 'inline' : 'overlay'"
|
|
1392
|
+
[configuration]="isLargeUpScreen() || (isMediumScreen() && !collapsible()) ? 'inline' : 'overlay'"
|
|
1372
1393
|
>
|
|
1373
|
-
<
|
|
1374
|
-
|
|
1375
|
-
<div class="df-sidenav-header
|
|
1376
|
-
@if (
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
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"
|
|
1383
1418
|
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1384
1419
|
aria-label="Search"
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
i18n
|
|
1395
|
-
|
|
1396
|
-
i18n-aria-label="@@df.sidenav.search.ariaLabel"
|
|
1397
|
-
aria-label="Search"
|
|
1398
|
-
[(ngModel)]="searchTerm"
|
|
1399
|
-
#textInput
|
|
1400
|
-
/>
|
|
1401
|
-
<div class="input-group-append">
|
|
1402
|
-
<button
|
|
1403
|
-
class="input-group-text fa-light fa-times"
|
|
1404
|
-
[class.df-sidenav-search-empty]="searchTerm() === ''"
|
|
1405
|
-
(click)="searchTerm.set(''); textInput.focus()"
|
|
1406
|
-
>
|
|
1407
|
-
<span class="visually-hidden" i18n="@@df.sidenav.search.clearText">Clear text</span>
|
|
1408
|
-
</button>
|
|
1409
|
-
</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>
|
|
1410
1431
|
</div>
|
|
1411
|
-
|
|
1432
|
+
</div>
|
|
1412
1433
|
}
|
|
1413
1434
|
</div>
|
|
1435
|
+
}
|
|
1414
1436
|
|
|
1415
|
-
|
|
1416
|
-
|
|
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>
|
|
1417
1452
|
</div>
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
<button
|
|
1421
|
-
class="btn btn-outline-primary df-btn-icononly df-sidenav-toggle-minimized"
|
|
1422
|
-
(click)="toggleMinimize()"
|
|
1423
|
-
i18n-aria-label="@@df.sidenav.toggleMinimize.ariaLabel"
|
|
1424
|
-
aria-label="Toggle minimized sidenav"
|
|
1425
|
-
>
|
|
1426
|
-
@if (isMinimized()) {
|
|
1427
|
-
<span class="fa-arrow-right-to-line"></span>
|
|
1428
|
-
} @else {
|
|
1429
|
-
<span class="fa-arrow-left-to-line"></span>
|
|
1430
|
-
}
|
|
1431
|
-
</button>
|
|
1432
|
-
</div>
|
|
1433
|
-
}
|
|
1434
|
-
</nav>
|
|
1435
|
-
</div>
|
|
1453
|
+
}
|
|
1454
|
+
</nav>
|
|
1436
1455
|
</df-drawer>
|
|
1437
|
-
`, imports: [
|
|
1456
|
+
`, imports: [FormField, DfDrawer, DfIcon, DfIconButton], encapsulation: ViewEncapsulation.None, host: {
|
|
1438
1457
|
class: 'df-sidenav',
|
|
1439
1458
|
'[class.df-sidenav-lg]': 'isLargeUpScreen()',
|
|
1440
1459
|
'[class.df-sidenav-withicon]': 'contentHasIcons()',
|
|
1441
|
-
'[class.
|
|
1442
|
-
'[class.df-sidenav-drawer]': 'isMediumScreen() && !_isMinimized()'
|
|
1443
|
-
|
|
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"] }]
|
|
1444
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 }] }] } });
|
|
1445
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
|
+
|
|
1446
1697
|
/**
|
|
1447
1698
|
* Generated bundle index. Do not edit.
|
|
1448
1699
|
*/
|
|
1449
1700
|
|
|
1450
|
-
export { DfSidenavComponent, DfSidenavIconDirective, DfSidenavItemComponent, DfSidenavLinkComponent };
|
|
1701
|
+
export { DfSidenavComponent, DfSidenavIconDirective, DfSidenavInput, DfSidenavItemComponent, DfSidenavLinkComponent };
|
|
1451
1702
|
//# sourceMappingURL=design-factory-angular-sidenav.mjs.map
|