cmat 0.0.28 → 0.0.30
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/animations/index.d.ts +5 -5
- package/components/adapter/index.d.ts +187 -5
- package/components/breadcrumb/index.d.ts +243 -3
- package/components/card/index.d.ts +20 -5
- package/components/carousel/index.d.ts +175 -5
- package/components/cascade/index.d.ts +101 -5
- package/components/chip-input/index.d.ts +65 -5
- package/components/custom-formly/index.d.ts +669 -5
- package/components/date-range/index.d.ts +139 -5
- package/components/drawer/index.d.ts +101 -5
- package/components/fullscreen/index.d.ts +13 -5
- package/components/highlight/index.d.ts +28 -5
- package/components/image-viewer/index.d.ts +78 -5
- package/components/json-editor/index.d.ts +27 -5
- package/components/knob-input/index.d.ts +98 -5
- package/components/masonry/index.d.ts +16 -5
- package/components/material-color-picker/index.d.ts +46 -5
- package/components/material-datetimepicker/index.d.ts +752 -3
- package/components/navigation/index.d.ts +314 -5
- package/components/opt-input/index.d.ts +87 -5
- package/components/org-chart/index.d.ts +38 -5
- package/components/pagination/index.d.ts +119 -5
- package/components/password-strength/index.d.ts +92 -5
- package/components/popover/index.d.ts +289 -3
- package/components/progress-bar/index.d.ts +19 -5
- package/components/rating/index.d.ts +61 -5
- package/components/select-search/index.d.ts +108 -5
- package/components/select-table/index.d.ts +120 -5
- package/components/select-tree/index.d.ts +120 -5
- package/components/speed-dial/index.d.ts +66 -5
- package/components/timeline/index.d.ts +56 -5
- package/components/toast/index.d.ts +84 -5
- package/components/transfer-picker/index.d.ts +188 -3
- package/components/treetable/index.d.ts +43 -5
- package/components/upload/index.d.ts +111 -5
- package/components/x6-angular-shape/index.d.ts +43 -5
- package/directives/animate-on-scroll/index.d.ts +30 -5
- package/directives/arrow-cursor/index.d.ts +32 -5
- package/directives/autofocus/index.d.ts +11 -5
- package/directives/data-exporter/index.d.ts +41 -5
- package/directives/debounce/index.d.ts +32 -5
- package/directives/digit-only/index.d.ts +54 -5
- package/directives/equal-validator/index.d.ts +14 -5
- package/fesm2022/cmat-components-adapter.mjs +22 -39
- package/fesm2022/cmat-components-adapter.mjs.map +1 -1
- package/fesm2022/cmat-components-breadcrumb.mjs +19 -21
- package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/cmat-components-card.mjs +3 -3
- package/fesm2022/cmat-components-carousel.mjs +116 -133
- package/fesm2022/cmat-components-carousel.mjs.map +1 -1
- package/fesm2022/cmat-components-cascade.mjs +61 -73
- package/fesm2022/cmat-components-cascade.mjs.map +1 -1
- package/fesm2022/cmat-components-chip-input.mjs +14 -18
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-custom-formly.mjs +176 -178
- package/fesm2022/cmat-components-custom-formly.mjs.map +1 -1
- package/fesm2022/cmat-components-date-range.mjs +18 -18
- package/fesm2022/cmat-components-date-range.mjs.map +1 -1
- package/fesm2022/cmat-components-drawer.mjs +17 -19
- package/fesm2022/cmat-components-drawer.mjs.map +1 -1
- package/fesm2022/cmat-components-fullscreen.mjs +8 -11
- package/fesm2022/cmat-components-fullscreen.mjs.map +1 -1
- package/fesm2022/cmat-components-highlight.mjs +14 -14
- package/fesm2022/cmat-components-highlight.mjs.map +1 -1
- package/fesm2022/cmat-components-image-viewer.mjs +10 -13
- package/fesm2022/cmat-components-image-viewer.mjs.map +1 -1
- package/fesm2022/cmat-components-json-editor.mjs +7 -7
- package/fesm2022/cmat-components-json-editor.mjs.map +1 -1
- package/fesm2022/cmat-components-knob-input.mjs +13 -20
- package/fesm2022/cmat-components-knob-input.mjs.map +1 -1
- package/fesm2022/cmat-components-masonry.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs +8 -7
- package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-material-datetimepicker.mjs +168 -220
- package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
- package/fesm2022/cmat-components-navigation.mjs +115 -119
- package/fesm2022/cmat-components-navigation.mjs.map +1 -1
- package/fesm2022/cmat-components-opt-input.mjs +15 -22
- package/fesm2022/cmat-components-opt-input.mjs.map +1 -1
- package/fesm2022/cmat-components-org-chart.mjs +9 -9
- package/fesm2022/cmat-components-org-chart.mjs.map +1 -1
- package/fesm2022/cmat-components-pagination.mjs +34 -40
- package/fesm2022/cmat-components-pagination.mjs.map +1 -1
- package/fesm2022/cmat-components-password-strength.mjs +15 -15
- package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +27 -32
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-progress-bar.mjs +10 -10
- package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
- package/fesm2022/cmat-components-rating.mjs +10 -14
- package/fesm2022/cmat-components-rating.mjs.map +1 -1
- package/fesm2022/cmat-components-select-search.mjs +30 -53
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +28 -33
- package/fesm2022/cmat-components-select-table.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +55 -61
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-speed-dial.mjs +16 -19
- package/fesm2022/cmat-components-speed-dial.mjs.map +1 -1
- package/fesm2022/cmat-components-timeline.mjs +18 -20
- package/fesm2022/cmat-components-timeline.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +16 -16
- package/fesm2022/cmat-components-toast.mjs.map +1 -1
- package/fesm2022/cmat-components-transfer-picker.mjs +49 -49
- package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
- package/fesm2022/cmat-components-treetable.mjs +11 -12
- package/fesm2022/cmat-components-treetable.mjs.map +1 -1
- package/fesm2022/cmat-components-upload.mjs +33 -34
- package/fesm2022/cmat-components-upload.mjs.map +1 -1
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +13 -14
- package/fesm2022/cmat-directives-animate-on-scroll.mjs.map +1 -1
- package/fesm2022/cmat-directives-arrow-cursor.mjs +11 -15
- package/fesm2022/cmat-directives-arrow-cursor.mjs.map +1 -1
- package/fesm2022/cmat-directives-autofocus.mjs +8 -9
- package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
- package/fesm2022/cmat-directives-data-exporter.mjs +29 -31
- package/fesm2022/cmat-directives-data-exporter.mjs.map +1 -1
- package/fesm2022/cmat-directives-debounce.mjs +11 -13
- package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
- package/fesm2022/cmat-directives-digit-only.mjs +17 -17
- package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
- package/fesm2022/cmat-directives-equal-validator.mjs +9 -16
- package/fesm2022/cmat-directives-equal-validator.mjs.map +1 -1
- package/fesm2022/cmat-lib-mock-api.mjs +11 -14
- package/fesm2022/cmat-lib-mock-api.mjs.map +1 -1
- package/fesm2022/cmat-pipes-bytes.mjs +4 -5
- package/fesm2022/cmat-pipes-bytes.mjs.map +1 -1
- package/fesm2022/cmat-pipes-date-format.mjs +4 -5
- package/fesm2022/cmat-pipes-date-format.mjs.map +1 -1
- package/fesm2022/cmat-pipes-find-by-key.mjs +4 -5
- package/fesm2022/cmat-pipes-find-by-key.mjs.map +1 -1
- package/fesm2022/cmat-pipes-group-by.mjs +4 -5
- package/fesm2022/cmat-pipes-group-by.mjs.map +1 -1
- package/fesm2022/cmat-pipes-keys.mjs +4 -5
- package/fesm2022/cmat-pipes-keys.mjs.map +1 -1
- package/fesm2022/cmat-pipes-secure.mjs +13 -14
- package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
- package/fesm2022/cmat-pipes-uppercase.mjs +4 -5
- package/fesm2022/cmat-pipes-uppercase.mjs.map +1 -1
- package/fesm2022/cmat-services-alert.mjs +7 -16
- package/fesm2022/cmat-services-alert.mjs.map +1 -1
- package/fesm2022/cmat-services-config.mjs +10 -12
- package/fesm2022/cmat-services-config.mjs.map +1 -1
- package/fesm2022/cmat-services-confirmation.mjs +17 -20
- package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
- package/fesm2022/cmat-services-data.mjs +10 -11
- package/fesm2022/cmat-services-data.mjs.map +1 -1
- package/fesm2022/cmat-services-export-as.mjs +3 -3
- package/fesm2022/cmat-services-loading.mjs +14 -14
- package/fesm2022/cmat-services-loading.mjs.map +1 -1
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +10 -10
- package/fesm2022/cmat-services-media-watcher.mjs.map +1 -1
- package/fesm2022/cmat-services-platform.mjs +8 -8
- package/fesm2022/cmat-services-platform.mjs.map +1 -1
- package/fesm2022/cmat-services-splash-screen.mjs +9 -14
- package/fesm2022/cmat-services-splash-screen.mjs.map +1 -1
- package/fesm2022/cmat-services-title.mjs +10 -11
- package/fesm2022/cmat-services-title.mjs.map +1 -1
- package/fesm2022/cmat-services-translation.mjs +8 -8
- package/fesm2022/cmat-services-translation.mjs.map +1 -1
- package/fesm2022/cmat-services-utils.mjs +5 -5
- package/fesm2022/cmat-services-utils.mjs.map +1 -1
- package/index.d.ts +2 -5
- package/lib/mock-api/index.d.ts +60 -5
- package/package.json +71 -71
- package/pipes/bytes/index.d.ts +10 -5
- package/pipes/date-format/index.d.ts +10 -5
- package/pipes/find-by-key/index.d.ts +10 -5
- package/pipes/group-by/index.d.ts +10 -5
- package/pipes/keys/index.d.ts +10 -5
- package/pipes/secure/index.d.ts +19 -5
- package/pipes/uppercase/index.d.ts +10 -5
- package/services/alert/index.d.ts +69 -5
- package/services/config/index.d.ts +30 -5
- package/services/confirmation/index.d.ts +42 -5
- package/services/data/index.d.ts +21 -5
- package/services/export-as/index.d.ts +55 -5
- package/services/loading/index.d.ts +35 -5
- package/services/local-storage/index.d.ts +11 -5
- package/services/media-watcher/index.d.ts +22 -5
- package/services/platform/index.d.ts +11 -5
- package/services/splash-screen/index.d.ts +16 -5
- package/services/title/index.d.ts +14 -5
- package/services/translation/index.d.ts +22 -5
- package/services/utils/index.d.ts +63 -5
- package/styles/themes.scss +2 -1
- package/validators/index.d.ts +8 -5
- package/version/index.d.ts +11 -5
- package/animations/defaults.d.ts +0 -11
- package/animations/dropdown.d.ts +0 -2
- package/animations/expand-collapse.d.ts +0 -2
- package/animations/fade.d.ts +0 -11
- package/animations/public-api.d.ts +0 -1
- package/animations/shake.d.ts +0 -2
- package/animations/slide.d.ts +0 -9
- package/animations/transform.d.ts +0 -2
- package/animations/zoom.d.ts +0 -3
- package/components/adapter/datetime-adapter.d.ts +0 -45
- package/components/adapter/datetime-formats.d.ts +0 -22
- package/components/adapter/dayjs-date-adapter.d.ts +0 -63
- package/components/adapter/dayjs-date-formats.d.ts +0 -2
- package/components/adapter/dayjs-datetime-adapter.d.ts +0 -22
- package/components/adapter/dayjs-datetime-formats.d.ts +0 -2
- package/components/adapter/native-datetime-adapter.d.ts +0 -31
- package/components/adapter/native-datetime-formats.d.ts +0 -2
- package/components/adapter/public-api.d.ts +0 -8
- package/components/breadcrumb/breadcrumb-item.directive.d.ts +0 -10
- package/components/breadcrumb/breadcrumb.component.d.ts +0 -55
- package/components/breadcrumb/breadcrumb.service.d.ts +0 -126
- package/components/breadcrumb/public-api.d.ts +0 -5
- package/components/breadcrumb/types/breadcrumb.config.d.ts +0 -33
- package/components/breadcrumb/types/breadcrumb.d.ts +0 -23
- package/components/card/card.component.d.ts +0 -15
- package/components/card/card.types.d.ts +0 -1
- package/components/card/public-api.d.ts +0 -2
- package/components/carousel/carousel.component.d.ts +0 -136
- package/components/carousel/carousel.interface.d.ts +0 -38
- package/components/carousel/public-api.d.ts +0 -2
- package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.d.ts +0 -13
- package/components/cascade/cascade-list/cascade-list.component.d.ts +0 -79
- package/components/cascade/cascade-menu/cascade-menu.component.d.ts +0 -8
- package/components/cascade/options.interface.d.ts +0 -8
- package/components/cascade/public-api.d.ts +0 -3
- package/components/chip-input/chip-input.component.d.ts +0 -62
- package/components/chip-input/public-api.d.ts +0 -1
- package/components/custom-formly/extension/addons.extension.d.ts +0 -2
- package/components/custom-formly/public-api.d.ts +0 -30
- package/components/custom-formly/types/button/button.component.d.ts +0 -34
- package/components/custom-formly/types/cascade/cascade.component.d.ts +0 -39
- package/components/custom-formly/types/checklist/checklist.component.d.ts +0 -42
- package/components/custom-formly/types/chips/chips.component.d.ts +0 -28
- package/components/custom-formly/types/color-picker/color-picker.component.d.ts +0 -7
- package/components/custom-formly/types/date-range/date-range.component.d.ts +0 -21
- package/components/custom-formly/types/datepicker/datepicker.component.d.ts +0 -42
- package/components/custom-formly/types/knob/knob.component.d.ts +0 -36
- package/components/custom-formly/types/multicheckbox/multicheckbox.component.d.ts +0 -44
- package/components/custom-formly/types/number/number.component.d.ts +0 -21
- package/components/custom-formly/types/quill/quill.component.d.ts +0 -43
- package/components/custom-formly/types/radio/radio.component.d.ts +0 -44
- package/components/custom-formly/types/rating/rating.component.d.ts +0 -25
- package/components/custom-formly/types/repeat/repeat.component.d.ts +0 -16
- package/components/custom-formly/types/select/select.component.d.ts +0 -54
- package/components/custom-formly/types/select-table/select-table.component.d.ts +0 -40
- package/components/custom-formly/types/select-tree/select-tree.component.d.ts +0 -43
- package/components/custom-formly/types/stepper/horizontal/stepper.component.d.ts +0 -8
- package/components/custom-formly/types/stepper/stepper.type.d.ts +0 -6
- package/components/custom-formly/types/stepper/vertical/stepper.component.d.ts +0 -8
- package/components/custom-formly/types/table/table.component.d.ts +0 -43
- package/components/custom-formly/types/tabs/tab.component.d.ts +0 -7
- package/components/custom-formly/types/tags/tags.component.d.ts +0 -41
- package/components/custom-formly/types/textarea/textarea.component.d.ts +0 -13
- package/components/custom-formly/types/upload/upload.component.d.ts +0 -32
- package/components/custom-formly/wrappers/addons/addons.component.d.ts +0 -10
- package/components/custom-formly/wrappers/card/card.component.d.ts +0 -6
- package/components/custom-formly/wrappers/expansion/expansion.component.d.ts +0 -6
- package/components/custom-formly/wrappers/form-field/form-field.component.d.ts +0 -25
- package/components/custom-formly/wrappers/panel/panel.component.d.ts +0 -6
- package/components/date-range/date-range.component.d.ts +0 -137
- package/components/date-range/public-api.d.ts +0 -1
- package/components/drawer/drawer.component.d.ts +0 -75
- package/components/drawer/drawer.service.d.ts +0 -26
- package/components/drawer/drawer.types.d.ts +0 -2
- package/components/drawer/public-api.d.ts +0 -3
- package/components/fullscreen/fullscreen.component.d.ts +0 -11
- package/components/fullscreen/public-api.d.ts +0 -1
- package/components/highlight/highlight.component.d.ts +0 -21
- package/components/highlight/highlight.service.d.ts +0 -7
- package/components/highlight/public-api.d.ts +0 -2
- package/components/image-viewer/image-viewer.component.d.ts +0 -76
- package/components/image-viewer/public-api.d.ts +0 -1
- package/components/json-editor/json-editor.component.d.ts +0 -25
- package/components/json-editor/public-api.d.ts +0 -1
- package/components/knob-input/knob-input.component.d.ts +0 -95
- package/components/knob-input/public-api.d.ts +0 -1
- package/components/masonry/masonry.component.d.ts +0 -13
- package/components/masonry/public-api.d.ts +0 -1
- package/components/material-color-picker/base-color.d.ts +0 -2
- package/components/material-color-picker/material-color-picker.component.d.ts +0 -38
- package/components/material-color-picker/public-api.d.ts +0 -2
- package/components/material-color-picker/selected-color.d.ts +0 -5
- package/components/material-datetimepicker/calendar-body.d.ts +0 -42
- package/components/material-datetimepicker/calendar.d.ts +0 -145
- package/components/material-datetimepicker/clock.d.ts +0 -73
- package/components/material-datetimepicker/datetimepicker-animations.d.ts +0 -4
- package/components/material-datetimepicker/datetimepicker-errors.d.ts +0 -1
- package/components/material-datetimepicker/datetimepicker-filtertype.d.ts +0 -5
- package/components/material-datetimepicker/datetimepicker-input.d.ts +0 -106
- package/components/material-datetimepicker/datetimepicker-intl.d.ts +0 -51
- package/components/material-datetimepicker/datetimepicker-toggle.d.ts +0 -40
- package/components/material-datetimepicker/datetimepicker-types.d.ts +0 -13
- package/components/material-datetimepicker/datetimepicker.d.ts +0 -190
- package/components/material-datetimepicker/month-view.d.ts +0 -62
- package/components/material-datetimepicker/multi-year-view.d.ts +0 -74
- package/components/material-datetimepicker/public-api.d.ts +0 -10
- package/components/material-datetimepicker/time.d.ts +0 -129
- package/components/material-datetimepicker/year-view.d.ts +0 -56
- package/components/navigation/horizontal/components/basic/basic.component.d.ts +0 -27
- package/components/navigation/horizontal/components/branch/branch.component.d.ts +0 -39
- package/components/navigation/horizontal/components/divider/divider.component.d.ts +0 -23
- package/components/navigation/horizontal/components/spacer/spacer.component.d.ts +0 -23
- package/components/navigation/horizontal/horizontal.component.d.ts +0 -43
- package/components/navigation/navigation.service.d.ts +0 -71
- package/components/navigation/navigation.types.d.ts +0 -34
- package/components/navigation/public-api.d.ts +0 -4
- package/components/navigation/vertical/components/aside/aside.component.d.ts +0 -63
- package/components/navigation/vertical/components/basic/basic.component.d.ts +0 -24
- package/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +0 -74
- package/components/navigation/vertical/components/divider/divider.component.d.ts +0 -26
- package/components/navigation/vertical/components/group/group.component.d.ts +0 -36
- package/components/navigation/vertical/components/spacer/spacer.component.d.ts +0 -26
- package/components/navigation/vertical/vertical.component.d.ts +0 -176
- package/components/opt-input/models/config.d.ts +0 -14
- package/components/opt-input/otp-input.component.d.ts +0 -70
- package/components/opt-input/public-api.d.ts +0 -1
- package/components/opt-input/utils/keyboard-util.d.ts +0 -9
- package/components/opt-input/utils/object-util.d.ts +0 -3
- package/components/org-chart/designer/chart-designer.component.d.ts +0 -17
- package/components/org-chart/node/chart-node.component.d.ts +0 -17
- package/components/org-chart/node/node.type.d.ts +0 -22
- package/components/org-chart/org-chart.component.d.ts +0 -12
- package/components/org-chart/public-api.d.ts +0 -2
- package/components/pagination/pagination.component.d.ts +0 -23
- package/components/pagination/pagination.directive.d.ts +0 -40
- package/components/pagination/pagination.instance.d.ts +0 -11
- package/components/pagination/pagination.pipe.d.ts +0 -29
- package/components/pagination/pagination.service.d.ts +0 -20
- package/components/pagination/public-api.d.ts +0 -5
- package/components/password-strength/animations/index.d.ts +0 -4
- package/components/password-strength/enum.d.ts +0 -13
- package/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.d.ts +0 -11
- package/components/password-strength/mat-password-strength/mat-password-strength.component.d.ts +0 -52
- package/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.d.ts +0 -16
- package/components/password-strength/mat-password-strength-validator.d.ts +0 -6
- package/components/password-strength/public-api.d.ts +0 -3
- package/components/password-strength/regexp.class.d.ts +0 -6
- package/components/popover/popover-trigger.d.ts +0 -121
- package/components/popover/popover.component.d.ts +0 -136
- package/components/popover/popover.errors.d.ts +0 -14
- package/components/popover/popover.interfaces.d.ts +0 -43
- package/components/popover/popover.target.d.ts +0 -8
- package/components/popover/popover.type.d.ts +0 -5
- package/components/popover/public-api.d.ts +0 -4
- package/components/progress-bar/progress-bar.component.d.ts +0 -18
- package/components/progress-bar/public-api.d.ts +0 -1
- package/components/rating/public-api.d.ts +0 -1
- package/components/rating/rating.component.d.ts +0 -58
- package/components/select-search/default-options.d.ts +0 -8
- package/components/select-search/public-api.d.ts +0 -2
- package/components/select-search/select-no-entries-found.directive.d.ts +0 -5
- package/components/select-search/select-search-clear.directive.d.ts +0 -5
- package/components/select-search/select-search.component.d.ts +0 -91
- package/components/select-table/public-api.d.ts +0 -2
- package/components/select-table/select-table.component.d.ts +0 -96
- package/components/select-table/select-table.type.d.ts +0 -20
- package/components/select-tree/public-api.d.ts +0 -3
- package/components/select-tree/select-tree.component.d.ts +0 -105
- package/components/select-tree/select-tree.flatnode.d.ts +0 -6
- package/components/select-tree/select-tree.node.d.ts +0 -5
- package/components/speed-dial/public-api.d.ts +0 -2
- package/components/speed-dial/speed-dial.component.d.ts +0 -63
- package/components/timeline/public-api.d.ts +0 -2
- package/components/timeline/timeline-item/timeline-item.component.d.ts +0 -25
- package/components/timeline/timeline.component.d.ts +0 -30
- package/components/toast/models/global-config.model.d.ts +0 -12
- package/components/toast/models/toast.model.d.ts +0 -6
- package/components/toast/models/type.model.d.ts +0 -12
- package/components/toast/public-api.d.ts +0 -6
- package/components/toast/toast-modal.component.d.ts +0 -18
- package/components/toast/toast.component.d.ts +0 -17
- package/components/toast/toast.service.d.ts +0 -26
- package/components/transfer-picker/filter/filter.component.d.ts +0 -23
- package/components/transfer-picker/interface.d.ts +0 -41
- package/components/transfer-picker/public-api.d.ts +0 -7
- package/components/transfer-picker/search/search.component.d.ts +0 -14
- package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +0 -51
- package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.d.ts +0 -11
- package/components/transfer-picker/transfer-picker.component.d.ts +0 -28
- package/components/transfer-picker/transfer-picker.service.d.ts +0 -32
- package/components/treetable/public-api.d.ts +0 -2
- package/components/treetable/treetable.component.d.ts +0 -32
- package/components/treetable/treetable.interface.d.ts +0 -9
- package/components/upload/files.type.d.ts +0 -22
- package/components/upload/files.util.service.d.ts +0 -20
- package/components/upload/public-api.d.ts +0 -4
- package/components/upload/upload-queue/upload-queue.component.d.ts +0 -40
- package/components/upload/upload.component.d.ts +0 -32
- package/components/x6-angular-shape/node.d.ts +0 -11
- package/components/x6-angular-shape/public-api.d.ts +0 -3
- package/components/x6-angular-shape/registry.d.ts +0 -13
- package/components/x6-angular-shape/view.d.ts +0 -16
- package/directives/animate-on-scroll/animate-on-scroll.directive.d.ts +0 -29
- package/directives/animate-on-scroll/public-api.d.ts +0 -1
- package/directives/animate-on-scroll/scroll.service.d.ts +0 -15
- package/directives/arrow-cursor/arrow-cursor.directive.d.ts +0 -31
- package/directives/arrow-cursor/public-api.d.ts +0 -1
- package/directives/autofocus/autofocus.directive.d.ts +0 -8
- package/directives/autofocus/public-api.d.ts +0 -1
- package/directives/data-exporter/constants.d.ts +0 -26
- package/directives/data-exporter/data-exporter.directive.d.ts +0 -18
- package/directives/data-exporter/mime.d.ts +0 -5
- package/directives/data-exporter/options.d.ts +0 -21
- package/directives/data-exporter/public-api.d.ts +0 -2
- package/directives/data-exporter/services/exporters/csv-exporter.service.d.ts +0 -12
- package/directives/data-exporter/services/exporters/exporter.d.ts +0 -4
- package/directives/data-exporter/services/exporters/file-exporter.d.ts +0 -8
- package/directives/data-exporter/services/exporters/json-exporter.service.d.ts +0 -11
- package/directives/data-exporter/services/exporters/txt-exporter.service.d.ts +0 -12
- package/directives/data-exporter/services/exporters/worksheet-exporter.d.ts +0 -10
- package/directives/data-exporter/services/exporters/xls-exporter.service.d.ts +0 -14
- package/directives/data-exporter/services/exporters/xlsx-exporter.service.d.ts +0 -9
- package/directives/data-exporter/services/file-util.d.ts +0 -8
- package/directives/data-exporter/services/service-locator.service.d.ts +0 -11
- package/directives/debounce/abstract-debounce.directive.d.ts +0 -15
- package/directives/debounce/debounce-click.directive.d.ts +0 -8
- package/directives/debounce/debounce-keyup.directive.d.ts +0 -8
- package/directives/debounce/public-api.d.ts +0 -2
- package/directives/digit-only/digit-only.directive.d.ts +0 -36
- package/directives/digit-only/mask.directive.d.ts +0 -16
- package/directives/digit-only/public-api.d.ts +0 -2
- package/directives/equal-validator/equal-validator.directive.d.ts +0 -12
- package/directives/equal-validator/public-api.d.ts +0 -1
- package/lib/mock-api/mock-api.constants.d.ts +0 -2
- package/lib/mock-api/mock-api.interceptor.d.ts +0 -12
- package/lib/mock-api/mock-api.request-handler.d.ts +0 -16
- package/lib/mock-api/mock-api.service.d.ts +0 -20
- package/lib/mock-api/mock-api.types.d.ts +0 -7
- package/lib/mock-api/mock-api.utils.d.ts +0 -3
- package/lib/mock-api/public-api.d.ts +0 -5
- package/pipes/bytes/bytes.pipe.d.ts +0 -7
- package/pipes/bytes/public-api.d.ts +0 -1
- package/pipes/date-format/date-format.pipe.d.ts +0 -7
- package/pipes/date-format/public-api.d.ts +0 -1
- package/pipes/find-by-key/find-by-key.pipe.d.ts +0 -7
- package/pipes/find-by-key/public-api.d.ts +0 -1
- package/pipes/group-by/group-by.pipe.d.ts +0 -7
- package/pipes/group-by/public-api.d.ts +0 -1
- package/pipes/keys/keys.pipe.d.ts +0 -7
- package/pipes/keys/public-api.d.ts +0 -1
- package/pipes/secure/public-api.d.ts +0 -1
- package/pipes/secure/secure-pipe.d.ts +0 -18
- package/pipes/uppercase/public-api.d.ts +0 -1
- package/pipes/uppercase/uppercase.pipe.d.ts +0 -7
- package/public-api.d.ts +0 -1
- package/services/alert/alert.dialog.d.ts +0 -11
- package/services/alert/alert.message.d.ts +0 -8
- package/services/alert/alert.service.d.ts +0 -37
- package/services/alert/enum.d.ts +0 -12
- package/services/alert/public-api.d.ts +0 -4
- package/services/config/config.constants.d.ts +0 -6
- package/services/config/config.service.d.ts +0 -11
- package/services/config/public-api.d.ts +0 -3
- package/services/config/urlStateConfig.service.d.ts +0 -10
- package/services/confirmation/confirmation.service.d.ts +0 -12
- package/services/confirmation/confirmation.types.d.ts +0 -21
- package/services/confirmation/dialog/dialog.component.d.ts +0 -10
- package/services/confirmation/public-api.d.ts +0 -2
- package/services/data/data.service.d.ts +0 -20
- package/services/data/public-api.d.ts +0 -1
- package/services/export-as/export-as-config.model.d.ts +0 -8
- package/services/export-as/export-as.service.d.ts +0 -43
- package/services/export-as/public-api.d.ts +0 -2
- package/services/loading/loading.interceptor.d.ts +0 -12
- package/services/loading/loading.service.d.ts +0 -24
- package/services/loading/public-api.d.ts +0 -2
- package/services/local-storage/local-storage.service.d.ts +0 -8
- package/services/local-storage/public-api.d.ts +0 -1
- package/services/media-watcher/media-watcher.service.d.ts +0 -20
- package/services/media-watcher/public-api.d.ts +0 -1
- package/services/platform/platform.service.d.ts +0 -9
- package/services/platform/public-api.d.ts +0 -1
- package/services/splash-screen/public-api.d.ts +0 -1
- package/services/splash-screen/splash-screen.service.d.ts +0 -14
- package/services/title/public-api.d.ts +0 -1
- package/services/title/title.service.d.ts +0 -13
- package/services/translation/public-api.d.ts +0 -1
- package/services/translation/translation.service.d.ts +0 -20
- package/services/utils/public-api.d.ts +0 -1
- package/services/utils/utils.service.d.ts +0 -60
- package/validators/public-api.d.ts +0 -1
- package/validators/validators.d.ts +0 -5
- package/version/public-api.d.ts +0 -1
- package/version/version.d.ts +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmat-components-navigation.mjs","sources":["../../../projects/cmat/components/navigation/navigation.service.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.html","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.html","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.ts","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.html","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/horizontal/horizontal.component.ts","../../../projects/cmat/components/navigation/horizontal/horizontal.component.html","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.html","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.html","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/vertical/components/group/group.component.ts","../../../projects/cmat/components/navigation/vertical/components/group/group.component.html","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.ts","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.html","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.ts","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.html","../../../projects/cmat/components/navigation/vertical/vertical.component.ts","../../../projects/cmat/components/navigation/vertical/vertical.component.html","../../../projects/cmat/components/navigation/navigation.types.ts","../../../projects/cmat/components/navigation/cmat-components-navigation.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { CmatNavigationItem } from './navigation.types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatNavigationService {\r\n private _componentRegistry: Map<string, any> = new Map<string, any>();\r\n private _navigationStore: Map<string, CmatNavigationItem[]> = new Map<string, any>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Register navigation component\r\n *\r\n * @param name\r\n * @param component\r\n */\r\n registerComponent(name: string, component: any): void {\r\n this._componentRegistry.set(name, component);\r\n }\r\n\r\n /**\r\n * Deregister navigation component\r\n *\r\n * @param name\r\n */\r\n deregisterComponent(name: string): void {\r\n this._componentRegistry.delete(name);\r\n }\r\n\r\n /**\r\n * Get navigation component from the registry\r\n *\r\n * @param name\r\n */\r\n getComponent<T>(name: string): T {\r\n return this._componentRegistry.get(name);\r\n }\r\n\r\n /**\r\n * Store the given navigation with the given key\r\n *\r\n * @param key\r\n * @param navigation\r\n */\r\n storeNavigation(key: string, navigation: CmatNavigationItem[]): void {\r\n // Add to the store\r\n this._navigationStore.set(key, navigation);\r\n }\r\n\r\n /**\r\n * Get navigation from storage by key\r\n *\r\n * @param key\r\n */\r\n getNavigation(key: string): CmatNavigationItem[] {\r\n return this._navigationStore.get(key) ?? [];\r\n }\r\n\r\n /**\r\n * Delete the navigation from the storage\r\n *\r\n * @param key\r\n */\r\n deleteNavigation(key: string): void {\r\n // Check if the navigation exists\r\n if (!this._navigationStore.has(key)) {\r\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\r\n }\r\n\r\n // Delete from the storage\r\n this._navigationStore.delete(key);\r\n }\r\n\r\n /**\r\n * Utility function that returns a flattened\r\n * version of the given navigation array\r\n *\r\n * @param navigation\r\n * @param flatNavigation\r\n */\r\n getFlatNavigation(navigation: CmatNavigationItem[], flatNavigation: CmatNavigationItem[] = []): CmatNavigationItem[] {\r\n for (const item of navigation) {\r\n if (item.type === 'basic') {\r\n flatNavigation.push(item);\r\n continue;\r\n }\r\n\r\n if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n if (item.children) {\r\n this.getFlatNavigation(item.children, flatNavigation);\r\n }\r\n }\r\n }\r\n\r\n return flatNavigation;\r\n }\r\n\r\n /**\r\n * Utility function that returns the item\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\r\n */\r\n getItem(id: string, navigation: CmatNavigationItem[]): CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return item;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItem(id, item.children);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Utility function that returns the item's parent\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\r\n * @param parent\r\n */\r\n getItemParent(\r\n id: string,\r\n navigation: CmatNavigationItem[],\r\n parent: CmatNavigationItem[] | CmatNavigationItem\r\n ): CmatNavigationItem[] | CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return parent;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItemParent(id, item.children, item);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatMenuModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\r\n // Set the equivalent of {exact: false} as default for active match options.\r\n // We are not assigning the item.isActiveMatchOptions directly to the\r\n // [routerLinkActiveOptions] because if it's \"undefined\" initially, the router\r\n // will throw an error and stop working.\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Set the \"isActiveMatchOptions\" either from item's\r\n // \"isActiveMatchOptions\" or the equivalent form of\r\n // item's \"exactMatch\" option\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\r\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\r\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" mat-menu-item [href]=\"item.link\"\r\n [target]=\"item.target || '_blank'\" [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n</div>\r\n\r\n<!-- Badge -->\r\n@if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n}\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatHorizontalNavigationDividerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild, forwardRef } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatHorizontalNavigationDividerItemComponent } from '../divider/divider.component';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-branch-item',\r\n templateUrl: './branch.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatMenuModule, NgTemplateOutlet, CmatHorizontalNavigationBasicItemComponent,\r\n forwardRef(() => CmatHorizontalNavigationBranchItemComponent), CmatHorizontalNavigationDividerItemComponent, MatTooltipModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_child: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() child: boolean = false;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @ViewChild('matMenu', { static: true }) matMenu: MatMenu;\r\n\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Trigger the change detection\r\n */\r\n triggerChangeDetection(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id || index;\r\n }\r\n}\r\n","@if (!child) {\r\n <div #trigger=\"matMenuTrigger\" [ngClass]=\"{'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\r\n 'cmat-horizontal-navigation-menu-active-forced': item.active}\"\r\n [matMenuTriggerFor]=\"matMenu\" (onMenuOpen)=\"triggerChangeDetection()\" (onMenuClose)=\"triggerChangeDetection()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n </div>\r\n}\r\n\r\n<mat-menu #matMenu=\"matMenu\" class=\"cmat-horizontal-navigation-menu-panel\" [overlapTrigger]=\"false\">\r\n\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item [disabled]=\"item.disabled\">\r\n <cmat-horizontal-navigation-basic-item [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-basic-item>\r\n </div>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item\r\n [disabled]=\"item.disabled\" [matMenuTriggerFor]=\"branch.matMenu\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n <cmat-horizontal-navigation-branch-item #branch [child]=\"true\" [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-branch-item>\r\n </div>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item>\r\n <cmat-horizontal-navigation-divider-item [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-divider-item>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n</mat-menu>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate let-item>\r\n\r\n <div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-horizontal-navigation-item\" [ngClass]=\"{'cmat-horizontal-navigation-item-disabled': item.disabled,\r\n 'cmat-horizontal-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\"\r\n [svgIcon]=\"item.icon\"></mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\" [ngClass]=\"item.classes?.wrapper\"></div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem } from '../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatHorizontalNavigationBranchItemComponent } from './components/branch/branch.component';\r\nimport { CmatHorizontalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation',\r\n templateUrl: './horizontal.component.html',\r\n styleUrls: ['./horizontal.component.scss'],\r\n animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatHorizontalNavigation',\r\n imports: [CmatHorizontalNavigationBasicItemComponent, CmatHorizontalNavigationBranchItemComponent, CmatHorizontalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatHorizontalNavigationComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() name: string = this._cmatUtilsService.randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = this._cmatUtilsService.randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Refresh the component to apply the changes\r\n */\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id || index;\r\n }\r\n}\r\n","<div class=\"cmat-horizontal-navigation-wrapper\">\r\n\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-horizontal-navigation-basic-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-basic-item>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <cmat-horizontal-navigation-branch-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-branch-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-horizontal-navigation-spacer-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n</div>","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatIconModule]\r\n})\r\nexport class CmatVerticalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\r\n\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(): void {\r\n this.editSelectedItemChanged.next(this.item);\r\n }\r\n}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n @if(editState){\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"selectItem()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }@else{\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatVerticalNavigationDividerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper divider\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatVerticalNavigationSpacerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, forwardRef } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-group-item',\r\n templateUrl: './group.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationDividerItemComponent, forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent), CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationGroupItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id || index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, forwardRef } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-collapsable-item',\r\n templateUrl: './collapsable.component.html',\r\n styles: [],\r\n animations: cmatAnimations,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent), CmatVerticalNavigationDividerItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n isCollapsed: boolean = true;\r\n isExpanded: boolean = false;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _router: Router,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-collapsed': this.isCollapsed,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-expanded': this.isExpanded\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n\r\n // Listen for the onCollapsableItemCollapsed from the service\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((collapsedItem) => {\r\n\r\n // Check if the collapsed item is null\r\n if (collapsedItem === null) {\r\n return;\r\n }\r\n\r\n // Collapse if this is a children of the collapsed item\r\n if (this._isChildrenOf(collapsedItem, this.item)) {\r\n this.collapse();\r\n }\r\n });\r\n\r\n // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\r\n if (this.autoCollapse) {\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((expandedItem) => {\r\n\r\n // Check if the expanded item is null\r\n if (expandedItem === null) {\r\n return;\r\n }\r\n\r\n // Check if this is a parent of the expanded item\r\n if (this._isChildrenOf(this.item, expandedItem)) {\r\n return;\r\n }\r\n\r\n // Check if this has a children with a matching url with the current active url\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n return;\r\n }\r\n\r\n // Check if this is the expanded item\r\n if (this.item === expandedItem) {\r\n return;\r\n }\r\n\r\n // If none of the above conditions are matched, collapse this item\r\n this.collapse();\r\n });\r\n }\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, event.urlAfterRedirects)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n });\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Collapse\r\n */\r\n collapse(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already collapsed\r\n if (this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Collapse it\r\n this.isCollapsed = true;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\r\n }\r\n\r\n /**\r\n * Expand\r\n */\r\n expand(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already expanded\r\n if (!this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Expand it\r\n this.isCollapsed = false;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\r\n }\r\n\r\n /**\r\n * Toggle collapsable\r\n */\r\n toggleCollapsable(): void {\r\n // Toggle collapse/expand\r\n if (this.isCollapsed) {\r\n this.expand();\r\n }\r\n else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id || index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n\r\n \r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', matrixParams: 'ignored', fragment: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Check if this is a children\r\n * of the given item\r\n *\r\n * @param parent\r\n * @param item\r\n * @private\r\n */\r\n private _isChildrenOf(parent: CmatNavigationItem, item: CmatNavigationItem): boolean {\r\n const children = parent.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n if (children.includes(item)) {\r\n return true;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._isChildrenOf(child, item)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\" [ngClass]=\"{'cmat-vertical-navigation-item-disabled': item.disabled}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable();selectItem(item);\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Arrow -->\r\n <mat-icon class=\"cmat-vertical-navigation-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_outline:chevron-right'\">\r\n </mat-icon>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@if (!isCollapsed) {\r\n <div class=\"cmat-vertical-navigation-item-children\" @expandCollapse>\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-aside-item',\r\n templateUrl: './aside.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationAsideItemComponent implements OnChanges, OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n static ngAcceptInputType_skipChildren: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() activeItemId: string | null;\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() skipChildren: boolean; \r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n \r\n active: boolean = false;\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _router: Router,\r\n private _cmatNavigationService: CmatNavigationService\r\n ) {\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Active item id\r\n if ('activeItemId' in changes) {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // Mark if active\r\n this._markIfActive(event.urlAfterRedirects);\r\n });\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id || index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Skip items other than 'basic'\r\n if (child.type !== 'basic') {\r\n continue;\r\n }\r\n\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', fragment: 'ignored', matrixParams: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Decide and mark if the item is active\r\n *\r\n * @private\r\n */\r\n private _markIfActive(currentUrl: string): void {\r\n // Check if the activeItemId is equals to this item id\r\n this.active = this.activeItemId === this.item.id;\r\n\r\n // If the aside has a children that is active,\r\n // always mark it as active\r\n if (this._hasActiveChild(this.item, currentUrl)) {\r\n this.active = true;\r\n }\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active': active,\r\n 'cmat-vertical-navigation-item-disabled': item.disabled,\r\n 'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@if (!skipChildren) {\r\n <div class=\"cmat-vertical-navigation-item-children\">\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [autoCollapse]=\"autoCollapse\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } from '../navigation.types';\r\nimport { CmatVerticalNavigationAsideItemComponent } from './components/aside/aside.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from './components/collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from './components/divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from './components/group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation',\r\n templateUrl: './vertical.component.html',\r\n styleUrls: ['./vertical.component.scss'],\r\n animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatVerticalNavigation',\r\n imports: [CmatVerticalNavigationAsideItemComponent, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_inner: BooleanInput;\r\n static ngAcceptInputType_opened: BooleanInput;\r\n static ngAcceptInputType_transparentOverlay: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() appearance: CmatVerticalNavigationAppearance = 'default';\r\n @Input() autoCollapse: boolean = true;\r\n @Input() editState:boolean= false;\r\n @Input() inner: boolean = false;\r\n @Input() mode: CmatVerticalNavigationMode = 'side';\r\n @Input() name: string = this._cmatUtilsService.randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n @Input() opened: boolean = true;\r\n @Input() position: CmatVerticalNavigationPosition = 'left';\r\n @Input() transparentOverlay: boolean = false;\r\n @Output() readonly appearanceChanged: EventEmitter<CmatVerticalNavigationAppearance> = new EventEmitter<CmatVerticalNavigationAppearance>();\r\n @Output() readonly modeChanged: EventEmitter<CmatVerticalNavigationMode> = new EventEmitter<CmatVerticalNavigationMode>();\r\n @Output() readonly openedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() readonly positionChanged: EventEmitter<CmatVerticalNavigationPosition> = new EventEmitter<CmatVerticalNavigationPosition>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n @ViewChild('navigationContent') private _navigationContentEl: ElementRef<HTMLDivElement>;\r\n\r\n activeAsideItemId: string | null = null;\r\n onCollapsableItemCollapsed: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onCollapsableItemExpanded: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n\r\n private _animationsEnabled: boolean = false;\r\n private _asideOverlay: HTMLElement | null;\r\n private readonly _handleAsideOverlayClick: any;\r\n private readonly _handleOverlayClick: any;\r\n private _hovered: boolean = false;\r\n private _overlay: HTMLElement | null;\r\n private _player: AnimationPlayer;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(\r\n private _animationBuilder: AnimationBuilder,\r\n private _changeDetectorRef: ChangeDetectorRef,\r\n private _elementRef: ElementRef,\r\n private _renderer2: Renderer2,\r\n private _router: Router,\r\n private _scrollStrategyOptions: ScrollStrategyOptions,\r\n private _cmatNavigationService: CmatNavigationService,\r\n private _cmatUtilsService: CmatUtilsService\r\n ) {\r\n this._handleAsideOverlayClick = (): void => {\r\n this.closeAside();\r\n };\r\n this._handleOverlayClick = (): void => {\r\n this.close();\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-animations-enabled': this._animationsEnabled,\r\n [`cmat-vertical-navigation-appearance-${this.appearance}`]: true,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-hover': this._hovered,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-inner': this.inner,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-over': this.mode === 'over',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-side': this.mode === 'side',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-opened': this.opened,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-left': this.position === 'left',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-right': this.position === 'right'\r\n };\r\n }\r\n\r\n /**\r\n * Host binding for component inline styles\r\n */\r\n @HostBinding('style') get styleList(): any {\r\n return {\r\n 'visibility': this.opened ? 'visible' : 'hidden'\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Decorated methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On mouseenter\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseenter')\r\n onMouseenter(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = true;\r\n }\r\n\r\n /**\r\n * On mouseleave\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseleave')\r\n onMouseleave(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = false;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Appearance\r\n if ('appearance' in changes) {\r\n // Execute the observable\r\n this.appearanceChanged.next(changes['appearance'].currentValue);\r\n }\r\n\r\n // Inner\r\n if ('inner' in changes) {\r\n // Coerce the value to a boolean\r\n this.inner = coerceBooleanProperty(changes['inner'].currentValue);\r\n }\r\n\r\n // Mode\r\n if ('mode' in changes) {\r\n // Get the previous and current values\r\n const currentMode = changes['mode'].currentValue;\r\n const previousMode = changes['mode'].previousValue;\r\n\r\n // Disable the animations\r\n this._disableAnimations();\r\n\r\n // If the mode changes: 'over -> side'\r\n if (previousMode === 'over' && currentMode === 'side') {\r\n // Hide the overlay\r\n this._hideOverlay();\r\n }\r\n\r\n // If the mode changes: 'side -> over'\r\n if (previousMode === 'side' && currentMode === 'over') {\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // If the navigation is opened\r\n if (this.opened) {\r\n // Show the overlay\r\n this._showOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.modeChanged.next(currentMode);\r\n\r\n // Enable the animations after a delay\r\n // The delay must be bigger than the current transition-duration\r\n // to make sure nothing will be animated while the mode changing\r\n setTimeout(() => {\r\n this._enableAnimations();\r\n }, 500);\r\n }\r\n\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n // Opened\r\n if ('opened' in changes) {\r\n // Coerce the value to a boolean\r\n this.opened = coerceBooleanProperty(changes['opened'].currentValue);\r\n\r\n // Open/close the navigation\r\n this._toggleOpened(this.opened);\r\n }\r\n\r\n // Position\r\n if ('position' in changes) {\r\n // Execute the observable\r\n this.positionChanged.next(changes['position'].currentValue);\r\n }\r\n\r\n // Transparent overlay\r\n if ('transparentOverlay' in changes) {\r\n // Coerce the value to a boolean\r\n this.transparentOverlay = coerceBooleanProperty(changes['transparentOverlay'].currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = this._cmatUtilsService.randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n\r\n // Subscribe to the 'NavigationEnd' event\r\n this._router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe(() => {\r\n\r\n // If the mode is 'over' and the navigation is opened...\r\n if (this.mode === 'over' && this.opened) {\r\n // Close the navigation\r\n this.close();\r\n }\r\n\r\n // If the mode is 'side' and the aside is active...\r\n if (this.mode === 'side' && this.activeAsideItemId) {\r\n // Close the aside\r\n this.closeAside();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * After view init\r\n */\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n // Return if 'navigation content' element does not exist\r\n if (!this._navigationContentEl) {\r\n return;\r\n }\r\n\r\n const activeItem = this._navigationContentEl.nativeElement.querySelector('.cmat-vertical-navigation-item-active')!;\r\n // If the active item exists, scroll it into view\r\n if (activeItem) {\r\n if (activeItem.getBoundingClientRect().bottom\r\n <= (this._navigationContentEl.nativeElement.getBoundingClientRect().bottom - Math.abs(-120))) {\r\n return;\r\n }\r\n\r\n this._navigationContentEl.nativeElement.scrollTo({\r\n top: activeItem.getBoundingClientRect().top -\r\n this._navigationContentEl.nativeElement.getBoundingClientRect().top - 120, behavior: 'smooth'\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Forcefully close the navigation and aside in case they are opened\r\n this.close();\r\n this.closeAside();\r\n\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Refresh the component to apply the changes\r\n */\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n /**\r\n * Open the navigation\r\n */\r\n open(): void {\r\n // Return if the navigation is already open\r\n if (this.opened) {\r\n return;\r\n }\r\n\r\n // Set the opened\r\n this._toggleOpened(true);\r\n }\r\n\r\n /**\r\n * Close the navigation\r\n */\r\n close(): void {\r\n // Return if the navigation is already closed\r\n if (!this.opened) {\r\n return;\r\n }\r\n\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // Set the opened\r\n this._toggleOpened(false);\r\n }\r\n\r\n /**\r\n * Toggle the navigation\r\n */\r\n toggle(): void {\r\n // Toggle\r\n if (this.opened) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n\r\n /**\r\n * Open the aside\r\n *\r\n * @param item\r\n */\r\n openAside(item: CmatNavigationItem): void {\r\n // Return if the item is disabled\r\n if (item.disabled || !item.id) {\r\n return;\r\n }\r\n\r\n // Open\r\n this.activeAsideItemId = item.id;\r\n\r\n // Show the aside overlay\r\n this._showAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Close the aside\r\n */\r\n closeAside(): void {\r\n // Close\r\n this.activeAsideItemId = null;\r\n\r\n // Hide the aside overlay\r\n this._hideAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Toggle the aside\r\n *\r\n * @param item\r\n */\r\n toggleAside(item: CmatNavigationItem): void {\r\n // Toggle\r\n if (this.activeAsideItemId === item.id) {\r\n this.closeAside();\r\n }\r\n else {\r\n this.openAside(item);\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id || index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Enable the animations\r\n *\r\n * @private\r\n */\r\n private _enableAnimations(): void {\r\n // Return if the animations are already enabled\r\n if (this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Enable the animations\r\n this._animationsEnabled = true;\r\n }\r\n\r\n /**\r\n * Disable the animations\r\n *\r\n * @private\r\n */\r\n private _disableAnimations(): void {\r\n // Return if the animations are already disabled\r\n if (!this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Disable the animations\r\n this._animationsEnabled = false;\r\n }\r\n\r\n /**\r\n * Show the overlay\r\n *\r\n * @private\r\n */\r\n private _showOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the overlay element\r\n this._overlay = this._renderer2.createElement('div');\r\n\r\n if (this._overlay) {\r\n // Add a class to the overlay element\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay');\r\n\r\n // Add a class depending on the transparentOverlay option\r\n if (this.transparentOverlay) {\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-transparent');\r\n }\r\n\r\n // Append the overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\r\n\r\n // Enable block scroll strategy\r\n this._scrollStrategy.enable();\r\n\r\n // Create the enter animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Add an event listener to the overlay\r\n this._overlay.addEventListener('click', this._handleOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the overlay\r\n *\r\n * @private\r\n */\r\n private _hideOverlay(): void {\r\n if (!this._overlay) {\r\n return;\r\n }\r\n\r\n // Create the leave animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n\r\n // If the overlay still exists...\r\n if (this._overlay) {\r\n // Remove the event listener\r\n this._overlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n // Remove the overlay\r\n this._overlay.parentNode?.removeChild(this._overlay);\r\n this._overlay = null;\r\n }\r\n\r\n // Disable block scroll strategy\r\n this._scrollStrategy.disable();\r\n });\r\n }\r\n\r\n /**\r\n * Show the aside overlay\r\n *\r\n * @private\r\n */\r\n private _showAsideOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the aside overlay element\r\n this._asideOverlay = this._renderer2.createElement('div');\r\n\r\n if (this._asideOverlay) {\r\n // Add a class to the aside overlay element\r\n this._asideOverlay.classList.add('cmat-vertical-navigation-aside-overlay');\r\n\r\n // Append the aside overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\r\n\r\n // Create the enter animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Add an event listener to the aside overlay\r\n this._asideOverlay.addEventListener('click', this._handleAsideOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the aside overlay\r\n *\r\n * @private\r\n */\r\n private _hideAsideOverlay(): void {\r\n if (!this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the leave animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n // If the aside overlay still exists...\r\n if (this._asideOverlay) {\r\n // Remove the event listener\r\n this._asideOverlay.removeEventListener('click', this._handleAsideOverlayClick);\r\n\r\n // Remove the aside overlay\r\n this._asideOverlay.parentNode?.removeChild(this._asideOverlay);\r\n this._asideOverlay = null;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Open/close the navigation\r\n *\r\n * @param open\r\n * @private\r\n */\r\n private _toggleOpened(open: boolean): void {\r\n // Set the opened\r\n this.opened = open;\r\n\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // If the navigation opened, and the mode\r\n // is 'over', show the overlay\r\n if (this.mode === 'over') {\r\n if (this.opened) {\r\n this._showOverlay();\r\n }\r\n else {\r\n this._hideOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.openedChanged.next(open);\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-wrapper\">\r\n\r\n <!-- Header -->\r\n <div class=\"cmat-vertical-navigation-header\">\r\n <ng-content select=\"[cmatVerticalNavigationHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Content -->\r\n <div #navigationContent class=\"cmat-vertical-navigation-content py-2 overflow-y-auto scrollbar-custom\">\r\n\r\n <!-- Content header -->\r\n <div class=\"cmat-vertical-navigation-content-header\">\r\n <ng-content select=\"[cmatVerticalNavigationContentHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside') {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [activeItemId]=\"activeAsideItemId\"\r\n [autoCollapse]=\"autoCollapse\" [skipChildren]=\"true\" [editState]=\"editState\" (click)=\"toggleAside(item)\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [autoCollapse]=\"autoCollapse\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n <!-- Content footer -->\r\n <div class=\"cmat-vertical-navigation-content-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationContentFooter]\"></ng-content>\r\n </div>\r\n\r\n </div>\r\n <!-- Footer -->\r\n <div class=\"cmat-vertical-navigation-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationFooter]\"></ng-content>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- Aside -->\r\n@if (activeAsideItemId) {\r\n <div class=\"cmat-vertical-navigation-aside-wrapper overflow-y-auto scrollbar-custom\"\r\n [@fadeInLeft]=\"position === 'left'\" [@fadeInRight]=\"position === 'right'\" [@fadeOutLeft]=\"position === 'left'\"\r\n [@fadeOutRight]=\"position === 'right'\">\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside' && item.id === activeAsideItemId) {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { IsActiveMatchOptions } from '@angular/router';\r\n\r\nexport class CmatNavigationItem {\r\n id?: string;\r\n title?: string;\r\n subTitle?: string;\r\n type:\r\n | 'aside'\r\n | 'basic'\r\n | 'collapsable'\r\n | 'divider'\r\n | 'group'\r\n | 'spacer';\r\n hidden?: (item: CmatNavigationItem) => boolean;\r\n active?: boolean;\r\n disabled?: boolean;\r\n tooltip?: string;\r\n link?: string;\r\n externalLink?: boolean;\r\n target?:\r\n | '_blank'\r\n | '_self'\r\n | '_parent'\r\n | '_top';\r\n exactMatch?: boolean;\r\n isActiveMatchOptions?: IsActiveMatchOptions;\r\n function?: (item: CmatNavigationItem) => void;\r\n classes?: {\r\n title?: string;\r\n subtitle?: string;\r\n icon?: string;\r\n wrapper?: string;\r\n };\r\n icon?: string;\r\n badge?: {\r\n title?: string;\r\n classes?: string;\r\n };\r\n children?: CmatNavigationItem[];\r\n meta?: any;\r\n permission?: any;\r\n}\r\n\r\nexport type CmatVerticalNavigationAppearance =\r\n | 'default'\r\n | 'compact'\r\n | 'dense'\r\n | 'thin';\r\n\r\nexport type CmatVerticalNavigationMode =\r\n | 'over'\r\n | 'side';\r\n\r\nexport type CmatVerticalNavigationPosition =\r\n | 'left'\r\n | 'right';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CmatNavigationService","i5","i2","i2.CmatNavigationService","i1","i3","i4.CmatNavigationService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cmat-components-navigation.mjs","sources":["../../../projects/cmat/components/navigation/navigation.service.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/horizontal/components/basic/basic.component.html","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/horizontal/components/divider/divider.component.html","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.ts","../../../projects/cmat/components/navigation/horizontal/components/branch/branch.component.html","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/horizontal/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/horizontal/horizontal.component.ts","../../../projects/cmat/components/navigation/horizontal/horizontal.component.html","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.ts","../../../projects/cmat/components/navigation/vertical/components/basic/basic.component.html","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.ts","../../../projects/cmat/components/navigation/vertical/components/divider/divider.component.html","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.ts","../../../projects/cmat/components/navigation/vertical/components/spacer/spacer.component.html","../../../projects/cmat/components/navigation/vertical/components/group/group.component.ts","../../../projects/cmat/components/navigation/vertical/components/group/group.component.html","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.ts","../../../projects/cmat/components/navigation/vertical/components/collapsable/collapsable.component.html","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.ts","../../../projects/cmat/components/navigation/vertical/components/aside/aside.component.html","../../../projects/cmat/components/navigation/vertical/vertical.component.ts","../../../projects/cmat/components/navigation/vertical/vertical.component.html","../../../projects/cmat/components/navigation/navigation.types.ts","../../../projects/cmat/components/navigation/cmat-components-navigation.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { CmatNavigationItem } from './navigation.types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CmatNavigationService {\r\n private _componentRegistry: Map<string, any> = new Map<string, any>();\r\n private _navigationStore: Map<string, CmatNavigationItem[]> = new Map<string, any>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Register navigation component\r\n *\r\n * @param name\r\n * @param component\r\n */\r\n registerComponent(name: string, component: any): void {\r\n this._componentRegistry.set(name, component);\r\n }\r\n\r\n /**\r\n * Deregister navigation component\r\n *\r\n * @param name\r\n */\r\n deregisterComponent(name: string): void {\r\n this._componentRegistry.delete(name);\r\n }\r\n\r\n /**\r\n * Get navigation component from the registry\r\n *\r\n * @param name\r\n */\r\n getComponent<T>(name: string): T {\r\n return this._componentRegistry.get(name);\r\n }\r\n\r\n /**\r\n * Store the given navigation with the given key\r\n *\r\n * @param key\r\n * @param navigation\r\n */\r\n storeNavigation(key: string, navigation: CmatNavigationItem[]): void {\r\n // Add to the store\r\n this._navigationStore.set(key, navigation);\r\n }\r\n\r\n /**\r\n * Get navigation from storage by key\r\n *\r\n * @param key\r\n */\r\n getNavigation(key: string): CmatNavigationItem[] {\r\n return this._navigationStore.get(key) ?? [];\r\n }\r\n\r\n /**\r\n * Delete the navigation from the storage\r\n *\r\n * @param key\r\n */\r\n deleteNavigation(key: string): void {\r\n // Check if the navigation exists\r\n if (!this._navigationStore.has(key)) {\r\n console.warn(`Navigation with the key '${key}' does not exist in the store.`);\r\n }\r\n\r\n // Delete from the storage\r\n this._navigationStore.delete(key);\r\n }\r\n\r\n /**\r\n * Utility function that returns a flattened\r\n * version of the given navigation array\r\n *\r\n * @param navigation\r\n * @param flatNavigation\r\n */\r\n getFlatNavigation(navigation: CmatNavigationItem[], flatNavigation: CmatNavigationItem[] = []): CmatNavigationItem[] {\r\n for (const item of navigation) {\r\n if (item.type === 'basic') {\r\n flatNavigation.push(item);\r\n continue;\r\n }\r\n\r\n if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n if (item.children) {\r\n this.getFlatNavigation(item.children, flatNavigation);\r\n }\r\n }\r\n }\r\n\r\n return flatNavigation;\r\n }\r\n\r\n /**\r\n * Utility function that returns the item\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\r\n */\r\n getItem(id: string, navigation: CmatNavigationItem[]): CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return item;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItem(id, item.children);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Utility function that returns the item's parent\r\n * with the given id from given navigation\r\n *\r\n * @param id\r\n * @param navigation\r\n * @param parent\r\n */\r\n getItemParent(\r\n id: string,\r\n navigation: CmatNavigationItem[],\r\n parent: CmatNavigationItem[] | CmatNavigationItem\r\n ): CmatNavigationItem[] | CmatNavigationItem | null {\r\n for (const item of navigation) {\r\n if (item.id === id) {\r\n return parent;\r\n }\r\n\r\n if (item.children) {\r\n const childItem = this.getItemParent(id, item.children, item);\r\n\r\n if (childItem) {\r\n return childItem;\r\n }\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatMenuModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor() {\r\n // Set the equivalent of {exact: false} as default for active match options.\r\n // We are not assigning the item.isActiveMatchOptions directly to the\r\n // [routerLinkActiveOptions] because if it's \"undefined\" initially, the router\r\n // will throw an error and stop working.\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Set the \"isActiveMatchOptions\" either from item's\r\n // \"isActiveMatchOptions\" or the equivalent form of\r\n // item's \"exactMatch\" option\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\r\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\" [routerLink]=\"[item.link]\"\r\n [routerLinkActive]=\"'cmat-horizontal-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-horizontal-navigation-item\" mat-menu-item [href]=\"item.link\"\r\n [target]=\"item.target || '_blank'\" [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item\"\r\n [ngClass]=\"{'cmat-horizontal-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-horizontal-navigation-item cmat-horizontal-navigation-item-disabled\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n</div>\r\n\r\n<!-- Badge -->\r\n@if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n}\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatHorizontalNavigationDividerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper divider\" [ngClass]=\"item.classes?.wrapper\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild, forwardRef, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatHorizontalNavigationDividerItemComponent } from '../divider/divider.component';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-branch-item',\r\n templateUrl: './branch.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatMenuModule, NgTemplateOutlet, CmatHorizontalNavigationBasicItemComponent,\r\n forwardRef(() => CmatHorizontalNavigationBranchItemComponent), CmatHorizontalNavigationDividerItemComponent, MatTooltipModule, MatIconModule]\r\n})\r\nexport class CmatHorizontalNavigationBranchItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_child: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() child: boolean = false;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @ViewChild('matMenu', { static: true }) matMenu: MatMenu;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Trigger the change detection\r\n */\r\n triggerChangeDetection(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id ?? index;\r\n }\r\n}\r\n","@if (!child) {\r\n <div #trigger=\"matMenuTrigger\" [ngClass]=\"{'cmat-horizontal-navigation-menu-active': trigger.menuOpen,\r\n 'cmat-horizontal-navigation-menu-active-forced': item.active}\"\r\n [matMenuTriggerFor]=\"matMenu\" (onMenuOpen)=\"triggerChangeDetection()\" (onMenuClose)=\"triggerChangeDetection()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n </div>\r\n}\r\n\r\n<mat-menu #matMenu=\"matMenu\" class=\"cmat-horizontal-navigation-menu-panel\" [overlapTrigger]=\"false\">\r\n\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item [disabled]=\"item.disabled\">\r\n <cmat-horizontal-navigation-basic-item [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-basic-item>\r\n </div>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item\r\n [disabled]=\"item.disabled\" [matMenuTriggerFor]=\"branch.matMenu\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\r\n <cmat-horizontal-navigation-branch-item #branch [child]=\"true\" [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-branch-item>\r\n </div>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <div class=\"cmat-horizontal-navigation-menu-item\" mat-menu-item>\r\n <cmat-horizontal-navigation-divider-item [item]=\"item\" [name]=\"name\">\r\n </cmat-horizontal-navigation-divider-item>\r\n </div>\r\n }\r\n }\r\n }\r\n\r\n</mat-menu>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate let-item>\r\n\r\n <div class=\"cmat-horizontal-navigation-item-wrapper\"\r\n [class.cmat-horizontal-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-horizontal-navigation-item\" [ngClass]=\"{'cmat-horizontal-navigation-item-disabled': item.disabled,\r\n 'cmat-horizontal-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-horizontal-navigation-item-icon\" [ngClass]=\"item.classes?.icon\"\r\n [svgIcon]=\"item.icon\"></mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-horizontal-navigation-item-title-wrapper\">\r\n <div class=\"cmat-horizontal-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-horizontal-navigation-item-badge\">\r\n <div class=\"cmat-horizontal-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatHorizontalNavigationComponent } from '../../../horizontal/horizontal.component';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatHorizontalNavigationSpacerItemComponent implements OnInit, OnDestroy {\r\n\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatHorizontalNavigationComponent: CmatHorizontalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatHorizontalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatHorizontalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-horizontal-navigation-item-wrapper\" [ngClass]=\"item.classes?.wrapper\"></div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation, inject } from '@angular/core';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem } from '../navigation.types';\r\nimport { CmatHorizontalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatHorizontalNavigationBranchItemComponent } from './components/branch/branch.component';\r\nimport { CmatHorizontalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-horizontal-navigation',\r\n templateUrl: './horizontal.component.html',\r\n styleUrls: ['./horizontal.component.scss'],\r\n animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatHorizontalNavigation',\r\n imports: [CmatHorizontalNavigationBasicItemComponent, CmatHorizontalNavigationBranchItemComponent, CmatHorizontalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatHorizontalNavigationComponent implements OnChanges, OnInit, OnDestroy {\r\n @Input() name: string = inject(CmatUtilsService).randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = inject(CmatUtilsService).randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Refresh the component to apply the changes\r\n */\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id ?? index;\r\n }\r\n}\r\n","<div class=\"cmat-horizontal-navigation-wrapper\">\r\n\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-horizontal-navigation-basic-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-basic-item>\r\n }\r\n <!-- Branch: aside, collapsable, group -->\r\n @if (item.type === 'aside' || item.type === 'collapsable' || item.type === 'group') {\r\n <cmat-horizontal-navigation-branch-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-branch-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-horizontal-navigation-spacer-item class=\"cmat-horizontal-navigation-menu-item\" [item]=\"item\"\r\n [name]=\"name\"></cmat-horizontal-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n</div>","import { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-basic-item',\r\n templateUrl: './basic.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, RouterLink, RouterLinkActive, MatTooltipModule, NgTemplateOutlet, MatIconModule]\r\n})\r\nexport class CmatVerticalNavigationBasicItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n isActiveMatchOptions: IsActiveMatchOptions;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatUtilsService = inject(CmatUtilsService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n constructor() {\r\n\r\n this.isActiveMatchOptions = this._cmatUtilsService.subsetMatchOptions;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isActiveMatchOptions =\r\n this.item.isActiveMatchOptions ?? this.item.exactMatch\r\n ? this._cmatUtilsService.exactMatchOptions\r\n : this._cmatUtilsService.subsetMatchOptions;\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(): void {\r\n this.editSelectedItemChanged.next(this.item);\r\n }\r\n}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n @if(editState){\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"selectItem()\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }@else{\r\n <!-- Item with an internal link -->\r\n @if (item.link && !item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link -->\r\n @if (item.link && item.externalLink && !item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a function -->\r\n @if (!item.link && item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\"\r\n [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\"\r\n (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item with an internal link and function -->\r\n @if (item.link && !item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [routerLink]=\"[item.link]\" [routerLinkActive]=\"'cmat-vertical-navigation-item-active'\"\r\n [routerLinkActiveOptions]=\"isActiveMatchOptions\" [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with an external link and function -->\r\n @if (item.link && item.externalLink && item.function && !item.disabled) {\r\n <a class=\"cmat-vertical-navigation-item\" [href]=\"item.link\" [target]=\"item.target || '_blank'\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"item.function(item)\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </a>\r\n }\r\n\r\n <!-- Item with a no link and no function -->\r\n @if (!item.link && !item.function && !item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active-forced': item.active}\"\r\n [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n\r\n <!-- Item is disabled -->\r\n @if (item.disabled) {\r\n <div class=\"cmat-vertical-navigation-item cmat-vertical-navigation-item-disabled\" [matTooltip]=\"item.tooltip || ''\">\r\n <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n </div>\r\n }\r\n }\r\n</div>\r\n\r\n<!-- Item template -->\r\n<ng-template #itemTemplate>\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n</ng-template>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-divider-item',\r\n templateUrl: './divider.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatVerticalNavigationDividerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n}\r\n","<!-- Divider -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper divider\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, inject } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-spacer-item',\r\n templateUrl: './spacer.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass]\r\n})\r\nexport class CmatVerticalNavigationSpacerItemComponent implements OnInit, OnDestroy {\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n}\r\n","<!-- Spacer -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\"></div>","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output, forwardRef, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-group-item',\r\n templateUrl: './group.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationDividerItemComponent, forwardRef(() => CmatVerticalNavigationGroupItemComponent),\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent), CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationGroupItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id ?? index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n}\r\n","<!-- Item wrapper -->\r\n<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output, forwardRef, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-collapsable-item',\r\n templateUrl: './collapsable.component.html',\r\n styles: [],\r\n animations: cmatAnimations,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n forwardRef(() => CmatVerticalNavigationCollapsableItemComponent),\r\n forwardRef(() => CmatVerticalNavigationGroupItemComponent), CmatVerticalNavigationDividerItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationCollapsableItemComponent implements OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n isCollapsed: boolean = true;\r\n isExpanded: boolean = false;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _router = inject(Router);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-collapsed': this.isCollapsed,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-item-expanded': this.isExpanded\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n\r\n // Listen for the onCollapsableItemCollapsed from the service\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((collapsedItem) => {\r\n\r\n // Check if the collapsed item is null\r\n if (collapsedItem === null) {\r\n return;\r\n }\r\n\r\n // Collapse if this is a children of the collapsed item\r\n if (this._isChildrenOf(collapsedItem, this.item)) {\r\n this.collapse();\r\n }\r\n });\r\n\r\n // Listen for the onCollapsableItemExpanded from the service if the autoCollapse is on\r\n if (this.autoCollapse) {\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((expandedItem) => {\r\n\r\n // Check if the expanded item is null\r\n if (expandedItem === null) {\r\n return;\r\n }\r\n\r\n // Check if this is a parent of the expanded item\r\n if (this._isChildrenOf(this.item, expandedItem)) {\r\n return;\r\n }\r\n\r\n // Check if this has a children with a matching url with the current active url\r\n if (this._hasActiveChild(this.item, this._router.url)) {\r\n return;\r\n }\r\n\r\n // Check if this is the expanded item\r\n if (this.item === expandedItem) {\r\n return;\r\n }\r\n\r\n // If none of the above conditions are matched, collapse this item\r\n this.collapse();\r\n });\r\n }\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // If the item has a children that has a matching url with the current url, expand...\r\n if (this._hasActiveChild(this.item, event.urlAfterRedirects)) {\r\n this.expand();\r\n }\r\n // Otherwise...\r\n else {\r\n // If the autoCollapse is on, collapse...\r\n if (this.autoCollapse) {\r\n this.collapse();\r\n }\r\n }\r\n });\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Collapse\r\n */\r\n collapse(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already collapsed\r\n if (this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Collapse it\r\n this.isCollapsed = true;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemCollapsed.next(this.item);\r\n }\r\n\r\n /**\r\n * Expand\r\n */\r\n expand(): void {\r\n // Return if the item is disabled\r\n if (this.item.disabled) {\r\n return;\r\n }\r\n\r\n // Return if the item is already expanded\r\n if (!this.isCollapsed) {\r\n return;\r\n }\r\n\r\n // Expand it\r\n this.isCollapsed = false;\r\n this.isExpanded = !this.isCollapsed;\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this._cmatVerticalNavigationComponent.onCollapsableItemExpanded.next(this.item);\r\n }\r\n\r\n /**\r\n * Toggle collapsable\r\n */\r\n toggleCollapsable(): void {\r\n // Toggle collapse/expand\r\n if (this.isCollapsed) {\r\n this.expand();\r\n }\r\n else {\r\n this.collapse();\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id ?? index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', matrixParams: 'ignored', fragment: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Check if this is a children\r\n * of the given item\r\n *\r\n * @param parent\r\n * @param item\r\n * @private\r\n */\r\n private _isChildrenOf(parent: CmatNavigationItem, item: CmatNavigationItem): boolean {\r\n const children = parent.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n if (children.includes(item)) {\r\n return true;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._isChildrenOf(child, item)) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\"\r\n [ngClass]=\"item.classes?.wrapper\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" role=\"presentation\" [ngClass]=\"{'cmat-vertical-navigation-item-disabled': item.disabled}\"\r\n [matTooltip]=\"item.tooltip || ''\" (click)=\"toggleCollapsable();selectItem(item);\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n <!-- Arrow -->\r\n <mat-icon class=\"cmat-vertical-navigation-item-arrow icon-size-4\" [svgIcon]=\"'heroicons_outline:chevron-right'\">\r\n </mat-icon>\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@if (!isCollapsed) {\r\n <div @expandCollapse class=\"cmat-vertical-navigation-item-children\">\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { BooleanInput } from '@angular/cdk/coercion';\r\nimport { NgClass } from '@angular/common';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges, inject } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { CmatNavigationService } from '../../../navigation.service';\r\nimport { CmatNavigationItem } from '../../../navigation.types';\r\nimport { CmatVerticalNavigationComponent } from '../../../vertical/vertical.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from '../basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from '../collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from '../divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from '../group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from '../spacer/spacer.component';\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation-aside-item',\r\n templateUrl: './aside.component.html',\r\n styles: [],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgClass, MatTooltipModule, MatIconModule, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationAsideItemComponent implements OnChanges, OnInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_autoCollapse: BooleanInput;\r\n static ngAcceptInputType_skipChildren: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() activeItemId: string | null;\r\n @Input() autoCollapse: boolean;\r\n @Input() item: CmatNavigationItem;\r\n @Input() name: string;\r\n @Input() skipChildren: boolean;\r\n @Input() editState: boolean = false;\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n active: boolean = false;\r\n\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _router = inject(Router);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n private _cmatVerticalNavigationComponent: CmatVerticalNavigationComponent;\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Active item id\r\n if ('activeItemId' in changes) {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Mark if active\r\n this._markIfActive(this._router.url);\r\n\r\n // Attach a listener to the NavigationEnd event\r\n this._router.events\r\n .pipe(\r\n filter((event): event is NavigationEnd => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe((event: NavigationEnd) => {\r\n\r\n // Mark if active\r\n this._markIfActive(event.urlAfterRedirects);\r\n });\r\n\r\n // Get the parent navigation component\r\n this._cmatVerticalNavigationComponent = this._cmatNavigationService.getComponent(this.name);\r\n\r\n // Subscribe to onRefreshed on the navigation component\r\n this._cmatVerticalNavigationComponent.onRefreshed.pipe(\r\n takeUntil(this._unsubscribeAll)\r\n ).subscribe(() => {\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id ?? index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Check if the given item has the given url\r\n * in one of its children\r\n *\r\n * @param item\r\n * @param currentUrl\r\n * @private\r\n */\r\n private _hasActiveChild(item: CmatNavigationItem, currentUrl: string): boolean {\r\n const children = item.children;\r\n\r\n if (!children) {\r\n return false;\r\n }\r\n\r\n for (const child of children) {\r\n if (child.children) {\r\n if (this._hasActiveChild(child, currentUrl)) {\r\n return true;\r\n }\r\n }\r\n\r\n // Skip items other than 'basic'\r\n if (child.type !== 'basic') {\r\n continue;\r\n }\r\n\r\n // Check if the child has a link and is active\r\n if (child.link && this._router.isActive(child.link, {\r\n paths: child.exactMatch || false ? 'exact' : 'subset',\r\n queryParams: child.exactMatch || false ? 'exact' : 'subset', fragment: 'ignored', matrixParams: 'ignored'\r\n })) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Decide and mark if the item is active\r\n *\r\n * @private\r\n */\r\n private _markIfActive(currentUrl: string): void {\r\n // Check if the activeItemId is equals to this item id\r\n this.active = this.activeItemId === this.item.id;\r\n\r\n // If the aside has a children that is active,\r\n // always mark it as active\r\n if (this._hasActiveChild(this.item, currentUrl)) {\r\n this.active = true;\r\n }\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-item-wrapper\" role=\"presentation\"\r\n [class.cmat-vertical-navigation-item-has-subtitle]=\"!!item.subTitle\" [ngClass]=\"item.classes?.wrapper\" (click)=\"selectItem(item);\">\r\n\r\n <div class=\"cmat-vertical-navigation-item\" [ngClass]=\"{'cmat-vertical-navigation-item-active': active,\r\n 'cmat-vertical-navigation-item-disabled': item.disabled,\r\n 'cmat-vertical-navigation-item-active-forced': item.active}\" [matTooltip]=\"item.tooltip || ''\">\r\n\r\n <!-- Icon -->\r\n @if (item.icon) {\r\n <mat-icon class=\"cmat-vertical-navigation-item-icon\" [ngClass]=\"item.classes?.icon\" [svgIcon]=\"item.icon\">\r\n </mat-icon>\r\n }\r\n\r\n <!-- Title & Subtitle -->\r\n <div class=\"cmat-vertical-navigation-item-title-wrapper\">\r\n <div class=\"cmat-vertical-navigation-item-title\">\r\n <span [ngClass]=\"item.classes?.title\">\r\n {{item.title}}\r\n </span>\r\n </div>\r\n @if (item.subTitle) {\r\n <div class=\"cmat-vertical-navigation-item-subtitle\">\r\n <span [ngClass]=\"item.classes?.subtitle\">\r\n {{item.subTitle}}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- Badge -->\r\n @if (item.badge) {\r\n <div class=\"cmat-vertical-navigation-item-badge\">\r\n <div class=\"cmat-vertical-navigation-item-badge-content\" [ngClass]=\"item.badge.classes\">\r\n {{item.badge.title}}\r\n </div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n</div>\r\n\r\n@if (!skipChildren) {\r\n <div class=\"cmat-vertical-navigation-item-children\">\r\n @for (item of item.children; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [autoCollapse]=\"autoCollapse\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { animate, AnimationBuilder, AnimationPlayer, style } from '@angular/animations';\r\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, Renderer2, SimpleChanges, ViewChild, ViewEncapsulation, inject } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { ReplaySubject, Subject } from 'rxjs';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatUtilsService } from 'cmat/services/utils';\r\nimport { CmatNavigationService } from '../navigation.service';\r\nimport { CmatNavigationItem, CmatVerticalNavigationAppearance, CmatVerticalNavigationMode, CmatVerticalNavigationPosition } from '../navigation.types';\r\nimport { CmatVerticalNavigationAsideItemComponent } from './components/aside/aside.component';\r\nimport { CmatVerticalNavigationBasicItemComponent } from './components/basic/basic.component';\r\nimport { CmatVerticalNavigationCollapsableItemComponent } from './components/collapsable/collapsable.component';\r\nimport { CmatVerticalNavigationDividerItemComponent } from './components/divider/divider.component';\r\nimport { CmatVerticalNavigationGroupItemComponent } from './components/group/group.component';\r\nimport { CmatVerticalNavigationSpacerItemComponent } from './components/spacer/spacer.component';\r\n\r\n\r\n@Component({\r\n selector: 'cmat-vertical-navigation',\r\n templateUrl: './vertical.component.html',\r\n styleUrls: ['./vertical.component.scss'],\r\n animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatVerticalNavigation',\r\n imports: [CmatVerticalNavigationAsideItemComponent, CmatVerticalNavigationBasicItemComponent,\r\n CmatVerticalNavigationCollapsableItemComponent, CmatVerticalNavigationDividerItemComponent,\r\n CmatVerticalNavigationGroupItemComponent, CmatVerticalNavigationSpacerItemComponent]\r\n})\r\nexport class CmatVerticalNavigationComponent implements OnChanges, OnInit, AfterViewInit, OnDestroy {\r\n /* eslint-disable @typescript-eslint/naming-convention */\r\n static ngAcceptInputType_inner: BooleanInput;\r\n static ngAcceptInputType_opened: BooleanInput;\r\n static ngAcceptInputType_transparentOverlay: BooleanInput;\r\n /* eslint-enable @typescript-eslint/naming-convention */\r\n\r\n @Input() appearance: CmatVerticalNavigationAppearance = 'default';\r\n @Input() autoCollapse: boolean = true;\r\n @Input() editState: boolean = false;\r\n @Input() inner: boolean = false;\r\n @Input() mode: CmatVerticalNavigationMode = 'side';\r\n @Input() name: string = inject(CmatUtilsService).randomId();\r\n @Input() navigation: CmatNavigationItem[];\r\n @Input() opened: boolean = true;\r\n @Input() position: CmatVerticalNavigationPosition = 'left';\r\n @Input() transparentOverlay: boolean = false;\r\n @Output() readonly appearanceChanged: EventEmitter<CmatVerticalNavigationAppearance> = new EventEmitter<CmatVerticalNavigationAppearance>();\r\n @Output() readonly modeChanged: EventEmitter<CmatVerticalNavigationMode> = new EventEmitter<CmatVerticalNavigationMode>();\r\n @Output() readonly openedChanged: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() readonly positionChanged: EventEmitter<CmatVerticalNavigationPosition> = new EventEmitter<CmatVerticalNavigationPosition>();\r\n @Output() readonly editSelectedItemChanged: EventEmitter<CmatNavigationItem> = new EventEmitter<CmatNavigationItem>();\r\n\r\n @ViewChild('navigationContent') private _navigationContentEl: ElementRef<HTMLDivElement>;\r\n\r\n activeAsideItemId: string | null = null;\r\n onCollapsableItemCollapsed: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onCollapsableItemExpanded: ReplaySubject<CmatNavigationItem> = new ReplaySubject<CmatNavigationItem>(1);\r\n onRefreshed: ReplaySubject<boolean> = new ReplaySubject<boolean>(1);\r\n\r\n private _animationBuilder = inject(AnimationBuilder);\r\n private _changeDetectorRef = inject(ChangeDetectorRef);\r\n private _elementRef = inject(ElementRef);\r\n private _renderer2 = inject(Renderer2);\r\n private _router = inject(Router);\r\n private _scrollStrategyOptions = inject(ScrollStrategyOptions);\r\n private _cmatNavigationService = inject(CmatNavigationService);\r\n\r\n private _animationsEnabled: boolean = false;\r\n private _asideOverlay: HTMLElement | null;\r\n private readonly _handleAsideOverlayClick: any;\r\n private readonly _handleOverlayClick: any;\r\n private _hovered: boolean = false;\r\n private _overlay: HTMLElement | null;\r\n private _player: AnimationPlayer;\r\n private _scrollStrategy: ScrollStrategy = this._scrollStrategyOptions.block();\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n\r\n\r\n constructor() {\r\n this._handleAsideOverlayClick = (): void => {\r\n this.closeAside();\r\n };\r\n this._handleOverlayClick = (): void => {\r\n this.close();\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Accessors\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Host binding for component classes\r\n */\r\n @HostBinding('class') get classList(): any {\r\n return {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-animations-enabled': this._animationsEnabled,\r\n [`cmat-vertical-navigation-appearance-${this.appearance}`]: true,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-hover': this._hovered,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-inner': this.inner,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-over': this.mode === 'over',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-mode-side': this.mode === 'side',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-opened': this.opened,\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-left': this.position === 'left',\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n 'cmat-vertical-navigation-position-right': this.position === 'right'\r\n };\r\n }\r\n\r\n /**\r\n * Host binding for component inline styles\r\n */\r\n @HostBinding('style') get styleList(): any {\r\n return {\r\n 'visibility': this.opened ? 'visible' : 'hidden'\r\n };\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Decorated methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On mouseenter\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseenter')\r\n onMouseenter(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = true;\r\n }\r\n\r\n /**\r\n * On mouseleave\r\n *\r\n * @private\r\n */\r\n @HostListener('mouseleave')\r\n onMouseleave(): void {\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // Set the hovered\r\n this._hovered = false;\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Lifecycle hooks\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * On changes\r\n *\r\n * @param changes\r\n */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n // Appearance\r\n if ('appearance' in changes) {\r\n // Execute the observable\r\n this.appearanceChanged.next(changes['appearance'].currentValue);\r\n }\r\n\r\n // Inner\r\n if ('inner' in changes) {\r\n // Coerce the value to a boolean\r\n this.inner = coerceBooleanProperty(changes['inner'].currentValue);\r\n }\r\n\r\n // Mode\r\n if ('mode' in changes) {\r\n // Get the previous and current values\r\n const currentMode = changes['mode'].currentValue;\r\n const previousMode = changes['mode'].previousValue;\r\n\r\n // Disable the animations\r\n this._disableAnimations();\r\n\r\n // If the mode changes: 'over -> side'\r\n if (previousMode === 'over' && currentMode === 'side') {\r\n // Hide the overlay\r\n this._hideOverlay();\r\n }\r\n\r\n // If the mode changes: 'side -> over'\r\n if (previousMode === 'side' && currentMode === 'over') {\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // If the navigation is opened\r\n if (this.opened) {\r\n // Show the overlay\r\n this._showOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.modeChanged.next(currentMode);\r\n\r\n // Enable the animations after a delay\r\n // The delay must be bigger than the current transition-duration\r\n // to make sure nothing will be animated while the mode changing\r\n setTimeout(() => {\r\n this._enableAnimations();\r\n }, 500);\r\n }\r\n\r\n // Navigation\r\n if ('navigation' in changes) {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n // Opened\r\n if ('opened' in changes) {\r\n // Coerce the value to a boolean\r\n this.opened = coerceBooleanProperty(changes['opened'].currentValue);\r\n\r\n // Open/close the navigation\r\n this._toggleOpened(this.opened);\r\n }\r\n\r\n // Position\r\n if ('position' in changes) {\r\n // Execute the observable\r\n this.positionChanged.next(changes['position'].currentValue);\r\n }\r\n\r\n // Transparent overlay\r\n if ('transparentOverlay' in changes) {\r\n // Coerce the value to a boolean\r\n this.transparentOverlay = coerceBooleanProperty(changes['transparentOverlay'].currentValue);\r\n }\r\n }\r\n\r\n /**\r\n * On init\r\n */\r\n ngOnInit(): void {\r\n // Make sure the name input is not an empty string\r\n if (this.name === '') {\r\n this.name = inject(CmatUtilsService).randomId();\r\n }\r\n\r\n // Register the navigation component\r\n this._cmatNavigationService.registerComponent(this.name, this);\r\n\r\n // Subscribe to the 'NavigationEnd' event\r\n this._router.events\r\n .pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n takeUntil(this._unsubscribeAll)\r\n )\r\n .subscribe(() => {\r\n\r\n // If the mode is 'over' and the navigation is opened...\r\n if (this.mode === 'over' && this.opened) {\r\n // Close the navigation\r\n this.close();\r\n }\r\n\r\n // If the mode is 'side' and the aside is active...\r\n if (this.mode === 'side' && this.activeAsideItemId) {\r\n // Close the aside\r\n this.closeAside();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * After view init\r\n */\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n\r\n // Return if 'navigation content' element does not exist\r\n if (!this._navigationContentEl) {\r\n return;\r\n }\r\n\r\n const activeItem = this._navigationContentEl.nativeElement.querySelector('.cmat-vertical-navigation-item-active')!;\r\n // If the active item exists, scroll it into view\r\n if (activeItem) {\r\n if (activeItem.getBoundingClientRect().bottom\r\n <= (this._navigationContentEl.nativeElement.getBoundingClientRect().bottom - Math.abs(-120))) {\r\n return;\r\n }\r\n\r\n this._navigationContentEl.nativeElement.scrollTo({\r\n top: activeItem.getBoundingClientRect().top -\r\n this._navigationContentEl.nativeElement.getBoundingClientRect().top - 120, behavior: 'smooth'\r\n });\r\n\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * On destroy\r\n */\r\n ngOnDestroy(): void {\r\n // Forcefully close the navigation and aside in case they are opened\r\n this.close();\r\n this.closeAside();\r\n\r\n // Deregister the navigation component from the registry\r\n this._cmatNavigationService.deregisterComponent(this.name);\r\n\r\n // Unsubscribe from all subscriptions\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Public methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Refresh the component to apply the changes\r\n */\r\n refresh(): void {\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n\r\n // Execute the observable\r\n this.onRefreshed.next(true);\r\n }\r\n\r\n /**\r\n * Open the navigation\r\n */\r\n open(): void {\r\n // Return if the navigation is already open\r\n if (this.opened) {\r\n return;\r\n }\r\n\r\n // Set the opened\r\n this._toggleOpened(true);\r\n }\r\n\r\n /**\r\n * Close the navigation\r\n */\r\n close(): void {\r\n // Return if the navigation is already closed\r\n if (!this.opened) {\r\n return;\r\n }\r\n\r\n // Close the aside\r\n this.closeAside();\r\n\r\n // Set the opened\r\n this._toggleOpened(false);\r\n }\r\n\r\n /**\r\n * Toggle the navigation\r\n */\r\n toggle(): void {\r\n // Toggle\r\n if (this.opened) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n\r\n /**\r\n * Open the aside\r\n *\r\n * @param item\r\n */\r\n openAside(item: CmatNavigationItem): void {\r\n // Return if the item is disabled\r\n if (item.disabled || !item.id) {\r\n return;\r\n }\r\n\r\n // Open\r\n this.activeAsideItemId = item.id;\r\n\r\n // Show the aside overlay\r\n this._showAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Close the aside\r\n */\r\n closeAside(): void {\r\n // Close\r\n this.activeAsideItemId = null;\r\n\r\n // Hide the aside overlay\r\n this._hideAsideOverlay();\r\n\r\n // Mark for check\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n /**\r\n * Toggle the aside\r\n *\r\n * @param item\r\n */\r\n toggleAside(item: CmatNavigationItem): void {\r\n // Toggle\r\n if (this.activeAsideItemId === item.id) {\r\n this.closeAside();\r\n }\r\n else {\r\n this.openAside(item);\r\n }\r\n }\r\n\r\n /**\r\n * Track by function for ngFor loops\r\n *\r\n * @param index\r\n * @param item\r\n */\r\n trackByFn(index: number, item: any): any {\r\n return item.id ?? index;\r\n }\r\n\r\n selectItem(item: CmatNavigationItem): void {\r\n this.editSelectedItemChanged.next(item);\r\n }\r\n\r\n\r\n // -----------------------------------------------------------------------------------------------------\r\n // @ Private methods\r\n // -----------------------------------------------------------------------------------------------------\r\n\r\n /**\r\n * Enable the animations\r\n *\r\n * @private\r\n */\r\n private _enableAnimations(): void {\r\n // Return if the animations are already enabled\r\n if (this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Enable the animations\r\n this._animationsEnabled = true;\r\n }\r\n\r\n /**\r\n * Disable the animations\r\n *\r\n * @private\r\n */\r\n private _disableAnimations(): void {\r\n // Return if the animations are already disabled\r\n if (!this._animationsEnabled) {\r\n return;\r\n }\r\n\r\n // Disable the animations\r\n this._animationsEnabled = false;\r\n }\r\n\r\n /**\r\n * Show the overlay\r\n *\r\n * @private\r\n */\r\n private _showOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the overlay element\r\n this._overlay = this._renderer2.createElement('div');\r\n\r\n if (this._overlay) {\r\n // Add a class to the overlay element\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay');\r\n\r\n // Add a class depending on the transparentOverlay option\r\n if (this.transparentOverlay) {\r\n this._overlay.classList.add('cmat-vertical-navigation-overlay-transparent');\r\n }\r\n\r\n // Append the overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._overlay);\r\n\r\n // Enable block scroll strategy\r\n this._scrollStrategy.enable();\r\n\r\n // Create the enter animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Add an event listener to the overlay\r\n this._overlay.addEventListener('click', this._handleOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the overlay\r\n *\r\n * @private\r\n */\r\n private _hideOverlay(): void {\r\n if (!this._overlay) {\r\n return;\r\n }\r\n\r\n // Create the leave animation and attach it to the player\r\n this._player = this._animationBuilder.build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._overlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n\r\n // If the overlay still exists...\r\n if (this._overlay) {\r\n // Remove the event listener\r\n this._overlay.removeEventListener('click', this._handleOverlayClick);\r\n\r\n // Remove the overlay\r\n this._overlay.parentNode?.removeChild(this._overlay);\r\n this._overlay = null;\r\n }\r\n\r\n // Disable block scroll strategy\r\n this._scrollStrategy.disable();\r\n });\r\n }\r\n\r\n /**\r\n * Show the aside overlay\r\n *\r\n * @private\r\n */\r\n private _showAsideOverlay(): void {\r\n // Return if there is already an overlay\r\n if (this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the aside overlay element\r\n this._asideOverlay = this._renderer2.createElement('div');\r\n\r\n if (this._asideOverlay) {\r\n // Add a class to the aside overlay element\r\n this._asideOverlay.classList.add('cmat-vertical-navigation-aside-overlay');\r\n\r\n // Append the aside overlay to the parent of the navigation\r\n this._renderer2.appendChild(this._elementRef.nativeElement.parentElement, this._asideOverlay);\r\n\r\n // Create the enter animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 1 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Add an event listener to the aside overlay\r\n this._asideOverlay.addEventListener('click', this._handleAsideOverlayClick);\r\n }\r\n }\r\n\r\n /**\r\n * Hide the aside overlay\r\n *\r\n * @private\r\n */\r\n private _hideAsideOverlay(): void {\r\n if (!this._asideOverlay) {\r\n return;\r\n }\r\n\r\n // Create the leave animation and attach it to the player\r\n this._player =\r\n this._animationBuilder\r\n .build([\r\n animate('300ms cubic-bezier(0.25, 0.8, 0.25, 1)', style({ opacity: 0 }))\r\n ]).create(this._asideOverlay);\r\n\r\n // Play the animation\r\n this._player.play();\r\n\r\n // Once the animation is done...\r\n this._player.onDone(() => {\r\n // If the aside overlay still exists...\r\n if (this._asideOverlay) {\r\n // Remove the event listener\r\n this._asideOverlay.removeEventListener('click', this._handleAsideOverlayClick);\r\n\r\n // Remove the aside overlay\r\n this._asideOverlay.parentNode?.removeChild(this._asideOverlay);\r\n this._asideOverlay = null;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Open/close the navigation\r\n *\r\n * @param open\r\n * @private\r\n */\r\n private _toggleOpened(open: boolean): void {\r\n // Set the opened\r\n this.opened = open;\r\n\r\n // Enable the animations\r\n this._enableAnimations();\r\n\r\n // If the navigation opened, and the mode\r\n // is 'over', show the overlay\r\n if (this.mode === 'over') {\r\n if (this.opened) {\r\n this._showOverlay();\r\n }\r\n else {\r\n this._hideOverlay();\r\n }\r\n }\r\n\r\n // Execute the observable\r\n this.openedChanged.next(open);\r\n }\r\n}\r\n","<div class=\"cmat-vertical-navigation-wrapper\">\r\n\r\n <!-- Header -->\r\n <div class=\"cmat-vertical-navigation-header\">\r\n <ng-content select=\"[cmatVerticalNavigationHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Content -->\r\n <div #navigationContent class=\"cmat-vertical-navigation-content py-2 overflow-y-auto scrollbar-custom\">\r\n\r\n <!-- Content header -->\r\n <div class=\"cmat-vertical-navigation-content-header\">\r\n <ng-content select=\"[cmatVerticalNavigationContentHeader]\"></ng-content>\r\n </div>\r\n\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside') {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [activeItemId]=\"activeAsideItemId\"\r\n [autoCollapse]=\"autoCollapse\" [skipChildren]=\"true\" [editState]=\"editState\" (click)=\"toggleAside(item)\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n <!-- Basic -->\r\n @if (item.type === 'basic') {\r\n <cmat-vertical-navigation-basic-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-basic-item>\r\n }\r\n <!-- Collapsable -->\r\n @if (item.type === 'collapsable') {\r\n <cmat-vertical-navigation-collapsable-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" [autoCollapse]=\"autoCollapse\"\r\n (editSelectedItemChanged)=\"selectItem($event)\"></cmat-vertical-navigation-collapsable-item>\r\n }\r\n <!-- Divider -->\r\n @if (item.type === 'divider') {\r\n <cmat-vertical-navigation-divider-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-divider-item>\r\n }\r\n <!-- Group -->\r\n @if (item.type === 'group') {\r\n <cmat-vertical-navigation-group-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-group-item>\r\n }\r\n <!-- Spacer -->\r\n @if (item.type === 'spacer') {\r\n <cmat-vertical-navigation-spacer-item [item]=\"item\" [name]=\"name\" [editState]=\"editState\" (editSelectedItemChanged)=\"selectItem($event)\">\r\n </cmat-vertical-navigation-spacer-item>\r\n }\r\n }\r\n }\r\n\r\n <!-- Content footer -->\r\n <div class=\"cmat-vertical-navigation-content-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationContentFooter]\"></ng-content>\r\n </div>\r\n\r\n </div>\r\n <!-- Footer -->\r\n <div class=\"cmat-vertical-navigation-footer\">\r\n <ng-content select=\"[cmatVerticalNavigationFooter]\"></ng-content>\r\n </div>\r\n\r\n</div>\r\n\r\n<!-- Aside -->\r\n@if (activeAsideItemId) {\r\n <div class=\"cmat-vertical-navigation-aside-wrapper overflow-y-auto scrollbar-custom\"\r\n [@fadeInLeft]=\"position === 'left'\" [@fadeInRight]=\"position === 'right'\" [@fadeOutLeft]=\"position === 'left'\"\r\n [@fadeOutRight]=\"position === 'right'\">\r\n <!-- Items -->\r\n @for (item of navigation; track trackByFn($index, item)) {\r\n <!-- Skip the hidden items -->\r\n @if ((item.hidden && !item.hidden(item)) || !item.hidden) {\r\n <!-- Aside -->\r\n @if (item.type === 'aside' && item.id === activeAsideItemId) {\r\n <cmat-vertical-navigation-aside-item [item]=\"item\" [name]=\"name\" [autoCollapse]=\"autoCollapse\">\r\n </cmat-vertical-navigation-aside-item>\r\n }\r\n }\r\n }\r\n </div>\r\n}","import { IsActiveMatchOptions } from '@angular/router';\r\n\r\nexport class CmatNavigationItem {\r\n id?: string;\r\n title?: string;\r\n subTitle?: string;\r\n type:\r\n | 'aside'\r\n | 'basic'\r\n | 'collapsable'\r\n | 'divider'\r\n | 'group'\r\n | 'spacer';\r\n hidden?: (item: CmatNavigationItem) => boolean;\r\n active?: boolean;\r\n disabled?: boolean;\r\n tooltip?: string;\r\n link?: string;\r\n externalLink?: boolean;\r\n target?:\r\n | '_blank'\r\n | '_self'\r\n | '_parent'\r\n | '_top';\r\n exactMatch?: boolean;\r\n isActiveMatchOptions?: IsActiveMatchOptions;\r\n function?: (item: CmatNavigationItem) => void;\r\n classes?: {\r\n title?: string;\r\n subtitle?: string;\r\n icon?: string;\r\n wrapper?: string;\r\n };\r\n icon?: string;\r\n badge?: {\r\n title?: string;\r\n classes?: string;\r\n };\r\n children?: CmatNavigationItem[];\r\n meta?: any;\r\n permission?: any;\r\n}\r\n\r\nexport type CmatVerticalNavigationAppearance =\r\n | 'default'\r\n | 'compact'\r\n | 'dense'\r\n | 'thin';\r\n\r\nexport type CmatVerticalNavigationMode =\r\n | 'over'\r\n | 'side';\r\n\r\nexport type CmatVerticalNavigationPosition =\r\n | 'left'\r\n | 'right';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1"],"mappings":"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"}
|