@updevs/components 1.0.0-alpha.8 → 1.0.0-alpha.81
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/README.md +1 -11
- package/assets/styles/_bootstrap-components.scss +18 -1
- package/assets/styles/_core.scss +9 -0
- package/assets/styles/_debug.scss +49 -0
- package/assets/styles/_props.scss +91 -0
- package/assets/styles/_seven-columns.scss +73 -0
- package/assets/styles/_updevs.scss +16 -0
- package/assets/styles/_utilities-marketing.scss +209 -0
- package/assets/styles/_utilities.scss +127 -92
- package/assets/styles/_variables-dark.scss +8 -6
- package/assets/styles/_variables.scss +325 -256
- package/assets/styles/helpers/_index.scss +143 -0
- package/assets/styles/layout/_core.scss +3 -2
- package/assets/styles/layout/_dark.scss +40 -35
- package/assets/styles/layout/_footer.scss +1 -1
- package/assets/styles/layout/_navbar.scss +31 -19
- package/assets/styles/layout/_page.scss +6 -5
- package/assets/styles/layout/_root.scss +26 -34
- package/assets/styles/marketing/_browser.scss +67 -0
- package/assets/styles/marketing/_core.scss +8 -0
- package/assets/styles/marketing/_filters.scss +0 -0
- package/assets/styles/marketing/_hero.scss +70 -0
- package/assets/styles/marketing/_pricing.scss +111 -0
- package/assets/styles/marketing/_sections.scss +124 -0
- package/assets/styles/marketing/_shape.scss +31 -0
- package/assets/styles/mixins/_functions.scss +53 -0
- package/assets/styles/mixins/_mixins.scss +9 -9
- package/assets/styles/ui/_accordion.scss +165 -11
- package/assets/styles/ui/_alerts.scss +80 -38
- package/assets/styles/ui/_avatars.scss +36 -9
- package/assets/styles/ui/_badges.scss +47 -13
- package/assets/styles/ui/_button-group.scss +1 -1
- package/assets/styles/ui/_buttons.scss +33 -37
- package/assets/styles/ui/_calendars.scss +2 -2
- package/assets/styles/ui/_cards.scss +9 -0
- package/assets/styles/ui/_carousel.scss +1 -1
- package/assets/styles/ui/_charts.scss +1 -1
- package/assets/styles/ui/_chat.scss +38 -0
- package/assets/styles/ui/_close.scss +54 -1
- package/assets/styles/ui/_datagrid.scss +1 -1
- package/assets/styles/ui/_dropdowns.scss +3 -0
- package/assets/styles/ui/_empty.scss +0 -5
- package/assets/styles/ui/_flags.scss +2 -2
- package/assets/styles/ui/_forms.scss +33 -7
- package/assets/styles/ui/_grid.scss +1 -1
- package/assets/styles/ui/_icons.scss +1 -1
- package/assets/styles/ui/_images.scss +4 -0
- package/assets/styles/ui/_lists.scss +12 -16
- package/assets/styles/ui/_loaders.scss +1 -1
- package/assets/styles/ui/_markdown.scss +15 -4
- package/assets/styles/ui/_modals.scss +2 -2
- package/assets/styles/ui/_nav.scss +17 -3
- package/assets/styles/ui/_offcanvas.scss +2 -2
- package/assets/styles/ui/_pagination.scss +2 -0
- package/assets/styles/ui/_payments.scss +1 -1
- package/assets/styles/ui/_placeholder.scss +1 -1
- package/assets/styles/ui/_progress.scss +1 -1
- package/assets/styles/ui/_ribbons.scss +1 -0
- package/assets/styles/ui/_segmented.scss +101 -0
- package/assets/styles/ui/_signature.scss +15 -0
- package/assets/styles/ui/_social.scss +52 -0
- package/assets/styles/ui/_status.scss +1 -1
- package/assets/styles/ui/_steps.scss +5 -1
- package/assets/styles/ui/_switch-icon.scss +1 -1
- package/assets/styles/ui/_tables.scss +27 -1
- package/assets/styles/ui/_tags.scss +1 -1
- package/assets/styles/ui/_timeline.scss +1 -1
- package/assets/styles/ui/_toasts.scss +0 -1
- package/assets/styles/ui/_tracking.scss +1 -1
- package/assets/styles/ui/_type.scss +169 -8
- package/assets/styles/ui/forms/_form-check.scss +1 -1
- package/assets/styles/ui/forms/_form-colorinput.scss +1 -1
- package/assets/styles/ui/forms/_form-custom.scss +1 -1
- package/assets/styles/ui/forms/_form-imagecheck.scss +6 -5
- package/assets/styles/ui/forms/_form-selectgroup.scss +2 -2
- package/assets/styles/ui/typo/_hr.scss +4 -2
- package/assets/styles/utils/_colors.scss +72 -11
- package/assets/styles/utils/_opacity.scss +1 -1
- package/assets/styles/utils/_scroll.scss +0 -2
- package/assets/styles/utils/_sizing.scss +1 -1
- package/assets/styles/utils/_text.scss +1 -2
- package/assets/styles/vendor/_apexcharts.scss +52 -0
- package/assets/styles/vendor/_coloris.scss +72 -0
- package/assets/styles/vendor/_dropzone.scss +27 -0
- package/assets/styles/vendor/_fslightbox.scss +13 -0
- package/assets/styles/vendor/_jsvectormap.scss +47 -0
- package/assets/styles/vendor/_litepicker.scss +69 -0
- package/assets/styles/vendor/_nouislider.scss +49 -0
- package/assets/styles/vendor/_plyr.scss +3 -0
- package/assets/styles/vendor/_stars-rating.scss +22 -0
- package/assets/styles/vendor/_tom-select.scss +81 -0
- package/assets/styles/vendor/_turbo.scss +3 -0
- package/assets/styles/vendor/_typed.scss +4 -0
- package/assets/styles/vendor/_wysiwyg.scss +46 -0
- package/badge/badge-config.model.d.ts +14 -0
- package/badge/badge.component.d.ts +23 -0
- package/badge/badge.config.d.ts +12 -0
- package/badge/index.d.ts +1 -0
- package/badge/public-api.d.ts +3 -0
- package/badge/upd-badge.module.d.ts +8 -0
- package/button/button.component.d.ts +51 -33
- package/button/upd-button.module.d.ts +3 -1
- package/calendar/calendar.component.d.ts +63 -0
- package/calendar/index.d.ts +1 -0
- package/calendar/models/calendar-date.model.d.ts +10 -0
- package/calendar/models/calendar-month.model.d.ts +7 -0
- package/calendar/models/calendar-selected.model.d.ts +5 -0
- package/calendar/models/calendar-user-event.model.d.ts +4 -0
- package/calendar/models/calendar-year.model.d.ts +6 -0
- package/calendar/models/date-range.model.d.ts +22 -0
- package/calendar/models/enums/calendar-view.enum.d.ts +5 -0
- package/calendar/models/public-api.d.ts +7 -0
- package/calendar/public-api.d.ts +5 -0
- package/calendar/services/calendar-range-strategy.service.d.ts +35 -0
- package/calendar/services/calendar-signals.service.d.ts +24 -0
- package/calendar/services/public-api.d.ts +1 -0
- package/calendar/types/calendar-view.type.d.ts +1 -0
- package/calendar/types/public-api.d.ts +1 -0
- package/calendar/upd-calendar.module.d.ts +13 -0
- package/card/card.component.d.ts +2 -2
- package/card/public-api.d.ts +1 -0
- package/card/types/public-api.d.ts +5 -0
- package/drag-and-drop/drag-and-drop.component.d.ts +26 -0
- package/drag-and-drop/index.d.ts +1 -0
- package/drag-and-drop/models/drag-and-drop-column.config.d.ts +8 -0
- package/drag-and-drop/models/drag-and-drop-column.model.d.ts +10 -0
- package/drag-and-drop/models/drag-and-drop-item.d.ts +7 -0
- package/drag-and-drop/models/drag-and-drop-item.model.d.ts +13 -0
- package/drag-and-drop/models/drag-and-drop.config.d.ts +6 -0
- package/drag-and-drop/models/public-api.d.ts +4 -0
- package/drag-and-drop/public-api.d.ts +3 -0
- package/drag-and-drop/upd-drag-and-drop.module.d.ts +9 -0
- package/dropdown/dropdown.component.d.ts +23 -6
- package/dropdown/models/dropdown-action-clicked.model.d.ts +6 -0
- package/dropdown/models/dropdown-item.d.ts +7 -2
- package/dropdown/models/dropdown-item.type.d.ts +1 -1
- package/dropdown/models/public-api.d.ts +2 -0
- package/dropdown/models/toolbar.type.d.ts +1 -0
- package/esm2022/badge/badge-config.model.mjs +14 -0
- package/esm2022/badge/badge.component.mjs +48 -0
- package/esm2022/badge/badge.config.mjs +2 -0
- package/esm2022/badge/index.mjs +2 -0
- package/esm2022/badge/public-api.mjs +4 -0
- package/esm2022/badge/upd-badge.module.mjs +24 -0
- package/esm2022/badge/updevs-components-badge.mjs +5 -0
- package/esm2022/button/button.component.mjs +126 -132
- package/esm2022/button/index.mjs +1 -1
- package/esm2022/button/public-api.mjs +1 -1
- package/esm2022/button/upd-button.module.mjs +14 -6
- package/esm2022/button/updevs-components-button.mjs +1 -1
- package/esm2022/calendar/assets/i18n/en.json +16 -0
- package/esm2022/calendar/assets/i18n/pt.json +16 -0
- package/esm2022/calendar/calendar.component.mjs +318 -0
- package/esm2022/calendar/index.mjs +2 -0
- package/esm2022/calendar/models/calendar-date.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-month.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-selected.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-user-event.model.mjs +2 -0
- package/esm2022/calendar/models/calendar-year.model.mjs +2 -0
- package/esm2022/calendar/models/date-range.model.mjs +18 -0
- package/esm2022/calendar/models/enums/calendar-view.enum.mjs +7 -0
- package/esm2022/calendar/models/public-api.mjs +8 -0
- package/esm2022/calendar/public-api.mjs +6 -0
- package/esm2022/calendar/services/calendar-range-strategy.service.mjs +99 -0
- package/esm2022/calendar/services/calendar-signals.service.mjs +47 -0
- package/esm2022/calendar/services/public-api.mjs +2 -0
- package/esm2022/calendar/types/calendar-view.type.mjs +2 -0
- package/esm2022/calendar/types/public-api.mjs +2 -0
- package/esm2022/calendar/upd-calendar.module.mjs +52 -0
- package/esm2022/calendar/updevs-components-calendar.mjs +5 -0
- package/esm2022/card/card.component.mjs +4 -4
- package/esm2022/card/directives/card-actions.directive.mjs +4 -4
- package/esm2022/card/directives/card-footer.directive.mjs +4 -4
- package/esm2022/card/directives/card-header.directive.mjs +4 -4
- package/esm2022/card/directives/card-image.directive.mjs +4 -4
- package/esm2022/card/directives/public-api.mjs +1 -1
- package/esm2022/card/index.mjs +1 -1
- package/esm2022/card/public-api.mjs +2 -1
- package/esm2022/card/types/card-state.type.mjs +1 -1
- package/esm2022/card/types/card-style.type.mjs +1 -1
- package/esm2022/card/types/hover-effect.type.mjs +1 -1
- package/esm2022/card/types/public-api.mjs +6 -0
- package/esm2022/card/types/ribbon-style.type.mjs +1 -1
- package/esm2022/card/types/status-position.type.mjs +1 -1
- package/esm2022/card/upd-card.module.mjs +5 -5
- package/esm2022/card/updevs-components-card.mjs +1 -1
- package/esm2022/drag-and-drop/drag-and-drop.component.mjs +134 -0
- package/esm2022/drag-and-drop/index.mjs +2 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-column.config.mjs +2 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-column.model.mjs +9 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-item.mjs +2 -0
- package/esm2022/drag-and-drop/models/drag-and-drop-item.model.mjs +14 -0
- package/esm2022/drag-and-drop/models/drag-and-drop.config.mjs +2 -0
- package/esm2022/drag-and-drop/models/public-api.mjs +5 -0
- package/esm2022/drag-and-drop/public-api.mjs +4 -0
- package/esm2022/drag-and-drop/upd-drag-and-drop.module.mjs +28 -0
- package/esm2022/drag-and-drop/updevs-components-drag-and-drop.mjs +5 -0
- package/esm2022/dropdown/dropdown.component.mjs +79 -21
- package/esm2022/dropdown/index.mjs +1 -1
- package/esm2022/dropdown/models/dropdown-action-clicked.model.mjs +2 -0
- package/esm2022/dropdown/models/dropdown-item.mjs +1 -1
- package/esm2022/dropdown/models/dropdown-item.type.mjs +1 -1
- package/esm2022/dropdown/models/public-api.mjs +3 -1
- package/esm2022/dropdown/models/toolbar.type.mjs +2 -0
- package/esm2022/dropdown/public-api.mjs +1 -1
- package/esm2022/dropdown/upd-dropdown.module.mjs +5 -5
- package/esm2022/dropdown/updevs-components-dropdown.mjs +1 -1
- package/esm2022/form/assets/i18n/en.json +17 -0
- package/esm2022/form/assets/i18n/pt.json +17 -0
- package/esm2022/form/components/dynamic-field/dynamic-field.component.mjs +166 -0
- package/esm2022/form/form.component.mjs +180 -0
- package/esm2022/form/index.mjs +1 -1
- package/esm2022/form/models/attachment-rule.model.mjs +2 -0
- package/esm2022/form/models/button-field.model.mjs +2 -0
- package/esm2022/form/models/button-group-field.model.mjs +2 -0
- package/esm2022/form/models/checkbox-field.model.mjs +2 -0
- package/esm2022/form/models/checkbox-group-field.model.mjs +2 -0
- package/esm2022/form/models/dynamic-field.model.mjs +2 -0
- package/esm2022/form/models/enums/attachment-type.enum.mjs +15 -0
- package/esm2022/form/models/enums/dynamic-field.type.mjs +17 -0
- package/esm2022/form/models/enums/public-api.mjs +3 -0
- package/esm2022/form/models/file-upload-field.model.mjs +2 -0
- package/esm2022/form/models/form-config.mjs +2 -0
- package/esm2022/form/models/form-row.model.mjs +2 -0
- package/esm2022/form/models/form-update-on.type.mjs +2 -0
- package/esm2022/form/models/input-field.model.mjs +2 -0
- package/esm2022/form/models/masked-input-field.model.mjs +2 -0
- package/esm2022/form/models/public-api.mjs +19 -0
- package/esm2022/form/models/radio-field.model.mjs +2 -0
- package/esm2022/form/models/radio-group-field.model.mjs +2 -0
- package/esm2022/form/models/select-field.model.mjs +2 -0
- package/esm2022/form/models/single-select-field.model.mjs +2 -0
- package/esm2022/form/models/textarea-field.model.mjs +2 -0
- package/esm2022/form/models/validator-config.mjs +2 -0
- package/esm2022/form/public-api.mjs +4 -2
- package/esm2022/form/tools/errors-helper.mjs +54 -0
- package/esm2022/form/upd-form.module.mjs +84 -0
- package/esm2022/form/updevs-components-form.mjs +1 -1
- package/esm2022/form-controls/abstractions/base-control.mjs +46 -0
- package/esm2022/form-controls/abstractions/index.mjs +2 -0
- package/esm2022/form-controls/abstractions/public-api.mjs +2 -0
- package/esm2022/form-controls/abstractions/updevs-components-form-controls-abstractions.mjs +5 -0
- package/esm2022/form-controls/checkbox/checkbox.component.mjs +37 -51
- package/esm2022/form-controls/checkbox/index.mjs +1 -1
- package/esm2022/form-controls/checkbox/public-api.mjs +1 -1
- package/esm2022/form-controls/checkbox/upd-checkbox.module.mjs +12 -8
- package/esm2022/form-controls/checkbox/updevs-components-form-controls-checkbox.mjs +1 -1
- package/esm2022/form-controls/date-picker/date-picker.component.mjs +132 -0
- package/esm2022/form-controls/date-picker/index.mjs +2 -0
- package/esm2022/form-controls/date-picker/public-api.mjs +3 -0
- package/esm2022/form-controls/date-picker/upd-date-picker.module.mjs +40 -0
- package/esm2022/form-controls/date-picker/updevs-components-form-controls-date-picker.mjs +5 -0
- package/esm2022/form-controls/file-upload/assets/i18n/en.json +15 -0
- package/esm2022/form-controls/file-upload/assets/i18n/pt.json +15 -0
- package/esm2022/form-controls/file-upload/file-upload-changed.event.mjs +2 -0
- package/esm2022/form-controls/file-upload/file-upload.component.mjs +169 -0
- package/esm2022/form-controls/file-upload/index.mjs +2 -0
- package/esm2022/form-controls/file-upload/public-api.mjs +4 -0
- package/esm2022/form-controls/file-upload/upd-file-upload.module.mjs +48 -0
- package/esm2022/form-controls/file-upload/updevs-components-form-controls-file-upload.mjs +5 -0
- package/esm2022/form-controls/input/directives/input-append.directive.mjs +4 -4
- package/esm2022/form-controls/input/directives/input-prepend.directive.mjs +4 -4
- package/esm2022/form-controls/input/directives/public-api.mjs +1 -1
- package/esm2022/form-controls/input/index.mjs +1 -1
- package/esm2022/form-controls/input/input.component.mjs +75 -35
- package/esm2022/form-controls/input/public-api.mjs +1 -1
- package/esm2022/form-controls/input/types/input.type.mjs +1 -1
- package/esm2022/form-controls/input/types/loader-position.type.mjs +1 -1
- package/esm2022/form-controls/input/types/public-api.mjs +1 -1
- package/esm2022/form-controls/input/upd-input.module.mjs +5 -5
- package/esm2022/form-controls/input/updevs-components-form-controls-input.mjs +1 -1
- package/esm2022/form-controls/radio/index.mjs +1 -1
- package/esm2022/form-controls/radio/public-api.mjs +1 -1
- package/esm2022/form-controls/radio/radio.component.mjs +12 -25
- package/esm2022/form-controls/radio/upd-radio.module.mjs +14 -6
- package/esm2022/form-controls/radio/updevs-components-form-controls-radio.mjs +1 -1
- package/esm2022/form-controls/select/components/multiple/select-multiple.component.mjs +38 -14
- package/esm2022/form-controls/select/components/single/select.component.mjs +45 -21
- package/esm2022/form-controls/select/index.mjs +1 -1
- package/esm2022/form-controls/select/models/abstractions/base-select.component.mjs +129 -106
- package/esm2022/form-controls/select/models/defaults.mjs +8 -0
- package/esm2022/form-controls/select/models/public-api.mjs +2 -1
- package/esm2022/form-controls/select/models/select-item.mjs +1 -1
- package/esm2022/form-controls/select/public-api.mjs +1 -1
- package/esm2022/form-controls/select/upd-select.module.mjs +10 -6
- package/esm2022/form-controls/select/updevs-components-form-controls-select.mjs +1 -1
- package/esm2022/form-controls/textarea/index.mjs +1 -1
- package/esm2022/form-controls/textarea/public-api.mjs +1 -1
- package/esm2022/form-controls/textarea/textarea.component.mjs +18 -36
- package/esm2022/form-controls/textarea/upd-textarea.module.mjs +5 -5
- package/esm2022/form-controls/textarea/updevs-components-form-controls-textarea.mjs +1 -1
- package/esm2022/form-controls/time-picker/index.mjs +1 -1
- package/esm2022/form-controls/time-picker/public-api.mjs +1 -1
- package/esm2022/form-controls/time-picker/time-picker.component.mjs +4 -4
- package/esm2022/form-controls/time-picker/time-selector/time-selector.component.mjs +5 -5
- package/esm2022/form-controls/time-picker/upd-time-picker.module.mjs +8 -7
- package/esm2022/form-controls/time-picker/updevs-components-form-controls-time-picker.mjs +1 -1
- package/esm2022/index.mjs +2 -0
- package/esm2022/layout/abstractions/base-page.component.mjs +6 -7
- package/esm2022/layout/abstractions/base.layout.mjs +31 -0
- package/esm2022/layout/abstractions/public-api.mjs +1 -1
- package/esm2022/layout/assets/i18n/en.json +24 -2
- package/esm2022/layout/assets/i18n/pt.json +24 -2
- package/esm2022/layout/index.mjs +1 -1
- package/esm2022/layout/layouts/blank-layout/blank-layout.component.mjs +18 -7
- package/esm2022/layout/layouts/blank-layout/blank-layout.module.mjs +32 -6
- package/esm2022/layout/layouts/public-api.mjs +1 -1
- package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.mjs +8 -22
- package/esm2022/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.mjs +24 -27
- package/esm2022/layout/models/login-page-config.model.mjs +20 -0
- package/esm2022/layout/models/login-page.config.mjs +2 -0
- package/esm2022/layout/models/public-api.mjs +2 -1
- package/esm2022/layout/models/security-layout-config.model.mjs +10 -0
- package/esm2022/layout/models/security-layout.config.mjs +2 -0
- package/esm2022/layout/models/upd-layout-config.model.mjs +11 -17
- package/esm2022/layout/models/upd-layout.config.mjs +1 -1
- package/esm2022/layout/pages/auth-flow/auth-flow-routing.module.mjs +5 -5
- package/esm2022/layout/pages/auth-flow/auth-flow.module.mjs +36 -9
- package/esm2022/layout/pages/auth-flow/logged-out/logged-out.component.mjs +4 -4
- package/esm2022/layout/pages/auth-flow/login/login.component.mjs +95 -12
- package/esm2022/layout/pages/auth-flow/oauth-callback/oauth-callback.component.mjs +4 -4
- package/esm2022/layout/pages/auth-flow/public-api.mjs +1 -1
- package/esm2022/layout/pages/public-api.mjs +1 -1
- package/esm2022/layout/partials/footer/footer.component.mjs +9 -24
- package/esm2022/layout/partials/footer/footer.module.mjs +28 -0
- package/esm2022/layout/partials/footer/public-api.mjs +2 -2
- package/esm2022/layout/partials/header/header-style.type.mjs +1 -1
- package/esm2022/layout/partials/header/header.component.mjs +115 -52
- package/esm2022/layout/partials/header/header.module.mjs +40 -0
- package/esm2022/layout/partials/header/public-api.mjs +2 -1
- package/esm2022/layout/partials/page-header/page-header.component.mjs +10 -9
- package/esm2022/layout/partials/page-header/public-api.mjs +1 -1
- package/esm2022/layout/partials/public-api.mjs +1 -1
- package/esm2022/layout/partials/sidebar/public-api.mjs +1 -1
- package/esm2022/layout/partials/sidebar/sidebar.component.mjs +177 -86
- package/esm2022/layout/public-api.mjs +1 -1
- package/esm2022/layout/services/public-api.mjs +1 -1
- package/esm2022/layout/services/upd-layout-config.service.mjs +4 -4
- package/esm2022/layout/tools/layout.constants.mjs +1 -1
- package/esm2022/layout/upd-layout.module.mjs +12 -8
- package/esm2022/layout/updevs-components-layout.mjs +1 -1
- package/esm2022/lib/index.mjs +1 -1
- package/esm2022/lib/models/public-api.mjs +2 -0
- package/esm2022/lib/models/row-column-size.mjs +2 -0
- package/esm2022/lib/public-api.mjs +3 -1
- package/esm2022/lib/tools/column-size.helper.mjs +12 -0
- package/esm2022/lib/tools/public-api.mjs +2 -0
- package/esm2022/lib/types/component-size.type.mjs +1 -1
- package/esm2022/lib/types/horizontal-vertical.type.mjs +2 -0
- package/esm2022/lib/types/public-api.mjs +2 -1
- package/esm2022/lib/types/validation-status.type.mjs +1 -1
- package/esm2022/lib/upd-components.module.mjs +5 -5
- package/esm2022/link/index.mjs +1 -1
- package/esm2022/link/link.component.mjs +4 -4
- package/esm2022/link/public-api.mjs +1 -1
- package/esm2022/link/target.type.mjs +1 -1
- package/esm2022/link/upd-link.module.mjs +5 -5
- package/esm2022/link/updevs-components-link.mjs +1 -1
- package/esm2022/list/assets/i18n/en.json +7 -3
- package/esm2022/list/assets/i18n/pt.json +7 -3
- package/esm2022/list/index.mjs +1 -1
- package/esm2022/list/list.component.mjs +9 -29
- package/esm2022/list/models/badge-position.type.mjs +1 -1
- package/esm2022/list/models/list-item.mjs +1 -1
- package/esm2022/list/models/list-item.model.mjs +7 -2
- package/esm2022/list/models/public-api.mjs +1 -1
- package/esm2022/list/public-api.mjs +1 -1
- package/esm2022/list/upd-list.module.mjs +8 -7
- package/esm2022/list/updevs-components-list.mjs +1 -1
- package/esm2022/modal/assets/i18n/en.json +17 -0
- package/esm2022/modal/assets/i18n/pt.json +17 -0
- package/esm2022/modal/components/modal-container/modal-container.component.mjs +216 -0
- package/esm2022/modal/index.mjs +2 -0
- package/esm2022/modal/models/base.modal.mjs +14 -0
- package/esm2022/modal/models/modal-config.model.mjs +20 -0
- package/esm2022/modal/models/modal-ref.mjs +2 -0
- package/esm2022/modal/models/modal.config.mjs +2 -0
- package/esm2022/modal/models/public-api.mjs +4 -0
- package/esm2022/modal/public-api.mjs +4 -0
- package/esm2022/modal/services/modal-alert.service.mjs +99 -0
- package/esm2022/modal/services/modal.service.mjs +30 -0
- package/esm2022/modal/services/public-api.mjs +3 -0
- package/esm2022/modal/types/modal-footer-style.type.mjs +2 -0
- package/esm2022/modal/types/modal-size.type.mjs +2 -0
- package/esm2022/modal/upd-modal.module.mjs +90 -0
- package/esm2022/modal/updevs-components-modal.mjs +5 -0
- package/esm2022/paginator/assets/i18n/en.json +15 -0
- package/esm2022/paginator/assets/i18n/pt.json +15 -0
- package/esm2022/paginator/index.mjs +2 -0
- package/esm2022/paginator/paginator.component.mjs +66 -0
- package/esm2022/paginator/public-api.mjs +3 -0
- package/esm2022/paginator/upd-paginator.module.mjs +47 -0
- package/esm2022/paginator/updevs-components-paginator.mjs +5 -0
- package/esm2022/popover/index.mjs +1 -1
- package/esm2022/popover/popover.component.mjs +6 -6
- package/esm2022/popover/popover.directive.mjs +23 -32
- package/esm2022/popover/public-api.mjs +1 -1
- package/esm2022/popover/upd-popover.module.mjs +5 -5
- package/esm2022/popover/updevs-components-popover.mjs +1 -1
- package/esm2022/pricing/index.mjs +2 -0
- package/esm2022/pricing/models/price-item-feature.model.mjs +2 -0
- package/esm2022/pricing/models/price-item-features-group.model.mjs +2 -0
- package/esm2022/pricing/models/price-item-tag.model.mjs +2 -0
- package/esm2022/pricing/models/price-item.model.mjs +2 -0
- package/esm2022/pricing/models/public-api.mjs +5 -0
- package/esm2022/pricing/pricing-cards/pricing-cards.component.mjs +27 -0
- package/esm2022/pricing/pricing-table/pricing-table.component.mjs +57 -0
- package/esm2022/pricing/public-api.mjs +5 -0
- package/esm2022/pricing/upd-pricing.module.mjs +49 -0
- package/esm2022/pricing/updevs-components-pricing.mjs +5 -0
- package/esm2022/public-api.mjs +1 -1
- package/esm2022/table/abstractions/base-column.model.mjs +52 -0
- package/esm2022/table/abstractions/base.column.mjs +84 -0
- package/esm2022/table/abstractions/filters-operands.service.mjs +3 -0
- package/esm2022/table/abstractions/public-api.mjs +3 -0
- package/esm2022/table/assets/i18n/en.json +74 -0
- package/esm2022/table/assets/i18n/pt.json +74 -0
- package/esm2022/table/components/columns/boolean-column/boolean-column.component.mjs +26 -0
- package/esm2022/table/components/columns/date-time-column/date-time-column.component.mjs +13 -0
- package/esm2022/table/components/columns/number-column/number-column.component.mjs +13 -0
- package/esm2022/table/components/columns/text-column/text-column.component.mjs +31 -0
- package/esm2022/table/components/columns-manager/columns-manager.component.mjs +36 -0
- package/esm2022/table/components/filter-row/filter-row.component.mjs +114 -0
- package/esm2022/table/components/save-search/save-search.component.mjs +72 -0
- package/esm2022/table/components/search-section/search-section.component.mjs +93 -0
- package/esm2022/table/directives/public-api.mjs +2 -0
- package/esm2022/table/directives/table-column.directive.mjs +52 -0
- package/esm2022/table/index.mjs +2 -0
- package/esm2022/table/models/columns/boolean-column.model.mjs +22 -0
- package/esm2022/table/models/columns/date-time-column.model.mjs +16 -0
- package/esm2022/table/models/columns/guid-column.model.mjs +13 -0
- package/esm2022/table/models/columns/image-column.model.mjs +11 -0
- package/esm2022/table/models/columns/number-column.model.mjs +17 -0
- package/esm2022/table/models/columns/public-api.mjs +7 -0
- package/esm2022/table/models/columns/text-column.model.mjs +11 -0
- package/esm2022/table/models/enums/column-type.enum.mjs +15 -0
- package/esm2022/table/models/enums/public-api.mjs +2 -0
- package/esm2022/table/models/filter-item.model.mjs +2 -0
- package/esm2022/table/models/filter-operand.config.mjs +2 -0
- package/esm2022/table/models/operands-lists/boolean-filter-operands-list.model.mjs +25 -0
- package/esm2022/table/models/operands-lists/date-filter-operands-list.model.mjs +25 -0
- package/esm2022/table/models/operands-lists/date-or-number-operands-list.config.mjs +31 -0
- package/esm2022/table/models/operands-lists/filter-operands-list.config.mjs +31 -0
- package/esm2022/table/models/operands-lists/guid-filter-operands-list.model.mjs +16 -0
- package/esm2022/table/models/operands-lists/number-filter-operands-list.model.mjs +25 -0
- package/esm2022/table/models/operands-lists/string-filter-operands-list.model.mjs +45 -0
- package/esm2022/table/models/public-api.mjs +5 -0
- package/esm2022/table/models/saved-view.model.mjs +2 -0
- package/esm2022/table/models/table-config.model.mjs +29 -0
- package/esm2022/table/models/table.config.mjs +2 -0
- package/esm2022/table/models/upd-table-config.model.mjs +9 -0
- package/esm2022/table/models/upd-table.config.mjs +2 -0
- package/esm2022/table/public-api.mjs +6 -0
- package/esm2022/table/services/default-filters-operands.service.mjs +60 -0
- package/esm2022/table/services/storages/saved-views.storage.mjs +56 -0
- package/esm2022/table/services/stores/filters-operands.store.mjs +19 -0
- package/esm2022/table/services/upd-table-config.service.mjs +18 -0
- package/esm2022/table/table.component.mjs +439 -0
- package/esm2022/table/tools/filters.tools.mjs +48 -0
- package/esm2022/table/tools/table.constants.mjs +15 -0
- package/esm2022/table/upd-table.module.mjs +150 -0
- package/esm2022/table/updevs-components-table.mjs +5 -0
- package/esm2022/updevs-components.mjs +2 -2
- package/fesm2022/updevs-components-badge.mjs +89 -0
- package/fesm2022/updevs-components-badge.mjs.map +1 -0
- package/fesm2022/updevs-components-button.mjs +138 -136
- package/fesm2022/updevs-components-button.mjs.map +1 -1
- package/fesm2022/updevs-components-calendar.mjs +582 -0
- package/fesm2022/updevs-components-calendar.mjs.map +1 -0
- package/fesm2022/updevs-components-card.mjs +20 -20
- package/fesm2022/updevs-components-card.mjs.map +1 -1
- package/fesm2022/updevs-components-drag-and-drop.mjs +185 -0
- package/fesm2022/updevs-components-drag-and-drop.mjs.map +1 -0
- package/fesm2022/updevs-components-dropdown.mjs +83 -25
- package/fesm2022/updevs-components-dropdown.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-abstractions.mjs +53 -0
- package/fesm2022/updevs-components-form-controls-abstractions.mjs.map +1 -0
- package/fesm2022/updevs-components-form-controls-checkbox.mjs +47 -57
- package/fesm2022/updevs-components-form-controls-checkbox.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-date-picker.mjs +175 -0
- package/fesm2022/updevs-components-form-controls-date-picker.mjs.map +1 -0
- package/fesm2022/updevs-components-form-controls-file-upload.mjs +264 -0
- package/fesm2022/updevs-components-form-controls-file-upload.mjs.map +1 -0
- package/fesm2022/updevs-components-form-controls-input.mjs +84 -44
- package/fesm2022/updevs-components-form-controls-input.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-radio.mjs +25 -30
- package/fesm2022/updevs-components-form-controls-radio.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-select.mjs +219 -139
- package/fesm2022/updevs-components-form-controls-select.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-textarea.mjs +21 -39
- package/fesm2022/updevs-components-form-controls-textarea.mjs.map +1 -1
- package/fesm2022/updevs-components-form-controls-time-picker.mjs +14 -13
- package/fesm2022/updevs-components-form-controls-time-picker.mjs.map +1 -1
- package/fesm2022/updevs-components-form.mjs +533 -10
- package/fesm2022/updevs-components-form.mjs.map +1 -1
- package/fesm2022/updevs-components-layout.mjs +757 -375
- package/fesm2022/updevs-components-layout.mjs.map +1 -1
- package/fesm2022/updevs-components-link.mjs +8 -8
- package/fesm2022/updevs-components-link.mjs.map +1 -1
- package/fesm2022/updevs-components-list.mjs +39 -53
- package/fesm2022/updevs-components-list.mjs.map +1 -1
- package/fesm2022/updevs-components-modal.mjs +504 -0
- package/fesm2022/updevs-components-modal.mjs.map +1 -0
- package/fesm2022/updevs-components-paginator.mjs +160 -0
- package/fesm2022/updevs-components-paginator.mjs.map +1 -0
- package/fesm2022/updevs-components-popover.mjs +30 -39
- package/fesm2022/updevs-components-popover.mjs.map +1 -1
- package/fesm2022/updevs-components-pricing.mjs +130 -0
- package/fesm2022/updevs-components-pricing.mjs.map +1 -0
- package/fesm2022/updevs-components-table.mjs +1754 -0
- package/fesm2022/updevs-components-table.mjs.map +1 -0
- package/fesm2022/updevs-components.mjs +17 -5
- package/fesm2022/updevs-components.mjs.map +1 -1
- package/form/components/dynamic-field/dynamic-field.component.d.ts +63 -0
- package/form/form.component.d.ts +64 -0
- package/form/models/attachment-rule.model.d.ts +35 -0
- package/form/models/button-field.model.d.ts +5 -0
- package/form/models/button-group-field.model.d.ts +5 -0
- package/form/models/checkbox-field.model.d.ts +4 -0
- package/form/models/checkbox-group-field.model.d.ts +6 -0
- package/form/models/dynamic-field.model.d.ts +49 -0
- package/form/models/enums/attachment-type.enum.d.ts +13 -0
- package/form/models/enums/dynamic-field.type.d.ts +15 -0
- package/form/models/enums/public-api.d.ts +2 -0
- package/form/models/file-upload-field.model.d.ts +16 -0
- package/form/models/form-config.d.ts +2 -0
- package/form/models/form-row.model.d.ts +10 -0
- package/form/models/form-update-on.type.d.ts +1 -0
- package/form/models/input-field.model.d.ts +9 -0
- package/form/models/masked-input-field.model.d.ts +6 -0
- package/form/models/public-api.d.ts +18 -0
- package/form/models/radio-field.model.d.ts +4 -0
- package/form/models/radio-group-field.model.d.ts +6 -0
- package/form/models/select-field.model.d.ts +29 -0
- package/form/models/single-select-field.model.d.ts +4 -0
- package/form/models/textarea-field.model.d.ts +10 -0
- package/form/models/validator-config.d.ts +5 -0
- package/form/public-api.d.ts +3 -1
- package/form/tools/errors-helper.d.ts +11 -0
- package/form/upd-form.module.d.ts +22 -0
- package/form-controls/abstractions/base-control.d.ts +29 -0
- package/form-controls/abstractions/index.d.ts +2 -0
- package/form-controls/abstractions/public-api.d.ts +2 -0
- package/form-controls/checkbox/checkbox.component.d.ts +14 -20
- package/form-controls/checkbox/upd-checkbox.module.d.ts +2 -1
- package/form-controls/date-picker/date-picker.component.d.ts +66 -0
- package/form-controls/date-picker/index.d.ts +1 -0
- package/form-controls/date-picker/public-api.d.ts +2 -0
- package/form-controls/date-picker/upd-date-picker.module.d.ts +12 -0
- package/form-controls/file-upload/file-upload-changed.event.d.ts +4 -0
- package/form-controls/file-upload/file-upload.component.d.ts +46 -0
- package/form-controls/file-upload/index.d.ts +1 -0
- package/form-controls/file-upload/public-api.d.ts +3 -0
- package/form-controls/file-upload/upd-file-upload.module.d.ts +14 -0
- package/form-controls/input/input.component.d.ts +27 -14
- package/form-controls/radio/radio.component.d.ts +5 -12
- package/form-controls/radio/upd-radio.module.d.ts +3 -1
- package/form-controls/select/components/multiple/select-multiple.component.d.ts +13 -2
- package/form-controls/select/components/single/select.component.d.ts +12 -4
- package/form-controls/select/models/abstractions/base-select.component.d.ts +36 -32
- package/form-controls/select/models/defaults.d.ts +8 -0
- package/form-controls/select/models/public-api.d.ts +1 -0
- package/form-controls/select/upd-select.module.d.ts +3 -2
- package/form-controls/textarea/textarea.component.d.ts +11 -15
- package/form-controls/time-picker/upd-time-picker.module.d.ts +2 -2
- package/index.d.ts +1 -4
- package/layout/abstractions/base.layout.d.ts +15 -0
- package/layout/layouts/blank-layout/blank-layout.component.d.ts +5 -1
- package/layout/layouts/blank-layout/blank-layout.module.d.ts +8 -1
- package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.component.d.ts +2 -8
- package/layout/layouts/vertical-sidebar-layout/vertical-sidebar-layout.module.d.ts +14 -13
- package/layout/models/login-page-config.model.d.ts +46 -0
- package/layout/models/login-page.config.d.ts +44 -0
- package/layout/models/public-api.d.ts +1 -0
- package/layout/models/security-layout-config.model.d.ts +12 -0
- package/layout/models/security-layout.config.d.ts +10 -0
- package/layout/models/upd-layout-config.model.d.ts +9 -0
- package/layout/models/upd-layout.config.d.ts +9 -0
- package/layout/pages/auth-flow/auth-flow.module.d.ts +9 -2
- package/layout/pages/auth-flow/login/login.component.d.ts +20 -6
- package/layout/partials/footer/footer.component.d.ts +4 -13
- package/layout/partials/footer/footer.module.d.ts +9 -0
- package/layout/partials/footer/public-api.d.ts +1 -1
- package/layout/partials/header/header.component.d.ts +41 -21
- package/layout/partials/header/header.module.d.ts +12 -0
- package/layout/partials/header/public-api.d.ts +1 -0
- package/layout/partials/page-header/page-header.component.d.ts +2 -2
- package/layout/partials/sidebar/sidebar.component.d.ts +28 -1
- package/layout/upd-layout.module.d.ts +2 -1
- package/lib/index.d.ts +1 -0
- package/lib/models/public-api.d.ts +2 -0
- package/lib/models/row-column-size.d.ts +23 -0
- package/lib/public-api.d.ts +3 -0
- package/lib/tools/column-size.helper.d.ts +6 -0
- package/lib/tools/public-api.d.ts +2 -0
- package/lib/types/component-size.type.d.ts +1 -0
- package/lib/types/horizontal-vertical.type.d.ts +2 -0
- package/lib/types/public-api.d.ts +2 -0
- package/lib/types/validation-status.type.d.ts +1 -0
- package/lib/upd-components.module.d.ts +1 -0
- package/list/list.component.d.ts +1 -16
- package/list/models/list-item.d.ts +4 -2
- package/list/models/list-item.model.d.ts +4 -2
- package/list/upd-list.module.d.ts +2 -2
- package/modal/components/modal-container/modal-container.component.d.ts +74 -0
- package/modal/index.d.ts +1 -0
- package/modal/models/base.modal.d.ts +8 -0
- package/modal/models/modal-config.model.d.ts +32 -0
- package/modal/models/modal-ref.d.ts +6 -0
- package/modal/models/modal.config.d.ts +30 -0
- package/modal/models/public-api.d.ts +3 -0
- package/modal/public-api.d.ts +3 -0
- package/modal/services/modal-alert.service.d.ts +22 -0
- package/modal/services/modal.service.d.ts +12 -0
- package/modal/services/public-api.d.ts +2 -0
- package/modal/types/modal-footer-style.type.d.ts +1 -0
- package/modal/types/modal-size.type.d.ts +1 -0
- package/modal/upd-modal.module.d.ts +18 -0
- package/package.json +67 -6
- package/paginator/index.d.ts +1 -0
- package/paginator/paginator.component.d.ts +42 -0
- package/paginator/public-api.d.ts +2 -0
- package/paginator/upd-paginator.module.d.ts +14 -0
- package/popover/popover.component.d.ts +2 -2
- package/pricing/index.d.ts +1 -0
- package/pricing/models/price-item-feature.model.d.ts +7 -0
- package/pricing/models/price-item-features-group.model.d.ts +5 -0
- package/pricing/models/price-item-tag.model.d.ts +6 -0
- package/pricing/models/price-item.model.d.ts +22 -0
- package/pricing/models/public-api.d.ts +4 -0
- package/pricing/pricing-cards/pricing-cards.component.d.ts +12 -0
- package/pricing/pricing-table/pricing-table.component.d.ts +30 -0
- package/pricing/public-api.d.ts +4 -0
- package/pricing/upd-pricing.module.d.ts +14 -0
- package/public-api.d.ts +1 -0
- package/table/abstractions/base-column.model.d.ts +31 -0
- package/table/abstractions/base.column.d.ts +26 -0
- package/table/abstractions/filters-operands.service.d.ts +8 -0
- package/table/abstractions/public-api.d.ts +2 -0
- package/table/components/columns/boolean-column/boolean-column.component.d.ts +9 -0
- package/table/components/columns/date-time-column/date-time-column.component.d.ts +7 -0
- package/table/components/columns/number-column/number-column.component.d.ts +7 -0
- package/table/components/columns/text-column/text-column.component.d.ts +9 -0
- package/table/components/columns-manager/columns-manager.component.d.ts +15 -0
- package/table/components/filter-row/filter-row.component.d.ts +40 -0
- package/table/components/save-search/save-search.component.d.ts +17 -0
- package/table/components/search-section/search-section.component.d.ts +36 -0
- package/table/directives/public-api.d.ts +1 -0
- package/table/directives/table-column.directive.d.ts +14 -0
- package/table/index.d.ts +1 -0
- package/table/models/columns/boolean-column.model.d.ts +15 -0
- package/table/models/columns/date-time-column.model.d.ts +8 -0
- package/table/models/columns/guid-column.model.d.ts +4 -0
- package/table/models/columns/image-column.model.d.ts +6 -0
- package/table/models/columns/number-column.model.d.ts +8 -0
- package/table/models/columns/public-api.d.ts +6 -0
- package/table/models/columns/text-column.model.d.ts +6 -0
- package/table/models/enums/column-type.enum.d.ts +13 -0
- package/table/models/enums/public-api.d.ts +1 -0
- package/table/models/filter-item.model.d.ts +6 -0
- package/table/models/filter-operand.config.d.ts +9 -0
- package/table/models/operands-lists/boolean-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/date-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/date-or-number-operands-list.config.d.ts +5 -0
- package/table/models/operands-lists/filter-operands-list.config.d.ts +5 -0
- package/table/models/operands-lists/guid-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/number-filter-operands-list.model.d.ts +6 -0
- package/table/models/operands-lists/string-filter-operands-list.model.d.ts +6 -0
- package/table/models/public-api.d.ts +4 -0
- package/table/models/saved-view.model.d.ts +11 -0
- package/table/models/table-config.model.d.ts +33 -0
- package/table/models/table.config.d.ts +31 -0
- package/table/models/upd-table-config.model.d.ts +6 -0
- package/table/models/upd-table.config.d.ts +6 -0
- package/table/public-api.d.ts +5 -0
- package/table/services/default-filters-operands.service.d.ts +17 -0
- package/table/services/storages/saved-views.storage.d.ts +19 -0
- package/table/services/stores/filters-operands.store.d.ts +11 -0
- package/table/services/upd-table-config.service.d.ts +12 -0
- package/table/table.component.d.ts +81 -0
- package/table/tools/filters.tools.d.ts +9 -0
- package/table/tools/table.constants.d.ts +15 -0
- package/table/upd-table.module.d.ts +40 -0
- package/esm2022/form/form.module.mjs +0 -18
- package/esm2022/layout/partials/footer/footer-copyright.directive.mjs +0 -13
- package/form/form.module.d.ts +0 -7
- package/layout/partials/footer/footer-copyright.directive.d.ts +0 -5
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Directive, Component, NgModule,
|
|
3
|
-
import { BaseComponent, LayoutService, UpdCoreLayoutConfigService, UpdCoreLayoutModule } from '@updevs/sdk/layout';
|
|
2
|
+
import { inject, Directive, HostBinding, ViewEncapsulation, Component, NgModule, viewChild, ElementRef, input, computed, signal, InjectionToken, Inject, Injectable, model } from '@angular/core';
|
|
3
|
+
import { BaseComponent, LayoutService, UpdCoreLayoutConfigService, PreferencesStorage, UpdCoreLayoutModule } from '@updevs/sdk/layout';
|
|
4
4
|
import * as i1 from '@angular/common';
|
|
5
5
|
import { CommonModule } from '@angular/common';
|
|
6
|
-
import * as i1$
|
|
7
|
-
import { Router, NavigationStart, RouterModule } from '@angular/router';
|
|
6
|
+
import * as i1$3 from '@angular/router';
|
|
7
|
+
import { RouterOutlet, Router, NavigationStart, RouterModule } from '@angular/router';
|
|
8
8
|
import * as i1$2 from '@updevs/icons';
|
|
9
9
|
import { UpdIconsModule } from '@updevs/icons';
|
|
10
|
-
import * as
|
|
11
|
-
import {
|
|
12
|
-
import * as
|
|
10
|
+
import * as i2 from '@updevs/components/dropdown';
|
|
11
|
+
import { UpdDropdownModule } from '@updevs/components/dropdown';
|
|
12
|
+
import * as i3 from '@updevs/components/link';
|
|
13
13
|
import { UpdLinkModule } from '@updevs/components/link';
|
|
14
|
-
import * as i1$1 from '@
|
|
15
|
-
import { TranslocoService,
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { AuthService } from '@updevs/sdk/security';
|
|
19
|
-
import * as
|
|
20
|
-
import {
|
|
14
|
+
import * as i1$1 from '@jsverse/transloco';
|
|
15
|
+
import { TranslocoModule, TranslocoService, TranslocoPipe, TranslocoDirective } from '@jsverse/transloco';
|
|
16
|
+
import { TextService } from '@updevs/sdk';
|
|
17
|
+
import { NotificationsService, UpdNotificationsModule } from '@updevs/sdk/notifications';
|
|
18
|
+
import { SecurityStorage, AuthService } from '@updevs/sdk/security';
|
|
19
|
+
import * as i1$4 from '@updevs/components/button';
|
|
20
|
+
import { UpdButtonModule } from '@updevs/components/button';
|
|
21
|
+
import { MenuService } from '@updevs/sdk/routes';
|
|
22
|
+
import { filter, finalize } from 'rxjs';
|
|
23
|
+
import * as i3$1 from '@angular/forms';
|
|
24
|
+
import { FormGroup, Validators, FormsModule } from '@angular/forms';
|
|
25
|
+
import * as i7 from '@updevs/components/form';
|
|
26
|
+
import { DynamicFieldType, UpdFormModule } from '@updevs/components/form';
|
|
27
|
+
import * as i6 from '@updevs/components/card';
|
|
28
|
+
import { UpdCardModule } from '@updevs/components/card';
|
|
21
29
|
|
|
22
30
|
/**
|
|
23
31
|
* Basic page structure.
|
|
@@ -30,80 +38,13 @@ class BasePageComponent extends BaseComponent {
|
|
|
30
38
|
}
|
|
31
39
|
ngOnDestroy() {
|
|
32
40
|
super.ngOnDestroy();
|
|
33
|
-
|
|
41
|
+
this._layoutService.pageHeader.set(undefined);
|
|
34
42
|
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
36
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0
|
|
37
|
-
}
|
|
38
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BasePageComponent, decorators: [{
|
|
39
|
-
type: Directive,
|
|
40
|
-
args: [{}]
|
|
41
|
-
}] });
|
|
42
|
-
|
|
43
|
-
class BlankLayoutComponent {
|
|
44
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: BlankLayoutComponent, selector: "upd-blank-layout", ngImport: i0, template: "<p>blank-layout works!</p>\n", styles: [""] }); }
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BasePageComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
44
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: BasePageComponent, usesInheritance: true, ngImport: i0 }); }
|
|
46
45
|
}
|
|
47
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
48
|
-
type:
|
|
49
|
-
args: [{ selector: 'upd-blank-layout', template: "<p>blank-layout works!</p>\n" }]
|
|
50
|
-
}] });
|
|
51
|
-
|
|
52
|
-
class BlankLayoutModule {
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
54
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, declarations: [BlankLayoutComponent], imports: [CommonModule], exports: [BlankLayoutComponent] }); }
|
|
55
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, imports: [CommonModule] }); }
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BlankLayoutModule, decorators: [{
|
|
58
|
-
type: NgModule,
|
|
59
|
-
args: [{
|
|
60
|
-
imports: [
|
|
61
|
-
CommonModule
|
|
62
|
-
],
|
|
63
|
-
declarations: [
|
|
64
|
-
BlankLayoutComponent
|
|
65
|
-
],
|
|
66
|
-
exports: [
|
|
67
|
-
BlankLayoutComponent
|
|
68
|
-
]
|
|
69
|
-
}]
|
|
70
|
-
}] });
|
|
71
|
-
|
|
72
|
-
var Footer$1 = {
|
|
73
|
-
AllRightsReserved: "All rights reserved."
|
|
74
|
-
};
|
|
75
|
-
var en = {
|
|
76
|
-
Footer: Footer$1
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
var en$1 = /*#__PURE__*/Object.freeze({
|
|
80
|
-
__proto__: null,
|
|
81
|
-
Footer: Footer$1,
|
|
82
|
-
default: en
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
var Footer = {
|
|
86
|
-
AllRightsReserved: "Todos os direitos reservados."
|
|
87
|
-
};
|
|
88
|
-
var pt = {
|
|
89
|
-
Footer: Footer
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
var pt$1 = /*#__PURE__*/Object.freeze({
|
|
93
|
-
__proto__: null,
|
|
94
|
-
Footer: Footer,
|
|
95
|
-
default: pt
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
class FooterCopyrightDirective {
|
|
99
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FooterCopyrightDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
100
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: FooterCopyrightDirective, selector: "[updFooterCopyright]", ngImport: i0 }); }
|
|
101
|
-
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: FooterCopyrightDirective, decorators: [{
|
|
103
|
-
type: Directive,
|
|
104
|
-
args: [{
|
|
105
|
-
selector: '[updFooterCopyright]'
|
|
106
|
-
}]
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BasePageComponent, decorators: [{
|
|
47
|
+
type: Directive
|
|
107
48
|
}] });
|
|
108
49
|
|
|
109
50
|
class FooterComponent extends BaseComponent {
|
|
@@ -126,21 +67,11 @@ class FooterComponent extends BaseComponent {
|
|
|
126
67
|
* Current year.
|
|
127
68
|
*/
|
|
128
69
|
this.currentYear = new Date().getFullYear();
|
|
129
|
-
|
|
130
|
-
* Text displayed in the copyright section before the symbol and year.
|
|
131
|
-
*/
|
|
132
|
-
this.copyrightPrefix = 'Copyright';
|
|
133
|
-
/**
|
|
134
|
-
* Text displayed in the copyright section after the symbol and year.
|
|
135
|
-
*/
|
|
136
|
-
this.copyrightSuffix = '';
|
|
70
|
+
this.layoutService = inject(LayoutService);
|
|
137
71
|
this.baseWrapperClasses = 'footer d-print-none';
|
|
138
|
-
this.translocoService = inject(TranslocoService);
|
|
139
72
|
}
|
|
140
73
|
ngOnInit() {
|
|
141
|
-
const footerCpsSub = this.translocoService.selectTranslate('Footer.AllRightsReserved').subscribe(r => this.copyrightSuffix = r);
|
|
142
74
|
this.updateWrapperClasses();
|
|
143
|
-
this.addSubscriptions(footerCpsSub);
|
|
144
75
|
}
|
|
145
76
|
ngOnChanges(changes) {
|
|
146
77
|
if (!!changes['isSticky'].currentValue || !!changes['isTransparent'].currentValue) {
|
|
@@ -152,217 +83,650 @@ class FooterComponent extends BaseComponent {
|
|
|
152
83
|
const transparentCls = this.isTransparent ? ' footer-transparent' : '';
|
|
153
84
|
this.wrapperClasses = `${this.baseWrapperClasses}${stickyBottomCls}${transparentCls}`;
|
|
154
85
|
}
|
|
155
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
156
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0
|
|
86
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: FooterComponent, selector: "upd-footer", host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
157
88
|
}
|
|
158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterComponent, decorators: [{
|
|
159
90
|
type: Component,
|
|
160
|
-
args: [{ selector: 'upd-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n
|
|
91
|
+
args: [{ selector: 'upd-footer', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <div class=\"row text-center align-items-center flex-row-reverse\">\n <div class=\"col-lg-auto ms-lg-auto\">\n @if (!!layoutService.rightFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.rightFooter()!\"></ng-container>\n }\n\n @if (links.length > 0) {\n <ul class=\"list-inline list-inline-dots mb-0\">\n @for (link of links; track link) {\n <li class=\"list-inline-item\">\n <a href=\"{{link.url}}\" target=\"{{link.target}}\" class=\"link-secondary\">\n <span [innerHTML]=\"link.text\"></span>\n </a>\n </li>\n }\n </ul>\n }\n </div>\n <div class=\"col-12 col-lg-auto mt-3 mt-lg-0\">\n <ul class=\"list-inline list-inline-dots mb-0\">\n <li class=\"list-inline-item\">\n <ng-container *transloco=\"let t; prefix: 'UpDevs.Footer'\">\n {{ t('Prefix') }} {{ t('Symbol') }} {{ currentYear }} {{ t('Suffix') }}\n </ng-container>\n </li>\n @if (!!version) {\n <li class=\"list-inline-item\">\n {{ version }}\n </li>\n }\n </ul>\n\n @if (!!layoutService.leftFooter()) {\n <ng-container [ngTemplateOutlet]=\"layoutService.leftFooter()!\"></ng-container>\n }\n </div>\n </div>\n</div>\n" }]
|
|
161
92
|
}], propDecorators: { wrapperClasses: [{
|
|
162
93
|
type: HostBinding,
|
|
163
94
|
args: ['class']
|
|
164
|
-
}], footerCopyrightTemplate: [{
|
|
165
|
-
type: ContentChild,
|
|
166
|
-
args: [FooterCopyrightDirective, { read: TemplateRef, static: true }]
|
|
167
95
|
}] } });
|
|
168
96
|
|
|
97
|
+
class FooterModule {
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
99
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: FooterModule, declarations: [FooterComponent], imports: [CommonModule,
|
|
100
|
+
TranslocoModule], exports: [FooterComponent] }); }
|
|
101
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterModule, imports: [CommonModule,
|
|
102
|
+
TranslocoModule] }); }
|
|
103
|
+
}
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: FooterModule, decorators: [{
|
|
105
|
+
type: NgModule,
|
|
106
|
+
args: [{
|
|
107
|
+
imports: [
|
|
108
|
+
CommonModule,
|
|
109
|
+
TranslocoModule
|
|
110
|
+
],
|
|
111
|
+
declarations: [
|
|
112
|
+
FooterComponent
|
|
113
|
+
],
|
|
114
|
+
exports: [
|
|
115
|
+
FooterComponent
|
|
116
|
+
]
|
|
117
|
+
}]
|
|
118
|
+
}] });
|
|
119
|
+
|
|
169
120
|
class HeaderComponent extends BaseComponent {
|
|
170
121
|
constructor() {
|
|
171
122
|
super(...arguments);
|
|
172
|
-
this.
|
|
173
|
-
this.
|
|
174
|
-
this.
|
|
175
|
-
this.
|
|
176
|
-
this.
|
|
177
|
-
this.
|
|
178
|
-
this.
|
|
179
|
-
this.
|
|
180
|
-
this.
|
|
181
|
-
this.
|
|
182
|
-
this.
|
|
123
|
+
this.languageSwitcherRef = viewChild('languageSwitcherBtn', { read: ElementRef });
|
|
124
|
+
this.notificationsRef = viewChild('notificationsBtn', { read: ElementRef });
|
|
125
|
+
this.loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });
|
|
126
|
+
this.isLanguageSwitcherDropdownOpen = false;
|
|
127
|
+
this.isNotificationsDropdownOpen = false;
|
|
128
|
+
this.isLoggedUserDropdownOpen = false;
|
|
129
|
+
this.style = input('light');
|
|
130
|
+
this.nextThemeIcon = computed(() => this.currentPreferences()?.isDarkTheme ? 'sun' : 'moon-stars');
|
|
131
|
+
this.currentNotificationsIcon = computed(() => this.hasNewNotifications() ? 'bell-ringing' : 'bell');
|
|
132
|
+
this.hasNewNotifications = computed(() => this.currentNotifications().some(n => !n.dateRead));
|
|
133
|
+
this.userInfo = computed(() => this.securityStorage.getUserInfo());
|
|
134
|
+
this.textService = inject(TextService);
|
|
135
|
+
this.isSidebarMobileOpen = signal(false);
|
|
136
|
+
this.shouldBlinkIfNewNotifications = computed(() => !!this.coreLayoutConfigService.config.shouldBlinkIfNewNotifications);
|
|
137
|
+
this.languagesOptions = computed(() => {
|
|
138
|
+
const allLanguagesOptions = [];
|
|
139
|
+
const availableLanguages = (this.coreLayoutConfigService.config.availableLanguages || {});
|
|
140
|
+
Object.keys(availableLanguages).forEach(key => {
|
|
141
|
+
allLanguagesOptions.push({
|
|
142
|
+
id: key,
|
|
143
|
+
type: 'default',
|
|
144
|
+
text: availableLanguages[key],
|
|
145
|
+
isActive: this.currentLanguageKey() === key
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
return allLanguagesOptions;
|
|
149
|
+
});
|
|
150
|
+
this.loggedUserOptions = computed(() => {
|
|
151
|
+
const userActions = [];
|
|
152
|
+
this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({
|
|
153
|
+
id: act.id(),
|
|
154
|
+
text: act.text(),
|
|
155
|
+
type: 'default',
|
|
156
|
+
icon: act.iconModel?.()
|
|
157
|
+
}));
|
|
158
|
+
return userActions;
|
|
159
|
+
});
|
|
160
|
+
this.userIdentification = computed(() => !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()) : '');
|
|
161
|
+
this.userDescription = computed(() => !!this.coreLayoutConfigService.config.getUserDescription
|
|
162
|
+
? this.coreLayoutConfigService.config.getUserDescription(this.userInfo())
|
|
163
|
+
: '');
|
|
164
|
+
this.latestNotifications = computed(() => {
|
|
165
|
+
const unreadNotifications = this.currentNotifications()
|
|
166
|
+
.filter(n => !n.dateRead)
|
|
167
|
+
.sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())
|
|
168
|
+
.slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);
|
|
169
|
+
const readNotifications = this.currentNotifications()
|
|
170
|
+
.filter(n => !!n.dateRead)
|
|
171
|
+
.sort((a, b) => new Date(b.dateReceived).getTime() - new Date(a.dateReceived).getTime())
|
|
172
|
+
.slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);
|
|
173
|
+
return [
|
|
174
|
+
...unreadNotifications,
|
|
175
|
+
...readNotifications
|
|
176
|
+
].slice(0, this.coreLayoutConfigService.config.numberOfLastNotificationsDisplayed);
|
|
177
|
+
});
|
|
178
|
+
this.userInitials = computed(() => {
|
|
179
|
+
const firstChar = this.userIdentification().charAt(0);
|
|
180
|
+
const lastSpaceIndex = this.userIdentification().lastIndexOf(' ');
|
|
181
|
+
const firstAfterLastSpace = lastSpaceIndex !== -1 ? this.userIdentification().charAt(lastSpaceIndex + 1) : '';
|
|
182
|
+
return `${firstChar}${firstAfterLastSpace}`;
|
|
183
|
+
});
|
|
184
|
+
this.securityStorage = inject(SecurityStorage);
|
|
183
185
|
this.coreLayoutConfigService = inject(UpdCoreLayoutConfigService);
|
|
184
186
|
this.layoutService = inject(LayoutService);
|
|
185
187
|
this.translocoService = inject(TranslocoService);
|
|
188
|
+
this.preferencesStorage = inject(PreferencesStorage);
|
|
189
|
+
this.notificationsService = inject(NotificationsService);
|
|
190
|
+
this.currentPreferences = this.preferencesStorage.getPreferences();
|
|
191
|
+
this.currentNotifications = this.notificationsService.notifications;
|
|
192
|
+
this.currentLanguageKey = signal('');
|
|
193
|
+
this.wrapperClasses = computed(() => `navbar navbar-expand-md d-none d-lg-flex d-print-none navbar-${this.style()}`);
|
|
194
|
+
// eslint-disable-next-line @typescript-eslint/member-ordering
|
|
195
|
+
this.config = computed(() => this.layoutService.mainHeaderConfig());
|
|
196
|
+
}
|
|
197
|
+
get classes() {
|
|
198
|
+
return this.wrapperClasses();
|
|
186
199
|
}
|
|
187
200
|
ngOnInit() {
|
|
188
|
-
this.
|
|
189
|
-
|
|
190
|
-
this.setupNotifications();
|
|
201
|
+
if (!!this.currentPreferences()?.isDarkTheme) {
|
|
202
|
+
this.layoutService.setDarkMode();
|
|
191
203
|
}
|
|
192
|
-
if (this.
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
ngOnChanges(changes) {
|
|
197
|
-
if (!!changes['style'].currentValue) {
|
|
198
|
-
this.updateWrapperClasses();
|
|
204
|
+
if (!!this.currentPreferences()?.currentLanguageCode) {
|
|
205
|
+
const code = this.currentPreferences().currentLanguageCode;
|
|
206
|
+
this.currentLanguageKey.set(code);
|
|
207
|
+
this.translocoService.setActiveLang(code);
|
|
199
208
|
}
|
|
200
209
|
}
|
|
201
210
|
switchTheme() {
|
|
202
|
-
|
|
203
|
-
this.nextThemeIcon = isDarkMode ? 'sun' : 'moon';
|
|
204
|
-
this.nextThemeColor = isDarkMode ? 'white' : 'black';
|
|
205
|
-
this.layoutService.toggleDarkMode(isDarkMode);
|
|
211
|
+
this.layoutService.toggleDarkMode();
|
|
206
212
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
this.
|
|
213
|
+
switchLanguage(item) {
|
|
214
|
+
this.currentLanguageKey.set(item.id);
|
|
215
|
+
this.translocoService.setActiveLang(item.id);
|
|
216
|
+
this.preferencesStorage.savePreferences({ ...this.currentPreferences(), currentLanguageCode: item.id });
|
|
217
|
+
this.layoutService.notifyUserChangedLanguage(item.id);
|
|
218
|
+
this.isLanguageSwitcherDropdownOpen = false;
|
|
211
219
|
}
|
|
212
|
-
|
|
213
|
-
this.
|
|
220
|
+
selectLoggedUserMenuItem(item) {
|
|
221
|
+
const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id() === item.id);
|
|
222
|
+
if (!!btn?.clickFunction) {
|
|
223
|
+
btn.clickFunction({ data: this.userInfo() });
|
|
224
|
+
}
|
|
214
225
|
}
|
|
215
|
-
|
|
216
|
-
|
|
226
|
+
readNotification(notification) {
|
|
227
|
+
if (!notification.dateRead) {
|
|
228
|
+
this.notificationsService.markAsRead(notification.id);
|
|
229
|
+
}
|
|
230
|
+
this.notificationsService.clickOnNotification(notification);
|
|
217
231
|
}
|
|
218
|
-
|
|
219
|
-
this.
|
|
220
|
-
this.hasNewNotifications = !this.hasNewNotifications;
|
|
232
|
+
removeNotification(notification) {
|
|
233
|
+
this.notificationsService.removeNotifications(notification.id);
|
|
221
234
|
}
|
|
222
|
-
|
|
223
|
-
this.
|
|
235
|
+
toggleSidebarOnMobile() {
|
|
236
|
+
this.isSidebarMobileOpen.set(!this.isSidebarMobileOpen());
|
|
224
237
|
}
|
|
225
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
226
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: HeaderComponent, selector: "upd-header", inputs: { style: "style", showSearchBar: "showSearchBar" }, host: { properties: { "class": "this.wrapperClasses" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon\"></upd-icon>\n </upd-link>\n </div>\n @if (showLanguageSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchLanguage()\">\n <upd-icon tablerIcon=\"flag\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (showNotifications) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"openNotifications()\">\n <upd-icon [tablerIcon]=\"currentNotificationsIcon\"></upd-icon>\n @if (hasNewNotifications) {\n <span class=\"badge bg-red\"></span>\n }\n </upd-link>\n <div class=\"dropdown-menu dropdown-menu-arrow dropdown-menu-end dropdown-menu-card\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">Last updates</h3>\n </div>\n <div class=\"list-group list-group-flush list-group-hoverable\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-red d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 1</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Change deprecated html tags to text decoration classes (#29604)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 2</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n justify-content:between \u21D2 justify-content:space-between (#29734)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions show\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-yellow\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 3</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Update change-version.js (#29736)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-green d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 4</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Regenerate package-lock.json (#29730)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n @if (showUserMenu) {\n <div class=\"nav-item dropdown\">\n <a href=\"#\" class=\"nav-link d-flex lh-1 text-reset p-0\" data-bs-toggle=\"dropdown\"\n aria-label=\"Open user menu\">\n <!--<span class=\"avatar avatar-sm\" style=\"background-image: url(./static/avatars/000m.jpg)\"></span>-->\n <span class=\"avatar avatar-sm\"></span>\n <div class=\"d-none d-xl-block ps-2\">\n <div>Eros Stein</div>\n <div class=\"mt-1 small text-muted\">Administrator</div>\n </div>\n </a>\n <div class=\"dropdown-menu dropdown-menu-end dropdown-menu-arrow\">\n <a href=\"#\" class=\"dropdown-item\">Status</a>\n <a href=\"./profile.html\" class=\"dropdown-item\">Profile</a>\n <a href=\"#\" class=\"dropdown-item\">Feedback</a>\n <div class=\"dropdown-divider\"></div>\n <a href=\"./settings.html\" class=\"dropdown-item\">Settings</a>\n <a href=\"./sign-in.html\" class=\"dropdown-item\">Logout</a>\n </div>\n </div>\n }\n </div>\n @if (showSearchBar) {\n <div class=\"collapse navbar-collapse\">\n <div>\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"Search\u2026\">\n </div>\n </form>\n </div>\n </div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "removeDefaultClasses", "customClasses", "tablerIcon", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i2.LinkComponent, selector: "upd-link", inputs: ["href", "target", "customClasses", "isNavigation"], outputs: ["clicked"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
238
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HeaderComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
239
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HeaderComponent, selector: "upd-header", inputs: { style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.classes" } }, viewQueries: [{ propertyName: "languageSwitcherRef", first: true, predicate: ["languageSwitcherBtn"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "notificationsRef", first: true, predicate: ["notificationsBtn"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "loggedUserRef", first: true, predicate: ["loggedUserBtn"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n @if (!!config().showThemeSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon()\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (!!config().showLanguageSwitcher && languagesOptions().length > 0) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLanguageSwitcherDropdownOpen=true\"\n #languageSwitcherBtn>\n <upd-icon tablerIcon=\"language\"></upd-icon>\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLanguageSwitcherDropdownOpen\"\n [dropdownReference]=\"languageSwitcherRef()\" [items]=\"languagesOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isLanguageSwitcherDropdownOpen = $event\" (selectedItem)=\"switchLanguage($event)\">\n </upd-dropdown>\n </div>\n }\n @if (!!config().showNotifications && !!userInfo()) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isNotificationsDropdownOpen = true\"\n #notificationsBtn>\n <upd-icon [tablerIcon]=\"currentNotificationsIcon()\"></upd-icon>\n @if (hasNewNotifications()) {\n <span class=\"badge bg-red\" [class.badge-blink]=\"shouldBlinkIfNewNotifications()\"></span>\n }\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1 dropdown-menu-card\" [isOpen]=\"isNotificationsDropdownOpen\"\n [dropdownReference]=\"notificationsRef()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isNotificationsDropdownOpen = $event\" [minWidth]=\"400\" arrowType=\"right\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">{{ 'UpDevs.NotificationCenter.Title' | transloco }}</h3>\n </div>\n @for (notification of latestNotifications(); track notification) {\n <div class=\"list-group list-group-flush list-group-hoverable\" (click)=\"readNotification(notification)\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\">\n @if (!!notification.dateRead) {\n <span class=\"status-dot d-block\"></span>\n } @else {\n <span class=\"status-dot status-dot-animated bg-primary d-block\"></span>\n }\n </div>\n <div class=\"col text-truncate\">\n <a href=\"javascript:void(0)\" class=\"text-body d-block\"\n [class.fw-bold]=\"!notification.dateRead\">\n {{ textService.getText(notification.title) }}\n </a>\n @if (!!notification.description) {\n <div class=\"d-block text-secondary text-truncate mt-n1\">\n {{ textService.getText(notification.description) }}\n </div>\n }\n </div>\n <div class=\"col-auto\">\n <upd-link [customClasses]=\"['list-group-item-actions']\"\n (clicked)=\"removeNotification(notification)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-link>\n </div>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ 'UpDevs.NotificationCenter.NoNotifications' | transloco }}</h1>\n </div>\n }\n </div>\n </upd-dropdown>\n </div>\n }\n </div>\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n }\n </div>\n @if (!!config().showSearchBar && !!userInfo()) {\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <div class=\"me-2\" [class.w-100]=\"config().shouldUseFullSearchBar\">\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"{{'UpDevs.Header.Search' | transloco}}...\">\n </div>\n </form>\n </div>\n </div>\n } @else {\n <div></div>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1$2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i2.DropdownComponent, selector: "upd-dropdown", inputs: ["items", "header", "isOpen", "shouldCloseOnOutsideClick", "arrowType", "wrapperClasses", "elementsExcludedFromOutsideClick", "minHeight", "maxHeight", "minWidth", "maxWidth", "dropdownReference", "dropdownReferencePosition", "textOverflowStrategy"], outputs: ["isOpenChange", "selectedItem", "checkboxChanged"] }, { kind: "component", type: i3.LinkComponent, selector: "upd-link", inputs: ["href", "target", "customClasses", "isNavigation"], outputs: ["clicked"] }, { kind: "pipe", type: i1$1.TranslocoPipe, name: "transloco" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
227
240
|
}
|
|
228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
241
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
229
242
|
type: Component,
|
|
230
|
-
args: [{ selector: 'upd-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon\"></upd-icon>\n </upd-link>\n </div>\n @if (showLanguageSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchLanguage()\">\n <upd-icon tablerIcon=\"flag\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (showNotifications) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"openNotifications()\">\n <upd-icon [tablerIcon]=\"currentNotificationsIcon\"></upd-icon>\n @if (hasNewNotifications) {\n <span class=\"badge bg-red\"></span>\n }\n </upd-link>\n <div class=\"dropdown-menu dropdown-menu-arrow dropdown-menu-end dropdown-menu-card\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">Last updates</h3>\n </div>\n <div class=\"list-group list-group-flush list-group-hoverable\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-red d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 1</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Change deprecated html tags to text decoration classes (#29604)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 2</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n justify-content:between \u21D2 justify-content:space-between (#29734)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions show\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-yellow\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span class=\"status-dot d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 3</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Update change-version.js (#29736)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\"><span\n class=\"status-dot status-dot-animated bg-green d-block\"></span></div>\n <div class=\"col text-truncate\">\n <a href=\"#\" class=\"text-body d-block\">Example 4</a>\n <div class=\"d-block text-muted text-truncate mt-n1\">\n Regenerate package-lock.json (#29730)\n </div>\n </div>\n <div class=\"col-auto\">\n <a href=\"#\" class=\"list-group-item-actions\">\n <!-- Download SVG icon from http://tabler-icons.io/i/star -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"icon text-muted\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" stroke-width=\"2\"\n stroke=\"currentColor\" fill=\"none\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\">\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\"/>\n <path\n d=\"M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873z\"/>\n </svg>\n </a>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n @if (showUserMenu) {\n <div class=\"nav-item dropdown\">\n <a href=\"#\" class=\"nav-link d-flex lh-1 text-reset p-0\" data-bs-toggle=\"dropdown\"\n aria-label=\"Open user menu\">\n <!--<span class=\"avatar avatar-sm\" style=\"background-image: url(./static/avatars/000m.jpg)\"></span>-->\n <span class=\"avatar avatar-sm\"></span>\n <div class=\"d-none d-xl-block ps-2\">\n <div>Eros Stein</div>\n <div class=\"mt-1 small text-muted\">Administrator</div>\n </div>\n </a>\n <div class=\"dropdown-menu dropdown-menu-end dropdown-menu-arrow\">\n <a href=\"#\" class=\"dropdown-item\">Status</a>\n <a href=\"./profile.html\" class=\"dropdown-item\">Profile</a>\n <a href=\"#\" class=\"dropdown-item\">Feedback</a>\n <div class=\"dropdown-divider\"></div>\n <a href=\"./settings.html\" class=\"dropdown-item\">Settings</a>\n <a href=\"./sign-in.html\" class=\"dropdown-item\">Logout</a>\n </div>\n </div>\n }\n </div>\n @if (showSearchBar) {\n <div class=\"collapse navbar-collapse\">\n <div>\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"Search\u2026\">\n </div>\n </form>\n </div>\n </div>\n }\n</div>\n" }]
|
|
231
|
-
}], propDecorators: {
|
|
243
|
+
args: [{ selector: 'upd-header', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-xl\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <div class=\"navbar-nav flex-row order-md-last\">\n <div class=\"d-none d-md-flex me-3\">\n @if (!!config().showThemeSwitcher) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"switchTheme()\">\n <upd-icon [tablerIcon]=\"nextThemeIcon()\"></upd-icon>\n </upd-link>\n </div>\n }\n @if (!!config().showLanguageSwitcher && languagesOptions().length > 0) {\n <div class=\"nav-item\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLanguageSwitcherDropdownOpen=true\"\n #languageSwitcherBtn>\n <upd-icon tablerIcon=\"language\"></upd-icon>\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLanguageSwitcherDropdownOpen\"\n [dropdownReference]=\"languageSwitcherRef()\" [items]=\"languagesOptions()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isLanguageSwitcherDropdownOpen = $event\" (selectedItem)=\"switchLanguage($event)\">\n </upd-dropdown>\n </div>\n }\n @if (!!config().showNotifications && !!userInfo()) {\n <div class=\"nav-item dropdown d-none d-md-flex\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isNotificationsDropdownOpen = true\"\n #notificationsBtn>\n <upd-icon [tablerIcon]=\"currentNotificationsIcon()\"></upd-icon>\n @if (hasNewNotifications()) {\n <span class=\"badge bg-red\" [class.badge-blink]=\"shouldBlinkIfNewNotifications()\"></span>\n }\n </upd-link>\n <upd-dropdown wrapperClasses=\"mt-1 dropdown-menu-card\" [isOpen]=\"isNotificationsDropdownOpen\"\n [dropdownReference]=\"notificationsRef()\" [shouldCloseOnOutsideClick]=\"true\"\n (isOpenChange)=\"isNotificationsDropdownOpen = $event\" [minWidth]=\"400\" arrowType=\"right\">\n <div class=\"card\">\n <div class=\"card-header\">\n <h3 class=\"card-title\">{{ 'UpDevs.NotificationCenter.Title' | transloco }}</h3>\n </div>\n @for (notification of latestNotifications(); track notification) {\n <div class=\"list-group list-group-flush list-group-hoverable\" (click)=\"readNotification(notification)\">\n <div class=\"list-group-item\">\n <div class=\"row align-items-center\">\n <div class=\"col-auto\">\n @if (!!notification.dateRead) {\n <span class=\"status-dot d-block\"></span>\n } @else {\n <span class=\"status-dot status-dot-animated bg-primary d-block\"></span>\n }\n </div>\n <div class=\"col text-truncate\">\n <a href=\"javascript:void(0)\" class=\"text-body d-block\"\n [class.fw-bold]=\"!notification.dateRead\">\n {{ textService.getText(notification.title) }}\n </a>\n @if (!!notification.description) {\n <div class=\"d-block text-secondary text-truncate mt-n1\">\n {{ textService.getText(notification.description) }}\n </div>\n }\n </div>\n <div class=\"col-auto\">\n <upd-link [customClasses]=\"['list-group-item-actions']\"\n (clicked)=\"removeNotification(notification)\">\n <upd-icon tablerIcon=\"x\"></upd-icon>\n </upd-link>\n </div>\n </div>\n </div>\n </div>\n } @empty {\n <div class=\"empty\">\n <h1 class=\"text-body-tertiary\">{{ 'UpDevs.NotificationCenter.NoNotifications' | transloco }}</h1>\n </div>\n }\n </div>\n </upd-dropdown>\n </div>\n }\n </div>\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n }\n </div>\n @if (!!config().showSearchBar && !!userInfo()) {\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <div class=\"me-2\" [class.w-100]=\"config().shouldUseFullSearchBar\">\n <form autocomplete=\"off\" novalidate>\n <div class=\"input-icon\">\n <span class=\"input-icon-addon\">\n <upd-icon tablerIcon=\"search\"></upd-icon>\n </span>\n <input type=\"text\" value=\"\" class=\"form-control\" placeholder=\"{{'UpDevs.Header.Search' | transloco}}...\">\n </div>\n </form>\n </div>\n </div>\n } @else {\n <div></div>\n }\n</div>\n" }]
|
|
244
|
+
}], propDecorators: { classes: [{
|
|
232
245
|
type: HostBinding,
|
|
233
246
|
args: ['class']
|
|
234
|
-
}], style: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], showSearchBar: [{
|
|
237
|
-
type: Input
|
|
238
247
|
}] } });
|
|
239
248
|
|
|
249
|
+
class HeaderModule {
|
|
250
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
251
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: HeaderModule, declarations: [HeaderComponent], imports: [CommonModule,
|
|
252
|
+
TranslocoModule,
|
|
253
|
+
UpdIconsModule,
|
|
254
|
+
UpdDropdownModule,
|
|
255
|
+
UpdLinkModule], exports: [HeaderComponent] }); }
|
|
256
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HeaderModule, imports: [CommonModule,
|
|
257
|
+
TranslocoModule,
|
|
258
|
+
UpdIconsModule,
|
|
259
|
+
UpdDropdownModule,
|
|
260
|
+
UpdLinkModule] }); }
|
|
261
|
+
}
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HeaderModule, decorators: [{
|
|
263
|
+
type: NgModule,
|
|
264
|
+
args: [{
|
|
265
|
+
imports: [
|
|
266
|
+
CommonModule,
|
|
267
|
+
TranslocoModule,
|
|
268
|
+
UpdIconsModule,
|
|
269
|
+
UpdDropdownModule,
|
|
270
|
+
UpdLinkModule
|
|
271
|
+
],
|
|
272
|
+
declarations: [
|
|
273
|
+
HeaderComponent
|
|
274
|
+
],
|
|
275
|
+
exports: [
|
|
276
|
+
HeaderComponent
|
|
277
|
+
]
|
|
278
|
+
}]
|
|
279
|
+
}] });
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Configuration of the login page layout.
|
|
283
|
+
*/
|
|
284
|
+
class LoginPageConfigModel {
|
|
285
|
+
constructor(init) {
|
|
286
|
+
/**
|
|
287
|
+
* Buttons used for social login (google, facebook, etc).
|
|
288
|
+
*/
|
|
289
|
+
this.socialLoginButtons = [];
|
|
290
|
+
Object.assign(this, init);
|
|
291
|
+
this.layout = init?.layout || 'centered-box';
|
|
292
|
+
this.borderColor = init?.borderColor || 'primary';
|
|
293
|
+
this.signInButtonColor = init?.signInButtonColor || 'primary';
|
|
294
|
+
this.linksColor = init?.linksColor || this.signInButtonColor;
|
|
295
|
+
if (init?.socialLoginButtons) {
|
|
296
|
+
this.socialLoginButtons = init.socialLoginButtons;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Configuration for the pages related to the security.
|
|
303
|
+
*/
|
|
304
|
+
class SecurityLayoutConfigModel {
|
|
305
|
+
constructor(init) {
|
|
306
|
+
this.loginPage = new LoginPageConfigModel(init?.loginPage);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Layout configuration.
|
|
312
|
+
*/
|
|
313
|
+
class UpdLayoutConfigModel {
|
|
314
|
+
constructor(init) {
|
|
315
|
+
if (init?.mainLogo === undefined) {
|
|
316
|
+
// this.mainLogo = LogoConstants.defaultLogo; // TODO: add images
|
|
317
|
+
}
|
|
318
|
+
if (init?.smallLogo === undefined) {
|
|
319
|
+
// this.smallLogo = LogoConstants.smallLogo;
|
|
320
|
+
}
|
|
321
|
+
if (init?.loggedOutBackground === undefined) {
|
|
322
|
+
// this.loggedOutBackground = ImageConstants.loggedOutBackground;
|
|
323
|
+
}
|
|
324
|
+
this.menuTitle = init?.menuTitle || 'UpDevs';
|
|
325
|
+
this.showNotificationsButton = init?.showNotificationsButton || true;
|
|
326
|
+
this.showUserMenu = init?.showUserMenu || true;
|
|
327
|
+
this.displayReportErrorButton = init?.displayReportErrorButton || false;
|
|
328
|
+
this.useFluidLayout = init?.useFluidLayout || false;
|
|
329
|
+
this.securityLayoutConfig = new SecurityLayoutConfigModel(init?.securityLayoutConfig);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Layout constants.
|
|
335
|
+
*/
|
|
336
|
+
class LayoutConstants {
|
|
337
|
+
/**
|
|
338
|
+
* Key to inject the default configuration.
|
|
339
|
+
*/
|
|
340
|
+
static { this.defaultOptionsKey = 'upd-layout-default-options'; }
|
|
341
|
+
/**
|
|
342
|
+
* Injection token for the default configuration.
|
|
343
|
+
*/
|
|
344
|
+
static { this.defaultOptionsInjectionToken = new InjectionToken(LayoutConstants.defaultOptionsKey); }
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Layout configuration data.
|
|
349
|
+
*/
|
|
350
|
+
class UpdLayoutConfigService {
|
|
351
|
+
constructor(layoutConfig) {
|
|
352
|
+
this.config = new UpdLayoutConfigModel(layoutConfig);
|
|
353
|
+
}
|
|
354
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdLayoutConfigService, deps: [{ token: LayoutConstants.defaultOptionsInjectionToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
355
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdLayoutConfigService }); }
|
|
356
|
+
}
|
|
357
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdLayoutConfigService, decorators: [{
|
|
358
|
+
type: Injectable
|
|
359
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
360
|
+
type: Inject,
|
|
361
|
+
args: [LayoutConstants.defaultOptionsInjectionToken]
|
|
362
|
+
}] }] });
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* Basic layout structure.
|
|
366
|
+
*/
|
|
367
|
+
class BaseLayout extends BaseComponent {
|
|
368
|
+
constructor() {
|
|
369
|
+
super(...arguments);
|
|
370
|
+
this._layoutConfigService = inject(UpdLayoutConfigService);
|
|
371
|
+
this._layoutService = inject(LayoutService);
|
|
372
|
+
}
|
|
373
|
+
ngOnInit() {
|
|
374
|
+
if (this._layoutConfigService.config.useFluidLayout) {
|
|
375
|
+
this._layoutService.addBodyClasses('layout-fluid');
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
ngOnDestroy() {
|
|
379
|
+
super.ngOnDestroy();
|
|
380
|
+
if (this._layoutConfigService.config.useFluidLayout) {
|
|
381
|
+
this._layoutService.removeBodyClasses('layout-fluid');
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseLayout, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
385
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0", type: BaseLayout, usesInheritance: true, ngImport: i0 }); }
|
|
386
|
+
}
|
|
387
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BaseLayout, decorators: [{
|
|
388
|
+
type: Directive
|
|
389
|
+
}] });
|
|
390
|
+
|
|
391
|
+
class BlankLayoutComponent extends BaseLayout {
|
|
392
|
+
constructor() {
|
|
393
|
+
super(...arguments);
|
|
394
|
+
this.config = computed(() => this._layoutService.mainHeaderConfig());
|
|
395
|
+
}
|
|
396
|
+
ngOnInit() {
|
|
397
|
+
// Overriding layout fluid from parent.
|
|
398
|
+
}
|
|
399
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BlankLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
400
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: BlankLayoutComponent, selector: "upd-blank-layout", usesInheritance: true, ngImport: i0, template: "<div class=\"page\" [class.page-center]=\"_layoutService.isPageCentered()\">\n @if (!config().shouldHideTopBarIfBlankLayout) {\n <upd-header [style]=\"'transparent'\"></upd-header>\n }\n\n <router-outlet></router-outlet>\n\n @if (!config().shouldHideFooterIfBlankLayout) {\n <upd-footer></upd-footer>\n }\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: FooterComponent, selector: "upd-footer" }, { kind: "component", type: HeaderComponent, selector: "upd-header", inputs: ["style"] }] }); }
|
|
401
|
+
}
|
|
402
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BlankLayoutComponent, decorators: [{
|
|
403
|
+
type: Component,
|
|
404
|
+
args: [{ selector: 'upd-blank-layout', template: "<div class=\"page\" [class.page-center]=\"_layoutService.isPageCentered()\">\n @if (!config().shouldHideTopBarIfBlankLayout) {\n <upd-header [style]=\"'transparent'\"></upd-header>\n }\n\n <router-outlet></router-outlet>\n\n @if (!config().shouldHideFooterIfBlankLayout) {\n <upd-footer></upd-footer>\n }\n</div>\n" }]
|
|
405
|
+
}] });
|
|
406
|
+
|
|
407
|
+
class BlankLayoutModule {
|
|
408
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BlankLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
409
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: BlankLayoutModule, declarations: [BlankLayoutComponent], imports: [CommonModule,
|
|
410
|
+
RouterOutlet,
|
|
411
|
+
TranslocoPipe,
|
|
412
|
+
UpdDropdownModule,
|
|
413
|
+
UpdIconsModule,
|
|
414
|
+
UpdLinkModule,
|
|
415
|
+
FooterModule,
|
|
416
|
+
HeaderModule], exports: [BlankLayoutComponent] }); }
|
|
417
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BlankLayoutModule, imports: [CommonModule,
|
|
418
|
+
UpdDropdownModule,
|
|
419
|
+
UpdIconsModule,
|
|
420
|
+
UpdLinkModule,
|
|
421
|
+
FooterModule,
|
|
422
|
+
HeaderModule] }); }
|
|
423
|
+
}
|
|
424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: BlankLayoutModule, decorators: [{
|
|
425
|
+
type: NgModule,
|
|
426
|
+
args: [{
|
|
427
|
+
imports: [
|
|
428
|
+
CommonModule,
|
|
429
|
+
RouterOutlet,
|
|
430
|
+
TranslocoPipe,
|
|
431
|
+
UpdDropdownModule,
|
|
432
|
+
UpdIconsModule,
|
|
433
|
+
UpdLinkModule,
|
|
434
|
+
FooterModule,
|
|
435
|
+
HeaderModule
|
|
436
|
+
],
|
|
437
|
+
declarations: [
|
|
438
|
+
BlankLayoutComponent
|
|
439
|
+
],
|
|
440
|
+
exports: [
|
|
441
|
+
BlankLayoutComponent
|
|
442
|
+
]
|
|
443
|
+
}]
|
|
444
|
+
}] });
|
|
445
|
+
|
|
446
|
+
var UpDevs$1 = {
|
|
447
|
+
Login: {
|
|
448
|
+
Title: "Login",
|
|
449
|
+
NoAccountYet: "Don't have an account?",
|
|
450
|
+
SignUp: "Sign-up",
|
|
451
|
+
SignIn: "Sign-in",
|
|
452
|
+
RecoverPassword: "Recover my password",
|
|
453
|
+
RememberMe: "Remember me on this device",
|
|
454
|
+
Or: "or",
|
|
455
|
+
Email: "Email",
|
|
456
|
+
Password: "Password"
|
|
457
|
+
},
|
|
458
|
+
Footer: {
|
|
459
|
+
Prefix: "Copyright",
|
|
460
|
+
"Symbol": "©",
|
|
461
|
+
Suffix: "All rights reserved."
|
|
462
|
+
},
|
|
463
|
+
NotificationCenter: {
|
|
464
|
+
Title: "Latest notifications",
|
|
465
|
+
NoNotifications: "No notifications"
|
|
466
|
+
},
|
|
467
|
+
Header: {
|
|
468
|
+
Search: "Search"
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
var en = {
|
|
472
|
+
UpDevs: UpDevs$1
|
|
473
|
+
};
|
|
474
|
+
|
|
475
|
+
var en$1 = /*#__PURE__*/Object.freeze({
|
|
476
|
+
__proto__: null,
|
|
477
|
+
UpDevs: UpDevs$1,
|
|
478
|
+
default: en
|
|
479
|
+
});
|
|
480
|
+
|
|
481
|
+
var UpDevs = {
|
|
482
|
+
Login: {
|
|
483
|
+
Title: "Login",
|
|
484
|
+
NoAccountYet: "Não tem conta?",
|
|
485
|
+
SignUp: "Cadastre-se",
|
|
486
|
+
SignIn: "Entrar",
|
|
487
|
+
RecoverPassword: "Recuperar minha senha",
|
|
488
|
+
RememberMe: "Lembrar",
|
|
489
|
+
Or: "ou",
|
|
490
|
+
Email: "Email",
|
|
491
|
+
Password: "Senha"
|
|
492
|
+
},
|
|
493
|
+
Footer: {
|
|
494
|
+
Prefix: "Copyright",
|
|
495
|
+
"Symbol": "©",
|
|
496
|
+
Suffix: "Todos os direitos reservados."
|
|
497
|
+
},
|
|
498
|
+
NotificationCenter: {
|
|
499
|
+
Title: "Últimas notificações",
|
|
500
|
+
NoNotifications: "Sem notificações"
|
|
501
|
+
},
|
|
502
|
+
Header: {
|
|
503
|
+
Search: "Pesquisar"
|
|
504
|
+
}
|
|
505
|
+
};
|
|
506
|
+
var pt = {
|
|
507
|
+
UpDevs: UpDevs
|
|
508
|
+
};
|
|
509
|
+
|
|
510
|
+
var pt$1 = /*#__PURE__*/Object.freeze({
|
|
511
|
+
__proto__: null,
|
|
512
|
+
UpDevs: UpDevs,
|
|
513
|
+
default: pt
|
|
514
|
+
});
|
|
515
|
+
|
|
240
516
|
class SidebarComponent extends BaseComponent {
|
|
241
517
|
constructor() {
|
|
242
518
|
super(...arguments);
|
|
243
519
|
this.wrapperClasses = 'navbar navbar-vertical navbar-expand-lg';
|
|
244
520
|
this.theme = 'dark';
|
|
245
521
|
this.menuItems = [];
|
|
522
|
+
this.isLoggedUserDropdownOpen = false;
|
|
523
|
+
this.loggedUserRef = viewChild('loggedUserBtn', { read: ElementRef });
|
|
524
|
+
this.textService = inject(TextService);
|
|
525
|
+
this.isSidebarMobileOpen = signal(false);
|
|
526
|
+
this.config = computed(() => this.layoutService.mainHeaderConfig());
|
|
527
|
+
this.userInfo = computed(() => this.securityStorage.getUserInfo());
|
|
528
|
+
this.userIdentification = computed(() => !!this.userInfo() ? this.coreLayoutConfigService.config.getUserName(this.userInfo()) : '');
|
|
529
|
+
this.userDescription = computed(() => !!this.coreLayoutConfigService.config.getUserDescription
|
|
530
|
+
? this.coreLayoutConfigService.config.getUserDescription(this.userInfo())
|
|
531
|
+
: '');
|
|
532
|
+
this.loggedUserOptions = computed(() => {
|
|
533
|
+
const userActions = [];
|
|
534
|
+
this.coreLayoutConfigService.config.loggedUserMenuActions.forEach(act => userActions.push({
|
|
535
|
+
id: act.id(),
|
|
536
|
+
text: act.text(),
|
|
537
|
+
type: 'default',
|
|
538
|
+
icon: act.iconModel?.()
|
|
539
|
+
}));
|
|
540
|
+
return userActions;
|
|
541
|
+
});
|
|
542
|
+
this.userInitials = computed(() => {
|
|
543
|
+
const firstChar = this.userIdentification().charAt(0);
|
|
544
|
+
const lastSpaceIndex = this.userIdentification().lastIndexOf(' ');
|
|
545
|
+
const firstAfterLastSpace = lastSpaceIndex !== -1 ? this.userIdentification().charAt(lastSpaceIndex + 1) : '';
|
|
546
|
+
return `${firstChar}${firstAfterLastSpace}`;
|
|
547
|
+
});
|
|
548
|
+
this.currentRoute = '';
|
|
549
|
+
this.menuItemsBackup = [];
|
|
246
550
|
this.router = inject(Router);
|
|
551
|
+
this.menuService = inject(MenuService);
|
|
552
|
+
this.layoutService = inject(LayoutService);
|
|
553
|
+
this.securityStorage = inject(SecurityStorage);
|
|
554
|
+
this.coreLayoutConfigService = inject(UpdCoreLayoutConfigService);
|
|
247
555
|
}
|
|
248
556
|
ngOnInit() {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
557
|
+
this.currentRoute = this.router.url;
|
|
558
|
+
this.menuItems = this.menuService.generateMenu();
|
|
559
|
+
this.menuItemsBackup = [...this.menuItems];
|
|
560
|
+
const menuRefreshSub = this.menuService.refreshSubject.subscribe(() => {
|
|
561
|
+
this.menuItems = [...this.menuService.generateMenu()];
|
|
562
|
+
this.menuItemsBackup = [...this.menuItems];
|
|
563
|
+
this.updateActiveRoute();
|
|
253
564
|
});
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
565
|
+
const routerSub = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => {
|
|
566
|
+
this.currentRoute = event.url;
|
|
567
|
+
this.updateActiveRoute();
|
|
257
568
|
});
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
icon: { tablerIcon: 'home' }
|
|
261
|
-
});
|
|
262
|
-
const cardsItem = new RouteDataModel({
|
|
263
|
-
title: 'Cards',
|
|
264
|
-
icon: { tablerIcon: 'user' },
|
|
265
|
-
children: [
|
|
266
|
-
sampleCardsItem,
|
|
267
|
-
cardActionsItem
|
|
268
|
-
]
|
|
269
|
-
});
|
|
270
|
-
const interfaceItem = new RouteDataModel({
|
|
271
|
-
title: 'Interface',
|
|
272
|
-
icon: { tablerIcon: 'device-desktop' },
|
|
273
|
-
children: [
|
|
274
|
-
emptyPageItem,
|
|
275
|
-
cardsItem
|
|
276
|
-
]
|
|
277
|
-
});
|
|
278
|
-
sampleCardsItem.parent = cardsItem;
|
|
279
|
-
cardActionsItem.parent = cardsItem;
|
|
280
|
-
emptyPageItem.parent = interfaceItem;
|
|
281
|
-
cardsItem.parent = interfaceItem;
|
|
282
|
-
this.menuItems = [
|
|
283
|
-
new RouteDataModel({
|
|
284
|
-
title: 'Home',
|
|
285
|
-
icon: { tablerIcon: 'home' }
|
|
286
|
-
}),
|
|
287
|
-
new RouteDataModel({
|
|
288
|
-
title: 'Archives',
|
|
289
|
-
icon: { tablerIcon: 'folder' }
|
|
290
|
-
}),
|
|
291
|
-
interfaceItem,
|
|
292
|
-
new RouteDataModel({
|
|
293
|
-
title: 'Library',
|
|
294
|
-
icon: { tablerIcon: 'building' }
|
|
295
|
-
})
|
|
296
|
-
];
|
|
297
|
-
// END demo code
|
|
298
|
-
const routerSub = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => this.updateActiveRoute(event.url));
|
|
299
|
-
this.updateActiveRoute(this.router.url);
|
|
300
|
-
this.addSubscriptions(routerSub);
|
|
569
|
+
this.updateActiveRoute();
|
|
570
|
+
this.addSubscriptions(routerSub, menuRefreshSub);
|
|
301
571
|
}
|
|
302
572
|
onMenuItemClick(item) {
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
573
|
+
if (item.isLocked) {
|
|
574
|
+
if (!!item.lockedClickFunction) {
|
|
575
|
+
item.lockedClickFunction();
|
|
576
|
+
}
|
|
577
|
+
return;
|
|
578
|
+
}
|
|
579
|
+
let newMenuItems = this.resetMenuState(this.menuItems);
|
|
580
|
+
newMenuItems = this.setItemActive(newMenuItems, item, this.hasChildren(item) ? !item.isActive : true);
|
|
581
|
+
newMenuItems = this.updateParents(newMenuItems, item);
|
|
582
|
+
this.menuItems = newMenuItems;
|
|
306
583
|
if (!!item.clickFunction) {
|
|
307
584
|
item.clickFunction();
|
|
308
585
|
return;
|
|
309
586
|
}
|
|
310
|
-
if ((item
|
|
587
|
+
if (this.hasChildren(item)) {
|
|
311
588
|
return;
|
|
312
589
|
}
|
|
313
|
-
this.
|
|
590
|
+
const fullPath = this.findItemById(this.menuItemsBackup, item.id).getFullPath();
|
|
591
|
+
this.router.navigate(fullPath).then();
|
|
314
592
|
}
|
|
315
593
|
hasChildren(item) {
|
|
316
594
|
return (item.children?.length || 0) > 0;
|
|
317
595
|
}
|
|
596
|
+
asMenuItem(item) {
|
|
597
|
+
return item;
|
|
598
|
+
}
|
|
599
|
+
getItemClasses(item, activeClass, ...classes) {
|
|
600
|
+
return [
|
|
601
|
+
...classes,
|
|
602
|
+
item.isActive ? activeClass : '',
|
|
603
|
+
item.isLocked ? 'disabled' : ''
|
|
604
|
+
];
|
|
605
|
+
}
|
|
606
|
+
toggleSidebarOnMobile() {
|
|
607
|
+
this.isSidebarMobileOpen.set(!this.isSidebarMobileOpen());
|
|
608
|
+
}
|
|
609
|
+
selectLoggedUserMenuItem(item) {
|
|
610
|
+
const btn = this.coreLayoutConfigService.config.loggedUserMenuActions.find(b => b.id() === item.id);
|
|
611
|
+
if (!!btn?.clickFunction) {
|
|
612
|
+
btn.clickFunction({ data: this.userInfo() });
|
|
613
|
+
}
|
|
614
|
+
}
|
|
318
615
|
findActiveNode(item, fullPath) {
|
|
319
616
|
if (item.fullPath === fullPath) {
|
|
320
617
|
return item;
|
|
321
618
|
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
619
|
+
for (const child of item.children) {
|
|
620
|
+
const found = this.findActiveNode(child, fullPath);
|
|
621
|
+
if (found) {
|
|
622
|
+
return found;
|
|
326
623
|
}
|
|
327
|
-
return result;
|
|
328
624
|
}
|
|
329
625
|
return undefined;
|
|
330
626
|
}
|
|
331
|
-
updateActiveRoute(
|
|
332
|
-
this.resetMenuState(this.menuItems);
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
627
|
+
updateActiveRoute() {
|
|
628
|
+
let newMenuItems = this.resetMenuState(this.menuItems);
|
|
629
|
+
const activePath = this.getActivePath(newMenuItems);
|
|
630
|
+
newMenuItems = this.setActivePath(newMenuItems, activePath);
|
|
631
|
+
this.menuItems = newMenuItems;
|
|
632
|
+
}
|
|
633
|
+
setActivePath(items, path) {
|
|
634
|
+
if (path.length === 0) {
|
|
635
|
+
return items;
|
|
636
|
+
}
|
|
637
|
+
return items.map(item => {
|
|
638
|
+
const pathItem = path.find(p => p.id === item.id);
|
|
639
|
+
if (!pathItem) {
|
|
640
|
+
return item;
|
|
641
|
+
}
|
|
642
|
+
const newItem = { ...item, isActive: true };
|
|
643
|
+
if (newItem.children?.length) {
|
|
644
|
+
newItem.children = this.setActivePath(newItem.children, path.filter(p => p.parent?.id === newItem.id));
|
|
645
|
+
newItem.children.forEach(child => child.parent = newItem);
|
|
646
|
+
}
|
|
647
|
+
return newItem;
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
getActivePath(items) {
|
|
651
|
+
let activeItem;
|
|
652
|
+
// Find the deepest active item.
|
|
653
|
+
for (const item of items) {
|
|
654
|
+
activeItem = this.findActiveNode(item, this.currentRoute);
|
|
655
|
+
if (activeItem) {
|
|
337
656
|
break;
|
|
338
657
|
}
|
|
339
658
|
}
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
659
|
+
// Collect parent hierarchy.
|
|
660
|
+
const path = [];
|
|
661
|
+
while (activeItem) {
|
|
662
|
+
path.unshift(activeItem);
|
|
663
|
+
activeItem = activeItem.parent;
|
|
343
664
|
}
|
|
665
|
+
return path;
|
|
344
666
|
}
|
|
345
667
|
resetMenuState(items) {
|
|
346
|
-
items.
|
|
347
|
-
|
|
348
|
-
if (
|
|
349
|
-
this.resetMenuState(
|
|
668
|
+
return items.map(item => {
|
|
669
|
+
const newItem = { ...item, isActive: false };
|
|
670
|
+
if (newItem.children?.length) {
|
|
671
|
+
newItem.children = this.resetMenuState(newItem.children);
|
|
672
|
+
newItem.children.forEach(child => child.parent = newItem);
|
|
350
673
|
}
|
|
674
|
+
return newItem;
|
|
351
675
|
});
|
|
352
676
|
}
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
677
|
+
setItemActive(items, target, isActive) {
|
|
678
|
+
return items.map(item => {
|
|
679
|
+
if (item.id === target.id) {
|
|
680
|
+
const newItem = { ...item, isActive };
|
|
681
|
+
if (newItem.children?.length) {
|
|
682
|
+
newItem.children = this.setItemActive(newItem.children, target, isActive);
|
|
683
|
+
newItem.children.forEach(child => child.parent = newItem);
|
|
684
|
+
}
|
|
685
|
+
return newItem;
|
|
686
|
+
}
|
|
687
|
+
if (item.children?.length) {
|
|
688
|
+
const newChildren = this.setItemActive(item.children, target, isActive);
|
|
689
|
+
const newItem = { ...item, children: newChildren };
|
|
690
|
+
newChildren.forEach(child => child.parent = newItem);
|
|
691
|
+
return newItem;
|
|
692
|
+
}
|
|
693
|
+
return item;
|
|
694
|
+
});
|
|
695
|
+
}
|
|
696
|
+
updateParents(items, childItem) {
|
|
697
|
+
let parent = childItem.parent;
|
|
698
|
+
let updatedItems = [...items];
|
|
699
|
+
while (parent) {
|
|
700
|
+
updatedItems = updatedItems.map(item => {
|
|
701
|
+
if (item.id === parent.id) {
|
|
702
|
+
return { ...parent, isActive: true };
|
|
703
|
+
}
|
|
704
|
+
return item;
|
|
705
|
+
});
|
|
706
|
+
parent = parent.parent;
|
|
358
707
|
}
|
|
708
|
+
return updatedItems;
|
|
709
|
+
}
|
|
710
|
+
findItemById(items, targetId) {
|
|
711
|
+
for (const item of items) {
|
|
712
|
+
if (item.id === targetId) {
|
|
713
|
+
return item;
|
|
714
|
+
}
|
|
715
|
+
if (item.children?.length) {
|
|
716
|
+
const child = this.findItemById(item.children, targetId);
|
|
717
|
+
if (!!child) {
|
|
718
|
+
return child;
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
return undefined;
|
|
359
723
|
}
|
|
360
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
361
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0
|
|
724
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SidebarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
725
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: SidebarComponent, selector: "upd-sidebar", host: { properties: { "class": "this.wrapperClasses", "attr.data-bs-theme": "this.theme" } }, viewQueries: [{ propertyName: "loggedUserRef", first: true, predicate: ["loggedUserBtn"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </h1>\n\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"navbar-nav flex-row d-lg-none\">\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n </div>\n }\n\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item.id) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"getItemClasses(item, 'show', hasChildren(item) ? 'dropdown-toggle':'')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n }\n</ng-template>\n\n<ng-template #linkContent let-item=\"menuItem\">\n @if (!!item.icon) {\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n }\n <span class=\"nav-link-title\">{{ textService.getText(item.title) }}</span>\n @if (item.isLocked) {\n <upd-icon class=\"ms-auto\" [model]=\"{tablerIcon: 'lock'}\"></upd-icon>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of asMenuItem(item).children; track child.id) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"getItemClasses(grandchild, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: grandchild}\">\n </ng-container>\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$2.IconComponent, selector: "upd-icon", inputs: ["model", "wrapperClasses", "color", "colorClass", "removeDefaultClasses", "customClasses", "tablerIcon", "tablerIconWeight", "tablerIconType", "tablerIconSize", "heroIcon", "heroIconSize", "heroIconType"] }, { kind: "component", type: i3.LinkComponent, selector: "upd-link", inputs: ["href", "target", "customClasses", "isNavigation"], outputs: ["clicked"] }, { kind: "component", type: i2.DropdownComponent, selector: "upd-dropdown", inputs: ["items", "header", "isOpen", "shouldCloseOnOutsideClick", "arrowType", "wrapperClasses", "elementsExcludedFromOutsideClick", "minHeight", "maxHeight", "minWidth", "maxWidth", "dropdownReference", "dropdownReferencePosition", "textOverflowStrategy"], outputs: ["isOpenChange", "selectedItem", "checkboxChanged"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
362
726
|
}
|
|
363
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
727
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: SidebarComponent, decorators: [{
|
|
364
728
|
type: Component,
|
|
365
|
-
args: [{ selector: 'upd-sidebar', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\"/>\n </a>\n </h1>\n <div class=\"collapse navbar-collapse\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"
|
|
729
|
+
args: [{ selector: 'upd-sidebar', encapsulation: ViewEncapsulation.None, template: "<div class=\"container-fluid\">\n <button class=\"navbar-toggler\" type=\"button\" (click)=\"toggleSidebarOnMobile()\" [attr.aria-expanded]=\"isSidebarMobileOpen()\">\n <span class=\"navbar-toggler-icon\"></span>\n </button>\n <h1 class=\"navbar-brand navbar-brand-autodark\">\n <a href=\".\">\n <img width=\"110\" height=\"32\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </h1>\n\n @if (!!config().showUserMenu && !!userInfo()) {\n <div class=\"navbar-nav flex-row d-lg-none\">\n <div class=\"nav-item dropdown\">\n <upd-link [isNavigation]=\"true\" [customClasses]=\"['px-0']\" (clicked)=\"isLoggedUserDropdownOpen = true\" #loggedUserBtn>\n @if (!!userInfo()!.avatar) {\n <span class=\"avatar avatar-sm\" style=\"background-image: url({{userInfo()?.avatar}})\"></span>\n } @else {\n <span class=\"avatar avatar-sm\">{{ userInitials() }}</span>\n }\n\n <div class=\"d-none d-xl-block px-2\">\n <div>{{ userIdentification() }}</div>\n @if (!!userDescription()) {\n <div class=\"mt-1 small text-muted\">{{ userDescription() }}</div>\n }\n </div>\n </upd-link>\n @if (loggedUserOptions().length > 0) {\n <upd-dropdown wrapperClasses=\"mt-1\" [isOpen]=\"isLoggedUserDropdownOpen\" [dropdownReference]=\"loggedUserRef()\"\n [items]=\"loggedUserOptions()\" [shouldCloseOnOutsideClick]=\"true\" (selectedItem)=\"selectLoggedUserMenuItem($event)\"\n (isOpenChange)=\"isLoggedUserDropdownOpen = $event\" arrowType=\"right\">\n </upd-dropdown>\n }\n </div>\n </div>\n }\n\n <div class=\"collapse navbar-collapse\" [class.show]=\"isSidebarMobileOpen()\">\n <ul class=\"navbar-nav pt-lg-3\">\n @for (item of menuItems; track item.id) {\n <li class=\"nav-item\" [class.dropdown]=\"hasChildren(item)\" [class.active]=\"item.isActive\">\n <ng-container [ngTemplateOutlet]=\"itemTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </li>\n }\n </ul>\n </div>\n</div>\n\n<ng-template #itemTpl let-item=\"menuItem\">\n <upd-link [isNavigation]=\"true\" (clicked)=\"onMenuItemClick(item)\"\n [customClasses]=\"getItemClasses(item, 'show', hasChildren(item) ? 'dropdown-toggle':'')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n </upd-link>\n @if (hasChildren(item)) {\n <ng-container [ngTemplateOutlet]=\"childrenTpl\" [ngTemplateOutletContext]=\"{menuItem: item}\"></ng-container>\n }\n</ng-template>\n\n<ng-template #linkContent let-item=\"menuItem\">\n @if (!!item.icon) {\n <span class=\"nav-link-icon d-md-none d-lg-inline-block\">\n <upd-icon [model]=\"item.icon\"></upd-icon>\n </span>\n }\n <span class=\"nav-link-title\">{{ textService.getText(item.title) }}</span>\n @if (item.isLocked) {\n <upd-icon class=\"ms-auto\" [model]=\"{tablerIcon: 'lock'}\"></upd-icon>\n }\n</ng-template>\n\n<ng-template #childrenTpl let-item=\"menuItem\">\n <div class=\"dropdown-menu\" [class.show]=\"item.isActive\">\n <div class=\"dropdown-menu-columns\">\n <div class=\"dropdown-menu-column\">\n @for (child of asMenuItem(item).children; track child.id) {\n @if (!hasChildren(child)) {\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n } @else {\n <div class=\"dropend\">\n <upd-link (clicked)=\"onMenuItemClick(child)\" [customClasses]=\"getItemClasses(child, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: child}\"></ng-container>\n </upd-link>\n <div class=\"dropdown-menu\" [class.show]=\"child.isActive\">\n @for (grandchild of child.children; track grandchild) {\n <upd-link (clicked)=\"onMenuItemClick(grandchild)\"\n [customClasses]=\"getItemClasses(grandchild, 'active', 'dropdown-item')\">\n <ng-container [ngTemplateOutlet]=\"linkContent\" [ngTemplateOutletContext]=\"{menuItem: grandchild}\">\n </ng-container>\n </upd-link>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n" }]
|
|
366
730
|
}], propDecorators: { wrapperClasses: [{
|
|
367
731
|
type: HostBinding,
|
|
368
732
|
args: ['class']
|
|
@@ -372,48 +736,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
372
736
|
}] } });
|
|
373
737
|
|
|
374
738
|
class PageHeaderComponent {
|
|
375
|
-
|
|
376
|
-
|
|
739
|
+
constructor() {
|
|
740
|
+
this.model = input.required();
|
|
741
|
+
}
|
|
742
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
743
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: PageHeaderComponent, selector: "upd-page-header", inputs: { model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model().titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model().title }}\n </h2>\n </div>\n @if (model().actionButtons.length > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model().actionButtons; track btn) {\n <upd-button [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: i1$4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }] }); }
|
|
377
744
|
}
|
|
378
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: PageHeaderComponent, decorators: [{
|
|
379
746
|
type: Component,
|
|
380
|
-
args: [{ selector: 'upd-page-header', template: "<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model.titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model.title }}\n </h2>\n </div>\n @if ((
|
|
381
|
-
}]
|
|
382
|
-
type: Input
|
|
383
|
-
}] } });
|
|
747
|
+
args: [{ selector: 'upd-page-header', template: "<div class=\"page-header d-print-none\">\n <div class=\"container-xl\">\n <div class=\"row g-2 align-items-center\">\n <div class=\"col\">\n <div class=\"page-pretitle\">\n {{ model().titleHeader }}\n </div>\n <h2 class=\"page-title\">\n {{ model().title }}\n </h2>\n </div>\n @if (model().actionButtons.length > 0) {\n <div class=\"col-auto ms-auto d-print-none\">\n <div class=\"btn-list\">\n @for (btn of model().actionButtons; track btn) {\n <upd-button [model]=\"btn\"></upd-button>\n }\n </div>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
|
|
748
|
+
}] });
|
|
384
749
|
|
|
385
|
-
class VerticalSidebarLayoutComponent extends
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
this.showPageHeader = false;
|
|
389
|
-
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
390
|
-
this.layoutService = inject(LayoutService);
|
|
391
|
-
}
|
|
392
|
-
ngOnInit() {
|
|
393
|
-
const pHeaderSub = this.layoutService.onPageHeaderChange.subscribe(ph => {
|
|
394
|
-
this.showPageHeader = !!ph;
|
|
395
|
-
this.pageHeader = ph;
|
|
396
|
-
this.changeDetectorRef.detectChanges();
|
|
397
|
-
});
|
|
398
|
-
this.addSubscriptions(pHeaderSub);
|
|
399
|
-
}
|
|
400
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: VerticalSidebarLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
401
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: VerticalSidebarLayoutComponent, selector: "upd-vertical-sidebar-layout", usesInheritance: true, ngImport: i0, template: "<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (showPageHeader) {\n <upd-page-header [model]=\"pageHeader!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$4.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: FooterComponent, selector: "upd-footer" }, { kind: "component", type: HeaderComponent, selector: "upd-header", inputs: ["style", "showSearchBar"] }, { kind: "component", type: SidebarComponent, selector: "upd-sidebar" }, { kind: "component", type: PageHeaderComponent, selector: "upd-page-header", inputs: ["model"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
750
|
+
class VerticalSidebarLayoutComponent extends BaseLayout {
|
|
751
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
752
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: VerticalSidebarLayoutComponent, selector: "upd-vertical-sidebar-layout", usesInheritance: true, ngImport: i0, template: "<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (!!_layoutService.pageHeader()) {\n <upd-page-header [model]=\"_layoutService.pageHeader()!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: FooterComponent, selector: "upd-footer" }, { kind: "component", type: HeaderComponent, selector: "upd-header", inputs: ["style"] }, { kind: "component", type: SidebarComponent, selector: "upd-sidebar" }, { kind: "component", type: PageHeaderComponent, selector: "upd-page-header", inputs: ["model"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
402
753
|
}
|
|
403
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutComponent, decorators: [{
|
|
404
755
|
type: Component,
|
|
405
|
-
args: [{ selector: 'upd-vertical-sidebar-layout', encapsulation: ViewEncapsulation.None, template: "<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (
|
|
756
|
+
args: [{ selector: 'upd-vertical-sidebar-layout', encapsulation: ViewEncapsulation.None, template: "<div class=\"page\">\n <upd-sidebar></upd-sidebar>\n <upd-header></upd-header>\n\n <div class=\"page-wrapper\">\n @if (!!_layoutService.pageHeader()) {\n <upd-page-header [model]=\"_layoutService.pageHeader()!\"></upd-page-header>\n }\n <div class=\"page-body\">\n <div class=\"container-xl\">\n <router-outlet></router-outlet>\n </div>\n </div>\n <upd-footer></upd-footer>\n </div>\n</div>\n" }]
|
|
406
757
|
}] });
|
|
407
758
|
|
|
408
759
|
class VerticalSidebarLayoutModule {
|
|
409
760
|
constructor(translocoService) {
|
|
761
|
+
translocoService.setFallbackLangForMissingTranslation({ fallbackLang: 'en' });
|
|
410
762
|
translocoService.setTranslation(en$1, 'en');
|
|
411
763
|
translocoService.setTranslation(pt$1, 'pt');
|
|
412
764
|
}
|
|
413
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
414
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0
|
|
415
|
-
FooterComponent,
|
|
416
|
-
HeaderComponent,
|
|
765
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, deps: [{ token: i1$1.TranslocoService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
766
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, declarations: [VerticalSidebarLayoutComponent,
|
|
417
767
|
SidebarComponent,
|
|
418
768
|
PageHeaderComponent], imports: [CommonModule,
|
|
419
769
|
RouterModule,
|
|
@@ -421,22 +771,24 @@ class VerticalSidebarLayoutModule {
|
|
|
421
771
|
UpdIconsModule,
|
|
422
772
|
UpdCoreLayoutModule,
|
|
423
773
|
UpdButtonModule,
|
|
424
|
-
UpdLinkModule
|
|
425
|
-
|
|
426
|
-
|
|
774
|
+
UpdLinkModule,
|
|
775
|
+
UpdDropdownModule,
|
|
776
|
+
FooterModule,
|
|
777
|
+
HeaderModule], exports: [VerticalSidebarLayoutComponent,
|
|
427
778
|
SidebarComponent,
|
|
428
779
|
PageHeaderComponent] }); }
|
|
429
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0
|
|
430
|
-
FooterCopyrightDirective
|
|
431
|
-
], imports: [CommonModule,
|
|
780
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, imports: [CommonModule,
|
|
432
781
|
RouterModule,
|
|
433
782
|
TranslocoModule,
|
|
434
783
|
UpdIconsModule,
|
|
435
784
|
UpdCoreLayoutModule,
|
|
436
785
|
UpdButtonModule,
|
|
437
|
-
UpdLinkModule
|
|
786
|
+
UpdLinkModule,
|
|
787
|
+
UpdDropdownModule,
|
|
788
|
+
FooterModule,
|
|
789
|
+
HeaderModule] }); }
|
|
438
790
|
}
|
|
439
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
791
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: VerticalSidebarLayoutModule, decorators: [{
|
|
440
792
|
type: NgModule,
|
|
441
793
|
args: [{
|
|
442
794
|
imports: [
|
|
@@ -446,62 +798,130 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
446
798
|
UpdIconsModule,
|
|
447
799
|
UpdCoreLayoutModule,
|
|
448
800
|
UpdButtonModule,
|
|
449
|
-
UpdLinkModule
|
|
801
|
+
UpdLinkModule,
|
|
802
|
+
UpdDropdownModule,
|
|
803
|
+
FooterModule,
|
|
804
|
+
HeaderModule
|
|
450
805
|
],
|
|
451
806
|
declarations: [
|
|
452
807
|
VerticalSidebarLayoutComponent,
|
|
453
|
-
FooterComponent,
|
|
454
|
-
HeaderComponent,
|
|
455
808
|
SidebarComponent,
|
|
456
809
|
PageHeaderComponent
|
|
457
810
|
],
|
|
458
811
|
exports: [
|
|
459
812
|
VerticalSidebarLayoutComponent,
|
|
460
|
-
FooterComponent,
|
|
461
|
-
HeaderComponent,
|
|
462
813
|
SidebarComponent,
|
|
463
814
|
PageHeaderComponent
|
|
464
|
-
],
|
|
465
|
-
providers: [
|
|
466
|
-
FooterCopyrightDirective
|
|
467
815
|
]
|
|
468
816
|
}]
|
|
469
817
|
}], ctorParameters: () => [{ type: i1$1.TranslocoService }] });
|
|
470
818
|
|
|
471
819
|
class LoggedOutComponent {
|
|
472
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
473
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0
|
|
820
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: LoggedOutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
821
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: LoggedOutComponent, selector: "upd-logged-out", ngImport: i0, template: "<p>logged-out works!</p>\n", styles: [""] }); }
|
|
474
822
|
}
|
|
475
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
823
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: LoggedOutComponent, decorators: [{
|
|
476
824
|
type: Component,
|
|
477
825
|
args: [{ selector: 'upd-logged-out', template: "<p>logged-out works!</p>\n" }]
|
|
478
826
|
}] });
|
|
479
827
|
|
|
480
828
|
class LoginComponent {
|
|
481
829
|
constructor() {
|
|
482
|
-
this.
|
|
483
|
-
this.
|
|
484
|
-
this.
|
|
830
|
+
this.formGroup = model(new FormGroup({}));
|
|
831
|
+
this.formRows = [];
|
|
832
|
+
this.isSigningIn = signal(false);
|
|
833
|
+
this.layoutConfigService = inject(UpdLayoutConfigService);
|
|
834
|
+
this.config = this.layoutConfigService.config.securityLayoutConfig.loginPage;
|
|
835
|
+
this.bodyClasses = ['border-top-wide', this.border, 'd-flex', 'flex-column'];
|
|
836
|
+
this.router = inject(Router);
|
|
485
837
|
this.authService = inject(AuthService);
|
|
486
838
|
this.layoutService = inject(LayoutService);
|
|
487
|
-
|
|
839
|
+
}
|
|
840
|
+
get border() {
|
|
841
|
+
return `border-${this.config.borderColor}`;
|
|
842
|
+
}
|
|
843
|
+
get linkClasses() {
|
|
844
|
+
return [`link-${this.config.linksColor}`];
|
|
845
|
+
}
|
|
846
|
+
get boxBgColor() {
|
|
847
|
+
return this.config.bgColor || (!!this.config.bgStyle ? `bg-${this.config.bgStyle}` : '') || 'bg-white';
|
|
848
|
+
}
|
|
849
|
+
ngOnInit() {
|
|
850
|
+
this.layoutService.addBodyClasses(this.boxBgColor);
|
|
851
|
+
if (this.config.layout !== 'cover') {
|
|
852
|
+
this.layoutService.addBodyClasses(...this.bodyClasses);
|
|
853
|
+
}
|
|
854
|
+
this.formRows = [
|
|
855
|
+
{
|
|
856
|
+
fields: [
|
|
857
|
+
{
|
|
858
|
+
name: 'username',
|
|
859
|
+
type: DynamicFieldType.Input,
|
|
860
|
+
colSize: { default: 12 },
|
|
861
|
+
label: { text: 'UpDevs.Login.Email', isTranslated: false },
|
|
862
|
+
validators: [Validators.required, Validators.minLength(3)],
|
|
863
|
+
shouldSubmitOnEnter: true
|
|
864
|
+
}
|
|
865
|
+
]
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
fields: [
|
|
869
|
+
{
|
|
870
|
+
name: 'password',
|
|
871
|
+
type: DynamicFieldType.Input,
|
|
872
|
+
inputType: 'password',
|
|
873
|
+
colSize: { default: 12 },
|
|
874
|
+
label: { text: 'UpDevs.Login.Password', isTranslated: false },
|
|
875
|
+
validators: [Validators.required, Validators.minLength(3)],
|
|
876
|
+
shouldSubmitOnEnter: true
|
|
877
|
+
}
|
|
878
|
+
]
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
fields: [
|
|
882
|
+
{
|
|
883
|
+
name: 'rememberMe',
|
|
884
|
+
type: DynamicFieldType.Checkbox,
|
|
885
|
+
colSize: { default: 12 },
|
|
886
|
+
label: { text: 'UpDevs.Login.RememberMe', isTranslated: false },
|
|
887
|
+
initValue: false
|
|
888
|
+
}
|
|
889
|
+
]
|
|
890
|
+
}
|
|
891
|
+
];
|
|
892
|
+
}
|
|
893
|
+
ngOnDestroy() {
|
|
894
|
+
this.layoutService.removeBodyClasses(this.boxBgColor);
|
|
895
|
+
if (this.config.layout !== 'cover') {
|
|
896
|
+
this.layoutService.removeBodyClasses(...this.bodyClasses);
|
|
897
|
+
}
|
|
488
898
|
}
|
|
489
899
|
login() {
|
|
490
|
-
|
|
900
|
+
// TODO: handle remember me
|
|
901
|
+
this.isSigningIn.set(true);
|
|
902
|
+
this.authService.login(this.formGroup().value.username, this.formGroup().value.password)
|
|
903
|
+
.pipe(finalize(() => this.isSigningIn.set(false)))
|
|
904
|
+
.subscribe();
|
|
905
|
+
}
|
|
906
|
+
goToRecoverPasswordPage() {
|
|
907
|
+
this.router.navigate([this.config.recoverPasswordRoute]).then();
|
|
908
|
+
}
|
|
909
|
+
goToSignUpPage() {
|
|
910
|
+
this.router.navigate([this.config.signUpRoute]).then();
|
|
491
911
|
}
|
|
492
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
493
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0
|
|
912
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: LoginComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
913
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: LoginComponent, selector: "upd-login", inputs: { formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { formGroup: "formGroupChange" }, ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Login'\">\n <upd-header [style]=\"'transparent'\"></upd-header>\n <div class=\"page page-center\">\n @switch (config.layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\" />\n </div>\n </div>\n </div>\n }\n @case ('cover') {\n <div class=\"row g-0 flex-fill\">\n <div class=\"col-12 col-lg-6 col-xl-4 border-top-wide d-flex flex-column justify-content-center\"\n [ngClass]=\"border\">\n <div class=\"container container-tight my-5 px-lg-5\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n\n <h2 class=\"h3 text-center mb-3\">\n {{ t('Title') }}\n </h2>\n\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 col-xl-8 d-none d-lg-block\">\n <div class=\"bg-cover h-100 min-vh-100 upd-right-login-cover-image\"></div>\n </div>\n </div>\n }\n }\n </div>\n <upd-footer></upd-footer>\n\n <ng-template #loginCardTpl>\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n <upd-card [removeBorder]=\"true\">\n <div class=\"p-4\">\n <h2 class=\"h2 text-center mb-4\">\n {{ t('Title') }}\n </h2>\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n </upd-card>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </ng-template>\n\n <ng-template #loginFormTpl>\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\" (submitted)=\"login()\"></upd-form>\n <div class=\"form-footer\">\n <upd-button [colorStyle]=\"config.signInButtonColor\" (clicked)=\"login()\" [isLoading]=\"isSigningIn()\"\n customClasses=\"w-100\">\n {{ t('SignIn') }}\n </upd-button>\n @if (!!config.recoverPasswordRoute) {\n <div class=\"d-flex mt-2\">\n <upd-link class=\"ms-auto\" [customClasses]=\"linkClasses\" (clicked)=\"goToRecoverPasswordPage()\">\n {{ t('RecoverPassword') }}\n </upd-link>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #socialLoginTpl>\n @if (config.socialLoginButtons.length > 0) {\n <div class=\"hr-text\">\n {{ t('Or') }}\n </div>\n <div class=\"card-body\">\n <div class=\"row\">\n @for (btn of config.socialLoginButtons; track btn) {\n <div class=\"col\">\n <upd-button [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n\n <ng-template #headerTpl>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </div>\n </ng-template>\n\n <ng-template #noAccountTpl>\n @if (!!config.signUpRoute) {\n <div class=\"text-center text-muted mt-3\">\n {{ t('NoAccountYet') }}\n <upd-link [customClasses]=\"linkClasses\" (clicked)=\"goToSignUpPage()\">{{ t('SignUp') }}</upd-link>\n </div>\n }\n </ng-template>\n</ng-container>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$4.ButtonComponent, selector: "upd-button", inputs: ["model", "text", "brandColorStyle", "customClasses", "isOutline", "isGhost", "isSquare", "isPill", "isIcon", "isLoading", "isList", "isFloating", "isAction", "isNavigationLink", "isLink", "shouldIgnoreBtnClass", "iconModel", "iconPosition", "isDisabled", "isActive", "badgeConfig", "colorStyle", "size", "title"], outputs: ["clicked"] }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: i3.LinkComponent, selector: "upd-link", inputs: ["href", "target", "customClasses", "isNavigation"], outputs: ["clicked"] }, { kind: "component", type: i6.CardComponent, selector: "upd-card", inputs: ["wrapperClasses", "title", "subtitle", "hoverEffect", "state", "type", "imagePosition", "bgColor", "stampIcon", "stampBackground", "statusBackground", "statusPosition", "ribbonBackground", "ribbonStyle", "ribbonIcon", "ribbonText", "rotate", "removeBorder", "useLightHeader", "showHeader", "isFooterTransparent", "footerText", "showProgressBar", "progress", "actions"] }, { kind: "component", type: i7.FormComponent, selector: "upd-form", inputs: ["rows", "layout", "title", "hasActionsSection", "isCard", "isDisabled", "isLoading", "isSaving", "formData", "formGroup"], outputs: ["initialized", "dataLoaded", "submitted", "formDataChange", "formGroupChange"] }, { kind: "component", type: FooterComponent, selector: "upd-footer" }, { kind: "component", type: HeaderComponent, selector: "upd-header", inputs: ["style"] }] }); }
|
|
494
914
|
}
|
|
495
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
915
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: LoginComponent, decorators: [{
|
|
496
916
|
type: Component,
|
|
497
|
-
args: [{ selector: 'upd-login',
|
|
498
|
-
}]
|
|
917
|
+
args: [{ selector: 'upd-login', template: "<ng-container *transloco=\"let t; prefix: 'UpDevs.Login'\">\n <upd-header [style]=\"'transparent'\"></upd-header>\n <div class=\"page page-center\">\n @switch (config.layout) {\n @case ('centered-box') {\n <div class=\"container container-tight py-4\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n }\n @case ('box-with-picture') {\n <div class=\"container container-normal py-4\">\n <div class=\"row align-items-center g-4\">\n <div class=\"col-lg\">\n <div class=\"container-tight\">\n <ng-container [ngTemplateOutlet]=\"loginCardTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-lg d-none d-lg-block\">\n <img height=\"300\" class=\"d-block mx-auto upd-right-login-image\" />\n </div>\n </div>\n </div>\n }\n @case ('cover') {\n <div class=\"row g-0 flex-fill\">\n <div class=\"col-12 col-lg-6 col-xl-4 border-top-wide d-flex flex-column justify-content-center\"\n [ngClass]=\"border\">\n <div class=\"container container-tight my-5 px-lg-5\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n\n <h2 class=\"h3 text-center mb-3\">\n {{ t('Title') }}\n </h2>\n\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </div>\n </div>\n <div class=\"col-12 col-lg-6 col-xl-8 d-none d-lg-block\">\n <div class=\"bg-cover h-100 min-vh-100 upd-right-login-cover-image\"></div>\n </div>\n </div>\n }\n }\n </div>\n <upd-footer></upd-footer>\n\n <ng-template #loginCardTpl>\n <ng-container [ngTemplateOutlet]=\"headerTpl\"></ng-container>\n <upd-card [removeBorder]=\"true\">\n <div class=\"p-4\">\n <h2 class=\"h2 text-center mb-4\">\n {{ t('Title') }}\n </h2>\n <ng-container [ngTemplateOutlet]=\"loginFormTpl\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"socialLoginTpl\"></ng-container>\n </upd-card>\n <ng-container [ngTemplateOutlet]=\"noAccountTpl\"></ng-container>\n </ng-template>\n\n <ng-template #loginFormTpl>\n <upd-form [rows]=\"formRows\" [hasActionsSection]=\"false\" [(formGroup)]=\"formGroup\" (submitted)=\"login()\"></upd-form>\n <div class=\"form-footer\">\n <upd-button [colorStyle]=\"config.signInButtonColor\" (clicked)=\"login()\" [isLoading]=\"isSigningIn()\"\n customClasses=\"w-100\">\n {{ t('SignIn') }}\n </upd-button>\n @if (!!config.recoverPasswordRoute) {\n <div class=\"d-flex mt-2\">\n <upd-link class=\"ms-auto\" [customClasses]=\"linkClasses\" (clicked)=\"goToRecoverPasswordPage()\">\n {{ t('RecoverPassword') }}\n </upd-link>\n </div>\n }\n </div>\n </ng-template>\n\n <ng-template #socialLoginTpl>\n @if (config.socialLoginButtons.length > 0) {\n <div class=\"hr-text\">\n {{ t('Or') }}\n </div>\n <div class=\"card-body\">\n <div class=\"row\">\n @for (btn of config.socialLoginButtons; track btn) {\n <div class=\"col\">\n <upd-button [model]=\"btn\"></upd-button>\n </div>\n }\n </div>\n </div>\n }\n </ng-template>\n\n <ng-template #headerTpl>\n <div class=\"text-center mb-4\">\n <a href=\".\" class=\"navbar-brand navbar-brand-autodark\">\n <img height=\"36\" class=\"navbar-brand-image upd-brand-logo\" />\n </a>\n </div>\n </ng-template>\n\n <ng-template #noAccountTpl>\n @if (!!config.signUpRoute) {\n <div class=\"text-center text-muted mt-3\">\n {{ t('NoAccountYet') }}\n <upd-link [customClasses]=\"linkClasses\" (clicked)=\"goToSignUpPage()\">{{ t('SignUp') }}</upd-link>\n </div>\n }\n </ng-template>\n</ng-container>\n" }]
|
|
918
|
+
}] });
|
|
499
919
|
|
|
500
920
|
class OauthCallbackComponent {
|
|
501
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
502
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0
|
|
921
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: OauthCallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
922
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: OauthCallbackComponent, selector: "upd-oauth-callback", ngImport: i0, template: "<p>oauth-callback works!</p>\n", styles: [""] }); }
|
|
503
923
|
}
|
|
504
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
924
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: OauthCallbackComponent, decorators: [{
|
|
505
925
|
type: Component,
|
|
506
926
|
args: [{ selector: 'upd-oauth-callback', template: "<p>oauth-callback works!</p>\n" }]
|
|
507
927
|
}] });
|
|
@@ -515,11 +935,11 @@ const routes = [
|
|
|
515
935
|
{ path: 'login', component: LoginComponent }
|
|
516
936
|
];
|
|
517
937
|
class AuthFlowRoutingModule {
|
|
518
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
519
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0
|
|
520
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0
|
|
938
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
939
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowRoutingModule, imports: [i1$3.RouterModule], exports: [RouterModule] }); }
|
|
940
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowRoutingModule, imports: [RouterModule.forRoot(routes, { useHash: true }), RouterModule] }); }
|
|
521
941
|
}
|
|
522
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
942
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowRoutingModule, decorators: [{
|
|
523
943
|
type: NgModule,
|
|
524
944
|
args: [{
|
|
525
945
|
imports: [RouterModule.forRoot(routes, { useHash: true })],
|
|
@@ -528,28 +948,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
528
948
|
}] });
|
|
529
949
|
|
|
530
950
|
class AuthFlowModule {
|
|
531
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
532
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0
|
|
951
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
952
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowModule, declarations: [LoginComponent,
|
|
533
953
|
OauthCallbackComponent,
|
|
534
954
|
LoggedOutComponent], imports: [CommonModule,
|
|
535
955
|
AuthFlowRoutingModule,
|
|
536
956
|
UpdButtonModule,
|
|
537
|
-
|
|
957
|
+
UpdIconsModule,
|
|
958
|
+
FormsModule,
|
|
959
|
+
TranslocoDirective,
|
|
960
|
+
UpdLinkModule,
|
|
961
|
+
UpdCardModule,
|
|
962
|
+
UpdFormModule,
|
|
963
|
+
FooterModule,
|
|
964
|
+
HeaderModule], exports: [LoginComponent,
|
|
538
965
|
OauthCallbackComponent,
|
|
539
966
|
LoggedOutComponent] }); }
|
|
540
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0
|
|
967
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowModule, imports: [CommonModule,
|
|
541
968
|
AuthFlowRoutingModule,
|
|
542
969
|
UpdButtonModule,
|
|
543
|
-
|
|
970
|
+
UpdIconsModule,
|
|
971
|
+
FormsModule,
|
|
972
|
+
UpdLinkModule,
|
|
973
|
+
UpdCardModule,
|
|
974
|
+
UpdFormModule,
|
|
975
|
+
FooterModule,
|
|
976
|
+
HeaderModule] }); }
|
|
544
977
|
}
|
|
545
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
978
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: AuthFlowModule, decorators: [{
|
|
546
979
|
type: NgModule,
|
|
547
980
|
args: [{
|
|
548
981
|
imports: [
|
|
549
982
|
CommonModule,
|
|
550
983
|
AuthFlowRoutingModule,
|
|
551
984
|
UpdButtonModule,
|
|
552
|
-
|
|
985
|
+
UpdIconsModule,
|
|
986
|
+
FormsModule,
|
|
987
|
+
TranslocoDirective,
|
|
988
|
+
UpdLinkModule,
|
|
989
|
+
UpdCardModule,
|
|
990
|
+
UpdFormModule,
|
|
991
|
+
FooterModule,
|
|
992
|
+
HeaderModule
|
|
553
993
|
],
|
|
554
994
|
declarations: [
|
|
555
995
|
LoginComponent,
|
|
@@ -564,67 +1004,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
564
1004
|
}]
|
|
565
1005
|
}] });
|
|
566
1006
|
|
|
567
|
-
/**
|
|
568
|
-
* Layout configuration.
|
|
569
|
-
*/
|
|
570
|
-
class UpdLayoutConfigModel {
|
|
571
|
-
constructor(init) {
|
|
572
|
-
Object.assign(this, init);
|
|
573
|
-
if (this.mainLogo === undefined) {
|
|
574
|
-
// this.mainLogo = LogoConstants.defaultLogo; // TODO: add images
|
|
575
|
-
}
|
|
576
|
-
if (this.smallLogo === undefined) {
|
|
577
|
-
// this.smallLogo = LogoConstants.smallLogo;
|
|
578
|
-
}
|
|
579
|
-
if (this.loggedOutBackground === undefined) {
|
|
580
|
-
// this.loggedOutBackground = ImageConstants.loggedOutBackground;
|
|
581
|
-
}
|
|
582
|
-
if (this.menuTitle === undefined) {
|
|
583
|
-
this.menuTitle = 'UpDevs';
|
|
584
|
-
}
|
|
585
|
-
if (this.showNotificationsButton === undefined) {
|
|
586
|
-
this.showNotificationsButton = true;
|
|
587
|
-
}
|
|
588
|
-
if (this.showUserMenu === undefined) {
|
|
589
|
-
this.showUserMenu = true;
|
|
590
|
-
}
|
|
591
|
-
if (this.displayReportErrorButton === undefined) {
|
|
592
|
-
this.displayReportErrorButton = false;
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
* Layout constants.
|
|
599
|
-
*/
|
|
600
|
-
class LayoutConstants {
|
|
601
|
-
/**
|
|
602
|
-
* Key to inject the default configuration.
|
|
603
|
-
*/
|
|
604
|
-
static { this.defaultOptionsKey = 'upd-layout-default-options'; }
|
|
605
|
-
/**
|
|
606
|
-
* Injection token for the default configuration.
|
|
607
|
-
*/
|
|
608
|
-
static { this.defaultOptionsInjectionToken = new InjectionToken(LayoutConstants.defaultOptionsKey); }
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
/**
|
|
612
|
-
* Layout configuration data.
|
|
613
|
-
*/
|
|
614
|
-
class UpdLayoutConfigService {
|
|
615
|
-
constructor(layoutConfig) {
|
|
616
|
-
this.config = new UpdLayoutConfigModel(layoutConfig);
|
|
617
|
-
}
|
|
618
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutConfigService, deps: [{ token: LayoutConstants.defaultOptionsInjectionToken }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
619
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutConfigService }); }
|
|
620
|
-
}
|
|
621
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: UpdLayoutConfigService, decorators: [{
|
|
622
|
-
type: Injectable
|
|
623
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
624
|
-
type: Inject,
|
|
625
|
-
args: [LayoutConstants.defaultOptionsInjectionToken]
|
|
626
|
-
}] }] });
|
|
627
|
-
|
|
628
1007
|
/**
|
|
629
1008
|
* Layout module.
|
|
630
1009
|
*/
|
|
@@ -641,20 +1020,23 @@ class UpdLayoutModule {
|
|
|
641
1020
|
]
|
|
642
1021
|
};
|
|
643
1022
|
}
|
|
644
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0
|
|
645
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0
|
|
646
|
-
UpdCoreLayoutModule
|
|
647
|
-
|
|
1023
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdLayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1024
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.0", ngImport: i0, type: UpdLayoutModule, imports: [CommonModule,
|
|
1025
|
+
UpdCoreLayoutModule,
|
|
1026
|
+
UpdNotificationsModule] }); }
|
|
1027
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdLayoutModule, providers: [
|
|
648
1028
|
UpdLayoutConfigService
|
|
649
1029
|
], imports: [CommonModule,
|
|
650
|
-
UpdCoreLayoutModule
|
|
1030
|
+
UpdCoreLayoutModule,
|
|
1031
|
+
UpdNotificationsModule] }); }
|
|
651
1032
|
}
|
|
652
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0
|
|
1033
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: UpdLayoutModule, decorators: [{
|
|
653
1034
|
type: NgModule,
|
|
654
1035
|
args: [{
|
|
655
1036
|
imports: [
|
|
656
1037
|
CommonModule,
|
|
657
|
-
UpdCoreLayoutModule
|
|
1038
|
+
UpdCoreLayoutModule,
|
|
1039
|
+
UpdNotificationsModule
|
|
658
1040
|
],
|
|
659
1041
|
providers: [
|
|
660
1042
|
UpdLayoutConfigService
|
|
@@ -666,5 +1048,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImpor
|
|
|
666
1048
|
* Generated bundle index. Do not edit.
|
|
667
1049
|
*/
|
|
668
1050
|
|
|
669
|
-
export { AuthFlowModule, AuthFlowRoutingModule, BasePageComponent, BlankLayoutComponent, BlankLayoutModule, FooterComponent,
|
|
1051
|
+
export { AuthFlowModule, AuthFlowRoutingModule, BasePageComponent, BlankLayoutComponent, BlankLayoutModule, FooterComponent, FooterModule, HeaderComponent, HeaderModule, LoggedOutComponent, LoginComponent, OauthCallbackComponent, PageHeaderComponent, SidebarComponent, UpdLayoutConfigService, UpdLayoutModule, VerticalSidebarLayoutComponent, VerticalSidebarLayoutModule, routes };
|
|
670
1052
|
//# sourceMappingURL=updevs-components-layout.mjs.map
|