@leanix/components 0.4.520 → 0.4.521
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.
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leanix-components.mjs","sources":["../../../../libs/components/src/lib/core-ui/core-ui.constants.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.html","../../../../libs/components/src/lib/core-ui/components/banner/banner.models.ts","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.ts","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.html","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.ts","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.html","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.html","../../../../libs/components/src/lib/core-ui/components/button/button.component.ts","../../../../libs/components/src/lib/core-ui/components/button/button.component.html","../../../../libs/components/src/lib/core-ui/components/card/card.component.ts","../../../../libs/components/src/lib/core-ui/components/card/card.component.html","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.ts","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.html","../../../../libs/components/src/lib/core-ui/components/counter/counter.component.ts","../../../../libs/components/src/lib/core-ui/components/counter/counter.component.html","../../../../libs/components/src/lib/shared/observe.ts","../../../../libs/components/src/lib/core-ui/services/resize-observer.service.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.html","../../../../libs/components/src/lib/core-ui/components/empty-state/empty-state.component.ts","../../../../libs/components/src/lib/core-ui/components/empty-state/empty-state.component.html","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.ts","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.html","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.html","../../../../libs/components/src/lib/core-ui/components/stepper/stepper.component.ts","../../../../libs/components/src/lib/core-ui/components/stepper/stepper.component.html","../../../../libs/components/src/lib/core-ui/components/table/table.component.ts","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.ts","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.html","../../../../libs/components/src/lib/core-ui/directives/after-view-init.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose-group.service.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autofocus.directive.ts","../../../../libs/components/src/lib/core-ui/linkify/linkify.pipe.ts","../../../../libs/components/src/lib/core-ui/linkify/unlinkify.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/br.pipe.ts","../../../../libs/components/src/lib/core-ui/functions/core-css.helpers.ts","../../../../libs/components/src/lib/core-ui/pipes/contrast-color.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/custom-date.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-range.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-term.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-is-uuid.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-time-ago.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-translate.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/markdown.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/nbsp.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/sort.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-before.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-after.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-between.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/unescape-curly-braces.pipe.ts","../../../../libs/components/src/lib/core-ui/tooltip/to-cdk-position.function.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip-position.interface.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.html","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.directive.ts","../../../../libs/components/src/lib/core-ui/core-ui.module.ts","../../../../libs/components/src/lib/core-ui/pipes/display-avatars.pipe.ts","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.model.ts","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.component.ts","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.component.html","../../../../libs/components/src/lib/core-ui/components/avatar-group/avatar-group.component.ts","../../../../libs/components/src/lib/core-ui/components/avatar-group/avatar-group.component.html","../../../../libs/components/src/lib/core-ui/components/skeleton/skeleton.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/token/token.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/token/token.component.html","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer.component.html","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.html","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.helpers.ts","../../../../libs/components/src/lib/core-ui/functions/highlight-text.function.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.html","../../../../libs/components/src/lib/shared/misc-helpers.ts","../../../../libs/components/src/lib/forms-ui/directives/selectable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/keyboard-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/helpers/key-codes.constants.ts","../../../../libs/components/src/lib/forms-ui/directives/keyboard-action-source.directive.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.html","../../../../libs/components/src/lib/forms-ui/components/option/option.component.ts","../../../../libs/components/src/lib/forms-ui/components/option/option.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.ts","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/directives/mark-invalid.directive.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol-map.constant.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.html","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.html","../../../../libs/components/src/lib/shared/date-helpers.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/date-formatter.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/isBs3.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/daypicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/monthpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/yearpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.config.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.html","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/constants.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.ts","../../../../libs/components/src/lib/forms-ui/components/error-message/error-message.component.ts","../../../../libs/components/src/lib/forms-ui/components/error-message/error-message.component.html","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.ts","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.html","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.ts","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.html","../../../../libs/components/src/lib/forms-ui/components/input/input.component.ts","../../../../libs/components/src/lib/forms-ui/directives/select-dropdown.directive.ts","../../../../libs/components/src/lib/forms-ui/models/base-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.html","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.ts","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.html","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.html","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.html","../../../../libs/components/src/lib/forms-ui/components/picker/picker-trigger.directive.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.html","../../../../libs/components/src/lib/forms-ui/helpers/keyboard-navigation.helpers.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.html","../../../../libs/components/src/lib/forms-ui/directives/selected-option.directive.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/switch/switch.component.ts","../../../../libs/components/src/lib/forms-ui/components/switch/switch.component.html","../../../../libs/components/src/lib/shared/html-helpers.function.ts","../../../../libs/components/src/lib/forms-ui/directives/contenteditable.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-submit.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-error.directive.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-selection.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-term.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/format-number.pipe.ts","../../../../libs/components/src/lib/forms-ui/forms-ui.module.ts","../../../../libs/components/src/lib/forms-ui/directives/max-length-counter.directive.ts","../../../../libs/components/src/lib/forms-ui/models/sorting.interface.ts","../../../../libs/components/src/lib/forms-ui/validators/date-in-foreseeable-future.validator.ts","../../../../libs/components/src/lib/forms-ui/validators/string-not-in-array.validator.ts","../../../../libs/components/src/lib/modal-ui/modal.constants.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.html","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.html","../../../../libs/components/src/lib/modal-ui/directives/modal-content.directive.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.html","../../../../libs/components/src/lib/modal-ui/modal.module.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-content.directive.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.html","../../../../libs/components/src/lib/popover-ui/directives/popover-click.directive.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-hover.directive.ts","../../../../libs/components/src/lib/popover-ui/popover-ui.module.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.html","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.html","../../../../libs/components/src/lib/tab-ui/tab-ui.module.ts","../../../../libs/components/src/index.ts","../../../../libs/components/src/leanix-components.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DATE_FORMATS = new InjectionToken<DateFormatsProvider>('DATE_FORMATS', {\n providedIn: 'root',\n factory: () => ({\n getDateFormat: () => 'YYYY-MM-DD',\n getDateTimeFormat: () => 'YYYY-MM-DD HH:mm',\n getDateTimeFormatWithSeconds: () => 'YYYY-MM-DD HH:mm:ss'\n })\n});\n\nexport const DATE_FN_LOCALE = new InjectionToken<Function>('DATE_FN_LOCALE');\nexport const LOCALE_FN = new InjectionToken<Function>('LOCALE_FN');\nexport const GLOBAL_TRANSLATION_OPTIONS = new InjectionToken<GlobalTranslationOptionsProvider>('GLOBAL_TRANSLATION_OPTIONS');\n\nexport interface DateFormatsProvider {\n getDateFormat(): string;\n getDateTimeFormat(): string;\n getDateTimeFormatWithSeconds(): string;\n}\n\nexport interface GlobalTranslationOptionsProvider {\n createGlobalTranslationOptions(): TranslationOptions;\n}\n\nexport interface TranslationOptions {\n [key: string]: string;\n}\n\n/**\n * map Font Awesome -> SAP icons\n * [0]: regular icon\n * [1]: solid icon alternative (if available)\n */\nexport const ICON_MAP: Record<string, string[]> = {\n 'fa-times': ['decline'],\n 'fa-plus': ['add'],\n 'fa-check': ['accept'],\n 'fa-trash': ['delete'],\n 'fa-angle-down': ['slim-arrow-down'],\n 'fa-circle': ['circle-task-2', 'circle-task'],\n 'fa-pencil': ['edit'],\n 'fa-external-link': ['action'],\n 'fa-search': ['search'],\n 'fa-info-circle': ['message-information'],\n 'fa-question-circle': ['question-mark'],\n 'fa-ellipsis-v': ['overflow'],\n 'fa-sync': ['synchronize'],\n 'fa-plus-circle': ['sys-add'],\n 'fa-exclamation-triangle': ['warning'],\n 'fa-exclamation-circle': ['lx-icons/exclamation-circle'],\n 'fa-arrow-right': ['arrow-right'],\n 'fa-arrow-left': ['arrow-left'],\n 'fa-link': ['chain-link'],\n 'fa-check-circle': ['status-completed'],\n 'fa-check-square': ['complete'],\n 'fa-bars': ['menu2'],\n 'fa-eye': ['show'],\n 'fa-cog': ['action-settings'],\n 'fa-star': ['unfavorite'],\n 'fa-chevron-down': ['navigation-down-arrow'],\n 'fa-chevron-up': ['navigation-up-arrow'],\n 'fa-eye-slash': ['hide'],\n 'fa-calendar': ['calendar'],\n 'fa-lock': ['locked'],\n 'fa-ban': ['cancel'],\n 'fa-user': ['person-placeholder'],\n 'fa-chevron-right': ['navigation-right-arrow'],\n 'fa-spinner': ['pending'],\n 'fa-times-circle': ['error'],\n 'fa-diamond': ['rhombus-milestone'],\n 'fa-sort-up': ['sorting-ranking'],\n 'fa-arrow-circle-up': ['arrow-top'],\n 'fa-bell': ['bell'],\n 'fa-long-arrow-left': ['arrow-left'],\n 'fa-sort-down': ['megamenu'],\n 'fa-edit': ['edit'],\n 'fa-angle-right': ['slim-arrow-right'],\n 'fa-angle-up': ['slim-arrow-up'],\n 'fa-book': ['course-book'],\n 'fa-download': ['download'],\n 'fa-file': ['document'],\n 'fa-undo': ['undo'],\n 'fa-wrench': ['wrench'],\n 'fa-align-justify': ['text-align-justified'],\n 'fa-chevron-left': ['navigation-left-arrow'],\n 'fa-filter': ['filter'],\n 'fa-plug': ['disconnected'],\n 'fa-clone': ['duplicate'],\n 'fa-info': ['message-information'],\n 'fa-minus': ['less'],\n 'fa-robot': ['lx-icons/robot'],\n 'fa-share-alt': ['share-2'],\n 'fa-sparkles': ['ai'],\n 'fa-text': ['text'],\n 'fa-unlink': ['broken-link'],\n 'fa-arrow-down': ['arrow-down'],\n 'fa-arrow-to-top': ['back-to-top'],\n 'fa-caret-down': ['megamenu'],\n 'fa-presentation': ['projector'],\n 'fa-th-large': ['business-suite/2x2-grid-layout'],\n 'fa-th': ['business-suite/2x2-grid-layout'],\n 'fa-upload': ['upload'],\n 'fa-align-left': ['text-align-left'],\n 'fa-arrow-circle-right': ['initiative'],\n 'fa-caret-up': ['sorting-ranking'],\n 'fa-clock': ['in-progress'],\n 'fa-code-branch': ['business-suite/empty-sequence'],\n 'fa-comment': ['comment'],\n 'fa-comment-lines': ['comment'],\n 'fa-copy': ['copy'],\n 'fa-ellipsis-h': ['overflow'],\n 'fa-exclamation': ['business-suite/priority-1'],\n 'fa-square': ['border'],\n 'fa-tachometer': ['performance'],\n 'fa-tachometer-alt-average': ['performance'],\n 'fa-tags': ['blank-tag-2'],\n 'fa-tasks': ['activities'],\n 'fa-angle-double-down': ['expand-group'],\n 'fa-arrow-up': ['arrow-top'],\n 'fa-chart-bar': ['vertical-bar-chart'],\n 'fa-chevron-square-down': ['navigation-down-arrow'],\n 'fa-chevron-square-right': ['navigation-right-arrow'],\n 'fa-exclamation-square': ['high-priority'],\n 'fa-expand-alt': ['full-screen'],\n 'fa-external-link-alt': ['action'],\n 'fa-globe': ['world'],\n 'fa-graduation-cap': ['study-leave'],\n 'fa-list': ['list'],\n 'fa-paragraph': ['text'],\n 'fa-play': ['media-play'],\n 'fa-question': ['incident'],\n 'fa-repeat': ['synchronize'],\n 'fa-shapes': ['program-triangles'],\n 'fa-sort-alt': ['sort'],\n 'fa-table': ['business-suite/2x2-grid-layout'],\n 'fa-align-slash': ['tnt/clear-all-mapping'],\n 'fa-angle-double-left': ['close-command-field'],\n 'fa-angle-double-right': ['open-command-field'],\n 'fa-angle-double-up': ['collapse-group'],\n 'fa-arrow-from-bottom': ['upload'],\n 'fa-bold': ['bold-text'],\n 'fa-bolt': ['tnt/raise-fault'],\n 'fa-books': ['course-book'],\n 'fa-code': ['source-code'],\n 'fa-database': ['database'],\n 'fa-envelope': ['email'],\n 'fa-expand': ['full-screen'],\n 'fa-file-audio': ['attachment-audio'],\n 'fa-file-excel': ['excel-attachment'],\n 'fa-file-image': ['attachment-photo'],\n 'fa-file-pdf': ['pdf-attachment'],\n 'fa-file-video': ['attachment-video'],\n 'fa-file-word': ['doc-attachment'],\n 'fa-folder': ['folder-blank'],\n 'fa-heading': ['heading1'],\n 'fa-hourglass-half': ['lateness'],\n 'fa-house': ['home'],\n 'fa-image': ['picture'],\n 'fa-italic': ['italic-text'],\n 'fa-lightbulb': ['lightbulb'],\n 'fa-list-ol': ['business-suite/icon-bulleting-with-numbers'],\n 'fa-map': ['map-3'],\n 'fa-map-pin': ['lx-icons/map-pin'],\n 'fa-map-signs': ['lx-icons/map-signs'],\n 'fa-pen': ['edit'],\n 'fa-people-arrows': ['citizen-connect'],\n 'fa-power-off': ['log'],\n 'fa-random': ['tnt/flow'],\n 'fa-redo': ['refresh'],\n 'fa-save': ['save'],\n 'fa-seedling': ['e-care'],\n 'fa-sitemap': ['tree'],\n 'fa-sort': ['sorting-ranking'],\n 'fa-strikethrough': ['strikethrough'],\n 'fa-sync-alt': ['synchronize'],\n 'fa-thumbs-up': ['thumb-up'],\n 'fa-thumbs-down': ['thumb-down'],\n 'fa-trash-restore': ['history'],\n 'fa-user-friends': ['group'],\n 'fa-users': ['family-care'],\n 'fa-align-center': ['text-align-center'],\n 'fa-align-right': ['text-align-right'],\n 'fa-angle-left': ['slim-arrow-left'],\n 'fa-arrows-h': ['resize-horizontal'],\n 'fa-at': ['arobase'],\n 'fa-badge-check': ['lx-icons/badge-sign'],\n 'fa-balance-scale-right': ['compare-2'],\n 'fa-binoculars': ['sys-find'],\n 'fa-book-open': ['education'],\n 'fa-bullhorn': ['marketing-campaign'],\n 'fa-caret-left': ['navigation-left-arrow'],\n 'fa-chart-pie-alt': ['pie-chart'],\n 'fa-child': ['tnt/actor'],\n 'fa-comments': ['discussion'],\n 'fa-compass': ['business-objects-explorer'],\n 'fa-compress': ['exit-full-screen'],\n 'fa-do-not-enter': ['cancel'],\n 'fa-dollar-sign': ['lx-icons/dollar-sign'],\n 'fa-expand-wide': ['full-screen'],\n 'fa-eye-dropper': ['business-suite/pipette'],\n 'fa-file-plus': ['add-document'],\n 'fa-fire-alt': ['business-suite/fire'],\n 'fa-headset': ['headset'],\n 'fa-history': ['history'],\n 'fa-list-ul': ['list'],\n 'fa-lock-alt': ['locked'],\n 'fa-lock-open': ['unlocked'],\n 'fa-long-arrow-right': ['arrow-right'],\n 'fa-minus-circle': ['sys-minus'],\n 'fa-minus-square': ['negative'],\n 'fa-phone-alt': ['call'],\n 'fa-play-circle': ['play'],\n 'fa-print': ['print'],\n 'fa-radar': ['business-suite/radius'],\n 'fa-shield-alt': ['lx-icons/shield'],\n 'fa-shopping-cart': ['cart'],\n 'fa-trophy': ['competitor'],\n 'fa-umbrella-beach': ['umbrella'],\n 'fa-atom': [],\n 'fa-bug': ['lx-icons/bug'],\n 'fa-bullseye-arrow': ['lx-icons/bullseye-arrow'],\n 'fa-chess-queen-alt': ['lx-icons/chess-queen'],\n 'fa-confluence': ['lx-icons/confluence'],\n 'fa-cloud': ['cloud'],\n 'fa-euro-sign': ['lx-icons/euro-sign'],\n 'fa-exchange': ['lx-icons/exchange'],\n 'fa-folder-open': ['open-folder'],\n 'fa-folder-tree': ['lx-icons/folder-tree'],\n 'fa-gavel': ['lx-icons/gavel'],\n 'fa-keyboard': ['keyboard-and-mouse'],\n 'fa-hammer': ['lx-icons/hammer'],\n 'fa-hat-wizard': ['lx-icons/hat-wizard'],\n 'fa-hourglass-end': ['lx-icons/hourglass-end'],\n 'fa-lemon': ['lx-icons/lemon'],\n 'fa-pound-sign': ['lx-icons/pound-sign'],\n 'fa-project-diagram': ['lx-icons/project-diagram'],\n 'fa-shield': ['lx-icons/shield'],\n 'fa-signal': ['lx-icons/signal'],\n 'fa-tasks-alt': ['lx-icons/tasks'],\n 'fa-toolbox': ['lx-icons/toolbox'],\n 'fa-tools': ['wrench'],\n 'fa-tshirt': ['lx-icons/tshirt'],\n 'fa-underline': ['underline-text'],\n 'fa-unicorn': ['lx-icons/unicorn'],\n 'fa-user-hard-hat': ['lx-icons/user-hard-hat'],\n 'fa-window': ['lx-icons/window'], // ['tnt/subject'],\n 'fa-quote-right': ['lx-icons/quote-right'],\n 'fa-yen-sign': ['lx-icons/yen-sign'],\n 'fa-feather': ['lx-icons/feather'],\n 'fa-road': ['lx-icons/road'],\n 'fa-3x3-grid': ['lx-icons/3x3-grid'],\n 'fa-comment-alt-check': ['lx-icons/comment-alt-check'],\n 'fa-rocket': ['lx-icons/rocket'],\n 'fa-rectangle-wide': ['legend']\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n/**\n * Badge component is used to show a small piece of information in a colored badge.\n */\n@Component({\n selector: 'lx-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss']\n})\nexport class BadgeComponent implements OnInit {\n /**\n * The content to show in the badge\n */\n @Input({ required: true })\n content!: string | number;\n\n /**\n * The color of the badge component\n */\n @Input()\n color: 'blue' | 'gray' | 'red' | 'yellow' | 'green' | 'purple' | 'white' = 'blue';\n\n /**\n * If set to true, the badge will create a color for itself based on the content, ignoring other color settings.\n * This could be useful if we want to show a range of different colors for different contents.\n */\n @Input()\n calculateColorsDynamically: boolean = false;\n\n /** @internal */\n textColor = '';\n /** @internal */\n backGroundColor = '';\n\n ngOnInit(): void {\n if (this.calculateColorsDynamically) {\n this.calculateColorsFromText();\n }\n }\n\n get colorClass(): string {\n if (this.calculateColorsDynamically) {\n return '';\n } else {\n return `${this.color}`;\n }\n }\n\n private calculateColorsFromText(): void {\n let hash = 0;\n const contentAsString = String(this.content);\n for (let i = 0; i < contentAsString.length; i++) {\n hash = contentAsString.charCodeAt(i) + ((hash << 5) - hash);\n }\n this.backGroundColor = `hsla(${hash % 360}, 100%, 58%, 0.12)`;\n this.textColor = `hsl(${hash % 360}, 100%, 28%)`;\n }\n}\n","@if (calculateColorsDynamically) {\n <div class=\"wrapper\" [style.background-color]=\"backGroundColor\" [style.color]=\"textColor\">\n <span>{{ content }}</span>\n </div>\n} @else {\n <div class=\"wrapper\" [class]=\"colorClass\">\n <span>{{ content }}</span>\n </div>\n}\n","type ObjectValues<T> = T[keyof T];\nexport const BANNER_TYPE = {\n SUCCESS: 'success',\n INFO: 'info',\n WARNING: 'warning',\n DANGER: 'danger',\n GRAY: 'gray'\n} as const;\nexport type BannerTypes = ObjectValues<typeof BANNER_TYPE>;\nexport const BANNER_SIZE = {\n BIG: 'big',\n SMALL: 'small'\n} as const;\nexport type BannerSizes = ObjectValues<typeof BANNER_SIZE>;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, signal } from '@angular/core';\nimport { BANNER_SIZE, BANNER_TYPE, BannerSizes, BannerTypes } from './banner.models';\n\n/**\n * Banner can be used to display important information to the user. It allows for any type of content to be displayed in a banner.\n */\n@Component({\n selector: 'lx-banner',\n host: {\n '[attr.type]': 'type',\n '[attr.size]': 'size'\n },\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class BannerComponent implements OnInit {\n private readonly _type = signal<BannerTypes>(BANNER_TYPE.WARNING);\n private readonly _size = signal<BannerSizes>(BANNER_SIZE.BIG);\n /** @internal */\n readonly showIcon = signal(false);\n /** @internal */\n readonly iconClass = signal('');\n\n /**\n * The type of the banner\n */\n @Input() set type(type: BannerTypes) {\n this._type.set(type);\n this.iconClass.set(this.getIconClass(type));\n }\n get type() {\n return this._type();\n }\n /**\n * The size of the banner\n */\n @Input() set size(size: BannerSizes) {\n this._size.set(size);\n this.showIcon.set(size === BANNER_SIZE.BIG);\n }\n get size() {\n return this._size();\n }\n\n ngOnInit() {\n this.showIcon.set(this.size === BANNER_SIZE.BIG);\n }\n\n /** @internal */\n getIconClass(type: BannerTypes) {\n switch (type) {\n case BANNER_TYPE.SUCCESS:\n return 'fa-check';\n case BANNER_TYPE.INFO:\n return 'fa-info';\n case BANNER_TYPE.WARNING:\n return 'fa-exclamation';\n case BANNER_TYPE.DANGER:\n return 'fa-times';\n default:\n return 'fa-info';\n }\n }\n}\n","<div class=\"banner-wrapper\">\n @if (showIcon()) {\n <div class=\"banner-icon-box\" aria-hidden=\"true\">\n <i class=\"fas tw-text-size-sm\" [ngClass]=\"iconClass()\"></i>\n </div>\n }\n <div class=\"banner-content\">\n <ng-content />\n </div>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-button-group',\n templateUrl: 'button-group.component.html',\n styleUrls: ['button-group.component.scss'],\n standalone: true\n})\nexport class ButtonGroupComponent {\n @Input()\n separator: 'margin' | 'border' = 'margin';\n\n @HostBinding('class.marginSeparator')\n public get hasMarginSeperator() {\n return this.separator === 'margin';\n }\n\n @HostBinding('class.borderSeparator')\n public get hasBorderSeparator() {\n return this.separator === 'border';\n }\n}\n","<ng-content />\n","import { Component } from '@angular/core';\n\n/**\n * Tiny spinner component is used to show a small spinner.\n */\n@Component({\n selector: 'lx-tiny-spinner',\n templateUrl: 'tiny-spinner.component.html',\n standalone: true\n})\nexport class TinySpinnerComponent {}\n","<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject, InjectionToken, input, Input } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n// eslint-disable-next-line no-restricted-imports\nimport { IconComponent } from '@ui5/webcomponents-ngx/main/icon';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { ICON_MAP } from '../../core-ui.constants';\nimport { TinySpinnerComponent } from '../tiny-spinner/tiny-spinner.component';\n\ndeclare global {\n interface Window {\n /**\n * internal, used for theming toggles\n */\n useSAPIconInLxButton$: BehaviorSubject<boolean>;\n }\n}\n\n/**\n * @internal\n * Opt-in to render SAP icons in the `ButtonComponent`\n */\nexport const LX_BUTTON_USE_SAP_ICONS = new InjectionToken<BehaviorSubject<boolean>>('LX_BUTTON_USE_SAP_ICONS', {\n factory: () => {\n window.useSAPIconInLxButton$ ??= new BehaviorSubject(false);\n return window.useSAPIconInLxButton$;\n }\n});\n\n/**\n * Button component is used to create a button with different styles and sizes. This uses native button element and\n * only provides styling and some additional features like loading spinner.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[lx-button]',\n templateUrl: 'button.component.html',\n styleUrls: ['button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [TinySpinnerComponent, IconComponent, NgTemplateOutlet]\n})\nexport class ButtonComponent {\n protected readonly useSAPIcons = toSignal(inject(LX_BUTTON_USE_SAP_ICONS, { optional: true }) || of(false));\n\n /**\n * The size of the button.\n */\n @Input() @HostBinding('attr.size') size: 'small' | 'medium' | 'large' | 'auto' = 'medium';\n\n /**\n * The color of the button.\n */\n @Input() @HostBinding('attr.color') color: 'default' | 'primary' | 'danger' | 'success' | 'light' = 'default';\n\n /**\n * The mode of the button.\n */\n @Input() @HostBinding('attr.mode') mode: 'solid' | 'ghost' | 'outline' | 'link' = 'solid';\n\n /**\n * The pressed state of the button. This simulates the `:active` state of the button.\n */\n @Input() @HostBinding('class.pressed') pressed: boolean = false;\n\n /**\n * The selected state of the button. This simulates the `:hover` state of the button.\n */\n @Input() @HostBinding('class.selected') selected: boolean = false;\n\n /**\n * This makes the button square.\n */\n @Input() @HostBinding('class.square') square: boolean = false;\n\n /**\n * This makes corners rounded. Use with `square` for a true circle.\n */\n @Input() @HostBinding('class.circle') circle: boolean = false;\n\n /**\n * This disables the button.\n */\n @Input() disabled: boolean = false;\n\n @HostBinding('class.withIcon') get hasIcon() {\n return !!this.icon() || !!this.endIcon();\n }\n /**\n * The icon name (font-awesome) to display inside the button.\n * It is displayed before any additional content.\n *\n * An icon variant can be provided as well, e.g. `fas fa-trash`.\n *\n * @default undefined\n * @example\n * <button lx-button icon=\"fa-times\">Close</button>\n */\n readonly icon = input<string>();\n\n protected readonly iconName = computed(() => this.getMappedIconName(this.icon()));\n protected readonly iconVariant = computed(() => extractFontAwesomeVariant(this.icon()));\n\n /**\n * The icon name (font-awesome) to display inside the button.\n * It is displayed after any additional content.\n *\n * An icon variant can be provided as well, e.g. `fas fa-trash`.\n *\n * @default undefined\n * @example\n * <button lx-button endIcon=\"fa-times\">Close</button>\n */\n readonly endIcon = input<string>();\n\n protected readonly endIconName = computed(() => this.getMappedIconName(this.endIcon()));\n protected readonly endIconVariant = computed(() => extractFontAwesomeVariant(this.endIcon()));\n\n /**\n * This shows a spinner inside the button.\n */\n @Input()\n @HostBinding('class.loading')\n showSpinner: boolean = false;\n\n @HostBinding('disabled')\n get isDisabled() {\n return this.disabled || this.showSpinner;\n }\n\n private getMappedIconName(iconName: string | undefined): string | null {\n const useSAPIcons = this.useSAPIcons();\n\n if (!iconName) {\n return null;\n }\n\n if (useSAPIcons) {\n return getSAPIcon(iconName);\n }\n\n return removeFontAwesomeVariant(iconName);\n }\n}\n\nfunction getSAPIcon(iconName: string): string | null {\n const iconVariant = extractFontAwesomeVariant(iconName);\n const extractedName = removeFontAwesomeVariant(iconName);\n if (!ICON_MAP[extractedName]) {\n console.warn(`No SAP icon found for Font Awesome icon ${extractedName}`);\n return null;\n }\n if (iconVariant === 'fas' || iconVariant === 'fa') {\n return ICON_MAP[extractedName]?.[1] ?? ICON_MAP[extractedName]?.[0] ?? null;\n }\n return ICON_MAP[extractedName]?.[0] ?? null;\n}\n\nfunction extractFontAwesomeVariant(iconName?: string): string {\n return iconName?.match(/\\b(far|fas|fa(?!-)|fal|fab)\\b/)?.[0] ?? 'far';\n}\n\nfunction removeFontAwesomeVariant(iconName: string): string {\n return iconName.replace(/\\b(far|fas|fa(?!-)|fal|fab)\\b/g, '').trim();\n}\n","@let useNewIcons = useSAPIcons();\n@let startIcon = iconName();\n@let endIcon = endIconName();\n@if (!startIcon && !endIcon) {\n <!-- old layout -->\n @if (showSpinner) {\n <lx-tiny-spinner />\n }\n <ng-container *ngTemplateOutlet=\"content\" />\n} @else {\n <div class=\"contentWrapper\">\n <!-- new layout -->\n @if (showSpinner) {\n <lx-tiny-spinner />\n } @else if (startIcon && useNewIcons) {\n <ui5-icon class=\"ui5Icon\" [name]=\"startIcon\" data-testid=\"start-icon\" />\n } @else if (startIcon && !useNewIcons) {\n <i\n [class.fa-fw]=\"mode !== 'link'\"\n class=\"{{ startIcon }} {{ iconVariant() }}\"\n role=\"img\"\n aria-hidden=\"true\"\n data-testid=\"start-icon\"\n ></i>\n }\n <ng-container *ngTemplateOutlet=\"content\" />\n @if (!showSpinner && endIcon && useNewIcons) {\n <ui5-icon class=\"ui5Icon\" [name]=\"endIcon\" data-testid=\"end-icon\" />\n } @else if (!showSpinner && endIcon && !useNewIcons) {\n <i\n [class.fa-fw]=\"mode !== 'link'\"\n class=\"{{ endIcon }} {{ endIconVariant() }}\"\n role=\"img\"\n aria-hidden=\"true\"\n data-testid=\"end-icon\"\n ></i>\n }\n </div>\n}\n\n<!-- ng-content with the same slot can be used once in the same template -->\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n/**\n * Card component is a container component that can be used to display content in a card-like style.\n * This documentation provides details on the usage and configuration of the Card Component.\n */\n@Component({\n selector: 'lx-card',\n templateUrl: 'card.component.html',\n styleUrls: ['card.component.scss'],\n standalone: true\n})\nexport class CardComponent {\n /**\n * The style of the card.\n */\n @Input() @HostBinding('attr.data-style') dataStyle: 'white' = 'white';\n}\n","<ng-content />\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-collapsible',\n templateUrl: 'collapsible.component.html',\n styleUrls: ['collapsible.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent]\n})\nexport class CollapsibleComponent {\n readonly NAME = 'CollapsibleComponent';\n\n @Input() disableSectionToggle = false;\n @Input() hideSectionToggle = false;\n @Input() toggleSize: ButtonComponent['size'] = 'small';\n @Input() toggleTitle = '';\n\n @Input() collapsed: boolean = false;\n @Output() collapsedChange = new EventEmitter<boolean>();\n\n @HostBinding('class.notClickable')\n get notClickable(): boolean {\n return this.disableSectionToggle || this.hideSectionToggle;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n this.onToggleSection(event);\n }\n\n onToggleSection(event: MouseEvent) {\n if (!this.disableSectionToggle && !this.hideSectionToggle) {\n event.stopPropagation();\n this.collapsed = !this.collapsed;\n this.collapsedChange.emit(this.collapsed);\n }\n }\n}\n","<button\n *ngIf=\"!hideSectionToggle\"\n lx-button\n mode=\"link\"\n [title]=\"toggleTitle\"\n [size]=\"toggleSize\"\n class=\"sectionToggle\"\n [class.collapsed]=\"collapsed\"\n type=\"button\"\n [disabled]=\"disableSectionToggle\"\n [square]=\"true\"\n icon=\"fa-angle-down\"\n (click)=\"onToggleSection($event)\"\n></button>\n<div class=\"collapsible-title\">\n <ng-content />\n</div>\n","import { NgClass } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n/**\n * Counter component is used to create a counter with different styles and sizes.\n */\n@Component({\n selector: 'lx-counter',\n templateUrl: 'counter.component.html',\n styleUrls: ['counter.component.scss'],\n standalone: true,\n imports: [NgClass]\n})\nexport class CounterComponent {\n /** The content of the counter. */\n @Input() content?: string | number;\n /** The size of the counter. */\n @Input() size: 'default' | 'small' = 'default';\n /** The color of the counter. */\n @Input() color: 'primary' | 'gray' | 'darkgray' | 'red' | 'yellow' | 'green' = 'primary';\n\n get classes() {\n return `${this.size} ${this.color}`;\n }\n}\n","<span class=\"content\" [ngClass]=\"classes\">{{ content }}</span>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map, skipWhile } from 'rxjs/operators';\n\n/**\n * Observe creates an Observable stream and notifies the changes from an observed property.\n *\n * @example\n * Input() foo: string;\n * @Observe('foo') foo$: Observable<string>;\n */\nexport function Observe<T>(observedKey: string): PropertyDecorator {\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n return (target: Object, key: string | symbol): void => {\n const subjects = new WeakMap<Record<string, unknown>, BehaviorSubject<T | undefined>>();\n\n const getSubject = (instance: Record<string, unknown>) => {\n if (!subjects.has(instance)) {\n subjects.set(instance, new BehaviorSubject<T | undefined>(undefined));\n }\n return subjects.get(instance) || new BehaviorSubject<T | undefined>(undefined);\n };\n\n Object.defineProperty(target, key, {\n get(): Observable<T> {\n return getSubject(this).pipe(\n // An initial `undefined` value is triggered above when initializing the subject for a given instance.\n // This skips the initial `undefined` values, until a defined value is provided. Then, no values\n // are removed from the stream.\n skipWhile((value) => value === undefined),\n map((value) => value as T) // required for TS null check\n );\n }\n });\n\n Object.defineProperty(target, observedKey, {\n get(): T | undefined {\n return getSubject(this).getValue();\n },\n set(instanceNewValue: T): void {\n getSubject(this).next(instanceNewValue);\n }\n });\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, timer } from 'rxjs';\n\nexport type LxResizeObserverCallback = (resizedElement: ResizeObserverEntry) => void;\n\ninterface ResizeableElement extends Element {\n handleResize: LxResizeObserverCallback;\n}\n\nfunction isResizeableElement(element: any): element is ResizeableElement {\n return element && !!element.handleResize;\n}\n\n/**\n * Sharing one ResizeObserver object results in much better performance\n * over individual components creating their own ResizeObserver.\n * This is why this service exists.\n * Source:\n * - https://github.com/WICG/resize-observer/issues/59#issuecomment-408098151\n * - https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ\n *\n * Learn more about the ResizeObserver API:\n * - https://www.w3.org/TR/resize-observer/\n * - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\n * - https://www.digitalocean.com/community/tutorials/js-resize-observer\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService {\n private resizeObserver?: ResizeObserver;\n\n observe(element: Element, callback: LxResizeObserverCallback, options?: ResizeObserverOptions) {\n if (!this.resizeObserver) {\n try {\n this.resizeObserver = new ResizeObserver(this.resizeObserverCallback.bind(this));\n } catch {\n // All the browsers we support implement the ResizeObserver API.\n // For unsupported browsers, there's this \"one time artifical resize event\".\n // They will not get the functionality tied to later resize events.\n timer(500).subscribe(() => callback(this.getMockOneTimeResizeEventForUnsupportedBrowsers(element)));\n return;\n }\n }\n (element as ResizeableElement).handleResize = callback;\n this.resizeObserver.observe(element, options);\n }\n\n createResizeObservable(element: Element, options?: ResizeObserverOptions): Observable<ResizeObserverEntry> {\n return new Observable((subscriber) => {\n let animationFrame: number;\n this.observe(\n element,\n (entry) => {\n animationFrame = window.requestAnimationFrame(() => {\n subscriber.next(entry);\n });\n },\n options\n );\n\n return () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n this.unobserve(element);\n };\n });\n }\n\n unobserve(element: Element) {\n if (!this.resizeObserver) {\n return;\n }\n this.resizeObserver.unobserve(element);\n }\n\n private resizeObserverCallback(entries: ResizeObserverEntry[], _observer: ResizeObserver) {\n entries.forEach((entry) => {\n if (isResizeableElement(entry.target)) {\n entry.target.handleResize(entry);\n }\n });\n }\n\n /**\n * All browsers we officially support implement the ResizeObserver API.\n * Still as a curtesy do customers who for some reason have older browsers\n * we call the callback once with the initial dimensions of the element\n * and then do not react on resize events afterwards.\n * This should still make them happier than a \"browser not supported\" warning.\n */\n private getMockOneTimeResizeEventForUnsupportedBrowsers(element: Element) {\n const contentRect = {\n bottom: element.clientHeight,\n height: element.clientHeight,\n left: 0,\n right: element.clientWidth,\n top: 0,\n width: element.clientWidth,\n x: 0,\n y: 0\n };\n return {\n borderBoxSize: [{ blockSize: element.clientHeight, inlineSize: element.clientWidth }],\n contentBoxSize: [\n {\n blockSize: element.clientHeight,\n inlineSize: element.clientWidth\n }\n ],\n contentRect: {\n ...contentRect,\n toJSON: () => JSON.stringify(contentRect)\n },\n devicePixelContentBoxSize: [\n {\n blockSize: element.clientWidth,\n inlineSize: element.clientWidth\n }\n ],\n target: element\n };\n }\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { escape } from 'lodash/fp';\nimport { BehaviorSubject, Observable, Subject, combineLatest, concat, merge } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n pairwise,\n skip,\n startWith,\n switchMap,\n take,\n takeUntil,\n withLatestFrom\n} from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\nimport { ButtonComponent } from '../button/button.component';\n\nexport const LX_ELLIPSIS_DEBOUNCE_ON_RESIZE = new InjectionToken<number>('LX_ELLIPSIS_DEBOUNCE_ON_RESIZE', {\n providedIn: 'root',\n factory: () => EllipsisComponent.DEFAULT_RESIZE_DEBOUNCE_MS\n});\n\n/**\n * You can set `max-width` CSS property on your `lx-ellipsis` host element or the parent element if you want its content to never exceed a specific width.\n */\n@Component({\n selector: 'lx-ellipsis',\n templateUrl: 'ellipsis.component.html',\n styleUrls: [`ellipsis.component.scss`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent, AsyncPipe]\n})\nexport class EllipsisComponent implements OnInit, OnDestroy, AfterViewChecked {\n /** @internal */\n static DEFAULT_RESIZE_DEBOUNCE_MS = 500;\n\n @Input() content: string = '';\n /**\n * Only set this to false if the content is not a user provided string\n * or if you sanitize the provided content yourself.\n */\n @Input() escapeHtmlInContent = true;\n\n @Observe('contentSpanEl') private contentSpanEl$!: Observable<ElementRef<HTMLSpanElement>>;\n /** @internal */\n @ViewChild('contentEl') contentSpanEl!: ElementRef<HTMLSpanElement>;\n @Observe('showMoreButtonEl') private showMoreButtonEl$!: Observable<ElementRef<HTMLButtonElement>>;\n /** @internal */\n @ViewChild('showMoreButton', { read: ElementRef }) showMoreButtonEl!: ElementRef<HTMLButtonElement>;\n\n /** @internal */\n isShowingMore$ = new BehaviorSubject(false);\n\n /** @internal */\n showButton$!: Observable<boolean>;\n /** @internal */\n showMoreButtonLabel$!: Observable<string>;\n\n /** @internal */\n sanitizedContent$!: Observable<string>;\n @Observe('content')\n private content$!: Observable<string>;\n\n private destroyed$ = new Subject<void>();\n\n private viewChecked$ = new Subject<void>();\n\n constructor(\n @Inject(LX_ELLIPSIS_DEBOUNCE_ON_RESIZE)\n private debounceMsAfterResize: number,\n private cdRef: ChangeDetectorRef,\n private hostEl: ElementRef,\n private resizeObserverService: ResizeObserverService,\n private translateService: TranslateService\n ) {}\n\n ngOnInit(): void {\n this.sanitizedContent$ = this.content$.pipe(\n map((content) => {\n if (this.escapeHtmlInContent && typeof content === 'string') {\n return escape(content);\n }\n return content;\n })\n );\n\n this.showMoreButtonLabel$ = this.isShowingMore$.pipe(\n switchMap((isShowingMore) => {\n const translationKey = isShowingMore ? 'common.showLess' : 'common.showMore';\n return this.translateService.get(translationKey);\n })\n );\n const newWidthOnResize$ = new Subject<number>();\n const newHeightOnResize$ = new Subject<number>();\n this.resizeObserverService.observe(this.hostEl.nativeElement, (resizedElement) => {\n newWidthOnResize$.next(resizedElement.contentRect.width);\n newHeightOnResize$.next(resizedElement.contentRect.height);\n });\n const containerWidthChangedSignificantlyAfterResize$ = newWidthOnResize$.pipe(\n startWith(0),\n pairwise(),\n filter(([previousWidth, newWidth]) => Math.abs(newWidth - previousWidth) > 1),\n map(([, newWidth]) => newWidth)\n );\n const userTriggeredTriggeredShowLess$ = this.isShowingMore$.pipe(filter((isShowingMore) => !isShowingMore));\n\n const reevaluateIfContentIsOverflowing$ = combineLatest([\n this.contentSpanEl$,\n userTriggeredTriggeredShowLess$,\n containerWidthChangedSignificantlyAfterResize$\n ]);\n\n const isContentOverflowing$ = merge(\n concat(\n reevaluateIfContentIsOverflowing$.pipe(take(1)), // debounce all but the first output\n reevaluateIfContentIsOverflowing$.pipe(debounceTime(this.debounceMsAfterResize))\n ),\n this.content$.pipe(\n skip(1),\n switchMap(() => this.viewChecked$)\n )\n ).pipe(\n withLatestFrom(this.contentSpanEl$),\n map(([, contentSpanRef]) => this.isContentOverflowing(contentSpanRef))\n );\n\n const userTriggeredTriggeredShowMore$ = this.isShowingMore$.pipe(filter((isShowingMore) => isShowingMore));\n\n const buttonHeight$ = this.showMoreButtonEl$.pipe(\n filter((showMoreButtonEl) => !!showMoreButtonEl),\n map((showMoreButtonEl) => showMoreButtonEl.nativeElement.offsetHeight),\n distinctUntilChanged()\n );\n const userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$ = combineLatest([\n buttonHeight$,\n newHeightOnResize$.pipe(distinctUntilChanged())\n ]).pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => isShowingMore),\n map(([[buttonHeight, newHeight]]) => {\n const heightOfOneLine = buttonHeight;\n const showLessButtonMarginTop = 4;\n const heightOfSpanInShowMoreMode = newHeight - buttonHeight - showLessButtonMarginTop;\n const thresholdToDetectContentInSingleLine = 4;\n const differenceBetweenContentSpanAndButtonHeight = Math.abs(heightOfOneLine - heightOfSpanInShowMoreMode);\n const isSpanContentDisplayedInOneLineAgain = differenceBetweenContentSpanAndButtonHeight < thresholdToDetectContentInSingleLine;\n return isSpanContentDisplayedInOneLineAgain;\n })\n );\n const contentFitsInOneLineAgainWhileShowMoreIsEnabled$ = userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$.pipe(\n startWith(false),\n pairwise(),\n filter(([previousTextIsNowInOneLineAgain]) => !previousTextIsNowInOneLineAgain),\n map(([, textIsNowInOneLineAgain]) => !textIsNowInOneLineAgain)\n );\n const contentIsOverflowingAndShowMoreIsNotEnabled$ = isContentOverflowing$.pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => !isShowingMore),\n map(([isContentLongerThanContainerWidth]) => {\n return isContentLongerThanContainerWidth;\n })\n );\n this.showButton$ = merge(\n userTriggeredTriggeredShowMore$,\n contentFitsInOneLineAgainWhileShowMoreIsEnabled$,\n contentIsOverflowingAndShowMoreIsNotEnabled$\n );\n\n // As long as no parent component is listening on resize events,\n // the ChangeDetectorRef.markForCheck() call done by the async pipe\n // will not result in a change detection cycle in this component when its size changes.\n // This is the least amount of ChangeDetectorRef.detectChanges() calls\n // I was able to come up with. The Angular profiler shows acceptable numbers of change detection.\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n this.detectChangesWhenObservableEmits(this.showButton$);\n this.detectChangesWhenObservableEmits(this.content$);\n this.detectChangesWhenObservableEmits(contentIsOverflowingAndShowMoreIsNotEnabled$);\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n }\n\n ngAfterViewChecked() {\n this.viewChecked$.next();\n }\n\n /** @internal */\n onShowMoreToggle() {\n this.isShowingMore$.next(!this.isShowingMore$.getValue());\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.resizeObserverService.unobserve(this.hostEl.nativeElement);\n }\n\n private detectChangesWhenObservableEmits(observable$: Observable<any>) {\n observable$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.cdRef.detectChanges());\n }\n\n private isContentOverflowing(contentSpanElRef: ElementRef<HTMLSpanElement>) {\n const scrollWidth = contentSpanElRef.nativeElement.scrollWidth;\n const offsetWidth = contentSpanElRef.nativeElement.clientWidth;\n return offsetWidth < scrollWidth;\n }\n}\n","<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, HostBinding, Output, Signal, computed, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-empty-state',\n standalone: true,\n imports: [CommonModule, ButtonComponent, RouterLink],\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss'\n})\nexport class EmptyStateComponent {\n title = input.required<string>();\n\n icon = input<string>();\n buttonLabel = input<string>();\n secondaryButtonLabel = input<string>();\n loading = input<boolean>(false);\n moreLinkLabel = input<string>();\n moreLink = input<string | string[]>();\n openMoreLinkInNewTab = input<boolean>(true);\n size = input<'small' | 'medium'>('medium');\n\n public useRouterLink: Signal<boolean> = computed(() => Array.isArray(this.moreLink()));\n\n @HostBinding('attr.size')\n get _size() {\n return this.size();\n }\n\n @Output() buttonClicked = new EventEmitter<MouseEvent>();\n @Output() secondaryButtonClicked = new EventEmitter<MouseEvent>();\n @Output() moreLinkClicked = new EventEmitter<MouseEvent>();\n}\n","<div class=\"tw-max-w-[434px] tw-text-center\">\n @if (icon()) {\n <i class=\"emptyStateIcon fas tw-text-primary\" [class]=\"'fa-' + icon()\" aria-hidden=\"true\"></i>\n }\n\n <h3 class=\"empty-state-title tw-mb-m tw-mt-xl tw-text-black\" [innerHTML]=\"title()\"></h3>\n\n <div class=\"empty-state-content tw-leading-[16px] tw-text-gray-50\">\n <ng-content />\n </div>\n\n <div class=\"tw-flex tw-justify-center tw-gap-m\">\n @if (secondaryButtonLabel()) {\n <div class=\"secondaryButton tw-my-xl\">\n <button lx-button size=\"large\" [showSpinner]=\"loading()\" (click)=\"secondaryButtonClicked.emit($event)\">\n {{ secondaryButtonLabel() }}\n </button>\n </div>\n }\n\n @if (buttonLabel()) {\n <div class=\"actionButton tw-my-xl\">\n <button lx-button size=\"large\" color=\"primary\" [showSpinner]=\"loading()\" (click)=\"buttonClicked.emit($event)\">\n {{ buttonLabel() }}\n </button>\n </div>\n }\n </div>\n\n @if (moreLinkLabel() && moreLink()) {\n <div>\n @if (useRouterLink()) {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [routerLink]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n } @else {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [href]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n }\n </div>\n }\n</div>\n","import { NgFor, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nexport interface Icon {\n /** Font-awesome icon class, e.g. 'address-book'. See http://fontawesome.io/icons/ */\n type: string;\n color?: string;\n /** @deprecated */\n reverse?: boolean;\n order?: 'ASC' | 'DESC';\n}\n\n@Component({\n selector: 'lx-icon-scale',\n templateUrl: 'icon-scale.component.html',\n styleUrls: ['icon-scale.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgFor, NgStyle]\n})\nexport class IconScaleComponent implements OnChanges {\n @Input() public icon: Icon = {\n type: 'star'\n };\n @Input() public numberOfColoredItems = 0;\n @Input() public numberOfItems = 0;\n\n /** @internal */\n readonly NAME = 'IconScaleComponent';\n /** @internal */\n iconArray: boolean[] = [];\n\n public ngOnChanges(_changes: SimpleChanges) {\n this.iconArray = this.createIconArray(this.numberOfColoredItems, this.numberOfItems, this.icon?.order || 'ASC');\n }\n\n private createIconArray(items: number, totalItems: number, order: 'ASC' | 'DESC'): boolean[] {\n const coloredItems = order === 'DESC' ? totalItems - items + 1 : items;\n\n return [...Array(totalItems).keys()].map((index) => index < coloredItems);\n }\n}\n","<span\n *ngFor=\"let isColored of iconArray\"\n data-testid=\"icon-scale\"\n class=\"iconElement fas fa-{{ icon.type }}\"\n [ngStyle]=\"isColored ? { color: icon.color } : {}\"\n>\n</span>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n/**\n * The following CSS classes should be used to style this component. The use of the inputs is deprecated.\n * - `fullSpace`: Sets position to absolute with full height and width => fills ancestor with position set.\n * - `fullSpaceFixed`: Sets position to fixed with full height and width => fills window\n * (or ancestor with new rendering context, created, for example, with `transform: translate(0, 0)`\n * - `fadeBackground`: Sets background to 60% transparent white. TODO: Always use for fullSpace* classes and remove.\n */\n@Component({\n selector: 'lx-spinner',\n templateUrl: 'spinner.component.html',\n styleUrls: ['spinner.component.scss'],\n standalone: true\n})\nexport class SpinnerComponent {\n @HostBinding('class.fadeBackgroundFromInput') @Input() public fadeBackground: boolean = false;\n}\n","<div class=\"container\">\n <div class=\"middle\">\n <div class=\"center\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n <ng-content />\n </div>\n </div>\n</div>\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkStepper, CdkStepperModule } from '@angular/cdk/stepper';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef } from '@angular/core';\n\n/**\n * Stepper component is a wrapper around the Angular CDK Stepper component. It provides a way to create a linear\n * sequence of steps that guide users through a process.\n *\n * ## Usage\n *\n * 1. Import `LxCoreUiModule` module from `@leanix/components` and `CdkStepperModule` module from `@angular/cdk/stepper` in your module where you want to use the component, or in case of a standalone parent component, import the\n * `StepperComponent` and `CdkStepperModule` directly into your standalone component.\n *\n * - Module import:\n *\n * ```ts\n * import { LxCoreUiModule } from '@leanix/components';\n * import { CdkStepperModule } from '@angular/cdk/stepper';\n * ```\n *\n * - Standalone component import:\n *\n * ```ts\n * import { StepperComponent } from '@leanix/components';\n * import { CdkStepperModule } from '@angular/cdk/stepper';\n *\n * @Component({\n * selector: 'lx-my-component',\n * standalone: true,\n * imports: [CdkStepperModule, StepperComponent],\n * templateUrl: './my-component.component.html'\n * })\n * export class MyComponent {}\n * ```\n *\n * 2. Use the component in your template. All steps added to the stepper should be wrapped in a `cdk-step` element.\n *\n * Since this component extends the Angular CDK `CdkStepper` component, all the inputs, outputs, and methods available in the\n * `CdkStepper` component are also available in the `StepperComponent` and are documented in the\n * [Angular CDK documentation](https://material.angular.io/cdk/stepper/api).\n */\n@Component({\n selector: 'lx-stepper',\n standalone: true,\n imports: [CommonModule, CdkStepperModule],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss',\n providers: [{ provide: CdkStepper, useExisting: StepperComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StepperComponent extends CdkStepper {\n /** @internal */\n size: 'small' | 'normal' = 'normal';\n\n // TODO - Remove this constructor once the following issue is resolved: https://github.com/storybookjs/storybook/issues/23534#issuecomment-2042888436\n // Storybook smoke tests for stepper component are failing without this constructor\n constructor(_dir: Directionality, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>) {\n super(_dir, _changeDetectorRef, _elementRef);\n }\n\n get isSmallVariant(): boolean {\n return this.size === 'small';\n }\n\n /** @internal */\n isCompleted(index: number): boolean {\n return index < this.selectedIndex;\n }\n\n /** @internal */\n isActiveStep(index: number): boolean {\n return index === this.selectedIndex;\n }\n}\n","<ul class=\"stepper\">\n @for (step of steps; track step.label; let i = $index) {\n <li class=\"step\" [ngClass]=\"{ 'step-completed': isCompleted(i) }\">\n <div\n class=\"step-container\"\n [class]=\"isSmallVariant ? 'step-container-small' : 'step-container-normal'\"\n [ngClass]=\"{ 'step-container-active': isActiveStep(i), 'step-container-completed': isCompleted(i) }\"\n >\n <div class=\"step-number\" [ngClass]=\"{ 'step-number-active': isActiveStep(i) }\">\n @if (isCompleted(i)) {\n <i [class]=\"'far fa-check check-icon'\" [ngClass]=\"{ 'small-icon': isSmallVariant }\"></i>\n } @else if (!isSmallVariant) {\n {{ i + 1 }}\n }\n </div>\n @if (!isSmallVariant) {\n <div class=\"step-title\">\n {{ step.label }}\n </div>\n }\n </div>\n </li>\n }\n</ul>\n@if (selected) {\n <div class=\"content\">\n <ng-container [ngTemplateOutlet]=\"selected!.content\" />\n </div>\n}\n","import { Directive, input, model } from '@angular/core';\nimport { SortingOptions } from '../../pipes/sort.pipe';\n\n/**\n * The `lx-table` directive can be applied to `<table>` elements to provide a common styling.\n * Furthermore it supports column sorting in combination with `<lx-th>` for table headers.\n *\n *\n * ## Usage\n *\n * 1. Import the `TableComponent` from `@leanix/components` where you want to use it.\n *\n * ```ts\n * import { TableComponent } from '@leanix/components';\n * ```\n *\n * 2. Add the `lx-table` directive to your `<table>` element.\n *\n * ```html\n * <table lx-table></table>\n * ```\n *\n * ## Sortability\n *\n * To provide sortability within a table, the `isSortable` input has to be set to `true`\n * and the columns that support sorting should be `<lx-th>` elements with a column name applied via the `column` input.\n *\n * Sorting can be disabled for individual columns via the `disableSort` input.\n *\n * By default the sort order of columns can be changed between unsorted, ascending, and descending (after descending back to unsorted).\n * To prevent the user from clearing the sort order and just allow toggling between ascending and descending the `disableSortClear` input can be set to `true`.\n *\n * To handle sort changes, the `(sortChange)` output can be used to receive the new sort (`key` of the column and `order` - either `ASC`, `DESC`, or `undefined`).\n *\n * ### Example code\n * ```html\n * <table lx-table [isSortable]=\"true\" [(sort)]=\"sort\" (sortChange)=\"...\">\n * <thead>\n * <lx-th column=\"column1\" [disableSortClear]=\"false\">Allows asc, desc & unsorted</lx-th>\n * <lx-th column=\"column2\" [disableSortClear]=\"true\">Allows only asc & desc</lx-th>\n * <lx-th column=\"column3\" [disableSort]=\"true\">Is not sortable</lx-th>\n * </thead>\n * </table>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'table[lx-table]',\n host: {\n class: 'table table-hover'\n },\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class TableComponent {\n /**\n * This enables or disables the sortability of the table.\n */\n readonly isSortable = input(false);\n\n /**\n * The sort state of the table. Which column is sorted in what order.\n */\n readonly sort = model<SortingOptions>({});\n\n /**\n * @internal To be called from `lx-th` elements to set the sort state.\n */\n onTableHeaderSortChange(sort: SortingOptions) {\n this.sort.set(sort);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Optional, Output, computed, signal } from '@angular/core';\nimport { OrderOption, SortingOptions } from '../../../pipes/sort.pipe';\n// eslint-disable-next-line no-restricted-imports\nimport { IconComponent } from '@ui5/webcomponents-ngx/main/icon';\n// eslint-disable-next-line no-restricted-imports\nimport { registerIcon } from '@ui5/webcomponents-base/dist/asset-registries/Icons.js';\nimport { TableComponent } from '../table.component';\n\nregisterIcon('sort', {\n pathData: '',\n ltr: false,\n collection: 'lx-icons',\n packageName: '@leanix/theming',\n viewBox: '0 0 16 16',\n customTemplate: () => ({\n strings: [\n '<path d=\"M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z\" fill=\"#99A5BB\"/>',\n '<path d=\"M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z\" fill=\"#99A5BB\"/>'\n ]\n })\n});\nregisterIcon('sort-desc', {\n pathData: '',\n ltr: false,\n collection: 'lx-icons',\n packageName: '@leanix/theming',\n viewBox: '0 0 16 16',\n customTemplate: () => ({\n strings: [\n '<path d=\"M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z\" fill=\"#99A5BB\"/>',\n '<path d=\"M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z\" fill=\"#2A303D\"/>'\n ]\n })\n});\nregisterIcon('sort-asc', {\n pathData: '',\n ltr: false,\n collection: 'lx-icons',\n packageName: '@leanix/theming',\n viewBox: '0 0 16 16',\n customTemplate: () => ({\n strings: [\n '<path d=\"M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z\" fill=\"#2A303D\"/>',\n '<path d=\"M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z\" fill=\"#99A5BB\"/>'\n ]\n })\n});\n\n/**\n * The `lx-th` can be used in combination with `lx-table` to implement sortable `<table>` elements.\n */\n@Component({\n selector: 'lx-th',\n templateUrl: './table-header.component.html',\n styleUrls: ['./table-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n '[class.sortable]': 'sortable()',\n '[tabIndex]': 'sortable() ? 0 : -1',\n role: 'columnheader'\n },\n imports: [IconComponent]\n})\nexport class TableHeaderComponent {\n /**\n * The technical column name.\n */\n @Input() column?: string;\n\n /**\n * Indicates that the column is not sortable (default `false`).\n */\n @Input() disableSort = false;\n\n /**\n * Prevents the user from clearing the sort.\n * Only allowing to toggle between asc & desc.\n */\n @Input() disableSortClear = false;\n\n /**\n * Triggers whenever the user changes the sort order.\n */\n @Output() sortChange = new EventEmitter<SortingOptions>();\n\n readonly sortable = computed(() => (this.parentTable?.isSortable() && !this.disableSort) ?? false);\n readonly order = computed<OrderOption>(() => {\n const sort = this.parentTable ? this.parentTable.sort() : this.#sort();\n if (this.column !== sort?.key) {\n return undefined;\n } else {\n return sort?.order;\n }\n });\n\n readonly #sort = signal<SortingOptions>({ key: this.column, order: undefined });\n\n constructor(@Optional() private parentTable?: TableComponent) {}\n\n @HostListener('keydown.enter') @HostListener('click') onSort() {\n if (this.column && !this.disableSort) {\n const sort = { key: this.column, order: determineNewOrder(this.order(), this.disableSortClear) };\n if (!this.parentTable) {\n this.#sort.set(sort);\n }\n this.sortChange.emit(sort);\n this.parentTable?.onTableHeaderSortChange(sort);\n }\n }\n}\n\nfunction determineNewOrder(currentOrder: OrderOption, disableSortClear: boolean): OrderOption {\n if (!currentOrder) {\n return 'ASC';\n } else if (currentOrder === 'ASC') {\n return 'DESC';\n } else if (currentOrder === 'DESC') {\n return disableSortClear ? 'ASC' : undefined;\n }\n return undefined;\n}\n","<div class=\"wrapper\">\n <span>\n <ng-content />\n </span>\n @if (sortable()) {\n @if (!order()) {\n <ui5-icon name=\"lx-icons/sort\" />\n } @else if (order() === 'ASC') {\n <ui5-icon name=\"lx-icons/sort-asc\" />\n } @else if (order() === 'DESC') {\n <ui5-icon name=\"lx-icons/sort-desc\" />\n }\n }\n</div>\n","import { AfterViewInit, Directive, EventEmitter, Output } from '@angular/core';\n\n/**\n * Allows to register an event handler for the \"AfterViewInit\" lifecycle hook.\n * This can be used to do something whenever a component enters the view. This\n * might be due to an *ngIf condition.\n *\n * Example:\n * ```\n * <lx-component-a #componentA></lx-component-a>\n * <lx-component-b *ngIf=\"someCondition\" (lxAfterViewInit)=\"componentA.close()\"></lx-component-b>\n * ```\n */\n@Directive({\n selector: '[lxAfterViewInit]',\n standalone: true\n})\nexport class AfterViewInitDirective implements AfterViewInit {\n @Output() lxAfterViewInit = new EventEmitter<void>();\n\n ngAfterViewInit() {\n this.lxAfterViewInit.emit();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AutocloseDirective } from './autoclose.directive';\n\n@Injectable({ providedIn: 'root' })\nexport class AutocloseGroupService {\n private registry: Record<string, AutocloseDirective[]> = {};\n\n register(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.addToGroup(directive);\n }\n }\n\n unregister(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.removeFromGroup(directive);\n }\n }\n\n private removeFromGroup(directive: AutocloseDirective) {\n const name = directive.autocloseGroup!;\n this.registry[name] = this.getGroup(name).filter((d) => d !== directive);\n }\n\n private addToGroup(directive: AutocloseDirective) {\n const directivesOfSameGroup = this.getGroup(directive.autocloseGroup!);\n directivesOfSameGroup.forEach((d) => setTimeout(() => d.autoclose.emit()));\n directivesOfSameGroup.push(directive);\n }\n\n private getGroup(name: string): AutocloseDirective[] {\n if (!this.registry[name]) {\n this.registry[name] = [];\n }\n return this.registry[name]!;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseGroupService } from './autoclose-group.service';\n\n@Directive({\n selector: '[lxAutoclose]',\n standalone: true\n})\nexport class AutocloseDirective implements OnInit, OnDestroy {\n @Output() autoclose = new EventEmitter<EventTarget | null>();\n\n /**\n * Allows to group lxAutoclose elements in order to prevent\n * to open multiple of them in that same group. If no group\n * is provided this prevention does not happen.\n */\n @Input() autocloseGroup?: string;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private groupService: AutocloseGroupService\n ) {}\n\n ngOnInit() {\n fromEvent(document, 'click', { capture: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => this.onClick(event?.target));\n\n this.groupService.register(this);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.groupService.unregister(this);\n }\n\n private onClick(target: EventTarget | null) {\n const clickedInside = this.elementRef.nativeElement.contains(target);\n if (!clickedInside) {\n this.autoclose.emit(target);\n }\n }\n}\n","import { AfterContentInit, Directive, ElementRef, Input, NgZone } from '@angular/core';\n\n@Directive({\n selector: '[lxAutofocus]',\n standalone: true\n})\nexport class AutofocusDirective implements AfterContentInit {\n @Input() lxAutofocus: boolean = true;\n @Input() lxAutofocusPreventScroll: boolean = false;\n @Input() lxAutofocusTimeout: number = 0;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private ngZone: NgZone\n ) {}\n\n ngAfterContentInit() {\n if (this.lxAutofocus !== false) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.elementRef.nativeElement.focus({ preventScroll: this.lxAutofocusPreventScroll });\n }, this.lxAutofocusTimeout);\n });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * This pipe transforms...\n * - \"raw\" http(s) links\n * - markdown link syntax\n * ... into clickable anchor elements.\n *\n * The characters \"<\" and \">\" are escaped with their HTML entities < and >.\n *\n * You have an user interface where you don't want clickable links but also\n * don't want users to see the \"ugly\" markdown link syntax?\n * -> Use the 'lxUnlikify' pipe to replace markdown link syntax with just the link name\n */\n@Pipe({\n name: 'lxLinkify',\n standalone: true\n})\nexport class LxLinkifyPipe implements PipeTransform {\n /**\n * This is not the \"one URL regex to rule them all\", but a more realistic one which should work\n * for any URLs that our customers include in text fields on a Fact Sheet.\n *\n * Regex rules explained in plain text:\n *\n * (?:(?:https?):\\/\\/) -> Links must start with \"https://\" or \"http://\"\n *\n * (?:[^\\s/$.?#][^\\s]*(?<![\\.)])) LET'S SPLIT THIS ONE UP\n *\n * [^\\s/$.?#][^\\s]* -> Match any legal URL character until the next whitespace\n * (?<![\\.)] -> A negative lookahead to prevent matching a dot or parenthesis following a URL\n *\n * Link to regex101: https://regex101.com/r/d3KtfH/1 (NOTE: please update this link when changing the regex)\n */\n public static readonly HTTP_LINK_REGEX = /(?:(?:https?):\\/\\/)(?:[^\\s/$.?#][^\\s]*)/gi;\n\n /**\n * This will match the markdown link syntax: [link name](url)\n * Regex rules explained in plain text:\n *\n * (?:\\[([^\\]]*)\\]) -> Match any characters inside square brackets\n * \\(([^\\s\\/$.?#][^\\s]*)\\) -> Notice that this is the same regex as the HTTP_LINK_REGEX above,\n * but without the requirement for the http protocol.\n * This allows for links without including the protocol or also \"mailto:hello@world.de\" links\n *\n * Link to regex101: https://regex101.com/r/5UMUH8/1\n */\n public static readonly NAMED_LINK_REGEX = /(?:\\[([^\\]]*)\\])\\(([^\\s\\/$.?#][^\\s]*)\\)/gi;\n\n transform(text?: string | null, escape = true): string | undefined | null {\n if (text && typeof text === 'string') {\n const textWithRawLinks = this.wrapRawHttpLinksWithAnchorTags(escape ? this.escapeHtmlInUserProvidedString(text) : text);\n const textWithRawAndNamedLinks = this.turnMarkdownStyleLinksIntoAnchorTags(textWithRawLinks);\n return textWithRawAndNamedLinks;\n } else {\n return text;\n }\n }\n\n private turnMarkdownStyleLinksIntoAnchorTags(text: string) {\n let textWithRawAndNamedLinks = text;\n const namedLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n namedLinkMatches.forEach((namedLinkMatch) => {\n const [source, name, url] = namedLinkMatch;\n const urlIsValid = url && !/javascript\\:/i.test(url);\n if (source && name && urlIsValid) {\n textWithRawAndNamedLinks = textWithRawAndNamedLinks.replace(\n source,\n `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${name}</a>`\n );\n }\n });\n return textWithRawAndNamedLinks;\n }\n\n private wrapRawHttpLinksWithAnchorTags(text: string) {\n let textWithRawLinks = text;\n /**\n * Keeping track of this index prevents infinite loops\n * where a previously processed link starts with the same characters\n * as a second link.\n * e.g. https://angular.io/docs followed by https://angular.io\n */\n let nextIndexToStartReplacingFrom = 0;\n const rawLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.HTTP_LINK_REGEX, text);\n rawLinkMatches.forEach((rawLinkMatch) => {\n const [url] = rawLinkMatch;\n const wrapUrlInAnchor = (sanitizedUrlMatch: string) => {\n const firstPart = textWithRawLinks.substring(0, nextIndexToStartReplacingFrom);\n const anchorTagHtml = `<a href=\"${sanitizedUrlMatch}\" target=\"_blank\" rel=\"noopener noreferrer\">${sanitizedUrlMatch}</a>`;\n const secondPart = textWithRawLinks.substring(nextIndexToStartReplacingFrom).replace(sanitizedUrlMatch!, anchorTagHtml);\n textWithRawLinks = firstPart + secondPart;\n nextIndexToStartReplacingFrom = rawLinkMatch.index + anchorTagHtml.length;\n };\n if (url) {\n /*\n * TODO: get rid of all this code once Safari supports negative lookbehinds in regular expressions\n * The following is RegExp that handles the same stuff as the JS code below:\n *\n * /(?:(?:(?<!\\]\\())(?:https|http):\\/\\/)(?:[^\\s/$.?#][^\\s]*(?<![\\.)]))/gi;\n *\n * Demo on regex101: https://regex101.com/r/7Vl9bg/1\n *\n * Check lookbehind support here: https://caniuse.com/?search=lookbehind\n */\n const lastUrlCharacterIndex = rawLinkMatch.index + url.length - 1;\n const textUsedToPerformMatching = rawLinkMatch.input;\n const lastCharacterInUrl = textUsedToPerformMatching[lastUrlCharacterIndex];\n const twoCharactersInFrontOfTheLink =\n rawLinkMatch.index > 3\n ? `${textUsedToPerformMatching[rawLinkMatch.index - 2]}${textUsedToPerformMatching[rawLinkMatch.index - 1]}`\n : '';\n const isMarkdownSyntaxLink = twoCharactersInFrontOfTheLink === '](';\n\n if (!isMarkdownSyntaxLink && lastCharacterInUrl === '.') {\n const characterAfterUrl = textUsedToPerformMatching[lastUrlCharacterIndex + 1];\n if (!characterAfterUrl || characterAfterUrl === ' ' || characterAfterUrl === '\\n') {\n const urlWithoutDotAtTheEnd = url.slice(0, -1);\n wrapUrlInAnchor(urlWithoutDotAtTheEnd);\n }\n } else if (!isMarkdownSyntaxLink) {\n wrapUrlInAnchor(url);\n }\n }\n });\n return textWithRawLinks;\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n\n /**\n * We assume that lxLinkify is exclusively used on user provided strings.\n * This is why we want to escape any other HTML tags that are already present in the string.\n * The logic implemented here has been used with no issues for three years in our Fact Sheet comments. See https://github.com/gregjacobs/Autolinker.js/pull/313\n *\n * When using lxLinkify in conjunction with other pipes that add HTML, make sure to use lxLinkify first,\n * so that it doesn't escape the HTML of any previous pipes.\n */\n private escapeHtmlInUserProvidedString(input: string) {\n return input.replace(/<|>/gi, (match) => '&' + (match === '>' ? 'g' : 'l') + 't;');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LxLinkifyPipe } from './linkify.pipe';\n\n/**\n * This pipe replaces markdown link syntax with just the link name (omits the link altogether).\n * Example: [Angular documentation](http://angular.io/docs) -> Angular documentation\n *\n * It can also be used for \"bridging the gap\" until your view is ready to use \"lxLinkify\"\n * and you just want to get rid of the \"useless\" markdown syntax fast.\n *\n * While there are views where we want markdown style links to be clickable anchor tags,\n * there are other views where this can degrade the UX.\n * Example: in the Fact Sheet list on the inventory list view, having an arbitrary number\n * of links on the page can slow down the keyboard navigation while navigating through the list.\n */\n@Pipe({\n name: 'lxUnlinkify',\n standalone: true\n})\nexport class LxUnlinkifyPipe implements PipeTransform {\n transform(text?: string | null): string | undefined | null {\n if (text && typeof text === 'string') {\n let textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = text;\n const markdownLinkSyntaxMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n markdownLinkSyntaxMatches.forEach((markdownLinkSyntaxMatch) => {\n const [source, name] = markdownLinkSyntaxMatch;\n if (source && name) {\n textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName.replace(\n source,\n name\n );\n }\n });\n\n return textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName;\n } else {\n return text;\n }\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { trimEnd } from 'lodash/fp';\n\n@Pipe({\n name: 'lxBr',\n standalone: true\n})\nexport class BrPipe implements PipeTransform {\n transform(input: string | null | undefined, options: { isTrimEnd?: boolean } = {}) {\n if (input) {\n if (options.isTrimEnd) {\n input = trimEnd(input);\n }\n return input.replace(/[\\n\\r]/g, '<br/>');\n }\n return input;\n }\n}\n","import Color from 'color';\n\n/**\n * Compute the most eligible text color for a given background color (black or white), depending on the luminance of the\n * background color. In case the provided color is undefined or invalid, white (#FFFFFF) is returned.\n *\n * @param colorHex Color string in hexadecimal encoding.\n * @returns Equivalent contrast color in hexadecimal encoding.\n */\nexport function getContrastColor(colorHex?: string): string {\n try {\n colorHex = colorHex || '#000';\n\n const backgroundColor = Color(colorHex);\n const foregroundColor = Color(backgroundColor.isDark() ? '#FFFFFF' : '#000000');\n\n const backgroundColorLuminance = backgroundColor.luminosity();\n const foregroundColorLuminance = foregroundColor.luminosity();\n\n /**\n * Use the contrast ratio formula to determine the most eligible text color for the given background color.\n * It is possible tha the background color is dark based on the RGB value, but has opacity, which makes it light.\n * In such cases, the luminance value is used to determine the color. The solution is based on the following article:\n * https://dev.to/alvaromontoro/building-your-own-color-contrast-checker-4j7o\n */\n const contrastRatio =\n backgroundColorLuminance > foregroundColorLuminance\n ? (foregroundColorLuminance + 0.05) / (backgroundColorLuminance + 0.05)\n : (backgroundColorLuminance + 0.05) / (foregroundColorLuminance + 0.05);\n\n /**\n * Check contrast ratio for WCAG 2.0 level AA compliance level for small text. If the\n * contrast ratio is greater than 1 / 4.5, return the inverted foreground color.\n */\n if (contrastRatio >= 1 / 4.5) {\n return foregroundColor.negate().hex();\n }\n\n return foregroundColor.hex();\n } catch {\n return '#FFFFFF';\n }\n}\n\nexport function shorthandHexHandle(hex: string): string {\n const shorthandRegex = /^(#)([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const shorthand = hex.match(shorthandRegex);\n if (shorthand) {\n const convertedHex = shorthand[1]! + shorthand[2] + shorthand[2] + shorthand[3] + shorthand[3] + shorthand[4] + shorthand[4];\n return convertedHex;\n } else {\n return hex;\n }\n}\n\nexport function isValidHexColor(color: string) {\n return /^#[0-9A-F]{6}$/i.test(color);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getContrastColor, isValidHexColor, shorthandHexHandle } from '../functions/core-css.helpers';\n@Pipe({\n name: 'lxContrastColor',\n standalone: true\n})\nexport class ContrastColorPipe implements PipeTransform {\n transform(color: string): string {\n if (color) {\n return isValidHexColor(shorthandHexHandle(color)) ? getContrastColor(color) : '';\n }\n return '';\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { format } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxDate',\n standalone: true\n})\nexport class CustomDatePipe implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(value: Date | string | number | null | undefined, f: string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return value ? format(value, f, { locale }) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\n@Pipe({\n name: 'lxHighlightRange',\n standalone: true\n})\nexport class HighlightRangePipe implements PipeTransform {\n transform(text: string, offset: number = 0, length: number = 0): string {\n const highlightedMarkup = this.doTransform(text, offset, length);\n return DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] });\n }\n\n private doTransform(text: string | null, offset: number, length: number): string {\n if (!text || offset < 0 || length < 0 || offset >= text?.length || offset + length > text?.length) {\n return '';\n }\n const highlightedPart = text.slice(offset, offset + length);\n return text.slice(0, offset) + (highlightedPart.length !== 0 ? this.highlight(highlightedPart) : '') + text.slice(offset + length);\n }\n\n private highlight(text: string): string {\n return `<span class=\"termHighlight\">${text}</span>`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\nexport interface HighlightTermSearchOptions {\n /**\n * Whether the search term should be exactly matched in the given text. When set to true, the following\n * characters and spaces between words are included in the search: - [ ] / { } ( ) * + ? . ^ $ |\n */\n exactMatch: boolean;\n}\n\n/**\n * These characters are treated as seperators by\n * elasticsearch and split the input into search tokens\n * which are used to find matches.\n */\nconst STANDARD_TOKENIZER_SEPERATORS = /[^a-zA-Z\\d\\s]/g;\n\n@Pipe({\n name: 'lxHighlightTerm',\n standalone: true\n})\nexport class HighlightTermPipe implements PipeTransform {\n /**\n * Transforms the input text with highlighted text according to the provided search term.\n * @param text The input text.\n * @param search The search term to highlight.\n * @param options The highlight term search options.\n * @returns The transformed text with highlighted search term.\n */\n transform(text?: string, search?: string | null, options: HighlightTermSearchOptions = { exactMatch: false }): string | undefined {\n if (text) {\n const highlightedMarkup = this.doTransform(text, search, options);\n return highlightedMarkup ? DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] }) : undefined;\n } else {\n return undefined;\n }\n }\n\n private doTransform(text: string, search: string | null | undefined, options: HighlightTermSearchOptions): string | undefined {\n if (search) {\n let pattern = options.exactMatch ? search.trim() : search.replace(STANDARD_TOKENIZER_SEPERATORS, ' ');\n\n // replace special chars for a backslash for RegExp\n pattern = pattern.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n\n pattern = options.exactMatch\n ? pattern\n : pattern\n .split(' ')\n .filter((t) => {\n return t.length > 0;\n })\n .join('|');\n\n const regex = new RegExp(pattern, 'gi');\n return text.replace(regex, (match) => `<span class=\"termHighlight\">${match}</span>`); // add highlighting to matched regex pattern\n } else {\n return text;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nfunction isUuid(s: string) {\n const uuidRegEx = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n return uuidRegEx.test(s);\n}\n\n@Pipe({\n name: 'lxIsUuid',\n pure: true,\n standalone: true\n})\nexport class LxIsUuidPipe implements PipeTransform {\n transform(input: string | null | undefined): boolean {\n return input ? isUuid(input) : false;\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { distanceInWords } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxTimeAgo',\n pure: true,\n standalone: true\n})\nexport class LxTimeAgo implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(input: Date | string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return distanceInWords(new Date(), input, { locale, addSuffix: true });\n }\n}\n","import { ChangeDetectorRef, Inject, Injectable, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { isArray, isEqual } from 'lodash-es';\nimport { GLOBAL_TRANSLATION_OPTIONS, GlobalTranslationOptionsProvider } from '../core-ui.constants';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'lxTranslate',\n pure: false, // Because the underlying TranslatePipe isn't pure either\n standalone: true\n})\nexport class LxTranslatePipe implements PipeTransform {\n private translatePipe: TranslatePipe;\n\n // Cache last interpolations argument\n private cachedIncomingInterpolations?: Record<string, unknown>;\n // Cache corresponding resulting interpolations, which includes the globalTranslationOptions\n private cachedResultingInterpolations?: Record<string, string>;\n\n constructor(\n private translate: TranslateService,\n private cdRef: ChangeDetectorRef,\n @Optional() @Inject(GLOBAL_TRANSLATION_OPTIONS) private globalTranslationOptionsProvider?: GlobalTranslationOptionsProvider\n ) {\n this.translatePipe = new TranslatePipe(this.translate, this.cdRef);\n }\n\n public transform(query: string | string[], interpolations?: Record<string, unknown>): any {\n query = isArray(query) ? query.join('.') : query;\n\n const globalTranslationOptions = this.globalTranslationOptionsProvider?.createGlobalTranslationOptions() ?? {};\n\n if (!interpolations) {\n // No interpolations --> Use globalTranslationOptions only & update cache\n this.cachedIncomingInterpolations = interpolations;\n this.cachedResultingInterpolations = globalTranslationOptions;\n } else if (!isEqual(this.cachedIncomingInterpolations, interpolations)) {\n // Interpolations are different from the ones cached --> combine them with globalTranslationOptions & update cache\n this.cachedIncomingInterpolations = interpolations;\n this.cachedResultingInterpolations = Object.assign({}, globalTranslationOptions, interpolations);\n }\n // Else: Use cached resulting interpolations\n\n return this.translatePipe.transform(query, this.cachedResultingInterpolations);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// eslint-disable-next-line no-restricted-imports\nimport { marked, Renderer } from 'marked';\n\ninterface MarkdownOptions {\n disableListRendering?: boolean;\n}\n\n@Pipe({\n name: 'lxMarkdown',\n standalone: true\n})\nexport class MarkdownPipe implements PipeTransform {\n readonly renderer: Renderer;\n\n constructor() {\n this.renderer = new Renderer();\n this.renderer.link = (href: string, title: string, text: string) =>\n `<a href=\"${href}\" title=\"${title || ''}\" target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`;\n }\n\n transform(markdownText: string | null | undefined, markdownOptions?: MarkdownOptions): string {\n const options: marked.MarkedOptions = { renderer: this.renderer };\n if (markdownOptions?.disableListRendering && options.renderer) {\n options.renderer.list = (body: string, _ordered: boolean, positionInList: number) => {\n return `${positionInList}. ${body}`;\n };\n options.renderer.listitem = (text: string) => {\n return text;\n };\n }\n return markdownText ? marked.parse(markdownText, options) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxNbsp',\n standalone: true\n})\nexport class NbspPipe implements PipeTransform {\n transform(text: string | null | undefined): string {\n return text ? text.replace(/ /g, ' ') : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get, sortBy } from 'lodash/fp';\n\nexport type OrderOption = 'ASC' | 'DESC' | undefined;\nexport interface SortingOptions {\n key?: string;\n caseInsensitive?: boolean;\n order?: OrderOption;\n}\n\n@Pipe({\n name: 'lxSort',\n standalone: true\n})\nexport class SortPipe implements PipeTransform {\n transform<T>(items: Readonly<T[]> | null, options: SortingOptions = {}): any[] {\n if (!items) {\n return [];\n }\n\n if (options.order !== 'DESC') {\n return applySorting(options, items);\n } else {\n return applySorting(options, items).reverse();\n }\n }\n}\n\nfunction applySorting<T>(options: SortingOptions, items: Readonly<T[]>): T[] {\n if (options.caseInsensitive) {\n return options.key ? sortBy<T>(getValueForKey(options.key), items) : items.slice().sort(sortStringCaseInsensitive());\n }\n return options.key ? sortBy<T>((item) => get(options.key!, item), items) : items.slice().sort();\n}\n\nfunction sortStringCaseInsensitive<T>() {\n return (a: T, b: T) => {\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b, undefined, { sensitivity: 'base' });\n }\n if (a === b) {\n return 0;\n }\n if (a < b) {\n return -1;\n }\n return 1;\n };\n}\n\nfunction getValueForKey<T>(key: string) {\n return (item: T) => {\n const value = (<any>item)[key];\n if (typeof value === 'string') {\n return value.toLowerCase();\n }\n return value;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nexport function getTranslationParts(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarkAndParams: string | [string, any]\n): string[] {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMark = isArray(cutMarkAndParams) ? cutMarkAndParams[0] : cutMarkAndParams;\n const params = isArray(cutMarkAndParams) ? cutMarkAndParams[1] : null;\n const translation = translateService.instant(translationKey, params);\n const parts = split(translation, `[[${cutMark}]]`);\n if (parts.length === 1) {\n console.error(`'[[${cutMark}]]' not found in '${translation}' for key '${translationKey}'.`);\n }\n return parts;\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * preceding the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'link' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['link', params] }}\n * @see TranslationAfterPipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationBefore',\n standalone: true\n})\nexport class TranslationBeforePipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {(string|[string, any])} cutMarkAndParams either just the cut-mark to split by or\n * an array of cut-mark string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[0]!;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { getTranslationParts } from './translation-before.pipe';\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * following the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @see TranslationBeforePipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationAfter',\n standalone: true\n})\nexport class TranslationAfterPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[1] || '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nfunction getTranslationBetween(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarksAndParams: [string, string] | [string, string, any]\n): string {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMarks = cutMarksAndParams.slice(0, 2);\n const params = cutMarksAndParams[2] || null;\n const translation = translateService.instant(translationKey, params);\n const parts1 = split(translation, `[[${cutMarks[0]}]]`);\n if (parts1.length === 1) {\n console.error(`'[[${cutMarks[0]}]]' not found in '${translation}' for key '${translationKey}'.`);\n return translation;\n } else {\n const parts2 = split(parts1[1], `[[${cutMarks[1]}]]`);\n if (parts2.length === 1) {\n console.error(`'[[${cutMarks[1]}]]' not found in '${translation}' after '[[${cutMarks[0]}]]' for key '${translationKey}'.`);\n return translation;\n }\n return parts2[0]!;\n }\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * between the two cut-mark strings '[[<cutMark>]]'.\n * NB: This pipe should be used very rarely, as it fixes the order of cut-marks, which may make\n * them untranslateable in some languages. It also makes the template harder to read.\n * Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationBetween:['link', 'userLink'] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'userLink' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBetween:['link', 'userLink', params] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['userLink', params] }}\n * @see TranslationBeforePipe\n * @see TranslationAferPipe\n */\n@Pipe({\n name: 'lxTranslationBetween',\n standalone: true\n})\nexport class TranslationBetweenPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {([string, string]|[string, string, any])} interpolationsAndParams either just the interpolation string to split by or\n * an array of interpolation string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarksAndParams: [string, string] | [string, string, any]): string {\n return getTranslationBetween(this.translateService, translationKey, cutMarksAndParams);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxUnescapeCurlyBraces',\n standalone: true\n})\nexport class UnescapeCurlyBracesPipe implements PipeTransform {\n transform(input: string): string {\n return input.replace(/\\\\([{}])/g, '$1');\n }\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { TooltipPosition } from './tooltip-position.interface';\n\nfunction toCdkX(x: 'left' | 'center' | 'right'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n }\n}\n\nfunction invertCdkX(x: 'start' | 'center' | 'end'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'start':\n return 'end';\n case 'center':\n return 'center';\n case 'end':\n return 'start';\n }\n}\n\nfunction invertCdkY(x: 'top' | 'center' | 'bottom'): 'top' | 'center' | 'bottom' {\n switch (x) {\n case 'top':\n return 'bottom';\n case 'center':\n return 'center';\n case 'bottom':\n return 'top';\n }\n}\n\nfunction offsetYDirection(x: 'top' | 'center' | 'bottom'): number {\n switch (x) {\n case 'top':\n return -6;\n case 'center':\n return 0;\n case 'bottom':\n return 6;\n }\n}\n\nfunction offsetXDirection(position: TooltipPosition): number {\n switch (position.y) {\n case 'center':\n switch (position.x) {\n case 'left':\n return -6;\n case 'center':\n return 0;\n case 'right':\n return 6;\n }\n case 'top':\n case 'bottom':\n switch (position.x) {\n case 'left':\n return 30;\n case 'center':\n return 0;\n case 'right':\n return -30;\n }\n }\n}\n\nexport function toCdkPosition(position: TooltipPosition): ConnectedPosition {\n return {\n originX: toCdkX(position.x),\n originY: position.y,\n overlayX: invertCdkX(toCdkX(position.x)),\n overlayY: invertCdkY(position.y),\n offsetY: offsetYDirection(position.y),\n offsetX: offsetXDirection(position)\n };\n}\n","export interface TooltipPosition {\n x: 'left' | 'center' | 'right';\n y: 'top' | 'center' | 'bottom';\n}\n\nexport function isValidX(x: string): x is 'left' | 'center' | 'right' {\n return ['left', 'center', 'right'].includes(x);\n}\n\nexport function isValidY(y: string): y is 'top' | 'center' | 'bottom' {\n return ['top', 'center', 'bottom'].includes(y);\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TooltipPosition } from './tooltip-position.interface';\n\n@Component({\n selector: 'lx-tooltip',\n styleUrls: ['./tooltip.component.scss'],\n templateUrl: './tooltip.component.html',\n standalone: true,\n imports: [NgIf, NgClass],\n host: { role: 'tooltip' }\n})\nexport class TooltipComponent {\n @Input() content = '';\n @Input() isHtmlContent: boolean = false;\n @Input() position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n}\n","<div *ngIf=\"!isHtmlContent; else htmlTooltip\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\">{{ content }}</div>\n<ng-template #htmlTooltip>\n <div [innerHtml]=\"content\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\"></div>\n</ng-template>\n","import { AriaDescriber } from '@angular/cdk/a11y';\nimport { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { toCdkPosition } from './to-cdk-position.function';\nimport { TooltipPosition, isValidX, isValidY } from './tooltip-position.interface';\nimport { TooltipComponent } from './tooltip.component';\n\n/**\n * Tooltip directive is used to show a tooltip on hover or focus on an element.\n */\n@Directive({\n selector: '[lxTooltip]',\n standalone: true\n})\nexport class TooltipDirective implements OnChanges, OnDestroy {\n /** The content of the tooltip. */\n @Input('lxTooltip') content?: string | null;\n /** The position of the tooltip. */\n @Input() set lxTooltipPosition(value: { x: string; y: string } | undefined) {\n this.position = {\n x: value && isValidX(value.x) ? value.x : 'center',\n y: value && isValidY(value.y) ? value.y : 'top'\n };\n }\n private position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n /** The delay in milliseconds before the tooltip is shown. */\n @Input() lxTooltipDelay?: number;\n /** Whether the tooltip content is HTML. */\n @Input() lxTooltipIsHtmlContent: boolean = false;\n\n private overlayRef?: OverlayRef;\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private mouseOrFocusOnHost: boolean = false;\n\n get positionStrategy() {\n return this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([toCdkPosition(this.position)]);\n }\n\n constructor(\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay,\n private ariaDescriber: AriaDescriber\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.overlayRef && changes['lxTooltipPosition']) {\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n if (this.tooltipRef) {\n if (changes['lxTooltipPosition']) {\n this.tooltipRef.instance.position = this.position;\n }\n if (changes['lxTooltipIsHtmlContent']) {\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n }\n if (changes['content']) {\n if (this.content) {\n this.tooltipRef.instance.content = this.content;\n this.overlayRef?.updatePosition();\n } else {\n this.overlayRef?.detach();\n }\n }\n }\n }\n\n /** @internal */\n @HostListener('mouseenter')\n @HostListener('focus')\n show() {\n this.mouseOrFocusOnHost = true;\n setTimeout(() => {\n if (!this.overlayRef?.hasAttached() && this.mouseOrFocusOnHost && this.content) {\n this.overlayRef = this.overlay.create({ positionStrategy: this.positionStrategy });\n const tooltipPortal = new ComponentPortal(TooltipComponent);\n this.tooltipRef = this.overlayRef.attach(tooltipPortal);\n this.tooltipRef.instance.content = this.content;\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n this.tooltipRef.instance.position = this.position;\n this.ariaDescriber.describe(this.elementRef.nativeElement, this.tooltipRef.location.nativeElement);\n }\n }, this.lxTooltipDelay ?? 90);\n }\n\n ngOnDestroy() {\n this.mouseOrFocusOnHost = false;\n this.overlayRef?.dispose();\n }\n\n /** @internal */\n @HostListener('mouseleave')\n @HostListener('click')\n @HostListener('blur')\n hide() {\n this.mouseOrFocusOnHost = false;\n this.ariaDescriber.removeDescription(this.elementRef.nativeElement, this.tooltipRef?.location.nativeElement);\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BadgeComponent } from './components/badge/badge.component';\nimport { BannerComponent } from './components/banner/banner.component';\nimport { ButtonGroupComponent } from './components/button-group/button-group.component';\nimport { ButtonComponent } from './components/button/button.component';\nimport { CardComponent } from './components/card/card.component';\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\nimport { CounterComponent } from './components/counter/counter.component';\nimport { EllipsisComponent } from './components/ellipsis/ellipsis.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { IconScaleComponent } from './components/icon-scale/icon-scale.component';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\nimport { StepperComponent } from './components/stepper/stepper.component';\nimport { TableHeaderComponent } from './components/table/table-header/table-header.component';\nimport { TableComponent } from './components/table/table.component';\nimport { TinySpinnerComponent } from './components/tiny-spinner/tiny-spinner.component';\nimport { AfterViewInitDirective } from './directives/after-view-init.directive';\nimport { AutocloseDirective } from './directives/autoclose.directive';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { LxLinkifyPipe } from './linkify/linkify.pipe';\nimport { LxUnlinkifyPipe } from './linkify/unlinkify.pipe';\nimport { BrPipe } from './pipes/br.pipe';\nimport { ContrastColorPipe } from './pipes/contrast-color.pipe';\nimport { CustomDatePipe } from './pipes/custom-date.pipe';\nimport { HighlightRangePipe } from './pipes/highlight-range.pipe';\nimport { HighlightTermPipe } from './pipes/highlight-term.pipe';\nimport { LxIsUuidPipe } from './pipes/lx-is-uuid.pipe';\nimport { LxTimeAgo } from './pipes/lx-time-ago.pipe';\nimport { LxTranslatePipe } from './pipes/lx-translate.pipe';\nimport { MarkdownPipe } from './pipes/markdown.pipe';\nimport { NbspPipe } from './pipes/nbsp.pipe';\nimport { SortPipe } from './pipes/sort.pipe';\nimport { TranslationAfterPipe } from './pipes/translation-after.pipe';\nimport { TranslationBeforePipe } from './pipes/translation-before.pipe';\nimport { TranslationBetweenPipe } from './pipes/translation-between.pipe';\nimport { UnescapeCurlyBracesPipe } from './pipes/unescape-curly-braces.pipe';\nimport { TooltipDirective } from './tooltip/tooltip.directive';\n\nexport const CORE_MODULE_EXPORTS = [\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n CounterComponent,\n BannerComponent,\n ButtonComponent,\n BrPipe,\n ButtonGroupComponent,\n CardComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n StepperComponent,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n CollapsibleComponent,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe,\n EmptyStateComponent\n];\n\n@NgModule({\n imports: [\n TranslateModule.forChild(),\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n CounterComponent,\n BadgeComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n BrPipe,\n CardComponent,\n CollapsibleComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n StepperComponent,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe,\n EmptyStateComponent\n ],\n exports: CORE_MODULE_EXPORTS,\n providers: [LxTimeAgo]\n})\nexport class LxCoreUiModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { User, UserAvatarSize } from '../components/avatar/avatar.model';\n\n@Pipe({\n name: 'displayAvatars',\n standalone: true\n})\nexport class DisplayAvatarsPipe implements PipeTransform {\n transform(\n users: (User & { technicalUser?: boolean })[],\n type: 'individual' | 'group',\n size: UserAvatarSize,\n userGroupWidth: number,\n autoScale: boolean,\n maxLength: number\n ): (User & { technicalUser?: boolean })[] {\n if (maxLength) {\n return users.slice(0, maxLength);\n }\n if (autoScale) {\n if (type === 'group') {\n const usersToShow = Math.floor((userGroupWidth - 2 * SIZES[size]) / ((SIZES[size] * 2) / 3)) + 1;\n return users.slice(0, usersToShow);\n } else {\n const usersToShow = Math.floor(userGroupWidth / (SIZES[size] + 2)) - 1;\n return users.slice(0, usersToShow);\n }\n }\n return users;\n }\n}\n\ntype SizeMap = { [K in UserAvatarSize]: number };\n\nconst SIZES: SizeMap = {\n XS: 16,\n S: 24,\n M: 32,\n L: 40,\n XL: 64\n};\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/** This is a temporary storage for our user and image related models, before we find a better place for them\n *\n * We relocated the models here to facilitate moving the avatar and avatar group components out of the user-ui directory.\n *\n * This ensures we maintain a single source of truth and adhere to the current strict no-shared-nx policy, since all\n * libraries and apps already support importing from `@leanix/components` already.\n */\n\nexport type UserAvatarSize = 'XS' | 'S' | 'M' | 'L' | 'XL';\n\nexport interface ImageReader {\n getAvatar(userId?: string, size?: UserAvatarSize, displayName?: string): Promise<string>;\n getAvatarUrl(userId?: string, size?: UserAvatarSize): string;\n getStorageServiceAvatarUrl(userId?: string, size?: UserAvatarSize): string;\n getThumbnailUrl(imageId: string): string;\n loadThumbnail(imageId: string): Observable<string>;\n}\n\nexport const IMAGE_READER = new InjectionToken<ImageReader>('IMAGE_READER');\n\nexport const DEFAULT_IMAGE_ID = '00000000-0000-4000-0000-000000000001';\n\n/**\n * This User model includes common properties that the ui avatar components care about in order to respresent a user\n * in the UI.\n */\nexport interface User {\n id?: string;\n displayName?: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n}\n\nconst REFERENCE_SIZE_MAPPING = {\n XS: 16,\n S: 24,\n M: 32,\n L: 40,\n XL: 64\n};\n\n// We want to use 2x bigger images for avatars to support high resolution displays\n// So we want to draw them in their original size but use 2x the size as reference\nexport const AVATAR_SIZE_MAPPING = {\n XS: REFERENCE_SIZE_MAPPING.XS * 2,\n S: REFERENCE_SIZE_MAPPING.S * 2,\n M: REFERENCE_SIZE_MAPPING.M * 2,\n L: REFERENCE_SIZE_MAPPING.L * 2,\n XL: REFERENCE_SIZE_MAPPING.XL * 2\n};\n\nexport const AVATAR_COLORS: string[] = [\n '#00a399',\n '#0f7eb5',\n '#18aece',\n '#2889ff',\n '#ff914d',\n '#fad71e',\n '#fe6690',\n '#ab657a',\n '#916b50',\n '#9755cd',\n '#fc9785'\n];\n","import { AsyncPipe, NgClass, NgIf } from '@angular/common';\nimport { Component, Inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\nimport { DEFAULT_IMAGE_ID, IMAGE_READER, ImageReader, User, UserAvatarSize } from './avatar.model';\n\n@Component({\n selector: 'lx-avatar',\n templateUrl: 'avatar.component.html',\n styleUrl: 'avatar.component.scss',\n standalone: true,\n imports: [NgIf, AsyncPipe, NgClass, TooltipDirective]\n})\nexport class AvatarComponent implements OnChanges {\n @Input() user!: User & { technicalUser?: boolean };\n @Input() size: UserAvatarSize = 'M';\n @Input() showMailToLink = true;\n @Input() disabled = false;\n\n readonly NAME = 'AvatarComponent';\n\n public imageURL: Promise<string>;\n\n constructor(@Inject(IMAGE_READER) private imageReader: ImageReader) {\n this.imageURL = this.imageReader.getAvatar(DEFAULT_IMAGE_ID, this.size, this.user?.displayName);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const { user } = changes;\n\n if (user && user.currentValue && !user.currentValue.technicalUser) {\n const { id, displayName } = this.user || {};\n this.imageURL = this.imageReader.getAvatar(id ?? undefined, this.size, displayName);\n }\n }\n}\n","<ng-container *ngIf=\"imageURL | async; else loading\">\n <ng-container *ngIf=\"!user.technicalUser; else technicalUserIcon\">\n <a\n *ngIf=\"showMailToLink && user.email; else profilePicture\"\n class=\"userLink\"\n href=\"mailto:{{ user.email }}\"\n lxTooltip=\"{{ user.displayName }}\"\n >\n <img\n [src]=\"imageURL | async\"\n class=\"avatarImage\"\n [class]=\"size\"\n [class.disabled]=\"disabled\"\n role=\"presentation\"\n alt=\"{{ user.displayName }}\"\n />\n </a>\n <ng-template #profilePicture>\n <img\n [src]=\"imageURL | async\"\n class=\"avatarImage\"\n [class]=\"size\"\n [class.disabled]=\"disabled\"\n role=\"presentation\"\n alt=\"{{ user.displayName }}\"\n />\n </ng-template>\n </ng-container>\n <ng-template #technicalUserIcon>\n <i class=\"avatarImage fas fa-robot\" lxTooltip=\"{{ user.displayName }}\" [class]=\"size\" [class.disabled]=\"disabled\"></i>\n </ng-template>\n</ng-container>\n<ng-template #loading>\n <div class=\"avatarImage userLink loading\" [ngClass]=\"size\"></div>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { DisplayAvatarsPipe } from '../../pipes/display-avatars.pipe';\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { User, UserAvatarSize } from '../avatar/avatar.model';\n\n@Component({\n selector: 'lx-avatar-group',\n templateUrl: 'avatar-group.component.html',\n styleUrls: ['avatar-group.component.scss'],\n standalone: true,\n imports: [CdkOverlayOrigin, TooltipDirective, NgIf, NgFor, AvatarComponent, NgClass, CdkConnectedOverlay, DisplayAvatarsPipe]\n})\nexport class AvatarGroupComponent implements AfterViewInit, OnDestroy {\n readonly NAME = 'AvatarGroupComponent';\n\n @Input() title?: string;\n @Input() users: (User & { technicalUser?: boolean })[] = [];\n @Input() size: UserAvatarSize = 'M';\n @Input() type: 'individual' | 'group' = 'group';\n @Input() maxLength: number = 0;\n @Input() autoScale: boolean = false;\n @Input() disabledUserIds: string[] = [];\n\n @ViewChild('userGroup') userGroupElement!: ElementRef<HTMLElement>;\n\n get userNames() {\n return this.users\n .map(({ displayName }) => displayName)\n .sort()\n .join('<br>');\n }\n\n public overlayVisible = false;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n\n ngAfterViewInit(): void {\n this.resizeObserver.observe(this.userGroupElement.nativeElement);\n }\n\n resizeObserver = new ResizeObserver(() => {\n this.zone.runOutsideAngular(() => {\n this.zone.run(() => {\n this.cdr.detectChanges();\n });\n });\n });\n\n handleClick(event: Event) {\n event.stopPropagation();\n this.overlayVisible = true;\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver && this.userGroupElement) {\n this.resizeObserver.unobserve(this.userGroupElement.nativeElement);\n }\n }\n\n isUserDisabled(user: User): boolean {\n return !!user.id && this.disabledUserIds.includes(user.id);\n }\n}\n","<div\n #userGroup\n (click)=\"handleClick($event)\"\n (keydown.enter)=\"handleClick($event)\"\n (keydown.space)=\"handleClick($event)\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [lxTooltip]=\"!overlayVisible ? userNames : null\"\n [lxTooltipIsHtmlContent]=\"true\"\n tabindex=\"0\"\n role=\"button\"\n aria-haspopup=\"dialog\"\n>\n <div *ngIf=\"users | displayAvatars: type : size : userGroup.offsetWidth : autoScale : maxLength as filteredUsers\" class=\"group-container\">\n <lx-avatar\n [user]=\"user\"\n [size]=\"size\"\n [showMailToLink]=\"false\"\n [disabled]=\"isUserDisabled(user)\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n *ngFor=\"let user of filteredUsers\"\n />\n <div\n *ngIf=\"filteredUsers.length < users.length\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n class=\"more-users-icon\"\n >\n +{{ users.length - filteredUsers.length }}\n </div>\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"overlayVisible\"\n (overlayOutsideClick)=\"overlayVisible = false\"\n>\n <div class=\"avatars-overlay\">\n <div *ngIf=\"title\" class=\"avatars-overlay-title\">{{ title }}</div>\n <div class=\"avatars-list\">\n <div *ngFor=\"let user of users\" class=\"individual\">\n <lx-avatar [user]=\"user\" [size]=\"size\" [showMailToLink]=\"true\" [disabled]=\"isUserDisabled(user)\" />\n </div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n/**\n * Skeleton is a component that can be used to show a loading state of a component.\n *\n * Use skeleton loaders for pages or sections that load content progressively, like text and images. The component can\n * be used to compose various scenarios like placeholders for thumbnails, lists, and avatars. See the example\n * [patterns](?path=/docs/skeleton-patterns--docs) for more details.\n */\n@Component({\n selector: 'lx-skeleton',\n template: '',\n styleUrl: 'skeleton.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class SkeletonComponent {\n /**\n * Width of the skeleton element. Valid CSS values are supported. Default is 100% width of the parent.\n */\n @HostBinding('style.width') @Input() width?: string;\n\n /**\n * Height of the skeleton element. Valid CSS values are supported. Default is 100% height of the parent.\n */\n @HostBinding('style.height') @Input() height?: string;\n\n /**\n * Border radius of the skeleton element. Valid CSS values are supported. Default is 4px.\n */\n @HostBinding('style.border-radius') @Input() borderRadius?: string;\n\n /**\n * Color of the skeleton element. 'dark' or 'light' are supported. Default is 'light'.\n */\n @HostBinding('attr.color') @Input() color: 'dark' | 'light' = 'light';\n}\n","import { ChangeDetectionStrategy, Component, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'lx-token',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './token.component.html'\n})\nexport class TokenComponent {\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n show() {\n this.elementRef.nativeElement.style.display = 'inline-block';\n }\n\n hide() {\n this.elementRef.nativeElement.style.display = 'none';\n }\n}\n","<ng-content />\n","import { NgIf } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n DestroyRef,\n effect,\n ElementRef,\n EventEmitter,\n input,\n Output,\n QueryList,\n signal,\n ViewChild\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { combineLatest } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';\nimport { ButtonComponent } from '../../components/button/button.component';\nimport { CounterComponent } from '../../components/counter/counter.component';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\nimport { TokenComponent } from './token/token.component';\n\n/**\n * The tokenizer component (`lx-tokenizer`) is responsible for rendering a list of items into a container and hiding those that do not fit behind a placeholder. The items are represented as `lx-token`. Each `lx-token` allows to project any content into it, so anything can become a token. The tokenizer calculates how many items fit into the container (based on width), hiding those items that are overflowing and showing a overflow placeholder instead (e.g. \"+4\").\n *\n * ## Usage\n *\n * 1. Import `TokenizerComponent` & `TokenComponent` into your module or component.\n * 2. Use the component in your template. All items should be wrapped in a `lx-token` element for the tokenizer to identify the individual tokens.\n *\n * ```ts\n * import { TokenizerComponent } from '@leanix/components';\n *\n * @Component({\n * selector: 'lx-my-component',\n * standalone: true,\n * imports: [TokenizerComponent, TokenComponent],\n * template: `\n * <lx-tokenizer>\n * <lx-token>Token One</lx-token>\n * <lx-token>Token Two</lx-token>\n * </lx-tokenizer>\n * `\n * })\n * export class MyComponent {}\n * ```\n *\n * ## API\n *\n * ### Inputs\n *\n * - `active`: Can be used to activate & deactivate tokenization\n *\n * ### Outputs\n *\n * - `overflowPlaceholderClick`: Fires when the user clicks on the overflow placeholder\n *\n * ### Content projection\n *\n * - `lx-token`: All `lx-tokens` will be projected into the tokenizer\n */\n@Component({\n selector: 'lx-tokenizer',\n standalone: true,\n templateUrl: './tokenizer.component.html',\n styleUrls: ['./tokenizer.component.scss'],\n imports: [NgIf, CounterComponent, ButtonComponent, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TokenizerComponent implements AfterContentInit {\n /** @internal */\n readonly NAME = 'TokenizerComponent';\n\n protected overflowItems = signal<TokenComponent[]>([]);\n protected overflowItemCount = computed(() => this.overflowItems().length);\n protected showCounter = computed(() => this.active() && this.overflowItemCount() > 0);\n\n /** Can be used to activate & deactivate tokenization */\n active = input(true);\n private active$ = toObservable(this.active);\n private overflowStartIndex = signal<number | null>(null);\n\n /**\n * Emitted when the counter button is clicked\n * @param startIndex The index of the first overflowing element\n * @param counterElement The counter button element\n */\n @Output() overflowPlaceholderClick = new EventEmitter<{ startIndex: number; counterElement: ElementRef<HTMLElement> }>();\n\n /** @internal */\n @ContentChildren(TokenComponent) items?: QueryList<TokenComponent>;\n /** @internal */\n @ViewChild('counter', { read: ElementRef }) counter?: ElementRef<HTMLElement>;\n /** @internal */\n @ViewChild('tokensContainer', { read: ElementRef }) tokensContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private destroyRef: DestroyRef,\n private changeDetectorRef: ChangeDetectorRef,\n private resizeObserverService: ResizeObserverService\n ) {\n effect(() => {\n // Whenever the tokenizer is disabled, ensure all tokens are shown\n if (!this.active()) {\n this.items!.forEach((item) => item.show());\n }\n });\n }\n\n ngAfterContentInit() {\n const containerWidth = this.resizeObserverService.createResizeObservable(this.elementRef.nativeElement).pipe(\n map((entry) => entry.contentRect.width ?? 0),\n debounceTime(16),\n distinctUntilChanged()\n );\n const itemsChanged$ = this.items!.changes;\n\n combineLatest([\n this.active$,\n containerWidth.pipe(startWith(this.elementRef.nativeElement.getBoundingClientRect().width)),\n itemsChanged$.pipe(startWith(this.items))\n ])\n .pipe(\n filter(([active]) => active),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(([, containerWidth]) => {\n this.tokenize(containerWidth);\n });\n }\n\n /** @internal */\n onCounterClicked(): void {\n const startIndex = this.overflowStartIndex();\n if (typeof startIndex === 'number') {\n this.overflowPlaceholderClick.emit({ startIndex, counterElement: this.counter! });\n }\n }\n\n private tokenize(containerWidth: number): void {\n if (!this.items) {\n return;\n }\n\n this.items.forEach((item) => item.hide());\n this.overflowItems.set([]);\n this.changeDetectorRef.detectChanges();\n\n let index = 0;\n for (const item of this.items) {\n item.show();\n const usedWidth = this.tokensContainer.nativeElement.getBoundingClientRect().width;\n if (usedWidth > containerWidth) {\n item.hide();\n this.updateOverflowCounter(index);\n\n const usedWidthIncludingCounter = this.tokensContainer.nativeElement.getBoundingClientRect().width;\n if (usedWidthIncludingCounter > containerWidth && index >= 1) {\n const previousItem = this.items.toArray()[index - 1];\n previousItem?.hide();\n this.updateOverflowCounter(index - 1);\n }\n\n break;\n }\n index++;\n }\n }\n\n private updateOverflowCounter(index: number) {\n this.overflowStartIndex.set(index);\n\n const overflowingItems = this.items?.toArray().slice(index) ?? [];\n this.overflowItems.set(overflowingItems);\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div #tokensContainer class=\"tokensContainer\">\n <ng-content select=\"lx-token\" />\n @if (showCounter()) {\n <button\n lx-button\n class=\"counterButton\"\n mode=\"ghost\"\n (click)=\"onCounterClicked()\"\n [attr.aria-label]=\"\n NAME + (overflowItemCount() === 1 ? '.showMoreItem' : '.showMoreItems') | translate: { count: overflowItemCount() }\n \"\n >\n <lx-counter #counter aria-hidden=\"true\" [content]=\"'+' + overflowItemCount()\" color=\"gray\" />\n </button>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n effect,\n inject,\n input,\n signal,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SatPopoverComponent, SatPopoverHorizontalAlign, SatPopoverModule, SatPopoverVerticalAlign } from '@ncstate/sat-popover';\nimport { Subscription } from 'rxjs';\nimport { TokenizerComponent } from '../tokenizer.component';\n@Component({\n selector: 'lx-tokenizer-overflow-popover',\n standalone: true,\n imports: [TokenizerComponent, SatPopoverModule, NgTemplateOutlet],\n templateUrl: './tokenizer-overflow-popover.component.html',\n styleUrls: ['./tokenizer-overflow-popover.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TokenizerOverflowPopoverComponent {\n private destroyRef = inject(DestroyRef);\n private overflowClickSubscription?: Subscription;\n protected startIndex = signal<number>(0);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n @ContentChild('popoverTemplate') protected readonly popoverTemplate?: TemplateRef<unknown>;\n @ViewChild(SatPopoverComponent) protected readonly popover!: SatPopoverComponent;\n\n tokenizer = input.required<TokenizerComponent>();\n horizontalAlign = input<SatPopoverHorizontalAlign>('after');\n verticalAlign = input<SatPopoverVerticalAlign>('start');\n\n constructor() {\n effect(() => {\n this.overflowClickSubscription?.unsubscribe();\n this.overflowClickSubscription = this.tokenizer()\n .overflowPlaceholderClick.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ startIndex, counterElement }) => {\n this.startIndex.set(startIndex);\n this.popover.anchor = counterElement;\n this.popover.open();\n });\n });\n }\n\n protected closePopover(): void {\n this.popover.close();\n this.changeDetectorRef.detectChanges();\n }\n}\n","<sat-popover\n (backdropClicked)=\"closePopover()\"\n [hasBackdrop]=\"true\"\n [horizontalAlign]=\"horizontalAlign()\"\n [verticalAlign]=\"verticalAlign()\"\n openTransition=\"100ms\"\n closeTransition=\"100ms\"\n>\n @if (popoverTemplate) {\n <div\n class=\"tokenizerPopoverContentWrapper\"\n [class.before]=\"horizontalAlign() === 'before'\"\n [class.after]=\"horizontalAlign() === 'after'\"\n >\n <ng-container *ngTemplateOutlet=\"popoverTemplate; context: { $implicit: startIndex() }\" />\n </div>\n }\n</sat-popover>\n","import { AVATAR_COLORS, AVATAR_SIZE_MAPPING, UserAvatarSize } from './avatar.model';\n\n/**\n * Generates an SVG for the avatar initials\n * @param displayName The name of the user\n * @param size The size of the avatar\n * @returns A promise with the data URL of the generated SVG\n */\nexport function getInitialsUrl(displayName: string, size?: UserAvatarSize): Promise<string> {\n const twoWordsName = displayName.split(' ').slice(0, 2);\n const initials = twoWordsName.length === 1 ? `${twoWordsName[0]?.[0]}` : `${twoWordsName[0]?.[0]}${twoWordsName[1]?.[0]}`;\n const svg = generateInitialsSVG(initials.toUpperCase(), size && AVATAR_SIZE_MAPPING[size]);\n const blob = new Blob([svg], { type: 'image/svg+xml' });\n\n return blobToDataURL(blob);\n}\n\nfunction hashString(s: string): number {\n let hash = 0;\n let i = 0;\n const l = s.length;\n\n if (l > 0) while (i < l) hash = ((hash << 5) - hash + s.charCodeAt(i++)) | 0;\n return Math.abs(hash);\n}\n\nfunction getAvatarColorHex(initials: string): string | undefined {\n const tagNameHash = hashString(initials.toUpperCase());\n return AVATAR_COLORS[(tagNameHash % 11) + 1];\n}\n\nfunction generateInitialsSVG(initials: string, size: number = 24): string {\n const fontSize = (size * 40) / 100;\n const textY = (size * 63) / 100;\n\n const svgTemplate = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${size} ${size}\" width=\"${size}\" height=\"${size}\" preserveAspectRatio=\"xMidYMid meet\">\n <circle cx=\"${size / 2}\" cy=\"${size / 2}\" r=\"${size / 2}\" fill=\"${getAvatarColorHex(initials)}\"></circle>\n <text x=\"${\n size / 2\n }\" y=\"${textY}\" font-family=\"Arial\" font-size=\"${fontSize}\" text-anchor=\"middle\" fill=\"#ffffff\" style=\"user-select:none;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;\">\n ${initials}\n </text>\n </svg>`;\n\n return svgTemplate;\n}\n\nfunction blobToDataURL(blob: Blob): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (_e) => resolve(reader.result as string);\n reader.onerror = (_e) => reject(reader.error);\n reader.onabort = (_e) => reject(new Error('Read aborted'));\n reader.readAsDataURL(blob);\n });\n}\n","export interface HighlightTextSettings {\n /**\n * Whether to match case sensitively\n */\n caseSensitive?: boolean;\n /**\n * Whether to match whole words only\n */\n wordsOnly?: boolean;\n /**\n * The element to wrap highlighted terms in\n */\n element?: string;\n /**\n * The class name to apply to highlighted terms\n */\n className?: string;\n}\n\nconst defaultElement = 'span';\nconst defaultClassName = 'highlight';\n\n/**\n * Highlights all occurrences of search terms in a given element.\n * This function will recursively traverse all child nodes of the given element,\n * and apply the highlight to text nodes only.\n *\n * Replaces the 'jquery-highlight' plugin: https://github.com/knownasilya/jquery-highlight/blob/master/jquery.highlight.js\n * @param elem The element to highlight\n * @param terms The search terms to highlight - string or array of strings\n * @param settings Optional settings, @see HighlightTextSettings\n */\n\nexport function highlightText(elem: HTMLElement, terms: string | string[], settings?: HighlightTextSettings): void {\n const node = elem as Node;\n if (!isSupportedNode(node)) return;\n\n if (typeof terms === 'string') {\n terms = [terms];\n }\n\n terms = terms.map((term) => term.trim().replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&'));\n terms = terms.filter((term) => term && term.length > 0);\n if (terms.length === 0) {\n return;\n }\n\n const flag = settings?.caseSensitive ? '' : 'i';\n let pattern = '(' + terms.join('|') + ')';\n if (settings?.wordsOnly) {\n pattern = '\\\\b' + pattern + '\\\\b';\n }\n\n const regexp = new RegExp(pattern, flag);\n processNode(node, regexp, settings);\n}\n\n/**\n * Recursively process a given node\n * @param node The node to process\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction processNode(node: Node, regexp: RegExp, settings?: HighlightTextSettings): void {\n const nodeName = settings?.element || defaultElement;\n const className = settings?.className || defaultClassName;\n\n if (node.nodeType === Node.TEXT_NODE) {\n applyHightlightToTextNode(node as Text, regexp, settings);\n } else if (\n node.nodeType === Node.ELEMENT_NODE &&\n node.childNodes && // only element nodes that have children\n !/(script|style)/i.test(node.nodeName) && // ignore script and style nodes\n !(node.nodeName === nodeName.toUpperCase() && (node as Element).className === className) // ignore already highlighted nodes\n ) {\n node.childNodes.forEach((childNode) => {\n processNode(childNode, regexp, settings);\n });\n }\n}\n\n/**\n * Apply highlight to a given text node\n * @param node The text node to apply highlight to\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction applyHightlightToTextNode(node: Text, regexp: RegExp, settings?: HighlightTextSettings) {\n const match = node.data.match(regexp);\n if (!match || typeof match.index === 'undefined') return;\n\n const wrapper = document.createElement(settings?.element || defaultElement);\n wrapper.classList.add(settings?.className || defaultClassName);\n\n const wordNode = node.splitText(match.index);\n const nextNode = wordNode.splitText(match[0].length);\n const wordClone = wordNode.cloneNode(true);\n wrapper.appendChild(wordClone);\n node.parentNode?.replaceChild(wrapper, wordNode);\n\n if (match.length > 1) {\n // recursively apply highlightText if there are multiple matches in the same text node\n processNode(nextNode, regexp, settings);\n }\n}\n\nfunction isSupportedNode(node: Node): boolean {\n return node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE';\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, HostBinding, Input, TemplateRef } from '@angular/core';\nimport { HighlightTermPipe } from '../../../core-ui/pipes/highlight-term.pipe';\n\n@Component({\n selector: 'lx-basic-dropdown-item',\n templateUrl: 'basic-dropdown-item.component.html',\n styleUrls: ['basic-dropdown-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, NgIf, HighlightTermPipe]\n})\nexport class BasicDropdownItemComponent {\n @Input() label!: string;\n @Input() description?: string;\n @Input() highlightTerm?: string;\n @Input() labelFontWeight: 'bold' | 'normal' = 'bold';\n @Input() descriptionFontStyle: 'italic' | 'normal' = 'normal';\n @Input() descriptionStyleOptions?: { maxLines?: number; shouldHighlightTerm?: boolean };\n @ContentChild('optionLabelSuffix') optionLabelSuffix!: TemplateRef<any>;\n\n @HostBinding('class.hasDescription')\n get hasDescription() {\n return !!this.description;\n }\n}\n","@if (optionLabelSuffix) {\n <div [class.boldLabel]=\"labelFontWeight === 'bold'\" class=\"optionLabel\">\n <div [innerHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n <ng-content [select]=\"optionLabelSuffix\" />\n </div>\n} @else {\n <div [class.boldLabel]=\"labelFontWeight === 'bold'\" [innerHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n}\n<div\n class=\"optionDescription\"\n [style.font-style]=\"descriptionFontStyle\"\n [ngClass]=\"{ maxTextLines: descriptionStyleOptions?.maxLines }\"\n [style.-webkit-line-clamp]=\"descriptionStyleOptions?.maxLines || 'inherit'\"\n [innerHtml]=\"description | lxHighlightTerm: (descriptionStyleOptions?.shouldHighlightTerm ? highlightTerm : undefined)\"\n></div>\n","/**\n * Schedule and wait for another ZoneJS microTask.\n * This should be preferred over setTimeout(), which\n * schedules a macroTask & thus triggers full tree change detection.\n */\nexport function executeOnNextTick(fn: Function) {\n Promise.resolve(null).then(() => fn());\n}\n\nexport function getCssVariable(cssVariableName: string) {\n return getComputedStyle(document.documentElement).getPropertyValue(cssVariableName);\n}\n\nexport function scrollTop(container: HTMLElement, item: HTMLElement) {\n if (container && item) {\n const scrollDownNeeded = item.offsetTop + item.clientHeight > container.clientHeight;\n const scrollTopNeeded = item.offsetTop - item.clientHeight < container.scrollTop;\n if (scrollDownNeeded || scrollTopNeeded) {\n container.scrollTop = item.offsetTop - container.offsetTop;\n }\n } else {\n console.warn(\"Item or Container undefined, scrolling wasn't done.\");\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { scrollTop } from '../../shared/misc-helpers';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\n@Directive({\n selector: '[lxSelectableItem]',\n standalone: true\n})\nexport class SelectableItemDirective implements OnDestroy, DropdownItem {\n @Input() scrollInContainer!: HTMLElement;\n @Input() lxSelectableItem: any;\n\n @Output() select = new EventEmitter();\n\n get item() {\n return this.lxSelectableItem;\n }\n\n constructor(public readonly element: ElementRef<HTMLElement>) {}\n\n ngOnDestroy() {}\n\n scrollToItem() {\n if (this.scrollInContainer && this.element.nativeElement) {\n scrollTop(this.scrollInContainer, this.element.nativeElement);\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, combineLatest } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, startWith, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../directives/selectable-item.directive';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\nexport enum KeyboardSelectAction {\n PREV = 'PREV',\n NEXT = 'NEXT',\n FIRST = 'FIRST',\n LAST = 'LAST',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n EXECUTE = 'EXECUTE',\n UNSELECT = 'UNSELECT',\n CLOSE = 'CLOSE'\n}\n\n@Directive()\nexport class KeyboardSelectDirective implements OnDestroy, AfterViewInit {\n /** @internal */\n cdkOverlayOpenState = new ReplaySubject<boolean>(1);\n /** @internal */\n cdkOverlayOpen$ = this.cdkOverlayOpenState.asObservable().pipe(startWith(false), distinctUntilChanged());\n /** @internal */\n overlayPositioning: boolean = false;\n @Input() keyboardSelectAction = new Observable<KeyboardSelectAction | null>();\n @Output() selectedItemIndexChange = new EventEmitter<number>(true); // TODO: this is just index change from navigating (highlighting)\n\n /** @internal */\n @ViewChildren(SelectableItemDirective) _items!: QueryList<DropdownItem>;\n\n /** @internal */\n @ViewChild('keyboardSelectContainer', { static: true }) keyboardSelectContainer!: ElementRef<HTMLElement>;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n get selectedItem$(): Observable<any> {\n return this.selectedItemSubject$.asObservable();\n }\n\n // Beware: If the list of items is empty, there might not come a -1 because Angular only updates the ViewChildren lazily.\n private readonly selectedItemIndex$ = new BehaviorSubject<number>(-1);\n private readonly selectedItemSubject$ = new BehaviorSubject<DropdownItem | null>(null);\n\n /** @internal */\n public select(index: number) {\n this.selectedItemIndex$.next(index);\n }\n\n ngAfterViewInit(): void {\n const itemsChanges$ = this._items.changes.pipe(startWith(this._items));\n\n this.keyboardSelectAction\n .pipe(\n filter((action): action is KeyboardSelectAction => !!action),\n withLatestFrom(this.selectedItemIndex$, itemsChanges$),\n takeUntil(this.destroyed$)\n )\n .subscribe(([action, index, items]) => this.adaptSelectedIndexBasedOnKeyboardSelectAction(action, index, items));\n\n this.keyboardSelectAction\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.selectedItem$, (_, item) => item),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.select?.emit());\n\n this.selectedItemIndex$.pipe(takeUntil(this.destroyed$)).subscribe((index) => {\n this.selectedItemIndexChange.emit(index);\n });\n\n combineLatest([itemsChanges$, this.selectedItemIndex$])\n .pipe(\n delay(0),\n map(([items, index]: [QueryList<DropdownItem>, number]) => {\n if (index > -1) {\n return items.toArray()[index] ?? null;\n } else {\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectedItemSubject$);\n\n this.selectedItem$\n .pipe(\n filter((item) => !!item),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.scrollToItem());\n }\n\n /** @internal */\n public isItemSelected(item: HTMLElement, selectedItem: ElementRef<HTMLElement>) {\n return selectedItem && item === selectedItem.nativeElement;\n }\n\n private adaptSelectedIndexBasedOnKeyboardSelectAction(\n keyboardSelectAction: KeyboardSelectAction,\n currentIndex: number,\n items: QueryList<DropdownItem>\n ) {\n if (keyboardSelectAction === KeyboardSelectAction.PREV) {\n this.selectedItemIndex$.next(this.prev(currentIndex));\n } else if (keyboardSelectAction === KeyboardSelectAction.NEXT) {\n this.selectedItemIndex$.next(this.next(currentIndex, items));\n } else if (keyboardSelectAction === KeyboardSelectAction.LAST) {\n this.selectedItemIndex$.next(this.last(items));\n } else if (keyboardSelectAction === KeyboardSelectAction.FIRST) {\n this.selectedItemIndex$.next(0);\n } else if (keyboardSelectAction === KeyboardSelectAction.UNSELECT) {\n this.selectedItemIndex$.next(-1);\n }\n }\n\n private prev(index: number): number {\n if (index > -1) {\n return index - 1;\n } else {\n return index;\n }\n }\n\n private next(index: number, items: QueryList<DropdownItem>): number {\n if (items.length - 1 > index) {\n return index + 1;\n } else {\n return index;\n }\n }\n\n private last(items: QueryList<DropdownItem>): number {\n return items.length - 1;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { isEqual, some, toLower } from 'lodash/fp';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { CounterComponent } from '../../../core-ui/components/counter/counter.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-basic-dropdown',\n templateUrl: 'basic-dropdown.component.html',\n styleUrls: ['basic-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => BasicDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n InfiniteScrollModule,\n SelectableItemDirective,\n CounterComponent,\n NgFor,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class BasicDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n public static isNewItem(items: any[], term: string, key?: string): boolean {\n if (!term) {\n return false;\n }\n const isEqualIgnoringCase = (item: any) => {\n const value = key ? item[key] : item;\n return isEqual(toLower(value), toLower(term));\n };\n return !some(isEqualIgnoringCase, items);\n }\n\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n @Input() initiallySelectedIndex = -1;\n @Input() labelKey?: string;\n @Input() itemKey?: string;\n @Input() placeholder?: string;\n @Input() loading: boolean = false;\n @Input() newOptionLabel!: string;\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() showCreateNewOption = false;\n\n @Input() disabledOptions: { [itemKey: string]: any } = {};\n @Input() override overlayPositioning = false;\n @Input() truncateOptions = false;\n @Input() noResultsText?: string;\n\n @Output() onItemSelected = new EventEmitter<any>();\n @Output() triggerRequestForMoreEntries = new EventEmitter<void>();\n @Output() newOptionLabelSelected = new EventEmitter<string>();\n @Output() createNewOptionSelected = new EventEmitter<void>();\n\n @ContentChild('optionTemplate') optionTemplateRef!: TemplateRef<any>;\n @ContentChild('createNewOptionTemplate') createNewOptionTemplateRef!: TemplateRef<any>;\n @ContentChild('descriptionTemplateRef') descriptionTemplateRef!: TemplateRef<any>;\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n isTopDropdown = false;\n\n constructor() {\n super();\n }\n\n selectOption(option: any) {\n const isDisabledOption = option\n ? Object.entries(this.disabledOptions || {}).length > 0 &&\n ((this.itemKey && this.disabledOptions[option[this.itemKey]]) || this.disabledOptions[option])\n : false;\n\n if (!option || !isDisabledOption) {\n this.onItemSelected.emit(option);\n }\n }\n\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n\n public get isNewItem() {\n return BasicDropdownComponent.isNewItem(this.options, this.newOptionLabel, this.labelKey);\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n\n public onScroll() {\n this.triggerRequestForMoreEntries.emit();\n }\n\n public onNewItemSelected() {\n if (!this.loading) {\n this.selectOption(null);\n this.newOptionLabelSelected.emit(this.newOptionLabel);\n }\n }\n\n public onCreateNewOptionSelected() {\n this.createNewOptionSelected.emit();\n }\n}\n","<ng-container [ngTemplateOutlet]=\"dropdown\" *ngIf=\"!overlayPositioning\" />\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\" />\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <ul\n class=\"options {{ padding }}Padding lxThinScrollbar\"\n #keyboardSelectContainer\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n [ngClass]=\"{ truncateOptions: truncateOptions }\"\n (scrolled)=\"onScroll()\"\n >\n <li\n *ngIf=\"newOptionLabel && isNewItem\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onNewItemSelected()\"\n (select)=\"onNewItemSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable onTheFlyOption\"\n [attr.aria-label]=\"newOptionLabel\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-counter class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\" />\n </li>\n <li\n *ngIf=\"showCreateNewOption\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOptionSelected()\"\n (select)=\"onCreateNewOptionSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable newEntryOption\"\n >\n <span class=\"newEntryContent\">\n <ng-container *ngIf=\"createNewOptionTemplateRef; else defaultNewOption\">\n <ng-container *ngTemplateOutlet=\"createNewOptionTemplateRef\" />\n </ng-container>\n <ng-template #defaultNewOption>\n <span>\n {{ NAME + '.new' | translate }}\n </span>\n </ng-template>\n </span>\n </li>\n <li\n *ngIf=\"descriptionTemplateRef\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option disabledItem description\"\n >\n <span class=\"descriptionContent\">\n <ng-container *ngTemplateOutlet=\"descriptionTemplateRef\" />\n </span>\n </li>\n <li\n *ngIf=\"options?.length === 0 && !newOptionLabel && !loading\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable noOptionsAvailable\"\n [attr.aria-label]=\"noResultsText ?? (NAME + '.noResults' | translate)\"\n >\n {{ noResultsText ?? (NAME + '.noResults' | translate) }}\n </li>\n <li\n *ngIf=\"placeholder\"\n tabindex=\"-1\"\n class=\"option keyboardSelectable clearSelection\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"selectOption(null)\"\n (select)=\"selectOption(null)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [attr.aria-label]=\"placeholder\"\n >\n {{ placeholder }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index; trackBy: trackByProp(itemKey)\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [class.initiallySelected]=\"index === initiallySelectedIndex\"\n [class.disabledItem]=\"(itemKey && !!disabledOptions[option[itemKey]]) || this.disabledOptions[option]\"\n [attr.aria-label]=\"labelKey ? option[labelKey] : option\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else simpleStringDisplay\">\n <ng-container *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index }\" />\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span>\n {{ labelKey ? option[labelKey] : option }}\n </span>\n </ng-template>\n </li>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\" />\n </ul>\n</ng-template>\n","// We can only use 'keyCode' because 'key' depends on the browser\nexport const BACKSPACE = 8;\nexport const TAB = 9;\nexport const ARROW_DOWN = 40;\nexport const ARROW_UP = 38;\nexport const ARROW_LEFT = 37;\nexport const ARROW_RIGHT = 39;\nexport const ENTER = 13;\nexport const ESCAPE = 27;\nexport const SPACE = 32;\nexport const HOME = 36;\nexport const END = 35;\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, ENTER, ESCAPE, HOME, TAB } from '../helpers/key-codes.constants';\n\n@Directive({\n exportAs: 'keyboardActionSource',\n selector: '[lxKeyboardActionSource]',\n standalone: true\n})\nexport class KeyboardActionSourceDirective implements OnDestroy {\n public dontEmit = false;\n\n readonly destroyed$ = new Subject<void>();\n\n public keyboardActions$ = fromEvent<KeyboardEvent>(this.element.nativeElement, 'keydown').pipe(\n filter((_event) => !this.dontEmit),\n map((event) => {\n switch (event.keyCode) {\n case ARROW_UP:\n event.preventDefault();\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n event.preventDefault();\n return KeyboardSelectAction.NEXT;\n case ARROW_LEFT:\n event.preventDefault();\n return KeyboardSelectAction.LEFT;\n case ARROW_RIGHT:\n event.preventDefault();\n return KeyboardSelectAction.RIGHT;\n case HOME:\n event.preventDefault();\n return KeyboardSelectAction.FIRST;\n case END:\n event.preventDefault();\n return KeyboardSelectAction.LAST;\n case ENTER:\n event.preventDefault();\n return KeyboardSelectAction.EXECUTE;\n case ESCAPE:\n case TAB:\n return KeyboardSelectAction.CLOSE;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n );\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n blur() {\n this.element.nativeElement.blur();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n nativeElement(): HTMLElement {\n return this.element?.nativeElement;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lx-option-group',\n templateUrl: 'option-group.component.html',\n styleUrls: ['option-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class OptionGroupComponent {\n /**\n * Is true when option children have a selected state.\n * In this case we want to align the padding of the group label with the lx-options'.\n */\n @Input() hasSelectedState: boolean = true;\n\n @Input() label!: string;\n\n @Output() select = new EventEmitter();\n\n selectOption(value: any) {\n this.select.emit(value);\n }\n}\n","<li>\n <span *ngIf=\"label\" class=\"groupLabel\" [class.selectedState]=\"hasSelectedState\">{{ label }}</span>\n <ul>\n <ng-content />\n </ul>\n</li>\n","import { NgIf, NgSwitch, NgSwitchCase } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, forwardRef } from '@angular/core';\nimport { uniqueId } from 'lodash-es';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\n\n@Component({\n selector: 'lx-option',\n templateUrl: 'option.component.html',\n styleUrls: ['option.component.scss'],\n standalone: true,\n imports: [NgIf, NgSwitch, NgSwitchCase]\n})\nexport class OptionComponent {\n @Input() selected: boolean = false;\n @Input() isHighlighted: boolean = false;\n @Input() disabled: boolean = false;\n @Input() value: any;\n /**\n * Is true when option has a selection nature like sorting.\n * In this case we show a check icon on the left to indicate selection.\n *\n * Is false when option represents a one time action like printing.\n * Cannot have selectedState when Option has dropdown\n */\n @Input() hasSelectedState: boolean = true;\n @Input() selectIcon: 'check' | 'circle' = 'check';\n\n @Output() select = new EventEmitter();\n @Output() highlight = new EventEmitter<boolean>();\n @Output() selectedClick = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n @ViewChild('option') option?: ElementRef<HTMLElement>;\n\n hasSubdropdown: boolean = false;\n isSuboption: boolean = false;\n readonly optionId: string;\n\n @HostListener('click', ['$event'])\n selectOption(event?: MouseEvent) {\n if (this.disabled || this.hasSubdropdown) {\n if (event) {\n event.stopImmediatePropagation();\n }\n } else {\n if (this.selected) {\n return this.selectedClick.emit();\n }\n if (this.group) {\n this.group.selectOption(this.value);\n }\n this.select.emit(this.value);\n }\n }\n\n constructor(\n @Optional() @Inject(forwardRef(() => OptionGroupComponent)) private group: OptionGroupComponent,\n public elementRef: ElementRef<HTMLElement>\n ) {\n this.optionId = uniqueId('option');\n }\n\n setSelected(value: boolean) {\n this.selected = value;\n }\n\n setHighlighted(value: boolean) {\n this.isHighlighted = value;\n this.highlight.emit(this.isHighlighted);\n if (value) {\n this.option?.nativeElement?.focus();\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n event.preventDefault();\n this.keyDownAction.emit(event);\n }\n}\n","<li\n #option\n class=\"option\"\n role=\"option\"\n tabindex=\"-1\"\n [attr.id]=\"optionId\"\n [attr.aria-selected]=\"selected\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\n (keydown)=\"handleKeyDown($event)\"\n>\n <ng-container *ngIf=\"hasSelectedState\">\n <ng-container [ngSwitch]=\"selectIcon\">\n <ng-container *ngSwitchCase=\"'check'\">\n <i *ngIf=\"selected\" class=\"far fa-check\"></i>\n </ng-container>\n <ng-container *ngSwitchCase=\"'circle'\">\n <i class=\"fal fa-circle\"></i>\n <i *ngIf=\"selected\" class=\"fas fa-circle\"></i>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-content />\n <i *ngIf=\"hasSubdropdown\" class=\"far fa-chevron-right\"></i>\n</li>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { BehaviorSubject, Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { TooltipDirective } from '../../../core-ui/tooltip/tooltip.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-dropdown',\n templateUrl: 'cdk-options-dropdown.component.html',\n styleUrls: ['cdk-options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay]\n})\nexport class CdkOptionsDropdownComponent implements AfterViewInit, OnDestroy {\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n }\n this.reloadOverlayPosition(this.open);\n }\n get open() {\n return this._open;\n }\n\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\n\n @ContentChildren(TooltipDirective, { descendants: true })\n tooltips!: QueryList<TooltipDirective>;\n\n get options() {\n return this._options.toArray();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n\n private readonly destroyed$ = new Subject<void>();\n\n isPositionComputed = true;\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE))\n .subscribe(() => this.closeDropdown());\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n closeDropdown() {\n this.tooltips.toArray().forEach((tooltip) => tooltip.hide());\n this.open = false;\n }\n\n private setInitialHighlightingIndex() {\n const firstAvailableIndex = this.options.map((option) => !this.optionIsHighlightable(option)).indexOf(false, 0);\n this.highlightedOptionIndex$.next(firstAvailableIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]?.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n private reloadOverlayPosition(open: boolean) {\n if (open) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n this.overlay.overlayRef.updatePosition();\n\n this.isPositionComputed = true;\n this.changeDetection.markForCheck();\n }, 0);\n } else {\n this.changeDetection.markForCheck();\n }\n }\n}\n","<div (click)=\"open = !open\" class=\"triggerContainer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[lxKeyboardActionSource]\" />\n</div>\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open\"\n (overlayOutsideClick)=\"closeDropdown()\"\n>\n <ul\n #dropdown\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n [style.visibility]=\"isPositionComputed ? null : 'hidden'\"\n >\n <ng-content />\n </ul>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { CdkOptionsDropdownComponent } from '../cdk-options-dropdown/cdk-options-dropdown.component';\nimport { OptionComponent } from '../option/option.component';\n\nexport interface Breadcrumb {\n label: string;\n ellipsed?: boolean;\n onClick?: (breadcrumb: Breadcrumb) => void;\n}\n\ninterface EllipsedBreadcrumb {\n breadcrumbs: Breadcrumb[];\n}\n\ntype ViewBreadcrumb = Breadcrumb | EllipsedBreadcrumb;\n\n/**\n * Breadcrumb component is used to show a list of labels, usually to show the path of user's navigation.\n */\n@Component({\n selector: 'lx-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n standalone: true,\n imports: [CommonModule, CdkOptionsDropdownComponent, KeyboardActionSourceDirective, OptionComponent]\n})\nexport class BreadcrumbComponent implements OnChanges {\n /**\n * Breadcrumbs array to build the component.\n */\n @Input() breadcrumbs: Breadcrumb[] = [];\n\n /** @internal */\n viewBreadcrumbs: ViewBreadcrumb[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['breadcrumbs']) {\n this.viewBreadcrumbs = this.breadcrumbs.reduce((viewBreadcrumbs, breadcrumb) => {\n if (!breadcrumb.ellipsed) {\n // Append normal breadcrumbs to the end of view breadcrumb array\n viewBreadcrumbs.push(breadcrumb);\n } else {\n // Reduce consecutive ellipsed breadcrumbs into one entry and show dropdown of these\n const lastBreadcrumb = viewBreadcrumbs[viewBreadcrumbs.length - 1];\n if (lastBreadcrumb && this.isEllipsedBreadcrumb(lastBreadcrumb)) {\n lastBreadcrumb.breadcrumbs.push(breadcrumb);\n } else {\n viewBreadcrumbs.push({\n breadcrumbs: [breadcrumb]\n });\n }\n }\n return viewBreadcrumbs;\n }, [] as ViewBreadcrumb[]);\n }\n }\n\n /** @internal */\n isEllipsedBreadcrumb(breadcrumb: ViewBreadcrumb): breadcrumb is EllipsedBreadcrumb {\n return !!(breadcrumb as EllipsedBreadcrumb).breadcrumbs;\n }\n}\n","@for (breadcrumb of viewBreadcrumbs; track $index; let last = $last) {\n @if (isEllipsedBreadcrumb(breadcrumb)) {\n <lx-cdk-options-dropdown [align]=\"'right'\" class=\"dropdownContainer\">\n <button class=\"step clickable\" lxKeyboardActionSource>...</button>\n @for (ellipsedBreadcrumbs of breadcrumb.breadcrumbs; track $index) {\n <lx-option [hasSelectedState]=\"false\" (select)=\"ellipsedBreadcrumbs.onClick?.(ellipsedBreadcrumbs)\">\n {{ ellipsedBreadcrumbs.label }}\n </lx-option>\n }\n </lx-cdk-options-dropdown>\n } @else {\n <button class=\"step\" [disabled]=\"!breadcrumb.onClick\" (click)=\"breadcrumb.onClick?.(breadcrumb)\">\n {{ breadcrumb.label }}\n </button>\n }\n\n @if (!last) {\n <i class=\"fa fa-angle-right\" aria-hidden=\"true\"></i>\n }\n}\n","import { CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'top',\n offsetX: -4\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'top',\n offsetX: 4\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: -4\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: 4\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-sub-dropdown',\n templateUrl: 'cdk-options-sub-dropdown.component.html',\n styleUrls: ['cdk-options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [CdkConnectedOverlay, AutocloseDirective]\n})\nexport class CdkOptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n open = false;\n isPositionComputed = true;\n\n private mouseInside$ = new Subject<boolean>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n });\n\n merge(this.showByMouse(), this.showByKeyboard())\n .pipe(takeUntil(this.destroyed$), distinctUntilChanged())\n .subscribe((show) => {\n this.open = show;\n this.reloadOverlayPosition(this.open);\n });\n\n this.options.changes\n .pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.select), ...this.options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n });\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const hideOnLeaveMouse$ = mouseLeaveTrigger$.pipe(map(() => false));\n\n // react to trigger mouse leave events, and mouse enter events in the sub-dropdown. We'll use a 300ms\n // debounce, so that while navigating from the trigger to the sub-dropdown, all the intermediate events\n // are ignored.\n const showSubdropdown$ = merge(hideOnLeaveMouse$, this.mouseInside$).pipe(debounceTime(300));\n\n const showOnEnterSubdropdown$ = mouseEnterTrigger$.pipe(switchMap(() => showSubdropdown$));\n\n return merge(showOnEnterMouse$, showOnEnterSubdropdown$);\n }\n\n private reloadOverlayPosition(open: boolean) {\n // force a rendering so that the dropdown container's dimensions are computed.\n this.changeDetection.markForCheck();\n if (open && this.dropdownContainer) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n\n this.overlay.overlayRef.updatePosition();\n this.isPositionComputed = true;\n }, 0);\n }\n }\n\n closeDropdown() {\n this.open = false;\n this.mouseInside$.next(false);\n }\n}\n","<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger.elementRef\" [cdkConnectedOverlayOpen]=\"open\">\n <ul\n (mouseenter)=\"mouseenter()\"\n (mouseleave)=\"mouseleave()\"\n class=\"sub-dropdown\"\n [style.visibility]=\"isPositionComputed ? '' : 'hidden'\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n #dropdown\n >\n <ng-content />\n </ul>\n</ng-template>\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { getCssVariable } from '../../shared/misc-helpers';\nimport { Observe } from '../../shared/observe';\n\n@Directive({\n selector: '[lxMarkInvalid]',\n standalone: true\n})\nexport class MarkInvalidDirective implements OnInit, OnDestroy {\n @Input() lxMarkInvalid: boolean = false;\n @Observe('lxMarkInvalid') lxMarkInvalid$!: Observable<boolean>;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.lxMarkInvalid$.pipe(takeUntil(this.destroyed$)).subscribe((invalid) => {\n const border = invalid ? `1px solid ${getCssVariable('--lx-color-danger')}` : '';\n this.renderer.setStyle(this.element.nativeElement, 'border', border);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","// Currency symbol map extracted from: http://symbologic.info/currency.htm\n// Using custom symbology since Angular 2 currency pipe does not support all currency symbols:\n// https://github.com/angular/angular/issues/6724\nexport const CURRENCY_SYMBOL_MAP: { [key: string]: string } = {\n AFA: '؋',\n AWG: 'ƒ',\n AUD: 'AU$',\n ARS: 'ARS',\n AZN: 'ман',\n BSD: 'B$',\n BDT: '৳',\n BBD: 'Bds$',\n BYR: 'Br',\n BOB: 'Bs.',\n BRL: 'R$',\n GBP: '£',\n BGN: 'лв',\n KHR: '៛',\n CAD: 'CA$',\n KYD: 'KY$',\n CLP: '$',\n CNY: 'CN¥',\n COP: 'COP',\n CRC: '₡',\n HRK: 'kn',\n CPY: 'CPY',\n CZK: 'Kč',\n DKK: 'DKK',\n DOP: 'RD$',\n XCD: 'EC$',\n EGP: 'E£',\n ERN: 'Nfa',\n EEK: 'EEK',\n EUR: '€',\n GEL: 'ლ',\n GHC: 'GHC',\n GIP: 'GIP',\n GTQ: 'Q',\n HNL: 'L',\n HKD: 'HK$',\n HUF: 'Ft',\n ISK: 'ISK',\n INR: '₹',\n IDR: 'Rp',\n ILS: '₪',\n JMD: 'J$',\n JPY: '¥',\n KZT: '₸',\n KES: 'KSh',\n KWD: 'د.ك',\n LVL: 'Ls',\n LBP: 'L£',\n LTL: 'Lt',\n MOP: 'P',\n MKD: 'ден',\n MGA: 'Ar',\n MYR: 'RM',\n BAM: 'KM',\n MUR: 'Ɍs',\n MXN: 'MX$',\n MZM: 'MT',\n NPR: 'NɌs',\n ANG: 'ƒ',\n TWD: 'NT$',\n NZD: 'NZ$',\n NIO: 'C$',\n NGN: '₦',\n KPW: '₩',\n NOK: 'NOK',\n OMR: 'ر.ع.',\n PKR: 'Ɍs',\n PYG: '₲',\n PEN: 'S/.',\n PHP: '₱',\n QAR: 'ر.ق',\n RON: 'L',\n RUB: 'руб',\n SAR: 'ر.س',\n CSD: 'CSD',\n SCR: 'Ɍs',\n SGD: 'S$',\n SKK: 'SKK',\n SIT: 'SIT',\n ZAR: 'R',\n KRW: 'KRW',\n LKR: 'Ɍs',\n SRD: '$',\n SEK: 'SEK',\n CHF: 'CHF',\n TZS: 'TSh',\n THB: '฿',\n TTD: 'TT$',\n TRY: 'TL',\n AED: 'د.إ',\n USD: '$',\n UGX: 'USh',\n UAH: '₴',\n UYU: '$U',\n UZS: 'лв',\n VEB: 'VEB',\n VND: '₫',\n AMK: 'AMK',\n ZWD: 'ZWD'\n};\n","import { AsyncPipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { CURRENCY_SYMBOL_MAP } from './currency-symbol-map.constant';\n\n@Component({\n selector: 'lx-currency-symbol',\n templateUrl: 'currency-symbol.component.html',\n standalone: true,\n imports: [AsyncPipe]\n})\nexport class CurrencySymbolComponent implements OnInit {\n @Input() code!: string | null;\n @Observe('code') code$!: Observable<string>;\n currency$!: Observable<string>;\n\n ngOnInit() {\n this.currency$ = this.code$.pipe(map((code) => CURRENCY_SYMBOL_MAP[code] || code));\n }\n}\n","<span [innerHtml]=\"currency$ | async\"></span>\n","import { AsyncPipe, DecimalPipe, NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, ReplaySubject, Subject, fromEvent } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { CurrencySymbolComponent } from './currency-symbol.component';\n\nexport type CurrencyInputMode = 'view' | 'edit';\nexport type CurrencyIconPosition = 'first' | 'end' | 'none';\n\nexport type DecimalSeparator = ',' | '.';\n\n@Component({\n selector: 'lx-currency-input',\n templateUrl: 'currency-input.component.html',\n styleUrls: ['currency-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CurrencyInputComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, CurrencySymbolComponent, MarkInvalidDirective, FormsModule, AsyncPipe, DecimalPipe]\n})\nexport class CurrencyInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor, OnInit {\n @Input() public code!: string | null;\n @Input() public decimalSeparator: DecimalSeparator = '.';\n @Input() public placeholder!: string;\n @Input() public data: number = 0;\n @Input() public inputId?: string;\n /** @internal */\n @Observe<number>('data') data$!: Observable<number>;\n\n @Input() public disabled: boolean = false;\n @Input() public mode: CurrencyInputMode = 'edit';\n @Input() public fieldDefinitionType!: 'DOUBLE' | 'INTEGER';\n @Input() public iconPosition: CurrencyIconPosition = 'first';\n @Input() public format: string = '1.2-2';\n @Input() markInvalid = false;\n\n @Output() public onFocusLost = new EventEmitter<boolean>();\n @Output() public onChange = new EventEmitter<number>();\n\n /** @internal */\n @ViewChild('currencyInput') private currencyInput!: ElementRef<HTMLInputElement>;\n /** @internal */\n showCurrencyInput: boolean = false;\n /** @internal */\n dataValue$ = new ReplaySubject<number>();\n\n private get allowedCharacters() {\n return this.fieldDefinitionType === 'DOUBLE' ? new RegExp(`[0-9\\e\\\\${this.decimalSeparator}\\]`) : /[0-9\\e\\\\]/;\n }\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.data$.pipe(takeUntil(this.destroyed$)).subscribe(this.dataValue$);\n }\n\n ngAfterViewInit() {\n if (this.currencyInput) {\n fromEvent<KeyboardEvent>(this.currencyInput.nativeElement, 'keypress')\n .pipe(\n filter((keyboardEvent) => this.shouldRejectKey(keyboardEvent)),\n takeUntil(this.destroyed$)\n )\n .subscribe((keyboardEvent) => {\n keyboardEvent.preventDefault();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n valueChanged(value: string | number) {\n if (typeof value === 'string') {\n const invalidSeparator = this.decimalSeparator === '.' ? ',' : '.';\n value = this.parseInput(value, invalidSeparator) as number;\n }\n // fix copy & paste string values being interpreted wrongly\n this.dataValue$.next(value);\n this.onChange.emit(value);\n this.propagateChange(value);\n }\n\n /** @internal */\n onBlur() {\n this.showCurrencyInput = false;\n this.onFocusLost.emit(true);\n }\n\n /** @internal */\n focusCurrencyInput() {\n this.showCurrencyInput = true;\n this.changeDetector.detectChanges();\n this.currencyInput.nativeElement.focus();\n this.currencyInput.nativeElement.setSelectionRange(0, 0);\n }\n\n /** @internal */\n shouldRejectKey(event: KeyboardEvent) {\n if (this.fieldDefinitionType === 'DOUBLE' && event.key === this.decimalSeparator) {\n return this.containsSeparators(this.currencyInput.nativeElement.value);\n }\n return !this.allowedCharacters.test(event.key);\n }\n\n /** @internal */\n propagateChange(_newValue: number) {}\n\n /** @internal */\n writeValue(newValue: number) {\n this.dataValue$.next(newValue);\n }\n /** @internal */\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /** @internal */\n registerOnTouched(_fn: any) {}\n\n /** @internal */\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n\n private parseInput(value: string, char: string) {\n const countOccurences = value.split(char).length - 1;\n if (countOccurences > 1) {\n for (let i = 0; i < countOccurences; i++) {\n value = value.replace(char, '');\n }\n }\n const parsedValue = parseFloat(value.replace(',', '.').replace(/ /g, ''));\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n private containsSeparators(value: string) {\n return value.indexOf(',') > -1 || value.indexOf('.') > -1;\n }\n}\n","<div *ngIf=\"mode === 'edit'\" class=\"container input-group\">\n <div *ngIf=\"iconPosition === 'first'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\" />\n </div>\n <input\n [attr.disabled]=\"disabled ? true : null\"\n *ngIf=\"!showCurrencyInput\"\n type=\"text\"\n class=\"form-control currencyDisplayValue\"\n placeholder=\"{{ placeholder }}\"\n [lxMarkInvalid]=\"markInvalid\"\n [value]=\"dataValue$ | async | number: format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\n autocomplete=\"off\"\n [attr.disabled]=\"disabled ? true : null\"\n [class.hideInput]=\"!showCurrencyInput\"\n type=\"text\"\n inputmode=\"numeric\"\n class=\"form-control currencyInput\"\n name=\"inputAmount\"\n [attr.id]=\"inputId\"\n #currencyInput\n placeholder=\"{{ placeholder }}\"\n [ngModel]=\"dataValue$ | async\"\n (blur)=\"onBlur()\"\n (ngModelChange)=\"valueChanged($event)\"\n />\n <div *ngIf=\"iconPosition === 'end'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\" />\n </div>\n</div>\n<span *ngIf=\"mode === 'view'\" [class.placeholder]=\"(dataValue$ | async) === null && placeholder\">\n <!-- Not using Angular 2 currency pipe since a lot of currency symbols are missing: https://github.com/angular/angular/issues/6724 -->\n <lx-currency-symbol *ngIf=\"iconPosition === 'first'\" [code]=\"code\" />\n {{ (dataValue$ | async | number: format) || placeholder }}\n <lx-currency-symbol *ngIf=\"iconPosition === 'end'\" [code]=\"code\" />\n</span>\n","import { isNaN as _isNaN, toString as _toString, padCharsStart, toNumber } from 'lodash/fp';\n\n/**\n * Converts a date into a string with format YYYY-MM-dd for the\n * users current timezone.\n */\nexport function convertDateToLocaleDateString(date: Date, separator: string = '-'): string {\n const day = pad(date.getDate());\n const currentMonth = date.getMonth() + 1;\n const month = pad(currentMonth);\n\n return `${date.getFullYear()}${separator}${month}${separator}${day}`;\n}\n\n// Pad to 2 digits\nfunction pad(num: number): string {\n return padCharsStart('0', 2, _toString(num));\n}\n\n/**\n * Use this whenever you want to create a Date instance from a dateString like \"2017-12-06\".\n * Reason: When you call the Date Constructor like this `new Date(\"2017-12-06\")`\n * the date instance will be in the users current timezone (eg in EST GMT-0500 it will become \"2017-12-05 19:00:00\"),\n * but at some places we handle the date only as date without time (e.g. date.getDate()) and there\n * we would then get timezone issues, because `date.getDate()` returns day 5 instead of 6!\n *\n * So instead of doing `new Date(\"2017-12-06\")` you should use this function instead!\n */\nexport function createDateFromDateString(dateString: string | null): Date | null {\n if (!dateString || !isValidDateString(dateString)) {\n return null;\n }\n const parts = dateString.split('-').map(toNumber);\n return new Date(parts[0]!, parts[1]! - 1, parts[2]!);\n}\n\nexport function isValidDateString(dateString: string | null): boolean {\n return dateString !== null && /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/.test(dateString) && !_isNaN(Date.parse(dateString));\n}\n","import { format as fm } from 'date-fns';\n\n/* format method is monkey-patched in date-input component, leaving this implementation as dummy */\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return fm(date, format, { locale });\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DateFormatter } from './date-formatter';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\">\n <ng-content />\n </div>\n `,\n standalone: true,\n imports: [NgIf]\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input()\n locale!: string;\n @Input()\n datepickerMode!: string;\n @Input()\n startingDay!: number;\n @Input()\n yearRange!: number;\n\n @Input()\n minDate!: Date;\n @Input()\n maxDate!: Date;\n @Input()\n minMode!: string;\n @Input()\n maxMode!: string;\n @Input()\n showWeeks!: boolean;\n @Input()\n formatDay!: string;\n @Input()\n formatMonth!: string;\n @Input()\n formatYear!: string;\n @Input()\n formatDayHeader!: string;\n @Input()\n formatDayTitle!: string;\n @Input()\n formatMonthTitle!: string;\n @Input()\n onlyCurrentMonth!: boolean;\n @Input()\n shortcutPropagation!: boolean;\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n @Input()\n monthColLimit!: number;\n @Input()\n yearColLimit!: number;\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n @Input()\n dayDisabled!: number[];\n @Input()\n initDate!: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId!: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate!: Date;\n protected selectedDate!: Date;\n protected activeDateId!: string;\n\n protected refreshViewHandlerDay!: Function;\n protected compareHandlerDay!: Function;\n protected refreshViewHandlerMonth!: Function;\n protected compareHandlerMonth!: Function;\n protected refreshViewHandlerYear!: Function;\n protected compareHandlerYear!: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes['activeDate']);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (previousValue && previousValue instanceof Date && previousValue.getTime() !== activeDate.currentValue.getTime()) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1]!;\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if ((this.datepickerMode === this.maxMode && direction === 1) || (this.datepickerMode === this.minMode && direction === -1)) {\n return;\n }\n\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction]!;\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return customClass.date.valueOf() === date.valueOf() && customClass.mode === this.datepickerMode;\n }, this)!;\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(date1Disabled: { date: Date; mode: string }, date2: Date): number | undefined {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach((disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n });\n }\n\n if (this.dayDisabled) {\n isDateDisabled = isDateDisabled || this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled || (this.minDate && this.compare(date, this.minDate)! < 0) || (this.maxDate && this.compare(date, this.maxDate)! > 0)\n );\n }\n}\n","export const isBs3 = () => true;\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'daypicker',\n template: `\n <table\n *ngIf=\"datePicker.datepickerMode === 'day'\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\"\n aria-activedescendant=\"activeDateId\"\n >\n <thead>\n <tr>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n ‹\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n <\n </button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n ›\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n >\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small [attr.aria-label]=\"labelz.full\"\n ><b>{{ labelz.abbr }}</b></small\n >\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-sm {{ dtz.customClass }}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{\n 'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected,\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz),\n 'btn-default': !isBs4\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span\n [ngClass]=\"{\n 'text-muted': dtz.secondary,\n 'text-info': !isBs4 && dtz.current\n }\"\n >\n {{ dtz.label }}</span\n >\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title!: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i]?.getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(days[j].date, this.formatDayHeader);\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date));\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n\n // todo: key events implementation\n}\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'monthpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.monthColLimit - 2 <= 0 ? 1 : datePicker.monthColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class MonthPickerComponent implements OnInit {\n title!: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode!: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'yearpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.yearColLimit - 2 <= 0 ? 1 : datePicker.yearColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title!: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(' - ');\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return ((year - 1) / this.datePicker.yearRange) * this.datePicker.yearRange + 1;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatepickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import { Component, EventEmitter, forwardRef, Input, Output, Provider, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker',\n template: `\n <datepicker-inner\n [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\"\n >\n <daypicker tabindex=\"0\" />\n <monthpicker tabindex=\"0\" />\n <yearpicker tabindex=\"0\" />\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input()\n initDate!: Date;\n /** oldest selectable date */\n @Input()\n minDate!: Date;\n /** latest selectable date */\n @Input()\n maxDate!: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n minMode!: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n maxMode!: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input()\n formatDay!: string;\n /** format of month in year */\n @Input()\n formatMonth!: string;\n /** format of year in year range */\n @Input()\n formatYear!: string;\n /** format of day in week header */\n @Input()\n formatDayHeader!: string;\n /** format of title when selecting day */\n @Input()\n formatDayTitle!: string;\n /** format of title when selecting month */\n @Input()\n formatMonthTitle!: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n startingDay!: number;\n /** number of years displayed in year selection */\n @Input()\n yearRange!: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input()\n onlyCurrentMonth!: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input()\n shortcutPropagation!: boolean;\n /** number of months displayed in a single row of month picker */\n @Input()\n monthColLimit!: number;\n /** number of years displayed in a single row of year picker */\n @Input()\n yearColLimit!: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n dayDisabled!: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker!: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatepickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate!: Date;\n\n constructor(config: DatepickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = (value ? new Date(value) : void 0)!;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { CommonModule, NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator } from '@angular/forms';\nimport { format, startOfDay } from 'date-fns';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ButtonComponent } from '../../../core-ui/components/button/button.component';\nimport { DATE_FN_LOCALE, DATE_FORMATS, DateFormatsProvider } from '../../../core-ui/core-ui.constants';\nimport { AutofocusDirective } from '../../../core-ui/directives/autofocus.directive';\nimport { CustomDatePipe } from '../../../core-ui/pipes/custom-date.pipe';\nimport { convertDateToLocaleDateString, createDateFromDateString, isValidDateString } from '../../../shared/date-helpers';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { DateFormatter } from '../date-picker-ui/date-formatter';\nimport { DatePickerComponent } from '../date-picker-ui/datepicker.component';\n\n// Input + ng2-bootstrap datepicker\nexport type DateInputRenderingStyle = 'INPUT' | 'LINK' | 'BUTTON';\n\nconst DEFAULT_MIN_DATE = new Date('0000-01-01');\nconst DEFAULT_MAX_DATE = new Date('9999-12-31');\n\n/**\n * This is a date input component that can be used to select a date.\n */\n@Component({\n selector: 'lx-date-input',\n templateUrl: 'date-input.component.html',\n styleUrls: ['date-input.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }\n ],\n standalone: true,\n imports: [\n CommonModule,\n NgIf,\n CdkOverlayOrigin,\n FormsModule,\n AutofocusDirective,\n CdkConnectedOverlay,\n DatePickerComponent,\n CustomDatePipe,\n MarkInvalidDirective,\n ButtonComponent\n ]\n})\nexport class DateInputComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor, Validator {\n /** The initial date value for the date input field. This is used for `ngModel` and `formControl`. */\n @Input() public date: Date | null = null;\n /** Secondary, alternative input with date string */\n @Input() public dateString: string | null = null;\n /** Determine whether formGroup's value accessor is accessing the selected IDs or the selected objects */\n @Input() public valueAccessor: 'date' | 'dateString' = 'date';\n /** ID to be set on input to correspond to outside label */\n @Input() public inputId: string = '';\n /** The rendering style of the date input component. Can be one of \"LINK\", \"BUTTON\", or \"INPUT\". */\n @Input() public renderingStyle: DateInputRenderingStyle = 'INPUT';\n /** The placeholder text to show in the date input field when there is no date selected */\n @Input() public placeholder: string = 'yyyy-mm-dd';\n /** Deactivate to use old date picker */\n @Input() public cdk = true;\n /** Sets datepicker mode, supports: day, month, year */\n @Input() public datepickerMode: string = 'day';\n /** Default date to show if ng-model value is not specified. Default date to show if ng-model value is not specified */\n @Input() initDateString!: string;\n /** Oldest selectable date */\n @Input() public minDate = DEFAULT_MIN_DATE;\n /** Latest selectable date */\n @Input() public maxDate = DEFAULT_MAX_DATE;\n /** Set lower datepicker mode, supports: day, month, year */\n @Input() public minMode: string = 'day';\n /** Sets upper datepicker mode, supports: day, month, year */\n @Input() public maxMode: string = 'year';\n /** If false week numbers will be hidden */\n @Input() public showWeeks: boolean = true;\n /** Format of day in month */\n @Input() public formatDay: string = 'DD';\n /** Format of month in year */\n @Input() public formatMonth: string = 'MMMM';\n /** Format of year in year range */\n @Input() public formatYear: string = 'YYYY';\n /** Format of day in week header */\n @Input() public formatDayHeader: string = 'dd';\n /** Format of title when selecting day */\n @Input() public formatDayTitle: string = 'MMMM YYYY';\n /** Format of title when selecting month */\n @Input() public formatMonthTitle: string = 'YYYY';\n /** Starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) public */\n @Input() startingDay: number = 0;\n /** Number of years displayed in year selection */\n @Input() public yearRange: number = 20;\n /** If true only dates from the currently displayed month will be shown */\n @Input() public onlyCurrentMonth: boolean = false;\n /** If true shortcut`s event propagation will be disabled */\n @Input() public shortcutPropagation: boolean = false;\n /** Array of custom css classes to be applied to */\n @Input() public customClass: { date: Date; mode: string; clazz: string }[] = [];\n /** If true, the date input field will be disabled. */\n @Input() public disabled!: boolean;\n /** Array of disabled dates if mode is day, or years, etc. */\n @Input() public dateDisabled: { date: Date; mode: string }[] = [];\n /** If true, the date input field will be auto-focused when the component is first rendered. */\n @Input() autoFocus = false;\n /** If true, the date input field will be marked as invalid. */\n @Input() markInvalid = false;\n\n /** Triggered whenever the datepicker is closed */\n @Output() closeDateInput = new EventEmitter<void>();\n /** Triggered whenever the date changes */\n @Output() dateStringChange = new EventEmitter<string | null>();\n /** Triggered whenever the date changes. */\n @Output() dateChange = new EventEmitter<Date | null>();\n\n /** @internal */\n @Observe('initDateString') initDateString$!: Observable<string>;\n\n /** @internal */\n @ViewChild('input') input!: ElementRef<HTMLInputElement>;\n /** @internal */\n @ContentChild('dateStringTemplate', { read: TemplateRef, static: true }) dateStringTemplate?: TemplateRef<any>;\n\n /** @internal */\n showDatepicker: boolean = false;\n /** @internal */\n dateFormat: string;\n /** @internal */\n initDate!: Date;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n private formControl!: UntypedFormControl;\n /** @internal */\n hasError: boolean = false;\n /** @internal */\n onTouched!: () => void;\n\n /** @internal */\n propagateChange = (_date: Date | null) => {};\n\n constructor(\n private cd: ChangeDetectorRef,\n @Inject(DATE_FORMATS) private dateFormatsProvider: DateFormatsProvider,\n @Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function\n ) {\n this.dateFormat = this.dateFormatsProvider.getDateFormat();\n // Patch DatePicker until https://github.com/valor-software/ng2-bootstrap/issues/1385 is resolved\n const writeValue = DatePickerComponent.prototype.writeValue;\n DatePickerComponent.prototype.writeValue = function (value) {\n if (value !== null) {\n return writeValue.apply(this, arguments as any);\n }\n };\n\n // Somehow datepicker does use a separate moment instance than we do. That one runs on locale en by default.\n // So we patch the format function here to use our moment instance.\n // Maybe it will be fixed with: https://github.com/valor-software/ngx-bootstrap/issues/455\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n DateFormatter.prototype.format = function (date: Date, f: string) {\n return format(date, f, { locale });\n };\n }\n\n /** @internal */\n ngOnInit() {\n this.initDateString$.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.initDate = createDateFromDateString(date) ?? startOfDay(new Date());\n });\n }\n\n /** @internal */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['date']) {\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : null;\n } else if (changes['dateString']) {\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n /** @internal */\n public ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n public focus() {\n this.input.nativeElement.focus();\n }\n\n /** @internal */\n public showPopup() {\n this.showDatepicker = true;\n this.cd.detectChanges();\n }\n\n /** @internal */\n public togglePopup() {\n this.showDatepicker = !this.showDatepicker;\n }\n\n /** @internal */\n public hidePopup() {\n if (this.showDatepicker) {\n this.showDatepicker = false;\n this.closeDateInput.emit();\n }\n }\n\n /** @internal */\n onDateStringChange(newDateString: string | null, emit: boolean = true) {\n if (isValidDateString(newDateString)) {\n const date = createDateFromDateString(newDateString);\n this.updateDate(date, emit);\n } else if (newDateString === null || newDateString === '') {\n this.updateDate(null, emit);\n } else {\n this.hasError = true;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n }\n\n /** @internal */\n onSelectionDone(newDate: Date) {\n this.updateDate(newDate);\n this.hidePopup();\n }\n\n /** @internal */\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private updateDate(date: Date | null, emit: boolean = true) {\n this.date = date;\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : '';\n if (emit) {\n this.dateChange.emit(date);\n this.dateStringChange.emit(this.dateString);\n }\n this.propagateChange(date);\n this.recheckErrors();\n }\n\n private recheckErrors() {\n this.hasError = false;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n\n /**\n * Write a new value to the element.\n * @internal\n */\n writeValue(newDate: Date | string) {\n if (this.valueAccessor === 'date') {\n this.date = newDate as Date;\n this.dateString = convertDateToLocaleDateString(this.date);\n } else {\n this.dateString = newDate as string;\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n /**\n * Set the function to be called when the control receives a change event.\n * @internal\n */\n registerOnChange(fn: any) {\n if (this.valueAccessor === 'date') {\n this.dateChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n } else if (this.valueAccessor === 'dateString') {\n this.dateStringChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n }\n }\n\n /**\n * Set the function to be called when the control receives a touch event.\n * @internal\n */\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n /** @internal */\n validate(c: UntypedFormControl) {\n this.formControl = c;\n return this.hasError\n ? {\n dateFormatError: {\n given: this.dateString,\n format: 'yyyy-mm-dd'\n }\n }\n : null;\n }\n}\n","<ng-container *ngIf=\"cdk; else withoutCdkOverlay\">\n <span\n class=\"wrapper\"\n [class.forLink]=\"renderingStyle === 'LINK'\"\n [class.has-error]=\"hasError\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <!-- TODO: The dateInput and datePicker code ist duplicated for cdk and withoutCdK use to solve a placing problem of the\n ngx-bootstrap datepicker component. Writing it in a ng-container led to an unexpected anchoring behavior of the datePicker NOT directly\n below the dateInput element -->\n @switch (renderingStyle) {\n @case ('BUTTON') {\n <button lx-button (click)=\"showPopup()\" lxAutoclose (autoclose)=\"hidePopup()\" size=\"large\" endIcon=\"fa-angle-down\">\n @if (dateStringTemplate) {\n <ng-container *ngTemplateOutlet=\"dateStringTemplate\" />\n } @else {\n {{ dateString ?? placeholder }}\n }\n </button>\n }\n @case ('INPUT') {\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n [lxMarkInvalid]=\"markInvalid\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n />\n }\n @case ('LINK') {\n <a class=\"dateControl\" (click)=\"togglePopup()\">{{ date | lxDate: dateFormat }}</a>\n }\n }\n\n <ng-template\n #cdkDatepicker\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"showDatepicker\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n (backdropClick)=\"hidePopup()\"\n >\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n />\n </div>\n </div>\n </ng-template>\n </span>\n</ng-container>\n\n<ng-template #withoutCdkOverlay>\n <div class=\"legacy\" [class.forLink]=\"renderingStyle === 'LINK'\">\n <div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n <span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [lxMarkInvalid]=\"markInvalid\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n />\n </div>\n </div>\n </span>\n </div>\n</ng-template>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\n\n@NgModule({\n imports: [DatePickerComponent],\n exports: [DatePickerComponent]\n})\nexport class DatepickerUiModule {\n static forRoot(): ModuleWithProviders<DatepickerUiModule> {\n return { ngModule: DatepickerUiModule, providers: [DatepickerConfig] };\n }\n}\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { ButtonComponent } from '../../../../core-ui/components/button/button.component';\n\nexport interface DragAndDropListAction {\n id: string;\n label: string;\n icon: string;\n showOnlyOnHover?: boolean;\n}\n\nexport interface DragAndDropListActionEvent {\n actionId: string;\n item: string;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list-item',\n templateUrl: 'drag-and-drop-list-item.component.html',\n styleUrls: ['drag-and-drop-list-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, NgFor, ButtonComponent]\n})\nexport class DragAndDropListItemComponent {\n readonly NAME = 'DragAndDropListItemComponent';\n\n @Input() item!: string;\n @Input() draggable: boolean = true;\n /**\n * An array of DragAndDropListActions\n * When this array is defined, the drag handle is shown at the start of an item and the action buttons are rendered in their provided order at the right end of an item.\n */\n @Input() actions?: DragAndDropListAction[];\n @Output() action = new EventEmitter<DragAndDropListActionEvent>();\n\n @HostBinding('class.draggingDisabled') get draggingDisabled() {\n return !this.draggable;\n }\n\n @HostBinding('class.customTemplate') get hasCustomTemplate() {\n return !!this.customTemplateRef;\n }\n\n @ContentChild('customTemplate') customTemplateRef: TemplateRef<any> | null = null;\n\n constructor(private element: ElementRef) {}\n\n trackByAction(_index: number, action: DragAndDropListAction) {\n return action.id;\n }\n\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n","<ng-container *ngIf=\"customTemplateRef; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"customTemplateRef\" />\n</ng-container>\n<ng-template #defaultTemplate>\n <div class=\"drag-item-wrappper\">\n <i *ngIf=\"draggable\" class=\"far fa-bars drag-handle\"></i>\n <span [attr.title]=\"item\" class=\"itemWrapperForTruncation truncate\">{{ item }}</span>\n </div>\n <div class=\"left-button-container\" align=\"left\">\n <div class=\"action-buttons-wrapper\" *ngIf=\"!!actions\">\n <button\n lx-button\n *ngFor=\"let act of actions; trackBy: trackByAction\"\n (click)=\"action.emit({ actionId: act.id, item: item })\"\n [title]=\"act.label\"\n [square]=\"true\"\n mode=\"ghost\"\n size=\"small\"\n class=\"action-button\"\n [class.show-on-hover-button]=\"act.showOnlyOnHover ? true : false\"\n [icon]=\"act.icon\"\n ></button>\n </div>\n </div>\n</ng-template>\n","/**\n * Used in the DragAndDropListComponent and KeyboardSortableListDirective\n */\nexport const DRAG_AND_DROP_LIST_TRANSLATION_NAME = 'DragAndDropListComponent';\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-input-rename */\nimport { AriaDescriber } from '@angular/cdk/a11y';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';\nimport { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, Output } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { TooltipDirective } from '../../../../core-ui/tooltip/tooltip.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableItem]',\n standalone: true\n})\nexport class KeyboardSortableItemDirective implements OnChanges {\n @Input('lxKeyboardSortableItem') allItemsData!: string[] | null;\n @Input('lxKeyboardItemData') itemData!: string;\n @Input() isSortingByKeyboard!: boolean;\n @Input('lxKeyboardItemBeingSorted') itemBeingSorted?: string;\n\n @Output() readonly isSortingByKeyboardChange = new EventEmitter<boolean>();\n @Output('lxKeyboardItemBeingSortedChange') readonly itemBeingSortedChange = new EventEmitter<string | undefined>();\n @Output() sortItemsWithKeyboard = new EventEmitter<{ previousIndex: number; currentIndex: number }>();\n @Output() focusWithKeyboard!: Observable<KeyboardSortableItemDirective>;\n\n @HostBinding('attr.lxTooltip') tooltipDirective = new TooltipDirective(\n this.overlayPositionBuilder,\n this.element,\n this.overlay,\n this.ariaDescriber\n );\n @HostBinding('class.isBeingSortedByKeyboard') isBeingSorted: boolean = false;\n\n get isSortable() {\n return !this.draggableItem.disabled;\n }\n\n private preventBlur = false;\n private focusWithKeyboardReplaySubject$ = new ReplaySubject<KeyboardSortableItemDirective>(1);\n\n constructor(\n private draggableItem: CdkDrag,\n private overlayPositionBuilder: OverlayPositionBuilder,\n private element: ElementRef<HTMLElement>,\n private overlay: Overlay,\n private ariaDescriber: AriaDescriber\n ) {\n /**\n * Using a ReplaySubject here so that the KeyboardSortableListDirective will also know\n * about a focusWithKeyboard event when its copy of the KeyboardSortableItemDirective ContentChildren\n * was just initialised after the event fired.\n */\n this.focusWithKeyboard = this.focusWithKeyboardReplaySubject$.asObservable();\n }\n\n ngOnChanges(): void {\n this.isBeingSorted = this.itemData === this.itemBeingSorted;\n if (this.isBeingSorted) {\n // focus always the pressed element\n this.element.nativeElement.focus();\n }\n }\n\n @HostListener('keyup.tab')\n focusViaKeyboard(): void {\n this.focusWithKeyboardReplaySubject$.next(this);\n }\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n enterSortingModeEnabledByKeyboard($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n if ($event.code === 'Enter' || $event.code === 'Space') {\n $event.preventDefault();\n this.tooltipDirective.hide();\n\n this.itemBeingSortedChange.emit(!this.isSortingByKeyboard ? this.itemData : undefined);\n this.isSortingByKeyboardChange.emit(!this.isSortingByKeyboard);\n }\n }\n }\n\n @HostListener('blur', ['$event'])\n @HostListener('keydown.esc', ['$event'])\n leaveSortingModeEnabledByKeyboard($event: KeyboardEvent | FocusEvent): void {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (!this.preventBlur) {\n this.isSortingByKeyboardChange.emit(false);\n this.itemBeingSortedChange.emit(undefined);\n }\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n @HostListener('keydown.arrowDown', ['$event'])\n sort($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (this.isSortingByKeyboard) {\n const allItemsData = this.allItemsData ?? [];\n\n $event.preventDefault();\n\n const previousIndex = allItemsData.findIndex((item) => item === this.itemData);\n const currentIndex = $event.code === 'ArrowUp' ? previousIndex - 1 : previousIndex + 1;\n\n if (currentIndex >= 0 && currentIndex <= allItemsData.length - 1) {\n this.sortItemsWithKeyboard.emit({ previousIndex, currentIndex });\n\n // When triggering a keyboard event, the DOM would \"removeChildren\" on the HTML element\n // which specially for \"ArrowUp\" events would trigger a \"blur\" event since the element\n // has been moved aboved the DOM tree and loses the focus state.\n this.preventBlur = true;\n\n setTimeout(() => (this.preventBlur = false), 0);\n }\n }\n }\n }\n}\n","import { AfterViewInit, Directive, Input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, merge } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\nimport { Observe } from '../../../../shared/observe';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from '../constants';\nimport { KeyboardSortableItemDirective } from '../keyboard-sortable-item/keyboard-sortable-item.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableList]',\n standalone: true\n})\nexport class KeyboardSortableListDirective implements AfterViewInit {\n @Observe('keyboardSortableItems') private keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n @Input() keyboardSortableItems!: KeyboardSortableItemDirective[] | null;\n\n constructor(private translateService: TranslateService) {}\n\n ngAfterViewInit(): void {\n this.setupControlsTooltipToBeShownOnFirstFocusedItem();\n }\n\n private setupControlsTooltipToBeShownOnFirstFocusedItem() {\n const firstFocusEventOnADraggableItem$ = this.keyboardSortableItems$.pipe(\n filter((items) => items && items.length > 0),\n switchMap((items) => merge(...items.filter((item) => item.isSortable).map((item) => item.focusWithKeyboard))),\n take(1)\n );\n\n firstFocusEventOnADraggableItem$.subscribe((item) => {\n item.tooltipDirective.content = this.translateService.instant(`${DRAG_AND_DROP_LIST_TRANSLATION_NAME}.helpTooltip`);\n item.tooltipDirective.show();\n });\n }\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from './constants';\nimport { DragAndDropListActionEvent, DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\nexport interface DragAndDropListMoveEvent {\n item: string;\n index: number;\n}\n\nexport interface DragAndDropListMoveIndexEvent {\n index: number;\n previous: number;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list',\n templateUrl: 'drag-and-drop-list.component.html',\n styleUrls: ['drag-and-drop-list.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n CdkDropList,\n KeyboardSortableListDirective,\n NgFor,\n CdkDrag,\n KeyboardSortableItemDirective,\n DragAndDropListItemComponent,\n NgTemplateOutlet,\n AsyncPipe,\n TranslateModule,\n DragDropModule\n ]\n})\nexport class DragAndDropListComponent implements AfterContentInit, AfterViewInit {\n /** @internal */\n readonly NAME = DRAG_AND_DROP_LIST_TRANSLATION_NAME;\n\n /** @internal */\n items$!: Observable<DragAndDropListItemComponent[]>;\n /** @internal */\n keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n\n /**\n * A label for describing this list.\n */\n @Input() label?: string | undefined;\n /**\n * Override the global label font weight of 700\n */\n @Input() labelFontWeight?: number = 700;\n\n @Input() @HostBinding('attr.color') color?: 'light' | 'dark' = 'light';\n @Input() @HostBinding('attr.fontSize') fontSize?: 'normal' | 'big' = 'normal';\n\n /**\n * Use the moveToIndex Output in favor of moveItem,\n * when moving is restricted to one item through this.draggableItem.\n */\n @Output() moveToIndex = new EventEmitter<DragAndDropListMoveIndexEvent>();\n @Output() moveItem = new EventEmitter<DragAndDropListMoveEvent>();\n\n /** @internal */\n @ContentChildren(DragAndDropListItemComponent) private _items!: QueryList<DragAndDropListItemComponent>;\n\n /** @internal */\n @ViewChildren(KeyboardSortableItemDirective)\n private _keyboardSortableItems!: QueryList<KeyboardSortableItemDirective>;\n\n /**\n * TODO: extract state about keyboard sorting into KeyboardSortableListDirective\n * @internal\n */\n isSortingByKeyboard: boolean = false;\n /** @internal */\n keyboardItemBeingSorted: string | undefined = undefined;\n\n /** @internal */\n allItemsData: string[] = [];\n /** @internal */\n allItemsData$!: Observable<string[]>;\n\n ngAfterContentInit() {\n this.items$ = this._items.changes.pipe(\n startWith(this._items),\n map((items: QueryList<DragAndDropListItemComponent>) => items.toArray())\n );\n this.allItemsData$ = this.items$.pipe(map((itemComponents) => itemComponents.map((itemComponent) => itemComponent.item)));\n }\n\n ngAfterViewInit(): void {\n this.keyboardSortableItems$ = this._keyboardSortableItems.changes.pipe(\n startWith(this._keyboardSortableItems),\n map((items: QueryList<KeyboardSortableItemDirective>) => items.toArray())\n );\n }\n\n /** @internal */\n emitContentChildAction(action: DragAndDropListActionEvent) {\n this._items.find((itemComponent) => itemComponent.item === action.item)?.action.emit(action);\n }\n\n /**\n * From the Angular cdk drag and drop documentation:\n * Note that this will not update your data model;\n * you can listen to the cdkDropListDropped event to update the data model\n * once the user finishes dragging.\n * https://material.angular.io/cdk/drag-drop/overview\n *\n * You're supposed to update the data in the parent and pass the new items as input.\n * @internal\n */\n drop(event: CdkDragDrop<DragAndDropListItemComponent[] | null, string[]>) {\n this.sortItems(event.container.data!, event.item.data, event.previousIndex, event.currentIndex);\n }\n\n /** @internal */\n dropToIndexAfterArrowKey(item: any, previousIndex: number, currentIndex: number) {\n if (this.isSortingByKeyboard) {\n this.sortItems(this._items, item, previousIndex, currentIndex);\n }\n }\n\n private sortItems(items: any, item: string, previousIndex: number, currentIndex: number): void {\n moveItemInArray(items, previousIndex, currentIndex);\n this.moveToIndex.emit({ index: currentIndex, previous: previousIndex });\n this.moveItem.emit({ item, index: currentIndex });\n }\n\n /** @internal */\n trackByItem(_index: number, item: DragAndDropListItemComponent) {\n return item.item;\n }\n}\n","<label *ngIf=\"label\" [style.font-weight]=\"labelFontWeight\">{{ label }}</label>\n<p class=\"sr-only\">{{ NAME + '.helpTooltip' | translate }}</p>\n<ul\n cdkDropList\n class=\"list\"\n role=\"listbox\"\n [attr.aria-label]=\"label\"\n lxKeyboardSortableList\n [keyboardSortableItems]=\"keyboardSortableItems$ | async\"\n [cdkDropListData]=\"items$ | async\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <li\n *ngFor=\"let itemComponent of items$ | async; trackBy: trackByItem\"\n #listItemParent\n class=\"item\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n [cdkDragData]=\"itemComponent.item\"\n [cdkDragDisabled]=\"!itemComponent.draggable\"\n [class.dark]=\"color === 'dark'\"\n [class.big]=\"fontSize === 'big'\"\n [tabIndex]=\"itemComponent.draggable === false ? -1 : 0\"\n [lxKeyboardSortableItem]=\"allItemsData$ | async\"\n [lxKeyboardItemData]=\"itemComponent.item\"\n [(isSortingByKeyboard)]=\"isSortingByKeyboard\"\n [(lxKeyboardItemBeingSorted)]=\"keyboardItemBeingSorted\"\n (sortItemsWithKeyboard)=\"dropToIndexAfterArrowKey(itemComponent.item, $event.previousIndex, $event.currentIndex)\"\n >\n <lx-drag-and-drop-list-item\n class=\"dragAndDropItem\"\n [item]=\"itemComponent.item\"\n [draggable]=\"itemComponent.draggable\"\n [actions]=\"itemComponent.actions\"\n (action)=\"emitContentChildAction($event)\"\n >\n <ng-template *ngIf=\"itemComponent.customTemplateRef\" #customTemplate>\n <ng-container *ngTemplateOutlet=\"itemComponent.customTemplateRef\" />\n </ng-template>\n </lx-drag-and-drop-list-item>\n </li>\n</ul>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { DragAndDropListComponent } from './drag-and-drop-list.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n TranslateModule.forChild(),\n KeyboardSortableItemDirective,\n KeyboardSortableListDirective,\n DragAndDropListComponent,\n DragAndDropListItemComponent\n ],\n exports: [DragAndDropListComponent, DragAndDropListItemComponent]\n})\nexport class LxDragAndDropListModule {}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'lx-error-message',\n templateUrl: './error-message.component.html',\n styleUrls: ['./error-message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class ErrorMessageComponent {\n public readonly dynamicErrorMessage = signal('');\n private readonly wrapper = viewChild.required<ElementRef<HTMLSpanElement>>('contentWrapper');\n protected computedErrorMessage = computed(() => this.dynamicErrorMessage() || this.wrapper().nativeElement.innerText);\n}\n","<span #contentWrapper hidden>\n <ng-content />\n</span>\n\n@if (computedErrorMessage()) {\n <div class=\"error\">\n {{ computedErrorMessage() }}\n </div>\n}\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-expanded-dropdown',\n templateUrl: 'expanded-dropdown.component.html',\n styleUrls: ['expanded-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgFor, SelectableItemDirective, NgTemplateOutlet, AsyncPipe, TranslateModule]\n})\nexport class ExpandedDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n\n @Output() onChooseItem = new EventEmitter<string>();\n}\n","<ul role=\"listbox\" class=\"options lxThinScrollbar\" #keyboardSelectContainer>\n <li *ngIf=\"options?.length === 0\" tabindex=\"-1\" id=\"noOption\" class=\"option noOptionsAvailable\">\n {{ NAME + '.noResults' | translate }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"onChooseItem.emit(option.id)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n role=\"option\"\n [attr.aria-selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container>\n <ng-container *ngTemplateOutlet=\"simpleStringDisplay; context: { $implicit: option, index: index }\" />\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span [title]=\"option.name\">\n {{ option.name }}\n </span>\n </ng-template>\n <div class=\"iconContainer\">\n <svg\n width=\"32px\"\n height=\"32px\"\n viewBox=\"0 0 32 32\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g id=\"choose-workspace-D\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"choose-a-workspace-D\" transform=\"translate(-911.000000, -429.000000)\">\n <g id=\"Group-3\" transform=\"translate(471.000000, 249.000000)\">\n <g id=\"Button/Text/Primary/Medium\" transform=\"translate(440.000000, 180.000000)\">\n <g id=\"UI/Shape/Rectangle-rounded-2px\" fill=\"#0070f2\">\n <circle id=\"🎨-Style\" cx=\"16\" cy=\"16\" r=\"16\" />\n </g>\n <g id=\"Icons/basic/refresh\" transform=\"translate(7.000000, 11.000000)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n <g id=\"arrow-right\" transform=\"translate(3.772240, 0.000000)\">\n <path\n d=\"M5.41769476,0.0873198725 L4.92588162,0.579133017 C4.80947996,0.695534673 4.80947996,0.88427129 4.92588162,1.00069779 L8.77935771,4.85414904 L0.298083627,4.85414904 C0.133466944,4.85414904 0,4.98761598 0,5.15223266 L0,5.84776113 C0,6.01237781 0.133466944,6.14584475 0.298083627,6.14584475 L8.77935771,6.14584475 L4.92588162,9.99932084 C4.80947996,10.1157225 4.80947996,10.3044591 4.92588162,10.4208856 L5.41769476,10.9126988 C5.53409642,11.0291004 5.72283304,11.0291004 5.83925953,10.9126988 L11.0411666,5.7107917 C11.1575682,5.59439004 11.1575682,5.40565343 11.0411666,5.28922693 L5.83923469,0.0873198725 C5.72283304,-0.0291066242 5.53409642,-0.0291066242 5.41769476,0.0873198725 Z\"\n id=\"Path\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n </div>\n </li>\n</ul>\n","import { NgFor } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'lx-form-error',\n templateUrl: 'form-error.component.html',\n styleUrls: ['form-error.component.scss'],\n standalone: true,\n imports: [NgFor, TranslateModule]\n})\nexport class FormErrorComponent implements OnInit, OnChanges, OnDestroy {\n @Input() public namespace!: string;\n @Input() public form!: UntypedFormGroup;\n @Input() public controlName!: string;\n\n /** @internal */\n translationKeys: string[] = [];\n private formSubscription!: Subscription;\n\n ngOnInit() {\n this.formSubscription = this.form.valueChanges.subscribe(() => {\n this.translationKeys = this.getTranslationKeys();\n });\n }\n\n ngOnChanges(_changes: SimpleChanges) {\n this.translationKeys = this.getTranslationKeys();\n }\n\n ngOnDestroy() {\n if (this.formSubscription) this.formSubscription.unsubscribe();\n }\n\n /** @internal */\n getTranslationKeys() {\n const formControl = this.form.get(this.controlName);\n if (formControl && formControl.errors) {\n return Object.keys(formControl.errors).map((errorKey) => `${this.namespace}.errors.${this.controlName}.${errorKey}`);\n }\n return [];\n }\n}\n","<div class=\"error\" *ngFor=\"let key of translationKeys\">\n {{ key | translate }}\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * fas is solid,\n * far is regular,\n * fal is light\n */\ntype FontAwesomeIconStyle = 'fas' | 'far' | 'fal';\n\n/**\n * @ignore\n * Displays Font Awesome icons.\n */\n@Component({\n selector: 'lx-icon',\n templateUrl: 'icon.component.html',\n styleUrls: ['icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class IconComponent implements OnChanges {\n readonly NAME = 'IconComponent';\n\n /**\n * The name of the icon is the part that comes after the \"fa-\" in the CSS class.\n */\n @Input() name!: string;\n @Input() color: string = '#000';\n @Input() fontAwsomeStyle: 'solid' | 'regular' | 'light' = 'regular';\n @Input() @HostBinding('style.height') size: string = '14px';\n @Input() title?: string;\n\n private iconStyleMap = <const>{\n solid: 'fas',\n regular: 'far',\n light: 'fal'\n };\n\n iconStyle: FontAwesomeIconStyle = 'far';\n\n ngOnChanges(changes: SimpleChanges) {\n if ('fontAwsomeStyle' in changes) {\n this.iconStyle = this.iconStyleMap[this.fontAwsomeStyle];\n }\n }\n}\n","<i [attr.title]=\"title\" [class]=\"iconStyle + ' fa-' + name\" [style.color]=\"color\" [style.fontSize]=\"size\"></i>\n","import { Component, HostBinding, Input, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[lx-input]',\n styleUrls: ['input.component.scss'],\n template: ``,\n standalone: true,\n imports: [ReactiveFormsModule]\n})\nexport class InputComponent implements OnInit, OnDestroy {\n @Input() @HostBinding('class.error') error = false;\n @Input() @HostBinding('class.disabled') disabled = false;\n\n private destroyed$ = new Subject<void>();\n\n constructor(@Optional() public ngControl?: NgControl) {}\n\n ngOnInit() {\n if (!this.ngControl) return;\n\n this.ngControl.statusChanges?.pipe(startWith(null), takeUntil(this.destroyed$)).subscribe(() => this.updateStatus());\n }\n\n private updateStatus() {\n const isInvalid = this.ngControl?.invalid;\n const isTouched = this.ngControl?.touched;\n const isDirty = this.ngControl?.dirty;\n\n this.error = !!(isInvalid && (isTouched || isDirty));\n this.disabled = !!this.ngControl?.disabled;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with single or multi-selects.\n * It allows to mark a ng-template as the dropdown for those components.\n * The ng-template will be instantiated and \"projected\" whenever the dropdown is\n * opened. This has the advantage over content projection via ng-content, as it will\n * defer the initialization and rendering of the dropdown contents until the dropdown\n * is actually opened.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectDropdown>\n * <lx-basic-dropdown></lx-basic-dropdown>\n * </ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectDropdown]',\n standalone: true\n})\nexport class SelectDropdownDirective {}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction, KeyboardSelectDirective } from '../components/keyboard-select.directive';\n\nexport interface EventSet {\n event: KeyboardEvent;\n inputCursorPosition: number | undefined;\n virtualCursorPosition: number;\n selectionLength?: number;\n}\n\n@Directive()\nexport abstract class BaseSelectDirective implements AfterViewInit, OnChanges, OnDestroy {\n @Input() placeholder?: string;\n @Input() disabled: boolean = false;\n @Input() focusOnInit: boolean = false;\n @Input() dropdownMaxHeight: number = 250;\n @Input() allowQuery: boolean = true;\n\n @Output() query = new EventEmitter<string>();\n @Output() close = new EventEmitter<void>();\n @Output() open = new EventEmitter<boolean>();\n\n /** @internal */\n @ViewChild('optionsContainer', { static: true }) optionsContainer!: ElementRef<HTMLElement>;\n /** @internal */\n @ContentChild(KeyboardSelectDirective, { static: false, descendants: true }) dropdownBase!: KeyboardSelectDirective;\n\n abstract selection?: any;\n abstract selectionChange: EventEmitter<any>;\n\n /** @internal */\n public readonly query$ = this.query.asObservable();\n /** @internal */\n public readonly dropdownDirection$ = new BehaviorSubject<'TOP' | 'BOTTOM'>('BOTTOM');\n /** @internal */\n public dropdownOpen = false;\n\n /** @internal */\n public activeElement!: Element;\n // an axis, where the negative range represents the selected item in the selection\n /** @internal */\n public readonly selectionKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n /** @internal */\n public readonly optionsKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n /** @internal */\n public virtualCursorPosition: number = 0;\n\n /** @internal */\n public inputWasFocused: boolean = false;\n\n /** @internal */\n public readonly queryControl = new UntypedFormControl('');\n\n /** @internal */\n public isInputFocused: boolean = false;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n abstract resetInput(): void;\n\n /** @internal */\n abstract focus(): void;\n\n ngAfterViewInit() {\n this.queryControl.valueChanges\n .pipe(\n filter(() => this.allowQuery),\n takeUntil(this.destroyed$)\n )\n .subscribe((value) => {\n if (value && value.length > 0) {\n this.open.next(true);\n }\n this.query.emit(value);\n this.selectFirstOption();\n });\n\n this.open\n .pipe(\n filter(() => !this.disabled),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((isOpen) => {\n this.dropdownOpen = isOpen;\n if (isOpen) {\n this.setOpenDirection();\n } else {\n this.resetSelectState();\n this.close.emit();\n }\n\n if (this.dropdownBase) {\n this.notifyDropdownBase(isOpen);\n } else {\n // dropdown may be hidden with *ngIf, so we might need to wait for it to be rendered\n setTimeout(() => this.notifyDropdownBase(isOpen));\n }\n });\n\n if (this.focusOnInit) {\n setTimeout(() => this.focus());\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('disabled' in changes) {\n if (this.disabled) {\n this.queryControl.disable();\n } else {\n this.queryControl.enable();\n }\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /**\n * @param toggle is true when the caret to the right in a select component was clicked\n * @internal\n */\n public handleClick(toggle: boolean) {\n if (toggle || !this.dropdownOpen || !this.allowQuery) {\n this.open.next(!this.dropdownOpen);\n }\n this.focus();\n }\n\n /** @internal */\n public handleBackdropClick(event: MouseEvent) {\n event.stopPropagation();\n this.closeInput();\n }\n\n /** @internal */\n public closeInput() {\n this.open.next(false);\n this.resetInput();\n this.query.emit('');\n }\n\n /** @internal */\n public openInput() {\n this.open.next(true);\n }\n\n protected setOpenDirection() {\n const dropdownRect = this.optionsContainer.nativeElement.getBoundingClientRect();\n const spaceAtTheBottom = document.documentElement.clientHeight - dropdownRect.top - dropdownRect.height - this.dropdownMaxHeight;\n const spaceAtTheTop = dropdownRect.top - this.dropdownMaxHeight;\n const isTop = spaceAtTheBottom < 0 && spaceAtTheTop > spaceAtTheBottom;\n\n this.dropdownDirection$.next(isTop ? 'TOP' : 'BOTTOM');\n }\n\n protected resetSelectState() {\n this.virtualCursorPosition = 0;\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.resetInput();\n this.query.emit('');\n }\n\n protected mapToEventSet(\n event: KeyboardEvent,\n input: HTMLInputElement,\n virtualCursorPosition: number,\n selectionLength?: number\n ): EventSet {\n return {\n event,\n inputCursorPosition: this.doGetCaretPosition(input),\n virtualCursorPosition,\n selectionLength\n };\n }\n\n /*\n * Returns the caret (cursor) position of the specified text field.\n * Return value range is 0-oField.value.length.\n * https://stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field\n */\n protected doGetCaretPosition(oField: any) {\n let iCaretPos = 0;\n if (oField.selectionStart || parseInt(oField.selectionStart, 10) === 0) {\n // Check when range selection using null we prevent deleting on\n iCaretPos = oField.selectionStart === oField.selectionEnd ? oField.selectionStart : null;\n }\n return iCaretPos;\n }\n\n protected selectFirstOption() {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.FIRST);\n }\n\n /*\n * Sets the dropdown open/closed state, used for overlay dropdowns\n * */\n private notifyDropdownBase(isOpen: boolean) {\n if (this.dropdownBase && this.dropdownBase.overlayPositioning && this.dropdownBase.cdkOverlayOpenState) {\n this.dropdownBase.cdkOverlayOpenState.next(isOpen);\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'lx-responsive-input',\n templateUrl: 'responsive-input.component.html',\n styleUrls: ['responsive-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ResponsiveInputComponent)\n }\n ],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class ResponsiveInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() inputId?: string;\n @Output() focus = new EventEmitter<void>();\n @Output() focusViaTab = new EventEmitter<void>();\n @Output() blur = new EventEmitter<void>();\n @ViewChild('responsiveInput', { static: true }) responsiveInput!: ElementRef<HTMLInputElement>;\n @ViewChild('inputWidth', { static: true }) inputWidth!: ElementRef<HTMLSpanElement>;\n\n readonly inputWidth$ = new BehaviorSubject<string>('1px');\n readonly inputControl = new UntypedFormControl();\n readonly destroyed$ = new Subject<void>();\n\n value: any;\n\n ngAfterViewInit() {\n this.inputControl.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((value) => {\n this.propagateChange(value);\n try {\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, value) + 1 + 'px';\n this.inputWidth$.next(width);\n } catch (_e) {\n /* empty catch */\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n public focusInput() {\n this.responsiveInput.nativeElement.focus();\n }\n\n resetInput() {\n if (this.inputControl.value?.length > 0) {\n this.inputControl.reset('', { emitEvent: false });\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, ' ') + 1 + 'px';\n this.inputWidth$.next(width);\n }\n }\n\n /**\n * Based on https://github.com/Semantic-Org/Semantic-UI-React/\n * blob/25e382e40bb3102bb39944612643c0289cd1956b/src/modules/Dropdown/Dropdown.js#L1035\n */\n private computeSearchInputWidth(sizerRef: HTMLSpanElement, searchQuery: string): number {\n if (sizerRef && searchQuery) {\n sizerRef.style.display = 'inline-block';\n sizerRef.textContent = searchQuery;\n const searchWidth = Math.ceil(sizerRef.getBoundingClientRect().width);\n sizerRef.style.removeProperty('display');\n return searchWidth;\n }\n return 0;\n }\n\n //#region Angular Forms\n propagateChange(_value: any) {}\n\n writeValue(newValue: any) {\n if (newValue) {\n this.value = newValue;\n this.propagateChange(this.value);\n }\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n //#endregion\n}\n","<span #inputWidth class=\"inputWidth\"></span>\n<input\n type=\"text\"\n class=\"responsiveInput\"\n (focus)=\"focus.emit()\"\n (blur)=\"blur.emit()\"\n (keyup.tab)=\"focusViaTab.emit()\"\n (keyup.shift.tab)=\"focusViaTab.emit()\"\n [formControl]=\"inputControl\"\n [attr.id]=\"inputId\"\n #responsiveInput\n [style.width]=\"inputWidth$ | async\"\n/>\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Output, TemplateRef, input } from '@angular/core';\nimport { TokenComponent } from '../../../../core-ui/components/tokenizer/token/token.component';\nimport { TokenizerComponent } from '../../../../core-ui/components/tokenizer/tokenizer.component';\nimport { SelectableItemDirective } from '../../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../../keyboard-select.directive';\n\n@Component({\n selector: 'lx-multi-select-selection',\n standalone: true,\n imports: [AsyncPipe, NgTemplateOutlet, SelectableItemDirective, TokenizerComponent, TokenComponent],\n templateUrl: './multi-select-selection.component.html',\n styleUrls: ['./multi-select-selection.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiSelectSelectionComponent extends KeyboardSelectDirective {\n selection = input<any[] | null>();\n tokenize = input(true);\n\n @Output() removeItem = new EventEmitter<unknown>();\n\n @ContentChild('innerSelectionTemplate', { read: TemplateRef, static: true }) selectionTemplate: TemplateRef<any> | null = null;\n}\n","<ul>\n <lx-tokenizer [active]=\"tokenize()\">\n @for (selectedItem of selection(); track $index) {\n <lx-token>\n <li\n lxSelectableItem\n #item\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n (select)=\"removeItem.emit(selectedItem)\"\n >\n <ng-container *ngTemplateOutlet=\"selectionTemplate; context: { $implicit: selectedItem }\" />\n </li>\n </lx-token>\n }\n </lx-tokenizer>\n</ul>\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { filter as _filter, findIndex, includes, last } from 'lodash/fp';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { BaseSelectDirective, EventSet } from '../../models/base-select.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { ResponsiveInputComponent } from '../responsive-input/responsive-input.component';\nimport { MultiSelectSelectionComponent } from './multi-select-selection/multi-select-selection.component';\n\nexport type MultiSelectSize = 'default' | 'small' | 'large' | 'select2';\n\nexport type MultiSelectRemoveItemEvent = {\n item: any;\n /**\n * Is true when the item was not removed by pressing backspace on the keyboard rather than clicking the 'x'.\n */\n isMouse: boolean;\n};\n\n@Component({\n selector: 'lx-multi-select',\n templateUrl: 'multi-select.component.html',\n styleUrls: ['multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [\n NgIf,\n MarkInvalidDirective,\n MultiSelectSelectionComponent,\n ResponsiveInputComponent,\n FormsModule,\n ReactiveFormsModule,\n NgTemplateOutlet,\n AsyncPipe\n ]\n})\nexport class MultiSelectComponent extends BaseSelectDirective implements AfterViewInit, ControlValueAccessor {\n /** @internal */\n public static isStillPossibleMoveToLeft(eventSet: EventSet): boolean {\n return (\n !(\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === ARROW_LEFT &&\n eventSet.selectionLength === 0\n ) &&\n !(\n eventSet.event.keyCode === ARROW_LEFT &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0 &&\n Math.abs(eventSet.virtualCursorPosition) === eventSet.selectionLength\n )\n );\n }\n\n /** @internal */\n public static isMovingfromZeroToRight(eventSet: EventSet) {\n return eventSet.virtualCursorPosition === 0 && eventSet.inputCursorPosition === 0 && eventSet.event.keyCode === ARROW_RIGHT;\n }\n\n /** @internal */\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n /** @internal */\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() markInvalid: boolean = false;\n @Input() selection?: any[] | null = [];\n @Input() size: MultiSelectSize = 'default';\n @Input() inputId?: string;\n\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() blur = new EventEmitter<void>();\n\n /** @internal */\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n /** @internal */\n @ContentChild('selectionTemplate', { read: TemplateRef, static: true }) selectionTemplate?: TemplateRef<any>;\n\n /** @internal */\n @ViewChild(ResponsiveInputComponent, { static: false }) queryInput!: ResponsiveInputComponent;\n /** @internal */\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n /** @internal */\n @ViewChild(MultiSelectSelectionComponent, { read: ElementRef }) selectionElement?: ElementRef<HTMLElement>;\n\n /** @internal */\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n /** @internal */\n override readonly destroyed$ = new Subject<void>();\n /** @internal */\n isInputFocusedViaTab = false;\n /** @internal */\n canTokenize = true;\n /** @internal */\n get tokenize() {\n return this.canTokenize && !this.isInputFocused && !this.dropdownOpen;\n }\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n /** @internal */\n resetInput() {\n this.queryInput.resetInput();\n this.queryControl.setValue('');\n }\n\n /** @internal */\n focus() {\n this.queryInput.focusInput();\n }\n\n /** @internal */\n focusAndOpen() {\n this.queryInput.focusInput();\n this.open.next(true);\n }\n\n /** @internal */\n onFocus() {\n this.isInputFocused = true;\n this.scrollToEndOfSelection();\n this.canTokenize = false;\n }\n\n /** @internal */\n onBlur() {\n this.isInputFocused = false;\n this.isInputFocusedViaTab = false;\n this.blur.emit();\n this.canTokenize = true;\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.selectFirstOption();\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.responsiveInput.nativeElement;\n\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n\n // handle keyboard navigation for the selection\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) =>\n this.mapToEventSet(\n event,\n this.queryInput.responsiveInput.nativeElement,\n this.virtualCursorPosition,\n this.selection ? this.selection.length : 0\n )\n ),\n filter((eventSet) => {\n return !MultiSelectComponent.isMovingfromZeroToRight(eventSet) && MultiSelectComponent.isStillPossibleMoveToLeft(eventSet);\n }),\n tap((eventSet) => {\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0\n ) {\n const lastItem = last(this.selection);\n this.removeItem({ item: lastItem, isMouse: false });\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = MultiSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = MultiSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const inputKeyboardEvents$ = observableFromEvent<KeyboardEvent>(sourceElement, 'keydown');\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n event.preventDefault();\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.optionsKeyboardSelectAction$);\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n }\n\n /**\n * Adds the given option to the selection and, by default, resets the input field.\n * @param option The option to add to the selection.\n * @param keepSearchQueryAndScrollPosition If true, the search query and scroll position of the dropdown will be kept, unless there are no options left.\n * @internal\n */\n addItemToSelection(option: any, keepSearchQueryAndScrollPosition = false) {\n if (option !== null) {\n this.selection = [...(this.selection || [])].concat(option);\n this.onSelectionChange();\n }\n\n const filteredOptionsInDropdownBeforeSelection = this.dropdownBase?._items.length ?? 0;\n if (keepSearchQueryAndScrollPosition && filteredOptionsInDropdownBeforeSelection > 1) {\n return;\n }\n\n this.resetSelectState();\n }\n\n /** @internal */\n removeItem(optionToRemove: MultiSelectRemoveItemEvent) {\n if (this.disabled) {\n return;\n }\n const prevOptionIndex = findIndex((option) => option === optionToRemove.item, this.selection);\n const prevSelectionLenght = this.selection?.length ?? 0;\n this.selection = _filter((option) => option !== optionToRemove.item, this.selection);\n this.cd.markForCheck();\n this.cd.detectChanges();\n this.onSelectionChange();\n\n if (prevOptionIndex === prevSelectionLenght - 1 || optionToRemove.isMouse) {\n this.resetSelectState();\n } else {\n this.virtualCursorPosition++;\n }\n }\n\n /** @internal */\n propagateChange(_value: any[]) {}\n\n /** @internal */\n writeValue(value: any[]) {\n this.selection = value;\n }\n\n /** @internal */\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /** @internal */\n registerOnTouched(_fn: any) {}\n\n /** @internal */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** @internal */\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n\n private onSelectionChange() {\n if (this.isInputFocused) {\n this.scrollToEndOfSelection();\n }\n\n const selection = this.selection || [];\n this.selectionChange.emit([...selection]);\n this.propagateChange([...selection]);\n }\n\n private scrollToEndOfSelection() {\n setTimeout(() => {\n if (this.selectionElement) {\n this.selectionElement.nativeElement.scrollLeft = this.selectionElement.nativeElement.scrollWidth;\n }\n }, 0);\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.focused]=\"isInputFocused\"\n [class.tokenized]=\"tokenize\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n [class.hasSelection]=\"selection && selection.length > 0\"\n [class.smallSize]=\"size === 'small'\"\n [class.disabled]=\"disabled\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectedChoicesContainer\">\n <div *ngIf=\"(selection?.length === 0 || !selection) && !queryControl?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n @if (selectionTemplate) {\n <div class=\"selectionAndInput\">\n <lx-multi-select-selection\n [selection]=\"selection\"\n [tokenize]=\"tokenize\"\n [keyboardSelectAction]=\"selectionKeyboardSelectAction$\"\n (removeItem)=\"removeItem({ item: $event, isMouse: false })\"\n >\n <ng-template #innerSelectionTemplate let-option>\n <ng-container *ngTemplateOutlet=\"selectionTemplate; context: { $implicit: option }\" />\n </ng-template>\n </lx-multi-select-selection>\n <lx-responsive-input\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (focusViaTab)=\"focusedViaTab()\"\n [formControl]=\"queryControl\"\n [inputId]=\"inputId\"\n (keydown.enter)=\"$event.preventDefault()\"\n />\n </div>\n } @else {\n <div class=\"selection\">\n <ng-content select=\".pills\" />\n </div>\n <lx-responsive-input\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (focusViaTab)=\"focusedViaTab()\"\n [formControl]=\"queryControl\"\n [inputId]=\"inputId\"\n (keydown.enter)=\"$event.preventDefault()\"\n />\n }\n <i #toggle [hidden]=\"disabled\" class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\" />\n </ng-container>\n </div>\n</div>\n\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\" />\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { CounterComponent } from '../../../core-ui/components/counter/counter.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { BasicDropdownItemComponent } from '../basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\nexport type OptionGroupOption = { value: string; label: string };\n/**\n * TODO: rename to something unspecific for single selects because multiselects are also supported\n */\nexport type SingleSelectOptionGroup<T = any> = {\n label: string;\n options: (OptionGroupOption | T)[];\n};\n\n/**\n * Usage:\n *\n * ```\n * <lx-single-select\n * #singleSelect\n * [selection]=\"value\"\n * (selectionChange)=\"onSelectionChange($event)\">\n * <span class=\"selectedOption\">\n * {{ value.label }}\n * </span>\n * <lx-option-group-dropdown\n * class=\"dropdownComponent\"\n * [keyboardSelectAction]=\"singleSelect.optionsKeyboardSelectAction$\"\n * [optionGroups]=\"optionGroups\"\n * (onItemSelected)=\"singleSelect.selectOption($event)\">\n * </lx-option-group-dropdown>\n * </lx-single-select>\n * ```\n */\n@Component({\n selector: 'lx-option-group-dropdown',\n templateUrl: 'option-group-dropdown.component.html',\n styleUrls: ['option-group-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => OptionGroupDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n NgTemplateOutlet,\n InfiniteScrollModule,\n SelectableItemDirective,\n CounterComponent,\n NgFor,\n BasicDropdownItemComponent,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class OptionGroupDropdownComponent extends KeyboardSelectDirective {\n /** @internal */\n readonly NAME = 'OptionGroupDropdownComponent';\n @Input() optionGroups: SingleSelectOptionGroup[] = [];\n /**\n * Usually a stream of the current input value of the parent select.\n */\n @Input() newOptionLabel?: string;\n @Input() highlightTerm?: string;\n @Input() showCreateNewOption: boolean = false;\n @Input() labelKey: string = 'label';\n @Input() loading: boolean = false;\n @Input() trackByProperty?: string;\n @Input() showNoResultsIfGroupIsEmpty: boolean = false;\n @Input() override overlayPositioning: boolean = false;\n\n @Output() onItemSelected = new EventEmitter<OptionGroupOption | any>();\n @Output() containerScrolled = new EventEmitter();\n @Output() createNewOption = new EventEmitter<string>();\n\n /** @internal */\n @ContentChild('optionTemplate') optionTemplateRef?: TemplateRef<any>;\n /**\n * If you provide a <ng-template #noResultsOptionTemplateRef></ng-template> inside the <lx-option-group-dropdown>\n * it will be used to display the \"no results\" option instead of the default \"No results\" text.\n * This way you can easily define different \"No results\" texts for different groups too.\n * @internal\n */\n @ContentChild('noResultsOptionTemplateRef') noResultsOptionTemplateRef?: TemplateRef<any>;\n /** @internal */\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n /** @internal */\n isTopDropdown = false;\n\n /** @internal */\n public get isNewItem() {\n const options =\n this.optionGroups?.reduce<(OptionGroupOption | any)[]>((flatOptions, optionGroup) => flatOptions.concat(optionGroup.options), []) ??\n [];\n return BasicDropdownComponent.isNewItem(options, this.newOptionLabel ?? '', this.labelKey);\n }\n\n /** @internal */\n selectOption(option: OptionGroupOption | any) {\n this.onItemSelected.emit(option);\n }\n\n /** @internal */\n trackByLabel(index: number, optionGroup: SingleSelectOptionGroup) {\n return optionGroup.label + index;\n }\n\n /** @internal */\n public onCreateNewOption() {\n if (!this.loading && this.newOptionLabel) {\n this.createNewOption.emit(this.newOptionLabel);\n }\n }\n\n /** @internal */\n trackByValue(_index: number, option: OptionGroupOption | any) {\n if (this.trackByProperty) {\n return option[this.trackByProperty];\n }\n return option.value;\n }\n\n /** @internal */\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n}\n","<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\" />\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-counter class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\" />\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\" />\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n />\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item [label]=\"option.label\" labelFontWeight=\"normal\" [highlightTerm]=\"highlightTerm\" />\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\" />\n </ul>\n </div>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2\n} from '@angular/core';\nimport { pick, uniqueId } from 'lodash-es';\nimport { BehaviorSubject, Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-dropdown',\n templateUrl: 'options-dropdown.component.html',\n styleUrls: ['options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, NgClass, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective]\n})\nexport class OptionsDropdownComponent implements AfterViewInit, OnDestroy {\n /** @internal */\n readonly NAME = 'OptionsDropdownComponent';\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n @Input() closeOnSelect: boolean = true;\n @Input() overlayPositioning: boolean = false;\n @Input() dropdownClass: string = '';\n @Input() isFlexEnabledTriggerContainer: boolean = false;\n /** @internal */\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n /** @internal */\n @ContentChildren(OptionComponent, { descendants: true })\n /** @internal */\n _options!: QueryList<OptionComponent>;\n /** @internal */\n overlayScrollStrategy: ScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() closedWithoutSelection = new EventEmitter<void>();\n\n /** @internal */\n @HostBinding('style.display')\n get displayStyle() {\n return this.isFlexEnabledTriggerContainer ? 'block' : 'inline-block';\n }\n\n /** @internal */\n get overlayPositions(): ConnectedPosition[] {\n return [\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'top'\n },\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'top',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'bottom'\n }\n ];\n }\n\n /** @internal */\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.lxButton) {\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', this._open.toString());\n }\n\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n this.opened.emit();\n }\n this.changeDetection.markForCheck();\n }\n\n /** @internal */\n get open() {\n return this._open;\n }\n\n /** @internal */\n get options(): OptionComponent[] {\n return this._options?.toArray() || [];\n }\n\n /** @internal */\n get optionIds(): string[] {\n return this.options.map((o) => o.optionId);\n }\n\n /** @internal */\n get lxButton(): HTMLElement {\n return this.trigger?.nativeElement();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n /** @internal */\n readonly listboxId: string;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private changeDetection: ChangeDetectorRef,\n private readonly scrollStrategies: ScrollStrategyOptions,\n private renderer: Renderer2\n ) {\n this.listboxId = uniqueId('listbox');\n }\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.FIRST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => 0),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LAST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => this.options.length - 1),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n this.closedWithoutSelection.emit();\n this.lxButton?.focus();\n });\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index),\n takeUntil(this.destroyed$)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n this.lxButton?.focus();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n filter(() => this.closeOnSelect),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleOptionKeyDown(event);\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n\n this.setInitialAccessibilityAttributes();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n /** @internal */\n closeDropdown() {\n this.open = false;\n this.closed.emit();\n }\n\n /** @internal */\n toggleOpen() {\n this.open = !this.open;\n if (!this.open) {\n this.closed.emit();\n this.closedWithoutSelection.emit();\n }\n }\n\n private setInitialHighlightingIndex() {\n let initialIndex = this.options.findIndex((option) => option.selected && this.optionIsHighlightable(option));\n if (initialIndex === -1) {\n initialIndex = this.options.findIndex((option) => this.optionIsHighlightable(option));\n }\n this.highlightedOptionIndex$.next(initialIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]!.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n /**\n * Programmatically sets initial accessibility attributes on the trigger button so that we\n * don't have to do it manually every time we declare a new instance of this component\n */\n private setInitialAccessibilityAttributes(): void {\n if (!this.lxButton) {\n return;\n }\n\n this.renderer.setAttribute(this.lxButton, 'role', 'combobox');\n this.renderer.setAttribute(this.lxButton, 'aria-haspopup', 'listbox');\n this.renderer.setAttribute(this.lxButton, 'tabindex', '0');\n this.renderer.setAttribute(this.lxButton, 'aria-controls', this.listboxId);\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', 'false');\n }\n\n /** @internal */\n handleOptionKeyDown(event: KeyboardEvent): void {\n // In order to keep the centralized keyboard event management logic from `KeyboardActionSourceDirective`\n // we duplicate the option event here and trigger it again from lxButton.\n const newEventOptions = pick(event, [\n 'isTrusted',\n 'altKey',\n 'bubbles',\n 'charCode',\n 'cancelable',\n 'composed',\n 'key',\n 'ctrlKey',\n 'defaultPrevented',\n 'keyCode',\n 'code'\n ]);\n const newEvent = new KeyboardEvent(event.type, newEventOptions);\n\n this.lxButton?.dispatchEvent(newEvent);\n }\n}\n","<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" [ngClass]=\"{ flexDisplay: isFlexEnabledTriggerContainer }\" (click)=\"toggleOpen()\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\" />\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\" />\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\" />\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n (overlayOutsideClick)=\"closeDropdown(); closedWithoutSelection.emit()\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\" />\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\" />\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class]=\"dropdownClass\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content />\n </ul>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, delay, map, startWith, switchMap } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-sub-dropdown',\n templateUrl: 'options-sub-dropdown.component.html',\n styleUrls: ['options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [AutocloseDirective, AsyncPipe]\n})\nexport class OptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n\n @HostBinding('class.hidden')\n hidden = true;\n\n private mouseInside$ = new BehaviorSubject<boolean>(false);\n\n readonly destroyed$ = new Subject<void>();\n readonly maxHeight$ = new BehaviorSubject<string>('none');\n\n destroyRef = inject(DestroyRef);\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n @HostListener('mouseenter')\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n @HostListener('mouseleave')\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n });\n\n merge(this.showByKeyboard(), this.showByMouse())\n .pipe(debounceTime(150), takeUntilDestroyed(this.destroyRef))\n .subscribe((show) => {\n this.hidden = !show;\n this.changeDetection.markForCheck();\n if (show) {\n this.updateMaxHeight(this.trigger.elementRef);\n }\n });\n }\n\n private updateMaxHeight(elementRef: ElementRef) {\n const marginBottom = 8;\n const optionTopPosition = elementRef.nativeElement.getBoundingClientRect().top;\n const screenHeight = window.innerHeight;\n const maxHeight = `${screenHeight - optionTopPosition - marginBottom}px`;\n if (this.maxHeight$.getValue() !== maxHeight) {\n this.maxHeight$.next(maxHeight);\n }\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const showOnEnterSubmenu$ = mouseEnterTrigger$.pipe(\n switchMap(() => mouseLeaveTrigger$),\n switchMap(() => this.mouseInside$)\n );\n\n return merge(showOnEnterMouse$, showOnEnterSubmenu$);\n }\n\n closeDropdown() {\n this.hidden = true;\n }\n}\n","<div #spacingContainer class=\"spacingContainer\" [class.left]=\"align === 'left'\">\n <ul\n #subDropdown\n class=\"sub-dropdown\"\n lxAutoclose\n [class.showScrollbar]=\"(maxHeight$ | async) !== 'none'\"\n [style.max-height]=\"(maxHeight$ | async) ?? 'none'\"\n (autoclose)=\"closeDropdown()\"\n >\n <ng-content />\n </ul>\n</div>\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IconComponent } from '../icon/icon.component';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[lx-picker-option]',\n templateUrl: 'picker-option.component.html',\n styleUrls: ['picker-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, IconComponent]\n})\nexport class PickerOptionComponent implements Highlightable, OnInit {\n readonly NAME = 'PickerOptionComponent';\n @HostBinding('attr.role') role = 'option';\n @HostBinding('attr.aria-selected') ariaSelected = false;\n @HostBinding('attr.aria-label')\n public get ariaLabelValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('attr.title')\n public get titleValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('id')\n public get id(): string {\n return this.optionId;\n }\n /**\n * The optionId must be set to a unique value. It's used as value for the id property of an option.\n * As the user navigates through the list via arrow keys, the aria-activedescendant property for the\n * button in the PickerComponent is adjusted to reflect the id attribute of the active option.\n */\n @Input() optionId!: string;\n @Input() ariaLabel?: string;\n @Input() value!: any;\n @HostBinding('class.selected') @Input() selected = false;\n @HostBinding('class.clearOption') @Input() isClearOption = false;\n /**\n * Emits the value.\n */\n @Output() select = new EventEmitter<any>();\n /**\n * This property is true, when the option was selected by mouse click or by the\n * ActiveDescendantKeyManager calling setActiveStyles().\n * It's false when the ActiveDescendantKeyManager calls setInactiveStyles().\n * Is used by the PickerComponent to find the current active option.\n */\n @HostBinding('class.highlighted')\n get highlighted() {\n return this._highlighted;\n }\n set highlighted(value: boolean) {\n this._highlighted = value;\n this.cdRef.markForCheck();\n }\n private _highlighted = false;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private translateService: TranslateService\n ) {}\n\n ngOnInit() {\n if (this.selected) {\n this.ariaSelected = true;\n }\n }\n\n @HostListener('click')\n manageClickEvents() {\n this.selectOption();\n }\n\n setActiveStyles() {\n this.ariaSelected = true;\n this.highlighted = true;\n }\n\n setInactiveStyles() {\n this.ariaSelected = false;\n this.highlighted = false;\n }\n\n /**\n * Triggers the EventEmitter select() that should emit, when an option was selected.\n * This function is used in the PickerComponent when an option was selected.\n */\n selectOption() {\n this.select.emit(this.value);\n }\n}\n","<lx-icon *ngIf=\"isClearOption\" name=\"slash\" color=\"#d8d8d8\" />\n<ng-content *ngIf=\"!isClearOption\" />\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxPickerTrigger]',\n standalone: true\n})\nexport class PickerTriggerDirective implements OnDestroy {\n private readonly IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n private readonly HOST_ELEMENT_IS_BUTTON = this.element.nativeElement.matches('button');\n private focused = false;\n private allClickEvents$ = fromEvent<MouseEvent>(this.element.nativeElement, 'click').pipe(\n tap(() => {\n // There is an inconsistent behavior among browsers when it comes to focusing buttons on click.\n // Safari does not focus buttons on click, but most other browsers do. Therefore, we have to\n // introduce this hack to make sure that the button is focused when the user clicks it.\n // More details in this interesting article: https://zellwk.com/blog/inconsistent-button-behavior/\n if (this.IS_SAFARI && this.HOST_ELEMENT_IS_BUTTON) {\n this.element.nativeElement.focus();\n }\n })\n );\n private focusEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'focus');\n private blurEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'blur');\n\n public clickEvent$ = this.allClickEvents$.pipe(filter(() => this.focused === true));\n\n get width() {\n return this.element.nativeElement.offsetWidth;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private element: ElementRef<HTMLElement>) {\n this.focusEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = true;\n });\n this.blurEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = false;\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { PickerOptionComponent } from '../picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './picker-trigger.directive';\n\n/**\n * How to use:\n * Provide the lx-picker with two kinds of ContentChildren:\n * 1. A lxPickerTrigger, preferably a button element, which we use to open the dropdown on click or enter.\n * 2. A list of `<li>` elements with an lx-picker-option attribute that own the option template as content children.\n *\n * You can use this component as part of a FormGroup or wire it up yourself by listening on the (select) output of the options.\n *\n * Example usage (non FormGroup style):\n * ```\n * <lx-picker listBoxAriaLabel=\"Awesome picker\">\n * <button lxPickerTrigger lx-button mode=\"outline\" size=\"large\" [square]=\"true\" aria-label=\"Awesome picker\" title=\"Awesome picker\">\n * <lx-icon [name]=\"selection.label\" [color]=\"selection.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </button>\n * <li *ngFor=\"let option of options\" lx-picker-option [value]=\"option.value\" [selected]=\"selection === option\" (select)=\"selection = option\" [optionId]=\"option.id\">\n * <lx-icon lx-picker-option [name]=\"option.label\" [color]=\"option.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </li>\n * </lx-picker>\n * ```\n */\n@Component({\n selector: 'lx-picker',\n templateUrl: 'picker.component.html',\n styleUrls: ['picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PickerComponent)\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, AutocloseDirective]\n})\nexport class PickerComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {\n /**\n * A human-readable string value which identifies the listbox.\n * If there's a visible label, then aria-labelledby should be used instead to refer to that label.\n */\n @Input() listBoxAriaLabel?: string;\n /**\n * Identifies the visible element which identifies the listbox.\n * If there's no visible label, then aria-label should be used instead to include a label.\n */\n @Input() listBoxAriaLabelledBy?: string;\n @Input() openDirection: 'left' | 'right' = 'right';\n\n /** @internal */\n get activeDescendantsId() {\n return this._activeDescendantsId;\n }\n /** @internal */\n set activeDescendantsId(value: string | undefined) {\n this._activeDescendantsId = value;\n this.cdRef.markForCheck();\n }\n\n /** @internal */\n get open() {\n return this._open;\n }\n /** @internal */\n set open(value: boolean) {\n this._open = value;\n this.cdRef.markForCheck();\n }\n\n /**\n * Returns a negative margin, that is used to move the picker dropdown to the left side of the picker trigger.\n * @internal\n */\n get leftOffset() {\n const dropdownWidth = 185;\n return this.openDirection === 'left' ? `-${dropdownWidth - this._trigger.width}px` : '0px';\n }\n\n /** @internal */\n @ContentChildren(PickerOptionComponent)\n private options!: QueryList<PickerOptionComponent>;\n /** @internal */\n keyManager!: ActiveDescendantKeyManager<PickerOptionComponent>;\n\n /** @internal */\n @ContentChild(PickerTriggerDirective)\n private _trigger!: PickerTriggerDirective;\n /** @internal */\n private _isFormControl = false;\n /** @internal */\n private _open = false;\n /** @internal */\n private _activeDescendantsId?: string;\n /** @internal */\n private _lastSelectWasByKeyManager = false;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private dir: Directionality,\n private cdRef: ChangeDetectorRef\n ) {}\n\n /** @internal */\n @HostListener('document:keydown', ['$event'])\n manageKeyboardEvents(event: KeyboardEvent) {\n if (this.open) {\n const activeIndex = this.keyManager.activeItemIndex || 0;\n switch (event.key) {\n case 'Enter':\n setTimeout(() => {\n this.closePicker();\n });\n break;\n case 'Escape':\n case 'Tab':\n this.setActivePickerOption(-1);\n this.closePicker();\n break;\n case 'ArrowDown':\n event.preventDefault();\n const newDownIndex = this.keyManager.activeItemIndex === -1 ? 0 : activeIndex + 5;\n this.setActivePickerOption(newDownIndex < this.options.length ? newDownIndex : activeIndex);\n break;\n case 'ArrowUp':\n event.preventDefault();\n const newUpIndex = this.keyManager.activeItemIndex === -1 ? this.options.length - 1 : activeIndex - 5;\n this.setActivePickerOption(newUpIndex >= 0 ? newUpIndex : activeIndex);\n break;\n case 'ArrowLeft':\n if (this.keyManager.activeItemIndex === -1) {\n this.setActivePickerOption(this.options.length - 1);\n } else {\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n break;\n case 'Home':\n event.preventDefault();\n this.setActivePickerOption(0);\n break;\n case 'End':\n event.preventDefault();\n this.setActivePickerOption(this.options.length - 1);\n break;\n default:\n // matches ArrowRight\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n if (this.keyManager.activeItem) {\n this._lastSelectWasByKeyManager = true;\n this.propagateChange(this.keyManager.activeItem.value);\n if (!this._isFormControl) {\n this.keyManager.activeItem.selectOption();\n }\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.keyManager = new ActiveDescendantKeyManager(this.options).withHorizontalOrientation(this.dir.value).withVerticalOrientation(true);\n\n this.options.map((item: PickerOptionComponent) => {\n item.select.pipe(takeUntil(this.destroyed$)).subscribe((value: any) => {\n this.propagateChange(value);\n if (value !== this.keyManager.activeItem?.value || !this._lastSelectWasByKeyManager) {\n this.closePicker();\n }\n this._lastSelectWasByKeyManager = false;\n });\n });\n\n this._trigger.clickEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.toggleOpen();\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n closePicker() {\n this.setActivePickerOption(-1);\n this.open = false;\n }\n\n /** @internal */\n toggleOpen() {\n this.open = !this.open;\n if (this.open) {\n this.onTouched();\n }\n this.setActivePickerOption(this.open === false ? -1 : this.options.toArray().findIndex((option) => option.selected));\n }\n\n private setActivePickerOption(index: number) {\n this.keyManager.setActiveItem(index);\n if (this.keyManager.activeItem) {\n this.activeDescendantsId = this.keyManager.activeItem.optionId;\n } else {\n this.activeDescendantsId = undefined;\n }\n }\n\n //#region Angular Forms API. This is only used when using the Picker inside a FormGroup\n\n /** @internal */\n writeValue(value: any) {\n this.options?.toArray().forEach((option) => (option.selected = option.value === value));\n }\n\n /** @internal */\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n this._isFormControl = true;\n }\n\n /** @internal */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n private propagateChange(_value: any) {}\n private onTouched() {}\n\n //#endregion\n}\n","<div class=\"pickerContainer\">\n <ng-content select=\"[lxPickerTrigger]\" />\n <ul\n class=\"pickerOptions\"\n *ngIf=\"open\"\n lxAutoclose\n (autoclose)=\"closePicker()\"\n role=\"listbox\"\n [style.margin-left]=\"leftOffset\"\n [attr.aria-activedescendant]=\"activeDescendantsId\"\n [attr.aria-label]=\"listBoxAriaLabel\"\n [attr.aria-labelledby]=\"listBoxAriaLabelledBy\"\n >\n <ng-content />\n </ul>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\n\n@Component({\n selector: 'lx-pill-item',\n templateUrl: 'pill-item.component.html',\n styleUrls: ['pill-item.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class PillItemComponent {\n readonly NAME = 'PillItemComponent';\n\n @Input() item!: any;\n @Input() label!: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n removePill(item: any, isMouse: boolean = false) {\n if (!this.disabled) {\n this.remove.emit({ item, isMouse });\n }\n }\n}\n","<span data-testid=\"pill-label\" class=\"pillLabel\">{{ label }}</span>\n<span *ngIf=\"!disabled\" data-testid=\"remove-pill-item\" (click)=\"removePill(item, true)\" class=\"remove far fa-times\"></span>\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport { Observable, merge } from 'rxjs';\nimport { delay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\nimport { PillItemComponent } from '../pill-item/pill-item.component';\n\n@Component({\n selector: 'lx-pill-list',\n templateUrl: 'pill-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['pill-list.component.scss'],\n standalone: true,\n imports: [NgFor, SelectableItemDirective, NgIf, NgTemplateOutlet, PillItemComponent, AsyncPipe]\n})\nexport class PillListComponent extends KeyboardSelectDirective implements AfterViewInit {\n @Input() pills: any[] = [];\n @Input() labelKey?: string;\n /**\n * Provide an itemKey which contains the property name in each object to uniquely identify it.\n * This will be used in the trackBy function.\n */\n @Input() itemKey?: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n /**\n * If you provide an <ng-template #pillTemplate>, it will be used to render the individual pills inside of the lx-multi-select.\n * This is useful if you want to apply special attributes or CSS styling to individual pills.\n * Example:\n * <ng-template #pillTemplate let-pill>\n * <lx-pill-item [class.readOnly]=\"item.readOnly\" [label]=\"item.label\" [item]=\"item\"></lx-pill-item>\n * </ng-template>\n */\n @ContentChild('pillTemplate', { read: TemplateRef, static: true }) pillTemplate?: TemplateRef<any>;\n @ContentChildren(PillItemComponent, { emitDistinctChangesOnly: true }) contentItems!: QueryList<PillItemComponent>;\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (this.pillTemplate) {\n const removePillEvents: Observable<MultiSelectRemoveItemEvent> = this.contentItems.changes.pipe(\n startWith(this.contentItems),\n switchMap(() => merge(...this.contentItems.map((item) => item.remove))),\n delay(0),\n takeUntil(this.destroyed$)\n );\n removePillEvents.subscribe(this.removePill.bind(this));\n }\n }\n\n removePill(event: MultiSelectRemoveItemEvent) {\n this.remove.emit(event);\n }\n\n removePillViaKeyboard(pill: any) {\n this.remove.emit({ item: pill, isMouse: false });\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n}\n","<ul class=\"pills\" #keyboardSelectContainer>\n <li\n *ngFor=\"let pill of pills; let index = index; trackBy: trackByProp(itemKey)\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (select)=\"removePillViaKeyboard(pill)\"\n class=\"pill\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"pillTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"pillTemplate; context: { $implicit: pill, index: index }\" />\n </ng-container>\n <ng-template #defaultTemplate>\n <lx-pill-item [item]=\"pill\" [label]=\"labelKey ? pill[labelKey] : pill\" [disabled]=\"disabled\" (remove)=\"removePill($event)\" />\n </ng-template>\n </li>\n</ul>\n","import { includes } from 'lodash/fp';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_UP, ENTER, ESCAPE, SPACE, TAB } from './key-codes.constants';\n\nexport interface KeyboardNavigationEvents {\n verticalNavigation$: Observable<KeyboardEvent>;\n close$: Observable<KeyboardEvent>;\n dropdownKeyboardEvent$: Observable<KeyboardSelectAction | null>;\n enter$: Observable<KeyboardEvent>;\n space$: Observable<KeyboardEvent>;\n openOnArrowDown$: Observable<KeyboardEvent>;\n}\n\nexport function getKeyboardNavigationEvents(sourceElement: HTMLElement, destroyed$: Observable<void>): KeyboardNavigationEvents {\n const inputKeyboardEvents$ = fromEvent<KeyboardEvent>(sourceElement, 'keydown').pipe(takeUntil(destroyed$));\n\n const verticalNavigation$ = inputKeyboardEvents$.pipe(filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])));\n\n const close$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB));\n\n const dropdownKeyboardEvent$ = inputKeyboardEvents$.pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n })\n );\n\n const enter$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ENTER));\n const space$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === SPACE));\n\n const openOnArrowDown$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ARROW_DOWN));\n\n return {\n verticalNavigation$,\n close$,\n dropdownKeyboardEvent$,\n enter$,\n space$,\n openOnArrowDown$\n };\n}\n\nexport function stopKeyboardEventPropagation(evt: Event) {\n evt.preventDefault();\n evt.stopImmediatePropagation();\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { isEqual } from 'lodash/fp';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { ExpandedDropdownComponent } from '../expanded-dropdown/expanded-dropdown.component';\n\n@Component({\n selector: 'lx-select-list',\n templateUrl: 'select-list.component.html',\n styleUrls: ['select-list.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgTemplateOutlet]\n})\nexport class SelectListComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit {\n @Input() searchPlaceholder: string = 'Search';\n @Input() options: any[] = [];\n @Input() selection: any;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() onChooseItem = new EventEmitter<string>();\n\n /** @internal */\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n /** @internal */\n @ContentChild(ExpandedDropdownComponent, { static: false }) private dropdownComponent?: ExpandedDropdownComponent;\n\n /** @internal */\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n /** @internal */\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n /** @internal */\n @ViewChild('searchInput', { static: true }) searchInput!: ElementRef<HTMLInputElement>;\n\n /** @internal */\n highlightedIndex: number = 0;\n /** @internal */\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n /** @internal */\n override readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n /** @internal */\n focus() {\n this.searchInput.nativeElement.focus();\n }\n\n /** @internal */\n focusAndOpen() {\n this.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter(() => !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.dropdownComponent!.select(0);\n }\n } else {\n this.dropdownComponent!.select(0);\n }\n });\n // keyboard event handling\n const sourceElement = this.searchInput.nativeElement;\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n const currentIndex = this.determineHighlightIndex(this.options, this.selection);\n // keyboard selection while not searching\n if (this.searchInput.nativeElement.value === '') {\n if (event.key === 'ArrowDown') {\n if (currentIndex !== this.options.length - 1) {\n this.selectOption(currentIndex + 1);\n } else {\n this.selectOption(0);\n }\n } else {\n if (currentIndex !== 0) {\n this.selectOption(currentIndex - 1);\n } else {\n this.selectOption(this.options.length - 1);\n }\n }\n } else {\n if (event.key === 'ArrowDown') {\n if (this.highlightedIndex !== this.dropdownComponent!.options.length - 1) {\n this.highlightedIndex = this.highlightedIndex + 1;\n } else {\n this.highlightedIndex = 0;\n }\n } else {\n if (this.highlightedIndex !== 0) {\n this.highlightedIndex = this.highlightedIndex - 1;\n } else {\n this.highlightedIndex = this.dropdownComponent!.options.length - 1;\n }\n }\n this.dropdownComponent!.select(this.highlightedIndex);\n }\n });\n\n keyboardEvents.enter$.subscribe(() => {\n if (this.searchInput.nativeElement.value === '') {\n this.onChooseItem.emit(this.selection.id);\n } else if (this.dropdownComponent!.options.length) {\n this.onChooseItem.emit(this.dropdownComponent!.options[this.highlightedIndex].id);\n }\n });\n this.focusAndOpen();\n }\n\n /** @internal */\n selectOption(index: number) {\n if (this.determineHighlightIndex(this.options, this.selection) === index) {\n this.onChooseItem.emit(this.selection.id);\n } else if (index !== -1) {\n this.selection = this.options[index];\n this.selectionChange.emit(this.selection);\n this.open.next(false);\n this.focusAndOpen();\n this.dropdownComponent?.select(index);\n }\n }\n\n /** @internal */\n searchKeyChanged(event: any) {\n if (event.target.value === '' && !['ArrowUp', 'ArrowDown'].includes(event.key)) {\n this.highlightedIndex = this.determineHighlightIndex(this.dropdownComponent!.options, this.selection);\n this.dropdownComponent!.select(this.highlightedIndex);\n } else if (event.key.length === 1 || ['Backspace', 'Delete'].includes(event.key)) {\n this.highlightedIndex = 0;\n this.dropdownComponent!.select(0);\n }\n }\n\n private determineHighlightIndex(options: any[], selection: any) {\n return options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div class=\"selectContainer focused\">\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div class=\"searchWrapper\">\n <input\n #searchInput\n id=\"searchInput\"\n class=\"searchInput\"\n type=\"text\"\n autocomplete=\"off\"\n (keyup)=\"searchKeyChanged($event)\"\n [formControl]=\"queryControl\"\n [placeholder]=\"searchPlaceholder\"\n />\n <label for=\"searchInput\" class=\"fa fa-search\"></label>\n </div>\n </div>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\" />\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\" />\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\" />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with a single-select in\n * order to mark a ng-template as the template to be rendered within the select to\n * display the currently selected option.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectedOption>{{ someValue }}</ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectedOption]',\n standalone: true\n})\nexport class SelectedOptionDirective {}\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { get, includes, isEqual } from 'lodash/fp';\nimport { Subject, fromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { SelectedOptionDirective } from '../../directives/selected-option.directive';\nimport { ARROW_LEFT, ARROW_RIGHT, BACKSPACE, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\n\nexport type SingleSelectSize = 'default' | 'small' | 'select2' | 'large';\n\n@Component({\n selector: 'lx-single-select',\n templateUrl: 'single-select.component.html',\n styleUrls: ['single-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SingleSelectComponent)\n }\n ],\n standalone: true,\n imports: [NgIf, MarkInvalidDirective, NgTemplateOutlet, FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class SingleSelectComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n /** @internal */\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n /** @internal */\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() selection: any;\n @Input() selectionBackground: 'white' | 'gray' = 'white';\n @Input() size: SingleSelectSize = 'default';\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() inputId?: string;\n @Input({ transform: booleanAttribute }) required: boolean = false;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() blur = new EventEmitter<FocusEvent>();\n\n /** @internal */\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n /** @internal */\n @ContentChild(SelectedOptionDirective, { read: TemplateRef, static: true }) explicitSelectedOption?: TemplateRef<any>;\n /** @internal */\n @ContentChild(BasicDropdownComponent, { static: false }) private dropdownComponent?: BasicDropdownComponent;\n\n /** @internal */\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n /** @internal */\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n\n /** @internal */\n get selectedOptionTmpl() {\n return this.explicitSelectedOption || this.implicitSelectedOption;\n }\n\n /** @internal */\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n @Input() allowClear = true;\n @Input() tabIndex: number = 0;\n @Input() markInvalid: boolean = false;\n\n /** @internal */\n @ViewChild('queryInput', { static: true }) queryInput!: ElementRef<HTMLInputElement>;\n\n /** @internal */\n override readonly destroyed$ = new Subject<void>();\n /** @internal */\n isInputFocusedViaTab = false;\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n /** @internal */\n get cursorStyle() {\n if (this.disabled) {\n return 'default';\n } else if (this.allowQuery) {\n return 'text';\n } else {\n return 'pointer';\n }\n }\n\n /** @internal */\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n /** @internal */\n focus() {\n this.queryInput.nativeElement.focus();\n }\n\n /** @internal */\n focusAndOpen() {\n this.queryInput.nativeElement.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open && !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection, this.dropdownComponent!.itemKey);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.selectFirstOption();\n }\n } else {\n this.selectFirstOption();\n }\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.nativeElement;\n // handle keyboard navigation for the selection\n fromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) => this.mapToEventSet(event, sourceElement, this.virtualCursorPosition)),\n tap((eventSet) => {\n if (!this.allowQuery && eventSet.event.keyCode !== BACKSPACE) {\n // additional check for even.code for userEvent API compatibility\n if (eventSet.event.keyCode !== TAB && eventSet.event.code !== 'Tab') {\n // if querying is disabled, only the tab key press event will be propagated, so that you can still defocus.\n eventSet.event.preventDefault();\n }\n return;\n }\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n this.selection &&\n this.allowClear\n ) {\n this.removeSelection();\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => this.allowQuery && eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = SingleSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = SingleSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n });\n\n keyboardEvents.close$.subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n keyboardEvents.dropdownKeyboardEvent$.subscribe(this.optionsKeyboardSelectAction$);\n\n keyboardEvents.enter$.subscribe(() => this.open.next(!this.dropdownOpen));\n keyboardEvents.space$.pipe(filter(() => !this.allowQuery)).subscribe(() => {\n if (this.dropdownOpen) {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.EXECUTE);\n }\n this.open.next(!this.dropdownOpen);\n });\n\n keyboardEvents.openOnArrowDown$.subscribe(() => this.open.next(true));\n }\n\n /** @internal */\n selectOption(option: any) {\n this.selection = option;\n\n this.selectionChange.emit(option);\n this.propagateChange(option);\n\n this.resetSelectState();\n\n // This timeout makes sure that the dropdown will be closed at the end\n // of all the callbacks in the open subscriptions.\n setTimeout(() => {\n this.open.next(false);\n });\n }\n\n /** @internal */\n removeSelection() {\n this.selection = null;\n this.cd.markForCheck();\n this.cd.detectChanges();\n\n this.selectionChange.emit(this.selection);\n this.propagateChange(this.selection);\n\n this.resetSelectState();\n }\n\n /** @internal */\n propagateChange(_value: any) {}\n\n /** @internal */\n writeValue(newSelection: any) {\n this.selection = newSelection;\n }\n\n /** @internal */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** @internal */\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /** @internal */\n registerOnTouched(_fn: any) {}\n\n /** @internal */\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n\n private determineHighlightIndex(options: any[], selection: any, itemKey?: string) {\n return itemKey\n ? options.findIndex((option) => isEqual(get(itemKey, selection), get(itemKey, option)) || isEqual(selection, get(itemKey, option)))\n : options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer {{ padding }}Padding\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.disabled]=\"disabled\"\n [class.grayBackground]=\"selectionBackground === 'gray'\"\n [class.defaultSize]=\"size === 'default'\"\n [class.smallSize]=\"size === 'small'\"\n [class.select2Size]=\"size === 'select2'\"\n [class.largeSize]=\"size === 'large'\"\n [style.cursor]=\"cursorStyle\"\n [class.focused]=\"isInputFocused\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div *ngIf=\"!selection && selection !== 0 && !queryInput?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div\n *ngIf=\"!allowQuery || !queryInput?.value\"\n class=\"selection\"\n [class.lowerOpacity]=\"allowQuery && !queryInput?.value && dropdownOpen\"\n [class.lightgrayColor]=\"!allowQuery && dropdownOpen\"\n (click)=\"$event.stopPropagation(); focus()\"\n >\n <ng-container *ngTemplateOutlet=\"selectedOptionTmpl\" />\n </div>\n <input\n #queryInput\n class=\"queryInput\"\n type=\"text\"\n [attr.id]=\"inputId\"\n [attr.required]=\"required ? 'true' : null\"\n [class.isHidden]=\"!allowQuery\"\n (keydown.enter)=\"$event.preventDefault()\"\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; isInputFocusedViaTab = false; blur.emit($event)\"\n (keyup.tab)=\"focusedViaTab()\"\n (keyup.shift.tab)=\"focusedViaTab()\"\n [tabIndex]=\"disabled ? -1 : tabIndex\"\n [formControl]=\"queryControl\"\n [readOnly]=\"!allowQuery\"\n />\n </div>\n <div class=\"iconContainer\">\n <i *ngIf=\"(selection || selection === 0) && allowClear && !disabled\" class=\"far fa-times\" (click)=\"removeSelection()\"></i>\n <i #toggle class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\" />\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\" />\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\" />\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { ButtonComponent } from '../../../core-ui/components/button/button.component';\n\n@Component({\n selector: 'lx-sorting-dropdown-trigger',\n templateUrl: 'sorting-dropdown-trigger.component.html',\n styleUrls: ['sorting-dropdown-trigger.component.scss'],\n standalone: true,\n imports: [ButtonComponent]\n})\nexport class SortingDropdownTriggerComponent {\n @Input() label!: string;\n @Input() currentSortingLabel!: string;\n @Input() disabled: boolean = false;\n}\n","<button lx-button mode=\"link\" [disabled]=\"disabled\" endIcon=\"fa-angle-down\">\n {{ label ? label + ': ' : '' }}{{ currentSortingLabel }}\n</button>\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { Sorting, SortingOrder } from '../../models/sorting.interface';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\nimport { OptionComponent } from '../option/option.component';\nimport { OptionsDropdownComponent } from '../options-dropdown/options-dropdown.component';\nimport { SortingDropdownTriggerComponent } from '../sorting-dropdown-trigger/sorting-dropdown-trigger.component';\n\n/**\n * Used for translation. The dash in the name ensures that this will not clash with a DataModel field.\n * This key is used when there is no sorting parameter sent to the allFactSheets query, meaning that the ElasticSearch\n * score will be used for sorting.\n */\nexport const RELEVANCE_SORTING_KEY = 'lx-relevance';\n\n@Component({\n selector: 'lx-sorting-dropdown',\n templateUrl: 'sorting-dropdown.component.html',\n styleUrls: ['sorting-dropdown.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n OptionsDropdownComponent,\n SortingDropdownTriggerComponent,\n KeyboardActionSourceDirective,\n OptionGroupComponent,\n NgFor,\n OptionComponent,\n TranslateModule\n ]\n})\nexport class SortingDropdownComponent implements OnInit {\n @Input() currentSorting!: Sorting | null;\n @Input() sortingOptions: Sorting[] = [];\n @Input() showDirectionOptions = true;\n @Output() public apply = new EventEmitter<Sorting>();\n readonly NAME = 'SortingDropdownComponent';\n readonly sortingDirections: SortingOrder[] = ['asc', 'desc'];\n\n ngOnInit() {\n if (!this.currentSorting) {\n this.currentSorting = this.sortingOptions[0] ? { key: this.sortingOptions[0].key, order: this.sortingOptions[0].order } : null;\n }\n }\n\n applySortingMode(sort: Sorting) {\n this.apply.emit({\n key: sort.key,\n order: sort.order\n });\n }\n\n applySortingDirection(sortDirection: SortingOrder) {\n if (this.currentSorting) {\n this.apply.emit({\n key: this.currentSorting.key,\n order: sortDirection\n });\n }\n }\n\n getSortLabel(key: string): `sorting.${string}.label` {\n return `sorting.${key}.label`;\n }\n}\n","<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n />\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ option?.key ? (getSortLabel(option.key) | translate) : '' }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Switch component is a toggle switch that can be used to switch between two states.\n */\n@Component({\n selector: 'lx-switch',\n templateUrl: 'switch.component.html',\n styleUrl: './switch.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class SwitchComponent {\n /** Value of the switch */\n @Input() public value!: boolean;\n /** Size of the switch */\n @Input() public size: 'small' = 'small';\n /** Whether the switch is disabled */\n @Input() public disabled = false;\n /** Label of the switch */\n @Input() public label!: string;\n /** Whether the label is in front of the switch */\n @Input() public labelInFront = true;\n /** Id of the switch */\n @Input() public elementId?: string;\n\n /** Event that is emitted when the switch is toggled */\n @Output() public toggle = new EventEmitter<boolean>();\n\n /** @internal */\n onToggle() {\n this.toggle.emit(!this.value);\n }\n\n get id() {\n return this.elementId ? `tour${this.elementId}` : null;\n }\n\n /** @internal */\n focus(checkbox: HTMLInputElement) {\n // without a delay the checkbox will not be focused again\n setTimeout(() => checkbox.focus(), 150);\n }\n}\n","<div\n class=\"wrapper\"\n [class.withLabel]=\"label\"\n [class.withLabelBehind]=\"label && !labelInFront\"\n [class.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [class.small]=\"size === 'small'\"\n>\n <span *ngIf=\"label\" class=\"labelText\" [class.off]=\"!value\">{{ label }}</span>\n <label class=\"checkbox\" [class.small]=\"size === 'small'\">\n <input\n #inputRef\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (click)=\"inputRef.blur()\"\n (change)=\"onToggle()\"\n (keydown.space)=\"focus(inputRef)\"\n (keydown.enter)=\"onToggle()\"\n />\n <span class=\"slider\"></span>\n </label>\n</div>\n","// /**\n// * Converts HTML to text, preserving semantic newlines for block-level\n// * elements. (Taken from https://stackoverflow.com/a/20384452/6813271)\n// *\n// * @param node - The HTML node to perform text extraction.\n// */\n// export function getNodeTextWithNewlines(node: Element, _inner = false): string {\n// let result = '';\n\n// if (node.nodeType === document.TEXT_NODE) {\n// // Replace repeated spaces, newlines, and tabs with a single space.\n// result = node.nodeValue.replace( /\\s+/g, ' ' );\n// } else {\n// for (let i = 0, j = node.childNodes.length; i < j; i++ ) {\n// result += this.getNodeTextWithNewlines(node.childNodes[i] as Element, true);\n// }\n// const d = node['currentStyle'] ?\n// node['currentStyle']['display'] :\n// document.defaultView.getComputedStyle(node, null).getPropertyValue('display');\n// if (d.match(/^block/)) {\n// result = '\\n' + result + '\\n';\n// } else if (d.match(/list/) || d.match(/row/) || node.tagName === 'BR' || node.tagName === 'HR' ) {\n// result += '\\n';\n// }\n// }\n\n// return _inner ? result : _.trim(result, '\\n');\n// }\n\n/** Trim whitespaces from html */\nexport function trimHtml(str: string): string {\n return str\n .replace(/(<\\/?(br *\\/?|p)>| |\\s)*$/i, '')\n .replace(/^(<\\/?(br *\\/?|p)>| |\\s)*/i, '')\n .replace(/^<(div|p)>(<\\/?(br *\\/?|p)>| |\\s)*<\\/ *(div|p)>$/i, '');\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SecurityContext, SimpleChanges } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { intersection, isNil } from 'lodash-es';\nimport { NbspPipe } from '../../core-ui/pipes/nbsp.pipe';\nimport { trimHtml } from '../../shared/html-helpers.function';\n\n// First version based on https://stackoverflow.com/a/41253897/6813271\n@Directive({\n selector: '[lxContenteditableModel]',\n standalone: true\n})\nexport class ContenteditableDirective implements OnChanges {\n /** Model */\n @Input() lxContenteditableModel!: string;\n @Output() lxContenteditableModelChange = new EventEmitter<string>();\n /** Allow (sanitized) html */\n @Input() lxContenteditableHtml: boolean | 'trim' = false;\n @Input() lxContenteditableHtmlPaste: boolean = true;\n\n private emittedValue: string | null = null;\n\n constructor(\n private elRef: ElementRef<HTMLElement>,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['lxContenteditableModel']) {\n // On init: if lxContenteditableModel is empty, read from DOM in case the element has content\n if (changes['lxContenteditableModel'].isFirstChange() && !this.lxContenteditableModel) {\n // Prevent Exp.HasChanged: Don't read and emit value from DOM during change detection\n setTimeout(() => {\n this.onInput(true);\n });\n }\n this.refreshView();\n }\n }\n\n @HostListener('input')\n @HostListener('blur')\n @HostListener('keyup')\n onInput(initialInlineData = false) {\n let value = this.elRef.nativeElement[this.getProperty()] as string;\n value = this.cleanContent(value, initialInlineData);\n this.emittedValue = value;\n this.lxContenteditableModelChange.emit(value);\n }\n\n /**\n * @param event {ClipboardEvent}\n */\n @HostListener('paste', ['$event']) onPaste(event: any) {\n const clipboardEvent = event as ClipboardEvent;\n this.onInput();\n // For text-only contenteditable, remove pasted HTML.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n let isHtml: boolean = true;\n // TODO: Use beforepaste event. See https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/.\n if (clipboardEvent.clipboardData && clipboardEvent.clipboardData.types) {\n const types = [].slice.apply(clipboardEvent.clipboardData.types);\n isHtml = intersection(types, ['text/html', 'com.apple.webarchive']).length > 0;\n }\n if (isHtml) {\n // 1 tick wait is required for DOM update\n setTimeout(() => {\n // Cursor will be lost\n // The lint disabling here should be clearified. See if and how this directive is needed.\n this.elRef.nativeElement.innerHTML = this.sanitizer.sanitize(\n SecurityContext.HTML,\n this.elRef.nativeElement.innerText.replace(/\\n/g, '<br />')\n )!;\n });\n }\n }\n }\n\n @HostListener('drop', ['$event']) onDrop(event: MouseEvent) {\n this.onInput();\n // For text-only contenteditable, don't allow drop content.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n\n return false;\n }\n\n private cleanContent(value: string, initialInlineData = false): string {\n if (this.lxContenteditableHtml === 'trim' || (this.lxContenteditableHtml && initialInlineData)) {\n value = trimHtml(value);\n } else if (initialInlineData && !this.lxContenteditableHtml && value) {\n value = value.replace(/^[\\n\\s]+/, '');\n value = value.replace(/[\\n\\s]+$/, '');\n }\n // Some browsers like Chrome insert nbsp; when using contentEditable attribute\n return new NbspPipe().transform(value);\n }\n\n private refreshView() {\n if (!isNil(this.lxContenteditableModel)) {\n const newContent = this.cleanContent(this.lxContenteditableModel);\n // Only refresh if content changed to avoid cursor loss\n // (as ngOnChanges can be triggered an additional time by onInput())\n if (this.emittedValue === null || this.emittedValue !== newContent) {\n this.elRef.nativeElement[this.getProperty()] = this.sanitize(newContent)!;\n }\n }\n }\n\n private getProperty(): 'innerHTML' | 'innerText' {\n return this.lxContenteditableHtml ? 'innerHTML' : 'innerText';\n }\n\n private sanitize(content: string): string | null {\n return this.lxContenteditableHtml ? this.sanitizer.sanitize(SecurityContext.HTML, content) : content;\n }\n}\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subscription, fromEvent } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'form',\n standalone: true\n})\nexport class FormSubmitDirective implements OnDestroy {\n submitted$ = new BehaviorSubject(false);\n private subscription: Subscription;\n\n constructor(private elementRef: ElementRef) {\n this.subscription = fromEvent(this.elementRef.nativeElement, 'submit')\n .pipe(take(1))\n .subscribe(() => this.submitted$.next(true));\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import {\n ComponentFactoryResolver,\n ComponentRef,\n DestroyRef,\n Directive,\n Host,\n Inject,\n InjectionToken,\n Input,\n OnInit,\n Optional,\n Self,\n ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { curry } from 'lodash-es';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { ErrorMessageComponent } from '../components/error-message/error-message.component';\nimport { FormSubmitDirective } from './form-submit.directive';\n\nexport type FormControlErrorDisplayStrategy = (obj: { control: AbstractControl; submitted?: boolean }) => boolean;\n\nexport const FORM_CONTROL_ERROR_NAMESPACE = new InjectionToken<string>('FORM_CONTROL_ERROR_NAMESPACE');\nexport const FORM_CONTROL_ERROR_DISPLAY_STRATEGY = new InjectionToken<FormControlErrorDisplayStrategy>(\n 'FORM_CONTROL_ERROR_DISPLAY_STRATEGY'\n);\n\nexport const provideFormControlErrorNamespace = (namespace: string) => ({\n provide: FORM_CONTROL_ERROR_NAMESPACE,\n useValue: namespace\n});\n\nexport const provideFormControlErrorDisplayStrategy = (fn: FormControlErrorDisplayStrategy) => ({\n provide: FORM_CONTROL_ERROR_DISPLAY_STRATEGY,\n useValue: fn\n});\n\n@Directive({\n selector: '[lxFormError]',\n standalone: true\n})\nexport class FormErrorDirective implements OnInit {\n @Input('lxFormError') ctrl?: AbstractControl | '';\n @Input() controlName?: string;\n private ref?: ComponentRef<ErrorMessageComponent>;\n\n private get control(): AbstractControl | null | undefined {\n return this.ngControl?.control || this.ctrl || null;\n }\n\n private get name(): string | number | null | undefined {\n return this.ngControl?.name || this.controlName;\n }\n\n private get formSubmitted(): Observable<boolean | undefined> {\n return this.formSubmitDirective ? this.formSubmitDirective.submitted$ : of(undefined);\n }\n\n constructor(\n private viewContainer: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private translateService: TranslateService,\n private destroyRef: DestroyRef,\n @Optional() @Self() private ngControl?: NgControl,\n @Optional() @Host() private formSubmitDirective?: FormSubmitDirective,\n @Optional() @Inject(FORM_CONTROL_ERROR_NAMESPACE) private namespace?: string,\n @Optional() @Inject(FORM_CONTROL_ERROR_DISPLAY_STRATEGY) private strategy?: FormControlErrorDisplayStrategy\n ) {}\n\n ngOnInit() {\n const control = this.control;\n if (isAbstractControl(control)) {\n combineLatest([control.valueChanges.pipe(startWith(control.value)), this.formSubmitted])\n .pipe(\n map(([, submitted]) => submitted),\n map(resolveStrategy(this.strategy, control)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((display) => {\n const { errors } = control;\n if (errors && display) {\n const firstErrorKey = Object.keys(errors)[0];\n const translationKey = this.buildTranslationKey(firstErrorKey!);\n this.setError(translationKey);\n } else if (this.ref) {\n this.setError();\n }\n });\n }\n }\n\n private buildTranslationKey(errorKey: string) {\n if (this.control) {\n return `${this.namespace || 'form'}.errors.${this.name ? `${this.name}.` : ''}${errorKey}`;\n } else {\n return '';\n }\n }\n\n private setError(key?: string) {\n if (!this.ref) {\n const factory = this.componentFactoryResolver.resolveComponentFactory(ErrorMessageComponent);\n this.ref = this.viewContainer.createComponent(factory);\n }\n if (key) {\n this.translateService\n .get(key)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((message) => {\n if (this.ref) {\n this.ref.instance.dynamicErrorMessage.set(message);\n }\n });\n } else {\n this.ref.instance.dynamicErrorMessage.set('');\n }\n }\n}\n\nconst isAbstractControl = (ctrl: AbstractControl | null | undefined): ctrl is AbstractControl => !!ctrl;\nconst resolveStrategy = curry(\n (strategy: FormControlErrorDisplayStrategy | undefined, control: AbstractControl, submitted: boolean | undefined) =>\n strategy ? strategy({ control, submitted }) : true\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, find, includes, isEqual, isObject } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterBySelection',\n standalone: true\n})\nexport class FilterSelectionPipe implements PipeTransform {\n transform(items: any[] | null | undefined, selection: any, itemKey?: string): any[] {\n const isArray = Array.isArray(selection);\n return filter((item) => {\n if (isArray) {\n if (isObject(item)) {\n return itemKey\n ? !find((selectedItem) => selectedItem?.[itemKey] === (item as any)?.[itemKey], selection)\n : !find(item, selection);\n } else {\n return !includes(item, selection);\n }\n } else {\n return !isEqual(item, selection);\n }\n }, items);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, toLower } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterByTerm',\n standalone: true\n})\nexport class FilterTermPipe implements PipeTransform {\n transform(items: any[] | null, options: { term?: string | null; key?: string }): any[] {\n if (items === null) {\n return [];\n }\n if (options.term) {\n return filter((item) => {\n const value = options.key ? item[options.key] : item;\n return toLower(value).indexOf(toLower(options.term!)) > -1;\n }, items);\n } else {\n return items;\n }\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LOCALE_FN } from '../../core-ui/core-ui.constants';\nimport { CURRENCY_SYMBOL_MAP } from '../components/currency/currency-symbol-map.constant';\n\n/**\n * Reformats numbers into a short format.\n * @example {{ 1000 | lxFormatNumber | async }} prints 1K\n *\n * If the parameter currency is set, a currency sign is inserted based on the value and the current locale.\n * In this case, the pipe must be used with an innerHtml attribute.\n * @example [innerHtml]=\"1000 | lxFormatNumber: 'USD' | async\" prints $1K\n */\n@Pipe({\n name: 'lxFormatNumber',\n standalone: true\n})\nexport class FormatNumberPipe implements PipeTransform {\n constructor(@Inject(LOCALE_FN) private getLocale: Function) {}\n\n transform(number: number | undefined | null, currency?: string): Observable<string | null> {\n const locale$: Observable<string> = this.getLocale();\n return locale$.pipe(\n map((locale) => {\n if (number === null || number === undefined) {\n return null;\n }\n const options: any = {\n notation: 'compact',\n compactDisplay: 'short'\n };\n if (currency) {\n try {\n const currencyOptions = { ...options, currency, style: 'currency' };\n const formatedNumberWithCurrency = new Intl.NumberFormat(locale, currencyOptions).format(number);\n return this.getFormatedCurrency(formatedNumberWithCurrency, currency);\n } catch (_error) {\n console.warn(`FormatNumberPipe: Invalid currency code: ${currency}`);\n return new Intl.NumberFormat(locale, options).format(number);\n }\n }\n return new Intl.NumberFormat(locale, options).format(number);\n })\n );\n }\n\n /**\n * Use custom currency symbol, when the currency in the formated number doesn't match the\n * symbol in the CURRENCY_SYMBOL_MAP.\n */\n private getFormatedCurrency(formatedNumberWitCurrency: string, currency: string): string {\n const currencyMapping = CURRENCY_SYMBOL_MAP[currency];\n if (currencyMapping && currencyMapping !== currency && !formatedNumberWitCurrency.includes(currencyMapping)) {\n return formatedNumberWitCurrency.replace(currency, currencyMapping);\n }\n return formatedNumberWitCurrency;\n }\n}\n","import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { BasicDropdownItemComponent } from './components/basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from './components/basic-dropdown/basic-dropdown.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { CdkOptionsDropdownComponent } from './components/cdk-options-dropdown/cdk-options-dropdown.component';\nimport { CdkOptionsSubDropdownComponent } from './components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nimport { CurrencyInputComponent } from './components/currency/currency-input.component';\nimport { CurrencySymbolComponent } from './components/currency/currency-symbol.component';\nimport { DateInputComponent } from './components/date-input/date-input.component';\nimport { DatepickerUiModule } from './components/date-picker-ui/datepicker-ui.module';\nimport { LxDragAndDropListModule } from './components/drag-and-drop-list/drag-and-drop-list.module';\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\nimport { ExpandedDropdownComponent } from './components/expanded-dropdown/expanded-dropdown.component';\nimport { FormErrorComponent } from './components/form-error/form-error.component';\nimport { IconComponent } from './components/icon/icon.component';\nimport { InputComponent } from './components/input/input.component';\nimport { MultiSelectComponent } from './components/multi-select/multi-select.component';\nimport { OptionGroupDropdownComponent } from './components/option-group-dropdown/option-group-dropdown.component';\nimport { OptionGroupComponent } from './components/option-group/option-group.component';\nimport { OptionComponent } from './components/option/option.component';\nimport { OptionsDropdownComponent } from './components/options-dropdown/options-dropdown.component';\nimport { OptionsSubDropdownComponent } from './components/options-sub-dropdown/options-sub-dropdown.component';\nimport { PickerOptionComponent } from './components/picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './components/picker/picker-trigger.directive';\nimport { PickerComponent } from './components/picker/picker.component';\nimport { PillItemComponent } from './components/pill-item/pill-item.component';\nimport { PillListComponent } from './components/pill-list/pill-list.component';\nimport { ResponsiveInputComponent } from './components/responsive-input/responsive-input.component';\nimport { SelectListComponent } from './components/select-list/select-list.component';\nimport { SingleSelectComponent } from './components/single-select/single-select.component';\nimport { SortingDropdownTriggerComponent } from './components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nimport { SortingDropdownComponent } from './components/sorting-dropdown/sorting-dropdown.component';\nimport { SwitchComponent } from './components/switch/switch.component';\nimport { ContenteditableDirective } from './directives/contenteditable.directive';\nimport { FormErrorDirective } from './directives/form-error.directive';\nimport { FormSubmitDirective } from './directives/form-submit.directive';\nimport { KeyboardActionSourceDirective } from './directives/keyboard-action-source.directive';\nimport { MarkInvalidDirective } from './directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from './directives/select-dropdown.directive';\nimport { SelectableItemDirective } from './directives/selectable-item.directive';\nimport { SelectedOptionDirective } from './directives/selected-option.directive';\nimport { FilterSelectionPipe } from './pipes/filter-selection.pipe';\nimport { FilterTermPipe } from './pipes/filter-term.pipe';\nimport { FormatNumberPipe } from './pipes/format-number.pipe';\n\nexport const FORMS_MODULE_EXPORTS = [\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectDropdownDirective,\n SelectedOptionDirective,\n SelectListComponent,\n SingleSelectComponent,\n SwitchComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n FormatNumberPipe,\n FormErrorDirective,\n FormSubmitDirective,\n ErrorMessageComponent,\n LxDragAndDropListModule,\n ContenteditableDirective,\n InputComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule.forChild(),\n DatepickerUiModule.forRoot(),\n InfiniteScrollModule,\n ClipboardModule,\n OverlayModule,\n LxDragAndDropListModule,\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectedOptionDirective,\n SelectDropdownDirective,\n SingleSelectComponent,\n SelectListComponent,\n SwitchComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n InputComponent,\n FormatNumberPipe,\n FormErrorDirective,\n ErrorMessageComponent,\n FormSubmitDirective,\n ContenteditableDirective\n ],\n exports: FORMS_MODULE_EXPORTS\n})\nexport class LxFormsModule {}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, Self } from '@angular/core';\nimport { FormControl, NgControl, Validators } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxMaxLengthCounter]',\n standalone: true\n})\nexport class MaxLengthCounterDirective implements OnInit, OnDestroy {\n @Input() lxMaxLengthCounter: number | null = null;\n @Input() lxMaxLengthCounterRef?: HTMLSpanElement;\n private counterElement: HTMLElement | null = null;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n @Self() private ngControl: NgControl\n ) {}\n\n ngOnInit() {\n this.setupMaxLengthValidation();\n this.connectCounter();\n this.updateCounter();\n this.subscribeToValueChanges();\n this.setupInputRestriction();\n this.checkForInitialOversize();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setupMaxLengthValidation() {\n const maxLength = this.getMaxLength();\n const control = this.ngControl.control;\n\n if (maxLength !== null && control) {\n const validators = control.validator ? [control.validator, Validators.maxLength(maxLength)] : Validators.maxLength(maxLength);\n control.setValidators(validators);\n control.updateValueAndValidity();\n }\n }\n\n private getMaxLength(): number | null {\n if (this.lxMaxLengthCounter) {\n return this.lxMaxLengthCounter;\n }\n const control = this.ngControl.control;\n const validatorFn = control?.validator;\n const errors = validatorFn?.(new FormControl({ length: Infinity }));\n const requiredLength = errors?.['maxlength']['requiredLength'];\n this.lxMaxLengthCounter = requiredLength ? requiredLength.toString() : null;\n if (this.lxMaxLengthCounter === null) {\n console.warn('lxMaxLength directive is used without a value or a control with a maxLength validator');\n }\n return requiredLength;\n }\n\n private connectCounter() {\n this.el.nativeElement.classList.add('lx-max-length-counter-input');\n if (this.lxMaxLengthCounterRef) {\n this.counterElement = this.lxMaxLengthCounterRef;\n } else {\n this.createCounter();\n }\n }\n\n private createCounter() {\n this.counterElement = this.renderer.createElement('span');\n this.renderer.addClass(this.counterElement, 'lx-max-length-counter');\n const nextSibling = this.el.nativeElement.nextSibling;\n if (nextSibling) {\n this.renderer.insertBefore(this.el.nativeElement.parentNode, this.counterElement, nextSibling);\n } else {\n this.renderer.appendChild(this.el.nativeElement.parentNode, this.counterElement);\n }\n this.destroy$.subscribe(() => {\n this.renderer.removeChild(this.el.nativeElement.parentNode, this.counterElement);\n });\n }\n\n private updateCounter() {\n if (this.counterElement) {\n const currentLength = this.ngControl.value ? this.ngControl.value.length : 0;\n const maxLength = this.getMaxLength();\n this.renderer.setProperty(this.counterElement, 'textContent', `${currentLength} / ${maxLength}`);\n }\n }\n\n private subscribeToValueChanges() {\n const control = this.ngControl.control;\n if (control) {\n control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.updateCounter();\n });\n }\n }\n\n private setupInputRestriction() {\n const maxLength = this.getMaxLength();\n if (maxLength !== null) {\n this.renderer.listen(this.el.nativeElement, 'beforeinput', (event: InputEvent) => {\n const input = event.target as HTMLInputElement;\n const selectionStart = input.selectionStart || 0;\n const selectionEnd = input.selectionEnd || 0;\n const newValue = input.value.slice(0, selectionStart) + (event.data || '') + input.value.slice(selectionEnd);\n\n // Prevent input if the new value exceeds the max length and grows\n if (newValue.length > maxLength && newValue.length > input.value.length) {\n event.preventDefault();\n }\n });\n\n this.renderer.listen(this.el.nativeElement, 'input', () => {\n this.updateCounter();\n });\n }\n }\n private checkForInitialOversize() {\n const maxLength = this.getMaxLength();\n const value = this.ngControl.value;\n if (maxLength !== null && value && value.length > maxLength) {\n this.ngControl.control?.markAsDirty({ onlySelf: true });\n this.ngControl.control?.updateValueAndValidity({ onlySelf: true });\n }\n }\n}\n","export type SortingOrder = 'asc' | 'desc';\nexport class Sorting {\n key: string = '';\n order: SortingOrder = 'asc';\n}\n","import { formatDate } from '@angular/common';\nimport { AbstractControl } from '@angular/forms';\n\n/**\n * Due to limitations of the native html datepicker this validator is needed:\n * In the datepicker the min and max values only apply if the date is altered e.g. via scrolling.\n * It is still possible to manually input a value lower or higher than min and max value.\n */\nexport function ValidateDateInForeseeableFuture(control: AbstractControl) {\n // matches yyyy-mm-dd\n const dateRegex = /^\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])$/;\n\n if (control.value && dateRegex.test(control.value)) {\n const today = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n\n const maxDate = '2999-12-31';\n if (control.value < today || control.value > maxDate) {\n return {\n dateInForseeableFuture: {\n valid: false\n }\n };\n } else {\n return null;\n }\n }\n return null;\n}\n","import { AbstractControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { Observable, map, of } from 'rxjs';\n\nfunction stringIsInArray(array: string[], stringToFind: string, valueMapFunction?: (value: string) => string) {\n const valueToFind = valueMapFunction ? valueMapFunction(stringToFind).toLocaleLowerCase() : stringToFind.toLowerCase();\n return array.map((item) => item.toLocaleLowerCase()).indexOf(valueToFind) > -1;\n}\n\n/**\n * Validates that a string is not inside an array of strings\n */\nexport function ValidateStringNotInArray(\n array: string[],\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArray'\n): ValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return null;\n }\n if (stringIsInArray(array, control.value, valueMapFunction)) {\n return {\n [validatorName]: true\n };\n }\n return null;\n };\n}\n\nexport function ValidateStringNotInArrayAsync(\n array$: Observable<string[]>,\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArrayAsync'\n): AsyncValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return of(null);\n }\n return array$.pipe(map((array) => ValidateStringNotInArray(array, valueMapFunction, validatorName)(control)));\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const MODAL_CLOSE = new InjectionToken<Observable<ModalCloseClickLocation | boolean>>('MODAL_CLOSE');\n\n/**\n * An enum to track how the modal was closed\n * Escape - Esc key press\n * CloseButton - top right close button (x)\n * OutsideClick - click outside the modal\n * Other - modal close with the trigger through closeModal$ subject\n */\nexport enum ModalCloseClickLocation {\n Escape = 'escape',\n CloseButton = 'closeButton',\n OutsideClick = 'outsideClick',\n CancelButton = 'cancelButton',\n Other = 'other'\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-footer',\n templateUrl: 'modal-footer.component.html',\n styleUrls: ['modal-footer.component.scss'],\n standalone: true\n})\nexport class ModalFooterComponent {\n @Input() border: boolean = false;\n}\n","<div class=\"footerContainer\" [class.border]=\"border\">\n <ng-content />\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-header',\n templateUrl: 'modal-header.component.html',\n styleUrls: ['modal-header.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class ModalHeaderComponent {\n @Input() public title: string = '';\n @Input() public bottomBorder: boolean = true;\n}\n","<div class=\"headerContainer\" [class.bottomBorder]=\"bottomBorder\">\n <ng-content />\n <h1 class=\"lx-heading-2\" *ngIf=\"title.length > 0\">{{ title }}</h1>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[lxModalContent]',\n standalone: true\n})\nexport class ModalContentDirective {}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortal, Portal, PortalModule } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ModalContentDirective } from '../../directives/modal-content.directive';\nimport { MODAL_CLOSE, ModalCloseClickLocation } from '../../modal.constants';\nimport { ModalFooterComponent } from '../modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from '../modal-header/modal-header.component';\n\n/**\n * This documentation provides details on the usage and configuration of the Modal.\n *\n * ## Usage\n *\n * 1. Import `LxModalModule` and `LxCoreUiModule` modules from `@leanix/components` in your module where you want to use the component.\n *\n * ```ts\n * import { LxModalModule, LxCoreUiModule } from '@leanix/components';\n * ```\n *\n * 2. Use the **lx-modal** component in your template with the parameters described below.\n *\n * - **`open`**: Whether the modal is open or closed.\n * - **`size`**: 'dialog' | 'dialog-large'.\n * - **`verticalScroll`**: Whether the modal is scrollable or not.\n * - **`showHeader`**: Whether the modal has a header or not.\n * - **`showFooter`**: Whether the modal has a footer or not.\n * - **`showCloseButton`**: Whether to show the close button.\n * - **`showBackButton`**: Whether to show the back button.\n *\n * 3. Use optional **lx-modal-header** component in your template with the parameters described below.\n *\n * - **`title`**: Title of the modal.\n * - **`subtitle`**: Subtitle of the modal.\n * - **`bottomBorder`**: Whether to show a bottom border.\n *\n * 4. Use optional **lx-modal-footer** component in your template with the parameters described below.\n *\n * - **`border`**: Whether to show the footer at the bottom of the modal.\n *\n * **GLOBAL PROVIDERS** required for this component:\n * - `provideAnimations()`\n *\n * **ATTENTION - SCROLLABLE DIALOG**:\n * The <lx-modal> component when used as \"dialog\" is not designed to work with a\n * scrollable body (via `overflow: auto | scroll`) in combination with dropdowns.\n * The overflow on the body will also clip the dropdowns, which is expected.\n *\n * Reasoning:\n * The contents within the dialog should be just a few elements which fit and\n * justify the usage of a dialog. If the content is larger than the dialog, and thus\n * requires scrolling, we should discuss whether to put it into a dialog at all\n * and rather think about putting the content on a separate route or\n * using the fullscreen version of the modal.\n */\n@Component({\n selector: 'lx-modal',\n templateUrl: 'modal.component.html',\n styleUrls: ['modal.component.scss'],\n animations: [\n trigger('modal', [\n transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),\n transition(':leave', animate('0.15s', style({ opacity: 0 })))\n ])\n ],\n standalone: true,\n imports: [PortalModule, NgIf, NgTemplateOutlet, TranslateModule]\n})\nexport class ModalComponent implements OnChanges, OnInit, OnDestroy, AfterViewInit {\n /** @internal */\n readonly NAME = 'ModalComponent';\n /** Whether the modal is open or closed. */\n @Input() open: boolean = false;\n /** Whether to show the close button. */\n @Input() showCloseButton = true;\n /** Whether to show the back button. */\n @Input() showBackButton = false;\n /*\n * If true, then the content area scrolls vertically instead of expanding its height.\n * This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.\n */\n @Input() verticalScroll = false;\n /** The size of the modal. */\n @Input() size: 'fullscreen' | 'dialog-large' | 'dialog' = 'fullscreen';\n /**\n * Minimum width of the modal.\n *\n * _NB: Some modal implementations rely on this minWidth being 600px_\n */\n @Input() minWidth: string = '600px';\n /** Whether the modal is a focus trap. */\n @Input() isFocusTrap: boolean = false;\n /** Function to check if the modal can be closed. */\n @Input() canModalBeClosed?: (closeLocation: ModalCloseClickLocation | boolean) => Promise<boolean>;\n /** Event emitted when the modal is closed. */\n @Output() close = new EventEmitter<ModalCloseClickLocation>();\n /** Event emitted when the back button is clicked. */\n @Output() back = new EventEmitter<void>();\n\n /** @internal */\n @ContentChild(ModalHeaderComponent) header?: ModalHeaderComponent;\n /** @internal */\n @ContentChild(ModalFooterComponent) footer?: ModalFooterComponent;\n /** @internal */\n @ViewChild(CdkPortal, { static: true }) cdkPortal!: Portal<CdkPortal>;\n private overlayRef!: OverlayRef;\n private oldOverflow?: string;\n /** @internal */\n closeLocation = ModalCloseClickLocation;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n /** @internal */\n @ContentChild(ModalContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n /** @internal */\n @HostListener('document:keydown.escape') onEscape() {\n if (this.open && this.showCloseButton) {\n this.closeModal(ModalCloseClickLocation.Escape);\n }\n }\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n @Optional() @Inject(MODAL_CLOSE) private closeModal$: Observable<ModalCloseClickLocation | boolean>,\n private focusTrap: ConfigurableFocusTrapFactory\n ) {}\n\n ngOnInit() {\n this.closeModal$\n ?.pipe(takeUntil(this.destroyed$))\n .subscribe((closeLocation: ModalCloseClickLocation | boolean) => this.closeModal(closeLocation));\n\n if (this.size === 'fullscreen') {\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n width: '100%',\n height: '100vh'\n });\n } else if (this.size === 'dialog-large') {\n const positionStrategy = this.overlay.position().global().top('4vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n positionStrategy,\n hasBackdrop: true,\n width: '90%',\n height: '90vh'\n });\n } else {\n // size 'dialog'\n const positionStrategy = this.overlay.position().global().top('8vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n minWidth: this.minWidth,\n positionStrategy,\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n }\n\n if (this.size !== 'fullscreen') {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.closeModal(ModalCloseClickLocation.OutsideClick));\n }\n }\n\n ngOnChanges() {\n if (this.open && this.overlayRef && !this.overlayRef.hasAttached()) {\n this.openModal();\n }\n if (!this.open && this.overlayRef && this.overlayRef.hasAttached()) {\n this.closeModal(ModalCloseClickLocation.Other);\n }\n if (this.open && this.overlayRef && this.overlayRef.hasAttached() && this.isFocusTrap) {\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n }\n\n ngAfterViewInit() {\n if (this.open) {\n timer(0)\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.openModal());\n }\n }\n\n /** @internal */\n openModal() {\n this.oldOverflow = document.documentElement.style.overflowY;\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', 'hidden');\n }\n\n this.overlayRef.attach(this.cdkPortal);\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n\n /** @internal */\n emitBack() {\n this.back.emit();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n /** @internal */\n async closeModal(closeLocation: ModalCloseClickLocation | boolean) {\n if (!this.canModalBeClosed || (await this.canModalBeClosed(closeLocation))) {\n this.open = false;\n this.overlayRef.detach();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n this.close.emit(typeof closeLocation === 'boolean' ? ModalCloseClickLocation.Other : closeLocation);\n }\n }\n\n private trapFocusInModal(hostElement: HTMLElement) {\n this.focusTrap.create(hostElement);\n }\n}\n","<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <!-- TODO lx-button doesn't comply with modal close button style yet -->\n <!-- eslint-disable-next-line @nx/workspace-no-icon-in-button-content -->\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal(closeLocation.CloseButton)\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\" />\n <div class=\"modalContentContainer\" [class.lxThinScrollbar]=\"verticalScroll\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\" />\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content />\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ModalFooterComponent } from './components/modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from './components/modal-header/modal-header.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ModalContentDirective } from './directives/modal-content.directive';\n\nexport const MODAL_MODULE_EXPORTS = [ModalComponent, ModalHeaderComponent, ModalFooterComponent, ModalContentDirective];\n\n@NgModule({\n imports: [\n CommonModule,\n PortalModule,\n OverlayModule,\n A11yModule,\n TranslateModule.forChild(),\n ModalComponent,\n ModalHeaderComponent,\n ModalFooterComponent,\n ModalContentDirective\n ],\n exports: MODAL_MODULE_EXPORTS\n})\nexport class LxModalModule {}\n","import { Directive } from '@angular/core';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n selector: '[lxPopoverContent]',\n standalone: true\n})\nexport class PopoverContentDirective {}\n","import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { SatPopoverComponent, SatPopoverHorizontalAlign, SatPopoverModule, SatPopoverVerticalAlign } from '@ncstate/sat-popover';\nimport { PopoverContentDirective } from '../../directives/popover-content.directive';\nimport { PopoverTriggerDirective } from '../../directives/popover-hover.directive';\n\n/**\n * The Popover component is based on the [ncstate-sat/popover](https://github.com/ncstate-sat/popover) library.\n *\n * ## Examples\n\n * This popover encapsulates this open source library: https://github.com/ncstate-sat/popover,\n * make sure to also check out the docs over there.\n *\n * As of today they are two trigger strategies to display a popover.\n * 1. Show on hovering the anchor and while hovering the popover body.\n * 2. Show on click and while hovering the popover body.\n *\n * For use case 1. you would use the lxPopoverHover directive, which exports as hoverAnchor.\n *\n * ### Example:\n * ```html\n * <div lxPopoverHover\n * hoverAnchor\n * satPopoverAnchor\n * #anchor=\"hoverAnchor\"></div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\">\n * <p>Popover content</p>\n * </lx-popover>\n * ```\n *\n * For use case 2. you would use the lxPopoverClick directive, which exports as clickAnchor.\n * Note: Since the only component where we use the lxPopoverClick directive (ReportComponent)\n * needs to fetch some data before opening it, we do not register a click EventListener in this directive,\n * but require the developer to implement that in the component, where the popover is used.\n *\n * ### Example:\n * ```html\n * <div lxPopoverClick\n * clickAnchor\n * satPopoverAnchor\n * #anchor=\"clickAnchor\"\n * (click)=\"popover.open()\">Click Me!</div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\"\n * #popover>\n * <p>Popover content</p>\n * </lx-popover>\n * ```\n *\n * If this component is used with angularCompilerOptions strictTemplates=true,\n * satPopoverAnchor must be set to the reference to the SatPopover inside lx-popover.\n *\n * ### Example:\n * ```html\n * <div [satPopoverAnchor]=\"popover.satPopover\"></div>\n * <lx-popover #popover>\n * <p>Popover content</p>\n * </lx-popover>\n * ```\n */\n@Component({\n selector: 'lx-popover',\n templateUrl: 'popover.component.html',\n styleUrls: ['popover.component.scss'],\n standalone: true,\n imports: [SatPopoverModule, NgClass, NgIf, NgTemplateOutlet]\n})\nexport class PopoverComponent implements OnChanges {\n /** The trigger directive that will open the popover. This is also the anchor for the popover. */\n @Input() trigger!: PopoverTriggerDirective;\n /** The horizontal alignment of the popover (`center` by default). */\n @Input() horizontalAlign!: SatPopoverHorizontalAlign;\n /** The vertical alignment of the popover (`above` by default). */\n @Input() verticalAlign!: SatPopoverVerticalAlign;\n /** Whether to apply margins. */\n @Input() noMargin = false;\n /** Whether to allow the popover to overflow the viewport. */\n @Input() allowOverflow = false;\n /** Whether to focus the first focusable element in the popover when it is opened. */\n @Input() autoFocus = false;\n /** Whether to restore focus to the previously-focused element when the popover is closed. */\n @Input() restoreFocus = true;\n /** Whether the popover has a backdrop. */\n @Input() hasBackdrop = false;\n /**\n * If you have a popover, that should usually be displayed above or below its anchor,\n * and this anchor is in a scrollable container, you should set this to true.\n * SatPopover will open this popover in the direction where there is enough space,\n * so its position might differ from the horizontalAlign and verticalAlign values.\n * In this case we rely on the SatPopover::_classList property to get the computed\n * position of the popover after opening.\n */\n @Input() adaptMarginsForViewportAlignChange = false;\n\n /** Event emitted when the popover is opened. */\n @Output() opened = new EventEmitter<void>();\n /** Event emitted when the popover is closed. */\n @Output() closed = new EventEmitter<void>();\n\n /** @internal */\n @ViewChild(SatPopoverComponent, { static: true }) satPopover!: SatPopoverComponent;\n /** @internal */\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n /** @internal */\n @ContentChild(PopoverContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n /** @internal */\n marginClasses!: string;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n get isOpen() {\n return this._isOpen;\n }\n private _isOpen = false;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['horizontalAlign'] && changes['verticalAlign']) {\n this.marginClasses = this.getDefaultMarginClasses(this.horizontalAlign, this.verticalAlign);\n }\n }\n\n /** @internal */\n open() {\n this.satPopover.open();\n }\n\n /** @internal */\n close() {\n this.satPopover.close();\n }\n\n /** @internal */\n onOpen() {\n this._isOpen = true;\n this.opened.emit();\n }\n\n /** @internal */\n onAfterOpen() {\n if (this.adaptMarginsForViewportAlignChange) {\n this.marginClasses = this.getMarginClassesForClassList(this.satPopover._classList);\n }\n }\n\n /** @internal */\n onClose() {\n this._isOpen = false;\n this.closed.emit();\n }\n\n /**\n * SatPopover::_classList will contain a map of alignment CSS classes, once the popover was opened.\n * These alignment classes can be different from what you would expect from the horizontal- and verticalAlign inputs,\n * because there might not be enough space above the anchor to meet the verticalAlign='above' criteria,\n * so it will be displayed below the anchor instead.\n */\n private getMarginClassesForClassList(satPopoverClassList: { [className: string]: boolean }): string {\n if (this.noMargin) {\n return '';\n }\n\n if (satPopoverClassList['sat-popover-above']) {\n return this.marginClasses.includes('top') ? this.marginClasses : 'top';\n }\n\n if (satPopoverClassList['sat-popover-below']) {\n return this.marginClasses.includes('bottom') ? this.marginClasses : 'bottom';\n }\n\n if (satPopoverClassList['sat-popover-before']) {\n return this.marginClasses.includes('left') ? this.marginClasses : 'left';\n }\n\n if (satPopoverClassList['sat-popover-after']) {\n return this.marginClasses.includes('right') ? this.marginClasses : 'right';\n }\n\n if (satPopoverClassList['sat-popover-center']) {\n return '';\n }\n return '';\n }\n\n private getDefaultMarginClasses(horizontalAlign: SatPopoverHorizontalAlign, verticalAlign: SatPopoverVerticalAlign): string {\n if (this.noMargin) {\n return '';\n }\n\n if (horizontalAlign === 'after') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'right';\n } else if (verticalAlign === 'above') {\n return 'right top';\n } else if (verticalAlign === 'below') {\n return 'right bottom';\n }\n }\n\n if (horizontalAlign === 'before') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'left';\n } else if (verticalAlign === 'above') {\n return 'left top';\n } else if (verticalAlign === 'below') {\n return 'left bottom';\n }\n }\n\n if (horizontalAlign === 'center' || horizontalAlign === 'start' || horizontalAlign === 'end') {\n if (verticalAlign === 'above') {\n return 'top';\n } else if (verticalAlign === 'below') {\n return 'bottom';\n }\n }\n return '';\n }\n}\n","<sat-popover\n [anchor]=\"trigger.anchor\"\n [horizontalAlign]=\"horizontalAlign\"\n [verticalAlign]=\"verticalAlign\"\n [restoreFocus]=\"restoreFocus\"\n [lockAlignment]=\"true\"\n [autoFocus]=\"autoFocus\"\n [hasBackdrop]=\"hasBackdrop\"\n openTransition=\"0ms\"\n closeTransition=\"0ms\"\n (opened)=\"onOpen()\"\n (afterOpen)=\"onAfterOpen()\"\n (closed)=\"onClose()\"\n>\n <div\n class=\"popoverContainer\"\n [ngClass]=\"marginClasses\"\n [class.overflowHidden]=\"!allowOverflow\"\n (mouseenter)=\"trigger.showPopover(true)\"\n (mouseleave)=\"!hasBackdrop && trigger.closePopover(true)\"\n (keydown.escape)=\"$event.stopPropagation(); trigger.closePopover(true)\"\n >\n <ng-container *ngIf=\"isOpen\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </ng-container>\n </div>\n</sat-popover>\n<ng-template #implicitContent>\n <ng-content />\n</ng-template>\n","import { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchorDirective } from '@ncstate/sat-popover';\nimport { Observable, Subject, of } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../shared/observe';\nimport { PopoverTriggerDirective } from './popover-hover.directive';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'clickAnchor',\n selector: '[lxPopoverClick]',\n standalone: true\n})\nexport class PopoverClickDirective implements PopoverTriggerDirective, AfterViewInit, OnDestroy {\n @Input() lxPopoverPinned = false;\n @Observe('lxPopoverPinned') pinned$!: Observable<boolean>;\n\n private onPopoverShow = new Subject<void>();\n\n private onMouseLeave = new Subject<void>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchorDirective) {}\n\n ngAfterViewInit() {\n this.onMouseLeave\n .pipe(\n switchMap(() => this.pinned$),\n filter((pinned) => !pinned),\n switchMap(() => of(null).pipe(delay(300), takeUntil(this.onPopoverShow))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.close());\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n showPopover() {\n this.onPopoverShow.next();\n }\n\n @HostListener('mouseleave')\n closePopover() {\n this.onMouseLeave.next();\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchorDirective } from '@ncstate/sat-popover';\nimport { Subject, of } from 'rxjs';\nimport { delay, switchMap, takeUntil } from 'rxjs/operators';\n\nexport interface PopoverTriggerDirective {\n anchor: SatPopoverAnchorDirective;\n showPopover(skipDelay?: boolean): void;\n closePopover(skipDelay?: boolean): void;\n}\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'hoverAnchor',\n selector: '[lxPopoverHover]',\n standalone: true\n})\nexport class PopoverHoverDirective implements AfterViewInit, OnDestroy {\n /**\n * Amount of time to delay (ms) after hovering starts before\n * the popover opens.\n */\n @Input()\n get lxPopoverHover() {\n return this._lxPopoverHover;\n }\n set lxPopoverHover(val: unknown) {\n this._lxPopoverHover = coerceNumberProperty(val, 200);\n }\n private _lxPopoverHover!: number;\n\n /**\n * Relevant for tooltip style.\n */\n @Input()\n skipCloseDelay = false;\n\n /** Emits when the user's mouse enters the element. */\n private onMouseEnter = new Subject<{ skipDelay: boolean }>();\n\n /** Emits when the user's mouse leaves the element. */\n private onMouseLeave = new Subject<{ skipDelay: boolean }>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchorDirective) {}\n\n ngAfterViewInit() {\n // Whenever the user hovers this host element, delay the configured\n // amount of time and open the popover. Terminate if the mouse leaves\n // the host element before the delay is complete.\n this.onMouseEnter\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : this._lxPopoverHover), takeUntil(this.onMouseLeave))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.open());\n\n // Whenever the user leaves this host element, delay the closing of the popover by the configured delay.\n // Abort closing if during this delay another mouseEnter event occurs, for example by the popover itself.\n this.onMouseLeave\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : 300), takeUntil(this.onMouseEnter))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n if (this.anchor.popover.isOpen()) {\n // This is the default case: the popover was shown, now we want to close it.\n this.anchor.popover.close();\n } else {\n // This can happen if we have delayed the opening of the popover, but the mouse left the anchor before\n // the popover was shown. In this case, this.anchor.popover.close() would not generate a closed event,\n // which is why we generate it manually here. This behavior supports cases where a \"dummy\" anchor is\n // dynamically created, like the Fact Sheet detail popover in Reporting or the relations diagram.\n this.anchor.popover.closed.emit();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n @HostListener('mouseenter')\n showPopover(skipDelay = false) {\n this.onMouseEnter.next({ skipDelay });\n }\n\n @HostListener('mouseleave')\n closePopover(skipDelay = this.skipCloseDelay) {\n this.onMouseLeave.next({ skipDelay });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SatPopoverModule } from '@ncstate/sat-popover';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { PopoverClickDirective } from './directives/popover-click.directive';\nimport { PopoverContentDirective } from './directives/popover-content.directive';\nimport { PopoverHoverDirective } from './directives/popover-hover.directive';\n\n@NgModule({\n imports: [CommonModule, SatPopoverModule, PopoverHoverDirective, PopoverClickDirective, PopoverComponent, PopoverContentDirective],\n exports: [SatPopoverModule, PopoverClickDirective, PopoverHoverDirective, PopoverComponent, PopoverContentDirective]\n})\nexport class LxPopoverUiModule {}\n","/**\n * Key codes that we listen to for\n * user action on our lx-tab-group\n */\nexport enum LxTabGroupKeyCode {\n ArrowRight = 'ArrowRight',\n ArrowLeft = 'ArrowLeft',\n Home = 'Home',\n End = 'End'\n}\n","import { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { uniqueId } from 'lodash/fp';\nimport { Observable, switchMap } from 'rxjs';\nimport { CounterComponent } from '../../../core-ui/components/counter/counter.component';\nimport { Observe } from '../../../shared/observe';\nimport { LxTabGroupKeyCode } from '../tab-group/tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, CounterComponent, PortalModule]\n})\nexport class TabComponent {\n /**\n * The icon input takes a font awesome selector\n * WARNING: Currently this component does not support using an icon together with a label or counter.\n */\n @Input() icon?: string;\n @Input() label: string = '';\n @Input() title?: string;\n /**\n * In some parts of the application, we are passing a plain string to the tabLink input, whereas in\n * most parts, the input is passed as an array. The RouterLink directive also accepts both types,\n * therefore we are using type of the input as string | any[].\n */\n @Input() tabLink?: string | any[];\n @Input() counter?: number;\n @Input() routerLinkActiveOptions: { exact: boolean } = { exact: true };\n @Input() counterBadgeSize: 'default' | 'small' = 'default';\n @Input() noMargin: boolean = false;\n @Input() noLeftMarginForFirstTab: boolean = false;\n @Input() background: 'white' | 'gray' = 'white';\n @Input() disabled: boolean = false;\n\n @Output() switch = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n tabId: string;\n\n @ViewChild('contentTemplate', { static: true })\n content?: TemplatePortal<any>;\n\n @ViewChild('tabElement') tabElement?: ElementRef<HTMLElement>;\n\n @Observe('routerLinkActive') routerLinkActive$!: Observable<RouterLinkActive>;\n @ViewChild(RouterLinkActive) routerLinkActive?: RouterLinkActive;\n /**\n * Used by the lx-tab-group to be notified when a lx-tab that is a link\n * is set to active by the Angular router.\n */\n routerLinkActiveChange$: Observable<boolean>;\n\n set isActive(value: boolean) {\n this._isActive = value;\n this.cd.markForCheck();\n }\n get isActive() {\n if (this.routerLinkActive) {\n return this.routerLinkActive.isActive;\n }\n return this._isActive;\n }\n private _isActive = false;\n\n constructor(\n private cd: ChangeDetectorRef,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.tabId = uniqueId('tab');\n this.routerLinkActiveChange$ = this.routerLinkActive$.pipe(switchMap((routerLinkActive) => routerLinkActive.isActiveChange));\n }\n\n select(): void {\n this.switch.emit();\n }\n\n setFocus(): void {\n this.tabElement?.nativeElement?.focus();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (Object.values<string>(LxTabGroupKeyCode).includes(event.code)) {\n // Send this KeyDown event up to our parent to be handled there\n this.keyDownAction.emit(event);\n return;\n }\n\n const isKeyCodeToSelectFocusedTab = event.code === 'Enter' || event.code === 'Space';\n if (!isKeyCodeToSelectFocusedTab) {\n return;\n }\n\n /**\n * We are preventing the default browser behavior when the `SPACE` key is pressed, in which\n * case the browser would scroll down the page.\n */\n event.preventDefault();\n if (this.tabLink) {\n const formattedTabLink = typeof this.tabLink === 'string' ? [this.tabLink] : this.tabLink;\n this.router.navigate(formattedTabLink, { relativeTo: this.activatedRoute }).then(() => {\n this.select();\n });\n } else {\n this.select();\n }\n }\n}\n","<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\" />\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-counter *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\" />\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content />\n </div>\n </ng-template>\n</li>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { first, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { TabComponent } from '../tab/tab.component';\nimport { LxTabGroupKeyCode } from './tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab-group',\n templateUrl: 'tab-group.component.html',\n styleUrls: ['tab-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [PortalModule, NgTemplateOutlet]\n})\nexport class TabGroupComponent implements OnChanges, AfterContentInit, OnDestroy {\n @Input() isCentered: boolean = false;\n /**\n * The tab whose content should be displayed.\n */\n @Input() selectedIndex: number = 0;\n @Output() indexChange = new EventEmitter<number>();\n\n /** @internal */\n @Observe('tabsQueryList') tabsQueryList$!: Observable<QueryList<TabComponent>>;\n /** @internal */\n @ContentChildren(TabComponent) tabsQueryList?: QueryList<TabComponent>;\n /** @internal */\n @ViewChild('tabListElement') tabListElement?: ElementRef<HTMLElement>;\n\n /**\n * The tab that is currently focused via keyboard.\n * @internal\n */\n focusedIndex: number = 0;\n\n /** @internal */\n get tabIds(): string[] {\n return this.tabs.map((t) => t.tabId);\n }\n private get tabs(): TabComponent[] {\n return this.tabsQueryList?.toArray() || [];\n }\n\n /** @internal */\n get activeTabPortal() {\n return this.tabs[this.selectedIndex]?.content;\n }\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(private cd: ChangeDetectorRef) {\n this.listenToFirstTabSelectByAngularRouterForTabLinks().subscribe((tab) => {\n // synchonize the focusedIndex and selectedIndex state with the tab that is active through the current route.\n this.switchTo(tab);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const tab = this.tabs[this.selectedIndex];\n if (changes['selectedIndex'] && !changes['selectedIndex'].isFirstChange() && tab) {\n this.switchTo(tab);\n }\n }\n\n ngAfterContentInit() {\n if (this.tabs[0]) {\n this.tabs[0].noLeftMarginForFirstTab = true;\n }\n const tab = this.tabs[this.selectedIndex];\n if (tab && !tab.tabLink) {\n this.switchTo(tab);\n }\n\n const listenToTabsSwitch = (tabs: TabComponent[]) => merge(...tabs.map((tab) => tab.switch.asObservable().pipe(map(() => tab))));\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => listenToTabsSwitch(this.tabs)),\n takeUntil(this.destroyed$)\n )\n .subscribe((tab) => {\n this.switchTo(tab);\n });\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => merge(...this.tabs.map((tab) => tab.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleKeyDown(event);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n onFocusOut(event: any) {\n if (!this.tabListElement?.nativeElement?.contains(event.relatedTarget)) {\n // resync focused index on selected index when leaving tabs\n this.focusedIndex = this.selectedIndex;\n }\n }\n\n /** @internal */\n switchTo(tab: TabComponent) {\n this.tabsQueryList?.forEach((t, index) => {\n t.isActive = t === tab;\n if (t.isActive) {\n this.selectedIndex = index;\n this.focusedIndex = index;\n this.indexChange.emit(index);\n }\n });\n this.cd.markForCheck();\n }\n\n /** @internal */\n handleKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case LxTabGroupKeyCode.ArrowRight:\n const newTabIndex = (this.focusedIndex + 1) % this.tabs.length;\n this.focusTab(newTabIndex);\n break;\n case LxTabGroupKeyCode.ArrowLeft:\n const previousTabIndex = this.focusedIndex === 0 ? this.tabs.length - 1 : this.focusedIndex - 1;\n this.focusTab(previousTabIndex);\n break;\n case LxTabGroupKeyCode.Home:\n event.preventDefault();\n this.focusTab(0);\n break;\n case LxTabGroupKeyCode.End:\n event.preventDefault();\n this.focusTab(this.tabs.length - 1);\n break;\n }\n }\n\n private focusTab(tabIndex: number): void {\n const tab = this.tabs[tabIndex];\n if (!tab) {\n return;\n }\n\n tab.setFocus();\n this.focusedIndex = tabIndex;\n }\n\n private listenToFirstTabSelectByAngularRouterForTabLinks() {\n return this.tabsQueryList$.pipe(\n switchMap(() => {\n const tabLinks = this.tabs.filter((tab) => !!tab.tabLink);\n return merge(...tabLinks.map((tab) => tab.routerLinkActiveChange$.pipe(map(() => tab))));\n }),\n first(),\n takeUntil(this.destroyed$) // added in addition to first() here since for tab groups without links no single value will ever be emit.\n );\n }\n}\n","<ul\n #tabListElement\n class=\"tabs\"\n role=\"tablist\"\n (focusout)=\"onFocusOut($event)\"\n [attr.aria-owns]=\"tabIds.join(' ')\"\n [class.centered]=\"isCentered\"\n>\n <ng-content />\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\" />\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TabGroupComponent } from './components/tab-group/tab-group.component';\nimport { TabComponent } from './components/tab/tab.component';\n\n@NgModule({\n imports: [PortalModule, CommonModule, RouterModule, TabGroupComponent, TabComponent],\n exports: [TabGroupComponent, TabComponent]\n})\nexport class LxTabUiModule {}\n","/*----------------- core-ui -----------------*/\n\nexport * from './lib/core-ui/core-ui.constants';\nexport * from './lib/core-ui/core-ui.module';\n\n// Pipes\nexport * from './lib/core-ui/pipes/br.pipe';\nexport * from './lib/core-ui/pipes/contrast-color.pipe';\nexport * from './lib/core-ui/pipes/custom-date.pipe';\nexport * from './lib/core-ui/pipes/highlight-range.pipe';\nexport * from './lib/core-ui/pipes/highlight-term.pipe';\nexport * from './lib/core-ui/pipes/lx-is-uuid.pipe';\nexport * from './lib/core-ui/pipes/lx-time-ago.pipe';\nexport * from './lib/core-ui/pipes/lx-translate.pipe';\nexport * from './lib/core-ui/pipes/markdown.pipe';\nexport * from './lib/core-ui/pipes/nbsp.pipe';\nexport * from './lib/core-ui/pipes/sort.pipe';\nexport * from './lib/core-ui/pipes/translation-after.pipe';\nexport * from './lib/core-ui/pipes/translation-before.pipe';\nexport * from './lib/core-ui/pipes/translation-between.pipe';\nexport * from './lib/core-ui/pipes/unescape-curly-braces.pipe';\n\n// Directives\nexport * from './lib/core-ui/directives/after-view-init.directive';\nexport * from './lib/core-ui/directives/autoclose.directive';\nexport * from './lib/core-ui/directives/autofocus.directive';\n\n// Components\nexport * from './lib/core-ui/components/avatar-group/avatar-group.component';\nexport * from './lib/core-ui/components/avatar/avatar.component';\nexport * from './lib/core-ui/components/badge/badge.component';\nexport * from './lib/core-ui/components/banner/banner.component';\nexport * from './lib/core-ui/components/button-group/button-group.component';\nexport * from './lib/core-ui/components/button/button.component';\nexport * from './lib/core-ui/components/card/card.component';\nexport * from './lib/core-ui/components/collapsible/collapsible.component';\nexport * from './lib/core-ui/components/counter/counter.component';\nexport * from './lib/core-ui/components/ellipsis/ellipsis.component';\nexport * from './lib/core-ui/components/empty-state/empty-state.component';\nexport * from './lib/core-ui/components/icon-scale/icon-scale.component';\nexport * from './lib/core-ui/components/skeleton/skeleton.component';\nexport * from './lib/core-ui/components/spinner/spinner.component';\nexport * from './lib/core-ui/components/stepper/stepper.component';\nexport * from './lib/core-ui/components/table/table-header/table-header.component';\nexport * from './lib/core-ui/components/table/table.component';\nexport * from './lib/core-ui/components/tiny-spinner/tiny-spinner.component';\nexport * from './lib/core-ui/components/tokenizer/token/token.component';\nexport * from './lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component';\nexport * from './lib/core-ui/components/tokenizer/tokenizer.component';\n// Tooltip\nexport * from './lib/core-ui/tooltip/tooltip-position.interface';\nexport * from './lib/core-ui/tooltip/tooltip.component';\nexport * from './lib/core-ui/tooltip/tooltip.directive';\n\n// Models\nexport * from './lib/core-ui/components/avatar/avatar.model';\n\n// Linkify\nexport * from './lib/core-ui/linkify/linkify.pipe';\nexport * from './lib/core-ui/linkify/unlinkify.pipe';\n\n// Functions\nexport * from './lib/core-ui/components/avatar/avatar.helpers';\nexport * from './lib/core-ui/functions/core-css.helpers';\nexport * from './lib/core-ui/functions/highlight-text.function';\n\n// Services\nexport * from './lib/core-ui/directives/autoclose-group.service';\nexport * from './lib/core-ui/services/resize-observer.service';\n/*----------------- forms-ui -----------------*/\n\nexport * from './lib/forms-ui/forms-ui.module';\n\n// Components\nexport * from './lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component';\nexport * from './lib/forms-ui/components/basic-dropdown/basic-dropdown.component';\nexport * from './lib/forms-ui/components/breadcrumb/breadcrumb.component';\nexport * from './lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component';\nexport * from './lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/currency/currency-input.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol-map.constant';\nexport * from './lib/forms-ui/components/currency/currency-symbol.component';\nexport * from './lib/forms-ui/components/date-input/date-input.component';\nexport * from './lib/forms-ui/components/date-picker-ui/date-formatter';\nexport * from './lib/forms-ui/components/date-picker-ui/datepicker-ui.module';\nexport * from './lib/forms-ui/components/date-picker-ui/datepicker.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component';\nexport * from './lib/forms-ui/components/error-message/error-message.component';\nexport * from './lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component';\nexport * from './lib/forms-ui/components/form-error/form-error.component';\nexport * from './lib/forms-ui/components/icon/icon.component';\nexport * from './lib/forms-ui/components/input/input.component';\nexport * from './lib/forms-ui/components/multi-select/multi-select.component';\nexport * from './lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component';\nexport * from './lib/forms-ui/components/option-group/option-group.component';\nexport * from './lib/forms-ui/components/option/option.component';\nexport * from './lib/forms-ui/components/options-dropdown/options-dropdown.component';\nexport * from './lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/picker-option/picker-option.component';\nexport * from './lib/forms-ui/components/picker/picker.component';\nexport * from './lib/forms-ui/components/pill-item/pill-item.component';\nexport * from './lib/forms-ui/components/pill-list/pill-list.component';\nexport * from './lib/forms-ui/components/responsive-input/responsive-input.component';\nexport * from './lib/forms-ui/components/select-list/select-list.component';\nexport * from './lib/forms-ui/components/single-select/single-select.component';\nexport * from './lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nexport * from './lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component';\nexport * from './lib/forms-ui/components/switch/switch.component';\n\n// Directives\nexport * from './lib/forms-ui/components/keyboard-select.directive';\nexport * from './lib/forms-ui/components/picker/picker-trigger.directive';\nexport * from './lib/forms-ui/directives/contenteditable.directive';\nexport * from './lib/forms-ui/directives/form-error.directive';\nexport * from './lib/forms-ui/directives/form-submit.directive';\nexport * from './lib/forms-ui/directives/keyboard-action-source.directive';\nexport * from './lib/forms-ui/directives/mark-invalid.directive';\nexport * from './lib/forms-ui/directives/max-length-counter.directive';\nexport * from './lib/forms-ui/directives/select-dropdown.directive';\nexport * from './lib/forms-ui/directives/selectable-item.directive';\nexport * from './lib/forms-ui/directives/selected-option.directive';\nexport * from './lib/forms-ui/models/base-select.directive';\n\n// Models\nexport * from './lib/forms-ui/models/single-select-padding.interface';\nexport * from './lib/forms-ui/models/sorting.interface';\n\n// Helpers\nexport * from './lib/forms-ui/components/date-picker-ui/datepicker.config';\nexport * from './lib/forms-ui/helpers/key-codes.constants';\n\n// Pipes\nexport * from './lib/forms-ui/pipes/filter-selection.pipe';\nexport * from './lib/forms-ui/pipes/filter-term.pipe';\nexport * from './lib/forms-ui/pipes/format-number.pipe';\n\n// Validators\nexport * from './lib/forms-ui/validators/date-in-foreseeable-future.validator';\nexport * from './lib/forms-ui/validators/string-not-in-array.validator';\n\n// Modules\nexport { LxDragAndDropListModule } from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module';\n\n/*----------------- modal-ui -----------------*/\n\nexport * from './lib/modal-ui/modal.constants';\nexport * from './lib/modal-ui/modal.module';\n\nexport * from './lib/modal-ui/components/modal-footer/modal-footer.component';\nexport * from './lib/modal-ui/components/modal-header/modal-header.component';\nexport * from './lib/modal-ui/components/modal/modal.component';\n\nexport * from './lib/modal-ui/directives/modal-content.directive';\n\n/*----------------- popover-ui -----------------*/\n\nexport * from './lib/popover-ui/popover-ui.module';\n\nexport * from './lib/popover-ui/components/popover/popover.component';\n\nexport * from './lib/popover-ui/directives/popover-click.directive';\nexport * from './lib/popover-ui/directives/popover-content.directive';\nexport * from './lib/popover-ui/directives/popover-hover.directive';\n\n/*----------------- tab-ui -----------------*/\n\nexport * from './lib/tab-ui/components/tab-group/tab-group.component';\nexport * from './lib/tab-ui/components/tab/tab.component';\nexport * from './lib/tab-ui/tab-ui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["IconComponent","i1.ResizeObserverService","i2","i1","i1.TableComponent","i1.AutocloseGroupService","isEqual","BOTTOM_LEFT_POSITION","BOTTOM_RIGHT_POSITION","TOP_LEFT_POSITION","TOP_RIGHT_POSITION","LEFT_ALIGN_POSITIONS","RIGHT_ALIGN_POSITIONS","_toString","_isNaN","format","fm","i1.DatePickerInnerComponent","i1.DatepickerConfig","i3","observableFromEvent","_filter","i3.FormSubmitDirective","filter","map","i4","uniqueId","switchMap"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"leanix-components.mjs","sources":["../../../../libs/components/src/lib/core-ui/core-ui.constants.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.ts","../../../../libs/components/src/lib/core-ui/components/badge/badge.component.html","../../../../libs/components/src/lib/core-ui/components/banner/banner.models.ts","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.ts","../../../../libs/components/src/lib/core-ui/components/banner/banner.component.html","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.ts","../../../../libs/components/src/lib/core-ui/components/button-group/button-group.component.html","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/tiny-spinner/tiny-spinner.component.html","../../../../libs/components/src/lib/core-ui/components/button/button.component.ts","../../../../libs/components/src/lib/core-ui/components/button/button.component.html","../../../../libs/components/src/lib/core-ui/components/card/card.component.ts","../../../../libs/components/src/lib/core-ui/components/card/card.component.html","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.ts","../../../../libs/components/src/lib/core-ui/components/collapsible/collapsible.component.html","../../../../libs/components/src/lib/core-ui/components/counter/counter.component.ts","../../../../libs/components/src/lib/core-ui/components/counter/counter.component.html","../../../../libs/components/src/lib/shared/observe.ts","../../../../libs/components/src/lib/core-ui/services/resize-observer.service.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.ts","../../../../libs/components/src/lib/core-ui/components/ellipsis/ellipsis.component.html","../../../../libs/components/src/lib/core-ui/components/empty-state/empty-state.component.ts","../../../../libs/components/src/lib/core-ui/components/empty-state/empty-state.component.html","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.ts","../../../../libs/components/src/lib/core-ui/components/icon-scale/icon-scale.component.html","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.ts","../../../../libs/components/src/lib/core-ui/components/spinner/spinner.component.html","../../../../libs/components/src/lib/core-ui/components/stepper/stepper.component.ts","../../../../libs/components/src/lib/core-ui/components/stepper/stepper.component.html","../../../../libs/components/src/lib/core-ui/components/table/table.component.ts","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.ts","../../../../libs/components/src/lib/core-ui/components/table/table-header/table-header.component.html","../../../../libs/components/src/lib/core-ui/directives/after-view-init.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose-group.service.ts","../../../../libs/components/src/lib/core-ui/directives/autoclose.directive.ts","../../../../libs/components/src/lib/core-ui/directives/autofocus.directive.ts","../../../../libs/components/src/lib/core-ui/linkify/linkify.pipe.ts","../../../../libs/components/src/lib/core-ui/linkify/unlinkify.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/br.pipe.ts","../../../../libs/components/src/lib/core-ui/functions/core-css.helpers.ts","../../../../libs/components/src/lib/core-ui/pipes/contrast-color.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/custom-date.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-range.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/highlight-term.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-is-uuid.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-time-ago.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/lx-translate.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/markdown.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/nbsp.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/sort.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-before.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-after.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/translation-between.pipe.ts","../../../../libs/components/src/lib/core-ui/pipes/unescape-curly-braces.pipe.ts","../../../../libs/components/src/lib/core-ui/tooltip/to-cdk-position.function.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip-position.interface.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.ts","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.component.html","../../../../libs/components/src/lib/core-ui/tooltip/tooltip.directive.ts","../../../../libs/components/src/lib/core-ui/core-ui.module.ts","../../../../libs/components/src/lib/core-ui/pipes/display-avatars.pipe.ts","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.model.ts","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.component.ts","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.component.html","../../../../libs/components/src/lib/core-ui/components/avatar-group/avatar-group.component.ts","../../../../libs/components/src/lib/core-ui/components/avatar-group/avatar-group.component.html","../../../../libs/components/src/lib/core-ui/components/skeleton/skeleton.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/token/token.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/token/token.component.html","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer.component.html","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.ts","../../../../libs/components/src/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.html","../../../../libs/components/src/lib/core-ui/components/avatar/avatar.helpers.ts","../../../../libs/components/src/lib/core-ui/functions/highlight-text.function.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.html","../../../../libs/components/src/lib/shared/misc-helpers.ts","../../../../libs/components/src/lib/forms-ui/directives/selectable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/keyboard-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/helpers/key-codes.constants.ts","../../../../libs/components/src/lib/forms-ui/directives/keyboard-action-source.directive.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group/option-group.component.html","../../../../libs/components/src/lib/forms-ui/components/option/option.component.ts","../../../../libs/components/src/lib/forms-ui/components/option/option.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.ts","../../../../libs/components/src/lib/forms-ui/components/breadcrumb/breadcrumb.component.html","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/directives/mark-invalid.directive.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol-map.constant.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-symbol.component.html","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/currency/currency-input.component.html","../../../../libs/components/src/lib/shared/date-helpers.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/date-formatter.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/isBs3.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/daypicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/monthpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/yearpicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.config.ts","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/date-input/date-input.component.html","../../../../libs/components/src/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/constants.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.html","../../../../libs/components/src/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.ts","../../../../libs/components/src/lib/forms-ui/components/error-message/error-message.component.ts","../../../../libs/components/src/lib/forms-ui/components/error-message/error-message.component.html","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.ts","../../../../libs/components/src/lib/forms-ui/components/form-error/form-error.component.html","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.ts","../../../../libs/components/src/lib/forms-ui/components/icon/icon.component.html","../../../../libs/components/src/lib/forms-ui/components/input/input.component.ts","../../../../libs/components/src/lib/forms-ui/directives/select-dropdown.directive.ts","../../../../libs/components/src/lib/forms-ui/models/base-select.directive.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.ts","../../../../libs/components/src/lib/forms-ui/components/responsive-input/responsive-input.component.html","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.ts","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.html","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/multi-select/multi-select.component.html","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-dropdown/options-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker-option/picker-option.component.html","../../../../libs/components/src/lib/forms-ui/components/picker/picker-trigger.directive.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.ts","../../../../libs/components/src/lib/forms-ui/components/picker/picker.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-item/pill-item.component.html","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/pill-list/pill-list.component.html","../../../../libs/components/src/lib/forms-ui/helpers/keyboard-navigation.helpers.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.ts","../../../../libs/components/src/lib/forms-ui/components/select-list/select-list.component.html","../../../../libs/components/src/lib/forms-ui/directives/selected-option.directive.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.ts","../../../../libs/components/src/lib/forms-ui/components/single-select/single-select.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.html","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.ts","../../../../libs/components/src/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.html","../../../../libs/components/src/lib/forms-ui/components/switch/switch.component.ts","../../../../libs/components/src/lib/forms-ui/components/switch/switch.component.html","../../../../libs/components/src/lib/shared/html-helpers.function.ts","../../../../libs/components/src/lib/forms-ui/directives/contenteditable.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-submit.directive.ts","../../../../libs/components/src/lib/forms-ui/directives/form-error.directive.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-selection.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/filter-term.pipe.ts","../../../../libs/components/src/lib/forms-ui/pipes/format-number.pipe.ts","../../../../libs/components/src/lib/forms-ui/forms-ui.module.ts","../../../../libs/components/src/lib/forms-ui/directives/max-length-counter.directive.ts","../../../../libs/components/src/lib/forms-ui/models/sorting.interface.ts","../../../../libs/components/src/lib/forms-ui/validators/date-in-foreseeable-future.validator.ts","../../../../libs/components/src/lib/forms-ui/validators/string-not-in-array.validator.ts","../../../../libs/components/src/lib/modal-ui/modal.constants.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-footer/modal-footer.component.html","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal-header/modal-header.component.html","../../../../libs/components/src/lib/modal-ui/directives/modal-content.directive.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.ts","../../../../libs/components/src/lib/modal-ui/components/modal/modal.component.html","../../../../libs/components/src/lib/modal-ui/modal.module.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-content.directive.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.ts","../../../../libs/components/src/lib/popover-ui/components/popover/popover.component.html","../../../../libs/components/src/lib/popover-ui/directives/popover-click.directive.ts","../../../../libs/components/src/lib/popover-ui/directives/popover-hover.directive.ts","../../../../libs/components/src/lib/popover-ui/popover-ui.module.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab/tab.component.html","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.ts","../../../../libs/components/src/lib/tab-ui/components/tab-group/tab-group.component.html","../../../../libs/components/src/lib/tab-ui/tab-ui.module.ts","../../../../libs/components/src/index.ts","../../../../libs/components/src/leanix-components.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const DATE_FORMATS = new InjectionToken<DateFormatsProvider>('DATE_FORMATS', {\n providedIn: 'root',\n factory: () => ({\n getDateFormat: () => 'YYYY-MM-DD',\n getDateTimeFormat: () => 'YYYY-MM-DD HH:mm',\n getDateTimeFormatWithSeconds: () => 'YYYY-MM-DD HH:mm:ss'\n })\n});\n\nexport const DATE_FN_LOCALE = new InjectionToken<Function>('DATE_FN_LOCALE');\nexport const LOCALE_FN = new InjectionToken<Function>('LOCALE_FN');\nexport const GLOBAL_TRANSLATION_OPTIONS = new InjectionToken<GlobalTranslationOptionsProvider>('GLOBAL_TRANSLATION_OPTIONS');\n\nexport interface DateFormatsProvider {\n getDateFormat(): string;\n getDateTimeFormat(): string;\n getDateTimeFormatWithSeconds(): string;\n}\n\nexport interface GlobalTranslationOptionsProvider {\n createGlobalTranslationOptions(): TranslationOptions;\n}\n\nexport interface TranslationOptions {\n [key: string]: string;\n}\n\n/**\n * map Font Awesome -> SAP icons\n * [0]: regular icon\n * [1]: solid icon alternative (if available)\n */\nexport const ICON_MAP: Record<string, string[]> = {\n 'fa-times': ['decline'],\n 'fa-plus': ['add'],\n 'fa-check': ['accept'],\n 'fa-trash': ['delete'],\n 'fa-angle-down': ['slim-arrow-down'],\n 'fa-circle': ['circle-task-2', 'circle-task'],\n 'fa-pencil': ['edit'],\n 'fa-external-link': ['action'],\n 'fa-search': ['search'],\n 'fa-info-circle': ['message-information'],\n 'fa-question-circle': ['question-mark'],\n 'fa-ellipsis-v': ['overflow'],\n 'fa-sync': ['synchronize'],\n 'fa-plus-circle': ['sys-add'],\n 'fa-exclamation-triangle': ['warning'],\n 'fa-exclamation-circle': ['lx-icons/exclamation-circle'],\n 'fa-arrow-right': ['arrow-right'],\n 'fa-arrow-left': ['arrow-left'],\n 'fa-link': ['chain-link'],\n 'fa-check-circle': ['status-completed'],\n 'fa-check-square': ['complete'],\n 'fa-bars': ['menu2'],\n 'fa-eye': ['show'],\n 'fa-cog': ['action-settings'],\n 'fa-star': ['unfavorite'],\n 'fa-chevron-down': ['navigation-down-arrow'],\n 'fa-chevron-up': ['navigation-up-arrow'],\n 'fa-eye-slash': ['hide'],\n 'fa-calendar': ['calendar'],\n 'fa-lock': ['locked'],\n 'fa-ban': ['cancel'],\n 'fa-user': ['person-placeholder'],\n 'fa-chevron-right': ['navigation-right-arrow'],\n 'fa-spinner': ['pending'],\n 'fa-times-circle': ['error'],\n 'fa-diamond': ['rhombus-milestone'],\n 'fa-sort-up': ['sorting-ranking'],\n 'fa-arrow-circle-up': ['arrow-top'],\n 'fa-bell': ['bell'],\n 'fa-long-arrow-left': ['arrow-left'],\n 'fa-sort-down': ['megamenu'],\n 'fa-edit': ['edit'],\n 'fa-angle-right': ['slim-arrow-right'],\n 'fa-angle-up': ['slim-arrow-up'],\n 'fa-book': ['course-book'],\n 'fa-download': ['download'],\n 'fa-file': ['document'],\n 'fa-undo': ['undo'],\n 'fa-wrench': ['wrench'],\n 'fa-align-justify': ['text-align-justified'],\n 'fa-chevron-left': ['navigation-left-arrow'],\n 'fa-filter': ['filter'],\n 'fa-plug': ['disconnected'],\n 'fa-clone': ['duplicate'],\n 'fa-info': ['message-information'],\n 'fa-minus': ['less'],\n 'fa-robot': ['lx-icons/robot'],\n 'fa-share-alt': ['share-2'],\n 'fa-sparkles': ['ai'],\n 'fa-text': ['text'],\n 'fa-unlink': ['broken-link'],\n 'fa-arrow-down': ['arrow-down'],\n 'fa-arrow-to-top': ['back-to-top'],\n 'fa-caret-down': ['megamenu'],\n 'fa-presentation': ['projector'],\n 'fa-th-large': ['business-suite/2x2-grid-layout'],\n 'fa-th': ['business-suite/2x2-grid-layout'],\n 'fa-upload': ['upload'],\n 'fa-align-left': ['text-align-left'],\n 'fa-arrow-circle-right': ['initiative'],\n 'fa-caret-up': ['sorting-ranking'],\n 'fa-clock': ['in-progress'],\n 'fa-code-branch': ['business-suite/empty-sequence'],\n 'fa-comment': ['comment'],\n 'fa-comment-lines': ['comment'],\n 'fa-copy': ['copy'],\n 'fa-ellipsis-h': ['overflow'],\n 'fa-exclamation': ['business-suite/priority-1'],\n 'fa-square': ['border'],\n 'fa-tachometer': ['performance'],\n 'fa-tachometer-alt-average': ['performance'],\n 'fa-tags': ['blank-tag-2'],\n 'fa-tasks': ['activities'],\n 'fa-angle-double-down': ['expand-group'],\n 'fa-arrow-up': ['arrow-top'],\n 'fa-chart-bar': ['vertical-bar-chart'],\n 'fa-chevron-square-down': ['navigation-down-arrow'],\n 'fa-chevron-square-right': ['navigation-right-arrow'],\n 'fa-exclamation-square': ['high-priority'],\n 'fa-expand-alt': ['full-screen'],\n 'fa-external-link-alt': ['action'],\n 'fa-globe': ['world'],\n 'fa-graduation-cap': ['study-leave'],\n 'fa-list': ['list'],\n 'fa-paragraph': ['text'],\n 'fa-play': ['media-play'],\n 'fa-question': ['incident'],\n 'fa-repeat': ['synchronize'],\n 'fa-shapes': ['program-triangles'],\n 'fa-sort-alt': ['sort'],\n 'fa-table': ['business-suite/2x2-grid-layout'],\n 'fa-align-slash': ['tnt/clear-all-mapping'],\n 'fa-angle-double-left': ['close-command-field'],\n 'fa-angle-double-right': ['open-command-field'],\n 'fa-angle-double-up': ['collapse-group'],\n 'fa-arrow-from-bottom': ['upload'],\n 'fa-bold': ['bold-text'],\n 'fa-bolt': ['tnt/raise-fault'],\n 'fa-books': ['course-book'],\n 'fa-code': ['source-code'],\n 'fa-database': ['database'],\n 'fa-envelope': ['email'],\n 'fa-expand': ['full-screen'],\n 'fa-file-audio': ['attachment-audio'],\n 'fa-file-excel': ['excel-attachment'],\n 'fa-file-image': ['attachment-photo'],\n 'fa-file-pdf': ['pdf-attachment'],\n 'fa-file-video': ['attachment-video'],\n 'fa-file-word': ['doc-attachment'],\n 'fa-folder': ['folder-blank'],\n 'fa-heading': ['heading1'],\n 'fa-hourglass-half': ['lateness'],\n 'fa-house': ['home'],\n 'fa-image': ['picture'],\n 'fa-italic': ['italic-text'],\n 'fa-lightbulb': ['lightbulb'],\n 'fa-list-ol': ['business-suite/icon-bulleting-with-numbers'],\n 'fa-map': ['map-3'],\n 'fa-map-pin': ['lx-icons/map-pin'],\n 'fa-map-signs': ['lx-icons/map-signs'],\n 'fa-pen': ['edit'],\n 'fa-people-arrows': ['citizen-connect'],\n 'fa-power-off': ['log'],\n 'fa-random': ['tnt/flow'],\n 'fa-redo': ['refresh'],\n 'fa-save': ['save'],\n 'fa-seedling': ['e-care'],\n 'fa-sitemap': ['tree'],\n 'fa-sort': ['sorting-ranking'],\n 'fa-strikethrough': ['strikethrough'],\n 'fa-sync-alt': ['synchronize'],\n 'fa-thumbs-up': ['thumb-up'],\n 'fa-thumbs-down': ['thumb-down'],\n 'fa-trash-restore': ['history'],\n 'fa-user-friends': ['group'],\n 'fa-users': ['family-care'],\n 'fa-align-center': ['text-align-center'],\n 'fa-align-right': ['text-align-right'],\n 'fa-angle-left': ['slim-arrow-left'],\n 'fa-arrows-h': ['resize-horizontal'],\n 'fa-at': ['arobase'],\n 'fa-badge-check': ['lx-icons/badge-sign'],\n 'fa-balance-scale-right': ['compare-2'],\n 'fa-binoculars': ['sys-find'],\n 'fa-book-open': ['education'],\n 'fa-bullhorn': ['marketing-campaign'],\n 'fa-caret-left': ['navigation-left-arrow'],\n 'fa-chart-pie-alt': ['pie-chart'],\n 'fa-child': ['tnt/actor'],\n 'fa-comments': ['discussion'],\n 'fa-compass': ['business-objects-explorer'],\n 'fa-compress': ['exit-full-screen'],\n 'fa-do-not-enter': ['cancel'],\n 'fa-dollar-sign': ['lx-icons/dollar-sign'],\n 'fa-expand-wide': ['full-screen'],\n 'fa-eye-dropper': ['business-suite/pipette'],\n 'fa-file-plus': ['add-document'],\n 'fa-fire-alt': ['business-suite/fire'],\n 'fa-headset': ['headset'],\n 'fa-history': ['history'],\n 'fa-list-ul': ['list'],\n 'fa-lock-alt': ['locked'],\n 'fa-lock-open': ['unlocked'],\n 'fa-long-arrow-right': ['arrow-right'],\n 'fa-minus-circle': ['sys-minus'],\n 'fa-minus-square': ['negative'],\n 'fa-phone-alt': ['call'],\n 'fa-play-circle': ['play'],\n 'fa-print': ['print'],\n 'fa-radar': ['business-suite/radius'],\n 'fa-shield-alt': ['lx-icons/shield'],\n 'fa-shopping-cart': ['cart'],\n 'fa-trophy': ['competitor'],\n 'fa-umbrella-beach': ['umbrella'],\n 'fa-atom': [],\n 'fa-bug': ['lx-icons/bug'],\n 'fa-bullseye-arrow': ['lx-icons/bullseye-arrow'],\n 'fa-chess-queen-alt': ['lx-icons/chess-queen'],\n 'fa-confluence': ['lx-icons/confluence'],\n 'fa-cloud': ['cloud'],\n 'fa-euro-sign': ['lx-icons/euro-sign'],\n 'fa-exchange': ['lx-icons/exchange'],\n 'fa-folder-open': ['open-folder'],\n 'fa-folder-tree': ['lx-icons/folder-tree'],\n 'fa-gavel': ['lx-icons/gavel'],\n 'fa-keyboard': ['keyboard-and-mouse'],\n 'fa-hammer': ['lx-icons/hammer'],\n 'fa-hat-wizard': ['lx-icons/hat-wizard'],\n 'fa-hourglass-end': ['lx-icons/hourglass-end'],\n 'fa-lemon': ['lx-icons/lemon'],\n 'fa-pound-sign': ['lx-icons/pound-sign'],\n 'fa-project-diagram': ['lx-icons/project-diagram'],\n 'fa-shield': ['lx-icons/shield'],\n 'fa-signal': ['lx-icons/signal'],\n 'fa-tasks-alt': ['lx-icons/tasks'],\n 'fa-toolbox': ['lx-icons/toolbox'],\n 'fa-tools': ['wrench'],\n 'fa-tshirt': ['lx-icons/tshirt'],\n 'fa-underline': ['underline-text'],\n 'fa-unicorn': ['lx-icons/unicorn'],\n 'fa-user-hard-hat': ['lx-icons/user-hard-hat'],\n 'fa-window': ['lx-icons/window'], // ['tnt/subject'],\n 'fa-quote-right': ['lx-icons/quote-right'],\n 'fa-yen-sign': ['lx-icons/yen-sign'],\n 'fa-feather': ['lx-icons/feather'],\n 'fa-road': ['lx-icons/road'],\n 'fa-3x3-grid': ['lx-icons/3x3-grid'],\n 'fa-comment-alt-check': ['lx-icons/comment-alt-check'],\n 'fa-rocket': ['lx-icons/rocket'],\n 'fa-rectangle-wide': ['legend']\n};\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\n\n/**\n * Badge component is used to show a small piece of information in a colored badge.\n */\n@Component({\n selector: 'lx-badge',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './badge.component.html',\n styleUrls: ['./badge.component.scss']\n})\nexport class BadgeComponent implements OnInit {\n /**\n * The content to show in the badge\n */\n @Input({ required: true })\n content!: string | number;\n\n /**\n * The color of the badge component\n */\n @Input()\n color: 'blue' | 'gray' | 'red' | 'yellow' | 'green' | 'purple' | 'white' = 'blue';\n\n /**\n * If set to true, the badge will create a color for itself based on the content, ignoring other color settings.\n * This could be useful if we want to show a range of different colors for different contents.\n */\n @Input()\n calculateColorsDynamically: boolean = false;\n\n /** @internal */\n textColor = '';\n /** @internal */\n backGroundColor = '';\n\n ngOnInit(): void {\n if (this.calculateColorsDynamically) {\n this.calculateColorsFromText();\n }\n }\n\n get colorClass(): string {\n if (this.calculateColorsDynamically) {\n return '';\n } else {\n return `${this.color}`;\n }\n }\n\n private calculateColorsFromText(): void {\n let hash = 0;\n const contentAsString = String(this.content);\n for (let i = 0; i < contentAsString.length; i++) {\n hash = contentAsString.charCodeAt(i) + ((hash << 5) - hash);\n }\n this.backGroundColor = `hsla(${hash % 360}, 100%, 58%, 0.12)`;\n this.textColor = `hsl(${hash % 360}, 100%, 28%)`;\n }\n}\n","@if (calculateColorsDynamically) {\n <div class=\"wrapper\" [style.background-color]=\"backGroundColor\" [style.color]=\"textColor\">\n <span>{{ content }}</span>\n </div>\n} @else {\n <div class=\"wrapper\" [class]=\"colorClass\">\n <span>{{ content }}</span>\n </div>\n}\n","type ObjectValues<T> = T[keyof T];\nexport const BANNER_TYPE = {\n SUCCESS: 'success',\n INFO: 'info',\n WARNING: 'warning',\n DANGER: 'danger',\n GRAY: 'gray'\n} as const;\nexport type BannerTypes = ObjectValues<typeof BANNER_TYPE>;\nexport const BANNER_SIZE = {\n BIG: 'big',\n SMALL: 'small'\n} as const;\nexport type BannerSizes = ObjectValues<typeof BANNER_SIZE>;\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, signal } from '@angular/core';\nimport { BANNER_SIZE, BANNER_TYPE, BannerSizes, BannerTypes } from './banner.models';\n\n/**\n * Banner can be used to display important information to the user. It allows for any type of content to be displayed in a banner.\n */\n@Component({\n selector: 'lx-banner',\n host: {\n '[attr.type]': 'type',\n '[attr.size]': 'size'\n },\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss'],\n imports: [CommonModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class BannerComponent implements OnInit {\n private readonly _type = signal<BannerTypes>(BANNER_TYPE.WARNING);\n private readonly _size = signal<BannerSizes>(BANNER_SIZE.BIG);\n /** @internal */\n readonly showIcon = signal(false);\n /** @internal */\n readonly iconClass = signal('');\n\n /**\n * The type of the banner\n */\n @Input() set type(type: BannerTypes) {\n this._type.set(type);\n this.iconClass.set(this.getIconClass(type));\n }\n get type() {\n return this._type();\n }\n /**\n * The size of the banner\n */\n @Input() set size(size: BannerSizes) {\n this._size.set(size);\n this.showIcon.set(size === BANNER_SIZE.BIG);\n }\n get size() {\n return this._size();\n }\n\n ngOnInit() {\n this.showIcon.set(this.size === BANNER_SIZE.BIG);\n }\n\n /** @internal */\n getIconClass(type: BannerTypes) {\n switch (type) {\n case BANNER_TYPE.SUCCESS:\n return 'fa-check';\n case BANNER_TYPE.INFO:\n return 'fa-info';\n case BANNER_TYPE.WARNING:\n return 'fa-exclamation';\n case BANNER_TYPE.DANGER:\n return 'fa-times';\n default:\n return 'fa-info';\n }\n }\n}\n","<div class=\"banner-wrapper\">\n @if (showIcon()) {\n <div class=\"banner-icon-box\" aria-hidden=\"true\">\n <i class=\"fas tw-text-size-sm\" [ngClass]=\"iconClass()\"></i>\n </div>\n }\n <div class=\"banner-content\">\n <ng-content />\n </div>\n</div>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-button-group',\n templateUrl: 'button-group.component.html',\n styleUrls: ['button-group.component.scss'],\n standalone: true\n})\nexport class ButtonGroupComponent {\n @Input()\n separator: 'margin' | 'border' = 'margin';\n\n @HostBinding('class.marginSeparator')\n public get hasMarginSeperator() {\n return this.separator === 'margin';\n }\n\n @HostBinding('class.borderSeparator')\n public get hasBorderSeparator() {\n return this.separator === 'border';\n }\n}\n","<ng-content />\n","import { Component } from '@angular/core';\n\n/**\n * Tiny spinner component is used to show a small spinner.\n */\n@Component({\n selector: 'lx-tiny-spinner',\n templateUrl: 'tiny-spinner.component.html',\n standalone: true\n})\nexport class TinySpinnerComponent {}\n","<i class=\"far fa-spinner fa-spin fa-fw\"></i>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, HostBinding, inject, InjectionToken, input, Input } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\n// eslint-disable-next-line no-restricted-imports\nimport { IconComponent } from '@ui5/webcomponents-ngx/main/icon';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { ICON_MAP } from '../../core-ui.constants';\nimport { TinySpinnerComponent } from '../tiny-spinner/tiny-spinner.component';\n\ndeclare global {\n interface Window {\n /**\n * internal, used for theming toggles\n */\n useSAPIconInLxButton$: BehaviorSubject<boolean>;\n }\n}\n\n/**\n * @internal\n * Opt-in to render SAP icons in the `ButtonComponent`\n */\nexport const LX_BUTTON_USE_SAP_ICONS = new InjectionToken<BehaviorSubject<boolean>>('LX_BUTTON_USE_SAP_ICONS', {\n factory: () => {\n window.useSAPIconInLxButton$ ??= new BehaviorSubject(false);\n return window.useSAPIconInLxButton$;\n }\n});\n\n/**\n * Button component is used to create a button with different styles and sizes. This uses native button element and\n * only provides styling and some additional features like loading spinner.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[lx-button]',\n templateUrl: 'button.component.html',\n styleUrls: ['button.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [TinySpinnerComponent, IconComponent, NgTemplateOutlet]\n})\nexport class ButtonComponent {\n protected readonly useSAPIcons = toSignal(inject(LX_BUTTON_USE_SAP_ICONS, { optional: true }) || of(false));\n\n /**\n * The size of the button.\n */\n @Input() @HostBinding('attr.size') size: 'small' | 'medium' | 'large' | 'auto' = 'medium';\n\n /**\n * The color of the button.\n */\n @Input() @HostBinding('attr.color') color: 'default' | 'primary' | 'danger' | 'success' | 'light' = 'default';\n\n /**\n * The mode of the button.\n */\n @Input() @HostBinding('attr.mode') mode: 'solid' | 'ghost' | 'outline' | 'link' = 'solid';\n\n /**\n * The pressed state of the button. This simulates the `:active` state of the button.\n */\n @Input() @HostBinding('class.pressed') pressed: boolean = false;\n\n /**\n * The selected state of the button. This simulates the `:hover` state of the button.\n */\n @Input() @HostBinding('class.selected') selected: boolean = false;\n\n /**\n * This makes the button square.\n */\n @Input() @HostBinding('class.square') square: boolean = false;\n\n /**\n * This makes corners rounded. Use with `square` for a true circle.\n */\n @Input() @HostBinding('class.circle') circle: boolean = false;\n\n /**\n * This disables the button.\n */\n @Input() disabled: boolean = false;\n\n @HostBinding('class.withIcon') get hasIcon() {\n return !!this.icon() || !!this.endIcon();\n }\n /**\n * The icon name (font-awesome) to display inside the button.\n * It is displayed before any additional content.\n *\n * An icon variant can be provided as well, e.g. `fas fa-trash`.\n *\n * @default undefined\n * @example\n * <button lx-button icon=\"fa-times\">Close</button>\n */\n readonly icon = input<string>();\n\n protected readonly iconName = computed(() => this.getMappedIconName(this.icon()));\n protected readonly iconVariant = computed(() => extractFontAwesomeVariant(this.icon()));\n\n /**\n * The icon name (font-awesome) to display inside the button.\n * It is displayed after any additional content.\n *\n * An icon variant can be provided as well, e.g. `fas fa-trash`.\n *\n * @default undefined\n * @example\n * <button lx-button endIcon=\"fa-times\">Close</button>\n */\n readonly endIcon = input<string>();\n\n protected readonly endIconName = computed(() => this.getMappedIconName(this.endIcon()));\n protected readonly endIconVariant = computed(() => extractFontAwesomeVariant(this.endIcon()));\n\n /**\n * This shows a spinner inside the button.\n */\n @Input()\n @HostBinding('class.loading')\n showSpinner: boolean = false;\n\n @HostBinding('disabled')\n get isDisabled() {\n return this.disabled || this.showSpinner;\n }\n\n private getMappedIconName(iconName: string | undefined): string | null {\n const useSAPIcons = this.useSAPIcons();\n\n if (!iconName) {\n return null;\n }\n\n if (useSAPIcons) {\n return getSAPIcon(iconName);\n }\n\n return removeFontAwesomeVariant(iconName);\n }\n}\n\nfunction getSAPIcon(iconName: string): string | null {\n const iconVariant = extractFontAwesomeVariant(iconName);\n const extractedName = removeFontAwesomeVariant(iconName);\n if (!ICON_MAP[extractedName]) {\n console.warn(`No SAP icon found for Font Awesome icon ${extractedName}`);\n return null;\n }\n if (iconVariant === 'fas' || iconVariant === 'fa') {\n return ICON_MAP[extractedName]?.[1] ?? ICON_MAP[extractedName]?.[0] ?? null;\n }\n return ICON_MAP[extractedName]?.[0] ?? null;\n}\n\nfunction extractFontAwesomeVariant(iconName?: string): string {\n return iconName?.match(/\\b(far|fas|fa(?!-)|fal|fab)\\b/)?.[0] ?? 'far';\n}\n\nfunction removeFontAwesomeVariant(iconName: string): string {\n return iconName.replace(/\\b(far|fas|fa(?!-)|fal|fab)\\b/g, '').trim();\n}\n","@let useNewIcons = useSAPIcons();\n@let startIcon = iconName();\n@let endIcon = endIconName();\n@if (!startIcon && !endIcon) {\n <!-- old layout -->\n @if (showSpinner) {\n <lx-tiny-spinner />\n }\n <ng-container *ngTemplateOutlet=\"content\" />\n} @else {\n <div class=\"contentWrapper\">\n <!-- new layout -->\n @if (showSpinner) {\n <lx-tiny-spinner />\n } @else if (startIcon && useNewIcons) {\n <ui5-icon class=\"ui5Icon\" [name]=\"startIcon\" data-testid=\"start-icon\" />\n } @else if (startIcon && !useNewIcons) {\n <i\n [class.fa-fw]=\"mode !== 'link'\"\n class=\"{{ startIcon }} {{ iconVariant() }}\"\n role=\"img\"\n aria-hidden=\"true\"\n data-testid=\"start-icon\"\n ></i>\n }\n <ng-container *ngTemplateOutlet=\"content\" />\n @if (!showSpinner && endIcon && useNewIcons) {\n <ui5-icon class=\"ui5Icon\" [name]=\"endIcon\" data-testid=\"end-icon\" />\n } @else if (!showSpinner && endIcon && !useNewIcons) {\n <i\n [class.fa-fw]=\"mode !== 'link'\"\n class=\"{{ endIcon }} {{ endIconVariant() }}\"\n role=\"img\"\n aria-hidden=\"true\"\n data-testid=\"end-icon\"\n ></i>\n }\n </div>\n}\n\n<!-- ng-content with the same slot can be used once in the same template -->\n<ng-template #content>\n <ng-content />\n</ng-template>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n/**\n * Card component is a container component that can be used to display content in a card-like style.\n * This documentation provides details on the usage and configuration of the Card Component.\n */\n@Component({\n selector: 'lx-card',\n templateUrl: 'card.component.html',\n styleUrls: ['card.component.scss'],\n standalone: true\n})\nexport class CardComponent {\n /**\n * The style of the card.\n */\n @Input() @HostBinding('attr.data-style') dataStyle: 'white' = 'white';\n}\n","<ng-content />\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, HostListener, Input, Output } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-collapsible',\n templateUrl: 'collapsible.component.html',\n styleUrls: ['collapsible.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent]\n})\nexport class CollapsibleComponent {\n readonly NAME = 'CollapsibleComponent';\n\n @Input() disableSectionToggle = false;\n @Input() hideSectionToggle = false;\n @Input() toggleSize: ButtonComponent['size'] = 'small';\n @Input() toggleTitle = '';\n\n @Input() collapsed: boolean = false;\n @Output() collapsedChange = new EventEmitter<boolean>();\n\n @HostBinding('class.notClickable')\n get notClickable(): boolean {\n return this.disableSectionToggle || this.hideSectionToggle;\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n this.onToggleSection(event);\n }\n\n onToggleSection(event: MouseEvent) {\n if (!this.disableSectionToggle && !this.hideSectionToggle) {\n event.stopPropagation();\n this.collapsed = !this.collapsed;\n this.collapsedChange.emit(this.collapsed);\n }\n }\n}\n","<button\n *ngIf=\"!hideSectionToggle\"\n lx-button\n mode=\"link\"\n [title]=\"toggleTitle\"\n [size]=\"toggleSize\"\n class=\"sectionToggle\"\n [class.collapsed]=\"collapsed\"\n type=\"button\"\n [disabled]=\"disableSectionToggle\"\n [square]=\"true\"\n icon=\"fa-angle-down\"\n (click)=\"onToggleSection($event)\"\n></button>\n<div class=\"collapsible-title\">\n <ng-content />\n</div>\n","import { NgClass } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n/**\n * Counter component is used to create a counter with different styles and sizes.\n */\n@Component({\n selector: 'lx-counter',\n templateUrl: 'counter.component.html',\n styleUrls: ['counter.component.scss'],\n standalone: true,\n imports: [NgClass]\n})\nexport class CounterComponent {\n /** The content of the counter. */\n @Input() content?: string | number;\n /** The size of the counter. */\n @Input() size: 'default' | 'small' = 'default';\n /** The color of the counter. */\n @Input() color: 'primary' | 'gray' | 'darkgray' | 'red' | 'yellow' | 'green' = 'primary';\n\n get classes() {\n return `${this.size} ${this.color}`;\n }\n}\n","<span class=\"content\" [ngClass]=\"classes\">{{ content }}</span>\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { map, skipWhile } from 'rxjs/operators';\n\n/**\n * Observe creates an Observable stream and notifies the changes from an observed property.\n *\n * @example\n * Input() foo: string;\n * @Observe('foo') foo$: Observable<string>;\n */\nexport function Observe<T>(observedKey: string): PropertyDecorator {\n // eslint-disable-next-line @typescript-eslint/no-wrapper-object-types\n return (target: Object, key: string | symbol): void => {\n const subjects = new WeakMap<Record<string, unknown>, BehaviorSubject<T | undefined>>();\n\n const getSubject = (instance: Record<string, unknown>) => {\n if (!subjects.has(instance)) {\n subjects.set(instance, new BehaviorSubject<T | undefined>(undefined));\n }\n return subjects.get(instance) || new BehaviorSubject<T | undefined>(undefined);\n };\n\n Object.defineProperty(target, key, {\n get(): Observable<T> {\n return getSubject(this).pipe(\n // An initial `undefined` value is triggered above when initializing the subject for a given instance.\n // This skips the initial `undefined` values, until a defined value is provided. Then, no values\n // are removed from the stream.\n skipWhile((value) => value === undefined),\n map((value) => value as T) // required for TS null check\n );\n }\n });\n\n Object.defineProperty(target, observedKey, {\n get(): T | undefined {\n return getSubject(this).getValue();\n },\n set(instanceNewValue: T): void {\n getSubject(this).next(instanceNewValue);\n }\n });\n };\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, timer } from 'rxjs';\n\nexport type LxResizeObserverCallback = (resizedElement: ResizeObserverEntry) => void;\n\ninterface ResizeableElement extends Element {\n handleResize: LxResizeObserverCallback;\n}\n\nfunction isResizeableElement(element: any): element is ResizeableElement {\n return element && !!element.handleResize;\n}\n\n/**\n * Sharing one ResizeObserver object results in much better performance\n * over individual components creating their own ResizeObserver.\n * This is why this service exists.\n * Source:\n * - https://github.com/WICG/resize-observer/issues/59#issuecomment-408098151\n * - https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ\n *\n * Learn more about the ResizeObserver API:\n * - https://www.w3.org/TR/resize-observer/\n * - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver\n * - https://www.digitalocean.com/community/tutorials/js-resize-observer\n */\n@Injectable({ providedIn: 'root' })\nexport class ResizeObserverService {\n private resizeObserver?: ResizeObserver;\n\n observe(element: Element, callback: LxResizeObserverCallback, options?: ResizeObserverOptions) {\n if (!this.resizeObserver) {\n try {\n this.resizeObserver = new ResizeObserver(this.resizeObserverCallback.bind(this));\n } catch {\n // All the browsers we support implement the ResizeObserver API.\n // For unsupported browsers, there's this \"one time artifical resize event\".\n // They will not get the functionality tied to later resize events.\n timer(500).subscribe(() => callback(this.getMockOneTimeResizeEventForUnsupportedBrowsers(element)));\n return;\n }\n }\n (element as ResizeableElement).handleResize = callback;\n this.resizeObserver.observe(element, options);\n }\n\n createResizeObservable(element: Element, options?: ResizeObserverOptions): Observable<ResizeObserverEntry> {\n return new Observable((subscriber) => {\n let animationFrame: number;\n this.observe(\n element,\n (entry) => {\n animationFrame = window.requestAnimationFrame(() => {\n subscriber.next(entry);\n });\n },\n options\n );\n\n return () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n this.unobserve(element);\n };\n });\n }\n\n unobserve(element: Element) {\n if (!this.resizeObserver) {\n return;\n }\n this.resizeObserver.unobserve(element);\n }\n\n private resizeObserverCallback(entries: ResizeObserverEntry[], _observer: ResizeObserver) {\n entries.forEach((entry) => {\n if (isResizeableElement(entry.target)) {\n entry.target.handleResize(entry);\n }\n });\n }\n\n /**\n * All browsers we officially support implement the ResizeObserver API.\n * Still as a curtesy do customers who for some reason have older browsers\n * we call the callback once with the initial dimensions of the element\n * and then do not react on resize events afterwards.\n * This should still make them happier than a \"browser not supported\" warning.\n */\n private getMockOneTimeResizeEventForUnsupportedBrowsers(element: Element) {\n const contentRect = {\n bottom: element.clientHeight,\n height: element.clientHeight,\n left: 0,\n right: element.clientWidth,\n top: 0,\n width: element.clientWidth,\n x: 0,\n y: 0\n };\n return {\n borderBoxSize: [{ blockSize: element.clientHeight, inlineSize: element.clientWidth }],\n contentBoxSize: [\n {\n blockSize: element.clientHeight,\n inlineSize: element.clientWidth\n }\n ],\n contentRect: {\n ...contentRect,\n toJSON: () => JSON.stringify(contentRect)\n },\n devicePixelContentBoxSize: [\n {\n blockSize: element.clientWidth,\n inlineSize: element.clientWidth\n }\n ],\n target: element\n };\n }\n}\n","import { AsyncPipe, NgIf } from '@angular/common';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n InjectionToken,\n Input,\n OnDestroy,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { escape } from 'lodash/fp';\nimport { BehaviorSubject, Observable, Subject, combineLatest, concat, merge } from 'rxjs';\nimport {\n debounceTime,\n distinctUntilChanged,\n filter,\n map,\n pairwise,\n skip,\n startWith,\n switchMap,\n take,\n takeUntil,\n withLatestFrom\n} from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\nimport { ButtonComponent } from '../button/button.component';\n\nexport const LX_ELLIPSIS_DEBOUNCE_ON_RESIZE = new InjectionToken<number>('LX_ELLIPSIS_DEBOUNCE_ON_RESIZE', {\n providedIn: 'root',\n factory: () => EllipsisComponent.DEFAULT_RESIZE_DEBOUNCE_MS\n});\n\n/**\n * You can set `max-width` CSS property on your `lx-ellipsis` host element or the parent element if you want its content to never exceed a specific width.\n */\n@Component({\n selector: 'lx-ellipsis',\n templateUrl: 'ellipsis.component.html',\n styleUrls: [`ellipsis.component.scss`],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, ButtonComponent, AsyncPipe]\n})\nexport class EllipsisComponent implements OnInit, OnDestroy, AfterViewChecked {\n /** @internal */\n static DEFAULT_RESIZE_DEBOUNCE_MS = 500;\n\n @Input() content: string = '';\n /**\n * Only set this to false if the content is not a user provided string\n * or if you sanitize the provided content yourself.\n */\n @Input() escapeHtmlInContent = true;\n\n @Observe('contentSpanEl') private contentSpanEl$!: Observable<ElementRef<HTMLSpanElement>>;\n /** @internal */\n @ViewChild('contentEl') contentSpanEl!: ElementRef<HTMLSpanElement>;\n @Observe('showMoreButtonEl') private showMoreButtonEl$!: Observable<ElementRef<HTMLButtonElement>>;\n /** @internal */\n @ViewChild('showMoreButton', { read: ElementRef }) showMoreButtonEl!: ElementRef<HTMLButtonElement>;\n\n /** @internal */\n isShowingMore$ = new BehaviorSubject(false);\n\n /** @internal */\n showButton$!: Observable<boolean>;\n /** @internal */\n showMoreButtonLabel$!: Observable<string>;\n\n /** @internal */\n sanitizedContent$!: Observable<string>;\n @Observe('content')\n private content$!: Observable<string>;\n\n private destroyed$ = new Subject<void>();\n\n private viewChecked$ = new Subject<void>();\n\n constructor(\n @Inject(LX_ELLIPSIS_DEBOUNCE_ON_RESIZE)\n private debounceMsAfterResize: number,\n private cdRef: ChangeDetectorRef,\n private hostEl: ElementRef,\n private resizeObserverService: ResizeObserverService,\n private translateService: TranslateService\n ) {}\n\n ngOnInit(): void {\n this.sanitizedContent$ = this.content$.pipe(\n map((content) => {\n if (this.escapeHtmlInContent && typeof content === 'string') {\n return escape(content);\n }\n return content;\n })\n );\n\n this.showMoreButtonLabel$ = this.isShowingMore$.pipe(\n switchMap((isShowingMore) => {\n const translationKey = isShowingMore ? 'common.showLess' : 'common.showMore';\n return this.translateService.get(translationKey);\n })\n );\n const newWidthOnResize$ = new Subject<number>();\n const newHeightOnResize$ = new Subject<number>();\n this.resizeObserverService.observe(this.hostEl.nativeElement, (resizedElement) => {\n newWidthOnResize$.next(resizedElement.contentRect.width);\n newHeightOnResize$.next(resizedElement.contentRect.height);\n });\n const containerWidthChangedSignificantlyAfterResize$ = newWidthOnResize$.pipe(\n startWith(0),\n pairwise(),\n filter(([previousWidth, newWidth]) => Math.abs(newWidth - previousWidth) > 1),\n map(([, newWidth]) => newWidth)\n );\n const userTriggeredTriggeredShowLess$ = this.isShowingMore$.pipe(filter((isShowingMore) => !isShowingMore));\n\n const reevaluateIfContentIsOverflowing$ = combineLatest([\n this.contentSpanEl$,\n userTriggeredTriggeredShowLess$,\n containerWidthChangedSignificantlyAfterResize$\n ]);\n\n const isContentOverflowing$ = merge(\n concat(\n reevaluateIfContentIsOverflowing$.pipe(take(1)), // debounce all but the first output\n reevaluateIfContentIsOverflowing$.pipe(debounceTime(this.debounceMsAfterResize))\n ),\n this.content$.pipe(\n skip(1),\n switchMap(() => this.viewChecked$)\n )\n ).pipe(\n withLatestFrom(this.contentSpanEl$),\n map(([, contentSpanRef]) => this.isContentOverflowing(contentSpanRef))\n );\n\n const userTriggeredTriggeredShowMore$ = this.isShowingMore$.pipe(filter((isShowingMore) => isShowingMore));\n\n const buttonHeight$ = this.showMoreButtonEl$.pipe(\n filter((showMoreButtonEl) => !!showMoreButtonEl),\n map((showMoreButtonEl) => showMoreButtonEl.nativeElement.offsetHeight),\n distinctUntilChanged()\n );\n const userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$ = combineLatest([\n buttonHeight$,\n newHeightOnResize$.pipe(distinctUntilChanged())\n ]).pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => isShowingMore),\n map(([[buttonHeight, newHeight]]) => {\n const heightOfOneLine = buttonHeight;\n const showLessButtonMarginTop = 4;\n const heightOfSpanInShowMoreMode = newHeight - buttonHeight - showLessButtonMarginTop;\n const thresholdToDetectContentInSingleLine = 4;\n const differenceBetweenContentSpanAndButtonHeight = Math.abs(heightOfOneLine - heightOfSpanInShowMoreMode);\n const isSpanContentDisplayedInOneLineAgain = differenceBetweenContentSpanAndButtonHeight < thresholdToDetectContentInSingleLine;\n return isSpanContentDisplayedInOneLineAgain;\n })\n );\n const contentFitsInOneLineAgainWhileShowMoreIsEnabled$ = userIncreasedBrowserWindowSizeToThePointOfNoTruncationNecessary$.pipe(\n startWith(false),\n pairwise(),\n filter(([previousTextIsNowInOneLineAgain]) => !previousTextIsNowInOneLineAgain),\n map(([, textIsNowInOneLineAgain]) => !textIsNowInOneLineAgain)\n );\n const contentIsOverflowingAndShowMoreIsNotEnabled$ = isContentOverflowing$.pipe(\n withLatestFrom(this.isShowingMore$),\n filter(([, isShowingMore]) => !isShowingMore),\n map(([isContentLongerThanContainerWidth]) => {\n return isContentLongerThanContainerWidth;\n })\n );\n this.showButton$ = merge(\n userTriggeredTriggeredShowMore$,\n contentFitsInOneLineAgainWhileShowMoreIsEnabled$,\n contentIsOverflowingAndShowMoreIsNotEnabled$\n );\n\n // As long as no parent component is listening on resize events,\n // the ChangeDetectorRef.markForCheck() call done by the async pipe\n // will not result in a change detection cycle in this component when its size changes.\n // This is the least amount of ChangeDetectorRef.detectChanges() calls\n // I was able to come up with. The Angular profiler shows acceptable numbers of change detection.\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n this.detectChangesWhenObservableEmits(this.showButton$);\n this.detectChangesWhenObservableEmits(this.content$);\n this.detectChangesWhenObservableEmits(contentIsOverflowingAndShowMoreIsNotEnabled$);\n this.detectChangesWhenObservableEmits(isContentOverflowing$);\n }\n\n ngAfterViewChecked() {\n this.viewChecked$.next();\n }\n\n /** @internal */\n onShowMoreToggle() {\n this.isShowingMore$.next(!this.isShowingMore$.getValue());\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.resizeObserverService.unobserve(this.hostEl.nativeElement);\n }\n\n private detectChangesWhenObservableEmits(observable$: Observable<any>) {\n observable$.pipe(takeUntil(this.destroyed$)).subscribe(() => this.cdRef.detectChanges());\n }\n\n private isContentOverflowing(contentSpanElRef: ElementRef<HTMLSpanElement>) {\n const scrollWidth = contentSpanElRef.nativeElement.scrollWidth;\n const offsetWidth = contentSpanElRef.nativeElement.clientWidth;\n return offsetWidth < scrollWidth;\n }\n}\n","<span\n #contentEl\n [class.showMore]=\"isShowingMore$ | async\"\n class=\"content truncate lx-margin-right\"\n [innerHtml]=\"sanitizedContent$ | async\"\n></span>\n<button *ngIf=\"showButton$ | async\" (click)=\"onShowMoreToggle()\" lx-button #showMoreButton size=\"auto\" mode=\"link\" color=\"primary\">\n {{ showMoreButtonLabel$ | async }}\n</button>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, HostBinding, Output, Signal, computed, input } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n selector: 'lx-empty-state',\n standalone: true,\n imports: [CommonModule, ButtonComponent, RouterLink],\n templateUrl: './empty-state.component.html',\n styleUrl: './empty-state.component.scss'\n})\nexport class EmptyStateComponent {\n title = input.required<string>();\n\n icon = input<string>();\n buttonLabel = input<string>();\n secondaryButtonLabel = input<string>();\n loading = input<boolean>(false);\n moreLinkLabel = input<string>();\n moreLink = input<string | string[]>();\n openMoreLinkInNewTab = input<boolean>(true);\n size = input<'small' | 'medium'>('medium');\n\n public useRouterLink: Signal<boolean> = computed(() => Array.isArray(this.moreLink()));\n\n @HostBinding('attr.size')\n get _size() {\n return this.size();\n }\n\n @Output() buttonClicked = new EventEmitter<MouseEvent>();\n @Output() secondaryButtonClicked = new EventEmitter<MouseEvent>();\n @Output() moreLinkClicked = new EventEmitter<MouseEvent>();\n}\n","<div class=\"tw-max-w-[434px] tw-text-center\">\n @if (icon()) {\n <i class=\"emptyStateIcon fas tw-text-primary\" [class]=\"'fa-' + icon()\" aria-hidden=\"true\"></i>\n }\n\n <h3 class=\"empty-state-title tw-mb-m tw-mt-xl tw-text-black\" [innerHTML]=\"title()\"></h3>\n\n <div class=\"empty-state-content tw-leading-[16px] tw-text-gray-50\">\n <ng-content />\n </div>\n\n <div class=\"tw-flex tw-justify-center tw-gap-m\">\n @if (secondaryButtonLabel()) {\n <div class=\"secondaryButton tw-my-xl\">\n <button lx-button size=\"large\" [showSpinner]=\"loading()\" (click)=\"secondaryButtonClicked.emit($event)\">\n {{ secondaryButtonLabel() }}\n </button>\n </div>\n }\n\n @if (buttonLabel()) {\n <div class=\"actionButton tw-my-xl\">\n <button lx-button size=\"large\" color=\"primary\" [showSpinner]=\"loading()\" (click)=\"buttonClicked.emit($event)\">\n {{ buttonLabel() }}\n </button>\n </div>\n }\n </div>\n\n @if (moreLinkLabel() && moreLink()) {\n <div>\n @if (useRouterLink()) {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [routerLink]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n } @else {\n <a\n rel=\"noopener noreferrer\"\n class=\"tw-text-size-md tw-text-primary\"\n [href]=\"moreLink()\"\n (click)=\"moreLinkClicked.emit($event)\"\n [target]=\"openMoreLinkInNewTab() ? '_blank' : '_self'\"\n >{{ moreLinkLabel() }}</a\n >\n }\n </div>\n }\n</div>\n","import { NgFor, NgStyle } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\n\nexport interface Icon {\n /** Font-awesome icon class, e.g. 'address-book'. See http://fontawesome.io/icons/ */\n type: string;\n color?: string;\n /** @deprecated */\n reverse?: boolean;\n order?: 'ASC' | 'DESC';\n}\n\n@Component({\n selector: 'lx-icon-scale',\n templateUrl: 'icon-scale.component.html',\n styleUrls: ['icon-scale.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgFor, NgStyle]\n})\nexport class IconScaleComponent implements OnChanges {\n @Input() public icon: Icon = {\n type: 'star'\n };\n @Input() public numberOfColoredItems = 0;\n @Input() public numberOfItems = 0;\n\n /** @internal */\n readonly NAME = 'IconScaleComponent';\n /** @internal */\n iconArray: boolean[] = [];\n\n public ngOnChanges(_changes: SimpleChanges) {\n this.iconArray = this.createIconArray(this.numberOfColoredItems, this.numberOfItems, this.icon?.order || 'ASC');\n }\n\n private createIconArray(items: number, totalItems: number, order: 'ASC' | 'DESC'): boolean[] {\n const coloredItems = order === 'DESC' ? totalItems - items + 1 : items;\n\n return [...Array(totalItems).keys()].map((index) => index < coloredItems);\n }\n}\n","<span\n *ngFor=\"let isColored of iconArray\"\n data-testid=\"icon-scale\"\n class=\"iconElement fas fa-{{ icon.type }}\"\n [ngStyle]=\"isColored ? { color: icon.color } : {}\"\n>\n</span>\n","import { Component, HostBinding, Input } from '@angular/core';\n\n/**\n * The following CSS classes should be used to style this component. The use of the inputs is deprecated.\n * - `fullSpace`: Sets position to absolute with full height and width => fills ancestor with position set.\n * - `fullSpaceFixed`: Sets position to fixed with full height and width => fills window\n * (or ancestor with new rendering context, created, for example, with `transform: translate(0, 0)`\n * - `fadeBackground`: Sets background to 60% transparent white. TODO: Always use for fullSpace* classes and remove.\n */\n@Component({\n selector: 'lx-spinner',\n templateUrl: 'spinner.component.html',\n styleUrls: ['spinner.component.scss'],\n standalone: true\n})\nexport class SpinnerComponent {\n @HostBinding('class.fadeBackgroundFromInput') @Input() public fadeBackground: boolean = false;\n}\n","<div class=\"container\">\n <div class=\"middle\">\n <div class=\"center\">\n <div class=\"spinner\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n <ng-content />\n </div>\n </div>\n</div>\n","import { Directionality } from '@angular/cdk/bidi';\nimport { CdkStepper, CdkStepperModule } from '@angular/cdk/stepper';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef } from '@angular/core';\n\n/**\n * Stepper component is a wrapper around the Angular CDK Stepper component. It provides a way to create a linear\n * sequence of steps that guide users through a process.\n *\n * ## Usage\n *\n * 1. Import `LxCoreUiModule` module from `@leanix/components` and `CdkStepperModule` module from `@angular/cdk/stepper` in your module where you want to use the component, or in case of a standalone parent component, import the\n * `StepperComponent` and `CdkStepperModule` directly into your standalone component.\n *\n * - Module import:\n *\n * ```ts\n * import { LxCoreUiModule } from '@leanix/components';\n * import { CdkStepperModule } from '@angular/cdk/stepper';\n * ```\n *\n * - Standalone component import:\n *\n * ```ts\n * import { StepperComponent } from '@leanix/components';\n * import { CdkStepperModule } from '@angular/cdk/stepper';\n *\n * @Component({\n * selector: 'lx-my-component',\n * standalone: true,\n * imports: [CdkStepperModule, StepperComponent],\n * templateUrl: './my-component.component.html'\n * })\n * export class MyComponent {}\n * ```\n *\n * 2. Use the component in your template. All steps added to the stepper should be wrapped in a `cdk-step` element.\n *\n * Since this component extends the Angular CDK `CdkStepper` component, all the inputs, outputs, and methods available in the\n * `CdkStepper` component are also available in the `StepperComponent` and are documented in the\n * [Angular CDK documentation](https://material.angular.io/cdk/stepper/api).\n */\n@Component({\n selector: 'lx-stepper',\n standalone: true,\n imports: [CommonModule, CdkStepperModule],\n templateUrl: './stepper.component.html',\n styleUrl: './stepper.component.scss',\n providers: [{ provide: CdkStepper, useExisting: StepperComponent }],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class StepperComponent extends CdkStepper {\n /** @internal */\n size: 'small' | 'normal' = 'normal';\n\n // TODO - Remove this constructor once the following issue is resolved: https://github.com/storybookjs/storybook/issues/23534#issuecomment-2042888436\n // Storybook smoke tests for stepper component are failing without this constructor\n constructor(_dir: Directionality, _changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>) {\n super(_dir, _changeDetectorRef, _elementRef);\n }\n\n get isSmallVariant(): boolean {\n return this.size === 'small';\n }\n\n /** @internal */\n isCompleted(index: number): boolean {\n return index < this.selectedIndex;\n }\n\n /** @internal */\n isActiveStep(index: number): boolean {\n return index === this.selectedIndex;\n }\n}\n","<ul class=\"stepper\">\n @for (step of steps; track step.label; let i = $index) {\n <li class=\"step\" [ngClass]=\"{ 'step-completed': isCompleted(i) }\">\n <div\n class=\"step-container\"\n [class]=\"isSmallVariant ? 'step-container-small' : 'step-container-normal'\"\n [ngClass]=\"{ 'step-container-active': isActiveStep(i), 'step-container-completed': isCompleted(i) }\"\n >\n <div class=\"step-number\" [ngClass]=\"{ 'step-number-active': isActiveStep(i) }\">\n @if (isCompleted(i)) {\n <i [class]=\"'far fa-check check-icon'\" [ngClass]=\"{ 'small-icon': isSmallVariant }\"></i>\n } @else if (!isSmallVariant) {\n {{ i + 1 }}\n }\n </div>\n @if (!isSmallVariant) {\n <div class=\"step-title\">\n {{ step.label }}\n </div>\n }\n </div>\n </li>\n }\n</ul>\n@if (selected) {\n <div class=\"content\">\n <ng-container [ngTemplateOutlet]=\"selected!.content\" />\n </div>\n}\n","import { Directive, input, model } from '@angular/core';\nimport { SortingOptions } from '../../pipes/sort.pipe';\n\n/**\n * The `lx-table` directive can be applied to `<table>` elements to provide a common styling.\n * Furthermore it supports column sorting in combination with `<lx-th>` for table headers.\n *\n *\n * ## Usage\n *\n * 1. Import the `TableComponent` from `@leanix/components` where you want to use it.\n *\n * ```ts\n * import { TableComponent } from '@leanix/components';\n * ```\n *\n * 2. Add the `lx-table` directive to your `<table>` element.\n *\n * ```html\n * <table lx-table></table>\n * ```\n *\n * ## Sortability\n *\n * To provide sortability within a table, the `isSortable` input has to be set to `true`\n * and the columns that support sorting should be `<lx-th>` elements with a column name applied via the `column` input.\n *\n * Sorting can be disabled for individual columns via the `disableSort` input.\n *\n * By default the sort order of columns can be changed between unsorted, ascending, and descending (after descending back to unsorted).\n * To prevent the user from clearing the sort order and just allow toggling between ascending and descending the `disableSortClear` input can be set to `true`.\n *\n * To handle sort changes, the `(sortChange)` output can be used to receive the new sort (`key` of the column and `order` - either `ASC`, `DESC`, or `undefined`).\n *\n * ### Example code\n * ```html\n * <table lx-table [isSortable]=\"true\" [(sort)]=\"sort\" (sortChange)=\"...\">\n * <thead>\n * <lx-th column=\"column1\" [disableSortClear]=\"false\">Allows asc, desc & unsorted</lx-th>\n * <lx-th column=\"column2\" [disableSortClear]=\"true\">Allows only asc & desc</lx-th>\n * <lx-th column=\"column3\" [disableSort]=\"true\">Is not sortable</lx-th>\n * </thead>\n * </table>\n * ```\n */\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'table[lx-table]',\n host: {\n class: 'table table-hover'\n },\n standalone: true\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class TableComponent {\n /**\n * This enables or disables the sortability of the table.\n */\n readonly isSortable = input(false);\n\n /**\n * The sort state of the table. Which column is sorted in what order.\n */\n readonly sort = model<SortingOptions>({});\n\n /**\n * @internal To be called from `lx-th` elements to set the sort state.\n */\n onTableHeaderSortChange(sort: SortingOptions) {\n this.sort.set(sort);\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Optional, Output, computed, signal } from '@angular/core';\nimport { OrderOption, SortingOptions } from '../../../pipes/sort.pipe';\n// eslint-disable-next-line no-restricted-imports\nimport { IconComponent } from '@ui5/webcomponents-ngx/main/icon';\n// eslint-disable-next-line no-restricted-imports\nimport { registerIcon } from '@ui5/webcomponents-base/dist/asset-registries/Icons.js';\nimport { TableComponent } from '../table.component';\n\nregisterIcon('sort', {\n pathData: '',\n ltr: false,\n collection: 'lx-icons',\n packageName: '@leanix/theming',\n viewBox: '0 0 16 16',\n customTemplate: () => ({\n strings: [\n '<path d=\"M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z\" fill=\"#99A5BB\"/>',\n '<path d=\"M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z\" fill=\"#99A5BB\"/>'\n ]\n })\n});\nregisterIcon('sort-desc', {\n pathData: '',\n ltr: false,\n collection: 'lx-icons',\n packageName: '@leanix/theming',\n viewBox: '0 0 16 16',\n customTemplate: () => ({\n strings: [\n '<path d=\"M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z\" fill=\"#99A5BB\"/>',\n '<path d=\"M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z\" fill=\"#2A303D\"/>'\n ]\n })\n});\nregisterIcon('sort-asc', {\n pathData: '',\n ltr: false,\n collection: 'lx-icons',\n packageName: '@leanix/theming',\n viewBox: '0 0 16 16',\n customTemplate: () => ({\n strings: [\n '<path d=\"M8.00278 2C8.19778 2 8.37778 2.09 8.49028 2.2475L10.8903 5.5475C11.0253 5.7275 11.0403 5.975 10.9428 6.17C10.8378 6.3725 10.6353 6.5 10.4103 6.5L5.61028 6.5C5.38528 6.5 5.17528 6.3725 5.07778 6.17C4.97278 5.9675 4.99528 5.7275 5.13028 5.5475L7.53028 2.2475C7.64278 2.09 7.82278 2 8.01778 2H8.00278Z\" fill=\"#2A303D\"/>',\n '<path d=\"M8.00278 14.455C7.80778 14.455 7.62778 14.365 7.51528 14.2075L5.11528 10.9075C4.98028 10.7275 4.96528 10.48 5.06278 10.285C5.16778 10.0825 5.37028 9.95496 5.59528 9.95496H10.3953C10.6203 9.95496 10.8303 10.0825 10.9278 10.285C11.0328 10.4875 11.0103 10.7275 10.8753 10.9075L8.47528 14.2075C8.36278 14.365 8.18278 14.455 7.98778 14.455H8.00278Z\" fill=\"#99A5BB\"/>'\n ]\n })\n});\n\n/**\n * The `lx-th` can be used in combination with `lx-table` to implement sortable `<table>` elements.\n */\n@Component({\n selector: 'lx-th',\n templateUrl: './table-header.component.html',\n styleUrls: ['./table-header.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n '[class.sortable]': 'sortable()',\n '[tabIndex]': 'sortable() ? 0 : -1',\n role: 'columnheader'\n },\n imports: [IconComponent]\n})\nexport class TableHeaderComponent {\n /**\n * The technical column name.\n */\n @Input() column?: string;\n\n /**\n * Indicates that the column is not sortable (default `false`).\n */\n @Input() disableSort = false;\n\n /**\n * Prevents the user from clearing the sort.\n * Only allowing to toggle between asc & desc.\n */\n @Input() disableSortClear = false;\n\n /**\n * Triggers whenever the user changes the sort order.\n */\n @Output() sortChange = new EventEmitter<SortingOptions>();\n\n readonly sortable = computed(() => (this.parentTable?.isSortable() && !this.disableSort) ?? false);\n readonly order = computed<OrderOption>(() => {\n const sort = this.parentTable ? this.parentTable.sort() : this.#sort();\n if (this.column !== sort?.key) {\n return undefined;\n } else {\n return sort?.order;\n }\n });\n\n readonly #sort = signal<SortingOptions>({ key: this.column, order: undefined });\n\n constructor(@Optional() private parentTable?: TableComponent) {}\n\n @HostListener('keydown.enter') @HostListener('click') onSort() {\n if (this.column && !this.disableSort) {\n const sort = { key: this.column, order: determineNewOrder(this.order(), this.disableSortClear) };\n if (!this.parentTable) {\n this.#sort.set(sort);\n }\n this.sortChange.emit(sort);\n this.parentTable?.onTableHeaderSortChange(sort);\n }\n }\n}\n\nfunction determineNewOrder(currentOrder: OrderOption, disableSortClear: boolean): OrderOption {\n if (!currentOrder) {\n return 'ASC';\n } else if (currentOrder === 'ASC') {\n return 'DESC';\n } else if (currentOrder === 'DESC') {\n return disableSortClear ? 'ASC' : undefined;\n }\n return undefined;\n}\n","<div class=\"wrapper\">\n <span>\n <ng-content />\n </span>\n @if (sortable()) {\n @if (!order()) {\n <ui5-icon name=\"lx-icons/sort\" />\n } @else if (order() === 'ASC') {\n <ui5-icon name=\"lx-icons/sort-asc\" />\n } @else if (order() === 'DESC') {\n <ui5-icon name=\"lx-icons/sort-desc\" />\n }\n }\n</div>\n","import { AfterViewInit, Directive, EventEmitter, Output } from '@angular/core';\n\n/**\n * Allows to register an event handler for the \"AfterViewInit\" lifecycle hook.\n * This can be used to do something whenever a component enters the view. This\n * might be due to an *ngIf condition.\n *\n * Example:\n * ```\n * <lx-component-a #componentA></lx-component-a>\n * <lx-component-b *ngIf=\"someCondition\" (lxAfterViewInit)=\"componentA.close()\"></lx-component-b>\n * ```\n */\n@Directive({\n selector: '[lxAfterViewInit]',\n standalone: true\n})\nexport class AfterViewInitDirective implements AfterViewInit {\n @Output() lxAfterViewInit = new EventEmitter<void>();\n\n ngAfterViewInit() {\n this.lxAfterViewInit.emit();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AutocloseDirective } from './autoclose.directive';\n\n@Injectable({ providedIn: 'root' })\nexport class AutocloseGroupService {\n private registry: Record<string, AutocloseDirective[]> = {};\n\n register(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.addToGroup(directive);\n }\n }\n\n unregister(directive: AutocloseDirective) {\n if (directive.autocloseGroup) {\n this.removeFromGroup(directive);\n }\n }\n\n private removeFromGroup(directive: AutocloseDirective) {\n const name = directive.autocloseGroup!;\n this.registry[name] = this.getGroup(name).filter((d) => d !== directive);\n }\n\n private addToGroup(directive: AutocloseDirective) {\n const directivesOfSameGroup = this.getGroup(directive.autocloseGroup!);\n directivesOfSameGroup.forEach((d) => setTimeout(() => d.autoclose.emit()));\n directivesOfSameGroup.push(directive);\n }\n\n private getGroup(name: string): AutocloseDirective[] {\n if (!this.registry[name]) {\n this.registry[name] = [];\n }\n return this.registry[name]!;\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseGroupService } from './autoclose-group.service';\n\n@Directive({\n selector: '[lxAutoclose]',\n standalone: true\n})\nexport class AutocloseDirective implements OnInit, OnDestroy {\n @Output() autoclose = new EventEmitter<EventTarget | null>();\n\n /**\n * Allows to group lxAutoclose elements in order to prevent\n * to open multiple of them in that same group. If no group\n * is provided this prevention does not happen.\n */\n @Input() autocloseGroup?: string;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private elementRef: ElementRef,\n private groupService: AutocloseGroupService\n ) {}\n\n ngOnInit() {\n fromEvent(document, 'click', { capture: true })\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => this.onClick(event?.target));\n\n this.groupService.register(this);\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.groupService.unregister(this);\n }\n\n private onClick(target: EventTarget | null) {\n const clickedInside = this.elementRef.nativeElement.contains(target);\n if (!clickedInside) {\n this.autoclose.emit(target);\n }\n }\n}\n","import { AfterContentInit, Directive, ElementRef, Input, NgZone } from '@angular/core';\n\n@Directive({\n selector: '[lxAutofocus]',\n standalone: true\n})\nexport class AutofocusDirective implements AfterContentInit {\n @Input() lxAutofocus: boolean = true;\n @Input() lxAutofocusPreventScroll: boolean = false;\n @Input() lxAutofocusTimeout: number = 0;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private ngZone: NgZone\n ) {}\n\n ngAfterContentInit() {\n if (this.lxAutofocus !== false) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.elementRef.nativeElement.focus({ preventScroll: this.lxAutofocusPreventScroll });\n }, this.lxAutofocusTimeout);\n });\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * This pipe transforms...\n * - \"raw\" http(s) links\n * - markdown link syntax\n * ... into clickable anchor elements.\n *\n * The characters \"<\" and \">\" are escaped with their HTML entities < and >.\n *\n * You have an user interface where you don't want clickable links but also\n * don't want users to see the \"ugly\" markdown link syntax?\n * -> Use the 'lxUnlikify' pipe to replace markdown link syntax with just the link name\n */\n@Pipe({\n name: 'lxLinkify',\n standalone: true\n})\nexport class LxLinkifyPipe implements PipeTransform {\n /**\n * This is not the \"one URL regex to rule them all\", but a more realistic one which should work\n * for any URLs that our customers include in text fields on a Fact Sheet.\n *\n * Regex rules explained in plain text:\n *\n * (?:(?:https?):\\/\\/) -> Links must start with \"https://\" or \"http://\"\n *\n * (?:[^\\s/$.?#][^\\s]*(?<![\\.)])) LET'S SPLIT THIS ONE UP\n *\n * [^\\s/$.?#][^\\s]* -> Match any legal URL character until the next whitespace\n * (?<![\\.)] -> A negative lookahead to prevent matching a dot or parenthesis following a URL\n *\n * Link to regex101: https://regex101.com/r/d3KtfH/1 (NOTE: please update this link when changing the regex)\n */\n public static readonly HTTP_LINK_REGEX = /(?:(?:https?):\\/\\/)(?:[^\\s/$.?#][^\\s]*)/gi;\n\n /**\n * This will match the markdown link syntax: [link name](url)\n * Regex rules explained in plain text:\n *\n * (?:\\[([^\\]]*)\\]) -> Match any characters inside square brackets\n * \\(([^\\s\\/$.?#][^\\s]*)\\) -> Notice that this is the same regex as the HTTP_LINK_REGEX above,\n * but without the requirement for the http protocol.\n * This allows for links without including the protocol or also \"mailto:hello@world.de\" links\n *\n * Link to regex101: https://regex101.com/r/5UMUH8/1\n */\n public static readonly NAMED_LINK_REGEX = /(?:\\[([^\\]]*)\\])\\(([^\\s\\/$.?#][^\\s]*)\\)/gi;\n\n transform(text?: string | null, escape = true): string | undefined | null {\n if (text && typeof text === 'string') {\n const textWithRawLinks = this.wrapRawHttpLinksWithAnchorTags(escape ? this.escapeHtmlInUserProvidedString(text) : text);\n const textWithRawAndNamedLinks = this.turnMarkdownStyleLinksIntoAnchorTags(textWithRawLinks);\n return textWithRawAndNamedLinks;\n } else {\n return text;\n }\n }\n\n private turnMarkdownStyleLinksIntoAnchorTags(text: string) {\n let textWithRawAndNamedLinks = text;\n const namedLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n namedLinkMatches.forEach((namedLinkMatch) => {\n const [source, name, url] = namedLinkMatch;\n const urlIsValid = url && !/javascript\\:/i.test(url);\n if (source && name && urlIsValid) {\n textWithRawAndNamedLinks = textWithRawAndNamedLinks.replace(\n source,\n `<a href=\"${url}\" target=\"_blank\" rel=\"noopener noreferrer\">${name}</a>`\n );\n }\n });\n return textWithRawAndNamedLinks;\n }\n\n private wrapRawHttpLinksWithAnchorTags(text: string) {\n let textWithRawLinks = text;\n /**\n * Keeping track of this index prevents infinite loops\n * where a previously processed link starts with the same characters\n * as a second link.\n * e.g. https://angular.io/docs followed by https://angular.io\n */\n let nextIndexToStartReplacingFrom = 0;\n const rawLinkMatches = this.getAllRegexMatches(LxLinkifyPipe.HTTP_LINK_REGEX, text);\n rawLinkMatches.forEach((rawLinkMatch) => {\n const [url] = rawLinkMatch;\n const wrapUrlInAnchor = (sanitizedUrlMatch: string) => {\n const firstPart = textWithRawLinks.substring(0, nextIndexToStartReplacingFrom);\n const anchorTagHtml = `<a href=\"${sanitizedUrlMatch}\" target=\"_blank\" rel=\"noopener noreferrer\">${sanitizedUrlMatch}</a>`;\n const secondPart = textWithRawLinks.substring(nextIndexToStartReplacingFrom).replace(sanitizedUrlMatch!, anchorTagHtml);\n textWithRawLinks = firstPart + secondPart;\n nextIndexToStartReplacingFrom = rawLinkMatch.index + anchorTagHtml.length;\n };\n if (url) {\n /*\n * TODO: get rid of all this code once Safari supports negative lookbehinds in regular expressions\n * The following is RegExp that handles the same stuff as the JS code below:\n *\n * /(?:(?:(?<!\\]\\())(?:https|http):\\/\\/)(?:[^\\s/$.?#][^\\s]*(?<![\\.)]))/gi;\n *\n * Demo on regex101: https://regex101.com/r/7Vl9bg/1\n *\n * Check lookbehind support here: https://caniuse.com/?search=lookbehind\n */\n const lastUrlCharacterIndex = rawLinkMatch.index + url.length - 1;\n const textUsedToPerformMatching = rawLinkMatch.input;\n const lastCharacterInUrl = textUsedToPerformMatching[lastUrlCharacterIndex];\n const twoCharactersInFrontOfTheLink =\n rawLinkMatch.index > 3\n ? `${textUsedToPerformMatching[rawLinkMatch.index - 2]}${textUsedToPerformMatching[rawLinkMatch.index - 1]}`\n : '';\n const isMarkdownSyntaxLink = twoCharactersInFrontOfTheLink === '](';\n\n if (!isMarkdownSyntaxLink && lastCharacterInUrl === '.') {\n const characterAfterUrl = textUsedToPerformMatching[lastUrlCharacterIndex + 1];\n if (!characterAfterUrl || characterAfterUrl === ' ' || characterAfterUrl === '\\n') {\n const urlWithoutDotAtTheEnd = url.slice(0, -1);\n wrapUrlInAnchor(urlWithoutDotAtTheEnd);\n }\n } else if (!isMarkdownSyntaxLink) {\n wrapUrlInAnchor(url);\n }\n }\n });\n return textWithRawLinks;\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n\n /**\n * We assume that lxLinkify is exclusively used on user provided strings.\n * This is why we want to escape any other HTML tags that are already present in the string.\n * The logic implemented here has been used with no issues for three years in our Fact Sheet comments. See https://github.com/gregjacobs/Autolinker.js/pull/313\n *\n * When using lxLinkify in conjunction with other pipes that add HTML, make sure to use lxLinkify first,\n * so that it doesn't escape the HTML of any previous pipes.\n */\n private escapeHtmlInUserProvidedString(input: string) {\n return input.replace(/<|>/gi, (match) => '&' + (match === '>' ? 'g' : 'l') + 't;');\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LxLinkifyPipe } from './linkify.pipe';\n\n/**\n * This pipe replaces markdown link syntax with just the link name (omits the link altogether).\n * Example: [Angular documentation](http://angular.io/docs) -> Angular documentation\n *\n * It can also be used for \"bridging the gap\" until your view is ready to use \"lxLinkify\"\n * and you just want to get rid of the \"useless\" markdown syntax fast.\n *\n * While there are views where we want markdown style links to be clickable anchor tags,\n * there are other views where this can degrade the UX.\n * Example: in the Fact Sheet list on the inventory list view, having an arbitrary number\n * of links on the page can slow down the keyboard navigation while navigating through the list.\n */\n@Pipe({\n name: 'lxUnlinkify',\n standalone: true\n})\nexport class LxUnlinkifyPipe implements PipeTransform {\n transform(text?: string | null): string | undefined | null {\n if (text && typeof text === 'string') {\n let textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = text;\n const markdownLinkSyntaxMatches = this.getAllRegexMatches(LxLinkifyPipe.NAMED_LINK_REGEX, text);\n markdownLinkSyntaxMatches.forEach((markdownLinkSyntaxMatch) => {\n const [source, name] = markdownLinkSyntaxMatch;\n if (source && name) {\n textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName = textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName.replace(\n source,\n name\n );\n }\n });\n\n return textWhereMarkdownLinkSyntaxIsReplacedWithJustTheLinkName;\n } else {\n return text;\n }\n }\n\n private getAllRegexMatches(regex: RegExp, input: string) {\n let match: RegExpExecArray | null;\n const matches: RegExpExecArray[] = [];\n while ((match = regex.exec(input)) !== null) {\n matches.push(match);\n }\n return matches;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { trimEnd } from 'lodash/fp';\n\n@Pipe({\n name: 'lxBr',\n standalone: true\n})\nexport class BrPipe implements PipeTransform {\n transform(input: string | null | undefined, options: { isTrimEnd?: boolean } = {}) {\n if (input) {\n if (options.isTrimEnd) {\n input = trimEnd(input);\n }\n return input.replace(/[\\n\\r]/g, '<br/>');\n }\n return input;\n }\n}\n","import Color from 'color';\n\n/**\n * Compute the most eligible text color for a given background color (black or white), depending on the luminance of the\n * background color. In case the provided color is undefined or invalid, white (#FFFFFF) is returned.\n *\n * @param colorHex Color string in hexadecimal encoding.\n * @returns Equivalent contrast color in hexadecimal encoding.\n */\nexport function getContrastColor(colorHex?: string): string {\n try {\n colorHex = colorHex || '#000';\n\n const backgroundColor = Color(colorHex);\n const foregroundColor = Color(backgroundColor.isDark() ? '#FFFFFF' : '#000000');\n\n const backgroundColorLuminance = backgroundColor.luminosity();\n const foregroundColorLuminance = foregroundColor.luminosity();\n\n /**\n * Use the contrast ratio formula to determine the most eligible text color for the given background color.\n * It is possible tha the background color is dark based on the RGB value, but has opacity, which makes it light.\n * In such cases, the luminance value is used to determine the color. The solution is based on the following article:\n * https://dev.to/alvaromontoro/building-your-own-color-contrast-checker-4j7o\n */\n const contrastRatio =\n backgroundColorLuminance > foregroundColorLuminance\n ? (foregroundColorLuminance + 0.05) / (backgroundColorLuminance + 0.05)\n : (backgroundColorLuminance + 0.05) / (foregroundColorLuminance + 0.05);\n\n /**\n * Check contrast ratio for WCAG 2.0 level AA compliance level for small text. If the\n * contrast ratio is greater than 1 / 4.5, return the inverted foreground color.\n */\n if (contrastRatio >= 1 / 4.5) {\n return foregroundColor.negate().hex();\n }\n\n return foregroundColor.hex();\n } catch {\n return '#FFFFFF';\n }\n}\n\nexport function shorthandHexHandle(hex: string): string {\n const shorthandRegex = /^(#)([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const shorthand = hex.match(shorthandRegex);\n if (shorthand) {\n const convertedHex = shorthand[1]! + shorthand[2] + shorthand[2] + shorthand[3] + shorthand[3] + shorthand[4] + shorthand[4];\n return convertedHex;\n } else {\n return hex;\n }\n}\n\nexport function isValidHexColor(color: string) {\n return /^#[0-9A-F]{6}$/i.test(color);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { getContrastColor, isValidHexColor, shorthandHexHandle } from '../functions/core-css.helpers';\n@Pipe({\n name: 'lxContrastColor',\n standalone: true\n})\nexport class ContrastColorPipe implements PipeTransform {\n transform(color: string): string {\n if (color) {\n return isValidHexColor(shorthandHexHandle(color)) ? getContrastColor(color) : '';\n }\n return '';\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { format } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxDate',\n standalone: true\n})\nexport class CustomDatePipe implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(value: Date | string | number | null | undefined, f: string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return value ? format(value, f, { locale }) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\n@Pipe({\n name: 'lxHighlightRange',\n standalone: true\n})\nexport class HighlightRangePipe implements PipeTransform {\n transform(text: string, offset: number = 0, length: number = 0): string {\n const highlightedMarkup = this.doTransform(text, offset, length);\n return DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] });\n }\n\n private doTransform(text: string | null, offset: number, length: number): string {\n if (!text || offset < 0 || length < 0 || offset >= text?.length || offset + length > text?.length) {\n return '';\n }\n const highlightedPart = text.slice(offset, offset + length);\n return text.slice(0, offset) + (highlightedPart.length !== 0 ? this.highlight(highlightedPart) : '') + text.slice(offset + length);\n }\n\n private highlight(text: string): string {\n return `<span class=\"termHighlight\">${text}</span>`;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport DOMPurify from 'dompurify';\n\nexport interface HighlightTermSearchOptions {\n /**\n * Whether the search term should be exactly matched in the given text. When set to true, the following\n * characters and spaces between words are included in the search: - [ ] / { } ( ) * + ? . ^ $ |\n */\n exactMatch: boolean;\n}\n\n/**\n * These characters are treated as seperators by\n * elasticsearch and split the input into search tokens\n * which are used to find matches.\n */\nconst STANDARD_TOKENIZER_SEPERATORS = /[^a-zA-Z\\d\\s]/g;\n\n@Pipe({\n name: 'lxHighlightTerm',\n standalone: true\n})\nexport class HighlightTermPipe implements PipeTransform {\n /**\n * Transforms the input text with highlighted text according to the provided search term.\n * @param text The input text.\n * @param search The search term to highlight.\n * @param options The highlight term search options.\n * @returns The transformed text with highlighted search term.\n */\n transform(text?: string, search?: string | null, options: HighlightTermSearchOptions = { exactMatch: false }): string | undefined {\n if (text) {\n const highlightedMarkup = this.doTransform(text, search, options);\n return highlightedMarkup ? DOMPurify.sanitize(highlightedMarkup, { ALLOWED_TAGS: ['span'], ALLOWED_ATTR: ['class'] }) : undefined;\n } else {\n return undefined;\n }\n }\n\n private doTransform(text: string, search: string | null | undefined, options: HighlightTermSearchOptions): string | undefined {\n if (search) {\n let pattern = options.exactMatch ? search.trim() : search.replace(STANDARD_TOKENIZER_SEPERATORS, ' ');\n\n // replace special chars for a backslash for RegExp\n pattern = pattern.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n\n pattern = options.exactMatch\n ? pattern\n : pattern\n .split(' ')\n .filter((t) => {\n return t.length > 0;\n })\n .join('|');\n\n const regex = new RegExp(pattern, 'gi');\n return text.replace(regex, (match) => `<span class=\"termHighlight\">${match}</span>`); // add highlighting to matched regex pattern\n } else {\n return text;\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nfunction isUuid(s: string) {\n const uuidRegEx = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n return uuidRegEx.test(s);\n}\n\n@Pipe({\n name: 'lxIsUuid',\n pure: true,\n standalone: true\n})\nexport class LxIsUuidPipe implements PipeTransform {\n transform(input: string | null | undefined): boolean {\n return input ? isUuid(input) : false;\n }\n}\n","import { Inject, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { distanceInWords } from 'date-fns';\nimport { DATE_FN_LOCALE } from '../core-ui.constants';\n\n@Pipe({\n name: 'lxTimeAgo',\n pure: true,\n standalone: true\n})\nexport class LxTimeAgo implements PipeTransform {\n constructor(@Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function) {}\n\n transform(input: Date | string): string {\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n return distanceInWords(new Date(), input, { locale, addSuffix: true });\n }\n}\n","import { ChangeDetectorRef, Inject, Injectable, Optional, Pipe, PipeTransform } from '@angular/core';\nimport { TranslatePipe, TranslateService } from '@ngx-translate/core';\nimport { isArray, isEqual } from 'lodash-es';\nimport { GLOBAL_TRANSLATION_OPTIONS, GlobalTranslationOptionsProvider } from '../core-ui.constants';\n\n@Injectable({ providedIn: 'root' })\n@Pipe({\n name: 'lxTranslate',\n pure: false, // Because the underlying TranslatePipe isn't pure either\n standalone: true\n})\nexport class LxTranslatePipe implements PipeTransform {\n private translatePipe: TranslatePipe;\n\n // Cache last interpolations argument\n private cachedIncomingInterpolations?: Record<string, unknown>;\n // Cache corresponding resulting interpolations, which includes the globalTranslationOptions\n private cachedResultingInterpolations?: Record<string, string>;\n\n constructor(\n private translate: TranslateService,\n private cdRef: ChangeDetectorRef,\n @Optional() @Inject(GLOBAL_TRANSLATION_OPTIONS) private globalTranslationOptionsProvider?: GlobalTranslationOptionsProvider\n ) {\n this.translatePipe = new TranslatePipe(this.translate, this.cdRef);\n }\n\n public transform(query: string | string[], interpolations?: Record<string, unknown>): any {\n query = isArray(query) ? query.join('.') : query;\n\n const globalTranslationOptions = this.globalTranslationOptionsProvider?.createGlobalTranslationOptions() ?? {};\n\n if (!interpolations) {\n // No interpolations --> Use globalTranslationOptions only & update cache\n this.cachedIncomingInterpolations = interpolations;\n this.cachedResultingInterpolations = globalTranslationOptions;\n } else if (!isEqual(this.cachedIncomingInterpolations, interpolations)) {\n // Interpolations are different from the ones cached --> combine them with globalTranslationOptions & update cache\n this.cachedIncomingInterpolations = interpolations;\n this.cachedResultingInterpolations = Object.assign({}, globalTranslationOptions, interpolations);\n }\n // Else: Use cached resulting interpolations\n\n return this.translatePipe.transform(query, this.cachedResultingInterpolations);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n// eslint-disable-next-line no-restricted-imports\nimport { marked, Renderer } from 'marked';\n\ninterface MarkdownOptions {\n disableListRendering?: boolean;\n}\n\n@Pipe({\n name: 'lxMarkdown',\n standalone: true\n})\nexport class MarkdownPipe implements PipeTransform {\n readonly renderer: Renderer;\n\n constructor() {\n this.renderer = new Renderer();\n this.renderer.link = (href: string, title: string, text: string) =>\n `<a href=\"${href}\" title=\"${title || ''}\" target=\"_blank\" rel=\"noopener noreferrer\">${text}</a>`;\n }\n\n transform(markdownText: string | null | undefined, markdownOptions?: MarkdownOptions): string {\n const options: marked.MarkedOptions = { renderer: this.renderer };\n if (markdownOptions?.disableListRendering && options.renderer) {\n options.renderer.list = (body: string, _ordered: boolean, positionInList: number) => {\n return `${positionInList}. ${body}`;\n };\n options.renderer.listitem = (text: string) => {\n return text;\n };\n }\n return markdownText ? marked.parse(markdownText, options) : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxNbsp',\n standalone: true\n})\nexport class NbspPipe implements PipeTransform {\n transform(text: string | null | undefined): string {\n return text ? text.replace(/ /g, ' ') : '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { get, sortBy } from 'lodash/fp';\n\nexport type OrderOption = 'ASC' | 'DESC' | undefined;\nexport interface SortingOptions {\n key?: string;\n caseInsensitive?: boolean;\n order?: OrderOption;\n}\n\n@Pipe({\n name: 'lxSort',\n standalone: true\n})\nexport class SortPipe implements PipeTransform {\n transform<T>(items: Readonly<T[]> | null, options: SortingOptions = {}): any[] {\n if (!items) {\n return [];\n }\n\n if (options.order !== 'DESC') {\n return applySorting(options, items);\n } else {\n return applySorting(options, items).reverse();\n }\n }\n}\n\nfunction applySorting<T>(options: SortingOptions, items: Readonly<T[]>): T[] {\n if (options.caseInsensitive) {\n return options.key ? sortBy<T>(getValueForKey(options.key), items) : items.slice().sort(sortStringCaseInsensitive());\n }\n return options.key ? sortBy<T>((item) => get(options.key!, item), items) : items.slice().sort();\n}\n\nfunction sortStringCaseInsensitive<T>() {\n return (a: T, b: T) => {\n if (typeof a === 'string' && typeof b === 'string') {\n return a.localeCompare(b, undefined, { sensitivity: 'base' });\n }\n if (a === b) {\n return 0;\n }\n if (a < b) {\n return -1;\n }\n return 1;\n };\n}\n\nfunction getValueForKey<T>(key: string) {\n return (item: T) => {\n const value = (<any>item)[key];\n if (typeof value === 'string') {\n return value.toLowerCase();\n }\n return value;\n };\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nexport function getTranslationParts(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarkAndParams: string | [string, any]\n): string[] {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMark = isArray(cutMarkAndParams) ? cutMarkAndParams[0] : cutMarkAndParams;\n const params = isArray(cutMarkAndParams) ? cutMarkAndParams[1] : null;\n const translation = translateService.instant(translationKey, params);\n const parts = split(translation, `[[${cutMark}]]`);\n if (parts.length === 1) {\n console.error(`'[[${cutMark}]]' not found in '${translation}' for key '${translationKey}'.`);\n }\n return parts;\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * preceding the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'link' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['link', params] }}\n * @see TranslationAfterPipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationBefore',\n standalone: true\n})\nexport class TranslationBeforePipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {(string|[string, any])} cutMarkAndParams either just the cut-mark to split by or\n * an array of cut-mark string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[0]!;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { getTranslationParts } from './translation-before.pipe';\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * following the cut-mark string '[[<cutMark>]]'.\n * NB: Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @see TranslationBeforePipe\n * @see TranslationBetweenPipe\n */\n@Pipe({\n name: 'lxTranslationAfter',\n standalone: true\n})\nexport class TranslationAfterPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n transform(translationKey: string | string[], cutMarkAndParams: string | [string, any]): string {\n return getTranslationParts(this.translateService, translationKey, cutMarkAndParams)[1] || '';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { isArray, split } from 'lodash-es';\n\nfunction getTranslationBetween(\n translateService: TranslateService,\n translationKey: string | string[],\n cutMarksAndParams: [string, string] | [string, string, any]\n): string {\n translationKey = isArray(translationKey) ? translationKey.join('.') : translationKey;\n const cutMarks = cutMarksAndParams.slice(0, 2);\n const params = cutMarksAndParams[2] || null;\n const translation = translateService.instant(translationKey, params);\n const parts1 = split(translation, `[[${cutMarks[0]}]]`);\n if (parts1.length === 1) {\n console.error(`'[[${cutMarks[0]}]]' not found in '${translation}' for key '${translationKey}'.`);\n return translation;\n } else {\n const parts2 = split(parts1[1], `[[${cutMarks[1]}]]`);\n if (parts2.length === 1) {\n console.error(`'[[${cutMarks[1]}]]' not found in '${translation}' after '[[${cutMarks[0]}]]' for key '${translationKey}'.`);\n return translation;\n }\n return parts2[0]!;\n }\n}\n\n/**\n * Translates the given i18n-key (instantly) and returns the part of the translation\n * between the two cut-mark strings '[[<cutMark>]]'.\n * NB: This pipe should be used very rarely, as it fixes the order of cut-marks, which may make\n * them untranslateable in some languages. It also makes the template harder to read.\n * Use normal interpolations rather than cut-marks whenever the content is text, even if it comes from another pipe.\n * @example\n * {{ 'some.text' | lxTranslationBefore:'link' }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.text' | lxTranslationBetween:['link', 'userLink'] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.text' | lxTranslationAfter:'userLink' }}\n *\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBefore:['link', params] }}\n * <a>{{'some.linkLabel' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationBetween:['link', 'userLink', params] }}\n * <a>{{'some.userName' | translate}}</a>\n * {{ 'some.textWithOtherInterpolations' | lxTranslationAfter:['userLink', params] }}\n * @see TranslationBeforePipe\n * @see TranslationAferPipe\n */\n@Pipe({\n name: 'lxTranslationBetween',\n standalone: true\n})\nexport class TranslationBetweenPipe implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * @param {string|string[]} translationKey i18n key or array of its segments\n * @param {([string, string]|[string, string, any])} interpolationsAndParams either just the interpolation string to split by or\n * an array of interpolation string and translation params\n * @returns {string}\n */\n transform(translationKey: string | string[], cutMarksAndParams: [string, string] | [string, string, any]): string {\n return getTranslationBetween(this.translateService, translationKey, cutMarksAndParams);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'lxUnescapeCurlyBraces',\n standalone: true\n})\nexport class UnescapeCurlyBracesPipe implements PipeTransform {\n transform(input: string): string {\n return input.replace(/\\\\([{}])/g, '$1');\n }\n}\n","import { ConnectedPosition } from '@angular/cdk/overlay';\nimport { TooltipPosition } from './tooltip-position.interface';\n\nfunction toCdkX(x: 'left' | 'center' | 'right'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n }\n}\n\nfunction invertCdkX(x: 'start' | 'center' | 'end'): 'start' | 'center' | 'end' {\n switch (x) {\n case 'start':\n return 'end';\n case 'center':\n return 'center';\n case 'end':\n return 'start';\n }\n}\n\nfunction invertCdkY(x: 'top' | 'center' | 'bottom'): 'top' | 'center' | 'bottom' {\n switch (x) {\n case 'top':\n return 'bottom';\n case 'center':\n return 'center';\n case 'bottom':\n return 'top';\n }\n}\n\nfunction offsetYDirection(x: 'top' | 'center' | 'bottom'): number {\n switch (x) {\n case 'top':\n return -6;\n case 'center':\n return 0;\n case 'bottom':\n return 6;\n }\n}\n\nfunction offsetXDirection(position: TooltipPosition): number {\n switch (position.y) {\n case 'center':\n switch (position.x) {\n case 'left':\n return -6;\n case 'center':\n return 0;\n case 'right':\n return 6;\n }\n case 'top':\n case 'bottom':\n switch (position.x) {\n case 'left':\n return 30;\n case 'center':\n return 0;\n case 'right':\n return -30;\n }\n }\n}\n\nexport function toCdkPosition(position: TooltipPosition): ConnectedPosition {\n return {\n originX: toCdkX(position.x),\n originY: position.y,\n overlayX: invertCdkX(toCdkX(position.x)),\n overlayY: invertCdkY(position.y),\n offsetY: offsetYDirection(position.y),\n offsetX: offsetXDirection(position)\n };\n}\n","export interface TooltipPosition {\n x: 'left' | 'center' | 'right';\n y: 'top' | 'center' | 'bottom';\n}\n\nexport function isValidX(x: string): x is 'left' | 'center' | 'right' {\n return ['left', 'center', 'right'].includes(x);\n}\n\nexport function isValidY(y: string): y is 'top' | 'center' | 'bottom' {\n return ['top', 'center', 'bottom'].includes(y);\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { TooltipPosition } from './tooltip-position.interface';\n\n@Component({\n selector: 'lx-tooltip',\n styleUrls: ['./tooltip.component.scss'],\n templateUrl: './tooltip.component.html',\n standalone: true,\n imports: [NgIf, NgClass],\n host: { role: 'tooltip' }\n})\nexport class TooltipComponent {\n @Input() content = '';\n @Input() isHtmlContent: boolean = false;\n @Input() position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n}\n","<div *ngIf=\"!isHtmlContent; else htmlTooltip\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\">{{ content }}</div>\n<ng-template #htmlTooltip>\n <div [innerHtml]=\"content\" [ngClass]=\"['x-' + position.x, 'y-' + position.y]\"></div>\n</ng-template>\n","import { AriaDescriber } from '@angular/cdk/a11y';\nimport { Overlay, OverlayPositionBuilder, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Directive, ElementRef, HostListener, Input, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';\nimport { toCdkPosition } from './to-cdk-position.function';\nimport { TooltipPosition, isValidX, isValidY } from './tooltip-position.interface';\nimport { TooltipComponent } from './tooltip.component';\n\n/**\n * Tooltip directive is used to show a tooltip on hover or focus on an element.\n */\n@Directive({\n selector: '[lxTooltip]',\n standalone: true\n})\nexport class TooltipDirective implements OnChanges, OnDestroy {\n /** The content of the tooltip. */\n @Input('lxTooltip') content?: string | null;\n /** The position of the tooltip. */\n @Input() set lxTooltipPosition(value: { x: string; y: string } | undefined) {\n this.position = {\n x: value && isValidX(value.x) ? value.x : 'center',\n y: value && isValidY(value.y) ? value.y : 'top'\n };\n }\n private position: TooltipPosition = {\n x: 'center',\n y: 'top'\n };\n /** The delay in milliseconds before the tooltip is shown. */\n @Input() lxTooltipDelay?: number;\n /** Whether the tooltip content is HTML. */\n @Input() lxTooltipIsHtmlContent: boolean = false;\n\n private overlayRef?: OverlayRef;\n private tooltipRef?: ComponentRef<TooltipComponent>;\n private mouseOrFocusOnHost: boolean = false;\n\n get positionStrategy() {\n return this.overlayPositionBuilder.flexibleConnectedTo(this.elementRef).withPositions([toCdkPosition(this.position)]);\n }\n\n constructor(\n private overlayPositionBuilder: OverlayPositionBuilder,\n private elementRef: ElementRef,\n private overlay: Overlay,\n private ariaDescriber: AriaDescriber\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.overlayRef && changes['lxTooltipPosition']) {\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n }\n if (this.tooltipRef) {\n if (changes['lxTooltipPosition']) {\n this.tooltipRef.instance.position = this.position;\n }\n if (changes['lxTooltipIsHtmlContent']) {\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n }\n if (changes['content']) {\n if (this.content) {\n this.tooltipRef.instance.content = this.content;\n this.overlayRef?.updatePosition();\n } else {\n this.overlayRef?.detach();\n }\n }\n }\n }\n\n /** @internal */\n @HostListener('mouseenter')\n @HostListener('focus')\n show() {\n this.mouseOrFocusOnHost = true;\n setTimeout(() => {\n if (!this.overlayRef?.hasAttached() && this.mouseOrFocusOnHost && this.content) {\n this.overlayRef = this.overlay.create({ positionStrategy: this.positionStrategy });\n const tooltipPortal = new ComponentPortal(TooltipComponent);\n this.tooltipRef = this.overlayRef.attach(tooltipPortal);\n this.tooltipRef.instance.content = this.content;\n this.tooltipRef.instance.isHtmlContent = this.lxTooltipIsHtmlContent;\n this.tooltipRef.instance.position = this.position;\n this.ariaDescriber.describe(this.elementRef.nativeElement, this.tooltipRef.location.nativeElement);\n }\n }, this.lxTooltipDelay ?? 90);\n }\n\n ngOnDestroy() {\n this.mouseOrFocusOnHost = false;\n this.overlayRef?.dispose();\n }\n\n /** @internal */\n @HostListener('mouseleave')\n @HostListener('click')\n @HostListener('blur')\n hide() {\n this.mouseOrFocusOnHost = false;\n this.ariaDescriber.removeDescription(this.elementRef.nativeElement, this.tooltipRef?.location.nativeElement);\n this.overlayRef?.dispose();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { BadgeComponent } from './components/badge/badge.component';\nimport { BannerComponent } from './components/banner/banner.component';\nimport { ButtonGroupComponent } from './components/button-group/button-group.component';\nimport { ButtonComponent } from './components/button/button.component';\nimport { CardComponent } from './components/card/card.component';\nimport { CollapsibleComponent } from './components/collapsible/collapsible.component';\nimport { CounterComponent } from './components/counter/counter.component';\nimport { EllipsisComponent } from './components/ellipsis/ellipsis.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { IconScaleComponent } from './components/icon-scale/icon-scale.component';\nimport { SpinnerComponent } from './components/spinner/spinner.component';\nimport { StepperComponent } from './components/stepper/stepper.component';\nimport { TableHeaderComponent } from './components/table/table-header/table-header.component';\nimport { TableComponent } from './components/table/table.component';\nimport { TinySpinnerComponent } from './components/tiny-spinner/tiny-spinner.component';\nimport { AfterViewInitDirective } from './directives/after-view-init.directive';\nimport { AutocloseDirective } from './directives/autoclose.directive';\nimport { AutofocusDirective } from './directives/autofocus.directive';\nimport { LxLinkifyPipe } from './linkify/linkify.pipe';\nimport { LxUnlinkifyPipe } from './linkify/unlinkify.pipe';\nimport { BrPipe } from './pipes/br.pipe';\nimport { ContrastColorPipe } from './pipes/contrast-color.pipe';\nimport { CustomDatePipe } from './pipes/custom-date.pipe';\nimport { HighlightRangePipe } from './pipes/highlight-range.pipe';\nimport { HighlightTermPipe } from './pipes/highlight-term.pipe';\nimport { LxIsUuidPipe } from './pipes/lx-is-uuid.pipe';\nimport { LxTimeAgo } from './pipes/lx-time-ago.pipe';\nimport { LxTranslatePipe } from './pipes/lx-translate.pipe';\nimport { MarkdownPipe } from './pipes/markdown.pipe';\nimport { NbspPipe } from './pipes/nbsp.pipe';\nimport { SortPipe } from './pipes/sort.pipe';\nimport { TranslationAfterPipe } from './pipes/translation-after.pipe';\nimport { TranslationBeforePipe } from './pipes/translation-before.pipe';\nimport { TranslationBetweenPipe } from './pipes/translation-between.pipe';\nimport { UnescapeCurlyBracesPipe } from './pipes/unescape-curly-braces.pipe';\nimport { TooltipDirective } from './tooltip/tooltip.directive';\n\nexport const CORE_MODULE_EXPORTS = [\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n BadgeComponent,\n CounterComponent,\n BannerComponent,\n ButtonComponent,\n BrPipe,\n ButtonGroupComponent,\n CardComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n StepperComponent,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n CollapsibleComponent,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe,\n EmptyStateComponent\n];\n\n@NgModule({\n imports: [\n TranslateModule.forChild(),\n AfterViewInitDirective,\n AutocloseDirective,\n AutofocusDirective,\n CounterComponent,\n BadgeComponent,\n BannerComponent,\n ButtonComponent,\n ButtonGroupComponent,\n BrPipe,\n CardComponent,\n CollapsibleComponent,\n CustomDatePipe,\n EllipsisComponent,\n HighlightRangePipe,\n HighlightTermPipe,\n IconScaleComponent,\n LxLinkifyPipe,\n LxUnlinkifyPipe,\n LxTimeAgo,\n LxTranslatePipe,\n MarkdownPipe,\n NbspPipe,\n LxIsUuidPipe,\n StepperComponent,\n SpinnerComponent,\n TableComponent,\n TableHeaderComponent,\n TinySpinnerComponent,\n TooltipDirective,\n TranslationAfterPipe,\n TranslationBeforePipe,\n TranslationBetweenPipe,\n SortPipe,\n ContrastColorPipe,\n UnescapeCurlyBracesPipe,\n EmptyStateComponent\n ],\n exports: CORE_MODULE_EXPORTS,\n providers: [LxTimeAgo]\n})\nexport class LxCoreUiModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { User, UserAvatarSize } from '../components/avatar/avatar.model';\n\n@Pipe({\n name: 'displayAvatars',\n standalone: true\n})\nexport class DisplayAvatarsPipe implements PipeTransform {\n transform(\n users: (User & { technicalUser?: boolean })[],\n type: 'individual' | 'group',\n size: UserAvatarSize,\n userGroupWidth: number,\n autoScale: boolean,\n maxLength: number\n ): (User & { technicalUser?: boolean })[] {\n if (maxLength) {\n return users.slice(0, maxLength);\n }\n if (autoScale) {\n if (type === 'group') {\n const usersToShow = Math.floor((userGroupWidth - 2 * SIZES[size]) / ((SIZES[size] * 2) / 3)) + 1;\n return users.slice(0, usersToShow);\n } else {\n const usersToShow = Math.floor(userGroupWidth / (SIZES[size] + 2)) - 1;\n return users.slice(0, usersToShow);\n }\n }\n return users;\n }\n}\n\ntype SizeMap = { [K in UserAvatarSize]: number };\n\nconst SIZES: SizeMap = {\n XS: 16,\n S: 24,\n M: 32,\n L: 40,\n XL: 64\n};\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/** This is a temporary storage for our user and image related models, before we find a better place for them\n *\n * We relocated the models here to facilitate moving the avatar and avatar group components out of the user-ui directory.\n *\n * This ensures we maintain a single source of truth and adhere to the current strict no-shared-nx policy, since all\n * libraries and apps already support importing from `@leanix/components` already.\n */\n\nexport type UserAvatarSize = 'XS' | 'S' | 'M' | 'L' | 'XL';\n\nexport interface ImageReader {\n getAvatar(userId?: string, size?: UserAvatarSize, displayName?: string): Promise<string>;\n getAvatarUrl(userId?: string, size?: UserAvatarSize): string;\n getStorageServiceAvatarUrl(userId?: string, size?: UserAvatarSize): string;\n getThumbnailUrl(imageId: string): string;\n loadThumbnail(imageId: string): Observable<string>;\n}\n\nexport const IMAGE_READER = new InjectionToken<ImageReader>('IMAGE_READER');\n\nexport const DEFAULT_IMAGE_ID = '00000000-0000-4000-0000-000000000001';\n\n/**\n * This User model includes common properties that the ui avatar components care about in order to respresent a user\n * in the UI.\n */\nexport interface User {\n id?: string;\n displayName?: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n}\n\nconst REFERENCE_SIZE_MAPPING = {\n XS: 16,\n S: 24,\n M: 32,\n L: 40,\n XL: 64\n};\n\n// We want to use 2x bigger images for avatars to support high resolution displays\n// So we want to draw them in their original size but use 2x the size as reference\nexport const AVATAR_SIZE_MAPPING = {\n XS: REFERENCE_SIZE_MAPPING.XS * 2,\n S: REFERENCE_SIZE_MAPPING.S * 2,\n M: REFERENCE_SIZE_MAPPING.M * 2,\n L: REFERENCE_SIZE_MAPPING.L * 2,\n XL: REFERENCE_SIZE_MAPPING.XL * 2\n};\n\nexport const AVATAR_COLORS: string[] = [\n '#00a399',\n '#0f7eb5',\n '#18aece',\n '#2889ff',\n '#ff914d',\n '#fad71e',\n '#fe6690',\n '#ab657a',\n '#916b50',\n '#9755cd',\n '#fc9785'\n];\n","import { AsyncPipe } from '@angular/common';\nimport { Component, Inject, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\nimport { DEFAULT_IMAGE_ID, IMAGE_READER, ImageReader, User, UserAvatarSize } from './avatar.model';\n\n@Component({\n selector: 'lx-avatar',\n templateUrl: 'avatar.component.html',\n styleUrl: 'avatar.component.scss',\n standalone: true,\n imports: [AsyncPipe, TooltipDirective]\n})\nexport class AvatarComponent implements OnChanges {\n @Input() user!: User & { technicalUser?: boolean };\n @Input() size: UserAvatarSize = 'M';\n @Input() showMailToLink = true;\n @Input() disabled = false;\n\n readonly NAME = 'AvatarComponent';\n\n public imageURL: Promise<string>;\n\n constructor(@Inject(IMAGE_READER) private imageReader: ImageReader) {\n this.imageURL = this.imageReader.getAvatar(DEFAULT_IMAGE_ID, this.size, this.user?.displayName);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const { user } = changes;\n\n if (user && user.currentValue && !user.currentValue.technicalUser) {\n const { id, displayName } = this.user || {};\n this.imageURL = this.imageReader.getAvatar(id ?? undefined, this.size, displayName);\n }\n }\n}\n","@let image = imageURL | async;\n@let isTechnicalUser = user.technicalUser;\n@let hasMailToLink = showMailToLink && user.email;\n\n@if (image) {\n @if (!isTechnicalUser) {\n @if (hasMailToLink) {\n <a class=\"userLink\" href=\"mailto:{{ user.email }}\" lxTooltip=\"{{ user.displayName }}\">\n <img\n [src]=\"image\"\n class=\"avatarImage\"\n [class]=\"size\"\n [class.disabled]=\"disabled\"\n role=\"presentation\"\n alt=\"{{ user.displayName }}\"\n />\n </a>\n } @else {\n <img [src]=\"image\" class=\"avatarImage\" [class]=\"size\" [class.disabled]=\"disabled\" role=\"presentation\" alt=\"{{ user.displayName }}\" />\n }\n } @else {\n <i class=\"avatarImage fas fa-robot\" lxTooltip=\"{{ user.displayName }}\" [class]=\"size\" [class.disabled]=\"disabled\"></i>\n }\n} @else {\n <div class=\"avatarImage userLink loading\" [class]=\"size\"></div>\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, NgZone, OnDestroy, ViewChild } from '@angular/core';\nimport { DisplayAvatarsPipe } from '../../pipes/display-avatars.pipe';\nimport { TooltipDirective } from '../../tooltip/tooltip.directive';\nimport { AvatarComponent } from '../avatar/avatar.component';\nimport { User, UserAvatarSize } from '../avatar/avatar.model';\n\n@Component({\n selector: 'lx-avatar-group',\n templateUrl: 'avatar-group.component.html',\n styleUrls: ['avatar-group.component.scss'],\n standalone: true,\n imports: [CdkOverlayOrigin, TooltipDirective, NgIf, NgFor, AvatarComponent, NgClass, CdkConnectedOverlay, DisplayAvatarsPipe]\n})\nexport class AvatarGroupComponent implements AfterViewInit, OnDestroy {\n readonly NAME = 'AvatarGroupComponent';\n\n @Input() title?: string;\n @Input() users: (User & { technicalUser?: boolean })[] = [];\n @Input() size: UserAvatarSize = 'M';\n @Input() type: 'individual' | 'group' = 'group';\n @Input() maxLength: number = 0;\n @Input() autoScale: boolean = false;\n @Input() disabledUserIds: string[] = [];\n\n @ViewChild('userGroup') userGroupElement!: ElementRef<HTMLElement>;\n\n get userNames() {\n return this.users\n .map(({ displayName }) => displayName)\n .sort()\n .join('<br>');\n }\n\n public overlayVisible = false;\n\n constructor(\n private cdr: ChangeDetectorRef,\n private zone: NgZone\n ) {}\n\n ngAfterViewInit(): void {\n this.resizeObserver.observe(this.userGroupElement.nativeElement);\n }\n\n resizeObserver = new ResizeObserver(() => {\n this.zone.runOutsideAngular(() => {\n this.zone.run(() => {\n this.cdr.detectChanges();\n });\n });\n });\n\n handleClick(event: Event) {\n event.stopPropagation();\n this.overlayVisible = true;\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver && this.userGroupElement) {\n this.resizeObserver.unobserve(this.userGroupElement.nativeElement);\n }\n }\n\n isUserDisabled(user: User): boolean {\n return !!user.id && this.disabledUserIds.includes(user.id);\n }\n}\n","<div\n #userGroup\n (click)=\"handleClick($event)\"\n (keydown.enter)=\"handleClick($event)\"\n (keydown.space)=\"handleClick($event)\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [lxTooltip]=\"!overlayVisible ? userNames : null\"\n [lxTooltipIsHtmlContent]=\"true\"\n tabindex=\"0\"\n role=\"button\"\n aria-haspopup=\"dialog\"\n>\n <div *ngIf=\"users | displayAvatars: type : size : userGroup.offsetWidth : autoScale : maxLength as filteredUsers\" class=\"group-container\">\n <lx-avatar\n [user]=\"user\"\n [size]=\"size\"\n [showMailToLink]=\"false\"\n [disabled]=\"isUserDisabled(user)\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n *ngFor=\"let user of filteredUsers\"\n />\n <div\n *ngIf=\"filteredUsers.length < users.length\"\n [ngClass]=\"[type === 'individual' ? 'individual' : 'group', size]\"\n class=\"more-users-icon\"\n >\n +{{ users.length - filteredUsers.length }}\n </div>\n </div>\n</div>\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"overlayVisible\"\n (overlayOutsideClick)=\"overlayVisible = false\"\n>\n <div class=\"avatars-overlay\">\n <div *ngIf=\"title\" class=\"avatars-overlay-title\">{{ title }}</div>\n <div class=\"avatars-list\">\n <div *ngFor=\"let user of users\" class=\"individual\">\n <lx-avatar [user]=\"user\" [size]=\"size\" [showMailToLink]=\"true\" [disabled]=\"isUserDisabled(user)\" />\n </div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n\n/**\n * Skeleton is a component that can be used to show a loading state of a component.\n *\n * Use skeleton loaders for pages or sections that load content progressively, like text and images. The component can\n * be used to compose various scenarios like placeholders for thumbnails, lists, and avatars. See the example\n * [patterns](?path=/docs/skeleton-patterns--docs) for more details.\n */\n@Component({\n selector: 'lx-skeleton',\n template: '',\n styleUrl: 'skeleton.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class SkeletonComponent {\n /**\n * Width of the skeleton element. Valid CSS values are supported. Default is 100% width of the parent.\n */\n @HostBinding('style.width') @Input() width?: string;\n\n /**\n * Height of the skeleton element. Valid CSS values are supported. Default is 100% height of the parent.\n */\n @HostBinding('style.height') @Input() height?: string;\n\n /**\n * Border radius of the skeleton element. Valid CSS values are supported. Default is 4px.\n */\n @HostBinding('style.border-radius') @Input() borderRadius?: string;\n\n /**\n * Color of the skeleton element. 'dark' or 'light' are supported. Default is 'light'.\n */\n @HostBinding('attr.color') @Input() color: 'dark' | 'light' = 'light';\n}\n","import { ChangeDetectionStrategy, Component, ElementRef } from '@angular/core';\n\n@Component({\n selector: 'lx-token',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n templateUrl: './token.component.html'\n})\nexport class TokenComponent {\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n show() {\n this.elementRef.nativeElement.style.display = 'inline-block';\n }\n\n hide() {\n this.elementRef.nativeElement.style.display = 'none';\n }\n}\n","<ng-content />\n","import { NgIf } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n ContentChildren,\n DestroyRef,\n effect,\n ElementRef,\n EventEmitter,\n input,\n Output,\n QueryList,\n signal,\n ViewChild\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { combineLatest } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, startWith } from 'rxjs/operators';\nimport { ButtonComponent } from '../../components/button/button.component';\nimport { CounterComponent } from '../../components/counter/counter.component';\nimport { ResizeObserverService } from '../../services/resize-observer.service';\nimport { TokenComponent } from './token/token.component';\n\n/**\n * The tokenizer component (`lx-tokenizer`) is responsible for rendering a list of items into a container and hiding those that do not fit behind a placeholder. The items are represented as `lx-token`. Each `lx-token` allows to project any content into it, so anything can become a token. The tokenizer calculates how many items fit into the container (based on width), hiding those items that are overflowing and showing a overflow placeholder instead (e.g. \"+4\").\n *\n * ## Usage\n *\n * 1. Import `TokenizerComponent` & `TokenComponent` into your module or component.\n * 2. Use the component in your template. All items should be wrapped in a `lx-token` element for the tokenizer to identify the individual tokens.\n *\n * ```ts\n * import { TokenizerComponent } from '@leanix/components';\n *\n * @Component({\n * selector: 'lx-my-component',\n * standalone: true,\n * imports: [TokenizerComponent, TokenComponent],\n * template: `\n * <lx-tokenizer>\n * <lx-token>Token One</lx-token>\n * <lx-token>Token Two</lx-token>\n * </lx-tokenizer>\n * `\n * })\n * export class MyComponent {}\n * ```\n *\n * ## API\n *\n * ### Inputs\n *\n * - `active`: Can be used to activate & deactivate tokenization\n *\n * ### Outputs\n *\n * - `overflowPlaceholderClick`: Fires when the user clicks on the overflow placeholder\n *\n * ### Content projection\n *\n * - `lx-token`: All `lx-tokens` will be projected into the tokenizer\n */\n@Component({\n selector: 'lx-tokenizer',\n standalone: true,\n templateUrl: './tokenizer.component.html',\n styleUrls: ['./tokenizer.component.scss'],\n imports: [NgIf, CounterComponent, ButtonComponent, TranslateModule],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TokenizerComponent implements AfterContentInit {\n /** @internal */\n readonly NAME = 'TokenizerComponent';\n\n protected overflowItems = signal<TokenComponent[]>([]);\n protected overflowItemCount = computed(() => this.overflowItems().length);\n protected showCounter = computed(() => this.active() && this.overflowItemCount() > 0);\n\n /** Can be used to activate & deactivate tokenization */\n active = input(true);\n private active$ = toObservable(this.active);\n private overflowStartIndex = signal<number | null>(null);\n\n /**\n * Emitted when the counter button is clicked\n * @param startIndex The index of the first overflowing element\n * @param counterElement The counter button element\n */\n @Output() overflowPlaceholderClick = new EventEmitter<{ startIndex: number; counterElement: ElementRef<HTMLElement> }>();\n\n /** @internal */\n @ContentChildren(TokenComponent) items?: QueryList<TokenComponent>;\n /** @internal */\n @ViewChild('counter', { read: ElementRef }) counter?: ElementRef<HTMLElement>;\n /** @internal */\n @ViewChild('tokensContainer', { read: ElementRef }) tokensContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private destroyRef: DestroyRef,\n private changeDetectorRef: ChangeDetectorRef,\n private resizeObserverService: ResizeObserverService\n ) {\n effect(() => {\n // Whenever the tokenizer is disabled, ensure all tokens are shown\n if (!this.active()) {\n this.items!.forEach((item) => item.show());\n }\n });\n }\n\n ngAfterContentInit() {\n const containerWidth = this.resizeObserverService.createResizeObservable(this.elementRef.nativeElement).pipe(\n map((entry) => entry.contentRect.width ?? 0),\n debounceTime(16),\n distinctUntilChanged()\n );\n const itemsChanged$ = this.items!.changes;\n\n combineLatest([\n this.active$,\n containerWidth.pipe(startWith(this.elementRef.nativeElement.getBoundingClientRect().width)),\n itemsChanged$.pipe(startWith(this.items))\n ])\n .pipe(\n filter(([active]) => active),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(([, containerWidth]) => {\n this.tokenize(containerWidth);\n });\n }\n\n /** @internal */\n onCounterClicked(): void {\n const startIndex = this.overflowStartIndex();\n if (typeof startIndex === 'number') {\n this.overflowPlaceholderClick.emit({ startIndex, counterElement: this.counter! });\n }\n }\n\n private tokenize(containerWidth: number): void {\n if (!this.items) {\n return;\n }\n\n this.items.forEach((item) => item.hide());\n this.overflowItems.set([]);\n this.changeDetectorRef.detectChanges();\n\n let index = 0;\n for (const item of this.items) {\n item.show();\n const usedWidth = this.tokensContainer.nativeElement.getBoundingClientRect().width;\n if (usedWidth > containerWidth) {\n item.hide();\n this.updateOverflowCounter(index);\n\n const usedWidthIncludingCounter = this.tokensContainer.nativeElement.getBoundingClientRect().width;\n if (usedWidthIncludingCounter > containerWidth && index >= 1) {\n const previousItem = this.items.toArray()[index - 1];\n previousItem?.hide();\n this.updateOverflowCounter(index - 1);\n }\n\n break;\n }\n index++;\n }\n }\n\n private updateOverflowCounter(index: number) {\n this.overflowStartIndex.set(index);\n\n const overflowingItems = this.items?.toArray().slice(index) ?? [];\n this.overflowItems.set(overflowingItems);\n this.changeDetectorRef.detectChanges();\n }\n}\n","<div #tokensContainer class=\"tokensContainer\">\n <ng-content select=\"lx-token\" />\n @if (showCounter()) {\n <button\n lx-button\n class=\"counterButton\"\n mode=\"ghost\"\n (click)=\"onCounterClicked()\"\n [attr.aria-label]=\"\n NAME + (overflowItemCount() === 1 ? '.showMoreItem' : '.showMoreItems') | translate: { count: overflowItemCount() }\n \"\n >\n <lx-counter #counter aria-hidden=\"true\" [content]=\"'+' + overflowItemCount()\" color=\"gray\" />\n </button>\n }\n</div>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n DestroyRef,\n effect,\n inject,\n input,\n signal,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { SatPopoverComponent, SatPopoverHorizontalAlign, SatPopoverModule, SatPopoverVerticalAlign } from '@ncstate/sat-popover';\nimport { Subscription } from 'rxjs';\nimport { TokenizerComponent } from '../tokenizer.component';\n@Component({\n selector: 'lx-tokenizer-overflow-popover',\n standalone: true,\n imports: [TokenizerComponent, SatPopoverModule, NgTemplateOutlet],\n templateUrl: './tokenizer-overflow-popover.component.html',\n styleUrls: ['./tokenizer-overflow-popover.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TokenizerOverflowPopoverComponent {\n private destroyRef = inject(DestroyRef);\n private overflowClickSubscription?: Subscription;\n protected startIndex = signal<number>(0);\n private changeDetectorRef = inject(ChangeDetectorRef);\n\n @ContentChild('popoverTemplate') protected readonly popoverTemplate?: TemplateRef<unknown>;\n @ViewChild(SatPopoverComponent) protected readonly popover!: SatPopoverComponent;\n\n tokenizer = input.required<TokenizerComponent>();\n horizontalAlign = input<SatPopoverHorizontalAlign>('after');\n verticalAlign = input<SatPopoverVerticalAlign>('start');\n\n constructor() {\n effect(() => {\n this.overflowClickSubscription?.unsubscribe();\n this.overflowClickSubscription = this.tokenizer()\n .overflowPlaceholderClick.pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ startIndex, counterElement }) => {\n this.startIndex.set(startIndex);\n this.popover.anchor = counterElement;\n this.popover.open();\n });\n });\n }\n\n protected closePopover(): void {\n this.popover.close();\n this.changeDetectorRef.detectChanges();\n }\n}\n","<sat-popover\n (backdropClicked)=\"closePopover()\"\n [hasBackdrop]=\"true\"\n [horizontalAlign]=\"horizontalAlign()\"\n [verticalAlign]=\"verticalAlign()\"\n openTransition=\"100ms\"\n closeTransition=\"100ms\"\n>\n @if (popoverTemplate) {\n <div\n class=\"tokenizerPopoverContentWrapper\"\n [class.before]=\"horizontalAlign() === 'before'\"\n [class.after]=\"horizontalAlign() === 'after'\"\n >\n <ng-container *ngTemplateOutlet=\"popoverTemplate; context: { $implicit: startIndex() }\" />\n </div>\n }\n</sat-popover>\n","import { AVATAR_COLORS, AVATAR_SIZE_MAPPING, UserAvatarSize } from './avatar.model';\n\n/**\n * Generates an SVG for the avatar initials\n * @param displayName The name of the user\n * @param size The size of the avatar\n * @returns A promise with the data URL of the generated SVG\n */\nexport function getInitialsUrl(displayName: string, size?: UserAvatarSize): Promise<string> {\n const twoWordsName = displayName.split(' ').slice(0, 2);\n const initials = twoWordsName.length === 1 ? `${twoWordsName[0]?.[0]}` : `${twoWordsName[0]?.[0]}${twoWordsName[1]?.[0]}`;\n const svg = generateInitialsSVG(initials.toUpperCase(), size && AVATAR_SIZE_MAPPING[size]);\n const blob = new Blob([svg], { type: 'image/svg+xml' });\n\n return blobToDataURL(blob);\n}\n\nfunction hashString(s: string): number {\n let hash = 0;\n let i = 0;\n const l = s.length;\n\n if (l > 0) while (i < l) hash = ((hash << 5) - hash + s.charCodeAt(i++)) | 0;\n return Math.abs(hash);\n}\n\nfunction getAvatarColorHex(initials: string): string | undefined {\n const tagNameHash = hashString(initials.toUpperCase());\n return AVATAR_COLORS[(tagNameHash % 11) + 1];\n}\n\nfunction generateInitialsSVG(initials: string, size: number = 24): string {\n const fontSize = (size * 40) / 100;\n const textY = (size * 63) / 100;\n\n const svgTemplate = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${size} ${size}\" width=\"${size}\" height=\"${size}\" preserveAspectRatio=\"xMidYMid meet\">\n <circle cx=\"${size / 2}\" cy=\"${size / 2}\" r=\"${size / 2}\" fill=\"${getAvatarColorHex(initials)}\"></circle>\n <text x=\"${\n size / 2\n }\" y=\"${textY}\" font-family=\"Arial\" font-size=\"${fontSize}\" text-anchor=\"middle\" fill=\"#ffffff\" style=\"user-select:none;-webkit-user-select:none;-ms-user-select:none;-moz-user-select:none;\">\n ${initials}\n </text>\n </svg>`;\n\n return svgTemplate;\n}\n\nfunction blobToDataURL(blob: Blob): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (_e) => resolve(reader.result as string);\n reader.onerror = (_e) => reject(reader.error);\n reader.onabort = (_e) => reject(new Error('Read aborted'));\n reader.readAsDataURL(blob);\n });\n}\n","export interface HighlightTextSettings {\n /**\n * Whether to match case sensitively\n */\n caseSensitive?: boolean;\n /**\n * Whether to match whole words only\n */\n wordsOnly?: boolean;\n /**\n * The element to wrap highlighted terms in\n */\n element?: string;\n /**\n * The class name to apply to highlighted terms\n */\n className?: string;\n}\n\nconst defaultElement = 'span';\nconst defaultClassName = 'highlight';\n\n/**\n * Highlights all occurrences of search terms in a given element.\n * This function will recursively traverse all child nodes of the given element,\n * and apply the highlight to text nodes only.\n *\n * Replaces the 'jquery-highlight' plugin: https://github.com/knownasilya/jquery-highlight/blob/master/jquery.highlight.js\n * @param elem The element to highlight\n * @param terms The search terms to highlight - string or array of strings\n * @param settings Optional settings, @see HighlightTextSettings\n */\n\nexport function highlightText(elem: HTMLElement, terms: string | string[], settings?: HighlightTextSettings): void {\n const node = elem as Node;\n if (!isSupportedNode(node)) return;\n\n if (typeof terms === 'string') {\n terms = [terms];\n }\n\n terms = terms.map((term) => term.trim().replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&'));\n terms = terms.filter((term) => term && term.length > 0);\n if (terms.length === 0) {\n return;\n }\n\n const flag = settings?.caseSensitive ? '' : 'i';\n let pattern = '(' + terms.join('|') + ')';\n if (settings?.wordsOnly) {\n pattern = '\\\\b' + pattern + '\\\\b';\n }\n\n const regexp = new RegExp(pattern, flag);\n processNode(node, regexp, settings);\n}\n\n/**\n * Recursively process a given node\n * @param node The node to process\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction processNode(node: Node, regexp: RegExp, settings?: HighlightTextSettings): void {\n const nodeName = settings?.element || defaultElement;\n const className = settings?.className || defaultClassName;\n\n if (node.nodeType === Node.TEXT_NODE) {\n applyHightlightToTextNode(node as Text, regexp, settings);\n } else if (\n node.nodeType === Node.ELEMENT_NODE &&\n node.childNodes && // only element nodes that have children\n !/(script|style)/i.test(node.nodeName) && // ignore script and style nodes\n !(node.nodeName === nodeName.toUpperCase() && (node as Element).className === className) // ignore already highlighted nodes\n ) {\n node.childNodes.forEach((childNode) => {\n processNode(childNode, regexp, settings);\n });\n }\n}\n\n/**\n * Apply highlight to a given text node\n * @param node The text node to apply highlight to\n * @param regexp The regular expression to apply\n * @param settings The settings to apply\n */\nfunction applyHightlightToTextNode(node: Text, regexp: RegExp, settings?: HighlightTextSettings) {\n const match = node.data.match(regexp);\n if (!match || typeof match.index === 'undefined') return;\n\n const wrapper = document.createElement(settings?.element || defaultElement);\n wrapper.classList.add(settings?.className || defaultClassName);\n\n const wordNode = node.splitText(match.index);\n const nextNode = wordNode.splitText(match[0].length);\n const wordClone = wordNode.cloneNode(true);\n wrapper.appendChild(wordClone);\n node.parentNode?.replaceChild(wrapper, wordNode);\n\n if (match.length > 1) {\n // recursively apply highlightText if there are multiple matches in the same text node\n processNode(nextNode, regexp, settings);\n }\n}\n\nfunction isSupportedNode(node: Node): boolean {\n return node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE';\n}\n","import { NgClass, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, HostBinding, Input, TemplateRef } from '@angular/core';\nimport { HighlightTermPipe } from '../../../core-ui/pipes/highlight-term.pipe';\n\n@Component({\n selector: 'lx-basic-dropdown-item',\n templateUrl: 'basic-dropdown-item.component.html',\n styleUrls: ['basic-dropdown-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgClass, NgIf, HighlightTermPipe]\n})\nexport class BasicDropdownItemComponent {\n @Input() label!: string;\n @Input() description?: string;\n @Input() highlightTerm?: string;\n @Input() labelFontWeight: 'bold' | 'normal' = 'bold';\n @Input() descriptionFontStyle: 'italic' | 'normal' = 'normal';\n @Input() descriptionStyleOptions?: { maxLines?: number; shouldHighlightTerm?: boolean };\n @ContentChild('optionLabelSuffix') optionLabelSuffix!: TemplateRef<any>;\n\n @HostBinding('class.hasDescription')\n get hasDescription() {\n return !!this.description;\n }\n}\n","@if (optionLabelSuffix) {\n <div [class.boldLabel]=\"labelFontWeight === 'bold'\" class=\"optionLabel\">\n <div [innerHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n <ng-content [select]=\"optionLabelSuffix\" />\n </div>\n} @else {\n <div [class.boldLabel]=\"labelFontWeight === 'bold'\" [innerHtml]=\"label | lxHighlightTerm: highlightTerm\"></div>\n}\n<div\n class=\"optionDescription\"\n [style.font-style]=\"descriptionFontStyle\"\n [ngClass]=\"{ maxTextLines: descriptionStyleOptions?.maxLines }\"\n [style.-webkit-line-clamp]=\"descriptionStyleOptions?.maxLines || 'inherit'\"\n [innerHtml]=\"description | lxHighlightTerm: (descriptionStyleOptions?.shouldHighlightTerm ? highlightTerm : undefined)\"\n></div>\n","/**\n * Schedule and wait for another ZoneJS microTask.\n * This should be preferred over setTimeout(), which\n * schedules a macroTask & thus triggers full tree change detection.\n */\nexport function executeOnNextTick(fn: Function) {\n Promise.resolve(null).then(() => fn());\n}\n\nexport function getCssVariable(cssVariableName: string) {\n return getComputedStyle(document.documentElement).getPropertyValue(cssVariableName);\n}\n\nexport function scrollTop(container: HTMLElement, item: HTMLElement) {\n if (container && item) {\n const scrollDownNeeded = item.offsetTop + item.clientHeight > container.clientHeight;\n const scrollTopNeeded = item.offsetTop - item.clientHeight < container.scrollTop;\n if (scrollDownNeeded || scrollTopNeeded) {\n container.scrollTop = item.offsetTop - container.offsetTop;\n }\n } else {\n console.warn(\"Item or Container undefined, scrolling wasn't done.\");\n }\n}\n","import { Directive, ElementRef, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { scrollTop } from '../../shared/misc-helpers';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\n@Directive({\n selector: '[lxSelectableItem]',\n standalone: true\n})\nexport class SelectableItemDirective implements OnDestroy, DropdownItem {\n @Input() scrollInContainer!: HTMLElement;\n @Input() lxSelectableItem: any;\n\n @Output() select = new EventEmitter();\n\n get item() {\n return this.lxSelectableItem;\n }\n\n constructor(public readonly element: ElementRef<HTMLElement>) {}\n\n ngOnDestroy() {}\n\n scrollToItem() {\n if (this.scrollInContainer && this.element.nativeElement) {\n scrollTop(this.scrollInContainer, this.element.nativeElement);\n }\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, combineLatest } from 'rxjs';\nimport { delay, distinctUntilChanged, filter, map, startWith, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../directives/selectable-item.directive';\nimport { DropdownItem } from '../models/dropdown-item.interface';\n\nexport enum KeyboardSelectAction {\n PREV = 'PREV',\n NEXT = 'NEXT',\n FIRST = 'FIRST',\n LAST = 'LAST',\n LEFT = 'LEFT',\n RIGHT = 'RIGHT',\n EXECUTE = 'EXECUTE',\n UNSELECT = 'UNSELECT',\n CLOSE = 'CLOSE'\n}\n\n@Directive()\nexport class KeyboardSelectDirective implements OnDestroy, AfterViewInit {\n /** @internal */\n cdkOverlayOpenState = new ReplaySubject<boolean>(1);\n /** @internal */\n cdkOverlayOpen$ = this.cdkOverlayOpenState.asObservable().pipe(startWith(false), distinctUntilChanged());\n /** @internal */\n overlayPositioning: boolean = false;\n @Input() keyboardSelectAction = new Observable<KeyboardSelectAction | null>();\n @Output() selectedItemIndexChange = new EventEmitter<number>(true); // TODO: this is just index change from navigating (highlighting)\n\n /** @internal */\n @ViewChildren(SelectableItemDirective) _items!: QueryList<DropdownItem>;\n\n /** @internal */\n @ViewChild('keyboardSelectContainer', { static: true }) keyboardSelectContainer!: ElementRef<HTMLElement>;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n get selectedItem$(): Observable<any> {\n return this.selectedItemSubject$.asObservable();\n }\n\n // Beware: If the list of items is empty, there might not come a -1 because Angular only updates the ViewChildren lazily.\n private readonly selectedItemIndex$ = new BehaviorSubject<number>(-1);\n private readonly selectedItemSubject$ = new BehaviorSubject<DropdownItem | null>(null);\n\n /** @internal */\n public select(index: number) {\n this.selectedItemIndex$.next(index);\n }\n\n ngAfterViewInit(): void {\n const itemsChanges$ = this._items.changes.pipe(startWith(this._items));\n\n this.keyboardSelectAction\n .pipe(\n filter((action): action is KeyboardSelectAction => !!action),\n withLatestFrom(this.selectedItemIndex$, itemsChanges$),\n takeUntil(this.destroyed$)\n )\n .subscribe(([action, index, items]) => this.adaptSelectedIndexBasedOnKeyboardSelectAction(action, index, items));\n\n this.keyboardSelectAction\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.selectedItem$, (_, item) => item),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.select?.emit());\n\n this.selectedItemIndex$.pipe(takeUntil(this.destroyed$)).subscribe((index) => {\n this.selectedItemIndexChange.emit(index);\n });\n\n combineLatest([itemsChanges$, this.selectedItemIndex$])\n .pipe(\n delay(0),\n map(([items, index]: [QueryList<DropdownItem>, number]) => {\n if (index > -1) {\n return items.toArray()[index] ?? null;\n } else {\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectedItemSubject$);\n\n this.selectedItem$\n .pipe(\n filter((item) => !!item),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((item) => item?.scrollToItem());\n }\n\n /** @internal */\n public isItemSelected(item: HTMLElement, selectedItem: ElementRef<HTMLElement>) {\n return selectedItem && item === selectedItem.nativeElement;\n }\n\n private adaptSelectedIndexBasedOnKeyboardSelectAction(\n keyboardSelectAction: KeyboardSelectAction,\n currentIndex: number,\n items: QueryList<DropdownItem>\n ) {\n if (keyboardSelectAction === KeyboardSelectAction.PREV) {\n this.selectedItemIndex$.next(this.prev(currentIndex));\n } else if (keyboardSelectAction === KeyboardSelectAction.NEXT) {\n this.selectedItemIndex$.next(this.next(currentIndex, items));\n } else if (keyboardSelectAction === KeyboardSelectAction.LAST) {\n this.selectedItemIndex$.next(this.last(items));\n } else if (keyboardSelectAction === KeyboardSelectAction.FIRST) {\n this.selectedItemIndex$.next(0);\n } else if (keyboardSelectAction === KeyboardSelectAction.UNSELECT) {\n this.selectedItemIndex$.next(-1);\n }\n }\n\n private prev(index: number): number {\n if (index > -1) {\n return index - 1;\n } else {\n return index;\n }\n }\n\n private next(index: number, items: QueryList<DropdownItem>): number {\n if (items.length - 1 > index) {\n return index + 1;\n } else {\n return index;\n }\n }\n\n private last(items: QueryList<DropdownItem>): number {\n return items.length - 1;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { isEqual, some, toLower } from 'lodash/fp';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { CounterComponent } from '../../../core-ui/components/counter/counter.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-basic-dropdown',\n templateUrl: 'basic-dropdown.component.html',\n styleUrls: ['basic-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => BasicDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n InfiniteScrollModule,\n SelectableItemDirective,\n CounterComponent,\n NgFor,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class BasicDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n public static isNewItem(items: any[], term: string, key?: string): boolean {\n if (!term) {\n return false;\n }\n const isEqualIgnoringCase = (item: any) => {\n const value = key ? item[key] : item;\n return isEqual(toLower(value), toLower(term));\n };\n return !some(isEqualIgnoringCase, items);\n }\n\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n @Input() initiallySelectedIndex = -1;\n @Input() labelKey?: string;\n @Input() itemKey?: string;\n @Input() placeholder?: string;\n @Input() loading: boolean = false;\n @Input() newOptionLabel!: string;\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() showCreateNewOption = false;\n\n @Input() disabledOptions: { [itemKey: string]: any } = {};\n @Input() override overlayPositioning = false;\n @Input() truncateOptions = false;\n @Input() noResultsText?: string;\n\n @Output() onItemSelected = new EventEmitter<any>();\n @Output() triggerRequestForMoreEntries = new EventEmitter<void>();\n @Output() newOptionLabelSelected = new EventEmitter<string>();\n @Output() createNewOptionSelected = new EventEmitter<void>();\n\n @ContentChild('optionTemplate') optionTemplateRef!: TemplateRef<any>;\n @ContentChild('createNewOptionTemplate') createNewOptionTemplateRef!: TemplateRef<any>;\n @ContentChild('descriptionTemplateRef') descriptionTemplateRef!: TemplateRef<any>;\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n isTopDropdown = false;\n\n constructor() {\n super();\n }\n\n selectOption(option: any) {\n const isDisabledOption = option\n ? Object.entries(this.disabledOptions || {}).length > 0 &&\n ((this.itemKey && this.disabledOptions[option[this.itemKey]]) || this.disabledOptions[option])\n : false;\n\n if (!option || !isDisabledOption) {\n this.onItemSelected.emit(option);\n }\n }\n\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n\n public get isNewItem() {\n return BasicDropdownComponent.isNewItem(this.options, this.newOptionLabel, this.labelKey);\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n\n public onScroll() {\n this.triggerRequestForMoreEntries.emit();\n }\n\n public onNewItemSelected() {\n if (!this.loading) {\n this.selectOption(null);\n this.newOptionLabelSelected.emit(this.newOptionLabel);\n }\n }\n\n public onCreateNewOptionSelected() {\n this.createNewOptionSelected.emit();\n }\n}\n","<ng-container [ngTemplateOutlet]=\"dropdown\" *ngIf=\"!overlayPositioning\" />\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\" />\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <ul\n class=\"options {{ padding }}Padding lxThinScrollbar\"\n #keyboardSelectContainer\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n [ngClass]=\"{ truncateOptions: truncateOptions }\"\n (scrolled)=\"onScroll()\"\n >\n <li\n *ngIf=\"newOptionLabel && isNewItem\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onNewItemSelected()\"\n (select)=\"onNewItemSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable onTheFlyOption\"\n [attr.aria-label]=\"newOptionLabel\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-counter class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\" />\n </li>\n <li\n *ngIf=\"showCreateNewOption\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOptionSelected()\"\n (select)=\"onCreateNewOptionSelected()\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable newEntryOption\"\n >\n <span class=\"newEntryContent\">\n <ng-container *ngIf=\"createNewOptionTemplateRef; else defaultNewOption\">\n <ng-container *ngTemplateOutlet=\"createNewOptionTemplateRef\" />\n </ng-container>\n <ng-template #defaultNewOption>\n <span>\n {{ NAME + '.new' | translate }}\n </span>\n </ng-template>\n </span>\n </li>\n <li\n *ngIf=\"descriptionTemplateRef\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option disabledItem description\"\n >\n <span class=\"descriptionContent\">\n <ng-container *ngTemplateOutlet=\"descriptionTemplateRef\" />\n </span>\n </li>\n <li\n *ngIf=\"options?.length === 0 && !newOptionLabel && !loading\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option keyboardSelectable noOptionsAvailable\"\n [attr.aria-label]=\"noResultsText ?? (NAME + '.noResults' | translate)\"\n >\n {{ noResultsText ?? (NAME + '.noResults' | translate) }}\n </li>\n <li\n *ngIf=\"placeholder\"\n tabindex=\"-1\"\n class=\"option keyboardSelectable clearSelection\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"selectOption(null)\"\n (select)=\"selectOption(null)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [attr.aria-label]=\"placeholder\"\n >\n {{ placeholder }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index; trackBy: trackByProp(itemKey)\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n [class.initiallySelected]=\"index === initiallySelectedIndex\"\n [class.disabledItem]=\"(itemKey && !!disabledOptions[option[itemKey]]) || this.disabledOptions[option]\"\n [attr.aria-label]=\"labelKey ? option[labelKey] : option\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else simpleStringDisplay\">\n <ng-container *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index }\" />\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span>\n {{ labelKey ? option[labelKey] : option }}\n </span>\n </ng-template>\n </li>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\" />\n </ul>\n</ng-template>\n","// We can only use 'keyCode' because 'key' depends on the browser\nexport const BACKSPACE = 8;\nexport const TAB = 9;\nexport const ARROW_DOWN = 40;\nexport const ARROW_UP = 38;\nexport const ARROW_LEFT = 37;\nexport const ARROW_RIGHT = 39;\nexport const ENTER = 13;\nexport const ESCAPE = 27;\nexport const SPACE = 32;\nexport const HOME = 36;\nexport const END = 35;\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, END, ENTER, ESCAPE, HOME, TAB } from '../helpers/key-codes.constants';\n\n@Directive({\n exportAs: 'keyboardActionSource',\n selector: '[lxKeyboardActionSource]',\n standalone: true\n})\nexport class KeyboardActionSourceDirective implements OnDestroy {\n public dontEmit = false;\n\n readonly destroyed$ = new Subject<void>();\n\n public keyboardActions$ = fromEvent<KeyboardEvent>(this.element.nativeElement, 'keydown').pipe(\n filter((_event) => !this.dontEmit),\n map((event) => {\n switch (event.keyCode) {\n case ARROW_UP:\n event.preventDefault();\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n event.preventDefault();\n return KeyboardSelectAction.NEXT;\n case ARROW_LEFT:\n event.preventDefault();\n return KeyboardSelectAction.LEFT;\n case ARROW_RIGHT:\n event.preventDefault();\n return KeyboardSelectAction.RIGHT;\n case HOME:\n event.preventDefault();\n return KeyboardSelectAction.FIRST;\n case END:\n event.preventDefault();\n return KeyboardSelectAction.LAST;\n case ENTER:\n event.preventDefault();\n return KeyboardSelectAction.EXECUTE;\n case ESCAPE:\n case TAB:\n return KeyboardSelectAction.CLOSE;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n );\n\n constructor(private element: ElementRef<HTMLElement>) {}\n\n blur() {\n this.element.nativeElement.blur();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n nativeElement(): HTMLElement {\n return this.element?.nativeElement;\n }\n}\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'lx-option-group',\n templateUrl: 'option-group.component.html',\n styleUrls: ['option-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class OptionGroupComponent {\n /**\n * Is true when option children have a selected state.\n * In this case we want to align the padding of the group label with the lx-options'.\n */\n @Input() hasSelectedState: boolean = true;\n\n @Input() label!: string;\n\n @Output() select = new EventEmitter();\n\n selectOption(value: any) {\n this.select.emit(value);\n }\n}\n","<li>\n <span *ngIf=\"label\" class=\"groupLabel\" [class.selectedState]=\"hasSelectedState\">{{ label }}</span>\n <ul>\n <ng-content />\n </ul>\n</li>\n","import { NgIf, NgSwitch, NgSwitchCase } from '@angular/common';\nimport { Component, ElementRef, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, forwardRef } from '@angular/core';\nimport { uniqueId } from 'lodash-es';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\n\n@Component({\n selector: 'lx-option',\n templateUrl: 'option.component.html',\n styleUrls: ['option.component.scss'],\n standalone: true,\n imports: [NgIf, NgSwitch, NgSwitchCase]\n})\nexport class OptionComponent {\n @Input() selected: boolean = false;\n @Input() isHighlighted: boolean = false;\n @Input() disabled: boolean = false;\n @Input() value: any;\n /**\n * Is true when option has a selection nature like sorting.\n * In this case we show a check icon on the left to indicate selection.\n *\n * Is false when option represents a one time action like printing.\n * Cannot have selectedState when Option has dropdown\n */\n @Input() hasSelectedState: boolean = true;\n @Input() selectIcon: 'check' | 'circle' = 'check';\n\n @Output() select = new EventEmitter();\n @Output() highlight = new EventEmitter<boolean>();\n @Output() selectedClick = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n @ViewChild('option') option?: ElementRef<HTMLElement>;\n\n hasSubdropdown: boolean = false;\n isSuboption: boolean = false;\n readonly optionId: string;\n\n @HostListener('click', ['$event'])\n selectOption(event?: MouseEvent) {\n if (this.disabled || this.hasSubdropdown) {\n if (event) {\n event.stopImmediatePropagation();\n }\n } else {\n if (this.selected) {\n return this.selectedClick.emit();\n }\n if (this.group) {\n this.group.selectOption(this.value);\n }\n this.select.emit(this.value);\n }\n }\n\n constructor(\n @Optional() @Inject(forwardRef(() => OptionGroupComponent)) private group: OptionGroupComponent,\n public elementRef: ElementRef<HTMLElement>\n ) {\n this.optionId = uniqueId('option');\n }\n\n setSelected(value: boolean) {\n this.selected = value;\n }\n\n setHighlighted(value: boolean) {\n this.isHighlighted = value;\n this.highlight.emit(this.isHighlighted);\n if (value) {\n this.option?.nativeElement?.focus();\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n event.preventDefault();\n this.keyDownAction.emit(event);\n }\n}\n","<li\n #option\n class=\"option\"\n role=\"option\"\n tabindex=\"-1\"\n [attr.id]=\"optionId\"\n [attr.aria-selected]=\"selected\"\n [class.selectedState]=\"hasSelectedState && !hasSubdropdown\"\n [class.highlighted]=\"isHighlighted\"\n [class.selected]=\"selected\"\n [class.disabled]=\"disabled\"\n [class.hasSubdropdown]=\"hasSubdropdown\"\n (keydown)=\"handleKeyDown($event)\"\n>\n <ng-container *ngIf=\"hasSelectedState\">\n <ng-container [ngSwitch]=\"selectIcon\">\n <ng-container *ngSwitchCase=\"'check'\">\n <i *ngIf=\"selected\" class=\"far fa-check\"></i>\n </ng-container>\n <ng-container *ngSwitchCase=\"'circle'\">\n <i class=\"fal fa-circle\"></i>\n <i *ngIf=\"selected\" class=\"fas fa-circle\"></i>\n </ng-container>\n </ng-container>\n </ng-container>\n <ng-content />\n <i *ngIf=\"hasSubdropdown\" class=\"far fa-chevron-right\"></i>\n</li>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { BehaviorSubject, Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { TooltipDirective } from '../../../core-ui/tooltip/tooltip.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'top'\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'bottom'\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-dropdown',\n templateUrl: 'cdk-options-dropdown.component.html',\n styleUrls: ['cdk-options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CdkOverlayOrigin, CdkConnectedOverlay]\n})\nexport class CdkOptionsDropdownComponent implements AfterViewInit, OnDestroy {\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n }\n this.reloadOverlayPosition(this.open);\n }\n get open() {\n return this._open;\n }\n\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n\n @ContentChildren(OptionComponent, { descendants: true })\n _options!: QueryList<OptionComponent>;\n\n @ContentChildren(TooltipDirective, { descendants: true })\n tooltips!: QueryList<TooltipDirective>;\n\n get options() {\n return this._options.toArray();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n\n private readonly destroyed$ = new Subject<void>();\n\n isPositionComputed = true;\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options))\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n )\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE))\n .subscribe(() => this.closeDropdown());\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n closeDropdown() {\n this.tooltips.toArray().forEach((tooltip) => tooltip.hide());\n this.open = false;\n }\n\n private setInitialHighlightingIndex() {\n const firstAvailableIndex = this.options.map((option) => !this.optionIsHighlightable(option)).indexOf(false, 0);\n this.highlightedOptionIndex$.next(firstAvailableIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]?.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n private reloadOverlayPosition(open: boolean) {\n if (open) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n this.overlay.overlayRef.updatePosition();\n\n this.isPositionComputed = true;\n this.changeDetection.markForCheck();\n }, 0);\n } else {\n this.changeDetection.markForCheck();\n }\n }\n}\n","<div (click)=\"open = !open\" class=\"triggerContainer\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n <ng-content select=\"[lxKeyboardActionSource]\" />\n</div>\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"open\"\n (overlayOutsideClick)=\"closeDropdown()\"\n>\n <ul\n #dropdown\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n [style.visibility]=\"isPositionComputed ? null : 'hidden'\"\n >\n <ng-content />\n </ul>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { CdkOptionsDropdownComponent } from '../cdk-options-dropdown/cdk-options-dropdown.component';\nimport { OptionComponent } from '../option/option.component';\n\nexport interface Breadcrumb {\n label: string;\n ellipsed?: boolean;\n onClick?: (breadcrumb: Breadcrumb) => void;\n}\n\ninterface EllipsedBreadcrumb {\n breadcrumbs: Breadcrumb[];\n}\n\ntype ViewBreadcrumb = Breadcrumb | EllipsedBreadcrumb;\n\n/**\n * Breadcrumb component is used to show a list of labels, usually to show the path of user's navigation.\n */\n@Component({\n selector: 'lx-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n styleUrls: ['./breadcrumb.component.scss'],\n standalone: true,\n imports: [CommonModule, CdkOptionsDropdownComponent, KeyboardActionSourceDirective, OptionComponent]\n})\nexport class BreadcrumbComponent implements OnChanges {\n /**\n * Breadcrumbs array to build the component.\n */\n @Input() breadcrumbs: Breadcrumb[] = [];\n\n /** @internal */\n viewBreadcrumbs: ViewBreadcrumb[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['breadcrumbs']) {\n this.viewBreadcrumbs = this.breadcrumbs.reduce((viewBreadcrumbs, breadcrumb) => {\n if (!breadcrumb.ellipsed) {\n // Append normal breadcrumbs to the end of view breadcrumb array\n viewBreadcrumbs.push(breadcrumb);\n } else {\n // Reduce consecutive ellipsed breadcrumbs into one entry and show dropdown of these\n const lastBreadcrumb = viewBreadcrumbs[viewBreadcrumbs.length - 1];\n if (lastBreadcrumb && this.isEllipsedBreadcrumb(lastBreadcrumb)) {\n lastBreadcrumb.breadcrumbs.push(breadcrumb);\n } else {\n viewBreadcrumbs.push({\n breadcrumbs: [breadcrumb]\n });\n }\n }\n return viewBreadcrumbs;\n }, [] as ViewBreadcrumb[]);\n }\n }\n\n /** @internal */\n isEllipsedBreadcrumb(breadcrumb: ViewBreadcrumb): breadcrumb is EllipsedBreadcrumb {\n return !!(breadcrumb as EllipsedBreadcrumb).breadcrumbs;\n }\n}\n","@for (breadcrumb of viewBreadcrumbs; track $index; let last = $last) {\n @if (isEllipsedBreadcrumb(breadcrumb)) {\n <lx-cdk-options-dropdown [align]=\"'right'\" class=\"dropdownContainer\">\n <button class=\"step clickable\" lxKeyboardActionSource>...</button>\n @for (ellipsedBreadcrumbs of breadcrumb.breadcrumbs; track $index) {\n <lx-option [hasSelectedState]=\"false\" (select)=\"ellipsedBreadcrumbs.onClick?.(ellipsedBreadcrumbs)\">\n {{ ellipsedBreadcrumbs.label }}\n </lx-option>\n }\n </lx-cdk-options-dropdown>\n } @else {\n <button class=\"step\" [disabled]=\"!breadcrumb.onClick\" (click)=\"breadcrumb.onClick?.(breadcrumb)\">\n {{ breadcrumb.label }}\n </button>\n }\n\n @if (!last) {\n <i class=\"fa fa-angle-right\" aria-hidden=\"true\"></i>\n }\n}\n","import { CdkConnectedOverlay, ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n ViewChild\n} from '@angular/core';\nimport { Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\nconst BOTTOM_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'top',\n overlayY: 'top',\n offsetX: -4\n};\n\nconst BOTTOM_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'top',\n overlayY: 'top',\n offsetX: 4\n};\n\nconst TOP_LEFT_POSITION: ConnectedPosition = {\n originX: 'start',\n overlayX: 'end',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: -4\n};\n\nconst TOP_RIGHT_POSITION: ConnectedPosition = {\n originX: 'end',\n overlayX: 'start',\n originY: 'bottom',\n overlayY: 'bottom',\n offsetX: 4\n};\n\nconst LEFT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION, BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION];\nconst RIGHT_ALIGN_POSITIONS: ConnectedPosition[] = [BOTTOM_RIGHT_POSITION, TOP_RIGHT_POSITION, BOTTOM_LEFT_POSITION, TOP_LEFT_POSITION];\n\n@Component({\n selector: 'lx-cdk-options-sub-dropdown',\n templateUrl: 'cdk-options-sub-dropdown.component.html',\n styleUrls: ['cdk-options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [CdkConnectedOverlay, AutocloseDirective]\n})\nexport class CdkOptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n @ViewChild(CdkConnectedOverlay) overlay!: CdkConnectedOverlay;\n @ViewChild('dropdown') dropdownContainer!: ElementRef;\n\n open = false;\n isPositionComputed = true;\n\n private mouseInside$ = new Subject<boolean>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n this.overlay.positions = this.align === 'left' ? LEFT_ALIGN_POSITIONS : RIGHT_ALIGN_POSITIONS;\n });\n\n merge(this.showByMouse(), this.showByKeyboard())\n .pipe(takeUntil(this.destroyed$), distinctUntilChanged())\n .subscribe((show) => {\n this.open = show;\n this.reloadOverlayPosition(this.open);\n });\n\n this.options.changes\n .pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.select), ...this.options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n });\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const hideOnLeaveMouse$ = mouseLeaveTrigger$.pipe(map(() => false));\n\n // react to trigger mouse leave events, and mouse enter events in the sub-dropdown. We'll use a 300ms\n // debounce, so that while navigating from the trigger to the sub-dropdown, all the intermediate events\n // are ignored.\n const showSubdropdown$ = merge(hideOnLeaveMouse$, this.mouseInside$).pipe(debounceTime(300));\n\n const showOnEnterSubdropdown$ = mouseEnterTrigger$.pipe(switchMap(() => showSubdropdown$));\n\n return merge(showOnEnterMouse$, showOnEnterSubdropdown$);\n }\n\n private reloadOverlayPosition(open: boolean) {\n // force a rendering so that the dropdown container's dimensions are computed.\n this.changeDetection.markForCheck();\n if (open && this.dropdownContainer) {\n this.isPositionComputed = false;\n setTimeout(() => {\n const dropdownElement = this.dropdownContainer.nativeElement;\n this.overlay.overlayRef.updateSize({\n height: dropdownElement.offsetHeight,\n width: dropdownElement.offsetWidth\n });\n\n this.overlay.overlayRef.updatePosition();\n this.isPositionComputed = true;\n }, 0);\n }\n }\n\n closeDropdown() {\n this.open = false;\n this.mouseInside$.next(false);\n }\n}\n","<ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"trigger.elementRef\" [cdkConnectedOverlayOpen]=\"open\">\n <ul\n (mouseenter)=\"mouseenter()\"\n (mouseleave)=\"mouseleave()\"\n class=\"sub-dropdown\"\n [style.visibility]=\"isPositionComputed ? '' : 'hidden'\"\n lxAutoclose\n (autoclose)=\"closeDropdown()\"\n #dropdown\n >\n <ng-content />\n </ul>\n</ng-template>\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { getCssVariable } from '../../shared/misc-helpers';\nimport { Observe } from '../../shared/observe';\n\n@Directive({\n selector: '[lxMarkInvalid]',\n standalone: true\n})\nexport class MarkInvalidDirective implements OnInit, OnDestroy {\n @Input() lxMarkInvalid: boolean = false;\n @Observe('lxMarkInvalid') lxMarkInvalid$!: Observable<boolean>;\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private renderer: Renderer2\n ) {}\n\n ngOnInit() {\n this.lxMarkInvalid$.pipe(takeUntil(this.destroyed$)).subscribe((invalid) => {\n const border = invalid ? `1px solid ${getCssVariable('--lx-color-danger')}` : '';\n this.renderer.setStyle(this.element.nativeElement, 'border', border);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","// Currency symbol map extracted from: http://symbologic.info/currency.htm\n// Using custom symbology since Angular 2 currency pipe does not support all currency symbols:\n// https://github.com/angular/angular/issues/6724\nexport const CURRENCY_SYMBOL_MAP: { [key: string]: string } = {\n AFA: '؋',\n AWG: 'ƒ',\n AUD: 'AU$',\n ARS: 'ARS',\n AZN: 'ман',\n BSD: 'B$',\n BDT: '৳',\n BBD: 'Bds$',\n BYR: 'Br',\n BOB: 'Bs.',\n BRL: 'R$',\n GBP: '£',\n BGN: 'лв',\n KHR: '៛',\n CAD: 'CA$',\n KYD: 'KY$',\n CLP: '$',\n CNY: 'CN¥',\n COP: 'COP',\n CRC: '₡',\n HRK: 'kn',\n CPY: 'CPY',\n CZK: 'Kč',\n DKK: 'DKK',\n DOP: 'RD$',\n XCD: 'EC$',\n EGP: 'E£',\n ERN: 'Nfa',\n EEK: 'EEK',\n EUR: '€',\n GEL: 'ლ',\n GHC: 'GHC',\n GIP: 'GIP',\n GTQ: 'Q',\n HNL: 'L',\n HKD: 'HK$',\n HUF: 'Ft',\n ISK: 'ISK',\n INR: '₹',\n IDR: 'Rp',\n ILS: '₪',\n JMD: 'J$',\n JPY: '¥',\n KZT: '₸',\n KES: 'KSh',\n KWD: 'د.ك',\n LVL: 'Ls',\n LBP: 'L£',\n LTL: 'Lt',\n MOP: 'P',\n MKD: 'ден',\n MGA: 'Ar',\n MYR: 'RM',\n BAM: 'KM',\n MUR: 'Ɍs',\n MXN: 'MX$',\n MZM: 'MT',\n NPR: 'NɌs',\n ANG: 'ƒ',\n TWD: 'NT$',\n NZD: 'NZ$',\n NIO: 'C$',\n NGN: '₦',\n KPW: '₩',\n NOK: 'NOK',\n OMR: 'ر.ع.',\n PKR: 'Ɍs',\n PYG: '₲',\n PEN: 'S/.',\n PHP: '₱',\n QAR: 'ر.ق',\n RON: 'L',\n RUB: 'руб',\n SAR: 'ر.س',\n CSD: 'CSD',\n SCR: 'Ɍs',\n SGD: 'S$',\n SKK: 'SKK',\n SIT: 'SIT',\n ZAR: 'R',\n KRW: 'KRW',\n LKR: 'Ɍs',\n SRD: '$',\n SEK: 'SEK',\n CHF: 'CHF',\n TZS: 'TSh',\n THB: '฿',\n TTD: 'TT$',\n TRY: 'TL',\n AED: 'د.إ',\n USD: '$',\n UGX: 'USh',\n UAH: '₴',\n UYU: '$U',\n UZS: 'лв',\n VEB: 'VEB',\n VND: '₫',\n AMK: 'AMK',\n ZWD: 'ZWD'\n};\n","import { AsyncPipe } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { CURRENCY_SYMBOL_MAP } from './currency-symbol-map.constant';\n\n@Component({\n selector: 'lx-currency-symbol',\n templateUrl: 'currency-symbol.component.html',\n standalone: true,\n imports: [AsyncPipe]\n})\nexport class CurrencySymbolComponent implements OnInit {\n @Input() code!: string | null;\n @Observe('code') code$!: Observable<string>;\n currency$!: Observable<string>;\n\n ngOnInit() {\n this.currency$ = this.code$.pipe(map((code) => CURRENCY_SYMBOL_MAP[code] || code));\n }\n}\n","<span [innerHtml]=\"currency$ | async\"></span>\n","import { AsyncPipe, DecimalPipe, NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, ReplaySubject, Subject, fromEvent } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { CurrencySymbolComponent } from './currency-symbol.component';\n\nexport type CurrencyInputMode = 'view' | 'edit';\nexport type CurrencyIconPosition = 'first' | 'end' | 'none';\n\nexport type DecimalSeparator = ',' | '.';\n\n@Component({\n selector: 'lx-currency-input',\n templateUrl: 'currency-input.component.html',\n styleUrls: ['currency-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CurrencyInputComponent),\n multi: true\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, CurrencySymbolComponent, MarkInvalidDirective, FormsModule, AsyncPipe, DecimalPipe]\n})\nexport class CurrencyInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor, OnInit {\n @Input() public code!: string | null;\n @Input() public decimalSeparator: DecimalSeparator = '.';\n @Input() public placeholder!: string;\n @Input() public data: number = 0;\n @Input() public inputId?: string;\n /** @internal */\n @Observe<number>('data') data$!: Observable<number>;\n\n @Input() public disabled: boolean = false;\n @Input() public mode: CurrencyInputMode = 'edit';\n @Input() public fieldDefinitionType!: 'DOUBLE' | 'INTEGER';\n @Input() public iconPosition: CurrencyIconPosition = 'first';\n @Input() public format: string = '1.2-2';\n @Input() markInvalid = false;\n\n @Output() public onFocusLost = new EventEmitter<boolean>();\n @Output() public onChange = new EventEmitter<number>();\n\n /** @internal */\n @ViewChild('currencyInput') private currencyInput!: ElementRef<HTMLInputElement>;\n /** @internal */\n showCurrencyInput: boolean = false;\n /** @internal */\n dataValue$ = new ReplaySubject<number>();\n\n private get allowedCharacters() {\n return this.fieldDefinitionType === 'DOUBLE' ? new RegExp(`[0-9\\e\\\\${this.decimalSeparator}\\]`) : /[0-9\\e\\\\]/;\n }\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.data$.pipe(takeUntil(this.destroyed$)).subscribe(this.dataValue$);\n }\n\n ngAfterViewInit() {\n if (this.currencyInput) {\n fromEvent<KeyboardEvent>(this.currencyInput.nativeElement, 'keypress')\n .pipe(\n filter((keyboardEvent) => this.shouldRejectKey(keyboardEvent)),\n takeUntil(this.destroyed$)\n )\n .subscribe((keyboardEvent) => {\n keyboardEvent.preventDefault();\n });\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n valueChanged(value: string | number) {\n if (typeof value === 'string') {\n const invalidSeparator = this.decimalSeparator === '.' ? ',' : '.';\n value = this.parseInput(value, invalidSeparator) as number;\n }\n // fix copy & paste string values being interpreted wrongly\n this.dataValue$.next(value);\n this.onChange.emit(value);\n this.propagateChange(value);\n }\n\n /** @internal */\n onBlur() {\n this.showCurrencyInput = false;\n this.onFocusLost.emit(true);\n }\n\n /** @internal */\n focusCurrencyInput() {\n this.showCurrencyInput = true;\n this.changeDetector.detectChanges();\n this.currencyInput.nativeElement.focus();\n this.currencyInput.nativeElement.setSelectionRange(0, 0);\n }\n\n /** @internal */\n shouldRejectKey(event: KeyboardEvent) {\n if (this.fieldDefinitionType === 'DOUBLE' && event.key === this.decimalSeparator) {\n return this.containsSeparators(this.currencyInput.nativeElement.value);\n }\n return !this.allowedCharacters.test(event.key);\n }\n\n /** @internal */\n propagateChange(_newValue: number) {}\n\n /** @internal */\n writeValue(newValue: number) {\n this.dataValue$.next(newValue);\n }\n /** @internal */\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /** @internal */\n registerOnTouched(_fn: any) {}\n\n /** @internal */\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n\n private parseInput(value: string, char: string) {\n const countOccurences = value.split(char).length - 1;\n if (countOccurences > 1) {\n for (let i = 0; i < countOccurences; i++) {\n value = value.replace(char, '');\n }\n }\n const parsedValue = parseFloat(value.replace(',', '.').replace(/ /g, ''));\n return isNaN(parsedValue) ? null : parsedValue;\n }\n\n private containsSeparators(value: string) {\n return value.indexOf(',') > -1 || value.indexOf('.') > -1;\n }\n}\n","<div *ngIf=\"mode === 'edit'\" class=\"container input-group\">\n <div *ngIf=\"iconPosition === 'first'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\" />\n </div>\n <input\n [attr.disabled]=\"disabled ? true : null\"\n *ngIf=\"!showCurrencyInput\"\n type=\"text\"\n class=\"form-control currencyDisplayValue\"\n placeholder=\"{{ placeholder }}\"\n [lxMarkInvalid]=\"markInvalid\"\n [value]=\"dataValue$ | async | number: format\"\n (focus)=\"focusCurrencyInput()\"\n />\n <input\n autocomplete=\"off\"\n [attr.disabled]=\"disabled ? true : null\"\n [class.hideInput]=\"!showCurrencyInput\"\n type=\"text\"\n inputmode=\"numeric\"\n class=\"form-control currencyInput\"\n name=\"inputAmount\"\n [attr.id]=\"inputId\"\n #currencyInput\n placeholder=\"{{ placeholder }}\"\n [ngModel]=\"dataValue$ | async\"\n (blur)=\"onBlur()\"\n (ngModelChange)=\"valueChanged($event)\"\n />\n <div *ngIf=\"iconPosition === 'end'\" class=\"labelContainer input-group-addon\">\n <lx-currency-symbol [code]=\"code\" />\n </div>\n</div>\n<span *ngIf=\"mode === 'view'\" [class.placeholder]=\"(dataValue$ | async) === null && placeholder\">\n <!-- Not using Angular 2 currency pipe since a lot of currency symbols are missing: https://github.com/angular/angular/issues/6724 -->\n <lx-currency-symbol *ngIf=\"iconPosition === 'first'\" [code]=\"code\" />\n {{ (dataValue$ | async | number: format) || placeholder }}\n <lx-currency-symbol *ngIf=\"iconPosition === 'end'\" [code]=\"code\" />\n</span>\n","import { isNaN as _isNaN, toString as _toString, padCharsStart, toNumber } from 'lodash/fp';\n\n/**\n * Converts a date into a string with format YYYY-MM-dd for the\n * users current timezone.\n */\nexport function convertDateToLocaleDateString(date: Date, separator: string = '-'): string {\n const day = pad(date.getDate());\n const currentMonth = date.getMonth() + 1;\n const month = pad(currentMonth);\n\n return `${date.getFullYear()}${separator}${month}${separator}${day}`;\n}\n\n// Pad to 2 digits\nfunction pad(num: number): string {\n return padCharsStart('0', 2, _toString(num));\n}\n\n/**\n * Use this whenever you want to create a Date instance from a dateString like \"2017-12-06\".\n * Reason: When you call the Date Constructor like this `new Date(\"2017-12-06\")`\n * the date instance will be in the users current timezone (eg in EST GMT-0500 it will become \"2017-12-05 19:00:00\"),\n * but at some places we handle the date only as date without time (e.g. date.getDate()) and there\n * we would then get timezone issues, because `date.getDate()` returns day 5 instead of 6!\n *\n * So instead of doing `new Date(\"2017-12-06\")` you should use this function instead!\n */\nexport function createDateFromDateString(dateString: string | null): Date | null {\n if (!dateString || !isValidDateString(dateString)) {\n return null;\n }\n const parts = dateString.split('-').map(toNumber);\n return new Date(parts[0]!, parts[1]! - 1, parts[2]!);\n}\n\nexport function isValidDateString(dateString: string | null): boolean {\n return dateString !== null && /^\\d\\d\\d\\d-\\d\\d-\\d\\d$/.test(dateString) && !_isNaN(Date.parse(dateString));\n}\n","import { format as fm } from 'date-fns';\n\n/* format method is monkey-patched in date-input component, leaving this implementation as dummy */\n\nexport class DateFormatter {\n format(date: Date, format: string, locale: string): string {\n return fm(date, format, { locale });\n }\n}\n","/* tslint:disable: max-file-line-count */\nimport { NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { DateFormatter } from './date-formatter';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker-inner',\n template: `\n <!--<!–ng-keydown=\"keydown($event)\"–>-->\n <div *ngIf=\"datepickerMode\" class=\"well well-sm bg-faded p-a card\" role=\"application\">\n <ng-content />\n </div>\n `,\n standalone: true,\n imports: [NgIf]\n})\nexport class DatePickerInnerComponent implements OnInit, OnChanges {\n @Input()\n locale!: string;\n @Input()\n datepickerMode!: string;\n @Input()\n startingDay!: number;\n @Input()\n yearRange!: number;\n\n @Input()\n minDate!: Date;\n @Input()\n maxDate!: Date;\n @Input()\n minMode!: string;\n @Input()\n maxMode!: string;\n @Input()\n showWeeks!: boolean;\n @Input()\n formatDay!: string;\n @Input()\n formatMonth!: string;\n @Input()\n formatYear!: string;\n @Input()\n formatDayHeader!: string;\n @Input()\n formatDayTitle!: string;\n @Input()\n formatMonthTitle!: string;\n @Input()\n onlyCurrentMonth!: boolean;\n @Input()\n shortcutPropagation!: boolean;\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n @Input()\n monthColLimit!: number;\n @Input()\n yearColLimit!: number;\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n @Input()\n dayDisabled!: number[];\n @Input()\n initDate!: Date;\n\n @Output() selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n @Output() update: EventEmitter<Date> = new EventEmitter<Date>(false);\n @Output() activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /* tslint:disable-next-line: no-any*/\n stepDay: any = {};\n /* tslint:disable-next-line: no-any*/\n stepMonth: any = {};\n /* tslint:disable-next-line: no-any*/\n stepYear: any = {};\n\n uniqueId!: string;\n\n protected modes: string[] = ['day', 'month', 'year'];\n protected dateFormatter: DateFormatter = new DateFormatter();\n protected _activeDate!: Date;\n protected selectedDate!: Date;\n protected activeDateId!: string;\n\n protected refreshViewHandlerDay!: Function;\n protected compareHandlerDay!: Function;\n protected refreshViewHandlerMonth!: Function;\n protected compareHandlerMonth!: Function;\n protected refreshViewHandlerYear!: Function;\n protected compareHandlerYear!: Function;\n\n @Input()\n get activeDate(): Date {\n return this._activeDate;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n // todo: add formatter value to Date object\n ngOnInit(): void {\n // todo: use date for unique value\n this.uniqueId = `datepicker--${Math.floor(Math.random() * 10000)}`;\n\n if (this.initDate) {\n this.activeDate = this.initDate;\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n } else if (this.activeDate === undefined) {\n this.activeDate = new Date();\n }\n }\n\n // this.refreshView should be called here to reflect the changes on the fly\n // tslint:disable-next-line:no-unused-variable\n ngOnChanges(changes: SimpleChanges): void {\n this.refreshView();\n this.checkIfActiveDateGotUpdated(changes['activeDate']);\n }\n\n // Check if activeDate has been update and then emit the activeDateChange with the new date\n /* tslint:disable-next-line: no-any */\n checkIfActiveDateGotUpdated(activeDate: any): void {\n if (activeDate && !activeDate.firstChange) {\n const previousValue = activeDate.previousValue;\n if (previousValue && previousValue instanceof Date && previousValue.getTime() !== activeDate.currentValue.getTime()) {\n this.activeDateChange.emit(this.activeDate);\n }\n }\n }\n\n setCompareHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.compareHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.compareHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.compareHandlerYear = handler;\n }\n }\n\n compare(date1: Date, date2: Date): number | undefined {\n if (date1 === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (this.datepickerMode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1, date2);\n }\n\n if (this.datepickerMode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1, date2);\n }\n\n if (this.datepickerMode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1, date2);\n }\n\n return void 0;\n }\n\n setRefreshViewHandler(handler: Function, type: string): void {\n if (type === 'day') {\n this.refreshViewHandlerDay = handler;\n }\n\n if (type === 'month') {\n this.refreshViewHandlerMonth = handler;\n }\n\n if (type === 'year') {\n this.refreshViewHandlerYear = handler;\n }\n }\n\n refreshView(): void {\n if (this.datepickerMode === 'day' && this.refreshViewHandlerDay) {\n this.refreshViewHandlerDay();\n }\n\n if (this.datepickerMode === 'month' && this.refreshViewHandlerMonth) {\n this.refreshViewHandlerMonth();\n }\n\n if (this.datepickerMode === 'year' && this.refreshViewHandlerYear) {\n this.refreshViewHandlerYear();\n }\n }\n\n dateFilter(date: Date, format: string): string {\n return this.dateFormatter.format(date, format, this.locale);\n }\n\n /* tslint:disable-next-line: no-any*/\n isActive(dateObject: any): boolean {\n if (this.compare(dateObject.date, this.activeDate) === 0) {\n this.activeDateId = dateObject.uid;\n\n return true;\n }\n\n return false;\n }\n\n /* tslint:disable-next-line: no-any*/\n createDateObject(date: Date, format: string): any {\n /* tslint:disable-next-line: no-any*/\n const dateObject: any = {};\n dateObject.date = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n dateObject.date = this.fixTimeZone(dateObject.date);\n dateObject.label = this.dateFilter(date, format);\n dateObject.selected = this.compare(date, this.selectedDate) === 0;\n dateObject.disabled = this.isDisabled(date);\n dateObject.current = this.compare(date, new Date()) === 0;\n dateObject.customClass = this.getCustomClassForDate(dateObject.date);\n\n return dateObject;\n }\n\n /* tslint:disable-next-line: no-any*/\n split(arr: any[], size: number): any[] {\n /* tslint:disable-next-line: no-any*/\n const arrays: any[] = [];\n while (arr.length > 0) {\n arrays.push(arr.splice(0, size));\n }\n\n return arrays;\n }\n\n // Fix a hard-reproducible bug with timezones\n // The bug depends on OS, browser, current timezone and current date\n // i.e.\n // var date = new Date(2014, 0, 1);\n // console.log(date.getFullYear(), date.getMonth(), date.getDate(),\n // date.getHours()); can result in \"2013 11 31 23\" because of the bug.\n fixTimeZone(date: Date): Date {\n const hours = date.getHours();\n\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), hours === 23 ? hours + 2 : 0);\n }\n\n select(date: Date, isManual = true): void {\n if (this.datepickerMode === this.minMode) {\n if (!this.activeDate) {\n this.activeDate = new Date(0, 0, 0, 0, 0, 0, 0);\n }\n\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.selectionDone.emit(this.activeDate);\n }\n } else {\n this.activeDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n this.activeDate = this.fixTimeZone(this.activeDate);\n if (isManual) {\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) - 1]!;\n }\n }\n\n this.selectedDate = new Date(this.activeDate.valueOf());\n this.update.emit(this.activeDate);\n this.refreshView();\n }\n\n move(direction: number): void {\n /* tslint:disable-next-line: no-any*/\n let expectedStep: any;\n if (this.datepickerMode === 'day') {\n expectedStep = this.stepDay;\n }\n\n if (this.datepickerMode === 'month') {\n expectedStep = this.stepMonth;\n }\n\n if (this.datepickerMode === 'year') {\n expectedStep = this.stepYear;\n }\n\n if (expectedStep) {\n const year = this.activeDate.getFullYear() + direction * (expectedStep.years || 0);\n const month = this.activeDate.getMonth() + direction * (expectedStep.months || 0);\n this.activeDate = new Date(year, month, 1);\n\n this.refreshView();\n this.activeDateChange.emit(this.activeDate);\n }\n }\n\n toggleMode(_direction: number): void {\n const direction = _direction || 1;\n\n if ((this.datepickerMode === this.maxMode && direction === 1) || (this.datepickerMode === this.minMode && direction === -1)) {\n return;\n }\n\n this.datepickerMode = this.modes[this.modes.indexOf(this.datepickerMode) + direction]!;\n this.refreshView();\n }\n\n protected getCustomClassForDate(date: Date): string {\n if (!this.customClass) {\n return '';\n }\n // todo: build a hash of custom classes, it will work faster\n const customClassObject: {\n date: Date;\n mode: string;\n clazz: string;\n /* tslint:disable-next-line: no-any */\n } = this.customClass.find((customClass: any) => {\n return customClass.date.valueOf() === date.valueOf() && customClass.mode === this.datepickerMode;\n }, this)!;\n\n return customClassObject === undefined ? '' : customClassObject.clazz;\n }\n\n protected compareDateDisabled(date1Disabled: { date: Date; mode: string }, date2: Date): number | undefined {\n if (date1Disabled === undefined || date2 === undefined) {\n return undefined;\n }\n\n if (date1Disabled.mode === 'day' && this.compareHandlerDay) {\n return this.compareHandlerDay(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'month' && this.compareHandlerMonth) {\n return this.compareHandlerMonth(date1Disabled.date, date2);\n }\n\n if (date1Disabled.mode === 'year' && this.compareHandlerYear) {\n return this.compareHandlerYear(date1Disabled.date, date2);\n }\n\n return undefined;\n }\n\n protected isDisabled(date: Date): boolean {\n let isDateDisabled = false;\n if (this.dateDisabled) {\n this.dateDisabled.forEach((disabledDate: { date: Date; mode: string }) => {\n if (this.compareDateDisabled(disabledDate, date) === 0) {\n isDateDisabled = true;\n }\n });\n }\n\n if (this.dayDisabled) {\n isDateDisabled = isDateDisabled || this.dayDisabled.indexOf(date.getDay()) > -1;\n }\n\n return (\n isDateDisabled || (this.minDate && this.compare(date, this.minDate)! < 0) || (this.maxDate && this.compare(date, this.maxDate)! > 0)\n );\n }\n}\n","export const isBs3 = () => true;\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'daypicker',\n template: `\n <table\n *ngIf=\"datePicker.datepickerMode === 'day'\"\n role=\"grid\"\n [attr.aria-labelledby]=\"datePicker.uniqueId + '-title'\"\n aria-activedescendant=\"activeDateId\"\n >\n <thead>\n <tr>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n ‹\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-left float-left\"\n (click)=\"datePicker.move(-1)\"\n tabindex=\"-1\"\n >\n <\n </button>\n </th>\n <th [attr.colspan]=\"5 + (datePicker.showWeeks ? 1 : 0)\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button\n *ngIf=\"!isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n ›\n </button>\n <button\n *ngIf=\"isBs4\"\n type=\"button\"\n class=\"btn btn-default btn-secondary btn-sm pull-right float-right\"\n (click)=\"datePicker.move(1)\"\n tabindex=\"-1\"\n >\n >\n </button>\n </th>\n </tr>\n <tr>\n <th *ngIf=\"datePicker.showWeeks\"></th>\n <th *ngFor=\"let labelz of labels\" class=\"text-center\">\n <small [attr.aria-label]=\"labelz.full\"\n ><b>{{ labelz.abbr }}</b></small\n >\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-template ngFor [ngForOf]=\"rows\" let-rowz=\"$implicit\" let-index=\"index\">\n <tr *ngIf=\"!(datePicker.onlyCurrentMonth && rowz[0].secondary && rowz[6].secondary)\">\n <td *ngIf=\"datePicker.showWeeks\" class=\"h6\" class=\"text-center\">\n <em>{{ weekNumbers[index] }}</em>\n </td>\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-sm {{ dtz.customClass }}\"\n *ngIf=\"!(datePicker.onlyCurrentMonth && dtz.secondary)\"\n [ngClass]=\"{\n 'btn-secondary': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected,\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz),\n 'btn-default': !isBs4\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span\n [ngClass]=\"{\n 'text-muted': dtz.secondary,\n 'text-info': !isBs4 && dtz.current\n }\"\n >\n {{ dtz.label }}</span\n >\n </button>\n </td>\n </tr>\n </ng-template>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-secondary {\n color: #292b2c;\n background-color: #fff;\n border-color: #ccc;\n }\n :host .btn-info .text-muted {\n color: #292b2c !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class DayPickerComponent implements OnInit {\n labels: any[] = [];\n title!: string;\n rows: any[] = [];\n weekNumbers: number[] = [];\n datePicker: DatePickerInnerComponent;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n /*protected getDaysInMonth(year:number, month:number) {\n return ((month === 1) && (year % 4 === 0) &&\n ((year % 100 !== 0) || (year % 400 === 0))) ? 29 : DAYS_IN_MONTH[month];\n }*/\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepDay = { months: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const year = this.activeDate.getFullYear();\n const month = this.activeDate.getMonth();\n const firstDayOfMonth = new Date(year, month, 1);\n const difference = this.startingDay - firstDayOfMonth.getDay();\n const numDisplayedFromPreviousMonth = difference > 0 ? 7 - difference : -difference;\n const firstDate = new Date(firstDayOfMonth.getTime());\n\n if (numDisplayedFromPreviousMonth > 0) {\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\n }\n\n // 42 is the number of days on a six-week calendar\n const _days: Date[] = self.getDates(firstDate, 42);\n const days: any[] = [];\n for (let i = 0; i < 42; i++) {\n const _dateObject = this.createDateObject(_days[i], this.formatDay);\n _dateObject.secondary = _days[i]?.getMonth() !== month;\n _dateObject.uid = this.uniqueId + '-' + i;\n days[i] = _dateObject;\n }\n\n self.labels = [];\n for (let j = 0; j < 7; j++) {\n self.labels[j] = {};\n self.labels[j].abbr = this.dateFilter(days[j].date, this.formatDayHeader);\n self.labels[j].full = this.dateFilter(days[j].date, 'EEEE');\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatDayTitle);\n self.rows = this.split(days, 7);\n\n if (this.showWeeks) {\n self.weekNumbers = [];\n const thursdayIndex = (4 + 7 - this.startingDay) % 7;\n const numWeeks = self.rows.length;\n for (let curWeek = 0; curWeek < numWeeks; curWeek++) {\n self.weekNumbers.push(self.getISO8601WeekNumber(self.rows[curWeek][thursdayIndex].date));\n }\n }\n }, 'day');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const d2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\n return d1.getTime() - d2.getTime();\n }, 'day');\n\n this.datePicker.refreshView();\n }\n\n protected getDates(startDate: Date, n: number): Date[] {\n const dates: Date[] = new Array(n);\n let current = new Date(startDate.getTime());\n let i = 0;\n let date: Date;\n while (i < n) {\n date = new Date(current.getTime());\n date = this.datePicker.fixTimeZone(date);\n dates[i++] = date;\n current = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);\n }\n return dates;\n }\n\n protected getISO8601WeekNumber(date: Date): number {\n const checkDate = new Date(date.getTime());\n // Thursday\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n const time = checkDate.getTime();\n // Compare with Jan 1\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n\n // todo: key events implementation\n}\n","import { NgClass, NgFor, NgIf } from '@angular/common';\n// @deprecated\n// tslint:disable\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'monthpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'month'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.monthColLimit - 2 <= 0 ? 1 : datePicker.monthColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\" [ngClass]=\"dtz.customClass\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class MonthPickerComponent implements OnInit {\n title!: string;\n rows: any[] = [];\n datePicker: DatePickerInnerComponent;\n maxMode!: string;\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepMonth = { years: 1 };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const months: any[] = new Array(12);\n const year: number = this.activeDate.getFullYear();\n let date: Date;\n\n for (let i = 0; i < 12; i++) {\n date = new Date(year, i, 1);\n date = this.fixTimeZone(date);\n months[i] = this.createDateObject(date, this.formatMonth);\n months[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = this.dateFilter(this.activeDate, this.formatMonthTitle);\n self.rows = this.split(months, self.datePicker.monthColLimit);\n }, 'month');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n const d1 = new Date(date1.getFullYear(), date1.getMonth());\n const d2 = new Date(date2.getFullYear(), date2.getMonth());\n return d1.getTime() - d2.getTime();\n }, 'month');\n\n this.datePicker.refreshView();\n }\n\n // todo: key events implementation\n}\n","// @deprecated\n// tslint:disable\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { Component, OnInit } from '@angular/core';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { isBs3 } from './isBs3';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'yearpicker',\n template: `\n <table *ngIf=\"datePicker.datepickerMode === 'year'\" role=\"grid\">\n <thead>\n <tr>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-left float-left\" (click)=\"datePicker.move(-1)\" tabindex=\"-1\">‹</button>\n </th>\n <th [attr.colspan]=\"datePicker.yearColLimit - 2 <= 0 ? 1 : datePicker.yearColLimit - 2\">\n <button\n [id]=\"datePicker.uniqueId + '-title'\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"datePicker.toggleMode(0)\"\n [disabled]=\"datePicker.datepickerMode === datePicker.maxMode\"\n [ngClass]=\"{ disabled: datePicker.datepickerMode === datePicker.maxMode }\"\n tabindex=\"-1\"\n style=\"width:100%;\"\n >\n <strong>{{ title }}</strong>\n </button>\n </th>\n <th>\n <button type=\"button\" class=\"btn btn-default btn-sm pull-right float-right\" (click)=\"datePicker.move(1)\" tabindex=\"-1\">\n ›\n </button>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let rowz of rows\">\n <td *ngFor=\"let dtz of rowz\" class=\"text-center\" role=\"gridcell\" [attr.id]=\"dtz.uid\">\n <button\n type=\"button\"\n style=\"min-width:100%;\"\n class=\"btn btn-default\"\n [ngClass]=\"{\n 'btn-link': isBs4 && !dtz.selected && !datePicker.isActive(dtz),\n 'btn-info': dtz.selected || (isBs4 && !dtz.selected && datePicker.isActive(dtz)),\n disabled: dtz.disabled,\n active: !isBs4 && datePicker.isActive(dtz)\n }\"\n [disabled]=\"dtz.disabled\"\n (click)=\"datePicker.select(dtz.date)\"\n tabindex=\"-1\"\n >\n <span [ngClass]=\"{ 'text-success': isBs4 && dtz.current, 'text-info': !isBs4 && dtz.current }\">{{ dtz.label }}</span>\n </button>\n </td>\n </tr>\n </tbody>\n </table>\n `,\n styles: [\n `\n :host .btn-info .text-success {\n color: #fff !important;\n }\n `\n ],\n standalone: true,\n imports: [NgIf, NgClass, NgFor]\n})\nexport class YearPickerComponent implements OnInit {\n datePicker: DatePickerInnerComponent;\n title!: string;\n rows: any[] = [];\n\n constructor(datePicker: DatePickerInnerComponent) {\n this.datePicker = datePicker;\n }\n\n get isBs4(): boolean {\n return !isBs3();\n }\n\n ngOnInit(): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.datePicker.stepYear = { years: this.datePicker.yearRange };\n\n this.datePicker.setRefreshViewHandler(function (this: any): void {\n const years: any[] = new Array(this.yearRange);\n let date: Date;\n const start = self.getStartingYear(this.activeDate.getFullYear());\n\n for (let i = 0; i < this.yearRange; i++) {\n date = new Date(start + i, 0, 1);\n date = this.fixTimeZone(date);\n years[i] = this.createDateObject(date, this.formatYear);\n years[i].uid = this.uniqueId + '-' + i;\n }\n\n self.title = [years[0].label, years[this.yearRange - 1].label].join(' - ');\n self.rows = this.split(years, self.datePicker.yearColLimit);\n }, 'year');\n\n this.datePicker.setCompareHandler(function (date1: Date, date2: Date): number {\n return date1.getFullYear() - date2.getFullYear();\n }, 'year');\n\n this.datePicker.refreshView();\n }\n\n protected getStartingYear(year: number): number {\n // todo: parseInt\n return ((year - 1) / this.datePicker.yearRange) * this.datePicker.yearRange + 1;\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatepickerConfig {\n locale = 'en';\n datepickerMode = 'day';\n startingDay = 0;\n yearRange = 20;\n minMode = 'day';\n maxMode = 'year';\n showWeeks = true;\n formatDay = 'DD';\n formatMonth = 'MMMM';\n formatYear = 'YYYY';\n formatDayHeader = 'dd';\n formatDayTitle = 'MMMM YYYY';\n formatMonthTitle = 'YYYY';\n onlyCurrentMonth = false;\n monthColLimit = 3;\n yearColLimit = 5;\n shortcutPropagation = false;\n}\n","import { Component, EventEmitter, forwardRef, Input, Output, Provider, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DatePickerInnerComponent } from './datepicker-inner.component';\nimport { DatepickerConfig } from './datepicker.config';\nimport { DayPickerComponent } from './daypicker.component';\nimport { MonthPickerComponent } from './monthpicker.component';\nimport { YearPickerComponent } from './yearpicker.component';\n\nexport const DATEPICKER_CONTROL_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n};\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'datepicker',\n template: `\n <datepicker-inner\n [activeDate]=\"activeDate\"\n (update)=\"onUpdate($event)\"\n [locale]=\"config.locale\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n [dayDisabled]=\"dayDisabled\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [monthColLimit]=\"monthColLimit\"\n [yearColLimit]=\"yearColLimit\"\n (selectionDone)=\"onSelectionDone($event)\"\n (activeDateChange)=\"onActiveDateChange($event)\"\n >\n <daypicker tabindex=\"0\" />\n <monthpicker tabindex=\"0\" />\n <yearpicker tabindex=\"0\" />\n </datepicker-inner>\n `,\n providers: [DATEPICKER_CONTROL_VALUE_ACCESSOR],\n standalone: true,\n imports: [DatePickerInnerComponent, DayPickerComponent, MonthPickerComponent, YearPickerComponent]\n})\n/* tslint:enable:component-selector-name component-selector-type */\nexport class DatePickerComponent implements ControlValueAccessor {\n /** sets datepicker mode, supports: `day`, `month`, `year` */\n @Input() datepickerMode = 'day';\n /** default date to show if `ng-model` value is not specified */\n @Input()\n initDate!: Date;\n /** oldest selectable date */\n @Input()\n minDate!: Date;\n /** latest selectable date */\n @Input()\n maxDate!: Date;\n /** set lower datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n minMode!: string;\n /** sets upper datepicker mode, supports: `day`, `month`, `year` */\n @Input()\n maxMode!: string;\n /** if false week numbers will be hidden */\n @Input() showWeeks = true;\n /** format of day in month */\n @Input()\n formatDay!: string;\n /** format of month in year */\n @Input()\n formatMonth!: string;\n /** format of year in year range */\n @Input()\n formatYear!: string;\n /** format of day in week header */\n @Input()\n formatDayHeader!: string;\n /** format of title when selecting day */\n @Input()\n formatDayTitle!: string;\n /** format of title when selecting month */\n @Input()\n formatMonthTitle!: string;\n /** starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n startingDay!: number;\n /** number of years displayed in year selection */\n @Input()\n yearRange!: number;\n /** if true only dates from the currently displayed month will be shown */\n @Input()\n onlyCurrentMonth!: boolean;\n /** if true shortcut`s event propagation will be disabled */\n @Input()\n shortcutPropagation!: boolean;\n /** number of months displayed in a single row of month picker */\n @Input()\n monthColLimit!: number;\n /** number of years displayed in a single row of year picker */\n @Input()\n yearColLimit!: number;\n /** array of custom css classes to be applied to targeted dates */\n @Input()\n customClass!: { date: Date; mode: string; clazz: string }[];\n /** array of disabled dates */\n @Input()\n dateDisabled!: { date: Date; mode: string }[];\n /** disabled days of the week from 0-6 (0=Sunday, ..., 6=Saturday) */\n @Input()\n dayDisabled!: number[];\n\n /** currently active date */\n @Input()\n get activeDate(): Date {\n return this._activeDate || this._now;\n }\n\n set activeDate(value: Date) {\n this._activeDate = value;\n }\n\n @Output()\n selectionDone: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n /** callback to invoke when the activeDate is changed. */\n @Output()\n activeDateChange: EventEmitter<Date> = new EventEmitter<Date>(undefined);\n\n @ViewChild(DatePickerInnerComponent, { static: true })\n _datePicker!: DatePickerInnerComponent;\n\n /* tslint:disable-next-line: no-any*/\n onChange: any = Function.prototype;\n /* tslint:disable-next-line: no-any*/\n onTouched: any = Function.prototype;\n\n config: DatepickerConfig;\n\n protected _now: Date = new Date();\n protected _activeDate!: Date;\n\n constructor(config: DatepickerConfig) {\n this.config = config;\n this.configureOptions();\n }\n\n configureOptions(): void {\n Object.assign(this, this.config);\n }\n\n onUpdate(event: Date): void {\n this.activeDate = event;\n this.onChange(event);\n }\n\n onSelectionDone(event: Date): void {\n this.selectionDone.emit(event);\n }\n\n onActiveDateChange(event: Date): void {\n this.activeDateChange.emit(event);\n }\n // todo: support null value\n /* tslint:disable-next-line: no-any*/\n writeValue(value: any): void {\n if (this._datePicker.compare(value, this._activeDate) === 0) {\n return;\n }\n if (value && value instanceof Date) {\n this.activeDate = value;\n this._datePicker.select(value, false);\n\n return;\n }\n\n this.activeDate = (value ? new Date(value) : void 0)!;\n }\n\n registerOnChange(fn: () => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { CommonModule, NgIf } from '@angular/common';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator } from '@angular/forms';\nimport { format, startOfDay } from 'date-fns';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ButtonComponent } from '../../../core-ui/components/button/button.component';\nimport { DATE_FN_LOCALE, DATE_FORMATS, DateFormatsProvider } from '../../../core-ui/core-ui.constants';\nimport { AutofocusDirective } from '../../../core-ui/directives/autofocus.directive';\nimport { CustomDatePipe } from '../../../core-ui/pipes/custom-date.pipe';\nimport { convertDateToLocaleDateString, createDateFromDateString, isValidDateString } from '../../../shared/date-helpers';\nimport { Observe } from '../../../shared/observe';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { DateFormatter } from '../date-picker-ui/date-formatter';\nimport { DatePickerComponent } from '../date-picker-ui/datepicker.component';\n\n// Input + ng2-bootstrap datepicker\nexport type DateInputRenderingStyle = 'INPUT' | 'LINK' | 'BUTTON';\n\nconst DEFAULT_MIN_DATE = new Date('0000-01-01');\nconst DEFAULT_MAX_DATE = new Date('9999-12-31');\n\n/**\n * This is a date input component that can be used to select a date.\n */\n@Component({\n selector: 'lx-date-input',\n templateUrl: 'date-input.component.html',\n styleUrls: ['date-input.component.scss'],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => DateInputComponent), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => DateInputComponent), multi: true }\n ],\n standalone: true,\n imports: [\n CommonModule,\n NgIf,\n CdkOverlayOrigin,\n FormsModule,\n AutofocusDirective,\n CdkConnectedOverlay,\n DatePickerComponent,\n CustomDatePipe,\n MarkInvalidDirective,\n ButtonComponent\n ]\n})\nexport class DateInputComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor, Validator {\n /** The initial date value for the date input field. This is used for `ngModel` and `formControl`. */\n @Input() public date: Date | null = null;\n /** Secondary, alternative input with date string */\n @Input() public dateString: string | null = null;\n /** Determine whether formGroup's value accessor is accessing the selected IDs or the selected objects */\n @Input() public valueAccessor: 'date' | 'dateString' = 'date';\n /** ID to be set on input to correspond to outside label */\n @Input() public inputId: string = '';\n /** The rendering style of the date input component. Can be one of \"LINK\", \"BUTTON\", or \"INPUT\". */\n @Input() public renderingStyle: DateInputRenderingStyle = 'INPUT';\n /** The placeholder text to show in the date input field when there is no date selected */\n @Input() public placeholder: string = 'yyyy-mm-dd';\n /** Deactivate to use old date picker */\n @Input() public cdk = true;\n /** Sets datepicker mode, supports: day, month, year */\n @Input() public datepickerMode: string = 'day';\n /** Default date to show if ng-model value is not specified. Default date to show if ng-model value is not specified */\n @Input() initDateString!: string;\n /** Oldest selectable date */\n @Input() public minDate = DEFAULT_MIN_DATE;\n /** Latest selectable date */\n @Input() public maxDate = DEFAULT_MAX_DATE;\n /** Set lower datepicker mode, supports: day, month, year */\n @Input() public minMode: string = 'day';\n /** Sets upper datepicker mode, supports: day, month, year */\n @Input() public maxMode: string = 'year';\n /** If false week numbers will be hidden */\n @Input() public showWeeks: boolean = true;\n /** Format of day in month */\n @Input() public formatDay: string = 'DD';\n /** Format of month in year */\n @Input() public formatMonth: string = 'MMMM';\n /** Format of year in year range */\n @Input() public formatYear: string = 'YYYY';\n /** Format of day in week header */\n @Input() public formatDayHeader: string = 'dd';\n /** Format of title when selecting day */\n @Input() public formatDayTitle: string = 'MMMM YYYY';\n /** Format of title when selecting month */\n @Input() public formatMonthTitle: string = 'YYYY';\n /** Starting day of the week from 0-6 (0=Sunday, ..., 6=Saturday) public */\n @Input() startingDay: number = 0;\n /** Number of years displayed in year selection */\n @Input() public yearRange: number = 20;\n /** If true only dates from the currently displayed month will be shown */\n @Input() public onlyCurrentMonth: boolean = false;\n /** If true shortcut`s event propagation will be disabled */\n @Input() public shortcutPropagation: boolean = false;\n /** Array of custom css classes to be applied to */\n @Input() public customClass: { date: Date; mode: string; clazz: string }[] = [];\n /** If true, the date input field will be disabled. */\n @Input() public disabled!: boolean;\n /** Array of disabled dates if mode is day, or years, etc. */\n @Input() public dateDisabled: { date: Date; mode: string }[] = [];\n /** If true, the date input field will be auto-focused when the component is first rendered. */\n @Input() autoFocus = false;\n /** If true, the date input field will be marked as invalid. */\n @Input() markInvalid = false;\n\n /** Triggered whenever the datepicker is closed */\n @Output() closeDateInput = new EventEmitter<void>();\n /** Triggered whenever the date changes */\n @Output() dateStringChange = new EventEmitter<string | null>();\n /** Triggered whenever the date changes. */\n @Output() dateChange = new EventEmitter<Date | null>();\n\n /** @internal */\n @Observe('initDateString') initDateString$!: Observable<string>;\n\n /** @internal */\n @ViewChild('input') input!: ElementRef<HTMLInputElement>;\n /** @internal */\n @ContentChild('dateStringTemplate', { read: TemplateRef, static: true }) dateStringTemplate?: TemplateRef<any>;\n\n /** @internal */\n showDatepicker: boolean = false;\n /** @internal */\n dateFormat: string;\n /** @internal */\n initDate!: Date;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n private formControl!: UntypedFormControl;\n /** @internal */\n hasError: boolean = false;\n /** @internal */\n onTouched!: () => void;\n\n /** @internal */\n propagateChange = (_date: Date | null) => {};\n\n constructor(\n private cd: ChangeDetectorRef,\n @Inject(DATE_FORMATS) private dateFormatsProvider: DateFormatsProvider,\n @Optional() @Inject(DATE_FN_LOCALE) private getDateFnLocale?: Function\n ) {\n this.dateFormat = this.dateFormatsProvider.getDateFormat();\n // Patch DatePicker until https://github.com/valor-software/ng2-bootstrap/issues/1385 is resolved\n const writeValue = DatePickerComponent.prototype.writeValue;\n DatePickerComponent.prototype.writeValue = function (value) {\n if (value !== null) {\n return writeValue.apply(this, arguments as any);\n }\n };\n\n // Somehow datepicker does use a separate moment instance than we do. That one runs on locale en by default.\n // So we patch the format function here to use our moment instance.\n // Maybe it will be fixed with: https://github.com/valor-software/ngx-bootstrap/issues/455\n const locale = this.getDateFnLocale ? this.getDateFnLocale() : null;\n DateFormatter.prototype.format = function (date: Date, f: string) {\n return format(date, f, { locale });\n };\n }\n\n /** @internal */\n ngOnInit() {\n this.initDateString$.pipe(takeUntil(this.destroyed$)).subscribe((date) => {\n this.initDate = createDateFromDateString(date) ?? startOfDay(new Date());\n });\n }\n\n /** @internal */\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['date']) {\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : null;\n } else if (changes['dateString']) {\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n /** @internal */\n public ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n public focus() {\n this.input.nativeElement.focus();\n }\n\n /** @internal */\n public showPopup() {\n this.showDatepicker = true;\n this.cd.detectChanges();\n }\n\n /** @internal */\n public togglePopup() {\n this.showDatepicker = !this.showDatepicker;\n }\n\n /** @internal */\n public hidePopup() {\n if (this.showDatepicker) {\n this.showDatepicker = false;\n this.closeDateInput.emit();\n }\n }\n\n /** @internal */\n onDateStringChange(newDateString: string | null, emit: boolean = true) {\n if (isValidDateString(newDateString)) {\n const date = createDateFromDateString(newDateString);\n this.updateDate(date, emit);\n } else if (newDateString === null || newDateString === '') {\n this.updateDate(null, emit);\n } else {\n this.hasError = true;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n }\n\n /** @internal */\n onSelectionDone(newDate: Date) {\n this.updateDate(newDate);\n this.hidePopup();\n }\n\n /** @internal */\n onBlur() {\n if (this.onTouched) {\n this.onTouched();\n }\n }\n\n private updateDate(date: Date | null, emit: boolean = true) {\n this.date = date;\n this.dateString = this.date ? convertDateToLocaleDateString(this.date) : '';\n if (emit) {\n this.dateChange.emit(date);\n this.dateStringChange.emit(this.dateString);\n }\n this.propagateChange(date);\n this.recheckErrors();\n }\n\n private recheckErrors() {\n this.hasError = false;\n if (this.formControl) {\n this.formControl.updateValueAndValidity();\n }\n }\n\n /**\n * Write a new value to the element.\n * @internal\n */\n writeValue(newDate: Date | string) {\n if (this.valueAccessor === 'date') {\n this.date = newDate as Date;\n this.dateString = convertDateToLocaleDateString(this.date);\n } else {\n this.dateString = newDate as string;\n this.onDateStringChange(this.dateString, false);\n }\n }\n\n /**\n * Set the function to be called when the control receives a change event.\n * @internal\n */\n registerOnChange(fn: any) {\n if (this.valueAccessor === 'date') {\n this.dateChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n } else if (this.valueAccessor === 'dateString') {\n this.dateStringChange.pipe(takeUntil(this.destroyed$)).subscribe(fn);\n }\n }\n\n /**\n * Set the function to be called when the control receives a touch event.\n * @internal\n */\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n /** @internal */\n validate(c: UntypedFormControl) {\n this.formControl = c;\n return this.hasError\n ? {\n dateFormatError: {\n given: this.dateString,\n format: 'yyyy-mm-dd'\n }\n }\n : null;\n }\n}\n","<ng-container *ngIf=\"cdk; else withoutCdkOverlay\">\n <span\n class=\"wrapper\"\n [class.forLink]=\"renderingStyle === 'LINK'\"\n [class.has-error]=\"hasError\"\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n >\n <!-- TODO: The dateInput and datePicker code ist duplicated for cdk and withoutCdK use to solve a placing problem of the\n ngx-bootstrap datepicker component. Writing it in a ng-container led to an unexpected anchoring behavior of the datePicker NOT directly\n below the dateInput element -->\n @switch (renderingStyle) {\n @case ('BUTTON') {\n <button lx-button (click)=\"showPopup()\" lxAutoclose (autoclose)=\"hidePopup()\" size=\"large\" endIcon=\"fa-angle-down\">\n @if (dateStringTemplate) {\n <ng-container *ngTemplateOutlet=\"dateStringTemplate\" />\n } @else {\n {{ dateString ?? placeholder }}\n }\n </button>\n }\n @case ('INPUT') {\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n [lxMarkInvalid]=\"markInvalid\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n />\n }\n @case ('LINK') {\n <a class=\"dateControl\" (click)=\"togglePopup()\">{{ date | lxDate: dateFormat }}</a>\n }\n }\n\n <ng-template\n #cdkDatepicker\n cdkConnectedOverlay\n [cdkConnectedOverlayOpen]=\"showDatepicker\"\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n (backdropClick)=\"hidePopup()\"\n >\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n />\n </div>\n </div>\n </ng-template>\n </span>\n</ng-container>\n\n<ng-template #withoutCdkOverlay>\n <div class=\"legacy\" [class.forLink]=\"renderingStyle === 'LINK'\">\n <div class=\"backdrop\" *ngIf=\"showDatepicker\" (click)=\"hidePopup()\"></div>\n <span class=\"wrapper\" [class.forLink]=\"renderingStyle === 'LINK'\" [class.has-error]=\"hasError\">\n <input\n #input\n class=\"form-control dateControl\"\n placeholder=\"{{ placeholder }}\"\n [id]=\"inputId\"\n [lxAutofocus]=\"autoFocus\"\n [lxMarkInvalid]=\"markInvalid\"\n [(ngModel)]=\"dateString\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"onDateStringChange($event)\"\n (focus)=\"showPopup()\"\n (blur)=\"onBlur()\"\n (keydown.enter)=\"hidePopup()\"\n (keydown.escape)=\"hidePopup()\"\n (keydown.tab)=\"hidePopup()\"\n (keydown.shift.tab)=\"hidePopup()\"\n [class.text-danger]=\"hasError\"\n *ngIf=\"renderingStyle === 'INPUT'\"\n />\n <a class=\"dateControl\" (click)=\"togglePopup()\" *ngIf=\"renderingStyle === 'LINK'\">{{ date | lxDate: dateFormat }}</a>\n <div class=\"datepickerContainer\">\n <div class=\"calendar\">\n <datepicker\n class=\"popup\"\n *ngIf=\"showDatepicker\"\n (selectionDone)=\"onSelectionDone($event)\"\n [ngModel]=\"date\"\n [datepickerMode]=\"datepickerMode\"\n [initDate]=\"initDate\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minMode]=\"minMode\"\n [maxMode]=\"maxMode\"\n [showWeeks]=\"showWeeks\"\n [formatDay]=\"formatDay\"\n [formatMonth]=\"formatMonth\"\n [formatYear]=\"formatYear\"\n [formatDayHeader]=\"formatDayHeader\"\n [formatDayTitle]=\"formatDayTitle\"\n [formatMonthTitle]=\"formatMonthTitle\"\n [startingDay]=\"startingDay\"\n [yearRange]=\"yearRange\"\n [onlyCurrentMonth]=\"onlyCurrentMonth\"\n [shortcutPropagation]=\"shortcutPropagation\"\n [customClass]=\"customClass\"\n [dateDisabled]=\"dateDisabled\"\n />\n </div>\n </div>\n </span>\n </div>\n</ng-template>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { DatePickerComponent } from './datepicker.component';\nimport { DatepickerConfig } from './datepicker.config';\n\n@NgModule({\n imports: [DatePickerComponent],\n exports: [DatePickerComponent]\n})\nexport class DatepickerUiModule {\n static forRoot(): ModuleWithProviders<DatepickerUiModule> {\n return { ngModule: DatepickerUiModule, providers: [DatepickerConfig] };\n }\n}\n","import { NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n TemplateRef\n} from '@angular/core';\nimport { ButtonComponent } from '../../../../core-ui/components/button/button.component';\n\nexport interface DragAndDropListAction {\n id: string;\n label: string;\n icon: string;\n showOnlyOnHover?: boolean;\n}\n\nexport interface DragAndDropListActionEvent {\n actionId: string;\n item: string;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list-item',\n templateUrl: 'drag-and-drop-list-item.component.html',\n styleUrls: ['drag-and-drop-list-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, NgFor, ButtonComponent]\n})\nexport class DragAndDropListItemComponent {\n readonly NAME = 'DragAndDropListItemComponent';\n\n @Input() item!: string;\n @Input() draggable: boolean = true;\n /**\n * An array of DragAndDropListActions\n * When this array is defined, the drag handle is shown at the start of an item and the action buttons are rendered in their provided order at the right end of an item.\n */\n @Input() actions?: DragAndDropListAction[];\n @Output() action = new EventEmitter<DragAndDropListActionEvent>();\n\n @HostBinding('class.draggingDisabled') get draggingDisabled() {\n return !this.draggable;\n }\n\n @HostBinding('class.customTemplate') get hasCustomTemplate() {\n return !!this.customTemplateRef;\n }\n\n @ContentChild('customTemplate') customTemplateRef: TemplateRef<any> | null = null;\n\n constructor(private element: ElementRef) {}\n\n trackByAction(_index: number, action: DragAndDropListAction) {\n return action.id;\n }\n\n focus(): void {\n this.element.nativeElement.focus();\n }\n}\n","<ng-container *ngIf=\"customTemplateRef; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"customTemplateRef\" />\n</ng-container>\n<ng-template #defaultTemplate>\n <div class=\"drag-item-wrappper\">\n <i *ngIf=\"draggable\" class=\"far fa-bars drag-handle\"></i>\n <span [attr.title]=\"item\" class=\"itemWrapperForTruncation truncate\">{{ item }}</span>\n </div>\n <div class=\"left-button-container\" align=\"left\">\n <div class=\"action-buttons-wrapper\" *ngIf=\"!!actions\">\n <button\n lx-button\n *ngFor=\"let act of actions; trackBy: trackByAction\"\n (click)=\"action.emit({ actionId: act.id, item: item })\"\n [title]=\"act.label\"\n [square]=\"true\"\n mode=\"ghost\"\n size=\"small\"\n class=\"action-button\"\n [class.show-on-hover-button]=\"act.showOnlyOnHover ? true : false\"\n [icon]=\"act.icon\"\n ></button>\n </div>\n </div>\n</ng-template>\n","/**\n * Used in the DragAndDropListComponent and KeyboardSortableListDirective\n */\nexport const DRAG_AND_DROP_LIST_TRANSLATION_NAME = 'DragAndDropListComponent';\n","/* eslint-disable @angular-eslint/no-output-rename */\n/* eslint-disable @angular-eslint/no-input-rename */\nimport { AriaDescriber } from '@angular/cdk/a11y';\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Overlay, OverlayPositionBuilder } from '@angular/cdk/overlay';\nimport { Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnChanges, Output } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { TooltipDirective } from '../../../../core-ui/tooltip/tooltip.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableItem]',\n standalone: true\n})\nexport class KeyboardSortableItemDirective implements OnChanges {\n @Input('lxKeyboardSortableItem') allItemsData!: string[] | null;\n @Input('lxKeyboardItemData') itemData!: string;\n @Input() isSortingByKeyboard!: boolean;\n @Input('lxKeyboardItemBeingSorted') itemBeingSorted?: string;\n\n @Output() readonly isSortingByKeyboardChange = new EventEmitter<boolean>();\n @Output('lxKeyboardItemBeingSortedChange') readonly itemBeingSortedChange = new EventEmitter<string | undefined>();\n @Output() sortItemsWithKeyboard = new EventEmitter<{ previousIndex: number; currentIndex: number }>();\n @Output() focusWithKeyboard!: Observable<KeyboardSortableItemDirective>;\n\n @HostBinding('attr.lxTooltip') tooltipDirective = new TooltipDirective(\n this.overlayPositionBuilder,\n this.element,\n this.overlay,\n this.ariaDescriber\n );\n @HostBinding('class.isBeingSortedByKeyboard') isBeingSorted: boolean = false;\n\n get isSortable() {\n return !this.draggableItem.disabled;\n }\n\n private preventBlur = false;\n private focusWithKeyboardReplaySubject$ = new ReplaySubject<KeyboardSortableItemDirective>(1);\n\n constructor(\n private draggableItem: CdkDrag,\n private overlayPositionBuilder: OverlayPositionBuilder,\n private element: ElementRef<HTMLElement>,\n private overlay: Overlay,\n private ariaDescriber: AriaDescriber\n ) {\n /**\n * Using a ReplaySubject here so that the KeyboardSortableListDirective will also know\n * about a focusWithKeyboard event when its copy of the KeyboardSortableItemDirective ContentChildren\n * was just initialised after the event fired.\n */\n this.focusWithKeyboard = this.focusWithKeyboardReplaySubject$.asObservable();\n }\n\n ngOnChanges(): void {\n this.isBeingSorted = this.itemData === this.itemBeingSorted;\n if (this.isBeingSorted) {\n // focus always the pressed element\n this.element.nativeElement.focus();\n }\n }\n\n @HostListener('keyup.tab')\n focusViaKeyboard(): void {\n this.focusWithKeyboardReplaySubject$.next(this);\n }\n\n @HostListener('keydown.enter', ['$event'])\n @HostListener('keydown.space', ['$event'])\n enterSortingModeEnabledByKeyboard($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n if ($event.code === 'Enter' || $event.code === 'Space') {\n $event.preventDefault();\n this.tooltipDirective.hide();\n\n this.itemBeingSortedChange.emit(!this.isSortingByKeyboard ? this.itemData : undefined);\n this.isSortingByKeyboardChange.emit(!this.isSortingByKeyboard);\n }\n }\n }\n\n @HostListener('blur', ['$event'])\n @HostListener('keydown.esc', ['$event'])\n leaveSortingModeEnabledByKeyboard($event: KeyboardEvent | FocusEvent): void {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (!this.preventBlur) {\n this.isSortingByKeyboardChange.emit(false);\n this.itemBeingSortedChange.emit(undefined);\n }\n }\n }\n\n @HostListener('keydown.arrowUp', ['$event'])\n @HostListener('keydown.arrowDown', ['$event'])\n sort($event: KeyboardEvent) {\n if ($event.target === this.element.nativeElement) {\n this.tooltipDirective.hide();\n if (this.isSortingByKeyboard) {\n const allItemsData = this.allItemsData ?? [];\n\n $event.preventDefault();\n\n const previousIndex = allItemsData.findIndex((item) => item === this.itemData);\n const currentIndex = $event.code === 'ArrowUp' ? previousIndex - 1 : previousIndex + 1;\n\n if (currentIndex >= 0 && currentIndex <= allItemsData.length - 1) {\n this.sortItemsWithKeyboard.emit({ previousIndex, currentIndex });\n\n // When triggering a keyboard event, the DOM would \"removeChildren\" on the HTML element\n // which specially for \"ArrowUp\" events would trigger a \"blur\" event since the element\n // has been moved aboved the DOM tree and loses the focus state.\n this.preventBlur = true;\n\n setTimeout(() => (this.preventBlur = false), 0);\n }\n }\n }\n }\n}\n","import { AfterViewInit, Directive, Input } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable, merge } from 'rxjs';\nimport { filter, switchMap, take } from 'rxjs/operators';\nimport { Observe } from '../../../../shared/observe';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from '../constants';\nimport { KeyboardSortableItemDirective } from '../keyboard-sortable-item/keyboard-sortable-item.directive';\n\n@Directive({\n selector: '[lxKeyboardSortableList]',\n standalone: true\n})\nexport class KeyboardSortableListDirective implements AfterViewInit {\n @Observe('keyboardSortableItems') private keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n @Input() keyboardSortableItems!: KeyboardSortableItemDirective[] | null;\n\n constructor(private translateService: TranslateService) {}\n\n ngAfterViewInit(): void {\n this.setupControlsTooltipToBeShownOnFirstFocusedItem();\n }\n\n private setupControlsTooltipToBeShownOnFirstFocusedItem() {\n const firstFocusEventOnADraggableItem$ = this.keyboardSortableItems$.pipe(\n filter((items) => items && items.length > 0),\n switchMap((items) => merge(...items.filter((item) => item.isSortable).map((item) => item.focusWithKeyboard))),\n take(1)\n );\n\n firstFocusEventOnADraggableItem$.subscribe((item) => {\n item.tooltipDirective.content = this.translateService.instant(`${DRAG_AND_DROP_LIST_TRANSLATION_NAME}.helpTooltip`);\n item.tooltipDirective.show();\n });\n }\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n ViewChildren\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { DRAG_AND_DROP_LIST_TRANSLATION_NAME } from './constants';\nimport { DragAndDropListActionEvent, DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\nexport interface DragAndDropListMoveEvent {\n item: string;\n index: number;\n}\n\nexport interface DragAndDropListMoveIndexEvent {\n index: number;\n previous: number;\n}\n\n@Component({\n selector: 'lx-drag-and-drop-list',\n templateUrl: 'drag-and-drop-list.component.html',\n styleUrls: ['drag-and-drop-list.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n CdkDropList,\n KeyboardSortableListDirective,\n NgFor,\n CdkDrag,\n KeyboardSortableItemDirective,\n DragAndDropListItemComponent,\n NgTemplateOutlet,\n AsyncPipe,\n TranslateModule,\n DragDropModule\n ]\n})\nexport class DragAndDropListComponent implements AfterContentInit, AfterViewInit {\n /** @internal */\n readonly NAME = DRAG_AND_DROP_LIST_TRANSLATION_NAME;\n\n /** @internal */\n items$!: Observable<DragAndDropListItemComponent[]>;\n /** @internal */\n keyboardSortableItems$!: Observable<KeyboardSortableItemDirective[]>;\n\n /**\n * A label for describing this list.\n */\n @Input() label?: string | undefined;\n /**\n * Override the global label font weight of 700\n */\n @Input() labelFontWeight?: number = 700;\n\n @Input() @HostBinding('attr.color') color?: 'light' | 'dark' = 'light';\n @Input() @HostBinding('attr.fontSize') fontSize?: 'normal' | 'big' = 'normal';\n\n /**\n * Use the moveToIndex Output in favor of moveItem,\n * when moving is restricted to one item through this.draggableItem.\n */\n @Output() moveToIndex = new EventEmitter<DragAndDropListMoveIndexEvent>();\n @Output() moveItem = new EventEmitter<DragAndDropListMoveEvent>();\n\n /** @internal */\n @ContentChildren(DragAndDropListItemComponent) private _items!: QueryList<DragAndDropListItemComponent>;\n\n /** @internal */\n @ViewChildren(KeyboardSortableItemDirective)\n private _keyboardSortableItems!: QueryList<KeyboardSortableItemDirective>;\n\n /**\n * TODO: extract state about keyboard sorting into KeyboardSortableListDirective\n * @internal\n */\n isSortingByKeyboard: boolean = false;\n /** @internal */\n keyboardItemBeingSorted: string | undefined = undefined;\n\n /** @internal */\n allItemsData: string[] = [];\n /** @internal */\n allItemsData$!: Observable<string[]>;\n\n ngAfterContentInit() {\n this.items$ = this._items.changes.pipe(\n startWith(this._items),\n map((items: QueryList<DragAndDropListItemComponent>) => items.toArray())\n );\n this.allItemsData$ = this.items$.pipe(map((itemComponents) => itemComponents.map((itemComponent) => itemComponent.item)));\n }\n\n ngAfterViewInit(): void {\n this.keyboardSortableItems$ = this._keyboardSortableItems.changes.pipe(\n startWith(this._keyboardSortableItems),\n map((items: QueryList<KeyboardSortableItemDirective>) => items.toArray())\n );\n }\n\n /** @internal */\n emitContentChildAction(action: DragAndDropListActionEvent) {\n this._items.find((itemComponent) => itemComponent.item === action.item)?.action.emit(action);\n }\n\n /**\n * From the Angular cdk drag and drop documentation:\n * Note that this will not update your data model;\n * you can listen to the cdkDropListDropped event to update the data model\n * once the user finishes dragging.\n * https://material.angular.io/cdk/drag-drop/overview\n *\n * You're supposed to update the data in the parent and pass the new items as input.\n * @internal\n */\n drop(event: CdkDragDrop<DragAndDropListItemComponent[] | null, string[]>) {\n this.sortItems(event.container.data!, event.item.data, event.previousIndex, event.currentIndex);\n }\n\n /** @internal */\n dropToIndexAfterArrowKey(item: any, previousIndex: number, currentIndex: number) {\n if (this.isSortingByKeyboard) {\n this.sortItems(this._items, item, previousIndex, currentIndex);\n }\n }\n\n private sortItems(items: any, item: string, previousIndex: number, currentIndex: number): void {\n moveItemInArray(items, previousIndex, currentIndex);\n this.moveToIndex.emit({ index: currentIndex, previous: previousIndex });\n this.moveItem.emit({ item, index: currentIndex });\n }\n\n /** @internal */\n trackByItem(_index: number, item: DragAndDropListItemComponent) {\n return item.item;\n }\n}\n","<label *ngIf=\"label\" [style.font-weight]=\"labelFontWeight\">{{ label }}</label>\n<p class=\"sr-only\">{{ NAME + '.helpTooltip' | translate }}</p>\n<ul\n cdkDropList\n class=\"list\"\n role=\"listbox\"\n [attr.aria-label]=\"label\"\n lxKeyboardSortableList\n [keyboardSortableItems]=\"keyboardSortableItems$ | async\"\n [cdkDropListData]=\"items$ | async\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <li\n *ngFor=\"let itemComponent of items$ | async; trackBy: trackByItem\"\n #listItemParent\n class=\"item\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n [cdkDragData]=\"itemComponent.item\"\n [cdkDragDisabled]=\"!itemComponent.draggable\"\n [class.dark]=\"color === 'dark'\"\n [class.big]=\"fontSize === 'big'\"\n [tabIndex]=\"itemComponent.draggable === false ? -1 : 0\"\n [lxKeyboardSortableItem]=\"allItemsData$ | async\"\n [lxKeyboardItemData]=\"itemComponent.item\"\n [(isSortingByKeyboard)]=\"isSortingByKeyboard\"\n [(lxKeyboardItemBeingSorted)]=\"keyboardItemBeingSorted\"\n (sortItemsWithKeyboard)=\"dropToIndexAfterArrowKey(itemComponent.item, $event.previousIndex, $event.currentIndex)\"\n >\n <lx-drag-and-drop-list-item\n class=\"dragAndDropItem\"\n [item]=\"itemComponent.item\"\n [draggable]=\"itemComponent.draggable\"\n [actions]=\"itemComponent.actions\"\n (action)=\"emitContentChildAction($event)\"\n >\n <ng-template *ngIf=\"itemComponent.customTemplateRef\" #customTemplate>\n <ng-container *ngTemplateOutlet=\"itemComponent.customTemplateRef\" />\n </ng-template>\n </lx-drag-and-drop-list-item>\n </li>\n</ul>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DragAndDropListItemComponent } from './drag-and-drop-list-item/drag-and-drop-list-item.component';\nimport { DragAndDropListComponent } from './drag-and-drop-list.component';\nimport { KeyboardSortableItemDirective } from './keyboard-sortable-item/keyboard-sortable-item.directive';\nimport { KeyboardSortableListDirective } from './keyboard-sortable-list/keyboard-sortable-list.directive';\n\n@NgModule({\n imports: [\n CommonModule,\n DragDropModule,\n TranslateModule.forChild(),\n KeyboardSortableItemDirective,\n KeyboardSortableListDirective,\n DragAndDropListComponent,\n DragAndDropListItemComponent\n ],\n exports: [DragAndDropListComponent, DragAndDropListItemComponent]\n})\nexport class LxDragAndDropListModule {}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, signal, viewChild } from '@angular/core';\n\n@Component({\n selector: 'lx-error-message',\n templateUrl: './error-message.component.html',\n styleUrls: ['./error-message.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class ErrorMessageComponent {\n public readonly dynamicErrorMessage = signal('');\n private readonly wrapper = viewChild.required<ElementRef<HTMLSpanElement>>('contentWrapper');\n protected computedErrorMessage = computed(() => this.dynamicErrorMessage() || this.wrapper().nativeElement.innerText);\n}\n","<span #contentWrapper hidden>\n <ng-content />\n</span>\n\n@if (computedErrorMessage()) {\n <div class=\"error\">\n {{ computedErrorMessage() }}\n </div>\n}\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\n@Component({\n selector: 'lx-expanded-dropdown',\n templateUrl: 'expanded-dropdown.component.html',\n styleUrls: ['expanded-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgFor, SelectableItemDirective, NgTemplateOutlet, AsyncPipe, TranslateModule]\n})\nexport class ExpandedDropdownComponent extends KeyboardSelectDirective implements AfterViewInit {\n readonly NAME = 'BasicDropdownComponent';\n\n @Input() options: any[] = [];\n\n @Output() onChooseItem = new EventEmitter<string>();\n}\n","<ul role=\"listbox\" class=\"options lxThinScrollbar\" #keyboardSelectContainer>\n <li *ngIf=\"options?.length === 0\" tabindex=\"-1\" id=\"noOption\" class=\"option noOptionsAvailable\">\n {{ NAME + '.noResults' | translate }}\n </li>\n <li\n *ngFor=\"let option of options; let index = index\"\n tabindex=\"-1\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option keyboardSelectable\"\n (click)=\"onChooseItem.emit(option.id)\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n role=\"option\"\n [attr.aria-selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container>\n <ng-container *ngTemplateOutlet=\"simpleStringDisplay; context: { $implicit: option, index: index }\" />\n </ng-container>\n <ng-template #simpleStringDisplay>\n <span [title]=\"option.name\">\n {{ option.name }}\n </span>\n </ng-template>\n <div class=\"iconContainer\">\n <svg\n width=\"32px\"\n height=\"32px\"\n viewBox=\"0 0 32 32\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n >\n <g id=\"choose-workspace-D\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"choose-a-workspace-D\" transform=\"translate(-911.000000, -429.000000)\">\n <g id=\"Group-3\" transform=\"translate(471.000000, 249.000000)\">\n <g id=\"Button/Text/Primary/Medium\" transform=\"translate(440.000000, 180.000000)\">\n <g id=\"UI/Shape/Rectangle-rounded-2px\" fill=\"#0070f2\">\n <circle id=\"🎨-Style\" cx=\"16\" cy=\"16\" r=\"16\" />\n </g>\n <g id=\"Icons/basic/refresh\" transform=\"translate(7.000000, 11.000000)\" fill=\"#FFFFFF\" fill-rule=\"nonzero\">\n <g id=\"arrow-right\" transform=\"translate(3.772240, 0.000000)\">\n <path\n d=\"M5.41769476,0.0873198725 L4.92588162,0.579133017 C4.80947996,0.695534673 4.80947996,0.88427129 4.92588162,1.00069779 L8.77935771,4.85414904 L0.298083627,4.85414904 C0.133466944,4.85414904 0,4.98761598 0,5.15223266 L0,5.84776113 C0,6.01237781 0.133466944,6.14584475 0.298083627,6.14584475 L8.77935771,6.14584475 L4.92588162,9.99932084 C4.80947996,10.1157225 4.80947996,10.3044591 4.92588162,10.4208856 L5.41769476,10.9126988 C5.53409642,11.0291004 5.72283304,11.0291004 5.83925953,10.9126988 L11.0411666,5.7107917 C11.1575682,5.59439004 11.1575682,5.40565343 11.0411666,5.28922693 L5.83923469,0.0873198725 C5.72283304,-0.0291066242 5.53409642,-0.0291066242 5.41769476,0.0873198725 Z\"\n id=\"Path\"\n />\n </g>\n </g>\n </g>\n </g>\n </g>\n </g>\n </svg>\n </div>\n </li>\n</ul>\n","import { NgFor } from '@angular/common';\nimport { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'lx-form-error',\n templateUrl: 'form-error.component.html',\n styleUrls: ['form-error.component.scss'],\n standalone: true,\n imports: [NgFor, TranslateModule]\n})\nexport class FormErrorComponent implements OnInit, OnChanges, OnDestroy {\n @Input() public namespace!: string;\n @Input() public form!: UntypedFormGroup;\n @Input() public controlName!: string;\n\n /** @internal */\n translationKeys: string[] = [];\n private formSubscription!: Subscription;\n\n ngOnInit() {\n this.formSubscription = this.form.valueChanges.subscribe(() => {\n this.translationKeys = this.getTranslationKeys();\n });\n }\n\n ngOnChanges(_changes: SimpleChanges) {\n this.translationKeys = this.getTranslationKeys();\n }\n\n ngOnDestroy() {\n if (this.formSubscription) this.formSubscription.unsubscribe();\n }\n\n /** @internal */\n getTranslationKeys() {\n const formControl = this.form.get(this.controlName);\n if (formControl && formControl.errors) {\n return Object.keys(formControl.errors).map((errorKey) => `${this.namespace}.errors.${this.controlName}.${errorKey}`);\n }\n return [];\n }\n}\n","<div class=\"error\" *ngFor=\"let key of translationKeys\">\n {{ key | translate }}\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n/**\n * fas is solid,\n * far is regular,\n * fal is light\n */\ntype FontAwesomeIconStyle = 'fas' | 'far' | 'fal';\n\n/**\n * @ignore\n * Displays Font Awesome icons.\n */\n@Component({\n selector: 'lx-icon',\n templateUrl: 'icon.component.html',\n styleUrls: ['icon.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class IconComponent implements OnChanges {\n readonly NAME = 'IconComponent';\n\n /**\n * The name of the icon is the part that comes after the \"fa-\" in the CSS class.\n */\n @Input() name!: string;\n @Input() color: string = '#000';\n @Input() fontAwsomeStyle: 'solid' | 'regular' | 'light' = 'regular';\n @Input() @HostBinding('style.height') size: string = '14px';\n @Input() title?: string;\n\n private iconStyleMap = <const>{\n solid: 'fas',\n regular: 'far',\n light: 'fal'\n };\n\n iconStyle: FontAwesomeIconStyle = 'far';\n\n ngOnChanges(changes: SimpleChanges) {\n if ('fontAwsomeStyle' in changes) {\n this.iconStyle = this.iconStyleMap[this.fontAwsomeStyle];\n }\n }\n}\n","<i [attr.title]=\"title\" [class]=\"iconStyle + ' fa-' + name\" [style.color]=\"color\" [style.fontSize]=\"size\"></i>\n","import { Component, HostBinding, Input, OnDestroy, OnInit, Optional } from '@angular/core';\nimport { NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { startWith, takeUntil } from 'rxjs/operators';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[lx-input]',\n styleUrls: ['input.component.scss'],\n template: ``,\n standalone: true,\n imports: [ReactiveFormsModule]\n})\nexport class InputComponent implements OnInit, OnDestroy {\n @Input() @HostBinding('class.error') error = false;\n @Input() @HostBinding('class.disabled') disabled = false;\n\n private destroyed$ = new Subject<void>();\n\n constructor(@Optional() public ngControl?: NgControl) {}\n\n ngOnInit() {\n if (!this.ngControl) return;\n\n this.ngControl.statusChanges?.pipe(startWith(null), takeUntil(this.destroyed$)).subscribe(() => this.updateStatus());\n }\n\n private updateStatus() {\n const isInvalid = this.ngControl?.invalid;\n const isTouched = this.ngControl?.touched;\n const isDirty = this.ngControl?.dirty;\n\n this.error = !!(isInvalid && (isTouched || isDirty));\n this.disabled = !!this.ngControl?.disabled;\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with single or multi-selects.\n * It allows to mark a ng-template as the dropdown for those components.\n * The ng-template will be instantiated and \"projected\" whenever the dropdown is\n * opened. This has the advantage over content projection via ng-content, as it will\n * defer the initialization and rendering of the dropdown contents until the dropdown\n * is actually opened.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectDropdown>\n * <lx-basic-dropdown></lx-basic-dropdown>\n * </ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectDropdown]',\n standalone: true\n})\nexport class SelectDropdownDirective {}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction, KeyboardSelectDirective } from '../components/keyboard-select.directive';\n\nexport interface EventSet {\n event: KeyboardEvent;\n inputCursorPosition: number | undefined;\n virtualCursorPosition: number;\n selectionLength?: number;\n}\n\n@Directive()\nexport abstract class BaseSelectDirective implements AfterViewInit, OnChanges, OnDestroy {\n @Input() placeholder?: string;\n @Input() disabled: boolean = false;\n @Input() focusOnInit: boolean = false;\n @Input() dropdownMaxHeight: number = 250;\n @Input() allowQuery: boolean = true;\n\n @Output() query = new EventEmitter<string>();\n @Output() close = new EventEmitter<void>();\n @Output() open = new EventEmitter<boolean>();\n\n /** @internal */\n @ViewChild('optionsContainer', { static: true }) optionsContainer!: ElementRef<HTMLElement>;\n /** @internal */\n @ContentChild(KeyboardSelectDirective, { static: false, descendants: true }) dropdownBase!: KeyboardSelectDirective;\n\n abstract selection?: any;\n abstract selectionChange: EventEmitter<any>;\n\n /** @internal */\n public readonly query$ = this.query.asObservable();\n /** @internal */\n public readonly dropdownDirection$ = new BehaviorSubject<'TOP' | 'BOTTOM'>('BOTTOM');\n /** @internal */\n public dropdownOpen = false;\n\n /** @internal */\n public activeElement!: Element;\n // an axis, where the negative range represents the selected item in the selection\n /** @internal */\n public readonly selectionKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n /** @internal */\n public readonly optionsKeyboardSelectAction$ = new Subject<KeyboardSelectAction | null>();\n /** @internal */\n public virtualCursorPosition: number = 0;\n\n /** @internal */\n public inputWasFocused: boolean = false;\n\n /** @internal */\n public readonly queryControl = new UntypedFormControl('');\n\n /** @internal */\n public isInputFocused: boolean = false;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n abstract resetInput(): void;\n\n /** @internal */\n abstract focus(): void;\n\n ngAfterViewInit() {\n this.queryControl.valueChanges\n .pipe(\n filter(() => this.allowQuery),\n takeUntil(this.destroyed$)\n )\n .subscribe((value) => {\n if (value && value.length > 0) {\n this.open.next(true);\n }\n this.query.emit(value);\n this.selectFirstOption();\n });\n\n this.open\n .pipe(\n filter(() => !this.disabled),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((isOpen) => {\n this.dropdownOpen = isOpen;\n if (isOpen) {\n this.setOpenDirection();\n } else {\n this.resetSelectState();\n this.close.emit();\n }\n\n if (this.dropdownBase) {\n this.notifyDropdownBase(isOpen);\n } else {\n // dropdown may be hidden with *ngIf, so we might need to wait for it to be rendered\n setTimeout(() => this.notifyDropdownBase(isOpen));\n }\n });\n\n if (this.focusOnInit) {\n setTimeout(() => this.focus());\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if ('disabled' in changes) {\n if (this.disabled) {\n this.queryControl.disable();\n } else {\n this.queryControl.enable();\n }\n }\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /**\n * @param toggle is true when the caret to the right in a select component was clicked\n * @internal\n */\n public handleClick(toggle: boolean) {\n if (toggle || !this.dropdownOpen || !this.allowQuery) {\n this.open.next(!this.dropdownOpen);\n }\n this.focus();\n }\n\n /** @internal */\n public handleBackdropClick(event: MouseEvent) {\n event.stopPropagation();\n this.closeInput();\n }\n\n /** @internal */\n public closeInput() {\n this.open.next(false);\n this.resetInput();\n this.query.emit('');\n }\n\n /** @internal */\n public openInput() {\n this.open.next(true);\n }\n\n protected setOpenDirection() {\n const dropdownRect = this.optionsContainer.nativeElement.getBoundingClientRect();\n const spaceAtTheBottom = document.documentElement.clientHeight - dropdownRect.top - dropdownRect.height - this.dropdownMaxHeight;\n const spaceAtTheTop = dropdownRect.top - this.dropdownMaxHeight;\n const isTop = spaceAtTheBottom < 0 && spaceAtTheTop > spaceAtTheBottom;\n\n this.dropdownDirection$.next(isTop ? 'TOP' : 'BOTTOM');\n }\n\n protected resetSelectState() {\n this.virtualCursorPosition = 0;\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.resetInput();\n this.query.emit('');\n }\n\n protected mapToEventSet(\n event: KeyboardEvent,\n input: HTMLInputElement,\n virtualCursorPosition: number,\n selectionLength?: number\n ): EventSet {\n return {\n event,\n inputCursorPosition: this.doGetCaretPosition(input),\n virtualCursorPosition,\n selectionLength\n };\n }\n\n /*\n * Returns the caret (cursor) position of the specified text field.\n * Return value range is 0-oField.value.length.\n * https://stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field\n */\n protected doGetCaretPosition(oField: any) {\n let iCaretPos = 0;\n if (oField.selectionStart || parseInt(oField.selectionStart, 10) === 0) {\n // Check when range selection using null we prevent deleting on\n iCaretPos = oField.selectionStart === oField.selectionEnd ? oField.selectionStart : null;\n }\n return iCaretPos;\n }\n\n protected selectFirstOption() {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.FIRST);\n }\n\n /*\n * Sets the dropdown open/closed state, used for overlay dropdowns\n * */\n private notifyDropdownBase(isOpen: boolean) {\n if (this.dropdownBase && this.dropdownBase.overlayPositioning && this.dropdownBase.cdkOverlayOpenState) {\n this.dropdownBase.cdkOverlayOpenState.next(isOpen);\n }\n }\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnDestroy,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule, UntypedFormControl } from '@angular/forms';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'lx-responsive-input',\n templateUrl: 'responsive-input.component.html',\n styleUrls: ['responsive-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ResponsiveInputComponent)\n }\n ],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class ResponsiveInputComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @Input() inputId?: string;\n @Output() focus = new EventEmitter<void>();\n @Output() focusViaTab = new EventEmitter<void>();\n @Output() blur = new EventEmitter<void>();\n @ViewChild('responsiveInput', { static: true }) responsiveInput!: ElementRef<HTMLInputElement>;\n @ViewChild('inputWidth', { static: true }) inputWidth!: ElementRef<HTMLSpanElement>;\n\n readonly inputWidth$ = new BehaviorSubject<string>('1px');\n readonly inputControl = new UntypedFormControl();\n readonly destroyed$ = new Subject<void>();\n\n value: any;\n\n ngAfterViewInit() {\n this.inputControl.valueChanges.pipe(takeUntil(this.destroyed$)).subscribe((value) => {\n this.propagateChange(value);\n try {\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, value) + 1 + 'px';\n this.inputWidth$.next(width);\n } catch (_e) {\n /* empty catch */\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n public focusInput() {\n this.responsiveInput.nativeElement.focus();\n }\n\n resetInput() {\n if (this.inputControl.value?.length > 0) {\n this.inputControl.reset('', { emitEvent: false });\n const width = this.computeSearchInputWidth(this.inputWidth.nativeElement, ' ') + 1 + 'px';\n this.inputWidth$.next(width);\n }\n }\n\n /**\n * Based on https://github.com/Semantic-Org/Semantic-UI-React/\n * blob/25e382e40bb3102bb39944612643c0289cd1956b/src/modules/Dropdown/Dropdown.js#L1035\n */\n private computeSearchInputWidth(sizerRef: HTMLSpanElement, searchQuery: string): number {\n if (sizerRef && searchQuery) {\n sizerRef.style.display = 'inline-block';\n sizerRef.textContent = searchQuery;\n const searchWidth = Math.ceil(sizerRef.getBoundingClientRect().width);\n sizerRef.style.removeProperty('display');\n return searchWidth;\n }\n return 0;\n }\n\n //#region Angular Forms\n propagateChange(_value: any) {}\n\n writeValue(newValue: any) {\n if (newValue) {\n this.value = newValue;\n this.propagateChange(this.value);\n }\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(_fn: any) {}\n //#endregion\n}\n","<span #inputWidth class=\"inputWidth\"></span>\n<input\n type=\"text\"\n class=\"responsiveInput\"\n (focus)=\"focus.emit()\"\n (blur)=\"blur.emit()\"\n (keyup.tab)=\"focusViaTab.emit()\"\n (keyup.shift.tab)=\"focusViaTab.emit()\"\n [formControl]=\"inputControl\"\n [attr.id]=\"inputId\"\n #responsiveInput\n [style.width]=\"inputWidth$ | async\"\n/>\n","import { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, Output, TemplateRef, input } from '@angular/core';\nimport { TokenComponent } from '../../../../core-ui/components/tokenizer/token/token.component';\nimport { TokenizerComponent } from '../../../../core-ui/components/tokenizer/tokenizer.component';\nimport { SelectableItemDirective } from '../../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../../keyboard-select.directive';\n\n@Component({\n selector: 'lx-multi-select-selection',\n standalone: true,\n imports: [AsyncPipe, NgTemplateOutlet, SelectableItemDirective, TokenizerComponent, TokenComponent],\n templateUrl: './multi-select-selection.component.html',\n styleUrls: ['./multi-select-selection.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiSelectSelectionComponent extends KeyboardSelectDirective {\n selection = input<any[] | null>();\n tokenize = input(true);\n\n @Output() removeItem = new EventEmitter<unknown>();\n\n @ContentChild('innerSelectionTemplate', { read: TemplateRef, static: true }) selectionTemplate: TemplateRef<any> | null = null;\n}\n","<ul>\n <lx-tokenizer [active]=\"tokenize()\">\n @for (selectedItem of selection(); track $index) {\n <lx-token>\n <li\n lxSelectableItem\n #item\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n (select)=\"removeItem.emit(selectedItem)\"\n >\n <ng-container *ngTemplateOutlet=\"selectionTemplate; context: { $implicit: selectedItem }\" />\n </li>\n </lx-token>\n }\n </lx-tokenizer>\n</ul>\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { filter as _filter, findIndex, includes, last } from 'lodash/fp';\nimport { Subject, fromEvent as observableFromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP, BACKSPACE, ENTER, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { BaseSelectDirective, EventSet } from '../../models/base-select.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { ResponsiveInputComponent } from '../responsive-input/responsive-input.component';\nimport { MultiSelectSelectionComponent } from './multi-select-selection/multi-select-selection.component';\n\nexport type MultiSelectSize = 'default' | 'small' | 'large' | 'select2';\n\nexport type MultiSelectRemoveItemEvent = {\n item: any;\n /**\n * Is true when the item was not removed by pressing backspace on the keyboard rather than clicking the 'x'.\n */\n isMouse: boolean;\n};\n\n@Component({\n selector: 'lx-multi-select',\n templateUrl: 'multi-select.component.html',\n styleUrls: ['multi-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MultiSelectComponent),\n multi: true\n }\n ],\n standalone: true,\n imports: [\n NgIf,\n MarkInvalidDirective,\n MultiSelectSelectionComponent,\n ResponsiveInputComponent,\n FormsModule,\n ReactiveFormsModule,\n NgTemplateOutlet,\n AsyncPipe\n ]\n})\nexport class MultiSelectComponent extends BaseSelectDirective implements AfterViewInit, ControlValueAccessor {\n /** @internal */\n public static isStillPossibleMoveToLeft(eventSet: EventSet): boolean {\n return (\n !(\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === ARROW_LEFT &&\n eventSet.selectionLength === 0\n ) &&\n !(\n eventSet.event.keyCode === ARROW_LEFT &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0 &&\n Math.abs(eventSet.virtualCursorPosition) === eventSet.selectionLength\n )\n );\n }\n\n /** @internal */\n public static isMovingfromZeroToRight(eventSet: EventSet) {\n return eventSet.virtualCursorPosition === 0 && eventSet.inputCursorPosition === 0 && eventSet.event.keyCode === ARROW_RIGHT;\n }\n\n /** @internal */\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n /** @internal */\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() markInvalid: boolean = false;\n @Input() selection?: any[] | null = [];\n @Input() size: MultiSelectSize = 'default';\n @Input() inputId?: string;\n\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() blur = new EventEmitter<void>();\n\n /** @internal */\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n /** @internal */\n @ContentChild('selectionTemplate', { read: TemplateRef, static: true }) selectionTemplate?: TemplateRef<any>;\n\n /** @internal */\n @ViewChild(ResponsiveInputComponent, { static: false }) queryInput!: ResponsiveInputComponent;\n /** @internal */\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n /** @internal */\n @ViewChild(MultiSelectSelectionComponent, { read: ElementRef }) selectionElement?: ElementRef<HTMLElement>;\n\n /** @internal */\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n /** @internal */\n override readonly destroyed$ = new Subject<void>();\n /** @internal */\n isInputFocusedViaTab = false;\n /** @internal */\n canTokenize = true;\n /** @internal */\n get tokenize() {\n return this.canTokenize && !this.isInputFocused && !this.dropdownOpen;\n }\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n /** @internal */\n resetInput() {\n this.queryInput.resetInput();\n this.queryControl.setValue('');\n }\n\n /** @internal */\n focus() {\n this.queryInput.focusInput();\n }\n\n /** @internal */\n focusAndOpen() {\n this.queryInput.focusInput();\n this.open.next(true);\n }\n\n /** @internal */\n onFocus() {\n this.isInputFocused = true;\n this.scrollToEndOfSelection();\n this.canTokenize = false;\n }\n\n /** @internal */\n onBlur() {\n this.isInputFocused = false;\n this.isInputFocusedViaTab = false;\n this.blur.emit();\n this.canTokenize = true;\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.selectFirstOption();\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.responsiveInput.nativeElement;\n\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n\n // handle keyboard navigation for the selection\n observableFromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) =>\n this.mapToEventSet(\n event,\n this.queryInput.responsiveInput.nativeElement,\n this.virtualCursorPosition,\n this.selection ? this.selection.length : 0\n )\n ),\n filter((eventSet) => {\n return !MultiSelectComponent.isMovingfromZeroToRight(eventSet) && MultiSelectComponent.isStillPossibleMoveToLeft(eventSet);\n }),\n tap((eventSet) => {\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n typeof eventSet.selectionLength === 'number' &&\n eventSet.selectionLength > 0\n ) {\n const lastItem = last(this.selection);\n this.removeItem({ item: lastItem, isMouse: false });\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = MultiSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = MultiSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const inputKeyboardEvents$ = observableFromEvent<KeyboardEvent>(sourceElement, 'keydown');\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n event.preventDefault();\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.optionsKeyboardSelectAction$);\n\n inputKeyboardEvents$\n .pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_DOWN])),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.open.next(true));\n }\n\n /**\n * Adds the given option to the selection and, by default, resets the input field.\n * @param option The option to add to the selection.\n * @param keepSearchQueryAndScrollPosition If true, the search query and scroll position of the dropdown will be kept, unless there are no options left.\n * @internal\n */\n addItemToSelection(option: any, keepSearchQueryAndScrollPosition = false) {\n if (option !== null) {\n this.selection = [...(this.selection || [])].concat(option);\n this.onSelectionChange();\n }\n\n const filteredOptionsInDropdownBeforeSelection = this.dropdownBase?._items.length ?? 0;\n if (keepSearchQueryAndScrollPosition && filteredOptionsInDropdownBeforeSelection > 1) {\n return;\n }\n\n this.resetSelectState();\n }\n\n /** @internal */\n removeItem(optionToRemove: MultiSelectRemoveItemEvent) {\n if (this.disabled) {\n return;\n }\n const prevOptionIndex = findIndex((option) => option === optionToRemove.item, this.selection);\n const prevSelectionLenght = this.selection?.length ?? 0;\n this.selection = _filter((option) => option !== optionToRemove.item, this.selection);\n this.cd.markForCheck();\n this.cd.detectChanges();\n this.onSelectionChange();\n\n if (prevOptionIndex === prevSelectionLenght - 1 || optionToRemove.isMouse) {\n this.resetSelectState();\n } else {\n this.virtualCursorPosition++;\n }\n }\n\n /** @internal */\n propagateChange(_value: any[]) {}\n\n /** @internal */\n writeValue(value: any[]) {\n this.selection = value;\n }\n\n /** @internal */\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /** @internal */\n registerOnTouched(_fn: any) {}\n\n /** @internal */\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n /** @internal */\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n\n private onSelectionChange() {\n if (this.isInputFocused) {\n this.scrollToEndOfSelection();\n }\n\n const selection = this.selection || [];\n this.selectionChange.emit([...selection]);\n this.propagateChange([...selection]);\n }\n\n private scrollToEndOfSelection() {\n setTimeout(() => {\n if (this.selectionElement) {\n this.selectionElement.nativeElement.scrollLeft = this.selectionElement.nativeElement.scrollWidth;\n }\n }, 0);\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.focused]=\"isInputFocused\"\n [class.tokenized]=\"tokenize\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n [class.hasSelection]=\"selection && selection.length > 0\"\n [class.smallSize]=\"size === 'small'\"\n [class.disabled]=\"disabled\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectedChoicesContainer\">\n <div *ngIf=\"(selection?.length === 0 || !selection) && !queryControl?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n @if (selectionTemplate) {\n <div class=\"selectionAndInput\">\n <lx-multi-select-selection\n [selection]=\"selection\"\n [tokenize]=\"tokenize\"\n [keyboardSelectAction]=\"selectionKeyboardSelectAction$\"\n (removeItem)=\"removeItem({ item: $event, isMouse: false })\"\n >\n <ng-template #innerSelectionTemplate let-option>\n <ng-container *ngTemplateOutlet=\"selectionTemplate; context: { $implicit: option }\" />\n </ng-template>\n </lx-multi-select-selection>\n <lx-responsive-input\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (focusViaTab)=\"focusedViaTab()\"\n [formControl]=\"queryControl\"\n [inputId]=\"inputId\"\n (keydown.enter)=\"$event.preventDefault()\"\n />\n </div>\n } @else {\n <div class=\"selection\">\n <ng-content select=\".pills\" />\n </div>\n <lx-responsive-input\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n (focusViaTab)=\"focusedViaTab()\"\n [formControl]=\"queryControl\"\n [inputId]=\"inputId\"\n (keydown.enter)=\"$event.preventDefault()\"\n />\n }\n <i #toggle [hidden]=\"disabled\" class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\" />\n </ng-container>\n </div>\n</div>\n\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\" />\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n EventEmitter,\n Input,\n Output,\n TemplateRef,\n ViewChild,\n forwardRef\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { CounterComponent } from '../../../core-ui/components/counter/counter.component';\nimport { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { BasicDropdownItemComponent } from '../basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\n\nexport type OptionGroupOption = { value: string; label: string };\n/**\n * TODO: rename to something unspecific for single selects because multiselects are also supported\n */\nexport type SingleSelectOptionGroup<T = any> = {\n label: string;\n options: (OptionGroupOption | T)[];\n};\n\n/**\n * Usage:\n *\n * ```\n * <lx-single-select\n * #singleSelect\n * [selection]=\"value\"\n * (selectionChange)=\"onSelectionChange($event)\">\n * <span class=\"selectedOption\">\n * {{ value.label }}\n * </span>\n * <lx-option-group-dropdown\n * class=\"dropdownComponent\"\n * [keyboardSelectAction]=\"singleSelect.optionsKeyboardSelectAction$\"\n * [optionGroups]=\"optionGroups\"\n * (onItemSelected)=\"singleSelect.selectOption($event)\">\n * </lx-option-group-dropdown>\n * </lx-single-select>\n * ```\n */\n@Component({\n selector: 'lx-option-group-dropdown',\n templateUrl: 'option-group-dropdown.component.html',\n styleUrls: ['option-group-dropdown.component.scss'],\n providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => OptionGroupDropdownComponent) }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n NgIf,\n CdkOverlayOrigin,\n CdkConnectedOverlay,\n NgClass,\n NgTemplateOutlet,\n InfiniteScrollModule,\n SelectableItemDirective,\n CounterComponent,\n NgFor,\n BasicDropdownItemComponent,\n SpinnerComponent,\n AsyncPipe,\n UpperCasePipe,\n TranslateModule\n ]\n})\nexport class OptionGroupDropdownComponent extends KeyboardSelectDirective {\n /** @internal */\n readonly NAME = 'OptionGroupDropdownComponent';\n @Input() optionGroups: SingleSelectOptionGroup[] = [];\n /**\n * Usually a stream of the current input value of the parent select.\n */\n @Input() newOptionLabel?: string;\n @Input() highlightTerm?: string;\n @Input() showCreateNewOption: boolean = false;\n @Input() labelKey: string = 'label';\n @Input() loading: boolean = false;\n @Input() trackByProperty?: string;\n @Input() showNoResultsIfGroupIsEmpty: boolean = false;\n @Input() override overlayPositioning: boolean = false;\n\n @Output() onItemSelected = new EventEmitter<OptionGroupOption | any>();\n @Output() containerScrolled = new EventEmitter();\n @Output() createNewOption = new EventEmitter<string>();\n\n /** @internal */\n @ContentChild('optionTemplate') optionTemplateRef?: TemplateRef<any>;\n /**\n * If you provide a <ng-template #noResultsOptionTemplateRef></ng-template> inside the <lx-option-group-dropdown>\n * it will be used to display the \"no results\" option instead of the default \"No results\" text.\n * This way you can easily define different \"No results\" texts for different groups too.\n * @internal\n */\n @ContentChild('noResultsOptionTemplateRef') noResultsOptionTemplateRef?: TemplateRef<any>;\n /** @internal */\n @ViewChild('selectOrigin', { static: false }) selectOrigin!: CdkOverlayOrigin;\n /** @internal */\n isTopDropdown = false;\n\n /** @internal */\n public get isNewItem() {\n const options =\n this.optionGroups?.reduce<(OptionGroupOption | any)[]>((flatOptions, optionGroup) => flatOptions.concat(optionGroup.options), []) ??\n [];\n return BasicDropdownComponent.isNewItem(options, this.newOptionLabel ?? '', this.labelKey);\n }\n\n /** @internal */\n selectOption(option: OptionGroupOption | any) {\n this.onItemSelected.emit(option);\n }\n\n /** @internal */\n trackByLabel(index: number, optionGroup: SingleSelectOptionGroup) {\n return optionGroup.label + index;\n }\n\n /** @internal */\n public onCreateNewOption() {\n if (!this.loading && this.newOptionLabel) {\n this.createNewOption.emit(this.newOptionLabel);\n }\n }\n\n /** @internal */\n trackByValue(_index: number, option: OptionGroupOption | any) {\n if (this.trackByProperty) {\n return option[this.trackByProperty];\n }\n return option.value;\n }\n\n /** @internal */\n onPositionChange(event: ConnectedOverlayPositionChange) {\n this.isTopDropdown = event.connectionPair.originY === 'top';\n }\n}\n","<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\" />\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-counter class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\" />\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\" />\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n />\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item [label]=\"option.label\" labelFontWeight=\"normal\" [highlightTerm]=\"highlightTerm\" />\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\" />\n </ul>\n </div>\n</ng-template>\n","import { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, ScrollStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n OnDestroy,\n Output,\n QueryList,\n Renderer2\n} from '@angular/core';\nimport { pick, uniqueId } from 'lodash-es';\nimport { BehaviorSubject, Subject, combineLatest, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, takeUntil, withLatestFrom } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-dropdown',\n templateUrl: 'options-dropdown.component.html',\n styleUrls: ['options-dropdown.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, NgTemplateOutlet, NgClass, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective]\n})\nexport class OptionsDropdownComponent implements AfterViewInit, OnDestroy {\n /** @internal */\n readonly NAME = 'OptionsDropdownComponent';\n\n @Input() align: 'right' | 'left' = 'right';\n @Input() closeOnScroll: boolean = false;\n @Input() disabled: boolean = false;\n @Input() maxHeight: string = 'none';\n @Input() closeOnSelect: boolean = true;\n @Input() overlayPositioning: boolean = false;\n @Input() dropdownClass: string = '';\n @Input() isFlexEnabledTriggerContainer: boolean = false;\n /** @internal */\n @ContentChild(KeyboardActionSourceDirective) trigger!: KeyboardActionSourceDirective;\n /** @internal */\n @ContentChildren(OptionComponent, { descendants: true })\n /** @internal */\n _options!: QueryList<OptionComponent>;\n /** @internal */\n overlayScrollStrategy: ScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();\n\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n @Output() closedWithoutSelection = new EventEmitter<void>();\n\n /** @internal */\n @HostBinding('style.display')\n get displayStyle() {\n return this.isFlexEnabledTriggerContainer ? 'block' : 'inline-block';\n }\n\n /** @internal */\n get overlayPositions(): ConnectedPosition[] {\n return [\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'bottom',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'top'\n },\n {\n originX: this.align === 'right' ? 'start' : 'end',\n originY: 'top',\n overlayX: this.align === 'right' ? 'start' : 'end',\n overlayY: 'bottom'\n }\n ];\n }\n\n /** @internal */\n set open(value) {\n if (this.disabled) {\n return;\n }\n\n this._open = value;\n if (this.lxButton) {\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', this._open.toString());\n }\n\n if (this.trigger) {\n // Don't emit keyboard actions while the dropdown is not open yet.\n this.trigger.dontEmit = !this.open;\n }\n if (this.open) {\n this.isSubdropdownExpanded = false;\n this.setInitialHighlightingIndex();\n this.opened.emit();\n }\n this.changeDetection.markForCheck();\n }\n\n /** @internal */\n get open() {\n return this._open;\n }\n\n /** @internal */\n get options(): OptionComponent[] {\n return this._options?.toArray() || [];\n }\n\n /** @internal */\n get optionIds(): string[] {\n return this.options.map((o) => o.optionId);\n }\n\n /** @internal */\n get lxButton(): HTMLElement {\n return this.trigger?.nativeElement();\n }\n\n private readonly highlightedOptionIndex$ = new BehaviorSubject<number>(0);\n private _open = false;\n private isSubdropdownExpanded = false;\n /** @internal */\n readonly listboxId: string;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private changeDetection: ChangeDetectorRef,\n private readonly scrollStrategies: ScrollStrategyOptions,\n private renderer: Renderer2\n ) {\n this.listboxId = uniqueId('listbox');\n }\n\n ngAfterViewInit() {\n this.trigger.dontEmit = !this.open;\n\n const optionsChanges$ = this._options.changes.pipe(\n startWith(this._options),\n map((options: QueryList<OptionComponent>) => options.toArray())\n );\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.NEXT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.next(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.PREV),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) => this.prev(index, options)),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.FIRST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => 0),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LAST),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, _index, _options) => this.options.length - 1),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.LEFT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.RIGHT),\n withLatestFrom(this.highlightedOptionIndex$, optionsChanges$, (_, index, options) =>\n this.isSubdropdownExpanded ? this.collapse(index, options) : this.expand(index, options)\n ),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.highlightedOptionIndex$);\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n this.closeDropdown();\n this.closedWithoutSelection.emit();\n this.lxButton?.focus();\n });\n\n this.trigger.keyboardActions$\n .pipe(\n filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.EXECUTE),\n withLatestFrom(this.highlightedOptionIndex$, (_, index) => index),\n takeUntil(this.destroyed$)\n )\n .subscribe((index) => {\n this.options[index]?.selectOption();\n this.lxButton?.focus();\n });\n\n /** Combined stream of all of the child options' select outputs. */\n this._options.changes\n .pipe(\n startWith(this._options),\n filter(() => this.closeOnSelect),\n switchMap(() => merge(...this._options.map((option) => option.select), ...this._options.map((option) => option.selectedClick))),\n delay(0),\n takeUntil(this.destroyed$)\n )\n .subscribe((_value) => {\n this.closeDropdown();\n });\n\n this._options.changes\n .pipe(\n startWith(this._options),\n switchMap(() => merge(...this._options.map((option) => option.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleOptionKeyDown(event);\n });\n\n combineLatest([optionsChanges$, this.highlightedOptionIndex$])\n .pipe(\n delay(0),\n map(([options, index]: [OptionComponent[], number]) => options[index]),\n distinctUntilChanged(),\n takeUntil(this.destroyed$)\n )\n .subscribe((optionToBeHighlighted) => {\n this.options.forEach((option) => option.setHighlighted(optionToBeHighlighted === option));\n this.changeDetection.markForCheck();\n });\n\n if (this.closeOnScroll) {\n fromEvent(window, 'scroll')\n .pipe(debounceTime(100), takeUntil(this.destroyed$))\n .subscribe(() => {\n this.open = false;\n this.trigger.blur();\n });\n }\n\n this.setInitialAccessibilityAttributes();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n /** @internal */\n closeDropdown() {\n this.open = false;\n this.closed.emit();\n }\n\n /** @internal */\n toggleOpen() {\n this.open = !this.open;\n if (!this.open) {\n this.closed.emit();\n this.closedWithoutSelection.emit();\n }\n }\n\n private setInitialHighlightingIndex() {\n let initialIndex = this.options.findIndex((option) => option.selected && this.optionIsHighlightable(option));\n if (initialIndex === -1) {\n initialIndex = this.options.findIndex((option) => this.optionIsHighlightable(option));\n }\n this.highlightedOptionIndex$.next(initialIndex);\n }\n\n private prev(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex > 0) {\n const prevEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).lastIndexOf(false, currentIndex - 1);\n return prevEnabledIndex !== -1 ? prevEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private next(currentIndex: number, items: OptionComponent[]): number {\n if (currentIndex < items.length) {\n const nextEnabledIndex = items.map((option) => !this.optionIsHighlightable(option)).indexOf(false, currentIndex + 1);\n return nextEnabledIndex !== -1 ? nextEnabledIndex : currentIndex;\n } else {\n return currentIndex;\n }\n }\n\n private expand(currentIndex: number, items: OptionComponent[]) {\n if (items[currentIndex]!.hasSubdropdown) {\n this.isSubdropdownExpanded = true;\n return this.next(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private collapse(currentIndex: number, items: OptionComponent[]) {\n if (this.isSubdropdownExpanded) {\n this.isSubdropdownExpanded = false;\n return this.prev(currentIndex, items);\n } else {\n return currentIndex;\n }\n }\n\n private optionIsHighlightable(option: OptionComponent): boolean {\n const isToplevelOptionAndAllowed = !option.isSuboption && !this.isSubdropdownExpanded;\n const isSecondlevelOptionAndAllowed = option.isSuboption && this.isSubdropdownExpanded;\n return !option.disabled && (isToplevelOptionAndAllowed || isSecondlevelOptionAndAllowed);\n }\n\n /**\n * Programmatically sets initial accessibility attributes on the trigger button so that we\n * don't have to do it manually every time we declare a new instance of this component\n */\n private setInitialAccessibilityAttributes(): void {\n if (!this.lxButton) {\n return;\n }\n\n this.renderer.setAttribute(this.lxButton, 'role', 'combobox');\n this.renderer.setAttribute(this.lxButton, 'aria-haspopup', 'listbox');\n this.renderer.setAttribute(this.lxButton, 'tabindex', '0');\n this.renderer.setAttribute(this.lxButton, 'aria-controls', this.listboxId);\n this.renderer.setAttribute(this.lxButton, 'aria-expanded', 'false');\n }\n\n /** @internal */\n handleOptionKeyDown(event: KeyboardEvent): void {\n // In order to keep the centralized keyboard event management logic from `KeyboardActionSourceDirective`\n // we duplicate the option event here and trigger it again from lxButton.\n const newEventOptions = pick(event, [\n 'isTrusted',\n 'altKey',\n 'bubbles',\n 'charCode',\n 'cancelable',\n 'composed',\n 'key',\n 'ctrlKey',\n 'defaultPrevented',\n 'keyCode',\n 'code'\n ]);\n const newEvent = new KeyboardEvent(event.type, newEventOptions);\n\n this.lxButton?.dispatchEvent(newEvent);\n }\n}\n","<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" [ngClass]=\"{ flexDisplay: isFlexEnabledTriggerContainer }\" (click)=\"toggleOpen()\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\" />\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\" />\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\" />\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n (overlayOutsideClick)=\"closeDropdown(); closedWithoutSelection.emit()\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\" />\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\" />\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class]=\"dropdownClass\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content />\n </ul>\n</ng-template>\n","import { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BehaviorSubject, combineLatest, fromEvent, merge, Subject } from 'rxjs';\nimport { debounceTime, delay, map, startWith, switchMap } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { executeOnNextTick } from '../../../shared/misc-helpers';\nimport { OptionComponent } from '../option/option.component';\n\n@Component({\n selector: 'lx-options-sub-dropdown',\n templateUrl: 'options-sub-dropdown.component.html',\n styleUrls: ['options-sub-dropdown.component.scss'],\n standalone: true,\n imports: [AutocloseDirective, AsyncPipe]\n})\nexport class OptionsSubDropdownComponent implements AfterViewInit, OnDestroy {\n @Input() trigger!: OptionComponent;\n @Input() align: 'right' | 'left' = 'right';\n @ContentChildren(OptionComponent, { descendants: true }) options!: QueryList<OptionComponent>;\n\n @HostBinding('class.hidden')\n hidden = true;\n\n private mouseInside$ = new BehaviorSubject<boolean>(false);\n\n readonly destroyed$ = new Subject<void>();\n readonly maxHeight$ = new BehaviorSubject<string>('none');\n\n destroyRef = inject(DestroyRef);\n\n constructor(private changeDetection: ChangeDetectorRef) {}\n\n @HostListener('mouseenter')\n mouseenter() {\n this.mouseInside$.next(true);\n }\n\n @HostListener('mouseleave')\n mouseleave() {\n this.mouseInside$.next(false);\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n ngAfterViewInit() {\n // To avoid `Expression has changed after it was checked`\n executeOnNextTick(() => {\n this.trigger.hasSubdropdown = true;\n });\n\n merge(this.showByKeyboard(), this.showByMouse())\n .pipe(debounceTime(150), takeUntilDestroyed(this.destroyRef))\n .subscribe((show) => {\n this.hidden = !show;\n this.changeDetection.markForCheck();\n if (show) {\n this.updateMaxHeight(this.trigger.elementRef);\n }\n });\n }\n\n private updateMaxHeight(elementRef: ElementRef) {\n const marginBottom = 8;\n const optionTopPosition = elementRef.nativeElement.getBoundingClientRect().top;\n const screenHeight = window.innerHeight;\n const maxHeight = `${screenHeight - optionTopPosition - marginBottom}px`;\n if (this.maxHeight$.getValue() !== maxHeight) {\n this.maxHeight$.next(maxHeight);\n }\n }\n\n private showByKeyboard() {\n const optionChange$ = this.options.changes.pipe(\n startWith(this.options),\n map((options: QueryList<OptionComponent>) => options.toArray()),\n map((options) =>\n options.map((option) => {\n option.isSuboption = true;\n return option;\n })\n )\n );\n\n return combineLatest([this.trigger.highlight.asObservable(), optionChange$]).pipe(\n delay(0), // Need tick delay to get option highlighted and filter it out after\n map(([isHighlighted, options]) => isHighlighted || options.some((option) => option.isHighlighted))\n );\n }\n\n private showByMouse() {\n const mouseEnterTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseenter');\n const mouseLeaveTrigger$ = fromEvent<MouseEvent>(this.trigger.elementRef.nativeElement, 'mouseleave');\n\n const showOnEnterMouse$ = mouseEnterTrigger$.pipe(map(() => true));\n const showOnEnterSubmenu$ = mouseEnterTrigger$.pipe(\n switchMap(() => mouseLeaveTrigger$),\n switchMap(() => this.mouseInside$)\n );\n\n return merge(showOnEnterMouse$, showOnEnterSubmenu$);\n }\n\n closeDropdown() {\n this.hidden = true;\n }\n}\n","<div #spacingContainer class=\"spacingContainer\" [class.left]=\"align === 'left'\">\n <ul\n #subDropdown\n class=\"sub-dropdown\"\n lxAutoclose\n [class.showScrollbar]=\"(maxHeight$ | async) !== 'none'\"\n [style.max-height]=\"(maxHeight$ | async) ?? 'none'\"\n (autoclose)=\"closeDropdown()\"\n >\n <ng-content />\n </ul>\n</div>\n","import { Highlightable } from '@angular/cdk/a11y';\nimport { NgIf } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IconComponent } from '../icon/icon.component';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'li[lx-picker-option]',\n templateUrl: 'picker-option.component.html',\n styleUrls: ['picker-option.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, IconComponent]\n})\nexport class PickerOptionComponent implements Highlightable, OnInit {\n readonly NAME = 'PickerOptionComponent';\n @HostBinding('attr.role') role = 'option';\n @HostBinding('attr.aria-selected') ariaSelected = false;\n @HostBinding('attr.aria-label')\n public get ariaLabelValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('attr.title')\n public get titleValue(): string | undefined {\n if (this.isClearOption) {\n return this.translateService.instant(`${this.NAME}.clearOption.label`);\n }\n return this.ariaLabel;\n }\n @HostBinding('id')\n public get id(): string {\n return this.optionId;\n }\n /**\n * The optionId must be set to a unique value. It's used as value for the id property of an option.\n * As the user navigates through the list via arrow keys, the aria-activedescendant property for the\n * button in the PickerComponent is adjusted to reflect the id attribute of the active option.\n */\n @Input() optionId!: string;\n @Input() ariaLabel?: string;\n @Input() value!: any;\n @HostBinding('class.selected') @Input() selected = false;\n @HostBinding('class.clearOption') @Input() isClearOption = false;\n /**\n * Emits the value.\n */\n @Output() select = new EventEmitter<any>();\n /**\n * This property is true, when the option was selected by mouse click or by the\n * ActiveDescendantKeyManager calling setActiveStyles().\n * It's false when the ActiveDescendantKeyManager calls setInactiveStyles().\n * Is used by the PickerComponent to find the current active option.\n */\n @HostBinding('class.highlighted')\n get highlighted() {\n return this._highlighted;\n }\n set highlighted(value: boolean) {\n this._highlighted = value;\n this.cdRef.markForCheck();\n }\n private _highlighted = false;\n\n constructor(\n private cdRef: ChangeDetectorRef,\n private translateService: TranslateService\n ) {}\n\n ngOnInit() {\n if (this.selected) {\n this.ariaSelected = true;\n }\n }\n\n @HostListener('click')\n manageClickEvents() {\n this.selectOption();\n }\n\n setActiveStyles() {\n this.ariaSelected = true;\n this.highlighted = true;\n }\n\n setInactiveStyles() {\n this.ariaSelected = false;\n this.highlighted = false;\n }\n\n /**\n * Triggers the EventEmitter select() that should emit, when an option was selected.\n * This function is used in the PickerComponent when an option was selected.\n */\n selectOption() {\n this.select.emit(this.value);\n }\n}\n","<lx-icon *ngIf=\"isClearOption\" name=\"slash\" color=\"#d8d8d8\" />\n<ng-content *ngIf=\"!isClearOption\" />\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { Subject, fromEvent } from 'rxjs';\nimport { filter, takeUntil, tap } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxPickerTrigger]',\n standalone: true\n})\nexport class PickerTriggerDirective implements OnDestroy {\n private readonly IS_SAFARI = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n private readonly HOST_ELEMENT_IS_BUTTON = this.element.nativeElement.matches('button');\n private focused = false;\n private allClickEvents$ = fromEvent<MouseEvent>(this.element.nativeElement, 'click').pipe(\n tap(() => {\n // There is an inconsistent behavior among browsers when it comes to focusing buttons on click.\n // Safari does not focus buttons on click, but most other browsers do. Therefore, we have to\n // introduce this hack to make sure that the button is focused when the user clicks it.\n // More details in this interesting article: https://zellwk.com/blog/inconsistent-button-behavior/\n if (this.IS_SAFARI && this.HOST_ELEMENT_IS_BUTTON) {\n this.element.nativeElement.focus();\n }\n })\n );\n private focusEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'focus');\n private blurEvent$ = fromEvent<MouseEvent>(this.element.nativeElement, 'blur');\n\n public clickEvent$ = this.allClickEvents$.pipe(filter(() => this.focused === true));\n\n get width() {\n return this.element.nativeElement.offsetWidth;\n }\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(private element: ElementRef<HTMLElement>) {\n this.focusEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = true;\n });\n this.blurEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.focused = false;\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { NgIf } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n HostListener,\n Input,\n OnDestroy,\n QueryList\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { AutocloseDirective } from '../../../core-ui/directives/autoclose.directive';\nimport { PickerOptionComponent } from '../picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './picker-trigger.directive';\n\n/**\n * How to use:\n * Provide the lx-picker with two kinds of ContentChildren:\n * 1. A lxPickerTrigger, preferably a button element, which we use to open the dropdown on click or enter.\n * 2. A list of `<li>` elements with an lx-picker-option attribute that own the option template as content children.\n *\n * You can use this component as part of a FormGroup or wire it up yourself by listening on the (select) output of the options.\n *\n * Example usage (non FormGroup style):\n * ```\n * <lx-picker listBoxAriaLabel=\"Awesome picker\">\n * <button lxPickerTrigger lx-button mode=\"outline\" size=\"large\" [square]=\"true\" aria-label=\"Awesome picker\" title=\"Awesome picker\">\n * <lx-icon [name]=\"selection.label\" [color]=\"selection.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </button>\n * <li *ngFor=\"let option of options\" lx-picker-option [value]=\"option.value\" [selected]=\"selection === option\" (select)=\"selection = option\" [optionId]=\"option.id\">\n * <lx-icon lx-picker-option [name]=\"option.label\" [color]=\"option.value\" fontAwsomeStyle=\"solid\"></lx-icon>\n * </li>\n * </lx-picker>\n * ```\n */\n@Component({\n selector: 'lx-picker',\n templateUrl: 'picker.component.html',\n styleUrls: ['picker.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => PickerComponent)\n }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, AutocloseDirective]\n})\nexport class PickerComponent implements AfterViewInit, ControlValueAccessor, OnDestroy {\n /**\n * A human-readable string value which identifies the listbox.\n * If there's a visible label, then aria-labelledby should be used instead to refer to that label.\n */\n @Input() listBoxAriaLabel?: string;\n /**\n * Identifies the visible element which identifies the listbox.\n * If there's no visible label, then aria-label should be used instead to include a label.\n */\n @Input() listBoxAriaLabelledBy?: string;\n @Input() openDirection: 'left' | 'right' = 'right';\n\n /** @internal */\n get activeDescendantsId() {\n return this._activeDescendantsId;\n }\n /** @internal */\n set activeDescendantsId(value: string | undefined) {\n this._activeDescendantsId = value;\n this.cdRef.markForCheck();\n }\n\n /** @internal */\n get open() {\n return this._open;\n }\n /** @internal */\n set open(value: boolean) {\n this._open = value;\n this.cdRef.markForCheck();\n }\n\n /**\n * Returns a negative margin, that is used to move the picker dropdown to the left side of the picker trigger.\n * @internal\n */\n get leftOffset() {\n const dropdownWidth = 185;\n return this.openDirection === 'left' ? `-${dropdownWidth - this._trigger.width}px` : '0px';\n }\n\n /** @internal */\n @ContentChildren(PickerOptionComponent)\n private options!: QueryList<PickerOptionComponent>;\n /** @internal */\n keyManager!: ActiveDescendantKeyManager<PickerOptionComponent>;\n\n /** @internal */\n @ContentChild(PickerTriggerDirective)\n private _trigger!: PickerTriggerDirective;\n /** @internal */\n private _isFormControl = false;\n /** @internal */\n private _open = false;\n /** @internal */\n private _activeDescendantsId?: string;\n /** @internal */\n private _lastSelectWasByKeyManager = false;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(\n private dir: Directionality,\n private cdRef: ChangeDetectorRef\n ) {}\n\n /** @internal */\n @HostListener('document:keydown', ['$event'])\n manageKeyboardEvents(event: KeyboardEvent) {\n if (this.open) {\n const activeIndex = this.keyManager.activeItemIndex || 0;\n switch (event.key) {\n case 'Enter':\n setTimeout(() => {\n this.closePicker();\n });\n break;\n case 'Escape':\n case 'Tab':\n this.setActivePickerOption(-1);\n this.closePicker();\n break;\n case 'ArrowDown':\n event.preventDefault();\n const newDownIndex = this.keyManager.activeItemIndex === -1 ? 0 : activeIndex + 5;\n this.setActivePickerOption(newDownIndex < this.options.length ? newDownIndex : activeIndex);\n break;\n case 'ArrowUp':\n event.preventDefault();\n const newUpIndex = this.keyManager.activeItemIndex === -1 ? this.options.length - 1 : activeIndex - 5;\n this.setActivePickerOption(newUpIndex >= 0 ? newUpIndex : activeIndex);\n break;\n case 'ArrowLeft':\n if (this.keyManager.activeItemIndex === -1) {\n this.setActivePickerOption(this.options.length - 1);\n } else {\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n break;\n case 'Home':\n event.preventDefault();\n this.setActivePickerOption(0);\n break;\n case 'End':\n event.preventDefault();\n this.setActivePickerOption(this.options.length - 1);\n break;\n default:\n // matches ArrowRight\n this.keyManager.onKeydown(event);\n this.activeDescendantsId = this.keyManager.activeItem?.optionId;\n }\n if (this.keyManager.activeItem) {\n this._lastSelectWasByKeyManager = true;\n this.propagateChange(this.keyManager.activeItem.value);\n if (!this._isFormControl) {\n this.keyManager.activeItem.selectOption();\n }\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.keyManager = new ActiveDescendantKeyManager(this.options).withHorizontalOrientation(this.dir.value).withVerticalOrientation(true);\n\n this.options.map((item: PickerOptionComponent) => {\n item.select.pipe(takeUntil(this.destroyed$)).subscribe((value: any) => {\n this.propagateChange(value);\n if (value !== this.keyManager.activeItem?.value || !this._lastSelectWasByKeyManager) {\n this.closePicker();\n }\n this._lastSelectWasByKeyManager = false;\n });\n });\n\n this._trigger.clickEvent$.pipe(takeUntil(this.destroyed$)).subscribe(() => {\n this.toggleOpen();\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n closePicker() {\n this.setActivePickerOption(-1);\n this.open = false;\n }\n\n /** @internal */\n toggleOpen() {\n this.open = !this.open;\n if (this.open) {\n this.onTouched();\n }\n this.setActivePickerOption(this.open === false ? -1 : this.options.toArray().findIndex((option) => option.selected));\n }\n\n private setActivePickerOption(index: number) {\n this.keyManager.setActiveItem(index);\n if (this.keyManager.activeItem) {\n this.activeDescendantsId = this.keyManager.activeItem.optionId;\n } else {\n this.activeDescendantsId = undefined;\n }\n }\n\n //#region Angular Forms API. This is only used when using the Picker inside a FormGroup\n\n /** @internal */\n writeValue(value: any) {\n this.options?.toArray().forEach((option) => (option.selected = option.value === value));\n }\n\n /** @internal */\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n this._isFormControl = true;\n }\n\n /** @internal */\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n private propagateChange(_value: any) {}\n private onTouched() {}\n\n //#endregion\n}\n","<div class=\"pickerContainer\">\n <ng-content select=\"[lxPickerTrigger]\" />\n <ul\n class=\"pickerOptions\"\n *ngIf=\"open\"\n lxAutoclose\n (autoclose)=\"closePicker()\"\n role=\"listbox\"\n [style.margin-left]=\"leftOffset\"\n [attr.aria-activedescendant]=\"activeDescendantsId\"\n [attr.aria-label]=\"listBoxAriaLabel\"\n [attr.aria-labelledby]=\"listBoxAriaLabelledBy\"\n >\n <ng-content />\n </ul>\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\n\n@Component({\n selector: 'lx-pill-item',\n templateUrl: 'pill-item.component.html',\n styleUrls: ['pill-item.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class PillItemComponent {\n readonly NAME = 'PillItemComponent';\n\n @Input() item!: any;\n @Input() label!: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n removePill(item: any, isMouse: boolean = false) {\n if (!this.disabled) {\n this.remove.emit({ item, isMouse });\n }\n }\n}\n","<span data-testid=\"pill-label\" class=\"pillLabel\">{{ label }}</span>\n<span *ngIf=\"!disabled\" data-testid=\"remove-pill-item\" (click)=\"removePill(item, true)\" class=\"remove far fa-times\"></span>\n","import { AsyncPipe, NgFor, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n Output,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport { Observable, merge } from 'rxjs';\nimport { delay, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { SelectableItemDirective } from '../../directives/selectable-item.directive';\nimport { KeyboardSelectDirective } from '../keyboard-select.directive';\nimport { MultiSelectRemoveItemEvent } from '../multi-select/multi-select.component';\nimport { PillItemComponent } from '../pill-item/pill-item.component';\n\n@Component({\n selector: 'lx-pill-list',\n templateUrl: 'pill-list.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['pill-list.component.scss'],\n standalone: true,\n imports: [NgFor, SelectableItemDirective, NgIf, NgTemplateOutlet, PillItemComponent, AsyncPipe]\n})\nexport class PillListComponent extends KeyboardSelectDirective implements AfterViewInit {\n @Input() pills: any[] = [];\n @Input() labelKey?: string;\n /**\n * Provide an itemKey which contains the property name in each object to uniquely identify it.\n * This will be used in the trackBy function.\n */\n @Input() itemKey?: string;\n @HostBinding('class.disabled') @Input() disabled: boolean = false;\n\n @Output() remove = new EventEmitter<MultiSelectRemoveItemEvent>();\n\n /**\n * If you provide an <ng-template #pillTemplate>, it will be used to render the individual pills inside of the lx-multi-select.\n * This is useful if you want to apply special attributes or CSS styling to individual pills.\n * Example:\n * <ng-template #pillTemplate let-pill>\n * <lx-pill-item [class.readOnly]=\"item.readOnly\" [label]=\"item.label\" [item]=\"item\"></lx-pill-item>\n * </ng-template>\n */\n @ContentChild('pillTemplate', { read: TemplateRef, static: true }) pillTemplate?: TemplateRef<any>;\n @ContentChildren(PillItemComponent, { emitDistinctChangesOnly: true }) contentItems!: QueryList<PillItemComponent>;\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n if (this.pillTemplate) {\n const removePillEvents: Observable<MultiSelectRemoveItemEvent> = this.contentItems.changes.pipe(\n startWith(this.contentItems),\n switchMap(() => merge(...this.contentItems.map((item) => item.remove))),\n delay(0),\n takeUntil(this.destroyed$)\n );\n removePillEvents.subscribe(this.removePill.bind(this));\n }\n }\n\n removePill(event: MultiSelectRemoveItemEvent) {\n this.remove.emit(event);\n }\n\n removePillViaKeyboard(pill: any) {\n this.remove.emit({ item: pill, isMouse: false });\n }\n\n public trackByProp(prop?: string) {\n return (index: number, pill: any) => (prop ? pill[prop] : index);\n }\n}\n","<ul class=\"pills\" #keyboardSelectContainer>\n <li\n *ngFor=\"let pill of pills; let index = index; trackBy: trackByProp(itemKey)\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (select)=\"removePillViaKeyboard(pill)\"\n class=\"pill\"\n [class.selected]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"pillTemplate; else defaultTemplate\">\n <ng-container *ngTemplateOutlet=\"pillTemplate; context: { $implicit: pill, index: index }\" />\n </ng-container>\n <ng-template #defaultTemplate>\n <lx-pill-item [item]=\"pill\" [label]=\"labelKey ? pill[labelKey] : pill\" [disabled]=\"disabled\" (remove)=\"removePill($event)\" />\n </ng-template>\n </li>\n</ul>\n","import { includes } from 'lodash/fp';\nimport { fromEvent, Observable } from 'rxjs';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { KeyboardSelectAction } from '../components/keyboard-select.directive';\nimport { ARROW_DOWN, ARROW_UP, ENTER, ESCAPE, SPACE, TAB } from './key-codes.constants';\n\nexport interface KeyboardNavigationEvents {\n verticalNavigation$: Observable<KeyboardEvent>;\n close$: Observable<KeyboardEvent>;\n dropdownKeyboardEvent$: Observable<KeyboardSelectAction | null>;\n enter$: Observable<KeyboardEvent>;\n space$: Observable<KeyboardEvent>;\n openOnArrowDown$: Observable<KeyboardEvent>;\n}\n\nexport function getKeyboardNavigationEvents(sourceElement: HTMLElement, destroyed$: Observable<void>): KeyboardNavigationEvents {\n const inputKeyboardEvents$ = fromEvent<KeyboardEvent>(sourceElement, 'keydown').pipe(takeUntil(destroyed$));\n\n const verticalNavigation$ = inputKeyboardEvents$.pipe(filter((event) => includes(event.keyCode, [ARROW_UP, ARROW_DOWN])));\n\n const close$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ESCAPE || event.keyCode === TAB));\n\n const dropdownKeyboardEvent$ = inputKeyboardEvents$.pipe(\n filter((event) => includes(event.keyCode, [ENTER, ARROW_UP, ARROW_DOWN])),\n map((event) => {\n switch (event.keyCode) {\n case ENTER:\n return KeyboardSelectAction.EXECUTE;\n case ARROW_UP:\n return KeyboardSelectAction.PREV;\n case ARROW_DOWN:\n return KeyboardSelectAction.NEXT;\n default:\n return null;\n }\n })\n );\n\n const enter$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ENTER));\n const space$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === SPACE));\n\n const openOnArrowDown$ = inputKeyboardEvents$.pipe(filter((event) => event.keyCode === ARROW_DOWN));\n\n return {\n verticalNavigation$,\n close$,\n dropdownKeyboardEvent$,\n enter$,\n space$,\n openOnArrowDown$\n };\n}\n\nexport function stopKeyboardEventPropagation(evt: Event) {\n evt.preventDefault();\n evt.stopImmediatePropagation();\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { isEqual } from 'lodash/fp';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil } from 'rxjs/operators';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { ExpandedDropdownComponent } from '../expanded-dropdown/expanded-dropdown.component';\n\n@Component({\n selector: 'lx-select-list',\n templateUrl: 'select-list.component.html',\n styleUrls: ['select-list.component.scss'],\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, NgTemplateOutlet]\n})\nexport class SelectListComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit {\n @Input() searchPlaceholder: string = 'Search';\n @Input() options: any[] = [];\n @Input() selection: any;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() onChooseItem = new EventEmitter<string>();\n\n /** @internal */\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n /** @internal */\n @ContentChild(ExpandedDropdownComponent, { static: false }) private dropdownComponent?: ExpandedDropdownComponent;\n\n /** @internal */\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n /** @internal */\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n /** @internal */\n @ViewChild('searchInput', { static: true }) searchInput!: ElementRef<HTMLInputElement>;\n\n /** @internal */\n highlightedIndex: number = 0;\n /** @internal */\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n /** @internal */\n override readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n /** @internal */\n focus() {\n this.searchInput.nativeElement.focus();\n }\n\n /** @internal */\n focusAndOpen() {\n this.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter(() => !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.dropdownComponent!.select(0);\n }\n } else {\n this.dropdownComponent!.select(0);\n }\n });\n // keyboard event handling\n const sourceElement = this.searchInput.nativeElement;\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n const currentIndex = this.determineHighlightIndex(this.options, this.selection);\n // keyboard selection while not searching\n if (this.searchInput.nativeElement.value === '') {\n if (event.key === 'ArrowDown') {\n if (currentIndex !== this.options.length - 1) {\n this.selectOption(currentIndex + 1);\n } else {\n this.selectOption(0);\n }\n } else {\n if (currentIndex !== 0) {\n this.selectOption(currentIndex - 1);\n } else {\n this.selectOption(this.options.length - 1);\n }\n }\n } else {\n if (event.key === 'ArrowDown') {\n if (this.highlightedIndex !== this.dropdownComponent!.options.length - 1) {\n this.highlightedIndex = this.highlightedIndex + 1;\n } else {\n this.highlightedIndex = 0;\n }\n } else {\n if (this.highlightedIndex !== 0) {\n this.highlightedIndex = this.highlightedIndex - 1;\n } else {\n this.highlightedIndex = this.dropdownComponent!.options.length - 1;\n }\n }\n this.dropdownComponent!.select(this.highlightedIndex);\n }\n });\n\n keyboardEvents.enter$.subscribe(() => {\n if (this.searchInput.nativeElement.value === '') {\n this.onChooseItem.emit(this.selection.id);\n } else if (this.dropdownComponent!.options.length) {\n this.onChooseItem.emit(this.dropdownComponent!.options[this.highlightedIndex].id);\n }\n });\n this.focusAndOpen();\n }\n\n /** @internal */\n selectOption(index: number) {\n if (this.determineHighlightIndex(this.options, this.selection) === index) {\n this.onChooseItem.emit(this.selection.id);\n } else if (index !== -1) {\n this.selection = this.options[index];\n this.selectionChange.emit(this.selection);\n this.open.next(false);\n this.focusAndOpen();\n this.dropdownComponent?.select(index);\n }\n }\n\n /** @internal */\n searchKeyChanged(event: any) {\n if (event.target.value === '' && !['ArrowUp', 'ArrowDown'].includes(event.key)) {\n this.highlightedIndex = this.determineHighlightIndex(this.dropdownComponent!.options, this.selection);\n this.dropdownComponent!.select(this.highlightedIndex);\n } else if (event.key.length === 1 || ['Backspace', 'Delete'].includes(event.key)) {\n this.highlightedIndex = 0;\n this.dropdownComponent!.select(0);\n }\n }\n\n private determineHighlightIndex(options: any[], selection: any) {\n return options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div class=\"selectContainer focused\">\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div class=\"searchWrapper\">\n <input\n #searchInput\n id=\"searchInput\"\n class=\"searchInput\"\n type=\"text\"\n autocomplete=\"off\"\n (keyup)=\"searchKeyChanged($event)\"\n [formControl]=\"queryControl\"\n [placeholder]=\"searchPlaceholder\"\n />\n <label for=\"searchInput\" class=\"fa fa-search\"></label>\n </div>\n </div>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container>\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\" />\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\" />\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\" />\n</ng-template>\n","import { Directive } from '@angular/core';\n\n/**\n * This directive is supposed to be used in combination with a single-select in\n * order to mark a ng-template as the template to be rendered within the select to\n * display the currently selected option.\n *\n * Example:\n *\n * ```\n * <lx-single-select>\n * <ng-template lxSelectedOption>{{ someValue }}</ng-template>\n * </lx-single-select>\n * ```\n */\n@Directive({\n selector: '[lxSelectedOption]',\n standalone: true\n})\nexport class SelectedOptionDirective {}\n","import { AsyncPipe, NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewChild,\n booleanAttribute,\n forwardRef\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport { get, includes, isEqual } from 'lodash/fp';\nimport { Subject, fromEvent } from 'rxjs';\nimport { distinctUntilChanged, filter, map, takeUntil, tap } from 'rxjs/operators';\nimport { MarkInvalidDirective } from '../../directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from '../../directives/select-dropdown.directive';\nimport { SelectedOptionDirective } from '../../directives/selected-option.directive';\nimport { ARROW_LEFT, ARROW_RIGHT, BACKSPACE, ESCAPE, TAB } from '../../helpers/key-codes.constants';\nimport { getKeyboardNavigationEvents } from '../../helpers/keyboard-navigation.helpers';\nimport { BaseSelectDirective } from '../../models/base-select.directive';\nimport { SingleSelectPadding } from '../../models/single-select-padding.interface';\nimport { BasicDropdownComponent } from '../basic-dropdown/basic-dropdown.component';\nimport { KeyboardSelectAction } from '../keyboard-select.directive';\n\nexport type SingleSelectSize = 'default' | 'small' | 'select2' | 'large';\n\n@Component({\n selector: 'lx-single-select',\n templateUrl: 'single-select.component.html',\n styleUrls: ['single-select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => SingleSelectComponent)\n }\n ],\n standalone: true,\n imports: [NgIf, MarkInvalidDirective, NgTemplateOutlet, FormsModule, ReactiveFormsModule, AsyncPipe]\n})\nexport class SingleSelectComponent extends BaseSelectDirective implements OnDestroy, AfterViewInit, ControlValueAccessor {\n /** @internal */\n public static calculateNewCursorPostionOnKeyboardNavigation(cursorPosition: number, keyCode: number) {\n switch (keyCode) {\n case ARROW_LEFT:\n cursorPosition--;\n break;\n case ARROW_RIGHT:\n cursorPosition++;\n break;\n }\n return cursorPosition;\n }\n\n /** @internal */\n public static getKeyboardSelectAction(cursorPosition: number, keyCode: number): KeyboardSelectAction | null {\n if (cursorPosition <= -1 && keyCode === ARROW_RIGHT) {\n return KeyboardSelectAction.NEXT;\n }\n if (cursorPosition === -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.LAST;\n }\n if (cursorPosition < -1 && keyCode === ARROW_LEFT) {\n return KeyboardSelectAction.PREV;\n }\n if (cursorPosition <= -1 && keyCode === BACKSPACE) {\n return KeyboardSelectAction.EXECUTE;\n }\n return null;\n }\n\n @Input() selection: any;\n @Input() selectionBackground: 'white' | 'gray' = 'white';\n @Input() size: SingleSelectSize = 'default';\n @Input() padding?: SingleSelectPadding = 'default';\n @Input() inputId?: string;\n @Input({ transform: booleanAttribute }) required: boolean = false;\n\n @Output() selectionChange = new EventEmitter<any>();\n @Output() blur = new EventEmitter<FocusEvent>();\n\n /** @internal */\n @ContentChild(SelectDropdownDirective, { read: TemplateRef, static: true }) explicitDropdown?: TemplateRef<any>;\n /** @internal */\n @ContentChild(SelectedOptionDirective, { read: TemplateRef, static: true }) explicitSelectedOption?: TemplateRef<any>;\n /** @internal */\n @ContentChild(BasicDropdownComponent, { static: false }) private dropdownComponent?: BasicDropdownComponent;\n\n /** @internal */\n @ViewChild('selectedOption', { static: true }) implicitSelectedOption!: TemplateRef<any>;\n /** @internal */\n @ViewChild('dropdown', { static: true }) implicitDropdown!: TemplateRef<any>;\n\n /** @internal */\n get selectedOptionTmpl() {\n return this.explicitSelectedOption || this.implicitSelectedOption;\n }\n\n /** @internal */\n get dropdownTmpl() {\n return this.explicitDropdown || this.implicitDropdown;\n }\n\n @Input() allowClear = true;\n @Input() tabIndex: number = 0;\n @Input() markInvalid: boolean = false;\n\n /** @internal */\n @ViewChild('queryInput', { static: true }) queryInput!: ElementRef<HTMLInputElement>;\n\n /** @internal */\n override readonly destroyed$ = new Subject<void>();\n /** @internal */\n isInputFocusedViaTab = false;\n\n constructor(private cd: ChangeDetectorRef) {\n super();\n }\n\n /** @internal */\n get cursorStyle() {\n if (this.disabled) {\n return 'default';\n } else if (this.allowQuery) {\n return 'text';\n } else {\n return 'pointer';\n }\n }\n\n /** @internal */\n resetInput() {\n this.queryControl.reset('', { emitEvent: false });\n }\n\n /** @internal */\n focus() {\n this.queryInput.nativeElement.focus();\n }\n\n /** @internal */\n focusAndOpen() {\n this.queryInput.nativeElement.focus();\n this.open.next(true);\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.destroyed$.next();\n }\n\n override ngAfterViewInit() {\n super.ngAfterViewInit();\n this.open\n .pipe(\n distinctUntilChanged(),\n filter((open) => open && !!this.dropdownComponent),\n map(() => this.selection),\n takeUntil(this.destroyed$)\n )\n .subscribe((selection) => {\n if (selection) {\n const index = this.determineHighlightIndex(this.dropdownComponent!.options, selection, this.dropdownComponent!.itemKey);\n if (index > -1) {\n this.dropdownComponent!.select(index);\n } else {\n this.selectFirstOption();\n }\n } else {\n this.selectFirstOption();\n }\n });\n\n // keyboard event handling\n const sourceElement = this.queryInput.nativeElement;\n // handle keyboard navigation for the selection\n fromEvent<KeyboardEvent>(sourceElement, 'keydown')\n .pipe(\n map((event) => this.mapToEventSet(event, sourceElement, this.virtualCursorPosition)),\n tap((eventSet) => {\n if (!this.allowQuery && eventSet.event.keyCode !== BACKSPACE) {\n // additional check for even.code for userEvent API compatibility\n if (eventSet.event.keyCode !== TAB && eventSet.event.code !== 'Tab') {\n // if querying is disabled, only the tab key press event will be propagated, so that you can still defocus.\n eventSet.event.preventDefault();\n }\n return;\n }\n if (\n eventSet.virtualCursorPosition === 0 &&\n eventSet.inputCursorPosition === 0 &&\n eventSet.event.keyCode === BACKSPACE &&\n this.selection &&\n this.allowClear\n ) {\n this.removeSelection();\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n if (typeof eventSet.inputCursorPosition === 'number' && eventSet.inputCursorPosition > 0) {\n this.virtualCursorPosition = 0;\n } else if (eventSet.virtualCursorPosition === -1 && eventSet.event.keyCode === ARROW_RIGHT) {\n eventSet.event.preventDefault();\n this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);\n this.virtualCursorPosition = 0;\n eventSet.inputCursorPosition = undefined; // set to null to prevent continuing in the stream\n }\n }),\n filter((eventSet) => this.allowQuery && eventSet.inputCursorPosition === 0),\n map((eventSet) => eventSet.event),\n filter((event) => includes(event.keyCode, [ARROW_RIGHT, ARROW_LEFT, BACKSPACE])),\n map((event) => {\n this.virtualCursorPosition = SingleSelectComponent.calculateNewCursorPostionOnKeyboardNavigation(\n this.virtualCursorPosition,\n event.keyCode\n );\n return {\n cursorPosition: this.virtualCursorPosition,\n event\n };\n }),\n map((positionSet) => {\n const action = SingleSelectComponent.getKeyboardSelectAction(positionSet.cursorPosition, positionSet.event.keyCode);\n if (action === KeyboardSelectAction.NEXT) {\n // prevent cursor from moving in the input field, while we are still in the selection items\n positionSet.event.preventDefault();\n }\n return action;\n }),\n takeUntil(this.destroyed$)\n )\n .subscribe(this.selectionKeyboardSelectAction$);\n\n const keyboardEvents = getKeyboardNavigationEvents(sourceElement, this.destroyed$);\n\n keyboardEvents.verticalNavigation$.subscribe((event) => {\n event.preventDefault();\n });\n\n keyboardEvents.close$.subscribe((event) => {\n if (event.keyCode === ESCAPE && this.dropdownOpen) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n this.open.next(false);\n });\n\n keyboardEvents.dropdownKeyboardEvent$.subscribe(this.optionsKeyboardSelectAction$);\n\n keyboardEvents.enter$.subscribe(() => this.open.next(!this.dropdownOpen));\n keyboardEvents.space$.pipe(filter(() => !this.allowQuery)).subscribe(() => {\n if (this.dropdownOpen) {\n this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.EXECUTE);\n }\n this.open.next(!this.dropdownOpen);\n });\n\n keyboardEvents.openOnArrowDown$.subscribe(() => this.open.next(true));\n }\n\n /** @internal */\n selectOption(option: any) {\n this.selection = option;\n\n this.selectionChange.emit(option);\n this.propagateChange(option);\n\n this.resetSelectState();\n\n // This timeout makes sure that the dropdown will be closed at the end\n // of all the callbacks in the open subscriptions.\n setTimeout(() => {\n this.open.next(false);\n });\n }\n\n /** @internal */\n removeSelection() {\n this.selection = null;\n this.cd.markForCheck();\n this.cd.detectChanges();\n\n this.selectionChange.emit(this.selection);\n this.propagateChange(this.selection);\n\n this.resetSelectState();\n }\n\n /** @internal */\n propagateChange(_value: any) {}\n\n /** @internal */\n writeValue(newSelection: any) {\n this.selection = newSelection;\n }\n\n /** @internal */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** @internal */\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n /** @internal */\n registerOnTouched(_fn: any) {}\n\n /** @internal */\n focusedViaTab() {\n this.isInputFocusedViaTab = true;\n }\n\n private determineHighlightIndex(options: any[], selection: any, itemKey?: string) {\n return itemKey\n ? options.findIndex((option) => isEqual(get(itemKey, selection), get(itemKey, option)) || isEqual(selection, get(itemKey, option)))\n : options.findIndex((option) => isEqual(selection, option));\n }\n}\n","<div *ngIf=\"dropdownOpen\" class=\"backdrop\" (click)=\"handleBackdropClick($event)\"></div>\n<div\n [lxMarkInvalid]=\"markInvalid\"\n class=\"selectContainer {{ padding }}Padding\"\n [class.open]=\"dropdownOpen\"\n [class.top]=\"(dropdownDirection$ | async) === 'TOP'\"\n [class.bottom]=\"(dropdownDirection$ | async) === 'BOTTOM'\"\n [class.disabled]=\"disabled\"\n [class.grayBackground]=\"selectionBackground === 'gray'\"\n [class.defaultSize]=\"size === 'default'\"\n [class.smallSize]=\"size === 'small'\"\n [class.select2Size]=\"size === 'select2'\"\n [class.largeSize]=\"size === 'large'\"\n [style.cursor]=\"cursorStyle\"\n [class.focused]=\"isInputFocused\"\n [class.focusedVisible]=\"isInputFocusedViaTab\"\n (click)=\"handleClick($event.target === toggle)\"\n>\n <div class=\"selectionContainer\">\n <div class=\"inputContainer\">\n <div *ngIf=\"!selection && selection !== 0 && !queryInput?.value\" class=\"placeholder\" [attr.title]=\"placeholder\">\n {{ placeholder }}\n </div>\n <div\n *ngIf=\"!allowQuery || !queryInput?.value\"\n class=\"selection\"\n [class.lowerOpacity]=\"allowQuery && !queryInput?.value && dropdownOpen\"\n [class.lightgrayColor]=\"!allowQuery && dropdownOpen\"\n (click)=\"$event.stopPropagation(); focus()\"\n >\n <ng-container *ngTemplateOutlet=\"selectedOptionTmpl\" />\n </div>\n <input\n #queryInput\n class=\"queryInput\"\n type=\"text\"\n [attr.id]=\"inputId\"\n [attr.required]=\"required ? 'true' : null\"\n [class.isHidden]=\"!allowQuery\"\n (keydown.enter)=\"$event.preventDefault()\"\n (focus)=\"isInputFocused = true\"\n (blur)=\"isInputFocused = false; isInputFocusedViaTab = false; blur.emit($event)\"\n (keyup.tab)=\"focusedViaTab()\"\n (keyup.shift.tab)=\"focusedViaTab()\"\n [tabIndex]=\"disabled ? -1 : tabIndex\"\n [formControl]=\"queryControl\"\n [readOnly]=\"!allowQuery\"\n />\n </div>\n <div class=\"iconContainer\">\n <i *ngIf=\"(selection || selection === 0) && allowClear && !disabled\" class=\"far fa-times\" (click)=\"removeSelection()\"></i>\n <i #toggle class=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </div>\n </div>\n <div class=\"optionsContainer\" #optionsContainer>\n <ng-container *ngIf=\"dropdownOpen\">\n <ng-container *ngTemplateOutlet=\"dropdownTmpl\" />\n </ng-container>\n </div>\n</div>\n\n<ng-template #selectedOption>\n <ng-content select=\".selectedOption\" />\n</ng-template>\n<ng-template #dropdown>\n <ng-content select=\".dropdownComponent\" />\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { ButtonComponent } from '../../../core-ui/components/button/button.component';\n\n@Component({\n selector: 'lx-sorting-dropdown-trigger',\n templateUrl: 'sorting-dropdown-trigger.component.html',\n styleUrls: ['sorting-dropdown-trigger.component.scss'],\n standalone: true,\n imports: [ButtonComponent]\n})\nexport class SortingDropdownTriggerComponent {\n @Input() label!: string;\n @Input() currentSortingLabel!: string;\n @Input() disabled: boolean = false;\n}\n","<button lx-button mode=\"link\" [disabled]=\"disabled\" endIcon=\"fa-angle-down\">\n {{ label ? label + ': ' : '' }}{{ currentSortingLabel }}\n</button>\n","import { NgFor, NgIf } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { KeyboardActionSourceDirective } from '../../directives/keyboard-action-source.directive';\nimport { Sorting, SortingOrder } from '../../models/sorting.interface';\nimport { OptionGroupComponent } from '../option-group/option-group.component';\nimport { OptionComponent } from '../option/option.component';\nimport { OptionsDropdownComponent } from '../options-dropdown/options-dropdown.component';\nimport { SortingDropdownTriggerComponent } from '../sorting-dropdown-trigger/sorting-dropdown-trigger.component';\n\n/**\n * Used for translation. The dash in the name ensures that this will not clash with a DataModel field.\n * This key is used when there is no sorting parameter sent to the allFactSheets query, meaning that the ElasticSearch\n * score will be used for sorting.\n */\nexport const RELEVANCE_SORTING_KEY = 'lx-relevance';\n\n@Component({\n selector: 'lx-sorting-dropdown',\n templateUrl: 'sorting-dropdown.component.html',\n styleUrls: ['sorting-dropdown.component.scss'],\n standalone: true,\n imports: [\n NgIf,\n OptionsDropdownComponent,\n SortingDropdownTriggerComponent,\n KeyboardActionSourceDirective,\n OptionGroupComponent,\n NgFor,\n OptionComponent,\n TranslateModule\n ]\n})\nexport class SortingDropdownComponent implements OnInit {\n @Input() currentSorting!: Sorting | null;\n @Input() sortingOptions: Sorting[] = [];\n @Input() showDirectionOptions = true;\n @Output() public apply = new EventEmitter<Sorting>();\n readonly NAME = 'SortingDropdownComponent';\n readonly sortingDirections: SortingOrder[] = ['asc', 'desc'];\n\n ngOnInit() {\n if (!this.currentSorting) {\n this.currentSorting = this.sortingOptions[0] ? { key: this.sortingOptions[0].key, order: this.sortingOptions[0].order } : null;\n }\n }\n\n applySortingMode(sort: Sorting) {\n this.apply.emit({\n key: sort.key,\n order: sort.order\n });\n }\n\n applySortingDirection(sortDirection: SortingOrder) {\n if (this.currentSorting) {\n this.apply.emit({\n key: this.currentSorting.key,\n order: sortDirection\n });\n }\n }\n\n getSortLabel(key: string): `sorting.${string}.label` {\n return `sorting.${key}.label`;\n }\n}\n","<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n />\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ option?.key ? (getSortLabel(option.key) | translate) : '' }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n","import { NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n/**\n * Switch component is a toggle switch that can be used to switch between two states.\n */\n@Component({\n selector: 'lx-switch',\n templateUrl: 'switch.component.html',\n styleUrl: './switch.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf]\n})\nexport class SwitchComponent {\n /** Value of the switch */\n @Input() public value!: boolean;\n /** Size of the switch */\n @Input() public size: 'small' = 'small';\n /** Whether the switch is disabled */\n @Input() public disabled = false;\n /** Label of the switch */\n @Input() public label!: string;\n /** Whether the label is in front of the switch */\n @Input() public labelInFront = true;\n /** Id of the switch */\n @Input() public elementId?: string;\n\n /** Event that is emitted when the switch is toggled */\n @Output() public toggle = new EventEmitter<boolean>();\n\n /** @internal */\n onToggle() {\n this.toggle.emit(!this.value);\n }\n\n get id() {\n return this.elementId ? `tour${this.elementId}` : null;\n }\n\n /** @internal */\n focus(checkbox: HTMLInputElement) {\n // without a delay the checkbox will not be focused again\n setTimeout(() => checkbox.focus(), 150);\n }\n}\n","<div\n class=\"wrapper\"\n [class.withLabel]=\"label\"\n [class.withLabelBehind]=\"label && !labelInFront\"\n [class.disabled]=\"disabled\"\n [attr.id]=\"id\"\n [class.small]=\"size === 'small'\"\n>\n <span *ngIf=\"label\" class=\"labelText\" [class.off]=\"!value\">{{ label }}</span>\n <label class=\"checkbox\" [class.small]=\"size === 'small'\">\n <input\n #inputRef\n type=\"checkbox\"\n [checked]=\"value\"\n [disabled]=\"disabled\"\n (click)=\"inputRef.blur()\"\n (change)=\"onToggle()\"\n (keydown.space)=\"focus(inputRef)\"\n (keydown.enter)=\"onToggle()\"\n />\n <span class=\"slider\"></span>\n </label>\n</div>\n","// /**\n// * Converts HTML to text, preserving semantic newlines for block-level\n// * elements. (Taken from https://stackoverflow.com/a/20384452/6813271)\n// *\n// * @param node - The HTML node to perform text extraction.\n// */\n// export function getNodeTextWithNewlines(node: Element, _inner = false): string {\n// let result = '';\n\n// if (node.nodeType === document.TEXT_NODE) {\n// // Replace repeated spaces, newlines, and tabs with a single space.\n// result = node.nodeValue.replace( /\\s+/g, ' ' );\n// } else {\n// for (let i = 0, j = node.childNodes.length; i < j; i++ ) {\n// result += this.getNodeTextWithNewlines(node.childNodes[i] as Element, true);\n// }\n// const d = node['currentStyle'] ?\n// node['currentStyle']['display'] :\n// document.defaultView.getComputedStyle(node, null).getPropertyValue('display');\n// if (d.match(/^block/)) {\n// result = '\\n' + result + '\\n';\n// } else if (d.match(/list/) || d.match(/row/) || node.tagName === 'BR' || node.tagName === 'HR' ) {\n// result += '\\n';\n// }\n// }\n\n// return _inner ? result : _.trim(result, '\\n');\n// }\n\n/** Trim whitespaces from html */\nexport function trimHtml(str: string): string {\n return str\n .replace(/(<\\/?(br *\\/?|p)>| |\\s)*$/i, '')\n .replace(/^(<\\/?(br *\\/?|p)>| |\\s)*/i, '')\n .replace(/^<(div|p)>(<\\/?(br *\\/?|p)>| |\\s)*<\\/ *(div|p)>$/i, '');\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SecurityContext, SimpleChanges } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { intersection, isNil } from 'lodash-es';\nimport { NbspPipe } from '../../core-ui/pipes/nbsp.pipe';\nimport { trimHtml } from '../../shared/html-helpers.function';\n\n// First version based on https://stackoverflow.com/a/41253897/6813271\n@Directive({\n selector: '[lxContenteditableModel]',\n standalone: true\n})\nexport class ContenteditableDirective implements OnChanges {\n /** Model */\n @Input() lxContenteditableModel!: string;\n @Output() lxContenteditableModelChange = new EventEmitter<string>();\n /** Allow (sanitized) html */\n @Input() lxContenteditableHtml: boolean | 'trim' = false;\n @Input() lxContenteditableHtmlPaste: boolean = true;\n\n private emittedValue: string | null = null;\n\n constructor(\n private elRef: ElementRef<HTMLElement>,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['lxContenteditableModel']) {\n // On init: if lxContenteditableModel is empty, read from DOM in case the element has content\n if (changes['lxContenteditableModel'].isFirstChange() && !this.lxContenteditableModel) {\n // Prevent Exp.HasChanged: Don't read and emit value from DOM during change detection\n setTimeout(() => {\n this.onInput(true);\n });\n }\n this.refreshView();\n }\n }\n\n @HostListener('input')\n @HostListener('blur')\n @HostListener('keyup')\n onInput(initialInlineData = false) {\n let value = this.elRef.nativeElement[this.getProperty()] as string;\n value = this.cleanContent(value, initialInlineData);\n this.emittedValue = value;\n this.lxContenteditableModelChange.emit(value);\n }\n\n /**\n * @param event {ClipboardEvent}\n */\n @HostListener('paste', ['$event']) onPaste(event: any) {\n const clipboardEvent = event as ClipboardEvent;\n this.onInput();\n // For text-only contenteditable, remove pasted HTML.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n let isHtml: boolean = true;\n // TODO: Use beforepaste event. See https://www.lucidchart.com/techblog/2014/12/02/definitive-guide-copying-pasting-javascript/.\n if (clipboardEvent.clipboardData && clipboardEvent.clipboardData.types) {\n const types = [].slice.apply(clipboardEvent.clipboardData.types);\n isHtml = intersection(types, ['text/html', 'com.apple.webarchive']).length > 0;\n }\n if (isHtml) {\n // 1 tick wait is required for DOM update\n setTimeout(() => {\n // Cursor will be lost\n // The lint disabling here should be clearified. See if and how this directive is needed.\n this.elRef.nativeElement.innerHTML = this.sanitizer.sanitize(\n SecurityContext.HTML,\n this.elRef.nativeElement.innerText.replace(/\\n/g, '<br />')\n )!;\n });\n }\n }\n }\n\n @HostListener('drop', ['$event']) onDrop(event: MouseEvent) {\n this.onInput();\n // For text-only contenteditable, don't allow drop content.\n if (!this.lxContenteditableHtml || !this.lxContenteditableHtmlPaste) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n\n return false;\n }\n\n private cleanContent(value: string, initialInlineData = false): string {\n if (this.lxContenteditableHtml === 'trim' || (this.lxContenteditableHtml && initialInlineData)) {\n value = trimHtml(value);\n } else if (initialInlineData && !this.lxContenteditableHtml && value) {\n value = value.replace(/^[\\n\\s]+/, '');\n value = value.replace(/[\\n\\s]+$/, '');\n }\n // Some browsers like Chrome insert nbsp; when using contentEditable attribute\n return new NbspPipe().transform(value);\n }\n\n private refreshView() {\n if (!isNil(this.lxContenteditableModel)) {\n const newContent = this.cleanContent(this.lxContenteditableModel);\n // Only refresh if content changed to avoid cursor loss\n // (as ngOnChanges can be triggered an additional time by onInput())\n if (this.emittedValue === null || this.emittedValue !== newContent) {\n this.elRef.nativeElement[this.getProperty()] = this.sanitize(newContent)!;\n }\n }\n }\n\n private getProperty(): 'innerHTML' | 'innerText' {\n return this.lxContenteditableHtml ? 'innerHTML' : 'innerText';\n }\n\n private sanitize(content: string): string | null {\n return this.lxContenteditableHtml ? this.sanitizer.sanitize(SecurityContext.HTML, content) : content;\n }\n}\n","import { Directive, ElementRef, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Subscription, fromEvent } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'form',\n standalone: true\n})\nexport class FormSubmitDirective implements OnDestroy {\n submitted$ = new BehaviorSubject(false);\n private subscription: Subscription;\n\n constructor(private elementRef: ElementRef) {\n this.subscription = fromEvent(this.elementRef.nativeElement, 'submit')\n .pipe(take(1))\n .subscribe(() => this.submitted$.next(true));\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","import {\n ComponentFactoryResolver,\n ComponentRef,\n DestroyRef,\n Directive,\n Host,\n Inject,\n InjectionToken,\n Input,\n OnInit,\n Optional,\n Self,\n ViewContainerRef\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractControl, NgControl } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { curry } from 'lodash-es';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\nimport { ErrorMessageComponent } from '../components/error-message/error-message.component';\nimport { FormSubmitDirective } from './form-submit.directive';\n\nexport type FormControlErrorDisplayStrategy = (obj: { control: AbstractControl; submitted?: boolean }) => boolean;\n\nexport const FORM_CONTROL_ERROR_NAMESPACE = new InjectionToken<string>('FORM_CONTROL_ERROR_NAMESPACE');\nexport const FORM_CONTROL_ERROR_DISPLAY_STRATEGY = new InjectionToken<FormControlErrorDisplayStrategy>(\n 'FORM_CONTROL_ERROR_DISPLAY_STRATEGY'\n);\n\nexport const provideFormControlErrorNamespace = (namespace: string) => ({\n provide: FORM_CONTROL_ERROR_NAMESPACE,\n useValue: namespace\n});\n\nexport const provideFormControlErrorDisplayStrategy = (fn: FormControlErrorDisplayStrategy) => ({\n provide: FORM_CONTROL_ERROR_DISPLAY_STRATEGY,\n useValue: fn\n});\n\n@Directive({\n selector: '[lxFormError]',\n standalone: true\n})\nexport class FormErrorDirective implements OnInit {\n @Input('lxFormError') ctrl?: AbstractControl | '';\n @Input() controlName?: string;\n private ref?: ComponentRef<ErrorMessageComponent>;\n\n private get control(): AbstractControl | null | undefined {\n return this.ngControl?.control || this.ctrl || null;\n }\n\n private get name(): string | number | null | undefined {\n return this.ngControl?.name || this.controlName;\n }\n\n private get formSubmitted(): Observable<boolean | undefined> {\n return this.formSubmitDirective ? this.formSubmitDirective.submitted$ : of(undefined);\n }\n\n constructor(\n private viewContainer: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private translateService: TranslateService,\n private destroyRef: DestroyRef,\n @Optional() @Self() private ngControl?: NgControl,\n @Optional() @Host() private formSubmitDirective?: FormSubmitDirective,\n @Optional() @Inject(FORM_CONTROL_ERROR_NAMESPACE) private namespace?: string,\n @Optional() @Inject(FORM_CONTROL_ERROR_DISPLAY_STRATEGY) private strategy?: FormControlErrorDisplayStrategy\n ) {}\n\n ngOnInit() {\n const control = this.control;\n if (isAbstractControl(control)) {\n combineLatest([control.valueChanges.pipe(startWith(control.value)), this.formSubmitted])\n .pipe(\n map(([, submitted]) => submitted),\n map(resolveStrategy(this.strategy, control)),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((display) => {\n const { errors } = control;\n if (errors && display) {\n const firstErrorKey = Object.keys(errors)[0];\n const translationKey = this.buildTranslationKey(firstErrorKey!);\n this.setError(translationKey);\n } else if (this.ref) {\n this.setError();\n }\n });\n }\n }\n\n private buildTranslationKey(errorKey: string) {\n if (this.control) {\n return `${this.namespace || 'form'}.errors.${this.name ? `${this.name}.` : ''}${errorKey}`;\n } else {\n return '';\n }\n }\n\n private setError(key?: string) {\n if (!this.ref) {\n const factory = this.componentFactoryResolver.resolveComponentFactory(ErrorMessageComponent);\n this.ref = this.viewContainer.createComponent(factory);\n }\n if (key) {\n this.translateService\n .get(key)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((message) => {\n if (this.ref) {\n this.ref.instance.dynamicErrorMessage.set(message);\n }\n });\n } else {\n this.ref.instance.dynamicErrorMessage.set('');\n }\n }\n}\n\nconst isAbstractControl = (ctrl: AbstractControl | null | undefined): ctrl is AbstractControl => !!ctrl;\nconst resolveStrategy = curry(\n (strategy: FormControlErrorDisplayStrategy | undefined, control: AbstractControl, submitted: boolean | undefined) =>\n strategy ? strategy({ control, submitted }) : true\n);\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, find, includes, isEqual, isObject } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterBySelection',\n standalone: true\n})\nexport class FilterSelectionPipe implements PipeTransform {\n transform(items: any[] | null | undefined, selection: any, itemKey?: string): any[] {\n const isArray = Array.isArray(selection);\n return filter((item) => {\n if (isArray) {\n if (isObject(item)) {\n return itemKey\n ? !find((selectedItem) => selectedItem?.[itemKey] === (item as any)?.[itemKey], selection)\n : !find(item, selection);\n } else {\n return !includes(item, selection);\n }\n } else {\n return !isEqual(item, selection);\n }\n }, items);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { filter, toLower } from 'lodash/fp';\n\n@Pipe({\n name: 'lxFilterByTerm',\n standalone: true\n})\nexport class FilterTermPipe implements PipeTransform {\n transform(items: any[] | null, options: { term?: string | null; key?: string }): any[] {\n if (items === null) {\n return [];\n }\n if (options.term) {\n return filter((item) => {\n const value = options.key ? item[options.key] : item;\n return toLower(value).indexOf(toLower(options.term!)) > -1;\n }, items);\n } else {\n return items;\n }\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LOCALE_FN } from '../../core-ui/core-ui.constants';\nimport { CURRENCY_SYMBOL_MAP } from '../components/currency/currency-symbol-map.constant';\n\n/**\n * Reformats numbers into a short format.\n * @example {{ 1000 | lxFormatNumber | async }} prints 1K\n *\n * If the parameter currency is set, a currency sign is inserted based on the value and the current locale.\n * In this case, the pipe must be used with an innerHtml attribute.\n * @example [innerHtml]=\"1000 | lxFormatNumber: 'USD' | async\" prints $1K\n */\n@Pipe({\n name: 'lxFormatNumber',\n standalone: true\n})\nexport class FormatNumberPipe implements PipeTransform {\n constructor(@Inject(LOCALE_FN) private getLocale: Function) {}\n\n transform(number: number | undefined | null, currency?: string): Observable<string | null> {\n const locale$: Observable<string> = this.getLocale();\n return locale$.pipe(\n map((locale) => {\n if (number === null || number === undefined) {\n return null;\n }\n const options: any = {\n notation: 'compact',\n compactDisplay: 'short'\n };\n if (currency) {\n try {\n const currencyOptions = { ...options, currency, style: 'currency' };\n const formatedNumberWithCurrency = new Intl.NumberFormat(locale, currencyOptions).format(number);\n return this.getFormatedCurrency(formatedNumberWithCurrency, currency);\n } catch (_error) {\n console.warn(`FormatNumberPipe: Invalid currency code: ${currency}`);\n return new Intl.NumberFormat(locale, options).format(number);\n }\n }\n return new Intl.NumberFormat(locale, options).format(number);\n })\n );\n }\n\n /**\n * Use custom currency symbol, when the currency in the formated number doesn't match the\n * symbol in the CURRENCY_SYMBOL_MAP.\n */\n private getFormatedCurrency(formatedNumberWitCurrency: string, currency: string): string {\n const currencyMapping = CURRENCY_SYMBOL_MAP[currency];\n if (currencyMapping && currencyMapping !== currency && !formatedNumberWitCurrency.includes(currencyMapping)) {\n return formatedNumberWitCurrency.replace(currency, currencyMapping);\n }\n return formatedNumberWitCurrency;\n }\n}\n","import { ClipboardModule } from '@angular/cdk/clipboard';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\nimport { BasicDropdownItemComponent } from './components/basic-dropdown-item/basic-dropdown-item.component';\nimport { BasicDropdownComponent } from './components/basic-dropdown/basic-dropdown.component';\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { CdkOptionsDropdownComponent } from './components/cdk-options-dropdown/cdk-options-dropdown.component';\nimport { CdkOptionsSubDropdownComponent } from './components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nimport { CurrencyInputComponent } from './components/currency/currency-input.component';\nimport { CurrencySymbolComponent } from './components/currency/currency-symbol.component';\nimport { DateInputComponent } from './components/date-input/date-input.component';\nimport { DatepickerUiModule } from './components/date-picker-ui/datepicker-ui.module';\nimport { LxDragAndDropListModule } from './components/drag-and-drop-list/drag-and-drop-list.module';\nimport { ErrorMessageComponent } from './components/error-message/error-message.component';\nimport { ExpandedDropdownComponent } from './components/expanded-dropdown/expanded-dropdown.component';\nimport { FormErrorComponent } from './components/form-error/form-error.component';\nimport { IconComponent } from './components/icon/icon.component';\nimport { InputComponent } from './components/input/input.component';\nimport { MultiSelectComponent } from './components/multi-select/multi-select.component';\nimport { OptionGroupDropdownComponent } from './components/option-group-dropdown/option-group-dropdown.component';\nimport { OptionGroupComponent } from './components/option-group/option-group.component';\nimport { OptionComponent } from './components/option/option.component';\nimport { OptionsDropdownComponent } from './components/options-dropdown/options-dropdown.component';\nimport { OptionsSubDropdownComponent } from './components/options-sub-dropdown/options-sub-dropdown.component';\nimport { PickerOptionComponent } from './components/picker-option/picker-option.component';\nimport { PickerTriggerDirective } from './components/picker/picker-trigger.directive';\nimport { PickerComponent } from './components/picker/picker.component';\nimport { PillItemComponent } from './components/pill-item/pill-item.component';\nimport { PillListComponent } from './components/pill-list/pill-list.component';\nimport { ResponsiveInputComponent } from './components/responsive-input/responsive-input.component';\nimport { SelectListComponent } from './components/select-list/select-list.component';\nimport { SingleSelectComponent } from './components/single-select/single-select.component';\nimport { SortingDropdownTriggerComponent } from './components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nimport { SortingDropdownComponent } from './components/sorting-dropdown/sorting-dropdown.component';\nimport { SwitchComponent } from './components/switch/switch.component';\nimport { ContenteditableDirective } from './directives/contenteditable.directive';\nimport { FormErrorDirective } from './directives/form-error.directive';\nimport { FormSubmitDirective } from './directives/form-submit.directive';\nimport { KeyboardActionSourceDirective } from './directives/keyboard-action-source.directive';\nimport { MarkInvalidDirective } from './directives/mark-invalid.directive';\nimport { SelectDropdownDirective } from './directives/select-dropdown.directive';\nimport { SelectableItemDirective } from './directives/selectable-item.directive';\nimport { SelectedOptionDirective } from './directives/selected-option.directive';\nimport { FilterSelectionPipe } from './pipes/filter-selection.pipe';\nimport { FilterTermPipe } from './pipes/filter-term.pipe';\nimport { FormatNumberPipe } from './pipes/format-number.pipe';\n\nexport const FORMS_MODULE_EXPORTS = [\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectDropdownDirective,\n SelectedOptionDirective,\n SelectListComponent,\n SingleSelectComponent,\n SwitchComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n FormatNumberPipe,\n FormErrorDirective,\n FormSubmitDirective,\n ErrorMessageComponent,\n LxDragAndDropListModule,\n ContenteditableDirective,\n InputComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule.forChild(),\n DatepickerUiModule.forRoot(),\n InfiniteScrollModule,\n ClipboardModule,\n OverlayModule,\n LxDragAndDropListModule,\n BasicDropdownComponent,\n ExpandedDropdownComponent,\n BasicDropdownItemComponent,\n BreadcrumbComponent,\n CurrencyInputComponent,\n CurrencySymbolComponent,\n DateInputComponent,\n FilterSelectionPipe,\n FilterTermPipe,\n FormErrorComponent,\n IconComponent,\n KeyboardActionSourceDirective,\n MarkInvalidDirective,\n MultiSelectComponent,\n OptionComponent,\n OptionGroupComponent,\n OptionGroupDropdownComponent,\n OptionsDropdownComponent,\n OptionsSubDropdownComponent,\n CdkOptionsDropdownComponent,\n CdkOptionsSubDropdownComponent,\n PickerComponent,\n PickerOptionComponent,\n PickerTriggerDirective,\n PillListComponent,\n PillItemComponent,\n ResponsiveInputComponent,\n SelectableItemDirective,\n SelectedOptionDirective,\n SelectDropdownDirective,\n SingleSelectComponent,\n SelectListComponent,\n SwitchComponent,\n SortingDropdownComponent,\n SortingDropdownTriggerComponent,\n InputComponent,\n FormatNumberPipe,\n FormErrorDirective,\n ErrorMessageComponent,\n FormSubmitDirective,\n ContenteditableDirective\n ],\n exports: FORMS_MODULE_EXPORTS\n})\nexport class LxFormsModule {}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2, Self } from '@angular/core';\nimport { FormControl, NgControl, Validators } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n@Directive({\n selector: '[lxMaxLengthCounter]',\n standalone: true\n})\nexport class MaxLengthCounterDirective implements OnInit, OnDestroy {\n @Input() lxMaxLengthCounter: number | null = null;\n @Input() lxMaxLengthCounterRef?: HTMLSpanElement;\n private counterElement: HTMLElement | null = null;\n\n private destroy$ = new Subject<void>();\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n @Self() private ngControl: NgControl\n ) {}\n\n ngOnInit() {\n this.setupMaxLengthValidation();\n this.connectCounter();\n this.updateCounter();\n this.subscribeToValueChanges();\n this.setupInputRestriction();\n this.checkForInitialOversize();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private setupMaxLengthValidation() {\n const maxLength = this.getMaxLength();\n const control = this.ngControl.control;\n\n if (maxLength !== null && control) {\n const validators = control.validator ? [control.validator, Validators.maxLength(maxLength)] : Validators.maxLength(maxLength);\n control.setValidators(validators);\n control.updateValueAndValidity();\n }\n }\n\n private getMaxLength(): number | null {\n if (this.lxMaxLengthCounter) {\n return this.lxMaxLengthCounter;\n }\n const control = this.ngControl.control;\n const validatorFn = control?.validator;\n const errors = validatorFn?.(new FormControl({ length: Infinity }));\n const requiredLength = errors?.['maxlength']['requiredLength'];\n this.lxMaxLengthCounter = requiredLength ? requiredLength.toString() : null;\n if (this.lxMaxLengthCounter === null) {\n console.warn('lxMaxLength directive is used without a value or a control with a maxLength validator');\n }\n return requiredLength;\n }\n\n private connectCounter() {\n this.el.nativeElement.classList.add('lx-max-length-counter-input');\n if (this.lxMaxLengthCounterRef) {\n this.counterElement = this.lxMaxLengthCounterRef;\n } else {\n this.createCounter();\n }\n }\n\n private createCounter() {\n this.counterElement = this.renderer.createElement('span');\n this.renderer.addClass(this.counterElement, 'lx-max-length-counter');\n const nextSibling = this.el.nativeElement.nextSibling;\n if (nextSibling) {\n this.renderer.insertBefore(this.el.nativeElement.parentNode, this.counterElement, nextSibling);\n } else {\n this.renderer.appendChild(this.el.nativeElement.parentNode, this.counterElement);\n }\n this.destroy$.subscribe(() => {\n this.renderer.removeChild(this.el.nativeElement.parentNode, this.counterElement);\n });\n }\n\n private updateCounter() {\n if (this.counterElement) {\n const currentLength = this.ngControl.value ? this.ngControl.value.length : 0;\n const maxLength = this.getMaxLength();\n this.renderer.setProperty(this.counterElement, 'textContent', `${currentLength} / ${maxLength}`);\n }\n }\n\n private subscribeToValueChanges() {\n const control = this.ngControl.control;\n if (control) {\n control.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.updateCounter();\n });\n }\n }\n\n private setupInputRestriction() {\n const maxLength = this.getMaxLength();\n if (maxLength !== null) {\n this.renderer.listen(this.el.nativeElement, 'beforeinput', (event: InputEvent) => {\n const input = event.target as HTMLInputElement;\n const selectionStart = input.selectionStart || 0;\n const selectionEnd = input.selectionEnd || 0;\n const newValue = input.value.slice(0, selectionStart) + (event.data || '') + input.value.slice(selectionEnd);\n\n // Prevent input if the new value exceeds the max length and grows\n if (newValue.length > maxLength && newValue.length > input.value.length) {\n event.preventDefault();\n }\n });\n\n this.renderer.listen(this.el.nativeElement, 'input', () => {\n this.updateCounter();\n });\n }\n }\n private checkForInitialOversize() {\n const maxLength = this.getMaxLength();\n const value = this.ngControl.value;\n if (maxLength !== null && value && value.length > maxLength) {\n this.ngControl.control?.markAsDirty({ onlySelf: true });\n this.ngControl.control?.updateValueAndValidity({ onlySelf: true });\n }\n }\n}\n","export type SortingOrder = 'asc' | 'desc';\nexport class Sorting {\n key: string = '';\n order: SortingOrder = 'asc';\n}\n","import { formatDate } from '@angular/common';\nimport { AbstractControl } from '@angular/forms';\n\n/**\n * Due to limitations of the native html datepicker this validator is needed:\n * In the datepicker the min and max values only apply if the date is altered e.g. via scrolling.\n * It is still possible to manually input a value lower or higher than min and max value.\n */\nexport function ValidateDateInForeseeableFuture(control: AbstractControl) {\n // matches yyyy-mm-dd\n const dateRegex = /^\\d{4}\\-(0[1-9]|1[012])\\-(0[1-9]|[12][0-9]|3[01])$/;\n\n if (control.value && dateRegex.test(control.value)) {\n const today = formatDate(new Date(), 'yyyy-MM-dd', 'en');\n\n const maxDate = '2999-12-31';\n if (control.value < today || control.value > maxDate) {\n return {\n dateInForseeableFuture: {\n valid: false\n }\n };\n } else {\n return null;\n }\n }\n return null;\n}\n","import { AbstractControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { Observable, map, of } from 'rxjs';\n\nfunction stringIsInArray(array: string[], stringToFind: string, valueMapFunction?: (value: string) => string) {\n const valueToFind = valueMapFunction ? valueMapFunction(stringToFind).toLocaleLowerCase() : stringToFind.toLowerCase();\n return array.map((item) => item.toLocaleLowerCase()).indexOf(valueToFind) > -1;\n}\n\n/**\n * Validates that a string is not inside an array of strings\n */\nexport function ValidateStringNotInArray(\n array: string[],\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArray'\n): ValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return null;\n }\n if (stringIsInArray(array, control.value, valueMapFunction)) {\n return {\n [validatorName]: true\n };\n }\n return null;\n };\n}\n\nexport function ValidateStringNotInArrayAsync(\n array$: Observable<string[]>,\n valueMapFunction?: (value: string) => string,\n validatorName: string = 'stringNotInArrayAsync'\n): AsyncValidatorFn {\n return function (control: AbstractControl) {\n if (!control.value) {\n return of(null);\n }\n return array$.pipe(map((array) => ValidateStringNotInArray(array, valueMapFunction, validatorName)(control)));\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const MODAL_CLOSE = new InjectionToken<Observable<ModalCloseClickLocation | boolean>>('MODAL_CLOSE');\n\n/**\n * An enum to track how the modal was closed\n * Escape - Esc key press\n * CloseButton - top right close button (x)\n * OutsideClick - click outside the modal\n * Other - modal close with the trigger through closeModal$ subject\n */\nexport enum ModalCloseClickLocation {\n Escape = 'escape',\n CloseButton = 'closeButton',\n OutsideClick = 'outsideClick',\n CancelButton = 'cancelButton',\n Other = 'other'\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-footer',\n templateUrl: 'modal-footer.component.html',\n styleUrls: ['modal-footer.component.scss'],\n standalone: true\n})\nexport class ModalFooterComponent {\n @Input() border: boolean = false;\n}\n","<div class=\"footerContainer\" [class.border]=\"border\">\n <ng-content />\n</div>\n","import { NgIf } from '@angular/common';\nimport { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'lx-modal-header',\n templateUrl: 'modal-header.component.html',\n styleUrls: ['modal-header.component.scss'],\n standalone: true,\n imports: [NgIf]\n})\nexport class ModalHeaderComponent {\n @Input() public title: string = '';\n @Input() public bottomBorder: boolean = true;\n}\n","<div class=\"headerContainer\" [class.bottomBorder]=\"bottomBorder\">\n <ng-content />\n <h1 class=\"lx-heading-2\" *ngIf=\"title.length > 0\">{{ title }}</h1>\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[lxModalContent]',\n standalone: true\n})\nexport class ModalContentDirective {}\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { ConfigurableFocusTrapFactory } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortal, Portal, PortalModule } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChild,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewChild\n} from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Observable, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { ModalContentDirective } from '../../directives/modal-content.directive';\nimport { MODAL_CLOSE, ModalCloseClickLocation } from '../../modal.constants';\nimport { ModalFooterComponent } from '../modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from '../modal-header/modal-header.component';\n\n/**\n * This documentation provides details on the usage and configuration of the Modal.\n *\n * ## Usage\n *\n * 1. Import `LxModalModule` and `LxCoreUiModule` modules from `@leanix/components` in your module where you want to use the component.\n *\n * ```ts\n * import { LxModalModule, LxCoreUiModule } from '@leanix/components';\n * ```\n *\n * 2. Use the **lx-modal** component in your template with the parameters described below.\n *\n * - **`open`**: Whether the modal is open or closed.\n * - **`size`**: 'dialog' | 'dialog-large'.\n * - **`verticalScroll`**: Whether the modal is scrollable or not.\n * - **`showHeader`**: Whether the modal has a header or not.\n * - **`showFooter`**: Whether the modal has a footer or not.\n * - **`showCloseButton`**: Whether to show the close button.\n * - **`showBackButton`**: Whether to show the back button.\n *\n * 3. Use optional **lx-modal-header** component in your template with the parameters described below.\n *\n * - **`title`**: Title of the modal.\n * - **`subtitle`**: Subtitle of the modal.\n * - **`bottomBorder`**: Whether to show a bottom border.\n *\n * 4. Use optional **lx-modal-footer** component in your template with the parameters described below.\n *\n * - **`border`**: Whether to show the footer at the bottom of the modal.\n *\n * **GLOBAL PROVIDERS** required for this component:\n * - `provideAnimations()`\n *\n * **ATTENTION - SCROLLABLE DIALOG**:\n * The <lx-modal> component when used as \"dialog\" is not designed to work with a\n * scrollable body (via `overflow: auto | scroll`) in combination with dropdowns.\n * The overflow on the body will also clip the dropdowns, which is expected.\n *\n * Reasoning:\n * The contents within the dialog should be just a few elements which fit and\n * justify the usage of a dialog. If the content is larger than the dialog, and thus\n * requires scrolling, we should discuss whether to put it into a dialog at all\n * and rather think about putting the content on a separate route or\n * using the fullscreen version of the modal.\n */\n@Component({\n selector: 'lx-modal',\n templateUrl: 'modal.component.html',\n styleUrls: ['modal.component.scss'],\n animations: [\n trigger('modal', [\n transition(':enter', [style({ opacity: 0 }), animate('0.15s', style({ opacity: 1 }))]),\n transition(':leave', animate('0.15s', style({ opacity: 0 })))\n ])\n ],\n standalone: true,\n imports: [PortalModule, NgIf, NgTemplateOutlet, TranslateModule]\n})\nexport class ModalComponent implements OnChanges, OnInit, OnDestroy, AfterViewInit {\n /** @internal */\n readonly NAME = 'ModalComponent';\n /** Whether the modal is open or closed. */\n @Input() open: boolean = false;\n /** Whether to show the close button. */\n @Input() showCloseButton = true;\n /** Whether to show the back button. */\n @Input() showBackButton = false;\n /*\n * If true, then the content area scrolls vertically instead of expanding its height.\n * This can be a problem if the content has dropdowns or date inputs, but can be good if the content has a huge amount of text.\n */\n @Input() verticalScroll = false;\n /** The size of the modal. */\n @Input() size: 'fullscreen' | 'dialog-large' | 'dialog' = 'fullscreen';\n /**\n * Minimum width of the modal.\n *\n * _NB: Some modal implementations rely on this minWidth being 600px_\n */\n @Input() minWidth: string = '600px';\n /** Whether the modal is a focus trap. */\n @Input() isFocusTrap: boolean = false;\n /** Function to check if the modal can be closed. */\n @Input() canModalBeClosed?: (closeLocation: ModalCloseClickLocation | boolean) => Promise<boolean>;\n /** Event emitted when the modal is closed. */\n @Output() close = new EventEmitter<ModalCloseClickLocation>();\n /** Event emitted when the back button is clicked. */\n @Output() back = new EventEmitter<void>();\n\n /** @internal */\n @ContentChild(ModalHeaderComponent) header?: ModalHeaderComponent;\n /** @internal */\n @ContentChild(ModalFooterComponent) footer?: ModalFooterComponent;\n /** @internal */\n @ViewChild(CdkPortal, { static: true }) cdkPortal!: Portal<CdkPortal>;\n private overlayRef!: OverlayRef;\n private oldOverflow?: string;\n /** @internal */\n closeLocation = ModalCloseClickLocation;\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n /** @internal */\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n /** @internal */\n @ContentChild(ModalContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n /** @internal */\n @HostListener('document:keydown.escape') onEscape() {\n if (this.open && this.showCloseButton) {\n this.closeModal(ModalCloseClickLocation.Escape);\n }\n }\n\n constructor(\n private overlay: Overlay,\n private renderer: Renderer2,\n @Optional() @Inject(MODAL_CLOSE) private closeModal$: Observable<ModalCloseClickLocation | boolean>,\n private focusTrap: ConfigurableFocusTrapFactory\n ) {}\n\n ngOnInit() {\n this.closeModal$\n ?.pipe(takeUntil(this.destroyed$))\n .subscribe((closeLocation: ModalCloseClickLocation | boolean) => this.closeModal(closeLocation));\n\n if (this.size === 'fullscreen') {\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n width: '100%',\n height: '100vh'\n });\n } else if (this.size === 'dialog-large') {\n const positionStrategy = this.overlay.position().global().top('4vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n positionStrategy,\n hasBackdrop: true,\n width: '90%',\n height: '90vh'\n });\n } else {\n // size 'dialog'\n const positionStrategy = this.overlay.position().global().top('8vh').centerHorizontally();\n this.overlayRef = this.overlay.create({\n panelClass: this.size,\n minWidth: this.minWidth,\n positionStrategy,\n hasBackdrop: true,\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n }\n\n if (this.size !== 'fullscreen') {\n this.overlayRef\n .backdropClick()\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.closeModal(ModalCloseClickLocation.OutsideClick));\n }\n }\n\n ngOnChanges() {\n if (this.open && this.overlayRef && !this.overlayRef.hasAttached()) {\n this.openModal();\n }\n if (!this.open && this.overlayRef && this.overlayRef.hasAttached()) {\n this.closeModal(ModalCloseClickLocation.Other);\n }\n if (this.open && this.overlayRef && this.overlayRef.hasAttached() && this.isFocusTrap) {\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n }\n\n ngAfterViewInit() {\n if (this.open) {\n timer(0)\n .pipe(takeUntil(this.destroyed$))\n .subscribe(() => this.openModal());\n }\n }\n\n /** @internal */\n openModal() {\n this.oldOverflow = document.documentElement.style.overflowY;\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', 'hidden');\n }\n\n this.overlayRef.attach(this.cdkPortal);\n this.trapFocusInModal(this.overlayRef.hostElement);\n }\n\n /** @internal */\n emitBack() {\n this.back.emit();\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n }\n\n /** @internal */\n async closeModal(closeLocation: ModalCloseClickLocation | boolean) {\n if (!this.canModalBeClosed || (await this.canModalBeClosed(closeLocation))) {\n this.open = false;\n this.overlayRef.detach();\n\n if (this.size === 'fullscreen') {\n this.renderer.setStyle(document.documentElement, 'overflowY', this.oldOverflow);\n }\n\n this.close.emit(typeof closeLocation === 'boolean' ? ModalCloseClickLocation.Other : closeLocation);\n }\n }\n\n private trapFocusInModal(hostElement: HTMLElement) {\n this.focusTrap.create(hostElement);\n }\n}\n","<ng-template cdkPortal>\n <div\n *ngIf=\"open\"\n role=\"dialog\"\n class=\"lxmodal\"\n [class.lxmodal--fullscreen]=\"size === 'fullscreen'\"\n [class.lxmodal--dialog]=\"size === 'dialog'\"\n [class.lxmodal--dialog-large]=\"size === 'dialog-large'\"\n [class.lxmodal--withFooter]=\"!!footer\"\n [class.lxmodal--verticalScroll]=\"verticalScroll\"\n @modal\n >\n <div\n *ngIf=\"size === 'fullscreen' && showBackButton\"\n (click)=\"emitBack()\"\n (keyup.enter)=\"emitBack()\"\n tabindex=\"0\"\n role=\"button\"\n class=\"fal fa-long-arrow-left\"\n ></div>\n <!-- TODO lx-button doesn't comply with modal close button style yet -->\n <!-- eslint-disable-next-line @nx/workspace-no-icon-in-button-content -->\n <button\n *ngIf=\"showCloseButton\"\n (click)=\"closeModal(closeLocation.CloseButton)\"\n [attr.aria-label]=\"NAME + '.close' | translate\"\n class=\"fal fa-times closeButton\"\n ></button>\n <ng-content *ngIf=\"header\" select=\"lx-modal-header\" />\n <div class=\"modalContentContainer\" [class.lxThinScrollbar]=\"verticalScroll\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </div>\n <ng-content *ngIf=\"footer\" select=\"lx-modal-footer\" />\n </div>\n</ng-template>\n<ng-template #implicitContent>\n <ng-content />\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { ModalFooterComponent } from './components/modal-footer/modal-footer.component';\nimport { ModalHeaderComponent } from './components/modal-header/modal-header.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { ModalContentDirective } from './directives/modal-content.directive';\n\nexport const MODAL_MODULE_EXPORTS = [ModalComponent, ModalHeaderComponent, ModalFooterComponent, ModalContentDirective];\n\n@NgModule({\n imports: [\n CommonModule,\n PortalModule,\n OverlayModule,\n A11yModule,\n TranslateModule.forChild(),\n ModalComponent,\n ModalHeaderComponent,\n ModalFooterComponent,\n ModalContentDirective\n ],\n exports: MODAL_MODULE_EXPORTS\n})\nexport class LxModalModule {}\n","import { Directive } from '@angular/core';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n selector: '[lxPopoverContent]',\n standalone: true\n})\nexport class PopoverContentDirective {}\n","import { NgClass, NgIf, NgTemplateOutlet } from '@angular/common';\nimport { Component, ContentChild, EventEmitter, Input, OnChanges, Output, SimpleChanges, TemplateRef, ViewChild } from '@angular/core';\nimport { SatPopoverComponent, SatPopoverHorizontalAlign, SatPopoverModule, SatPopoverVerticalAlign } from '@ncstate/sat-popover';\nimport { PopoverContentDirective } from '../../directives/popover-content.directive';\nimport { PopoverTriggerDirective } from '../../directives/popover-hover.directive';\n\n/**\n * The Popover component is based on the [ncstate-sat/popover](https://github.com/ncstate-sat/popover) library.\n *\n * ## Examples\n\n * This popover encapsulates this open source library: https://github.com/ncstate-sat/popover,\n * make sure to also check out the docs over there.\n *\n * As of today they are two trigger strategies to display a popover.\n * 1. Show on hovering the anchor and while hovering the popover body.\n * 2. Show on click and while hovering the popover body.\n *\n * For use case 1. you would use the lxPopoverHover directive, which exports as hoverAnchor.\n *\n * ### Example:\n * ```html\n * <div lxPopoverHover\n * hoverAnchor\n * satPopoverAnchor\n * #anchor=\"hoverAnchor\"></div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\">\n * <p>Popover content</p>\n * </lx-popover>\n * ```\n *\n * For use case 2. you would use the lxPopoverClick directive, which exports as clickAnchor.\n * Note: Since the only component where we use the lxPopoverClick directive (ReportComponent)\n * needs to fetch some data before opening it, we do not register a click EventListener in this directive,\n * but require the developer to implement that in the component, where the popover is used.\n *\n * ### Example:\n * ```html\n * <div lxPopoverClick\n * clickAnchor\n * satPopoverAnchor\n * #anchor=\"clickAnchor\"\n * (click)=\"popover.open()\">Click Me!</div>\n * <lx-popover [trigger]=\"anchor\"\n * horizontalAlign=\"after\"\n * verticalAlign=\"center\"\n * #popover>\n * <p>Popover content</p>\n * </lx-popover>\n * ```\n *\n * If this component is used with angularCompilerOptions strictTemplates=true,\n * satPopoverAnchor must be set to the reference to the SatPopover inside lx-popover.\n *\n * ### Example:\n * ```html\n * <div [satPopoverAnchor]=\"popover.satPopover\"></div>\n * <lx-popover #popover>\n * <p>Popover content</p>\n * </lx-popover>\n * ```\n */\n@Component({\n selector: 'lx-popover',\n templateUrl: 'popover.component.html',\n styleUrls: ['popover.component.scss'],\n standalone: true,\n imports: [SatPopoverModule, NgClass, NgIf, NgTemplateOutlet]\n})\nexport class PopoverComponent implements OnChanges {\n /** The trigger directive that will open the popover. This is also the anchor for the popover. */\n @Input() trigger!: PopoverTriggerDirective;\n /** The horizontal alignment of the popover (`center` by default). */\n @Input() horizontalAlign!: SatPopoverHorizontalAlign;\n /** The vertical alignment of the popover (`above` by default). */\n @Input() verticalAlign!: SatPopoverVerticalAlign;\n /** Whether to apply margins. */\n @Input() noMargin = false;\n /** Whether to allow the popover to overflow the viewport. */\n @Input() allowOverflow = false;\n /** Whether to focus the first focusable element in the popover when it is opened. */\n @Input() autoFocus = false;\n /** Whether to restore focus to the previously-focused element when the popover is closed. */\n @Input() restoreFocus = true;\n /** Whether the popover has a backdrop. */\n @Input() hasBackdrop = false;\n /**\n * If you have a popover, that should usually be displayed above or below its anchor,\n * and this anchor is in a scrollable container, you should set this to true.\n * SatPopover will open this popover in the direction where there is enough space,\n * so its position might differ from the horizontalAlign and verticalAlign values.\n * In this case we rely on the SatPopover::_classList property to get the computed\n * position of the popover after opening.\n */\n @Input() adaptMarginsForViewportAlignChange = false;\n\n /** Event emitted when the popover is opened. */\n @Output() opened = new EventEmitter<void>();\n /** Event emitted when the popover is closed. */\n @Output() closed = new EventEmitter<void>();\n\n /** @internal */\n @ViewChild(SatPopoverComponent, { static: true }) satPopover!: SatPopoverComponent;\n /** @internal */\n @ViewChild('implicitContent', { static: true }) implicitContent!: TemplateRef<any>;\n\n /** @internal */\n @ContentChild(PopoverContentDirective, { read: TemplateRef, static: true }) explicitContent?: TemplateRef<any>;\n\n /** @internal */\n marginClasses!: string;\n\n get content() {\n return this.explicitContent || this.implicitContent;\n }\n\n get isOpen() {\n return this._isOpen;\n }\n private _isOpen = false;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['horizontalAlign'] && changes['verticalAlign']) {\n this.marginClasses = this.getDefaultMarginClasses(this.horizontalAlign, this.verticalAlign);\n }\n }\n\n /** @internal */\n open() {\n this.satPopover.open();\n }\n\n /** @internal */\n close() {\n this.satPopover.close();\n }\n\n /** @internal */\n onOpen() {\n this._isOpen = true;\n this.opened.emit();\n }\n\n /** @internal */\n onAfterOpen() {\n if (this.adaptMarginsForViewportAlignChange) {\n this.marginClasses = this.getMarginClassesForClassList(this.satPopover._classList);\n }\n }\n\n /** @internal */\n onClose() {\n this._isOpen = false;\n this.closed.emit();\n }\n\n /**\n * SatPopover::_classList will contain a map of alignment CSS classes, once the popover was opened.\n * These alignment classes can be different from what you would expect from the horizontal- and verticalAlign inputs,\n * because there might not be enough space above the anchor to meet the verticalAlign='above' criteria,\n * so it will be displayed below the anchor instead.\n */\n private getMarginClassesForClassList(satPopoverClassList: { [className: string]: boolean }): string {\n if (this.noMargin) {\n return '';\n }\n\n if (satPopoverClassList['sat-popover-above']) {\n return this.marginClasses.includes('top') ? this.marginClasses : 'top';\n }\n\n if (satPopoverClassList['sat-popover-below']) {\n return this.marginClasses.includes('bottom') ? this.marginClasses : 'bottom';\n }\n\n if (satPopoverClassList['sat-popover-before']) {\n return this.marginClasses.includes('left') ? this.marginClasses : 'left';\n }\n\n if (satPopoverClassList['sat-popover-after']) {\n return this.marginClasses.includes('right') ? this.marginClasses : 'right';\n }\n\n if (satPopoverClassList['sat-popover-center']) {\n return '';\n }\n return '';\n }\n\n private getDefaultMarginClasses(horizontalAlign: SatPopoverHorizontalAlign, verticalAlign: SatPopoverVerticalAlign): string {\n if (this.noMargin) {\n return '';\n }\n\n if (horizontalAlign === 'after') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'right';\n } else if (verticalAlign === 'above') {\n return 'right top';\n } else if (verticalAlign === 'below') {\n return 'right bottom';\n }\n }\n\n if (horizontalAlign === 'before') {\n if (verticalAlign === 'center' || verticalAlign === 'start' || verticalAlign === 'end') {\n return 'left';\n } else if (verticalAlign === 'above') {\n return 'left top';\n } else if (verticalAlign === 'below') {\n return 'left bottom';\n }\n }\n\n if (horizontalAlign === 'center' || horizontalAlign === 'start' || horizontalAlign === 'end') {\n if (verticalAlign === 'above') {\n return 'top';\n } else if (verticalAlign === 'below') {\n return 'bottom';\n }\n }\n return '';\n }\n}\n","<sat-popover\n [anchor]=\"trigger.anchor\"\n [horizontalAlign]=\"horizontalAlign\"\n [verticalAlign]=\"verticalAlign\"\n [restoreFocus]=\"restoreFocus\"\n [lockAlignment]=\"true\"\n [autoFocus]=\"autoFocus\"\n [hasBackdrop]=\"hasBackdrop\"\n openTransition=\"0ms\"\n closeTransition=\"0ms\"\n (opened)=\"onOpen()\"\n (afterOpen)=\"onAfterOpen()\"\n (closed)=\"onClose()\"\n>\n <div\n class=\"popoverContainer\"\n [ngClass]=\"marginClasses\"\n [class.overflowHidden]=\"!allowOverflow\"\n (mouseenter)=\"trigger.showPopover(true)\"\n (mouseleave)=\"!hasBackdrop && trigger.closePopover(true)\"\n (keydown.escape)=\"$event.stopPropagation(); trigger.closePopover(true)\"\n >\n <ng-container *ngIf=\"isOpen\">\n <ng-container *ngTemplateOutlet=\"content\" />\n </ng-container>\n </div>\n</sat-popover>\n<ng-template #implicitContent>\n <ng-content />\n</ng-template>\n","import { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchorDirective } from '@ncstate/sat-popover';\nimport { Observable, Subject, of } from 'rxjs';\nimport { delay, filter, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../shared/observe';\nimport { PopoverTriggerDirective } from './popover-hover.directive';\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'clickAnchor',\n selector: '[lxPopoverClick]',\n standalone: true\n})\nexport class PopoverClickDirective implements PopoverTriggerDirective, AfterViewInit, OnDestroy {\n @Input() lxPopoverPinned = false;\n @Observe('lxPopoverPinned') pinned$!: Observable<boolean>;\n\n private onPopoverShow = new Subject<void>();\n\n private onMouseLeave = new Subject<void>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchorDirective) {}\n\n ngAfterViewInit() {\n this.onMouseLeave\n .pipe(\n switchMap(() => this.pinned$),\n filter((pinned) => !pinned),\n switchMap(() => of(null).pipe(delay(300), takeUntil(this.onPopoverShow))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.close());\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n showPopover() {\n this.onPopoverShow.next();\n }\n\n @HostListener('mouseleave')\n closePopover() {\n this.onMouseLeave.next();\n }\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { AfterViewInit, Directive, HostListener, Input, OnDestroy } from '@angular/core';\nimport { SatPopoverAnchorDirective } from '@ncstate/sat-popover';\nimport { Subject, of } from 'rxjs';\nimport { delay, switchMap, takeUntil } from 'rxjs/operators';\n\nexport interface PopoverTriggerDirective {\n anchor: SatPopoverAnchorDirective;\n showPopover(skipDelay?: boolean): void;\n closePopover(skipDelay?: boolean): void;\n}\n\n/**\n * @see PopoverComponent for usage documentation.\n */\n@Directive({\n exportAs: 'hoverAnchor',\n selector: '[lxPopoverHover]',\n standalone: true\n})\nexport class PopoverHoverDirective implements AfterViewInit, OnDestroy {\n /**\n * Amount of time to delay (ms) after hovering starts before\n * the popover opens.\n */\n @Input()\n get lxPopoverHover() {\n return this._lxPopoverHover;\n }\n set lxPopoverHover(val: unknown) {\n this._lxPopoverHover = coerceNumberProperty(val, 200);\n }\n private _lxPopoverHover!: number;\n\n /**\n * Relevant for tooltip style.\n */\n @Input()\n skipCloseDelay = false;\n\n /** Emits when the user's mouse enters the element. */\n private onMouseEnter = new Subject<{ skipDelay: boolean }>();\n\n /** Emits when the user's mouse leaves the element. */\n private onMouseLeave = new Subject<{ skipDelay: boolean }>();\n\n readonly destroyed$ = new Subject<void>();\n\n constructor(public anchor: SatPopoverAnchorDirective) {}\n\n ngAfterViewInit() {\n // Whenever the user hovers this host element, delay the configured\n // amount of time and open the popover. Terminate if the mouse leaves\n // the host element before the delay is complete.\n this.onMouseEnter\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : this._lxPopoverHover), takeUntil(this.onMouseLeave))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => this.anchor.popover.open());\n\n // Whenever the user leaves this host element, delay the closing of the popover by the configured delay.\n // Abort closing if during this delay another mouseEnter event occurs, for example by the popover itself.\n this.onMouseLeave\n .pipe(\n switchMap(({ skipDelay }) => of(null).pipe(delay(skipDelay ? 0 : 300), takeUntil(this.onMouseEnter))),\n takeUntil(this.destroyed$)\n )\n .subscribe(() => {\n if (this.anchor.popover.isOpen()) {\n // This is the default case: the popover was shown, now we want to close it.\n this.anchor.popover.close();\n } else {\n // This can happen if we have delayed the opening of the popover, but the mouse left the anchor before\n // the popover was shown. In this case, this.anchor.popover.close() would not generate a closed event,\n // which is why we generate it manually here. This behavior supports cases where a \"dummy\" anchor is\n // dynamically created, like the Fact Sheet detail popover in Reporting or the relations diagram.\n this.anchor.popover.closed.emit();\n }\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n @HostListener('mouseenter')\n showPopover(skipDelay = false) {\n this.onMouseEnter.next({ skipDelay });\n }\n\n @HostListener('mouseleave')\n closePopover(skipDelay = this.skipCloseDelay) {\n this.onMouseLeave.next({ skipDelay });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SatPopoverModule } from '@ncstate/sat-popover';\nimport { PopoverComponent } from './components/popover/popover.component';\nimport { PopoverClickDirective } from './directives/popover-click.directive';\nimport { PopoverContentDirective } from './directives/popover-content.directive';\nimport { PopoverHoverDirective } from './directives/popover-hover.directive';\n\n@NgModule({\n imports: [CommonModule, SatPopoverModule, PopoverHoverDirective, PopoverClickDirective, PopoverComponent, PopoverContentDirective],\n exports: [SatPopoverModule, PopoverClickDirective, PopoverHoverDirective, PopoverComponent, PopoverContentDirective]\n})\nexport class LxPopoverUiModule {}\n","/**\n * Key codes that we listen to for\n * user action on our lx-tab-group\n */\nexport enum LxTabGroupKeyCode {\n ArrowRight = 'ArrowRight',\n ArrowLeft = 'ArrowLeft',\n Home = 'Home',\n End = 'End'\n}\n","import { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { uniqueId } from 'lodash/fp';\nimport { Observable, switchMap } from 'rxjs';\nimport { CounterComponent } from '../../../core-ui/components/counter/counter.component';\nimport { Observe } from '../../../shared/observe';\nimport { LxTabGroupKeyCode } from '../tab-group/tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab',\n templateUrl: 'tab.component.html',\n styleUrls: ['tab.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, CounterComponent, PortalModule]\n})\nexport class TabComponent {\n /**\n * The icon input takes a font awesome selector\n * WARNING: Currently this component does not support using an icon together with a label or counter.\n */\n @Input() icon?: string;\n @Input() label: string = '';\n @Input() title?: string;\n /**\n * In some parts of the application, we are passing a plain string to the tabLink input, whereas in\n * most parts, the input is passed as an array. The RouterLink directive also accepts both types,\n * therefore we are using type of the input as string | any[].\n */\n @Input() tabLink?: string | any[];\n @Input() counter?: number;\n @Input() routerLinkActiveOptions: { exact: boolean } = { exact: true };\n @Input() counterBadgeSize: 'default' | 'small' = 'default';\n @Input() noMargin: boolean = false;\n @Input() noLeftMarginForFirstTab: boolean = false;\n @Input() background: 'white' | 'gray' = 'white';\n @Input() disabled: boolean = false;\n\n @Output() switch = new EventEmitter();\n @Output() keyDownAction = new EventEmitter<KeyboardEvent>();\n\n tabId: string;\n\n @ViewChild('contentTemplate', { static: true })\n content?: TemplatePortal<any>;\n\n @ViewChild('tabElement') tabElement?: ElementRef<HTMLElement>;\n\n @Observe('routerLinkActive') routerLinkActive$!: Observable<RouterLinkActive>;\n @ViewChild(RouterLinkActive) routerLinkActive?: RouterLinkActive;\n /**\n * Used by the lx-tab-group to be notified when a lx-tab that is a link\n * is set to active by the Angular router.\n */\n routerLinkActiveChange$: Observable<boolean>;\n\n set isActive(value: boolean) {\n this._isActive = value;\n this.cd.markForCheck();\n }\n get isActive() {\n if (this.routerLinkActive) {\n return this.routerLinkActive.isActive;\n }\n return this._isActive;\n }\n private _isActive = false;\n\n constructor(\n private cd: ChangeDetectorRef,\n private router: Router,\n private activatedRoute: ActivatedRoute\n ) {\n this.tabId = uniqueId('tab');\n this.routerLinkActiveChange$ = this.routerLinkActive$.pipe(switchMap((routerLinkActive) => routerLinkActive.isActiveChange));\n }\n\n select(): void {\n this.switch.emit();\n }\n\n setFocus(): void {\n this.tabElement?.nativeElement?.focus();\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (Object.values<string>(LxTabGroupKeyCode).includes(event.code)) {\n // Send this KeyDown event up to our parent to be handled there\n this.keyDownAction.emit(event);\n return;\n }\n\n const isKeyCodeToSelectFocusedTab = event.code === 'Enter' || event.code === 'Space';\n if (!isKeyCodeToSelectFocusedTab) {\n return;\n }\n\n /**\n * We are preventing the default browser behavior when the `SPACE` key is pressed, in which\n * case the browser would scroll down the page.\n */\n event.preventDefault();\n if (this.tabLink) {\n const formattedTabLink = typeof this.tabLink === 'string' ? [this.tabLink] : this.tabLink;\n this.router.navigate(formattedTabLink, { relativeTo: this.activatedRoute }).then(() => {\n this.select();\n });\n } else {\n this.select();\n }\n }\n}\n","<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\" />\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-counter *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\" />\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content />\n </div>\n </ng-template>\n</li>\n","import { PortalModule } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { Observable, Subject, merge } from 'rxjs';\nimport { first, map, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { Observe } from '../../../shared/observe';\nimport { TabComponent } from '../tab/tab.component';\nimport { LxTabGroupKeyCode } from './tab-group-key-codes.enum';\n\n@Component({\n selector: 'lx-tab-group',\n templateUrl: 'tab-group.component.html',\n styleUrls: ['tab-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [PortalModule, NgTemplateOutlet]\n})\nexport class TabGroupComponent implements OnChanges, AfterContentInit, OnDestroy {\n @Input() isCentered: boolean = false;\n /**\n * The tab whose content should be displayed.\n */\n @Input() selectedIndex: number = 0;\n @Output() indexChange = new EventEmitter<number>();\n\n /** @internal */\n @Observe('tabsQueryList') tabsQueryList$!: Observable<QueryList<TabComponent>>;\n /** @internal */\n @ContentChildren(TabComponent) tabsQueryList?: QueryList<TabComponent>;\n /** @internal */\n @ViewChild('tabListElement') tabListElement?: ElementRef<HTMLElement>;\n\n /**\n * The tab that is currently focused via keyboard.\n * @internal\n */\n focusedIndex: number = 0;\n\n /** @internal */\n get tabIds(): string[] {\n return this.tabs.map((t) => t.tabId);\n }\n private get tabs(): TabComponent[] {\n return this.tabsQueryList?.toArray() || [];\n }\n\n /** @internal */\n get activeTabPortal() {\n return this.tabs[this.selectedIndex]?.content;\n }\n\n /** @internal */\n readonly destroyed$ = new Subject<void>();\n\n constructor(private cd: ChangeDetectorRef) {\n this.listenToFirstTabSelectByAngularRouterForTabLinks().subscribe((tab) => {\n // synchonize the focusedIndex and selectedIndex state with the tab that is active through the current route.\n this.switchTo(tab);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const tab = this.tabs[this.selectedIndex];\n if (changes['selectedIndex'] && !changes['selectedIndex'].isFirstChange() && tab) {\n this.switchTo(tab);\n }\n }\n\n ngAfterContentInit() {\n if (this.tabs[0]) {\n this.tabs[0].noLeftMarginForFirstTab = true;\n }\n const tab = this.tabs[this.selectedIndex];\n if (tab && !tab.tabLink) {\n this.switchTo(tab);\n }\n\n const listenToTabsSwitch = (tabs: TabComponent[]) => merge(...tabs.map((tab) => tab.switch.asObservable().pipe(map(() => tab))));\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => listenToTabsSwitch(this.tabs)),\n takeUntil(this.destroyed$)\n )\n .subscribe((tab) => {\n this.switchTo(tab);\n });\n\n this.tabsQueryList?.changes\n .pipe(\n startWith(null),\n switchMap(() => merge(...this.tabs.map((tab) => tab.keyDownAction))),\n takeUntil(this.destroyed$)\n )\n .subscribe((event) => {\n this.handleKeyDown(event);\n });\n }\n\n ngOnDestroy() {\n this.destroyed$.next();\n }\n\n /** @internal */\n onFocusOut(event: any) {\n if (!this.tabListElement?.nativeElement?.contains(event.relatedTarget)) {\n // resync focused index on selected index when leaving tabs\n this.focusedIndex = this.selectedIndex;\n }\n }\n\n /** @internal */\n switchTo(tab: TabComponent) {\n this.tabsQueryList?.forEach((t, index) => {\n t.isActive = t === tab;\n if (t.isActive) {\n this.selectedIndex = index;\n this.focusedIndex = index;\n this.indexChange.emit(index);\n }\n });\n this.cd.markForCheck();\n }\n\n /** @internal */\n handleKeyDown(event: KeyboardEvent) {\n switch (event.code) {\n case LxTabGroupKeyCode.ArrowRight:\n const newTabIndex = (this.focusedIndex + 1) % this.tabs.length;\n this.focusTab(newTabIndex);\n break;\n case LxTabGroupKeyCode.ArrowLeft:\n const previousTabIndex = this.focusedIndex === 0 ? this.tabs.length - 1 : this.focusedIndex - 1;\n this.focusTab(previousTabIndex);\n break;\n case LxTabGroupKeyCode.Home:\n event.preventDefault();\n this.focusTab(0);\n break;\n case LxTabGroupKeyCode.End:\n event.preventDefault();\n this.focusTab(this.tabs.length - 1);\n break;\n }\n }\n\n private focusTab(tabIndex: number): void {\n const tab = this.tabs[tabIndex];\n if (!tab) {\n return;\n }\n\n tab.setFocus();\n this.focusedIndex = tabIndex;\n }\n\n private listenToFirstTabSelectByAngularRouterForTabLinks() {\n return this.tabsQueryList$.pipe(\n switchMap(() => {\n const tabLinks = this.tabs.filter((tab) => !!tab.tabLink);\n return merge(...tabLinks.map((tab) => tab.routerLinkActiveChange$.pipe(map(() => tab))));\n }),\n first(),\n takeUntil(this.destroyed$) // added in addition to first() here since for tab groups without links no single value will ever be emit.\n );\n }\n}\n","<ul\n #tabListElement\n class=\"tabs\"\n role=\"tablist\"\n (focusout)=\"onFocusOut($event)\"\n [attr.aria-owns]=\"tabIds.join(' ')\"\n [class.centered]=\"isCentered\"\n>\n <ng-content />\n</ul>\n\n<ng-template [cdkPortalOutlet]=\"activeTabPortal\" />\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { TabGroupComponent } from './components/tab-group/tab-group.component';\nimport { TabComponent } from './components/tab/tab.component';\n\n@NgModule({\n imports: [PortalModule, CommonModule, RouterModule, TabGroupComponent, TabComponent],\n exports: [TabGroupComponent, TabComponent]\n})\nexport class LxTabUiModule {}\n","/*----------------- core-ui -----------------*/\n\nexport * from './lib/core-ui/core-ui.constants';\nexport * from './lib/core-ui/core-ui.module';\n\n// Pipes\nexport * from './lib/core-ui/pipes/br.pipe';\nexport * from './lib/core-ui/pipes/contrast-color.pipe';\nexport * from './lib/core-ui/pipes/custom-date.pipe';\nexport * from './lib/core-ui/pipes/highlight-range.pipe';\nexport * from './lib/core-ui/pipes/highlight-term.pipe';\nexport * from './lib/core-ui/pipes/lx-is-uuid.pipe';\nexport * from './lib/core-ui/pipes/lx-time-ago.pipe';\nexport * from './lib/core-ui/pipes/lx-translate.pipe';\nexport * from './lib/core-ui/pipes/markdown.pipe';\nexport * from './lib/core-ui/pipes/nbsp.pipe';\nexport * from './lib/core-ui/pipes/sort.pipe';\nexport * from './lib/core-ui/pipes/translation-after.pipe';\nexport * from './lib/core-ui/pipes/translation-before.pipe';\nexport * from './lib/core-ui/pipes/translation-between.pipe';\nexport * from './lib/core-ui/pipes/unescape-curly-braces.pipe';\n\n// Directives\nexport * from './lib/core-ui/directives/after-view-init.directive';\nexport * from './lib/core-ui/directives/autoclose.directive';\nexport * from './lib/core-ui/directives/autofocus.directive';\n\n// Components\nexport * from './lib/core-ui/components/avatar-group/avatar-group.component';\nexport * from './lib/core-ui/components/avatar/avatar.component';\nexport * from './lib/core-ui/components/badge/badge.component';\nexport * from './lib/core-ui/components/banner/banner.component';\nexport * from './lib/core-ui/components/button-group/button-group.component';\nexport * from './lib/core-ui/components/button/button.component';\nexport * from './lib/core-ui/components/card/card.component';\nexport * from './lib/core-ui/components/collapsible/collapsible.component';\nexport * from './lib/core-ui/components/counter/counter.component';\nexport * from './lib/core-ui/components/ellipsis/ellipsis.component';\nexport * from './lib/core-ui/components/empty-state/empty-state.component';\nexport * from './lib/core-ui/components/icon-scale/icon-scale.component';\nexport * from './lib/core-ui/components/skeleton/skeleton.component';\nexport * from './lib/core-ui/components/spinner/spinner.component';\nexport * from './lib/core-ui/components/stepper/stepper.component';\nexport * from './lib/core-ui/components/table/table-header/table-header.component';\nexport * from './lib/core-ui/components/table/table.component';\nexport * from './lib/core-ui/components/tiny-spinner/tiny-spinner.component';\nexport * from './lib/core-ui/components/tokenizer/token/token.component';\nexport * from './lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component';\nexport * from './lib/core-ui/components/tokenizer/tokenizer.component';\n// Tooltip\nexport * from './lib/core-ui/tooltip/tooltip-position.interface';\nexport * from './lib/core-ui/tooltip/tooltip.component';\nexport * from './lib/core-ui/tooltip/tooltip.directive';\n\n// Models\nexport * from './lib/core-ui/components/avatar/avatar.model';\n\n// Linkify\nexport * from './lib/core-ui/linkify/linkify.pipe';\nexport * from './lib/core-ui/linkify/unlinkify.pipe';\n\n// Functions\nexport * from './lib/core-ui/components/avatar/avatar.helpers';\nexport * from './lib/core-ui/functions/core-css.helpers';\nexport * from './lib/core-ui/functions/highlight-text.function';\n\n// Services\nexport * from './lib/core-ui/directives/autoclose-group.service';\nexport * from './lib/core-ui/services/resize-observer.service';\n/*----------------- forms-ui -----------------*/\n\nexport * from './lib/forms-ui/forms-ui.module';\n\n// Components\nexport * from './lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component';\nexport * from './lib/forms-ui/components/basic-dropdown/basic-dropdown.component';\nexport * from './lib/forms-ui/components/breadcrumb/breadcrumb.component';\nexport * from './lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component';\nexport * from './lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/currency/currency-input.component';\nexport * from './lib/forms-ui/components/currency/currency-symbol-map.constant';\nexport * from './lib/forms-ui/components/currency/currency-symbol.component';\nexport * from './lib/forms-ui/components/date-input/date-input.component';\nexport * from './lib/forms-ui/components/date-picker-ui/date-formatter';\nexport * from './lib/forms-ui/components/date-picker-ui/datepicker-ui.module';\nexport * from './lib/forms-ui/components/date-picker-ui/datepicker.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component';\nexport * from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component';\nexport * from './lib/forms-ui/components/error-message/error-message.component';\nexport * from './lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component';\nexport * from './lib/forms-ui/components/form-error/form-error.component';\nexport * from './lib/forms-ui/components/icon/icon.component';\nexport * from './lib/forms-ui/components/input/input.component';\nexport * from './lib/forms-ui/components/multi-select/multi-select.component';\nexport * from './lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component';\nexport * from './lib/forms-ui/components/option-group/option-group.component';\nexport * from './lib/forms-ui/components/option/option.component';\nexport * from './lib/forms-ui/components/options-dropdown/options-dropdown.component';\nexport * from './lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component';\nexport * from './lib/forms-ui/components/picker-option/picker-option.component';\nexport * from './lib/forms-ui/components/picker/picker.component';\nexport * from './lib/forms-ui/components/pill-item/pill-item.component';\nexport * from './lib/forms-ui/components/pill-list/pill-list.component';\nexport * from './lib/forms-ui/components/responsive-input/responsive-input.component';\nexport * from './lib/forms-ui/components/select-list/select-list.component';\nexport * from './lib/forms-ui/components/single-select/single-select.component';\nexport * from './lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component';\nexport * from './lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component';\nexport * from './lib/forms-ui/components/switch/switch.component';\n\n// Directives\nexport * from './lib/forms-ui/components/keyboard-select.directive';\nexport * from './lib/forms-ui/components/picker/picker-trigger.directive';\nexport * from './lib/forms-ui/directives/contenteditable.directive';\nexport * from './lib/forms-ui/directives/form-error.directive';\nexport * from './lib/forms-ui/directives/form-submit.directive';\nexport * from './lib/forms-ui/directives/keyboard-action-source.directive';\nexport * from './lib/forms-ui/directives/mark-invalid.directive';\nexport * from './lib/forms-ui/directives/max-length-counter.directive';\nexport * from './lib/forms-ui/directives/select-dropdown.directive';\nexport * from './lib/forms-ui/directives/selectable-item.directive';\nexport * from './lib/forms-ui/directives/selected-option.directive';\nexport * from './lib/forms-ui/models/base-select.directive';\n\n// Models\nexport * from './lib/forms-ui/models/single-select-padding.interface';\nexport * from './lib/forms-ui/models/sorting.interface';\n\n// Helpers\nexport * from './lib/forms-ui/components/date-picker-ui/datepicker.config';\nexport * from './lib/forms-ui/helpers/key-codes.constants';\n\n// Pipes\nexport * from './lib/forms-ui/pipes/filter-selection.pipe';\nexport * from './lib/forms-ui/pipes/filter-term.pipe';\nexport * from './lib/forms-ui/pipes/format-number.pipe';\n\n// Validators\nexport * from './lib/forms-ui/validators/date-in-foreseeable-future.validator';\nexport * from './lib/forms-ui/validators/string-not-in-array.validator';\n\n// Modules\nexport { LxDragAndDropListModule } from './lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module';\n\n/*----------------- modal-ui -----------------*/\n\nexport * from './lib/modal-ui/modal.constants';\nexport * from './lib/modal-ui/modal.module';\n\nexport * from './lib/modal-ui/components/modal-footer/modal-footer.component';\nexport * from './lib/modal-ui/components/modal-header/modal-header.component';\nexport * from './lib/modal-ui/components/modal/modal.component';\n\nexport * from './lib/modal-ui/directives/modal-content.directive';\n\n/*----------------- popover-ui -----------------*/\n\nexport * from './lib/popover-ui/popover-ui.module';\n\nexport * from './lib/popover-ui/components/popover/popover.component';\n\nexport * from './lib/popover-ui/directives/popover-click.directive';\nexport * from './lib/popover-ui/directives/popover-content.directive';\nexport * from './lib/popover-ui/directives/popover-hover.directive';\n\n/*----------------- tab-ui -----------------*/\n\nexport * from './lib/tab-ui/components/tab-group/tab-group.component';\nexport * from './lib/tab-ui/components/tab/tab.component';\nexport * from './lib/tab-ui/tab-ui.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["IconComponent","i1.ResizeObserverService","i2","i1","i1.TableComponent","i1.AutocloseGroupService","isEqual","BOTTOM_LEFT_POSITION","BOTTOM_RIGHT_POSITION","TOP_LEFT_POSITION","TOP_RIGHT_POSITION","LEFT_ALIGN_POSITIONS","RIGHT_ALIGN_POSITIONS","_toString","_isNaN","format","fm","i1.DatePickerInnerComponent","i1.DatepickerConfig","i3","observableFromEvent","_filter","i3.FormSubmitDirective","filter","map","i4","uniqueId","switchMap"],"mappings":"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"}
|