@mediusinc/mng-commons 0.0.1-rc.4 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pnpm-debug.log +15 -0
- package/README.md +95 -0
- package/assets/i18n/en.json +54 -3
- package/assets/i18n/sl.json +54 -8
- package/assets/images/effect-ondark.png +0 -0
- package/assets/images/effect-ondark.svg +38 -0
- package/assets/images/effect-ondark@2x.png +0 -0
- package/assets/images/effect-onlight.png +0 -0
- package/assets/images/effect-onlight.svg +38 -0
- package/assets/images/effect-onlight@2x.png +0 -0
- package/assets/images/pages/exception-ondark.png +0 -0
- package/assets/images/pages/exception-onlight.png +0 -0
- package/assets/images/pages/login-ondark.png +0 -0
- package/assets/images/pages/login-onlight.png +0 -0
- package/esm2020/lib/api/models/builders/query-param.builder.mjs +8 -8
- package/esm2020/lib/api/models/filter-match-type.model.mjs +14 -12
- package/esm2020/lib/api/models/filter-param.model.mjs +6 -6
- package/esm2020/lib/api/models/mappers.mjs +12 -12
- package/esm2020/lib/api/models/query-mode.model.mjs +7 -7
- package/esm2020/lib/api/models/query-param.model.mjs +5 -5
- package/esm2020/lib/api/models/query-result.model.mjs +15 -15
- package/esm2020/lib/api/services/abstract-crud-api.service.mjs +1 -1
- package/esm2020/lib/api/utils/medius-rest.util.mjs +99 -47
- package/esm2020/lib/components/action/action.component.mjs +3 -3
- package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +6 -4
- package/esm2020/lib/components/action/route/action-route.component.mjs +3 -3
- package/esm2020/lib/components/form/autocomplete/mng-autocomplete.component.mjs +114 -0
- package/esm2020/lib/components/form/dropdown/mng-dropdown.component.mjs +113 -0
- package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +7 -46
- package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +7 -39
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +1 -1
- package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +6 -6
- package/esm2020/lib/components/form/index.mjs +3 -1
- package/esm2020/lib/components/layout/breadcrumb.component.mjs +17 -0
- package/esm2020/lib/components/layout/footer.component.mjs +17 -0
- package/esm2020/lib/components/layout/index.mjs +7 -7
- package/esm2020/lib/components/layout/main-layout.component.mjs +33 -0
- package/esm2020/lib/components/layout/menu-item.component.mjs +173 -0
- package/esm2020/lib/components/layout/menu.component.mjs +20 -0
- package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +190 -0
- package/esm2020/lib/components/layout/topbar.component.mjs +40 -0
- package/esm2020/lib/components/tableview/index.mjs +3 -1
- package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +74 -0
- package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +25 -0
- package/esm2020/lib/components/tableview/table/table.component.mjs +175 -41
- package/esm2020/lib/components/tableview/tableview.component.mjs +5 -5
- package/esm2020/lib/mng-commons.module.mjs +70 -40
- package/esm2020/lib/models/config/mng-config.model.mjs +1 -1
- package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +1 -1
- package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +17 -12
- package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +291 -13
- package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +12 -3
- package/esm2020/lib/models/events/table-event.model.mjs +1 -1
- package/esm2020/lib/models/interfaces/index.mjs +2 -1
- package/esm2020/lib/models/interfaces/lookup.model.mjs +2 -0
- package/esm2020/lib/models/providers/data-provider.model.mjs +3 -3
- package/esm2020/lib/models/router/index.mjs +2 -0
- package/esm2020/lib/models/router/router.model.mjs +2 -0
- package/esm2020/lib/models/user/index.mjs +2 -0
- package/esm2020/lib/models/user/user.model.mjs +2 -0
- package/esm2020/lib/pipes/boolean.pipe.mjs +22 -0
- package/esm2020/lib/pipes/index.mjs +2 -1
- package/esm2020/lib/services/action.service.mjs +8 -7
- package/esm2020/lib/services/commons.service.mjs +357 -0
- package/esm2020/lib/services/configuration.service.mjs +7 -7
- package/esm2020/lib/services/index.mjs +2 -4
- package/esm2020/lib/services/navigation.service.mjs +5 -6
- package/esm2020/lib/services/providers/commons-init.provider.mjs +4 -0
- package/esm2020/lib/services/providers/config-service.provider.mjs +5 -5
- package/esm2020/lib/services/providers/formly-config.provider.mjs +2 -2
- package/esm2020/lib/utils/editor-formly.util.mjs +4 -4
- package/esm2020/lib/utils/i18n.util.mjs +37 -3
- package/esm2020/lib/utils/model.util.mjs +20 -1
- package/esm2020/lib/utils/toast.util.mjs +14 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/mediusinc-mng-commons.mjs +3404 -2526
- package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
- package/fesm2020/mediusinc-mng-commons.mjs +3328 -2472
- package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
- package/lib/api/models/builders/query-param.builder.d.ts +9 -9
- package/lib/api/models/filter-match-type.model.d.ts +7 -5
- package/lib/api/models/filter-param.model.d.ts +3 -3
- package/lib/api/models/query-mode.model.d.ts +1 -1
- package/lib/api/models/query-param.model.d.ts +5 -5
- package/lib/api/models/query-result.model.d.ts +5 -5
- package/lib/api/services/abstract-crud-api.service.d.ts +3 -3
- package/lib/api/utils/medius-rest.util.d.ts +9 -3
- package/lib/components/action/action.component.d.ts +2 -2
- package/lib/components/action/dialog/action-dialog.component.d.ts +3 -2
- package/lib/components/action/route/action-route.component.d.ts +2 -2
- package/lib/components/form/autocomplete/mng-autocomplete.component.d.ts +36 -0
- package/lib/components/form/dropdown/mng-dropdown.component.d.ts +34 -0
- package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +1 -11
- package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +0 -8
- package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +3 -3
- package/lib/components/form/index.d.ts +2 -0
- package/lib/components/layout/breadcrumb.component.d.ts +8 -0
- package/lib/components/layout/footer.component.d.ts +9 -0
- package/lib/components/layout/index.d.ts +6 -6
- package/lib/components/layout/main-layout.component.d.ts +13 -0
- package/lib/components/layout/menu-item.component.d.ts +29 -0
- package/lib/components/layout/menu.component.d.ts +10 -0
- package/lib/components/layout/services/main-layout.component.service.d.ts +65 -0
- package/lib/components/layout/topbar.component.d.ts +18 -0
- package/lib/components/tableview/index.d.ts +2 -0
- package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +22 -0
- package/lib/components/tableview/table/column-value/column-value.component.d.ts +12 -0
- package/lib/components/tableview/table/table.component.d.ts +42 -10
- package/lib/components/tableview/tableview.component.d.ts +3 -3
- package/lib/mng-commons.module.d.ts +66 -59
- package/lib/models/config/mng-config.model.d.ts +18 -1
- package/lib/models/descriptors/editor-descriptor.model.d.ts +9 -7
- package/lib/models/descriptors/table-descriptor.model.d.ts +133 -14
- package/lib/models/descriptors/tableview-descriptor.model.d.ts +6 -3
- package/lib/models/events/table-event.model.d.ts +4 -4
- package/lib/models/interfaces/index.d.ts +1 -0
- package/lib/models/interfaces/lookup.model.d.ts +17 -0
- package/lib/models/providers/data-provider.model.d.ts +10 -10
- package/lib/models/router/index.d.ts +1 -0
- package/lib/models/router/router.model.d.ts +9 -0
- package/lib/models/user/index.d.ts +1 -0
- package/lib/models/user/user.model.d.ts +8 -0
- package/lib/pipes/boolean.pipe.d.ts +7 -0
- package/lib/pipes/index.d.ts +1 -0
- package/lib/services/action.service.d.ts +3 -3
- package/lib/services/commons.service.d.ts +74 -0
- package/lib/services/configuration.service.d.ts +3 -3
- package/lib/services/index.d.ts +1 -3
- package/lib/services/navigation.service.d.ts +3 -3
- package/lib/services/providers/commons-init.provider.d.ts +2 -0
- package/lib/services/providers/config-service.provider.d.ts +3 -3
- package/lib/services/providers/formly-config.provider.d.ts +1 -1
- package/lib/utils/i18n.util.d.ts +3 -0
- package/lib/utils/model.util.d.ts +2 -0
- package/lib/utils/toast.util.d.ts +2 -1
- package/mediusinc-mng-commons-0.1.0.tgz +0 -0
- package/package.json +37 -36
- package/public-api.d.ts +2 -0
- package/scss/common/layout/_breadcrumb.scss +96 -0
- package/scss/common/layout/_config.scss +101 -0
- package/scss/common/layout/_dashboard.scss +16 -0
- package/scss/common/layout/_exception.scss +131 -0
- package/scss/common/layout/_footer.scss +29 -0
- package/scss/common/layout/_help.scss +157 -0
- package/scss/common/layout/_inlinemenu.scss +55 -0
- package/scss/common/layout/_invoice.scss +176 -0
- package/scss/common/layout/_landing.scss +639 -0
- package/scss/common/layout/_layout_dark.scss +23 -0
- package/scss/common/layout/_layout_light.scss +23 -0
- package/scss/common/layout/_loader.scss +18 -0
- package/scss/common/layout/_login.scss +106 -0
- package/scss/common/layout/_main.scss +45 -0
- package/scss/common/layout/_mixins.scss +214 -0
- package/scss/common/layout/_rightmenu.scss +125 -0
- package/scss/common/layout/_topbar.scss +189 -0
- package/scss/common/layout/_typography.scss +63 -0
- package/scss/common/layout/_utils.scss +96 -0
- package/scss/common/layout/_widgets.scss +391 -0
- package/scss/common/layout/menu/_menu.scss +7 -0
- package/scss/common/layout/menu/_menu_common.scss +183 -0
- package/scss/common/layout/menu/_menu_overlay.scss +52 -0
- package/scss/common/layout/menu/_menu_sidebar.scss +232 -0
- package/scss/common/layout/menu/_menu_slim.scss +138 -0
- package/scss/common/layout/menu/_menu_static.scss +70 -0
- package/scss/common/layout/menu/_menu_theme.scss +365 -0
- package/scss/common/theme/_theme_dark.scss +5 -0
- package/scss/common/theme/_theme_light.scss +5 -0
- package/scss/common/theme/designer/_colors.scss +18 -0
- package/scss/common/theme/designer/_common.scss +40 -0
- package/scss/common/theme/designer/_components.scss +101 -0
- package/scss/common/theme/designer/_mixins.scss +174 -0
- package/scss/common/theme/designer/components/button/_button.scss +560 -0
- package/scss/common/theme/designer/components/button/_speeddial.scss +79 -0
- package/scss/common/theme/designer/components/button/_splitbutton.scss +1 -0
- package/scss/common/theme/designer/components/data/_carousel.scss +37 -0
- package/scss/common/theme/designer/components/data/_datatable.scss +266 -0
- package/scss/common/theme/designer/components/data/_dataview.scss +55 -0
- package/scss/common/theme/designer/components/data/_filter.scss +138 -0
- package/scss/common/theme/designer/components/data/_fullcalendar.scss +324 -0
- package/scss/common/theme/designer/components/data/_orderlist.scss +91 -0
- package/scss/common/theme/designer/components/data/_organizationchart.scss +50 -0
- package/scss/common/theme/designer/components/data/_paginator.scss +83 -0
- package/scss/common/theme/designer/components/data/_picklist.scss +91 -0
- package/scss/common/theme/designer/components/data/_timeline.scss +38 -0
- package/scss/common/theme/designer/components/data/_tree.scss +144 -0
- package/scss/common/theme/designer/components/data/_treetable.scss +242 -0
- package/scss/common/theme/designer/components/data/_virtualscroller.scss +28 -0
- package/scss/common/theme/designer/components/file/_fileupload.scss +58 -0
- package/scss/common/theme/designer/components/input/_autocomplete.scss +103 -0
- package/scss/common/theme/designer/components/input/_calendar.scss +212 -0
- package/scss/common/theme/designer/components/input/_cascadeselect.scss +98 -0
- package/scss/common/theme/designer/components/input/_checkbox.scss +85 -0
- package/scss/common/theme/designer/components/input/_chips.scss +41 -0
- package/scss/common/theme/designer/components/input/_colorpicker.scss +19 -0
- package/scss/common/theme/designer/components/input/_dropdown.scss +136 -0
- package/scss/common/theme/designer/components/input/_editor.scss +122 -0
- package/scss/common/theme/designer/components/input/_inputgroup.scss +69 -0
- package/scss/common/theme/designer/components/input/_inputmask.scss +3 -0
- package/scss/common/theme/designer/components/input/_inputnumber.scss +3 -0
- package/scss/common/theme/designer/components/input/_inputswitch.scss +58 -0
- package/scss/common/theme/designer/components/input/_inputtext.scss +97 -0
- package/scss/common/theme/designer/components/input/_listbox.scss +82 -0
- package/scss/common/theme/designer/components/input/_multiselect.scss +164 -0
- package/scss/common/theme/designer/components/input/_password.scss +33 -0
- package/scss/common/theme/designer/components/input/_radiobutton.scss +78 -0
- package/scss/common/theme/designer/components/input/_rating.scss +48 -0
- package/scss/common/theme/designer/components/input/_selectbutton.scss +50 -0
- package/scss/common/theme/designer/components/input/_slider.scss +69 -0
- package/scss/common/theme/designer/components/input/_togglebutton.scss +48 -0
- package/scss/common/theme/designer/components/input/_treeselect.scss +89 -0
- package/scss/common/theme/designer/components/menu/_breadcrumb.scss +42 -0
- package/scss/common/theme/designer/components/menu/_contextmenu.scss +50 -0
- package/scss/common/theme/designer/components/menu/_dock.scss +51 -0
- package/scss/common/theme/designer/components/menu/_megamenu.scss +102 -0
- package/scss/common/theme/designer/components/menu/_menu.scss +41 -0
- package/scss/common/theme/designer/components/menu/_menubar.scss +179 -0
- package/scss/common/theme/designer/components/menu/_panelmenu.scss +137 -0
- package/scss/common/theme/designer/components/menu/_slidemenu.scss +55 -0
- package/scss/common/theme/designer/components/menu/_steps.scss +55 -0
- package/scss/common/theme/designer/components/menu/_tabmenu.scss +49 -0
- package/scss/common/theme/designer/components/menu/_tieredmenu.scss +56 -0
- package/scss/common/theme/designer/components/messages/_inlinemessage.scss +64 -0
- package/scss/common/theme/designer/components/messages/_message.scss +102 -0
- package/scss/common/theme/designer/components/messages/_toast.scss +95 -0
- package/scss/common/theme/designer/components/misc/_avatar.scss +30 -0
- package/scss/common/theme/designer/components/misc/_badge.scss +48 -0
- package/scss/common/theme/designer/components/misc/_blockui.scss +3 -0
- package/scss/common/theme/designer/components/misc/_chip.scss +36 -0
- package/scss/common/theme/designer/components/misc/_inplace.scss +17 -0
- package/scss/common/theme/designer/components/misc/_progressbar.scss +17 -0
- package/scss/common/theme/designer/components/misc/_scrolltop.scss +20 -0
- package/scss/common/theme/designer/components/misc/_skeleton.scss +8 -0
- package/scss/common/theme/designer/components/misc/_tag.scss +33 -0
- package/scss/common/theme/designer/components/misc/_terminal.scss +11 -0
- package/scss/common/theme/designer/components/multimedia/_galleria.scss +141 -0
- package/scss/common/theme/designer/components/overlay/_confirmpopup.scss +67 -0
- package/scss/common/theme/designer/components/overlay/_dialog.scss +63 -0
- package/scss/common/theme/designer/components/overlay/_overlaypanel.scss +62 -0
- package/scss/common/theme/designer/components/overlay/_sidebar.scss +27 -0
- package/scss/common/theme/designer/components/overlay/_tooltip.scss +33 -0
- package/scss/common/theme/designer/components/panel/_accordion.scss +119 -0
- package/scss/common/theme/designer/components/panel/_card.scss +30 -0
- package/scss/common/theme/designer/components/panel/_divider.scss +31 -0
- package/scss/common/theme/designer/components/panel/_fieldset.scss +47 -0
- package/scss/common/theme/designer/components/panel/_panel.scss +42 -0
- package/scss/common/theme/designer/components/panel/_scrollpanel.scss +6 -0
- package/scss/common/theme/designer/components/panel/_splitter.scss +19 -0
- package/scss/common/theme/designer/components/panel/_tabview.scss +66 -0
- package/scss/common/theme/designer/components/panel/_toolbar.scss +10 -0
- package/scss/common/theme/extensions/_button.scss +99 -0
- package/scss/common/theme/extensions/_calendar.scss +18 -0
- package/scss/common/theme/extensions/_card.scss +6 -0
- package/scss/common/theme/extensions/_carousel.scss +13 -0
- package/scss/common/theme/extensions/_checkbox.scss +10 -0
- package/scss/common/theme/extensions/_contextmenu.scss +16 -0
- package/scss/common/theme/extensions/_datatable.scss +83 -0
- package/scss/common/theme/extensions/_dialog.scss +14 -0
- package/scss/common/theme/extensions/_fieldset.scss +6 -0
- package/scss/common/theme/extensions/_galleria.scss +25 -0
- package/scss/common/theme/extensions/_megamenu.scss +18 -0
- package/scss/common/theme/extensions/_menu.scss +14 -0
- package/scss/common/theme/extensions/_menubar.scss +14 -0
- package/scss/common/theme/extensions/_orderlist.scss +38 -0
- package/scss/common/theme/extensions/_paginator.scss +19 -0
- package/scss/common/theme/extensions/_panelmenu.scss +20 -0
- package/scss/common/theme/extensions/_password.scss +5 -0
- package/scss/common/theme/extensions/_picklist.scss +38 -0
- package/scss/common/theme/extensions/_radiobutton.scss +8 -0
- package/scss/common/theme/extensions/_sidebar.scss +19 -0
- package/scss/common/theme/extensions/_slidemenu.scss +10 -0
- package/scss/common/theme/extensions/_slider.scss +6 -0
- package/scss/common/theme/extensions/_steps.scss +50 -0
- package/scss/common/theme/extensions/_tieredmenu.scss +14 -0
- package/scss/common/theme/extensions/_toast.scss +6 -0
- package/scss/common/theme/extensions/_tree.scss +36 -0
- package/scss/common/theme/extensions/_treetable.scss +35 -0
- package/scss/common/theme/extensions/_vendor_extensions.scss +27 -0
- package/scss/common/variables/layout/_common.scss +10 -0
- package/scss/common/variables/layout/_layout_dark.scss +70 -0
- package/scss/common/variables/layout/_layout_light.scss +70 -0
- package/scss/common/variables/theme/_theme_dark.scss +897 -0
- package/scss/common/variables/theme/_theme_light.scss +885 -0
- package/scss/layout/default/_mng-variables-layout-dark.scss +2 -0
- package/scss/layout/default/_mng-variables-layout-light.scss +2 -0
- package/scss/layout/default/layout-dark.scss +2 -0
- package/scss/layout/default/layout-light.scss +2 -0
- package/scss/mng-commons-dark.scss +10 -0
- package/scss/mng-commons-light.scss +13 -0
- package/scss/mng-overrides/_layout_action.scss +3 -0
- package/scss/mng-overrides/_layout_dialog.scss +34 -0
- package/scss/mng-overrides/_layout_forms.scss +31 -0
- package/scss/mng-overrides/_layout_radio.scss +3 -0
- package/scss/mng-overrides/_layout_styles.scss +4 -0
- package/scss/mng-overrides/_theme_datatable.scss +9 -0
- package/scss/mng-overrides/_theme_dialog.scss +9 -0
- package/scss/mng-overrides/_theme_dropdown.scss +6 -0
- package/scss/mng-overrides/_theme_styles.scss +9 -0
- package/scss/mng-overrides/_theme_tableview.scss +94 -0
- package/scss/theme/default/_mng-variables-theme-dark.scss +8 -0
- package/scss/theme/default/_mng-variables-theme-light.scss +8 -0
- package/scss/theme/default/theme-dark.scss +2 -0
- package/scss/theme/default/theme-light.scss +2 -0
- package/esm2020/lib/components/layout/app.breadcrumb.component.mjs +0 -26
- package/esm2020/lib/components/layout/app.footer.component.mjs +0 -35
- package/esm2020/lib/components/layout/app.main.component.mjs +0 -25
- package/esm2020/lib/components/layout/app.main.component.service.mjs +0 -133
- package/esm2020/lib/components/layout/app.menu.component.mjs +0 -24
- package/esm2020/lib/components/layout/app.menuitem.component.mjs +0 -241
- package/esm2020/lib/components/layout/app.topbar.component.mjs +0 -135
- package/esm2020/lib/services/breadcrumb.service.mjs +0 -74
- package/esm2020/lib/services/menu.service.mjs +0 -37
- package/esm2020/lib/services/settings.service.mjs +0 -81
- package/lib/components/layout/app.breadcrumb.component.d.ts +0 -14
- package/lib/components/layout/app.footer.component.d.ts +0 -8
- package/lib/components/layout/app.main.component.d.ts +0 -12
- package/lib/components/layout/app.main.component.service.d.ts +0 -40
- package/lib/components/layout/app.menu.component.d.ts +0 -15
- package/lib/components/layout/app.menuitem.component.d.ts +0 -31
- package/lib/components/layout/app.topbar.component.d.ts +0 -15
- package/lib/services/breadcrumb.service.d.ts +0 -15
- package/lib/services/menu.service.d.ts +0 -16
- package/lib/services/settings.service.d.ts +0 -30
- package/mediusinc-mng-commons-0.0.1-rc.4.tgz +0 -0
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { NavigationEnd } from '@angular/router';
|
|
3
|
-
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
4
|
-
import { filter } from 'rxjs/operators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../services/settings.service";
|
|
7
|
-
import * as i2 from "./app.main.component.service";
|
|
8
|
-
import * as i3 from "@angular/router";
|
|
9
|
-
import * as i4 from "../../services/menu.service";
|
|
10
|
-
import * as i5 from "@angular/common";
|
|
11
|
-
import * as i6 from "primeng/ripple";
|
|
12
|
-
import * as i7 from "@ngx-translate/core";
|
|
13
|
-
export class AppMenuitemComponent {
|
|
14
|
-
constructor(appSettings, appMainService, router, cd, menuService) {
|
|
15
|
-
this.appSettings = appSettings;
|
|
16
|
-
this.appMainService = appMainService;
|
|
17
|
-
this.router = router;
|
|
18
|
-
this.cd = cd;
|
|
19
|
-
this.menuService = menuService;
|
|
20
|
-
this.index = 0;
|
|
21
|
-
this.root = false;
|
|
22
|
-
this.parentKey = null;
|
|
23
|
-
this.active = false;
|
|
24
|
-
this.hover = false;
|
|
25
|
-
this.key = '';
|
|
26
|
-
this.menuSourceSubscription = this.menuService.menu$.subscribe(key => {
|
|
27
|
-
// deactivate current active menu
|
|
28
|
-
if (this.active && this.key !== key && key.indexOf(this.key) !== 0) {
|
|
29
|
-
this.active = false;
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
this.menuResetSubscription = this.menuService.reset$.subscribe(() => {
|
|
33
|
-
this.active = false;
|
|
34
|
-
});
|
|
35
|
-
this.router.events.pipe(filter(event => event instanceof NavigationEnd))
|
|
36
|
-
.subscribe(params => {
|
|
37
|
-
if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()) {
|
|
38
|
-
this.active = false;
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
if (this.item.routerLink) {
|
|
42
|
-
this.updateActiveStateFromRoute();
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
this.active = false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
ngOnInit() {
|
|
51
|
-
if (!(this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.item.routerLink) {
|
|
52
|
-
this.updateActiveStateFromRoute();
|
|
53
|
-
}
|
|
54
|
-
this.key = this.parentKey ? this.parentKey + '-' + this.index : String(this.index);
|
|
55
|
-
}
|
|
56
|
-
updateActiveStateFromRoute() {
|
|
57
|
-
this.active = this.router.isActive(this.item.routerLink[0], this.item.items ? false : true);
|
|
58
|
-
}
|
|
59
|
-
itemClick(event) {
|
|
60
|
-
// avoid processing disabled items
|
|
61
|
-
if (this.item.disabled) {
|
|
62
|
-
event.preventDefault();
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
// navigate with hover in horizontal mode
|
|
66
|
-
if (this.root) {
|
|
67
|
-
this.appMainService.menuHoverActive = !this.appMainService.menuHoverActive;
|
|
68
|
-
}
|
|
69
|
-
// notify other items
|
|
70
|
-
this.menuService.onMenuStateChange(this.key);
|
|
71
|
-
// execute command
|
|
72
|
-
if (this.item.command) {
|
|
73
|
-
this.item.command({ originalEvent: event, item: this.item });
|
|
74
|
-
}
|
|
75
|
-
// toggle active state
|
|
76
|
-
if (this.item.items) {
|
|
77
|
-
this.active = !this.active;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
// activate item
|
|
81
|
-
this.active = true;
|
|
82
|
-
if (this.appMainService.isMobile()) {
|
|
83
|
-
this.appMainService.staticMenuMobileActive = false;
|
|
84
|
-
}
|
|
85
|
-
if (this.appSettings.isOverlay()) {
|
|
86
|
-
this.appMainService.overlayMenuActive = false;
|
|
87
|
-
}
|
|
88
|
-
// reset horizontal menu
|
|
89
|
-
if ((this.appSettings.isSlim() || this.appSettings.isHorizontal()) && !this.appMainService.isMobile()) {
|
|
90
|
-
this.menuService.reset();
|
|
91
|
-
this.appMainService.menuHoverActive = false;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
onMouseEnter() {
|
|
96
|
-
// activate item on hover
|
|
97
|
-
if (this.root && this.appMainService.menuHoverActive && (this.appSettings.isSlim() || this.appSettings.isHorizontal()) && this.appMainService.isDesktop()) {
|
|
98
|
-
this.menuService.onMenuStateChange(this.key);
|
|
99
|
-
this.active = true;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
ngOnDestroy() {
|
|
103
|
-
if (this.menuSourceSubscription) {
|
|
104
|
-
this.menuSourceSubscription.unsubscribe();
|
|
105
|
-
}
|
|
106
|
-
if (this.menuResetSubscription) {
|
|
107
|
-
this.menuResetSubscription.unsubscribe();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
AppMenuitemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuitemComponent, deps: [{ token: i1.AppSettingsService }, { token: i2.AppMainComponentService }, { token: i3.Router }, { token: i0.ChangeDetectorRef }, { token: i4.MenuService }], target: i0.ɵɵFactoryTarget.Component });
|
|
112
|
-
AppMenuitemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AppMenuitemComponent, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey" }, host: { properties: { "class.layout-root-menuitem": "root", "class.active-menuitem": "active" } }, ngImport: i0, template: `
|
|
113
|
-
<ng-container>
|
|
114
|
-
<div *ngIf="root && item.visible !== false" class="layout-menuitem-root-text">{{ item.label | translate }}</div>
|
|
115
|
-
<a [attr.href]="item.url" (click)="itemClick($event)" *ngIf="(!item.routerLink || item.items) && item.visible !== false"
|
|
116
|
-
(mouseenter)="onMouseEnter()" (keydown.enter)="itemClick($event)"
|
|
117
|
-
[attr.target]="item.target" [attr.tabindex]="0" [ngClass]="item.class" pRipple>
|
|
118
|
-
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
119
|
-
<span class="layout-menuitem-text">{{ item.label | translate }}</span>
|
|
120
|
-
<i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
|
|
121
|
-
<span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
|
|
122
|
-
</a>
|
|
123
|
-
<a (click)="itemClick($event)" (mouseenter)="hover=true" (mouseleave)="hover=false"
|
|
124
|
-
*ngIf="(item.routerLink && !item.items) && item.visible !== false"
|
|
125
|
-
[routerLink]="item.routerLink" routerLinkActive="active-menuitem-routerlink"
|
|
126
|
-
[routerLinkActiveOptions]="{exact: true}" [attr.target]="item.target" [attr.tabindex]="0"
|
|
127
|
-
[ngClass]="item.class" pRipple>
|
|
128
|
-
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
129
|
-
<span class="layout-menuitem-text">{{ item.label | translate }}</span>
|
|
130
|
-
<i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
|
|
131
|
-
<span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
|
|
132
|
-
</a>
|
|
133
|
-
<ul *ngIf="((item.items && active) || (item.items && appSettings.isStatic() && (root || active))) && item.visible !== false" [@children]="(
|
|
134
|
-
(appSettings.isSlim()||appSettings.isHorizontal()) && !appMainService.isMobile() && root) ?
|
|
135
|
-
(active ? 'visible' : 'hidden') :
|
|
136
|
-
(appSettings.isStatic() && root && !appMainService.isMobile() ? 'visible' : (active ? 'visibleAnimated' : 'hiddenAnimated'))">
|
|
137
|
-
<ng-template ngFor let-child let-i="index" [ngForOf]="item.items">
|
|
138
|
-
<li app-menuitem [item]="child" [index]="i" [parentKey]="key" [class]="child.badgeClass"></li>
|
|
139
|
-
</ng-template>
|
|
140
|
-
</ul>
|
|
141
|
-
</ng-container>
|
|
142
|
-
`, isInline: true, components: [{ type: AppMenuitemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.Ripple, selector: "[pRipple]" }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "translate": i7.TranslatePipe }, animations: [
|
|
143
|
-
trigger('children', [
|
|
144
|
-
state('void', style({
|
|
145
|
-
height: '0px'
|
|
146
|
-
})),
|
|
147
|
-
state('hiddenAnimated', style({
|
|
148
|
-
height: '0px'
|
|
149
|
-
})),
|
|
150
|
-
state('visibleAnimated', style({
|
|
151
|
-
height: '*'
|
|
152
|
-
})),
|
|
153
|
-
state('visible', style({
|
|
154
|
-
height: '*',
|
|
155
|
-
'z-index': 100
|
|
156
|
-
})),
|
|
157
|
-
state('hidden', style({
|
|
158
|
-
height: '0px',
|
|
159
|
-
'z-index': '*'
|
|
160
|
-
})),
|
|
161
|
-
transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
162
|
-
transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
163
|
-
transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
|
|
164
|
-
])
|
|
165
|
-
] });
|
|
166
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppMenuitemComponent, decorators: [{
|
|
167
|
-
type: Component,
|
|
168
|
-
args: [{
|
|
169
|
-
/* tslint:disable:component-selector */
|
|
170
|
-
selector: '[app-menuitem]',
|
|
171
|
-
/* tslint:enable:component-selector */
|
|
172
|
-
template: `
|
|
173
|
-
<ng-container>
|
|
174
|
-
<div *ngIf="root && item.visible !== false" class="layout-menuitem-root-text">{{ item.label | translate }}</div>
|
|
175
|
-
<a [attr.href]="item.url" (click)="itemClick($event)" *ngIf="(!item.routerLink || item.items) && item.visible !== false"
|
|
176
|
-
(mouseenter)="onMouseEnter()" (keydown.enter)="itemClick($event)"
|
|
177
|
-
[attr.target]="item.target" [attr.tabindex]="0" [ngClass]="item.class" pRipple>
|
|
178
|
-
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
179
|
-
<span class="layout-menuitem-text">{{ item.label | translate }}</span>
|
|
180
|
-
<i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
|
|
181
|
-
<span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
|
|
182
|
-
</a>
|
|
183
|
-
<a (click)="itemClick($event)" (mouseenter)="hover=true" (mouseleave)="hover=false"
|
|
184
|
-
*ngIf="(item.routerLink && !item.items) && item.visible !== false"
|
|
185
|
-
[routerLink]="item.routerLink" routerLinkActive="active-menuitem-routerlink"
|
|
186
|
-
[routerLinkActiveOptions]="{exact: true}" [attr.target]="item.target" [attr.tabindex]="0"
|
|
187
|
-
[ngClass]="item.class" pRipple>
|
|
188
|
-
<i [ngClass]="item.icon" class="layout-menuitem-icon"></i>
|
|
189
|
-
<span class="layout-menuitem-text">{{ item.label | translate }}</span>
|
|
190
|
-
<i class="pi pi-fw pi-angle-down layout-submenu-toggler" *ngIf="item.items"></i>
|
|
191
|
-
<span class="menuitem-badge" *ngIf="item.badge">{{item.badge}}</span>
|
|
192
|
-
</a>
|
|
193
|
-
<ul *ngIf="((item.items && active) || (item.items && appSettings.isStatic() && (root || active))) && item.visible !== false" [@children]="(
|
|
194
|
-
(appSettings.isSlim()||appSettings.isHorizontal()) && !appMainService.isMobile() && root) ?
|
|
195
|
-
(active ? 'visible' : 'hidden') :
|
|
196
|
-
(appSettings.isStatic() && root && !appMainService.isMobile() ? 'visible' : (active ? 'visibleAnimated' : 'hiddenAnimated'))">
|
|
197
|
-
<ng-template ngFor let-child let-i="index" [ngForOf]="item.items">
|
|
198
|
-
<li app-menuitem [item]="child" [index]="i" [parentKey]="key" [class]="child.badgeClass"></li>
|
|
199
|
-
</ng-template>
|
|
200
|
-
</ul>
|
|
201
|
-
</ng-container>
|
|
202
|
-
`,
|
|
203
|
-
host: {
|
|
204
|
-
'[class.layout-root-menuitem]': 'root',
|
|
205
|
-
'[class.active-menuitem]': 'active'
|
|
206
|
-
},
|
|
207
|
-
animations: [
|
|
208
|
-
trigger('children', [
|
|
209
|
-
state('void', style({
|
|
210
|
-
height: '0px'
|
|
211
|
-
})),
|
|
212
|
-
state('hiddenAnimated', style({
|
|
213
|
-
height: '0px'
|
|
214
|
-
})),
|
|
215
|
-
state('visibleAnimated', style({
|
|
216
|
-
height: '*'
|
|
217
|
-
})),
|
|
218
|
-
state('visible', style({
|
|
219
|
-
height: '*',
|
|
220
|
-
'z-index': 100
|
|
221
|
-
})),
|
|
222
|
-
state('hidden', style({
|
|
223
|
-
height: '0px',
|
|
224
|
-
'z-index': '*'
|
|
225
|
-
})),
|
|
226
|
-
transition('visibleAnimated => hiddenAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
227
|
-
transition('hiddenAnimated => visibleAnimated', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)')),
|
|
228
|
-
transition('void => visibleAnimated, visibleAnimated => void', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
|
|
229
|
-
])
|
|
230
|
-
]
|
|
231
|
-
}]
|
|
232
|
-
}], ctorParameters: function () { return [{ type: i1.AppSettingsService }, { type: i2.AppMainComponentService }, { type: i3.Router }, { type: i0.ChangeDetectorRef }, { type: i4.MenuService }]; }, propDecorators: { item: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], index: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], root: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], parentKey: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}] } });
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1lbnVpdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21uZy1jb21tb25zL3NyYy9saWIvY29tcG9uZW50cy9sYXlvdXQvYXBwLm1lbnVpdGVtLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBdUMsTUFBTSxlQUFlLENBQUM7QUFDckYsT0FBTyxFQUFTLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFHL0UsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFzRXRDLE1BQU0sT0FBTyxvQkFBb0I7SUFvQjdCLFlBQW1CLFdBQStCLEVBQVMsY0FBdUMsRUFBUyxNQUFjLEVBQVUsRUFBcUIsRUFBVSxXQUF3QjtRQUF2SyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFBUyxtQkFBYyxHQUFkLGNBQWMsQ0FBeUI7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQWhCakwsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUVsQixTQUFJLEdBQVksS0FBSyxDQUFDO1FBRXRCLGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBRXZDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFZixVQUFLLEdBQVksS0FBSyxDQUFDO1FBTXZCLFFBQUcsR0FBVyxFQUFFLENBQUM7UUFHYixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2pFLGlDQUFpQztZQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUN2QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEUsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxZQUFZLGFBQWEsQ0FBQyxDQUFDO2FBQ25FLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNuRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO29CQUN0QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztpQkFDckM7cUJBQU07b0JBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQ3ZCO2FBQ0o7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDekYsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7U0FDckM7UUFFRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELDBCQUEwQjtRQUN0QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBWTtRQUNsQixrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNwQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztTQUNWO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7U0FDOUU7UUFFRCxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFN0Msa0JBQWtCO1FBQ2xCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztTQUM5RDtRQUVELHNCQUFzQjtRQUN0QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzlCO2FBQU07WUFDSCxnQkFBZ0I7WUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFFbkIsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQzthQUN0RDtZQUVELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7YUFDakQ7WUFFRCx3QkFBd0I7WUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsRUFBQztnQkFDbEcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2FBQy9DO1NBQ0o7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLHlCQUF5QjtRQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3ZKLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1NBQ3RCO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUM3QixJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0M7UUFFRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM1QixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUM7SUFDTCxDQUFDOztpSEFySFEsb0JBQW9CO3FHQUFwQixvQkFBb0IseU9BNURuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBOEJULHVDQThCUSxvQkFBb0IsNDJCQXpCakI7UUFDUixPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ2hCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dCQUNoQixNQUFNLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7WUFDSCxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDO2dCQUMxQixNQUFNLEVBQUUsS0FBSzthQUNoQixDQUFDLENBQUM7WUFDSCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDO2dCQUMzQixNQUFNLEVBQUUsR0FBRzthQUNkLENBQUMsQ0FBQztZQUNILEtBQUssQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDO2dCQUNuQixNQUFNLEVBQUUsR0FBRztnQkFDWCxTQUFTLEVBQUUsR0FBRzthQUNqQixDQUFDLENBQUM7WUFDSCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztnQkFDbEIsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsU0FBUyxFQUFFLEdBQUc7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsVUFBVSxDQUFDLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQ2hHLFVBQVUsQ0FBQyxtQ0FBbUMsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUNoRyxVQUFVLENBQUMsa0RBQWtELEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7U0FDbEgsQ0FBQztLQUNMOzJGQUVRLG9CQUFvQjtrQkFoRWhDLFNBQVM7bUJBQUM7b0JBQ1AsdUNBQXVDO29CQUN2QyxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixzQ0FBc0M7b0JBQ3RDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBOEJUO29CQUNELElBQUksRUFBRTt3QkFDRiw4QkFBOEIsRUFBRSxNQUFNO3dCQUN0Qyx5QkFBeUIsRUFBRSxRQUFRO3FCQUN0QztvQkFDRCxVQUFVLEVBQUU7d0JBQ1IsT0FBTyxDQUFDLFVBQVUsRUFBRTs0QkFDaEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7Z0NBQ2hCLE1BQU0sRUFBRSxLQUFLOzZCQUNoQixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQztnQ0FDMUIsTUFBTSxFQUFFLEtBQUs7NkJBQ2hCLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDO2dDQUMzQixNQUFNLEVBQUUsR0FBRzs2QkFDZCxDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUM7Z0NBQ25CLE1BQU0sRUFBRSxHQUFHO2dDQUNYLFNBQVMsRUFBRSxHQUFHOzZCQUNqQixDQUFDLENBQUM7NEJBQ0gsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxLQUFLO2dDQUNiLFNBQVMsRUFBRSxHQUFHOzZCQUNqQixDQUFDLENBQUM7NEJBQ0gsVUFBVSxDQUFDLG1DQUFtQyxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDOzRCQUNoRyxVQUFVLENBQUMsbUNBQW1DLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7NEJBQ2hHLFVBQVUsQ0FBQyxrREFBa0QsRUFBRSxPQUFPLENBQUMsc0NBQXNDLENBQUMsQ0FBQzt5QkFDbEgsQ0FBQztxQkFDTDtpQkFDSjs4TkFHWSxJQUFJO3NCQUFaLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLElBQUk7c0JBQVosS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIElucHV0LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXIsIE5hdmlnYXRpb25FbmR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge3RyaWdnZXIsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgYW5pbWF0ZX0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7TWVudVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21lbnUuc2VydmljZSc7XG5pbXBvcnQge0FwcFNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQge0FwcE1haW5Db21wb25lbnRTZXJ2aWNlfSBmcm9tICcuL2FwcC5tYWluLmNvbXBvbmVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgLyogdHNsaW50OmRpc2FibGU6Y29tcG9uZW50LXNlbGVjdG9yICovXG4gICAgc2VsZWN0b3I6ICdbYXBwLW1lbnVpdGVtXScsXG4gICAgLyogdHNsaW50OmVuYWJsZTpjb21wb25lbnQtc2VsZWN0b3IgKi9cbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvb3QgJiYgaXRlbS52aXNpYmxlICE9PSBmYWxzZVwiIGNsYXNzPVwibGF5b3V0LW1lbnVpdGVtLXJvb3QtdGV4dFwiPnt7IGl0ZW0ubGFiZWwgfCB0cmFuc2xhdGUgfX08L2Rpdj5cbiAgICAgICAgICAgIDxhIFthdHRyLmhyZWZdPVwiaXRlbS51cmxcIiAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudClcIiAqbmdJZj1cIighaXRlbS5yb3V0ZXJMaW5rIHx8IGl0ZW0uaXRlbXMpICYmIGl0ZW0udmlzaWJsZSAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAoa2V5ZG93bi5lbnRlcik9XCJpdGVtQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICBbYXR0ci50YXJnZXRdPVwiaXRlbS50YXJnZXRcIiBbYXR0ci50YWJpbmRleF09XCIwXCIgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0taWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxheW91dC1tZW51aXRlbS10ZXh0XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiICpuZ0lmPVwiaXRlbS5pdGVtc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCI+e3tpdGVtLmJhZGdlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwiaXRlbUNsaWNrKCRldmVudClcIiAobW91c2VlbnRlcik9XCJob3Zlcj10cnVlXCIgKG1vdXNlbGVhdmUpPVwiaG92ZXI9ZmFsc2VcIlxuICAgICAgICAgICAgICAgKm5nSWY9XCIoaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLml0ZW1zKSAmJiBpdGVtLnZpc2libGUgIT09IGZhbHNlXCJcbiAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiIHJvdXRlckxpbmtBY3RpdmU9XCJhY3RpdmUtbWVudWl0ZW0tcm91dGVybGlua1wiXG4gICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OiB0cnVlfVwiIFthdHRyLnRhcmdldF09XCJpdGVtLnRhcmdldFwiIFthdHRyLnRhYmluZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiaXRlbS5jbGFzc1wiIHBSaXBwbGU+XG4gICAgICAgICAgICAgICAgPGkgW25nQ2xhc3NdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJsYXlvdXQtbWVudWl0ZW0taWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxheW91dC1tZW51aXRlbS10ZXh0XCI+e3sgaXRlbS5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWFuZ2xlLWRvd24gbGF5b3V0LXN1Ym1lbnUtdG9nZ2xlclwiICpuZ0lmPVwiaXRlbS5pdGVtc1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lbnVpdGVtLWJhZGdlXCIgKm5nSWY9XCJpdGVtLmJhZGdlXCI+e3tpdGVtLmJhZGdlfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8dWwgKm5nSWY9XCIoKGl0ZW0uaXRlbXMgJiYgYWN0aXZlKSB8fCAoaXRlbS5pdGVtcyAmJiBhcHBTZXR0aW5ncy5pc1N0YXRpYygpICYmIChyb290IHx8IGFjdGl2ZSkpKSAmJiBpdGVtLnZpc2libGUgIT09IGZhbHNlXCIgW0BjaGlsZHJlbl09XCIoXG4gICAgICAgICAgICAoYXBwU2V0dGluZ3MuaXNTbGltKCl8fGFwcFNldHRpbmdzLmlzSG9yaXpvbnRhbCgpKSAmJiAhYXBwTWFpblNlcnZpY2UuaXNNb2JpbGUoKSAmJiByb290KSA/XG4gICAgICAgICAgICAoYWN0aXZlID8gJ3Zpc2libGUnIDogJ2hpZGRlbicpIDpcbiAgICAgICAgICAgIChhcHBTZXR0aW5ncy5pc1N0YXRpYygpICYmIHJvb3QgJiYgIWFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkgPyAndmlzaWJsZScgOiAoYWN0aXZlID8gJ3Zpc2libGVBbmltYXRlZCcgOiAnaGlkZGVuQW5pbWF0ZWQnKSlcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdGb3IgbGV0LWNoaWxkIGxldC1pPVwiaW5kZXhcIiBbbmdGb3JPZl09XCJpdGVtLml0ZW1zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgYXBwLW1lbnVpdGVtIFtpdGVtXT1cImNoaWxkXCIgW2luZGV4XT1cImlcIiBbcGFyZW50S2V5XT1cImtleVwiIFtjbGFzc109XCJjaGlsZC5iYWRnZUNsYXNzXCI+PC9saT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgYCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MubGF5b3V0LXJvb3QtbWVudWl0ZW1dJzogJ3Jvb3QnLFxuICAgICAgICAnW2NsYXNzLmFjdGl2ZS1tZW51aXRlbV0nOiAnYWN0aXZlJ1xuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdjaGlsZHJlbicsIFtcbiAgICAgICAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJzBweCdcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHN0YXRlKCdoaWRkZW5BbmltYXRlZCcsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwcHgnXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZUFuaW1hdGVkJywgc3R5bGUoe1xuICAgICAgICAgICAgICAgIGhlaWdodDogJyonXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICBzdGF0ZSgndmlzaWJsZScsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcqJyxcbiAgICAgICAgICAgICAgICAnei1pbmRleCc6IDEwMFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgc3RhdGUoJ2hpZGRlbicsIHN0eWxlKHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICcwcHgnLFxuICAgICAgICAgICAgICAgICd6LWluZGV4JzogJyonXG4gICAgICAgICAgICB9KSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2aXNpYmxlQW5pbWF0ZWQgPT4gaGlkZGVuQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCdoaWRkZW5BbmltYXRlZCA9PiB2aXNpYmxlQW5pbWF0ZWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCd2b2lkID0+IHZpc2libGVBbmltYXRlZCwgdmlzaWJsZUFuaW1hdGVkID0+IHZvaWQnLCBhbmltYXRlKCc0MDBtcyBjdWJpYy1iZXppZXIoMC44NiwgMCwgMC4wNywgMSknKSlcbiAgICAgICAgXSlcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEFwcE1lbnVpdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KCkgaXRlbTogYW55O1xuXG4gICAgQElucHV0KCkgaW5kZXg6IG51bWJlciA9IDA7XG5cbiAgICBASW5wdXQoKSByb290OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBwYXJlbnRLZXk6IHN0cmluZ3xudWxsID0gbnVsbDtcblxuICAgIGFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG1lbnVTb3VyY2VTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIG1lbnVSZXNldFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAga2V5OiBzdHJpbmcgPSAnJztcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhcHBTZXR0aW5nczogQXBwU2V0dGluZ3NTZXJ2aWNlLCBwdWJsaWMgYXBwTWFpblNlcnZpY2U6IEFwcE1haW5Db21wb25lbnRTZXJ2aWNlLCBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIG1lbnVTZXJ2aWNlOiBNZW51U2VydmljZSkge1xuICAgICAgICB0aGlzLm1lbnVTb3VyY2VTdWJzY3JpcHRpb24gPSB0aGlzLm1lbnVTZXJ2aWNlLm1lbnUkLnN1YnNjcmliZShrZXkgPT4ge1xuICAgICAgICAgICAgLy8gZGVhY3RpdmF0ZSBjdXJyZW50IGFjdGl2ZSBtZW51XG4gICAgICAgICAgICBpZiAodGhpcy5hY3RpdmUgJiYgdGhpcy5rZXkgIT09IGtleSAmJiBrZXkuaW5kZXhPZih0aGlzLmtleSkgIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm1lbnVSZXNldFN1YnNjcmlwdGlvbiA9IHRoaXMubWVudVNlcnZpY2UucmVzZXQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuYXBwU2V0dGluZ3MuaXNTbGltKCkgfHwgdGhpcy5hcHBTZXR0aW5ncy5pc0hvcml6b250YWwoKSkgJiYgIXRoaXMuYXBwTWFpblNlcnZpY2UuaXNNb2JpbGUoKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVTdGF0ZUZyb21Sb3V0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoISh0aGlzLmFwcFNldHRpbmdzLmlzU2xpbSgpIHx8IHRoaXMuYXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkpICYmIHRoaXMuaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmtleSA9IHRoaXMucGFyZW50S2V5ID8gdGhpcy5wYXJlbnRLZXkgKyAnLScgKyB0aGlzLmluZGV4IDogU3RyaW5nKHRoaXMuaW5kZXgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUFjdGl2ZVN0YXRlRnJvbVJvdXRlKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRoaXMucm91dGVyLmlzQWN0aXZlKHRoaXMuaXRlbS5yb3V0ZXJMaW5rWzBdLCB0aGlzLml0ZW0uaXRlbXMgPyBmYWxzZSA6IHRydWUpO1xuICAgIH1cblxuICAgIGl0ZW1DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gYXZvaWQgcHJvY2Vzc2luZyBkaXNhYmxlZCBpdGVtc1xuICAgICAgICBpZiAodGhpcy5pdGVtLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbmF2aWdhdGUgd2l0aCBob3ZlciBpbiBob3Jpem9udGFsIG1vZGVcbiAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmUgPSAhdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBub3RpZnkgb3RoZXIgaXRlbXNcbiAgICAgICAgdGhpcy5tZW51U2VydmljZS5vbk1lbnVTdGF0ZUNoYW5nZSh0aGlzLmtleSk7XG5cbiAgICAgICAgLy8gZXhlY3V0ZSBjb21tYW5kXG4gICAgICAgIGlmICh0aGlzLml0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgdGhpcy5pdGVtLmNvbW1hbmQoe29yaWdpbmFsRXZlbnQ6IGV2ZW50LCBpdGVtOiB0aGlzLml0ZW19KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRvZ2dsZSBhY3RpdmUgc3RhdGVcbiAgICAgICAgaWYgKHRoaXMuaXRlbS5pdGVtcykge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSAhdGhpcy5hY3RpdmU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBhY3RpdmF0ZSBpdGVtXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLnN0YXRpY01lbnVNb2JpbGVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuYXBwU2V0dGluZ3MuaXNPdmVybGF5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLm92ZXJsYXlNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHJlc2V0IGhvcml6b250YWwgbWVudVxuICAgICAgICAgICAgaWYgKCh0aGlzLmFwcFNldHRpbmdzLmlzU2xpbSgpIHx8IHRoaXMuYXBwU2V0dGluZ3MuaXNIb3Jpem9udGFsKCkpICYmICF0aGlzLmFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKCkpe1xuICAgICAgICAgICAgICAgIHRoaXMubWVudVNlcnZpY2UucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcE1haW5TZXJ2aWNlLm1lbnVIb3ZlckFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICAvLyBhY3RpdmF0ZSBpdGVtIG9uIGhvdmVyXG4gICAgICAgIGlmICh0aGlzLnJvb3QgJiYgdGhpcy5hcHBNYWluU2VydmljZS5tZW51SG92ZXJBY3RpdmUgJiYgKHRoaXMuYXBwU2V0dGluZ3MuaXNTbGltKCkgfHwgdGhpcy5hcHBTZXR0aW5ncy5pc0hvcml6b250YWwoKSkgJiYgdGhpcy5hcHBNYWluU2VydmljZS5pc0Rlc2t0b3AoKSkge1xuICAgICAgICAgICAgdGhpcy5tZW51U2VydmljZS5vbk1lbnVTdGF0ZUNoYW5nZSh0aGlzLmtleSk7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudVNvdXJjZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5tZW51U291cmNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5tZW51UmVzZXRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMubWVudVJlc2V0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../../services/settings.service";
|
|
4
|
-
import * as i2 from "./app.main.component.service";
|
|
5
|
-
import * as i3 from "./app.breadcrumb.component";
|
|
6
|
-
import * as i4 from "./app.menu.component";
|
|
7
|
-
import * as i5 from "primeng/dropdown";
|
|
8
|
-
import * as i6 from "@angular/common";
|
|
9
|
-
import * as i7 from "@angular/forms";
|
|
10
|
-
import * as i8 from "@ngx-translate/core";
|
|
11
|
-
export class AppTopbarComponent {
|
|
12
|
-
constructor(appSettings, appMainService
|
|
13
|
-
// private userService: UserApiService TODO
|
|
14
|
-
) {
|
|
15
|
-
this.appSettings = appSettings;
|
|
16
|
-
this.appMainService = appMainService;
|
|
17
|
-
// public user: UserDto; TODO
|
|
18
|
-
this.languages = ['en'];
|
|
19
|
-
this.selectedLanguage = 'en';
|
|
20
|
-
}
|
|
21
|
-
switchLanguage(language) {
|
|
22
|
-
this.appSettings.applicationLanguage = language;
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.languages = this.appSettings.applicationLanguages;
|
|
26
|
-
this.selectedLanguage = this.appSettings.applicationLanguage;
|
|
27
|
-
// this.userService.getCurrentUser().subscribe(obj => this.user = obj);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
AppTopbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppTopbarComponent, deps: [{ token: i1.AppSettingsService }, { token: i2.AppMainComponentService }], target: i0.ɵɵFactoryTarget.Component });
|
|
31
|
-
AppTopbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: AppTopbarComponent, selector: "app-topbar", ngImport: i0, template: `
|
|
32
|
-
<div class="layout-topbar">
|
|
33
|
-
<div class="layout-topbar-left">
|
|
34
|
-
<a href="#" class="topbar-menu-button" (click)="appMainService.onMenuButtonClick($event)" *ngIf="appSettings.isOverlay() || appMainService.isMobile()">
|
|
35
|
-
<i class="pi pi-bars"></i>
|
|
36
|
-
</a>
|
|
37
|
-
|
|
38
|
-
<app-breadcrumb></app-breadcrumb>
|
|
39
|
-
</div>
|
|
40
|
-
|
|
41
|
-
<app-menu></app-menu>
|
|
42
|
-
|
|
43
|
-
<div class="layout-topbar-right">
|
|
44
|
-
<ul class="layout-topbar-right-items">
|
|
45
|
-
<li #profile class="profile-item" [ngClass]="{'active-topmenuitem':appMainService.activeTopbarItem === profile}">
|
|
46
|
-
<!-- {{user?.name}} TODO -->
|
|
47
|
-
<div *ngIf="languages.length > 1" class="flex align-items-center">
|
|
48
|
-
<i class="pi pi-fw pi-globe"></i>
|
|
49
|
-
<p-dropdown [ngModel]="selectedLanguage" [options]="languages" (onChange)="switchLanguage($event.value)"></p-dropdown>
|
|
50
|
-
</div>
|
|
51
|
-
<a href="#" (click)="appMainService.onTopbarItemClick($event,profile)">
|
|
52
|
-
<i class="pi pi-fw pi-user"></i>
|
|
53
|
-
</a>
|
|
54
|
-
|
|
55
|
-
<ul class="fadeInDown">
|
|
56
|
-
<li role="menuitem">
|
|
57
|
-
<a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
|
|
58
|
-
<i class="pi pi-fw pi-user"></i>
|
|
59
|
-
<span>{{ 'mngTopbar.profile' | translate }}</span>
|
|
60
|
-
</a>
|
|
61
|
-
</li>
|
|
62
|
-
<li role="menuitem">
|
|
63
|
-
<a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
|
|
64
|
-
<i class="pi pi-fw pi-cog"></i>
|
|
65
|
-
<span>{{ 'mngTopbar.settings' | translate }}</span>
|
|
66
|
-
</a>
|
|
67
|
-
</li>
|
|
68
|
-
<li role="menuitem">
|
|
69
|
-
<a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
|
|
70
|
-
<i class="pi pi-fw pi-sign-out"></i>
|
|
71
|
-
<span>{{ 'mngTopbar.logout' | translate }}</span>
|
|
72
|
-
</a>
|
|
73
|
-
</li>
|
|
74
|
-
</ul>
|
|
75
|
-
</li>
|
|
76
|
-
</ul>
|
|
77
|
-
</div>
|
|
78
|
-
</div>
|
|
79
|
-
`, isInline: true, components: [{ type: i3.AppBreadcrumbComponent, selector: "app-breadcrumb" }, { type: i4.AppMenuComponent, selector: "app-menu" }, { type: i5.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "virtualScroll", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaFilterLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "disabled", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "translate": i8.TranslatePipe } });
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppTopbarComponent, decorators: [{
|
|
81
|
-
type: Component,
|
|
82
|
-
args: [{
|
|
83
|
-
selector: 'app-topbar',
|
|
84
|
-
template: `
|
|
85
|
-
<div class="layout-topbar">
|
|
86
|
-
<div class="layout-topbar-left">
|
|
87
|
-
<a href="#" class="topbar-menu-button" (click)="appMainService.onMenuButtonClick($event)" *ngIf="appSettings.isOverlay() || appMainService.isMobile()">
|
|
88
|
-
<i class="pi pi-bars"></i>
|
|
89
|
-
</a>
|
|
90
|
-
|
|
91
|
-
<app-breadcrumb></app-breadcrumb>
|
|
92
|
-
</div>
|
|
93
|
-
|
|
94
|
-
<app-menu></app-menu>
|
|
95
|
-
|
|
96
|
-
<div class="layout-topbar-right">
|
|
97
|
-
<ul class="layout-topbar-right-items">
|
|
98
|
-
<li #profile class="profile-item" [ngClass]="{'active-topmenuitem':appMainService.activeTopbarItem === profile}">
|
|
99
|
-
<!-- {{user?.name}} TODO -->
|
|
100
|
-
<div *ngIf="languages.length > 1" class="flex align-items-center">
|
|
101
|
-
<i class="pi pi-fw pi-globe"></i>
|
|
102
|
-
<p-dropdown [ngModel]="selectedLanguage" [options]="languages" (onChange)="switchLanguage($event.value)"></p-dropdown>
|
|
103
|
-
</div>
|
|
104
|
-
<a href="#" (click)="appMainService.onTopbarItemClick($event,profile)">
|
|
105
|
-
<i class="pi pi-fw pi-user"></i>
|
|
106
|
-
</a>
|
|
107
|
-
|
|
108
|
-
<ul class="fadeInDown">
|
|
109
|
-
<li role="menuitem">
|
|
110
|
-
<a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
|
|
111
|
-
<i class="pi pi-fw pi-user"></i>
|
|
112
|
-
<span>{{ 'mngTopbar.profile' | translate }}</span>
|
|
113
|
-
</a>
|
|
114
|
-
</li>
|
|
115
|
-
<li role="menuitem">
|
|
116
|
-
<a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
|
|
117
|
-
<i class="pi pi-fw pi-cog"></i>
|
|
118
|
-
<span>{{ 'mngTopbar.settings' | translate }}</span>
|
|
119
|
-
</a>
|
|
120
|
-
</li>
|
|
121
|
-
<li role="menuitem">
|
|
122
|
-
<a href="#" (click)="appMainService.onTopbarSubItemClick($event)">
|
|
123
|
-
<i class="pi pi-fw pi-sign-out"></i>
|
|
124
|
-
<span>{{ 'mngTopbar.logout' | translate }}</span>
|
|
125
|
-
</a>
|
|
126
|
-
</li>
|
|
127
|
-
</ul>
|
|
128
|
-
</li>
|
|
129
|
-
</ul>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
`
|
|
133
|
-
}]
|
|
134
|
-
}], ctorParameters: function () { return [{ type: i1.AppSettingsService }, { type: i2.AppMainComponentService }]; } });
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLnRvcGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbmctY29tbW9ucy9zcmMvbGliL2NvbXBvbmVudHMvbGF5b3V0L2FwcC50b3BiYXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVMsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7Ozs7QUF5RGhELE1BQU0sT0FBTyxrQkFBa0I7SUFNM0IsWUFBbUIsV0FBK0IsRUFDL0IsY0FBdUM7SUFDOUMsMkNBQTJDOztRQUZwQyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQXlCO1FBTDFELDZCQUE2QjtRQUN0QixjQUFTLEdBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMscUJBQWdCLEdBQVcsSUFBSSxDQUFDO0lBS3BDLENBQUM7SUFFSixjQUFjLENBQUMsUUFBZ0I7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsR0FBRyxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7UUFDdkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUM7UUFDN0QsdUVBQXVFO0lBQzNFLENBQUM7OytHQW5CUSxrQkFBa0I7bUdBQWxCLGtCQUFrQixrREFsRGpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnRFQ7MkZBRVEsa0JBQWtCO2tCQXBEOUIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnRFQ7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtBcHBTZXR0aW5nc1NlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NldHRpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHtBcHBNYWluQ29tcG9uZW50U2VydmljZX0gZnJvbSAnLi9hcHAubWFpbi5jb21wb25lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXRvcGJhcicsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dC10b3BiYXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXQtdG9wYmFyLWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGNsYXNzPVwidG9wYmFyLW1lbnUtYnV0dG9uXCIgKGNsaWNrKT1cImFwcE1haW5TZXJ2aWNlLm9uTWVudUJ1dHRvbkNsaWNrKCRldmVudClcIiAqbmdJZj1cImFwcFNldHRpbmdzLmlzT3ZlcmxheSgpIHx8IGFwcE1haW5TZXJ2aWNlLmlzTW9iaWxlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1iYXJzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYT5cblxuICAgICAgICAgICAgICAgIDxhcHAtYnJlYWRjcnVtYj48L2FwcC1icmVhZGNydW1iPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhcHAtbWVudT48L2FwcC1tZW51PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXRvcGJhci1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxheW91dC10b3BiYXItcmlnaHQtaXRlbXNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpICNwcm9maWxlIGNsYXNzPVwicHJvZmlsZS1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3RpdmUtdG9wbWVudWl0ZW0nOmFwcE1haW5TZXJ2aWNlLmFjdGl2ZVRvcGJhckl0ZW0gPT09IHByb2ZpbGV9XCI+XG48IS0tICAgICAgICAgICAgICAgICAgICAgICAge3t1c2VyPy5uYW1lfX0gVE9ETyAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsYW5ndWFnZXMubGVuZ3RoID4gMVwiIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLWdsb2JlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtuZ01vZGVsXT1cInNlbGVjdGVkTGFuZ3VhZ2VcIiBbb3B0aW9uc109XCJsYW5ndWFnZXNcIiAob25DaGFuZ2UpPVwic3dpdGNoTGFuZ3VhZ2UoJGV2ZW50LnZhbHVlKVwiPjwvcC1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwiYXBwTWFpblNlcnZpY2Uub25Ub3BiYXJJdGVtQ2xpY2soJGV2ZW50LHByb2ZpbGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS11c2VyXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJmYWRlSW5Eb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHJvbGU9XCJtZW51aXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCJhcHBNYWluU2VydmljZS5vblRvcGJhclN1Ykl0ZW1DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWZ3IHBpLXVzZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyAnbW5nVG9wYmFyLnByb2ZpbGUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgcm9sZT1cIm1lbnVpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgKGNsaWNrKT1cImFwcE1haW5TZXJ2aWNlLm9uVG9wYmFyU3ViSXRlbUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktZncgcGktY29nXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgJ21uZ1RvcGJhci5zZXR0aW5ncycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSByb2xlPVwibWVudWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cIiNcIiAoY2xpY2spPVwiYXBwTWFpblNlcnZpY2Uub25Ub3BiYXJTdWJJdGVtQ2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1mdyBwaS1zaWduLW91dFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ICdtbmdUb3BiYXIubG9nb3V0JyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBBcHBUb3BiYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLy8gcHVibGljIHVzZXI6IFVzZXJEdG87IFRPRE9cbiAgICBwdWJsaWMgbGFuZ3VhZ2VzOiBBcnJheTxzdHJpbmc+ID0gWydlbiddO1xuICAgIHB1YmxpYyBzZWxlY3RlZExhbmd1YWdlOiBzdHJpbmcgPSAnZW4nO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGFwcFNldHRpbmdzOiBBcHBTZXR0aW5nc1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHVibGljIGFwcE1haW5TZXJ2aWNlOiBBcHBNYWluQ29tcG9uZW50U2VydmljZVxuICAgICAgICAgICAgICAgIC8vIHByaXZhdGUgdXNlclNlcnZpY2U6IFVzZXJBcGlTZXJ2aWNlIFRPRE9cbiAgICApIHt9XG5cbiAgICBzd2l0Y2hMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYXBwU2V0dGluZ3MuYXBwbGljYXRpb25MYW5ndWFnZSA9IGxhbmd1YWdlO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmxhbmd1YWdlcyA9IHRoaXMuYXBwU2V0dGluZ3MuYXBwbGljYXRpb25MYW5ndWFnZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSA9IHRoaXMuYXBwU2V0dGluZ3MuYXBwbGljYXRpb25MYW5ndWFnZTtcbiAgICAgICAgLy8gdGhpcy51c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLnN1YnNjcmliZShvYmogPT4gdGhpcy51c2VyID0gb2JqKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { NavigationEnd } from '@angular/router';
|
|
4
|
-
import { filter } from "rxjs/operators";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/router";
|
|
7
|
-
import * as i2 from "@ngx-translate/core";
|
|
8
|
-
export class AppBreadcrumbService {
|
|
9
|
-
constructor(router, translateService) {
|
|
10
|
-
this.router = router;
|
|
11
|
-
this.translateService = translateService;
|
|
12
|
-
// Subject emitting the breadcrumb hierarchy
|
|
13
|
-
this.breadcrumbsSubject = new BehaviorSubject([]);
|
|
14
|
-
this.router.events.pipe(
|
|
15
|
-
// Filter the NavigationEnd events as the breadcrumb is updated only when the route reaches its end
|
|
16
|
-
filter((event) => event instanceof NavigationEnd)).subscribe(event => {
|
|
17
|
-
// Construct the breadcrumb hierarchy
|
|
18
|
-
const root = this.router.routerState.snapshot.root;
|
|
19
|
-
const breadcrumbs = [];
|
|
20
|
-
this.addBreadcrumb(root, [], breadcrumbs);
|
|
21
|
-
breadcrumbs.forEach(breadcrumb => {
|
|
22
|
-
if (breadcrumb.label) {
|
|
23
|
-
this.translateService.get(breadcrumb.label).subscribe(translation => breadcrumb.label = translation);
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
console.error('Breadcrumb does not have a registered label');
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
// Emit the new hierarchy
|
|
30
|
-
this.breadcrumbsSubject.next(breadcrumbs);
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
get breadcrumbs() {
|
|
34
|
-
return this.breadcrumbsSubject.asObservable();
|
|
35
|
-
}
|
|
36
|
-
addBreadcrumb(route, parentUrl, breadcrumbs) {
|
|
37
|
-
if (!route) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const routeUrl = parentUrl.concat(route.url.map(url => url.path));
|
|
41
|
-
if (route.data['breadcrumb']) {
|
|
42
|
-
const breadcrumbData = route.data['breadcrumb'];
|
|
43
|
-
if (Array.isArray(breadcrumbData)) {
|
|
44
|
-
for (const breadcrumbPart of breadcrumbData) {
|
|
45
|
-
const breadcrumb = {
|
|
46
|
-
label: this.getLabel(route.data, breadcrumbPart),
|
|
47
|
-
routerLink: '/' + routeUrl.join('/')
|
|
48
|
-
};
|
|
49
|
-
breadcrumbs.push(breadcrumb);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
const breadcrumb = {
|
|
54
|
-
label: this.getLabel(route.data, breadcrumbData),
|
|
55
|
-
routerLink: '/' + routeUrl.join('/')
|
|
56
|
-
};
|
|
57
|
-
breadcrumbs.push(breadcrumb);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
this.addBreadcrumb(route.firstChild, routeUrl, breadcrumbs);
|
|
61
|
-
}
|
|
62
|
-
getLabel(data, breadcrumb) {
|
|
63
|
-
return typeof breadcrumb === 'function' ? breadcrumb(data) : breadcrumb;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
AppBreadcrumbService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppBreadcrumbService, deps: [{ token: i1.Router }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
67
|
-
AppBreadcrumbService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppBreadcrumbService, providedIn: 'root' });
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AppBreadcrumbService, decorators: [{
|
|
69
|
-
type: Injectable,
|
|
70
|
-
args: [{
|
|
71
|
-
providedIn: 'root'
|
|
72
|
-
}]
|
|
73
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.TranslateService }]; } });
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW5nLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9icmVhZGNydW1iLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBK0IsYUFBYSxFQUFTLE1BQU0saUJBQWlCLENBQUM7QUFFcEYsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBS3RDLE1BQU0sT0FBTyxvQkFBb0I7SUFTN0IsWUFBb0IsTUFBYyxFQUNkLGdCQUFrQztRQURsQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVJ0RCw0Q0FBNEM7UUFDM0IsdUJBQWtCLEdBQUcsSUFBSSxlQUFlLENBQWEsRUFBRSxDQUFDLENBQUM7UUFRdEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSTtRQUNuQixtR0FBbUc7UUFDbkcsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLFlBQVksYUFBYSxDQUFDLENBQ3BELENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hCLHFDQUFxQztZQUNyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQ25ELE1BQU0sV0FBVyxHQUFlLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFFMUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDN0IsSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFO29CQUNsQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDO2lCQUN4RztxQkFBTTtvQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7aUJBQ2hFO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFFSCx5QkFBeUI7WUFDekIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUExQkQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xELENBQUM7SUEwQk8sYUFBYSxDQUFDLEtBQW9DLEVBQUUsU0FBbUIsRUFBRSxXQUF1QjtRQUNwRyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1IsT0FBTztTQUNWO1FBRUQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUUxQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBRWhELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRTtnQkFDL0IsS0FBSyxNQUFNLGNBQWMsSUFBSSxjQUFjLEVBQUU7b0JBQ3pDLE1BQU0sVUFBVSxHQUFHO3dCQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDO3dCQUNoRCxVQUFVLEVBQUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO3FCQUN2QyxDQUFDO29CQUNGLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ2hDO2FBQ0o7aUJBQU07Z0JBQ0gsTUFBTSxVQUFVLEdBQUc7b0JBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUM7b0JBQ2hELFVBQVUsRUFBRSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ3ZDLENBQUM7Z0JBQ0YsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQztTQUNKO1FBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sUUFBUSxDQUFDLElBQVUsRUFBRSxVQUF3QztRQUNqRSxPQUFRLE9BQU8sVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDN0UsQ0FBQzs7aUhBaEVRLG9CQUFvQjtxSEFBcEIsb0JBQW9CLGNBRmpCLE1BQU07MkZBRVQsb0JBQW9CO2tCQUhoQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIERhdGEsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7ZmlsdGVyfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBcHBCcmVhZGNydW1iU2VydmljZSB7XG5cbiAgICAvLyBTdWJqZWN0IGVtaXR0aW5nIHRoZSBicmVhZGNydW1iIGhpZXJhcmNoeVxuICAgIHByaXZhdGUgcmVhZG9ubHkgYnJlYWRjcnVtYnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNZW51SXRlbVtdPihbXSk7XG5cbiAgICBwdWJsaWMgZ2V0IGJyZWFkY3J1bWJzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5icmVhZGNydW1ic1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgICAgICAgICAvLyBGaWx0ZXIgdGhlIE5hdmlnYXRpb25FbmQgZXZlbnRzIGFzIHRoZSBicmVhZGNydW1iIGlzIHVwZGF0ZWQgb25seSB3aGVuIHRoZSByb3V0ZSByZWFjaGVzIGl0cyBlbmRcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICAgICAgKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBicmVhZGNydW1iIGhpZXJhcmNoeVxuICAgICAgICAgICAgY29uc3Qgcm9vdCA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iczogTWVudUl0ZW1bXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5hZGRCcmVhZGNydW1iKHJvb3QsIFtdLCBicmVhZGNydW1icyk7XG5cbiAgICAgICAgICAgIGJyZWFkY3J1bWJzLmZvckVhY2goYnJlYWRjcnVtYiA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmdldChicmVhZGNydW1iLmxhYmVsKS5zdWJzY3JpYmUodHJhbnNsYXRpb24gPT4gYnJlYWRjcnVtYi5sYWJlbCA9IHRyYW5zbGF0aW9uKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdCcmVhZGNydW1iIGRvZXMgbm90IGhhdmUgYSByZWdpc3RlcmVkIGxhYmVsJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vIEVtaXQgdGhlIG5ldyBoaWVyYXJjaHlcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNTdWJqZWN0Lm5leHQoYnJlYWRjcnVtYnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZEJyZWFkY3J1bWIocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfCBudWxsLCBwYXJlbnRVcmw6IHN0cmluZ1tdLCBicmVhZGNydW1iczogTWVudUl0ZW1bXSkge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByb3V0ZVVybCA9IHBhcmVudFVybC5jb25jYXQocm91dGUudXJsLm1hcCh1cmwgPT4gdXJsLnBhdGgpKTtcbiAgICAgICAgaWYgKHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXSkge1xuXG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iRGF0YSA9IHJvdXRlLmRhdGFbJ2JyZWFkY3J1bWInXTtcblxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnJlYWRjcnVtYkRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBicmVhZGNydW1iUGFydCBvZiBicmVhZGNydW1iRGF0YSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuZ2V0TGFiZWwocm91dGUuZGF0YSwgYnJlYWRjcnVtYlBhcnQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyTGluazogJy8nICsgcm91dGVVcmwuam9pbignLycpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5nZXRMYWJlbChyb3V0ZS5kYXRhLCBicmVhZGNydW1iRGF0YSksXG4gICAgICAgICAgICAgICAgICAgIHJvdXRlckxpbms6ICcvJyArIHJvdXRlVXJsLmpvaW4oJy8nKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaChicmVhZGNydW1iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZEJyZWFkY3J1bWIocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmwsIGJyZWFkY3J1bWJzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldExhYmVsKGRhdGE6IERhdGEsIGJyZWFkY3J1bWI6IChhcmcwOiBEYXRhKSA9PiBhbnkgfCBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuICB0eXBlb2YgYnJlYWRjcnVtYiA9PT0gJ2Z1bmN0aW9uJyA/IGJyZWFkY3J1bWIoZGF0YSkgOiBicmVhZGNydW1iO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class MenuService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this._menuItems = [];
|
|
7
|
-
this.menuSourceSubject = new Subject();
|
|
8
|
-
this.resetSourceSubject = new Subject();
|
|
9
|
-
}
|
|
10
|
-
onMenuStateChange(key) {
|
|
11
|
-
this.menuSourceSubject.next(key);
|
|
12
|
-
}
|
|
13
|
-
reset() {
|
|
14
|
-
this.resetSourceSubject.next(null);
|
|
15
|
-
}
|
|
16
|
-
get menu$() {
|
|
17
|
-
return this.menuSourceSubject.asObservable();
|
|
18
|
-
}
|
|
19
|
-
get reset$() {
|
|
20
|
-
return this.resetSourceSubject.asObservable();
|
|
21
|
-
}
|
|
22
|
-
get menuItems() {
|
|
23
|
-
return this._menuItems;
|
|
24
|
-
}
|
|
25
|
-
set menuItems(value) {
|
|
26
|
-
this._menuItems = value;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
MenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
30
|
-
MenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MenuService, providedIn: 'root' });
|
|
31
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: MenuService, decorators: [{
|
|
32
|
-
type: Injectable,
|
|
33
|
-
args: [{
|
|
34
|
-
providedIn: 'root'
|
|
35
|
-
}]
|
|
36
|
-
}] });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW5nLWNvbW1vbnMvc3JjL2xpYi9zZXJ2aWNlcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQU16QyxNQUFNLE9BQU8sV0FBVztJQUh4QjtRQUtZLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFDNUIsc0JBQWlCLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUMxQyx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0tBeUI5QztJQXZCRyxpQkFBaUIsQ0FBQyxHQUFXO1FBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsU0FBUyxDQUFDLEtBQWlCO1FBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7O3dHQTVCUSxXQUFXOzRHQUFYLFdBQVcsY0FGUixNQUFNOzJGQUVULFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7TWVudUl0ZW19IGZyb20gXCJwcmltZW5nL2FwaVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgX21lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuICAgIHByaXZhdGUgbWVudVNvdXJjZVN1YmplY3QgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gICAgcHJpdmF0ZSByZXNldFNvdXJjZVN1YmplY3QgPSBuZXcgU3ViamVjdCgpO1xuXG4gICAgb25NZW51U3RhdGVDaGFuZ2Uoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tZW51U291cmNlU3ViamVjdC5uZXh0KGtleSk7XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMucmVzZXRTb3VyY2VTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51JCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5tZW51U291cmNlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJlc2V0JCgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXNldFNvdXJjZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtZW51SXRlbXMoKTogTWVudUl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tZW51SXRlbXM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBtZW51SXRlbXModmFsdWU6IE1lbnVJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fbWVudUl0ZW1zID0gdmFsdWU7XG4gICAgfVxufVxuIl19
|