{"version":3,"file":"truly-ui.mjs","sources":["../../projects/truly-ui/src/components/accordion/services/accordion.service.ts","../../projects/truly-ui/src/components/icons/parts/tl-dx-icon/tl-dx-icon.component.ts","../../projects/truly-ui/src/components/icons/parts/tl-dx-icon/tl-dx-icon.component.html","../../projects/truly-ui/src/components/icons/parts/tl-fa-icon/tl-fa-icon.component.ts","../../projects/truly-ui/src/components/icons/parts/tl-fa-icon/tl-fa-icon.component.html","../../projects/truly-ui/src/components/icons/parts/tl-ion-icon/tl-ion-icon.component.ts","../../projects/truly-ui/src/components/icons/parts/tl-ion-icon/tl-ion-icon.component.html","../../projects/truly-ui/src/components/icons/icons.ts","../../projects/truly-ui/src/components/icons/icons.html","../../projects/truly-ui/src/components/accordion/parts/accordion-item/accordion-item.ts","../../projects/truly-ui/src/components/accordion/parts/accordion-item/accordion-item.html","../../projects/truly-ui/src/components/accordion/accordion.ts","../../projects/truly-ui/src/components/accordion/accordion.html","../../projects/truly-ui/src/components/icons/index.ts","../../projects/truly-ui/src/components/accordion/index.ts","../../projects/truly-ui/src/components/autocomplete/interfaces/autocomplete.config.ts","../../projects/truly-ui/src/components/core/classes/datasource-list.ts","../../projects/truly-ui/src/components/core/directives/itemSelected/item-selected.directive.ts","../../projects/truly-ui/src/components/core/helper/scrollIntoView.ts","../../projects/truly-ui/src/components/autocomplete/services/selected-item.service.ts","../../projects/truly-ui/src/components/input/core/value-accessor.ts","../../projects/truly-ui/src/components/core/enums/key-events.ts","../../projects/truly-ui/src/components/input/core/input-mask.ts","../../projects/truly-ui/src/components/input/core/input.config.ts","../../projects/truly-ui/src/components/internals/components/label/label.ts","../../projects/truly-ui/src/components/internals/components/label/label.html","../../projects/truly-ui/src/components/input/input.ts","../../projects/truly-ui/src/components/input/input.html","../../projects/truly-ui/src/components/i18n/i18n.service.ts","../../projects/truly-ui/src/components/loader/loader.ts","../../projects/truly-ui/src/components/loader/loader.html","../../projects/truly-ui/src/components/blockui/blockui-config.ts","../../projects/truly-ui/src/components/blockui/blockui.component.ts","../../projects/truly-ui/src/components/blockui/blockui.component.html","../../projects/truly-ui/src/components/blockui/blockui.ts","../../projects/truly-ui/src/components/core/components/filter/filter-container.ts","../../projects/truly-ui/src/components/autocomplete/components/autocomplete-template.ts","../../projects/truly-ui/src/components/autocomplete/selected-validator.ts","../../projects/truly-ui/src/components/misc/highlight.pipe.ts","../../projects/truly-ui/src/components/autocomplete/autocomplete.ts","../../projects/truly-ui/src/components/autocomplete/autocomplete.html","../../projects/truly-ui/src/components/input/directives/charcase.directive.ts","../../projects/truly-ui/src/components/validators/cpf/cpf.validator.ts","../../projects/truly-ui/src/components/validators/cpf/cpf.directive.ts","../../projects/truly-ui/src/components/validators/cnpj/cnpj.validator.ts","../../projects/truly-ui/src/components/validators/cnpj/cnpj.directive.ts","../../projects/truly-ui/src/components/validators/number/number.validator.ts","../../projects/truly-ui/src/components/validators/number/number.directive.ts","../../projects/truly-ui/src/components/validators/email/email.validator.ts","../../projects/truly-ui/src/components/validators/email/email.directive.ts","../../projects/truly-ui/src/components/validators/creditcard/creditcard.validator.ts","../../projects/truly-ui/src/components/validators/creditcard/creditcard.directive.ts","../../projects/truly-ui/src/components/validators/password/password.validator.ts","../../projects/truly-ui/src/components/validators/password/password.directive.ts","../../projects/truly-ui/src/components/validators/index.ts","../../projects/truly-ui/src/components/internals/pipes/leftpad.pipe.ts","../../projects/truly-ui/src/components/internals/index.ts","../../projects/truly-ui/src/components/input/directives/currency/currency-mask.config.ts","../../projects/truly-ui/src/components/input/directives/currency/currency.manager.ts","../../projects/truly-ui/src/components/input/directives/currency/currency.service.ts","../../projects/truly-ui/src/components/input/directives/currency/currency.handler.ts","../../projects/truly-ui/src/components/input/directives/currency/currency.directive.ts","../../projects/truly-ui/src/components/input/index.ts","../../projects/truly-ui/src/components/blockui/index.ts","../../projects/truly-ui/src/components/core/components/filter/filter-container.module.ts","../../projects/truly-ui/src/components/core/directives/itemSelected/item-selected.module.ts","../../projects/truly-ui/src/components/loader/index.ts","../../projects/truly-ui/src/components/misc/fixed-position.directive.ts","../../projects/truly-ui/src/components/misc/relative-window-position.directive.ts","../../projects/truly-ui/src/components/misc/scroll-manager.directive.ts","../../projects/truly-ui/src/components/misc/listoption.directive.ts","../../projects/truly-ui/src/components/misc/index.ts","../../projects/truly-ui/src/components/autocomplete/index.ts","../../projects/truly-ui/src/components/avatar/parts/image/image.component.ts","../../projects/truly-ui/src/components/avatar/parts/image/image.component.html","../../projects/truly-ui/src/components/avatar/avatar.ts","../../projects/truly-ui/src/components/avatar/avatar.html","../../projects/truly-ui/src/components/avatar/index.ts","../../projects/truly-ui/src/components/badge/badge.ts","../../projects/truly-ui/src/components/badge/badge.html","../../projects/truly-ui/src/components/badge/index.ts","../../projects/truly-ui/src/components/button/button.ts","../../projects/truly-ui/src/components/button/button.html","../../projects/truly-ui/src/components/core/enums/modal-result.ts","../../projects/truly-ui/src/components/modal/addons/container-modal/container-modal.service.ts","../../projects/truly-ui/src/components/modal/services/sidebar.service.ts","../../projects/truly-ui/src/components/shortcut/shortcut.config.ts","../../projects/truly-ui/src/components/modal/services/current-modal.service.ts","../../projects/truly-ui/src/components/shortcut/shortcut.service.ts","../../projects/truly-ui/src/components/shortcut/shortcut.directive.ts","../../projects/truly-ui/src/components/modal/modal.ts","../../projects/truly-ui/src/components/modal/modal.html","../../projects/truly-ui/src/components/core/helper/limitstring.pipe.ts","../../projects/truly-ui/src/components/core/components/backdrop/backdrop.ts","../../projects/truly-ui/src/components/core/components/backdrop/backdrop.html","../../projects/truly-ui/src/components/core/components/backdrop/index.ts","../../projects/truly-ui/src/components/core/enums/actions-modal.ts","../../projects/truly-ui/src/components/modal/classes/modal-smart-form.ts","../../projects/truly-ui/src/components/modal/services/modal.service.ts","../../projects/truly-ui/src/components/modal/directives/modal-result.directive.ts","../../projects/truly-ui/src/components/shortcut/index.ts","../../projects/truly-ui/src/components/modal/index.ts","../../projects/truly-ui/src/components/button/index.ts","../../projects/truly-ui/src/components/buttongroup/buttongroup-item.ts","../../projects/truly-ui/src/components/buttongroup/buttongroup-item.html","../../projects/truly-ui/src/components/buttongroup/buttongroup.ts","../../projects/truly-ui/src/components/buttongroup/buttongroup.html","../../projects/truly-ui/src/components/buttongroup/index.ts","../../projects/truly-ui/src/components/card/card.ts","../../projects/truly-ui/src/components/card/card.html","../../projects/truly-ui/src/components/card/parts/card-body/card-body.ts","../../projects/truly-ui/src/components/card/parts/card-body/card-body.html","../../projects/truly-ui/src/components/card/parts/card-header/card-header.ts","../../projects/truly-ui/src/components/card/parts/card-header/card-header.html","../../projects/truly-ui/src/components/card/parts/card-footer/card-footer.ts","../../projects/truly-ui/src/components/card/parts/card-footer/card-footer.html","../../projects/truly-ui/src/components/card/index.ts","../../projects/truly-ui/src/components/checkbox/checkbox.ts","../../projects/truly-ui/src/components/checkbox/checkbox.html","../../projects/truly-ui/src/components/checkbox/index.ts","../../projects/truly-ui/src/components/listbox/classes/list-base.ts","../../projects/truly-ui/src/components/listbox/components/listbox-template.ts","../../projects/truly-ui/src/components/listbox/listbox.ts","../../projects/truly-ui/src/components/listbox/listbox.html","../../projects/truly-ui/src/components/listbox/index.ts","../../projects/truly-ui/src/components/chatlist/enums/status.enum.ts","../../projects/truly-ui/src/components/chatlist/services/chat.service.ts","../../projects/truly-ui/src/components/chatlist/pipes/message-filter.pipe.ts","../../projects/truly-ui/src/components/chatlist/parts/chat-content.ts","../../projects/truly-ui/src/components/chatlist/parts/chat-content.html","../../projects/truly-ui/src/components/chatlist/pipes/status-filter.pipe.ts","../../projects/truly-ui/src/components/chatlist/chatlist.ts","../../projects/truly-ui/src/components/chatlist/chatlist.html","../../projects/truly-ui/src/components/chatlist/index.ts","../../projects/truly-ui/src/components/navigator/services/navigator-manager.service.ts","../../projects/truly-ui/src/components/navigator/navigator.ts","../../projects/truly-ui/src/components/navigator/navigator.html","../../projects/truly-ui/src/components/core/directives/overlay-animation.ts","../../projects/truly-ui/src/components/tooltip/tooltip.ts","../../projects/truly-ui/src/components/tooltip/tooltip.html","../../projects/truly-ui/src/components/tooltip/parts/tooltip-container.ts","../../projects/truly-ui/src/components/tooltip/tooltip.service.ts","../../projects/truly-ui/src/components/calendar/directives/holiday-tooltip.ts","../../projects/truly-ui/src/components/calendar/pipes/holiday.ts","../../projects/truly-ui/src/components/calendar/parts/calendar-days/calendar-days.ts","../../projects/truly-ui/src/components/calendar/parts/calendar-days/calendar-days.html","../../projects/truly-ui/src/components/calendar/parts/calendar-months/calendar-months.ts","../../projects/truly-ui/src/components/calendar/parts/calendar-months/calendar-months.html","../../projects/truly-ui/src/components/calendar/parts/calendar-years/calendar-years.ts","../../projects/truly-ui/src/components/calendar/parts/calendar-years/calendar-years.html","../../projects/truly-ui/src/components/calendar/calendar.ts","../../projects/truly-ui/src/components/calendar/calendar.html","../../projects/truly-ui/src/components/navigator/services/navigator.service.ts","../../projects/truly-ui/src/components/navigator/index.ts","../../projects/truly-ui/src/components/tooltip/directives/tooltip.directive.ts","../../projects/truly-ui/src/components/tooltip/index.ts","../../projects/truly-ui/src/components/calendar/index.ts","../../projects/truly-ui/src/components/input/core/validate.ts","../../projects/truly-ui/src/components/input/core/element-base.ts","../../projects/truly-ui/src/components/core/base/value-accessor-provider.ts","../../projects/truly-ui/src/components/clockpicker/services/clockpicker.service.ts","../../projects/truly-ui/src/components/clockpicker/clockpicker.ts","../../projects/truly-ui/src/components/clockpicker/clockpicker.html","../../projects/truly-ui/src/components/clockpicker/index.ts","../../projects/truly-ui/src/components/colorpicker/helpers/colorpicker-formats.ts","../../projects/truly-ui/src/components/colorpicker/helpers/colorpicker-helpers.ts","../../projects/truly-ui/src/components/colorpicker/services/colorpicker-service.ts","../../projects/truly-ui/src/components/colorpicker/parts/colorpicker-input/colorpicker-input.ts","../../projects/truly-ui/src/components/colorpicker/parts/colorpicker-input/colorpicker-input.html","../../projects/truly-ui/src/components/colorpicker/parts/colorpicker-content/colorpicker-content.ts","../../projects/truly-ui/src/components/colorpicker/parts/colorpicker-content/colorpicker-content.html","../../projects/truly-ui/src/components/colorpicker/colorpicker.ts","../../projects/truly-ui/src/components/colorpicker/colorpicker.html","../../projects/truly-ui/src/components/colorpicker/index.ts","../../projects/truly-ui/src/components/core/core.ts","../../projects/truly-ui/src/components/core/tokens/configuration.token.ts","../../projects/truly-ui/src/components/i18n/languages/button/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/calendar/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/datatable/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/dialog/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/form/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/listbox/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/navigator/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/validators/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/overlaylist/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/editor/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/permissions/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/timepicker/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/autocomplete/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/time-available-picker/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/chatlist/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/modal/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/upload/en_US.ts","../../projects/truly-ui/src/components/i18n/languages/en_US.ts","../../projects/truly-ui/src/components/core/configs/application.config.ts","../../projects/truly-ui/src/components/core/services/core.service.ts","../../projects/truly-ui/src/components/core/index.ts","../../projects/truly-ui/src/components/modal/addons/container-modal/container-modal.directive.ts","../../projects/truly-ui/src/components/modal/addons/container-modal/index.ts","../../projects/truly-ui/src/components/contextmenu/context-menu.ts","../../projects/truly-ui/src/components/contextmenu/context-menu.html","../../projects/truly-ui/src/components/contextmenu/services/contextmenu.service.ts","../../projects/truly-ui/src/components/contextmenu/index.ts","../../projects/truly-ui/src/components/datatable/services/datatable-filter-options.service.ts","../../projects/truly-ui/src/components/datatable/parts/column/datatable-column.ts","../../projects/truly-ui/src/components/datatable/services/datatable-filter-constraints.service.ts","../../projects/truly-ui/src/components/datatable/services/datatable-filter.service.ts","../../projects/truly-ui/src/components/datatable/services/datatable-datasource.service.ts","../../projects/truly-ui/src/components/datatable/services/datatable-column.service.ts","../../projects/truly-ui/src/components/datatable/services/datatable-sort.service.ts","../../projects/truly-ui/src/components/datatable/services/datatable-helpers.service.ts","../../projects/truly-ui/src/components/datatable/parts/row/datatable-row.ts","../../projects/truly-ui/src/components/datatable/directives/colgroup.directive.ts","../../projects/truly-ui/src/components/datatable/parts/cell/datatable-cell.ts","../../projects/truly-ui/src/components/datatable/parts/content/datatable-content.ts","../../projects/truly-ui/src/components/datatable/parts/content/datatable-content.html","../../projects/truly-ui/src/components/overlaylist/list-item/list-item.ts","../../projects/truly-ui/src/components/overlaylist/list-item/list-item.html","../../projects/truly-ui/src/components/overlaylist/overlay-list.ts","../../projects/truly-ui/src/components/overlaylist/overlay-list.html","../../projects/truly-ui/src/components/dropdownicon/dropdownicon.ts","../../projects/truly-ui/src/components/dropdownicon/dropdownicon.html","../../projects/truly-ui/src/components/datatable/parts/column-filter/datatable-column-filter.ts","../../projects/truly-ui/src/components/datatable/parts/column-filter/datatable-column-filter.html","../../projects/truly-ui/src/components/datatable/directives/resizer.directive.ts","../../projects/truly-ui/src/components/datatable/parts/header/datatable-header.ts","../../projects/truly-ui/src/components/datatable/parts/header/datatable-header.html","../../projects/truly-ui/src/components/datatable/datatable.ts","../../projects/truly-ui/src/components/datatable/datatable.html","../../projects/truly-ui/src/components/dropdownlist/interfaces/dropdown.config.ts","../../projects/truly-ui/src/components/dropdownlist/dropdownlist.ts","../../projects/truly-ui/src/components/dropdownlist/dropdownlist.html","../../projects/truly-ui/src/components/overlaylist/index.ts","../../projects/truly-ui/src/components/dropdownlist/index.ts","../../projects/truly-ui/src/components/dropdownicon/index.ts","../../projects/truly-ui/src/components/datatable/index.ts","../../projects/truly-ui/src/components/core/helper/reverseformatdate.ts","../../projects/truly-ui/src/components/date/validators/date.validator.ts","../../projects/truly-ui/src/components/date/directives/date.directive.ts","../../projects/truly-ui/src/components/date/date.ts","../../projects/truly-ui/src/components/date/date.html","../../projects/truly-ui/src/components/date/index.ts","../../projects/truly-ui/src/components/datepicker/datepicker-content/datepicker-content.ts","../../projects/truly-ui/src/components/datepicker/datepicker-content/datepicker-content.html","../../projects/truly-ui/src/components/datepicker/datepicker.ts","../../projects/truly-ui/src/components/datepicker/datepicker.html","../../projects/truly-ui/src/components/datepicker/index.ts","../../projects/truly-ui/src/components/dialog/dialog-default-behavior.ts","../../projects/truly-ui/src/components/modal/interfaces/modal-options.ts","../../projects/truly-ui/src/components/dialog/dialog-info/dialog-info.ts","../../projects/truly-ui/src/components/dialog/dialog-info/dialog-info.html","../../projects/truly-ui/src/components/dialog/dialog-alert/dialog-alert.ts","../../projects/truly-ui/src/components/dialog/dialog-alert/dialog-alert.html","../../projects/truly-ui/src/components/dialog/dialog-error/dialog-error.ts","../../projects/truly-ui/src/components/dialog/dialog-error/dialog-error.html","../../projects/truly-ui/src/components/dialog/dialog-confirmation/dialog-confirmation.ts","../../projects/truly-ui/src/components/dialog/dialog-confirmation/dialog-confirmation.html","../../projects/truly-ui/src/components/dialog/dialog.service.ts","../../projects/truly-ui/src/components/dialog/index.ts","../../projects/truly-ui/src/components/editor/model/toolbar-config.model.ts","../../projects/truly-ui/src/components/editor/services/editor.service.ts","../../projects/truly-ui/src/components/form/form-submit.directive.ts","../../projects/truly-ui/src/components/form/form.ts","../../projects/truly-ui/src/components/form/form.html","../../projects/truly-ui/src/components/editor/parts/editor-link-box/editor-link-box.ts","../../projects/truly-ui/src/components/editor/parts/editor-link-box/editor-link-box.html","../../projects/truly-ui/src/components/editor/parts/editor-image-box/editor-image-box.ts","../../projects/truly-ui/src/components/editor/parts/editor-image-box/editor-image-box.html","../../projects/truly-ui/src/components/editor/parts/editor-header/editor-header.ts","../../projects/truly-ui/src/components/editor/parts/editor-header/editor-header.html","../../projects/truly-ui/src/components/editor/editor.ts","../../projects/truly-ui/src/components/editor/editor.html","../../projects/truly-ui/src/components/form/index.ts","../../projects/truly-ui/src/components/editor/index.ts","../../projects/truly-ui/src/components/lightbox/lightbox.ts","../../projects/truly-ui/src/components/lightbox/lightbox.html","../../projects/truly-ui/src/components/lightbox/services/lightbox.service.ts","../../projects/truly-ui/src/components/lightbox/index.ts","../../projects/truly-ui/src/components/menu/parts/simple/simple-sub-menu.ts","../../projects/truly-ui/src/components/menu/parts/simple/simple-sub-menu.html","../../projects/truly-ui/src/components/menu/parts/advanced/advanced-root-menu.ts","../../projects/truly-ui/src/components/menu/parts/advanced/advanced-root-menu.html","../../projects/truly-ui/src/components/menu/parts/advanced/parts/advanced-sub-menu.ts","../../projects/truly-ui/src/components/menu/parts/advanced/parts/advanced-sub-menu.html","../../projects/truly-ui/src/components/menu/services/submenu.service.ts","../../projects/truly-ui/src/components/menu/menu.ts","../../projects/truly-ui/src/components/menu/menu.html","../../projects/truly-ui/src/components/menu/index.ts","../../projects/truly-ui/src/components/messagevalidation/messagevalidation.component.ts","../../projects/truly-ui/src/components/messagevalidation/messagevalidation.component.html","../../projects/truly-ui/src/components/messagevalidation/directives/message-validation.directive.ts","../../projects/truly-ui/src/components/messagevalidation/index.ts","../../projects/truly-ui/src/components/modal/addons/modal-toolbar/modal-toolbar.ts","../../projects/truly-ui/src/components/modal/addons/modal-toolbar/modal-toolbar.html","../../projects/truly-ui/src/components/modal/addons/modal-toolbar/index.ts","../../projects/truly-ui/src/components/multiselect/enums/error-messages.ts","../../projects/truly-ui/src/components/tag/tag.ts","../../projects/truly-ui/src/components/tag/tag.html","../../projects/truly-ui/src/components/multiselect/multiselect.ts","../../projects/truly-ui/src/components/multiselect/multiselect.html","../../projects/truly-ui/src/components/tag/index.ts","../../projects/truly-ui/src/components/multiselect/index.ts","../../projects/truly-ui/src/components/multiview/view/view.ts","../../projects/truly-ui/src/components/multiview/view/view.html","../../projects/truly-ui/src/components/multiview/multiview.ts","../../projects/truly-ui/src/components/multiview/multiview.html","../../projects/truly-ui/src/components/multiview/index.ts","../../projects/truly-ui/src/components/overlaypanel/overlay-panel.ts","../../projects/truly-ui/src/components/overlaypanel/overlay-panel.html","../../projects/truly-ui/src/components/overlaypanel/index.ts","../../projects/truly-ui/src/components/panelgroup/panelgroup.ts","../../projects/truly-ui/src/components/panelgroup/panelgroup.html","../../projects/truly-ui/src/components/panelgroup/index.ts","../../projects/truly-ui/src/components/popupmenu/parts/popupmenu-item.ts","../../projects/truly-ui/src/components/popupmenu/parts/popupmenu-item.html","../../projects/truly-ui/src/components/core/services/menu.service.ts","../../projects/truly-ui/src/components/popupmenu/popupmenu.ts","../../projects/truly-ui/src/components/popupmenu/popupmenu.html","../../projects/truly-ui/src/components/popupmenu/index.ts","../../projects/truly-ui/src/components/permissions/parts/directives/permission-group.directive.ts","../../projects/truly-ui/src/components/permissions/permissions.ts","../../projects/truly-ui/src/components/permissions/permissions.html","../../projects/truly-ui/src/components/permissions/index.ts","../../projects/truly-ui/src/components/permissions/parts/models/permission.model.ts","../../projects/truly-ui/src/components/progressbar/progressbar.ts","../../projects/truly-ui/src/components/progressbar/progressbar.html","../../projects/truly-ui/src/components/progressbar/index.ts","../../projects/truly-ui/src/components/radiobutton/radiobutton.ts","../../projects/truly-ui/src/components/radiobutton/radiogroup.ts","../../projects/truly-ui/src/components/radiobutton/radiogroup.html","../../projects/truly-ui/src/components/radiobutton/index.ts","../../projects/truly-ui/src/components/sidebar/parts/sidebar/sidebar.ts","../../projects/truly-ui/src/components/sidebar/parts/sidebar/sidebar.html","../../projects/truly-ui/src/components/sidebar/parts/sidebar-content/sidebar-content.ts","../../projects/truly-ui/src/components/sidebar/parts/sidebar-content/sidebar-content.html","../../projects/truly-ui/src/components/sidebar/sidebar-container.ts","../../projects/truly-ui/src/components/sidebar/sidebar-container.html","../../projects/truly-ui/src/components/sidebar/index.ts","../../projects/truly-ui/src/components/skeleton/skeleton.ts","../../projects/truly-ui/src/components/skeleton/skeleton.html","../../projects/truly-ui/src/components/skeleton/index.ts","../../projects/truly-ui/src/components/schedule/i18n/schedule-i18n.ts","../../projects/truly-ui/src/components/schedule/parts/heading/heading.component.ts","../../projects/truly-ui/src/components/schedule/parts/heading/heading.component.html","../../projects/truly-ui/src/components/schedule/types/slot-settings.type.ts","../../projects/truly-ui/src/components/schedule/types/work-scale.type.ts","../../projects/truly-ui/src/components/schedule/services/work-scale.service.ts","../../projects/truly-ui/src/components/schedule/services/event.service.ts","../../projects/truly-ui/src/components/schedule/services/holiday.service.ts","../../projects/truly-ui/src/components/schedule/types/graph.ts","../../projects/truly-ui/src/components/core/helper/elvis.ts","../../projects/truly-ui/src/components/schedule/services/generate-events.service.ts","../../projects/truly-ui/src/components/schedule/views/day/view-day.component.ts","../../projects/truly-ui/src/components/schedule/views/day/view-day.component.html","../../projects/truly-ui/src/components/schedule/views/week/week.component.ts","../../projects/truly-ui/src/components/schedule/views/week/week.component.html","../../projects/truly-ui/src/components/schedule/views/day-list/day-list.component.ts","../../projects/truly-ui/src/components/schedule/views/day-list/day-list.component.html","../../projects/truly-ui/src/components/schedule/schedule.ts","../../projects/truly-ui/src/components/schedule/schedule.html","../../projects/truly-ui/src/components/splitbutton/parts/splitbutton-action.ts","../../projects/truly-ui/src/components/splitbutton/parts/splitbutton-action.html","../../projects/truly-ui/src/components/splitbutton/splitbutton.ts","../../projects/truly-ui/src/components/splitbutton/splitbutton.html","../../projects/truly-ui/src/components/splitbutton/index.ts","../../projects/truly-ui/src/components/schedule/index.ts","../../projects/truly-ui/src/components/schedule/types/datasource.type.ts","../../projects/truly-ui/src/components/schedule/types/holidays.type.ts","../../projects/truly-ui/src/components/schedule/types/status.type.ts","../../projects/truly-ui/src/components/stopwatch/services/stopwatch-service.ts","../../projects/truly-ui/src/components/stopwatch/stopwatch.ts","../../projects/truly-ui/src/components/stopwatch/stopwatch.html","../../projects/truly-ui/src/components/stopwatch/index.ts","../../projects/truly-ui/src/components/switch/switch.ts","../../projects/truly-ui/src/components/switch/switch.html","../../projects/truly-ui/src/components/switch/index.ts","../../projects/truly-ui/src/components/step/services/step.service.ts","../../projects/truly-ui/src/components/step/parts/step-form/step-form.ts","../../projects/truly-ui/src/components/step/parts/step-form/step-form.html","../../projects/truly-ui/src/components/step/step.ts","../../projects/truly-ui/src/components/step/step.html","../../projects/truly-ui/src/components/step/directives/step-next.directive.ts","../../projects/truly-ui/src/components/step/directives/step-previous.directive.ts","../../projects/truly-ui/src/components/step/directives/step-finish.directive.ts","../../projects/truly-ui/src/components/step/index.ts","../../projects/truly-ui/src/components/tabcontrol/tab/tab.ts","../../projects/truly-ui/src/components/tabcontrol/tab/tab.html","../../projects/truly-ui/src/components/tabcontrol/tabcontrol.ts","../../projects/truly-ui/src/components/tabcontrol/tabcontrol.html","../../projects/truly-ui/src/components/tabcontrol/index.ts","../../projects/truly-ui/src/components/textarea/textarea.ts","../../projects/truly-ui/src/components/textarea/textarea.html","../../projects/truly-ui/src/components/textarea/index.ts","../../projects/truly-ui/src/components/timeline/parts/timeline-item/timeline-item.ts","../../projects/truly-ui/src/components/timeline/parts/timeline-item/timeline-item.html","../../projects/truly-ui/src/components/timeline/timeline.ts","../../projects/truly-ui/src/components/timeline/timeline.html","../../projects/truly-ui/src/components/timeline/index.ts","../../projects/truly-ui/src/components/timepicker/timepicker.ts","../../projects/truly-ui/src/components/timepicker/timepicker.html","../../projects/truly-ui/src/components/timepicker/index.ts","../../projects/truly-ui/src/components/time-available-picker/time-available-picker.ts","../../projects/truly-ui/src/components/time-available-picker/time-available-picker.html","../../projects/truly-ui/src/components/time-available-picker/index.ts","../../projects/truly-ui/src/components/toaster/parts/toaster.ts","../../projects/truly-ui/src/components/toaster/parts/toaster.html","../../projects/truly-ui/src/components/toaster/parts/model/toaster.ts","../../projects/truly-ui/src/components/toaster/toaster-container.ts","../../projects/truly-ui/src/components/toaster/toaster-container.html","../../projects/truly-ui/src/components/toaster/services/toaster.service.ts","../../projects/truly-ui/src/components/toaster/index.ts","../../projects/truly-ui/src/components/toolbar/toolbar.ts","../../projects/truly-ui/src/components/toolbar/toolbar.html","../../projects/truly-ui/src/components/toolbar/index.ts","../../projects/truly-ui/src/components/thumbnail/thumbnail.service.ts","../../projects/truly-ui/src/components/thumbnail/thumbnail.ts","../../projects/truly-ui/src/components/thumbnail/thumbnail.html","../../projects/truly-ui/src/components/thumbnail/index.ts","../../projects/truly-ui/src/components/upload/upload.ts","../../projects/truly-ui/src/components/upload/upload.html","../../projects/truly-ui/src/components/upload/index.ts","../../projects/truly-ui/src/components/i18n/languages/button/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/calendar/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/datatable/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/dialog/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/form/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/listbox/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/navigator/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/validators/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/overlaylist/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/editor/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/permissions/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/timepicker/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/autocomplete/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/time-available-picker/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/chatlist/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/modal/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/upload/pt_BR.ts","../../projects/truly-ui/src/components/i18n/languages/pt_BR.ts","../../projects/truly-ui/src/public_api.ts","../../projects/truly-ui/src/truly-ui.ts"],"sourcesContent":["/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class AccordionService {\n\n  private accordionItems = [];\n\n  private singleOpened;\n\n  private color;\n\n  constructor() {}\n\n  getColor() {\n    return this.color;\n  }\n\n  setAccordionList( list, singleOpened, color ) {\n    this.accordionItems = list;\n    this.singleOpened = singleOpened;\n    this.color = color;\n  }\n\n  closeAll(accordion) {\n    if (this.singleOpened) {\n      this.accordionItems.forEach( ( item ) => {\n        if (accordion !== item) {\n          item.close();\n        }\n      } );\n    }\n  }\n\n}\n","import {\n  Component,\n  Input,\n  OnChanges,\n  OnInit\n} from '@angular/core';\n\n@Component({\n  selector: 'tl-dx-icon',\n  templateUrl: './tl-dx-icon.component.html',\n  styleUrls: ['./tl-dx-icon.component.scss']\n})\nexport class TlDxIconComponent implements OnInit, OnChanges {\n\n  @Input() icon: string;\n\n  @Input() size = '12px';\n\n  @Input() animation: string;\n\n  @Input() color: string;\n\n  @Input() align: string;\n\n  public format: string;\n\n  public PREFIX = 'dx-icon dx-icon-';\n\n  constructor() { }\n\n  ngOnInit() {\n    this.formatClass();\n  }\n\n  formatClass() {\n    this.format = this.PREFIX + this.icon;\n    this.format += (this.animation) ? ' anim-' + this.animation + ' animated' : '';\n    this.format += (this.align) ? ' pull-' + this.align : '';\n  }\n\n  ngOnChanges() {\n    this.formatClass();\n  }\n\n}\n","<i class=\"{{ format }}\" [ngStyle]=\"{'font-size': size, 'color': color}\"></i>\n","import {\n  Component,\n  Input,\n  OnChanges,\n  OnInit\n} from '@angular/core';\n\n@Component({\n  selector: 'tl-fa-icon',\n  templateUrl: './tl-fa-icon.component.html',\n  styleUrls: ['./tl-fa-icon.component.scss']\n})\nexport class TlFaIconComponent implements OnInit, OnChanges {\n\n  @Input() icon: string;\n\n  @Input() style: string;\n\n  @Input() size = '12px';\n\n  @Input() animation: string;\n\n  @Input() color: string;\n\n  @Input() align: string;\n\n  public format: string;\n\n  public PREFIX = 'fa-';\n\n  constructor() { }\n\n  ngOnInit() {\n    this.formatClass();\n  }\n\n  formatClass() {\n    if ( this.style === undefined ) {\n      this.style = 'fas';\n    }\n\n    this.format = this.style + ' ';\n    this.format += this.PREFIX + this.icon;\n    this.format += (this.animation) ? ' anim-' + this.animation + ' animated' : '';\n    this.format += (this.align) ? ' pull-' + this.align : '';\n  }\n\n  ngOnChanges() {\n    this.formatClass();\n  }\n\n}\n","<i class=\"{{ format }}\" [ngStyle]=\"{'font-size': size, 'color': color}\"></i>\n","import {\n  Component,\n  Input,\n  OnChanges,\n  OnInit\n} from '@angular/core';\n\n@Component({\n  selector: 'tl-ion-icon',\n  templateUrl: './tl-ion-icon.component.html',\n  styleUrls: ['./tl-ion-icon.component.scss']\n})\nexport class TlIonIconComponent implements OnInit, OnChanges {\n\n  @Input() icon: string;\n\n  @Input() style: string;\n\n  @Input() size = '12px';\n\n  @Input() animation: string;\n\n  @Input() color: string;\n\n  @Input() align: string;\n\n  public format: string;\n\n  public PREFIX = 'ion ion';\n\n  constructor() { }\n\n  ngOnInit() {\n    this.formatClass();\n  }\n\n  formatClass() {\n    if ( this.style === undefined ) {\n      this.style = 'md';\n    }\n\n    this.format = this.PREFIX + '-' + this.style + '-' + this.icon;\n    this.format += (this.animation) ? ' anim-' + this.animation + ' animated' : '';\n    this.format += (this.align) ? ' pull-' + this.align : '';\n  }\n\n  ngOnChanges() {\n    this.formatClass();\n  }\n\n}\n","<i class=\"{{ format }}\" [ngStyle]=\"{'font-size': size, 'color': color}\"></i>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  Input,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\n\n@Component({\n  selector: 'tl-icon',\n  templateUrl: './icons.html',\n  styleUrls: ['./icons.scss'],\n})\nexport class TlIcons implements AfterViewInit {\n\n  @Input() icon: string;\n\n  @Input() lib: string;\n\n  @Input() style: string;\n\n  @Input() size: string;\n\n  @Input() animation: string;\n\n  @Input() color: string;\n\n  @Input() align: string;\n\n  @ViewChild('content', {static: true} ) content: ElementRef<any>;\n\n  @ViewChild(TemplateRef, {static: true} ) template: TemplateRef<any>;\n\n  constructor(private change: ChangeDetectorRef) {}\n\n  ngAfterViewInit() {\n    this.contentIconCode();\n  }\n\n  contentIconCode() {\n    if (this.content.nativeElement.innerText) {\n      this.icon = this.content.nativeElement.innerText;\n\n      if (this.isFullCode()) {\n        this.lib = this.icon.substr(0, 2);\n        this.lib = (this.lib === 'io') ? 'ion' : this.lib;\n\n        this.getStyle();\n      }\n      this.change.detectChanges();\n    }\n  }\n\n  isFullCode() {\n    const space = this.icon.indexOf(' ');\n    return space !== -1;\n  }\n\n  getStyle() {\n    let fistSplit, secondSplit;\n\n    if (this.lib === 'fa') {\n      fistSplit = 0;\n      secondSplit = this.icon.indexOf(' ');\n    }\n\n    if (this.lib === 'ion') {\n      fistSplit = this.icon.indexOf('-') + 1;\n      secondSplit = this.icon.indexOf('-', fistSplit) - fistSplit;\n    }\n\n    this.setStyle(fistSplit, secondSplit);\n  }\n\n  setStyle(start, length) {\n    this.style = this.icon.substr(start, length);\n\n    switch (this.lib) {\n      case 'dx':\n        this.setIcon(16);\n        break;\n      case 'fa':\n        const fistSplit = this.icon.indexOf('-') + 1;\n        this.setIcon(fistSplit);\n        break;\n      case 'ion':\n        this.setIcon((start + length) + 1);\n        break;\n    }\n  }\n\n  setIcon(start: number) {\n    this.icon = this.icon.substr(start);\n  }\n\n}\n","<tl-dx-icon [icon]=\"icon\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'dx'\"></tl-dx-icon>\n<tl-fa-icon [icon]=\"icon\" [style]=\"style\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'fa'\"></tl-fa-icon>\n<tl-ion-icon [icon]=\"icon\" [style]=\"style\" [size]=\"size\" [animation]=\"animation\" [color]=\"color\" [align]=\"align\" *ngIf=\"lib === 'ion'\"></tl-ion-icon>\n<div hidden #content>\n  <ng-content></ng-content>\n</div>\n","import { Component, ElementRef, Input,\n  ViewChild\n} from '@angular/core';\nimport { AccordionService } from '../../services/accordion.service';\n\n@Component({\n  selector: 'tl-accordion-item',\n  templateUrl: './accordion-item.html',\n  styleUrls: ['./accordion-item.scss'],\n})\nexport class TlAccordionItem {\n\n  @Input() title = 'Title 1';\n\n  @Input() heightHeader = '45px';\n\n  @Input() disabled = false;\n\n  @Input() opened = false;\n\n  @ViewChild( 'panel', {static: true} ) panel: ElementRef;\n\n  public maxHeight;\n\n  constructor( private accordionService: AccordionService ) { }\n\n  toggle() {\n    if (this.disabled) {\n      return;\n    }\n    this.accordionService.closeAll(this);\n    this.opened = !this.opened;\n  }\n\n  getColor() {\n    return this.accordionService.getColor();\n  }\n\n  close() {\n    this.opened = false;\n  }\n\n}\n","<div [class]=\"'ui-wrapper-accordion-item ' + getColor()\">\n  <div class=\"ui-accordion-item-header\"\n       [ngClass]=\"{'opened': opened, 'disabled': disabled}\"\n       [style.height]=\"heightHeader\"\n       [style.line-height]=\"heightHeader\"\n       [style.border-bottom]=\"opened ? '1px solid #DCDCDC' : 0\"\n       (click)=\"toggle()\">\n    <div class=\"ui-accordion-arrow\">\n      <tl-icon [lib]=\"'ion'\" [style]=\"'ios'\" [icon]=\"(!opened) ? 'arrow-forward' : 'arrow-down'\"></tl-icon>\n    </div>\n    <span>{{title}}</span>\n  </div>\n\n  <div #panel\n       [style.max-height.px]=\"opened ? panel.scrollHeight : 0\"\n       [style.display]=\"'block' ? opened : 'none'\"\n       class=\"ui-accordion-item-content\">\n      <ng-content></ng-content>\n  </div>\n\n</div>\n","import { AfterContentInit, Component, ContentChildren, Input, QueryList } from '@angular/core';\nimport { TlAccordionItem } from './parts/accordion-item/accordion-item';\nimport { AccordionService } from './services/accordion.service';\n\n@Component({\n  selector: 'tl-accordion',\n  templateUrl: './accordion.html',\n  styleUrls: ['./accordion.scss'],\n  providers: [AccordionService]\n})\nexport class TlAccordion implements AfterContentInit {\n\n  @Input() singleOpened = false;\n\n  @Input() color = 'primary';\n\n  @ContentChildren( TlAccordionItem ) listAccordion: QueryList<TlAccordionItem>;\n\n  constructor(private accordionService: AccordionService) { }\n\n  ngAfterContentInit() {\n    this.accordionService.setAccordionList(this.listAccordion.toArray(), this.singleOpened, this.color);\n  }\n\n}\n","<div class=\"ui-wrapper-accordion\">\n  <div class=\"ui-wrapper-accordion-items\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlIcons } from './icons';\n\nimport { TlDxIconComponent } from './parts/tl-dx-icon/tl-dx-icon.component';\nimport { TlFaIconComponent } from './parts/tl-fa-icon/tl-fa-icon.component';\nimport { TlIonIconComponent } from './parts/tl-ion-icon/tl-ion-icon.component';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    TlIcons,\n    TlDxIconComponent,\n    TlFaIconComponent,\n    TlIonIconComponent\n  ],\n  exports: [\n    TlIcons,\n    TlDxIconComponent,\n    TlFaIconComponent,\n    TlIonIconComponent\n  ]\n})\nexport class IconsModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlAccordion } from './accordion';\nimport { TlAccordionItem } from './parts/accordion-item/accordion-item';\nimport { IconsModule } from '../icons/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    IconsModule\n  ],\n  declarations: [\n    TlAccordion,\n    TlAccordionItem\n  ],\n  exports: [\n    TlAccordion,\n    TlAccordionItem\n  ],\n})\nexport class AccordionModule {}\n","import {InjectionToken} from '@angular/core';\n\nexport interface AutoCompleteConfig {\n  labelSize?: string;\n  textAlign?: string;\n  height?: string;\n  flatBorder?: string;\n  withBorder?: string;\n  labelPlacement?: string;\n  identifier?: string;\n  modelMode?: string;\n  color?: string;\n}\n\nexport let AUTOCOMPLETE_CONFIG = new InjectionToken<AutoCompleteConfig>('autocomplete.preview.js');\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, Observable, Subscription, Subject } from 'rxjs';\nimport { DataSourceInterface } from '../interfaces/datasource-list.interface';\n\nexport class DataSourceList extends DataSource<string | undefined> {\n\n  public dataStream: BehaviorSubject<any>;\n\n  public loadMoreData = new Subject();\n\n  private totalLength = 0;\n\n  private pageSize = 0;\n\n  private lazyMode = false;\n\n  private fetchedPages = new Set<number>();\n\n  private cachedData = [];\n\n  private subscription = new Subscription();\n\n  private arrayTotal = [];\n\n  private currentPage = 0;\n\n  constructor( public config: DataSourceInterface ) {\n    super();\n    this.setProprieties(config);\n    this.cachedData = this.config.dataSource;\n    this.dataStream = new BehaviorSubject<(any | undefined)[]>( this.arrayTotal );\n    this.resetData();\n  }\n\n  connect( collectionViewer?: CollectionViewer ): Observable<(string | undefined)[]> {\n    this.subscription.add( collectionViewer.viewChange.subscribe( range => {\n      const startPage = this.getPageForIndex( range.start );\n      const endPage = this.getPageForIndex( range.end - 1 );\n      for ( let i = startPage; i <= endPage; i++ ) {\n        this.fetchPage( i );\n      }\n    } ) );\n    return this.dataStream;\n  }\n\n  disconnect(): void {\n    // this.subscription.unsubscribe();\n  }\n\n  unsubscribe() {\n    this.subscription.unsubscribe();\n  }\n\n  addPage(page: number) {\n    this.fetchedPages.add( page );\n  }\n\n  public setArray( value ) {\n    this.arrayTotal.length = value;\n    this.dataStream.next( this.arrayTotal );\n  }\n\n  public resetData() {\n    this.arrayTotal = Array.from<string>({length: this.totalLength });\n    this.dataStream.next( this.arrayTotal );\n  }\n\n  public resetPages() {\n    this.fetchedPages.clear();\n  }\n\n  private setProprieties(config) {\n    Object.keys(config).forEach((value) => {\n      this[value] = config[value];\n    });\n  }\n\n  public getCachedData() {\n    return this.cachedData;\n  }\n\n  public setData(data: Array<any>) {\n    this.cachedData = data;\n    this.arrayTotal.splice(this.currentPage * this.pageSize, this.pageSize, ...data);\n    this.dataStream.next( this.arrayTotal );\n    if ( data.length === this.pageSize) {\n      if ( !this.fetchedPages.has(0) ) {\n        this.fetchedPages.add(0);\n      }\n    }\n  }\n\n  private getPageForIndex( index: number ): number {\n    return Math.floor( index / this.pageSize );\n  }\n\n  private emitCachedData(skip: number) {\n    this.cachedData.slice( skip, this.pageSize );\n    this.dataStream.next( this.cachedData );\n  }\n\n  private emitLoadData(skip: number) {\n    this.loadMoreData.next( { skip: skip, limit: this.pageSize + skip } );\n  }\n\n  private fetchPage( page: number ) {\n    this.currentPage = page;\n    if ( this.fetchedPages.has( page ) ) {\n      return;\n    }\n    this.addPage(page);\n    const skip = page * this.pageSize;\n    !this.lazyMode ? this.emitCachedData(skip) : this.emitLoadData(skip);\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Directive, ElementRef, HostBinding, Input } from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\n\n@Directive( {\n  selector: '[itemSelected]',\n  exportAs: 'selectItem'\n} )\nexport class TlItemSelectedDirective implements Highlightable {\n\n  public selected = false;\n\n  @Input() indexSelected = 0;\n\n  @Input() itemSelected;\n\n  @HostBinding( 'class.selected') get isSelected() {\n    return this.selected;\n  }\n\n  constructor( public element: ElementRef ) {}\n\n  setActiveStyles(): void {\n    this.selected = true;\n  }\n\n  setInactiveStyles(): void {\n    this.selected = false;\n  }\n\n}\n","export function scrollIntoView(node: HTMLElement): void {\n\n  // Non-standard\n  /* tslint:disable-next-line:no-string-literal */\n  if (node['scrollIntoViewIfNeeded']) {\n    /* tslint:disable-next-line:no-string-literal */\n    node['scrollIntoViewIfNeeded'](false);\n    return;\n  }\n\n  if (node.scrollIntoView) {\n    node.scrollIntoView(false);\n    return;\n  }\n}\n","import {Injectable} from '@angular/core';\nimport {TlItemSelectedDirective} from '../../core/directives/itemSelected/item-selected.directive';\n\n@Injectable()\nexport class SelectedItemService {\n\n  private _itemSelected: TlItemSelectedDirective;\n\n  constructor() {\n  }\n\n  set itemSelected(item: TlItemSelectedDirective) {\n    this._itemSelected = item;\n  }\n\n  get itemSelected() {\n    return this._itemSelected;\n  }\n\n}\n","import {ControlValueAccessor} from '@angular/forms';\n\nexport abstract class ValueAccessorBase<T> implements ControlValueAccessor {\n  private innerValue: T;\n\n  public isDisabled: boolean;\n\n  public propagateChange: any = () => {};\n  public propagateTouched: any = () => {};\n\n  get value(): T {\n    return this.innerValue;\n  }\n\n  set value(value: T) {\n    if ( (value instanceof Date) && this.innerValue) {\n      const innerDate = new Date(<string><any>this.innerValue);\n      if ( (<Date><any>innerDate).getTime() === (<Date><any>value).getTime()) {\n        return;\n      }\n    }\n    if (this.innerValue !== value) {\n      this.innerValue = value;\n      this.propagateChange(value);\n    }\n  }\n\n  writeValue(value: T) {\n    this.innerValue = value;\n  }\n\n  registerOnChange(fn: (value: T) => void) {\n    this.propagateChange = fn;\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.propagateTouched = fn;\n  }\n\n  setDisabledState( isDisabled: boolean ): void {\n      this.isDisabled = isDisabled;\n  }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport enum KeyEvent {\n    ARROWUP = 'ArrowUp',\n    ARROWDOWN = 'ArrowDown',\n    ARROWLEFT = 'ArrowLeft',\n    ARROWRIGHT = 'ArrowRight',\n    END = 'End',\n    HOME = 'Home',\n    ENTER = 'Enter',\n    NUMPADENTER = 'NumpadEnter',\n    ESCAPE = 'Escape',\n    TAB = 'Tab',\n    SPACE = 'Space',\n    DELETE = 'Delete',\n    BACKSPACE = 'Backspace',\n}\n","import { Renderer2, Input } from '@angular/core';\nimport { KeyEvent } from '../../core/enums/key-events';\nimport { Subject } from 'rxjs';\n\nexport class InputMask {\n\n  private tlInput;\n\n  // Desativa a mascara dos Input preenchendo com Underline ( _ )\n  private maskGuides = false;\n\n  private addNinthDigit = false;\n\n  private valueUppercase;\n\n  private literalChar;\n\n  private _value;\n\n  private input;\n\n  private startPosition: number;\n\n  private endPosition: number;\n\n  private shiftStart = '';\n\n  private maskExpression: string;\n\n  private maskGuideExpression: string;\n\n  private maskSpecialCharacters: string[] = [ '/', '(', ')', '.', ':', '-', ' ', '+' ];\n\n  public complete: Subject<boolean>;\n\n  private maskAwaliablePatterns: { [key: string]: RegExp } = {\n    '0': /\\d/,\n    '9': /\\d/,\n    'H': /[0-1-2]/,\n    'h': /[0-9]/,\n    'M': /[0-5]/,\n    'm': /[0-9]/,\n    'A': /[a-zA-Z]/,\n  };\n\n  constructor( element, private renderer: Renderer2, maskValue ) {\n    this.tlInput = element;\n    this.input = element.input;\n    this.setMaskExpression( maskValue );\n    this.initializeMask();\n    this.complete = new Subject();\n  }\n\n  setMaskExpression( value ) {\n    if ( !value ) {\n      return;\n    }\n    if ( typeof value === 'string' ) {\n      this.maskExpression = value;\n      return;\n    }\n    if ( value[ 'guides' ] === false ) {\n      this.maskGuides = value[ 'guides' ];\n    }\n    if ( value[ 'addNinthDigit' ] ) {\n      this.addNinthDigit = value[ 'addNinthDigit' ];\n    }\n    this.literalChar = value[ 'withLiteralChar' ];\n    this.valueUppercase = value[ 'uppercase' ];\n    this.maskExpression = value[ 'mask' ];\n  }\n\n  get value() {\n    return this.input.nativeElement.value;\n  }\n\n  set value( value ) {\n    this.input.nativeElement.value = value;\n  }\n\n  initializeMask() {\n    this.initializeOnFocus();\n    this.generateMaskGuideExpression();\n    this.applyMaskOnInit();\n\n    this.setPlaceholder();\n    this.setValidation();\n\n    this.onKeyPressInputListener();\n    this.onMouseUpInputListener();\n    this.onKeyDownInputListener();\n    this.onPastListener();\n  }\n\n  onPastListener() {\n    this.renderer.listen( this.input.nativeElement, 'paste', ($event: ClipboardEvent) => {\n      const clipboardData = $event.clipboardData || window['clipboardData'];\n      let value = clipboardData\n        .getData('text')\n        .replace(/ /g, '')\n        .replace(/[^\\w\\s]/gi, '');\n      value = this.handleAddNinthDigit(value);\n      this.applyMask( value, false );\n    } );\n  }\n\n  handleAddNinthDigit( value ) {\n    if ( this.addNinthDigit ) {\n      if (value.length <= 10 ) {\n        value = value.slice(0, 2) + '9' + value.slice(2);\n      }\n    }\n    return value;\n  }\n\n  onKeyPressInputListener() {\n    this.renderer.listen( this.input.nativeElement, 'keypress', $event => {\n      this.handleKeypress( $event );\n      this.updateModel();\n      this.onComplete();\n    } );\n  }\n\n  onMouseUpInputListener() {\n    this.renderer.listen( this.input.nativeElement, 'mouseup', $event => {\n      $event.stopPropagation();\n      this.getPosition();\n    } );\n  }\n\n  onKeyDownInputListener() {\n    this.renderer.listen( this.input.nativeElement, 'keydown', $event => {\n      switch ( $event.code ) {\n        case KeyEvent.BACKSPACE:\n          this.handleBackspace( $event );\n          break;\n        case KeyEvent.DELETE:\n          this.handleDelete( $event );\n          break;\n        case KeyEvent.ARROWRIGHT:\n          this.handleArrowRight( $event );\n          break;\n        case KeyEvent.ARROWLEFT:\n          this.handleArrowLeft( $event );\n          break;\n        case KeyEvent.HOME:\n          this.handleHome( $event );\n          break;\n        case KeyEvent.END:\n          this.handleEnd( $event );\n          break;\n        case 'KeyA':\n          this.handleSelectAll( $event );\n          break;\n      }\n    } );\n  }\n\n  isDateString( x ) {\n    return !isNaN( Date.parse( x ) );\n  }\n\n  private applyMaskOnInit() {\n    setTimeout( () => {\n      if ( this.value !== this.maskGuideExpression ) {\n        if ( this.value.length > 0 ) {\n          if (this.isDateString(this.value )) {\n            return;\n          }\n          this.value = this.cleanValue( this.value );\n          this.setValueOnInitialize();\n          this.applyGuides();\n          this.applyMask();\n        }\n      }\n    }, 10 );\n  }\n\n  private getPosition() {\n    this.startPosition = this.input.nativeElement.selectionStart;\n    this.endPosition = this.input.nativeElement.selectionEnd;\n  }\n\n  private initializeOnFocus() {\n    this.renderer.listen( this.input.nativeElement, 'focus', () => {\n      this.onFocus();\n    } );\n    this.renderer.listen( this.input.nativeElement, 'focusout', () => {\n      this.handleNotMath();\n    } );\n  }\n\n  private onFocus() {\n    this.applyGuides();\n    setTimeout( () => {\n      if ( !this.isTextLengthMatchWithExpressionLength() ) {\n        this.setPosition( 0 );\n      } else {\n        this.setPosition( 0, this.value.length );\n      }\n    }, 0 );\n  }\n\n  private handleNotMath() {\n    if ( !this.isTextLengthMatchWithExpressionLength() ) {\n      this.value = '';\n      this.updateModel();\n      this.tlInput.value = '';\n    }\n  }\n\n  private handleBackspace( event ) {\n    const value = this.value;\n    const start = this.input.nativeElement.selectionStart;\n    const endPosition = this.input.nativeElement.selectionEnd;\n    const valueArray = value.split( '' );\n    this.getPosition();\n\n    if ( this.hasTextSelected( this.startPosition, this.endPosition ) ) {\n      event.preventDefault();\n      this.deleteTextOnKeyPress( valueArray, this.startPosition, this.endPosition );\n      return;\n    }\n    if ( this.maskGuides ) {\n      event.preventDefault();\n      if ( this.isCharBeforeEqualMaskGuide( value, endPosition ) ) {\n        this.jumpCharMask( start, endPosition );\n      } else {\n        this.deleteTextOnKeyPress( valueArray, start, endPosition );\n      }\n    }\n    this.updateModel();\n    this.onComplete();\n  }\n\n  private handleDelete( event ) {\n    const valueArray = this.value.split( '' );\n    const self = this;\n    this.getPosition();\n    event.preventDefault();\n    if ( this.maskGuides ) {\n      if ( this.hasTextSelected( this.startPosition, this.endPosition ) ) {\n        this.deleteTextOnKeyPress( valueArray, this.startPosition, this.endPosition );\n      } else {\n        this.value = this.deleteCharOnDeleteKey( valueArray );\n        this.setPosition( self.endPosition );\n      }\n    }\n    this.updateModel();\n    this.onComplete();\n  }\n\n  private handleKeypress( event: KeyboardEvent ) {\n    const charInputted = event.key;\n    let inputArray = this.value.split( '' );\n    if ( event.key === 'Enter' ) {\n      return;\n    }\n    if ( this.hasTextSelected( this.startPosition, this.endPosition ) ) {\n      this.deleteTextOnKeyPress( inputArray, this.startPosition, this.endPosition );\n      this.setPosition( this.startPosition );\n      inputArray = this.value.split( '' );\n    }\n    if ( this.maskGuides ) {\n      this.getPosition();\n      this.replaceValidChar( charInputted, this.getCursorPosition( this.endPosition ), inputArray );\n      event.preventDefault();\n\n    } else {\n      this.applyMask( charInputted );\n      event.preventDefault();\n    }\n  }\n\n  private handleArrowRight( event ) {\n    this.getPosition();\n    if ( event.shiftKey ) {\n      this.setShiftKey( 'Right' );\n      event.preventDefault();\n      if ( this.shiftStart === 'Left' ) {\n        this.setPosition( this.startPosition + 1, this.endPosition );\n      } else {\n        this.setPosition( this.startPosition, this.endPosition + 1 );\n      }\n    }\n  }\n\n  private handleArrowLeft( event ) {\n    this.getPosition();\n    if ( event.shiftKey ) {\n      this.setShiftKey( 'Left' );\n      event.preventDefault();\n      if ( this.shiftStart === 'Right' ) {\n        this.setPosition( this.startPosition, this.endPosition - 1 );\n      } else {\n        if ( this.startPosition !== 0 ) {\n          this.setPosition( this.startPosition - 1, this.endPosition );\n        }\n      }\n    }\n  }\n\n  private handleHome( event ) {\n    event.preventDefault();\n    this.getPosition();\n    if ( event.shiftKey ) {\n      this.setShiftKey( 'Left' );\n      this.setPosition( 0, this.endPosition );\n    } else {\n      this.setPosition( 0 );\n    }\n  }\n\n  private handleEnd( event ) {\n    event.preventDefault();\n    this.getPosition();\n    if ( event.shiftKey ) {\n      this.setShiftKey( 'Right' );\n      this.setPosition( this.startPosition, this.value.length );\n    } else {\n      this.setPosition( this.value.length );\n    }\n  }\n\n  private handleSelectAll( event ) {\n    if ( event.ctrlKey ) {\n      this.setPosition( 0, this.value.length );\n    }\n  }\n\n  private setShiftKey( value ) {\n    if ( this.startPosition === this.endPosition ) {\n      this.shiftStart = '';\n    }\n    if ( this.shiftStart === '' ) {\n      this.shiftStart = value;\n    }\n  }\n\n  private applyMask( charInputted?, utilizeOriginal = true ) {\n    let cursor = 0;\n    let result = '';\n\n    if ( charInputted !== undefined ) {\n      this.value += charInputted;\n    }\n\n    const inputArray: string[] = utilizeOriginal ? this.value.split( '' ) : charInputted.split( '' );\n\n    for ( let i = 0, inputSymbol = inputArray[ 0 ]; i < inputArray.length; i++ , inputSymbol = inputArray[ i ] ) {\n      if ( result.length === this.maskExpression.length ) {\n        break;\n      }\n      if ( this.isValidSymbolMask( inputSymbol, this.maskExpression[ cursor ] ) ) {\n        result += inputSymbol;\n        cursor++;\n      } else if ( this.maskSpecialCharacters.indexOf( this.maskExpression[ cursor ] ) !== -1 ) {\n        result += this.maskExpression[ cursor ];\n        cursor++;\n        i--;\n      } else if ( this.maskExpression[ cursor ] === '9' ) {\n        cursor++;\n        i--;\n      }\n    }\n    this.value = result;\n    this.updateModel();\n    this.onComplete();\n  }\n\n  private deleteTextOnKeyPress( valueArray, startPosition, endPosition ) {\n    if ( this.hasTextSelected( startPosition, endPosition ) ) {\n      this.value = this.deleteTextSelected( valueArray, startPosition, endPosition );\n      this.setPosition( startPosition, startPosition );\n    } else {\n      this.value = this.deleteCharOnBackspaceKey( valueArray, endPosition );\n      this.setPosition( startPosition - 1, endPosition - 1 );\n    }\n  }\n\n  private deleteTextSelected( valueArray, startPosition, endPosition ) {\n    const self = this;\n    let valueResult = '';\n    valueArray.forEach( function ( myValue, index ) {\n      if ( index >= startPosition && index < endPosition && self.maskGuides\n        && self.maskSpecialCharacters.indexOf( index ) < 0 ) {\n        valueResult = valueResult + self.maskGuideExpression[ index ];\n      } else if ( index >= startPosition && index < endPosition && self.maskSpecialCharacters.indexOf( index ) < 0 ) {\n        valueResult = valueResult + '';\n      } else {\n        valueResult = valueResult + myValue;\n      }\n    } );\n    return valueResult;\n  }\n\n\n  private deleteCharOnBackspaceKey( valueArray, endPosition ) {\n    const self = this;\n    let valueResult = '';\n    valueArray.forEach( function ( myValue, index ) {\n      if ( index === endPosition - 1 ) {\n        valueResult = valueResult + self.maskGuideExpression[ endPosition - 1 ];\n      } else {\n        valueResult = valueResult + myValue;\n      }\n    } );\n    return valueResult;\n  }\n\n  private deleteCharOnDeleteKey( valueArray ) {\n    const self = this;\n    valueArray.forEach( function ( value, index, array ) {\n      if ( index === self.endPosition ) {\n        array[ index ] = self.maskGuideExpression[ self.endPosition ];\n      }\n    } );\n    return String( valueArray ).replace( /,/gi, '' );\n  }\n\n  private replaceUnderscoreForChar( valueArray, charInputted, cursorEnd ) {\n\n    if (valueArray.length === 0) {\n      valueArray = [...this.maskGuideExpression];\n    }\n\n    if ( this.maskSpecialCharacters.indexOf( this.maskExpression[ cursorEnd ] ) >= 0 ) {\n      cursorEnd++;\n    }\n    valueArray.forEach( function ( value, index, array ) {\n      if ( index === cursorEnd ) {\n        array[ index ] = charInputted;\n      }\n    } );\n    return valueArray.toString().replace( /,/gi, '' );\n  }\n\n  private getCursorPosition( endPosition ) {\n    let cursor = endPosition;\n    while ( this.maskExpression.length - 1 > cursor ) {\n      if ( this.maskSpecialCharacters.indexOf( this.maskExpression[ cursor ] ) >= 0 ) {\n        cursor++;\n        this.setPosition( cursor );\n      } else {\n        break;\n      }\n    }\n    return cursor;\n  }\n\n  private replaceValidChar( charInputted, cursor, inputArray ) {\n    if ( this.isValidSymbolMask( charInputted, this.maskExpression[ cursor ] ) &&\n      this.validateHourMatch( charInputted, this.maskExpression[ cursor ] ) ) {\n      this.value = this.replaceUnderscoreForChar( inputArray, charInputted, cursor );\n      this.setPosition( cursor + 1 );\n    }\n  }\n\n  private onComplete() {\n    if ( this.isTextLengthMatchWithExpressionLength() ) {\n      this.tlInput.value = this.value;\n      this.complete.next(true);\n    }\n  }\n\n  private isTextLengthMatchWithExpressionLength() {\n    return ( this.removeUnderscore( this.maskExpression ).length === this.removeUnderscore( this.value ).length);\n  }\n\n  private isValidSymbolMask( inputSymbol: string, maskSymbolChar: string ): boolean {\n    if ( this.maskSpecialCharacters.indexOf( inputSymbol ) >= 0 ) {\n      return false;\n    }\n    return ( inputSymbol === maskSymbolChar || this.maskAwaliablePatterns[ maskSymbolChar ] )\n      && (this.maskAwaliablePatterns[ maskSymbolChar ].test( inputSymbol ));\n  }\n\n  private validateHourMatch( inputSymbol, maskSymbolChar ) {\n    if ( maskSymbolChar !== 'h' ) {\n      return true;\n    }\n    if ( Number( this.value[ 0 ] ) < 2 ) {\n      return true;\n    }\n    return maskSymbolChar === 'h' && Number( inputSymbol ) <= 3;\n  }\n\n  private updateModel(): void {\n    const endPosition = this.input.nativeElement.selectionEnd;\n    if ( this.valueUppercase ) {\n      this.value = this.value.toUpperCase();\n    }\n    this.setModelValue();\n    this.setPosition( endPosition );\n  }\n\n  setModelValue() {\n    setTimeout( () => {\n      this.tlInput.value = this.value;\n    }, 0 );\n  }\n\n  private setValidation() {\n    this.input.nativeElement.maxLength = this.maskExpression.length;\n    this.input.nativeElement.minLength = this.maskExpression.length;\n  }\n\n  private applyGuides() {\n    const self = this;\n    if ( this.maskGuides ) {\n      setTimeout( function () {\n        if ( self.input.nativeElement.value.length === 0 ) {\n          self.input.nativeElement.value = self.maskGuideExpression;\n        }\n      }, 1 );\n    }\n  }\n\n  private generateMaskGuideExpression(): string {\n    let mask = this.maskExpression;\n    mask = mask.replace( /9/gi, '_' );\n    mask = mask.replace( /0/gi, '_' );\n    mask = mask.replace( /A/gi, '_' );\n    mask = mask.replace( /H/gi, '_' );\n    mask = mask.replace( /h/gi, '_' );\n    mask = mask.replace( /M/gi, '_' );\n    mask = mask.replace( /m/gi, '_' );\n    return this.maskGuideExpression = mask;\n  }\n\n  private clearMask( value: string ): string {\n    if ( !(this.literalChar) ) {\n      return this.cleanValue( value );\n    }\n    return this.removeUnderscore( value );\n  }\n\n  private jumpCharMask( startPosition, endPosition ) {\n    if ( this.isFirstPosition( startPosition ) ) {\n      this.setPosition( startPosition - 1, endPosition - 1 );\n    }\n  }\n\n  private setPosition( startPosition, endPosition? ) {\n    if ( endPosition === undefined ) {\n      endPosition = startPosition;\n    }\n    this.input.nativeElement.setSelectionRange( startPosition, endPosition );\n    this.getPosition();\n  }\n\n  private isCharBeforeEqualMaskGuide( value, position ) {\n    return value[ position - 1 ] === this.maskGuideExpression[ position - 1 ];\n  }\n\n  private isFirstPosition( startPosition ) {\n    return startPosition > 0;\n  }\n\n  private hasTextSelected( startPosition, endPosition ) {\n    return startPosition !== endPosition;\n  }\n\n  private removeUnderscore( value ) {\n    return value.replace( /_/gi, '' );\n  }\n\n  private setPlaceholder() {\n    this.input.nativeElement.placeholder = this.maskExpression;\n  }\n\n  private setValueOnInitialize() {\n    this._value = this.value;\n  }\n\n  private cleanValue( value ) {\n    return value.replace( /[^\\d]+/g, '' );\n  }\n}\n","import {InjectionToken} from '@angular/core';\n\nexport interface InputConfig {\n  labelSize?: string;\n  textAlign?: string;\n  height?: string;\n  flatBorder?: string;\n  withBorder?: string;\n  labelPlacement?: string;\n  color?: string;\n}\n\nexport let INPUT_CONFIG = new InjectionToken<InputConfig>('input.preview.js');\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  Input, Component, HostBinding,\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-label',\n  templateUrl: './label.html',\n  styleUrls: [ './label.scss' ],\n} )\nexport class TlLabel {\n\n  @Input() labelPlacement = 'left';\n\n  @Input() required = null;\n\n  @Input() labelSize = '100px';\n\n  @Input() labelTitle = '';\n\n  @HostBinding( 'style.width' )\n  get width() {\n    return this.labelSize;\n  }\n\n  @HostBinding( 'class.label-left' )\n  get left() {\n    return this.labelPlacement === 'left';\n  }\n\n  @HostBinding( 'class.label-top' )\n  get top() {\n    return this.labelPlacement === 'top';\n  }\n\n  constructor() {\n  }\n\n}\n","<span>{{labelTitle}}<span *ngIf=\"required\" class=\"ui-required\">*</span></span>\n\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  Input,\n  ViewChild,\n  AfterViewInit,\n  Output,\n  Optional,\n  Inject,\n  EventEmitter, Renderer2, ElementRef, OnInit, ContentChild, forwardRef, ChangeDetectorRef, OnDestroy, Self, Injector, AfterContentInit,\n} from '@angular/core';\nimport {InputMask} from './core/input-mask';\nimport {\n  AbstractControl, NgControl,\n} from '@angular/forms';\nimport {CdkOverlayOrigin} from '@angular/cdk/overlay';\nimport {ValueAccessorBase} from './core/value-accessor';\nimport {INPUT_CONFIG, InputConfig} from './core/input.config';\nimport {Subscription} from 'rxjs';\n\n/**\n * Input Component personalized with few features.\n *\n * import { InputModule } from 'truly-ui';\n *\n * @Component({\n *  selector: 'my-app-comp',\n *  template: '\n *  <tl-input\n *   [(ngModel)]=\"title\"\n *   [iconBefore]=\"'ion-email'\"\n *   [iconAfter]=\"'ion-email'\"\n *   [textBefore]=\"'R$'\"\n *   [textAfter]=\"'00,00'\"\n *   [placeholder]=\"'Meu Input'\"\n *   [clearButton]=\"true\"\n *   [readonly]=\"true\"\n *   [disabled]=\"true\"\n *   [toUpperCase]=\"true\">\n *  </tl-input>\n *  '\n * })\n */\n\n@Component({\n  selector: 'tl-input',\n  templateUrl: './input.html',\n  styleUrls: ['./input.scss']\n})\nexport class TlInput extends ValueAccessorBase<string> implements OnInit, OnDestroy, AfterViewInit {\n\n  @Input() textBefore = '';\n\n  @Input() textAfter = '';\n\n  @Input() labelPlacement = 'left';\n\n  @Input() labelSize = '100px';\n\n  @Input() name = '';\n\n  @Input() label = '';\n\n  @Input() color = 'basic';\n\n  @Input() iconBefore = '';\n\n  @Input() iconAfter = '';\n\n  @Input() clearButton = false;\n\n  @Input() readonly: boolean = null;\n\n  @Input() required: boolean = null;\n\n  @Input() disabled: boolean = null;\n\n  @Input() autocomplete = 'off';\n\n  @Input() maxlength = -1;\n\n  @Input() tabindex = 0;\n\n  @Input() textAlign: 'left' | 'right' | 'center' | 'justify' = 'left';\n\n  @Input() mask = '';\n\n  @Input() placeholder = ' ';\n\n  @Input() type = 'text';\n\n  @Input() height = '23px';\n\n  @Input() withBorder = true;\n\n  @Input() flatBorder = false;\n\n  @ViewChild('input', {static: true} ) input;\n\n  @ViewChild('inputBox', {static: true} ) inputBox;\n\n  @ViewChild(CdkOverlayOrigin, {static: true} ) cdkOverlayOrigin: CdkOverlayOrigin;\n\n  @Output() clear: EventEmitter<any> = new EventEmitter();\n\n  @Output() overlayOrigin: EventEmitter<any> = new EventEmitter();\n\n  @Output() clickAddon: EventEmitter<any> = new EventEmitter();\n\n  @Output() click: EventEmitter<MouseEvent> = new EventEmitter();\n\n  @Output() focus: EventEmitter<any> = new EventEmitter();\n\n  @Output() blur: EventEmitter<any> = new EventEmitter();\n\n  @Output() valid: EventEmitter<boolean> = new EventEmitter();\n\n  @Output() completeMask: EventEmitter<boolean> = new EventEmitter();\n\n  public isShowingMessages = false;\n\n  public fieldMask: InputMask;\n\n  public hasValidator;\n\n  private subscription = new Subscription();\n\n  constructor(@Optional() @Inject(INPUT_CONFIG) private inputConfig: InputConfig,\n              @Optional() @Self() public ngControl: NgControl,\n              private tlInput: ElementRef, private renderer: Renderer2,\n              private change: ChangeDetectorRef) {\n    super();\n    this.setControl();\n    this.setOptions(this.inputConfig);\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngOnInit() {\n    this.overlayOrigin.emit(this.cdkOverlayOrigin);\n  }\n\n  ngAfterViewInit() {\n    this.handleValidator();\n    this.handleRequiredValidator();\n    this.handleMask();\n  }\n\n  handleRequiredValidator() {\n    if (this.control && this.control.errors && this.control.errors.hasOwnProperty('required')) {\n      this.required = this.control.errors['required'];\n      this.change.detectChanges();\n    }\n  }\n\n  handleValidator() {\n    if (this.control) {\n      this.hasValidator = this.control.validator;\n      this.change.detectChanges();\n    }\n  }\n\n  handleMask() {\n    if (this.mask) {\n      this.fieldMask = new InputMask(this, this.renderer, this.mask);\n      this.subscription.add(this.fieldMask.complete.subscribe(() => {\n        this.completeMask.emit(true);\n      }));\n    }\n  }\n\n  onClickAddon($event, side) {\n    this.stopEvent($event);\n    this.clickAddon.emit({$event, side});\n  }\n\n  onInputClick($event: MouseEvent) {\n    this.stopEvent($event);\n    this.isShowingMessages = true;\n    this.click.emit($event);\n  }\n\n  setOptions(options: InputConfig) {\n    if (options) {\n      const self = this;\n      Object.keys(options).forEach(function (key) {\n        self[key] = options[key];\n      });\n    }\n  }\n\n  stopEvent($event) {\n    $event.preventDefault();\n    $event.stopPropagation();\n  }\n\n  setFocus() {\n    this.input.nativeElement.focus();\n  }\n\n  getNativeInput() {\n    return this.input.nativeElement;\n  }\n\n  onInputFocus($event) {\n    this.isShowingMessages = true;\n    this.focus.emit($event);\n  }\n\n  onInputBlur($event) {\n    this.isShowingMessages = false;\n    this.blur.emit($event);\n    this.propagateTouched();\n  }\n\n  clearInput($event?) {\n    this.value = '';\n    this.input.nativeElement.focus();\n    this.clear.emit($event);\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<div [class]=\"'tl-input-box ' + color\" #inputBox>\n\n  <tl-label *ngIf=\"label\" [required]=\"required\" [labelTitle]=\"label\" [labelPlacement]=\"labelPlacement\" [labelSize]=\"labelSize\"></tl-label>\n\n  <span *ngIf=\"iconBefore\" (click)=\"onClickAddon($event, 'before')\"\n        [ngClass]=\"{ 'withoutBorder' : !withBorder, '-flatborders': flatBorder }\" class=\"addon -borderleft\">\n    <tl-icon>{{ iconBefore }}</tl-icon>\n  </span>\n\n  <span *ngIf=\"textBefore\" (click)=\"onClickAddon($event, 'before')\" class=\"addon -borderleft\"\n        [ngClass]=\"\n        {\n        'predefined' : textBefore,\n        'withBorder': withBorder,\n        'withoutBorder' : !withBorder,\n        '-flatborders': flatBorder\n        }\">\n    {{textBefore}}\n  </span>\n\n  <div class=\"ui-wrapper-input\" [ngClass]=\"{'-flatborders': flatBorder}\" [style.height]=\"height\">\n    <input [style.padding-right]=\"clearButton ? '20px' : '12px'\"\n           [style.height]=\"height\"\n           #input\n           [type]=\"type\"\n           cdkOverlayOrigin\n           [tabindex]=\"tabindex\"\n           [style.text-align]=\"textAlign\"\n           [disabled]=\"disabled || isDisabled\"\n           class=\"field\"\n           [ngClass]=\"{\n             'ng-invalid': control?.errors,\n             'ng-valid': !control?.errors,\n             'ng-touched': control?.touched,\n             'ng-untouched': control?.untouched,\n             'withValidators': hasValidator,\n             'withoutValidators': !hasValidator,\n             'withBorder': withBorder,\n             'withoutBorder' : !withBorder,\n             '-borderleft': iconBefore || textBefore,\n             '-flatborders': flatBorder,\n             '-borderright': iconAfter || textAfter\n             }\"\n           [attr.readonly]=\"readonly ? true : null\"\n           [attr.required]=\"required ? true : null\"\n           [attr.autocomplete]=\"autocomplete\"\n           [attr.maxlength]=\"maxlength\"\n           [attr.name]=\"name\"\n           [placeholder]=\"placeholder\"\n           [(ngModel)]=\"value\"\n           (click)=\"onInputClick($event)\"\n           (blur)=\"onInputBlur($event)\"\n           (focus)=\"onInputFocus($event)\">\n    <i *ngIf=\"clearButton && value\" (click)=\"clearInput($event)\"\n       class=\"ion ion-ios-close-circle-outline clearButton\">\n    </i>\n  </div>\n\n  <span #afterIcon *ngIf=\"iconAfter\"\n        (click)=\"onClickAddon($event, 'after')\" class=\"addon -borderright\"\n        [ngClass]=\"{ 'withoutBorder' : !withBorder, '-flatborders': flatBorder, '-borderright': iconAfter || textAfter }\">\n    <tl-icon>{{ iconAfter }}</tl-icon>\n  </span>\n\n  <span *ngIf=\"textAfter\" (click)=\"onClickAddon($event, 'after')\" #afterText class=\"addon -borderright\"\n        [ngClass]=\"{ '-predefined' : textAfter, '-flatborders': flatBorder, 'withoutBorder' : !withBorder }\">{{textAfter}}</span>\n</div>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable } from '@angular/core';\nimport { I18nInterface } from './i18n.interface';\n\nexport let LOCALE_I18N: I18nInterface;\n\n@Injectable()\nexport class I18nService {\n\n  private locale: I18nInterface;\n\n  setLocale(locale: I18nInterface): void {\n    if (this.locale && this.locale.locale === locale.locale) {\n      return;\n    }\n    this.locale = locale;\n    LOCALE_I18N = locale;\n  }\n\n  getLocale() {\n    return this.locale;\n  }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n  selector: 'tl-loader',\n  templateUrl: './loader.html',\n  styleUrls: ['./loader.scss'],\n})\nexport class TlLoader implements OnInit {\n\n  @Input() color = '#ccc';\n\n  @Input() strokeWidth = 5;\n\n  constructor() {}\n\n  ngOnInit() {}\n\n}\n","<svg class=\"spinner\" viewBox=\"0 0 50 50\">\n  <circle class=\"path\"\n          cx=\"25\"\n          cy=\"25\"\n          r=\"20\"\n          fill=\"none\"\n          [attr.stroke]=\"color\"\n          [attr.stroke-width]=\"strokeWidth\">\n  </circle>\n</svg>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport class BlockUIConfig {\n    public icon = 'fas fa-sync-alt';\n    public spin = true;\n    public message = '';\n    public width = '';\n    public height = '';\n    public color = '';\n    public padding = '';\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Component, ElementRef } from '@angular/core';\nimport { BlockUIConfig } from './blockui-config';\n\n@Component({\n    selector: 'tl-blockui-component',\n    templateUrl: './blockui.component.html',\n    styleUrls: ['./blockui.scss']\n})\nexport class TlBlockUIComponent {\n\n    public config: BlockUIConfig = new BlockUIConfig();\n\n    constructor( public element: ElementRef ) {}\n}\n","<div class=\"blockui-wrapper\"\n     [style.width]=\"config.width\"\n     [style.margin]=\"'-'+config.padding\"\n     [style.height]=\"config.height\">\n  <div id=\"blockui\">\n    <div class=\"blockui-content\">\n      <tl-icon [size]=\"'3em'\" [color]=\"config.color\" [animation]=\"config.spin ? 'spin' : null\">{{ config.icon }}</tl-icon>\n      <span *ngIf=\"config.message\">{{ config.message }}</span>\n    </div>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  ChangeDetectorRef,\n  ComponentFactoryResolver,\n  ComponentRef,\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  Renderer2,\n  ViewContainerRef\n} from '@angular/core';\nimport { BlockUIConfig } from './blockui-config';\nimport { TlBlockUIComponent } from './blockui.component';\n\n@Directive( {\n  selector: '[tlBlockui]'\n} )\nexport class TlBlockUI implements OnChanges {\n\n  @Input() tlBlockui: boolean;\n\n  @Input() dimensionsFrom: 'parent' | 'client' = 'client';\n\n  @Input() blockuiConfig: BlockUIConfig = new BlockUIConfig();\n\n  private overlayElement: ElementRef;\n\n  private overlayElementInstance: ComponentRef<TlBlockUIComponent>;\n\n  constructor( private elementRef: ElementRef,\n               private viewContainerRef: ViewContainerRef,\n               private compiler: ComponentFactoryResolver ) {\n  }\n\n  initializeBlockUi() {\n    this.createElementInstance();\n    this.getElementRefFromInstance();\n    this.setConfigToElement();\n  }\n\n  private getElementRefFromInstance() {\n    this.overlayElement = this.overlayElementInstance.instance.element;\n  }\n\n  private getPaddingElementRef() {\n    return window.getComputedStyle(this.elementRef.nativeElement).padding;\n  }\n\n  private setConfigToElement() {\n    this.blockuiConfig.width = this.elementRef.nativeElement.offsetWidth - 2 + 'px';\n    this.blockuiConfig.height = this.elementRef.nativeElement.offsetHeight + 'px';\n    this.blockuiConfig.padding = this.getPaddingElementRef();\n    this.overlayElementInstance.instance.config = this.blockuiConfig;\n  }\n\n  private createElementInstance() {\n    const componentFactory = this.compiler.resolveComponentFactory( TlBlockUIComponent );\n    this.overlayElementInstance = this.viewContainerRef.createComponent( componentFactory );\n    this.insertElement();\n  }\n\n  private insertElement() {\n    this.elementRef.nativeElement.insertAdjacentElement( 'afterBegin', this.overlayElementInstance.location.nativeElement );\n  }\n\n  ngOnChanges( changes ) {\n    if ( changes[ 'tlBlockui' ] ) {\n      this.toggleLoader( changes[ 'tlBlockui' ].currentValue );\n    }\n  }\n\n  private toggleLoader( showLoading: boolean ) {\n    showLoading ? this.show() : this.hide();\n  }\n\n  private show() {\n    this.initializeBlockUi();\n  }\n\n  private hide() {\n    this.viewContainerRef.clear();\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, OnDestroy, Input, Output,\n  AfterContentInit, EventEmitter,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\nimport * as objectPath from 'object-path';\n\n@Component( {\n  selector: 'tl-filter-container',\n  template: `\n    <ng-content></ng-content>\n  `,\n  exportAs: 'filterContainer',\n} )\nexport class TlFilterContainer implements AfterContentInit, OnDestroy {\n\n  constructor() {\n  }\n\n  @Input( 'searchTerm' )\n  set term( searchTerm: string ) {\n    this._term = searchTerm || '';\n    this.filtering.next( this._term );\n  }\n\n  get term() {\n    return this._term;\n  }\n\n  @Input() source = [];\n\n  @Input() searchBy = '';\n\n  @Input() lazyMode = '';\n\n  @Input() debounceTime = 200;\n\n  @Output() filter: EventEmitter<any> = new EventEmitter();\n\n  public filtering: Subject<any> = new Subject();\n\n  private _term = '';\n\n  ngAfterContentInit() {\n    this.filtering.pipe(\n      debounceTime( this.debounceTime ),\n      distinctUntilChanged( ( oldValue, newValue ) => oldValue === newValue ),\n    ).subscribe( ( term: string ) => {\n      this.filter.emit( this.search( term ) );\n    } );\n  }\n\n  search( searchTerm: string ) {\n    if ( this.lazyMode ) {\n      return searchTerm;\n    }\n    if (!this.searchBy) {\n      throw Error('Property [searchBy] is null, declare a key to search on list');\n    }\n    const filtered = [];\n    this.source.forEach( ( value ) => {\n      if ( String( objectPath.get( value, this.searchBy ).toLowerCase() ).indexOf( String( searchTerm.toLowerCase().trim() ) ) > -1 ) {\n        filtered.push( value );\n      }\n    } );\n    return filtered.length > 0 ? filtered : null;\n  }\n\n  ngOnDestroy() {\n  }\n\n}\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { Component, TemplateRef, Input } from '@angular/core';\n\n @Component( {\n   selector: 'tl-autocomplete-template',\n   template: `\n     <ng-container *ngTemplateOutlet=\"template; context: listContext\"></ng-container>\n   `,\n } )\n export class TlAutocompleteTemplate {\n\n   @Input() template: TemplateRef<any>;\n\n   @Input() item: any;\n\n   @Input() index: boolean;\n\n   constructor() {}\n\n   get listContext() {\n     return { item: this.item, index: this.index };\n   }\n }\n","import {AbstractControl, NG_VALIDATORS, Validator} from '@angular/forms';\nimport {Directive, Input} from '@angular/core';\n\n@Directive({\n  selector: '[selectedItem]',\n  providers: [{provide: NG_VALIDATORS, useExisting: SelectedValidatorDirective, multi: true}]\n})\nexport class SelectedValidatorDirective implements Validator {\n\n  @Input() selected;\n\n  validate(control: AbstractControl): {[key: string]: any} | null {\n    if ( !control.value ) {\n      return null;\n    }\n    if ( control.value && !this.selected ) {\n      return { item: 'Invalid Item' };\n    }\n    return null;\n  }\n}\n","import { PipeTransform, Pipe } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Pipe({ name: 'highlight' })\nexport class HighlightPipe implements PipeTransform {\n  constructor(public sanitizer: DomSanitizer) {\n  }\n  transform(text: string, search): SafeHtml {\n    if (search && text) {\n      let pattern = search.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n      pattern = pattern.split(' ').filter((t) => {\n        return t.length > 0;\n      }).join('|');\n      const regex = new RegExp(pattern, 'gi');\n      return this.sanitizer.bypassSecurityTrustHtml(\n        text.replace(regex, (match) => `<span style=\"background: #feffbe\">${match}</span>`)\n      );\n\n    } else {\n      return text;\n    }\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, Input, Optional, Inject, OnChanges, ViewChildren,\n  EventEmitter, Output, ChangeDetectorRef, QueryList, AfterViewInit, ViewChild, ElementRef, OnDestroy,\n  AfterContentInit, TemplateRef, Self,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { ConnectedOverlayPositionChange } from '@angular/cdk/overlay';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { I18nService } from '../i18n/i18n.service';\nimport { AUTOCOMPLETE_CONFIG, AutoCompleteConfig } from './interfaces/autocomplete.config';\nimport { DataSourceList } from '../core/classes/datasource-list';\nimport { TlItemSelectedDirective } from '../core/directives/itemSelected/item-selected.directive';\nimport { scrollIntoView } from '../core/helper/scrollIntoView';\nimport { SelectedItemService } from './services/selected-item.service';\nimport { Subscription } from 'rxjs';\n\nimport * as objectPath from 'object-path';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\nimport { TlInput } from '../input/input';\n\n@Component( {\n  selector: 'tl-autocomplete',\n  templateUrl: './autocomplete.html',\n  styleUrls: [ './autocomplete.scss' ],\n  providers: [ SelectedItemService ],\n} )\nexport class TlAutoComplete extends ValueAccessorBase<any> implements OnChanges, OnDestroy, AfterViewInit, AfterContentInit {\n\n  @Input( 'data' )\n  set data( value ) {\n    this._data = value;\n  }\n\n  get data() {\n    return this._data;\n  }\n\n  @Input('control')\n  set control(item) {\n    this._control = item;\n  }\n\n  @Input() totalLength = 1000;\n\n  @Input() filterOperator = '%';\n\n  @Input() rowsPage = 100;\n\n  @Input() lazyMode = false;\n\n  @Input() rowHeight = 40;\n\n  @Input() template: TemplateRef<any>;\n\n  @Input() debounceTime = 200;\n\n  @Input() keyText = '';\n\n  @Input() keyValue = null;\n\n  @Input() openFocus = true;\n\n  @Input() chainFilter = false;\n\n  @Input() loading = false;\n\n  @Input() clearButton = true;\n\n  @Input() clearOnSelect = false;\n\n  @Input() disabled: boolean = null;\n\n  @Input() required: boolean = null;\n\n  @Input() color = 'basic';\n\n  @Input() labelPlacement: 'top' | 'left' = 'left';\n\n  @Input() textBefore = null;\n\n  @Input() textAfter = null;\n\n  @Input() iconBefore = null;\n\n  @Input() iconAfter = null;\n\n  @Input() labelSize = '100px';\n\n  @Input() height = '23px';\n\n  @Input() containerHeight = '200px';\n\n  @Input() searchBy = '';\n\n  @Input() label = '';\n\n  @Input() identifier = null;\n\n  @Input() placeholder = 'Search...';\n\n  @Input() modelMode: 'string' | 'object' = 'object';\n\n  @Output() lazyLoad: EventEmitter<any> = new EventEmitter();\n\n  @Output() selectItem: EventEmitter<any> = new EventEmitter();\n\n  @Output() changeSelected: EventEmitter<any> = new EventEmitter();\n\n  @Output() filter: EventEmitter<any> = new EventEmitter();\n\n  @Output() clickAddon: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild( 'input', {static: true}  ) input: ElementRef;\n\n  @ViewChild( CdkVirtualScrollViewport, {static: false}  ) cdkVirtualScroll: CdkVirtualScrollViewport;\n\n  @ViewChildren( TlItemSelectedDirective  ) listItems: QueryList<TlItemSelectedDirective>;\n\n  @ViewChild( TlInput, {static: true}  ) tlinput: TlInput;\n\n  public keyManager: ActiveDescendantKeyManager<TlItemSelectedDirective>;\n\n  public dataSource: DataSourceList;\n\n  public isOpen = false;\n\n  public focused = false;\n\n  public selected;\n\n  public description = '';\n\n  public trigger;\n\n  public positionOverlay: 'top' | 'bottom' | 'center';\n\n  public nothingFound = false;\n\n  public tempContainerHeight;\n\n  public messageLoading = this.i18n.getLocale().AutoComplete.messageLoading;\n\n  public nothingFoundMessage = this.i18n.getLocale().AutoComplete.nothingFoundMessage;\n\n  private filtering = false;\n\n  private modelInitialized = false;\n\n  private lastItemScrolled = 0;\n\n  private subscription: Subscription = new Subscription();\n\n  private _data = [];\n\n  private _control;\n\n  constructor( @Optional() @Inject( AUTOCOMPLETE_CONFIG ) autoCompleteConfig: AutoCompleteConfig,\n               private change: ChangeDetectorRef, private i18n: I18nService,\n               private itemSelectedService: SelectedItemService,\n               @Optional() @Self() public ngControl: NgControl ) {\n    super();\n    this.setControl();\n    this.setOptions( autoCompleteConfig );\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.handleModelLazy();\n    this.handleModelCached();\n    this.listenModelChanges();\n    this.change.markForCheck();\n  }\n\n  ngAfterViewInit() {\n    this.keyManager = new ActiveDescendantKeyManager( this.listItems );\n    this.tempContainerHeight = this.containerHeight;\n    this.validateKeyValue();\n  }\n\n  getNativeInput() {\n    return this.tlinput.getNativeInput();\n  }\n\n  private validateKeyValue() {\n    if ( !this.isModelModeString() && !this.keyValue && !this.identifier ) {\n      throw Error( 'The AutoComplete should have an [identifier] key property, ' +\n        ' because the property [keyValue] is null and the list is working on [modelMode] \\'object\\'' );\n    }\n  }\n\n  private listenModelChanges() {\n    if ( this.control ) {\n      this.control.valueChanges.subscribe( ( value ) => {\n        if ( this.dataSource ) {\n          this.handleModelLazy();\n          this.handleModelCached();\n        }\n      } );\n    }\n  }\n\n  private handleItemSelected() {\n    if ( this.itemSelectedService.itemSelected ) {\n      this.scrollToIndex().then( value => {\n        this.keyManager.setActiveItem( this.itemSelectedService.itemSelected.indexSelected );\n      } );\n    }\n  }\n\n\n  private scrollToIndex(): Promise<void> {\n    return new Promise<void>(resolve => {\n      setTimeout(() => {\n        if (this.cdkVirtualScroll) {\n          this.cdkVirtualScroll.scrollToIndex(this.lastItemScrolled);\n          this.change.markForCheck();\n        }\n        resolve();\n      }, 200);\n    });\n  }\n\n\n  onScrollIndexChange( $event ) {\n    if ( $event > 0 ) {\n      this.lastItemScrolled = $event;\n    }\n  }\n\n  onInput() {\n    this.setIsOpen( true );\n    this.setFiltering( true );\n  }\n\n  close() {\n    if ( !this.control.disabled ) {\n      this.value = null;\n      this.setDescriptionValue( '' );\n      this.selected = null;\n    }\n  }\n\n  onBackdropClick() {\n    this.setIsOpen( false );\n    this.setFiltering( false );\n  }\n\n  private handleModelLazy() {\n    if (this.value && this.lazyMode) {\n      const value = objectPath.get(this.value, this.keyText);\n      if ( value ) {\n        this.setDescriptionValue(value);\n        this.handleKeyModelValue(this.value);\n        this.changeSelected.emit(this.value);\n      }\n    }\n  }\n\n  private setDescriptionValue( value: string ) {\n    this.description = value;\n  }\n\n  private handleModelCached() {\n    if ( this.dataSource && !this.lazyMode && this.data.length > 0 ) {\n      this.data.forEach( ( value ) => {\n        if ( this.value ) {\n          if ( String( this.getItemCompare( value ) ) === String( this.getCompareModel() ) ) {\n            this.setDescriptionValue( objectPath.get( value, this.keyText ) );\n            this.handleKeyModelValue( value );\n            this.changeSelected.emit( value );\n          }\n        }\n      } );\n    }\n  }\n\n  private getItemCompare( value ) {\n    if ( !this.keyValue || this.isModelModeString() ) {\n      return objectPath.get( value, this.identifier );\n    }\n    return objectPath.get( value, this.keyValue );\n  }\n\n  private handleKeyModelValue( value ) {\n    this.modelInitialized = true;\n    this.selected = value;\n    if ( !this.isModelModeString() && this.keyValue ) {\n      this.value = objectPath.get( value, this.keyValue );\n      return;\n    }\n    if ( this.isModelModeString() && !this.keyValue ) {\n      this.value = objectPath.get( value, this.identifier );\n      return;\n    }\n    if ( this.isModelModeString() && this.keyValue ) {\n      this.value = objectPath.get( value, this.keyValue );\n      return;\n    }\n    this.value = value;\n  }\n\n  private setOptions( options: AutoCompleteConfig ) {\n    if ( options ) {\n      const self = this;\n      Object.keys( options ).forEach( function ( key ) {\n        self[ key ] = options[ key ];\n      } );\n    }\n  }\n\n  private setSelected( itemDirective: TlItemSelectedDirective ) {\n    this.selected = itemDirective.itemSelected;\n    this.keyManager.setActiveItem( itemDirective );\n    this.itemSelectedService.itemSelected = itemDirective;\n  }\n\n  stopEvent( $event ) {\n    $event.preventDefault();\n    $event.stopPropagation();\n  }\n\n  handleKeyArrowDown( $event ) {\n    if ( this.loading ) {\n      this.stopEvent($event);\n      return;\n    }\n    this.handleEventOpenList( $event );\n    if ( !this.keyManager.activeItem ) {\n      this.keyManager.setFirstItemActive();\n      return;\n    }\n    this.keyManager.onKeydown( $event );\n    scrollIntoView( this.keyManager.activeItem.element.nativeElement );\n  }\n\n  handleKeyArrowUp( $event ) {\n    this.handleEventOpenList( $event );\n    if ( !this.keyManager.activeItem ) {\n      this.keyManager.setFirstItemActive();\n      return;\n    }\n    this.keyManager.onKeydown( $event );\n    scrollIntoView( this.keyManager.activeItem.element.nativeElement );\n  }\n\n  handleKeyBackspace() {\n    this.value = null;\n  }\n\n  handleEventOpenList( $event ) {\n    if ( this.isOpen ) {\n      this.stopEvent( $event );\n    }\n  }\n\n  handleKeyEscape( $event ) {\n    if ( this.isOpen ) {\n      $event.stopPropagation();\n    }\n    this.setIsOpen( false );\n  }\n\n  handleKeyEnter($event) {\n    if ( this.keyManager.activeItem && this.isOpen ) {\n      if ( this.keyManager.activeItem.itemSelected ) {\n        this.selectItem.emit( this.keyManager.activeItem.itemSelected );\n        this.setSelected( <TlItemSelectedDirective>this.keyManager.activeItem );\n        this.setDescriptionValue( objectPath.get( this.keyManager.activeItem.itemSelected, this.keyText ) );\n        this.handleKeyModelValue( this.keyManager.activeItem.itemSelected );\n      }\n      this.handleClose($event);\n    }\n  }\n\n  handleFocus() {\n    this.focused = true;\n    if ( this.openFocus && !this.keyManager.activeItem && !this.isDisabled && !this.disabled ) {\n      if ( this.openFocus ) {\n        this.setIsOpen( true );\n      }\n    }\n  }\n\n  private isModelModeString() {\n    return this.modelMode === 'string';\n  }\n\n  private getCompareModel() {\n    if ( this.keyValue && !this.isModelModeString() ) {\n      return objectPath.get( this.value, this.keyValue );\n    }\n    if ( !this.isModelModeString() && !this.keyValue ) {\n      return objectPath.get( this.value, this.identifier );\n    }\n    return this.value;\n  }\n\n  onSelectItem( value: any, item: TlItemSelectedDirective ) {\n    this.setDescriptionValue( objectPath.get( value, this.keyText ) );\n    this.handleKeyModelValue( value );\n    this.setSelected( item );\n    this.selectItem.emit( value );\n    this.handleClose();\n    this.change.detectChanges();\n  }\n\n  handleClose($event?) {\n    if ( this.clearOnSelect ) {\n      this.setDescriptionValue( '' );\n      this.tlinput.setFocus();\n      this.selected = null;\n      if ( $event ) {\n        $event.stopPropagation();\n      }\n    }\n    this.setIsOpen( false );\n  }\n\n  private setUpData( value? ) {\n    if ( !this.dataSource ) {\n      this.dataSource = new DataSourceList( {\n        dataSource: value,\n        pageSize: this.rowsPage,\n        totalLength: this.totalLength,\n        lazyMode: this.lazyMode\n      } );\n      this.listenLoadData();\n      this.handleModelCached();\n    }\n    this.dataSource.setData( value );\n    this.loading = false;\n    // this.setContainerHeight( value );\n    this.setNotFound( value.length === 0 );\n    this.setFirstItemActive();\n  }\n\n  setContainerHeight( data ) {\n    if ( this.filtering ) {\n      const currentHeight = parseInt(this.containerHeight, 10);\n      const maxContent = Math.round(currentHeight / this.rowHeight);\n      if ( data.length === 0 ) {\n        this.tempContainerHeight = this.rowHeight + 'px';\n      } else if ( data.length <= maxContent ) {\n        this.tempContainerHeight = (data.length * this.rowHeight) + 'px';\n      } else {\n        this.tempContainerHeight = this.containerHeight;\n      }\n      this.change.detectChanges();\n    }\n  }\n\n  private setFirstItemActive() {\n    if ( this.keyManager ) {\n      setTimeout( () => {\n        this.keyManager.setFirstItemActive();\n      }, 100 );\n    }\n  }\n\n  private listenLoadData() {\n    this.subscription.add( this.dataSource.loadMoreData.subscribe( ( data: any ) => {\n      this.lazyLoad.emit( { skip: data.skip, limit: data.limit, ...this.getFilters( this.description ) } );\n      this.loading = true;\n    } ) );\n  }\n\n  onPositionChange( $event: ConnectedOverlayPositionChange ) {\n    this.positionOverlay = $event.connectionPair.originY;\n    this.change.detectChanges();\n  }\n\n  private setIsOpen( value: boolean ) {\n    this.isOpen = value;\n  }\n\n  getItemText( item ) {\n    return objectPath.get( item, this.keyText );\n  }\n\n  toggleIsOpen() {\n    if ( !this.disabled && !this.isDisabled ) {\n      this.isOpen = !this.isOpen;\n      this.tlinput.setFocus();\n      this.handleItemSelected();\n    }\n  }\n\n  private getFilters( term: string ) {\n    const fields = {};\n    fields[ this.searchBy ] = !this.chainFilter ? { matchMode: 'contains', value: term } :\n      term.split(this.filterOperator).map(( value ) => {\n      return { matchMode: 'contains', value: value };\n    });\n    return { fields: fields, operator: 'or' };\n  }\n\n  private setScrollVirtual() {\n    if ( this.cdkVirtualScroll ) {\n      this.cdkVirtualScroll.elementRef.nativeElement.scrollTop = 0;\n    }\n  }\n\n  onFilter( $event ) {\n    this.setScrollVirtual();\n    this.setFiltering( true );\n    this.dataSource.resetPages();\n    if ( this.lazyMode ) {\n      this.filter.emit( this.getFilters( $event ) );\n      return;\n    }\n    if ( $event ) {\n      this.dataSource.setArray( $event.length );\n      this.setUpData( $event );\n      return;\n    }\n    this.dataSource.setData( [] );\n    this.setNotFound( true );\n    this.selected = null;\n  }\n\n  private setFiltering( value: boolean ) {\n    this.filtering = value;\n  }\n\n  private setNotFound( value: boolean ) {\n    this.nothingFound = value;\n  }\n\n  ngOnChanges( { data, totalLength }: any ) {\n    if ( totalLength && !totalLength[ 'firstChange' ] ) {\n      if ( this.dataSource ) {\n        this.dataSource.setArray( totalLength[ 'currentValue' ] );\n      }\n    }\n    if ( data && this.lazyMode ) {\n      this.setUpData( data[ 'currentValue' ] );\n      return;\n    }\n    if ( data && data[ 'currentValue' ] !== undefined && !this.lazyMode ) {\n      if ( data[ 'currentValue' ].length > 0 ) {\n        this.setUpData( data[ 'currentValue' ] );\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n    if ( this.dataSource ) {\n      this.dataSource.unsubscribe();\n    }\n  }\n\n}\n","<div class=\"ui-autocomplete-box\">\n  <tl-label *ngIf=\"label\" [required]=\"required\" [labelTitle]=\"label\" [labelPlacement]=\"labelPlacement\" [labelSize]=\"labelSize\"></tl-label>\n  <div [class]=\"'ui-autocomplete-wrapper ' + color\">\n    <div class=\"ui-wrapper-filter\"\n         #wrapper\n         [class.disabled]=\"disabled || isDisabled\"\n         [style.height]=\"height\"\n         [class.opened]=\"isOpen && positionOverlay !== 'top'\"\n         [class.openedAbove]=\"positionOverlay === 'top' && isOpen\">\n      <div *ngIf=\"loading\" class=\"ui-loading\" [style.height]=\"height\">\n        <tl-loader></tl-loader>\n      </div>\n      <tl-input\n        (overlayOrigin)=\"trigger = $event\"\n        [disabled]=\"disabled || isDisabled\"\n        [placeholder]=\"placeholder\"\n        [color]=\"color\"\n        [clearButton]=\"clearButton\"\n        [iconBefore]=\"iconBefore\"\n        [iconAfter]=\"iconAfter\"\n        [textBefore]=\"textBefore\"\n        [textAfter]=\"textAfter\"\n        [height]=\"height\"\n        [required]=\"required\"\n        (clear)=\"close()\"\n        (click)=\"toggleIsOpen()\"\n        (clickAddon)=\"clickAddon.emit($event)\"\n        (keydown.backspace)=\"handleKeyBackspace()\"\n        (keydown.ArrowUp)=\"handleKeyArrowUp($event)\"\n        (keydown.ArrowDown)=\"handleKeyArrowDown($event)\"\n        (keydown.escape)=\"handleKeyEscape($event)\"\n        selectedItem\n        [selected]=\"value\"\n        class=\"ui-input\"\n        [(ngModel)]=\"description\"\n        (keydown.enter)=\"handleKeyEnter($event)\"\n        (keydown.shift.tab)=\"isOpen = false\"\n        (keydown.tab)=\"isOpen = false\"\n        (focus)=\"handleFocus()\"\n        (focusout)=\"focused = false\"\n        (input)=\"onInput()\">\n      </tl-input>\n      <input readonly notform class=\"ui-model-input\" [(ngModel)]=\"value\">\n    </div>\n    <tl-filter-container [searchTerm]=\"description\"\n                         [debounceTime]=\"debounceTime\"\n                         [lazyMode]=\"lazyMode\"\n                         [source]=\"data\"\n                         [searchBy]=\"searchBy\"\n                         (filter)=\"onFilter($event)\">\n      <ng-template cdkConnectedOverlay\n                   (backdropClick)=\"onBackdropClick()\"\n                   (positionChange)=\"onPositionChange($event)\"\n                   [cdkConnectedOverlayHasBackdrop]=\"true\"\n                   [cdkConnectedOverlayOrigin]=\"trigger\"\n                   [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n                   [cdkConnectedOverlayOpen]=\"isOpen\">\n        <cdk-virtual-scroll-viewport [class]=\"'ui-scroll-view ' + color\"\n                                     [style.height]=\"tempContainerHeight\"\n                                     [itemSize]=\"rowHeight\"\n                                     [style.width]=\"wrapper.offsetWidth - 2 + 'px'\"\n                                     (scrolledIndexChange)=\"onScrollIndexChange($event)\"\n                                     [tlBlockui]=\"nothingFound\"\n                                     [blockuiConfig]=\"{ 'message': nothingFoundMessage }\"\n                                     [class.scrollOpenedAbove]=\"positionOverlay === 'top' && isOpen\"\n                                     [class.scrollOpened]=\"isOpen && positionOverlay !== 'top'\">\n          <div [style.height]=\"rowHeight + 'px'\"\n               [itemSelected]=\"item\"\n               [indexSelected]=\"i\"\n               #select=\"selectItem\"\n               *cdkVirtualFor=\"let item of dataSource; let i = index\"\n               (mousedown)=\"onSelectItem(item, select)\"\n               class=\"ui-list-item\">\n            <ng-container *ngIf=\"template; else templateContent\">\n              <tl-autocomplete-template\n                [style.width]=\"'100%'\"\n                *ngIf=\"item; else loadingMessage\"\n                [template]=\"template\"\n                [item]=\"item\"\n                [index]=\"i\">\n              </tl-autocomplete-template>\n            </ng-container>\n            <ng-template #templateContent>\n              <span *ngIf=\"item; else loadingMessage\" [innerHTML]=\"getItemText(item) | highlight:description\"></span>\n            </ng-template>\n          </div>\n        </cdk-virtual-scroll-viewport>\n      </ng-template>\n      <ng-template #loadingMessage>\n        {{ !nothingFound ? messageLoading : ' ' }}\n      </ng-template>\n    </tl-filter-container>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n    Directive, HostListener, Input, Output, EventEmitter } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\n@Directive( {\n    selector: '[charcase]',\n    providers: [NgModel]\n} )\nexport class CharcaseDirective {\n\n    @Input() charcase: string;\n    @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\n    @HostListener('input', ['$event'])\n    onInputChange($event) {\n        this.ngModelChange.emit( this.getValue( $event.target.value ) );\n    }\n\n    getValue( value) {\n        if ( this.charcase === 'UPPERCASE' || this.charcase === 'uppercase' ) {\n            return value.toUpperCase();\n        }\n\n\n        if ( this.charcase === 'LOWERCASE' || this.charcase === 'lowercase'  ) {\n            return value.toLowerCase();\n        }\n\n        return value;\n    }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { LOCALE_I18N } from '../../i18n/i18n.service';\n\nexport function CPFValidator( ): ValidatorFn {\n  return ( control: AbstractControl ) => {\n\n    let sum = 0;\n    let leftover;\n\n    if ( cpfUnmasked( control ) === null || cpfUnmasked( control ) === '') {\n      return null;\n    }\n\n    if ( cpfUnmasked( control ) != null && cpfUnmasked( control ).length < 9 ) {\n      return { cpf: LOCALE_I18N.Validators.invalidCPF };\n    }\n\n    if ( isAllCharacteresEquals( control ) ) {\n      return { cpf: LOCALE_I18N.Validators.invalidCPF };\n    }\n\n    for ( let i = 1; i <= 9; i++ ) {\n      sum = sum + Number( cpfUnmasked( control ).substring( i - 1, i ) ) * (11 - i);\n    }\n\n    leftover = (sum * 10) % 11;\n    if ( (leftover === 10) || (leftover === 11) ) {\n      leftover = 0;\n    }\n\n    if ( leftover !== Number( cpfUnmasked( control ).substring( 9, 10 ) ) ) {\n      return { cpf: LOCALE_I18N.Validators.invalidCPF };\n    }\n    sum = 0;\n    for ( let i = 1; i <= 10; i++ ) {\n      sum = sum + Number( cpfUnmasked( control ).substring( i - 1, i ) ) * (12 - i);\n    }\n\n    leftover = (sum * 10) % 11;\n    if ( (leftover === 10) || (leftover === 11) ) {\n      leftover = 0;\n    }\n\n    if ( leftover !== Number( cpfUnmasked( control ).substring( 10, 11 ) ) ) {\n      return { cpf: LOCALE_I18N.Validators.invalidCPF };\n    }\n\n    return null;\n  };\n}\n\nexport function cpfUnmasked( c ) {\n  return String( c.value ).replace( /(\\/|\\.|-|_|\\(|\\)|:|\\+)/gi, '' );\n}\n\nexport function isAllCharacteresEquals( c ) {\n  let result = true;\n  for ( let i = 1; i <= 9; i++ ) {\n    if ( cpfUnmasked( c ).substring( i - 1, i ) !== cpfUnmasked( c )[ 0 ] ) {\n      result = false;\n      break;\n    }\n  }\n  return result;\n}\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  ContentChild, Directive, forwardRef, Input\n} from '@angular/core';\nimport {AbstractControl, UntypedFormControl, NG_VALIDATORS, ValidationErrors, Validator} from '@angular/forms';\nimport { CPFValidator } from './cpf.validator';\n\n@Directive( {\n    selector: '[cpf][ngModel],[cpf][formControl],[cpf][formControlName]',\n    providers: [\n      {\n        multi: true,\n        provide: NG_VALIDATORS,\n        useExisting: forwardRef( () => CPFDirective)\n      }\n    ]\n} )\nexport class CPFDirective implements Validator {\n\n  @Input() control: AbstractControl;\n\n  constructor() {}\n\n    validate( c: UntypedFormControl ): ValidationErrors {\n      return CPFValidator( )( this.control || c );\n    }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport { LOCALE_I18N } from '../../i18n/i18n.service';\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport function CNPJValidator( ): ValidatorFn {\n    return ( c: AbstractControl ) => {\n\n      if ( ( cnpjUnmasked( c ) === null) || ( cnpjUnmasked( c ).length < 14) ) {\n        return { cnpj: LOCALE_I18N.Validators.invalidCNPJ };\n      }\n\n      if ( isAllCharacteresEquals( c ) ) {\n        return { cnpj: LOCALE_I18N.Validators.invalidCNPJ };\n      }\n\n      let size: any = cnpjUnmasked( c ).length - 2;\n      let numbers: any = cnpjUnmasked( c ).substring( 0, size );\n      const digits: any = cnpjUnmasked( c ).substring( size );\n\n      let sum = 0;\n      let pos = size - 7;\n      let result;\n\n      for ( let i = size; i >= 1; i-- ) {\n        sum += numbers.charAt( size - i ) * pos--;\n        if ( pos < 2 ) {\n          pos = 9;\n        }\n      }\n      result = sum % 11 < 2 ? 0 : 11 - sum % 11;\n      if ( result !== parseInt( digits.charAt( 0 ), 10 ) ) {\n        return { cnpj: LOCALE_I18N.Validators.invalidCNPJ };\n      }\n\n      size = size + 1;\n      numbers = cnpjUnmasked( c ).substring( 0, size );\n      sum = 0;\n      pos = size - 7;\n      for ( let i = size; i >= 1; i-- ) {\n        sum += numbers.charAt( size - i ) * pos--;\n        if ( pos < 2 ) {\n          pos = 9;\n        }\n      }\n      result = sum % 11 < 2 ? 0 : 11 - sum % 11;\n\n      if ( result !== parseInt( digits.charAt( 1 ), 10 ) ) {\n        return { cnpj: LOCALE_I18N.Validators.invalidCNPJ };\n      }\n\n      return null;\n    };\n  }\n\nfunction  cnpjUnmasked( c ) {\n  return String( c.value ).replace( /(\\/|\\.|-|_|\\(|\\)|:|\\+)/gi, '' );\n}\n\nfunction isAllCharacteresEquals( c ) {\n  let result = true;\n  for ( let i = 1; i <= 9; i++ ) {\n    if ( cnpjUnmasked( c ).substring( i - 1, i ) !== cnpjUnmasked( c )[ 0 ] ) {\n      result = false;\n      break;\n    }\n  }\n  return result;\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {Directive, forwardRef, Input} from '@angular/core';\nimport {AbstractControl, UntypedFormControl, NG_VALIDATORS, ValidationErrors, Validator} from '@angular/forms';\nimport {CNPJValidator} from './cnpj.validator';\n\n@Directive({\n  selector: '[cnpj][ngModel],[cnpj][formControl],[cnpj][formControlName]',\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef( () => CNPJDirective ),\n    }\n  ]\n})\nexport class CNPJDirective implements Validator {\n\n  @Input() control: AbstractControl;\n\n  constructor() {\n  }\n\n  validate(c: UntypedFormControl): ValidationErrors {\n    return CNPJValidator()(this.control || c );\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport function NumberValidator(): ValidatorFn {\n  return ( control: AbstractControl ) => {\n    const regex = new RegExp( '^(-|[0-9])[0-9]+|[0-9]' );\n    if (control.touched) {\n      if ( regex.test(control.value )) {\n        return null;\n      }\n      return {number: false};\n    }\n    return null;\n  };\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {Directive, forwardRef, HostListener} from '@angular/core';\nimport {UntypedFormControl, NG_VALIDATORS, ValidationErrors, Validator} from '@angular/forms';\nimport {NumberValidator} from './number.validator';\n\n@Directive({\n  selector: '[number][ngModel],[number][formControl],[number][formControlName]',\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => NumberDirective),\n    }\n  ]\n})\nexport class NumberDirective implements Validator {\n\n  private regex = new RegExp('^[0-9]*$');\n\n  constructor() {\n  }\n\n  @HostListener('keypress', ['$event'])\n  onKeyDown($event) {\n    if (!this.regex.test($event.key) && (!this.handleNegativeNumber($event))) {\n      $event.preventDefault();\n    }\n  }\n\n  handleNegativeNumber($event) {\n    return ($event.keyCode === 45) && ($event.target.selectionStart === 0);\n  }\n\n  validate(c: UntypedFormControl): ValidationErrors {\n    if (c.value > 0) {\n      return NumberValidator()(c);\n    }\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { LOCALE_I18N } from '../../i18n/i18n.service';\n\nexport function EmailValidator(): ValidatorFn {\n  return ( control: AbstractControl ) => {\n    const regex = new RegExp( /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/ );\n    if ( (control.value !== '') && (!regex.test( control.value )) ) {\n      return { email: LOCALE_I18N.Validators.invalidEmail };\n    }\n    return null;\n  };\n}\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  Directive, forwardRef, Input,\n} from '@angular/core';\nimport {AbstractControl, UntypedFormControl, NG_VALIDATORS, ValidationErrors, Validator} from '@angular/forms';\nimport { EmailValidator } from './email.validator';\n\n@Directive( {\n    selector: '[email][ngModel],[email][formControl],[email][formControlName]',\n    providers: [\n      {\n        multi: true,\n        provide: NG_VALIDATORS,\n        useExisting: forwardRef( () => EmailDirective),\n      }\n    ]\n} )\nexport class EmailDirective implements Validator {\n\n  @Input() control: AbstractControl;\n\n  constructor() {}\n\n  validate( c: UntypedFormControl ): ValidationErrors {\n    return EmailValidator()( this.control || c );\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { LOCALE_I18N } from '../../i18n/i18n.service';\n\n/*https://www.freeformatter.com/credit-card-number-generator-validator.html#howToValidate\n  https://www.4devs.com.br/validador_numero_cartao_credito\n    https://www.tools4noobs.com/online_tools/credit_card_validate/\n      https://pt.stackoverflow.com/questions/97234/validar-n%C3%BAmero-cart%C3%A3o-de-cr%C3%A9dito*/\n\nexport function  CreditCardValidator( creditCard ): ValidatorFn {\n  return ( control: AbstractControl ) => {\n    if ( !creditCard ) {\n      return { creditcard: LOCALE_I18N.Validators.invalidCreditCard };\n    }\n    const regex = new RegExp( creditCard.regex );\n    if ( ( creditNumberUnmasked( control.value ) !== '') &&\n      (!regex.test( creditNumberUnmasked( control.value ) )) ) {\n        return { creditcard: LOCALE_I18N.Validators.invalidCreditCard };\n      }\n    return null;\n  };\n}\n\nfunction creditNumberUnmasked( value ) {\n  return String( value ).replace( /(\\/|\\.|-|_|\\(|\\)|:|\\+)/gi, '' );\n}\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  ContentChild, Directive, forwardRef,\n} from '@angular/core';\nimport { UntypedFormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { TlInput } from '../../input/input';\nimport { CreditCardValidator } from './creditcard.validator';\n\nconst creditCard = 0;\n\n@Directive( {\n  selector: '[creditCard][ngModel],[creditCard][formControl],[creditCard][formControlName]',\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef( () => CreditCardDirective ),\n    }\n  ]\n} )\nexport class CreditCardDirective implements Validator {\n\n  constructor( private input: TlInput ) {}\n\n  validate( c: UntypedFormControl ): ValidationErrors {\n    if ( this.input ) {\n      this.input.mask = '9999.9999.9999.9999';\n    }\n    return CreditCardValidator( creditCard )( c );\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { LOCALE_I18N } from '../../i18n/i18n.service';\nimport { PasswordRule } from './passwordrule.interface';\n\nexport function PasswordValidator( passwordRule: PasswordRule ): ValidatorFn {\n  return ( control: AbstractControl ) => {\n\n    const digits = '^(?=.*[0-9]).*$';\n    const uppercase = '^(?=.*[A-Z]).*$';\n    const special = '^(?=.*[!@#$%^&*]).*$';\n    const lowercase = '^(?=.*[a-z]).*$';\n\n    let regex: RegExp;\n\n    if ( passwordRule['digits'] ) {\n      regex = new RegExp( digits );\n      if (!regex.test(control.value)) {\n        return { invalidPasswordRuleDigits: LOCALE_I18N.Validators.invalidPasswordRuleDigits };\n      }\n    }\n\n    if ( passwordRule['uppercase'] ) {\n      regex = new RegExp( uppercase );\n      if (!regex.test(control.value)) {\n        return { invalidPasswordRuleUppercase: LOCALE_I18N.Validators.invalidPasswordRuleUppercase };\n      }\n    }\n\n    if ( passwordRule['special'] ) {\n      regex = new RegExp( special );\n      if (!regex.test(control.value)) {\n        return { invalidPasswordRuleSpecial: LOCALE_I18N.Validators.invalidPasswordRuleSpecial };\n      }\n    }\n\n    if ( passwordRule['lowercase'] ) {\n      regex = new RegExp( lowercase );\n      if (!regex.test(control.value)) {\n        return { invalidPasswordRuleLowerCase: LOCALE_I18N.Validators.invalidPasswordRuleLowerCase };\n      }\n    }\n\n    return null;\n\n  };\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  AfterViewInit,\n  Input,\n  Directive, forwardRef, ElementRef\n} from '@angular/core';\nimport {AbstractControl, UntypedFormControl, NG_VALIDATORS, ValidationErrors, Validator} from '@angular/forms';\nimport { PasswordValidator } from './password.validator';\nimport { PasswordRule } from './passwordrule.interface';\n\n@Directive( {\n    selector: '[password][ngModel],[password][formControl],[password][formControlName]',\n    providers: [\n      {\n        multi: true,\n        provide: NG_VALIDATORS,\n        useExisting: forwardRef( () => PasswordDirective),\n      }\n    ]\n} )\nexport class PasswordDirective implements Validator, AfterViewInit {\n\n  @Input() control: AbstractControl;\n\n  @Input('passwordRule') passwordRule: PasswordRule =\n    { digits: false, uppercase: false, specials: false, lowercase: false };\n\n  private elementInput: HTMLElement;\n\n  constructor(private element: ElementRef) {\n  }\n\n  ngAfterViewInit() {\n    this.elementInput = this.element.nativeElement.getElementsByTagName('input')[0];\n    this.elementInput.setAttribute('type', 'password');\n  }\n\n  validate( c: UntypedFormControl ): ValidationErrors {\n    return PasswordValidator( this.passwordRule )( c );\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { CPFDirective } from './cpf/cpf.directive';\nimport { CNPJDirective } from './cnpj/cnpj.directive';\nimport { NumberDirective } from './number/number.directive';\nimport { EmailDirective } from './email/email.directive';\nimport { CreditCardDirective } from './creditcard/creditcard.directive';\nimport { PasswordDirective } from './password/password.directive';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  declarations: [\n    CreditCardDirective,\n    CPFDirective,\n    CNPJDirective,\n    EmailDirective,\n    NumberDirective,\n    PasswordDirective\n  ],\n  exports: [\n    CreditCardDirective,\n    CPFDirective,\n    CNPJDirective,\n    EmailDirective,\n    NumberDirective,\n    PasswordDirective\n  ]\n} )\nexport class ValidatorsModule {}\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { Pipe, PipeTransform } from '@angular/core';\n\n @Pipe({name: 'leftpad'})\n export class TlLeftPadPipe implements PipeTransform {\n   transform(value: string | number, exponent: number) {\n     return (String(0) + value).slice(-exponent);\n   }\n }\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { NgModule } from '@angular/core';\nimport { TlLabel } from './components/label/label';\nimport { CommonModule } from '@angular/common';\nimport { TlLeftPadPipe } from './pipes/leftpad.pipe';\nimport { IconsModule } from '../icons/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    IconsModule\n  ],\n  exports: [\n    TlLabel,\n    TlLeftPadPipe\n  ],\n  declarations: [\n    TlLabel,\n    TlLeftPadPipe\n  ],\n  providers: [],\n} )\nexport class InternalsModule {\n}\n","import {InjectionToken} from '@angular/core';\n\nexport interface CurrencyConfig {\n  align: string;\n  allowNegative: boolean;\n  allowZero: boolean;\n  decimal: string;\n  precision: number;\n  prefix: string;\n  suffix: string;\n  thousands: string;\n  nullable: boolean;\n}\n\nexport let CURRENCY_MASK_CONFIG = new InjectionToken<CurrencyConfig>('currency.mask.preview.js');\n","export class CurrencyManager {\n\n  private _storedRawValue: string;\n\n  constructor( private htmlInputElement: any ) {\n  }\n\n  setCursorAt( position: number ): void {\n    if ( this.htmlInputElement.setSelectionRange ) {\n      this.htmlInputElement.focus();\n      this.htmlInputElement.setSelectionRange( position, position );\n    } else if ( this.htmlInputElement.createTextRange ) {\n      const textRange = this.htmlInputElement.createTextRange();\n      textRange.collapse( true );\n      textRange.moveEnd( 'character', position );\n      textRange.moveStart( 'character', position );\n      textRange.select();\n    }\n  }\n\n  updateValueAndCursor( newRawValue: string, oldLength: number, selectionStart: number ): void {\n    this.rawValue = newRawValue;\n    const newLength = newRawValue.length;\n    selectionStart = selectionStart - (oldLength - newLength);\n    this.setCursorAt( selectionStart );\n  }\n\n  get canInputMoreNumbers(): boolean {\n    const haventReachedMaxLength = !(this.rawValue.length >= this.htmlInputElement.maxLength && this.htmlInputElement.maxLength >= 0);\n    const selectionStart = this.inputSelection.selectionStart;\n    const selectionEnd = this.inputSelection.selectionEnd;\n    const haveNumberSelected = !!(selectionStart !== selectionEnd &&\n    this.htmlInputElement.value.substring( selectionStart, selectionEnd ).match( /[^0-9\\u0660-\\u0669\\u06F0-\\u06F9]/ ));\n    const startWithZero = (this.htmlInputElement.value.substring( 0, 1 ) === '0');\n    return haventReachedMaxLength || haveNumberSelected || startWithZero;\n  }\n\n  get inputSelection(): any {\n    let selectionStart = 0;\n    let selectionEnd = 0;\n\n    if ( typeof this.htmlInputElement.selectionStart === 'number' && typeof this.htmlInputElement.selectionEnd === 'number' ) {\n      selectionStart = this.htmlInputElement.selectionStart;\n      selectionEnd = this.htmlInputElement.selectionEnd;\n    } else {\n      const range = (<any>document).selection.createRange();\n\n      if ( range && range.parentElement() === this.htmlInputElement ) {\n        const lenght = this.htmlInputElement.value.length;\n        const normalizedValue = this.htmlInputElement.value.replace( /\\r\\n/g, '\\n' );\n        const startRange = this.htmlInputElement.createTextRange();\n        startRange.moveToBookmark( range.getBookmark() );\n        const endRange = this.htmlInputElement.createTextRange();\n        endRange.collapse( false );\n\n        if ( startRange.compareEndPoints( 'StartToEnd', endRange ) > -1 ) {\n          selectionStart = selectionEnd = lenght;\n        } else {\n          selectionStart = -startRange.moveStart( 'character', -lenght );\n          selectionStart += normalizedValue.slice( 0, selectionStart ).split( '\\n' ).length - 1;\n\n          if ( startRange.compareEndPoints( 'EndToEnd', endRange ) > -1 ) {\n            selectionEnd = lenght;\n          } else {\n            selectionEnd = -startRange.moveEnd( 'character', -lenght );\n            selectionEnd += normalizedValue.slice( 0, selectionEnd ).split( '\\n' ).length - 1;\n          }\n        }\n      }\n    }\n\n    return {\n      selectionStart: selectionStart,\n      selectionEnd: selectionEnd\n    };\n  }\n\n  get rawValue(): string {\n    return this.htmlInputElement && this.htmlInputElement.value;\n  }\n\n  set rawValue( value: string ) {\n    this._storedRawValue = value;\n\n    if ( this.htmlInputElement ) {\n      this.htmlInputElement.value = value;\n    }\n  }\n\n  get storedRawValue(): string {\n    return this._storedRawValue;\n  }\n}\n","import {CurrencyManager} from './currency.manager';\nimport {CurrencyConfig} from './currency-mask.config';\n\n\nexport class CurrencyService {\n  PER_AR_NUMBER: Map<string, string> = new Map<string, string>();\n\n  public inputManager: CurrencyManager;\n\n  initialize() {\n    this.PER_AR_NUMBER.set('\\u06F0', '0');\n    this.PER_AR_NUMBER.set('\\u06F1', '1');\n    this.PER_AR_NUMBER.set('\\u06F2', '2');\n    this.PER_AR_NUMBER.set('\\u06F3', '3');\n    this.PER_AR_NUMBER.set('\\u06F4', '4');\n    this.PER_AR_NUMBER.set('\\u06F5', '5');\n    this.PER_AR_NUMBER.set('\\u06F6', '6');\n    this.PER_AR_NUMBER.set('\\u06F7', '7');\n    this.PER_AR_NUMBER.set('\\u06F8', '8');\n    this.PER_AR_NUMBER.set('\\u06F9', '9');\n\n    this.PER_AR_NUMBER.set('\\u0660', '0');\n    this.PER_AR_NUMBER.set('\\u0661', '1');\n    this.PER_AR_NUMBER.set('\\u0662', '2');\n    this.PER_AR_NUMBER.set('\\u0663', '3');\n    this.PER_AR_NUMBER.set('\\u0664', '4');\n    this.PER_AR_NUMBER.set('\\u0665', '5');\n    this.PER_AR_NUMBER.set('\\u0666', '6');\n    this.PER_AR_NUMBER.set('\\u0667', '7');\n    this.PER_AR_NUMBER.set('\\u0668', '8');\n    this.PER_AR_NUMBER.set('\\u0669', '9');\n  }\n\n  constructor(private htmlInputElement: any, private options: CurrencyConfig) {\n    this.inputManager = new CurrencyManager(htmlInputElement);\n    this.initialize();\n  }\n\n  addNumber(keyCode: number): void {\n    if (!this.rawValue) {\n      this.rawValue = this.applyMask(false, '0');\n    }\n\n    const keyChar = String.fromCharCode(keyCode);\n    const selectionStart = this.inputSelection.selectionStart;\n    const selectionEnd = this.inputSelection.selectionEnd;\n    this.rawValue = this.rawValue.substring(0, selectionStart) + keyChar + this.rawValue.substring(selectionEnd, this.rawValue.length);\n    this.updateFieldValue(selectionStart + 1);\n  }\n\n  applyMask(isNumber: boolean, rawValue: string): string {\n    const {allowNegative, decimal, precision, prefix, suffix, thousands, nullable} = this.options;\n    rawValue = isNumber ? Number(rawValue).toFixed(precision) : rawValue;\n    const onlyNumbers = rawValue.replace(/[^0-9\\u0660-\\u0669\\u06F0-\\u06F9]/g, '');\n\n    if (!onlyNumbers) {\n      return '';\n    }\n\n    let integerPart = onlyNumbers.slice(0, onlyNumbers.length - precision)\n      .replace(/^\\u0660*/g, '')\n      .replace(/^\\u06F0*/g, '')\n      .replace(/^0*/g, '')\n      .replace(/\\B(?=([0-9\\u0660-\\u0669\\u06F0-\\u06F9]{3})+(?![0-9\\u0660-\\u0669\\u06F0-\\u06F9]))/g, thousands);\n\n    if (integerPart.startsWith(thousands)) {\n      integerPart = integerPart.substring(1);\n    }\n\n\n    if (integerPart === '') {\n      integerPart = '0';\n    }\n\n    let newRawValue = integerPart;\n    const decimalPart = onlyNumbers.slice(onlyNumbers.length - precision);\n\n    if (precision > 0) {\n      newRawValue += decimal + decimalPart;\n    }\n\n    const isZero = parseInt(integerPart, 10) === 0 && (parseInt(decimalPart, 10) === 0 || decimalPart === '');\n    const operator = (rawValue.indexOf('-') > -1 && allowNegative && !isZero) ? '-' : '';\n    return operator + prefix + newRawValue + suffix;\n  }\n\n  clearMask(rawValue: string): number {\n    if (this.isNullable() && rawValue === '') {\n      return null;\n    }\n\n    let value = (rawValue || '0').replace(this.options.prefix, '').replace(this.options.suffix, '');\n\n    if (this.options.thousands) {\n      value = value.replace(new RegExp('\\\\' + this.options.thousands, 'g'), '');\n    }\n\n    if (this.options.decimal) {\n      value = value.replace(this.options.decimal, '.');\n    }\n\n    this.PER_AR_NUMBER.forEach((val: string, key: string) => {\n      const re = new RegExp(key, 'g');\n      value = value.replace(re, val);\n    });\n    return parseFloat(value);\n  }\n\n  changeToNegative(): void {\n    if (this.options.allowNegative && this.rawValue !== '' && this.rawValue.charAt(0) !== '-' && this.value !== 0) {\n      this.rawValue = '-' + this.rawValue;\n    }\n  }\n\n  changeToPositive(): void {\n    this.rawValue = this.rawValue.replace('-', '');\n  }\n\n  removeNumber(keyCode: number): void {\n    if (this.isNullable() && this.value === 0) {\n      this.rawValue = null;\n      return;\n    }\n\n    let selectionEnd = this.inputSelection.selectionEnd;\n    let selectionStart = this.inputSelection.selectionStart;\n\n    if (selectionStart > this.rawValue.length - this.options.suffix.length) {\n      selectionEnd = this.rawValue.length - this.options.suffix.length;\n      selectionStart = this.rawValue.length - this.options.suffix.length;\n    }\n\n    let move = this.rawValue.substr(selectionStart - 1, 1).match(/\\d/) ? 0 : -1;\n    if ((\n        keyCode === 8 &&\n        selectionStart - 1 === 0 &&\n        !(this.rawValue.substr(selectionStart, 1).match(/\\d/))\n      ) ||\n      (\n        (keyCode === 46 || keyCode === 63272) &&\n        selectionStart === 0 &&\n        !(this.rawValue.substr(selectionStart + 1, 1).match(/\\d/))\n      )\n    ) {\n      move = 1;\n    }\n    selectionEnd = keyCode === 46 || keyCode === 63272 ? selectionEnd + 1 : selectionEnd;\n    selectionStart = keyCode === 8 ? selectionStart - 1 : selectionStart;\n    this.rawValue = this.rawValue.substring(0, selectionStart) + this.rawValue.substring(selectionEnd, this.rawValue.length);\n    this.updateFieldValue(selectionStart + move);\n  }\n\n  updateFieldValue(selectionStart?: number): void {\n    const newRawValue = this.applyMask(false, this.rawValue || '');\n    selectionStart = selectionStart === undefined ? this.rawValue.length : selectionStart;\n    this.inputManager.updateValueAndCursor(newRawValue, this.rawValue.length, selectionStart);\n  }\n\n  updateOptions(options: any): void {\n    const value: number = this.value;\n    this.options = options;\n    this.value = value;\n  }\n\n  prefixLength(): any {\n    return this.options.prefix.length;\n  }\n\n  isNullable() {\n    return this.options.nullable;\n  }\n\n  get canInputMoreNumbers(): boolean {\n    return this.inputManager.canInputMoreNumbers;\n  }\n\n  get inputSelection(): any {\n    return this.inputManager.inputSelection;\n  }\n\n  get rawValue(): string {\n    return this.inputManager.rawValue;\n  }\n\n  set rawValue(value: string) {\n    this.inputManager.rawValue = value;\n  }\n\n  get storedRawValue(): string {\n    return this.inputManager.storedRawValue;\n  }\n\n  get value(): any {\n    return this.clearMask(this.rawValue);\n  }\n\n  set value(value: any) {\n    this.rawValue = this.applyMask(true, '' + value);\n  }\n}\n","import {CurrencyService} from './currency.service';\n\nexport class CurrencyHandler {\n\n  private _inputService: CurrencyService;\n  private onModelChange: Function;\n  private onModelTouched: Function;\n\n  get inputService() {\n    return this._inputService;\n  }\n\n  set inputService( value: CurrencyService ) {\n    this._inputService = value;\n  }\n\n  constructor(htmlInputElement: HTMLInputElement, options: any) {\n    this.inputService = new CurrencyService(htmlInputElement, options);\n  }\n\n  handleCut(event: any): void {\n    setTimeout(() => {\n      this.inputService.updateFieldValue();\n      this.setValue(this.inputService.value);\n      this.onModelChange(this.inputService.value);\n    }, 0);\n  }\n\n  handleInput(event: any): void {\n    const keyCode = this.inputService.rawValue.charCodeAt(this.inputService.rawValue.length - 1);\n    const rawValueLength = this.inputService.rawValue.length;\n    const rawValueSelectionEnd = this.inputService.inputSelection.selectionEnd;\n    const storedRawValueLength = this.inputService.storedRawValue.length;\n    this.inputService.rawValue = this.inputService.storedRawValue;\n\n    if (rawValueLength !== rawValueSelectionEnd || Math.abs(rawValueLength - storedRawValueLength) !== 1) {\n      this.setCursorPosition(event);\n      return;\n    }\n\n    if (rawValueLength < storedRawValueLength) {\n      this.inputService.removeNumber(8);\n    }\n\n    if (rawValueLength > storedRawValueLength) {\n      switch (keyCode) {\n        case 43:\n          this.inputService.changeToPositive();\n          break;\n        case 45:\n          this.inputService.changeToNegative();\n          break;\n        default:\n          if (!this.inputService.canInputMoreNumbers) {\n            return;\n          }\n\n          this.inputService.addNumber(keyCode);\n      }\n    }\n\n    this.setCursorPosition(event);\n    this.onModelChange(this.inputService.value);\n  }\n\n  handleKeydown(event: any): void {\n    const keyCode = event.which || event.charCode || event.keyCode;\n\n    if (keyCode === 8 || keyCode === 46 || keyCode === 63272) {\n      event.preventDefault();\n      const selectionRangeLength = Math.abs(this.inputService.inputSelection.selectionEnd\n        - this.inputService.inputSelection.selectionStart);\n\n      if (selectionRangeLength === 0) {\n        this.inputService.removeNumber(keyCode);\n        this.onModelChange(this.inputService.value);\n      }\n\n      if (selectionRangeLength >= (this.inputService.rawValue.length - this.inputService.prefixLength())) {\n        this.clearValue();\n      }\n    }\n  }\n\n  clearValue() {\n    this.setValue(this.inputService.isNullable() ? null : 0);\n    this.onModelChange(this.inputService.value);\n  }\n\n  handleKeypress(event: any): void {\n    const keyCode = event.which || event.charCode || event.keyCode;\n\n    if (keyCode === 97 && event.ctrlKey) {\n      return;\n    }\n\n    switch (keyCode) {\n      case undefined:\n      case 9:\n      case 13:\n      case 37:\n      case 39:\n        return;\n      case 43:\n        this.inputService.changeToPositive();\n        break;\n      case 45:\n        this.inputService.changeToNegative();\n        break;\n      default:\n        if (this.inputService.canInputMoreNumbers) {\n          const selectionRangeLength = Math.abs(this.inputService.inputSelection.selectionEnd\n            - this.inputService.inputSelection.selectionStart);\n\n          if (selectionRangeLength === this.inputService.rawValue.length) {\n            this.setValue(0);\n          }\n\n          this.inputService.addNumber(keyCode);\n        }\n    }\n\n    event.preventDefault();\n    this.onModelChange(this.inputService.value);\n  }\n\n  handlePaste(event: any): void {\n    setTimeout(() => {\n      this.inputService.updateFieldValue();\n      this.setValue(this.inputService.value);\n      this.onModelChange(this.inputService.value);\n    }, 1);\n  }\n\n  updateOptions(options: any): void {\n    this.inputService.updateOptions(options);\n  }\n\n  getOnModelChange(): Function {\n    return this.onModelChange;\n  }\n\n  setOnModelChange(callbackFunction: Function): void {\n    this.onModelChange = callbackFunction;\n  }\n\n  getOnModelTouched(): Function {\n    return this.onModelTouched;\n  }\n\n  setOnModelTouched(callbackFunction: Function) {\n    this.onModelTouched = callbackFunction;\n  }\n\n  setValue(value: number): void {\n    this.inputService.value = value;\n  }\n\n  private setCursorPosition(event: any): void {\n    setTimeout(function () {\n      event.target.setSelectionRange(event.target.value.length, event.target.value.length);\n    }, 0);\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  DoCheck,\n  HostListener,\n  Inject,\n  KeyValueDiffer,\n  KeyValueDiffers,\n  Input,\n  OnInit,\n  Optional, ContentChild, AfterContentInit, OnDestroy\n} from '@angular/core';\n\nimport { CurrencyConfig, CURRENCY_MASK_CONFIG } from './currency-mask.config';\nimport { CurrencyHandler } from './currency.handler';\nimport { TlInput } from '../../input';\nimport {NgModel} from '@angular/forms';\nimport {Subscription} from 'rxjs';\n\n@Directive( {\n  selector: '[currency][ngModel],[currency][formControlName]',\n} )\nexport class CurrencyDirective implements AfterContentInit, AfterViewInit, DoCheck, OnInit, OnDestroy {\n\n  @Input() currencyOptions: any = {};\n\n  @ContentChild( NgModel, {static: true}  ) model: NgModel;\n\n  public inputHandler: CurrencyHandler;\n\n  private subscription = new Subscription();\n\n  public keyValueDiffer: KeyValueDiffer<any, any>;\n\n  public optionsTemplate = {\n    align: 'right',\n    allowNegative: true,\n    allowZero: true,\n    decimal: '.',\n    precision: 2,\n    prefix: '$ ',\n    suffix: '',\n    thousands: ',',\n    nullable: false\n  };\n\n  constructor( @Optional() @Inject( CURRENCY_MASK_CONFIG ) private currencyConfig: CurrencyConfig,\n               private inputCurrency: TlInput,\n               private keyValueDiffers: KeyValueDiffers ) {\n    if ( currencyConfig ) {\n      this.optionsTemplate = currencyConfig;\n    }\n    this.keyValueDiffer = keyValueDiffers.find( {} ).create();\n  }\n\n  ngAfterContentInit() {\n    this.inputCurrency.textAlign = this.currencyOptions.align ? this.currencyOptions.align : this.optionsTemplate.align;\n    this.inputHandler.setOnModelChange( this.inputCurrency.propagateChange );\n    this.inputHandler.setOnModelTouched( this.inputCurrency.propagateTouched );\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      if ( this.inputHandler.inputService.rawValue ) {\n        this.inputHandler.inputService.rawValue = this.inputHandler.inputService.applyMask( true, this.inputHandler.inputService.rawValue );\n      }\n    });\n  }\n\n  ngDoCheck() {\n    if ( this.keyValueDiffer.diff( this.currencyOptions ) ) {\n      this.inputCurrency.textAlign = this.currencyOptions.align ? this.currencyOptions.align : this.optionsTemplate.align;\n      this.inputHandler.updateOptions( (<any>Object).assign( {}, this.optionsTemplate, this.currencyOptions ) );\n    }\n  }\n\n  ngOnInit() {\n    this.inputHandler = new CurrencyHandler( this.inputCurrency.input.nativeElement,\n      (<any>Object).assign( {}, this.optionsTemplate, this.currencyOptions ) );\n  }\n\n  @HostListener( 'blur', [ '$event' ] )\n  handleBlur( event: any ) {\n    this.inputHandler.getOnModelTouched().apply( event );\n  }\n\n  @HostListener( 'cut', [ '$event' ] )\n  handleCut( event: any ) {\n    if ( !this.isChromeAndroid() ) {\n      this.inputHandler.handleCut( event );\n    }\n  }\n\n  @HostListener( 'input', [ '$event' ] )\n  handleInput( event: any ) {\n    if ( this.isChromeAndroid() ) {\n      this.inputHandler.handleInput( event );\n    }\n  }\n\n  @HostListener( 'keydown', [ '$event' ] )\n  handleKeydown( event: any ) {\n    if ( !this.isChromeAndroid() ) {\n      this.inputHandler.handleKeydown( event );\n    }\n  }\n\n  @HostListener( 'keypress', [ '$event' ] )\n  handleKeypress( event: any ) {\n    if ( !this.isChromeAndroid() ) {\n      this.inputHandler.handleKeypress( event );\n    }\n  }\n\n  @HostListener( 'paste', [ '$event' ] )\n  handlePaste( event: any ) {\n    if ( !this.isChromeAndroid() ) {\n      this.inputHandler.handlePaste( event );\n    }\n  }\n\n  isChromeAndroid(): boolean {\n    return /chrome/i.test( navigator.userAgent ) && /android/i.test( navigator.userAgent );\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { TlInput } from './input';\nimport { CharcaseDirective } from './directives/charcase.directive';\n\nimport { ValidatorsModule } from '../validators/index';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { IconsModule } from '../icons/index';\nimport { InternalsModule } from '../internals/index';\nimport { CurrencyDirective } from './directives/currency/currency.directive';\nimport { CURRENCY_MASK_CONFIG, CurrencyConfig } from './directives/currency/currency-mask.config';\nimport { INPUT_CONFIG, InputConfig } from './core/input.config';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n    ValidatorsModule,\n    IconsModule,\n    InternalsModule,\n    OverlayModule\n  ],\n  declarations: [\n    TlInput,\n    CharcaseDirective,\n    CurrencyDirective,\n  ],\n  exports: [\n    TlInput,\n    CharcaseDirective,\n    CurrencyDirective,\n  ],\n} )\nexport class InputModule {\n  static forRoot(config: CurrencyConfig = null, inputConfig: InputConfig = null): ModuleWithProviders<InputModule> {\n    return {\n      ngModule: InputModule,\n      providers: [\n        { provide: CURRENCY_MASK_CONFIG, useValue: config },\n        { provide: INPUT_CONFIG, useValue: inputConfig },\n      ]\n    };\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlBlockUI } from './blockui';\nimport { TlBlockUIComponent } from './blockui.component';\nimport { IconsModule } from '../icons/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    IconsModule\n  ],\n  declarations: [\n    TlBlockUI,\n    TlBlockUIComponent\n  ],\n  exports: [\n    TlBlockUI\n  ],\n})\nexport class BlockUIModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlFilterContainer } from './filter-container';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n  ],\n  declarations: [\n    TlFilterContainer\n  ],\n  exports: [\n    TlFilterContainer\n  ],\n} )\nexport class FilterContainerModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlItemSelectedDirective } from './item-selected.directive';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n  ],\n  declarations: [\n    TlItemSelectedDirective\n  ],\n  exports: [\n    TlItemSelectedDirective\n  ],\n} )\nexport class ItemSelectedModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlLoader } from './loader';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  declarations: [\n    TlLoader\n  ],\n  exports: [\n    TlLoader\n  ]\n})\nexport class LoaderModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AfterViewInit, Directive, ElementRef, Input, Renderer2 } from '@angular/core';\n\n@Directive( {\n  selector: '[fixedPosition]'\n} )\nexport class FixedPositionDirective implements AfterViewInit {\n\n  @Input() positionY = 'above';\n\n  @Input() positionX = 'after';\n\n  @Input() overlapTrigger = false;\n\n  @Input() target;\n\n  constructor( private renderer: Renderer2, private hostElement: ElementRef ) {}\n\n  ngAfterViewInit() {\n    this.listenScroll();\n  }\n\n  setPositioning() {\n    if ( this.target && this.hostElement ) {\n      this.validateTypeTarget();\n      this.renderer.setStyle( this.hostElement.nativeElement, 'position', 'fixed' );\n      this.setLeftPosition();\n      this.setPositionY();\n      this.setPositionX();\n    }\n  }\n\n  private listenScroll() {\n    this.renderer.listen(window, 'scroll', () => {\n      this.setPositioning();\n    });\n  }\n\n  private validateTypeTarget() {\n    if ( this.target.localName === 'tl-button' ) {\n      this.target = this.target.firstElementChild;\n    }\n  }\n\n  private setLeftPosition() {\n    this.renderer.setStyle( this.hostElement.nativeElement, 'left',\n      this.target.getBoundingClientRect().left + 'px' );\n  }\n\n  private setPositionY() {\n    switch ( this.positionY ) {\n      case 'bellow' :\n        this.setBellowPosition();\n        break;\n      case 'above':\n        this.setAbovePosition();\n        break;\n    }\n  }\n\n  private setPositionX() {\n    switch ( this.positionX ) {\n      case 'after' :\n        this.setAfterPosition();\n        break;\n      case 'before':\n        this.setBeforePosition();\n        break;\n    }\n  }\n\n  private setBeforePosition() {\n    this.renderer.setStyle( this.hostElement.nativeElement, 'left',\n      this.target.getBoundingClientRect().left + 'px' );\n  }\n\n  private setAfterPosition() {\n    this.renderer.setStyle( this.hostElement.nativeElement, 'left',\n      this.target.getBoundingClientRect().right - this.hostElement.nativeElement.offsetWidth + 'px' );\n  }\n\n  private setAbovePosition() {\n    const calcPos = this.target.getBoundingClientRect().top - this.hostElement.nativeElement.offsetHeight;\n    const calcOverlap = !this.overlapTrigger ? calcPos : calcPos + this.target.offsetHeight;\n    this.renderer.setStyle( this.hostElement.nativeElement, 'top', calcOverlap + 'px' );\n  }\n\n  private setBellowPosition() {\n    const calcPos = this.target.getBoundingClientRect().top;\n    const calcOverlap = !this.overlapTrigger ? calcPos + this.target.offsetHeight : calcPos;\n    this.renderer.setStyle( this.hostElement.nativeElement, 'top', calcOverlap + 'px' );\n  }\n\n}\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Input, Directive, Renderer2, ElementRef } from '@angular/core';\n\n@Directive( {\n  selector: '[relativeWindowPosition]'\n} )\nexport class RelativeWindowPosition {\n\n  @Input() anchorElement;\n\n  @Input() relativeElement;\n\n  private renderer: Renderer2;\n\n  private topDislocation = 0;\n\n  constructor() {\n  }\n\n  setRenderer( renderer ) {\n    this.renderer = renderer;\n  }\n\n  setAnchorElement( anchorElement: ElementRef ) {\n    this.anchorElement = anchorElement;\n  }\n\n  setRelativeElement( relativeElement: ElementRef ) {\n    this.relativeElement = relativeElement;\n  }\n\n  setPosition(topDislocation?: number) {\n    this.topDislocation = topDislocation ? topDislocation : 0;\n    this.fitInWindowX() ? this.setRelativeElementToRightAnchor() : this.setRelativeElementToLeftAnchor();\n    this.fitInWindowY() ? this.setRelativeElementToTopAnchor() : this.setRelativeToBottomAnchor();\n  }\n\n  private setRelativeElementToTopAnchor() {\n    this.renderer.setStyle( this.relativeElement, 'top',\n     + this.anchorElement.offsetTop + 1 - this.topDislocation + 'px' );\n  }\n\n  private setRelativeToBottomAnchor() {\n    this.renderer.setStyle( this.relativeElement, 'top',\n      this.anchorElement.offsetTop - (this.relativeElement.offsetHeight) +\n      this.anchorElement.offsetHeight - this.topDislocation + 'px' );\n  }\n\n  private setRelativeElementToRightAnchor() {\n    this.renderer.setStyle( this.relativeElement, 'left',\n      this.anchorElement.offsetLeft + this.anchorElement.offsetWidth + 1 + 'px' );\n  }\n\n  private setRelativeElementToLeftAnchor() {\n    this.renderer.setStyle( this.relativeElement, 'left',\n      this.anchorElement.offsetLeft - this.anchorElement.offsetWidth + 'px' );\n  }\n\n  private fitInWindowY() {\n    const rest = Math.round( this.anchorElement.getBoundingClientRect().top + this.relativeElement.offsetHeight );\n    return rest < window.innerHeight;\n  }\n\n  private fitInWindowX() {\n    const rest = Math.round( this.anchorElement.getBoundingClientRect().right + this.relativeElement.offsetWidth );\n    return rest < window.innerWidth;\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AfterViewInit, Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport { KeyEvent } from '../core/enums/key-events';\n\n@Directive( {\n  selector: '[scrollManager]'\n} )\nexport class ScrollManager implements OnInit, AfterViewInit {\n\n  @Input() elementController: HTMLElement;\n\n  @Input() listItemHeight: string;\n\n  private cursorIndex = 1;\n\n  private numberItemsContainer: number;\n\n  private currentScroll = 0;\n\n  constructor( private renderer: Renderer2, private scrollContainer: ElementRef ) {\n  }\n\n  ngOnInit() {\n    this.listenController();\n  }\n\n  ngAfterViewInit() {\n    setTimeout( () => {\n      this.numberItemsContainer =\n        Math.floor( this.scrollContainer.nativeElement.offsetHeight / parseInt( this.listItemHeight, 10 ) );\n    } );\n  }\n\n  listenController() {\n    if ( this.elementController ) {\n      this.renderer.listen( this.elementController, 'keydown', ( $event ) => {\n        if ( this.isArrowUp( $event ) ) {\n          this.onArrowUp();\n        } else if ( this.isArrowDown( $event ) ) {\n          this.onArrowDown();\n        }\n      } );\n    }\n  }\n\n  isArrowUp( $event ) {\n    return $event.code === KeyEvent.ARROWUP;\n  }\n\n  isArrowDown( $event ) {\n    return $event.code === KeyEvent.ARROWDOWN;\n  }\n\n  onArrowUp() {\n    if ( this.cursorIndex === 1 && this.currentScroll === 0 ) {\n      this.cursorIndex = this.numberItemsContainer;\n      return this.setScrollTop( 10000 );\n    }\n\n    if ( this.cursorIndex > 1 ) {\n      this.cursorIndex--;\n    } else {\n      this.setScrollTop( this.currentScroll - parseInt( this.listItemHeight, 10 ) );\n    }\n  }\n\n  setScrollTop( value: number ) {\n    this.scrollContainer.nativeElement.scrollTop = value;\n    this.currentScroll = this.scrollContainer.nativeElement.scrollTop;\n  }\n\n  onArrowDown() {\n    if ( (this.getContainerHeight() + this.getScrollTop()) >= this.getScrollHeight() ) {\n      this.cursorIndex = 1;\n      return this.setScrollTop( 0 );\n    }\n\n    if ( this.cursorIndex < this.numberItemsContainer ) {\n      this.cursorIndex++;\n    } else {\n      this.setScrollTop( this.currentScroll + parseInt( this.listItemHeight, 10 ) );\n    }\n  }\n\n  getContainerHeight() {\n    return this.scrollContainer.nativeElement.offsetHeight;\n  }\n\n  getScrollHeight() {\n    return this.scrollContainer.nativeElement.scrollHeight;\n  }\n\n  getScrollTop() {\n    return this.scrollContainer.nativeElement.scrollTop;\n  }\n\n}\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { Directive, ElementRef } from '@angular/core';\n\n @Directive( {\n   selector: '[role=\"option\"]'\n } )\n export class ListOptionDirective  {\n\n   constructor(private element: ElementRef) {}\n\n   focus() {\n     this.element.nativeElement.focus();\n   }\n\n }\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FixedPositionDirective } from './fixed-position.directive';\nimport { RelativeWindowPosition } from './relative-window-position.directive';\nimport { ScrollManager } from './scroll-manager.directive';\nimport { ListOptionDirective } from './listoption.directive';\nimport {HighlightPipe} from './highlight.pipe';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n  ],\n  declarations: [\n    RelativeWindowPosition,\n    FixedPositionDirective,\n    ListOptionDirective,\n    ScrollManager,\n    HighlightPipe\n  ],\n  exports: [\n    RelativeWindowPosition,\n    FixedPositionDirective,\n    ListOptionDirective,\n    ScrollManager,\n    HighlightPipe\n  ]\n} )\nexport class MiscModule {\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { TlAutoComplete } from './autocomplete';\nimport { InputModule } from '../input/index';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { InternalsModule } from '../internals/index';\nimport { IconsModule } from '../icons/index';\nimport { BlockUIModule } from '../blockui/index';\nimport { AUTOCOMPLETE_CONFIG, AutoCompleteConfig } from './interfaces/autocomplete.config';\nimport { FilterContainerModule } from '../core/components/filter/filter-container.module';\nimport { ItemSelectedModule } from '../core/directives/itemSelected/item-selected.module';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { LoaderModule } from '../loader/index';\nimport { MiscModule } from '../misc/index';\nimport {TlAutocompleteTemplate} from './components/autocomplete-template';\nimport {SelectedValidatorDirective} from './selected-validator';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    OverlayModule,\n    ScrollingModule,\n    InputModule,\n    LoaderModule,\n    FormsModule,\n    BlockUIModule,\n    A11yModule,\n    IconsModule,\n    MiscModule,\n    ReactiveFormsModule,\n    InternalsModule,\n    FilterContainerModule,\n    ItemSelectedModule,\n  ],\n  declarations: [\n    TlAutoComplete,\n    TlAutocompleteTemplate,\n    SelectedValidatorDirective\n  ],\n  exports: [\n    TlAutoComplete,\n    TlAutocompleteTemplate,\n    SelectedValidatorDirective\n  ],\n} )\nexport class AutoCompleteModule {\n  static forRoot(config: AutoCompleteConfig = null ): ModuleWithProviders<AutoCompleteModule> {\n    return {\n      ngModule: AutoCompleteModule,\n      providers: [\n        { provide: AUTOCOMPLETE_CONFIG, useValue: config },\n      ]\n    };\n  }\n}\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'tl-image',\n  templateUrl: './image.component.html',\n  styleUrls: ['./image.component.scss']\n})\nexport class ImageComponent implements OnInit {\n\n  @Input() size: string;\n\n  @Input() gender: string;\n\n  @Input() shape: string;\n\n  public pathMale = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPDgw' +\n    'TExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAIAA' +\n    'gADAREAAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAUGAwQHAgH/xABCEAEAAQMBBAYGBgkEAQUAAAAAAQIDBAUREyGRBhIxQVFSImFxgcHRIzJTYqGxFCQzQnJzgrL' +\n    'hNUOSwjQVY4Oi4v/EABQBAQAAAAAAAAAAAAAAAAAAAAD/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDrgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    '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';\n\n  public pathFemale = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBAQFBAYFBQYJBgUGCQsIBgYICwwKCgsKCgwQDAwMDAwMEAwODxAPD' +\n    'gwTExQUExMcGxsbHCAgICAgICAgICD/2wBDAQcHBw0MDRgQEBgaFREVGiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICD/wAARCAI' +\n    'AAgADAREAAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAUGAwQHAgH/xABDEAEAAQMABgQJCgQFBQAAAAAAAQIDBAUGERNSkRIhMVEiMkFhcXKhwdEUIyQzQmKBscLhU' +\n    '2OCshZDg5KiJURz0uL/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/8QAFBEBAAAAAAAAAAAAAAAAAAAAAP/aAAwDAQACEQMRAD8A64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n    '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';\n\n  constructor() {}\n\n  ngOnInit() {}\n\n}\n","<img [src]=\"(gender === 'female') ? pathFemale : pathMale\" [style.width]=\"size\" [class]=\"shape\">\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  OnChanges,\n  Output\n} from '@angular/core';\nimport { Md5 } from 'ts-md5/dist/md5';\n\n@Component({\n  selector: 'tl-avatar',\n  templateUrl: './avatar.html',\n  styleUrls: ['./avatar.scss'],\n})\nexport class TlAvatar implements OnInit, OnChanges {\n\n  @Input() shape = 'square';\n\n  @Input() size = '100px';\n\n  @Input() src: string;\n\n  @Input() gravatar: string;\n\n  @Input() icon: string;\n\n  @Input() text: string;\n\n  @Input() char: string;\n\n  @Input() fontColor: string;\n\n  @Input() bgColor: string;\n\n  @Input() gender: 'female' | 'male' = 'male';\n\n  @Input() color = 'basic';\n\n  @Output() selected: EventEmitter<any> = new EventEmitter<any>();\n\n  public type = 'gender';\n\n  public multiplierIcon;\n\n  public multiplierText;\n\n  public fontSize;\n\n  public gravatarImg;\n\n  constructor() { }\n\n  ngOnInit() {\n    this.defineType();\n  }\n\n  defineType() {\n    if ( this.isSrc() ) {\n      this.setSrc();\n      return;\n    }\n    if ( this.isGravatar() ) {\n      this.setGravatar();\n      return;\n    }\n    if ( this.isIcon() ) {\n      this.setIcon();\n      return;\n    }\n    if ( this.isText() ) {\n      this.setText();\n      return;\n    }\n    if ( this.isChar() ) {\n      this.setChar();\n      return;\n    }\n  }\n\n  private isSrc() {\n    return this.src && this.src !== '';\n  }\n\n  private isGravatar() {\n    return this.gravatar && this.gravatar !== '';\n  }\n\n  private isIcon() {\n    return this.icon && this.icon !== '';\n  }\n\n  private isText() {\n    return this.text && this.text !== '';\n  }\n\n  private isChar() {\n    return this.char && this.char !== '';\n  }\n\n  private setSrc() {\n    this.type = 'src';\n  }\n\n  private setGravatar() {\n    const sizeGravatar = ( this.isPercentage() ) ? '200px' : this.size;\n    this.gravatarImg = `http://www.gravatar.com/avatar/${Md5.hashStr(this.gravatar)}?s=${sizeGravatar}&d=mm`;\n    this.type = 'gravatar';\n  }\n\n  private setIcon() {\n    this.multiplierIcon = ( this.isPercentage() ) ? 25 : 0.7;\n    this.type = 'icon';\n  }\n\n  private setText() {\n    this.multiplierText = ( this.isPercentage() ) ? 8 : 0.2;\n    this.fontSize = ( this.isOneCharacter() ) ? '2em' : '1em';\n    this.type = 'text';\n  }\n\n  private setChar() {\n    this.multiplierText = ( this.isPercentage() ) ? 8 : 0.2;\n    this.fontSize = '2em';\n    this.type = 'char';\n    this.char = this.char.substr(0, 1).toUpperCase();\n  }\n\n  public isPercentage() {\n    return this.size.substr(this.size.length - 1) === '%';\n  }\n\n  private isOneCharacter() {\n    return this.text && this.text.length === 1;\n  }\n\n  selectedAvatar($event) {\n    this.selected.emit($event);\n  }\n\n  ngOnChanges( changes ) {\n    if ( changes['gravatar'] ) {\n      this.defineType();\n    }\n  }\n\n}\n","<div *ngIf=\"type === 'src'\"\n     [class]=\"'tl-avatar ' + color + ' ' + shape\"\n     [style.width]=\"size\"\n     [style.height]=\"size\"\n     [ngStyle]=\"{'background-image'   : 'url(' + src + ')',\n                 'background-repeat'  : 'no-repeat',\n                 'background-size'    : 'cover',\n                 'background-position': 'center'}\">\n</div>\n<div *ngIf=\"type === 'gravatar'\"\n     [class]=\"'tl-avatar ' + color + ' ' + shape\"\n     [style.width]=\"size\"\n     [style.height]=\"!isPercentage() ? size : null\">\n  <img [src]=\"gravatarImg\" [style.width]=\"size\" [class]=\"shape\">\n</div>\n<div *ngIf=\"type === 'icon'\"\n     [class]=\"'tl-avatar ' + color + ' ' + shape\"\n     [style.width]=\"size\"\n     [style.height]=\"size\"\n     [style.background]=\"bgColor\">\n  <tl-icon [ngStyle]=\"{'font-size': 'calc(' + size + ' * ' + multiplierIcon + ')'}\" [style.color]=\"fontColor\">{{ icon }}</tl-icon>\n</div>\n<div *ngIf=\"type === 'text'\"\n     [class]=\"'tl-avatar ' + color + ' ' + shape\"\n     [style.width]=\"size\"\n     [style.height]=\"size\"\n     [style.background]=\"bgColor\">\n  <div [ngStyle]=\"{'font-size': 'calc(' + size + ' * ' + multiplierText + ')'}\">\n    <span [ngStyle]=\"{'font-size': fontSize}\" [style.color]=\"fontColor\">{{ text }}</span>\n  </div>\n</div>\n<div *ngIf=\"type === 'char'\"\n     [class]=\"'tl-avatar ' + color + ' ' + shape\"\n     [style.width]=\"size\"\n     [style.height]=\"size\"\n     [style.background]=\"bgColor\">\n  <div [ngStyle]=\"{'font-size': 'calc(' + size + ' * ' + multiplierText + ')'}\">\n    <span [ngStyle]=\"{'font-size': fontSize}\" [style.color]=\"fontColor\">{{ char }}</span>\n  </div>\n</div>\n<div *ngIf=\"type === 'gender'\"\n     [class]=\"'tl-avatar ' + color + ' ' + shape\"\n     [style.width]=\"size\">\n  <tl-image [size]=\"size\" [gender]=\"gender\" [shape]=\"shape\"></tl-image>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { IconsModule } from '../icons/index';\n\nimport { TlAvatar } from './avatar';\nimport { ImageComponent } from './parts/image/image.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    IconsModule\n  ],\n  declarations: [\n    TlAvatar,\n    ImageComponent\n  ],\n  exports: [\n    TlAvatar\n  ]\n})\nexport class AvatarModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n*/\n\nimport {Component, Input} from '@angular/core';\n\n@Component({\n  selector: 'tl-badge',\n  templateUrl: './badge.html',\n  styleUrls: ['./badge.scss'],\n})\nexport class TlBadge {\n\n  @Input() count: number;\n\n  @Input() maxCount: number;\n\n  @Input() onlyDot: boolean;\n\n  @Input() color = 'basic';\n\n  public value: number | string;\n\n  public limit: number | string;\n\n  overFlowCount(value: number, limit?: number): number | string {\n    if (limit !== undefined) {\n      if (value > limit) {\n        this.value = limit + '+';\n      } else {\n        this.value = value;\n      }\n    } else {\n      if (value > 99) {\n        this.value = 99 + '+';\n      } else {\n        this.value = value;\n      }\n    }\n    return this.value;\n  }\n\n}\n","<div class=\"tl-badge\">\n  <span  *ngIf=\"count > 0 || onlyDot\" [class]=\"(!onlyDot) ? 'badge-count ' + color : 'badge-dot ' + color\">\n    {{ (!onlyDot) ? overFlowCount(count, maxCount) : '' }}\n  </span>\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlBadge } from './badge';\n\nexport * from './badge';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    TlBadge,\n  ],\n  exports: [\n    TlBadge,\n  ],\n  providers: []\n})\nexport class BadgeModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  ElementRef,\n  EventEmitter, HostBinding,\n  Input,\n  OnInit,\n  Output, TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { I18nService } from '../i18n/i18n.service';\n\n@Component( {\n    selector: 'tl-button',\n    templateUrl: './button.html',\n    styleUrls: [ './button.scss' ]\n} )\nexport class TlButton implements OnInit {\n\n    @Input() text = '';\n\n    @Input() iconAddonBefore = '';\n\n    @Input() iconAddonAfter = '';\n\n    @Input() iconBeforeText = '';\n\n    @Input() iconAfterText = '';\n\n    @Input() height = '30px';\n\n    @Input() width = 'auto';\n\n    @Input() disabled = false;\n\n    @Input() flatBorder = false;\n\n    @Input() colorIconBefore = '';\n\n    @Input() colorIconAfter = '';\n\n    @Input() template: TemplateRef<any>;\n\n    @Input() outline = false;\n\n    @Input() color = 'basic';\n\n    @Input() loaderColor = '#ccc';\n\n    @Input() isLoading = false;\n\n    @Input() indexShortcut = 0;\n\n    @Input() set textLoading( text ) {\n      this._textLoading = text;\n    }\n\n    @HostBinding('attr.disabled')\n    public get disabledButton() {\n      return this.disabled;\n    }\n\n    get textLoading() {\n      return this._textLoading || this.i18nService.getLocale().Button.loadingText;\n    }\n\n    set modalContext( modal ) {\n      this._modalContext = modal;\n    }\n\n    get modalContext() {\n      return this._modalContext;\n    }\n\n    @Output() selected: EventEmitter<any> = new EventEmitter<any>();\n\n    @ViewChild( 'tlbutton', {static: true}  ) buttonElement: ElementRef;\n\n    private _textLoading: string;\n\n    private _modalContext;\n\n    constructor( public button: ElementRef, private i18nService: I18nService ) {}\n\n    ngOnInit() {}\n\n    setFocus() {\n      this.buttonElement.nativeElement.focus();\n    }\n}\n\n","<button #tlbutton\n        attr.tabindex=\"-1\"\n        cdkTrapFocus\n        [ngStyle]=\"{'min-width': width, 'height': height, 'border-radius': flatBorder ? '0' : '3px', 'line-height': height }\"\n        [ngClass]=\"{'disabled ': disabled, 'outline': outline}\"\n        [class]=\"'tl-button ripple '+ color\"\n        [disabled]=\"( disabled || isLoading ) ? true : null\">\n  <ng-container *ngTemplateOutlet=\"template ? template : templateContent\"></ng-container>\n</button>\n<ng-template #templateContent>\n  <tl-icon *ngIf=\"iconAddonBefore\"\n           [class]=\"color + ' iconAddonBefore'\"\n           [ngStyle]=\"{'line-height' : 'calc(' + height + ' - 1px)'}\"\n           [style.color]=\"colorIconBefore\">{{ iconAddonBefore }}\n  </tl-icon>\n  <div class=\"button-content\" [style.lineHeight]=\"height\">\n    <tl-icon *ngIf=\"iconBeforeText\">{{ iconBeforeText }}</tl-icon>\n    <span class=\"label\" *ngIf=\"!isLoading\">{{ text }}</span>\n    <span class=\"label\" *ngIf=\"isLoading\">{{ textLoading }}</span>\n    <tl-icon [lib]=\"'fa'\" [animation]=\"'spin'\" [color]=\"loaderColor\" *ngIf=\"isLoading\">spinner</tl-icon>\n    <tl-icon *ngIf=\"iconAfterText\">{{ iconAfterText }}</tl-icon>\n  </div>\n  <tl-icon *ngIf=\"iconAddonAfter\"\n           [class]=\"color + ' iconAddonAfter'\"\n           [ngStyle]=\"{'line-height': 'calc(' + height + ' - 1px)'}\"\n           [style.color]=\"colorIconAfter\">{{ iconAddonAfter }}\n  </tl-icon>\n</ng-template>\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nexport enum ModalResult {\n    MRFREE = -1,\n    MRCUSTOM = 0,\n    MROK = 1,\n    MRCANCEL = 2,\n    MRABORT = 3,\n    MRRETRY = 4,\n    MRIGNORE = 5,\n    MRYES = 6,\n    MRNO = 7,\n    MRCLOSE = 8,\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable, ViewContainerRef } from '@angular/core';\n\n@Injectable()\nexport class ContainerModalService {\n\n  private _view: ViewContainerRef;\n\n  get view() {\n    return this._view;\n  }\n\n  set view(view: ViewContainerRef) {\n    this._view = view;\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class SidebarService {\n\n  private change;\n\n  private transitionTime = 200;\n\n  public changes = new Subject();\n\n  constructor() {}\n\n  setChange( value ) {\n    this.change = value;\n    setTimeout(() => {\n      this.changes.next(this.change);\n    }, this.transitionTime);\n  }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport interface ShortcutConfig {\n  disableClass: string;\n}\n\nexport let SHORTCUT_CONFIG = new InjectionToken<ShortcutConfig>('shortcut.preview.js');\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Injectable,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CurrentModalService {\n\n  private currentFrontModal = new BehaviorSubject(null);\n  public currentFrontModal$ = this.currentFrontModal.asObservable();\n\n  constructor() {\n  }\n\n  setCurrentModal(currentFrontModal: any) {\n    this.currentFrontModal.next(currentFrontModal);\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport { Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { TlButton } from '../button/button';\nimport { ShortcutConfig } from './shortcut.config';\nimport { CurrentModalService } from '../modal/services/current-modal.service';\n\nexport interface ElementShortcut {\n  id: string;\n  shortcut: string;\n  element: any;\n}\n\nlet listener;\n\nlet buttonElements: Array<ElementShortcut> = [];\n\n@Injectable()\nexport class ShortcutService implements OnDestroy {\n\n  public elementsListener: Array<ElementShortcut> = [];\n\n  private renderer: Renderer2;\n\n  private elementIndex;\n\n  private currentShortcut;\n\n  private highestZindexElement;\n\n  private subscription: Subscription = new Subscription();\n\n  private activeModal: any;\n\n  private config: ShortcutConfig;\n\n  private modalContextArray = [];\n\n  constructor(  private currentModalService: CurrentModalService) {\n    this.listenHeadingModal();\n  }\n\n  setConfig( config: ShortcutConfig ) {\n    this.config = config;\n  }\n\n  setRenderer( renderer ) {\n    this.renderer = renderer;\n    this.createListener();\n  }\n\n  listenHeadingModal() {\n    this.subscription.add( this.currentModalService.currentFrontModal$.subscribe( ( component: any ) => {\n      if(component?.activeModal) {\n        this.activeModal = component.activeModal;\n      }\n    } ) );\n  }\n\n  isKeyOnList( key: string ) {\n    return this.elementsListener.filter(value => value.shortcut.toLocaleLowerCase() === key.toLocaleLowerCase() ).length > 0;\n  }\n\n  createListener() {\n    if ( !listener ) {\n      this.subscription.add( document.addEventListener( 'keydown', ( $event: KeyboardEvent ) => {\n        if ( !$event.key || !this.isKeyOnList( $event.key )) {\n          return;\n        }\n        $event.preventDefault();\n        if ( !this.isKeysShortcutEqualsKeysEvent( $event ) ) {\n          return;\n        }\n        if ( this.isElementDisabledClass() ) {\n          return;\n        }\n        if ( this.getEqualKeys( this.elementsListener[ this.elementIndex ].shortcut ).length > 1 ) {\n          this.currentShortcut = this.elementsListener[ this.elementIndex ].shortcut;\n          return this.handleClickComponentWithEqualsKeys();\n        }\n        this.handleClickComponentWithoutEqualsKeys();\n        this.handleElementsOfView();\n      } ) );\n      listener = this.subscription;\n    }\n  }\n\n  isElementDisabledClass() {\n    if ( !this.config ) {\n      return false;\n    }\n    if ( !this.config.disableClass ) {\n      return false;\n    }\n    for ( let index = 0; index < this.getElementDisabled().classList.length; index++ ) {\n      if ( this.getElementDisabled().classList[ index ] === this.config.disableClass ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  getElementDisabled() {\n    if ( this.elementsListener[ this.elementIndex ].element instanceof TlButton ) {\n      return this.elementsListener[ this.elementIndex ].element.button.nativeElement;\n    } else {\n      return this.elementsListener[ this.elementIndex ].element.nativeElement;\n    }\n  }\n\n  handleClickComponentWithEqualsKeys() {\n    this.setModalContextArray();\n    this.isElementInstanceOfButton( this.elementsListener[ this.elementIndex ] ) ?\n      this.handleEqualButton() :\n      this.handleEqualElement();\n  }\n\n  handleClickComponentWithoutEqualsKeys() {\n    this.setModalContextArray();\n    this.isElementInstanceOfButton( this.elementsListener[ this.elementIndex ] ) ?\n      this.activeElementButton( this.elementIndex ) :\n      this.elementsListener[ this.elementIndex ].element.nativeElement.click();\n  }\n\n  handleEqualButton() {\n    if ( this.isButtonDisabled() ) {\n      return;\n    }\n    return this.activeHighestButtonElement();\n  }\n\n  setModalContextArray() {\n    this.modalContextArray = this.getExistModalContext();\n  }\n\n  handleEqualElement() {\n    this.orderElementsByZindex();\n    this.elementsListener[ this.elementsListener.indexOf( this.highestZindexElement ) ].element.nativeElement.click();\n    this.handleElementsOfView();\n  }\n\n  activeHighestButtonElement() {\n    if ( this.hasModalContextArray() ) {\n      const button = this.getModalContextEqualActiveModal()[ 0 ];\n      if ( button ) {\n        button.element.button.nativeElement.click();\n      }\n    } else {\n      this.sortButtons()[ 0 ].element.button.nativeElement.click();\n    }\n    setTimeout( () => {\n      this.handleElementsOfView();\n    }, 520 );\n  }\n\n  hasModalContextArray() {\n    return this.modalContextArray.length > 0;\n  }\n\n  getModalContextEqualActiveModal() {\n    return this.modalContextArray.filter( ( item ) =>\n    (item.element.modalContext === this.activeModal) &&\n    (item.shortcut === this.elementsListener[this.elementIndex].shortcut));\n  }\n\n  getExistModalContext() {\n    return buttonElements.filter( ( item ) => item.element.modalContext );\n  }\n\n  getButtonsOfCurrentShortCut() {\n    return buttonElements.filter( ( value ) => (this.currentShortcut === value.shortcut));\n  }\n\n  sortButtons() {\n    return this.getButtonsOfCurrentShortCut().sort( ( a, b ) => {\n      return parseInt( a.element.indexShortcut, 10 ) -\n        parseInt( b.element.indexShortcut, 10 );\n    } );\n  }\n\n  activeElementButton( element ) {\n    let button;\n    if ( this.getModalContextEqualActiveModal()[ 0 ] && this.hasModalContextArray()) {\n      button = this.getModalContextEqualActiveModal()[ 0 ];\n    } else {\n      button = this.elementsListener[ element ];\n    }\n    button.element.buttonElement.nativeElement.click();\n    setTimeout( () => {\n      this.handleElementsOfView();\n    }, 520 );\n  }\n\n  filterButtons() {\n    buttonElements = [];\n    this.elementsListener.forEach( ( value ) => {\n      if ( this.isElementInstanceOfButton( value ) ) {\n        if ( buttonElements.indexOf( value ) < 0 ) {\n          buttonElements.push( value );\n        }\n      }\n    } );\n  }\n\n  isKeysShortcutEqualsKeysEvent( $event: KeyboardEvent ) {\n    for ( let element = 0; element < this.elementsListener.length; element++ ) {\n      if ( !$event.key ) {\n        return;\n      }\n      if ( this.getShortcutEventMultipleKey( $event ).key === this.handleShortcutMultipleKey( element ).key &&\n        this.getShortcutEventMultipleKey( $event ).ctrlKey === this.handleShortcutMultipleKey( element ).ctrlKey &&\n        this.getShortcutEventMultipleKey( $event ).shiftKey === this.handleShortcutMultipleKey( element ).shiftKey &&\n        this.getShortcutEventMultipleKey( $event ).altKey === this.handleShortcutMultipleKey( element ).altKey ) {\n        this.elementIndex = element;\n        return this.elementsListener[ element ];\n      }\n    }\n  }\n\n  handleElementsOfView() {\n    setTimeout( () => {\n      const tempArrayElements = this.elementsListener.slice( 0 );\n      for ( let element = 0; element < tempArrayElements.length; element++ ) {\n        this.isElementInstanceOfButton( tempArrayElements[ element ] ) ?\n          this.handleElementButton( tempArrayElements[ element ] ) :\n          this.handleOtherElements( tempArrayElements[ element ] );\n      }\n    }, 280 );\n  }\n\n  handleElementButton( item ) {\n    if ( !this.existElementOnView( item.element.buttonElement.nativeElement ) ) {\n      this.deleteButtonElementFromArray( item );\n      this.deleteElementFromArray( item );\n    }\n  }\n\n  handleOtherElements( item ) {\n    if ( !this.existElementOnView( item.element.nativeElement ) ) {\n      this.deleteElementFromArray( item );\n    }\n  }\n\n  isElementInstanceOfButton( value ) {\n    return value.element instanceof TlButton;\n  }\n\n  handleShortcutMultipleKey( element ) {\n    const assistKeys = { ctrl: false, shift: false, alt: false };\n    let key = this.elementsListener[ element ].shortcut.toLowerCase();\n\n    this.getShortcutWithoutSpaces( element ).split( '+' ).forEach( ( value, index, array ) => {\n      if ( value === 'ctrl' ) {\n        return assistKeys.ctrl = true;\n      }\n      if ( value === 'shift' ) {\n        return assistKeys.shift = true;\n      }\n      if ( value === 'alt' ) {\n        return assistKeys.alt = true;\n      }\n      key = value;\n    } );\n\n    return {\n      ctrlKey: assistKeys.ctrl,\n      shiftKey: assistKeys.shift,\n      altKey: assistKeys.alt,\n      key: key\n    };\n  }\n\n  getShortcutEventMultipleKey( $event: KeyboardEvent ) {\n    return {\n      ctrlKey: $event.ctrlKey,\n      shiftKey: $event.shiftKey,\n      altKey: $event.altKey,\n      key: $event.key.toLowerCase()\n    };\n  }\n\n  existElementOnView( value ) {\n    return document.body.contains( value );\n  }\n\n  getCharsOfShortcut( element ) {\n    return this.elementsListener[ element ].shortcut.toLowerCase().split( '' );\n  }\n\n  getShortcutWithoutSpaces( element ) {\n    return this.removeSpacesShortcutString( element ).toString().replace( /,/gi, '' );\n  }\n\n  removeSpacesShortcutString( element ) {\n    return this.getCharsOfShortcut( element ).filter( ( value ) => {\n      return value !== ' ';\n    } );\n  }\n\n  deleteElementFromArray( element ) {\n    this.elementsListener.splice( this.elementsListener.indexOf( element ), 1 );\n  }\n\n  deleteButtonElementFromArray( element ) {\n    buttonElements.splice( buttonElements.indexOf( element ), 1 );\n  }\n\n  isButtonDisabled() {\n    return this.elementsListener[ this.elementIndex ].element.buttonElement.nativeElement.disabled;\n  }\n\n  getEqualKeys( shortcut ) {\n    return this.elementsListener.filter( ( value ) => {\n      return String(shortcut).toLocaleLowerCase() === String(value.shortcut).toLocaleLowerCase();\n    } );\n  }\n\n  orderElementsByZindex() {\n    const tmpNormalElements = this.filterElementsNotEqualButton();\n    tmpNormalElements.sort( ( a, b ) => {\n      if ( a.element.nativeElement ) {\n        return parseInt( a.element.nativeElement.style.zIndex, 10 ) -\n          parseInt( b.element.nativeElement.style.zIndex, 10 );\n      }\n    } );\n    this.highestZindexElement = tmpNormalElements[ tmpNormalElements.length - 1 ];\n  }\n\n  filterElementsNotEqualButton() {\n    return this.elementsListener.filter( ( value, index, array ) => {\n      return !this.isElementInstanceOfButton( value ) && ( value.shortcut === this.currentShortcut );\n    } );\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  ContentChild,\n  Directive,\n  ElementRef,\n  Input,\n  Renderer2,\n  OnDestroy,\n  Optional,\n  Inject,\n} from '@angular/core';\nimport { ShortcutService } from './shortcut.service';\nimport { TlButton } from '../button/button';\nimport { SHORTCUT_CONFIG, ShortcutConfig } from './shortcut.config';\n\nlet elements = [];\n\nlet identifier = 0;\n\n@Directive( {\n  selector: '[shortcut]'\n} )\nexport class ShortcutDirective implements OnDestroy {\n\n  @Input('shortcut')\n  set shortcut( value: string ) {\n    if ( value ) {\n      this._shortcut = value;\n      this.setComponent();\n      this.addElement();\n    }\n  }\n\n  get shortcut() {\n    return this._shortcut;\n  }\n\n  @ContentChild( TlButton, {static: true} ) tlbutton;\n\n  private component;\n\n  private _shortcut: string;\n\n  private shortcutID = 'shortcut-' + identifier++;\n\n  constructor( @Optional() @Inject( SHORTCUT_CONFIG ) private shortcutConfig: ShortcutConfig,\n               private element: ElementRef, private shortcutService: ShortcutService, private renderer: Renderer2 ) {\n    this.shortcutService.setRenderer( this.renderer );\n    this.shortcutService.setConfig(this.shortcutConfig);\n  }\n\n  private setComponent() {\n    this.component = {\n      id: this.shortcutID,\n      shortcut: this.shortcut,\n      element: this.tlbutton ? this.tlbutton : this.element\n    };\n  }\n\n  private addElement() {\n    if ( this.component.shortcut.length > 0 ) {\n      elements.push( this.component );\n      this.shortcutService.elementsListener = elements;\n      this.shortcutService.filterButtons();\n    }\n  }\n\n  private removeShortcut( id: string ) {\n    elements = elements.filter( ( value ) => {\n      return value.id !== id;\n    } );\n  }\n\n  ngOnDestroy() {\n    this.removeShortcut( this.shortcutID );\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport {ContainerModalService} from './addons/container-modal/container-modal.service';\nimport {ModalService} from './services/modal.service';\nimport {ModalResult} from '../core/enums/modal-result';\nimport {ModalOptions} from './interfaces/modal-options';\nimport {SidebarService} from './services/sidebar.service';\nimport {Subscription} from 'rxjs';\n\nlet subscribeMouseMove;\n\nlet uniqueIdentifier = 0;\n\n@Component( {\n  selector: 'tl-modal',\n  templateUrl: './modal.html',\n  styleUrls: [ './modal.scss' ],\n} )\nexport class TlModal implements OnInit, AfterViewInit, ModalOptions, OnDestroy {\n\n  @Input() draggable = true;\n\n  @Input() minimizable = true;\n\n  @Input() maximizable = true;\n\n  @Input() closable = true;\n\n  @Input() icon = '';\n\n  @Input() title = 'My Modal';\n\n  @Input() color = 'basic';\n\n  @Input() height = '500px';\n\n  @Input() closeOnOK = false;\n\n  @Input() width = '500px';\n\n  @Input() fullscreen = false;\n\n  @Input() restoreMaximize = true;\n\n  @Input() backdrop = false;\n\n  @Input() translucent = false;\n\n  @Input() closeShortcut = 'escape';\n\n  @Input() restoreShortcut = '';\n\n  @Input() maximizeShortcut = '';\n\n  @Input() showTitlebar = true;\n\n  @Input() parentElement = null;\n\n  @ViewChild( 'headerBox', {static: true} ) headerBox: ElementRef;\n\n  @ViewChild( 'modal', {static: true} ) modal: ElementRef;\n\n  @ViewChild( 'body', { read: ViewContainerRef, static: true } ) body: ViewContainerRef;\n\n  @Output() show: EventEmitter<any> = new EventEmitter();\n\n  @Output() minimize: EventEmitter<any> = new EventEmitter();\n\n  @Output() maximize: EventEmitter<any> = new EventEmitter();\n\n  @Output() close: EventEmitter<any> = new EventEmitter();\n\n  public componentRef: ComponentRef<TlModal>;\n\n  public id = '';\n\n  public subscription = new Subscription();\n\n  public status = '';\n\n  public index;\n\n  public serviceControl: ModalService;\n\n  public maximized = false;\n\n  private mousePressX;\n\n  private mousePressY;\n\n  private positionMouseMoveX;\n\n  private positionMouseMoveY;\n\n  private moving = false;\n\n  private offsetLeftContent;\n\n  private offsetTopContent;\n\n  private offsetLeftModal;\n\n  private offsetTopModal;\n\n  private parent;\n\n  private modalLeft;\n\n  private modalTop;\n\n  private positionX;\n\n  private positionY;\n\n  private subscribeResize;\n\n  constructor( private element: ElementRef, private renderer: Renderer2,\n               private containerService: ContainerModalService,\n               private sidebarService: SidebarService,\n               private zone: NgZone,\n               private change: ChangeDetectorRef) {\n    this.id = `tl-modal-${uniqueIdentifier++}`;\n  }\n\n  ngOnInit() {\n    this.listenSidebarChange();\n    this.resizeListener();\n    this.validateProperty();\n    this.show.emit();\n  }\n\n  ngAfterViewInit() {\n    this.getBoundingContent();\n    this.setDefaultDimensions();\n    this.validateMeasureParentAndModal();\n    this.handleInitialPositionModal();\n    this.handleFullscreen();\n  }\n\n  listenSidebarChange() {\n    this.subscription.add(this.sidebarService.changes.subscribe(() => {\n      this.handleChangeSidebarWhenMaximized();\n    }));\n  }\n\n  handleChangeSidebarWhenMaximized() {\n    setTimeout( () => {\n      this.getBoundingContent();\n      this.setPosition();\n      this.handleInitialPositionModal();\n      this.setOffsetLeftModal( this.modal.nativeElement.getBoundingClientRect().left );\n      this.setOffsetTopModal( this.modal.nativeElement.getBoundingClientRect().top );\n      if ( this.maximized ) {\n        this.maximized = false;\n        this.maximizeModal();\n      }\n    }, 250 );\n  }\n\n  handleInitialPositionModal() {\n    if (this.parentElement) {\n      this.setModalCenterParent();\n      return;\n    }\n    this.setModalCenterWindow();\n  }\n\n  handleFullscreen() {\n    if ( this.fullscreen ) {\n      this.maximizeModal();\n    }\n  }\n\n  resizeListener() {\n    this.subscribeResize = this.renderer.listen( window, 'resize', () => {\n      this.getBoundingContent();\n      this.setModalCenterWindow();\n      this.maximizeModal();\n    } );\n  }\n\n  addTransitionModal() {\n    this.renderer.setStyle( this.modal.nativeElement, 'transition', 'all 150ms ease-in-out' );\n  }\n\n  mousemoveListener() {\n    this.removeTransitionModal();\n    this.zone.runOutsideAngular( () => {\n      subscribeMouseMove = this.renderer.listen( window, 'mousemove', ( event ) => {\n        if ( !( this.moving && this.draggable) ) {\n          return;\n        }\n        if ( this.isMouseOutOfTheWindowRight( event ) ) {\n          this.setOffsetLeftModal( window.innerWidth - this.modal.nativeElement.offsetWidth );\n          this.setMousePressX( window.innerWidth );\n        }\n        if ( this.isMouseOutOfTheWindowLeft( event ) ) {\n          this.setOffsetLeftModal( this.getBoundingParentElement().left );\n          this.setMousePressX( this.getBoundingParentElement().left );\n        }\n        this.positionMouseMoveX = event.clientX;\n        this.positionMouseMoveY = event.clientY;\n        this.setPosition();\n      } );\n    } );\n  }\n\n  mouseupListener() {\n    if ( subscribeMouseMove ) {\n      subscribeMouseMove();\n    }\n    this.addTransitionModal();\n    this.moving = false;\n  }\n\n  removeTransitionModal() {\n    this.renderer.removeStyle( this.modal.nativeElement, 'transition' );\n  }\n\n  mouseDown( $event ) {\n    if ( !this.maximized ) {\n      this.setOffsetLeftModal( this.modal.nativeElement.getBoundingClientRect().left );\n      this.setOffsetTopModal( this.modal.nativeElement.getBoundingClientRect().top );\n      this.setMousePressX( $event.clientX );\n      this.setMousePressY( $event.clientY );\n      this.moving = true;\n    }\n  }\n\n  validateProperty() {\n    if ( !this.restoreMaximize && !this.fullscreen ) {\n      throw new EvalError( 'The [restoreMaximize] property require [fullscreen] property as TRUE.' );\n    }\n  }\n\n  validateMeasureParentAndModal() {\n    if ( (this.parent.offsetWidth < this.modal.nativeElement.offsetWidth) ||\n      (this.parent.offsetHeight < this.modal.nativeElement.offsetHeight) ) {\n      console.warn( 'The Width or Height of Parent Element are less than Width or Height of Modal, ' +\n        'this could result in glitches and not working as expected.' );\n    }\n  }\n\n  getModalPosition() {\n    this.modalLeft = this.modal.nativeElement.offsetLeft;\n    this.modalTop = this.modal.nativeElement.offsetTop;\n  }\n\n  setModalCenterParent() {\n    this.modal.nativeElement.style.left = this.offsetLeftContent + (this.parent.offsetWidth / 2)\n      - (this.modal.nativeElement.offsetWidth / 2) + 'px';\n    this.modal.nativeElement.style.top = (this.offsetTopContent)\n      + (this.parent.offsetHeight / 2) - (this.modal.nativeElement.offsetHeight / 2) + 'px';\n  }\n\n  setModalCenterWindow() {\n    this.modal.nativeElement.style.left = (window.innerWidth / 2) -\n      (this.modal.nativeElement.offsetWidth / 2) + 'px';\n    this.modal.nativeElement.style.top = (window.innerHeight / 2) -\n      (this.modal.nativeElement.offsetHeight / 2) + 'px';\n  }\n\n  setComponentRef( component: ComponentRef<TlModal> ) {\n    this.componentRef = component;\n  }\n\n  setMousePressX( position ) {\n    this.mousePressX = position;\n  }\n\n  setMousePressY( position ) {\n    this.mousePressY = position;\n  }\n\n  setPosition() {\n    this.setLeftPosition();\n    this.setTopPosition();\n    this.setDefaultDimensions();\n  }\n\n  setLeftPosition() {\n    if ( this.isOutOfWindowX() ) {\n      return this.setLeftLimitOfArea();\n    }\n\n    if ( this.isOutOfWindowOnLeft() ) {\n      return this.setContentLeftPosition();\n    }\n\n    this.setNewLeftPosition();\n  }\n\n  setTopPosition() {\n    if ( this.isOutOfWindowY() ) {\n      return this.setTopLimitOfArea();\n    }\n\n    if ( this.isOutOfWindowOnTop() ) {\n      return this.setContentTopPosition();\n    }\n\n    this.setNewTopPosition();\n  }\n\n  setOptions( options: ModalOptions ) {\n    const self = this;\n    Object.keys( options ).forEach( function ( key ) {\n      self[ key ] = options[ key ];\n    } );\n  }\n\n  setIdentifier(id: string) {\n    if (id) {\n      this.id = id;\n    }\n  }\n\n  setParentElement(parentElement: HTMLElement) {\n    if (!this.parentElement) {\n      this.parentElement = parentElement;\n    }\n  }\n\n  setLeftLimitOfArea() {\n    return this.modal.nativeElement.style.left =\n      (this.parent.offsetWidth - this.modal.nativeElement.offsetWidth) + this.offsetLeftContent + 'px';\n  }\n\n  setTopLimitOfArea() {\n    return this.modal.nativeElement.style.top =\n      (this.parent.offsetHeight - this.modal.nativeElement.offsetHeight) + (this.offsetTopContent) + 'px';\n  }\n\n  setOffsetLeftModal( offset ) {\n    this.offsetLeftModal = offset;\n  }\n\n  setOffsetTopModal( offset ) {\n    this.offsetTopModal = offset;\n  }\n\n  setContentTopPosition() {\n    this.modal.nativeElement.style.top = this.offsetTopContent + 'px';\n  }\n\n  setContentLeftPosition() {\n    this.modal.nativeElement.style.left = this.offsetLeftContent + 'px';\n  }\n\n  setNewTopPosition() {\n    this.modal.nativeElement.style.top = this.offsetTopModal + this.positionMouseMoveY - this.mousePressY + 'px';\n  }\n\n  setNewLeftPosition() {\n    this.modal.nativeElement.style.left = this.offsetLeftModal + this.positionMouseMoveX - this.mousePressX + 'px';\n  }\n\n  setServiceControl( service ) {\n    this.serviceControl = service;\n  }\n\n  setDefaultDimensions() {\n    if ( this.height && this.width ) {\n      this.modal.nativeElement.style.height = this.height;\n      this.modal.nativeElement.style.width = this.width;\n    } else if ( this.getBoundingParentElement() ) {\n      this.modal.nativeElement.style.height = this.getBoundingParentElement().height + 'px';\n      this.modal.nativeElement.style.width = this.getBoundingParentElement().width + 'px';\n    } else {\n      this.modal.nativeElement.style.height = '500px';\n      this.modal.nativeElement.style.width = '500px';\n    }\n  }\n\n  setCurrentPosition() {\n    this.modal.nativeElement.style.left = this.modalLeft + 'px';\n    this.modal.nativeElement.style.top = this.modalTop + 'px';\n  }\n\n  isMouseOutOfTheWindowLeft( event ) {\n    return event.clientX < this.offsetLeftContent;\n  }\n\n  setActive() {\n    this.serviceControl.setActiveModal( this.componentRef );\n  }\n\n  getElementModal() {\n    return this.modal;\n  }\n\n  isMouseOutOfTheWindowRight( event ) {\n    return event.clientX >= window.innerWidth - 1;\n  }\n\n  isOutOfWindowOnLeft() {\n    return this.positionX < this.offsetLeftContent;\n  }\n\n  isOutOfWindowOnTop() {\n    return this.positionY < this.offsetTopContent;\n  }\n\n  isOutOfWindowX() {\n    this.positionX = this.offsetLeftModal + this.positionMouseMoveX - this.mousePressX;\n    return this.positionX >= (this.parent.offsetWidth - this.modal.nativeElement.offsetWidth) + this.offsetLeftContent;\n  }\n\n  isOutOfWindowY() {\n    this.positionY = this.offsetTopModal + this.positionMouseMoveY - this.mousePressY;\n    return this.positionY >= ((this.parent.offsetHeight - this.modal.nativeElement.offsetHeight) + this.offsetTopContent);\n  }\n\n  minimizeModal() {\n    if ( !(this.minimizable) ) {\n      return;\n    }\n    this.serviceControl.minimize( this.componentRef );\n    this.minimize.emit( this.componentRef.instance );\n  }\n\n  closeModal() {\n    if ( this.closable ) {\n      this.serviceControl.execCallBack( { mdResult: ModalResult.MRCLOSE }, this.id );\n      this.close.emit( this.componentRef.instance );\n    }\n  }\n\n  maximizeModal() {\n    if ( !(this.maximizable) ) {\n      return;\n    }\n    if ( !this.maximized ) {\n      this.getModalPosition();\n      this.setModalLeftPosition();\n      this.setModalTopPosition();\n      this.setModalWidth();\n      this.setModalHeight();\n      this.maximized = true;\n      this.moving = false;\n      this.maximize.emit();\n      this.change.detectChanges();\n      return;\n    }\n    this.restoreMaximizeModal();\n  }\n\n\n  setModalLeftPosition() {\n    this.modal.nativeElement.style.left = this.getBoundingParentElement().left + 'px';\n  }\n\n  setModalTopPosition() {\n    this.modal.nativeElement.style.top = this.getBoundingParentElement().top +\n      (this.hasScroll() ? window.scrollY : 0) + 'px';\n  }\n\n  setModalWidth() {\n    this.modal.nativeElement.style.width = this.getBoundingParentElement().width + 'px';\n  }\n\n  setModalHeight() {\n    this.modal.nativeElement.style.height = this.hasScroll() ? this.getHeightOfWindow() :\n      this.getBoundingParentElement().height + 'px';\n  }\n\n  getHeightOfWindow() {\n    return (window.innerHeight - this.modal.nativeElement.offsetTop) + 'px';\n  }\n\n  hasScroll() {\n    return (!this.parentElement) && (this.parent.offsetHeight > window.innerHeight);\n  }\n\n  restoreMaximizeModal() {\n    if ( this.restoreMaximize ) {\n      this.setDefaultDimensions();\n      this.setCurrentPosition();\n      this.maximized = false;\n    }\n  }\n\n  getBoundingParentElement() {\n    return this.parent.getBoundingClientRect();\n  }\n\n  getBoundingContent() {\n    this.parent = !this.parentElement ? this.containerService.view.element.nativeElement : this.parentElement;\n    this.offsetLeftContent = this.parent.getBoundingClientRect().left;\n    this.offsetTopContent = this.parent.getBoundingClientRect().top;\n  }\n\n  ngOnDestroy() {\n    if (this.subscribeResize) {\n      this.subscribeResize();\n    }\n    this.change.detach();\n    this.subscription.unsubscribe();\n  }\n\n}\n\n","<div #modal\n     (mousedown)=\"mousemoveListener();\n     setActive();\"\n     (mouseup)=\"mouseupListener()\"\n     [ngStyle]=\"{'background-color': translucent ? 'transparent': 'null'}\"\n     [class]=\"'tl-modal-container ' + color\">\n    <div *ngIf=\"showTitlebar\" class=\"header\" #headerBox>\n        <div class=\"bar\"\n             [ngClass]=\"serviceControl.activeModal === componentRef ? '-active' : '-inactive'\"\n             (mousedown)=\"mouseDown($event);\"\n             (dblclick)=\"maximizeModal()\">\n            <span class=\"ui-icon\"><tl-icon>{{ icon }}</tl-icon></span>\n            <span class=\"ui-title\">{{title}}</span>\n        </div>\n        <div class=\"controls\" [ngClass]=\"serviceControl.activeModal === componentRef ? '-active' : '-inactive'\">\n            <div class=\"control-item\"\n                 [ngClass]=\"{'disabled': !minimizable}\"\n                 (click)=\"minimizeModal()\">\n                <tl-icon [lib]=\"'ion'\" [class.disabled]=\"!minimizable\">remove</tl-icon>\n            </div>\n\n            <div class=\"control-item\" *ngIf=\"!maximized\"\n                 [ngClass]=\"{'disabled': !maximizable}\"\n                 [ngStyle]=\"{'zIndex': modal.style.zIndex}\"\n                 [shortcut]=\"maximizeShortcut\"\n                 (click)=\"maximizeModal()\">\n              <tl-icon [lib]=\"'ion'\" [class.disabled]=\"!maximizable\">expand</tl-icon>\n            </div>\n\n            <div class=\"control-item\" *ngIf=\"maximized\"\n                 [ngClass]=\"{'disabled': !restoreMaximize}\"\n                 [ngStyle]=\"{'zIndex': modal.style.zIndex}\"\n                 [shortcut]=\"restoreShortcut\"\n                 (click)=\"restoreMaximizeModal()\">\n              <tl-icon [lib]=\"'ion'\" [class.disabled]=\"!restoreMaximize\">contract</tl-icon>\n            </div>\n\n            <div class=\"control-item\"\n                 [ngClass]=\"{'disabled': !closable}\"\n                 [ngStyle]=\"{'zIndex': modal.style.zIndex}\"\n                 [shortcut]=\"closeShortcut\"\n                 (click)=\"closeModal()\">\n              <tl-icon [lib]=\"'ion'\" [class.disabled]=\"!closable\">close</tl-icon>\n            </div>\n        </div>\n    </div>\n    <div class=\"body\" #body></div>\n    <ng-content></ng-content>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe( { name: 'limitString' } )\nexport class LimitStringPipe implements PipeTransform {\n\n    transform( text: string, value: number )  {\n        if (text.length > value) {\n            let subStr = '';\n            const strArray = text.split('');\n            strArray.forEach((value2, index, array) => {\n                if (index <= value) {\n                    subStr += value2;\n                }\n            });\n            subStr += '...'.trim();\n            return subStr;\n        } else {\n            return text;\n        }\n    }\n\n}\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  Input, Component, Output, EventEmitter,\n  ElementRef\n} from '@angular/core';\n\n\n@Component( {\n    selector: 'tl-backdrop',\n    templateUrl: './backdrop.html',\n    styleUrls: [ './backdrop.scss' ],\n} )\nexport class TlBackdrop {\n\n    @Input() position = { zIndex: 0 };\n\n    @Input() width = '100%';\n\n    @Input() height = '100%';\n\n    @Output() click = new EventEmitter();\n\n    public hidden = false;\n\n    constructor( public backdrop: ElementRef) {}\n\n    setBackdropOptions(object) {\n      this.width = object.width;\n      this.height = object.height;\n      this.position.zIndex = object.zIndex;\n    }\n\n    hideBackdrop() {\n      this.hidden = true;\n    }\n\n    showBackdrop() {\n      this.hidden = false;\n    }\n\n    clickBackdrop($event) {\n      this.click.emit($event);\n    }\n\n}\n","<div class=\"backdrop-dialog\"\n     (click)=\"clickBackdrop($event)\"\n     [style.display]=\"hidden ? 'none' : 'block'\"\n     [ngStyle]=\"{'width': width, 'height': height, 'zIndex': position.zIndex}\"\n     style=\"z-index:0;\">\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlBackdrop } from './backdrop';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n  ],\n  declarations: [\n    TlBackdrop\n  ],\n  exports: [\n    TlBackdrop\n  ],\n} )\nexport class BackdropModule {\n}\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n export enum ActionsModal {\n   INSERT = 'I',\n   UPDATE = 'U',\n   DELETE = 'D',\n   VIEW = 'V'\n }\n","\nimport { ActionsModal } from '../../core/enums/actions-modal';\nimport { LOCALE_I18N } from '../../i18n/i18n.service';\nimport { ModalFormConfig } from '../interfaces/modal-smart-form-config';\n\nexport class SmartFormConfiguration implements ModalFormConfig {\n\n  factory;\n  executeAction;\n  identifier;\n  dataForm?;\n  initialDataForm?;\n  unique?;\n  deleteTitleConfirmation?;\n  deleteConfirmationMessage?;\n  recordNotFoundMessage?;\n  parentElement?;\n  titleByAction?;\n  recordConfig?;\n  isInsertAction?: Function;\n  isUpdateAction?: Function;\n\n  constructor() {\n    this.factory = null;\n    this.executeAction = ActionsModal.INSERT;\n    this.identifier = 'MODAL_1';\n    this.unique = false;\n    this.dataForm = null;\n    this.recordConfig = { showOnDelete: false, keyFromDataForm: ''};\n    this.deleteTitleConfirmation = LOCALE_I18N.Form.deleteTitleConfirmation;\n    this.deleteConfirmationMessage = LOCALE_I18N.Form.deleteConfirmationMessage;\n    this.recordNotFoundMessage = LOCALE_I18N.Form.recordNotFoundMessage;\n    this.parentElement = null;\n    this.titleByAction = true;\n    this.isInsertAction = () => this.executeAction === ActionsModal.INSERT;\n    this.isUpdateAction = () => this.executeAction === ActionsModal.UPDATE;\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  ComponentFactoryResolver,\n  ComponentRef,\n  ElementRef,\n  EventEmitter,\n  Injectable,\n  OnDestroy,\n  Type,\n  ViewContainerRef,\n} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {SmartFormConfiguration} from '../classes/modal-smart-form';\nimport {ModalOptions} from '../interfaces/modal-options';\nimport {ContainerModalService} from '../addons/container-modal/container-modal.service';\nimport {TlModal} from '../modal';\nimport {TlBackdrop} from '../../core/components/backdrop/backdrop';\nimport {ActionsModal} from '../../core/enums/actions-modal';\nimport {ModalResult} from '../../core/enums/modal-result';\nimport {ModalFormConfig} from '../interfaces/modal-smart-form-config';\nimport {ModalInstance} from '../interfaces/modal-instance';\nimport {I18nService} from '../../i18n/i18n.service';\nimport * as objectPath from 'object-path';\nimport { CurrentModalService } from './current-modal.service';\n\nlet lastZIndex = 500;\n\n@Injectable()\nexport class ModalService implements OnDestroy {\n\n  public instanceComponent: ModalInstance;\n\n  public componentList: ModalInstance[] = [];\n\n  public changeModal = new Subject();\n\n  public activeModal: ComponentRef<any>;\n\n  public componentInjected: ComponentRef<any>;\n\n  private modalShow = new Subject();\n\n  private component: ComponentRef<TlModal>;\n\n  private view: ViewContainerRef;\n\n  private modalConfiguration: SmartFormConfiguration;\n\n  private selectedModal: ModalInstance;\n\n  private modalOptions: ModalOptions;\n\n  private backdrop: ComponentRef<TlBackdrop>;\n\n  private eventCallback: EventEmitter<any>;\n\n  private visibleModals = [];\n\n  private referenceSmartForm;\n\n  constructor(private i18nService: I18nService,\n              private containerModal: ContainerModalService,\n              private currentModalService: CurrentModalService\n  ) {\n  }\n\n  createModalDialog(component: Type<any>, factoryResolver, mdOptions?: ModalOptions) {\n    this.view = this.containerModal.view;\n    return new Promise((resolve) => {\n      this.setComponentModal(component, factoryResolver, null, null, mdOptions);\n      this.handleCallbackModal(resolve);\n    });\n  }\n\n  createModal(component: Type<any>, factoryOrConfig: ComponentFactoryResolver,\n              identifier: string = '', properties?: {}, parentElement: ElementRef = null, mdOptions?: ModalOptions) {\n    this.view = this.containerModal.view;\n    return new Promise((resolve) => {\n      this.setComponentModal(component, factoryOrConfig, identifier, parentElement, mdOptions, properties);\n      this.handleCallbackModal(resolve);\n    });\n  }\n\n  createSmartFormModal(component: Type<any>, formConfig: ModalFormConfig, mdOptions?: ModalOptions) {\n    this.view = this.containerModal.view;\n    this.modalConfiguration = Object.assign(new SmartFormConfiguration(), formConfig);\n    return new Promise((resolve) => {\n      this.setComponentModal(component, this.modalConfiguration, null, null, mdOptions);\n      this.handleCallbackModal(resolve);\n    });\n  }\n\n  private handleCallbackModal(resolve) {\n    if (this.instanceComponent) {\n      this.instanceComponent.eventCallback.subscribe((value) => {\n        resolve(value);\n      });\n    }\n  }\n\n  private isConfigSmartForm(config) {\n    return config instanceof SmartFormConfiguration;\n  }\n\n  private setInjectedComponent(factory, component) {\n    const factoryInject = factory.resolveComponentFactory(component);\n    this.componentInjected = (<TlModal>this.component.instance).body.createComponent(factoryInject);\n  }\n\n  private createComponentWrapper(factory: ComponentFactoryResolver) {\n    const componentFactory = factory.resolveComponentFactory(TlModal);\n    this.component = this.view.createComponent(componentFactory);\n    (<TlModal>this.component.instance).setServiceControl(this);\n    (<TlModal>this.component.instance).setComponentRef(this.component);\n    this.reallocateComponent();\n  }\n\n  private handleSmartFormTitle(config) {\n    if (this.isConfigSmartForm(config)) {\n      if ((<SmartFormConfiguration>this.instanceComponent.smartForm).titleByAction) {\n        const isActionInsert = (<SmartFormConfiguration>this.instanceComponent.smartForm).isInsertAction();\n        this.replaceTitleModal(isActionInsert ? this.i18nService.getLocale().Modal.includingMessage :\n          this.i18nService.getLocale().Modal.updatingMessage);\n      }\n    }\n  }\n\n  private replaceTitleModal(value: string) {\n    this.component.instance.title = `${value} ${this.component.instance.title}`;\n  }\n\n  private setModalOptions(mdOptions: ModalOptions) {\n    this.modalOptions = null;\n    this.modalOptions = Reflect.getOwnMetadata('annotations',\n      Object.getPrototypeOf(this.componentInjected.instance).constructor);\n    this.modalOptions = Object.assign(this.modalOptions[0], mdOptions);\n  }\n\n  private setModalProperties(properties) {\n    if (properties) {\n      Object.keys(properties).forEach( (value, index) => {\n        (this.componentInjected.instance)[value] = properties[value];\n      });\n    }\n  }\n\n  private setComponentWrapperProperties(config, identifier, parentElement) {\n    (<TlModal>this.component.instance).setOptions(this.modalOptions);\n    (<TlModal>this.component.instance).setIdentifier(this.isConfigSmartForm(config) ? config['identifier'] : identifier);\n    (<TlModal>this.component.instance).setParentElement(this.isConfigSmartForm(config) ? config['parentElement'] : parentElement);\n  }\n\n\n  private setInstanceComponent(config: ComponentFactoryResolver | SmartFormConfiguration) {\n    this.instanceComponent = {\n      id: this.component.instance.id,\n      modal: this.component,\n      componentInjected: this.componentInjected,\n      modalOptions: this.modalOptions,\n      eventCallback: new Subject(),\n      smartForm: config\n    };\n  }\n\n  private isModalExists(config) {\n    return this.componentList.filter((value, index, array) => config.identifier === value.id)[0];\n  }\n\n  private isUniqueSmartForm(config) {\n    return config.unique;\n  }\n\n  private validateUnique(config) {\n    return this.isConfigSmartForm(config) && this.isModalExists(config) && this.isUniqueSmartForm(config);\n  }\n\n  private isSmartFormUpdateDeleteAction(config) {\n    return this.isConfigSmartForm(config) && (this.isUpdateAction(config) || this.isDeleteAction(config));\n  }\n\n  private setComponentModal(component: Type<any>,\n                            config: SmartFormConfiguration | ComponentFactoryResolver,\n                            identifier?, parentElement?, mdOptions?: ModalOptions, properties?) {\n\n    const factory = this.isConfigSmartForm(config) ? config['factory'] : config;\n    if (this.isSmartFormUpdateDeleteAction(config) && !this.validateDataFormUpdate(config as SmartFormConfiguration)) {\n      return;\n    }\n\n    if (this.validateUnique(config) && !this.isDeleteAction(config)) {\n      this.showModal(this.isModalExists(config).modal);\n      return;\n    }\n\n    this.createComponentWrapper(factory);\n    this.setInitialZIndex();\n    this.setInjectedComponent(factory, component);\n    this.setModalOptions(mdOptions);\n    this.setModalProperties(properties);\n    this.handleBackDrop(factory);\n    this.setComponentWrapperProperties(config, identifier, parentElement);\n    this.setInstanceComponent(config);\n    this.setActiveModal(this.component);\n    this.addNewComponent();\n    this.handleSmartFormTitle(config);\n    this.emitChangeListModals();\n    this.handleDeleteSmartForm(config);\n  }\n\n  private addNewComponent() {\n    this.componentList.push(this.instanceComponent);\n  }\n\n  private emitChangeListModals() {\n    this.changeModal.next();\n  }\n\n  private handleDeleteSmartForm(config: SmartFormConfiguration | ComponentFactoryResolver) {\n    if (this.isConfigSmartForm(config)) {\n      if (this.isDeleteAction(config)) {\n        this.confirmDelete(this.instanceComponent, config as SmartFormConfiguration);\n      }\n    } else {\n      if (this.instanceComponent.componentInjected.instance.constructor.name === 'TlDialogConfirmation') {\n        if (this.referenceSmartForm) {\n          this.removeOfList(this.referenceSmartForm.id);\n          this.view.remove(this.view.indexOf(this.referenceSmartForm.modal.hostView));\n        }\n      }\n    }\n  }\n\n  private isUpdateAction(component) {\n    return component.executeAction === ActionsModal.UPDATE;\n  }\n\n  private validateDataFormUpdate(config: SmartFormConfiguration) {\n    if (!config['dataForm']) {\n      this.createModalDialog(window['TlDialogInfo'], config['factory'], { title: config['recordNotFoundMessage']});\n      this.componentInjected.instance.message = config['recordNotFoundMessage'];\n      return false;\n    }\n    return true;\n  }\n\n  close(id ?: string) {\n    if (id) {\n      const itemList = this.getComponentById(id);\n      if (itemList) {\n        this.removeOfView(itemList.modal);\n        this.removeBackdrop(itemList.modal);\n        this.removeOfList(id);\n      }\n      this.changeModal.next();\n      this.handleActiveWindow();\n      return;\n    }\n    if (this.selectedModal) {\n      this.removeOfView(this.selectedModal.modal);\n      this.removeBackdrop(this.selectedModal.modal);\n      this.removeOfList(this.selectedModal.id);\n      this.changeModal.next();\n      this.handleActiveWindow();\n    }\n  }\n\n  minimizeAll() {\n    this.componentList.forEach((item: ModalInstance) => {\n      this.minimize(item.modal);\n    });\n  }\n\n  private removeOfView(modal) {\n    this.view.remove(this.view.indexOf(modal.hostView));\n    this.view.element.nativeElement.removeChild(modal.location.nativeElement);\n  }\n\n  closeAll() {\n    if (this.view) {\n      this.view.clear();\n      this.componentList = [];\n      this.destroyBackdrop();\n    }\n  }\n\n  private removeOfList(id: string) {\n    this.componentList = this.componentList.filter((item) => item.id !== id);\n  }\n\n  getModal(identifier: string) {\n    this.selectedModal = this.componentList.filter((item) => item.id === identifier)[0];\n    return this;\n  }\n\n  private handleBackDrop(factory: ComponentFactoryResolver) {\n    if (this.modalOptions.backdrop) {\n      this.createBackdrop(TlBackdrop, factory);\n    }\n  }\n\n  private setInitialZIndex() {\n    lastZIndex++;\n    (<TlModal>this.component.instance).modal.nativeElement.style.zIndex = lastZIndex;\n  }\n\n  private setZIndex(componentRef: ComponentRef<TlModal>) {\n    const element = componentRef.instance.getElementModal();\n    const zIndex = this.getZIndexModals();\n    const maxIndex = [];\n    for (let index = 0; index < zIndex.length; index++) {\n      const item = parseInt(zIndex[index], 10);\n      maxIndex.push(item);\n    }\n    lastZIndex = this.getHighestZIndexModals(this.getZIndexModals());\n    if (element.nativeElement.style.zIndex < Math.max(...maxIndex)) {\n      element.nativeElement.style.zIndex = lastZIndex + 10;\n      this.updateZIndexBackdrop(lastZIndex + 5, this.hasBackdrop(componentRef));\n    }\n  }\n\n  private updateZIndexBackdrop(index: number, hasBackdrop: boolean) {\n    if (this.backdrop && hasBackdrop) {\n      (<TlBackdrop>this.backdrop.instance).setBackdropOptions({'zIndex': index});\n    }\n  }\n\n  private getZIndexModals() {\n    const maxZIndex = [];\n    const modals = this.getVisibleModals();\n    for (let index = 0; index < modals.length; index++) {\n      const element: any = modals[index];\n      maxZIndex.push(element.firstElementChild.style.zIndex);\n    }\n    return maxZIndex;\n  }\n\n  private getHighestZIndexModals(arrayModals: Array<any>) {\n    return Math.max.apply(Math, arrayModals);\n  }\n\n  hasBackdrop(componentRef) {\n    const modalOptions = this.getCurrentModalOptions(componentRef);\n    if (modalOptions.length > 0) {\n      return modalOptions[0].modalOptions.backdrop;\n    }\n    return false;\n  }\n\n  setActiveModal(componentRef: ComponentRef<any>) {\n    this.setZIndex(componentRef);\n    this.activeModal = componentRef;\n    this.currentModalService.setCurrentModal({activeModal: this.activeModal})\n  }\n\n  getCurrentModalOptions(compRef: ComponentRef<any>) {\n    return this.componentList.filter((item, index, array) => item.modal === compRef);\n  }\n\n  private createBackdrop(backdrop: Type<any>, factoryResolver: ComponentFactoryResolver) {\n    if (!this.backdrop) {\n      this.view = this.containerModal.view;\n      const backdropFactory = factoryResolver.resolveComponentFactory(backdrop);\n      this.backdrop = this.view.createComponent(backdropFactory);\n      (<TlBackdrop>this.backdrop.instance).setBackdropOptions({'zIndex': lastZIndex - 1});\n      this.reallocateBackdrop();\n    }\n  }\n\n  private reallocateComponent() {\n    this.view.element.nativeElement.insertAdjacentElement('afterbegin', (this.component.location.nativeElement));\n  }\n\n  private reallocateBackdrop() {\n    this.view.element.nativeElement.insertAdjacentElement('afterbegin', (<TlBackdrop>this.backdrop.instance).backdrop.nativeElement);\n  }\n\n  showModal(item: ComponentRef<any>) {\n    lastZIndex++;\n    item.location.nativeElement.firstElementChild['style'].zIndex = lastZIndex;\n    item.instance.element.nativeElement.style.display = 'block';\n    this.handleShowBackdrop(this.hasBackdrop(item));\n    this.setActiveModal(item);\n    this.modalShow.next();\n  }\n\n  minimize(component: ComponentRef<any>) {\n    component.instance.element.nativeElement.style.display = 'none';\n    this.handleHideBackdrop(this.hasBackdrop(component));\n    this.handleActiveWindow();\n  }\n\n  private getVisibleHighestZIndex() {\n    return this.getHighestZIndexModals(this.getZIndexModals());\n  }\n\n  private handleActiveWindow() {\n    const highest = this.getVisibleHighestZIndex();\n    this.componentList.forEach((value) => {\n      if (this.visibleModals.length === 0) {\n        this.hideBackdrop();\n        return this.activeModal = null;\n      }\n      if (Number(value.modal.instance.modal.nativeElement.style.zIndex) === Number(highest)) {\n        return this.setActiveModal(value.modal);\n      }\n    });\n    this.handleResetIndex();\n  }\n\n  handleResetIndex() {\n    if (this.componentList.length === 0) {\n      this.resetZIndex();\n    }\n  }\n\n  private resetZIndex() {\n    lastZIndex = 500;\n  }\n\n  hideBackdrop() {\n    if (this.backdrop) {\n      this.backdrop.instance.hideBackdrop();\n    }\n  }\n\n  private handleHideBackdrop(hasBackdrop: boolean) {\n    if (this.backdrop && hasBackdrop) {\n      this.backdrop.instance.hideBackdrop();\n    }\n  }\n\n  private handleShowBackdrop(hasBackdrop: boolean) {\n    if (this.backdrop && hasBackdrop) {\n      this.backdrop.instance.showBackdrop();\n    }\n  }\n\n  private getVisibleModals() {\n    this.visibleModals = [];\n    const modals = document.querySelectorAll('tl-modal');\n    for (let index = 0; index < modals.length; index++) {\n      const element: any = modals[index];\n      if (element.style.display !== 'none') {\n        this.visibleModals.push(modals[index]);\n      }\n    }\n    return this.visibleModals;\n  }\n\n  private removeBackdrop(compRef: ComponentRef<any>) {\n    if (this.backdrop && this.hasBackdrop(compRef)) {\n      this.destroyBackdrop();\n    }\n  }\n\n  private destroyBackdrop() {\n    if (this.backdrop) {\n      this.backdrop.destroy();\n      this.view.element.nativeElement.removeChild(this.backdrop.location.nativeElement);\n      this.backdrop = null;\n    }\n  }\n\n  private getComponentById(id: string) {\n    return this.componentList.filter((item) => item.id === id)[0];\n  }\n\n  execCallBack(result: any, id: string): Promise<void> {\n    const componentModal = this.getComponentById(id);\n    return new Promise<void>((resolve) => {\n      if (this.isResultUndefined(result.mdResult)) {\n        return;\n      }\n      if (!(this.isMdResultEqualsOK(result.mdResult))) {\n        this.close(id);\n        this.handleRelativeDataSource(componentModal);\n      } else if (componentModal.modalOptions.closeOnOK) {\n        this.close(id);\n        this.handleRelativeDataSource(componentModal);\n      }\n      this.resultCallback(componentModal, result);\n      this.handleActiveWindow();\n      resolve();\n    });\n  }\n\n  private handleRelativeDataSource(componentModal: ModalInstance) {\n    if ( componentModal && componentModal.smartForm && componentModal.smartForm['relativeDataSource']) {\n      componentModal.smartForm['relativeDataSource'].setFocus();\n    }\n  }\n\n  private resultCallback(component, result) {\n    if (component && result) {\n      component.eventCallback.next(result);\n      this.handleSmartFormCallback(component, result);\n    }\n  }\n\n  private confirmDelete(component: ModalInstance, config: SmartFormConfiguration) {\n    if (component.smartForm['executeAction'] === ActionsModal.DELETE) {\n      this.referenceSmartForm = component;\n      this.createModalDialog(window['TlDialogConfirmation'], this.referenceSmartForm.smartForm['factory'],\n        { title: this.referenceSmartForm.smartForm['deleteTitleConfirmation'] }).then((value: any) => {\n        if (value.mdResult === ModalResult.MRYES) {\n          this.handleSmartFormCallback(this.referenceSmartForm,\n            {formResult: this.referenceSmartForm.smartForm['dataForm']});\n        } else {\n          this.handleRelativeDataSource(component);\n        }\n      });\n      this.componentInjected.instance.message = `${this.referenceSmartForm.smartForm['deleteConfirmationMessage']} ${this.getInfoRecord()}`;\n      return true;\n    }\n    return false;\n  }\n\n  private isDeleteAction(component) {\n    return component.executeAction === ActionsModal.DELETE;\n  }\n\n  private getDataForm() {\n    return this.referenceSmartForm.smartForm.dataForm;\n  }\n\n  private getRecordConfig() {\n    return this.referenceSmartForm.smartForm['recordConfig'];\n  }\n\n  getInfoRecord() {\n    const recordConfig = this.getRecordConfig();\n    if ( recordConfig.showOnDelete && recordConfig.keyFromDataForm ) {\n      return `<br><b>${  objectPath.get( this.getDataForm(), recordConfig.keyFromDataForm ) }</b>`;\n    }\n    return '';\n  }\n\n  private handleSmartFormCallback(component: ModalInstance, result) {\n    if (this.isResultNotAllowed(component.smartForm, result)\n      || !this.isConfigSmartForm(component.smartForm)) {\n      return;\n    }\n    if (this.mathActionsModal(component.smartForm).length === 0) {\n      throw Error('The Action provided is not valid or is undefined');\n    }\n    this.handleRelativeDataSource(component);\n    this.executeAction(component.smartForm, result);\n  }\n\n  private mathActionsModal(component: ComponentFactoryResolver | SmartFormConfiguration) {\n    return Object.keys(ActionsModal).filter((value, index, array) =>\n      ActionsModal[value] === component['executeAction']);\n  }\n\n  private executeAction(smartForm: ComponentFactoryResolver | SmartFormConfiguration, result) {\n    const actions = {\n      'I': () => {\n        smartForm['actions'].insertCall(result.formResult);\n      },\n      'U': () => {\n        smartForm['actions'].updateCall(result.formResult);\n      },\n      'D': () => {\n        smartForm['actions'].deleteCall(result.formResult);\n      },\n      'V': () => {\n        smartForm['actions'].viewCall();\n      }\n    };\n    return actions[smartForm['executeAction']]();\n  }\n\n  private isResultNotAllowed(smartForm: ComponentFactoryResolver | SmartFormConfiguration, result) {\n    return result.mdResult === ModalResult.MRCANCEL || result.mdResult === ModalResult.MRCLOSE\n      || !smartForm['actions'];\n  }\n\n  private isResultUndefined(result: ModalResult) {\n    return result === undefined;\n  }\n\n  private isMdResultEqualsOK(result: ModalResult) {\n    return Number(result) === Number(ModalResult.MROK);\n  }\n\n  ngOnDestroy() {\n    lastZIndex = 1;\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Input, OnInit, Directive, HostListener,\n} from '@angular/core';\nimport {ModalResult} from '../../core/enums/modal-result';\nimport {ModalService} from '../services/modal.service';\nimport {TlButton} from '../../button/button';\n\n@Directive({\n  selector: '[mdResult]'\n})\nexport class ModalResultDirective implements OnInit {\n\n  @Input('mdResult') mdResult: ModalResult;\n\n  @Input('formResult')\n  set formResult(value) {\n    this._formResult = value;\n  }\n\n  get formResult() {\n    return this._formResult;\n  }\n\n  private modalId: string;\n\n  private _formResult;\n\n  @HostListener('click')\n  onClick() {\n    if (!this.button.disabled) {\n      setTimeout(() => {\n        this.emitCallback();\n      }, 1);\n    }\n  }\n\n  @HostListener('keydown.enter')\n  onKeyDown() {\n    setTimeout(() => {\n      if (!this.button.disabled) {\n        this.emitCallback();\n      }\n    }, 1);\n  }\n\n  constructor(private modalService: ModalService, private button: TlButton) {\n  }\n\n  ngOnInit() {\n    this.modalId = this.modalService.instanceComponent.id;\n    this.button.modalContext = this.modalService.instanceComponent.modal;\n  }\n\n  emitCallback(): Promise<any> {\n    return new Promise(() => {\n      if (!this.mdResult || this.button.disabled) {\n        return;\n      }\n      this.modalService.execCallBack(this.getResult(), this.modalId);\n    });\n  }\n\n  getResult() {\n    if ( this.formResult ) {\n      return {\n        mdResult: ModalResult[this.mdResult],\n        formResult: this.formResult\n      };\n    }\n    return {mdResult: ModalResult[this.mdResult]};\n  }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ShortcutDirective } from './shortcut.directive';\nimport { ShortcutService } from './shortcut.service';\nimport { SHORTCUT_CONFIG, ShortcutConfig } from './shortcut.config';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n  ],\n  declarations: [\n    ShortcutDirective,\n  ],\n  exports: [\n    ShortcutDirective,\n  ],\n} )\nexport class ShortcutModule {\n  static forRoot( config?: ShortcutConfig ): ModuleWithProviders<ShortcutModule> {\n    return {\n      ngModule: ShortcutModule,\n      providers: [ {\n        provide: SHORTCUT_CONFIG,\n        useValue: config,\n      },\n        ShortcutService\n      ]\n    };\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlModal } from './modal';\nimport { TlBackdrop } from '../core/components/backdrop/backdrop';\nimport { LimitStringPipe } from '../core/helper/limitstring.pipe';\nimport { BackdropModule } from '../core/components/backdrop/index';\nimport { IconsModule } from '../icons/index';\nimport { ModalResultDirective } from './directives/modal-result.directive';\nimport { ShortcutService } from '../shortcut/shortcut.service';\nimport { ShortcutModule } from '../shortcut/index';\nimport { ModalService } from './services/modal.service';\nimport { SidebarService } from './services/sidebar.service';\n\n@NgModule( {\n    imports: [\n      CommonModule,\n      BackdropModule,\n      ShortcutModule,\n      IconsModule,\n    ],\n    declarations: [\n      TlModal,\n      ModalResultDirective,\n      LimitStringPipe,\n    ],\n    exports: [\n      TlModal,\n      ModalResultDirective,\n      LimitStringPipe\n    ]\n} )\nexport class ModalModule {\n  static forRoot(): ModuleWithProviders<ModalModule> {\n    return {\n      ngModule: ModalModule,\n      providers: [\n        ModalService,\n        ShortcutService,\n        SidebarService\n      ],\n    };\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlButton } from './button';\nimport { ModalModule } from '../modal/index';\nimport { MiscModule } from '../misc/index';\nimport { IconsModule } from '../icons/index';\nimport { LoaderModule } from '../loader/index';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        MiscModule,\n        ModalModule,\n        IconsModule,\n        LoaderModule\n    ],\n    declarations: [\n        TlButton,\n    ],\n    exports: [\n        TlButton,\n    ]\n})\nexport class ButtonModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, Input, OnInit, Output, EventEmitter,\n} from '@angular/core';\n\n@Component( {\n    selector: 'tl-button-group-item',\n    templateUrl: './buttongroup-item.html',\n    styleUrls: [ './buttongroup-item.scss' ]\n} )\nexport class TlButtonGroupItem implements OnInit {\n\n  @Input() text = '';\n\n  @Input() iconBeforeText = '';\n\n  @Input() iconAfterText = '';\n\n  @Input() width = '120px';\n\n  @Input() disabled = null;\n\n  @Input() color = 'basic';\n\n  @Input() selected = false;\n\n  @Output() click = new EventEmitter();\n\n  ngOnInit() {}\n\n  emitClick(event) {\n    this.click.emit(event);\n  }\n\n}\n","","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, ContentChildren, QueryList,\n  Input,\n  AfterContentInit, Output, EventEmitter,\n} from '@angular/core';\n\nimport { TlButtonGroupItem } from './buttongroup-item';\n\n@Component( {\n  selector: 'tl-button-group',\n  templateUrl: './buttongroup.html',\n  styleUrls: [ './buttongroup.scss' ]\n} )\nexport class TlButtonGroup implements AfterContentInit {\n\n  @Input() multiSelect = false;\n\n  @Input() height = '30px';\n\n  @Input() fontSize = '0.9em';\n\n  @Input() useSelected = true;\n\n  @Output() itemSelect: EventEmitter<Object> = new EventEmitter();\n\n  @ContentChildren( TlButtonGroupItem ) groupItems: QueryList<TlButtonGroupItem>;\n\n  constructor() {}\n\n  ngAfterContentInit() {\n    if ( this.useSelected ) {\n      const selectedTab = this.groupItems.find( tab => tab.selected );\n      if ( !selectedTab && this.groupItems.first ) {\n        this.groupItems.first.selected = true;\n      }\n    }\n  }\n\n  selectButtonItem( groupItem: TlButtonGroupItem, event ) {\n    groupItem.selected = !groupItem.selected;\n    if ( !this.multiSelect ) {\n      this.groupItems.forEach( item => {\n        if ( item !== groupItem ) {\n          item.selected = false;\n        }\n      } );\n    }\n    this.itemSelect.emit(this.groupItems.filter( item => item.selected));\n    groupItem.emitClick(event);\n  }\n\n  get groupContext() {\n    return {\n      groupItems: this.groupItems\n    };\n  }\n\n}\n","<div class=\"ui-wrapper-group\">\n  <div class=\"ui-group-box\">\n    <ng-template #group let-tabs=\"tabs\">\n      <button #tlbutton\n              *ngFor=\"let item of groupItems\"\n              [ngStyle]=\"{'min-width': item.width, 'height': height, 'line-height': height, 'font-size': fontSize, 'cursor': 'pointer'}\"\n              [ngClass]=\"{' disabled ': item.disabled, 'button-selected': item.selected && useSelected}\"\n              [class]=\"'tl-button ripple '+ item.color\"\n              (click)=\"selectButtonItem(item, $event)\"\n              [disabled]=\"item.disabled ? true : null\">\n        <span class=\"textButton\" [ngStyle]=\"{'line-height': item.height}\">\n          <tl-icon *ngIf=\"item.iconBeforeText\">{{ item.iconBeforeText }}</tl-icon>\n            {{item.text}}\n          <tl-icon *ngIf=\"item.iconAfterText\" class=\"iconAfterText\">{{ item.iconAfterText }}</tl-icon>\n        </span>\n      </button>\n    </ng-template>\n    <ng-container *ngTemplateOutlet=\"group; context: groupContext\"></ng-container>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlButtonGroup } from './buttongroup';\nimport { TlButtonGroupItem } from './buttongroup-item';\n\nimport { ButtonModule } from '../button/index';\nimport { IconsModule } from '../icons/index';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ButtonModule,\n        IconsModule\n    ],\n    declarations: [\n        TlButtonGroup,\n        TlButtonGroupItem\n    ],\n    exports: [\n        TlButtonGroup,\n        TlButtonGroupItem\n    ]\n})\nexport class ButtonGroupModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n  selector: 'tl-card',\n  templateUrl: './card.html',\n  styleUrls: ['./card.scss'],\n})\nexport class TlCard implements OnInit {\n\n  @Input() color = 'basic';\n\n  constructor() {}\n\n  ngOnInit() {}\n\n}\n","<div [class]=\"'ui-wrapper-card '+ color\">\n  <ng-content></ng-content>\n</div>\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { Component } from '@angular/core';\n\n @Component({\n   selector: 'tl-card-body',\n   templateUrl: './card-body.html',\n   styleUrls: ['./card-body.scss'],\n })\n export class TlCardBody {\n\n   constructor() {}\n\n }\n","<div class=\"ui-card-body\">\n  <ng-content></ng-content>\n</div>\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { Component } from '@angular/core';\n\n @Component({\n   selector: 'tl-card-header',\n   templateUrl: './card-header.html',\n   styleUrls: ['./card-header.scss'],\n })\n export class TlCardHeader {\n\n   constructor() {}\n\n }\n","<div class=\"ui-card-header\">\n  <ng-content></ng-content>\n</div>\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { Component } from '@angular/core';\n\n @Component({\n   selector: 'tl-card-footer',\n   templateUrl: './card-footer.html',\n   styleUrls: ['./card-footer.scss'],\n })\n export class TlCardFooter {\n\n   constructor() {}\n\n }\n","<div class=\"ui-card-footer\">\n  <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlCard } from './card';\nimport { IconsModule } from '../icons/index';\nimport { TlCardBody } from './parts/card-body/card-body';\nimport { TlCardHeader } from './parts/card-header/card-header';\nimport { TlCardFooter } from './parts/card-footer/card-footer';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    IconsModule,\n    FormsModule\n  ],\n  declarations: [\n    TlCard,\n    TlCardBody,\n    TlCardFooter,\n    TlCardHeader\n  ],\n  exports: [\n    TlCard,\n    TlCardHeader,\n    TlCardFooter,\n    TlCardBody\n  ]\n})\nexport class CardModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, Input, ViewChild, Output, EventEmitter, OnInit,\n  SimpleChanges, OnChanges, Optional, Self\n} from '@angular/core';\n\nimport { NgControl } from '@angular/forms';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\n\n@Component( {\n  selector: 'tl-checkbox',\n  templateUrl: './checkbox.html',\n  styleUrls: [ './checkbox.scss' ]\n} )\nexport class TlCheckBox extends ValueAccessorBase<boolean> implements OnInit, OnChanges {\n\n  @Input('checked')\n  set checked( value: boolean ) {\n    this._checked = value;\n    this.value = value;\n  }\n\n  get checked() {\n    return this._checked;\n  }\n\n  @Input() label = '';\n\n  @Input() tabindex = '0';\n\n  @Input() disabled = null;\n\n  @Input() color = 'basic';\n\n  @Input() indeterminate = false;\n\n  @Input() labelWidth = 'auto';\n\n  @ViewChild( 'checkbox', {static: true}  ) checkbox;\n\n  @Output() checkBox: EventEmitter<any> = new EventEmitter();\n\n  @Output() focusBox: EventEmitter<any> = new EventEmitter();\n\n  private _checked = false;\n\n  constructor(@Optional() @Self() public ngControl: NgControl) {\n    super();\n    this.setControl();\n  }\n\n  ngOnInit() {\n    if ( !this.label ) {\n      throw new EvalError( 'The [label] property is required!' );\n    }\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  check( boolean ) {\n    if ( this.checkbox.nativeElement.indeterminate ) {\n      this.checkbox.nativeElement.indeterminate = false;\n      this.value = true;\n      this.emitEvent();\n      return;\n    }\n    if ( !this.disabled ) {\n      this.value = !boolean;\n      this.emitEvent();\n    }\n  }\n\n  emitEvent() {\n    this.checkBox.emit( this.value );\n  }\n\n  focusCheckBox() {\n    this.focusBox.emit( this.value );\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {\n    if ( changes[ 'indeterminate' ] ) {\n      this.checkbox.nativeElement.indeterminate = changes[ 'indeterminate' ].currentValue;\n    }\n  }\n\n}\n\n","<div [class]=\"'check-container '+ color\">\n  <input #checkbox\n         class=\"ui-check-input\"\n         type=\"checkbox\"\n         #model=\"ngModel\"\n         (change)=\"emitEvent()\"\n         [checked]=\"value\"\n         [attr.disabled]=\"disabled\"\n         [tabindex]=\"tabindex\"\n         [(ngModel)]=\"value\">\n  <label class=\"cbx\" (click)=\"check(value)\">\n    <span tabindex=\"-1\" (focus)=\"focusCheckBox()\" (keydown.space)=\"$event.preventDefault(); check(value)\">\n      <svg width=\"12px\" height=\"10px\" viewBox=\"0 0 12 10\" *ngIf=\"!checkbox.indeterminate\">\n        <polyline points=\"1.5 6 4.5 9 10.5 1\"></polyline>\n      </svg>\n      <svg width=\"12px\" height=\"10px\" *ngIf=\"checkbox.indeterminate\" style=\"stroke: none\">\n        <rect width=\"16\" height=\"2\" y=\"4\" style=\"fill:white;\"></rect>\n      </svg>\n    </span>\n    <span class=\"checkbox-label\" [style.width]=\"labelWidth\">{{label}}</span>\n  </label>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlCheckBox } from './checkbox';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule\n    ],\n    declarations: [\n        TlCheckBox\n    ],\n    exports: [\n        TlCheckBox\n    ],\n})\nexport class CheckBoxModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { TlItemSelectedDirective } from '../../core/directives/itemSelected/item-selected.directive';\n\nexport class ListBase {\n  private _scrollTop = 0;\n\n  set scrollTop( value: number ) {\n    this._scrollTop = value;\n  }\n\n  get scrollTop() {\n    return this._scrollTop;\n  }\n\n  private _itemsByRowSet = 0;\n\n  set itemsByRowSet( value: number ) {\n    this._itemsByRowSet = value;\n  }\n\n  get itemsByRowSet() {\n    return this._itemsByRowSet;\n  }\n\n  private _itemsByScroll = 0;\n\n  set itemsByScroll( value: number ) {\n    this._itemsByScroll = value;\n  }\n\n  get itemsByScroll() {\n    return this._itemsByScroll;\n  }\n\n  private _scrollingByArrows = false;\n\n  set scrollingByArrows( value: boolean ) {\n    this._scrollingByArrows = value;\n  }\n\n  get scrollingByArrows() {\n    return this._scrollingByArrows;\n  }\n\n  private _lastScrollTop = 0;\n\n  set lastScrollTop( value: number ) {\n    this._lastScrollTop = value;\n  }\n\n  get lastScrollTop() {\n    return this._lastScrollTop;\n  }\n\n  private _container: HTMLElement;\n\n  set container( value: HTMLElement ) {\n    this._container = value;\n  }\n\n  get container() {\n    return this._container;\n  }\n\n  private _activeItem: TlItemSelectedDirective;\n\n  set activeItem( value: TlItemSelectedDirective ) {\n    this._activeItem = value;\n  }\n\n  get activeItem() {\n    return this._activeItem;\n  }\n\n  private _listKeyManager: ActiveDescendantKeyManager<TlItemSelectedDirective>;\n\n  set listKeyManager( value: ActiveDescendantKeyManager<TlItemSelectedDirective> ) {\n    this._listKeyManager = value;\n  }\n\n  get listKeyManager() {\n    return this._listKeyManager;\n  }\n\n  private _isScrolling = null;\n\n  set isScrolling(value: any ) {\n    this._isScrolling = value;\n  }\n\n  get isScrolling() {\n    return this._isScrolling;\n  }\n\n  constructor() {\n  }\n\n}\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { Component, TemplateRef, Input } from '@angular/core';\n\n @Component( {\n   selector: 'tl-listbox-template',\n   template: `\n     <ng-container *ngTemplateOutlet=\"template; context: listContext\"></ng-container>\n   `,\n } )\n export class TlListBoxTemplate {\n\n   @Input() template: TemplateRef<any>;\n\n   @Input() item: any;\n\n   @Input() index: boolean;\n\n   constructor() {}\n\n   get listContext() {\n     return { item: this.item, index: this.index };\n   }\n }\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnDestroy,\n  Output,\n  QueryList,\n  Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild,\n  ViewChildren,\n} from '@angular/core';\nimport {ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\nimport {ListBase} from './classes/list-base';\nimport {KeyEvent} from '../core/enums/key-events';\nimport {Subscription} from 'rxjs';\nimport {UntypedFormControl} from '@angular/forms';\nimport {DataSourceList} from '../core/classes/datasource-list';\nimport {TlInput} from '../input/input';\nimport {I18nService} from '../i18n/i18n.service';\nimport {TlItemSelectedDirective} from '../core/directives/itemSelected/item-selected.directive';\nimport {scrollIntoView} from '../core/helper/scrollIntoView';\n\n@Component({\n  selector: 'tl-listbox',\n  templateUrl: './listbox.html',\n  styleUrls: ['./listbox.scss'],\n})\nexport class TlListBox extends ListBase implements AfterViewInit, OnDestroy, OnChanges {\n\n  @Input('data')\n  set data(value) {\n    this._data = value;\n    this.setUpData(value);\n  }\n\n  get data() {\n    return this._data;\n  }\n\n  @Input() rowHeight = 40;\n\n  @Input() template: TemplateRef<any>;\n\n  @Input() templateNotFound: TemplateRef<any>;\n\n  @Input('inputElement')\n  set inputElement(value) {\n    this._inputElement = value;\n    if (value instanceof TlInput) {\n      this._inputElement = value.getNativeInput();\n    }\n  }\n\n  get inputElement() {\n    return this._inputElement;\n  }\n\n  @Input() keyText = 'description';\n\n  @Input() color = 'basic';\n\n  @Input() loading = true;\n\n  @Input() searchControl: UntypedFormControl;\n\n  @Input() height = '200px';\n\n  @Input() debounceTime = 200;\n\n  @Input() searchBy = null;\n\n  @Input() nothingFoundMessage = this.i18nService.getLocale().Listbox.notFoundText;\n\n  @Input() totalLength = 100;\n\n  @Input() rowsPage = 10;\n\n  @Input() selectOnInitialize = true;\n\n  @Input() lazyMode = false;\n\n  @Output() clickItem: EventEmitter<any> = new EventEmitter();\n\n  @Output() selectItem: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild(CdkVirtualScrollViewport, {static: true} ) cdkVirtualScroll: CdkVirtualScrollViewport;\n\n  @ViewChildren(TlItemSelectedDirective) listItems: QueryList<TlItemSelectedDirective>;\n\n  private subscription = new Subscription();\n\n  private _data = [];\n\n  private _inputElement;\n\n  public dataSource: DataSourceList;\n\n  public nothingFound = false;\n\n  constructor(private renderer: Renderer2,\n              private change: ChangeDetectorRef,\n              private i18nService: I18nService) {\n    super();\n  }\n\n  ngAfterViewInit() {\n    this.listKeyManager = new ActiveDescendantKeyManager(this.listItems);\n    this.listKeyManager.withTypeAhead();\n    this.initializeListBox();\n    this.handleListeners();\n  }\n\n  private handleListeners() {\n    this.subscription.add(this.renderer.listen(this.getElementTarget(), 'keydown', ($event) => {\n      const event = {\n        [KeyEvent.ARROWDOWN]: () => this.handleKeyArrowDown($event),\n        [KeyEvent.ARROWUP]: () => this.handleKeyArrowUp($event),\n        [KeyEvent.ENTER]: () => this.onKeyEnter()\n      };\n      if (event[$event.code]) {\n        event[$event.code]();\n      }\n    }));\n  }\n\n  private getElementTarget() {\n    return this.inputElement ? this.inputElement : this.cdkVirtualScroll.elementRef.nativeElement;\n  }\n\n  private initializeListBox() {\n    if ( this.selectOnInitialize ) {\n      this.setSelected(this.listItems.toArray()[0]);\n    }\n    this.setItemsByRowSet();\n    this.setItemsByScroll();\n    this.setContainer();\n  }\n\n  private setScrollTop() {\n    this.scrollTop = this.cdkVirtualScroll.elementRef.nativeElement.scrollTop;\n  }\n\n  select(index: number) {\n    this.listKeyManager.setActiveItem( index );\n    if (this.listKeyManager.activeItem) {\n      this.selectItem.emit((this.listKeyManager.activeItem as TlItemSelectedDirective).itemSelected);\n    }\n  }\n\n  setSelected(item: TlItemSelectedDirective) {\n    this.listKeyManager.setActiveItem(item);\n    this.setInputFocus();\n  }\n\n  onKeyEnter() {\n    this.selectItem.emit((this.listKeyManager.activeItem as TlItemSelectedDirective).itemSelected);\n  }\n\n  onClickItem(item: any) {\n    this.clickItem.emit(item);\n  }\n\n  private setItemsByRowSet() {\n    this.itemsByRowSet = Math.floor(this.cdkVirtualScroll.elementRef.nativeElement.offsetHeight / this.rowHeight);\n  }\n\n  private setItemsByScroll() {\n    this.itemsByScroll = Math.floor(this.cdkVirtualScroll.elementRef.nativeElement.scrollTop / this.rowHeight);\n  }\n\n  private setContainer() {\n    this.container = this.cdkVirtualScroll.elementRef.nativeElement;\n  }\n\n  private setScrollVirtual() {\n    this.cdkVirtualScroll.elementRef.nativeElement.scrollTop = 0;\n  }\n\n  private setUpData(value?) {\n    if ( value && value.length > 0) {\n      this.dataSource = new DataSourceList({\n        dataSource: value || this.data,\n        pageSize: this.rowsPage,\n        totalLength: this.totalLength,\n        lazyMode: this.lazyMode\n      });\n      this.loading = false;\n      this.nothingFound = false;\n      this.dataSource.dataStream.next(value || this.data);\n    } else {\n      this.loading = false;\n      this.nothingFound = true;\n      if (this.dataSource) {\n        this.dataSource.dataStream.next([]);\n      }\n    }\n  }\n\n  onScroll() {\n    if (!this.scrollingByArrows) {\n      clearTimeout(this.isScrolling);\n      this.isScrolling = setTimeout(() => {\n        this.setItemsByScroll();\n        this.setScrollTop();\n        this.isScrollDown() ? this.setScrollBottomItem() : this.setScrollTopItem();\n        this.setLastScrollTop();\n      }, 66);\n    }\n  }\n\n  onWheel() {\n    this.scrollingByArrows = false;\n  }\n\n  onFilter($event) {\n    if ($event) {\n      this.setScrollVirtual();\n      this.setUpData($event);\n      return;\n    }\n    this.loading = false;\n    this.nothingFound = true;\n    this.dataSource.dataStream.next([]);\n  }\n\n  private getItemByIndex(index: number) {\n    return this.listItems.filter((item) => item.indexSelected === index)[0];\n  }\n\n  private setScrollTopItem() {\n    this.setSelected(this.getItemByIndex(this.itemsByScroll));\n  }\n\n  private setLastScrollTop() {\n    this.lastScrollTop = this.scrollTop;\n  }\n\n  private setScrollBottomItem() {\n    const index = Math.round(this.itemsByRowSet + this.itemsByScroll) - 1;\n    this.setSelected(this.getItemByIndex(index));\n  }\n\n  private setInputFocus() {\n    if ( this.inputElement ) {\n      this.inputElement.focus();\n    }\n  }\n\n  private setActiveItem() {\n    this.activeItem = this.listKeyManager.activeItem as TlItemSelectedDirective;\n  }\n\n  handleKeyArrowUp($event) {\n    this.scrollingByArrows = true;\n    this.listKeyManager.onKeydown($event);\n    this.setActiveItem();\n    scrollIntoView(this.activeItem.element.nativeElement);\n    this.change.detectChanges();\n  }\n\n  handleKeyArrowDown($event) {\n    this.scrollingByArrows = true;\n    this.listKeyManager.onKeydown($event);\n    this.setActiveItem();\n    scrollIntoView(this.activeItem.element.nativeElement);\n    this.change.detectChanges();\n  }\n\n  private isScrollDown() {\n    return this.scrollTop > this.lastScrollTop;\n  }\n\n  ngOnChanges({data}: SimpleChanges) {\n    if ( data && !data.firstChange && data.currentValue.length === 0 ) {\n      this.loading = false;\n      this.nothingFound = true;\n      this.change.detectChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n    this.change.detach();\n  }\n\n}\n","<div class=\"ui-listbox-wrapper\" [style.height]=\"height\">\n  <div class=\"ui-emptylist\" *ngIf=\"loading || nothingFound\">\n    <div *ngIf=\"loading && !nothingFound\" class=\"ui-loading\" [style.width]=\"'50px'\" [style.height]=\"'50px'\">\n      <tl-loader></tl-loader>\n    </div>\n    <div *ngIf=\"nothingFound && !loading\" class=\"ui-notfound\">\n      <span class=\"message\">{{ nothingFoundMessage }}</span>\n      <ng-container *ngTemplateOutlet=\"templateNotFound\"></ng-container>\n    </div>\n  </div>\n  <cdk-virtual-scroll-viewport [itemSize]=\"rowHeight\" [class]=\"'ui-list-viewport ' + color\" tabindex=\"-1\"\n                               [style.height]=\"height\"\n                               (wheel)=\"onWheel()\"\n                               (scrolledIndexChange)=\"onScroll()\">\n    <tl-filter-container [searchTerm]=\"searchControl?.value\"\n                         [debounceTime]=\"debounceTime\"\n                         [source]=\"data\"\n                         [searchBy]=\"searchBy\"\n                         (filter)=\"onFilter($event)\">\n      <div [itemSelected]=\"item\" #select=\"selectItem\"\n           [ngStyle]=\"{ height: rowHeight + 'px' }\"\n           [indexSelected]=\"i\"\n           [style.padding]=\"!template ? '0 10px' : '0'\"\n           [attr.index]=\"i\"\n           *cdkVirtualFor=\"let item of dataSource; let i = index\"\n           (click)=\"setSelected(select); onClickItem(item)\"\n           class=\"ui-list-viewport-item\">\n        <div *ngIf=\"!template\">\n          {{ item[keyText] }}\n        </div>\n        <tl-listbox-template\n          [style.width]=\"'100%'\"\n          *ngIf=\"template\"\n          [template]=\"template\"\n          [item]=\"item\"\n          [index]=\"i\">\n        </tl-listbox-template>\n      </div>\n    </tl-filter-container>\n  </cdk-virtual-scroll-viewport>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlListBox } from './listbox';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { TlListBoxTemplate } from './components/listbox-template';\nimport { FilterContainerModule } from '../core/components/filter/filter-container.module';\nimport { BlockUIModule } from '../blockui/index';\nimport { ItemSelectedModule } from '../core/directives/itemSelected/item-selected.module';\nimport { LoaderModule } from '../loader/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ScrollingModule,\n    A11yModule,\n    BlockUIModule,\n    FilterContainerModule,\n    ItemSelectedModule,\n    LoaderModule\n  ],\n  declarations: [\n    TlListBox,\n    TlListBoxTemplate,\n  ],\n  exports: [\n    TlListBox\n  ]\n})\nexport class ListBoxModule {}\n","\n\n /*\n MIT License\n\n Copyright (c) 2017 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n export enum Status {\n   ONLINE = 'ONLINE',\n   OFFLINE = 'OFFLINE',\n   BUSY = 'BUSY'\n }\n","/*\n MIT License\n\n Copyright (c) 2017 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {Injectable} from '@angular/core';\nimport {ChatMessage} from '../interfaces/chat-message.interface';\nimport {Status} from '../enums/status.enum';\nimport {Subject} from 'rxjs';\nimport {ChatContact} from '../interfaces/chat-contact.interface';\n\n@Injectable()\nexport class ChatService {\n\n  private chatObject = {};\n\n  public appendAndRead = new Subject();\n\n  public changeStatus = new Subject();\n\n  public allMessages = new Subject();\n\n  public newMessages = new Subject();\n\n  public unreadMessages = new Subject();\n\n  constructor() {\n  }\n\n  loadMessages(messages: ChatMessage[], chatId: string, user: ChatContact) {\n    if (!this.existChat(chatId)) {\n      this.chatObject[chatId] = {messages: []};\n    }\n    if (messages.length > 0) {\n      this.chatObject[chatId].messages = messages;\n      this.allMessages.next(this.chatObject[chatId].messages);\n      this.unreadMessages.next(this.getUnreadMessages(this.chatObject[chatId].messages, user));\n    } else {\n      this.unreadMessages.next([]);\n    }\n  }\n\n  appendMessage(message: ChatMessage, user: ChatContact, chatId: string) {\n    if (this.existChat(chatId)) {\n      this.chatObject[chatId].messages = [...this.chatObject[chatId].messages, message];\n      this.allMessages.next(this.chatObject[chatId].messages);\n      if (message.from.id !== user.id) {\n        this.appendAndRead.next(message);\n        this.newMessages.next(this.hasMessages(this.chatObject[chatId].messages, user));\n        this.unreadMessages.next(this.getUnreadMessages(this.chatObject[chatId].messages, user));\n      }\n    }\n  }\n\n  readMessages(messages: ChatMessage[], user: ChatContact, chatId: string) {\n    if ( messages.length > 0 && this.isMessagesToUser(messages, user)) {\n      messages.forEach((val) => {\n        const index = this.chatObject[chatId || this.getFirstChat()].messages.findIndex((message) => message.id === val.id);\n        if (index >= 0) {\n          this.chatObject[chatId || this.getFirstChat()].messages[index].viewed = true;\n        }\n      });\n      setTimeout(() => {\n        this.allMessages.next(this.chatObject[chatId].messages);\n        this.newMessages.next(this.hasMessages(this.chatObject[chatId].messages, user));\n        this.unreadMessages.next(this.getUnreadMessages(this.chatObject[chatId].messages, user));\n      }, 500);\n    }\n  }\n\n  readAll(chatId: string) {\n    this.chatObject[chatId || this.getFirstChat()].messages.forEach((item: ChatMessage) => item.viewed = true);\n    this.allMessages.next(this.chatObject[chatId].messages);\n  }\n\n  setStatus(status: Status, chatId: string) {\n    this.changeStatus.next({status, chatId});\n  }\n\n  getAllMessages(chatId: string) {\n    if (this.existChat(chatId)) {\n      return this.chatObject[chatId].messages;\n    }\n    return [];\n  }\n\n  deleteChat(chatId: string) {\n    delete this.chatObject[chatId];\n  }\n\n  getUnreadMessages(messages, user: ChatContact) {\n    if (messages.length > 0) {\n      return messages.filter((message: ChatMessage) => {\n        if (message.from && message.to) {\n          return (!message.viewed) && (message.to.id === user.id);\n        }\n      });\n    }\n    return [];\n  }\n\n  private isMessagesToUser(messages: ChatMessage[], user: ChatContact) {\n    return messages.filter((message) => message.to.id === user.id).length > 0;\n  }\n\n  private existChat(chatId: string) {\n    return this.chatObject.hasOwnProperty(chatId);\n  }\n\n  private hasMessages(messages, user: ChatContact) {\n    return messages.filter((value) => {\n      if (value.to && user) {\n        return !value.viewed && (value.to.id === user.id);\n      }\n    }).length > 0;\n  }\n\n\n  private getFirstChat() {\n    const first = Object.keys(this.chatObject)[0];\n    return this.chatObject[first];\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2017 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { PipeTransform, Pipe } from '@angular/core';\nimport { ChatMessage } from '../interfaces/chat-message.interface';\n\n@Pipe( {\n  name: 'filterMessage'\n} )\nexport class TlMessageFilterPipe implements PipeTransform {\n\n  public groupMessages = [];\n\n  transform( messages: ChatMessage[] ): any {\n    this.groupMessages = [];\n    messages.forEach((value) => {\n      if ( !this.hasDateGroup( value.time ) ) {\n        this.groupMessages.push({\n          date: this.formatDate( value.time ),\n          messages: [value]\n        });\n      } else {\n        const index = this.findIndexByDate( this.formatDate( value.time ) );\n        this.groupMessages[index].messages = [ ...this.groupMessages[index].messages, value ];\n      }\n    });\n    return this.groupMessages;\n  }\n\n  findIndexByDate( date: number ) {\n    return this.groupMessages.findIndex((value, index, obj) => value.date === date);\n  }\n\n  hasDateGroup( date: Date) {\n    if (this.groupMessages.length === 0) {\n      return false;\n    }\n    return this.groupMessages.filter((value, index, array) =>\n      this.formatDate( new Date(value.date)) === this.formatDate(date)).length > 0;\n  }\n\n  formatDate( date: Date ) {\n    return new Date( date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0).getTime();\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  AfterViewInit,\n  Output,\n  Input,\n  EventEmitter,\n  OnInit,\n  ViewChild,\n  ElementRef,\n  OnDestroy,\n  ChangeDetectorRef,\n} from '@angular/core';\nimport {UntypedFormControl, Validators} from '@angular/forms';\nimport {ChatContact} from '../interfaces/chat-contact.interface';\nimport {Subscription} from 'rxjs';\nimport {ChatStatus} from '../interfaces/chat-status.interface';\nimport {DatePipe} from '@angular/common';\nimport {I18nService} from '../../i18n/i18n.service';\nimport {ChatService} from '../services/chat.service';\nimport {ChatMessage} from '../interfaces/chat-message.interface';\n\n@Component({\n  selector: 'tl-chat-content',\n  templateUrl: './chat-content.html',\n  styleUrls: ['./chat-content.scss'],\n})\nexport class TlChatContent implements AfterViewInit, OnInit, OnDestroy {\n\n  @Input() id: string;\n\n  @Input() maxHeight = '450px';\n\n  @Input() partner: ChatContact;\n\n  @Input() user: ChatContact;\n\n  @Input() loadingMessages = true;\n\n  @Input() chatStatus: ChatStatus = {\n    BUSY: '#ffc019',\n    ONLINE: '#66cc99',\n    OFFLINE: '#ff3100'\n  };\n\n  @Output() readMessage = new EventEmitter();\n\n  @Output() message: EventEmitter<{ value: string, time: Date }> = new EventEmitter();\n\n  @ViewChild('input', {static: true}) input: ElementRef;\n\n  @ViewChild('messageContent', {static: true}) messageContent: ElementRef;\n\n  public messages = [];\n\n  public smoothScroll = false;\n\n  private opened = false;\n\n  public control = new UntypedFormControl(null, Validators.required);\n\n  public datePipe = new DatePipe(this.i18nService.getLocale().locale);\n\n  public saySomething = this.i18nService.getLocale().ChatList.saySomething;\n\n  public loadingMessagesLabel = this.i18nService.getLocale().ChatList.loadingMessages;\n\n  private subscription = new Subscription();\n\n  private today = this.i18nService.getLocale().ChatList.today;\n\n  private yesterday = this.i18nService.getLocale().ChatList.yesterday;\n\n  constructor(private i18nService: I18nService,\n              private change: ChangeDetectorRef,\n              private chatService: ChatService) {\n    this.opened = true;\n  }\n\n  ngOnInit() {\n    this.messages = this.filterMessages(this.chatService.getAllMessages(this.id));\n    this.listenAppendMessage();\n    this.listenChangeMessages();\n  }\n\n  ngAfterViewInit() {\n    setTimeout(() => {\n      this.setInputFocus();\n      this.setScrollBottom();\n    });\n  }\n\n  listenAppendMessage() {\n    this.subscription.add(this.chatService.appendAndRead.subscribe((message) => {\n      this.smoothScroll = true;\n      this.readMessage.emit(message);\n      this.setScrollBottom();\n    }));\n  }\n\n  listenChangeMessages() {\n    this.subscription.add(this.chatService.allMessages.subscribe((messages: ChatMessage[]) => {\n      this.smoothScroll = true;\n      this.messages = this.filterMessages(messages);\n      this.loadingMessages = false;\n      this.setScrollBottom();\n      this.change.detectChanges();\n    }));\n  }\n\n  filterMessages(collection) {\n    return collection.filter((item: ChatMessage) => {\n        if (item.from && item.to) {\n          return (item.from.id === this.user.id) && (item.to.id === this.partner.id) ||\n            (item.from.id === this.partner.id) && (item.to.id === this.user.id);\n        }\n      }\n    ).sort((a, b) => {\n      return new Date(a.time).getTime() - new Date(b.time).getTime();\n    });\n  }\n\n  currentDate(date) {\n    const yesterday = new Date(new Date().setDate((new Date().getDate() - 1)));\n    if (this.getDate(date) === this.getDate()) {\n      return this.today;\n    } else if ((this.getDate(yesterday) === this.getDate(date))) {\n      return this.yesterday;\n    } else {\n      return this.datePipe.transform(new Date(date), 'longDate');\n    }\n  }\n\n  getDate(date = new Date()) {\n    const newDate = new Date(date);\n    return new Date(newDate.getFullYear(), newDate.getMonth(), newDate.getDate(), 0, 0, 0, 0).getTime();\n  }\n\n  trackByFn(index) {\n    return index;\n  }\n\n  setScrollBottom() {\n    setTimeout(() => {\n      this.messageContent.nativeElement.scrollTop =\n        (this.messageContent.nativeElement.scrollHeight - this.messageContent.nativeElement.clientHeight);\n    }, 200);\n  }\n\n  setInputFocus() {\n    this.input.nativeElement.focus();\n  }\n\n  sendMessage() {\n    if (this.control.value) {\n      this.message.emit({value: this.control.value, time: new Date()});\n      this.control.setValue(null);\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n\n","<div class=\"chat-content-wrapper\" [style.height]=\"'calc(' + maxHeight + ' - 35px)'\">\n\n  <div class=\"chat-messages-content\" [class.smooth]=\"smoothScroll\" #messageContent [style.height]=\"'calc(' + maxHeight + ' - 75px)'\">\n\n    <ng-container *ngIf=\"!loadingMessages; else loadMessagesTemplate\">\n      <ng-container *ngFor=\"let item of messages | filterMessage; trackBy:trackByFn\">\n          <div class=\"chat-time\">  {{ currentDate(item.date) }}</div>\n          <ng-container *ngFor=\"let msg of item.messages; trackBy:trackByFn\">\n\n            <ng-container *ngIf=\"msg?.from?.id === partner?.id\">\n              <ng-container *ngTemplateOutlet=\"partnerTemplate; context: { message: msg }\"></ng-container>\n            </ng-container>\n\n            <ng-container *ngIf=\"msg?.from?.id === user?.id\">\n              <ng-container *ngTemplateOutlet=\"userTemplate; context: { message: msg }\"></ng-container>\n            </ng-container>\n\n        </ng-container>\n      </ng-container>\n    </ng-container>\n  </div>\n\n  <div class=\"chat-type\">\n   <textarea [formControl]=\"control\" #input (keydown.enter)=\"$event.preventDefault(); sendMessage()\"\n             class=\"chat-input\" [placeholder]=\"saySomething\"></textarea>\n    <div class=\"icon-send\" (click)=\"sendMessage()\">\n      <tl-icon [lib]=\"'ion'\" [style]=\"'md'\">send</tl-icon>\n    </div>\n  </div>\n</div>\n\n<ng-template #userTemplate let-message=\"message\">\n  <div class=\"chat-user\">\n    <div class=\"chat-text-content\">\n      <p>{{ message?.message }}</p>\n      <span>{{ message.time | date:'HH:mm' }}</span>\n    </div>\n  </div>\n</ng-template>\n\n<ng-template #loadMessagesTemplate>\n  <div class=\"chat-loader-wrapper\">\n    <div class=\"chat-loader\">\n      <tl-loader [strokeWidth]=\"3\" [color]=\"'#6b6b6b'\"></tl-loader>\n    </div>\n    <span class=\"chat-loader-message\">{{ loadingMessagesLabel }}</span>\n  </div>\n</ng-template>\n\n<ng-template #partnerTemplate let-message=\"message\">\n  <div class=\"chat-partner\">\n    <div class=\"chat-text-content\">\n      <div class=\"chat-arrow\"></div>\n      <p>{{ message?.message }}</p>\n      <span>{{ message.time | date:'HH:mm' }}</span>\n    </div>\n  </div>\n</ng-template>\n","/*\n MIT License\n\n Copyright (c) 2017 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { PipeTransform, Pipe } from '@angular/core';\nimport { ChatContact } from '../interfaces/chat-contact.interface';\n\n@Pipe( {\n  name: 'status'\n} )\nexport class TlStatusFilterPipe implements PipeTransform {\n\n  transform( value: ChatContact[], param: { filter: string, status: Array<string> } ): any {\n    if (value && value.length > 0) {\n      return value.filter((item: ChatContact) =>\n        (param.status.indexOf(item.status) >= 0) &&\n        (item.name.toLocaleLowerCase().includes( param.filter.toLocaleLowerCase() )) );\n    }\n    return [];\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, ElementRef, EventEmitter, Input, Renderer2, ViewChild, Output,\n  OnDestroy, OnInit, ChangeDetectorRef, OnChanges, SimpleChanges\n} from '@angular/core';\nimport {ChatStatus} from './interfaces/chat-status.interface';\nimport {ChatContact} from './interfaces/chat-contact.interface';\nimport {ChatMessage} from './interfaces/chat-message.interface';\nimport {Status} from './enums/status.enum';\nimport {Subscription} from 'rxjs';\nimport {ChatService} from './services/chat.service';\nimport {I18nService} from '../i18n/i18n.service';\n\nlet uniqueIdentifier = 0;\n\n@Component({\n  selector: 'tl-chatlist',\n  templateUrl: './chatlist.html',\n  styleUrls: ['./chatlist.scss'],\n})\nexport class TlChatList implements OnInit, OnChanges, OnDestroy {\n\n  @Input() maxHeight = '450px';\n\n  @Input() width = '400px';\n\n  @Input() color = 'basic';\n\n  @Input() loadingMessages = false;\n\n  @Input() chatStatus: ChatStatus = {\n    BUSY: '#ffc019',\n    ONLINE: '#66cc99',\n    OFFLINE: '#ff3100'\n  };\n\n  @Input() partner: ChatContact;\n\n  @Input() lastActivityCheck = 0;\n\n  @Input() id = `tl-chatlist-${uniqueIdentifier++}`;\n\n  @Input() user: ChatContact;\n\n  @Input('contacts')\n  set contacts( data: ChatContact[] ) {\n    this.setDataSource( data );\n  }\n  get contacts(): ChatContact[] {\n    return this._dataSource;\n  }\n\n  @Output() readMessage: EventEmitter<ChatMessage[]> = new EventEmitter();\n\n  @Output() unreadMessages: EventEmitter<ChatMessage[]> = new EventEmitter();\n\n  @Output() sendMessage: EventEmitter<ChatMessage> = new EventEmitter();\n\n  @Output() changeStatus: EventEmitter<any> = new EventEmitter();\n\n  @Output() selectContact: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('content', {static: false}) content: ElementRef;\n\n  public transform = '0';\n\n  public selected = 'ONLINE';\n\n  public noContactsFound = this.i18nService.getLocale().ChatList.noContactsFound;\n\n  public searchContact = this.i18nService.getLocale().ChatList.searchContact;\n\n  public insideChat = false;\n\n  public filterControl = '';\n\n  private _dataSource;\n\n  public messages = [];\n\n  private subscription = new Subscription();\n\n  constructor(private renderer: Renderer2,\n              private change: ChangeDetectorRef,\n              private chatService: ChatService,\n              private i18nService: I18nService) {\n  }\n\n  get online() {\n    return Status.ONLINE;\n  }\n\n  get offline() {\n    return Status.OFFLINE;\n  }\n\n  get busy() {\n    return Status.BUSY;\n  }\n\n  ngOnInit() {\n    this.listenChangeStatus();\n    this.listenChangeMessages();\n    this.listenUnreadMessages();\n    this.messages = this.chatService.getAllMessages( this.id );\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ( changes['contacts'] && changes['contacts'].currentValue && changes['contacts'].currentValue.length > 0) {\n      this.setDataSource( changes['contacts'].currentValue );\n    }\n  }\n\n  setDataSource(contacts: ChatContact[], user: ChatContact = this.user) {\n    if ( contacts && user && contacts.length > 0 ) {\n      if (!user.id) {\n        throw Error('User id not found');\n      }\n      this._dataSource = contacts.filter((item) => item.id !== user.id).map((contact) => {\n          return {\n            ...contact,\n            status: this.getStatus(contact)\n          };\n      });\n      this.change.detectChanges();\n    }\n  }\n\n  listenChangeStatus() {\n    this.subscription.add(this.chatService.changeStatus.subscribe((value: { chatId: string, status: Status }) => {\n      if (value.chatId === this.id) {\n        this.setStatus(value.status);\n      }\n    }));\n  }\n\n  listenChangeMessages() {\n    this.subscription.add(this.chatService.allMessages.subscribe((messages: ChatMessage[]) => {\n      this.messages = messages;\n      this.change.detectChanges();\n    }));\n  }\n\n  listenUnreadMessages() {\n    this.subscription.add(this.chatService.unreadMessages.subscribe((messages: ChatMessage[]) => {\n      this.unreadMessages.emit( messages );\n    }));\n  }\n\n  animationContentDone(event: AnimationEvent) {\n    if (event.animationName === 'showOffContent') {\n      this.insideChat = true;\n    }\n  }\n\n  getUnreadMessages(item: ChatContact) {\n    if (this.messages.length > 0) {\n      return this.messages.filter((message: ChatMessage) => {\n        if (message.from && message.to) {\n          return (!message.viewed && message.from.id === item.id) && (message.to.id === this.user.id);\n        }\n      });\n    }\n    return [];\n  }\n\n  getFilter(statusSelected) {\n    if (statusSelected === this.offline) {\n      return {filter: this.filterControl, status: [this.offline], lastActivityCheck: this.lastActivityCheck};\n    }\n    return {filter: this.filterControl, status: [this.online, this.busy], lastActivityCheck: this.lastActivityCheck};\n  }\n\n  trackByFn(index) {\n    return index;\n  }\n\n  selectPartner(item: ChatContact) {\n    this.insideChat = true;\n    this.updatePartner(item);\n    this.selectContact.emit({...item, unreadMessages: this.getUnreadMessages(item)});\n    this.renderer.setStyle(this.content.nativeElement, 'animation', 'showOffContent 0.2s forwards');\n    this.chatService.readMessages( this.getUnreadMessages(item), this.user, this.id);\n  }\n\n  updatePartner(item: ChatContact) {\n    this.partner = item;\n  }\n\n  setStatus(status: Status) {\n    this.changeStatus.emit({user: this.user, status: status});\n  }\n\n  onMessage(message: { value: string, time: Date }) {\n    const msm = {\n      id: String(new Date().getTime()),\n      to: this.partner,\n      from: this.user,\n      message: message.value,\n      time: message.time,\n      viewed: false\n    };\n    this.sendMessage.emit(msm);\n  }\n\n  selectStatus(status) {\n    if (status === 'ONLINE') {\n      this.transform = '0';\n      this.selected = 'ONLINE';\n    } else if (status === 'OFFLINE') {\n      this.transform = '100px';\n      this.selected = 'OFFLINE';\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n\n  private getStatus(contact) {\n    if ( this.lastActivityCheck === 0 ) {\n      return contact.status;\n    }\n\n    if ( this.lastActivityCheck > 0 ) {\n      const diffMinutes = this.getDiffMinutes(contact.lastActivity) * 60;\n      return diffMinutes >= this.lastActivityCheck ? Status.OFFLINE : contact.status;\n    }\n  }\n\n  private getDiffMinutes(lastActivity = new Date()) {\n    const currentTime = new Date().getTime();\n    const lastActivityTime = new Date(lastActivity).getTime();\n    const diff = ((currentTime - lastActivityTime) / 1000 ) / 60;\n    return Math.abs(Math.round(diff));\n  }\n\n}\n\n","<div [class]=\"'chat-wrapper ' + color\" [style.width]=\"width\" [style.height]=\"maxHeight\">\n  <div class=\"chat-header\">\n    <ng-container *ngIf=\"!insideChat; else selectedPartner\">\n      <div class=\"chat-wrapper-status\">\n        <div class=\"chat-status-selection\" [style.transform]=\"'translateX(' + transform + ')'\"></div>\n        <div class=\"chat-status\" [class.selected]=\"selected === 'ONLINE'\" (click)=\"selectStatus('ONLINE')\">\n          <span>Online</span>\n        </div>\n        <div class=\"chat-status\" [class.selected]=\"selected === 'OFFLINE'\" (click)=\"selectStatus('OFFLINE')\">\n          <span>Offline</span>\n        </div>\n      </div>\n    </ng-container>\n  </div>\n  <ng-container *ngIf=\"!insideChat; else chatContent\">\n    <div class=\"ui-wrapper-chat\">\n      <div class=\"chat-filter-wrapper\">\n        <tl-icon class=\"chat-filter-icon\" [lib]=\"'ion'\" [style]=\"'ios'\">search</tl-icon>\n        <input class=\"chat-filter-contact\" [placeholder]=\"searchContact\" [(ngModel)]=\"filterControl\">\n      </div>\n      <div #content class=\"chat-content\" (animationend)=\"animationContentDone($event)\"\n           [style.height]=\"'calc(100% - 40px)'\">\n        <ng-container *ngTemplateOutlet=\"contactTemplate; context: { status: selected }\"></ng-container>\n      </div>\n    </div>\n  </ng-container>\n</div>\n\n<ng-template #contactTemplate let-statusSelected=\"status\">\n  <ng-container *ngIf=\"(contacts | status: getFilter(statusSelected)) as filtered\">\n    <ng-container *ngIf=\"filtered.length > 0; else withoutContacts\">\n      <ng-container *ngFor=\"let item of filtered; trackBy:trackByFn\">\n        <div *ngIf=\"item\" class=\"chat-item\" (click)=\"selectPartner(item)\">\n          <tl-avatar [size]=\"'45px'\"\n                     class=\"chat-img\"\n                     [style.border]=\"'2px solid ' + chatStatus[item.status]\"\n                     [src]=\"item?.image\"\n                     [gravatar]=\"item?.gravatar\" [shape]=\"'circle'\">\n          </tl-avatar>\n          <div class=\"chat-item-detail\">\n            <span [innerHTML]=\"item.name | highlight:filterControl\"></span>\n            <span>{{ item.description }}</span>\n          </div>\n          <div *ngIf=\"getUnreadMessages(item)?.length as messages\"\n               class=\"chat-unread-messages\">{{ messages }}\n          </div>\n        </div>\n      </ng-container>\n    </ng-container>\n  </ng-container>\n</ng-template>\n\n<ng-template #selectedPartner>\n  <div class=\"chat-partner-wrapper\">\n    <div (click)=\"insideChat = false\" class=\"arrow\">\n      <tl-icon [lib]=\"'ion'\" [style]=\"'ios'\">arrow-back</tl-icon>\n    </div>\n    <div class=\"chat-partner\">\n      <span>{{ partner?.name }}</span>\n    </div>\n    <tl-avatar [size]=\"'30px'\"\n               class=\"chat-img\"\n               [src]=\"partner?.image\"\n               [gravatar]=\"partner?.gravatar\" [shape]=\"'circle'\">\n    </tl-avatar>\n  </div>\n</ng-template>\n\n<ng-template #chatContent>\n  <tl-chat-content\n    [id]=\"id\"\n    [user]=\"user\"\n    [maxHeight]=\"maxHeight\"\n    [loadingMessages]=\"loadingMessages\"\n    [chatStatus]=\"chatStatus\"\n    (readMessage)=\"readMessage.emit($event)\"\n    [partner]=\"partner\"\n    (message)=\"onMessage($event)\">\n  </tl-chat-content>\n</ng-template>\n\n<ng-template #withoutContacts>\n  <div class=\"chat-without-contacts\">\n    <tl-icon class=\"icon\" [lib]=\"'fa'\" [style]=\"'far'\">sad-tear</tl-icon>\n    <span class=\"label\">{{ noContactsFound }}</span>\n  </div>\n</ng-template>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { ListBoxModule } from '../listbox/index';\nimport { MiscModule } from '../misc/index';\nimport { TlChatList } from './chatlist';\nimport { TlChatContent } from './parts/chat-content';\nimport { IconsModule } from '../icons/index';\nimport { TlStatusFilterPipe } from './pipes/status-filter.pipe';\nimport { ChatService } from './services/chat.service';\nimport { AvatarModule } from '../avatar/index';\nimport { LoaderModule } from '../loader/index';\nimport { TlMessageFilterPipe } from './pipes/message-filter.pipe';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n    AvatarModule,\n    ReactiveFormsModule,\n    MiscModule,\n    ListBoxModule,\n    LoaderModule,\n    IconsModule\n  ],\n  declarations: [\n    TlChatList,\n    TlChatContent,\n    TlStatusFilterPipe,\n    TlMessageFilterPipe\n  ],\n  exports: [\n    TlChatList,\n    TlChatContent,\n    TlStatusFilterPipe,\n    TlMessageFilterPipe\n  ]\n} )\nexport class ChatListModule {\n  static forRoot(): ModuleWithProviders<ChatListModule> {\n    return {\n      ngModule: ChatListModule,\n      providers: [\n        ChatService\n      ],\n    };\n  }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable } from '@angular/core';\nimport { I18nService } from '../../i18n/i18n.service';\n\n@Injectable()\nexport class NavigatorManagerService {\n\n  private currentMonth: number;\n\n  private currentYear: number;\n\n  private currentDay: number;\n\n  private startYear: number;\n\n  private endYear: number;\n\n  private date = new Date();\n\n  private type: string;\n\n  private range: number;\n\n  get monthsDescription() {\n    return this.i18n.getLocale().Navigator.monthsDescription;\n  }\n  get daysDescription() {\n    return this.i18n.getLocale().Navigator.daysDescription;\n  }\n\n  constructor( private i18n: I18nService ) {}\n\n  previous() {\n    this.managerPreviousAction();\n  }\n\n  next() {\n    this.managerNextAction();\n  }\n\n  setType(type) {\n    this.type = type;\n  }\n\n  setRange(range) {\n    this.range = range;\n  }\n\n  setDate(date) {\n    this.date = date;\n    this.currentMonth = this.date.getMonth();\n    this.currentYear = this.date.getFullYear();\n    this.currentDay = this.date.getDate();\n\n    this.startYear = this.date.getFullYear();\n    this.endYear = this.date.getFullYear() + this.range;\n\n  }\n\n  getDataObject() {\n    return {\n      day: this.currentDay,\n      month: this.currentMonth,\n      year: this.currentYear,\n      fullDate: new Date( this.currentYear, this.currentMonth, this.currentDay, new Date().getHours(), new Date().getMinutes() ),\n      rangeYear: {start: this.startYear, end: this.endYear}\n    };\n  }\n\n  getDescription(): string {\n    switch ( this.type )  {\n      case 'monthyear': { return this.getMonthDescription() + ' ' + this.getYearDescription(); }\n      case 'year': { return this.getYearDescription().toString(); }\n      case 'rangeyear': { return this.getRangeYear().toString(); }\n      case 'day': { return this.getDayDescription().toString(); }\n      case 'rangeweek': { return this.getRangeWeekDescription().toString(); }\n    }\n  }\n\n\n  private managerPreviousAction() {\n    switch ( this.type )  {\n      case 'monthyear': { this.monthYearTypePrevious(); break; }\n      case 'year': { this.yearTypePrevious(); break; }\n      case 'rangeyear': { this.rangeYearTypePrevious(); break; }\n      case 'day': { this.dayTypePrevious(); break; }\n      case 'rangeweek': { this.rangeWeekTypePrevious(); break; }\n    }\n  }\n\n  private managerNextAction() {\n    switch ( this.type )  {\n      case 'monthyear': { this.monthYearTypeNext(); break; }\n      case 'year': { this.yearTypeNext(); break; }\n      case 'rangeyear': { this.rangeYearTypeNext(); break; }\n      case 'day': { this.dayTypeNext(); break; }\n      case 'rangeweek': { this.rangeWeekTypeNext(); break; }\n    }\n  }\n\n  private getYearDescription() {\n    return this.currentYear;\n  }\n\n\n  private getRangeYear() {\n    return this.startYear + ' - ' + this.endYear;\n  }\n\n\n  private getDayDescription() {\n    const dayOfMonth = new Date(this.currentYear, this.currentMonth, this.currentDay).getDate();\n    const weekDay = this.daysDescription[ new Date(this.currentYear, this.currentMonth, this.currentDay).getDay() ];\n    return dayOfMonth + ' ' + weekDay;\n  }\n\n  private getRangeWeekDescription(): string {\n    const startDate = this.getAtualDateFromParameters();\n    const endDate = new Date(startDate.getTime() + 6 * 24 * 60 * 60 * 1000);\n\n    // Ajustar a data de início para a segunda-feira\n    const diff = startDate.getDay() - 1; // Calcule a diferença em dias de domingo para segunda-feira\n    startDate.setDate(startDate.getDate() - diff);\n\n    // Ajustar a data de término para o domingo\n    const diffEnd = 0 - endDate.getDay(); // Calcule a diferença em dias de segunda a domingo\n    endDate.setDate(endDate.getDate() + diffEnd);\n\n    const startDay = startDate.getDate();\n    const endDay = endDate.getDate();\n    const startMonth = this.monthsDescription[startDate.getMonth()];\n    const startYear = startDate.getFullYear();\n\n    return `${startDay} - ${endDay} ${startMonth} ${startYear}`;\n  }\n\n\n  private getMonthDescription() {\n    return this.monthsDescription[this.currentMonth];\n  }\n\n  // =============================== \\\\\n  private monthYearTypeNext() {\n    const date = this.getAtualDateFromParameters();\n    date.setMonth( this.date.getMonth() + 1 );\n    this.setDate( date );\n  }\n\n  private monthYearTypePrevious() {\n    const date = this.getAtualDateFromParameters();\n    date.setMonth( this.date.getMonth() - 1 );\n    this.setDate( date );\n  }\n\n  private yearTypePrevious() {\n    const date = this.getAtualDateFromParameters();\n    date.setFullYear( this.date.getFullYear() - 1 );\n    this.setDate( date );\n  }\n\n  private yearTypeNext() {\n    const date = this.getAtualDateFromParameters();\n    date.setFullYear( this.date.getFullYear() + 1 );\n    this.setDate( date );\n  }\n\n  private dayTypePrevious() {\n    const date = this.getAtualDateFromParameters();\n    date.setDate( this.date.getDate() - 1 );\n    this.setDate( date );\n  }\n\n  private dayTypeNext() {\n    const date = this.getAtualDateFromParameters();\n    date.setDate( this.date.getDate() + 1 );\n    this.setDate( date );\n  }\n\n  private rangeYearTypePrevious() {\n    this.startYear -= this.range;\n    this.endYear -= this.range;\n  }\n\n  private rangeYearTypeNext() {\n    this.startYear += this.range;\n    this.endYear += this.range;\n  }\n\n  private getAtualDateFromParameters() {\n    return new Date(this.currentYear, this.currentMonth, this.currentDay);\n  }\n\n  private rangeWeekTypePrevious() {\n    const date = this.getAtualDateFromParameters();\n    const currentDayOfWeek = date.getDay();\n    const startOfWeek = new Date(date.getTime() - currentDayOfWeek * 24 * 60 * 60 * 1000);\n    const endOfWeek = new Date(startOfWeek.getTime() - 6 * 24 * 60 * 60 * 1000);\n      // Verificar se o início da semana é segunda\n  if (currentDayOfWeek === 0) {\n    startOfWeek.setDate(startOfWeek.getDate() - 1); // Ajustar de segunda a domingo\n  }\n    if (endOfWeek >= this.date) {\n      this.setDate(startOfWeek);\n    } else {\n      this.setDate(endOfWeek);\n    }\n  }\n\n  private rangeWeekTypeNext() {\n    const date = this.getAtualDateFromParameters();\n    const currentDayOfWeek = date.getDay();\n    const startOfWeek = new Date(date.getTime() + (8 - currentDayOfWeek) * 24 * 60 * 60 * 1000);\n    const endOfWeek = new Date(startOfWeek.getTime() + 6 * 24 * 60 * 60 * 1000);\n    this.setDate(startOfWeek);\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ChangeDetectionStrategy,\n  OnInit,\n  ChangeDetectorRef,\n  SimpleChanges,\n  OnChanges\n} from '@angular/core';\nimport { NavigatorManagerService } from './services/navigator-manager.service';\n\n@Component( {\n    selector: 'tl-navigator',\n    templateUrl: './navigator.html',\n    styleUrls: [ './navigator.scss' ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [NavigatorManagerService]\n} )\nexport class TlNavigator implements OnInit, OnChanges {\n\n  @Input('width') width = '125px';\n\n  @Input('height') height = '32px';\n\n  @Input('type') type: 'rangeweek' | 'monthyear' | 'year' | 'rangeyear' | 'day' = 'monthyear';\n\n  @Input('date') date = new Date();\n\n  @Input('range') range = 11;\n\n  @Input('withBorder') withBorder = true;\n\n  @Input() color = 'basic';\n\n  @Output() clickPrevious: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() clickNext: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() clickNavigator: EventEmitter<any> = new EventEmitter<any>();\n\n  public description = '';\n\n  constructor(\n    public navigatorManager: NavigatorManagerService,\n    public change: ChangeDetectorRef\n  ) {}\n\n  ngOnInit() {\n    this.navigatorManager.setType(this.type);\n    this.navigatorManager.setRange(this.range);\n    this.navigatorManager.setDate(this.date);\n    this.setDescription();\n  }\n\n  ngOnChanges(change: SimpleChanges) {\n    this.navigatorManager.setType(this.type);\n    this.navigatorManager.setRange(this.range);\n    this.navigatorManager.setDate(this.date);\n    this.setDescription();\n  }\n\n  onClickPrevious() {\n    this.navigatorManager.previous();\n    this.setDescription();\n    this.clickPrevious.emit( this.navigatorManager.getDataObject() );\n  }\n\n  onClickNext() {\n    this.navigatorManager.next();\n    this.setDescription();\n    this.clickNext.emit(this.navigatorManager.getDataObject());\n  }\n\n  onClickNavigator() {\n    this.clickNavigator.emit(this.navigatorManager.getDataObject());\n  }\n\n  private setDescription() {\n    this.description = this.navigatorManager.getDescription();\n    this.change.detectChanges();\n  }\n}\n\n","<div [class]=\"'tl-navigator '+ color\">\n  <div tabindex=\"-1\"\n       (click)=\"onClickPrevious()\"\n       [ngClass]=\"{'ui-button': true, 'ui-with-border': withBorder}\"\n       [ngStyle]=\"{height:height, lineHeight: height}\">\n    <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\" [icon]=\"'chevron-left'\"></tl-icon>\n  </div>\n  <div tabindex=\"-1\"\n       [ngClass]=\"{'ui-navigator': true,'ui-with-border': withBorder}\"\n       (click)=\"onClickNavigator()\"\n       [ngStyle]=\"{'max-width':width, height:height, lineHeight: height, width: width}\">\n    {{description}}\n  </div>\n  <div tabindex=\"-1\"\n       (click)=\"onClickNext()\"\n       [ngClass]=\"{'ui-button': true, 'ui-with-border': withBorder}\"\n       [ngStyle]=\"{height:height, lineHeight: height}\">\n    <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\" [icon]=\"'chevron-right'\"></tl-icon>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AnimationTriggerMetadata, trigger, state, transition, style, animate } from '@angular/animations';\n\nexport const OverlayAnimation: AnimationTriggerMetadata =\n  trigger( 'overlay', [\n    state( 'void', style( {\n      transform: 'scale(0)',\n      opacity: 0\n    } ) ),\n    transition( 'void <=> *', [\n      style( {\n        opacity: 1\n      } ),\n      animate( '150ms cubic-bezier(0.25, 0.8, 0.25, 1)' )\n    ] )\n  ] );\n","import { AfterContentInit, Input, Component, ElementRef, ViewChild } from '@angular/core';\nimport { TooltipOptions } from './tooltipOptions';\nimport { OverlayAnimation } from '../core/directives/overlay-animation';\n\n@Component( {\n  selector: 'tl-tooltip',\n  templateUrl: './tooltip.html',\n  styleUrls: [ './tooltip.scss' ],\n  animations: [ OverlayAnimation ],\n} )\nexport class TlToolTip {\n\n  @Input() options: TooltipOptions;\n\n  getClassByPlacement() {\n    if ( this.options.placement.includes( 'left' ) ) {\n      return 'left';\n    }\n    if ( this.options.placement.includes( 'right' ) ) {\n      return 'right';\n    }\n    if ( this.options.placement.includes( 'top' ) ) {\n      return 'top';\n    }\n    if ( this.options.placement.includes( 'bottom' ) ) {\n      return 'bottom';\n    }\n  }\n}\n","<div class=\"tooltip-text\"\n     [style.width]=\"options?.width\"\n     [style.color]=\"options?.fontColor\"\n     [style.background]=\"options?.color\">\n  <span>{{ options?.text }}</span>\n  <div [style.border-color]=\"options?.color\"\n       [class]=\"'arrow ' + getClassByPlacement()\"></div>\n</div>\n\n","import { AfterContentInit, Component, ViewChild } from '@angular/core';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { TooltipOptions } from '../tooltipOptions';\nimport { OverlayAnimation } from '../../core/directives/overlay-animation';\n\n@Component( {\n  selector: 'tl-tooltip-container',\n  template: `\n    <ng-template cdkConnectedOverlay\n                 [cdkConnectedOverlayHasBackdrop]=\"false\"\n                 [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n                 [cdkConnectedOverlayOpen]=\"true\">\n      <tl-tooltip @overlay [options]=\"options\"></tl-tooltip>\n    </ng-template>\n  `,\n  animations: [OverlayAnimation],\n} )\nexport class TlToolTipContainer implements AfterContentInit {\n\n  @ViewChild( 'tooltip', {static: true} ) tooltip;\n\n  @ViewChild( CdkConnectedOverlay, {static: true} ) connectedOverlay: CdkConnectedOverlay;\n\n  public options: TooltipOptions;\n\n  private element;\n\n  setOptions( options: TooltipOptions ) {\n    this.options = options;\n  }\n\n  setElement( element ) {\n    this.element = element;\n  }\n\n  ngAfterContentInit() {\n    this.connectedOverlay.origin = new CdkOverlayOrigin( this.element );\n    this.getPositionsByPlacement();\n  }\n\n  getPositionsByPlacement() {\n    const placements = {\n      'left-top': () => this.setLeftTop(),\n      'left-center' : () => this.setLeftCenter(),\n      'left-bottom' : () => this.setLeftBottom(),\n      'right-top': () => this.setRightTop(),\n      'right-center': () => this.setRightCenter(),\n      'right-bottom': () => this.setRightBottom(),\n      'top-center': () => this.setTopCenter(),\n      'bottom-center': () => this.setBottomCenter()\n    };\n    if (placements[this.options.placement]) {\n      placements[this.options.placement]();\n    }\n  }\n\n  setBottomCenter() {\n    this.connectedOverlay.positions = [ {\n      originX: 'center',\n      originY: 'bottom',\n      overlayX: 'center',\n      overlayY: 'top'\n    } ];\n  }\n\n  setTopCenter() {\n    this.connectedOverlay.positions = [ {\n      originX: 'center',\n      originY: 'top',\n      overlayX: 'center',\n      overlayY: 'bottom'\n    } ];\n  }\n\n  setRightCenter() {\n    this.connectedOverlay.positions = [ {\n      originX: 'end',\n      originY: 'center',\n      overlayX: 'start',\n      overlayY: 'center'\n    } ];\n  }\n\n  setRightTop() {\n    this.connectedOverlay.positions = [ {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'top'\n    } ];\n  }\n\n  setRightBottom() {\n    this.connectedOverlay.positions = [ {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'bottom'\n    } ];\n  }\n\n  setLeftBottom() {\n    this.connectedOverlay.positions = [ {\n      originX: 'start',\n      originY: 'bottom',\n      overlayX: 'end',\n      overlayY: 'bottom'\n    } ];\n  }\n\n  setLeftTop() {\n    this.connectedOverlay.positions = [ {\n      originX: 'start',\n      originY: 'top',\n      overlayX: 'end',\n      overlayY: 'top'\n    } ];\n  }\n\n  setLeftCenter() {\n    this.connectedOverlay.positions = [ {\n      originX: 'start',\n      originY: 'center',\n      overlayX: 'end',\n      overlayY: 'center'\n    } ];\n  }\n\n}\n","import {ChangeDetectorRef, ComponentFactoryResolver, ComponentRef, Injectable, ViewContainerRef} from '@angular/core';\nimport {TooltipOptions} from './tooltipOptions';\nimport {TlToolTipContainer} from './parts/tooltip-container';\n\n@Injectable()\nexport class TooltipService {\n\n  private component: ComponentRef<any>;\n\n  constructor( private compiler: ComponentFactoryResolver ) {}\n\n  create( tooltip: TooltipOptions, view: ViewContainerRef, element: HTMLElement ) {\n    const componentFactory = this.compiler.resolveComponentFactory( TlToolTipContainer );\n    this.component = view.createComponent( componentFactory );\n    (<TlToolTipContainer>this.component.instance).setOptions( tooltip );\n    (<TlToolTipContainer>this.component.instance).setElement( element );\n  }\n\n  destroy() {\n    this.component.destroy();\n  }\n\n}\n","import {Directive, ElementRef, HostListener, Input, ViewContainerRef} from '@angular/core';\nimport {TooltipService} from '../../tooltip/tooltip.service';\nimport {CalendarHoliday} from '../interfaces/calendar-holiday.interface';\n\n@Directive({\n  selector: '[tooltipHoliday]'\n})\nexport class TlHolidayTooltipDirective {\n\n  @Input() tooltipHoliday;\n\n  @Input() tooltipDay: Array<CalendarHoliday>;\n\n  constructor(private tooltipService: TooltipService,\n              private view: ViewContainerRef,\n              private element: ElementRef) {\n  }\n\n  @HostListener('mouseover')\n  mouseHover() {\n    if ( this.tooltipHoliday && this.tooltipDay.length > 0 ) {\n      const day = this.tooltipDay[0];\n      if ( day.tooltip ) {\n        this.tooltipService.create(\n          {text: day.description, placement: 'top-center'}, this.view, this.element.nativeElement);\n      }\n    }\n  }\n\n  @HostListener('mouseleave')\n  mouseLeave() {\n    if ( this.tooltipHoliday ) {\n      this.tooltipService.destroy();\n    }\n  }\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {CalendarHoliday} from '../interfaces/calendar-holiday.interface';\n\n@Pipe({\n  name: 'holiday'\n})\nexport class TlHolidayPipe implements PipeTransform {\n\n  constructor() {}\n\n  transform(date: Date, holidays: CalendarHoliday[] ) {\n    return holidays.filter(value => this.getRawDate(value.date) === this.getRawDate(date));\n  }\n\n  getRawDate( date: Date ) {\n    const dt = new Date( date ).setHours(0, 0, 0, 0 );\n    return new Date( dt ).getTime();\n  }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges} from '@angular/core';\nimport {CalendarHoliday} from '../../interfaces/calendar-holiday.interface';\n\nexport interface CalendarDaysInterface {\n  dayOfWeek: number;\n  date: Date;\n  day: number;\n}\n\n@Component({\n  selector: 'tl-days',\n  templateUrl: './calendar-days.html',\n  styleUrls: ['./calendar-days.scss'],\n})\nexport class TlCalendarDays implements OnInit, OnChanges {\n\n  @Input('currentDate')\n  set currentDate(value) {\n    if ( this._currentDate.getMonth() !== new Date(value).getMonth()) {\n      this._currentDate = new Date(value);\n      this.buildCalendar();\n    }\n    this.selectedDate = new Date(value);\n    this._currentDate = new Date(value);\n  }\n\n  get currentDate() {\n    return this._currentDate;\n  }\n\n  @Input() holidays: Array<CalendarHoliday> = [];\n\n  @Input() borders = false;\n\n  @Input() width = '300px';\n\n  @Input() height = '200px';\n\n  @Output() selectDay = new EventEmitter();\n\n  @Output() doubleClick = new EventEmitter();\n\n  public dayOfMonth: Array<CalendarDaysInterface[]> = [];\n\n  public selectedDate = new Date();\n\n  public groupIndex = 0;\n\n  public dayOfWeek = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'];\n\n  private _currentDate = new Date();\n\n  constructor() {\n  }\n\n  ngOnInit() {\n    this.buildCalendar();\n  }\n\n  buildCalendar() {\n    this.dayOfMonth = [];\n    const daysByWeek = [];\n    for (let i = 1; i <= new Date(this.currentDate.getFullYear(), this.currentDate.getMonth() + 1, 0).getDate(); i++) {\n      daysByWeek.push({\n        dayOfWeek: this.getDateObject(i).getDay(),\n        date: this.getDateObject(i),\n        day: new Date(this.currentDate.getFullYear(), 0, i).getDate()\n      });\n    }\n    this.setGroupIndex( daysByWeek );\n    this.setBeforeDays();\n    this.setAfterDays();\n  }\n\n  setGroupIndex( daysByWeek ) {\n    this.dayOfMonth = this.groupBy(daysByWeek, 'dayOfWeek');\n    this.dayOfMonth.forEach((item, groupIndex) => {\n      item.forEach((value) => {\n        if (value.day === 1) {\n          this.groupIndex = groupIndex;\n        }\n      });\n    });\n  }\n\n  setBeforeDays() {\n    if (this.groupIndex === 0) {\n      this.groupIndex = 7;\n    }\n    for (let i = 0; i < this.groupIndex; i++) {\n      this.dayOfMonth[i].unshift({\n        dayOfWeek: i,\n        date: this.getDateObject(this.dayOfMonth[i][0].day - 7),\n        day: this.getDateObject(this.dayOfMonth[i][0].day - 7).getDate()\n      });\n    }\n  }\n\n  selectDate(date: Date) {\n    this.selectedDate = date;\n    if (date.getMonth() !== this.currentDate.getMonth()) {\n      this.currentDate = date;\n      this.buildCalendar();\n    }\n    this.selectDay.emit(this.selectedDate);\n  }\n\n  setAfterDays() {\n    this.dayOfMonth.forEach((array, index) => {\n      if (array.length < 6) {\n        do {\n          array.push({\n            dayOfWeek: index,\n            date: this.getDateObject(array[array.length - 1].day + 7, array[array.length - 1].date.getMonth()),\n            day: this.getDateObject(array[array.length - 1].day + 7).getDate()\n          });\n        } while (array.length < 6);\n      }\n    });\n  }\n\n  isCurrentDate( date: Date ) {\n    if ( !date ) {\n      return false;\n    }\n    const select = new Date(date.getFullYear(), date.getMonth(),\n      date.getDate(), 0, 0, 0, 0).getTime();\n    const current = new Date(this.selectedDate.getFullYear(), this.selectedDate.getMonth(),\n      this.selectedDate.getDate(), 0, 0, 0, 0).getTime();\n    return select === current;\n  }\n\n  isOtherMonth( item: CalendarDaysInterface ) {\n    return item.date.getMonth() !== this.currentDate.getMonth();\n  }\n\n  today() {\n    this.currentDate = new Date();\n  }\n\n  isToday(date: Date) {\n    const today = new Date(new Date().setHours(0, 0, 0, 0));\n    const day = new Date( date.setHours(0, 0, 0, 0 ));\n    return today.getTime() === day.getTime();\n  }\n\n  getDateObject(day, month?) {\n    return new Date(this.currentDate.getFullYear(), month ? month : this.currentDate.getMonth(), day);\n  }\n\n  groupBy(xs, key) {\n    const objectArray = xs.reduce((rv, x) => {\n      (rv[x[key]] = rv[x[key]] || []).push(x);\n      return rv;\n    }, []);\n    objectArray.length = Object.keys(objectArray).length;\n    return objectArray;\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {\n  }\n\n}\n","<div class=\"ui-calendar-days\">\n  <ng-container *ngTemplateOutlet=\"templateGrid\"></ng-container>\n</div>\n\n<ng-template #templateGrid>\n  <ng-template ngFor let-item let-index [ngForOf]=\"dayOfMonth\">\n    <ng-container *ngTemplateOutlet=\"templateLine; context: { $implicit: item }\"></ng-container>\n  </ng-template>\n</ng-template>\n\n<ng-template let-item #templateCell>\n  <ng-container *ngIf=\"item?.date | holiday:holidays as dayArray\">\n    <div class=\"ui-calendar-cell\"\n         [class.borders]=\"borders\"\n         [class.today]=\"isToday(item?.date)\"\n         (dblclick)=\"doubleClick.emit()\"\n         (click)=\"selectDate( item?.date )\"\n         [tooltipDay]=\"dayArray\"\n         [tooltipHoliday]=\"dayArray?.length > 0\"\n         [class.holiday]=\"dayArray?.length > 0\"\n         [class.sunday]=\"item?.dayOfWeek === 0 && !isOtherMonth(item)\"\n         [class.selected]=\"isCurrentDate( item?.date )\"\n         [class.ui-other-month]=\"isOtherMonth(item)\">{{ item.day }}\n    </div>\n  </ng-container>\n</ng-template>\n\n<ng-template #templateLine let-item>\n  <div class=\"ui-calendar-line\" [class.borders]=\"borders\">\n    <ng-template ngFor let-item [ngForOf]=\"item\">\n      <ng-template\n        [ngTemplateOutlet]=\"templateCell\"\n        [ngTemplateOutletContext]=\"{ $implicit: item }\">\n      </ng-template>\n    </ng-template>\n  </div>\n</ng-template>\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n  selector: 'tl-months',\n  templateUrl: './calendar-months.html',\n  styleUrls: ['./calendar-months.scss']\n})\nexport class TlCalendarMonths {\n\n  @Input() currentDate: Date;\n\n  @Output() selectMonth = new EventEmitter();\n\n  public months = [\n    { name: 'January', initials: 'jan' },\n    { name: 'February', initials: 'feb' },\n    { name: 'March', initials: 'mar' },\n    { name: 'April', initials: 'apr' },\n    { name: 'May', initials: 'may' },\n    { name: 'June', initials: 'jun' },\n    { name: 'July', initials: 'jul' },\n    { name: 'August', initials: 'aug' },\n    { name: 'September', initials: 'sep' },\n    { name: 'October', initials: 'oct' },\n    { name: 'November', initials: 'nov' },\n    { name: 'December', initials: 'dec' }\n    ];\n\n  constructor() {}\n\n  selectDate( index: number )  {\n    const date = new Date( this.currentDate.getFullYear(), index, this.currentDate.getDate() );\n    this.selectMonth.emit( date );\n  }\n\n}\n","<div class=\"ui-wrapper-months\">\n  <div class=\"ui-calendar-months\">\n    <div class=\"ui-calendar-cell\"\n         *ngFor=\"let item of months; let i = index\"\n         (click)=\"selectDate( i )\">{{ item.initials }}\n    </div>\n  </div>\n</div>\n\n","import {Component, EventEmitter, Input, Output} from '@angular/core';\n\n@Component({\n  selector: 'tl-years',\n  templateUrl: './calendar-years.html',\n  styleUrls: ['./calendar-years.scss']\n})\nexport class TlCalendarYears {\n\n  @Input() currentDate: Date;\n\n  @Input('currentRange')\n  set currentRange( value: { start: number; end: number } ) {\n    this._currentRange = value;\n    this.rangeArray =\n      Array.from({ length: value.end - value.start + 1 }).map(( item, index ) => value.start + index);\n  }\n\n  get currentRange() {\n    return this._currentRange;\n  }\n\n  @Output() selectYear = new EventEmitter();\n\n  public rangeArray = [];\n\n  public years = [\n    { name: 'January', initials: 'jan' },\n    { name: 'February', initials: 'feb' },\n    { name: 'March', initials: 'mar' },\n    { name: 'April', initials: 'apr' },\n    { name: 'May', initials: 'may' },\n    { name: 'June', initials: 'jun' },\n    { name: 'July', initials: 'jul' },\n    { name: 'August', initials: 'aug' },\n    { name: 'September', initials: 'sep' },\n    { name: 'October', initials: 'oct' },\n    { name: 'November', initials: 'nov' },\n    { name: 'December', initials: 'dec' }\n    ];\n\n  private _currentRange;\n\n  constructor() {}\n\n  selectDate( year: number )  {\n    const date = new Date( year, this.currentDate.getMonth(), this.currentDate.getDate() );\n    this.selectYear.emit( date );\n  }\n\n}\n","<div class=\"ui-wrapper-years\">\n  <div class=\"ui-calendar-years\">\n    <div class=\"ui-calendar-cell\"\n         *ngFor=\"let item of rangeArray; let i = index\"\n         (click)=\"selectDate( item )\">{{ item }}\n    </div>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, Output,\n  EventEmitter, Input, OnInit,\n} from '@angular/core';\nimport {I18nService} from '../i18n/i18n.service';\nimport {CalendarHoliday} from './interfaces/calendar-holiday.interface';\n\nexport interface ObjectDateCalendar {\n  day: number;\n  month: number;\n  year: number;\n  fullDate: Date;\n}\n\n@Component({\n  selector: 'tl-calendar',\n  templateUrl: './calendar.html',\n  styleUrls: ['./calendar.scss'],\n})\nexport class TlCalendar implements OnInit {\n\n  @Input() date = new Date();\n\n  @Input() holidays: Array<CalendarHoliday> = [];\n\n  @Input() width = '260px';\n\n  @Input() todayButton = true;\n\n  @Input() borders = false;\n\n  @Input() height = '260px';\n\n  @Output() selectDay: EventEmitter<ObjectDateCalendar> = new EventEmitter();\n\n  @Output() today: EventEmitter<ObjectDateCalendar> = new EventEmitter();\n\n  @Output() doubleClick = new EventEmitter();\n\n  public selectedPanel: 'days' | 'months' | 'years' = 'days';\n\n  public currentRange;\n\n  public todayDescription = this.i18nService.getLocale().Calendar.today;\n\n  public dayOfWeek = this.i18nService.getLocale().Calendar.dayOfWeek;\n\n  constructor(private i18nService: I18nService) {\n  }\n\n  ngOnInit() {\n  }\n\n  get typeNavigator() {\n    switch (this.selectedPanel) {\n      case 'days':\n        return 'monthyear';\n      case 'months':\n        return 'year';\n      case 'years':\n        return 'rangeyear';\n    }\n  }\n\n  onSelectMonth($event) {\n    this.selectedPanel = 'days';\n    this.date = $event;\n  }\n\n  onClickNavigator($event) {\n    this.currentRange = $event.rangeYear;\n    switch (this.selectedPanel) {\n      case 'days':\n        this.selectedPanel = 'months';\n        break;\n      case 'months':\n        this.selectedPanel = 'years';\n    }\n  }\n\n  getObjectDate() {\n    return {\n      day: this.date.getDate(),\n      month: this.date.getMonth(),\n      year: this.date.getFullYear(),\n      fullDate: this.date\n    };\n  }\n\n  clickToday() {\n    this.selectedPanel = 'days';\n    this.date = new Date();\n    this.today.emit(this.getObjectDate());\n  }\n\n  onSelectDay($event) {\n    this.date = $event;\n    this.selectDay.emit(this.getObjectDate());\n  }\n\n  onSelectYear($event) {\n    this.selectedPanel = 'months';\n    this.date = $event;\n  }\n\n  onClickPrevious($event) {\n    this.currentRange = $event.rangeYear;\n    if (this.selectedPanel !== 'years') {\n      this.date = $event.fullDate;\n    }\n  }\n\n  onClickNext($event) {\n    this.currentRange = $event.rangeYear;\n    if (this.selectedPanel !== 'years') {\n      this.date = $event.fullDate;\n    }\n  }\n}\n\n","<div class=\"ui-wrapper-calendar\">\n  <div class=\"ui-table-calendar\" [style.height]=\"height\" [style.width]=\"width\">\n    <div class=\"ui-calendar-header\">\n      <tl-navigator\n        [date]=\"date\"\n        [withBorder]=\"false\"\n        (clickPrevious)=\"onClickPrevious($event)\"\n        (clickNavigator)=\"onClickNavigator($event)\"\n        (clickNext)=\"onClickNext($event)\"\n        [width]=\"todayButton ? 'calc(' + width + ' / 2 - 20px)' : 'calc(' + width + ' - 80px)'\"\n        [type]=\"typeNavigator\">\n      </tl-navigator>\n      <tl-button (click)=\"clickToday()\"\n                 style=\"margin-left: 5px;\"\n                 [outline]=\"true\"\n                 *ngIf=\"todayButton\"\n                 [text]=\"todayDescription\"\n                 [color]=\"'primary'\">\n      </tl-button>\n    </div>\n    <div class=\"ui-calendar-week\">\n      <ng-container *ngIf=\"selectedPanel === 'days'\">\n        <span class=\"ui-header-item\" *ngFor=\"let item of dayOfWeek\">{{item}}</span>\n      </ng-container>\n    </div>\n    <div class=\"ui-calendar-body\" [style.height]=\"'calc(' + height + ' - 80px)'\">\n      <tl-days *ngIf=\"selectedPanel === 'days'\"\n               (selectDay)=\"onSelectDay($event)\"\n               [borders]=\"borders\"\n               [holidays]=\"holidays\"\n               [currentDate]=\"date\">\n      </tl-days>\n      <tl-months *ngIf=\"selectedPanel === 'months'\"\n                 (selectMonth)=\"onSelectMonth($event)\"\n                 [currentDate]=\"date\">\n      </tl-months>\n      <tl-years *ngIf=\"selectedPanel === 'years'\"\n                (selectYear)=\"onSelectYear($event)\"\n                [currentRange]=\"currentRange\"\n                [currentDate]=\"date\">\n      </tl-years>\n    </div>\n  </div>\n</div>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable } from '@angular/core';\nimport { TlNavigator } from '../navigator';\n\n@Injectable()\nexport class NavigatorService {\n\n  private navigatorList: Array<TlNavigator> = [];\n\n  private currentNavigator: TlNavigator;\n\n  setNavigator(navigator: TlNavigator) {\n    this.navigatorList = [];\n    this.navigatorList.push(navigator);\n    this.navigator(0);\n  }\n\n  setMultipleNavigators(navigators: TlNavigator[]) {\n    this.navigatorList = navigators;\n  }\n\n  navigator(indexNavigator: number) {\n    this.currentNavigator = this.navigatorList[indexNavigator];\n    return this;\n  }\n\n  next() {\n    if (!this.hasItemInNavigatorList()) {\n      return new Error( 'There are no navigators.' );\n    }\n\n    this.currentNavigator.onClickNext();\n  }\n\n  previous() {\n    if (!this.hasItemInNavigatorList()) {\n      return new Error('There are no navigators.');\n    }\n    this.currentNavigator.onClickPrevious();\n  }\n\n  private hasItemInNavigatorList() {\n    return this.navigatorList.length > 0;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlNavigator } from './navigator';\nimport { NavigatorService } from './services/navigator.service';\nimport { IconsModule } from '../icons/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    IconsModule\n  ],\n  declarations: [\n    TlNavigator,\n  ],\n  exports: [\n    TlNavigator,\n  ],\n  providers: [\n    NavigatorService\n  ]\n})\nexport class NavigatorModule {}\n","import {\n  ComponentFactoryResolver, Directive, HostListener, Input, ViewContainerRef, Renderer2\n} from '@angular/core';\nimport { TlToolTip } from '../tooltip';\nimport { TooltipOptions } from '../tooltipOptions';\nimport { TlToolTipContainer } from '../parts/tooltip-container';\n\n\n@Directive( {\n  selector: '[tooltip]'\n} )\nexport class TooltipDirective  {\n\n  @Input() tooltip: TooltipOptions;\n\n  constructor( private view: ViewContainerRef, private compiler: ComponentFactoryResolver ) {}\n\n  @HostListener( 'mouseenter' )\n  onMouseEnter() {\n    this.show();\n  }\n\n  @HostListener( 'mouseleave' )\n  onMouseLeave() {\n    this.hide();\n  }\n\n  private show() {\n    if ( (this.tooltip.text !== '') && (this.tooltip.text !== null) ) {\n      const componentFactory = this.compiler.resolveComponentFactory( TlToolTipContainer );\n      const componentRef = this.view.createComponent( componentFactory );\n      (<TlToolTipContainer>componentRef.instance).setOptions( this.tooltip );\n      (<TlToolTipContainer>componentRef.instance).setElement( this.view.element );\n    }\n  }\n\n  private hide() {\n    this.view.clear();\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlToolTip } from './tooltip';\nimport { TooltipDirective } from './directives/tooltip.directive';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TlToolTipContainer } from './parts/tooltip-container';\nimport {TooltipService} from './tooltip.service';\n\n@NgModule( {\n    imports: [\n        CommonModule,\n        OverlayModule\n    ],\n    declarations: [\n        TlToolTip,\n        TlToolTipContainer,\n        TooltipDirective\n    ],\n    exports: [\n        TlToolTip,\n        TlToolTipContainer,\n        TooltipDirective\n    ],\n    providers: [ TooltipService ]\n} )\nexport class TooltipModule {\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {TlCalendar} from './calendar';\n\nimport {NavigatorModule} from '../navigator/index';\nimport {TooltipModule} from '../tooltip/index';\nimport {ButtonModule} from '../button/index';\nimport {TlCalendarDays} from './parts/calendar-days/calendar-days';\nimport {TlCalendarMonths} from './parts/calendar-months/calendar-months';\nimport {TlCalendarYears} from './parts/calendar-years/calendar-years';\nimport {TlHolidayPipe} from './pipes/holiday';\nimport {TlHolidayTooltipDirective} from './directives/holiday-tooltip';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    NavigatorModule,\n    TooltipModule,\n    ButtonModule,\n  ],\n  declarations: [\n    TlHolidayTooltipDirective,\n    TlHolidayPipe,\n    TlCalendar,\n    TlCalendarDays,\n    TlCalendarMonths,\n    TlCalendarYears\n  ],\n  exports: [\n    TlHolidayTooltipDirective,\n    TlHolidayPipe,\n    TlCalendar,\n    TlCalendarDays,\n    TlCalendarMonths,\n    TlCalendarYears\n  ]\n})\nexport class CalendarModule {\n}\n","import {\n  AbstractControl,\n  AsyncValidatorFn,\n  Validator,\n  Validators,\n  ValidatorFn,\n} from '@angular/forms';\n\nimport { of } from 'rxjs';\n\n\nexport interface ValidationResult {[validator: string]: string | boolean; }\n\nexport type AsyncValidatorArray = Array<Validator | AsyncValidatorFn>;\n\nexport type ValidatorArray = Array<Validator | ValidatorFn>;\n\nconst normalizeValidator =\n  (validator: Validator | ValidatorFn): ValidatorFn | AsyncValidatorFn => {\n    const func = (validator as Validator).validate.bind(validator);\n    if (typeof func === 'function') {\n      return (c: AbstractControl) => func(c);\n    } else {\n      return <ValidatorFn | AsyncValidatorFn> validator;\n    }\n  };\n\nexport const composeValidators =\n  (validators: ValidatorArray): AsyncValidatorFn | ValidatorFn => {\n    if (validators == null || validators.length === 0) {\n      return null;\n    }\n    return Validators.compose(validators.map(normalizeValidator));\n  };\n\nexport const validate =\n  (validators: ValidatorArray, asyncValidators: AsyncValidatorArray) => {\n    return (control: AbstractControl) => {\n      const synchronousValid = () => composeValidators(validators)(control);\n\n      if (asyncValidators) {\n        const asyncValidator = composeValidators(asyncValidators);\n\n        return asyncValidator(control).map(v => {\n          const secondary = synchronousValid();\n          if (secondary || v) { // compose async and sync validator results\n            return Object.assign({}, secondary, v);\n          }\n        });\n      }\n\n      if (validators) {\n        return of(synchronousValid());\n      }\n\n      return of(null);\n    };\n  };\n\nexport const message = (validator: ValidationResult, key: string): string => {\n  switch (key) {\n    case 'required':\n      return 'Please enter a value';\n    case 'pattern':\n      return 'Value does not match required pattern';\n    case 'minlength':\n      return 'Value must be N characters';\n    case 'maxlength':\n      return 'Value must be a maximum of N characters';\n  }\n\n  switch (typeof validator[key]) {\n    case 'string':\n      return <string> validator[key];\n    default:\n      return `Validation failed: ${key}`;\n  }\n};\n","import {NgModel} from '@angular/forms';\n\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/internal/operators';\n\n\n\n\nimport {ValueAccessorBase} from './value-accessor';\n\nimport {\n  AsyncValidatorArray,\n  ValidatorArray,\n  ValidationResult,\n  message,\n  validate,\n} from './validate';\n\nexport abstract class ElementBase<T> extends ValueAccessorBase<T> {\n  protected abstract model: NgModel;\n\n  constructor(\n    public validators: ValidatorArray,\n    private asyncValidators: AsyncValidatorArray,\n  ) {\n    super();\n  }\n\n  protected validate(): Observable<ValidationResult> {\n    return validate\n    (this.validators, this.asyncValidators)\n    (this.model.control);\n  }\n\n  public get invalid(): Observable<boolean> {\n    return this.validate().pipe(\n      map(v => Object.keys(v || {}).length > 0)\n    );\n  }\n\n  protected get failures(): Observable<Array<string>> {\n    return this.validate().pipe(\n      map(v => Object.keys(v).map(k => message(v, k)))\n    );\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { forwardRef } from '@angular/core';\n\nexport function MakeProvider( type: any): any {\n    return {\n        provide: NG_VALUE_ACCESSOR,\n        useExisting: forwardRef(() => type),\n        multi: true\n    };\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { ElementRef, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { Subscription, Subject } from 'rxjs';\n\n@Injectable()\nexport class ClockPickerService implements OnDestroy {\n\n  private subscribe = new Subscription();\n\n  private elementNumber: ElementRef;\n\n  private step;\n\n  private opened = false;\n\n  private angle;\n\n  private relativeAngle;\n\n  private radius;\n\n  private numbers = 12;\n\n  private minNumber = 12;\n\n  private maxNumber = 60;\n\n  private divisor = 30;\n\n  private timeClock = { hour: '00', minute: '00' };\n\n  public type = 'hour';\n\n  public change = new Subject();\n\n  private clockRadius = { height: 200, width: 200 };\n\n  constructor( private wrapperDial: ElementRef, private wrapperDialMin: ElementRef, private renderer: Renderer2 ) {\n  }\n\n  createMinHourDial() {\n    this.numbers = 12;\n    this.minNumber = 0;\n    this.divisor = 30;\n    this.maxNumber = 12;\n    this.type = 'minHour';\n    this.setRelativeAngle();\n    this.setClockStep();\n    this.createNumbers();\n    this.angle = this.getClockAngle( this.timeClock.hour );\n  }\n\n  createHourDial() {\n    this.createMinHourDial();\n    this.clearWrapper();\n    this.numbers = 12;\n    this.minNumber = 12;\n    this.divisor = 30;\n    this.maxNumber = 24;\n    this.type = 'hour';\n    this.setRelativeAngle();\n    this.setClockStep();\n    this.createNumbers();\n    this.angle = this.getClockAngle( this.timeClock.hour );\n  }\n\n  createMinuteDial() {\n    this.clearWrapper();\n    this.clearWrapperMin();\n    this.numbers = 60;\n    this.minNumber = 0;\n    this.maxNumber = 60;\n    this.divisor = 6;\n    this.type = 'minute';\n    this.setRelativeAngle();\n    this.setClockStep();\n    this.createNumbers();\n    this.angle = this.getClockAngle( this.timeClock.minute );\n  }\n\n  clearWrapper() {\n    this.wrapperDial.nativeElement.innerHTML = '';\n  }\n\n  clearWrapperMin() {\n    this.wrapperDialMin.nativeElement.innerHTML = '';\n  }\n\n  getDivisorAngle() {\n    return this.divisor;\n  }\n\n  getAngleClock() {\n    return this.angle;\n  }\n\n  setRelativeAngle() {\n    this.relativeAngle = -90 * Math.PI / 180;\n  }\n\n  setClockStep() {\n    this.step = (2 * Math.PI) / this.numbers;\n  }\n\n  createNumbers() {\n    let hour = this.maxNumber;\n    for ( let index = this.maxNumber; index > this.minNumber; index-- ) {\n      this.createElementNumber();\n      this.setElementNumberValue( hour );\n      hour--;\n      this.setRadiusNumber();\n      this.setStylesNumber();\n      this.listenClickNumber( index );\n      this.appendElementNumber();\n      this.relativeAngle -= this.step;\n    }\n  }\n\n  createElementNumber() {\n    this.elementNumber = new ElementRef( this.renderer.createElement( 'div' ) );\n  }\n\n  appendElementNumber() {\n    if ( this.type === 'minHour' ) {\n      this.renderer.appendChild( this.wrapperDialMin.nativeElement, this.elementNumber.nativeElement );\n    } else {\n      this.renderer.appendChild( this.wrapperDial.nativeElement, this.elementNumber.nativeElement );\n    }\n  }\n\n  listenClickNumber( index: number ) {\n    this.subscribe.add( this.renderer.listen( this.elementNumber.nativeElement, 'click', ( $event ) => {\n      this.setAngleLineHour( index * this.divisor );\n      this.change.next( this.timeClock );\n    } ) );\n  }\n\n  setElementNumberValue( hour: number ) {\n    const time = ((hour === 24) || (hour === 60)) ? 0 : hour;\n    if ( this.type === 'minHour' ) {\n      this.renderer.addClass( this.elementNumber.nativeElement, 'clock-number' );\n      this.elementNumber.nativeElement.innerHTML = ('0' + time).slice( -2 );\n    }\n    if ( this.type === 'minute' && (hour % 5) === 0 ) {\n      this.renderer.addClass( this.elementNumber.nativeElement, 'clock-number' );\n      this.elementNumber.nativeElement.innerHTML = ('0' + time).slice( -2 );\n    }\n    if ( this.type === 'hour' ) {\n      this.renderer.addClass( this.elementNumber.nativeElement, 'clock-number' );\n      this.elementNumber.nativeElement.innerHTML = ('0' + time).slice( -2 );\n    }\n  }\n\n  setRadiusNumber() {\n    this.radius = Math.round( (this.clockRadius.width / 2) - (this.type !== 'minHour' ? 15 : 40) );\n  }\n\n  setStylesNumber() {\n    this.renderer.setStyle( this.elementNumber.nativeElement, 'position', 'absolute' );\n    this.renderer.setStyle( this.elementNumber.nativeElement, 'left', this.getAngleX() + 'px' );\n    this.renderer.setStyle( this.elementNumber.nativeElement, 'top', this.getAngleY() + 'px' );\n  }\n\n  setAngleLineHour( angle: number ) {\n    this.angle = angle;\n    if ( this.type === 'minute' ) {\n      this.divisor = 6;\n      this.timeClock.minute = ('0' + angle / this.divisor).slice( -2 );\n    } else {\n      this.divisor = 30;\n      this.timeClock.hour = ('0' + angle / this.divisor).slice( -2 );\n    }\n  }\n\n  setTimeClock( value: string ) {\n    value.length > 2 ? this.createMinuteDial() : this.createHourDial();\n    if ( value.length === 2 ) {\n      this.timeClock.hour = String( value.substring( 0, 2 ) );\n      this.angle = this.getClockAngle( this.timeClock.hour );\n    } else if ( value.length === 4 ) {\n      this.timeClock.hour = String( value.substring( 0, 2 ) );\n      this.timeClock.minute = String( value.substring( 2, 4 ) );\n      this.angle = this.getClockAngle( this.timeClock.minute );\n    }\n  }\n\n  closeClockPicker() {\n    this.opened = false;\n  }\n\n  getTimeByAngle( angle ) {\n    if ( this.type === 'hour' ) {\n      const time = Math.floor( (12 * angle) / 360 ) + 12;\n      this.timeClock.hour = time > 12 ? time + '' : '00';\n      this.change.next( this.timeClock );\n    } else {\n      const time = Math.floor( (60 * angle) / 360 );\n      this.timeClock.minute = ( '0' + time).slice( -2 );\n      this.change.next( this.timeClock );\n    }\n  }\n\n  getClockAngle( value ) {\n    let radius = 12;\n    if ( this.type === 'minute' ) {\n      radius = 60;\n    }\n    return (parseInt( value, 10 ) / radius) * 360;\n  }\n\n  getClockPickerValue() {\n    return this.timeClock;\n  }\n\n  openClockPicker() {\n    this.opened = true;\n  }\n\n  getOpened() {\n    return this.opened;\n  }\n\n  getAngleX() {\n    return Math.round( this.radius * Math.cos( this.relativeAngle ) + (this.clockRadius.width / 2 ) );\n  }\n\n  getAngleY() {\n    return Math.round( this.radius * Math.sin( this.relativeAngle ) + (this.clockRadius.height / 2 ) );\n  }\n\n  ngOnDestroy() {\n    this.subscribe.unsubscribe();\n  }\n\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, EventEmitter, Input, Output, ViewChild, Renderer2, Optional, Inject, AfterContentInit,\n  OnDestroy, AfterViewInit\n} from '@angular/core';\nimport { NG_ASYNC_VALIDATORS, NG_VALIDATORS, NgModel } from '@angular/forms';\nimport { TlInput } from '../input/input';\nimport { ElementBase } from '../input/core/element-base';\nimport { MakeProvider } from '../core/base/value-accessor-provider';\nimport { ClockPickerService } from './services/clockpicker.service';\n\n@Component( {\n  selector: 'tl-clockpicker',\n  templateUrl: './clockpicker.html',\n  styleUrls: [ './clockpicker.scss' ],\n  providers: [ MakeProvider( TlClockPicker ), ClockPickerService ]\n} )\nexport class TlClockPicker extends ElementBase<string> implements AfterViewInit, AfterContentInit, OnDestroy {\n\n  @Input() label = '';\n\n  @Input() name = '';\n\n  @Input() labelSize = '';\n\n  @Input() textAlign = 'left';\n\n  @Input() labelPlacement = 'left';\n\n  @Input() readonly = false;\n\n  @Input() disabled = false;\n\n  @Input() placeholder = 'ClockPicker Field';\n\n  @Input() clearButton = true;\n\n  @Input() autoClose = false;\n\n  @Input() iconTimepicker = false;\n\n  @Input() showButtonDone = true;\n\n  @Input() buttonDoneMessage = 'Done';\n\n  @Input() color = 'primary';\n\n  @Output() changeTime: EventEmitter<any> = new EventEmitter<any>();\n\n  @ViewChild( NgModel, {static: true}  ) model: NgModel;\n\n  @ViewChild( TlInput, {static: true}  ) tlinput;\n\n  @ViewChild( 'timePickerContent', {static: true}  ) timePickerContent;\n\n  @ViewChild( 'uiClockRadius', {static: true}  ) uiClockRadius;\n\n  @ViewChild( 'wrapperDialMin', {static: true}  ) wrapperDialMin;\n\n  @ViewChild( 'wrapperDial', {static: true}  ) wrapperDial;\n\n  public iconAfter = '';\n\n  public moving = false;\n\n  public time = { hour: '00', minute: '00' };\n\n  public timepickerService: ClockPickerService;\n\n  public isClockPickerAbove: boolean;\n\n  private listeners = [];\n\n  private clockMeasure = { offsetX: 0, offsetY: 0, width: 0, height: 0 };\n\n  private wrapperMeasure = { offsetX: 0, offsetY: 0, width: 0, height: 0 };\n\n  private boxCenter = [];\n\n  constructor( @Optional() @Inject( NG_VALIDATORS ) validators: Array<any>,\n               @Optional() @Inject( NG_ASYNC_VALIDATORS ) asyncValidators: Array<any>, private renderer: Renderer2 ) {\n    super( validators, asyncValidators );\n  }\n\n  ngAfterContentInit() {\n    this.timepickerService = new ClockPickerService( this.wrapperDial, this.wrapperDialMin, this.renderer );\n    this.timepickerService.createHourDial();\n    this.handleModelChange();\n    this.handleIconClockPicker();\n    this.onCloseClockPicker();\n    this.windowMouseMove();\n    this.listenDocumentScroll();\n    this.documentMouseDown();\n  }\n\n\n  ngAfterViewInit() {\n    this.setPickerMeasures();\n    this.handleClockPickerPosition();\n  }\n\n  handleIconClockPicker() {\n    if ( this.iconTimepicker ) {\n      this.iconAfter = 'ion-clock';\n    }\n  }\n\n  setPickerMeasures() {\n    setTimeout( () => {\n      this.setClockOffset();\n      this.setWrapperOffset();\n      this.setBoxCenter();\n    }, 1 );\n  }\n\n  setClockOffset() {\n    this.clockMeasure.offsetX = this.uiClockRadius.nativeElement.offsetLeft;\n    this.clockMeasure.offsetY = this.uiClockRadius.nativeElement.offsetTop;\n    this.clockMeasure.width = this.uiClockRadius.nativeElement.offsetWidth;\n    this.clockMeasure.height = this.uiClockRadius.nativeElement.offsetHeight;\n  }\n\n  setWrapperOffset() {\n    this.wrapperMeasure.offsetX = this.timePickerContent.nativeElement.offsetLeft;\n    this.wrapperMeasure.offsetY = this.timePickerContent.nativeElement.offsetTop;\n    this.wrapperMeasure.width = this.timePickerContent.nativeElement.offsetWidth;\n    this.wrapperMeasure.height = this.timePickerContent.nativeElement.offsetHeight;\n  }\n\n  setBoxCenter() {\n    this.boxCenter = [\n      this.clockMeasure.offsetX + this.wrapperMeasure.offsetX + (this.clockMeasure.width / 2),\n      this.clockMeasure.offsetY + this.wrapperMeasure.offsetY - (this.clockMeasure.height / 2)\n    ];\n  }\n\n  handleModelChange() {\n    this.model.valueChanges.subscribe( ( value ) => {\n      if ( value ) {\n        this.timepickerService.setTimeClock( this.clearMask( this.model.value ) );\n      }\n    } );\n  }\n\n  listenDocumentScroll() {\n    this.listeners.push( this.renderer.listen( document, 'scroll', () => {\n      this.close();\n    } ) );\n  }\n\n  windowMouseMove() {\n    this.listeners.push( this.renderer.listen( document, 'mousemove', ( $event ) => {\n\n      const positionX = $event.pageX - this.boxCenter[ 0 ];\n      const positionY = -($event.pageY - ( this.boxCenter[ 1 ] + this.clockMeasure.height));\n\n      if ( this.moving ) {\n        let angle = Math.floor( Math.atan2( positionX, positionY ) * (180 / Math.PI) );\n        if ( angle < 0 ) {\n          angle = Math.floor( 360 + angle );\n        }\n        this.timepickerService.setAngleLineHour( angle - (angle % this.timepickerService.getDivisorAngle()) );\n        this.timepickerService.getTimeByAngle( angle );\n      }\n    } ) );\n  }\n\n  documentMouseDown() {\n    this.renderer.listen( document, 'mousedown', ( $event ) => {\n      this.isElementInPath( $event );\n    } );\n  }\n\n  isElementInPath( $event ) {\n    if ( $event.path.indexOf( this.timePickerContent.nativeElement ) < 0 ) {\n      this.close();\n    }\n  }\n\n  setInputValue( value ) {\n    this.tlinput.input.nativeElement.value = value.hour + ':' + value.minute;\n  }\n\n  close() {\n    this.timepickerService.closeClockPicker();\n  }\n\n  opened() {\n    return this.timepickerService.getOpened();\n  }\n\n  changeHour() {\n    this.timepickerService.createHourDial();\n  }\n\n  changeMinute() {\n    this.timepickerService.createMinuteDial();\n  }\n\n  onCloseClockPicker() {\n    this.timepickerService.change.subscribe( ( value ) => {\n      this.setInputValue( value );\n      this.changeTime.emit( value );\n    } );\n  }\n\n  onKeyUp( $event ) {\n    const replaced = this.clearMask( $event.target.value );\n    if ( replaced.length <= 2 ) {\n      this.timepickerService.setTimeClock( replaced );\n    } else {\n      this.timepickerService.setTimeClock( replaced );\n    }\n  }\n\n  clearMask( value ) {\n    return value.replace( /[^\\d]+/g, '' );\n  }\n\n  open() {\n    this.timepickerService.openClockPicker();\n    this.handleClockPickerPosition();\n    this.setPickerMeasures();\n  }\n\n  onMouseDown() {\n    this.moving = true;\n  }\n\n  onMouseUp() {\n    this.moving = false;\n    if ( this.isHourDial() ) {\n      setTimeout( () => this.timepickerService.createMinuteDial() );\n    } else {\n      if ( this.autoClose ) {\n        this.timepickerService.closeClockPicker();\n      }\n    }\n  }\n\n  handleClockPickerPosition() {\n    const timePickerHeight = this.showButtonDone ? 325 : 300;\n    const totalHeight = (this.tlinput.input.nativeElement.getBoundingClientRect().top ) + timePickerHeight;\n    if ( (window.innerHeight - totalHeight) < 0 ) {\n      this.setTopPositionTop();\n      this.setLeftPosition();\n      return;\n    }\n    this.setWrapperClockPickerPositionBottom();\n  }\n\n  setTopPositionTop() {\n    this.isClockPickerAbove = true;\n    const timePickerHeight = this.showButtonDone ? 325 : 300;\n    this.timePickerContent.nativeElement.style.top =\n      ( this.tlinput.input.nativeElement.getBoundingClientRect().top - this.tlinput.input.nativeElement.offsetHeight )\n      - timePickerHeight + 'px';\n  }\n\n  setWrapperClockPickerPositionBottom() {\n    this.setTopPositionBottom();\n    this.setLeftPosition();\n  }\n\n  setTopPositionBottom() {\n    this.isClockPickerAbove = false;\n    this.timePickerContent.nativeElement.style.top =\n      ( this.tlinput.input.nativeElement.getBoundingClientRect().top + this.tlinput.input.nativeElement.offsetHeight ) + 'px';\n  }\n\n  setLeftPosition() {\n    this.timePickerContent.nativeElement.style.left = this.tlinput.input.nativeElement.getBoundingClientRect().left + 'px';\n  }\n\n\n  isHourDial() {\n    return this.timepickerService.type === 'hour';\n  }\n\n  onClearInput( $event ) {\n    $event.stopPropagation();\n  }\n\n  ngOnDestroy() {\n    this.listeners.forEach( ( value ) => value() );\n  }\n\n\n}\n\n","<div [class]=\"'tl-clockpicker ' + color\">\n  <tl-input #input\n            [label]=\"label\"\n            [labelSize]=\"labelSize\"\n            [name]=\"name\"\n            (clear)=\"onClearInput($event)\"\n            (keyup)=\"onKeyUp($event)\"\n            (focus)=\"open()\"\n            [iconAfter]=\"iconAfter\"\n            [textAlign]=\"textAlign\"\n            [mask]=\"'00:00'\"\n            [labelPlacement]=\"labelPlacement\"\n            [readonly]=\"readonly ? true : null\"\n            [disabled]=\"disabled ? true : null\"\n            [(ngModel)]=\"value\"\n            [placeholder]=\"placeholder\"\n            [clearButton]=\"clearButton\">\n  </tl-input>\n  <div class=\"ui-wrapper-clockpicker-content\" #timePickerContent\n       [style.display]=\"opened() ? 'block' : 'none'\">\n    <div class=\"ui-arrow-up\" #arrow [style.display]=\"opened() && !isClockPickerAbove ? 'block' : 'none'\"></div>\n    <div class=\"ui-clockpicker-wrapper\">\n      <div class=\"ui-clockpicker-header\">\n        <span [ngClass]=\"{ 'selected-time' : timepickerService.type === 'hour' }\"\n              (click)=\"changeHour()\">{{ timepickerService.getClockPickerValue().hour }}</span>\n        :\n        <span [ngClass]=\"{ 'selected-time' : timepickerService.type === 'minute'}\"\n              (click)=\"changeMinute()\">{{ timepickerService.getClockPickerValue().minute }}</span>\n      </div>\n      <div class=\"ui-clockpicker-content\" [ngClass]=\"{ 'noBorderBottom' : !showButtonDone }\">\n        <div class=\"ui-clock\" #uiClockRadius>\n          <div class=\"ui-point-center\" #point></div>\n          <div class=\"ui-clock-line\" [style.transform]=\"'rotate('+ timepickerService.getAngleClock() + 'deg)'\">\n            <div class=\"ui-clock-line-circle\"></div>\n          </div>\n        </div>\n        <div class=\"clockpicker-dial\" (mousedown)=\"onMouseDown()\" (mouseup)=\"onMouseUp()\" #wrapperDial></div>\n        <div class=\"clockpicker-dial dial-min\" (mousedown)=\"onMouseDown()\" (mouseup)=\"onMouseUp()\" #wrapperDialMin></div>\n      </div>\n      <div *ngIf=\"showButtonDone\" class=\"ui-clockpicker-footer\" (click)=\"close()\">\n        {{ buttonDoneMessage }}\n      </div>\n      <div class=\"ui-arrow-down\" [style.display]=\"opened() && isClockPickerAbove ? 'block' : 'none'\"></div>\n    </div>\n  </div>\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TlClockPicker } from './clockpicker';\nimport { InputModule } from '../input/index';\nimport { FormsModule } from '@angular/forms';\nimport { MiscModule } from '../misc/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    InputModule,\n    MiscModule,\n    FormsModule\n  ],\n  declarations: [\n    TlClockPicker,\n  ],\n  exports: [\n    TlClockPicker,\n  ],\n} )\nexport class ClockPickerModule {\n}\n","export class Cmyk {\n  constructor(public c: number, public m: number, public y: number, public k: number) {\n  }\n}\n\nexport class Hsla {\n  constructor(public h: number, public s: number, public l: number, public a?: number) {\n  }\n}\n\nexport class Hsva {\n  constructor(public h: number, public s: number, public v: number, public a: number) {\n  }\n}\n\nexport class Rgba {\n  constructor(public r: number, public g: number, public b: number, public a: number) {\n  }\n}\n","import {Hsla, Hsva, Rgba} from './colorpicker-formats';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ColorPickerHelpers {\n  rgbaToHex(rgba: Rgba, allowHex8?: boolean): string {\n    let hex = '#' + ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b).toString(16).substr(1);\n    if (allowHex8) {\n      hex += ((1 << 8) | Math.round(rgba.a * 255)).toString(16).substr(1);\n    }\n    return hex;\n  }\n\n  hexToRgb(hex): Array<number> {\n    const r = parseInt(hex.substring(1, 3), 16);\n    const g = parseInt(hex.substring(3, 5), 16);\n    const b = parseInt(hex.substring(5, 7), 16);\n    const a = Math.round((parseInt(hex.substring(7, 9), 16) / 255) * 100) / 100;\n    return (hex.length > 7) ? [r, g, b, a] : [r, g, b, 1];\n  }\n\n  hexToRgbString(hex): string {\n    const r = parseInt(hex.substring(1, 3), 16);\n    const g = parseInt(hex.substring(3, 5), 16);\n    const b = parseInt(hex.substring(5, 7), 16);\n    const a = Math.round((parseInt(hex.substring(7, 9), 16) / 255) * 100) / 100;\n    return (hex.length > 7) ? 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')' : 'rgba(' + r + ',' + g + ',' + b + ',1)';\n  }\n\n  public stringToHsva(colorString: string = '', allowHex8: boolean = false): Hsva | null {\n    let hsva: Hsva | null = null;\n    colorString = (colorString || '').toLowerCase();\n\n    const stringParsers = [\n      {\n        re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n        parse: (execResult: any) => {\n          return new Rgba(parseInt(execResult[2], 10) / 255,\n            parseInt(execResult[3], 10) / 255,\n            parseInt(execResult[4], 10) / 255,\n            isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n        }\n      }, {\n        re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n        parse: ( execResult: any) => {\n          return new Hsla(parseInt(execResult[2], 10) / 360,\n            parseInt(execResult[3], 10) / 100,\n            parseInt(execResult[4], 10) / 100,\n            isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n        }\n      }\n    ];\n\n    if (allowHex8) {\n      stringParsers.push({\n        re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\n        parse: (execResult: any) => {\n          return new Rgba(parseInt(execResult[1], 16) / 255,\n            parseInt(execResult[2], 16) / 255,\n            parseInt(execResult[3], 16) / 255,\n            parseInt(execResult[4] || 'FF', 16) / 255);\n        }\n      });\n    } else {\n      stringParsers.push({\n        re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\n        parse: (execResult: any) => {\n          return new Rgba(parseInt(execResult[1], 16) / 255,\n            parseInt(execResult[2], 16) / 255,\n            parseInt(execResult[3], 16) / 255,\n            1);\n        }\n      });\n    }\n\n    stringParsers.push({\n      re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\n      parse: (execResult: any) => {\n        return new Rgba(parseInt(execResult[1] + execResult[1], 16) / 255,\n          parseInt(execResult[2] + execResult[2], 16) / 255,\n          parseInt(execResult[3] + execResult[3], 16) / 255,\n          1);\n      }\n    });\n\n    for (const key in stringParsers) {\n      if (stringParsers.hasOwnProperty(key)) {\n        const parser = stringParsers[key];\n        const match = parser.re.exec(colorString), color: any = match && parser.parse(match);\n        if (color) {\n          if (color instanceof Rgba) {\n            hsva = this.rgbaToHsva(color);\n          } else if (color instanceof Hsla) {\n            hsva = this.hsla2hsva(color);\n          }\n          return hsva;\n        }\n      }\n    }\n    return hsva;\n  }\n\n  public rgbaToHsva(rgba: Rgba): Hsva {\n    let h: number, s: number;\n    const r = Math.min(rgba.r, 1), g = Math.min(rgba.g, 1);\n    const b = Math.min(rgba.b, 1), a = Math.min(rgba.a, 1);\n    const max = Math.max(r, g, b), min = Math.min(r, g, b);\n    const v: number = max, d = max - min;\n\n    s = (max === 0) ? 0 : d / max;\n    if (max === min) {\n      h = 0;\n    } else {\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n        case g:\n          h = (b - r) / d + 2;\n          break;\n        case b:\n          h = (r - g) / d + 4;\n          break;\n        default:\n          h = 0;\n      }\n      h /= 6;\n    }\n    return new Hsva(h, s, v, a);\n  }\n\n  public hsla2hsva(hsla: Hsla): Hsva {\n    const h = Math.min(hsla.h, 1), s = Math.min(hsla.s, 1);\n    const l = Math.min(hsla.l, 1), a = Math.min(hsla.a, 1);\n\n    if (l === 0) {\n      return new Hsva(h, 0, 0, a);\n    } else {\n      const v = l + s * (1 - Math.abs(2 * l - 1)) / 2;\n      return new Hsva(h, 2 * (v - l) / v, v, a);\n    }\n  }\n\n}\n","import {Injectable} from '@angular/core';\n\n@Injectable()\nexport class ColorPickerService {\n\n  public positionSchemeX = 222;\n\n  public positionSchemeY = -8;\n\n  public positionHue = 0;\n\n  public positionAlpha = 144;\n\n  public opacity = 1;\n\n  public rgbaColor = 'rgba(255,0,0,' + this.opacity + ')';\n\n  public rgbaColorPreview = 'rgba(255,0,0,' + this.opacity + ')';\n\n  public presetColors: string[] = [];\n\n  constructor() {\n  }\n\n  getPositionHue(): number {\n    return this.positionHue;\n  }\n\n  setPositionHue($event, left, width) {\n    if ($event.clientX > left && $event.clientX < (left + width)) {\n      this.positionHue = $event.clientX - left;\n    }\n\n    if ($event.clientX < left) {\n      this.positionHue = 1;\n    }\n\n    if ($event.clientX > (left + width)) {\n      this.positionHue = width;\n    }\n  }\n\n  setPositionHueManual(pos) {\n    this.positionHue = pos;\n  }\n\n  getPositionAlpha(): number {\n    return this.positionAlpha;\n  }\n\n  setPositionAlpha($event, left, width) {\n    if ($event.clientX > left && $event.clientX < (left + width)) {\n      this.positionAlpha = $event.clientX - left;\n    }\n\n    if ($event.clientX < left) {\n      this.positionAlpha = 1;\n    }\n\n    if ($event.clientX > (left + width)) {\n      this.positionAlpha = width;\n    }\n  }\n\n  setPositionAlphaManual(pos) {\n    this.positionAlpha = pos;\n  }\n\n  getPositionSchemeX(): number {\n    return this.positionSchemeX;\n  }\n\n  getPositionSchemeY(): number {\n    return this.positionSchemeY;\n  }\n\n  setPositionScheme($event, left, top, width, height, midCursorWidth) {\n    if ($event.clientX > left && $event.clientX < (left + width) && $event.clientY > top && $event.clientY < (top + height)) {\n      this.positionSchemeX = $event.clientX - left - midCursorWidth;\n      this.positionSchemeY = $event.clientY - top - midCursorWidth;\n    }\n\n    if ($event.clientX < left && $event.clientY > top && $event.clientY < (top + height)) {\n      this.positionSchemeX = -midCursorWidth;\n      this.positionSchemeY = $event.clientY - top - midCursorWidth;\n    }\n\n    if ($event.clientY < top && $event.clientX > left && $event.clientX < (left + width)) {\n      this.positionSchemeX = $event.clientX - left - midCursorWidth;\n      this.positionSchemeY = -midCursorWidth;\n    }\n\n    if ($event.clientX > (left + width) && $event.clientY > top && $event.clientY < (top + height)) {\n      this.positionSchemeX = width - midCursorWidth;\n      this.positionSchemeY = $event.clientY - top - midCursorWidth;\n    }\n\n    if ($event.clientY > (top + height) && $event.clientX > left && $event.clientX < (left + width)) {\n      this.positionSchemeX = $event.clientX - left - midCursorWidth;\n      this.positionSchemeY = height - midCursorWidth;\n    }\n\n    if ($event.clientX < left && $event.clientY < top) {\n      this.positionSchemeX = -midCursorWidth;\n      this.positionSchemeY = -midCursorWidth;\n    }\n\n    if ($event.clientY > (top + height) && $event.clientX < left) {\n      this.positionSchemeX = -midCursorWidth;\n      this.positionSchemeY = height - midCursorWidth;\n    }\n\n    if ($event.clientX > (left + width) && $event.clientY < top) {\n      this.positionSchemeX = width - midCursorWidth;\n      this.positionSchemeY = - midCursorWidth;\n    }\n\n    if ($event.clientY > (top + height) && $event.clientX > (left + width)) {\n      this.positionSchemeX = width - midCursorWidth;\n      this.positionSchemeY = height - midCursorWidth;\n    }\n  }\n\n  setPositionSchemeManual(posX, posY) {\n    this.positionSchemeX = posX;\n    this.positionSchemeY = posY;\n  }\n\n  setOpacityColor(opacity) {\n    this.opacity = opacity;\n  }\n\n  setRgbaColor(color) {\n    this.rgbaColor = color;\n  }\n\n  setRgbaColorPreview(color) {\n    this.rgbaColorPreview = color;\n  }\n\n  getPresetColor(): string[] {\n    return this.presetColors;\n  }\n\n  setPresetColor(color: string) {\n    if (!this.presetColors.filter((colors) => (colors === color)).length) {\n      this.presetColors = this.presetColors.concat(color);\n    }\n    if (this.presetColors.length > 16) {\n      this.presetColors.splice(0, 1);\n    }\n  }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Component,\n  Input,\n  OnInit, ViewChild,\n} from '@angular/core';\n\nimport { ColorPickerService } from '../../services/colorpicker-service';\n\nimport { ColorPickerHelpers } from '../../helpers/colorpicker-helpers';\nimport {animate, style, transition, trigger} from '@angular/animations';\n\n@Component({\n  selector: 'tl-colorpicker-input',\n  templateUrl: './colorpicker-input.html',\n  styleUrls: ['./colorpicker-input.scss'],\n  animations: [\n    trigger(\n      'enterAnimation', [\n        transition( ':enter', [\n          style( { transform: 'translateX(100%)', opacity: 0 } ),\n          animate( '250ms', style( { transform: 'translateX(0)', opacity: 1 } ) )\n        ] ),\n        transition( ':leave', [\n          style( { transform: 'translateX(0)', opacity: 1 } ),\n          animate( '250ms', style( { transform: 'translateX(100%)', opacity: 0 } ) )\n        ] )\n      ]\n    )\n  ]\n})\n\nexport class TlColorPickerInput implements OnInit {\n\n  @Input('selectedColor') selectedColor: string;\n\n  @Input() color = 'basic';\n\n  @ViewChild( 'inputColor', {static: true}  ) inputElement;\n\n  public saved = false;\n\n  public formatColor = false;\n\n  private interval;\n\n  constructor(private colorPickerService: ColorPickerService,\n              private colorPickerHelpers: ColorPickerHelpers) { }\n\n  ngOnInit() { }\n\n  getColorFormat() {\n    const colorFormat = this.selectedColor;\n    if (this.formatColor) {\n      return this.colorPickerHelpers.hexToRgbString(colorFormat);\n    }\n    return colorFormat;\n  }\n\n  copyInputColor() {\n    this.inputElement.nativeElement.select();\n    document.execCommand('copy');\n    this.inputElement.nativeElement.setSelectionRange(0, this.inputElement.nativeElement.value.length);\n    this.showCopyMessage();\n  }\n\n  showCopyMessage() {\n    this.saved = true;\n    clearInterval( this.interval );\n    this.interval = setInterval( () => {\n      this.saved = false;\n    }, 1000 );\n  }\n\n}\n","<div [class]=\"'ui-colorpicker-input ' + color\">\n  <div class=\"display\">\n    <div class=\"left\">\n      <input #inputColor readonly type=\"text\" (click)=\"copyInputColor()\" [ngModel]=\"getColorFormat()\" spellcheck=\"false\">\n      <div class=\"copy-message\" [@enterAnimation]=\"saved\" *ngIf=\"saved\">\n        <tl-icon [lib]=\"'ion'\">checkmark-circle-outline</tl-icon>\n      </div>\n    </div>\n    <div class=\"right\">\n      <tl-icon [lib]=\"'ion'\" class=\"rotate-90\" (click)=\"formatColor = !formatColor\">code</tl-icon>\n    </div>\n  </div>\n  <span>{{ (!formatColor) ? 'HEX' : 'RGBA' }}</span>\n</div>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  AfterContentInit,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output, Renderer2,\n  SimpleChanges,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { Observable, of } from 'rxjs';\n\nimport { OverlayAnimation } from '../../../core/directives/overlay-animation';\nimport { Rgba } from '../../helpers/colorpicker-formats';\nimport { ColorPickerService } from '../../services/colorpicker-service';\nimport { ColorPickerHelpers } from '../../helpers/colorpicker-helpers';\nimport { ColorPickerMovable } from '../../interfaces/colorpicker-content-interface';\n\n@Component({\n  selector: 'tl-colorpicker-content',\n  templateUrl: './colorpicker-content.html',\n  styleUrls: ['./colorpicker-content.scss'],\n  animations: [ OverlayAnimation ]\n})\n\nexport class TlColorPickerContent implements OnInit, AfterContentInit, OnChanges {\n\n  @Input('overlayPosition') overlayPosition: string;\n\n  @Input('selectedColor') selectedColor: string;\n\n  @Input() recentColors = false;\n\n  @Input() returnFormatColor = false;\n\n  @Input() color = 'basic';\n\n  @Output('selectColor') selectColor: EventEmitter<any> = new EventEmitter<any>();\n\n  @ViewChild(TemplateRef, {static: true} ) template: TemplateRef<any>;\n\n  @ViewChild('content', {static: true} ) content: ElementRef;\n\n  @ViewChild('scheme', {static: true} ) scheme: ElementRef;\n\n  @ViewChild('cursorScheme', {static: true} ) cursorScheme: ElementRef;\n\n  @ViewChild('hue', {static: true} ) hue: ElementRef;\n\n  @ViewChild('hueSlider', {static: true} ) hueSlider: ElementRef;\n\n  @ViewChild('alpha', {static: true} ) alpha: ElementRef;\n\n  @ViewChild('alphaSlider', {static: true} ) alphaSlider: ElementRef;\n\n  public positionSchemeX: number;\n\n  public positionSchemeY: number;\n\n  public contextScheme;\n\n  public contextHueSlider;\n\n  public contextAlphaSlider;\n\n  private isMoving: ColorPickerMovable = { scheme: false, hue: false, alpha: false };\n\n  public presetColors: string[];\n\n  constructor(private renderer: Renderer2,\n              private colorPickerService: ColorPickerService,\n              private colorPickerHelpers: ColorPickerHelpers) { }\n\n  ngOnInit() {\n    this.getPositionSchemeX();\n    this.getPositionSchemeY();\n    this.getPositionHue();\n    this.getPositionAlpha();\n    this.getPresetColor();\n    this.windowMouseEvent();\n  }\n\n  ngAfterContentInit() {\n    this.createCanvasScheme();\n    this.createCanvasHue();\n    this.createCanvasAlpha(this.getRgbaColorPreview());\n  }\n\n  windowMouseEvent() {\n    this.renderer.listen(window, 'mousemove', ($event) => {\n      if (this.isMoving.scheme) {\n        this.onMouseMoveScheme($event);\n      }\n      if (this.isMoving.hue) {\n        this.onMouseMoveHue($event);\n      }\n      if (this.isMoving.alpha) {\n        this.onMouseMoveAlpha($event);\n      }\n    });\n\n    this.renderer.listen(window, 'mouseup', () => {\n      this.isMoving = { scheme: false, hue: false, alpha: false };\n    });\n  }\n\n  getPositionSchemeX(): number {\n    return this.colorPickerService.getPositionSchemeX();\n  }\n\n  getPositionSchemeY(): number {\n    return this.colorPickerService.getPositionSchemeY();\n  }\n\n  setPositionScheme($event): Observable<number> {\n    const offset = this.content.nativeElement.getBoundingClientRect();\n    const width = this.scheme.nativeElement.offsetWidth;\n    const height = this.scheme.nativeElement.offsetHeight;\n    const midCursorWidth = this.cursorScheme.nativeElement.offsetWidth / 2;\n    this.colorPickerService.setPositionScheme($event, offset.left, offset.top, width, height, midCursorWidth);\n    this.changeColorScheme(this.getPositionSchemeX() + midCursorWidth, this.getPositionSchemeY() + midCursorWidth);\n    return of(this.colorPickerService.positionSchemeX, this.colorPickerService.positionSchemeY);\n  }\n\n  getPositionHue(): number {\n    return this.colorPickerService.getPositionHue();\n  }\n\n  setPositionHue($event): Observable<number> {\n    const offset = this.hue.nativeElement.getBoundingClientRect();\n    const width = this.hue.nativeElement.offsetWidth;\n    this.colorPickerService.setPositionHue($event, offset.left, width);\n    this.changeColor(this.colorPickerService.getPositionHue());\n    return of(this.colorPickerService.positionHue);\n  }\n\n  getPositionAlpha(): number {\n    return this.colorPickerService.getPositionAlpha();\n  }\n\n  setPositionAlpha($event): Observable<number> {\n    const offset = this.alpha.nativeElement.getBoundingClientRect();\n    const width = this.alpha.nativeElement.offsetWidth;\n    this.colorPickerService.setPositionAlpha($event, offset.left, width);\n    this.changeOpacity(this.colorPickerService.getPositionAlpha());\n    return of(this.colorPickerService.positionAlpha);\n  }\n\n  public onMouseDownScheme($event) {\n    this.isMoving.scheme = true;\n    this.setPositionScheme($event);\n  }\n\n\n  public onMouseMoveScheme($event) {\n    if (!this.isMoving.scheme) {\n      return;\n    }\n    this.setPositionScheme($event);\n  }\n\n  public onMouseDownHue($event) {\n    this.isMoving.hue = true;\n    this.setPositionHue($event);\n  }\n\n  public onMouseMoveHue($event) {\n    if (!this.isMoving.hue) {\n      return;\n    }\n    this.setPositionHue($event);\n  }\n\n  public onMouseDownAlpha($event) {\n    this.isMoving.alpha = true;\n    this.setPositionAlpha($event);\n  }\n\n  public onMouseMoveAlpha($event) {\n    if (!this.isMoving.alpha) {\n      return;\n    }\n    this.setPositionAlpha($event);\n  }\n\n  getOpacityColor(): number {\n    return this.colorPickerService.opacity;\n  }\n\n  setOpacityColor(opacity): Observable<number> {\n    this.colorPickerService.setOpacityColor(opacity);\n    this.getOpacityColor();\n    return of(this.colorPickerService.opacity);\n  }\n\n  getRgbaColor(): string {\n    return this.colorPickerService.rgbaColor;\n  }\n\n  setRgbaColor(color): Observable<string> {\n    this.colorPickerService.setRgbaColor(color);\n    this.getRgbaColor();\n    return of(this.colorPickerService.rgbaColor);\n  }\n\n  getRgbaColorPreview(): string {\n    return this.colorPickerService.rgbaColorPreview;\n  }\n\n  setRgbaColorPreview(color): Observable<string> {\n    this.colorPickerService.setRgbaColorPreview(color);\n    this.getRgbaColorPreview();\n    return of(this.colorPickerService.rgbaColorPreview);\n  }\n\n  createCanvasScheme() {\n    this.contextScheme = this.scheme.nativeElement.getContext('2d');\n    this.contextScheme.rect(0, 0, this.contextScheme.canvas.width, this.contextScheme.canvas.height);\n    this.fillGradient();\n  }\n\n  deleteCanvasScheme() {\n    this.contextScheme = this.scheme.nativeElement.getContext('2d');\n    this.contextScheme.clearRect(0, 0, this.contextScheme.canvas.width, this.contextScheme.canvas.height);\n  }\n\n  fillGradient() {\n    this.contextScheme.fillStyle = this.getRgbaColor();\n    this.contextScheme.fillRect(0, 0, this.contextScheme.canvas.width, this.contextScheme.canvas.height);\n\n    const gridWhite = this.contextScheme.createLinearGradient(0, 0, this.contextScheme.canvas.width, 0);\n    gridWhite.addColorStop(0, 'rgba(255,255,255,1)');\n    gridWhite.addColorStop(1, 'rgba(255,255,255,0)');\n    this.contextScheme.fillStyle = gridWhite;\n    this.contextScheme.fillRect(0, 0, this.contextScheme.canvas.width, this.contextScheme.canvas.height);\n\n    const gridBlack = this.contextScheme.createLinearGradient(0, 0, 0, this.contextScheme.canvas.height);\n    gridBlack.addColorStop(0, 'rgba(0,0,0,0)');\n    gridBlack.addColorStop(1, 'rgba(0,0,0,1)');\n    this.contextScheme.fillStyle = gridBlack;\n    this.contextScheme.fillRect(0, 0, this.contextScheme.canvas.width, this.contextScheme.canvas.height);\n  }\n\n  createCanvasHue() {\n    this.contextHueSlider = this.hueSlider.nativeElement.getContext('2d');\n    this.contextHueSlider.rect(0, 0, this.contextHueSlider.canvas.width, this.contextHueSlider.canvas.height);\n    const hue = this.contextHueSlider.createLinearGradient(0, 0, this.contextHueSlider.canvas.width, 0);\n    hue.addColorStop(0, 'rgba(255, 0, 0, 1)');\n    hue.addColorStop(0.17, 'rgba(255, 255, 0, 1)');\n    hue.addColorStop(0.34, 'rgba(0, 255, 0, 1)');\n    hue.addColorStop(0.51, 'rgba(0, 255, 255, 1)');\n    hue.addColorStop(0.68, 'rgba(0, 0, 255, 1)');\n    hue.addColorStop(0.85, 'rgba(255, 0, 255, 1)');\n    hue.addColorStop(1, 'rgba(255, 0, 0, 1)');\n    this.contextHueSlider.fillStyle = hue;\n    this.contextHueSlider.fill();\n  }\n\n  deleteCanvasHue() {\n    this.contextHueSlider = this.hueSlider.nativeElement.getContext('2d');\n    this.contextHueSlider.clearRect(0, 0, this.contextHueSlider.canvas.width, this.contextHueSlider.canvas.height);\n  }\n\n  createCanvasAlpha(color) {\n    this.contextAlphaSlider = this.alphaSlider.nativeElement.getContext('2d');\n    this.contextAlphaSlider.rect(0, 0, this.contextAlphaSlider.canvas.width, this.contextAlphaSlider.canvas.height);\n    this.opacityGradient(color);\n  }\n\n  deleteCanvasAlpha() {\n    this.contextAlphaSlider = this.alphaSlider.nativeElement.getContext('2d');\n    this.contextAlphaSlider.clearRect(0, 0, this.contextAlphaSlider.canvas.width, this.contextAlphaSlider.canvas.height);\n  }\n\n  opacityGradient(color) {\n    const context = this.alphaSlider.nativeElement.getContext('2d');\n    context.clearRect(0, 0, this.contextAlphaSlider.canvas.width, this.contextAlphaSlider.canvas.height);\n\n    const gridTransparent = this.contextAlphaSlider.createLinearGradient(0, 0, this.contextAlphaSlider.canvas.width, 0);\n    gridTransparent.addColorStop(0, 'transparent');\n    gridTransparent.addColorStop(1, color);\n    this.contextAlphaSlider.fillStyle = gridTransparent;\n    this.contextAlphaSlider.fillRect(0, 0, this.contextAlphaSlider.canvas.width, this.contextAlphaSlider.canvas.height);\n  }\n\n  changeColorScheme(x, y) {\n    x = (x >= this.scheme.nativeElement.offsetWidth) ? (x - 1) : x;\n    const imageData = this.contextScheme.getImageData(x, y, 1, 1).data;\n    this.setColor(imageData);\n    this.opacityGradient(this.getRgbaColor());\n  }\n\n  changeColor(x) {\n    const imageData = this.contextHueSlider.getImageData((x - 1), 1, 1, 1).data;\n    this.setColor(imageData);\n    this.fillGradient();\n    this.opacityGradient(this.getRgbaColor());\n\n    this.colorPickerService.positionSchemeX = 222;\n    this.colorPickerService.positionSchemeY = -8;\n    this.getPositionSchemeX();\n    this.getPositionSchemeY();\n  }\n\n  changeOpacity(x) {\n    this.setOpacityColor(Math.round(((100 * x) / this.alphaSlider.nativeElement.offsetWidth)) / 100);\n    const imageDataAlpha = this.contextAlphaSlider.getImageData(this.contextAlphaSlider.canvas.width - 1, 1, 1, 1).data;\n    this.setColor(imageDataAlpha);\n  }\n\n  setColor(imageData) {\n    this.setRgbaColor('rgba(' + imageData[0] + ',' + imageData[1] + ',' + imageData[2] + ',1)');\n    const rgba = new Rgba(imageData[0], imageData[1], imageData[2], this.getOpacityColor());\n    const hex = (this.getOpacityColor() === 1) ? this.colorPickerHelpers.rgbaToHex(rgba) :\n      this.colorPickerHelpers.rgbaToHex(rgba, true);\n    this.setRgbaColorPreview(hex);\n    this.selectColor.emit({'hex': hex, 'rgba': this.colorPickerHelpers.hexToRgbString(hex)});\n  }\n\n  getPresetColor(): void {\n    this.presetColors = this.colorPickerService.getPresetColor();\n  }\n\n  setPresetColor(color): Observable<string[]> {\n    this.colorPickerService.setPresetColor(color);\n    this.getPresetColor();\n    return of(this.colorPickerService.presetColors);\n  }\n\n  changeColorByPreset(color) {\n    this.setRgbaColor(color);\n    this.setRgbaColorPreview(color);\n    this.selectColor.emit({'hex': this.getRgbaColorPreview(), 'rgba': this.colorPickerHelpers.hexToRgbString(this.getRgbaColorPreview())});\n  }\n\n  updateColor(value) {\n    if (value['selectedColor'] && this.selectedColor !== undefined && this.selectedColor) {\n      const selected: Array<number> = this.colorPickerHelpers.hexToRgb(this.selectedColor);\n      const hsva = (this.selectedColor.length > 7) ? this.colorPickerHelpers.stringToHsva(this.selectedColor, true)\n        : this.colorPickerHelpers.stringToHsva(this.selectedColor);\n      if (!this.isMoving.scheme && !this.isMoving.hue && !this.isMoving.alpha && hsva !== null) {\n        this.colorPickerService.setPositionHueManual(hsva.h * 144);\n        this.colorPickerService.setPositionSchemeManual(Math.floor((hsva.s * 230) - 8), Math.floor(((1 - hsva.v) * 130) - 8));\n        this.colorPickerService.setPositionAlphaManual(hsva.a * 144);\n        this.deleteCanvasHue();\n        this.createCanvasHue();\n        const imageDataHue = this.contextHueSlider.getImageData(hsva.h * 144, 1, 1, 1).data;\n        this.setRgbaColor('rgba(' + imageDataHue[0] + ',' + imageDataHue[1] + ',' + imageDataHue[2] + ',1)');\n        this.setRgbaColorPreview('rgba(' + selected[0] + ',' + selected[1] + ',' + selected[2] + ',1)');\n        this.deleteCanvasAlpha();\n        this.createCanvasAlpha(this.getRgbaColorPreview());\n        this.deleteCanvasScheme();\n        this.createCanvasScheme();\n      }\n    }\n  }\n\n  ngOnChanges(value: SimpleChanges) {\n    this.updateColor(value);\n  }\n\n}\n","<div class=\"ui-arrow-up\" *ngIf=\"overlayPosition === 'bottom'\" @overlay></div>\n<div [class]=\"'ui-wrapper-colorpicker-content ' + color\" @overlay>\n  <div #content class=\"ui-colorpicker-content\">\n    <div class=\"ui-colorpicker-scheme\" (mousedown)=\"onMouseDownScheme($event)\">\n      <canvas #scheme width=\"230\" height=\"130\"></canvas>\n      <div #cursorScheme class=\"cursor\" [style.left.px]=\"getPositionSchemeX()\" [style.top.px]=\"getPositionSchemeY()\"></div>\n    </div>\n    <div class=\"ui-colorpicker-select\">\n      <div class=\"left\">\n        <div class=\"selected-color-background\"></div>\n        <a (click)=\"setPresetColor(selectedColor)\">\n          <div class=\"selected-color\" [style.backgroundColor]=\"selectedColor\"></div>\n        </a>\n      </div>\n      <div class=\"right\">\n        <div #hue class=\"hue\" (mousedown)=\"onMouseDownHue($event)\">\n          <canvas #hueSlider width=\"144\" height=\"14\"></canvas>\n          <div class=\"cursor\" [style.left.px]=\"getPositionHue()\"></div>\n        </div>\n        <div #alpha class=\"alpha\" (mousedown)=\"onMouseDownAlpha($event)\">\n          <canvas #alphaSlider width=\"144\" height=\"14\"></canvas>\n          <div class=\"cursor\" [style.left.px]=\"getPositionAlpha()\"></div>\n        </div>\n      </div>\n    </div>\n    <tl-colorpicker-input *ngIf=\"returnFormatColor === true\" [selectedColor]=\"selectedColor\"></tl-colorpicker-input>\n    <div class=\"ui-colorpicker-preset\" *ngIf=\"presetColors.length !== 0 && recentColors === true\">\n      <div class=\"preset-color\" *ngFor=\"let preset of presetColors.slice().reverse()\" (click)=\"changeColorByPreset(preset)\" [style.backgroundColor]=\"preset\"></div>\n    </div>\n  </div>\n  <div class=\"ui-arrow-down\" *ngIf=\"overlayPosition === 'top'\" @overlay></div>\n</div>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  Renderer2,\n  ViewChild\n} from '@angular/core';\nimport { TlInput } from '../input/input';\nimport { TlButton } from '../button/button';\nimport {\n  CdkConnectedOverlay,\n  CdkOverlayOrigin,\n  ConnectedOverlayPositionChange\n} from '@angular/cdk/overlay';\nimport {\n  animate,\n  style,\n  transition,\n  trigger\n} from '@angular/animations';\nimport { ColorPickerHelpers } from './helpers/colorpicker-helpers';\nimport { ColorPickerService } from './services/colorpicker-service';\nimport { KeyEvent} from '../core/enums/key-events';\nimport { ValueAccessorBase} from '../input/core/value-accessor';\nimport {\n  FormControlName,\n  NgModel\n} from '@angular/forms';\nimport { MakeProvider } from '../core/base/value-accessor-provider';\n\n@Component({\n  selector: 'tl-colorpicker',\n  templateUrl: './colorpicker.html',\n  styleUrls: ['./colorpicker.scss'],\n  providers: [ ColorPickerService, ColorPickerHelpers, MakeProvider(TlColorPicker)],\n  animations: [\n    trigger(\n      'enterAnimation', [\n        transition( ':enter', [\n          style( { transform: 'translateX(100%)', opacity: 0 } ),\n          animate( '250ms', style( { transform: 'translateX(0)', opacity: 1 } ) )\n        ] ),\n        transition( ':leave', [\n          style( { transform: 'translateX(0)', opacity: 1 } ),\n          animate( '250ms', style( { transform: 'translateX(100%)', opacity: 0 } ) )\n        ] )\n      ]\n    )\n  ]\n})\nexport class TlColorPicker extends ValueAccessorBase<string> implements OnInit, AfterContentInit {\n\n  @Input() label = '';\n\n  @Input() labelSize = '100px';\n\n  @Input() name = '';\n\n  @Input() textAlign = 'left';\n\n  @Input() labelPlacement = 'left';\n\n  @Input() readonly = false;\n\n  @Input() disabled = false;\n\n  @Input() placeholder = 'Colorpicker Field';\n\n  @Input() mode: 'inline' | 'onlyColor' | 'fromOrigin' | 'input' = 'input';\n\n  @Input() recentColors = false;\n\n  @Input() returnFormatColor = false;\n\n  @Input() copyButton = false;\n\n  @Input() openFocus = false;\n\n  @Input() elementOrigin;\n\n  @Input() color = 'basic';\n\n  @ContentChild( NgModel, {static: true}  ) model: NgModel;\n\n  @ContentChild( FormControlName, {static: true}  ) controlName: FormControlName;\n\n  @Output('selectColor') selectColor: EventEmitter<string> = new EventEmitter<string>();\n\n  @ViewChild( TlInput, {static: true}  ) tlinput;\n\n  @ViewChild( TlButton, {static: true}  ) tlbutton;\n\n  @ViewChild( 'trigger', {static: true}  ) trigger;\n\n  @ViewChild( CdkConnectedOverlay, {static: true}  ) connectedOverlay: CdkConnectedOverlay;\n\n  public isOpen = false;\n\n  public saved = false;\n\n  public positionOverlay = '';\n\n  public required = false;\n\n  private interval;\n\n  constructor(private renderer: Renderer2, private change: ChangeDetectorRef, private colorPickerService: ColorPickerService) {\n    super();\n  }\n\n  ngOnInit() {\n    this.listClickElementOrgin();\n    this.validFromOrigin();\n  }\n\n  ngAfterContentInit() {\n    const element = new CdkOverlayOrigin( !this.elementOrigin ? this.trigger.elementRef.nativeElement : this.elementOrigin);\n    this.connectedOverlay.origin = element;\n  }\n\n  listClickElementOrgin() {\n    if (this.elementOrigin) {\n      this.renderer.listen(this.elementOrigin, 'click', () => {\n        this.isOpen = !this.isOpen;\n      });\n    }\n  }\n\n  onPositionChange( $event: ConnectedOverlayPositionChange ) {\n    this.positionOverlay = $event.connectionPair.originY;\n    this.change.detectChanges();\n  }\n\n  emitSelectColor($event) {\n    this.value = $event.hex;\n    this.selectColor.emit($event);\n  }\n\n  copyInputColor(inputElement) {\n    this.isOpen = !this.isOpen;\n    inputElement.input.nativeElement.select();\n    document.execCommand('copy');\n    inputElement.input.nativeElement.setSelectionRange(0, inputElement.input.nativeElement.value.length);\n    this.showCopyMessage();\n  }\n\n  showCopyMessage() {\n    this.saved = true;\n    clearInterval( this.interval );\n    this.interval = setInterval( () => {\n      this.saved = false;\n    }, 1000 );\n  }\n\n  keyDown($event) {\n    switch ($event.code) {\n      case KeyEvent.TAB:\n        this.isOpen = !this.isOpen;\n        break;\n      case KeyEvent.ESCAPE:\n        this.isOpen = !this.isOpen;\n        break;\n      case KeyEvent.ARROWUP:\n        this.isOpen = !this.isOpen;\n        break;\n      case KeyEvent.ARROWDOWN:\n        this.isOpen = !this.isOpen;\n        break;\n    }\n  }\n\n  closeColorPicker() {\n    this.isOpen = false;\n    this.colorPickerService.setPresetColor(this.value);\n  }\n\n  validFromOrigin() {\n    if (this.mode === 'fromOrigin' && !this.elementOrigin) {\n      throw Error('Property [elementOrigin] is undefined on \\'fromOrigin\\' mode');\n    }\n  }\n\n}\n","<div [class]=\"'tl-colorpicker ' + color\">\n  <div class=\"ui-form-control\">\n    <label *ngIf=\"label\" class=\"label -label{{labelPlacement}}\" [ngStyle]=\"{'width' : labelSize}\">{{label}}\n      <b *ngIf=\"required\" style=\"color: #FF6666\">*</b></label>\n    <div class=\"right\">\n      <div class=\"ui-overlay\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n        <div *ngIf=\"mode !== 'inline' && mode !== 'fromOrigin'\" #colorBox class=\"ui-color-box\"\n             (click)=\"(!disabled) ? isOpen = !isOpen : null\" [style.background]=\"value\"></div>\n        <div class=\"ui-input-wrapper\">\n          <div *ngIf=\"mode === 'input'\">\n            <tl-input #tlinput\n                      [name]=\"name\"\n                      (focus)=\"(openFocus) ? isOpen = !isOpen : null\"\n                      (keydown)=\"keyDown($event)\"\n                      (click)=\"(!disabled) ? isOpen = !isOpen : null\"\n                      [textAlign]=\"textAlign\"\n                      [(ngModel)]=\"value\"\n                      [readonly]=\"readonly ? true : null\"\n                      [disabled]=\"disabled ? true : null\"\n                      [placeholder]=\"placeholder\"\n                      [iconAfter]=\"(copyButton) ? 'fa fa-clipboard' : null\"\n                      (clickAddon)=\"copyInputColor(tlinput)\">\n            </tl-input>\n            <div class=\"message\">\n              <div class=\"copy-message\" [@enterAnimation]=\"saved\" *ngIf=\"saved\">\n                <tl-icon [lib]=\"'ion'\">checkmark-circle-outline</tl-icon>\n                <span>Copied!</span>\n              </div>\n            </div>\n          </div>\n          <ng-template cdkConnectedOverlay\n                       (backdropClick)=\"closeColorPicker()\"\n                       (positionChange)=\"onPositionChange($event)\"\n                       [cdkConnectedOverlayHasBackdrop]=\"true\"\n                       [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n                       [cdkConnectedOverlayOpen]=\"isOpen\">\n            <tl-colorpicker-content\n              [selectedColor]=\"value\"\n              (selectColor)=\"emitSelectColor($event)\"\n              [overlayPosition]=\"positionOverlay\"\n              [recentColors]=\"recentColors\"\n              [returnFormatColor]=\"returnFormatColor\">\n            </tl-colorpicker-content>\n          </ng-template>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>\n\n<div class=\"inline\" *ngIf=\"mode === 'inline'\">\n  <tl-colorpicker-content\n    [selectedColor]=\"value\"\n    (selectColor)=\"emitSelectColor($event)\"\n    [recentColors]=\"recentColors\"\n    [returnFormatColor]=\"returnFormatColor\">\n  </tl-colorpicker-content>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { TlColorPicker } from './colorpicker';\nimport { InputModule } from '../input/index';\nimport { IconsModule } from '../icons/index';\nimport { TlColorPickerContent } from './parts/colorpicker-content/colorpicker-content';\nimport { TlColorPickerInput } from './parts/colorpicker-input/colorpicker-input';\nimport { ColorPickerService } from './services/colorpicker-service';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    InputModule,\n    IconsModule\n  ],\n  providers: [\n    ColorPickerService\n  ],\n  declarations: [\n    TlColorPicker,\n    TlColorPickerContent,\n    TlColorPickerInput\n  ],\n  exports: [\n    TlColorPicker,\n  ]\n})\nexport class ColorPickerModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Component, ViewEncapsulation, ApplicationRef, Renderer2\n} from '@angular/core';\n\n@Component({\n    selector: 'tl-core',\n    template: '<span></span>',\n    styleUrls: ['./styles/theming/_all-theme.scss'],\n    encapsulation: ViewEncapsulation.None\n})\nexport class TlCore {\n  private theme = 'default';\n\n  constructor(\n    private applicationRef: ApplicationRef,\n    private renderer: Renderer2\n\n  ) {}\n\n    setTheme(theme: string, componentRef) {\n        setTimeout(() => {\n          if (this.applicationRef.components.length > 0 ) {\n            this.renderer.removeClass(document.body, this.theme);\n            this.theme = `tl-${theme}-theme`;\n            this.renderer.addClass(document.body, this.theme);\n            this.applicationRef.detachView(componentRef.hostView);\n            this.applicationRef.tick();\n          }\n        }, 100);\n    }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { InjectionToken } from '@angular/core';\nimport { LazyApplicationLoaderConfig } from '../configs/application.config';\n\nexport const APPLICATION_CONFIGURATION = new InjectionToken<LazyApplicationLoaderConfig>('APPLICATION_CONFIGURATION');\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const Button = {\n  loadingText: 'Loading',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const Calendar = {\n  today: 'Today',\n  months: [\n    { name: 'January', initials: 'jan' },\n    { name: 'February', initials: 'feb' },\n    { name: 'March', initials: 'mar' },\n    { name: 'April', initials: 'apr' },\n    { name: 'May', initials: 'may' },\n    { name: 'June', initials: 'jun' },\n    { name: 'July', initials: 'jul' },\n    { name: 'August', initials: 'aug' },\n    { name: 'September', initials: 'sep' },\n    { name: 'October', initials: 'oct' },\n    { name: 'November', initials: 'nov' },\n    { name: 'December', initials: 'dec' }\n  ],\n  dayOfWeek: [ 'SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT' ]\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Datatable = {\n  notFoundText: 'Records not found',\n  filterPlaceholder: 'Filter...',\n  dropdownResetPlaceholder: 'Reset',\n  filterOptionStartsWith: 'Start With',\n  filterOptionContains: 'Contains',\n  filterOptionNotContains: 'Does not Contains',\n  filterOptionEndsWith: 'Ends Withs',\n  filterOptionEquals: 'Equals',\n  filterOptionNotEquals: 'Not Equals',\n  filterOptionLessThan: 'Less Than',\n  filterOptionGreaterThan: 'Greater Than',\n  filterOptionLessThanOrEqual: 'Less Than or equal to',\n  filterOptionGreaterThanOrEqual: 'Greater Than or equal to',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Dialog = {\n  exceptionBoxDescription: 'Exception Name/Code',\n  textClose: 'Close',\n  textOk: 'OK',\n  textCancel: 'Cancel',\n  textYes: 'Yes',\n  textNo: 'No',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Form =  {\n  deleteConfirmationMessage: 'Are you sure ?',\n  deleteTitleConfirmation: 'Confirmation.',\n  recordNotFoundMessage: 'There\\'s no record selected for this action',\n  textOk: 'OK',\n  textCancel: 'Cancel',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Listbox = {\n  notFoundText: 'Nothing Found'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Navigator = {\n  monthsDescription: [\n    'January',\n    'February',\n    'March',\n    'April',\n    'May',\n    'June',\n    'July',\n    'August',\n    'September',\n    'October',\n    'November',\n    'December'\n  ],\n  daysDescription: [\n    'Sunday',\n    'Monday',\n    'Tuesday',\n    'Wednesday',\n    'Thursday',\n    'Friday',\n    'Saturday'\n  ]\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Validators = {\n  invalidDatePattern: 'Invalid Date, value must match with pattern',\n  fieldRequired: 'Field Required, please enter a value',\n  invalidMinLength: 'Value must have {0} characters',\n  patternNotMatch: 'Value does not match required pattern',\n  invalidCPF: 'Invalid CPF',\n  invalidCNPJ: 'Invalid CNPJ',\n  invalidEmail: 'Invalid Email',\n  invalidCreditCard: 'Invalid Credit Card',\n  invalidPasswordRuleDigits: 'Invalid Password, must have at least one digit. ex: abc123',\n  invalidPasswordRuleUppercase: 'Invalid Password, must have at least one Uppercase Letter. ex: abcY123',\n  invalidPasswordRuleSpecial: 'Invalid Password, must have at least one Special Character. ex: abcY123@#!',\n  invalidPasswordRuleLowerCase: 'Invalid Password, must have at least one lowercase letter. ex: abc',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const OverlayList = {\n  emptyList: 'Empty List',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Editor = {\n  fontFamilyText: 'Font Family',\n  fontSizeText: 'Font Size',\n  boldText: 'Font Bold',\n  italicText: 'Font Italic',\n  underlineText: 'Underline text',\n  colorText: 'Change color text',\n  highlightText: 'Hightlight text',\n  alignLeftText: 'Align left',\n  alignCenterText: 'Align Center',\n  alignRightText: 'Align Right',\n  justifyText: 'Justify text',\n  listUnordered: 'List unordered',\n  listOrdered: 'List Ordered',\n  linkText: 'Link text',\n  imageText: 'Image text',\n  quoteText: 'Quote text',\n  clearText: 'Clear Content',\n  saveText: 'Save Content',\n  fieldText: 'Add TextField',\n  labelAddField: 'Add Field'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Permissions = {\n  notFound: 'Nothing Found',\n  loadingMessage: 'Loading Permissions...',\n  searchGroup: 'Search Group...',\n  searchFunctionality: 'Search Functionality...',\n  allowColumnText: 'Allow'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const TimePicker = {\n  now: 'Now',\n  textCancel: 'Cancel',\n  textConfirm: 'Confirm'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const AutoComplete = {\n  messageLoading: 'Loading...',\n  nothingFoundMessage: 'Nothing Found',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const TimeAvailablePicker = {\n  notFound: 'Nothing to show'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const ChatList = {\n  noContactsFound: 'There are no contacts.',\n  today: 'TODAY',\n  yesterday: 'YESTERDAY',\n  loadingMessages: 'Loading Messages...',\n  saySomething: 'Say something...',\n  searchContact: 'Search Contact...'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const Modal = {\n  includingMessage: 'Including',\n  updatingMessage: 'Updating'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Upload = {\n  boxDescription: `Click or drag file to this area to upload\\nSupport for a single or bulk upload.`,\n  placeholder: `Image Description`,\n  upload: `Upload`,\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nimport { Button } from './button/en_US';\nimport { Calendar } from './calendar/en_US';\nimport { Datatable } from './datatable/en_US';\nimport { Dialog } from './dialog/en_US';\nimport { Form } from './form/en_US';\nimport { Listbox } from './listbox/en_US';\nimport { Navigator } from './navigator/en_US';\nimport { Validators } from './validators/en_US';\nimport { OverlayList } from './overlaylist/en_US';\nimport { Editor } from './editor/en_US';\nimport { Permissions } from './permissions/en_US';\nimport { TimePicker } from './timepicker/en_US';\nimport { AutoComplete } from './autocomplete/en_US';\nimport { TimeAvailablePicker } from './time-available-picker/en_US';\nimport { ChatList } from './chatlist/en_US';\nimport { Modal } from './modal/en_US';\nimport {Upload} from './upload/en_US';\n\nexport const en_US = {\n  locale: 'en-US',\n  AutoComplete,\n  Button,\n  Calendar,\n  ChatList,\n  Datatable,\n  Dialog,\n  Editor,\n  Form,\n  Modal,\n  Listbox,\n  Upload,\n  Navigator,\n  Validators,\n  OverlayList,\n  Permissions,\n  TimePicker,\n  TimeAvailablePicker\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { I18nInterface } from '../../i18n/i18n.interface';\nimport { en_US } from '../../i18n/languages/en_US';\n\nexport class LazyApplicationLoaderConfig {\n  theme?: string;\n  language?: I18nInterface;\n\n  constructor() {\n    this.theme = 'default';\n    this.language = en_US;\n  }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Injectable, ComponentFactoryResolver, Injector, Inject, ComponentRef\n} from '@angular/core';\n\nimport { LazyApplicationLoaderConfig } from '../configs/application.config';\nimport { TlCore } from '../core';\nimport { APPLICATION_CONFIGURATION } from '../tokens/configuration.token';\n\nimport { I18nInterface } from '../../i18n/i18n.interface';\nimport { I18nService } from '../../i18n/i18n.service';\nimport { en_US } from '../../i18n/languages/en_US';\n\n@Injectable()\nexport class CoreService {\n\n    private componentRef: ComponentRef<TlCore>;\n\n    constructor( private compiler: ComponentFactoryResolver,\n                 private injector: Injector,\n                 private i18nService: I18nService,\n                 @Inject(APPLICATION_CONFIGURATION) private config: LazyApplicationLoaderConfig\n    ) {}\n\n    initializeApp(): Promise<void> {\n      return new Promise((resolve) => {\n        const componentFactory = this.compiler.resolveComponentFactory(TlCore);\n        this.componentRef = componentFactory.create(this.injector);\n        this.setTheme(this.config.theme);\n        this.setLocale(this.config.language);\n        resolve();\n      });\n    }\n\n    setTheme( theme: string = 'default' ) {\n      this.componentRef.instance.setTheme( theme, this.componentRef );\n    }\n\n    setLocale(locale: I18nInterface = en_US): void {\n      this.i18nService.setLocale(locale);\n    }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { APP_INITIALIZER, ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { I18nService } from '../i18n/i18n.service';\nimport { LazyApplicationLoaderConfig } from './configs/application.config';\nimport { CoreService } from './services/core.service';\nimport { TlCore } from './core';\nimport { APPLICATION_CONFIGURATION } from './tokens/configuration.token';\n\nimport { ModalModule } from '../modal/index';\n\nexport function CoreServiceFactory( coreService: CoreService ) {\n    return () => coreService.initializeApp();\n}\n\n// @dynamic\n@NgModule( {\n    imports: [\n      ModalModule.forRoot()\n    ],\n    declarations: [\n      TlCore,\n    ],\n    exports: [\n      TlCore,\n    ],\n    providers: [\n      CoreService,\n      I18nService,\n      {\n        provide: APP_INITIALIZER,\n        useFactory: CoreServiceFactory,\n        deps: [ CoreService ],\n        multi: true\n      }\n  ]\n} )\nexport class CoreModule {\n\n    constructor (@Optional() @SkipSelf() parentModule: CoreModule) {\n        if (parentModule) {\n            throw new Error( 'CoreModule is already loaded. Import it in the AppModule only !!!!!!!!');\n        }\n    }\n\n    static forRoot( lazyApplicationLoaderConfig: LazyApplicationLoaderConfig ): ModuleWithProviders<CoreModule> {\n      return {\n        ngModule: CoreModule,\n        providers: [\n          I18nService,\n          {\n            provide: APPLICATION_CONFIGURATION,\n            // TODO: Create  useValue: Object.assign( new LazyApplicationLoaderConfig(), lazyApplicationLoaderConfig )\n            useValue: lazyApplicationLoaderConfig\n          }\n        ]\n      };\n    }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\n\nimport { Directive, OnInit, ViewContainerRef } from '@angular/core';\nimport { ContainerModalService } from './container-modal.service';\n\n@Directive({\n  selector: '[tlContainerModal]'\n})\nexport class TlContainerModalDirective implements OnInit {\n\n  constructor( private viewContainerRef: ViewContainerRef, private containerModal: ContainerModalService) {}\n\n  ngOnInit() {\n    this.containerModal.view = this.viewContainerRef;\n  }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TlContainerModalDirective } from './container-modal.directive';\nimport { ContainerModalService } from './container-modal.service';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    TlContainerModalDirective\n  ],\n  exports: [\n    TlContainerModalDirective\n  ],\n  providers: [\n    ContainerModalService\n  ]\n})\nexport class ContainerModalModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {ChangeDetectorRef, Component, EventEmitter, OnInit, Output} from '@angular/core';\nimport {ContextMenuInterface} from './interfaces/context-menu.interface';\n// import {ConnectedPosition} from '@angular/cdk/overlay/position/flexible-connected-position-strategy';\nimport {OverlayModule} from '@angular/cdk/overlay';\n\n\n@Component({\n  selector: 'tl-context-menu',\n  templateUrl: './context-menu.html',\n  styleUrls: ['./context-menu.scss'],\n})\nexport class TlContextMenuComponent implements OnInit {\n\n  public contextMenu: ContextMenuInterface[];\n\n  private currentContext;\n\n  @Output() select: EventEmitter<any> = new EventEmitter();\n\n  isOpen = false;\n\n  positions: OverlayModule[] = [\n    {\n      originX: 'end',\n      originY: 'top',\n      overlayX: 'start',\n      overlayY: 'top',\n    },\n    {\n      originX: 'end',\n      originY: 'bottom',\n      overlayX: 'start',\n      overlayY: 'bottom',\n    }\n  ];\n\n  constructor(private changes: ChangeDetectorRef) {}\n\n  ngOnInit() {}\n\n  init( items: ContextMenuInterface[], context ) {\n    this.contextMenu = items;\n    this.currentContext = context;\n    this.changes.detectChanges();\n  }\n\n  onClickItem( callback ) {\n    if (callback) {\n      this.select.emit();\n      return this.currentContext ? callback(this.currentContext) : callback();\n    }\n  }\n\n  onItemMouseOver( item ) {\n    if ( item?.children?.length > 0 ) {\n      this.isOpen = !this.isOpen;\n    }\n  }\n\n}\n","<div class=\"ui-menu-context-wrapper\">\n  <ul class=\"ui-menu-context\">\n    <ng-template ngFor let-item [ngForOf]=\"contextMenu\">\n      <ng-template\n        [ngTemplateOutlet]=\"templateList\"\n        [ngTemplateOutletContext]=\"{ $implicit: item }\">\n      </ng-template>\n    </ng-template>\n  </ul>\n</div>\n\n<ng-template #templateUL let-children >\n  <ul class=\"ui-menu-context\">\n    <ng-template ngFor let-item [ngForOf]=\"children\">\n      <ng-template\n        [ngTemplateOutlet]=\"templateList\"\n        [ngTemplateOutletContext]=\"{ $implicit: item }\">\n      </ng-template>\n    </ng-template>\n  </ul>\n</ng-template>\n\n<ng-template #templateList let-item>\n  <li class=\"ui-item-context\" (click)=\"onClickItem(item?.callback);\" (mouseenter)=\"onItemMouseOver(item)\"\n      [class.hasChildren]=\"item?.children\"\n      [class.no-icon]=\"!item?.icon || item?.template\"\n      cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\">\n\n    <ng-container *ngIf=\"item?.template; else listDefault\">\n      <ng-container *ngTemplateOutlet=\"item?.template\"></ng-container>\n    </ng-container>\n\n    <ng-template #listDefault>\n      <tl-icon [color]=\"item?.iconColor\" [size]=\"'15px'\" *ngIf=\"item?.icon\">{{ item?.icon }}</tl-icon>\n      <span class=\"ui-item-label\">{{ item?.label }}</span>\n      <tl-icon class=\"ui-item-arrow\" *ngIf=\"item?.children\" [lib]=\"'ion'\" [style]=\"'ios'\" [size]=\"'15px'\">arrow-forward</tl-icon>\n    </ng-template>\n\n    <ng-template cdkConnectedOverlay\n                   [cdkConnectedOverlayOrigin]=\"trigger\"\n                   [cdkConnectedOverlayPositions]=\"positions\"\n                   [cdkConnectedOverlayOpen]=\"isOpen\">\n      <ng-container *ngIf=\"item?.children\" >\n        <ng-container *ngTemplateOutlet=\"templateUL; context: { $implicit: item?.children }\"></ng-container>\n      </ng-container>\n    </ng-template>\n\n\n  </li>\n</ng-template>\n\n\n","import {ComponentRef, ElementRef, Injectable, OnDestroy} from '@angular/core';\nimport {Overlay, OverlayPositionBuilder, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {fromEvent, Subscription} from 'rxjs';\nimport {TlContextMenuComponent} from '../context-menu';\nimport {ContextMenuInterface} from '../interfaces/context-menu.interface';\nimport {filter} from 'rxjs/operators';\n\n@Injectable()\nexport class ContextMenuService {\n\n  private menuRef: ComponentRef<TlContextMenuComponent>;\n\n  private subscription: Subscription = new Subscription();\n\n  constructor(private overlayPositionBuilder: OverlayPositionBuilder,\n              private overlay: Overlay) {}\n\n  private overlayRef: OverlayRef;\n\n  create( event: MouseEvent, elementRef: ElementRef, itemsMenu: ContextMenuInterface[], context? ) {\n    this.close();\n    event.preventDefault();\n    const coords = { x: event.x, y: event.y };\n    const positionStrategy = this.overlay.position()\n      .flexibleConnectedTo({ x: coords.x, y: coords.y })\n      .withPositions([\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n        }\n      ]);\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      scrollStrategy: this.overlay.scrollStrategies.close()\n    });\n    const menuPortal = new ComponentPortal( TlContextMenuComponent );\n    this.menuRef = this.overlayRef.attach( menuPortal );\n    this.menuRef.instance.init( itemsMenu, context );\n\n    this.listenBackDropClick();\n    this.listenSelect();\n  }\n\n  listenBackDropClick() {\n    if (this.menuRef) {\n      this.subscription = fromEvent<MouseEvent>(document, 'click')\n        .pipe(\n          filter(eventClick => {\n            const clickTarget = eventClick.target as HTMLElement;\n            return !!this.overlayRef && !this.overlayRef.overlayElement.contains(clickTarget);\n          }),\n        ).subscribe(() => this.close());\n    }\n  }\n\n  listenSelect() {\n    if (this.menuRef) {\n      this.subscription.add(this.menuRef.instance.select.subscribe(() => {\n        this.close();\n      }));\n    }\n  }\n\n  close() {\n    this.subscription.unsubscribe();\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n  }\n\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from '@angular/forms';\n\nimport {PortalModule} from '@angular/cdk/portal';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {IconsModule} from '../icons/index';\nimport {TlContextMenuComponent} from './context-menu';\nimport {ContextMenuService} from './services/contextmenu.service';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    PortalModule,\n    OverlayModule,\n    IconsModule\n  ],\n  declarations: [\n    TlContextMenuComponent,\n  ],\n  exports: [\n    TlContextMenuComponent,\n  ],\n  providers: [ ContextMenuService ]\n})\nexport class ContextMenuModule {\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable } from '@angular/core';\nimport { I18nService } from '../../i18n/i18n.service';\nimport { DatatableI18nInterface } from '../../i18n/languages/datatable';\n\n@Injectable()\nexport class FilterOptionsService {\n\n  constructor( private i18n: I18nService ) {}\n\n  optionDescription(): DatatableI18nInterface {\n    return this.i18n.getLocale().Datatable;\n  }\n\n  getOptionsByType( type ): Array<any> {\n    switch ( type ) {\n      case 'text' :\n        return this.getOptionsText();\n      case 'number' :\n        return this.getOptionsNumber();\n      case 'date' :\n        return this.getOptionsDate();\n      default :\n        return this.getOptionsDefault();\n    }\n  }\n\n  getOptionsDefault() {\n    return [ {\n      description : this.optionDescription().filterOptionStartsWith,\n      valueItem : 'startsWith',\n      icon : 'dx-icon-filter-operation-starts-with'\n    }, {\n      description : this.optionDescription().filterOptionContains,\n      valueItem : 'contains',\n      icon : 'dx-icon-filter-operation-contains'\n    }, {\n      description : this.optionDescription().filterOptionNotContains,\n      valueItem : 'notContains',\n      icon : 'dx-icon-filter-operation-not-contains'\n    }, {\n      description : this.optionDescription().filterOptionEndsWith,\n      valueItem : 'endsWith',\n      icon : 'dx-icon-filter-operation-ends-with'\n    }, {\n      description : this.optionDescription().filterOptionEquals,\n      valueItem : 'equals',\n      icon : 'dx-icon-filter-operation-equals'\n    }, {\n      description : this.optionDescription().filterOptionNotEquals,\n      valueItem : 'notEquals',\n      icon : 'dx-icon-filter-operation-not-equals'\n    }, {\n      description : this.optionDescription().filterOptionLessThan,\n      valueItem : 'lessThan',\n      icon : 'dx-icon-filter-operation-less'\n    }, {\n      description : this.optionDescription().filterOptionGreaterThan,\n      valueItem : 'greaterThan',\n      icon : 'dx-icon-filter-operation-greater'\n    }, {\n      description : this.optionDescription().filterOptionLessThanOrEqual,\n      valueItem : 'lessThanOrEqual',\n      icon : 'dx-icon-filter-operation-less-equal'\n    }, {\n      description : this.optionDescription().filterOptionGreaterThanOrEqual,\n      valueItem : 'greaterThanOrEqual',\n      icon : 'dx-icon-filter-operation-greater-equal'\n    } ];\n  }\n\n\n  getOptionsText() {\n    return [ {\n      description : this.optionDescription().filterOptionStartsWith,\n      valueItem : 'startsWith',\n      icon : 'dx-icon-filter-operation-starts-with'\n    }, {\n      description : this.optionDescription().filterOptionContains,\n      valueItem : 'contains',\n      icon : 'dx-icon-filter-operation-contains'\n    }, {\n      description : this.optionDescription().filterOptionNotContains,\n      valueItem : 'notContains',\n      icon : 'dx-icon-filter-operation-not-contains'\n    }, {\n      description : this.optionDescription().filterOptionEndsWith,\n      valueItem : 'endsWith',\n      icon : 'dx-icon-filter-operation-ends-with'\n    }, {\n      description : this.optionDescription().filterOptionEquals,\n      valueItem : 'equals',\n      icon : 'dx-icon-filter-operation-equals'\n    }, {\n      description : this.optionDescription().filterOptionNotEquals,\n      valueItem : 'notEquals',\n      icon : 'dx-icon-filter-operation-not-equals'\n    } ];\n  }\n\n  getOptionsNumber() {\n    return [ {\n      description : this.optionDescription().filterOptionEquals,\n      valueItem : 'equals',\n      icon : 'dx-icon-filter-operation-equals'\n    }, {\n      description : this.optionDescription().filterOptionNotEquals,\n      valueItem : 'notEquals',\n      icon : 'dx-icon-filter-operation-not-equals'\n    }, {\n      description : this.optionDescription().filterOptionLessThan,\n      valueItem : 'lessThan',\n      icon : 'dx-icon-filter-operation-less'\n    }, {\n      description : this.optionDescription().filterOptionGreaterThan,\n      valueItem : 'greaterThan',\n      icon : 'dx-icon-filter-operation-greater'\n    }, {\n      description : this.optionDescription().filterOptionLessThanOrEqual,\n      valueItem : 'lessThanOrEqual',\n      icon : 'dx-icon-filter-operation-less-equal'\n    }, {\n      description : this.optionDescription().filterOptionGreaterThanOrEqual,\n      valueItem : 'greaterThanOrEqual',\n      icon : 'dx-icon-filter-operation-greater-equal'\n    } ];\n  }\n\n  getOptionsDate() {\n    return [ {\n      description : this.optionDescription().filterOptionEquals,\n      valueItem : 'equals',\n      icon : 'dx-icon-filter-operation-equals'\n    }, {\n      description : this.optionDescription().filterOptionNotEquals,\n      valueItem : 'notEquals',\n      icon : 'dx-icon-filter-operation-not-equals'\n    }, {\n      description : this.optionDescription().filterOptionLessThan,\n      valueItem : 'lessThan',\n      icon : 'dx-icon-filter-operation-less'\n    }, {\n      description : this.optionDescription().filterOptionGreaterThan,\n      valueItem : 'greaterThan',\n      icon : 'dx-icon-filter-operation-greater'\n    }, {\n      description : this.optionDescription().filterOptionLessThanOrEqual,\n      valueItem : 'lessThanOrEqual',\n      icon : 'dx-icon-filter-operation-less-equal'\n    }, {\n      description : this.optionDescription().filterOptionGreaterThanOrEqual,\n      valueItem : 'greaterThanOrEqual',\n      icon : 'dx-icon-filter-operation-greater-equal'\n    } ];\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  Input,\n  OnInit,\n  Injector,\n  ContentChild,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { FilterOptionsService } from '../../services/datatable-filter-options.service';\n\n@Component( {\n    selector: 'tl-datatable-column',\n    template: '',\n} )\nexport class TlDatatableColumn implements OnInit {\n\n    @Input( 'field' ) field = '';\n\n    @Input( 'title' ) title = '';\n\n    @Input( 'alignment' ) alignment = 'center';\n\n    @Input('width') width: string;\n\n    @Input('type') type: 'text' | 'number' | 'date' = 'text';\n\n    @Input('format') format = 'shortDate';\n\n    @Input('showFilter') showFilter = true;\n\n    @Input('sortable') sortable = true;\n\n    @Input('showFilterOptions') showFilterOptions = true;\n\n    @Input('filterOptions') filterOptions = [];\n\n    @ContentChild(TemplateRef, {static: false, read: TemplateRef}) template: TemplateRef<any> | null;\n\n    private filterOptionsService: FilterOptionsService;\n\n    constructor( private injector: Injector ) {\n      this.filterOptionsService = injector.get(FilterOptionsService);\n        this.setFilterOptions();\n    }\n\n    ngOnInit() {\n        this.setFilterOptionsWhenTypeNotDefault();\n        this.setTitle();\n    }\n\n    setTitle() {\n        if (!this.title) {\n            if (this.field) {\n                this.title = this.field.toUpperCase();\n            }\n        }\n    }\n\n\n    setFilterOptionsWhenTypeNotDefault() {\n        if ( this.type !== 'text' ) {\n            this.setFilterOptions();\n        }\n    }\n\n    setFilterOptions() {\n        this.filterOptions = this.filterOptionsService.getOptionsByType( this.type );\n    }\n}\n","import { Injectable } from '@angular/core';\n/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\n@Injectable()\nexport class  TlDatatableFilterConstraints {\n\n    startsWith(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return true;\n        }\n\n        if (this.isValueValid(value)) {\n            return false;\n        }\n\n        const filterValue = filter.toLowerCase();\n        return value.toString().toLowerCase().slice(0, filterValue.length) === filterValue;\n    }\n\n    contains(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return true;\n        }\n\n        if (this.isValueValid(value)) {\n            return false;\n        }\n\n        return value.toString().toLowerCase().indexOf(filter.toLowerCase()) !== -1;\n    }\n\n    notContains(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return true;\n        }\n\n        if (this.isValueValid(value)) {\n            return false;\n        }\n\n        return value.toString().toLowerCase().indexOf(filter.toLowerCase()) === -1;\n    }\n\n    endsWith(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return true;\n        }\n\n        if (this.isValueValid(value)) {\n            return false;\n        }\n\n        const filterValue = filter.toString().toLowerCase();\n        return value.toString().toLowerCase().indexOf(filterValue, value.toString().length - filterValue.length) !== -1;\n    }\n\n    equals(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return true;\n        }\n\n        if (this.isValueValid(value)) {\n            return false;\n        }\n\n        return value.toString().toLowerCase() === filter.toString().toLowerCase();\n    }\n\n    notEquals(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return false;\n        }\n\n        if (this.isValueValid(value)) {\n            return true;\n        }\n\n        return value.toString().toLowerCase() !== filter.toString().toLowerCase();\n    }\n\n    lessThan(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return false;\n        }\n\n        if (this.isValueValid(value)) {\n            return true;\n        }\n\n        return parseInt(value, 10) < parseInt(filter, 10);\n    }\n\n    greaterThan(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return false;\n        }\n\n        if (this.isValueValid(value)) {\n            return true;\n        }\n\n        return parseInt(value, 10) > parseInt(filter, 10);\n    }\n\n    lessThanOrEqual(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return false;\n        }\n\n        if (this.isValueValid(value)) {\n            return true;\n        }\n\n        return parseInt(value, 10) <= parseInt(filter, 10);\n    }\n\n    greaterThanOrEqual(value, filter): boolean {\n        if ( this.isFilterValid(filter) ) {\n            return false;\n        }\n\n        if (this.isValueValid(value)) {\n            return true;\n        }\n\n        return parseInt(value, 10) >= parseInt(filter, 10);\n    }\n\n    in(value, filter: any[]): boolean {\n        if (filter === undefined || filter === null || filter.length === 0) {\n            return true;\n        }\n\n        if (this.isValueValid(value)) {\n            return false;\n        }\n\n        for (let i = 0; i < filter.length; i++) {\n            if (filter[i] === value) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    private isFilterValid(filter) {\n        return filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '');\n    }\n\n    private isValueValid(value) {\n       return value === undefined || value === null;\n    }\n}\n"," /*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable } from '@angular/core';\nimport { TlDatatable } from '../datatable';\nimport { Observable ,  Subject } from 'rxjs';\nimport { TlDatatableFilterConstraints } from './datatable-filter-constraints.service';\nimport { FilterEventMetadata } from '../metadatas/filter.metadata';\n\nimport * as objectPath from 'object-path';\n\n@Injectable()\nexport class TlDatatableFilterService {\n\n    private datatable: TlDatatable;\n\n    private subject: Subject<any> = new Subject();\n\n    private filter: FilterEventMetadata;\n\n    public filtredData = [];\n\n    private filterArray = [];\n\n    public keydownFilter: Subject<any> = new Subject();\n\n    constructor( private filterConstraints: TlDatatableFilterConstraints ) {}\n\n    onInicializeFilterService( datatable ) {\n        this.datatable = datatable;\n    }\n\n    onFilter(): Observable<any> {\n        return this.subject.asObservable();\n    }\n\n    setFilter(filter) {\n        this.filter = filter;\n        this.filterArray = Object.keys( this.filter.filters );\n\n        if (!this.existsFilter()) {\n          this.filtredData = [];\n        }\n        this.datatable.filterData.next(this.filter);\n        this.subject.next();\n    }\n\n    existsFilter() {\n        return  (this.filter !== undefined) && Object.keys(this.filter.filters).length;\n    }\n\n    getFilter() {\n        return this.existsFilter() ? this.filter.filters : {};\n    }\n\n    filterWithData(data, scrolling = false) {\n        if (! this.existsFilter()) { return data; }\n        if ( scrolling ) { return this.filtredData; }\n\n        this.filtredData = [];\n        data.forEach( value => {\n          let match = true;\n          for ( let valueIndex = 0; valueIndex < this.filterArray.length; valueIndex++ ) {\n            const dataValue = objectPath.get(value, this.filterArray[ valueIndex ]);\n            const filterValue = this.filter.filters[ this.filterArray[ valueIndex ] ].value.toLowerCase();\n            const matchMode = this.filter.filters[ this.filterArray[ valueIndex ] ].matchMode;\n            if ( ! this.filterConstraints[matchMode]( dataValue, filterValue) ) {\n              match = false;\n              break;\n            }\n          }\n\n          if ( match ) { this.filtredData.push( value ); }\n        });\n\n        return this.filtredData;\n    }\n }\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport type { TlDatatableFilterService } from './datatable-filter.service';\nimport type { TlDatatableSortService } from './datatable-sort.service';\nimport type { TlDatatable } from '../datatable';\nimport { SimpleChanges } from '@angular/core';\n\nexport class DatatableDataSource extends DataSource<object | undefined> {\n\n  private _recordsCount: number;\n  private _pageSize: number;\n  private _cachedData: Array<object>;\n  private _dataStream: BehaviorSubject<( object | undefined )[]>;\n\n  private _fetchedPages = new Set<number>();\n  private _subscription = new Subscription();\n\n  private filterService: TlDatatableFilterService;\n  private sortService: TlDatatableSortService;\n  private datatable: TlDatatable;\n  private currentPage: number;\n\n  private navigating: boolean;\n\n  get isEmpty() {\n    return this._cachedData.length === 0;\n  }\n\n  constructor( datatable: TlDatatable ) {\n    super();\n    this._recordsCount = datatable.recordsCount;\n    this._pageSize = datatable.rowsPage;\n    this._cachedData = Array.from<object>({length: this._recordsCount});\n    this._dataStream = new BehaviorSubject<( object | undefined )[]>( this._cachedData );\n\n    this.datatable = datatable;\n    this.filterService = datatable.filterService;\n    this.sortService = datatable.sortService;\n  }\n\n  connect( collectionViewer: CollectionViewer ): Observable<( object | undefined )[] | ReadonlyArray<object | undefined>> {\n    this._subscription.add( this.filterService.onFilter().subscribe(this.onFilter.bind(this)) );\n    this._subscription.add( this.sortService.onSort().subscribe(this.onSort.bind(this)) );\n    this._subscription.add( collectionViewer.viewChange.subscribe( this.viewData.bind(this) ) );\n    return this._dataStream;\n  }\n\n  disconnect( collectionViewer: CollectionViewer ): void {\n    this._subscription.unsubscribe();\n  }\n\n  setNavigating( navigate ) {\n    this.navigating = navigate;\n    if ( !this.navigating ) {\n      this.fetchPage( this.currentPage );\n    }\n  }\n\n  changes( changes: SimpleChanges ) {\n    if ( changes['rowsPage'] && changes['rowsPage'].currentValue ) {\n      this._pageSize = changes['rowsPage'].currentValue;\n    }\n\n    if ( changes['recordsCount'] && changes['recordsCount'].currentValue ) {\n      this._recordsCount = changes['recordsCount'].currentValue;\n      this._cachedData = Array.from<object>({length: this._recordsCount});\n      this._dataStream.next( this._cachedData );\n    }\n\n    if ( changes['data'] && changes['data'].currentValue ) {\n      if (this.isInMemory()) {\n        this._cachedData = changes['data'].currentValue;\n        this._dataStream.next( this._cachedData );\n      }\n      this.dispatchData( changes['data'].currentValue );\n    }\n  }\n\n  private onFilter( ) {\n    if (this.isInMemory()) {\n      this.dispatchData();\n    } {\n      this.emitLoadData();\n    }\n  }\n\n  private onSort( ) {\n    if (this.isInMemory()) {\n      this.dispatchData();\n    } {\n      this.emitLoadData();\n    }\n  }\n\n  private _getPageForIndex( index: number ): number {\n    return Math.floor( index / this._pageSize );\n  }\n\n\n  private viewData(range) {\n    const startPage = this._getPageForIndex( range.start );\n    const endPage = this._getPageForIndex( range.end - 1 );\n    for ( let i = startPage; i <= endPage; i++ ) {\n      this.fetchPage( i );\n    }\n  }\n\n  private fetchPage( page: number ) {\n    this.currentPage = page;\n    if ( this.navigating ) {\n      return;\n    }\n    if ( this._fetchedPages.has( this.currentPage ) ) {\n      return;\n    }\n    this.emitLoadData( page );\n  }\n\n  private dispatchData(data = this._cachedData) {\n    if (this.isInMemory()) {\n      const cached = this.sortService.sortWithData( this.filterService.filterWithData(data) );\n      cached.slice( this.currentPage  * this._pageSize, this._pageSize);\n      return this._dataStream.next( cached );\n    }\n\n    if (this.isInfinite() && data.length > 0 ) {\n      this._cachedData.splice(this.currentPage  * this._pageSize, this._pageSize, ...data);\n    } else {\n      this._cachedData = data;\n    }\n    this._dataStream.next( this._cachedData );\n  }\n\n  private emitLoadData( page = this.currentPage ) {\n    if (this.isInfinite()  ) {\n      this.datatable.loadData.emit({\n        skip: page * this._pageSize,\n        take: this._pageSize,\n        filters: this.filterService.getFilter(),\n        sorts: this.sortService.getSort()\n      });\n      this._fetchedPages.add( page );\n    }\n\n  }\n\n  private isInfinite() {\n    return this.datatable.rowModel === 'infinite';\n  }\n\n  private isInMemory() {\n    return this.datatable.rowModel === 'inmemory';\n  }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable, Injector } from '@angular/core';\nimport { TlDatatable } from '../datatable';\nimport { TlDatatableColumn } from '../parts/column/datatable-column';\n\n@Injectable()\nexport class TlDatatableColumnService {\n\n    constructor( private injector: Injector ) {}\n\n    private dt: TlDatatable;\n\n    onInitColumnService(datatable: TlDatatable) {\n        this.dt = datatable;\n    }\n\n    setColumns() {\n        this.exitsColumns() ? this.getColumnsFromContentChild() : this.getColumnsFromDataSource();\n    }\n\n    private exitsColumns() {\n        return ( ( this.dt.datatableColumns.length ) && ( this.dt.datatableColumns.first.field ) );\n    }\n\n    private getColumnsFromDataSource() {\n        if (this.dt.columns.length) {\n          return;\n        }\n\n        if (this.dt.data) {\n            Object.keys( this.dt.data[0] ).forEach( ( columnField ) => {\n                this.dt.columns.push( this.buildNewDataTableColumn( columnField ) );\n            });\n        }\n    }\n\n    private buildNewDataTableColumn(field) {\n        const column = new TlDatatableColumn(this.injector);\n        column.title = field.toUpperCase();\n        column.field = field;\n        column.width = this.getWidthColumn() + '%';\n        return column;\n    }\n\n    private getWidthColumn() {\n        const columnsTotal = Object.keys( this.dt.data[0] ).length;\n        const widthScrollbar = 10;\n        return (this.dt.datatableBox.nativeElement.clientWidth - widthScrollbar) / columnsTotal;\n    }\n\n    private getColumnsFromContentChild() {\n        if (this.dt.columns.length) {\n          return;\n        }\n        this.dt.datatableColumns.map( column => {\n            this.dt.columns.push( column );\n        } );\n    }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable, ChangeDetectorRef } from '@angular/core';\nimport { TlDatatable } from '../datatable';\nimport { Observable ,  Subject } from 'rxjs';\n\nimport * as objectPath from 'object-path';\n\n@Injectable()\nexport class TlDatatableSortService {\n\n  private datatable: TlDatatable;\n\n  public subject = new Subject();\n\n  private sort;\n\n  private sortedData = [];\n\n  constructor(private cd: ChangeDetectorRef) {}\n\n  onInicializeSortService( datatable ) {\n    this.datatable = datatable;\n  }\n\n  onSort(): Observable<any> {\n    return this.subject.asObservable();\n  }\n\n  sortWithData(data, scrolling = false) {\n\n    if (! this.existsSort()) { return data; }\n    if ( scrolling ) { return this.sortedData; }\n\n    data.sort((a, b) => {\n      if ( objectPath.get(a, this.sort.sorts.column) > objectPath.get(b, this.sort.sorts.column)) {\n        return 1;\n      }\n      if (objectPath.get(a, this.sort.sorts.column) < objectPath.get(b, this.sort.sorts.column)) {\n        return -1;\n      }\n      return 0;\n    });\n\n    if (this.sort.sorts.sortBy === -1) {\n      data.reverse();\n    }\n\n    this.sortedData = data;\n    return this.sortedData;\n  }\n\n  setSort(sort) {\n    this.sort = sort;\n    this.subject.next(sort);\n    this.datatable.sortData.next(this.sort);\n    this.cd.detectChanges();\n  }\n\n  getSort() {\n    return this.existsSort() ? this.sort.sorts : {};\n  }\n\n  existsSort() {\n    return (this.sort !== undefined) && Object.keys(this.sort.sorts).length;\n  }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatatableHelpersService {\n\n    getClassAlignment( alignment: string ) {\n        return alignment ? '-text' + alignment : '';\n    }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  Input,\n  OnInit,\n  Injector,\n  ContentChild,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef, HostBinding, HostListener, ElementRef\n} from '@angular/core';\nimport { FilterOptionsService } from '../../services/datatable-filter-options.service';\nimport {FocusableOption, Highlightable} from '@angular/cdk/a11y';\n\n@Component( {\n  selector: 'tl-datatable-row',\n  template: '<ng-content></ng-content>',\n  styles: [`\n    :host {\n        display: table-row;\n        vertical-align: inherit;\n        border-color: inherit;\n\n        font-size: 1em;\n        height: 23px;\n        outline: none;\n        margin: 0;\n        content: none;\n    }\n  `],\n  exportAs: 'rowItem'\n} )\nexport class TlDatatableRow implements OnInit, Highlightable {\n\n  public selected = false;\n\n  @Input() content;\n\n  @Input('row') row;\n\n  @Input('index') index;\n\n  @HostBinding( 'class.selected') get isSelected() {\n    return this.selected;\n  }\n\n  constructor(public element: ElementRef) {}\n\n  ngOnInit() {}\n\n  setActiveStyles(): void {\n    this.selected = true;\n  }\n\n  setInactiveStyles(): void {\n    this.selected = false;\n  }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core';\nimport { TlDatatableColumn } from '../parts/column/datatable-column';\n\n@Directive({\n    selector: '[colgroup]'\n})\nexport class TlColgroupDirective implements OnInit {\n\n    @Input() colgroup: Array<TlDatatableColumn> = [];\n\n    private colGroupElement: ElementRef;\n\n    constructor( private element: ElementRef, private renderer: Renderer2 ) {}\n\n    ngOnInit() {\n        this.createElementColGroup();\n        this.createElementsColForColGroup();\n    }\n\n    createElementColGroup() {\n        this.colGroupElement = new ElementRef( this.renderer.createElement( 'colgroup' ) );\n        this.renderer.appendChild( this.element.nativeElement, this.colGroupElement.nativeElement );\n    }\n\n    async createElementsColForColGroup() {\n         await this.colgroup;\n         this.colgroup.forEach( ( col ) => {\n            const colElement = new ElementRef( this.renderer.createElement( 'col' ) );\n            this.renderer.setStyle( colElement.nativeElement, 'width', col.width );\n            this.renderer.appendChild( this.colGroupElement.nativeElement, colElement.nativeElement );\n        });\n    }\n}\n","/*\n *\n *     MIT License\n *\n *     Copyright (c) 2019 Temainfo Sistemas\n *\n *     Permission is hereby granted, free of charge, to any person obtaining a copy\n *     of this software and associated documentation files (the \"Software\"), to deal\n *     in the Software without restriction, including without limitation the rights\n *     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *     copies of the Software, and to permit persons to whom the Software is\n *     furnished to do so, subject to the following conditions:\n *     The above copyright notice and this permission notice shall be included in all\n *     copies or substantial portions of the Software.\n *     THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *     SOFTWARE.\n * /\n */\nimport {\n  Component,\n  Input,\n  OnInit,\n  Injector,\n  ContentChild,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef, HostBinding, HostListener\n} from '@angular/core';\n\nimport * as objectPath from 'object-path';\nimport { TlDatatableColumn } from '../column/datatable-column';\nimport { DatePipe } from '@angular/common';\n@Component( {\n  selector: 'tl-datatable-cell',\n  template: `\n      <ng-container *ngIf=\"isTemplate; else textTemplate\">\n        <ng-container *ngTemplateOutlet=\"collumn.template; context: {$implicit: content}\"></ng-container>\n      </ng-container>\n      <ng-template #textTemplate>{{ getDeepContent(content) }}</ng-template>\n    `,\n  styles: [`\n    :host {\n      display: table-cell;\n      vertical-align: inherit;\n\n      box-sizing: border-box;\n      padding: 0 5px;\n      overflow: hidden;\n      white-space: nowrap;\n      align-items: center;\n    }\n  `],\n  providers: [\n    DatePipe\n  ]\n})\nexport class TlDatatableCell implements OnInit {\n\n  @Input('content') content: string | object;\n\n  @Input('collumn') collumn: TlDatatableColumn;\n\n  @HostBinding('class.ui-cel') cellClass = true;\n\n  @HostBinding('style.height') height = '0px';\n\n  @HostBinding('style.text-align') get textAlign() {\n    return this.collumn.alignment;\n  }\n\n  constructor( private datePipe: DatePipe) {}\n\n  ngOnInit() {}\n\n  get isTemplate() {\n    return this.collumn.template instanceof TemplateRef;\n  }\n\n  getDeepContent( fullContent ) {\n      const content = objectPath.get(fullContent, this.collumn.field);\n      switch ( this.collumn.type ) {\n        case 'date' : {\n          return this.datePipe.transform( content, this.collumn.format );\n        }\n        default : return content;\n      }\n  }\n}\n","'use strict';\n/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy, ChangeDetectorRef,\n  Component, ElementRef, EventEmitter, Input, OnDestroy, Output, QueryList, ViewChild, ViewChildren\n} from '@angular/core';\nimport { TlDatatableRow } from '../row/datatable-row';\nimport {Observable, Subscription} from 'rxjs';\nimport { DataSource } from '@angular/cdk/collections';\nimport {ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\n\nimport { TlDatatableColumn } from '../column/datatable-column';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { DatatableDataSource } from '../../services/datatable-datasource.service';\nimport { ContextMenuService } from '../../../contextmenu/services/contextmenu.service';\nimport { ContextMenuInterface } from '../../../contextmenu/interfaces/context-menu.interface';\nimport {scrollIntoView} from '../../../core/helper/scrollIntoView';\n\n@Component( {\n  selector: 'tl-datatable-content',\n  templateUrl: './datatable-content.html',\n  styleUrls: [ './datatable-content.scss', '../../datatable.scss' ],\n  providers: [ContextMenuService],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n} )\nexport class TlDatatableContent implements AfterViewInit, OnDestroy {\n\n  @Input('dataSource') dataSource: Array<any> | Observable<Array<any>> | DataSource<any>;\n\n  @Input( 'data' ) data: Array<any>;\n\n  @Input('rowHeight') rowHeight: number;\n\n  @Input('heightViewPort') heightViewPort: number;\n\n  @Input('columns') columns: Array<TlDatatableColumn>;\n\n  @Input( 'contextMenuItems' ) contextMenuItems: ContextMenuInterface[];\n\n  @Output('rowClick') rowClick = new EventEmitter();\n\n  @Output('rowDbClick') rowDbClick = new EventEmitter();\n\n  @Output( 'rowSelect' ) rowSelect: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('viewport', {static: true}) viewport: CdkVirtualScrollViewport;\n\n  @ViewChildren(TlDatatableRow) items: QueryList<TlDatatableRow>;\n\n  @ViewChild('datableContent') datableContent: ElementRef;\n\n  private keyManager: ActiveDescendantKeyManager<TlDatatableRow>;\n\n  private subscription = new Subscription();\n\n  constructor(private i18n: I18nService,\n              private changes: ChangeDetectorRef,\n              private contextMenuService: ContextMenuService) {}\n\n  ngAfterViewInit() {\n    this.keyManager = new ActiveDescendantKeyManager(this.items).withTypeAhead();\n    this.setFirstItemSelected();\n  }\n\n  onRowClick( rowItem: TlDatatableRow, row, index ) {\n    this.rowClick.emit({ row: row, index: index });\n    this.keyManager.setActiveItem(rowItem);\n    this.setContentFocus();\n  }\n\n  contextmenu($event, rowItem: TlDatatableRow, row, index ) {\n    if (this.contextMenuItems && this.contextMenuItems.length > 0) {\n      this.contextMenuService.create($event, rowItem.element, this.contextMenuItems, { row: row, index: index });\n      return false;\n    }\n  }\n\n  setContentFocus() {\n    this.datableContent.nativeElement.focus();\n  }\n\n  isEmpty() {\n    return (\n      (this.dataSource as Array<any>).length === 0 ||\n      ( this.dataSource as DatatableDataSource).isEmpty\n    );\n  }\n\n  emptyText() {\n    return this.i18n.getLocale().Datatable.notFoundText;\n  }\n\n  mouseDown( $event ) {\n    if ( this.dataSource instanceof DatatableDataSource) {\n      ( this.dataSource as DatatableDataSource ).setNavigating( true );\n    }\n  }\n\n  mouseUp( $event ) {\n    if ( this.dataSource instanceof DatatableDataSource) {\n      ( this.dataSource as DatatableDataSource ).setNavigating( false );\n    }\n  }\n\n  onKeydown(event) {\n    this.keyManager.onKeydown(event);\n    if (this.keyManager.activeItem) {\n      scrollIntoView( this.keyManager.activeItem.element.nativeElement );\n    }\n  }\n\n  onKeyup() {\n    this.rowSelect.emit( this.keyManager.activeItem );\n  }\n\n  setFirstItemSelected() {\n    setTimeout(() => {\n      this.setContentFocus();\n      this.keyManager.setActiveItem(0);\n      this.rowSelect.emit( this.keyManager.activeItem );\n      this.changes.detectChanges();\n    }, 100);\n  }\n\n  setSelectedItem() {\n    setTimeout(() => {\n      this.setContentFocus();\n      this.keyManager.setActiveItem( this.keyManager.activeItemIndex );\n      this.rowSelect.emit( this.keyManager.activeItem );\n      this.changes.detectChanges();\n    }, 100);\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<div class=\"ui-datatable-content\" (keydown)=\"onKeydown($event)\" (keyup)=\"onKeyup()\" tabindex=\"-1\" #datableContent>\n\n  <cdk-virtual-scroll-viewport\n    class=\"ui-datatable-content-wrap\"\n    (mousedown)=\"mouseDown($event)\"\n    (mouseup)=\"mouseUp($event)\"\n    [ngStyle]=\"{'height': heightViewPort+'px' }\"\n    [minBufferPx]=\"100\"\n    [maxBufferPx]=\"500\"\n    [itemSize]=\"rowHeight\">\n\n    <table style=\"width: 100%;\" class=\"ui-datatable-table\" [class.hidden]=\"isEmpty()\" [colgroup]=\"columns\">\n      <tbody class=\"ui-datatable-content-body\" >\n        <ng-container *cdkVirtualFor=\"let row of dataSource; let index = index;\">\n          <tl-datatable-row *ngIf=\"row;else loadingRowTemplate\" class=\"ui-row\"\n                            [ngStyle]=\"{'height': rowHeight+'px' }\"\n                            [row]=\"row\"\n                            #rowItem=\"rowItem\"\n                            [index]=\"index\"\n                            (click)=\"onRowClick(rowItem, row, index)\"\n                            (contextmenu)=\"contextmenu($event, rowItem, row, index)\"\n                            (dblclick)=\"rowDbClick.emit({ row:row, index: index })\">\n            <tl-datatable-cell class=\"ui-cel\"\n                               *ngFor=\"let collumn of columns\" [collumn]=\"collumn\"\n                               [content]=\"row\"></tl-datatable-cell>\n          </tl-datatable-row>\n          <ng-template #loadingRowTemplate>\n            <tl-datatable-row [ngStyle]=\"{'height': rowHeight+'px' }\" class=\"ui-row\">\n              <td class=\"ui-cel\" colspan=\"5\" style=\"text-align: left;\">Loading...</td>\n            </tl-datatable-row>\n          </ng-template>\n        </ng-container>\n      </tbody>\n    </table>\n\n    <div [ngStyle]=\"{'height': heightViewPort+'px' }\" class=\"ui-box-notfound-records\" [class.hidden]=\"!isEmpty()\">\n      <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\" [size]=\"'25px'\">filter</tl-icon>\n      {{emptyText()}}\n    </div>\n  </cdk-virtual-scroll-viewport>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Component, Input, ElementRef, ViewChild, TemplateRef } from '@angular/core';\nimport { Highlightable } from '@angular/cdk/a11y';\n\n@Component( {\n  selector: 'tl-list-item',\n  templateUrl: './list-item.html',\n  styleUrls: [ './list-item.scss' ],\n  exportAs: 'listItem'\n} )\nexport class TlListItem implements Highlightable {\n\n  @Input() item;\n\n  @Input() disabled = false;\n\n  @Input() grouped = true;\n\n  @Input() height = '30px';\n\n  @Input() template: TemplateRef<any>;\n\n  public selected = false;\n\n  @ViewChild('listElement', {static: true}) element: ElementRef;\n\n  setActiveStyles(): void {\n    this.selected = true;\n  }\n\n  setInactiveStyles(): void {\n    this.selected = false;\n  }\n\n}\n","<div class=\"ui-wrapper-list-item primary\">\n  <div class=\"ui-list-item\"\n       #listElement\n       [class.selected]=\"selected\"\n       [style.paddingLeft]=\"grouped ? '15px' : '5px'\"\n       [style.line-height]=\"height\"\n       [class.disabled]=\"disabled\"\n       [style.height]=\"height\">\n    <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, EventEmitter, OnInit, Output, Input, ViewChild, ElementRef, ViewChildren, QueryList,\n  AfterViewInit, SimpleChanges, OnChanges, Renderer2, OnDestroy,\n} from '@angular/core';\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { TlListItem } from './list-item/list-item';\nimport { TlInput } from '../input/input';\nimport { I18nService } from '../i18n/i18n.service';\nimport { ListItemInterface } from '../dropdownlist/interfaces/list-item';\nimport { scrollIntoView } from '../core/helper/scrollIntoView';\nimport * as objectPath from 'object-path';\nimport { Subscription } from 'rxjs';\n\n\nexport class GroupList {\n  description: string;\n  items: Array<any>;\n}\n\n@Component( {\n  selector: 'tl-overlay-list',\n  templateUrl: './overlay-list.html',\n  styleUrls: [ './overlay-list.scss' ],\n} )\nexport class TlOverlayList implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n\n  @Input( 'datasource' )\n  set dataSource(data) {\n    this._datasource = data;\n    this.getFilteredData();\n  }\n\n  get dataSource() {\n    return this._datasource;\n  }\n\n  @Input( 'searchOnList' ) searchOnList = false;\n\n  @Input( 'itemHeight' ) itemHeight = '';\n\n  @Input( 'inputModelIndex' ) inputModelIndex;\n\n  @Input( 'optionSelected' ) optionSelected;\n\n  @Input( 'typeOfData' ) typeOfData;\n\n  @Input( 'keyText' ) keyText = 'text';\n\n  @Input( 'groupBy' ) groupBy = null;\n\n  @Input( 'keyIcon' ) keyIcon = 'icon';\n\n  @Input( 'icon' ) icon = null;\n\n  @Input( 'defaultIcon' ) defaultIcon = null;\n\n  @Input( 'defaultOptionText' ) defaultOptionText = 'Reset';\n\n  @Input( 'width' ) width = '120px';\n\n  @Input( 'maxHeight' ) maxHeight = '200px';\n\n  @Input( 'customInput' ) customInput;\n\n  @Input( 'customFocus' ) customFocus;\n\n  @Input( 'hasDefaultOption' ) hasDefaultOption = false;\n\n  @Output() selectOption: EventEmitter<ListItemInterface> = new EventEmitter();\n\n  @Output() defaultOption: EventEmitter<any> = new EventEmitter();\n\n  @Output() search: EventEmitter<any> = new EventEmitter();\n\n  @Output() findByLetter: EventEmitter<any> = new EventEmitter();\n\n  @Output() close: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild( 'list', {static: true} ) list: ElementRef;\n\n  @ViewChild( TlInput, { static: false } ) tlInput: TlInput;\n\n  @ViewChild( 'defaultPlaceholder', {static: true} ) defaultPlaceholder: ElementRef;\n\n  @ViewChildren(TlListItem) items: QueryList<TlListItem>;\n\n  public keyManager: ActiveDescendantKeyManager<TlListItem>;\n\n  public notFound = false;\n\n  public groups: GroupList[] = [];\n\n  public unGrouped = [];\n\n  public searchText = '';\n\n  private _datasource = [];\n\n  private numberItems = 0;\n\n  private subscription = new Subscription();\n\n  get emptyList() {\n    return this.i18n.getLocale().OverlayList.emptyList;\n  }\n\n  constructor( private renderer: Renderer2,\n               private i18n: I18nService ) {}\n\n  ngOnInit() {\n    console.log(objectPath)\n  }\n\n  ngAfterViewInit() {\n    this.handleCustomInputEvents();\n    this.keyManager = new ActiveDescendantKeyManager( this.items );\n    this.keyManager.withWrap();\n    this.handleActiveItem();\n    this.handleModelOption();\n    this.getFilteredData();\n  }\n\n  getFilteredData() {\n    this.groups = [];\n    this.unGrouped = [];\n    if (!this.groupBy) {\n      this.unGrouped = this.dataSource;\n      return;\n    }\n    this.dataSource.forEach( ( value ) => {\n      if (!objectPath.get(value, this.groupBy)) {\n        this.unGrouped = this.getItemsGroup(objectPath.get(value, this.groupBy));\n        return;\n      }\n      if ( !this.existGroup( objectPath.get(value, this.groupBy) ) ) {\n        this.groups.push( {\n          description: objectPath.get(value, this.groupBy),\n          items: this.getItemsGroup( objectPath.get(value, this.groupBy) )\n        } );\n      }\n    } );\n  }\n\n  existGroup( group ) {\n    for ( const item of this.groups ) {\n      if ( item.description === group ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  getTextContent( item ) {\n    return this.typeOfData === 'simple' ? item : objectPath.get(item, this.keyText);\n  }\n\n  getItemsGroup( group ) {\n    console.log(objectPath)\n    const filter = this.dataSource.filter( ( item ) => objectPath.get(item, this.groupBy) === group);\n    this.numberItems += filter.length;\n    return filter;\n  }\n\n  handleCustomInputEvents() {\n    if (this.customInput) {\n      this.handleInputFocus();\n\n      this.subscription.add(this.renderer.listen( this.customInput, 'keydown.enter', () => {\n        if (this.hasDataOnDataSource()) {\n          this.emitSelectOption();\n        }\n      }));\n\n      this.subscription.add(this.renderer.listen( this.customInput, 'keydown.arrowdown', () => {\n        this.keyManager.setNextItemActive();\n        this.handleScrollIntoView();\n      }));\n\n      this.subscription.add(this.renderer.listen( this.customInput, 'keydown.arrowup', () => {\n        this.keyManager.setPreviousItemActive();\n        this.handleScrollIntoView();\n      }));\n    }\n  }\n\n  handleEscape($event) {\n    this.stopEvent( $event );\n    this.close.emit();\n  }\n\n  handleInputFocus() {\n    if (this.searchOnList && !this.customFocus) {\n      setTimeout(() => {\n        this.tlInput.setFocus();\n      }, 1);\n    }\n  }\n\n  hasDataOnDataSource() {\n    return this.dataSource.length > 0;\n  }\n\n  handleActiveItem() {\n    setTimeout(() => {\n      if (this.optionSelected) {\n        this.setActiveItem( this.optionSelected.index );\n        return;\n      }\n      this.setFirstItemActive();\n    }, 1);\n  }\n\n  setFirstItemActive() {\n    this.removeSelectedAll();\n    this.keyManager.setFirstItemActive();\n  }\n\n  setActiveItem(index: number) {\n    this.removeSelectedAll();\n    this.keyManager.setActiveItem(index);\n  }\n\n  removeSelectedAll() {\n    this.items.forEach((item) => item.selected = false);\n  }\n\n  handleScrollIntoView() {\n    if (this.keyManager.activeItem) {\n      scrollIntoView(this.keyManager.activeItem.element.nativeElement);\n    }\n  }\n\n  handleInput( $event ) {\n    if ( this.searchOnList ) {\n      this.keydownSearch( $event );\n    }\n  }\n\n  handleModelOption() {\n    if ( this.inputModelIndex && this.items ) {\n      this.keyManager.setActiveItem( this.inputModelIndex );\n    }\n  }\n\n  handleSearchByLetter($event) {\n    this.findByLetter.emit($event.key);\n  }\n\n  handleClickOption( $event, item: TlListItem ) {\n    this.stopEvent($event);\n    this.keyManager.setActiveItem( item );\n    this.emitSelectOption();\n  }\n\n  defaultOptionClick() {\n    this.defaultOption.emit();\n  }\n\n  stopEvent($event) {\n    $event.preventDefault();\n    $event.stopPropagation();\n  }\n\n  emitSelectOption() {\n    this.selectOption.emit( <ListItemInterface>{\n      option: this.keyManager.activeItem,\n      index: this.keyManager.activeItemIndex\n    });\n  }\n\n  trackByFn(index) {\n    return index;\n  }\n\n  keydownSearch( $event ) {\n    this.searchText = $event.target.value;\n    this.search.emit( $event.target.value );\n    this.unGrouped = [];\n  }\n\n  setNotFound() {\n    this.notFound = this.dataSource.length === 0;\n  }\n\n  ngOnChanges(changes: SimpleChanges ) {\n    this.keyManager = new ActiveDescendantKeyManager( this.items );\n    this.handleActiveItem();\n    if (changes['datasource']) {\n      this.setNotFound();\n    }\n    if (changes['inputModelIndex']) {\n      this.handleModelOption();\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n\n","<div class=\"ui-wrapper-list\">\n  <div class=\"dropdown-list-wrapper-select\" [style.width]=\"width\">\n    <div class=\"search-input\" *ngIf=\"searchOnList && !customFocus\">\n      <tl-input\n        (input)=\"handleInput($event)\"\n        (keydown.escape)=\"handleEscape($event)\"\n        (keydown.ArrowUp)=\"keyManager.setPreviousItemActive(); handleScrollIntoView();\"\n        (keydown.ArrowDown)=\"keyManager.setNextItemActive(); handleScrollIntoView();\"\n        (keydown.enter)=\"emitSelectOption(); $event.preventDefault()\">\n      </tl-input>\n    </div>\n\n    <section class=\"dropdown-list-select\"\n             [style.maxHeight]=\"maxHeight\">\n      <div class=\"ui-label-notfound\" *ngIf=\"notFound\">{{ emptyList }}</div>\n      <div *ngIf=\"hasDefaultOption\"\n           tabindex=\"-1\"\n           class=\"default-option\"\n           (click)=\"defaultOptionClick()\"\n           [style.lineHeight]=\"itemHeight\" [style.height]=\"itemHeight\">\n        <i *ngIf=\"defaultIcon\" class=\"{{ defaultIcon }}\"></i>\n        {{ defaultOptionText }}\n      </div>\n\n      <div *ngFor=\"let group of groups; trackBy: trackByFn\" class=\"group-list\">\n        <div *ngIf=\"group.description\" class=\"group-description\">{{ group.description }}</div>\n        <tl-list-item *ngFor=\"let item of group.items; trackBy: trackByFn\"\n                      [height]=\"itemHeight\"\n                      #listItem=\"listItem\"\n                      [template]=\"groupTemplate\"\n                      (keydown)=\"handleSearchByLetter($event)\"\n                      (keydown.enter)=\"handleClickOption($event, listItem)\"\n                      (click)=\"handleClickOption($event, listItem)\"\n                      [item]=\"item\">\n          <ng-template #groupTemplate>\n            <i *ngIf=\"item[keyIcon]\" class=\"{{ item[keyIcon] }}\" style=\"padding: 0 5px\"></i>\n            <span [innerHTML]=\"getTextContent(item) | highlight:searchText\"></span>\n          </ng-template>\n        </tl-list-item>\n      </div>\n        <tl-list-item *ngFor=\"let item of unGrouped; trackBy: trackByFn\"\n                      [height]=\"itemHeight\"\n                      [grouped]=\"false\"\n                      [template]=\"ungroupTemplate\"\n                      #listItem=\"listItem\"\n                      (keydown)=\"handleSearchByLetter($event)\"\n                      (keydown.enter)=\"handleClickOption($event, listItem)\"\n                      (click)=\"handleClickOption($event, listItem)\"\n                      [item]=\"item\">\n          <ng-template #ungroupTemplate>\n            <i *ngIf=\"item[keyIcon]\" class=\"{{ item[keyIcon] }}\" style=\"padding: 0 5px\"></i>\n            <span [innerHTML]=\"getTextContent(item) | highlight:searchText\"></span>\n          </ng-template>\n        </tl-list-item>\n    </section>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, Input, Inject,\n  Optional, OnInit, AfterViewInit, ViewChild, ChangeDetectorRef\n} from '@angular/core';\nimport { OverlayAnimation } from '../core/directives/overlay-animation';\nimport { ElementBase } from '../input/core/element-base';\nimport { MakeProvider } from '../core/base/value-accessor-provider';\nimport { NG_ASYNC_VALIDATORS, NG_VALIDATORS, NgModel } from '@angular/forms';\n\n@Component( {\n  selector: 'tl-dropdown-icon',\n  templateUrl: './dropdownicon.html',\n  styleUrls: [ './dropdownicon.scss' ],\n  animations: [ OverlayAnimation ],\n  providers: [\n    [ MakeProvider( TlDropdownIcon ) ]\n  ]\n} )\nexport class TlDropdownIcon extends ElementBase<string> implements OnInit, AfterViewInit {\n\n  @Input() data = [];\n\n  @Input() disabled = null;\n\n  @Input() defaultIcon = 'ion ion-ios-search';\n\n  @Input() color = 'basic';\n\n  @Input() heightIcon = '23px';\n\n  @Input() widthIcon = '35px';\n\n  @Input() heightItems = '30px';\n\n  @Input() widthItems = '120px';\n\n  @Input() keyIcon = 'icon';\n\n  @Input() defaultOptionText = 'Select...';\n\n  @Input() hasDefaultOption = true;\n\n  @Input() keyText = 'text';\n\n  @Input() keyValue = 'value';\n\n  @ViewChild( NgModel, {static: true}  ) model: NgModel;\n\n  public optionSelected;\n\n  public typeOfData = 'complex';\n\n  public isOpen: boolean;\n\n  constructor( @Optional() @Inject( NG_VALIDATORS ) validators: Array<any>, @Optional() @Inject( NG_ASYNC_VALIDATORS )\n    asyncValidators: Array<any>, private change: ChangeDetectorRef ) {\n    super( validators, asyncValidators );\n  }\n\n  ngOnInit() {}\n\n  ngAfterViewInit() {\n    const key = Object.keys(this.data)[0];\n    if (typeof this.data[key] === 'string' ) {\n      this.typeOfData = 'simple';\n    }\n    if (!this.keyIcon) {\n      throw new Error('The property [keyIcon] must be declared');\n    }\n  }\n\n  onBackdropClick() {\n    this.isOpen = false;\n    this.change.detectChanges();\n  }\n\n  onSelectOption( $event ) {\n    this.optionSelected = $event;\n    this.value = this.optionSelected.option.item[this.keyValue];\n    this.isOpen = false;\n  }\n\n  onDefaultOption() {\n    this.optionSelected = null;\n    this.value = '';\n    this.isOpen = false;\n  }\n\n  getIcon() {\n    if (this.optionSelected) {\n      return this.optionSelected.option.item.icon;\n    }\n    return this.defaultIcon;\n  }\n\n}\n\n","<div class=\"ui-wrapper-dropdownicon\">\n  <button tabindex=\"0\"\n          #button\n          (keydown.enter)=\"$event.preventDefault()\"\n          (click)=\"isOpen = !isOpen\"\n          cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n          [ngClass]=\"{'disabled': disabled}\"\n          [ngStyle]=\"{ 'height': heightIcon, 'width': widthIcon }\"\n          [class]=\"'ui-button-icon ripple '+ color\"\n          [disabled]=\"disabled ? true : null\">\n    <div [style.line-height]=\"heightIcon\" [class]=\"'ui-icon ' + getIcon()\"></div>\n  </button>\n  <input class=\"ui-hidden-input\" [(ngModel)]=\"value\">\n  <ng-template cdkConnectedOverlay\n               (backdropClick)=\"onBackdropClick()\"\n               [cdkConnectedOverlayHasBackdrop]=\"true\"\n               [cdkConnectedOverlayOrigin]=\"trigger\"\n               [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n               [cdkConnectedOverlayOpen]=\"isOpen\">\n    <tl-overlay-list\n      @overlay\n      (selectOption)=\"onSelectOption($event)\"\n      (defaultOption)=\"onDefaultOption()\"\n      [typeOfData]=\"typeOfData\"\n      [defaultOptionText]=\"defaultOptionText\"\n      [hasDefaultOption]=\"hasDefaultOption\"\n      [defaultIcon]=\"defaultIcon\"\n      [optionSelected]=\"optionSelected\"\n      [datasource]=\"data\"\n      [itemHeight]=\"heightItems\"\n      [width]=\"widthItems\"\n      [icon]=\"keyIcon\"\n      [keyText]=\"keyText\">\n    </tl-overlay-list>\n  </ng-template>\n</div>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Component, EventEmitter, Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { debounceTime } from 'rxjs/internal/operators';\nimport { Subject, Subscription } from 'rxjs';\nimport { I18nService } from '../../../i18n/i18n.service';\nimport { FilterEventMetadata, FilterMetadata } from '../../metadatas/filter.metadata';\nimport { TlDatatableColumn } from '../column/datatable-column';\n\n\n@Component({\n    selector: '[tlColumnFilter]',\n    templateUrl: './datatable-column-filter.html',\n    styleUrls: ['./datatable-column-filter.scss']\n})\nexport class TlDatatabaleColumnFilter implements OnInit, OnDestroy {\n\n    @Input('tlColumnFilter') tlColumnFilter: TlDatatableColumn[];\n\n    @Output() filterEvent: EventEmitter<any> = new EventEmitter();\n\n    @Output() keydownFilterEvent: EventEmitter<any> = new EventEmitter();\n\n    public filters: FilterMetadata = { matchMode: {}, value: {} };\n\n    get filterPlaceholder() {\n      return this.i18n.getLocale().Datatable.filterPlaceholder;\n    }\n\n    get dropdownResetPlaceholder() {\n      return this.i18n.getLocale().Datatable.dropdownResetPlaceholder;\n    }\n\n    private subject =  new Subject();\n\n    private subscription =  new Subscription();\n\n    constructor( private i18n: I18nService) {}\n\n    ngOnInit() {\n        this.subscription.add(\n          this.subject.pipe( debounceTime(600) ).subscribe((event) => {\n            if (event !== undefined) {\n                const filterEventObject = this.makeFilterEvent();\n                this.filterEvent.emit( filterEventObject ) ;\n            }\n          })\n        );\n    }\n\n    onKeyDown( $event ) {\n      this.keydownFilterEvent.emit($event);\n    }\n\n    onChangeFilter(event) {\n      this.subject.next(event);\n    }\n\n    onClear(event) {\n      this.subject.next(event);\n    }\n\n    makeFilterEvent(): FilterEventMetadata {\n        const filter: FilterEventMetadata = { filters: {} };\n\n        this.tlColumnFilter.forEach((column) => {\n            if (this.filters.value[column.field]) {\n                filter.filters[column.field] = {\n                    value: this.getValueByType(column),\n                    matchMode: this.filters.matchMode[column.field] ? this.filters.matchMode[column.field] : this.getDefaultMath( column )\n                };\n            }\n        });\n\n        return Object.keys(filter.filters).length ? filter : { filters: {} };\n    }\n\n    getDefaultMath( column: TlDatatableColumn ): any {\n      switch ( column.type ) {\n        case 'text' :\n          return 'contains';\n        case 'number' :\n          return 'equals';\n        case 'date' :\n          return 'equals';\n        default :\n          return  'contains';\n      }\n    }\n\n    getValueByType( column: TlDatatableColumn ): any {\n      switch ( column.type ) {\n        case 'text' :\n          return this.filters.value[column.field];\n        case 'number' :\n          return parseInt(this.filters.value[column.field], 10);\n        case 'date' :\n          return this.filters.value[column.field];\n        default :\n          return  this.filters.value[column.field];\n      }\n    }\n\n    ngOnDestroy(): void {\n      this.subscription.unsubscribe();\n    }\n}\n","<ng-template ngFor let-column let-index [ngForOf]=\"tlColumnFilter\">\n    <th class=\"ui-cel ui-filter-cel\">\n        <div class=\"ui-filter\">\n            <div class=\"ui-dropdown\"\n                 *ngIf=\"column?.showFilterOptions && column?.filterOptions.length\"\n                 [ngClass]=\"{'-without-dropdown': !column?.showFilterOptions}\">\n\n\n              <tl-dropdown-icon\n                *ngIf=\"column?.showFilter\"\n                [data]=\"column?.filterOptions\"\n                [widthItems]=\"'185px'\"\n                [heightItems]=\"'25px'\"\n                [keyIcon]=\"'icon'\"\n                [keyText]=\"'description'\"\n                [keyValue]=\"'valueItem'\"\n                [defaultOptionText]=\"dropdownResetPlaceholder\"\n                [ngModel]=\"filters.matchMode[column.field]\"\n                (ngModelChange)=\"onChangeFilter(filters.matchMode[column.field] = $event)\">\n              </tl-dropdown-icon>\n\n            </div>\n            <div  class=\"ui-input\">\n                <tl-input *ngIf=\"column?.showFilter\"\n                          [clearButton]=\"true\"\n                          [height]=\"'23px'\"\n                          (keydown)=\"onKeyDown($event)\"\n                          [ngModel]=\"filters.value[column.field]\"\n                          (ngModelChange)=\"onChangeFilter(filters.value[column.field] = $event)\"\n                          (clear)=\"onClear($event)\"\n                          [placeholder]=\"filterPlaceholder\"\n                          [type]=\"column?.type\" >\n                </tl-input>\n            </div>\n        </div>\n    </th>\n</ng-template>\n\n\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { AfterContentInit, Directive, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core';\nimport type { TlDatatable } from '../datatable';\n\n@Directive({\n    selector: '[resizer][datatable]'\n})\nexport class TlResizerDirective implements AfterContentInit, OnDestroy {\n\n    @Input() resizer: boolean;\n\n    @Input() datatable: TlDatatable;\n\n    private columnSeparator: HTMLElement;\n\n    private tableHeaderRowElement: HTMLElement;\n\n    private tableHeaderElement: HTMLElement;\n\n    private headerColgroupCols;\n\n    private bodyColgroupCols;\n\n    private isMoving = false;\n\n    private pointOfClick = 0;\n\n    private columnLeftHeader: HTMLElement;\n\n    private columnRightHeader: HTMLElement;\n\n    private columnLeftBody: HTMLElement;\n\n    private columnRightBody: HTMLElement;\n\n    private colLeftWidth = 0;\n\n    private colRightWidth = 0;\n\n    private displacement = 0;\n\n    private listenersList = [];\n\n    private mouseMoveListener: () => void;\n\n    private mouseupListener: () => void;\n\n    constructor( private datatabeHeaderRef: ElementRef, private render: Renderer2 ) {}\n\n    ngAfterContentInit() {\n        if (this.resizer) {\n            this.getElementColumnSeparator();\n            this.getElementTableHeader();\n            this.getElementTableHeaderRow();\n            this.getColsOfColGroups();\n        }\n    }\n\n    async getElementTableHeader() {\n        await this.datatabeHeaderRef;\n        this.tableHeaderElement = this.datatabeHeaderRef.nativeElement.getElementsByClassName('ui-datatable-table')[0];\n    }\n\n    async getElementTableHeaderRow() {\n        await this.datatabeHeaderRef;\n        this.tableHeaderRowElement = this.datatabeHeaderRef.nativeElement.getElementsByClassName('ui-row')[0];\n        this.listenersList.push(\n            this.render.listen(this.tableHeaderRowElement, 'mouseover', ( event ) => {\n                this.onTableHeaderRowMouseOver(event);\n            })\n        );\n    }\n\n    async getColsOfColGroups() {\n        await this.datatabeHeaderRef;\n        this.headerColgroupCols = this.datatabeHeaderRef.nativeElement.parentElement.parentElement.getElementsByTagName('colgroup')[0];\n        this.bodyColgroupCols = this.datatabeHeaderRef.nativeElement.parentElement.parentElement.getElementsByTagName('colgroup')[1];\n    }\n\n    async getElementColumnSeparator() {\n        await this.datatabeHeaderRef;\n        this.columnSeparator = this.datatabeHeaderRef.nativeElement.getElementsByClassName('ui-datatable-column-separator')[0] ;\n        this.listenersList.push(\n            this.render.listen(this.columnSeparator, 'mousedown', ( event ) => {\n                this.onColumnSeparatorMouseDown(event);\n            })\n        );\n    }\n\n    onColumnResize(event: MouseEvent) {\n        event.preventDefault();\n        this.resizeColumns(event);\n    }\n\n    onColumnSeparatorMouseDown(event: MouseEvent) {\n        this.startResize();\n        this.pointOfClick = event.clientX;\n        this.getColsBetweenSeparator();\n    }\n\n    onTableHeaderRowMouseOver(event) {\n        if ( event.relatedTarget && ( event.relatedTarget.localName !== 'div' ) ) {\n            const element = event.movementX >= 0 ? event.fromElement : event.target;\n            this.moveSeparatorAtCursor(element);\n        }\n    }\n\n    onColumnSeparatorMouseUp() {\n        this.stopResize();\n    }\n\n    createHandlerEventListeners() {\n        this.mouseMoveListener = this.render.listen(document, 'mousemove', ( event ) => {\n            this.onColumnResize(event);\n        });\n\n        this.mouseupListener = this.render.listen(document, 'mouseup', ( ) => {\n            this.onColumnSeparatorMouseUp();\n        });\n    }\n\n    destroyHandleEventListeners() {\n        if (this.mouseMoveListener || this.mouseupListener) {\n            this.mouseMoveListener();\n            this.mouseupListener();\n        }\n    }\n\n    moveSeparatorAtCursor(element: HTMLElement) {\n        this.columnSeparator.style.left = this.getPositionSeparetorFromElement(element) + 'px';\n    }\n\n    getPositionSeparetorFromElement(element) {\n        return (\n            ( element.offsetWidth + element.offsetLeft ) -\n            ( Math.round( this.columnSeparator.offsetWidth / 2 ) ) -\n            this.getHeaderWrapScrollLeft()\n        );\n    }\n\n    getColsBetweenSeparator() {\n        for ( let element = 0; element < this.tableHeaderRowElement.children.length; element++ ) {\n            const columnElement: HTMLElement = this.tableHeaderRowElement.children[ element ] as HTMLElement;\n\n            if ( this.itIsBetweenSeparator( columnElement ) ) {\n                this.columnLeftHeader = this.headerColgroupCols.children[ element ] as HTMLElement;\n                this.columnRightHeader = this.headerColgroupCols.children[ element + 1 ] as HTMLElement;\n\n                this.columnLeftBody = this.bodyColgroupCols.children[ element ] as HTMLElement;\n                this.columnRightBody = this.bodyColgroupCols.children[ element + 1 ] as HTMLElement;\n\n                this.colLeftWidth = parseInt( this.columnLeftHeader.style.width, 10 );\n                this.colRightWidth = parseInt( this.columnRightHeader.style.width, 10 );\n                return;\n            }\n        }\n    }\n\n    itIsBetweenSeparator(column: HTMLElement) {\n        return this.getPositionSeparetorFromElement(column) === this.columnSeparator.offsetLeft;\n    }\n\n    resizeColumns(event) {\n        if ( this.isMoving ) {\n            this.setDisplacement(event);\n            this.isMovingToRight(event) ? this.resizeColumnsToRight() : this.resizeColumnsToLeft();\n        }\n    }\n\n    resizeColumnsToRight() {\n        const leftColumn = this.colLeftWidth + this.displacement;\n        const rightColumn =  this.colRightWidth - this.displacement;\n        this.setNewPositionsColumns(leftColumn, rightColumn);\n    }\n\n    resizeColumnsToLeft() {\n        const leftColumn = this.colLeftWidth - this.displacement;\n        const rightColumn = this.colRightWidth + this.displacement;\n        this.setNewPositionsColumns(leftColumn, rightColumn);\n    }\n\n    setNewPositionsColumns(leftColumn, rightColumn) {\n        if ( ( leftColumn > 40 ) && ( rightColumn > 40 )) {\n                this.render.setStyle(this.columnLeftHeader, 'width', leftColumn + 'px');\n                this.render.setStyle(this.columnRightHeader, 'width', rightColumn + 'px');\n                this.render.setStyle(this.columnLeftBody, 'width', leftColumn + 'px');\n                this.render.setStyle(this.columnRightBody, 'width', rightColumn + 'px');\n        }\n    }\n\n    isMovingToRight(event) {\n        return this.pointOfClick - event.clientX < 0;\n    }\n\n    setDisplacement(event) {\n        this.displacement = this.pointOfClick - event.clientX;\n        this.displacement = this.displacement < 0 ? this.displacement * -1 : this.displacement;\n    }\n\n    getHeaderWrapScrollLeft() {\n       return this.datatabeHeaderRef.nativeElement.firstElementChild.scrollLeft;\n    }\n\n    startResize() {\n        this.isMoving = true;\n        this.createHandlerEventListeners();\n        this.changeCursorResize();\n    }\n\n    stopResize() {\n        this.isMoving = false;\n        this.destroyHandleEventListeners();\n        this.changeCursorResize();\n    }\n\n    changeCursorResize() {\n        const cursor = this.isMoving ? 'col-resize' : 'default';\n        this.render.setStyle(this.datatabeHeaderRef.nativeElement, 'cursor', cursor);\n    }\n\n    clearListerners() {\n        if (this.listenersList) {\n            this.listenersList.forEach((value) => {\n                value();\n            });\n            this.listenersList = [];\n        }\n    }\n\n    ngOnDestroy() {\n        this.clearListerners();\n    }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { AfterViewInit, Component, ViewChild, ElementRef, OnDestroy, Output, EventEmitter, Input } from '@angular/core';\nimport type { TlDatatable } from '../../datatable';\nimport { DatatableHelpersService } from '../../services/datatable-helpers.service';\nimport { TlDatatabaleColumnFilter } from '../column-filter/datatable-column-filter';\nimport { TlDatatableColumn } from '../column/datatable-column';\nimport { Subscription } from 'rxjs';\n\n@Component( {\n    selector: 'tl-datatable-header',\n    templateUrl: './datatable-header.html',\n    styleUrls: [ './datatable-header.scss', '../../datatable.scss' ],\n    providers: [ DatatableHelpersService ]\n} )\nexport class TlDatatableHeader implements AfterViewInit, OnDestroy {\n\n    @Input() dt: TlDatatable;\n\n    @ViewChild(TlDatatabaleColumnFilter, {static: false} ) columnsFilter;\n\n    @ViewChild('datatableHeader', {static: true} ) datatableHeader: ElementRef;\n\n    @Output() keydownFilter: EventEmitter<any> = new EventEmitter<any>();\n\n    @Output() filterEvent: EventEmitter<any> = new EventEmitter<any>();\n\n    @Output() sortEvent: EventEmitter<any> = new EventEmitter<any>();\n\n    @Output() keydownFilterEvent: EventEmitter<any> = new EventEmitter<any>();\n\n    private subscription = new Subscription();\n\n    private filderOrder = 1;\n\n    private sortField;\n\n\n    constructor( public helperService: DatatableHelpersService ) {}\n\n    ngAfterViewInit() {\n        if (this.columnsFilter !== undefined) {\n          this.subscription.add(\n            this.columnsFilter.filterEvent.subscribe( ( value ) => {\n              this.filterEvent.emit(value);\n            })\n          );\n        }\n\n        this.subscription.add(this.dt.getScrollingHorizontal().subscribe((leftValue) => {\n            this.datatableHeader.nativeElement.firstElementChild.scrollLeft = leftValue;\n          })\n        );\n    }\n\n    onClick(column: TlDatatableColumn) {\n      if (( column.sortable === false )  || ( this.dt.allowSortColumn === false)) {\n        return;\n      }\n      this.filderOrder = this.filderOrder * -1;\n      if (this.sortField !==  column.field) {\n        this.sortField = column.field;\n        this.filderOrder = 1;\n      }\n\n      this.sortEvent.emit({sorts: {column: column.field, sortBy: this.filderOrder}} )\n    }\n\n    getSortOrder(column) {\n      let order = 0;\n      if (this.sortField === column.field) {\n        order = this.filderOrder;\n      }\n      return order;\n    }\n\n    ngOnDestroy(): void {\n      this.subscription.unsubscribe();\n    }\n\n}\n","<div class=\"ui-datatable-header\" #datatableHeader [resizer]=\"dt.allowResize\" [datatable]=\"dt\" >\n    <div class=\"ui-datatable-header-wrap\">\n\n        <div class=\"ui-datatable-column-separator\"></div>\n\n        <table #table class=\"ui-datatable-table\" [colgroup]=\"dt.columns\">\n            <thead class=\"ui-datatable-table-head\">\n\n                <tr class=\"ui-row ui-row-title\">\n                    <th *ngFor=\"let column of dt.columns;\"\n                        (click)=\"onClick(column)\"\n                        [class]=\"'ui-cel ' + helperService.getClassAlignment(column.alignment)\">\n\n                        <span>{{column.title}}</span>\n                        <div *ngIf=\"dt.allowSortColumn\" class=\"ui-sort-indicator -push-{{column.alignment}}\">\n                            <span\n                              [ngClass]=\"{\n                                      'ion ion-ios-arrow-round-up': getSortOrder(column) == 1,\n                                      'ion ion-ios-arrow-round-down': getSortOrder(column) == -1\n                              }\"\n                            >\n                          </span>\n                        </div>\n                    </th>\n                </tr>\n                <tr *ngIf=\"dt.allowFilterColumn\" class=\"ui-row ui-row-filter\"\n                    [tlColumnFilter]=\"dt.columns\"\n                    (keydownFilterEvent)=\"keydownFilterEvent.emit($event)\">\n                ></tr>\n            </thead>\n        </table>\n    </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  Component,\n  ContentChildren,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  QueryList,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\nimport { TlDatatableColumn } from './parts/column/datatable-column';\nimport { DatatableFilterOptions } from './configs/datatable-filter-options';\nimport { FilterOptionsService } from './services/datatable-filter-options.service';\nimport { TlDatatableFilterService } from './services/datatable-filter.service';\nimport { DatatableDataSource } from './services/datatable-datasource.service';\nimport { TlDatatableColumnService } from './services/datatable-column.service';\nimport { TlDatatableFilterConstraints } from './services/datatable-filter-constraints.service';\nimport { Observable, Subject } from 'rxjs';\nimport { TlDatatableSortService } from './services/datatable-sort.service';\nimport { DatatableHelpersService } from './services/datatable-helpers.service';\nimport { TlDatatableContent } from './parts/content/datatable-content';\nimport { ContextMenuInterface } from '../contextmenu/interfaces/context-menu.interface';\n\n@Component( {\n  selector: 'tl-datatable',\n  templateUrl: './datatable.html',\n  styleUrls: [ './datatable.scss' ],\n  providers: [\n    TlDatatableColumnService,\n    TlDatatableFilterConstraints,\n    TlDatatableFilterService,\n    TlDatatableSortService,\n    FilterOptionsService,\n    DatatableHelpersService\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n} )\nexport class TlDatatable implements AfterContentInit, OnChanges {\n\n  @Input( 'data' ) data: Array<any>;\n\n  @Input( 'recordsCount' ) recordsCount = -1;\n\n  @Input( 'mode' ) mode: 'scrollable' | 'paginator' = 'scrollable';\n\n  @Input( 'rowModel' ) rowModel: 'inmemory' | 'infinite' = 'inmemory';\n\n  @Input( 'contextMenuItems' ) contextMenuItems: ContextMenuInterface[];\n\n  @Input( 'allowResize' ) allowResize = false;\n\n  @Input( 'allowSortColumn' ) allowSortColumn = true;\n\n  @Input( 'initializeFocus' ) initializeFocus = true;\n\n  @Input( 'allowFilterColumn' ) allowFilterColumn = false;\n\n  @Input( 'rowsPage' ) rowsPage = 30;\n\n  @Input( 'rowHeight' ) rowHeight = 25;\n\n  @Input( 'rowsClient' ) rowsClient = 12;\n\n  @Input( 'height' ) height = 300;\n\n  @Input( 'width' ) width = 300;\n\n  @Input( 'globalFilter' ) globalFilter: any;\n\n  @Input( 'globalFilterOptions' ) globalFilterOptions: DatatableFilterOptions;\n\n  @Output( 'rowSelect' ) rowSelect: EventEmitter<any> = new EventEmitter();\n\n  @Output( 'rowClick' ) rowClick: EventEmitter<any> = new EventEmitter();\n\n  @Output( 'rowDblclick' ) rowDblclick: EventEmitter<any> = new EventEmitter();\n\n  @Output( 'pageChange' ) pageChange: EventEmitter<any> = new EventEmitter();\n\n  @Output( 'sortData' ) sortData: EventEmitter<any> = new EventEmitter();\n\n  @Output( 'filterData' ) filterData: EventEmitter<any> = new EventEmitter();\n\n  @Output( 'loadData' ) loadData: EventEmitter<any> = new EventEmitter();\n\n  @Output( 'endRow' ) endRow: EventEmitter<any> = new EventEmitter();\n\n  @ContentChildren( TlDatatableColumn ) datatableColumns: QueryList<TlDatatableColumn>;\n\n  @ViewChild( 'tbody', { static: true } ) tbody: ElementRef;\n\n  @ViewChild( 'datatableBox', { static: true } ) datatableBox: ElementRef;\n\n  @ViewChild( TlDatatableContent, { static: true } ) datatableContent: TlDatatableContent;\n\n  public dataSource = new DatatableDataSource( this );\n\n  public columns: any[] = [];\n\n  public heightViewPort = 0;\n\n  public tabindex = 0;\n\n  public scrollingHorizontalSubject = new Subject<any>();\n\n  private loadingSubject = new Subject<any>();\n\n  private _loading = false;\n  set loading( value ) {\n    this._loading = value;\n    this.loadingSubject.next( value );\n  }\n\n  get loading() {\n    return this._loading;\n  }\n\n  constructor( public columnService: TlDatatableColumnService,\n               public filterService: TlDatatableFilterService,\n               public sortService: TlDatatableSortService\n  ) {}\n\n  ngAfterContentInit() {\n    this.calcDimensionsHeight();\n    this.columnService.onInitColumnService( this );\n    this.filterService.onInicializeFilterService( this );\n    this.sortService.onInicializeSortService( this );\n    this.columnService.setColumns();\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {\n    ( this.dataSource as DatatableDataSource ).changes( changes );\n  }\n\n  calcDimensionsHeight() {\n    this.heightViewPort = this.allowFilterColumn ? this.height - 32 : this.height;\n    this.heightViewPort -= 25;\n    this.rowHeight = this.heightViewPort / this.rowsClient;\n  }\n\n  onRowClick( row, index ) {\n    this.rowClick.emit( this.getObjectRow( row, index ) );\n  }\n\n  onRowSelect( row, index ) {\n    this.rowSelect.emit( this.getObjectRow( row, index ) );\n  }\n\n  onChangeFilter( value ) {\n    this.filterService.setFilter( value );\n  }\n\n  onChangeSort( sort ) {\n    this.sortService.setSort( sort);\n  }\n\n  onKeydownFilter( event ) {\n    this.filterService.keydownFilter.next(event);\n  }\n\n  onRowDblclick( row, index ) {\n    this.rowDblclick.emit( this.getObjectRow( row, index ) );\n  }\n\n  setFocus() {\n    this.datatableContent.setSelectedItem();\n  }\n\n  getScrollingHorizontal(): Observable<any> {\n    return this.scrollingHorizontalSubject.asObservable();\n  }\n\n  getObjectRow( row, index ) {\n    return { data: row, index: index };\n  }\n}\n","<div class=\"tl-datatable-box\" #datatableBox\n     [ngClass]=\"{'-borderleft': true}\"\n     [ngStyle]=\"{width: width}\">\n    <tl-datatable-header [dt]=\"this\"\n                         (filterEvent)=\"onChangeFilter($event)\"\n                         (sortEvent)=\"onChangeSort($event)\"\n                         (keydownFilterEvent)=\"onKeydownFilter($event)\"\n    >\n    </tl-datatable-header>\n    <tl-datatable-content\n      [dataSource]=\"dataSource\"\n      [data]=\"data\"\n      [rowHeight]=\"rowHeight\"\n      [heightViewPort]=\"heightViewPort\"\n      [columns]=\"columns\"\n      [contextMenuItems]=\"contextMenuItems\"\n      (rowSelect)=\"onRowSelect( $event.row, $event.index )\"\n      (rowDbClick)=\"onRowDblclick( $event.row, $event.index )\"\n      (rowClick)=\"onRowClick( $event.row, $event.index )\">\n    </tl-datatable-content>\n</div>\n\n","import {InjectionToken} from '@angular/core';\n\nexport interface DropdownConfig {\n  labelSize?: string;\n  maxHeight?: string;\n  itemHeight?: string;\n  width?: string;\n  labelPlacement?: string;\n  color?: string;\n  keyText?: string;\n  keyValue?: string;\n  debounceTime?: number;\n  modelMode?: string;\n  identifier?: string;\n}\n\nexport let DROPDOWN_CONFIG = new InjectionToken<DropdownConfig>('dropdown.preview.js');\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  Input,\n  Output,\n  Inject,\n  Optional,\n  ViewChild,\n  ElementRef, OnChanges, EventEmitter, ChangeDetectorRef, SimpleChanges, Self, OnInit,\n} from '@angular/core';\n\nimport * as objectPath from 'object-path';\n\nimport { NgControl } from '@angular/forms';\nimport { OverlayAnimation } from '../core/directives/overlay-animation';\nimport { KeyEvent } from '../core/enums/key-events';\nimport { DROPDOWN_CONFIG, DropdownConfig } from './interfaces/dropdown.config';\nimport { ListItemInterface } from './interfaces/list-item';\nimport { TlListItem } from '../overlaylist/list-item/list-item';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\n\n@Component( {\n  selector: 'tl-dropdown-list',\n  templateUrl: './dropdownlist.html',\n  styleUrls: [ './dropdownlist.scss' ],\n  animations: [ OverlayAnimation ]\n} )\nexport class TlDropDownList extends ValueAccessorBase<any> implements OnInit, OnChanges {\n\n  @Input( 'data' )\n  set data( data: any[] ) {\n    if ( data ) {\n      this._data = data;\n      this.initializeComponent();\n    }\n  }\n\n  get data() {\n    return this._data;\n  }\n\n  @Input( 'keyText' ) keyText = null;\n\n  @Input( 'icon' ) icon = null;\n\n  @Input( 'label' ) label: string;\n\n  @Input( 'debounceTime' ) debounceTime = 200;\n\n  @Input( 'disabled' ) disabled = false;\n\n  @Input( 'labelPlacement' ) labelPlacement = 'left';\n\n  @Input( 'labelSize' ) labelSize = '100px';\n\n  @Input( 'itemHeight' ) itemHeight = '23px';\n\n  @Input( 'keyValue' ) keyValue = null;\n\n  @Input( 'maxHeight' ) maxHeight = '150px';\n\n  @Input( 'identifier' ) identifier = null;\n\n  @Input( 'defaultOption' ) defaultOption = false;\n\n  @Input( 'groupBy' ) groupBy = null;\n\n  @Input( 'width' ) width = '100%';\n\n  @Input( 'placeholder' ) placeholder = 'Select Item';\n\n  @Input( 'modelMode' ) modelMode: 'string' | 'object' = 'object';\n\n  @Input( 'searchOnList' ) searchOnList = false;\n\n  @Output( 'selectItem' ) selectItem: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild( 'input', {static: true}  ) input: ElementRef;\n\n  public typeOfData = 'complex';\n\n  public selectedDescription = '';\n\n  public _data;\n\n  public indexOptionSelectedModel;\n\n  public optionSelected;\n\n  public isOpen = false;\n\n  public datasource = [];\n\n  public isLoading = true;\n\n  constructor( @Optional() @Inject( DROPDOWN_CONFIG ) dropdownConfig: DropdownConfig,\n    private changes: ChangeDetectorRef, @Optional() @Self() public ngControl: NgControl ) {\n    super();\n    this.setControl();\n    this.setOptions( dropdownConfig );\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  ngOnInit() {\n    this.listenModelChange();\n    this.getModelValue();\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  onSearch( searchTextValue ) {\n    const filter = [];\n    this.datasource = this.data.slice();\n    this.datasource.filter( ( item ) => {\n      if ( this.getItemText( item ).toLowerCase().includes(searchTextValue.toLowerCase()) ) {\n        filter.push( item );\n      }\n    } );\n    this.datasource = filter;\n  }\n\n  getItemText( item ) {\n    if ( this.typeOfData === 'simple' ) {\n      return item;\n    }\n    return objectPath.get( item, this.keyText );\n  }\n\n  onKeyDown( $event ) {\n    this.handleSelectInLetter( $event.key );\n    const keyEvent = {\n      [KeyEvent.SPACE]: () => this.handleOpenList( $event ),\n      [KeyEvent.ARROWDOWN]: () => this.stopEvent( $event ),\n      [KeyEvent.ARROWUP]: () => this.stopEvent( $event ),\n      [KeyEvent.ESCAPE]: () => this.handleEscape( $event )\n    };\n    if ( keyEvent[ $event.code ] ) {\n      keyEvent[ $event.code ]();\n    }\n  }\n\n  handleEscape( $event ) {\n    if ( this.isOpen ) {\n      this.isOpen = false;\n      this.stopEvent( $event );\n    }\n  }\n\n  getNativeInput() {\n    return this.input.nativeElement;\n  }\n\n\n  onFindByLetter( value: string ) {\n    this.handleSelectInLetter( value );\n  }\n\n  onSelectOption( $event: ListItemInterface ) {\n    this.isOpen = false;\n    this.optionSelected = $event;\n    this.selectedDescription = this.isSimpleData() ? $event.option.item : objectPath.get( $event.option.item, this.keyText );\n    this.selectItem.emit( $event.option.item );\n    this.handleKeyModelValue( $event.option.item );\n    this.setInputFocus();\n  }\n\n  onDefaultOption() {\n    this.value = '';\n    this.selectedDescription = this.placeholder;\n    this.optionSelected = null;\n    this.isOpen = false;\n  }\n\n  private isModelModeString() {\n    return this.modelMode === 'string';\n  }\n\n  public handleOpenList( $event ) {\n    this.stopEvent( $event );\n    if ( !this.isOpen && !this.disabled && !this.isLoading ) {\n      this.isOpen = true;\n      this.setUpComponent();\n    }\n  }\n\n  onBackdropClick() {\n    this.isOpen = false;\n    this.changes.detectChanges();\n  }\n\n  private initializeComponent() {\n    this.setUpComponent();\n    this.validateData();\n    this.getModelValue();\n  }\n\n  private setUpComponent() {\n    this.datasource = this.data;\n    if ( this.data.length > 0 ) {\n      this.isLoading = false;\n    }\n  }\n\n  private validateData() {\n    const key = Object.keys( this.data )[ 0 ];\n    if ( typeof this.data[ key ] === 'string' ) {\n      this.typeOfData = 'simple';\n    }\n  }\n\n  handleCloseDropdown() {\n    this.isOpen = false;\n    this.setInputFocus();\n  }\n\n  private setInputFocus() {\n    this.input.nativeElement.focus();\n  }\n\n  private isSimpleData() {\n    return this.typeOfData === 'simple';\n  }\n\n  private listenModelChange() {\n    if ( this.control ) {\n      this.control.valueChanges.subscribe( () => {\n        this.getModelValue();\n      } );\n    }\n  }\n\n  private handleKeyModelValue( itemValue ) {\n    if ( this.isSimpleData() ) {\n      return this.value = itemValue;\n    }\n    if ( !this.keyValue ) {\n      return this.value = itemValue;\n    }\n    return this.value = objectPath.get( itemValue, this.keyValue );\n  }\n\n  private getModelValue() {\n    if ( !this.control ) {\n      return;\n    }\n    this.datasource.forEach( ( value, index ) => {\n      if ( this.control.value ) {\n        if ( this.getCompare( value ) === this.getCompareModel() ) {\n          this.selectedDescription = this.getDescription( value );\n          this.indexOptionSelectedModel = index;\n          this.changes.detectChanges();\n          this.handleKeyModelValue( value );\n          return;\n        }\n      }\n    } );\n  }\n\n  private setOptions( options: DropdownConfig ) {\n    if ( options ) {\n      const self = this;\n      Object.keys( options ).forEach( function ( key ) {\n        self[ key ] = options[ key ];\n      } );\n    }\n  }\n\n  private getCompareModel() {\n    if ( this.isSimpleData() ) {\n      return this.control.value;\n    }\n    if ( !this.keyValue ) {\n      return objectPath.get( this.control.value, this.identifier );\n    }\n    if ( this.isModelModeString() ) {\n      return this.control.value;\n    }\n    return objectPath.get( this.control.value, this.keyValue );\n  }\n\n  private getCompare( value ) {\n    if ( this.isSimpleData() ) {\n      return value;\n    }\n    if ( !this.keyValue ) {\n      return objectPath.get( value, this.identifier );\n    }\n    return objectPath.get( value, this.keyValue );\n  }\n\n  private getDescription( value ) {\n    if ( this.isSimpleData() ) {\n      return value;\n    }\n    return objectPath.get( value, this.keyText );\n  }\n\n  private handleSelectInLetter( keyInput: string ) {\n    const selected = this.selectByFirst( keyInput );\n    if ( selected ) {\n      this.selectedDescription = this.getDescription( selected.option );\n      this.optionSelected = { option: selected.option, index: selected.index };\n      this.handleKeyModelValue( selected.option );\n    }\n  }\n\n  private stopEvent( $event ) {\n    $event.stopPropagation();\n    $event.preventDefault();\n  }\n\n  private selectByFirst( keyInput: string ): ListItemInterface {\n    let selected: ListItemInterface = null;\n    this.datasource.forEach( ( option: TlListItem, index: number ) => {\n      if ( this.getFirstLetterOfItem( option ) === this.getKeyInputLowerCase( keyInput ) ) {\n        selected = <ListItemInterface>{ option, index };\n        return;\n      }\n    } );\n    return selected;\n  }\n\n  private getKeyInputLowerCase( keyInput: string ): string {\n    return String( keyInput ).toLowerCase();\n  }\n\n  private getFirstLetterOfItem( item ): string {\n    return String( objectPath.get( item, this.keyText ) ).substring( 0, 1 ).toLowerCase();\n  }\n\n  ngOnChanges( { data }: SimpleChanges ) {\n    if ( data ) {\n      if (!data.firstChange && data.currentValue.length === 0) {\n        this.isLoading = false;\n      }\n    }\n  }\n}\n","<div class=\"ui-dropdown-box\"  [ngStyle]=\"{'line-height' : itemHeight, 'width': width}\">\n\n  <div class=\"ui-loading-icon\" [style.height]=\"itemHeight\" *ngIf=\"isLoading\">\n    <tl-loader></tl-loader>\n  </div>\n\n  <tl-label *ngIf=\"label\"\n            [labelPlacement]=\"labelPlacement\"\n            [labelSize]=\"labelSize\"\n            [labelTitle]=\"label\">\n  </tl-label>\n\n  <div class=\"ui-dropdown-wrapper\">\n  <input cdkOverlayOrigin\n         #input\n         readonly\n         #trigger=\"cdkOverlayOrigin\"\n         [attr.disabled]=\"disabled ? true : null\"\n         (keydown)=\"onKeyDown($event)\"\n         (click)=\"handleOpenList($event)\"\n         value=\"{{ selectedDescription ? selectedDescription : placeholder }}\"\n         [ngClass]=\"{ 'ng-invalid' : control?.invalid, 'disabled': disabled }\"\n         [ngStyle]=\"{'height' : itemHeight, 'line-height' : itemHeight}\"\n         class=\"ui-dropdown\">\n        <div class=\"ui-dropdown-icon\"\n             [style.height]=\"itemHeight\"\n             [style.transform]=\"isOpen ? 'rotate(180deg)' : 'rotate(0)'\"\n             [ngClass]=\"{ 'disabled': disabled, 'ng-invalid' : control?.invalid }\">\n          <tl-icon [lib]=\"'ion'\" [style]=\"'ios'\">arrow-down</tl-icon>\n        </div>\n  </div>\n  <input readonly notform class=\"ui-hidden-input\" [(ngModel)]=\"value\">\n  <ng-template cdkConnectedOverlay\n               (backdropClick)=\"onBackdropClick()\"\n               [cdkConnectedOverlayHasBackdrop]=\"true\"\n               [cdkConnectedOverlayOrigin]=\"trigger\"\n               [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n               [cdkConnectedOverlayOpen]=\"isOpen\">\n    <tl-overlay-list\n      @overlay\n      (selectOption)=\"onSelectOption($event)\"\n      (search)=\"onSearch($event)\"\n      (close)=\"handleCloseDropdown()\"\n      (defaultOption)=\"onDefaultOption()\"\n      (findByLetter)=\"onFindByLetter($event)\"\n      [customInput]=\"input\"\n      [typeOfData]=\"typeOfData\"\n      [hasDefaultOption]=\"defaultOption\"\n      [defaultOptionText]=\"placeholder\"\n      [groupBy]=\"groupBy\"\n      [optionSelected]=\"optionSelected\"\n      [inputModelIndex]=\"indexOptionSelectedModel\"\n      [datasource]=\"datasource\"\n      [maxHeight]=\"maxHeight\"\n      [itemHeight]=\"itemHeight\"\n      [width]=\"input.offsetWidth + 'px'\"\n      [icon]=\"icon\"\n      [keyText]=\"keyText\"\n      [searchOnList]=\"searchOnList\">\n    </tl-overlay-list>\n  </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { IconsModule } from '../icons/index';\nimport { InputModule } from '../input/index';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { TlOverlayList } from './overlay-list';\nimport { MiscModule } from '../misc/index';\nimport { TlListItem } from './list-item/list-item';\n\n@NgModule( {\n  imports: [\n    MiscModule,\n    CommonModule,\n    IconsModule,\n    InputModule,\n    OverlayModule,\n    A11yModule,\n    FormsModule\n  ],\n  declarations: [\n    TlOverlayList,\n    TlListItem,\n  ],\n  exports: [\n    TlOverlayList,\n    TlListItem,\n  ],\n} )\nexport class OverlayListModule {\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlDropDownList } from './dropdownlist';\n\nimport { InputModule } from '../input/index';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayListModule } from '../overlaylist/index';\nimport { InternalsModule } from '../internals/index';\nimport { IconsModule } from '../icons/index';\nimport { DROPDOWN_CONFIG, DropdownConfig } from './interfaces/dropdown.config';\nimport { LoaderModule } from '../loader/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    InputModule,\n    OverlayListModule,\n    IconsModule,\n    LoaderModule,\n    OverlayModule,\n    A11yModule,\n    InternalsModule,\n    FormsModule\n  ],\n  declarations: [\n    TlDropDownList,\n  ],\n  exports: [\n    TlDropDownList,\n  ],\n} )\nexport class DropDownListModule {\n  static forRoot(config: DropdownConfig = null): ModuleWithProviders<DropDownListModule> {\n    return {\n      ngModule: DropDownListModule,\n      providers: [\n        { provide: DROPDOWN_CONFIG, useValue: config },\n      ]\n    };\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MiscModule } from '../misc/index';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OverlayListModule } from '../overlaylist/index';\nimport { TlDropdownIcon } from './dropdownicon';\nimport { FormsModule } from '@angular/forms';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    MiscModule,\n    OverlayListModule,\n    OverlayModule,\n    FormsModule\n  ],\n  declarations: [\n    TlDropdownIcon,\n  ],\n  exports: [\n    TlDropdownIcon,\n  ]\n} )\nexport class DropDownIconModule {\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nimport { TlDatatable } from './datatable';\nimport { TlDatatableColumn } from './parts/column/datatable-column';\nimport { TlDatatableHeader } from './parts/header/datatable-header';\nimport { TlDatatableContent } from './parts/content/datatable-content';\nimport { TlColgroupDirective } from './directives/colgroup.directive';\nimport { TlResizerDirective } from './directives/resizer.directive';\nimport { TlDatatabaleColumnFilter } from './parts/column-filter/datatable-column-filter';\n\nimport { IconsModule } from '../icons/index';\nimport { InputModule } from '../input/index';\nimport { BlockUIModule } from '../blockui/index';\nimport { DropDownListModule } from '../dropdownlist/index';\nimport { DropDownIconModule } from '../dropdownicon/index';\nimport { LoaderModule } from '../loader/index';\nimport { ContextMenuModule } from '../contextmenu/index';\nimport { TlDatatableRow } from './parts/row/datatable-row';\nimport { TlDatatableCell } from './parts/cell/datatable-cell';\n\n\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n    BlockUIModule,\n    IconsModule,\n    InputModule,\n    LoaderModule,\n    ContextMenuModule,\n    DropDownIconModule,\n    DropDownListModule,\n    ScrollingModule,\n    A11yModule\n  ],\n  declarations: [\n    TlColgroupDirective,\n    TlDatatable,\n    TlDatatableColumn,\n    TlDatatabaleColumnFilter,\n    TlDatatableCell,\n    TlDatatableRow,\n    TlDatatableHeader,\n    TlDatatableContent,\n    TlResizerDirective,\n  ],\n  exports: [\n    TlDatatable,\n    TlDatatableColumn,\n  ]\n} )\nexport class DatatableModule {\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nexport interface DateFormat {\n  day: number;\n  month: number;\n  year: number;\n  stringFormat: string;\n}\n\nexport function ReverseFormatDate( value, formatDate ): DateFormat {\n  formatDate = formatDate.toLowerCase();\n  const formatTmp = formatDate.replace( /[a-z]/gi, '' );\n  const formatArray = formatTmp.split( '' );\n  let day;\n  let month;\n  let year;\n  const pattern = formatDate.split( formatArray[ 0 ] );\n\n  if ( value ) {\n    for ( let i = 0; i < pattern.length; i++ ) {\n      switch ( pattern[ i ] ) {\n        case 'dd':\n          day = value.substr( formatDate.indexOf( 'd' ),\n            (value.length - formatDate.length) + pattern[ i ].length );\n          break;\n        case 'mm':\n          month = value.substr( formatDate.indexOf( 'm' ),\n            (value.length - formatDate.length) + pattern[ i ].length );\n          break;\n        case 'yyyy':\n          year = value.substr( formatDate.indexOf( 'y' ),\n            (value.length - formatDate.length) + pattern[ i ].length );\n          break;\n      }\n    }\n  }\n\n  return {\n    'day': parseInt( day, 10 ),\n    'month': parseInt( month, 10 ),\n    'year': parseInt( year, 10 ),\n    'stringFormat': `${parseInt( year, 10 )}-${parseInt( month, 10 )}-${parseInt( day, 10 )}`\n  };\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AbstractControl, ValidatorFn } from '@angular/forms';\nimport { LOCALE_I18N } from '../../i18n/i18n.service';\n\nimport { ReverseFormatDate } from '../../core/helper/reverseformatdate';\nlet dateExpressFormat;\n\nexport function DateValidator( formatDate, isoDate ): ValidatorFn {\n  dateExpressFormat = formatDate;\n  return ( c: AbstractControl ) => {\n\n    if (!c.value) {\n      return null;\n    }\n\n    if ( !stringUnmasked( c ) && c.touched ) {\n      return { date: LOCALE_I18N.Validators.invalidDatePattern + ' [ ' + dateExpressFormat.toUpperCase() + ' ]' };\n    }\n\n    if ( (stringUnmasked( c ).length) !== dateExpressFormat.length && !isoDate ) {\n      return { date: LOCALE_I18N.Validators.invalidDatePattern + ' [ ' + dateExpressFormat.toUpperCase() + ' ]' };\n    }\n\n    const formattedDate = ReverseFormatDate(stringUnmasked(c), dateExpressFormat);\n    const date = new Date( formattedDate['year'] + '-' + formattedDate['month'] + '-' + formattedDate['day'] );\n\n    if ( date.toDateString() === 'Invalid Date' ) {\n      return { date: LOCALE_I18N.Validators.invalidDatePattern +  ' [ ' + dateExpressFormat.toUpperCase() + ' ]' };\n    }\n\n    if ( (stringUnmasked( c ).length < dateExpressFormat.length) && isoDate) {\n      return { date: LOCALE_I18N.Validators.invalidDatePattern + '[isoDate]' };\n    }\n\n    if ( !isIsoDate( c.value ) && isoDate ) {\n      return { date: LOCALE_I18N.Validators.invalidDatePattern + '[isoDate]' };\n    }\n\n    return null;\n  };\n}\n\nfunction stringUnmasked( c ) {\n  if ( isIsoDate( c.value )) {\n    return new Date( c.value ).toLocaleDateString();\n  }\n  return String( c.value ).replace( /(\\|-|_|\\(|\\)|:|\\+)/gi, '' );\n}\n\nfunction isIsoDate( str ) {\n  if ( !/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test( str ) ) {\n    return false;\n  }\n  const d = new Date( str );\n  return d.toISOString() === str;\n}\n\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  Input, Directive, forwardRef,\n  AfterViewInit,\n} from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { DateValidator } from '../validators/date.validator';\n\n@Directive( {\n  selector: '[date][ngModel],[date][formControl],[date][formControlName]',\n  providers: [\n    {\n      multi: true,\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef( () => DateDirective ),\n    }\n  ]\n} )\nexport class DateDirective implements Validator, AfterViewInit {\n\n  @Input() formatDate = 'dd.mm.yyyy';\n\n  @Input() isoDate = true;\n\n  @Input() control: AbstractControl;\n\n  ngAfterViewInit() {}\n\n  validate( control: AbstractControl ): ValidationErrors | any {\n    return DateValidator( this.formatDate, this.isoDate )( this.control || control );\n  }\n\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  Component, Input, Renderer2, ElementRef, ViewChild,\n  ChangeDetectorRef, AfterViewInit, OnDestroy, Self, Optional,\n} from '@angular/core';\nimport { NgControl, NgModel } from '@angular/forms';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\nimport { InputMask } from '../input/core/input-mask';\nimport { ReverseFormatDate } from '../core/helper/reverseformatdate';\nimport { TlLeftPadPipe } from '../internals/pipes/leftpad.pipe';\nimport { Subscription } from 'rxjs';\n\n@Component( {\n  selector: 'tl-date',\n  templateUrl: './date.html',\n  styleUrls: [ './date.scss' ]\n} )\nexport class TlDate extends ValueAccessorBase<string> implements OnDestroy, AfterViewInit {\n\n  @Input() formatDate = 'dd/mm/yyyy';\n\n  @Input() isoDate = false;\n\n  @Input() label = 'Label';\n\n  @Input() labelSize = '100px';\n\n  @Input() disabled = false;\n\n  @Input() required = false;\n\n  @Input() readonly = false;\n\n  @Input() color = 'basic';\n\n  @Input() withBorder = true;\n\n  @Input() flatBorders = false;\n\n  @Input() labelPlacement: 'left' | 'top' = 'left';\n\n  @ViewChild( NgModel, {static: true}  ) hiddenModel: NgModel;\n\n  @ViewChild( 'input', {static: true}  ) input: ElementRef;\n\n  public mockValue: string;\n\n  private fieldMask: InputMask;\n\n  public placeholder: string;\n\n  public touched: boolean;\n\n  private mask: string;\n\n  private subscription = new Subscription();\n\n  constructor( private renderer: Renderer2,\n               private change: ChangeDetectorRef,\n               @Optional() @Self() public ngControl: NgControl ) {\n    super();\n    this.setControl();\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterViewInit() {\n    this.setDateMask();\n    this.fieldMask = new InputMask( this, this.renderer, this.mask );\n    this.getMockValue( this.value );\n    this.handleModelChangeInit();\n    this.handleChangeStatus();\n    this.handleRequiredValidator();\n    this.handleCompleteMask();\n    this.change.detectChanges();\n  }\n\n  handleCompleteMask() {\n    this.subscription.add(this.fieldMask.complete.subscribe(() => {\n      if ( this.isoDate ) {\n        this.handleIsoDateModel();\n      }\n    }));\n  }\n\n  handleChangeStatus() {\n    this.subscription.add(this.hiddenModel.statusChanges.subscribe((value) => {\n      value === 'VALID' ? this.ngControl.control.setErrors(null) :\n        this.ngControl.control.setErrors(this.hiddenModel.control.errors);\n    }));\n  }\n\n  handleModelChangeInit() {\n    if ( this.ngControl ) {\n      this.ngControl.valueChanges.subscribe( ( value ) => {\n        this.getMockValue( value );\n      } );\n    }\n  }\n\n  handleRequiredValidator() {\n    if ( this.ngControl.control.validator ) {\n       let validators = [ this.hiddenModel.control.validator ];\n       validators = [ ...validators, this.ngControl.control.validator ];\n       this.hiddenModel.control.setValidators( validators );\n    }\n    if (this.ngControl.control && this.ngControl.control.errors && this.ngControl.control.errors.hasOwnProperty('required')) {\n      this.required = this.ngControl.control.errors['required'];\n    }\n  }\n\n  getMockValue( value ) {\n    if ( !value ) {\n      this.value = null;\n      return;\n    }\n    if ( this.isoDate && value.length > 0 ) {\n      const date = new Date( value );\n      this.mockValue = this.getDateByFormat( date );\n      return;\n    }\n    this.mockValue = value;\n  }\n\n  getDateByFormat( date ) {\n    let formattedDate;\n    const leftPad = new TlLeftPadPipe();\n\n    const first = this.formatDate.replace( 'dd', leftPad.transform( date.getDate(), 2 ) );\n    const second = first.replace( 'mm', leftPad.transform( date.getMonth() + 1, 2 ) );\n    formattedDate = second.replace( 'yyyy', leftPad.transform( date.getFullYear(), 4 ) );\n\n    return formattedDate;\n  }\n\n  isIsoDate( str ) {\n    if ( !/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}.\\d{3}Z/.test( str ) ) {\n      return false;\n    }\n    const d = new Date( str );\n    return d.toISOString() === str;\n  }\n\n  handleIsoDateModel() {\n    setTimeout( () => {\n      if ( this.value.length === 0 && this.isControlValid() ) {\n        this.value = null;\n        return;\n      }\n      if ( !this.isIsoDate( this.value ) ) {\n        const date = ReverseFormatDate( this.value, this.formatDate );\n        const parsed = Date.parse( date.stringFormat );\n        if ( !isNaN(parsed) ) {\n          this.value = new Date( date.year, date.month - 1, date.day ).toISOString();\n        }\n      }\n      this.propagateTouched();\n    }, 100 );\n  }\n\n  isControlValid() {\n    return this.hiddenModel.valid;\n  }\n\n  setDateMask() {\n    const formatTmp = this.formatDate.replace( /[a-z]/gi, '' );\n    const formatArray = this.formatDate.split( '' );\n\n    for ( let i = 0; i < formatArray.length; i++ ) {\n      if ( formatArray[ i ] !== formatTmp[ 0 ] ) {\n        formatArray[ i ] = '0';\n      }\n    }\n    this.mask = formatArray.toString().replace( /,/gi, '' );\n    this.placeholder = this.formatDate.toUpperCase();\n    this.change.detectChanges();\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<div [class]=\"'ui-wrapper-date ' + color\">\n  <tl-label [required]=\"required\" [labelTitle]=\"label\" [labelSize]=\"labelSize\" [labelPlacement]=\"labelPlacement\"></tl-label>\n  <div class=\"ui-input-wrapper\">\n    <input #input\n           class=\"ui-input-date\"\n           [placeholder]=\"placeholder\"\n           (focus)=\"touched = true\"\n           [ngClass]=\"{\n             'withBorder': withBorder,\n             'withoutBorder' : !withBorder,\n             'ng-touched': touched,\n             'ng-valid': hiddenModel?.valid,\n             'ng-invalid': hiddenModel?.invalid,\n             'ng-dirty': hiddenModel?.dirty,\n             'flatBorders': flatBorders\n           }\"\n           [attr.disabled]=\"disabled ? true : null\"\n           [attr.readonly]=\"readonly ? true : null\"\n           [attr.value]=\"mockValue\">\n    <input [formatDate]=\"formatDate\"\n           [isoDate]=\"isoDate\"\n           [(ngModel)]=\"value\"\n           date\n           notform\n           class=\"ui-input\"\n           type=\"text\">\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlDate } from './date';\nimport { DateDirective } from './directives/date.directive';\nimport { InputModule } from '../input/index';\nimport { InternalsModule } from '../internals/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    InputModule,\n    FormsModule,\n    InternalsModule\n  ],\n  declarations: [\n    TlDate,\n    DateDirective\n  ],\n  exports: [\n    TlDate,\n    DateDirective\n  ]\n})\nexport class DateModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, EventEmitter, Input, Output, TemplateRef, ViewChild\n} from '@angular/core';\nimport { TlInput } from '../../input/input';\nimport { OverlayAnimation } from '../../core/directives/overlay-animation';\nimport { CalendarHoliday } from '../../calendar/interfaces/calendar-holiday.interface';\n\n@Component( {\n  selector: 'tl-datepicker-content',\n  templateUrl: './datepicker-content.html',\n  styleUrls: [ './datepicker-content.scss' ],\n  animations: [ OverlayAnimation ]\n} )\n\nexport class TlDatePickerContent  {\n\n  @Input('date')\n  set date( value: Date ) {\n    this._date = value;\n  }\n\n  get date() {\n    return this._date;\n  }\n\n  @Input('input') input: TlInput;\n\n  @Input('overlayPosition') overlayPosition: string;\n\n  @Input() holidays: Array<CalendarHoliday> = [];\n\n  @Output() selectDayContent: EventEmitter<any> = new EventEmitter<any>();\n\n  @ViewChild(TemplateRef, {static: true} ) template: TemplateRef<any>;\n\n  private _date;\n\n  constructor() {}\n\n  selectDay( dateObject ) {\n    this.date = dateObject.fullDate;\n    this.selectDayContent.emit(dateObject);\n  }\n\n}\n","<div class=\"ui-arrow-up\" @overlay *ngIf=\"overlayPosition === 'bottom'\"></div>\n<div class=\"ui-wrapper-calendar-content\" @overlay>\n  <div class=\"ui-calendar-content\">\n    <tl-calendar [date]=\"date\" [holidays]=\"holidays\" (selectDay)=\"selectDay($event)\" (today)=\"selectDay($event)\"></tl-calendar>\n  </div>\n  <div class=\"ui-arrow-down\" @overlay *ngIf=\"overlayPosition === 'top'\"></div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  EventEmitter, Inject,\n  Input, LOCALE_ID,\n  OnDestroy,\n  OnInit, Optional,\n  Output, Self,\n  ViewChild\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {TlInput} from '../input/input';\nimport {TlCalendar} from '../calendar/calendar';\n\nimport {ReverseFormatDate} from '../core/helper/reverseformatdate';\nimport {ConnectedOverlayPositionChange} from '@angular/cdk/overlay';\nimport {KeyEvent} from '../core/enums/key-events';\nimport {ValueAccessorBase} from '../input/core/value-accessor';\nimport {Subscription} from 'rxjs';\nimport {CalendarHoliday} from '../calendar/interfaces/calendar-holiday.interface';\n\nexport interface DateOject {\n  day: number;\n  month: number;\n  year: number;\n}\n\n@Component({\n  selector: 'tl-datepicker',\n  templateUrl: './datepicker.html',\n  styleUrls: ['./datepicker.scss']\n})\n\nexport class TlDatePicker extends ValueAccessorBase<Date | string> implements OnInit, AfterContentInit, OnDestroy {\n\n  @Input() label = '';\n\n  @Input() name = '';\n\n  @Input() labelSize = '';\n\n  @Input() textAlign = 'left';\n\n  @Input() iconAfter;\n\n  @Input() isoDate = true;\n\n  @Input() labelPlacement = 'left';\n\n  @Input() formatDate = 'dd/mm/yyyy';\n\n  @Input() readonly = false;\n\n  @Input() disabled = false;\n\n  @Input() placeholder = 'Datepicker Field';\n\n  @Input() clearButton = true;\n\n  @Input() autoClose = false;\n\n  @Input() openOnFocus = true;\n\n  @Input() holidays: Array<CalendarHoliday> = [];\n\n  @Output() selectDay: EventEmitter<any> = new EventEmitter<any>();\n\n  @Output() completeMask: EventEmitter<any> = new EventEmitter<any>();\n\n  @ViewChild(TlCalendar, {static: true}) calendar;\n\n  @ViewChild(TlInput, {static: true}) tlInput: TlInput;\n\n  @ViewChild('calendarContent', {static: true}) calendarContent;\n\n  @ViewChild('arrow', {static: true}) arrow;\n\n  public isOpen = false;\n\n  public positionOverlay = '';\n\n  public description = '';\n\n  public trigger;\n\n  public date = new Date();\n\n  private year = new Date().getFullYear();\n\n  private month = new Date().getMonth();\n\n  private day = new Date().getDate();\n\n  private subscription = new Subscription();\n\n  constructor(private changes: ChangeDetectorRef,\n              @Inject(LOCALE_ID) public locale: string,\n              @Optional() @Self() public ngControl: NgControl) {\n    super();\n    this.setControl();\n  }\n\n  get control() {\n    return this.ngControl.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngOnInit() {\n    this.setDateMask();\n  }\n\n  ngAfterContentInit() {\n    this.decomposeDate(this.value);\n    this.listenControlChanges();\n  }\n\n  private listenControlChanges() {\n    if (this.control) {\n      this.subscription.add(this.control.valueChanges.subscribe((date: Date) => {\n        if (!this.isOpen && date) {\n          this.decomposeDate(date);\n          return;\n        }\n        if ( !date ) {\n          this.description = null;\n        }\n      }));\n    }\n  }\n\n  private decomposeDate(date) {\n    if (date && this.value) {\n      const dateStr = new Date(date).toLocaleDateString(this.locale, {timeZone: 'UTC'});\n      const formatted = ReverseFormatDate(this.stringUnmasked(dateStr), this.formatDate);\n      this.description = this.getFormattedDate(formatted);\n      this.setDateObject(formatted);\n    }\n  }\n\n  private setDateMask() {\n    this.tlInput.mask = this.getMask();\n  }\n\n  private setDateObject(dateObject: DateOject) {\n    this.day = dateObject.day;\n    this.month = dateObject.month - 1;\n    this.year = dateObject.year;\n  }\n\n  private getMask() {\n    const format = this.formatDate.toLowerCase();\n    const dd = format.replace('dd', '00');\n    const mm = dd.replace('mm', '00');\n    return mm.replace('yyyy', '0000');\n  }\n\n  private getObjectValues() {\n    return {\n      day: this.day,\n      fullDate: this.date,\n      month: this.month,\n      year: this.year\n    };\n  }\n\n  private handleAutoClose() {\n    if (this.autoClose) {\n      this.isOpen = false;\n    }\n  }\n\n  private handleOpenOnFocus() {\n    if (this.openOnFocus) {\n      this.isOpen = true;\n    }\n  }\n\n  private getFormattedDate($event) {\n    let strDate;\n    const date = this.formatDate;\n    strDate = date.replace('dd', this.formatDayAndMonth($event.day));\n    strDate = strDate.replace('mm', this.formatDayAndMonth($event.month));\n    strDate = strDate.replace('yyyy', $event.year);\n    return strDate;\n  }\n\n  private setValue($event) {\n    this.description = this.getFormattedDate({...$event, month: $event.month + 1});\n    this.value = $event.fullDate.toISOString();\n  }\n\n  private formatDayAndMonth(value) {\n    if (String(value).length === 1) {\n      return `0${value}`;\n    }\n    return value;\n  }\n\n  handleDateChange() {\n    const date = ReverseFormatDate(this.description, this.formatDate);\n    if (!isNaN(date.day) && !isNaN(date.month) && !isNaN(date.year)) {\n      this.setDateObject(date);\n      this.date = new Date(date.year, date.month - 1, date.day);\n      this.changes.detectChanges();\n    }\n  }\n\n  onBlur() {\n    this.propagateTouched();\n  }\n\n  onCompleteMask() {\n    const timeout = setTimeout(() => {\n      this.handleDateChange();\n      if (this.isoDate) {\n        this.value = this.getObjectValues().fullDate.toISOString();\n      } else {\n        this.value = this.getObjectValues().fullDate;\n      }\n      this.changes.detectChanges();\n      this.completeMask.emit(this.getObjectValues());\n      clearTimeout(timeout);\n    }, 500);\n\n  }\n\n  onDateInputFocus() {\n    if (this.value && !this.isOpen) {\n      const inputDate = ReverseFormatDate(this.stringUnmasked(this.description), this.formatDate);\n      this.setDateObject(inputDate);\n    }\n    this.handleOpenOnFocus();\n  }\n\n  onSelectDay($event) {\n    this.setDateObject($event);\n    this.date = $event.fullDate;\n    this.selectDay.emit($event);\n    this.setValue($event);\n    this.handleAutoClose();\n    this.changes.detectChanges();\n  }\n\n  onPositionChange($event: ConnectedOverlayPositionChange) {\n    this.positionOverlay = $event.connectionPair.originY;\n  }\n\n  onBackDropClick() {\n    this.isOpen = false;\n  }\n\n  onClearInput($event) {\n    this.value = null;\n    $event.stopPropagation();\n  }\n\n  handleArrowKeys($event) {\n    const object = {\n      [KeyEvent.ARROWUP]: () => this.handleArrowUp($event),\n      [KeyEvent.ARROWDOWN]: () => this.handleArrowDown($event),\n      [KeyEvent.TAB]: () => this.handleTab(),\n      [KeyEvent.ESCAPE]: () => this.handleEscape($event),\n      [KeyEvent.ARROWRIGHT]: () => $event.preventDefault(),\n      [KeyEvent.ARROWLEFT]: () => $event.preventDefault(),\n    };\n    if (object[$event]) {\n      object[$event]();\n    }\n  }\n\n  private handleArrowUp($event) {\n    if (this.isOpen) {\n      $event.preventDefault();\n      $event.stopPropagation();\n    }\n  }\n\n  private handleTab() {\n    if (this.isOpen) {\n      this.isOpen = false;\n      this.changes.detectChanges();\n    }\n  }\n\n  private handleEscape($event) {\n    if (this.isOpen) {\n      $event.preventDefault();\n      $event.stopPropagation();\n      this.isOpen = false;\n    }\n  }\n\n  private handleArrowDown($event) {\n    if (this.isOpen) {\n      $event.preventDefault();\n      $event.stopPropagation();\n    }\n  }\n\n  private stringUnmasked(value) {\n    return String(value).replace(/(\\|-|_|\\(|\\)|:|\\+)/gi, '');\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<tl-input #tlinput\n          [label]=\"label\"\n          [labelSize]=\"labelSize\"\n          [name]=\"name\"\n          (overlayOrigin)=\"trigger = $event\"\n          (focus)=\"onDateInputFocus()\"\n          (click)=\"isOpen = !isOpen\"\n          (keydown)=\"handleArrowKeys($event)\"\n          (keypress)=\"handleDateChange()\"\n          (completeMask)=\"onCompleteMask()\"\n          (blur)=\"onBlur()\"\n          (clear)=\"onClearInput($event)\"\n          [iconAfter]=\"iconAfter\"\n          date\n          [control]=\"control\"\n          [formatDate]=\"formatDate\"\n          [textAlign]=\"textAlign\"\n          [labelPlacement]=\"labelPlacement\"\n          [readonly]=\"readonly ? true : null\"\n          [disabled]=\"disabled ? true : null\"\n          [(ngModel)]=\"description\"\n          [placeholder]=\"placeholder\"\n          [clearButton]=\"clearButton\">\n</tl-input>\n<input class=\"hidden-input\" notform [value]=\"value\">\n<ng-template cdkConnectedOverlay\n            (backdropClick)=\"onBackDropClick()\"\n            (positionChange)=\"onPositionChange($event)\"\n            [cdkConnectedOverlayHasBackdrop]=\"true\"\n            [cdkConnectedOverlayOrigin]=\"trigger\"\n            [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n            [cdkConnectedOverlayOpen]=\"isOpen\">\n  <tl-datepicker-content\n    [input]=\"tlinput\"\n    [date]=\"date\"\n    [holidays]=\"holidays\"\n    [overlayPosition]=\"positionOverlay\"\n    (selectDayContent)=\"onSelectDay($event)\">\n  </tl-datepicker-content>\n</ng-template>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TlDatePicker } from './datepicker';\nimport { FormsModule } from '@angular/forms';\nimport { TlCalendar } from '../calendar/calendar';\n\nimport { MiscModule } from '../misc/index';\nimport { CalendarModule } from '../calendar/index';\nimport { InputModule } from '../input/index';\nimport { TlDatePickerContent } from './datepicker-content/datepicker-content';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { DateModule } from '../date/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    MiscModule,\n    CalendarModule,\n    FormsModule,\n    OverlayModule,\n    PortalModule,\n    DateModule,\n    InputModule\n  ],\n  declarations: [\n    TlDatePicker,\n    TlDatePickerContent\n  ],\n  exports: [\n    TlDatePicker,\n    TlDatePickerContent\n  ]\n} )\nexport class DatePickerModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport { KeyEvent } from '../core/enums/key-events';\n\nexport class DialogDefaultBehavior {\n\n    constructor() {}\n\n    onKeyDown( $event: KeyboardEvent ) {\n        switch ( $event.code ) {\n            case KeyEvent.TAB:\n                $event.preventDefault();\n                $event.stopPropagation();\n                break;\n        }\n\n    }\n}\n","import 'reflect-metadata';\n\nexport interface ModalOptions {\n    icon?: string;\n    title: string;\n    color?: string;\n    height?: string;\n    width?: string;\n    closeShortcut?: string;\n    showTitlebar?: boolean;\n    restoreShortcut?: string;\n    maximizeShortcut?: string;\n    translucent?: boolean;\n    draggable?: boolean;\n    maximizable?: boolean;\n    minimizable?: boolean;\n    closable?: boolean;\n    fullscreen?: boolean;\n    restoreMaximize?: boolean;\n    backdrop?: boolean;\n    closeOnOK?: boolean;\n    unique?: boolean;\n}\n\nexport function Modal(metadata: ModalOptions) {\n  return function(cls: any) {\n    const annotations = Reflect.getMetadata('annotations', cls) || [];\n    annotations.push(metadata);\n    Reflect.defineMetadata('annotations', annotations, cls);\n    return cls;\n  };\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { I18nService } from '../../i18n/i18n.service';\nimport { DialogDefaultBehavior } from '../dialog-default-behavior';\nimport { Modal } from '../../modal/interfaces/modal-options';\nimport { TlButton } from '../../button/button';\n\n@Modal({\n  icon: 'fas fa-info-circle',\n  title: 'Information',\n  color: 'information',\n  width: 'auto',\n  height: 'auto',\n  draggable: false,\n  maximizable: false,\n  minimizable: false,\n  backdrop: true,\n  closeOnOK: true\n})\n@Component({\n    selector: 'tl-dialog-info',\n    templateUrl: './dialog-info.html',\n    styleUrls: ['../dialog.scss']\n})\nexport class TlDialogInfo extends DialogDefaultBehavior implements OnInit {\n\n    title = '';\n\n    message = '';\n\n    get textOk() {\n      return this.i18n.getLocale().Dialog.textOk;\n    }\n\n    @ViewChild( TlButton, {static: true}  ) button: TlButton;\n\n    constructor( private i18n: I18nService ) {\n        super();\n    }\n\n    ngOnInit() {\n      this.button.setFocus();\n    }\n\n}\n\n","<div class=\"content-dialog\" (keydown)=\"onKeyDown($event)\">\n    <div class=\"form\">\n      <p [innerHTML]=\"message\"></p>\n    </div>\n    <div class=\"header-controls\">\n        <tl-button [text]=\"'OK'\"\n                   mdResult=\"MROK\"\n                   [color]=\"'basic'\"\n                   [iconAddonBefore]=\"'ion ion-md-checkmark'\">\n        </tl-button>\n    </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { I18nService } from '../../i18n/i18n.service';\nimport { DialogDefaultBehavior } from '../dialog-default-behavior';\nimport { Modal } from '../../modal/interfaces/modal-options';\nimport { TlButton } from '../../button/button';\n\n@Modal( {\n  icon: 'fas fa-exclamation-circle',\n  title: 'Alert',\n  color: 'warning',\n  width: '400px',\n  height: 'auto',\n  draggable: true,\n  maximizable: false,\n  minimizable: false,\n  backdrop: true,\n  closeOnOK: true\n} )\n@Component( {\n  selector: 'tl-dialog-alert',\n  templateUrl: './dialog-alert.html',\n  styleUrls: [ '../dialog.scss' ]\n} )\nexport class TlDialogAlert extends DialogDefaultBehavior implements OnInit {\n\n  @ViewChild( TlButton, {static: true}  ) button: TlButton;\n\n  message = '';\n\n  get textClose() {\n    return this.i18n.getLocale().Dialog.textClose;\n  }\n\n  constructor( private i18n: I18nService ) {\n    super();\n  }\n\n  ngOnInit() {\n    this.button.setFocus();\n  }\n}\n","<div class=\"content-dialog\" (keydown)=\"onKeyDown($event)\">\n    <div class=\"form\">\n        <p [innerHTML]=\"message\"></p>\n    </div>\n    <div class=\"header-controls\">\n        <tl-button [text]=\"textClose\"\n                   [mdResult]=\"8\"\n                   [color]=\"'basic'\"\n                   [iconAddonBefore]=\"'ion ion-md-close'\">\n        </tl-button>\n    </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Component, HostBinding, OnInit, ViewChild } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { I18nService } from '../../i18n/i18n.service';\nimport { DialogDefaultBehavior } from '../dialog-default-behavior';\nimport { Modal } from '../../modal/interfaces/modal-options';\nimport { TlButton } from '../../button/button';\n\n@Modal({\n  icon: 'fas fa-times-circle',\n  title: 'Error',\n  color: 'danger',\n  width: '400px',\n  height: 'auto',\n  draggable: true,\n  maximizable: false,\n  minimizable: false,\n  backdrop: true,\n  closeOnOK: true\n})\n@Component({\n    selector: 'tl-dialog-error',\n    templateUrl: './dialog-error.html',\n    styleUrls: ['../dialog.scss', './dialog-error.scss'],\n    animations: [\n        trigger(\n            'enterAnimation', [\n                transition( ':enter', [\n                    style( { opacity: 0 } ),\n                    animate( '200ms', style( { opacity: 1 } ) )\n                ] ),\n                transition( ':leave', [\n                    style( { opacity: 1 } ),\n                    animate( '200ms', style( { opacity: 0 } ) )\n                ] )\n            ]\n        )\n    ]\n})\nexport class TlDialogError extends DialogDefaultBehavior implements OnInit {\n\n    message = '';\n\n    exceptionName = '';\n\n    exceptionMessage = '';\n\n    get textOk() {\n      return this.i18n.getLocale().Dialog.textOk;\n    }\n\n    get exceptionBoxDescription() {\n      return this.i18n.getLocale().Dialog.exceptionBoxDescription;\n    }\n\n    @ViewChild( TlButton, {static: true}  ) button: TlButton;\n\n    @HostBinding( '@enterAnimation' ) public animation;\n\n    public errorlog: boolean;\n\n    constructor( private i18n: I18nService ) {\n        super();\n    }\n\n    ngOnInit() {\n      this.button.setFocus();\n    }\n\n    open(value) {\n        this.errorlog = !value;\n    }\n}\n","<div class=\"content-dialog\" (keydown)=\"onKeyDown($event)\">\n    <div class=\"form\">\n      <p [innerHTML]=\"message\"></p>\n    </div>\n    <div class=\"controls\">\n        <tl-button [text]=\"textOk\"\n                   mdResult=\"MROK\"\n                   [color]=\"'basic'\"\n                   [iconAddonBefore]=\"'ion ion-md-close'\">\n        </tl-button>\n    </div>\n    <div title=\"Show More\" class=\"arrow-log-error\" (click)=\"open(errorlog)\" >\n        <tl-icon [lib]=\"'ion'\" [style]=\"'ios'\" [icon]=\"(errorlog) ? 'ion ion-ios-arrow-up' : 'ion ion-ios-arrow-down'\"></tl-icon>\n    </div>\n    <div [@enterAnimation]=\"errorlog\" *ngIf=\"errorlog\" class=\"error-log\">\n        <pre>{{exceptionBoxDescription}}: {{exceptionName}}</pre>\n        <code *ngIf=\"exceptionMessage\">\n           {{exceptionMessage}}\n        </code>\n    </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { KeyEvent } from '../../core/enums/key-events';\nimport { I18nService } from '../../i18n/i18n.service';\nimport { Modal } from '../../modal/interfaces/modal-options';\n\n@Modal( {\n  icon: 'fas fa-check',\n  title: 'Confirmation',\n  color: 'success',\n  width: '400px',\n  height: 'auto',\n  draggable: true,\n  maximizable: false,\n  minimizable: false,\n  backdrop: true,\n  closeOnOK: true\n} )\n@Component( {\n  selector: 'tl-dialog-confirmation',\n  templateUrl: './dialog-confirmation.html',\n  styleUrls: [ '../dialog.scss' ]\n} )\nexport class TlDialogConfirmation implements OnInit {\n\n  message = '';\n\n  get textNo() {\n    return this.i18n.getLocale().Dialog.textNo;\n  }\n\n  get textYes() {\n    return this.i18n.getLocale().Dialog.textYes;\n  }\n\n  @ViewChild( 'buttonDialogOk', {static: true}  ) buttonDialogOk;\n\n  @ViewChild( 'buttonDialogCancel', {static: true}  ) buttonDialogCancel;\n\n  private defaultOK;\n\n  constructor( private i18n: I18nService ) {\n  }\n\n  ngOnInit() {\n    this.defaultOK === true || this.defaultOK === undefined ? this.buttonDialogOk.buttonElement.nativeElement.focus() :\n      this.buttonDialogCancel.buttonElement.nativeElement.focus();\n  }\n\n  onkeyup( $event: KeyboardEvent ) {\n    switch ( $event.code ) {\n      case KeyEvent.ARROWLEFT:\n        this.setPreviousButton();\n        break;\n      case KeyEvent.ARROWRIGHT:\n        this.setNextButton();\n        break;\n      case KeyEvent.TAB:\n        $event.preventDefault();\n        document.activeElement === this.buttonDialogOk.buttonElement.nativeElement\n          ? this.setNextButton() : this.setPreviousButton();\n        break;\n    }\n  }\n\n  private setPreviousButton() {\n    this.buttonDialogOk.buttonElement.nativeElement.focus();\n  }\n\n  private setNextButton() {\n    this.buttonDialogCancel.buttonElement.nativeElement.focus();\n  }\n}\n","<div class=\"content-dialog\" (keydown)=\"onkeyup($event)\">\n    <div class=\"form\">\n        <p [innerHTML]=\"message\"></p>\n    </div>\n    <div class=\"header-controls\">\n        <tl-button #buttonDialogOk [text]=\"textYes\"\n                   mdResult=\"MRYES\"\n                   [color]=\"'success'\"\n                   [iconAddonBefore]=\"'ion ion-md-checkmark'\">\n        </tl-button>\n        &nbsp;&nbsp;&nbsp;\n        <tl-button #buttonDialogCancel [text]=\"textNo\"\n                   mdResult=\"MRNO\"\n                   [color]=\"'basic'\"\n                   [iconAddonBefore]=\"'ion ion-md-close'\">\n        </tl-button>\n    </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Injectable, ComponentFactoryResolver } from '@angular/core';\nimport { ModalService } from '../modal/services/modal.service';\n\nimport { TlDialogInfo } from './dialog-info/dialog-info';\nimport { TlDialogAlert } from './dialog-alert/dialog-alert';\nimport { TlDialogError } from './dialog-error/dialog-error';\nimport { TlDialogConfirmation } from './dialog-confirmation/dialog-confirmation';\n\nimport { ConfirmationOptions } from './dialog-confirmation/confirmation-options';\nimport { ErrorOptions } from './dialog-error/error-options';\nimport { AlertOptions } from './dialog-alert/alert-options';\nimport { InfoOptions } from './dialog-info/info-options';\nimport { ModalOptions } from '../modal/interfaces/modal-options';\nimport { ModalResult } from '../core/enums/modal-result';\n\nexport interface ConfirmCallback {\n  isYes?: any;\n  isNo?: any;\n}\n\n@Injectable()\nexport class DialogService {\n\n  constructor( private modalService: ModalService, private factoryResolver: ComponentFactoryResolver ) {\n  }\n\n  info( message: string, options: InfoOptions = {}, mdOptions?: ModalOptions ) {\n    return new Promise( ( resolve ) => {\n      this.modalService.createModalDialog( TlDialogInfo, this.factoryResolver, mdOptions ).then( value => {\n        resolve( value );\n      } );\n      const optionsObj = Object.assign( options, { message: message } );\n      this.setDialogOptions( optionsObj );\n    } );\n  }\n\n  alert( message: string, options: AlertOptions = {}, mdOptions?: ModalOptions ) {\n    return new Promise( ( resolve ) => {\n      this.modalService.createModalDialog( TlDialogAlert, this.factoryResolver, mdOptions ).then( value => {\n        resolve( value );\n      } );\n      const optionsObj = Object.assign( options, { message: message } );\n      this.setDialogOptions( optionsObj );\n    } );\n  }\n\n  error( message: string, options: ErrorOptions = {}, mdOptions?: ModalOptions ) {\n    return new Promise( ( resolve ) => {\n      this.modalService.createModalDialog( TlDialogError, this.factoryResolver, mdOptions ).then( value => {\n        resolve( value );\n      } );\n      const optionsObj = Object.assign( options, { message: message } );\n      this.setDialogOptions( optionsObj );\n    } );\n  }\n\n  confirmation( message: string, callbackConfirmation: ConfirmCallback, options: ConfirmationOptions = {}, mdOptions?: ModalOptions ) {\n    this.modalService.createModalDialog( TlDialogConfirmation, this.factoryResolver, mdOptions ).then((value: any) => {\n      if ( value.mdResult === ModalResult.MRYES ) {\n        if (callbackConfirmation.isYes) {\n          callbackConfirmation.isYes(ModalResult.MRYES);\n        }\n      } else if (value.mdResult === ModalResult.MRNO) {\n        if (callbackConfirmation.isNo) {\n          callbackConfirmation.isNo(ModalResult.MRNO);\n        }\n      }\n    });\n    const optionsObj = Object.assign( options, { message: message } );\n    this.setDialogOptions( optionsObj );\n  }\n\n  private setDialogOptions( options ) {\n    Object.keys( options ).forEach( ( value ) => {\n      this.modalService.componentInjected.instance[ value ] = options[ value ];\n    } );\n  }\n}\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport { Inject, NgModule } from '@angular/core';\n\nimport { DialogService } from './dialog.service';\n\nimport { TlDialogAlert } from './dialog-alert/dialog-alert';\nimport { TlDialogConfirmation } from './dialog-confirmation/dialog-confirmation';\nimport { TlDialogError } from './dialog-error/dialog-error';\nimport { TlDialogInfo } from './dialog-info/dialog-info';\n\nimport { ButtonModule } from '../button/index';\nimport { ModalModule } from '../modal/index';\nimport { IconsModule } from '../icons/index';\n\n@NgModule( {\n    imports: [\n        CommonModule,\n        ModalModule,\n        ButtonModule,\n        IconsModule\n    ],\n    declarations: [\n        TlDialogInfo,\n        TlDialogAlert,\n        TlDialogError,\n        TlDialogConfirmation\n    ],\n    exports: [\n        TlDialogInfo,\n        TlDialogAlert,\n        TlDialogError,\n        TlDialogConfirmation\n    ],\n    providers: [\n        DialogService,\n    ]\n} )\nexport class DialogModule {\n\n  private window: Window;\n\n  constructor(@Inject(DOCUMENT) private document: Document) {\n    // Workaround to expose the dialog components to the window object\n    // This is necessary to use the dialog components in the browser console and not generate circular dependencies with modal service\n    this.window = this.document.defaultView;\n    this.window['TlDialogConfirmation'] = TlDialogConfirmation;\n    this.window['TlDialogInfo'] = TlDialogInfo;\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { forwardRef, Inject } from '@angular/core';\nimport { I18nService } from '../../i18n/i18n.service';\n\nexport class ToolbarConfigModel {\n\n  constructor( @Inject( forwardRef( () => I18nService)) public i18n: I18nService ) {}\n\n  public font = {\n    family: { show: true, tooltipText: this.i18n.getLocale().Editor.fontFamilyText },\n    size: { show: true, tooltipText: this.i18n.getLocale().Editor.fontSizeText },\n    bold: { show: true, tooltipText: this.i18n.getLocale().Editor.boldText },\n    italic: { show: true, tooltipText: this.i18n.getLocale().Editor.italicText },\n    underline: { show: true, tooltipText: this.i18n.getLocale().Editor.underlineText },\n    color: { show: true, tooltipText: this.i18n.getLocale().Editor.colorText },\n    highlight: { show: true, tooltipText: this.i18n.getLocale().Editor.highlightText },\n  };\n  public alignment = {\n    left: { show: true, tooltipText: this.i18n.getLocale().Editor.alignLeftText },\n    center: { show: true, tooltipText: this.i18n.getLocale().Editor.alignCenterText },\n    right: { show: true, tooltipText: this.i18n.getLocale().Editor.alignRightText },\n    justify: { show: true, tooltipText: this.i18n.getLocale().Editor.justifyText }\n  };\n  public lists = {\n    ordered: { show: true, tooltipText: this.i18n.getLocale().Editor.listOrdered },\n    unordered: { show: true, tooltipText: this.i18n.getLocale().Editor.listUnordered }\n  };\n  public others = {\n    link: { show: true, tooltipText: this.i18n.getLocale().Editor.linkText },\n    imageLink: { show: true, tooltipText: this.i18n.getLocale().Editor.imageText },\n    quote: { show: true, tooltipText: this.i18n.getLocale().Editor.quoteText },\n    clear: { show: true, tooltipText: this.i18n.getLocale().Editor.clearText },\n    save: { show: true, tooltipText: this.i18n.getLocale().Editor.saveText },\n    field: { show: true, tooltipText: this.i18n.getLocale().Editor.fieldText }\n  };\n\n}\n","import {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {TagContent} from '../interfaces/tag-content';\nimport {FieldContent} from '../interfaces/field-content';\n\n@Injectable()\nexport class EditorService {\n\n  public compileSuject = new Subject();\n\n  constructor(private domSanitizer: DomSanitizer) {\n  }\n\n  decompile(html: string, tagsContent: TagContent[], fieldsContent: FieldContent[]) {\n    const htmlParsed = new DOMParser().parseFromString(html, 'text/html');\n    return new Promise((resolve) => {\n      const tagsDom = [];\n      const fieldsDom = [];\n      tagsContent.forEach((item) => {\n        tagsDom.push({\n          id: item.tag,\n          value: item.value,\n          element: htmlParsed.getElementById(item.tag),\n        });\n      });\n      fieldsContent.forEach((item) => {\n        fieldsDom.push({\n          id: item.field,\n          value: item.value,\n          element: htmlParsed.getElementById(item.field),\n        });\n      });\n      for (let i = 0; i < tagsDom.length; i++) {\n        if (tagsDom[i].element) {\n          const element = new DOMParser()\n            .parseFromString(`<span id=\"${tagsDom[i].id}\" class=\"ui-hashtag\">${tagsDom[i].id}</span>`, 'text/html').body.firstChild;\n          tagsDom[i].element.insertAdjacentElement('afterend', <Element>element);\n          tagsDom[i].element.remove();\n        }\n      }\n      for (let i = 0; i < fieldsDom.length; i++) {\n        if (fieldsDom[i].element) {\n          const element = new DOMParser()\n            .parseFromString(`<input id=\"${fieldsDom[i].id}\" class=\"ui-field\" value=\"${this.getFieldValue(fieldsDom[i])}\">`,\n              'text/html').body.firstChild;\n          fieldsDom[i].element.insertAdjacentElement('afterend', <Element>element);\n          fieldsDom[i].element.remove();\n        }\n      }\n      resolve(this.domSanitizer.bypassSecurityTrustHtml(htmlParsed.body.innerHTML));\n    });\n  }\n\n  private getFieldValue( field ) {\n    if ( field.element.innerText ) {\n      return field.element.innerText;\n    }\n    return field.value || ' ';\n  }\n\n  compile(html: string, tagsContent: TagContent[], fieldsContent: FieldContent[]) {\n    const htmlParsed = new DOMParser().parseFromString(html, 'text/html').body;\n    return new Promise((resolve) => {\n\n      const tags = htmlParsed.querySelectorAll('.ui-hashtag');\n      for (let i = 0; i < tags.length; i++) {\n        const tagSelected = tagsContent.find(item => item.tag === this.getAttributeValue(tags[i].attributes, 'id'));\n        if (tagSelected) {\n          const element = new DOMParser()\n            .parseFromString(`<strong id=\"${tagSelected.tag}\">${tagSelected.value}</strong>`, 'text/html').body.firstChild;\n          tags[i].insertAdjacentElement('afterend', <Element>element);\n          tags[i].remove();\n        }\n      }\n\n      const fields = htmlParsed.querySelectorAll('.ui-field');\n      for (let i = 0; i < fields.length; i++) {\n        const fieldSelected = fieldsContent.find(item => item.field === this.getAttributeValue(fields[i].attributes, 'id'));\n        const fieldValue = this.getAttributeValue(fields[i].attributes, 'value') || ' ';\n        const element = new DOMParser()\n          .parseFromString(`<strong id=\"${fieldSelected.field}\">${fieldValue}</strong>`, 'text/html').body.firstChild;\n        fields[i].insertAdjacentElement('afterend', <Element>element);\n        fields[i].remove();\n      }\n\n      resolve(this.domSanitizer.bypassSecurityTrustHtml(htmlParsed.innerHTML));\n    });\n  }\n\n  private getAttributeValue(attributes, name) {\n    for (let i = 0; i < attributes.length; i++) {\n      if (attributes[i].name === name) {\n        return attributes[i].value;\n      }\n    }\n  }\n}\n\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n import { ContentChild, Directive, EventEmitter, HostListener, Output} from '@angular/core';\n import { TlButton } from '../button/button';\n\n@Directive({\n  selector: '[formSubmit]'\n})\n export class FormSubmitDirective {\n\n  @Output() submit = new EventEmitter();\n\n  @HostListener('keydown.enter')\n  onEnter() {\n    if ( this.button && !this.button.disabled ) {\n      this.submit.emit();\n    }\n  }\n\n\n  @HostListener('click')\n  onClick() {\n    if ( this.button && !this.button.disabled ) {\n      this.submit.emit();\n    }\n  }\n\n  constructor( public button: TlButton ) {}\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  ContentChildren,\n  EventEmitter,\n  forwardRef,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  QueryList,\n  Renderer2,\n  ViewChild,\n} from '@angular/core';\nimport {KeyEvent} from '../core/enums/key-events';\nimport {I18nService} from '../i18n/i18n.service';\nimport {TlInput} from '../input/input';\nimport {UntypedFormGroup, NgForm, NgModel} from '@angular/forms';\nimport {TlButton} from '../button/button';\nimport {FormSubmitDirective} from './form-submit.directive';\nimport {ModalService} from '../modal/services/modal.service';\nimport {ActionsModal} from '../core/enums/actions-modal';\nimport {Subscription} from 'rxjs';\n\nlet componentFormIndex;\n\n@Component( {\n  selector: 'tl-form',\n  templateUrl: '../form/form.html',\n  styleUrls: [ '../form/form.scss' ],\n} )\nexport class TlForm implements OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n\n  @Input( 'initialFocus' )\n  set initialFocus( value ) {\n    if ( value ) {\n      this._initialFocus = value;\n      this.change.detectChanges();\n      this.setInitialFocus();\n    }\n  }\n\n  get initialFocus() {\n    return this._initialFocus;\n  }\n\n  @Input() showConfirmOnChange = false;\n\n  @Input() isLoading = false;\n\n  @Input() submitOnLastField = false;\n\n  @Input() primaryKey = '';\n\n  @Input() messageDialogConfirmation = 'Are you sure ?';\n\n  @Input() submitShortcut = '';\n\n  @Input() cancelShortcut = 'escape';\n\n  @Input() mode: 'inline' | 'modal' = 'modal';\n\n  @Input() textConfirm = this.i18n.getLocale().Form.textOk;\n\n  @Input() textCancel = this.i18n.getLocale().Form.textCancel;\n\n  @Input() padding = '10px';\n\n  @Output() formLoaded: EventEmitter<UntypedFormGroup> = new EventEmitter();\n\n  @Output() submitForm: EventEmitter<NgForm> = new EventEmitter();\n\n  @Output() actionForm: EventEmitter<ActionsModal> = new EventEmitter();\n\n  @Output() changeForm: EventEmitter<UntypedFormGroup> = new EventEmitter();\n\n  @Input( 'formGroup' ) formGroup: UntypedFormGroup;\n\n  @ViewChild( NgForm, {static: true}  ) public form: NgForm;\n\n  @ContentChildren( forwardRef( () => TlInput ), { descendants: true } ) inputList: QueryList<TlInput>;\n\n  @ContentChildren( forwardRef( () => TlButton ), { descendants: true } ) buttonList: QueryList<TlButton>;\n\n  @ContentChildren( forwardRef( () => NgModel ), { descendants: true } ) models: QueryList<NgModel>;\n\n  @ContentChild( FormSubmitDirective, {static: true}  ) submitDirective: FormSubmitDirective;\n\n  @ViewChild( 'buttonFormOk', {static: false}  ) buttonFormOk;\n\n  @ViewChild( 'buttonFormCancel', {static: false}  ) buttonFormCancel;\n\n  @ViewChild( 'content', {static: true}  ) content;\n\n  public formResult;\n\n  private lastTabIndex: number;\n\n  private focusElements = [];\n\n  private elementsWithTabIndex = [];\n\n  private _initialFocus;\n\n  private subscription = new Subscription();\n\n  private modalInstance;\n\n  constructor( private renderer: Renderer2, private i18n: I18nService,\n               private change: ChangeDetectorRef,\n               private injector: Injector ) {\n    this.modalInstance = this.injector.get( ModalService );\n  }\n\n  get valid() {\n    return this.form.valid;\n  }\n\n  get formInstance() {\n    return this.formGroup ? this.formGroup : this.form.form;\n  }\n\n  ngOnInit() {\n    componentFormIndex = -1;\n  }\n\n  ngAfterContentInit() {\n    this.handleFormGroupValues();\n    this.handleSmartFormAction();\n    this.setPrimaryKeyDisabled();\n    this.addControls();\n  }\n\n  handleSmartFormAction() {\n    if ( this.modalInstance.modalConfiguration ) {\n      this.actionForm.emit( this.modalInstance.modalConfiguration.executeAction );\n    }\n  }\n\n  ngAfterViewInit() {\n    this.getElementsOfForm();\n    this.formLoaded.emit( this.formInstance );\n    this.setInitialFocus();\n    this.listenSubmitDirective();\n    this.listenFormChanges();\n  }\n\n  listenSubmitDirective() {\n    if ( this.submitDirective ) {\n      this.subscription.add( this.submitDirective.submit.subscribe(() => {\n        this.submitForm.emit( this.formInstance.value );\n      }));\n    }\n  }\n\n  listenFormChanges() {\n    this.subscription.add( this.formInstance.valueChanges.subscribe(() => {\n      this.changeForm.emit( this.formInstance );\n      this.change.detectChanges();\n    }));\n  }\n\n  handleFormGroupValues() {\n    if ( this.formGroup ) {\n      if ( this.modalInstance.modalConfiguration &&\n        this.modalInstance.modalConfiguration.executeAction !== ActionsModal.INSERT &&\n        this.modalInstance.modalConfiguration.dataForm && this.mode === 'modal') {\n        this.patchDataForm();\n      }\n      if ( this.modalInstance.modalConfiguration &&\n        this.modalInstance.modalConfiguration.executeAction === ActionsModal.INSERT &&\n        this.modalInstance.modalConfiguration.initialDataForm && this.mode === 'modal') {\n        this.patchInitialDataForm();\n      }\n    }\n  }\n\n  patchDataForm() {\n    this.formGroup.patchValue( this.modalInstance.modalConfiguration.dataForm );\n    this.markAllAsTouched( this.formGroup.controls );\n    this.change.detectChanges();\n  }\n\n  patchInitialDataForm() {\n    this.formGroup.patchValue( this.modalInstance.modalConfiguration.initialDataForm );\n    this.markAllAsTouched( this.formGroup.controls );\n    this.change.detectChanges();\n  }\n\n  markAllAsTouched( controls ) {\n    Object.keys( controls ).forEach(key => {\n      if ( controls[key] instanceof UntypedFormGroup ) {\n         this.markAllAsTouched( controls[key].controls );\n      } else {\n        controls[key].markAsTouched();\n      }\n    });\n  }\n\n  setPrimaryKeyDisabled() {\n    if ( this.primaryKey && this.formGroup ) {\n      this.formGroup.get( this.primaryKey ).disable();\n    }\n  }\n\n  addControls() {\n    if ( !this.formGroup ) {\n      this.models.toArray().forEach( ( item, index, array ) => {\n        this.form.addControl( item );\n      } );\n    }\n  }\n\n  onSubmitForm() {\n    this.handleFormPrimaryKey();\n    this.formResult = this.formInstance.value;\n    this.submitForm.emit( this.formInstance.value );\n    this.change.detectChanges();\n  }\n\n  handleFormPrimaryKey() {\n    if (this.primaryKey && this.modalInstance.modalConfiguration.executeAction === ActionsModal.UPDATE) {\n      this.formInstance.get(this.primaryKey).enable();\n    }\n  }\n\n  getElementsOfForm() {\n    const listFormComponents = this.content.nativeElement.querySelectorAll( '*' );\n    for ( let childFormComponents = 0; childFormComponents < listFormComponents.length; childFormComponents++ ) {\n      if ( (listFormComponents[ childFormComponents ].tagName === 'INPUT'\n        || listFormComponents[ childFormComponents ].tagName === 'TEXTAREA'\n        || listFormComponents[childFormComponents].classList.contains('ui-editor-content')) &&\n        !this.taggedNotForm( listFormComponents[ childFormComponents ] ) ) {\n        this.focusElements.push( listFormComponents[ childFormComponents ] );\n      }\n    }\n    this.addButtonsOfFormToListElements();\n    this.handleTabIndexComponentsOfForm();\n  }\n\n  taggedNotForm( element: HTMLElement ) {\n    for ( let item = 0; item < element.attributes.length; item++ ) {\n      if ( element.attributes[ item ].nodeValue === 'notform' || element.attributes[ item ].nodeName === 'notform' ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  addButtonsOfFormToListElements() {\n    if ( this.mode === 'inline' ) {\n      this.buttonList.forEach( ( item, index, array ) => {\n        index === 0 ? this.buttonFormOk = item : this.buttonFormCancel = item;\n      } );\n    }\n\n    if ( this.buttonFormOk ) {\n      this.focusElements.push( this.buttonFormOk.buttonElement.nativeElement );\n    }\n    if ( this.buttonFormCancel ) {\n      this.focusElements.push( this.buttonFormCancel.buttonElement.nativeElement );\n    }\n  }\n\n  handleTabIndexComponentsOfForm() {\n    setTimeout( () => {\n      this.getElementsWithTabIndex();\n      this.generateTabIndexOfElements();\n      this.orderElements();\n      this.validateTabIndexByElements();\n    }, 10 );\n  }\n\n  setTabIndex( element: HTMLElement ) {\n    if ( !element.tabIndex ) {\n      componentFormIndex++;\n      this.notExistTabIndexInserted() ? element.setAttribute( 'tabIndex', componentFormIndex )\n        : this.setTabIndex( element );\n    }\n  }\n\n  isLastTabIndexElement( element: HTMLElement, index, array ) {\n    if ( index === array.length - 1 ) {\n      this.lastTabIndex = element.tabIndex;\n    }\n  }\n\n  generateTabIndexOfElements() {\n    this.focusElements.forEach( ( element: HTMLElement, index, array ) => {\n        this.setTabIndex( element );\n        this.isLastTabIndexElement( element, index, array );\n      }\n    );\n  }\n\n  getElementsWithTabIndex() {\n    this.focusElements.forEach( ( element: HTMLElement ) => {\n      if ( element.tabIndex ) {\n        this.validateDuplicatedTabIndex( element );\n        this.elementsWithTabIndex.push( element.tabIndex );\n      }\n    } );\n  }\n\n  validateDuplicatedTabIndex( element: HTMLElement ) {\n    if ( this.existTabIndexInserted( element ) ) {\n      throw new EvalError( 'Exist an element with tabIndex duplicated! TabIndex : ' + element.tabIndex );\n    }\n  }\n\n  validateTabIndexByElements() {\n    const formElementsDefault = 3;\n    if ( Math.max( ...this.elementsWithTabIndex ) > this.focusElements.length - formElementsDefault ) {\n      throw new EvalError( 'The form doesn\\'t have the number' +\n        ' of elements enough according with TabIndex passed : ' + Math.max( ...this.elementsWithTabIndex ) );\n    }\n  }\n\n  notExistTabIndexInserted() {\n    return this.elementsWithTabIndex.indexOf( componentFormIndex ) < 0;\n  }\n\n  existTabIndexInserted( element: HTMLElement ) {\n    return this.elementsWithTabIndex.indexOf( element.tabIndex ) >= 0;\n  }\n\n  orderElements() {\n    let order;\n    order = this.focusElements.sort( function ( a, b ) {\n      return a.getAttribute( 'tabindex' ) - b.getAttribute( 'tabindex' );\n    } );\n    this.focusElements = order;\n  }\n\n  handleKeysForm( $event: KeyboardEvent ) {\n    if ( $event.code === KeyEvent.TAB && $event.shiftKey ) {\n      $event.preventDefault();\n      this.backwardTabbing();\n      return;\n    }\n    switch ( $event.code ) {\n      case KeyEvent.ARROWUP :\n        $event.preventDefault();\n        this.backwardTabbing();\n        break;\n      case KeyEvent.ARROWDOWN:\n        $event.preventDefault();\n        this.forwardTabbing();\n        break;\n      case KeyEvent.ARROWRIGHT :\n        this.setFocusOK();\n        break;\n      case KeyEvent.ARROWLEFT:\n        this.setFocusCancel();\n        break;\n      case KeyEvent.TAB:\n        if ( !this.isTextArea() ) {\n          $event.preventDefault();\n        }\n        this.forwardTabbing();\n        break;\n      case KeyEvent.ENTER:\n        if ( !this.isTextArea() ) {\n          $event.preventDefault();\n        }\n        this.forwardTabbing('enter');\n        break;\n      case KeyEvent.NUMPADENTER:\n        if ( !this.isTextArea() ) {\n          $event.preventDefault();\n        }\n        this.forwardTabbing('enter');\n        break;\n    }\n  }\n\n  backwardTabbing() {\n    this.change.detectChanges();\n    if ( this.isFirstTabIndexOfForm() ) {\n      return this.focusElements[ this.lastTabIndex ].focus();\n    }\n    if ( !this.validateFirstElement() ) {\n      const previousElement = (document.activeElement as HTMLElement).tabIndex - 1;\n\n      for ( let element = previousElement; element < this.focusElements.length && (element >= 0); element-- ) {\n        if ( !this.isElementDisabled( this.focusElements[ element ] ) ) {\n          return this.focusElements[ element ].focus();\n        }\n      }\n    }\n  }\n\n  validateFirstElement() {\n    return (this.focusElements[ 0 ].getAttribute( 'disabled' )) && (this.focusElements[ 1 ] === document.activeElement);\n  }\n\n  forwardTabbing( keyEnter?: string ) {\n    this.change.detectChanges();\n    if ( this.isLastTabIndexOfForm() ) {\n      return this.focusElements[ 0 ].focus();\n    }\n    if ( this.isTextArea() ) {\n      return;\n    }\n    const nextElement = (document.activeElement as HTMLElement).tabIndex + 1;\n    for ( let element = nextElement; element < this.focusElements.length; element++ ) {\n      if ( this.focusElements[element].localName === 'button' && this.submitOnLastField && keyEnter) {\n        this.onSubmitForm();\n        return;\n      }\n      if ( !this.isElementDisabled( this.focusElements[ element ] ) ) {\n        return this.focusElements[ element ].focus();\n      }\n    }\n  }\n\n  isTextArea() {\n    return (document.activeElement as HTMLElement).localName === 'textarea';\n  }\n\n  isLastTabIndexOfForm() {\n    return (document.activeElement as HTMLElement).tabIndex === this.lastTabIndex;\n  }\n\n  isFirstTabIndexOfForm() {\n    return (document.activeElement as HTMLElement).tabIndex === 0;\n  }\n\n  isElementDisabled( element ) {\n    if ( element === undefined ) {\n      return false;\n    }\n    return element.disabled;\n  }\n\n  setInitialFocus() {\n    setTimeout(() => {\n      this.initialFocus ? this.initialFocus.getNativeInput().focus()\n        : this.setFocusOnFirstInput();\n    }, 250);\n  }\n\n  setFocusOK() {\n    if ( this.isActiveElementButtonCancel() && this.buttonFormOk ) {\n      this.buttonFormOk.buttonElement.nativeElement.focus();\n    }\n  }\n\n  setFocusCancel() {\n    if ( this.isActiveElementButtonOk() && this.buttonFormCancel ) {\n      this.buttonFormCancel.buttonElement.nativeElement.focus();\n    }\n  }\n\n  setFocusOnFirstInput() {\n    const enableElement = this.inputArray.filter( ( value ) => !value.disabled );\n    if ( enableElement.length > 0 ) {\n      enableElement[ 0 ].focus();\n    }\n  }\n\n  get inputArray() {\n    return this.inputList.map( ( item ) => item.getNativeInput() );\n  }\n\n  isActiveElementButtonOk() {\n    if ( !this.buttonFormOk ) {\n      return false;\n    }\n    return document.activeElement === this.buttonFormOk.buttonElement.nativeElement;\n  }\n\n  isActiveElementButtonCancel() {\n    if ( !this.buttonFormCancel ) {\n      return false;\n    }\n    return document.activeElement === this.buttonFormCancel.buttonElement.nativeElement;\n  }\n\n  destroyListeners() {\n    this.subscription.unsubscribe();\n  }\n\n  ngOnDestroy() {\n    this.destroyListeners();\n  }\n\n\n}\n\n","<div class=\"formBox\" (keydown)=\"handleKeysForm($event)\">\n  <div class=\"loading\" *ngIf=\"isLoading\">\n    <div class=\"loader\">\n      <tl-loader></tl-loader>\n    </div>\n  </div>\n    <div class=\"formContent\" #content [style.padding]=\"padding\">\n      <form novalidate #form=\"ngForm\">\n        <ng-content></ng-content>\n      </form>\n    </div>\n    <div [ngClass]=\"{'clearfix': mode !== 'inline'}\"></div>\n    <div [ngClass]=\"{'forFooter': mode !== 'inline'}\">\n        <div class=\"controls\" *ngIf=\"mode !== 'inline'\">\n          <tl-button   #buttonFormCancel\n                       [text]=\"textCancel\"\n                       [width]=\"'120px'\"\n                       mdResult=\"MRCANCEL\"\n                       [color]=\"'basic'\"\n                       [style.padding-right]=\"'5px'\"\n                       [shortcut]=\"cancelShortcut\"\n                       [formResult]=\"formResult\"\n                       [iconAddonBefore]=\"'fas fa-times'\">\n            </tl-button>\n            <tl-button #buttonFormOk\n                       [text]=\"textConfirm\"\n                       [isLoading]=\"isLoading\"\n                       mdResult=\"MROK\"\n                       (click)=\"onSubmitForm()\"\n                       (keydown.enter)=\"onSubmitForm()\"\n                       [width]=\"'120px'\"\n                       [color]=\"'success'\"\n                       [shortcut]=\"submitShortcut\"\n                       [disabled]=\"isLoading ? true : !formInstance.valid\"\n                       [formResult]=\"formResult\"\n                       [iconAddonBefore]=\"'fas fa-check'\">\n            </tl-button>\n        </div>\n    </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, EventEmitter, Input, OnChanges, Output,\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-editor-link-box',\n  templateUrl: './editor-link-box.html',\n  styleUrls: [ './editor-link-box.scss' ],\n} )\n\nexport class TlEditorLinkBox implements OnChanges {\n\n  @Input() descriptionLink = '';\n\n  @Output() onSetLink = new EventEmitter();\n\n  @Output() onToggleLink = new EventEmitter();\n\n  public linkItself = '';\n\n  setLinkEditorLinkBox() {\n    this.onSetLink.emit({'link': this.linkItself, 'description': this.descriptionLink });\n  }\n\n  toggleLinkBoxEditorLinkBox() {\n    this.onToggleLink.emit();\n  }\n\n  ngOnChanges() {}\n\n}\n","<div class=\"ui-link-box\">\n  <tl-form [mode]=\"'inline'\">\n    <div class=\"ui-form-control\">\n      <tl-input [name]=\"'descriptionLink'\" [(ngModel)]=\"descriptionLink\" [label]=\"'Description'\"></tl-input>\n    </div>\n    <div class=\"ui-form-control\">\n      <tl-input [name]=\"'linkItself'\" [(ngModel)]=\"linkItself\" [label]=\"'Link'\"></tl-input>\n    </div>\n    <div class=\"ui-form-control flex-control\">\n      <tl-button (click)=\"toggleLinkBoxEditorLinkBox()\" [height]=\"'25px'\" [width]=\"'35px'\" [text]=\"'Cancel'\" [color]=\"'basic'\"></tl-button>\n      <tl-button (click)=\"setLinkEditorLinkBox()\" [height]=\"'25px'\" [disabled]=\"!descriptionLink || !linkItself\"\n                 style=\"margin-left: 10px\" [width]=\"'35px'\" [text]=\"'Save'\" [color]=\"'primary'\"></tl-button>\n    </div>\n  </tl-form>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, EventEmitter, Input, OnChanges, Output,\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-editor-image-box',\n  templateUrl: './editor-image-box.html',\n  styleUrls: [ './editor-image-box.scss' ],\n} )\n\nexport class TlEditorImageBox implements OnChanges {\n\n  @Input() imageUrl = '';\n\n  @Output() onSetImage = new EventEmitter();\n\n  @Output() onToggleImage = new EventEmitter();\n\n  public linkItself = '';\n\n  setImageUrl() {\n    this.onSetImage.emit({'imageUrl': this.imageUrl });\n  }\n\n  toggleImageBox() {\n    this.onToggleImage.emit();\n  }\n\n  ngOnChanges() {}\n\n}\n","<div class=\"ui-image-box\">\n  <tl-form [mode]=\"'inline'\">\n    <div class=\"ui-form-control\">\n      <tl-input [iconBefore]=\"'ion-link'\" [name]=\"'imageUrl'\" [(ngModel)]=\"imageUrl\" [label]=\"'Image URL'\"></tl-input>\n    </div>\n    <div class=\"ui-form-control flex-control\">\n      <tl-button (click)=\"toggleImageBox()\" [height]=\"'25px'\" [width]=\"'35px'\" [text]=\"'Cancel'\"\n                 [color]=\"'basic'\"></tl-button>\n      <tl-button (click)=\"setImageUrl()\" [height]=\"'25px'\" [disabled]=\"!imageUrl\" style=\"margin-left: 10px\" [width]=\"'35px'\" [text]=\"'Save'\"\n                 [color]=\"'primary'\"></tl-button>\n    </div>\n  </tl-form>\n</div>\n","import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport {ToolbarConfig} from '../../interfaces/toolbar-config';\nimport {FieldContent} from '../../interfaces/field-content';\n\n@Component({\n  selector: 'tl-editor-header',\n  templateUrl: './editor-header.html',\n  styleUrls: ['./editor-header.scss']\n})\nexport class TlEditorHeader implements OnInit {\n\n  @Input() toolbarConfig: ToolbarConfig;\n\n  @Input() cursorHighlight = false;\n\n  @Input() fontSizeCollection = [];\n\n  @Input() fontCollection = [];\n\n  @Input() fields: FieldContent[] = [];\n\n  @Input() color = 'basic';\n\n  @Input() activeTools;\n\n  @Input() colorSelected = '#000000';\n\n  @Input() fontSelected = 'Arial';\n\n  @Input() fontSizeSelected = '3pt';\n\n  @Output() changeColor = new EventEmitter();\n\n  @Output() changeFont = new EventEmitter();\n\n  @Output() changeFontSize = new EventEmitter();\n\n  @Output() clickUnderline = new EventEmitter();\n\n  @Output() clickItalic = new EventEmitter();\n\n  @Output() clickBold = new EventEmitter();\n\n  @Output() clickHighlight = new EventEmitter();\n\n  @Output() clickAlignContent = new EventEmitter();\n\n  @Output() clickUnorderedList = new EventEmitter();\n\n  @Output() clickOrderedList = new EventEmitter();\n\n  @Output() clickLink = new EventEmitter();\n\n  @Output() clickImage = new EventEmitter();\n\n  @Output() clickQuote = new EventEmitter();\n\n  @Output() clickClear = new EventEmitter();\n\n  @Output() clickSave = new EventEmitter();\n\n  @Output() clickField = new EventEmitter();\n\n  @Input('labelAddField')\n  set labelAddField( value: string ) {\n    this._labelAddField = value;\n  }\n\n  get labelAddField() {\n    return this._labelAddField;\n  }\n\n  private _labelAddField;\n\n  public defaultField;\n\n  constructor() {}\n\n  ngOnInit() {\n    this.defaultField = this.labelAddField;\n  }\n\n  onChangeField($event) {\n    this.clickField.emit($event);\n    setTimeout(() => this.defaultField = this.labelAddField);\n  }\n}\n","<div class=\"ui-editor-header\">\n  <ul class=\"ui-tools-list\">\n     <li class=\"dropdown\" [tooltip]=\"{text: toolbarConfig?.font?.family?.tooltipText, placement: 'top-center'}\"\n         *ngIf=\"toolbarConfig?.font?.family?.show\">\n       <select class=\"select\" [(ngModel)]=\"fontSelected\" (ngModelChange)=\"changeFont.emit($event)\">\n         <option *ngFor=\"let item of fontCollection\" [ngValue]=\"item.value\">{{ item?.description }}</option>\n       </select>\n     </li>\n        <li class=\"dropdown\" [tooltip]=\"{text: toolbarConfig?.font?.size?.tooltipText, placement: 'top-center'}\"\n            *ngIf=\"toolbarConfig?.font.size?.show\">\n          <select class=\"select\" [(ngModel)]=\"fontSizeSelected\" (ngModelChange)=\"changeFontSize.emit($event)\">\n            <option *ngFor=\"let item of fontSizeCollection\" [ngValue]=\"item.value\">{{ item?.description }}</option>\n          </select>\n        </li>\n    <li [tooltip]=\"{text: toolbarConfig?.font?.bold?.tooltipText, placement: 'top-center'}\"\n        *ngIf=\"toolbarConfig?.font.bold?.show\">\n      <button class=\"ui-command fa fa-bold\" [ngClass]=\"{'ui-active-tool': activeTools.bold}\"\n              (click)=\"clickBold.emit()\"></button>\n    </li>\n    <li [tooltip]=\"{text: toolbarConfig?.font.italic?.tooltipText, placement: 'top-center'}\"\n        *ngIf=\"toolbarConfig?.font.italic?.show\">\n      <button class=\"ui-command fa fa-italic\" [ngClass]=\"{'ui-active-tool': activeTools.italic}\"\n              (click)=\"clickItalic.emit()\"></button>\n    </li>\n    <li [tooltip]=\"{text: toolbarConfig?.font.underline?.tooltipText, placement: 'top-center'}\"\n        *ngIf=\"toolbarConfig?.font.underline?.show\">\n      <button class=\"ui-command fa fa-underline\" [ngClass]=\"{'ui-active-tool': activeTools.underline}\"\n              (click)=\"clickUnderline.emit()\"></button>\n    </li>\n    <li [style.border-bottom]=\"'2px solid ' + colorSelected\" #button\n        [tooltip]=\"{text: toolbarConfig?.font.color?.tooltipText, placement: 'top-center'}\"\n        *ngIf=\"toolbarConfig?.font.color?.show\">\n      <button class=\"ui-command fa fa-font\"></button>\n      <tl-colorpicker [mode]=\"'fromOrigin'\" [elementOrigin]=\"button\" [recentColors]=\"true\"\n                      [(ngModel)]=\"colorSelected\" [returnFormatColor]=\"true\"\n                      (selectColor)=\"changeColor.emit($event)\"></tl-colorpicker>\n    </li>\n    <li *ngIf=\"toolbarConfig?.font.highlight?.show\"\n        [tooltip]=\"{text: toolbarConfig?.font.highlight?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fas fas fa-pen-alt\" [ngClass]=\"{'ui-active-tool': cursorHighlight}\"\n              (click)=\"clickHighlight.emit()\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.alignment?.left?.show\"\n        [tooltip]=\"{text: toolbarConfig?.alignment?.left?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fa fa-align-left\" [ngClass]=\"{'ui-active-tool': activeTools.alignLeft}\"\n              (click)=\"clickAlignContent.emit('justifyLeft')\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.alignment?.center?.show\"\n        [tooltip]=\"{text: toolbarConfig?.alignment?.center?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fa fa-align-center\" [ngClass]=\"{'ui-active-tool': activeTools.alignCenter}\"\n              (click)=\"clickAlignContent.emit('justifyCenter')\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.alignment?.right?.show\"\n        [tooltip]=\"{text: toolbarConfig?.alignment?.right?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fa fa-align-right\" [ngClass]=\"{'ui-active-tool': activeTools.alignRight}\"\n              (click)=\"clickAlignContent.emit('justifyRight')\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.alignment?.justify?.show\"\n        [tooltip]=\"{text: toolbarConfig?.alignment?.justify?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fa fa-align-justify\" [ngClass]=\"{'ui-active-tool': activeTools.alignJustify}\"\n              (click)=\"clickAlignContent.emit('justifyFull')\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.lists?.ordered?.show\"\n        [tooltip]=\"{text: toolbarConfig?.lists?.ordered?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fa fa-list-ul\" [ngClass]=\"{'ui-active-tool': activeTools.listUnordered}\"\n              (click)=\"clickUnorderedList.emit()\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.lists?.unordered?.show\"\n        [tooltip]=\"{text: toolbarConfig?.lists?.unordered?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fa fa-list-ol\" [ngClass]=\"{'ui-active-tool': activeTools.listOrdered}\"\n              (click)=\"clickOrderedList.emit()\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.others?.link?.show\"\n        [tooltip]=\"{text: toolbarConfig?.others?.link?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fa fa-link\" (click)=\"clickLink.emit()\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.others?.imageLink?.show\"\n        [tooltip]=\"{text: toolbarConfig?.others?.imageLink?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command far fa-image\" (click)=\"clickImage.emit()\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.others?.quote?.show\"\n        [tooltip]=\"{text: toolbarConfig?.others?.quote?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command fas fa-quote-right\" [ngClass]=\"{'ui-active-tool': activeTools.blockQuote}\"\n              (click)=\"clickQuote.emit()\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.others?.clear?.show\"\n        [tooltip]=\"{text: toolbarConfig?.others?.clear?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command far fa-trash-alt\"\n              (click)=\"clickClear.emit()\"></button>\n    </li>\n    <li *ngIf=\"toolbarConfig?.others?.save?.show\"\n        [tooltip]=\"{text: toolbarConfig?.others?.save?.tooltipText, placement: 'top-center'}\">\n      <button class=\"ui-command far fa-save\"\n              (click)=\"clickSave.emit()\"></button>\n    </li>\n    <li class=\"dropdown\">\n      <select class=\"select\" *ngIf=\"toolbarConfig?.others?.field\" [tooltip]=\"{text: toolbarConfig?.others?.field?.tooltipText, placement: 'top-center'}\"\n              [(ngModel)]=\"defaultField\" (ngModelChange)=\"onChangeField($event)\">\n        <option default>{{ labelAddField }}</option>\n        <option *ngFor=\"let item of fields\" [ngValue]=\"item.field\">{{ item?.field }}</option>\n      </select>\n    </li>\n  </ul>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterContentInit, ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  OnChanges, Optional,\n  Output,\n  Renderer2, Self,\n  SimpleChanges, TemplateRef,\n  ViewChild,\n} from '@angular/core';\n\nimport {trigger, transition, style, animate} from '@angular/animations';\nimport {ToolbarConfigModel} from './model/toolbar-config.model';\nimport {ToolbarConfig} from './interfaces/toolbar-config';\nimport {I18nService} from '../i18n/i18n.service';\nimport {ControlValueAccessor, NgControl} from '@angular/forms';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {Subscription} from 'rxjs';\nimport {EditorService} from './services/editor.service';\nimport {FieldContent} from './interfaces/field-content';\n\n@Component({\n  selector: 'tl-editor',\n  templateUrl: './editor.html',\n  styleUrls: ['./editor.scss'],\n  animations: [\n    trigger(\n      'enterAnimation', [\n        transition(':enter', [\n          style({transform: 'translateX(100%)', opacity: 0}),\n          animate('250ms', style({transform: 'translateX(0)', opacity: 1}))\n        ]),\n        transition(':leave', [\n          style({transform: 'translateX(0)', opacity: 1}),\n          animate('250ms', style({transform: 'translateX(100%)', opacity: 0}))\n        ])\n      ]\n    )\n  ],\n})\nexport class TlEditor implements ControlValueAccessor, AfterContentInit, OnChanges {\n\n  @Input() content: SafeHtml;\n\n  @Input() color = 'basic';\n\n  @Input() tags = [];\n\n  @Input() fields: FieldContent[] = [];\n\n  @Input() toolbarConfig: ToolbarConfig;\n\n  @Input() height = '300px';\n\n  @Input() labelPlacement = 'top';\n\n  @Input() labelSize = '100px';\n\n  @Input() label = '';\n\n  @Input() editable = true;\n\n  @Input() disabled = false;\n\n  @ViewChild('contentEditor', {static: true}) contentEditor: ElementRef;\n\n  @ViewChild('linkBox', {static: true}) linkBox;\n\n  @ViewChild('wrapper', {static: true}) wrapper;\n\n  @ViewChild('fieldTemplate', {static: true}) fieldTemplate: TemplateRef<any>;\n\n  @Output() saveContent = new EventEmitter();\n\n  public fontCollection = [];\n\n  public fontSizeCollection = [];\n\n  public font = 'Arial';\n\n  public fontSize = '3pt';\n\n  public toggleLink = false;\n\n  public toggleImage = false;\n\n  public saved = false;\n\n  public descriptionLink = '';\n\n  public linkItself = '';\n\n  public colorSelected = '#000000';\n\n  public anchorNodeCursor;\n\n  public cursorHighlight = false;\n\n  public selectedContent = false;\n\n  public cursorSelection;\n\n  public activeTools = {\n    bold: false,\n    italic: false,\n    underline: false,\n    listUnordered: false,\n    listOrdered: false,\n    alignLeft: false,\n    alignCenter: false,\n    alignRight: false,\n    alignJustify: false,\n    blockQuote: false\n  };\n\n  public image = {imageUrl: ''};\n\n  public selection = {start: 0, end: 0, baseNode: null, extentNode: null};\n\n  private interval;\n\n  private listenerRegistered = false;\n\n  private subscription = new Subscription();\n\n  public labelAddField = this.i18n.getLocale().Editor.labelAddField;\n\n  private onChange: any = () => {};\n\n  private onTouched: any = () => {};\n\n  constructor(private i18n: I18nService,\n              private renderer: Renderer2,\n              private editorService: EditorService,\n              private sanitizer: DomSanitizer,\n              private cd: ChangeDetectorRef,\n              @Optional() @Self() public ngControl: NgControl) {\n    this.setControl();\n    this.fontCollection = [\n      {description: 'Arial', value: 'Arial'},\n      {description: 'Verdana', value: 'Verdana'},\n      {description: 'Calibri', value: 'Calibri'},\n      {description: 'Courier New', value: 'Courier New'},\n      {description: 'Georgia', value: 'Georgia'},\n      {description: 'Trebuchet MS', value: 'Trebuchet MS'},\n      {description: 'Bookman', value: 'Bookman'}\n    ];\n    this.fontSizeCollection = [\n      {description: '10', value: '1pt'},\n      {description: '20', value: '2pt'},\n      {description: '30', value: '3pt'},\n      {description: '40', value: '4pt'},\n      {description: '50', value: '5pt'},\n      {description: '60', value: '6pt'},\n      {description: '70', value: '7pt'}\n    ];\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.setContentFocus();\n    this.toolbarConfig = Object.assign(new ToolbarConfigModel(this.i18n), this.toolbarConfig);\n  }\n\n  handleFieldsPropagation() {\n    setTimeout(() => {\n      const fields = this.contentEditor.nativeElement.querySelectorAll('.ui-field');\n      for (const item of fields) {\n        this.preventPropagation(item);\n      }\n    }, 100);\n  }\n\n  alignContent(align) {\n    this.setContentFocus();\n    const element = this.cursorSelection.baseNode.parentNode;\n    const alignment = align === 'justifyFull' ? 'justify' : align.replace('justify', '').toLocaleLowerCase();\n    this.renderer.setStyle(element, 'text-align', alignment);\n    this.setCursorSelection();\n  }\n\n  setBold() {\n    this.setContentFocus();\n    document.execCommand('bold', false, null);\n    this.setCursorSelection();\n  }\n\n  setQuote() {\n    this.setContentFocus();\n    this.activeTools.blockQuote = !this.activeTools.blockQuote;\n    document.execCommand('formatBlock', false, this.activeTools.blockQuote ? 'blockquote' : 'div');\n    this.setCursorSelection();\n  }\n\n  setItalic() {\n    this.setContentFocus();\n    document.execCommand('italic', false, null);\n    this.setCursorSelection();\n  }\n\n  setUnorderedList() {\n    this.setContentFocus();\n    document.execCommand('insertUnorderedList', false, null);\n    this.setCursorSelection();\n  }\n\n  setOrderedList() {\n    this.setContentFocus();\n    document.execCommand('insertOrderedList', false, null);\n    this.setCursorSelection();\n  }\n\n  setImage($event) {\n    this.setContentFocus();\n    this.image.imageUrl = $event.imageUrl;\n    this.cursorSelection.getRangeAt(0).insertNode(this.createImageElement());\n    this.toggleImageBox();\n  }\n\n  setDescriptionLink() {\n    if (this.selectedContent) {\n      this.descriptionLink = this.anchorNodeCursor.baseNode.nodeValue.substring(this.selection.start, this.selection.end);\n      return;\n    }\n    this.descriptionLink = '';\n  }\n\n  addField( idField ) {\n    this.recoverSelection();\n    this.setContentFocus();\n    this.cursorSelection.getRangeAt(0).insertNode(this.createFieldText( idField ).nativeElement);\n    window.getSelection().collapseToEnd();\n    this.change();\n  }\n\n  addTag(value: string) {\n    this.setContentFocus();\n    this.cursorSelection.getRangeAt(0).insertNode(this.createHashTag(value).nativeElement);\n    window.getSelection().collapseToEnd();\n    this.change();\n  }\n\n  setLink($event) {\n    this.linkItself = $event.link;\n    this.descriptionLink = $event.description;\n    this.setContentFocus();\n    this.recoverSelection();\n    this.createElementLink();\n    this.toggleLinkBox();\n  }\n\n  setUnderline() {\n    this.setContentFocus();\n    document.execCommand('underline', false, null);\n    this.setCursorSelection();\n  }\n\n  setHighlight() {\n    this.wrapper.nativeElement.style.cursor = 'grabbing';\n    this.cursorHighlight = true;\n  }\n\n  onChangeColor($event) {\n    document.execCommand('foreColor', false, $event.hex);\n  }\n\n  onChangeFontSize($event) {\n    this.recoverSelection();\n    this.setContentFocus();\n    this.fontSize = $event;\n    document.execCommand('fontSize', null, this.fontSize);\n  }\n\n  onChangeFont($event) {\n    this.recoverSelection();\n    this.setContentFocus();\n    this.font = $event;\n    document.execCommand('fontName', false, this.font);\n  }\n\n  onMouseUp() {\n    this.toggleLink = false;\n    this.touch();\n    this.setAnchorNode();\n    if (this.cursorHighlight) {\n      document.execCommand('hiliteColor', false, '#f0ef99');\n      this.cursorHighlight = false;\n      this.resetCursor();\n    }\n  }\n\n  onKeyDownSave(event) {\n    if (this.contentEditor.nativeElement.innerHTML.length === 0 || this.contentEditor.nativeElement.innerHTML === '<br>') {\n      this.writeValue('<div><br></div>');\n    }\n    if ((event.ctrlKey || event.metaKey) && event.which === 83) {\n      event.preventDefault();\n      this.save();\n      return false;\n    }\n  }\n\n  toggleLinkBox() {\n    this.toggleLink = !this.toggleLink;\n  }\n\n  toggleImageBox() {\n    this.toggleImage = !this.toggleImage;\n  }\n\n  save() {\n    this.saveContent.emit(this.contentEditor.nativeElement.innerHTML);\n    this.showSavedMessage();\n  }\n\n  setCursorSelection() {\n    this.cursorSelection = window.getSelection();\n    if (this.cursorSelection.baseNode) {\n      this.handleActiveTools();\n    }\n  }\n\n  private showSavedMessage() {\n    this.saved = true;\n    clearInterval(this.interval);\n    this.interval = setInterval(() => {\n      this.saved = false;\n    }, 1000);\n  }\n\n  private handleActiveTools() {\n    this.handleClosestBold();\n    this.handleClosestItalic();\n    this.handleClosestUnderline();\n    this.handleColorParent();\n    this.handleListUnordered();\n    this.handleListOrdered();\n    this.handleAlignLeft();\n    this.handleAlignCenter();\n    this.handleAlignRight();\n    this.handleAlignJustify();\n    this.handleFontSize();\n    this.handleFontName();\n    this.handleBlockQuote();\n  }\n\n  private handleFontName() {\n    this.isClosestParentElement('font') && this.hasFontFace()\n      ? this.setFontNodeSelected() : this.setDefaultFont();\n  }\n\n  private hasFontFace() {\n    return this.cursorSelection.baseNode.parentNode.closest('font').getAttribute('face');\n  }\n\n  private hasFontSize() {\n    return this.cursorSelection.baseNode.parentNode.closest('font').getAttribute('size');\n  }\n\n  private setFontNodeSelected() {\n    this.font = this.cursorSelection.baseNode.parentNode.closest('font').getAttribute('face');\n  }\n\n  private setDefaultFont() {\n    this.font = 'Arial';\n  }\n\n  private setFontSizeNodeSelected() {\n    this.fontSize = this.cursorSelection.baseNode.parentNode.closest('font').getAttribute('size') + 'pt';\n  }\n\n  private setDefaultFontSize() {\n    this.fontSize = '3pt';\n  }\n\n  setAnchorNode() {\n    this.anchorNodeCursor = document.getSelection();\n    this.selection['start'] = this.anchorNodeCursor.baseOffset;\n    this.selection['end'] = this.anchorNodeCursor.extentOffset;\n    this.selection['baseNode'] = this.anchorNodeCursor.baseNode;\n    this.selection['extentNode'] = this.anchorNodeCursor.extentNode;\n    this.handleNoSelection();\n  }\n\n  private handleNoSelection() {\n    this.selectedContent = this.hasSelection();\n  }\n\n  private hasSelection() {\n    return (this.selection.end > 0) && (this.selection.end > this.selection.start);\n  }\n\n  private handleFontSize() {\n    this.isClosestParentElement('font') && this.hasFontSize()\n      ? this.setFontSizeNodeSelected() : this.setDefaultFontSize();\n  }\n\n  private handleAlignLeft() {\n    this.activeTools.alignLeft = this.hasStyleParentElement('left');\n  }\n\n  private handleAlignCenter() {\n    this.activeTools.alignCenter = this.hasStyleParentElement('center');\n  }\n\n  private handleAlignRight() {\n    this.activeTools.alignRight = this.hasStyleParentElement('right');\n  }\n\n  private handleAlignJustify() {\n    this.activeTools.alignJustify = this.hasStyleParentElement('justify');\n  }\n\n  private handleListOrdered() {\n    this.activeTools.listOrdered = this.isClosestParentElement('ol');\n  }\n\n  private handleListUnordered() {\n    this.activeTools.listUnordered = this.isClosestParentElement('ul');\n  }\n\n  private handleColorParent() {\n    const getElementFont = this.cursorSelection.baseNode.parentNode.closest('font');\n    getElementFont ? this.setColorWithColorElement(getElementFont) : this.colorSelected = '#000000';\n  }\n\n  private setColorWithColorElement(getElementFont) {\n    this.colorSelected = getElementFont.getAttribute('color');\n  }\n\n  private handleClosestBold() {\n    this.activeTools.bold = this.isClosestParentElement('b');\n  }\n\n  private handleClosestUnderline() {\n    this.activeTools.underline = this.isClosestParentElement('u');\n  }\n\n  private handleClosestItalic() {\n    this.activeTools.italic = this.isClosestParentElement('i');\n  }\n\n  private handleBlockQuote() {\n    this.activeTools.blockQuote = this.isClosestParentElement('blockquote');\n  }\n\n  private hasStyleParentElement(alignment: string) {\n    const element = this.cursorSelection.baseNode.parentNode;\n    if (element.attributes.length > 0) {\n      return element.attributes[0].value.includes(alignment);\n    }\n    return false;\n  }\n\n  private isClosestParentElement(element) {\n    return !!this.cursorSelection.baseNode.parentNode.closest(element);\n  }\n\n  private preventPropagation(fieldText) {\n    this.listenerRegistered = true;\n    fieldText.addEventListener('input', (e) => {\n      e.target.setAttribute('value', e.target.value);\n    });\n    fieldText.addEventListener('keydown', (e) => {\n      e.stopPropagation();\n    });\n  }\n\n  private createFieldText( idField ) {\n    const fieldText = new ElementRef(this.renderer.createElement('input'));\n    this.renderer.addClass(fieldText.nativeElement, 'ui-field');\n    this.preventPropagation(fieldText.nativeElement);\n    fieldText.nativeElement.setAttribute('id', idField );\n    fieldText.nativeElement.placeholder = '';\n    return fieldText;\n  }\n\n  private createHashTag(value: string) {\n    const hashTag = new ElementRef(this.renderer.createElement('span'));\n    this.renderer.addClass(hashTag.nativeElement, 'ui-hashtag');\n    hashTag.nativeElement.innerText = value;\n    hashTag.nativeElement.setAttribute('id', value);\n    hashTag.nativeElement.setAttribute('contenteditable', false);\n    return hashTag;\n  }\n\n  private createImageElement() {\n    const imageHTML = new ElementRef(this.renderer.createElement('img'));\n    this.renderer.addClass(imageHTML.nativeElement, 'ui-image-editor');\n    imageHTML.nativeElement.setAttribute('src', this.image.imageUrl);\n    return imageHTML.nativeElement;\n  }\n\n  private createElementLink() {\n    const link = new ElementRef(this.renderer.createElement('a'));\n    this.renderer.addClass(link.nativeElement, 'ui-link');\n    link.nativeElement.setAttribute('src', this.linkItself);\n    link.nativeElement.setAttribute('text', this.descriptionLink);\n    link.nativeElement.setAttribute('target', '_blank');\n    this.handleAddElementRange(link);\n  }\n\n  private handleAddElementRange(link) {\n    this.selectedContent ? window.getSelection().getRangeAt(0).surroundContents(link.nativeElement) :\n      window.getSelection().getRangeAt(0).insertNode(link.nativeElement);\n  }\n\n  private recoverSelection() {\n    const selection = document.getSelection();\n    const range = document.createRange();\n    if (this.selection.baseNode) {\n      range.setStart(this.selection.baseNode, this.selection.start);\n      range.setEnd(this.selection.extentNode, this.selection.end);\n      selection.removeAllRanges();\n      selection.addRange(range);\n    }\n  }\n\n  private recoverCursorPosition() {\n    setTimeout(() => {\n      const sel = document.getSelection();\n      const range = new Range();\n      if (this.selection.baseNode) {\n        range.selectNodeContents(this.contentEditor.nativeElement);\n        range.collapse(false);\n        sel.removeAllRanges();\n        sel.addRange(range);\n      }\n    }, 1);\n  }\n\n  private resetCursor() {\n    this.wrapper.nativeElement.style.cursor = 'auto';\n  }\n\n  setContentFocus() {\n    this.contentEditor.nativeElement.focus();\n  }\n\n  clearContent() {\n    this.writeValue('');\n    this.save();\n  }\n\n  writeValue(value: any): void {\n    this.content = this.sanitizer.bypassSecurityTrustHtml(value);\n    this.handleFieldsPropagation();\n    this.recoverCursorPosition();\n    this.cd.detectChanges();\n\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  touch() {\n    this.onTouched(this.contentEditor.nativeElement.innerHTML);\n  }\n\n  change() {\n    this.setCursorSelection();\n    this.onChange(this.contentEditor.nativeElement.innerHTML);\n  }\n\n  ngOnChanges(data: SimpleChanges) {\n  }\n\n}\n","<div class=\"ui-editor\">\n  <tl-label *ngIf=\"label\" [labelTitle]=\"label\" [labelSize]=\"labelSize\" [labelPlacement]=\"labelPlacement\"></tl-label>\n  <div [class]=\"'ui-editor-wrapper ' + color\" #wrapper>\n    <tl-editor-header [toolbarConfig]=\"toolbarConfig\"\n                      [activeTools]=\"activeTools\"\n                      [cursorHighlight]=\"cursorHighlight\"\n                      [labelAddField]=\"labelAddField\"\n                      [fields]=\"fields\"\n                      [color]=\"color\"\n                      [colorSelected]=\"colorSelected\"\n                      [fontSelected]=\"font\"\n                      [fontSizeSelected]=\"fontSize\"\n                      [fontCollection]=\"fontCollection\"\n                      [fontSizeCollection]=\"fontSizeCollection\"\n                      (changeColor)=\"onChangeColor($event)\"\n                      (changeFont)=\"onChangeFont($event)\"\n                      (changeFontSize)=\"onChangeFontSize($event)\"\n                      (clickBold)=\"setBold()\"\n                      (clickItalic)=\"setItalic()\"\n                      (clickHighlight)=\"setHighlight()\"\n                      (clickOrderedList)=\"setOrderedList()\"\n                      (clickAlignContent)=\"alignContent($event)\"\n                      (clickLink)=\"toggleLinkBox(); setDescriptionLink()\"\n                      (clickUnorderedList)=\"setUnorderedList()\"\n                      (clickUnderline)=\"setUnderline()\"\n                      (clickImage)=\"toggleImageBox()\"\n                      (clickField)=\"addField($event)\"\n                      (clickQuote)=\"setQuote()\"\n                      (clickSave)=\"save()\"\n                      (clickClear)=\"clearContent()\">\n    </tl-editor-header>\n    <div #contentEditor\n         class=\"ui-editor-content\"\n         [class.disabled]=\"disabled\"\n         [style.height]=\"height\"\n         (input)=\"change()\"\n         (focusout)=\"setAnchorNode()\"\n         (click)=\"setCursorSelection()\"\n         (focus)=\"setCursorSelection()\"\n         (keydown.enter)=\"$event.stopPropagation()\"\n         (keydown.ArrowUp)=\"$event.stopPropagation()\"\n         (keydown.ArrowDown)=\"$event.stopPropagation()\"\n         (mouseup)=\"onMouseUp()\"\n         [attr.contenteditable]=\"editable || !disabled\"\n         [innerHTML]=\"content\">\n    </div>\n    <div class=\"ui-saved-content-message\" [@enterAnimation]=\"saved\" *ngIf=\"saved\">\n      <i class=\"ion-ios-checkmark-outline\"></i>\n      <span>Saved !</span>\n    </div>\n    <tl-editor-link-box [descriptionLink]=\"descriptionLink\"\n                        *ngIf=\"toggleLink && !toggleImage\"\n                        (onSetLink)=\"setLink($event)\"\n                        (onToggleLink)=\"toggleLinkBox()\">\n    </tl-editor-link-box>\n    <tl-editor-image-box *ngIf=\"toggleImage && !toggleLink\"\n                         [imageUrl]=\"image.imageUrl\"\n                         (onSetImage)=\"setImage($event)\"\n                         (onToggleImage)=\"toggleImageBox()\">\n    </tl-editor-image-box>\n    <div class=\"ui-editor-footer\" *ngIf=\"tags.length > 0\">\n      <div *ngFor=\"let item of tags\" (click)=\"addTag(item)\" class=\"ui-hashtag\">{{ item }}</div>\n    </div>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { TlForm } from './form';\nimport { DialogService } from '../dialog/dialog.service';\nimport { FormSubmitDirective } from './form-submit.directive';\n\nimport { InputModule } from '../input/index';\nimport { DropDownListModule } from '../dropdownlist/index';\nimport { ButtonModule } from '../button/index';\nimport { ModalModule } from '../modal/index';\nimport { ShortcutModule } from '../shortcut/index';\nimport { LoaderModule } from '../loader/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    LoaderModule,\n    ButtonModule,\n    FormsModule,\n    ReactiveFormsModule,\n    InputModule,\n    DropDownListModule,\n    ShortcutModule,\n    ModalModule\n  ],\n  declarations: [\n    TlForm,\n    FormSubmitDirective,\n  ],\n  exports: [\n    TlForm,\n    FormSubmitDirective\n  ],\n  providers: [\n    DialogService,\n  ],\n} )\nexport class FormModule {\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlEditor } from './editor';\nimport { TlEditorLinkBox } from './parts/editor-link-box/editor-link-box';\nimport { TlEditorImageBox } from './parts/editor-image-box/editor-image-box';\n\nimport { DropDownListModule } from '../dropdownlist/index';\nimport { ButtonModule } from '../button/index';\nimport { FormModule } from '../form/index';\nimport { InputModule } from '../input/index';\nimport { TooltipModule } from '../tooltip/index';\nimport { ColorPickerModule } from '../colorpicker/index';\nimport { InternalsModule } from '../internals/index';\nimport { IconsModule } from '../icons/index';\nimport { TlEditorHeader } from './parts/editor-header/editor-header';\nimport {EditorService} from './services/editor.service';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    DropDownListModule,\n    FormsModule,\n    ButtonModule,\n    TooltipModule,\n    FormModule,\n    InputModule,\n    ColorPickerModule,\n    InternalsModule,\n    IconsModule,\n  ],\n  declarations: [\n    TlEditor,\n    TlEditorLinkBox,\n    TlEditorImageBox,\n    TlEditorHeader,\n  ],\n  exports: [\n    TlEditor,\n    TlEditorLinkBox,\n    TlEditorImageBox,\n    TlEditorHeader\n  ],\n  providers: [EditorService]\n} )\nexport class EditorModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostListener, OnInit} from '@angular/core';\nimport {ImageLightboxInterface} from './interfaces/image.interface';\nimport {DomSanitizer} from '@angular/platform-browser';\n\n@Component({\n  selector: 'tl-lightbox',\n  templateUrl: './lightbox.html',\n  styleUrls: ['./lightbox.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TlLightbox implements OnInit {\n\n  public isOpen = true;\n\n  public files: ImageLightboxInterface[] = [];\n\n  public file: ImageLightboxInterface;\n\n  public close = new EventEmitter();\n\n  public zoomIn = false;\n\n  public transform = null;\n\n  @HostListener('click')\n  onClick() {\n    this.close.emit();\n  }\n\n  constructor( private changes: ChangeDetectorRef, private sanitizer: DomSanitizer ) {}\n\n  ngOnInit() {}\n\n  init( images: ImageLightboxInterface[], current ) {\n    this.files = images;\n    this.file = !current ? images[0] : current;\n    this.changes.detectChanges();\n  }\n\n  zoomInOut() {\n    this.zoomIn = !this.zoomIn;\n    if ( !this.zoomIn ) {\n      this.transform = `translate(0, 0) scale(1)`;\n    } else {\n      this.transform = 'scale(2)';\n    }\n  }\n\n  previous($event) {\n    this.stopEvent($event);\n    if ( this.hasImagesOnRight() ) {\n      this.file = this.files.find( ( item ) => ((this.file.index - 1) === item.index));\n    }\n  }\n\n  next( $event ) {\n    this.stopEvent($event);\n    if ( this.hasImagesOnLeft() ) {\n      this.file = this.files.find( ( item ) => ((this.file.index + 1) === item.index));\n    }\n  }\n\n  mouseMove($event) {\n    const target = { x: window.innerWidth / 2, y: window.innerHeight / 2 };\n    if ( this.zoomIn ) {\n      this.transform = `translate(${ -($event.x - target.x)}px, ${ - ($event.y - target.y)}px) scale(${ this.zoomIn ? '2' : '1'})`;\n    }\n  }\n\n  hasImagesOnLeft() {\n    return this.file.index < this.files.length - 1;\n  }\n\n  hasImagesOnRight() {\n    return this.file.index > 0;\n  }\n\n  selectImage( $event, item ) {\n    this.stopEvent($event);\n    this.file = item;\n  }\n\n  stopEvent( $event ) {\n    $event.stopPropagation();\n  }\n\n  bypassFile( file ) {\n    return this.sanitizer.bypassSecurityTrustResourceUrl( file );\n  }\n}\n","<div class=\"light-box-container\"\n     (click)=\"stopEvent($event)\"\n     [ngClass]=\"zoomIn ? 'zoomIn': 'zoomOut'\">\n  <img class=\"image\"\n       *ngIf=\"file.type === 'image/png' || file.type === 'image/jpeg' || file.type === 'image/bmp' || file.type === 'image/jpg' || file.type === 'image'\"\n       [ngStyle]=\"{ 'transform': transform, 'cursor': zoomIn ? 'zoom-out' : 'zoom-in' }\"\n       [src]=\"bypassFile(file?.file)\" (click)=\"zoomInOut()\" (mousemove)=\"mouseMove($event)\">\n  <iframe *ngIf=\"file.type === 'application/pdf'\" class=\"thumbnail-image\" style=\"border: none;\"  width=\"100%\" height=\"800px\"\n          [src]=bypassFile(file?.file)> </iframe>\n  <div class=\"close-button\" (click)=\"close.emit()\">\n    <tl-icon [lib]=\"'ion'\" [style]=\"'ios'\">close-circle</tl-icon>\n  </div>\n</div>\n\n\n<div class=\"image-info\">\n  <h3 *ngIf=\"file?.title\">{{ file?.title }}</h3>\n  <p>{{ file?.description}}</p>\n</div>\n<div class=\"light-box-controls\">\n  <tl-icon class=\"arrow left\" *ngIf=\"files.length > 1 && hasImagesOnRight()\" (click)=\"previous($event)\" [lib]=\"'ion'\"\n           [style]=\"'ios'\">arrow-dropleft-circle\n  </tl-icon>\n  <tl-icon class=\"arrow right\" *ngIf=\"files.length > 1 && hasImagesOnLeft()\" (click)=\"next($event)\" [lib]=\"'ion'\"\n           [style]=\"'ios'\">arrow-dropright-circle\n  </tl-icon>\n</div>\n<div class=\"footer-images\" (click)=\"stopEvent($event)\">\n  <ng-container *ngFor=\"let item of files\">\n    <ng-container *ngIf=\"item.type === 'image/png' || item.type === 'image/jpeg' || item.type === 'image/bmp' || item.type === 'image/jpg' || item.type === 'image'\">\n      <img class=\"thumbnail\" [class.selected]=\"item?.index === file?.index\"\n           (click)=\"selectImage($event, item)\" [src]=\"item?.file\">\n    </ng-container>\n    <ng-container *ngIf=\"item.type === 'application/pdf'\" >\n      <div class=\"thumbnail\" [class.selected]=\"item?.index === file?.index\" (click)=\"selectImage($event, item)\">\n        <tl-icon  style=\"margin-right: 5px\" [lib]=\"'fa'\" [style]=\"'fas'\" [color]=\"'#ec7e7e'\" [size]=\"'40px'\">file-pdf</tl-icon>\n      </div>\n    </ng-container>\n  </ng-container>\n</div>\n","import {ComponentRef, Injectable, OnDestroy} from '@angular/core';\nimport {Overlay, OverlayPositionBuilder, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {Subscription} from 'rxjs';\nimport {TlLightbox} from '../lightbox';\n\n@Injectable()\nexport class LightboxService implements OnDestroy {\n\n  private lightBox: ComponentRef<TlLightbox>;\n\n  private subscription: Subscription = new Subscription();\n\n  constructor(private overlayPositionBuilder: OverlayPositionBuilder,\n              private overlay: Overlay) {}\n\n  private overlayRef: OverlayRef;\n\n  create( images, current ) {\n    this.close();\n    const positionStrategy = this.overlay.position().global();\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      width: '100vw',\n      height: '100vh',\n      backdropClass: 'cdk-darker-overlay-backdrop',\n      scrollStrategy: this.overlay.scrollStrategies.close(),\n      disposeOnNavigation: false,\n      hasBackdrop: true\n    });\n    const menuPortal = new ComponentPortal( TlLightbox );\n    this.lightBox = this.overlayRef.attach( menuPortal );\n    this.lightBox.instance.init( images, current );\n\n    this.listenBackDropClick();\n  }\n\n  listenBackDropClick() {\n    if (this.lightBox) {\n      this.subscription.add( this.lightBox.instance.close.subscribe(() => {\n        this.close();\n      }));\n      this.subscription.add(this.overlayRef.backdropClick().subscribe(() => {\n        this.close();\n      }));\n    }\n  }\n\n  close() {\n    if (this.overlayRef) {\n      this.overlayRef.dispose();\n      this.overlayRef = null;\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlLightbox } from './lightbox';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { LightboxService } from './services/lightbox.service';\nimport { IconsModule } from '../icons/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    FormsModule,\n    IconsModule\n  ],\n  declarations: [\n    TlLightbox\n  ],\n  exports: [\n    TlLightbox\n  ],\n  providers: [ LightboxService ]\n})\nexport class LightboxModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Input, Component, OnDestroy, OnChanges, SimpleChanges, ViewChild, ElementRef, ChangeDetectorRef\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\n\n@Component( {\n  selector: 'tl-simple-sub-menu',\n  templateUrl: './simple-sub-menu.html',\n  styleUrls: [ './simple-sub-menu.scss' ],\n} )\nexport class TlSimpleSubMenu implements OnChanges, OnDestroy {\n\n  public icon = '';\n\n  public label = '';\n\n  public subItem = '';\n\n  public items = [];\n\n  public docked = false;\n\n  public width;\n\n  public itemHeight;\n\n  public dockWidth;\n\n  public link;\n\n  public anchorElements = [];\n\n  private callBack = Function();\n\n  @ViewChild( 'subMenuList', {static: true} ) subMenuList: ElementRef;\n\n  constructor( private router: Router, private change: ChangeDetectorRef ) {}\n\n  setDataSubMenu( items ) {\n    this.items = items;\n    this.change.detectChanges();\n  }\n\n  setProperties( properties ) {\n    Object.keys( properties ).forEach( ( item ) => {\n      this[ item ] = properties[ item ];\n    } );\n  }\n\n  setAnchorElement( item, element ) {\n    if (item[this.subItem] && this.alreadyTaken(element).length === 0) {\n      this.anchorElements.push({'rootElement': element, 'subItems': item[this.subItem]});\n    }\n  }\n\n  isRouterActive(item) {\n    return this.router.url === item[this.link];\n  }\n\n  alreadyTaken(element) {\n    const anchor = this.anchorElements.filter((value) => {\n      return value.rootElement === element;\n    });\n    return anchor;\n  }\n\n  callbackListElement( $event, item ) {\n    $event.stopPropagation();\n    if ( item[ this.link ] ) {\n      return this.router.navigate( [ item[ this.link ] ], { queryParams: item['queryParams'] } );\n    }\n    if ( item[ 'callBack' ] ) {\n      this.callBack = item[ 'callBack' ];\n      this.callBack( $event );\n    }\n  }\n\n  getWidth() {\n    return Math.round(parseInt(this.width, 10) + 1) + 'px';\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {}\n\n  ngOnDestroy() {}\n\n}\n","<ul class=\"ui-simple-sub-menu-list\" [ngClass]=\"{'docked': docked}\"\n    [style.left]=\"getWidth()\"\n    [style.width]=\"width\"\n    [style.top]=\"'-' + itemHeight\" #subMenuList>\n  <li #elementList class=\"ui-simple-list-item\" [style.height]=\"itemHeight\"\n      [class.router-active]=\"isRouterActive(item)\"\n      [style.line-height]=\"itemHeight\"\n      (keydown.enter)=\"callbackListElement($event, item)\"\n      (click)=\"callbackListElement($event, item)\"\n      *ngFor=\"let item of items\">\n    <i [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" [class]=\"'icon ' + item[icon]\"></i>\n    <span [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" class=\"label\">{{item[label]}}</span>\n    <i [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" *ngIf=\"item[subItem]\" [ngClass]=\"{'anchor': setAnchorElement(item, elementList)}\"\n       class=\"ion ion-ios-arrow-forward icon\"></i>\n  </li>\n</ul>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, ElementRef, ViewChild, AfterContentInit, ChangeDetectorRef,\n} from '@angular/core';\n\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { Subject } from 'rxjs';\n\n\n\nimport { Router } from '@angular/router';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs/internal/operators';\nimport { TlAdvancedSubMenu } from './parts/advanced-sub-menu';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\n\n@Component( {\n  selector: 'tl-advanced-root-menu',\n  templateUrl: './advanced-root-menu.html',\n  styleUrls: [ './advanced-root-menu.scss' ],\n  animations: [\n    trigger(\n      'rootElementList', [\n        transition( ':enter', [\n          style( { transform: 'translateY(5%)', opacity: 0 } ),\n          animate('250ms', style({transform: 'translateY(0)', opacity: 1}))\n        ] ),\n        transition( ':leave', [\n          style( { transform: 'translateY(0)', opacity: 1 } ),\n          animate('250ms', style({transform: 'translateY(100%)', opacity: 0}))\n        ] )\n      ]\n    )\n  ],\n} )\nexport class TlAdvancedRootMenu implements AfterContentInit {\n\n  public icon = '';\n\n  public label = '';\n\n  public subItem = '';\n\n  public items = [];\n\n  public docked = false;\n\n  public width = '';\n\n  public dockWidth = '';\n\n  public group = '';\n\n  public charsToSearch = 0;\n\n  public topDislocation = 0;\n\n  public titleMenu = '';\n\n  public anchorElements = [];\n\n  public widthRootMenu = '';\n\n  public visibilityMenu = false;\n\n  public operationMode = '';\n\n  public topPosition = '';\n\n  public filterEmptyMessage = '';\n\n  public inputPlaceholder = '';\n\n  public itemHeight = '';\n\n  public rootItemHeight = '';\n\n  public groups = [];\n\n  public model: string;\n\n  public innerScrollWrapper = 0;\n\n  public maxHeight = '';\n\n  public callBack = Function();\n\n  public nothingFound = false;\n\n  public onRootMenuLoad: Subject<boolean> = new Subject<boolean>();\n\n  public onChangeItems: Subject<boolean> = new Subject<boolean>();\n\n  private modelChanged: Subject<string> = new Subject<string>();\n\n  private filteredMenu = [];\n\n  private subMenuService;\n\n  private index = 0;\n\n  private link = '';\n\n  private listMenuElements;\n\n  @ViewChild( 'subMenuList', {static: true} ) subMenuList: ElementRef;\n\n  @ViewChild( 'wrapperItemsList', {static: true} ) wrapperItemsList: ElementRef;\n\n  @ViewChild( 'input', {static: true} ) inputElement: ElementRef;\n\n  @ViewChild( 'wrapperItems', {static: true} ) wrapperItems: ElementRef;\n\n  constructor( private change: ChangeDetectorRef, private router: Router ) {\n    this.modelChanged.pipe(\n      debounceTime( 200 ),\n      distinctUntilChanged( ( oldValue, newValue ) => oldValue === newValue ),\n      filter( ( searchTerm ) => {\n        if ( this.isTermGreaterThanChars( searchTerm ) ) { return true;\n        } else if ( this.isTermLengthEqualsZero( searchTerm ) ) {\n          this.rebuildMenu();\n          return false;\n        }\n        return false;\n      }),\n    ).subscribe( model => this.filterMenuItem( model ) );\n  }\n\n  ngAfterContentInit() {\n    this.onRootMenuLoad.next( true );\n    this.setTopPosition();\n    this.getListMenuElements();\n  }\n\n  setDataSubMenu( items ) {\n    this.items = items;\n    this.filterCategory( this.items );\n    this.change.detectChanges();\n  }\n\n  setProperties( properties ) {\n    Object.keys( properties ).forEach( ( item ) => {\n      this[ item ] = properties[ item ];\n    } );\n  }\n\n  getListMenuElements() {\n    this.listMenuElements = this.subMenuList.nativeElement.getElementsByClassName( 'ng-trigger-rootElementList' );\n  }\n\n  isTermLengthEqualsZero( searchTerm ) {\n    return String( searchTerm ).length === 0;\n  }\n\n  isTermGreaterThanChars( searchTerm ) {\n    return String( searchTerm ).length >= this.charsToSearch;\n  }\n\n  filterCategory( array ) {\n    this.groups = [];\n    array.forEach( ( value ) => {\n      if ( !this.existGroup( value.category ) ) {\n        this.groups.push( { group: value.category, items: this.getItemsCategory( value.category, array ) } );\n      }\n    } );\n  }\n\n  changeInputValue( value ) {\n    this.modelChanged.next( value.trim() );\n  }\n\n  filterMenuItem( value ) {\n    this.filteredMenu = [];\n    this.items.forEach( ( menu ) => {\n      if ( this.mathWithTerm( menu, value ) && !menu[ this.subItem ] ) {\n        this.filteredMenu.push( menu );\n      }\n      if ( menu[ this.subItem ] ) {\n        this.filterSubItem( menu[ this.subItem ], value, menu );\n      }\n    } );\n    this.handleDataFiltered();\n  }\n\n  handleDataFiltered() {\n    this.nothingFound = this.hasDataFound();\n    this.filterCategory( this.filteredMenu );\n    this.change.detectChanges();\n  }\n\n  mathWithTerm( menu, value ) {\n    return menu[ this.label ].toLowerCase().substr( 0, value.length ).includes( value.toLowerCase() );\n  }\n\n  hasDataFound() {\n    return this.filteredMenu.length === 0;\n  }\n\n  close() {\n    this.visibilityMenu = false;\n  }\n\n  rebuildMenu() {\n    this.nothingFound = false;\n    this.subMenuService.resetAdvancedMenu();\n    this.subMenuService.createAdvancedMenu();\n    this.setDataSubMenu( this.items );\n    this.onChangeItems.next( true );\n    this.setInputFocus();\n  }\n\n  onArrowDown( $event ) {\n    $event.preventDefault();\n    if ( this.isFocusInput() ) {\n      this.index = 0;\n      this.setFocusElement();\n      return;\n    }\n    if ( this.existListElement( this.index + 1 ) ) {\n      this.index++;\n      this.setFocusElement();\n    }\n  }\n\n  onArrowLeft( $event ) {\n    $event.preventDefault();\n  }\n\n  onArrowRight( $event, element ) {\n    $event.stopPropagation();\n    if ( this.isContentMath( element ).length > 0 ) {\n      this.isContentMath( element )[ 0 ].subMenu.toggleVisibility();\n    }\n  }\n\n  onArrowUp( $event ) {\n    $event.preventDefault();\n    if ( this.isFocusInput() ) {\n      return;\n    }\n    if ( this.existListElement( this.index - 1 ) ) {\n      this.index--;\n      return this.listMenuElements[ this.index ].focus();\n    }\n    this.setInputFocus();\n  }\n\n  onScrollWrapper() {\n    this.innerScrollWrapper = this.wrapperItemsList.nativeElement.scrollTop;\n    this.closeAllSubMenus();\n  }\n\n  onHoverSubMenu( element ) {\n    if ( !this.isOperationModeHover() ) {\n      return;\n    }\n    const mathContent = this.isContentMath( element );\n    if ( mathContent.length > 0 ) {\n      mathContent[ 0 ].subMenu.setPosition();\n      mathContent[ 0 ].subMenu.visibilitySubMenu = true;\n    }\n  }\n\n  onLeaveSubMenu( element ) {\n    if ( !this.isOperationModeHover() ) {\n      return;\n    }\n    const mathContent = this.isContentMath( element );\n    if ( mathContent.length > 0 ) {\n      mathContent[ 0 ].subMenu.setPosition();\n      mathContent[ 0 ].subMenu.visibilitySubMenu = false;\n    }\n  }\n\n  isOperationModeHover() {\n    return this.operationMode === 'hover';\n  }\n\n  closeAllSubMenus() {\n    this.subMenuService.getSubMenus().forEach( ( item ) => {\n      (<TlAdvancedSubMenu>item.instance).close();\n    } );\n  }\n\n  setFocusElement() {\n    this.listMenuElements[ this.index ].focus();\n  }\n\n  existListElement( index ) {\n    return this.listMenuElements[ index ];\n  }\n\n  isFocusInput() {\n    return document.activeElement === this.inputElement.nativeElement;\n  }\n\n  callbackListElement( $event, item ) {\n    $event.stopPropagation();\n    if ( item[ this.link ] ) {\n      this.visibilityMenu = false;\n      return this.router.navigate( [ item[ this.link ] ], { queryParams: item['queryParams'] } );\n    }\n    this.handleCallbackItem( item, $event );\n  }\n\n  handleCallbackItem( item, $event ) {\n    if ( item[ 'callBack' ] ) {\n      this.callBack = item[ 'callBack' ];\n      this.callBack( $event );\n      this.visibilityMenu = false;\n    }\n  }\n\n  filterSubItem( array, value, menu ) {\n    array.forEach( ( submenu ) => {\n      if ( this.mathWithTerm( submenu, value ) && !submenu[ this.subItem ] ) {\n        this.filteredMenu.push( submenu );\n      }\n      if ( submenu[ this.subItem ] ) {\n        this.filterSubItem( submenu[ this.subItem ], value, menu );\n      }\n    } );\n  }\n\n  getItemsCategory( category, array ) {\n    return array.filter( ( value2 ) => {\n      return value2.category === category;\n    } );\n  }\n\n  existGroup( category ) {\n    for ( const item of this.groups ) {\n      if ( item.group === category ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  setAnchorElement( item, element ) {\n    if ( item[ this.subItem ] && this.alreadyTaken( element ).length === 0 ) {\n      this.anchorElements.push( {\n        'rootElement': element,\n        'subItems': item[ this.subItem ],\n        'subMenu': null\n      } );\n    }\n  }\n\n  toggleSubMenu( element, subItem, $event ) {\n    if ( !subItem ) {\n      return;\n    }\n    if ( this.isTargetEqualsElement( element, $event.target )\n      || this.isTargetListElement( element, $event.target ) ) {\n      this.closeAllSubMenus();\n      this.isContentMath( element )[ 0 ].subMenu.toggleVisibility();\n    }\n  }\n\n  isTargetEqualsElement( element, target ) {\n    return element === target;\n  }\n\n  isContentMath( element ) {\n    return this.anchorElements.filter( ( value, index, array ) => {\n      return value[ 'rootElement' ] === element;\n    } );\n  }\n\n  isTargetListElement( element, target ) {\n    for ( const item of element.children ) {\n      if ( item === target ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  alreadyTaken( element ) {\n    return this.anchorElements.filter( ( value ) => {\n      return value.rootElement === element;\n    } );\n  }\n\n  setMenuServiceInstance( menuService ) {\n    this.subMenuService = menuService;\n  }\n\n  setInputFocus() {\n    setTimeout( () => {\n      this.inputElement.nativeElement.focus();\n    }, 100 );\n  }\n\n  getWidth() {\n    const border = 1;\n    return Math.round( parseInt( this.width, 10 ) + border ) + 'px';\n  }\n\n  toggleVisibility() {\n    this.visibilityMenu = !this.visibilityMenu;\n    if ( this.visibilityMenu ) {\n      this.setInputFocus();\n    }\n  }\n\n  setTopPosition() {\n    this.topPosition = '-' + this.topDislocation + 'px';\n  }\n\n\n}\n","<ul #list class=\"ui-advanced-sub-menu-list\" [@rootElementList]=\"true\"\n    [style.visibility]=\"visibilityMenu ? 'visible' : 'hidden'\"\n    [style.opacity]=\"visibilityMenu ? '1' : '0'\"\n    (click)=\"$event.stopPropagation()\"\n    [ngClass]=\"{'docked': docked}\"\n    [style.left]=\"getWidth()\"\n    [style.maxHeight]=\"maxHeight\"\n    [style.width]=\"widthRootMenu\"\n    [style.top]=\"topPosition\" #subMenuList>\n\n  <div class=\"header-advanced-menu\">\n    <div class=\"ui-header-title\">\n      <i class=\"fas fa-bars icon-header\"></i>\n      <span class=\"title-header\">{{titleMenu}}</span>\n    </div>\n    <div class=\"wrapper-search-input\">\n      <span><i class=\"ion ion-ios-search\"></i></span>\n      <input #input type=\"text\"\n             (keydown.arrowdown)=\"onArrowDown($event)\"\n             (keydown.escape)=\"close()\"\n             (keydown.arrowup)=\"onArrowUp($event)\"\n             [ngModel]=\"model\" (keyup)=\"changeInputValue($event.target.value)\" [placeholder]=\"inputPlaceholder\">\n    </div>\n  </div>\n\n  <div class=\"ui-wrapper-not-found\"\n       *ngIf=\"nothingFound\"\n       [tlBlockui]=\"nothingFound\"\n       [blockuiConfig]=\"{'spin': false, 'icon': 'ion ion-md-sad', 'message': filterEmptyMessage}\">\n  </div>\n\n  <div class=\"ui-wrapper-items\"\n       [style.width]=\"widthRootMenu\"\n       (scroll)=\"onScrollWrapper()\"\n       [style.maxHeight]=\"'calc(' + maxHeight + ' - 100px)'\" #wrapperItemsList>\n    <div class=\"ui-subitem-group\" *ngFor=\"let itemGroup of groups\">\n      <div class=\"ui-label-group\" (click)=\"$event.stopPropagation()\"\n           *ngIf=\"itemGroup.group\">{{itemGroup.group}}\n      </div>\n      <div class=\"ui-label-group\" (click)=\"$event.stopPropagation()\" *ngIf=\"!itemGroup.group\">Outros</div>\n      <li #elementList\n          [@rootElementList]=\"true\"\n          (keydown.arrowdown)=\"onArrowDown($event)\"\n          (keydown.arrowup)=\"onArrowUp($event)\"\n          (keydown.arrowleft)=\"onArrowLeft($event)\"\n          (keydown.arrowright)=\"onArrowRight($event, elementList)\"\n          tabindex=\"-1\"\n          [ngClass]=\"{'ui-advanced-submenu-selected': isContentMath(elementList)[0]?.subMenu?.visibilitySubMenu && item[subItem] }\"\n          class=\"ui-advanced-list-item\"\n          (keydown.enter)=\"callbackListElement($event, item)\"\n          (mouseover)=\"onHoverSubMenu(elementList)\"\n          (mouseleave)=\"onLeaveSubMenu(elementList)\"\n          (click)=\"toggleSubMenu(elementList, item[subItem], $event); callbackListElement($event, item)\"\n          [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" *ngFor=\"let item of itemGroup.items\">\n        <i [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" [class]=\"'icon ' + item[icon]\"></i>\n        <span [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" class=\"label\">{{item[label]}}</span>\n\n        <div class=\"icon-sub-menu\" *ngIf=\"item[subItem]\"\n             [ngClass]=\"{'ui-advanced-submenu-opened' : isContentMath(elementList)[0]?.subMenu?.visibilitySubMenu }\">\n          <i [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" *ngIf=\"item[subItem]\"\n             [ngClass]=\"{'anchor': setAnchorElement(item, elementList)}\"\n             class=\"ion ion-ios-arrow-forward icon\"></i>\n        </div>\n      </li>\n    </div>\n  </div>\n</ul>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, ElementRef, ViewChild, AfterViewInit, ChangeDetectorRef, Renderer2\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TlAdvancedRootMenu } from '../advanced-root-menu';\nimport { RelativeWindowPosition } from '../../../../misc/relative-window-position.directive';\nimport { Subject } from 'rxjs';\nimport { SubMenuService } from '../../../services/submenu.service';\nimport {CdkVirtualScrollViewport} from '@angular/cdk/scrolling';\n\n@Component( {\n  selector: 'tl-advanced-sub-menu',\n  templateUrl: './advanced-sub-menu.html',\n  styleUrls: [ './advanced-sub-menu.scss' ],\n} )\nexport class TlAdvancedSubMenu implements AfterViewInit {\n\n  public icon = '';\n\n  public label = '';\n\n  public subItem = '';\n\n  public items = [];\n\n  public docked = false;\n\n  public width = '';\n\n  public dockWidth = '';\n\n  public itemHeight = '';\n\n  public group = '';\n\n  public operationMode = '';\n\n  public anchorElements = [];\n\n  public parentNode;\n\n  public callBack = Function();\n\n  public previousMenu;\n\n  public visibilitySubMenu = false;\n\n  public leftPosition = '';\n\n  public listMenuElements = [];\n\n  public fixed = false;\n\n  public menuService;\n\n  public onSubMenuLoad: Subject<boolean> = new Subject<boolean>();\n\n  private index = 0;\n\n  private link = '';\n\n  private relativeWindowPosition: RelativeWindowPosition = new RelativeWindowPosition();\n\n  @ViewChild( 'subMenuList', {static: true} ) subMenuList: ElementRef;\n\n  constructor( private router: Router, private change: ChangeDetectorRef, private renderer: Renderer2 ) {\n  }\n\n  ngAfterViewInit() {\n    this.onSubMenuLoad.next(true);\n    this.change.detectChanges();\n  }\n\n  setMenuService(menuService: SubMenuService) {\n    this.menuService = menuService;\n  }\n\n  setDataSubMenu( items ) {\n    this.items = items;\n  }\n\n  setProperties( properties ) {\n    Object.keys( properties ).forEach( ( item ) => {\n      this[ item ] = properties[ item ];\n    } );\n  }\n\n  setAnchorElement( item, element ) {\n    if ( item[ this.subItem ] && this.alreadyTaken( element ).length === 0 ) {\n      this.anchorElements.push( {\n        'rootElement': element,\n        'subItems': item[ this.subItem ],\n        'subMenu': null\n      } );\n    }\n  }\n\n  toggleSubMenu( element ) {\n    const mathContent = this.isContentMath( element );\n    if ( mathContent.length > 0 ) {\n      mathContent[ 0 ].subMenu.toggleVisibility( element );\n    }\n  }\n\n  onHoverSubMenu( element ) {\n    if (!this.isOperationModeHover()) {\n      return;\n    }\n    const mathContent = this.isContentMath( element );\n    if ( mathContent.length > 0 ) {\n      mathContent[ 0 ].subMenu.visibilitySubMenu = true;\n      mathContent[ 0 ].subMenu.setPosition();\n    }\n  }\n\n  onLeaveSubMenu( element ) {\n    if (!this.isOperationModeHover()) {\n      return;\n    }\n    const mathContent = this.isContentMath( element );\n    if ( mathContent.length > 0 ) {\n      mathContent[ 0 ].subMenu.visibilitySubMenu = false;\n    }\n  }\n\n  isOperationModeHover() {\n    return this.operationMode === 'hover';\n  }\n\n  isContentMath( element ) {\n    return this.anchorElements.filter( ( value, index, array ) => {\n      return value[ 'rootElement' ] === element;\n    } );\n  }\n\n  toggleVisibility( element? ) {\n    this.visibilitySubMenu = !this.visibilitySubMenu;\n    this.getListMenuElements();\n    this.handleNextSubMenuVisibility( element );\n    this.setPosition();\n  }\n\n  callbackListElement( $event, item ) {\n    $event.stopPropagation();\n    if ( item[ this.link ] ) {\n      this.menuService.closeMenu();\n      return this.router.navigate( [ item[ this.link ] ], { queryParams: item['queryParams'] } );\n    }\n    this.handleCallbackItem( item, $event );\n  }\n\n  handleCallbackItem( item, $event ) {\n    if ( item[ 'callback' ] ) {\n      this.callBack = item[ 'callback' ];\n      this.callBack( $event );\n      this.menuService.closeMenu();\n    }\n  }\n\n  handleNextSubMenuVisibility( element ) {\n    const nestedSubMenu = this.isContentMath( element )[ 0 ];\n    if ( !element || !nestedSubMenu ) {\n      return;\n    }\n    if ( nestedSubMenu.subItem.visibilitySubMenu ) {\n      nestedSubMenu.subItem.toggleVisibility();\n    }\n  }\n\n  getListMenuElements() {\n    for ( const child of this.subMenuList.nativeElement.children ) {\n      if ( child.nodeName === 'LI' ) {\n        this.listMenuElements.push( child );\n      }\n    }\n    this.setFocusFirstElement();\n  }\n\n  setFocusFirstElement() {\n    setTimeout( () => {\n      this.listMenuElements[ 0 ].focus();\n    }, 100 );\n  }\n\n  onArrowDown( $event ) {\n    $event.preventDefault();\n    $event.stopPropagation();\n    if ( this.listMenuElements[ this.index + 1 ] ) {\n      this.index++;\n      this.setFocusElement();\n    }\n  }\n\n  onArrowLeft() {\n    this.visibilitySubMenu = false;\n    if ( this.previousMenu instanceof TlAdvancedSubMenu ) {\n      setTimeout( () => {\n        this.previousMenu.setFocusElement();\n        return;\n      }, 100 );\n    }\n    this.previousMenu.setFocusElement();\n  }\n\n  onArrowRight( $event, element ) {\n    $event.stopPropagation();\n    if ( this.isContentMath( element ).length > 0 ) {\n      this.isContentMath( element )[ 0 ].subMenu.toggleVisibility();\n    }\n  }\n\n  onArrowUp( $event ) {\n    $event.preventDefault();\n    $event.stopPropagation();\n\n    if ( this.listMenuElements[ this.index - 1 ] ) {\n      this.index--;\n      this.setFocusElement();\n    }\n  }\n\n  setFocusElement() {\n    this.listMenuElements[ this.index ].focus();\n  }\n\n  alreadyTaken( element ) {\n    return this.anchorElements.filter( ( value ) => {\n      return value.rootElement === element;\n    } );\n  }\n\n  close() {\n    this.visibilitySubMenu = false;\n  }\n\n  setPosition() {\n    const dislocation = this.isPreviousRootMenu() ?\n      this.menuService.menu.instance.innerScrollWrapper : 0;\n    this.relativeWindowPosition.setRenderer(this.renderer);\n    this.relativeWindowPosition.setAnchorElement( this.parentNode );\n    this.relativeWindowPosition.setRelativeElement( this.subMenuList.nativeElement );\n    this.relativeWindowPosition.setPosition(dislocation);\n  }\n\n  isPreviousRootMenu() {\n    return this.previousMenu instanceof TlAdvancedRootMenu;\n  }\n\n}\n","<ul class=\"ui-advanced-sub-menu-list\"\n    [style.visibility]=\"visibilitySubMenu ? 'visible' : 'hidden'\"\n    [style.opacity]=\"visibilitySubMenu ? '1' : '0'\"\n    [ngClass]=\"{'docked': docked}\"\n    [style.width]=\"'fit-content'\"\n    [style.left]=\"leftPosition\" #subMenuList>\n  <li #elementList\n      [ngClass]=\"\n      {'ui-advanced-submenu-selected': isContentMath(elementList)[0]?.subMenu?.visibilitySubMenu && item[subItem] }\"\n      class=\"ui-advanced-submenu-list-item\"\n      tabindex=\"-1\"\n      (keydown.arrowdown)=\"onArrowDown( $event )\"\n      (keydown.arrowup)=\"onArrowUp( $event )\"\n      (keydown.arrowleft)=\"onArrowLeft( )\"\n      (keydown.arrowright)=\"onArrowRight($event, elementList)\"\n      (keydown.enter)=\"callbackListElement($event, item)\"\n      (mouseover)=\"onHoverSubMenu(elementList)\"\n      (mouseleave)=\"onLeaveSubMenu(elementList)\"\n      (click)=\"toggleSubMenu( elementList ); callbackListElement($event, item)\"\n      [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" *ngFor=\"let item of items\">\n    <i [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" [class]=\"'icon ' + item[icon]\"></i>\n    <span [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" class=\"label\">{{item[label]}}</span>\n\n    <div class=\"icon-sub-menu\" *ngIf=\"item[subItem]\"\n         [ngClass]=\"{'ui-advanced-submenu-opened' : isContentMath(elementList)[0]?.subMenu?.visibilitySubMenu }\">\n      <i [style.height]=\"itemHeight\" [style.line-height]=\"itemHeight\" *ngIf=\"item[subItem]\"\n         [ngClass]=\"{'anchor': setAnchorElement(item, elementList)}\"\n         class=\"ion ion-ios-arrow-forward icon\"></i>\n    </div>\n  </li>\n</ul>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { ComponentFactoryResolver, ComponentRef, Injectable, Renderer2, ViewContainerRef } from '@angular/core';\nimport { TlSimpleSubMenu } from '../parts/simple/simple-sub-menu';\nimport { TlAdvancedSubMenu } from '../parts/advanced/parts/advanced-sub-menu';\nimport { TlAdvancedRootMenu } from '../parts/advanced/advanced-root-menu';\n\n@Injectable()\nexport class SubMenuService {\n\n  private renderer: Renderer2;\n\n  private rootMenu;\n\n  private viewSubMenu: ViewContainerRef;\n\n  private viewRootMenu: ViewContainerRef;\n\n  private menu: ComponentRef<any>;\n\n  private subMenuItem: ComponentRef<any>;\n\n  private listComponents = [];\n\n  private subMenuData: any;\n\n  private properties;\n\n  private factoryMenu;\n\n  private subscription;\n\n  private anchorElement: HTMLElement;\n\n  private anchorRootElement;\n\n  private subMenuDataSource;\n\n  constructor( private compiler: ComponentFactoryResolver ) {\n  }\n\n  setRenderer( render: Renderer2 ) {\n    this.renderer = render;\n  }\n\n  setRootMenu( menu ) {\n    this.rootMenu = menu.element;\n  }\n\n  setViewSubMenu( view: ViewContainerRef ) {\n    this.viewSubMenu = view;\n  }\n\n  setViewRootMenu( view: ViewContainerRef ) {\n    this.viewRootMenu = view;\n  }\n\n  setRootHeightChange(height) {\n    if (this.menu) {\n      (<TlAdvancedRootMenu>this.menu.instance).maxHeight = height;\n    }\n  }\n\n  setSubMenuData( data, properties ) {\n    this.subMenuData = data;\n    this.properties = properties;\n  }\n\n  setAnchorRootElement( anchorRoot: HTMLElement ) {\n    this.anchorRootElement = anchorRoot;\n  }\n\n  setAnchorElement( anchor: HTMLElement ) {\n    this.anchorElement = anchor;\n  }\n\n  createAdvancedMenu() {\n    if ( !this.menu ) {\n      this.subMenuDataSource = this.subMenuData;\n      this.factoryMenu = this.compiler.resolveComponentFactory( TlAdvancedRootMenu );\n      this.menu = this.viewRootMenu.createComponent( this.factoryMenu );\n      (<TlAdvancedRootMenu>this.menu.instance).setProperties( this.properties );\n      (<TlAdvancedRootMenu>this.menu.instance).setDataSubMenu( this.subMenuData ? this.subMenuData : this.subMenuDataSource );\n      (<TlAdvancedRootMenu>this.menu.instance).setMenuServiceInstance( this );\n      this.listComponents.push( this.menu );\n    }\n    this.menu.instance.onRootMenuLoad.subscribe( () => {\n      this.renderer.appendChild( this.anchorRootElement, this.menu.location.nativeElement );\n      this.handleSubItemsAdvancedMenu();\n      return;\n    } );\n    this.handleLoadRootChangeItems();\n  }\n\n  handleLoadRootChangeItems() {\n    this.subscription = this.menu.instance.onChangeItems.subscribe( () => {\n      this.renderer.appendChild( this.anchorRootElement, this.menu.location.nativeElement );\n      this.handleSubItemsAdvancedMenu();\n    } );\n  }\n\n  createSimpleSubMenu() {\n    const componentFactory = this.compiler.resolveComponentFactory( TlSimpleSubMenu );\n    const subMenu = this.viewRootMenu.createComponent( componentFactory );\n    (<TlSimpleSubMenu>subMenu.instance).setProperties( this.properties );\n    (<TlSimpleSubMenu>subMenu.instance).setDataSubMenu( this.subMenuData );\n    this.subMenuItem = subMenu;\n    this.appendSubMenuAnchor( subMenu );\n    this.handleSubItemsSimpleSubMenu( subMenu );\n  }\n\n  createAdvancedSubMenu( nestedMenu? ) {\n    const componentFactory = this.compiler.resolveComponentFactory( TlAdvancedSubMenu );\n    const subMenu = this.viewSubMenu.createComponent( componentFactory );\n    this.handlePreviousSubMenu( subMenu, nestedMenu );\n    (<TlAdvancedSubMenu>subMenu.instance).setProperties( this.properties );\n    (<TlAdvancedSubMenu>subMenu.instance).setDataSubMenu( this.subMenuData );\n    (<TlAdvancedSubMenu>subMenu.instance).setMenuService( this );\n    this.subMenuItem = subMenu;\n    this.listComponents.push( subMenu );\n    this.appendSubMenuAnchor( subMenu );\n    this.handleLoadSubMenu( subMenu );\n  }\n\n  handleLoadSubMenu( subMenu ) {\n    subMenu.instance.onSubMenuLoad.subscribe( () => {\n      this.handleSubItemsAdvancedSubMenu( subMenu );\n    } );\n  }\n\n  handlePreviousSubMenu( subMenu, nestedMenu ) {\n    if ( !nestedMenu ) {\n      return subMenu.instance.previousMenu = this.menu.instance;\n    }\n  }\n\n  handleDockedMenu() {\n    setTimeout( () => {\n      if ( this.properties.docked ) {\n        this.renderer.setStyle( this.viewRootMenu.get( 0 )[ 'rootNodes' ][ 0 ].firstElementChild,\n          'left', (parseInt( this.properties.dockWidth, 10 ) + 1) + 'px' );\n      }\n    }, 1 );\n  }\n\n  handleSubItemsAdvancedSubMenu( subMenu ) {\n    if ( subMenu.instance.anchorElements.length > 0 ) {\n      this.createNewSubItems( subMenu, 'advanced', true );\n    }\n  }\n\n  handleSubItemsAdvancedMenu() {\n    if ( this.menu.instance.anchorElements.length > 0 ) {\n      this.createNewSubItems( this.menu, 'advanced' );\n      this.subscription.unsubscribe();\n    }\n  }\n\n  handleSubItemsSimpleSubMenu( subMenu ) {\n    setTimeout( () => {\n      if ( subMenu.instance.anchorElements.length > 0 ) {\n        this.createNewSubItems( subMenu, 'simple' );\n      }\n    }, 1 );\n  }\n\n  createNewSubItems( menu, type, nestedMenu? ) {\n    menu.instance.anchorElements.forEach( ( item, index ) => {\n      this.setAnchorElement( item.rootElement );\n      this.subMenuData = item.subItems;\n      type === 'simple' ? this.createSimpleSubMenu() : this.createAdvancedSubMenu( nestedMenu );\n      this.setParentNodeSubMenu( item );\n      this.handleSubMenuAnchor( menu, index );\n    } );\n  }\n\n  setParentNodeSubMenu( item ) {\n    if ( this.subMenuItem ) {\n      this.subMenuItem.instance.parentNode = item.rootElement;\n    }\n  }\n\n  handleSubMenuAnchor( subMenu, index ) {\n    subMenu.instance.anchorElements[ index ][ 'subMenu' ] = this.subMenuItem.instance;\n    this.subMenuItem.instance.previousMenu = subMenu.instance;\n  }\n\n  appendSubMenuAnchor( subMenu ) {\n    if ( !this.anchorElement ) {\n      this.anchorElement = this.anchorRootElement;\n    }\n    this.renderer.appendChild( this.anchorElement, subMenu.location.nativeElement );\n  }\n\n  getListComponents() {\n    return this.listComponents;\n  }\n\n  getSubMenus() {\n    return this.listComponents.filter( ( value ) => {\n      return value.instance instanceof TlAdvancedSubMenu;\n    } );\n  }\n\n  resetAdvancedMenu() {\n    this.anchorElement = null;\n    this.subMenuData = null;\n    this.viewSubMenu.clear();\n  }\n\n  closeMenu() {\n    if (this.menu) {\n      (<TlAdvancedRootMenu>this.menu.instance).close();\n    }\n  }\n\n  clearView() {\n    this.viewRootMenu.clear();\n    this.viewSubMenu.clear();\n    this.listComponents = [];\n    this.menu = null;\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Input, Component, OnDestroy,\n  Renderer2, ViewChild, ElementRef, OnChanges, SimpleChanges, AfterContentInit, ViewContainerRef,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SubMenuService } from './services/submenu.service';\nimport { Subscription } from 'rxjs';\n\n@Component( {\n  selector: 'tl-menu',\n  templateUrl: './menu.html',\n  styleUrls: [ './menu.scss' ],\n  providers: [ SubMenuService ],\n} )\nexport class TlMenu implements AfterContentInit, OnChanges, OnDestroy {\n\n  @Input() items = [];\n\n  @Input() label = '';\n\n  @Input() icon = '';\n\n  @Input() subItem = '';\n\n  @Input() dockWidth = '40px';\n\n  @Input() width = '200px';\n\n  @Input() docked = false;\n\n  @Input() charsToSearch = 2;\n\n  @Input() group = '';\n\n  @Input() filterEmptyMessage = 'Nothing to Show';\n\n  @Input() maxHeight = '800px';\n\n  @Input() itemHeight = '30px';\n\n  @Input() topDislocation = 0;\n\n  @Input() widthRootMenu = '250px';\n\n  @Input() outsideBorder = false;\n\n  @Input() inputPlaceholder = 'Search...';\n\n  @Input() titleMenu = 'Main Menu';\n\n  @Input() operationMode: 'click' | 'hover' = 'hover';\n\n  @Input() mode: 'simple' | 'advanced' = 'simple';\n\n  @Input() link = '';\n\n  @ViewChild( 'menuList', { read: ViewContainerRef, static: true } ) menuList: ViewContainerRef;\n\n  private listElement;\n\n  private iconElement;\n\n  private labelElement;\n\n  private iconSubElement;\n\n  private elements =  [];\n\n  private indexSubMenu = 0;\n\n  private callBack = Function();\n\n  private subscription = new Subscription();\n\n  constructor( private renderer: Renderer2,\n               private router: Router,\n               private subMenuService: SubMenuService,\n               private viewRoot: ViewContainerRef ) {\n  }\n\n  ngAfterContentInit() {\n    this.initializeMenu();\n    this.listenWindowResize();\n    this.listenDocumentClick();\n    this.listenRouteChange();\n  }\n\n  listenRouteChange() {\n    this.subscription.add(this.router.events.subscribe(() => {\n      this.elements.forEach((value, index, array) => {\n        this.isRouterActive(value.item) ? this.renderer.addClass( value.element, 'router-active') :\n          this.renderer.removeClass(value.element, 'router-active');\n      });\n    }));\n  }\n\n  createList() {\n    const list = this.items;\n    for ( let item = 0; item < list.length; item++ ) {\n      this.createElementList( list[ item ] );\n      this.addRootClass();\n      this.handleDockedClass();\n      this.handleAlwaysActive( list[ item ][ 'alwaysActive' ] );\n      this.insertListElementToList();\n      this.createElementIcon( list[ item ][ this.icon ] );\n      this.createElementLabel( list[ item ][ this.label ] );\n      this.orderElements();\n      this.createElementIconSubMenu( list[ item ][ this.subItem ] );\n      this.handleListenerSubMenu( list[ item ][ this.subItem ] );\n      this.handleSubItems( list[ item ] );\n    }\n  }\n\n  addRootClass() {\n    this.renderer.addClass( this.listElement.nativeElement, 'root-list' );\n  }\n\n  handleDockedClass() {\n    if ( this.docked ) {\n      this.renderer.addClass( this.listElement.nativeElement, 'docked' );\n      this.renderer.setStyle( this.listElement.nativeElement, 'grid-template-columns', this.dockWidth );\n    }\n  }\n\n  initializeMenu() {\n    this.subMenuService.setRenderer( this.renderer );\n    this.subMenuService.setRootMenu( this.menuList );\n    this.subMenuService.setViewRootMenu( this.viewRoot );\n    this.subMenuService.setViewSubMenu( this.menuList );\n    this.createList();\n  }\n\n  handleAlwaysActive( value ) {\n    if ( value ) {\n      this.renderer.addClass( this.listElement.nativeElement, 'always-active' );\n    }\n  }\n\n  handleSubItems( item ) {\n    if ( item[ this.subItem ] ) {\n      if ( this.mode === 'simple' ) {\n        this.subMenuService.setAnchorRootElement( this.listElement.nativeElement );\n        this.subMenuService.setSubMenuData( item[ this.subItem ], this );\n        this.subMenuService.createSimpleSubMenu();\n        this.subMenuService.handleDockedMenu();\n      } else {\n        this.subMenuService.setAnchorRootElement( this.menuList.element.nativeElement.children[ 0 ] );\n        this.subMenuService.setSubMenuData( item[ this.subItem ], this );\n        this.subMenuService.createAdvancedMenu();\n        this.subMenuService.handleDockedMenu();\n      }\n    }\n  }\n\n  handleListenerSubMenu( item ) {\n    if ( item ) {\n      this.listenClickListElement();\n    }\n  }\n\n  createElementList( item ) {\n    this.listElement = new ElementRef( this.renderer.createElement( 'li' ) );\n    this.renderer.addClass( this.listElement.nativeElement, 'ui-menulist-item' );\n    if (this.isRouterActive(item) && !item['alwaysActive']) {\n      this.renderer.addClass( this.listElement.nativeElement, 'router-active');\n    }\n    this.listenClickElementList( item );\n    this.setStyleListElement();\n    this.elements.push({ item: item, element: this.listElement.nativeElement });\n  }\n\n  listenDocumentClick() {\n    this.subscription.add(this.renderer.listen( document, 'click', ( $event ) => {\n      this.subMenuService.closeMenu();\n    } ));\n  }\n\n  isRouterActive(item) {\n    return this.router.isActive( item[this.link], false );\n  }\n\n  listenClickElementList( item ) {\n    this.subscription.add(this.renderer.listen( this.listElement.nativeElement, 'click', ( MouseEvent ) => {\n      if ( item[ this.link ] ) {\n        this.router.navigate( [ item[ this.link ] ], { queryParams: item['queryParams'] } );\n        this.subMenuService.closeMenu();\n        return;\n      }\n      if ( item[ 'callback' ] ) {\n        this.callBack = item[ 'callback' ];\n        this.callBack( MouseEvent );\n        this.subMenuService.closeMenu();\n      }\n    } ));\n  }\n\n  setStyleListElement() {\n    this.renderer.setStyle( this.listElement.nativeElement, 'max-width', this.width );\n    this.renderer.setStyle( this.listElement.nativeElement, 'height', this.itemHeight );\n    this.renderer.setStyle( this.listElement.nativeElement, 'line-height', this.itemHeight );\n    this.renderer.setStyle( this.listElement.nativeElement, 'grid-template-columns',\n      this.dockWidth + ' 1fr ' + '25px' );\n  }\n\n  createElementIcon( icon ) {\n    this.iconElement = new ElementRef( this.renderer.createElement( 'i' ) );\n    this.renderer.addClass( this.iconElement.nativeElement, icon );\n    this.renderer.addClass( this.iconElement.nativeElement, 'icon' );\n    this.renderer.addClass( this.iconElement.nativeElement, 'fa' );\n    this.renderer.setStyle( this.iconElement.nativeElement, 'height', this.itemHeight );\n    this.renderer.setStyle( this.iconElement.nativeElement, 'line-height', this.itemHeight );\n  }\n\n  createElementIconSubMenu( subItem ) {\n    if ( !this.isDocked() ) {\n      this.iconSubElement = new ElementRef( this.renderer.createElement( 'i' ) );\n      this.renderer.addClass( this.iconSubElement.nativeElement, 'icon' );\n      this.renderer.appendChild( this.listElement.nativeElement, this.iconSubElement.nativeElement );\n      if ( subItem ) {\n        this.renderer.addClass( this.iconSubElement.nativeElement, 'ion-ios-arrow-forward' );\n      }\n    }\n  }\n\n  listenWindowResize() {\n    this.subscription.add(this.renderer.listen( window, 'resize', () => {\n      this.subMenuService.setRootHeightChange( this.maxHeight );\n    } ));\n  }\n\n  listenClickListElement() {\n    if ( this.mode === 'advanced' ) {\n      this.subscription.add(this.renderer.listen( this.listElement.nativeElement, 'click', ( $event ) => {\n        if ( this.isTargetOnListElement( $event ) ) {\n          this.subMenuService.getListComponents()[ 0 ].instance.toggleVisibility();\n          this.handleVisibilitySubMenu();\n        }\n      } ));\n    }\n  }\n\n  handleVisibilitySubMenu() {\n    this.subMenuService.getListComponents().forEach( ( value, index ) => {\n      if ( (index > 0) && (value.instance.visibilitySubMenu) ) {\n        value.instance.toggleVisibility();\n      }\n    } );\n  }\n\n  isTargetOnListElement( $event ) {\n    for ( const item of $event.currentTarget.children ) {\n      if ( item === $event.target ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  createElementLabel( label ) {\n    if ( !this.isDocked() ) {\n      this.labelElement = new ElementRef( this.renderer.createElement( 'span' ) );\n      this.renderer.addClass( this.labelElement.nativeElement, 'label' );\n      this.renderer.setStyle( this.labelElement.nativeElement, 'height', this.itemHeight );\n      this.renderer.setStyle( this.labelElement.nativeElement, 'line-height', this.itemHeight );\n      this.labelElement.nativeElement.innerHTML = label;\n      return;\n    }\n    this.labelElement = null;\n  }\n\n  isDocked() {\n    return this.listElement.nativeElement.getAttribute( 'class' ).includes( 'docked' );\n  }\n\n  orderElements() {\n    this.renderer.appendChild( this.listElement.nativeElement, this.iconElement.nativeElement );\n    if ( this.labelElement ) {\n      this.renderer.appendChild( this.listElement.nativeElement, this.labelElement.nativeElement );\n    }\n  }\n\n  insertListElementToList() {\n    this.renderer.appendChild( this.menuList.element.nativeElement, this.listElement.nativeElement );\n  }\n\n  resetList() {\n    this.subMenuService.clearView();\n    this.menuList.element.nativeElement.innerHTML = '';\n    this.indexSubMenu = 0;\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {\n    this.handleChangeDocked( changes );\n    this.handleChangeItems( changes );\n    this.handleChangeMode( changes );\n  }\n\n  handleChangeDocked( changes ) {\n    if ( changes[ 'docked' ] ) {\n      if ( !changes[ 'docked' ].firstChange ) {\n        this.resetList();\n        this.initializeMenu();\n      }\n    }\n  }\n\n  handleChangeItems( changes ) {\n    if ( changes[ 'items' ] ) {\n      if ( !changes[ 'items' ].firstChange ) {\n        this.initializeMenu();\n      }\n    }\n  }\n\n  handleChangeMode( changes ) {\n    if ( changes[ 'mode' ] ) {\n      if ( !changes[ 'mode' ].firstChange ) {\n        this.resetList();\n        this.initializeMenu();\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<nav class=\"ui-wrapper-menulist\" [ngClass]=\"{'ui-menu-bordered': outsideBorder }\" (click)=\"$event.stopPropagation()\" [style.width]=\"!docked ? width : dockWidth\">\n  <ul class=\"ui-menulist\" #menuList></ul>\n</nav>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlMenu } from './menu';\nimport { TlSimpleSubMenu } from './parts/simple/simple-sub-menu';\nimport { TlAdvancedSubMenu } from './parts/advanced/parts/advanced-sub-menu';\nimport { TlAdvancedRootMenu } from './parts/advanced/advanced-root-menu';\n\nimport { MiscModule } from '../misc/index';\nimport { BlockUIModule } from '../blockui/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    MiscModule,\n    BlockUIModule,\n    FormsModule\n  ],\n  declarations: [\n    TlMenu,\n    TlAdvancedRootMenu,\n    TlAdvancedSubMenu,\n    TlSimpleSubMenu\n  ],\n  exports: [\n    TlMenu,\n    TlAdvancedRootMenu,\n    TlAdvancedSubMenu,\n    TlSimpleSubMenu\n  ]\n} )\nexport class MenuModule {\n}\n","import { ChangeDetectorRef, Component, ElementRef } from '@angular/core';\nimport { I18nService } from '../i18n/i18n.service';\nimport * as stringFormat from 'string-format';\nimport { AbstractControl } from '@angular/forms';\nconst format = stringFormat;\n\n@Component({\n  selector: 'tl-messagevalidation',\n  templateUrl: './messagevalidation.component.html',\n  styleUrls: ['./messagevalidation.component.scss'],\n})\nexport class TlMessageValidationComponent {\n\n  private errors = {};\n\n  public control = null;\n\n  public width = '';\n\n  public messages = [];\n\n  private keyErrors = {\n    required: Function(),\n    minlength: Function(),\n    cnpj: Function(),\n    cpf: Function(),\n    email: Function(),\n    pattern: Function(),\n    invalidPasswordRuleDigits: Function(),\n    invalidPasswordRuleUppercase: Function(),\n    invalidPasswordRuleSpecial: Function(),\n    invalidPasswordRuleLowerCase: Function(),\n  };\n\n  constructor( public element: ElementRef, private i18n: I18nService, private changes: ChangeDetectorRef ) { }\n\n  init( formControl: AbstractControl, width: string ) {\n    this.control = formControl;\n    this.width = width;\n    this.changes.detectChanges();\n  }\n\n  setMessages() {\n    this.messages = [];\n    this.setKeyErrors();\n    if (this.control && this.control.errors) {\n      Object.keys(this.control.errors).forEach(( key ) => {\n        if (this.keyErrors[key]) {\n          this.keyErrors[key]();\n        } else {\n          this.messages.push( this.control.errors[key] );\n        }\n      });\n    }\n  }\n\n  setKeyErrors() {\n    this.keyErrors = {\n      required: () => this.messages.push(this.i18n.getLocale().Validators.fieldRequired),\n      minlength: () => {\n        const requiredLength = this.control.errors['minlength']['requiredLength'];\n        this.messages.push(format(this.i18n.getLocale().Validators.invalidMinLength, requiredLength));\n      },\n      cnpj: () => this.messages.push( this.i18n.getLocale().Validators.invalidCNPJ ),\n      cpf: () => this.messages.push( this.i18n.getLocale().Validators.invalidCPF ),\n      invalidPasswordRuleDigits: () => this.messages.push(this.i18n.getLocale().Validators.invalidPasswordRuleDigits),\n      invalidPasswordRuleUppercase: () => this.messages.push(this.i18n.getLocale().Validators.invalidPasswordRuleUppercase),\n      invalidPasswordRuleSpecial: () => this.messages.push(this.i18n.getLocale().Validators.invalidPasswordRuleSpecial),\n      invalidPasswordRuleLowerCase: () => this.messages.push(this.i18n.getLocale().Validators.invalidPasswordRuleLowerCase),\n      email: () => this.messages.push(format(this.i18n.getLocale().Validators.invalidEmail)),\n      pattern: () => this.messages.push(this.i18n.getLocale().Validators.patternNotMatch)\n    };\n  }\n\n}\n","<div *ngIf=\"control?.errors\" [style.width]=\"width\" class=\"ui-wrapper-messages\">\n  <ul>\n    <li *ngFor=\"let item of messages\"><i class=\"ion-android-cancel\"></i>{{item}}</li>\n  </ul>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterContentInit,\n  AfterViewInit,\n  ComponentRef,\n  Directive,\n  ElementRef, OnDestroy, Optional,\n  Renderer2, Self\n} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {Overlay, OverlayPositionBuilder, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {TlMessageValidationComponent} from '../messagevalidation.component';\nimport {Subscription, throwError} from 'rxjs';\n\n@Directive({\n  selector: '[showValidations]',\n})\nexport class TlMessageValidationDirective implements AfterContentInit, AfterViewInit, OnDestroy {\n\n  private overlayRef: OverlayRef;\n\n  private validationsRef: ComponentRef<TlMessageValidationComponent>;\n\n  private subscription = new Subscription();\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  constructor(@Optional() @Self() public ngControl: NgControl,\n              private overlayPositionBuilder: OverlayPositionBuilder,\n              private elementRef: ElementRef,\n              private renderer: Renderer2,\n              private overlay: Overlay) {\n  }\n\n  ngAfterContentInit() {\n    const positionStrategy = this.overlayPositionBuilder\n      .flexibleConnectedTo(this.getNativeInput())\n      .withPositions([{\n        originX: 'center',\n        originY: 'bottom',\n        overlayX: 'center',\n        overlayY: 'top',\n      }]);\n    this.overlayRef = this.overlay.create({\n      positionStrategy,\n      hasBackdrop: false,\n      disposeOnNavigation: true,\n      backdropClass: 'cdk-overlay-transparent-backdrop'\n    });\n  }\n\n  ngAfterViewInit() {\n    this.listenBlur();\n    this.listenFocus();\n    this.listenValueChanges();\n    this.listenBackdrop();\n  }\n\n  listenFocus() {\n    this.subscription.add(this.renderer.listen(this.getNativeInput(), 'focus', () => {\n      if (!this.validationsRef) {\n        this.create();\n      }\n    }));\n  }\n\n  listenBlur() {\n    this.subscription.add(this.renderer.listen(this.getNativeInput(), 'blur', () => {\n      this.remove();\n    }));\n  }\n\n  listenBackdrop() {\n    if (this.overlayRef) {\n      this.subscription.add(this.overlayRef.backdropClick().subscribe(() => {\n        this.remove();\n      }));\n    }\n  }\n\n  listenValueChanges() {\n    if (this.control) {\n      this.subscription.add(this.control.valueChanges.subscribe(() => {\n        !this.validationsRef ? this.create() : this.validationsRef.instance.setMessages();\n      }));\n    }\n  }\n\n  create() {\n    setTimeout(() => {\n      if (this.control && this.control.errors && this.control.dirty && !this.overlayRef.hasAttached()) {\n        const validationsPortal = new ComponentPortal(TlMessageValidationComponent);\n        this.validationsRef = this.overlayRef.attach(validationsPortal);\n        this.validationsRef.instance.init(this.control, this.getElementWidth());\n        this.validationsRef.instance.setMessages();\n      }\n    });\n  }\n\n  remove() {\n    if (this.overlayRef) {\n      this.overlayRef.detach();\n      this.validationsRef = null;\n    }\n  }\n\n  getNativeInput() {\n    const nativeInput = this.elementRef.nativeElement.querySelector('input') ||\n      this.elementRef.nativeElement.querySelector('textarea');\n    return nativeInput ? nativeInput : throwError(`There's no input element relative with origin element`);\n  }\n\n  getElementWidth() {\n    return `${this.getNativeInput().offsetWidth}px`;\n  }\n\n  ngOnDestroy() {\n    this.remove();\n    this.subscription.unsubscribe();\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { TlMessageValidationComponent } from './messagevalidation.component';\nimport { TlMessageValidationDirective } from './directives/message-validation.directive';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n    PortalModule\n  ],\n  declarations: [\n    TlMessageValidationComponent,\n    TlMessageValidationDirective\n  ],\n  exports: [\n    TlMessageValidationComponent,\n    TlMessageValidationDirective\n  ]\n} )\nexport class MessageValidationModule {\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, Input, OnDestroy, OnInit, ViewChild} from '@angular/core';\nimport {ModalService} from '../../services/modal.service';\nimport {Subscription} from 'rxjs';\nimport { CurrentModalService } from '../../services/current-modal.service';\n\n@Component( {\n  selector: 'tl-modal-toolbar',\n  templateUrl: './modal-toolbar.html',\n  styleUrls: [ './modal-toolbar.scss' ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n} )\nexport class TlModalToolbar implements OnInit, OnDestroy {\n\n  @Input() containerColor = '';\n\n  @Input() height = '30px';\n\n  @Input() color = 'basic';\n\n  @Input() modalBoxWidth = 150;\n\n  @Input() limitStringBox = 12;\n\n  @ViewChild( 'container', {static: true} ) container;\n\n  @ViewChild( 'wrapper', {static: true} ) wrapper;\n\n  public isScrolling = false;\n\n  public activeModal: ComponentRef<any>;\n\n  private subscription = new Subscription();\n\n  constructor( public modalService: ModalService, private changes: ChangeDetectorRef, private currentModalService: CurrentModalService ) {}\n\n  ngOnInit() {\n    this.subscribeFrontModal();\n    this.subscribeChanges();\n  }\n\n  subscribeFrontModal() {\n    this.subscription.add( this.currentModalService.currentFrontModal$.subscribe( ( value: any ) => {\n      if(value?.activeModal) {\n        this.activeModal = value.activeModal;\n        this.changes.detectChanges();\n      }\n    } ) );\n  }\n\n  subscribeChanges() {\n    this.subscription.add( this.modalService.changeModal.subscribe( () => {\n      this.validateScroll();\n      this.changes.detectChanges();\n    } ) );\n  }\n\n  showWindow( item: ComponentRef<any> ) {\n    this.modalService.showModal( item );\n  }\n\n  validateScroll() {\n    setTimeout( () => {\n      this.wrapper.nativeElement.offsetWidth >= this.container.nativeElement.offsetWidth ?\n        this.isScrolling = true : this.isScrolling = false;\n    }, 1 );\n  }\n\n  handleArrowRight() {\n    if ( this.container.nativeElement.scrollLeft < this.wrapper.nativeElement.offsetWidth ) {\n      this.container.nativeElement.scrollLeft += 300;\n    }\n    this.handleScrollFinish();\n  }\n\n  handleArrowLeft() {\n    if ( this.container.nativeElement.scrollLeft > 0 ) {\n      this.container.nativeElement.scrollLeft -= 300;\n    }\n    this.handleScrollFinish();\n  }\n\n  handleScrollFinish() {\n    const scrollLeft = this.container.nativeElement.scrollLeft + this.container.nativeElement.offsetWidth;\n    this.isScrolling = scrollLeft >= this.wrapper.nativeElement.offsetWidth;\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n}\n","<div [class]=\"'container-wrapper '+ color\">\n     <span [style.lineHeight]=\"height\"\n           (click)=\"handleArrowLeft()\" *ngIf=\"container.scrollLeft > 0\" class=\"arrow-left\">\n       <tl-icon [lib]=\"'ion'\" [style]=\"'ios'\">arrow-back</tl-icon>\n     </span>\n    <div #container [style.height]=\"height\" [style.background-color]=\"containerColor\" class=\"container-modals\">\n      <div #wrapper class=\"wrapper-container-modals\" [style.line-height]=\"height\" [ngStyle]=\"\n      {position: 'absolute'}\">\n          <div class=\"container-modal-box\"\n               [style.width]=\"modalBoxWidth + 'px'\"\n               [style.height]=\"'calc(' + height  + ' - 6px)'\"\n               [style.lineHeight]=\"'calc(' + height + ' - 6px)'\"\n               *ngFor=\"let item of modalService.componentList; let i = index\" (click)=\"showWindow(item.modal)\"\n               [style.opacity]=\"item?.modal === modalService?.activeModal ? 1 : 0.7\">\n              <span class=\"ui-container-item ui-container-icon\"><tl-icon>{{ item?.modal?.instance?.icon }}</tl-icon></span>\n              <span class=\"ui-container-item ui-container-text\">{{item?.modal?.instance?.title}}</span>\n          </div>\n      </div>\n    </div>\n    <span [style.lineHeight]=\"height\" (click)=\"handleArrowRight()\" *ngIf=\"isScrolling\" class=\"arrow-right\">\n      <tl-icon [lib]=\"'ion'\" [style]=\"'ios'\">arrow-forward</tl-icon>\n    </span>\n</div>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TlModalToolbar } from './modal-toolbar';\nimport { IconsModule } from '../../../icons/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    IconsModule\n  ],\n  declarations: [\n    TlModalToolbar\n  ],\n  exports: [\n    TlModalToolbar\n  ]\n})\nexport class ModalToolbarModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nexport enum MultiSelectErrorMessages {\n  NOTSIMPLE_AND_NOTKEYVALUE = 'You must pass the [keyValue] property when not using an ArrayString as DataSource',\n  NOTDETAIL_AND_WITHDETAILTAG = 'You have to declare the [detail] property',\n  DATAUNDEFINED = 'The property [data] and property [query] are Required when using a complex array object Example :' +\n    ' <tl-multiselect [data]=\\'source\\' [query]=\\'name\\''\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {Input, Component, OnInit, Output, EventEmitter, ViewChild, ChangeDetectorRef} from '@angular/core';\nimport {KeyEvent} from '../core/enums/key-events';\nimport {TlInput} from '../input/input';\n\n@Component({\n  selector: 'tl-tag',\n  templateUrl: './tag.html',\n  styleUrls: ['./tag.scss'],\n})\nexport class TlTag implements OnInit {\n\n  @Input() title = 'Title Tag';\n\n  @Input() width = 'fit-content';\n\n  @Input() height = 'auto';\n\n  @Input() icon = null;\n\n  @Input() mode: 'default' | 'closeable' | 'clickable' | 'editable' = 'default';\n\n  @Input() charcase: 'unset' | 'lowercase' | 'capitalize' | 'uppercase' | 'revert' = 'unset';\n\n  @Input() closeOnValueEmited = true;\n\n  @Input()\n  set color( value: string ) {\n    const colors = {\n      basic: () => 'basic',\n      primary: () => 'primary',\n      success: () => 'success',\n      information: () => 'information',\n      warning: () => 'warning',\n      danger: () => 'danger',\n    };\n    if ( colors[value] ) {\n      this._color = colors[value]();\n    } else {\n      this._color = null;\n      this.customColor = value;\n    }\n  }\n\n  get color() {\n    return this._color;\n  }\n\n  @Output() close: EventEmitter<any> = new EventEmitter();\n\n  @Output() tagValue: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild( 'input'  ) tlinput: TlInput;\n\n  private _color = 'basic';\n\n  public editing = false;\n\n  public customColor = '';\n\n  public editableValue = '';\n\n  constructor() {}\n\n  ngOnInit() {}\n\n  onClose() {\n    this.close.emit();\n  }\n\n  onClickTag() {\n    if (this.mode === 'editable') {\n      this.editing = true;\n      setTimeout(() => {\n        this.tlinput.setFocus();\n      });\n    }\n  }\n\n  onConfirmTextInputed() {\n    this.emitEditablevalue();\n  }\n\n  onClearValue() {\n    this.resetInput();\n    this.hideInput( true );\n  }\n\n  onInputValue( value: KeyboardEvent ) {\n    if (value.key === KeyEvent.ENTER) {\n     return this.emitEditablevalue();\n    }\n    if (value.key === KeyEvent.ESCAPE) {\n      this.resetInput();\n      this.hideInput(true);\n    }\n  }\n\n  private emitEditablevalue() {\n    if (this.mode === 'editable') {\n      if ( this.editableValue.trim() ) {\n        this.tagValue.emit( this.editableValue );\n        this.resetInput();\n        this.hideInput();\n      } else {\n        this.resetInput();\n        this.hideInput( true );\n      }\n    }\n  }\n\n  private resetInput() {\n    this.editableValue = '';\n  }\n\n  private hideInput( close = false) {\n    if (this.closeOnValueEmited || close) {\n      this.editing = false;\n    }\n  }\n\n}\n","<div [class]=\"'tl-tag ' + color\" [ngClass]=\"{clickable: mode === 'clickable' || 'editable'}\">\n  <div class=\"tag\"\n       *ngIf=\"!editing\"\n       (click)=\"onClickTag()\"\n       [class.customColor]=\"customColor\"\n       [style.background]=\"color || customColor\"\n       [style.height]=\"height\"\n       [style.width]=\"width\"\n       [style.line-height]=\"height\">\n    <tl-icon *ngIf=\"icon\" [size]=\"'0.8em'\" >{{ icon }}</tl-icon>\n    <span class=\"description\" [style.textTransform]=\"charcase\">{{ title }}</span>\n    <tl-icon *ngIf=\"mode === 'closeable'\" class=\"icon\" [lib]=\"'fa'\" [style]=\"'fas'\" [size]=\"'0.9em'\" (click)=\"onClose()\">times-circle</tl-icon>\n  </div>\n  <div *ngIf=\"editing && mode === 'editable'\" class=\"tl-tag-input-wrapper\">\n    <tl-input #input\n              [(ngModel)]=\"editableValue\"\n              [height]=\"height\"\n              [style.width]=\"width\"\n              [clearButton]=\"true\"\n              [iconAfter]=\"'dx-icon dx-icon-check'\"\n              (keydown)=\"onInputValue($event)\"\n              (clear)=\"onClearValue()\"\n              (clickAddon)=\"onConfirmTextInputed()\"></tl-input>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n  ContentChild, AfterViewInit, ChangeDetectorRef, OnDestroy, SkipSelf, Host, Optional, AfterContentInit, Injector, Self,\n} from '@angular/core';\nimport { KeyEvent } from '../core/enums/key-events';\nimport { MakeProvider } from '../core/base/value-accessor-provider';\nimport {AbstractControl, ControlContainer, NgControl, NgModel} from '@angular/forms';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\nimport { OverlayAnimation } from '../core/directives/overlay-animation';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\nimport { ListItemInterface } from '../dropdownlist/interfaces/list-item';\nimport { MultiSelectErrorMessages } from './enums/error-messages';\n\n@Component( {\n  selector: 'tl-multiselect',\n  templateUrl: './multiselect.html',\n  styleUrls: [ './multiselect.scss' ],\n  animations: [ OverlayAnimation ]\n} )\nexport class TlMultiSelect extends ValueAccessorBase<any> implements OnInit, AfterViewInit, OnDestroy {\n\n  @Input() keyColor: string;\n\n  @Input() color = 'basic';\n\n  @Input() data = [];\n\n  @Input() query: string;\n\n  @Input() label: string;\n\n  @Input() labelSize = '100px';\n\n  @Input() labelTag: string;\n\n  @Input() detail: string;\n\n  @Input() icon: string;\n\n  @Input() defaultColorTag = '';\n\n  @Input() defaultIconTag = null;\n\n  @Input() openFocus = true;\n\n  @Input() detailOnTag = null;\n\n  @Input() keyValue = null;\n\n  @Input() itemHeight = '30px';\n\n  @Input() labelPlacement: 'left' | 'top' = 'left';\n\n  @Input() debounceTime = 200;\n\n  @Input() itemAmount = 5;\n\n  @Input() minLengthSearch = 2;\n\n  @Input() placeholder = 'Select item...';\n\n  @Input() sortAlphabetically = false;\n\n  @Input() onlyKeyValue = false;\n\n  @Input() formControlName: string;\n\n  @Input() disabled = false;\n\n  @Output() getSelecteds: EventEmitter<any> = new EventEmitter();\n\n  @Output() tagClick: EventEmitter<any> = new EventEmitter();\n\n  @Output() tagRemove: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild( 'input', {static: true} ) input;\n\n  public typeOfData = 'complex';\n\n  public isOpen = false;\n\n  public filteredItems = [];\n\n  public tags = [];\n\n  public showIcon = true;\n\n  public hasValidator;\n\n  public subject: Subject<any> = new Subject();\n\n  public touched = false;\n\n  public required = false;\n\n  private selectTag: number;\n\n  private placeholderMessage: string;\n\n  private dataSource = [];\n\n  private subscription: Subscription = new Subscription();\n\n  constructor( private change: ChangeDetectorRef,\n               @Optional() @Self() public ngControl: NgControl ) {\n    super();\n    this.setControl();\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  ngOnInit() {\n    this.placeholderMessage = this.placeholder;\n    this.dataSource = [ ...this.data ];\n    this.validateTypeDataSource();\n    this.setFilteredItems();\n    this.validateProperties();\n    this.handleTyping();\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterViewInit() {\n    this.validateHasModel();\n    this.setRequired();\n    this.setDisabled();\n    this.handleValidator();\n    this.listenControlChanges();\n  }\n\n  onBackdropClick() {\n    this.isOpen = false;\n    this.change.detectChanges();\n  }\n\n  private listenControlChanges() {\n    this.subscription.add(this.control.valueChanges.subscribe(() => {\n      this.validateHasModel();\n    }));\n  }\n\n  private setDisabled() {\n    if ( this.control ) {\n      this.disabled = this.control.disabled;\n    }\n  }\n\n  private handleTyping() {\n    this.subscription.add( this.subject.pipe(\n      map( event => event ),\n      debounceTime( this.debounceTime ),\n      distinctUntilChanged(),\n    ).subscribe( ( value ) => {\n      this.searchItem( value );\n    } ) );\n  }\n\n  private handleOpenOnFocus() {\n    if ( this.openFocus && this.filteredItems.length > 0 ) {\n      this.isOpen = true;\n    }\n  }\n\n  private setRequired() {\n    if ( this.control && this.control.errors ) {\n      if ( this.control.errors[ 'required' ] ) {\n        this.required = true;\n      }\n    }\n  }\n\n  private validateHasModel() {\n    setTimeout( () => {\n      if ( this.value ) {\n        this.cleanInput();\n        this.handleModelValueAsTags();\n        this.removeElementsForFilter();\n        this.setModelValue();\n      }\n      this.selectTag = this.tags.length;\n    }, 1 );\n  }\n\n  private handleModelValueAsTags() {\n    this.value.forEach( ( value ) => {\n      let indexMock;\n      indexMock = this.keyValue ? this.dataSource.findIndex( (item => this.getCompare( item, value )) ) :\n        this.dataSource.findIndex( (item => JSON.stringify( item ) === JSON.stringify( value )) );\n      if ( indexMock > -1 ) {\n        this.tags.push( this.dataSource[ indexMock ] );\n      }\n    } );\n  }\n\n  private getCompare( item, value ) {\n    return value[ this.keyValue ] ? (item[ this.keyValue ] === value[ this.keyValue ]) : (item[ this.keyValue ] === value);\n  }\n\n  private handleValidator() {\n    if ( this.control ) {\n      this.hasValidator = this.control.validator;\n      this.change.detectChanges();\n    }\n  }\n\n  private sortFilteredItems() {\n    if ( this.sortAlphabetically ) {\n      this.filteredItems.sort( ( a, b ) => {\n        const compareX = this.isSimpleData() ? a : a[ this.query ];\n        const compareY = this.isSimpleData() ? b : b[ this.query ];\n        const x = compareX.toLowerCase();\n        const y = compareY.toLowerCase();\n        return x < y ? -1 : x > y ? 1 : 0;\n      } );\n    }\n  }\n\n  private validateTypeDataSource() {\n    const key = Object.keys( this.dataSource )[ 0 ];\n    if ( typeof this.data[ key ] === 'string' ) {\n      this.typeOfData = 'simple';\n    }\n  }\n\n  isSimpleData() {\n    return this.typeOfData === 'simple';\n  }\n\n  private removeElementsForFilter() {\n    this.tags.forEach( ( value ) => {\n      this.dataSource.forEach( ( value2, index ) => {\n        const compareValue = this.isSimpleData() ? value : value[ this.keyValue ];\n        const compareValue2 = this.isSimpleData() ? value2 : value2[ this.keyValue ];\n        if ( JSON.stringify( compareValue ) === JSON.stringify( compareValue2 ) ) {\n          this.dataSource = this.dataSource.filter( ( filter, indexFilter ) => (indexFilter !== index) );\n        }\n      } );\n    } );\n    this.filteredItems = this.dataSource;\n    this.sortFilteredItems();\n  }\n\n  private validateProperties() {\n    if ( !this.icon ) {\n      this.showIcon = false;\n    }\n    if ( this.isDataUndefined() || this.isQueryUndefined() && !this.isSimpleData() ) {\n      throw new Error( <string>MultiSelectErrorMessages.DATAUNDEFINED );\n    }\n    if ( !this.isSimpleData() && !this.keyValue ) {\n      throw new Error( <string>MultiSelectErrorMessages.NOTSIMPLE_AND_NOTKEYVALUE );\n    }\n    if ( !this.labelTag ) {\n      this.labelTag = this.query;\n    }\n    if ( this.isUndefinedDetail() && this.hasDetailOnTagProperty() ) {\n      throw new Error( <string>MultiSelectErrorMessages.NOTDETAIL_AND_WITHDETAILTAG );\n    }\n  }\n\n  private isQueryUndefined() {\n    return this.query === undefined;\n  }\n\n  private isDataUndefined() {\n    return this.data === undefined;\n  }\n\n  private isUndefinedDetail() {\n    return this.detail === undefined;\n  }\n\n  private hasDetailOnTagProperty() {\n    return this.detailOnTag !== null;\n  }\n\n  private validateEmptySearch() {\n    setTimeout( () => {\n      if ( this.input.nativeElement.value === '' && this.hasTags() ) {\n        return this.filteredItems = this.data;\n      }\n    }, 1 );\n    this.sortFilteredItems();\n  }\n\n  handleKeyDown( $event ) {\n    const keyEvent = {\n      [KeyEvent.DELETE]: () => this.handleKeyDelete( $event ),\n      [KeyEvent.BACKSPACE]: () => this.handleKeyBackspace(),\n      [KeyEvent.ESCAPE]: () => this.handleKeySpace( $event ),\n      [KeyEvent.ENTER]: () => this.handleKeyEnter( $event ),\n      [KeyEvent.TAB]: () => this.handleKeyTab(),\n      [KeyEvent.ARROWDOWN]: () => this.handleIsOpen( $event ),\n      [KeyEvent.ARROWUP]: () => this.handleIsOpen( $event ),\n      [KeyEvent.ARROWLEFT]: () => this.handleArrowLeft( $event ),\n      [KeyEvent.ARROWRIGHT]: () => this.handleArrowRight( $event )\n    };\n    if ( keyEvent[ $event.code ] ) {\n      keyEvent[ $event.code ]();\n    }\n  }\n\n  private handleOverlayList() {\n    if ( this.filteredItems.length === 0 ) {\n      this.isOpen = false;\n    }\n  }\n\n  handleClickWrapper() {\n    if (!this.disabled && this.filteredItems.length > 0) {\n      this.isOpen = !this.isOpen;\n    }\n    this.setInputFocus();\n  }\n\n  setInputFocus() {\n    this.input.nativeElement.focus();\n  }\n\n  private handleIsOpen( $event ) {\n    if ( this.isOpen ) {\n      this.stopEventKeyDown( $event );\n    }\n  }\n\n  private handleKeyDelete( $event ) {\n    this.stopEventKeyDown( $event );\n    this.deleteTagSelected();\n  }\n\n  private handleKeyBackspace() {\n    this.isOpen = true;\n    this.removeTagOnBackspace();\n  }\n\n  private handleArrowRight( $event ) {\n    this.stopEventKeyDown( $event );\n    if ( !this.isSelectedTagEqualsLastTag() && this.hasTags() ) {\n      this.selectTag++;\n      this.cleanSelected();\n      this.setSelectTagAsTrue();\n    }\n  }\n\n  private handleKeyEnter( $event ) {\n    this.handleOverlayList();\n    if ( this.isOpen ) {\n      this.stopEventKeyDown( $event );\n    }\n  }\n\n  private handleKeySpace( $event ) {\n    if ( this.isOpen ) {\n      this.stopEventKeyDown( $event );\n    }\n    this.isOpen = false;\n  }\n\n  private handleKeyTab() {\n    if ( this.isOpen ) {\n      this.isOpen = false;\n    }\n  }\n\n  private isSelectedTagEqualsLastTag() {\n    return this.selectTag === this.tags.length - 1;\n  }\n\n  private handleArrowLeft( $event ) {\n    this.stopEventKeyDown( $event );\n    if ( this.hasTags() && !this.hasTagSelected() ) {\n      this.selectTag--;\n      this.cleanSelected();\n      this.setSelectTagAsTrue();\n    }\n  }\n\n  private hasTagSelected() {\n    return this.selectTag > 0;\n  }\n\n  private cleanSelected() {\n    this.tags.forEach( ( item ) => item.selected = false );\n  }\n\n  handleInputFocus() {\n    this.touched = true;\n    this.sortFilteredItems();\n    this.handleOpenOnFocus();\n  }\n\n  private setFilteredItems() {\n    this.validateEmptySearch();\n    if ( !this.isTagsLengthMoreThanZero() ) {\n      if ( this.isFilteredLengthEqualsDataLength() || this.filteredItems.length === 0 ) {\n        this.filteredItems = this.data;\n        this.sortFilteredItems();\n      }\n    }\n  }\n\n  private removeTagOfFilter( tag? ) {\n    this.filteredItems = this.filteredItems.filter( ( item ) => {\n      return JSON.stringify( tag ) !== JSON.stringify( item );\n    } );\n    this.change.detectChanges();\n    this.sortFilteredItems();\n  }\n\n  private setSelectTagAsTrue() {\n    this.tags[ this.selectTag ][ 'selected' ] = true;\n  }\n\n  handleArrowDown( $event ) {\n    if ( this.isOpen ) {\n      this.stopEventKeyDown( $event );\n    }\n  }\n\n  addTag( item: ListItemInterface ) {\n    if ( item.option ) {\n      this.tags.push( item.option.item );\n      this.placeholder = '';\n      this.getSelecteds.emit( this.tags );\n      this.setModelValue();\n      this.removeTagOfFilter( item.option.item );\n      this.removeElementsForFilter();\n      this.handleAllSelected();\n      this.cleanInput();\n    }\n  }\n\n  private handleAllSelected() {\n    if ( this.filteredItems.length === 0 ) {\n      this.isOpen = false;\n    }\n  }\n\n  private stopEventKeyDown( $event ) {\n    $event.preventDefault();\n    $event.stopPropagation();\n  }\n\n  private setModelValue() {\n    const modeltemp = [];\n    this.tags.forEach( ( value ) => {\n      modeltemp.push( this.onlyKeyValue ? value[ this.keyValue ] : value );\n    } );\n    this.value = modeltemp;\n  }\n\n  private deleteTagSelected() {\n    this.addTagSelectedToFiltered();\n    this.removeTagSelectedOfTags();\n    this.sortFilteredItems();\n  }\n\n  private getTagSelected() {\n    return this.tags.filter( ( item ) => item.selected )[ 0 ];\n  }\n\n  private removeTagSelectedOfTags() {\n    this.tags = this.tags.filter( ( item ) => !item.selected );\n  }\n\n  private addTagSelectedToFiltered() {\n    this.filteredItems = [ ...this.filteredItems, this.getTagSelected() ];\n  }\n\n  private searchItem( imputed ) {\n    if ( this.isValueMoreOrEqualThanMinLengthSearch( imputed ) ) {\n      !this.isTagsLengthMoreThanZero() ? this.filterOnData( imputed, this.dataSource ) :\n        this.filterOnData( imputed, this.filteredItems );\n    } else {\n      this.removeElementsForFilter();\n    }\n  }\n\n  private filterOnData( imputed: string, dataSource: Array<any> ) {\n    this.filteredItems = dataSource.filter( ( value ) => {\n      const typeValue = this.isSimpleData() ? value : value[ this.query ];\n      return typeValue.toString().toUpperCase().includes( imputed.toUpperCase().trim() );\n    } );\n  }\n\n  private isValueMoreOrEqualThanMinLengthSearch( value ) {\n    return value.length >= this.minLengthSearch;\n  }\n\n  selectTagClick( index, item? ) {\n    this.tagClick.emit( item );\n    this.selectTag = index;\n  }\n\n  private changePlaceholder() {\n    if ( !this.hasTags() ) {\n      this.placeholder = this.placeholderMessage;\n    }\n  }\n\n  private removeTagOnBackspace() {\n    if ( this.isInputValueEqualsEmpty() && this.isTagsLengthMoreThanZero() ) {\n      this.removeTag( this.tags.length - 1 );\n    } else {\n      this.setFilteredItems();\n    }\n  }\n\n  removeTag( index, item? ) {\n    this.filteredItems.push( item ? item : this.tags[ index ] );\n    this.tagRemove.emit( item ? item : this.tags[ index ] );\n    this.getSelecteds.emit( this.tags );\n    this.tags.splice( index, 1 );\n    this.changePlaceholder();\n    this.setModelValue();\n    this.sortFilteredItems();\n    this.cleanInput();\n  }\n\n  private cleanInput() {\n    setTimeout( () => {\n      this.input.nativeElement.value = '';\n    }, 1 );\n  }\n\n  private hasTags() {\n    return this.tags.length > 0;\n  }\n\n  private isInputValueEqualsEmpty() {\n    return this.input.nativeElement.value === '';\n  }\n\n  private isTagsLengthMoreThanZero() {\n    return this.tags.length > 0;\n  }\n\n  private isFilteredLengthEqualsDataLength() {\n    return this.filteredItems.length === this.dataSource.length;\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n\n","<div [class]=\"'tl-multiselect-container '+ color\">\n  <tl-label [required]=\"required\" [labelTitle]=\"label\" [labelSize]=\"labelSize\" [labelPlacement]=\"labelPlacement\"></tl-label>\n  <div class=\"multiselect-wrapper\">\n    <div\n      class=\"input-wrapper-multiselect\"\n      cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n      #element\n      (click)=\"handleClickWrapper()\"\n      [ngClass]=\"\n      {\n      'ng-touched': touched,\n      'ng-disabled': disabled,\n      'invalid': control.errors,\n      'withValidators': hasValidator,\n      'inputFormOpenFilter': isOpen && filteredItems.length !== 0\n      }\">\n      <div class=\"group-tags\">\n        <tl-tag *ngFor=\"let tag of tags; let i = index\"\n                [title]=\"isSimpleData() ? tag : tag[labelTag]\"\n                [mode]=\"'closeable'\"\n                [color]=\"'primary'\"\n                [height]=\"'18px'\"\n                (close)=\"removeTag(i, tag)\"\n                (click)=\"$event.stopPropagation(); selectTagClick(i, tag)\">\n        </tl-tag>\n\n        <input autocomplete=\"off\"\n               [name]=\"'notform'\"\n               class=\"input-field\"\n               [style.display]=\"'none'\"\n               [(ngModel)]=\"value\">\n\n        <input autocomplete=\"off\"\n               class=\"input-field\"\n               [ngClass]=\"\n             {\n              'invalid': control.errors,\n              'withValidators': hasValidator,\n              'withoutValidators': !hasValidator\n              }\"\n               #input\n               [attr.placeholder]=\"placeholder\"\n               [attr.disabled]=\"disabled ? true : null\"\n               (focus)=\"handleInputFocus()\"\n               (keydown.arrowDown)=\"handleArrowDown($event)\"\n               (keyup)=\"subject.next($event.target.value)\"\n               (keydown)=\"handleKeyDown($event)\">\n      </div>\n    </div>\n    <ng-template cdkConnectedOverlay\n                 (backdropClick)=\"onBackdropClick()\"\n                 [cdkConnectedOverlayHasBackdrop]=\"true\"\n                 [cdkConnectedOverlayOrigin]=\"trigger\"\n                 [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n                 [cdkConnectedOverlayOpen]=\"isOpen\">\n      <tl-overlay-list\n        @overlay\n        (selectOption)=\"addTag($event)\"\n        (search)=\"handleKeyDown($event)\"\n        [searchOnList]=\"true\"\n        [customInput]=\"input\"\n        [customFocus]=\"input\"\n        [typeOfData]=\"typeOfData\"\n        [hasDefaultOption]=\"false\"\n        [datasource]=\"filteredItems\"\n        [itemHeight]=\"itemHeight\"\n        [width]=\"element.offsetWidth + 'px'\"\n        [icon]=\"icon\"\n        [keyText]=\"query\">\n      </tl-overlay-list>\n    </ng-template>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { IconsModule } from '../icons/index';\nimport { InputModule } from '../input/index';\nimport { TlTag } from './tag';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        IconsModule,\n        InputModule,\n    ],\n  declarations: [\n    TlTag,\n  ],\n  exports: [\n    TlTag,\n  ]\n})\nexport class TagModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TlMultiSelect } from './multiselect';\nimport { FormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OverlayListModule } from '../overlaylist/index';\nimport { InternalsModule } from '../internals/index';\nimport { TagModule } from '../tag/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayListModule,\n    OverlayModule,\n    InternalsModule,\n    TagModule\n  ],\n  declarations: [\n    TlMultiSelect,\n  ],\n  exports: [\n    TlMultiSelect,\n  ]\n})\nexport class MultiSelectModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\n\n@Component({\n  selector: 'tl-view',\n  templateUrl: './view.html',\n  styleUrls: [ './view.scss' ],\n})\nexport class TlView implements OnInit {\n\n  @Input() value;\n\n  @ViewChild( 'viewComponents', {static: true} ) viewComponents: ElementRef;\n\n  public height = 'auto';\n\n  public background;\n\n  public selected;\n\n  constructor() {}\n\n  ngOnInit() {}\n\n}\n","<div class=\"view-wrapper\" [ngClass]=\"{'view-wrapper-selected': selected}\">\n  <div #viewComponents>\n    <ng-content></ng-content>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Input, ContentChildren, Component, QueryList, forwardRef, AfterContentInit, Renderer2, ViewChild, AfterViewInit,\n  Output, OnDestroy, EventEmitter, OnChanges, SimpleChanges\n} from '@angular/core';\n\nimport { TlView } from './view/view';\n\nconst globalListeners = [];\n\n@Component( {\n  selector: 'tl-multiview',\n  templateUrl: './multiview.html',\n  styleUrls: [ './multiview.scss' ],\n} )\nexport class TlMultiView implements AfterViewInit, AfterContentInit, OnDestroy, OnChanges {\n\n  @Input() modelValue: string;\n\n  @Input() transitionTime = '300ms';\n\n  @Input() height = '100%';\n\n  @Input() backdroungColor = 'transparent';\n\n  @ContentChildren( forwardRef( () => TlView ) ) views: QueryList<TlView>;\n\n  @ViewChild( 'multiViewContainer', {static: true} ) multiViewContainer;\n\n  @ViewChild( 'multiViewTranslate', {static: true} ) multiViewTranslate;\n\n  @Output() private selectedChange: EventEmitter<any> = new EventEmitter();\n\n  private moving = false;\n\n  private viewBounding = [];\n\n  private mouseClickPositionX;\n\n  private selectedView;\n\n  private currentTranslatePosition = 0;\n\n  private translateAreaWidth;\n\n  private movement = '';\n\n  private movementPosition;\n\n  constructor( private renderer: Renderer2 ) {}\n\n\n  ngOnChanges( changes: SimpleChanges ) {\n    if (  !( changes['modelValue'].firstChange)) {\n      this.changeModelValue( changes['modelValue'].currentValue );\n    }\n  }\n\n  changeModelValue( value ) {\n    this.modelValue = value;\n    this.selectedChange.emit( value );\n    this.changeViewSelected( value );\n  }\n\n\n  ngAfterContentInit() {\n    this.handleViewBounding();\n    this.listenMouseDown();\n    this.listenMouseUp();\n    this.listenMouseMove();\n    this.listenMouseLeave();\n    const selectedView = this.views.find( view => view.selected );\n    if ( !selectedView && this.views.first ) {\n      this.views.first.selected = true;\n    }\n  }\n\n  ngAfterViewInit() {\n    this.setWidthMultiView();\n    this.setWidthEachView();\n    this.handleSelectedView();\n  }\n\n  setWidthEachView() {\n    this.views.forEach( ( item, index ) => {\n      item.viewComponents.nativeElement.style.width = this.multiViewContainer.nativeElement.offsetWidth + 'px';\n      if ( index > 0 ) {\n        item.viewComponents.nativeElement.style.left = this.multiViewContainer.nativeElement.offsetWidth + 'px';\n      }\n    } );\n  }\n\n  handleSelectedView() {\n    if (!this.selectedView) {\n      this.selectedView = this.viewBounding[ 0 ];\n    }\n  }\n\n  handleViewBounding() {\n    this.views.forEach( ( item, index ) => {\n      if ( !item.value ) {\n        item.value = index + 1;\n      }\n      this.viewBounding.push( {\n        viewItem: item,\n        viewPosition: Math.round( this.multiViewContainer.nativeElement.offsetWidth * (index) )\n      } );\n    } );\n    this.changeViewSelected(this.modelValue);\n  }\n\n  setWidthMultiView() {\n    this.renderer.setStyle( this.multiViewTranslate.nativeElement, 'width',\n      this.multiViewContainer.nativeElement.offsetWidth * this.views.toArray().length + 'px' );\n  }\n\n  listenMouseDown() {\n    globalListeners.push( this.renderer.listen( this.multiViewContainer.nativeElement, 'mousedown', ( $event ) => {\n      this.mouseClickPositionX = $event.clientX;\n      this.moving = true;\n    } ) );\n  }\n\n  listenMouseLeave() {\n    this.renderer.listen( this.multiViewContainer.nativeElement, 'mouseleave', () => {\n      this.moving = false;\n      this.snapViewPosition();\n    } );\n  }\n\n  listenMouseUp() {\n    globalListeners.push( this.renderer.listen( document, 'mouseup', () => {\n      this.moving = false;\n      this.snapViewPosition();\n    } ) );\n  }\n\n  snapViewPosition() {\n    const translateSnap = this.multiViewTranslate.nativeElement.offsetWidth / this.views.length;\n    this.translateAreaWidth = translateSnap * (this.views.length - 1);\n    if ( this.isDistanceMovedEnoughToSnap(this.getDistanceMoved(), translateSnap) ) {\n      this.isForwardMove() ? this.handleDragForward() : this.handleDragBackward();\n    } else {\n      this.translateSection( '-' + this.selectedView.viewPosition, this.transitionTime );\n    }\n  }\n\n  getDistanceMoved() {\n    let distanceMoved = parseInt( String( this.movementPosition ).replace( '-', '' ), 10 );\n    if ( !this.isSelectedViewIndexGreaterThanZero() ) {\n      return distanceMoved;\n    }\n    distanceMoved = this.isForwardMove() ? (distanceMoved - this.selectedView.viewPosition) :\n      (this.selectedView.viewPosition - distanceMoved);\n    return distanceMoved;\n  }\n\n  isSelectedViewIndexGreaterThanZero() {\n    return this.viewBounding.indexOf( this.selectedView ) > 0;\n  }\n\n  isDistanceMovedEnoughToSnap(distanceMoved, translateSnap) {\n    return distanceMoved > (translateSnap / 3);\n  }\n\n  isForwardMove() {\n    return this.movement === 'forward';\n  }\n\n  handleDragForward() {\n    const translatePos = parseInt( String( this.currentTranslatePosition ).replace( '-', '' ), 10 );\n    if ( (translatePos > this.selectedView.viewPosition) ) {\n      const index = this.viewBounding.indexOf( this.selectedView ) + 1;\n      if ( this.viewBounding[ index ] ) {\n        this.changeModelValue(this.viewBounding[ index ].viewItem.value);\n      }\n    }\n  }\n\n  handleDragBackward() {\n    const translatePos = parseInt( String( this.currentTranslatePosition ).replace( '-', '' ), 10 );\n    if ( translatePos < this.selectedView.viewPosition ) {\n      const index = this.viewBounding.indexOf( this.selectedView ) - 1;\n      if ( this.viewBounding[ index ] ) {\n        this.changeModelValue( this.viewBounding[ index ].viewItem.value );\n      }\n    }\n  }\n\n  listenMouseMove() {\n    globalListeners.push( this.renderer.listen( window, 'mousemove', ( $event ) => {\n      if ( this.moving ) {\n        this.translateMove( $event );\n      }\n    } ) );\n  }\n\n  translateSection( translate: any, time: string ) {\n    this.currentTranslatePosition = translate;\n    this.handleDuration( time );\n    this.setTranslate( this.currentTranslatePosition );\n  }\n\n  translateMove( $event, time? ) {\n    this.movementPosition = this.getMousePosition( $event );\n    const translatePos = this.getTranslateCurrentPosition();\n    this.setMoveDirection( $event );\n\n    if ( this.isMoving( translatePos ) ) {\n      this.movementPosition = $event.movementX - translatePos;\n    }\n    if ( this.isFirstAndFinished( $event, translatePos ) ) {\n      this.setTranslate( '-' + this.viewBounding[ 0 ].viewPosition );\n      return;\n    }\n    if ( this.isLastAndFinished( $event, translatePos ) ) {\n      this.setTranslate( '-' + this.viewBounding[ this.viewBounding.length - 1 ].viewPosition );\n      return;\n    }\n    this.handleMovingSlow( time );\n  }\n\n  getTranslateCurrentPosition() {\n    return parseInt( String( this.currentTranslatePosition ).replace( '-', '' ), 10 );\n  }\n\n  handleMovingSlow( time ) {\n    this.handleDuration( time );\n    this.setTranslate( this.movementPosition );\n    this.currentTranslatePosition = this.movementPosition;\n  }\n\n  getMousePosition( $event ) {\n    return this.multiViewTranslate.nativeElement.offsetLeft + $event.clientX - this.mouseClickPositionX;\n  }\n\n  setTranslate( value: any ) {\n    this.renderer.setStyle( this.multiViewTranslate.nativeElement, 'transform', 'translateX(' + value + 'px)' );\n  }\n\n  isLastAndFinished( $event: MouseEvent, translatePos: number ) {\n    return ($event.movementX <= 0) && (translatePos >= this.translateAreaWidth);\n  }\n\n  isMoving( translatePos: number ) {\n    return translatePos > 0;\n  }\n\n  isFirstAndFinished( $event: MouseEvent, translatePos: number ) {\n    return (translatePos === 0) && ( $event.movementX >= 0 );\n  }\n\n  setMoveDirection( $event: MouseEvent ) {\n    $event.movementX < 0 ? this.movement = 'forward' : this.movement = 'backward';\n  }\n\n  handleDuration( time: string ) {\n    time ? this.setTransitionStyle( time ) : this.removeTransitionStyle();\n  }\n\n  setTransitionStyle( time: string ) {\n    this.renderer.setStyle( this.multiViewTranslate.nativeElement, 'transition', 'all ' + time );\n  }\n\n  removeTransitionStyle() {\n    this.renderer.removeStyle( this.multiViewTranslate.nativeElement, 'transition' );\n  }\n\n  selectView( view: TlView ) {\n    if ( !view ) {\n      return console.warn( 'TlView with value [' + this.modelValue + '] not found.' );\n    }\n    this.viewBounding.forEach( item => item.viewItem.selected = false );\n    this.selectedView = view;\n    view.selected = true;\n  }\n\n  changeViewSelected( value: string ) {\n    if ( (this.viewBounding.length > 0) && (value) ) {\n      const view = this.viewBounding.filter( ( item ) => item.viewItem.value === value );\n      this.selectView( view[ 0 ] );\n      this.translateSection( '-' + view[ 0 ].viewPosition, this.transitionTime );\n    }\n  }\n\n  ngOnDestroy() {\n    globalListeners.forEach( ( value ) => {\n      value();\n    } );\n  }\n\n}\n\n","<div class=\"ui-multiview-wrapper\">\n  <div class=\"ui-multiview-container\" #multiViewContainer>\n      <div class=\"ui-multiview-translate\" #multiViewTranslate [style.height]=\"height\" [style.background]=\"backdroungColor\">\n        <ng-content></ng-content>\n      </div>\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TlMultiView } from './multiview';\nimport { TlView } from './view/view';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    TlMultiView,\n    TlView\n  ],\n  exports: [\n    TlMultiView,\n    TlView\n  ],\n} )\nexport class MultiViewModule {\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, Input, EventEmitter, Output, AfterContentInit, ViewChild, Renderer2, OnInit,\n} from '@angular/core';\nimport { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { TlButton } from '../button/button';\nimport { OverlayAnimation } from '../core/directives/overlay-animation';\n\n@Component( {\n  selector: 'tl-overlay-panel',\n  templateUrl: './overlay-panel.html',\n  styleUrls: [ './overlay-panel.scss' ],\n  animations: [ OverlayAnimation ]\n} )\nexport class TlOverlayPanel implements OnInit, AfterContentInit {\n\n  @Input() elementOrigin;\n\n  @Input() width = '100%';\n\n  @Output() show: EventEmitter<any> = new EventEmitter();\n\n  @Output() hide: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild( CdkConnectedOverlay, {static: true} ) cdkOverlay: CdkConnectedOverlay;\n\n  public isOpen = false;\n\n  constructor( private renderer: Renderer2 ) {}\n\n  ngOnInit() {\n    this.validateNullOrigin();\n  }\n\n  ngAfterContentInit() {\n    this.cdkOverlay.origin = new CdkOverlayOrigin( this.getTargetElement() );\n    this.listenElementOrigin();\n  }\n\n  private listenElementOrigin() {\n    if ( this.elementOrigin ) {\n      this.renderer.listen( this.getTargetElement(), 'click', () => {\n        this.toggle();\n      } );\n    }\n  }\n\n  private validateNullOrigin() {\n    if ( !this.elementOrigin ) {\n      throw new Error( 'The [elementOrigin] property is required' );\n    }\n  }\n\n  private getTargetElement() {\n    return this.isElementTlButton() ? this.elementOrigin.buttonElement.nativeElement : this.elementOrigin;\n  }\n\n  private isElementTlButton() {\n    return this.elementOrigin instanceof TlButton;\n  }\n\n  onBackdropClick() {\n    this.close();\n  }\n\n  open() {\n    this.isOpen = true;\n    this.show.emit();\n  }\n\n  close() {\n    this.isOpen = false;\n    this.hide.emit();\n  }\n\n  toggle() {\n    this.isOpen = !this.isOpen;\n    this.isOpen ? this.show.emit() : this.hide.emit();\n  }\n\n\n}\n\n","\n<ng-template cdkConnectedOverlay\n             (backdropClick)=\"onBackdropClick()\"\n             [cdkConnectedOverlayHasBackdrop]=\"true\"\n             [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n             [cdkConnectedOverlayOpen]=\"isOpen\">\n\n<div @overlay class=\"ui-wrapper-overlay-panel\">\n  <div class=\"ui-overlay-panel\" [style.width]=\"width\">\n    <ng-content></ng-content>\n  </div>\n</div>\n\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlOverlayPanel } from './overlay-panel';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    OverlayModule\n  ],\n  declarations: [\n    TlOverlayPanel,\n  ],\n  exports: [\n    TlOverlayPanel,\n  ],\n} )\nexport class OverlayPanelModule {\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport { Component, Output, AfterViewInit, Input, EventEmitter } from '@angular/core';\n\n@Component( {\n    selector: 'tl-panelgroup',\n    templateUrl: './panelgroup.html',\n    styleUrls: [ './panelgroup.scss' ],\n} )\nexport class TlPanelGroup implements AfterViewInit {\n\n    @Input() labelGroup = 'Panel Group';\n\n    @Input() backgroundColor = '';\n\n    @Input() width = '100%';\n\n    @Input() height = '100%';\n\n    @Input() fontColorCaption = '';\n\n    @Input() fontSizeCaption = '12px';\n\n    @Input() shortcutAction = '';\n\n    @Input() showButtonAction = false;\n\n    @Output() buttonAction: EventEmitter<any> = new EventEmitter();\n\n    constructor() {}\n\n    ngAfterViewInit() {}\n\n    onClickButtonAction($event) {\n      this.buttonAction.emit($event);\n    }\n\n}\n\n","<div class=\"panelgroup-container\" [style.width]=\"width\" [style.height]=\"height\"  [ngStyle]=\"{'background-color':backgroundColor}\">\n    <div class=\"header-group\">\n        <span class=\"spacer spacer-left\"></span>\n        <span class=\"group-caption\" [style.color]=\"fontColorCaption\" [style.font-size]=\"fontSizeCaption\">{{labelGroup}}</span>\n        <div *ngIf=\"showButtonAction\"\n             [shortcut]=\"shortcutAction\"\n             (click)=\"onClickButtonAction($event)\" class=\"ui-button-action\">\n          <tl-icon [lib]=\"'ion'\" [style]=\"'md'\">add</tl-icon>\n        </div>\n\n        <span class=\"spacer spacer-right\"></span>\n    </div>\n    <div class=\"panelgroup-body\">\n      <ng-content></ng-content>\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlPanelGroup } from './panelgroup';\nimport { IconsModule } from '../icons/index';\nimport { ShortcutModule } from '../shortcut/index';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule,\n        ShortcutModule,\n        IconsModule\n    ],\n    declarations: [\n        TlPanelGroup\n    ],\n    exports: [\n        TlPanelGroup\n    ]\n})\nexport class PanelGroupModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { AfterViewInit, Component, OnDestroy, Renderer2, ViewChild } from '@angular/core';\n\nconst allSubs = [];\nlet highestWidth = 0;\n\n@Component( {\n  selector: 'tl-popupmenu-item',\n  templateUrl: './popupmenu-item.html',\n  styleUrls: [ './popupmenu-item.scss' ],\n} )\nexport class TlPopupMenuItem implements AfterViewInit, OnDestroy {\n\n  public icon = '';\n\n  public label = '';\n\n  public subItem = '';\n\n  public callBack = Function();\n\n  public styleConfig = { position: '', left: 0, top: 0 };\n\n  @ViewChild( 'wrapperItem', {static: true} ) wrapperItem;\n\n  constructor(private renderer: Renderer2) {}\n\n  ngAfterViewInit() {}\n\n  fitWidth() {\n    setTimeout(() => {\n      allSubs.push(this.wrapperItem);\n      if (this.wrapperItem.nativeElement.offsetWidth > highestWidth) {\n        highestWidth = this.wrapperItem.nativeElement.offsetWidth;\n      }\n      this.setMaxWidth();\n    }, 10);\n\n  }\n\n  setBorders( index, lastIndex ) {\n    if (index === 0) {\n      this.renderer.addClass(this.wrapperItem.nativeElement, 'borderTop');\n      return;\n    }\n    if (index === lastIndex) {\n      this.renderer.addClass(this.wrapperItem.nativeElement, 'borderBottom');\n    }\n  }\n\n  dispatchCallback(MouseEvent: MouseEvent) {\n    if (this.callBack) {\n      this.callBack(MouseEvent);\n    }\n  }\n\n  setMaxWidth() {\n    allSubs.forEach((item) => {\n      item.nativeElement.style.width = highestWidth + 'px';\n    });\n  }\n\n  ngOnDestroy() {\n    allSubs.splice(allSubs.indexOf(this.wrapperItem.nativeElement), 1);\n  }\n\n}\n","<div class=\"ui-wrapper-item\" #wrapperItem\n     (click)=\"dispatchCallback($event)\">\n  <div class=\"ui-menu-item\"\n       [attr.menuItem]=\"true\"\n       [style.paddingRight]=\"!subItem ? '5px' : '10px'\"\n       [style.paddingLeft]=\"!icon ? '2px' : '15px'\">\n    <span><i [class]=\"'ui-icon-left ' + icon\"></i></span>\n    <span class=\"ui-label\">{{label}}</span>\n    <span><i *ngIf=\"subItem\" class=\"ui-icon-right ion-chevron-right\"></i></span>\n  </div>\n</div>\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { ComponentFactoryResolver, Injectable, Renderer2, ViewContainerRef } from '@angular/core';\nimport { RelativeWindowPosition } from '../../misc/relative-window-position.directive';\nimport { TlPopupMenuItem } from '../../popupmenu/parts/popupmenu-item';\n\nexport interface MenuConfig {\n  label: string;\n  icon: string;\n  subItem: string;\n  items: Array<any>;\n}\n\n@Injectable()\nexport class MenuService {\n\n  private mainList;\n\n  private label;\n\n  private icon;\n\n  private subItem;\n\n  private items = [];\n\n  private anchors = [];\n\n  private listeners = [];\n\n  private menuList: ViewContainerRef;\n\n  private relativeWindowPosition = new RelativeWindowPosition();\n\n  private renderer: Renderer2;\n\n  private callBack = Function();\n\n  public created = false;\n\n  constructor(private componentResolver: ComponentFactoryResolver) {}\n\n  setMenuConfig( menuConfig: MenuConfig, view: ViewContainerRef, renderer: Renderer2 ) {\n    this.label = menuConfig.label;\n    this.subItem = menuConfig.subItem;\n    this.icon = menuConfig.icon;\n    this.items = menuConfig.items;\n    this.menuList = view;\n    this.renderer = renderer;\n  }\n\n  createList() {\n    if ( !this.mainList ) {\n      this.created = true;\n      for ( let item = 0; item < this.items.length; item++ ) {\n        const factory = this.componentResolver.resolveComponentFactory( TlPopupMenuItem );\n        this.mainList = this.menuList.createComponent( factory );\n        this.setProperties( item, this.mainList, null );\n        this.handleSubItems( item, this.mainList );\n      }\n    }\n  }\n\n  private handleSubItems( item, componentSubItem, list? ) {\n    const items = list ? list : this.items;\n    if ( items[ item ][ this.subItem ] ) {\n      this.renderer.setAttribute( componentSubItem.location.nativeElement, 'anchor', 'true' );\n      const object = { 'anchor': componentSubItem, 'children': [] };\n      this.anchors.push( object );\n      this.handleMouseHover( items, item, object );\n      this.handleMouseLeave( object );\n    }\n  }\n\n  private handleMouseHover( items, item, object ) {\n    this.listeners.push( this.renderer.listen( object.anchor.location.nativeElement, 'mouseover', () => {\n      if ( object.children.length === 0 ) {\n        this.createSubItemList( items[ item ][ this.subItem ], object );\n      }\n    } ) );\n  }\n\n  private handleMouseLeave( componentSubItem ) {\n    this.listeners.push( this.renderer.listen( componentSubItem.anchor.location.nativeElement, 'mouseleave', () => {\n      this.removeChildren( componentSubItem );\n    } ) );\n  }\n\n  private removeChildren( related ) {\n    related.children.forEach( ( item ) => {\n      this.menuList.remove( this.menuList.indexOf( item ) );\n    } );\n    related.children = [];\n  }\n\n  private createSubItemList( list, parentElement ) {\n    for ( let index = 0; index < list.length; index++ ) {\n      const factory = this.componentResolver.resolveComponentFactory( TlPopupMenuItem );\n      const subItem = this.menuList.createComponent( factory );\n      parentElement.children.push( subItem );\n      this.renderer.appendChild( parentElement.anchor.location.nativeElement, subItem.location.nativeElement );\n      this.setProperties( index, subItem, parentElement.anchor, list );\n      this.handleSubItems( index, subItem, list );\n    }\n  }\n\n  private setProperties( index, subItem, parentElement, list? ) {\n    const items = list ? list : this.items;\n    this.setPositionChildElement( subItem, index, items.length - 1, parentElement );\n    (<TlPopupMenuItem>subItem.instance).label = items[ index ][ this.label ];\n    (<TlPopupMenuItem>subItem.instance).icon = items[ index ][ this.icon ];\n    (<TlPopupMenuItem>subItem.instance).subItem = items[ index ][ this.subItem ];\n    (<TlPopupMenuItem>subItem.instance).callBack = items[ index ].callBack;\n  }\n\n  private setPositionChildElement( subItem, index, lastIndex, anchor ) {\n    if ( anchor ) {\n      (<TlPopupMenuItem>subItem.instance).fitWidth();\n      (<TlPopupMenuItem>subItem.instance).setBorders( index, lastIndex );\n      this.setAnchorLeftPosition(subItem, anchor);\n      this.setAnchorTopPosition(subItem, anchor, index);\n    }\n  }\n\n  private setAnchorLeftPosition(subItem, anchor) {\n    this.relativeWindowPosition.setRenderer(this.renderer);\n    this.relativeWindowPosition.anchorElement = anchor.location.nativeElement.firstElementChild;\n    this.relativeWindowPosition.relativeElement = (<TlPopupMenuItem>subItem.instance).wrapperItem.nativeElement;\n    this.relativeWindowPosition.setPosition();\n  }\n\n  private setAnchorTopPosition(subItem, anchor, index) {\n    this.renderer.setStyle((<TlPopupMenuItem>subItem.instance).wrapperItem.nativeElement, 'top',\n      anchor.location.nativeElement.firstElementChild.getBoundingClientRect().top\n      + anchor.location.nativeElement.firstElementChild.offsetHeight * index + 'px');\n  }\n\n  resetMenu() {\n    this.menuList.clear();\n    this.mainList = null;\n    this.created = false;\n    this.anchors = [];\n  }\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  ViewChild, Input, AfterViewInit, Component, OnDestroy, ViewContainerRef, Renderer2,\n  OnInit\n} from '@angular/core';\nimport { MenuService } from '../core/services/menu.service';\nimport { TlButton } from '../button/button';\nimport { FixedPositionDirective } from '../misc/fixed-position.directive';\n\nlet documentClick;\n\n@Component( {\n  selector: 'tl-popupmenu',\n  templateUrl: './popupmenu.html',\n  styleUrls: [ './popupmenu.scss' ],\n  providers: [MenuService]\n} )\nexport class TlPopupMenu implements AfterViewInit, OnInit, OnDestroy {\n\n  @Input() items = [];\n\n  @Input() label = '';\n\n  @Input() icon = '';\n\n  @Input() subItem = '';\n\n  @Input() trigger;\n\n  @Input() target;\n\n  @Input() positionY = 'bellow';\n\n  @Input() overlapTrigger = false;\n\n  @Input() positionX = 'before';\n\n  @Input() hover = false;\n\n  @ViewChild( 'wrapperMenuItem', { read: ViewContainerRef, static: true } ) wrapperMenuItem: ViewContainerRef;\n\n  @ViewChild( FixedPositionDirective, {static: true} ) fixedPos: FixedPositionDirective;\n\n  constructor(private menuService: MenuService, private renderer: Renderer2) {}\n\n  ngOnInit() {\n    this.listenDocumentClick();\n  }\n\n  ngAfterViewInit() {\n    this.validateTarget();\n    this.listenTrigger();\n    this.listenTriggerMouseLeave();\n    this.menuService.setMenuConfig({ label: this.label, icon: this.icon, items: this.items, subItem: this.subItem},\n      this.wrapperMenuItem, this.renderer);\n  }\n\n  validateTarget() {\n    if (this.target instanceof TlButton) {\n      this.target = this.target['button'].nativeElement;\n    }\n    if (this.trigger instanceof TlButton) {\n      this.trigger = this.trigger['button'].nativeElement;\n    }\n    if (!this.target) {\n      throw new Error('The [target] property is required');\n    }\n  }\n\n  listenDocumentClick() {\n    documentClick = this.renderer.listen( document, 'click', ( $event ) => {\n      if (($event.path.indexOf(this.target) < 0) && ($event.path.indexOf(this.trigger) < 0)) {\n        this.menuService.resetMenu();\n      }\n    } );\n  }\n\n  listenTrigger() {\n    const element = this.trigger ? this.trigger : this.target;\n    const eventType = this.hover ? 'mouseenter' : 'click';\n    this.renderer.listen(element, eventType, () => {\n      if (this.menuService.created) {\n        this.menuService.resetMenu();\n        return;\n      }\n      this.menuService.createList();\n      this.fixedPos.setPositioning();\n    });\n  }\n\n  listenTriggerMouseLeave() {\n    if (this.hover) {\n      const element = this.trigger ? this.trigger : this.target;\n      this.renderer.listen(element, 'mouseleave', ($event) => {\n        if (!$event.relatedTarget.getAttribute('menuitem')) {\n          this.menuService.resetMenu();\n        }\n      });\n    }\n  }\n\n  ngOnDestroy() {\n    documentClick();\n  }\n\n}\n","<div class=\"ui-wrapper-menu\" fixedPosition [target]=\"target\"\n     [positionY]=\"positionY\" [overlapTrigger]=\"overlapTrigger\" [positionX]=\"positionX\">\n   <div class=\"wrapper-menu-item\" #wrapperMenuItem></div>\n</div>\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlPopupMenu } from './popupmenu';\nimport { TlPopupMenuItem } from './parts/popupmenu-item';\n\nimport { MiscModule } from '../misc/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    MiscModule\n  ],\n  declarations: [\n    TlPopupMenu,\n    TlPopupMenuItem\n  ],\n  exports: [\n    TlPopupMenu,\n    TlPopupMenuItem\n  ]\n} )\nexport class PopupMenuModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Directive, EventEmitter, HostListener, Input, HostBinding, Output, ElementRef } from '@angular/core';\nimport { Permission } from '../models/permission.model';\n\n\n@Directive( {\n  selector: '[permissionGroup]',\n} )\nexport class PermissionGroupDirective {\n\n  public selected = false;\n\n  @Input() permissions: Permission[] = [];\n\n  @Output() selectGroup: EventEmitter<any> = new EventEmitter();\n\n  @HostListener('click')\n  click() {\n    this.selectGroup.emit(this);\n  }\n\n  @HostBinding('class.selected') get select() {\n    return this.selected;\n  }\n\n  constructor( private element: ElementRef) {}\n\n  focus() {\n    this.element.nativeElement.focus();\n    this.selectGroup.emit(this);\n  }\n\n\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  AfterContentInit, AfterViewInit, Component, ElementRef, EventEmitter, Input, OnInit, QueryList, Output, ViewChild,\n  ViewChildren, OnChanges, SimpleChanges, ChangeDetectorRef\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { PermissionDataConfig } from './parts/interfaces/permission-dataconfig.interface';\nimport { Permission } from './parts/models/permission.model';\nimport { PermissionGroupDirective } from './parts/directives/permission-group.directive';\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { ListOptionDirective } from '../misc/listoption.directive';\nimport { I18nService } from '../i18n/i18n.service';\n\n@Component( {\n  selector: 'tl-permissions',\n  templateUrl: './permissions.html',\n  styleUrls: [ './permissions.scss' ],\n} )\nexport class TlPermissions implements OnInit, AfterContentInit, AfterViewInit, OnChanges {\n\n  @Input() data: Array<PermissionDataConfig> = [];\n\n  @Input() permissions: string[] = [];\n\n  @Input() height = '300px';\n\n  @Input() color = 'basic';\n\n  @Input() loading = true;\n\n  @Input() keyGroup = 'description';\n\n  @Input() keyPermissions = 'permissions';\n\n  @Input() keyPermissionValue = 'permission';\n\n  @Input() keyPermissionDescription = 'description';\n\n  @Input() searchGroup = this.i18n.getLocale().Permissions.searchGroup;\n\n  @Input() searchFunctionality = this.i18n.getLocale().Permissions.searchFunctionality;\n\n  @Input() allowColumnText = this.i18n.getLocale().Permissions.allowColumnText;\n\n  @ViewChildren( PermissionGroupDirective ) permissionGroup: QueryList<PermissionGroupDirective>;\n\n  @ViewChildren( ListOptionDirective ) permissionList: QueryList<ListOptionDirective>;\n\n  @ViewChild( 'listGroup', {static: true} ) listGroup: ElementRef;\n\n  @ViewChild( 'listPermission', {static: true} ) listPermission: ElementRef;\n\n  @Output() changePermission: EventEmitter<any> = new EventEmitter();\n\n  public keyManagerPermissionGroup: FocusKeyManager<PermissionGroupDirective>;\n\n  public keyManagerPermissionList: FocusKeyManager<ListOptionDirective>;\n\n  public dataSource = [];\n\n  public filterGroup: Subject<any> = new Subject();\n\n  public filterPermissions: Subject<any> = new Subject();\n\n  public selectedGroup: any = [];\n\n  public selectedGroupIndex = 0;\n\n  public selected = false;\n\n  public dataSourceSelected: any = [];\n\n  public loadingMessage = this.i18n.getLocale().Permissions.loadingMessage;\n\n  public notFound = this.i18n.getLocale().Permissions.notFound;\n\n  constructor( private changes: ChangeDetectorRef, private i18n: I18nService ) {\n  }\n\n  ngOnInit() {\n    this.setUpDataSource();\n    this.handleFilterGroup();\n    this.handleFilterPermissions();\n  }\n\n  ngAfterContentInit() {\n    this.handleChangePermissions();\n    this.setFirstGroupSelected();\n  }\n\n  ngAfterViewInit() {\n    this.keyManagerPermissionGroup = new FocusKeyManager( this.permissionGroup );\n    this.keyManagerPermissionList = new FocusKeyManager( this.permissionList );\n  }\n\n  filterPermissionAllowed( dataSourceItem ) {\n    if (this.permissions) {\n      return this.permissions.filter( ( item, index, array ) =>\n      item[ this.keyPermissionValue ] === dataSourceItem[ this.keyPermissionValue ] );\n    }\n    return [];\n  }\n\n  handleChangePermissions() {\n    if ( this.dataSource.length > 0 ) {\n      this.dataSource.forEach( ( item: PermissionDataConfig ) => {\n        item[ this.keyPermissions ].forEach( ( itemPermission ) => {\n          itemPermission['allow'] = this.filterPermissionAllowed( itemPermission ).length > 0;\n        } );\n        const allowed = item[ this.keyPermissions ].filter( ( permission, index, array ) => permission[ 'allow' ] );\n        if ( allowed.length === item[ this.keyPermissions ].length ) {\n          item[ 'checked' ] = true;\n        } else if ( allowed.length === 0 ) {\n          item[ 'checked' ] = false;\n        } else {\n          item[ 'checked' ] = 'indeterminate';\n        }\n      } );\n    }\n  }\n\n  handleFilterGroup() {\n    this.filterGroup.pipe(\n      debounceTime( 300 ),\n      distinctUntilChanged() ).subscribe( ( term ) => {\n      term.length > 0 ? this.filterByGroup( term ) : this.setUpDataSource();\n    } );\n  }\n\n  handleFilterPermissions() {\n    this.filterPermissions.pipe(\n      debounceTime( 100 ),\n      distinctUntilChanged() ).subscribe( ( term ) => {\n      term.length > 0 ? this.filterByRule( term ) : this.setSelectedGroup();\n    } );\n  }\n\n  handleCheckPermission() {\n    if (! ( this.dataSource.length > 0) ) {\n      return;\n    }\n    const selected = this.selectedGroup.filter( ( item ) => item.allow );\n    if ( selected.length === 0 ) {\n      this.dataSource[ this.selectedGroupIndex ].checked = false;\n      return;\n    }\n    (selected.length === this.selectedGroup.length) ? this.dataSource[ this.selectedGroupIndex ].checked = true :\n      this.dataSource[ this.selectedGroupIndex ].checked = 'indeterminate';\n  }\n\n  emitChange() {\n    const allowed = [];\n    this.dataSource.forEach( ( item ) => {\n      item[ this.keyPermissions ].forEach( ( permission: Permission ) => {\n        if (permission[ 'allow' ]) {\n         const clone = Object.assign({}, permission);\n         delete clone['allow'];\n         allowed.push(clone);\n        }\n      });\n    });\n    this.changePermission.emit(allowed);\n  }\n\n  setSelectedGroup() {\n    if (this.permissionGroup.length > 0) {\n      this.dataSourceSelected = this.permissionGroup.filter( ( item ) => item.selected )[ 0 ].permissions;\n      return;\n    }\n    return [];\n  }\n\n  selectGroup( selectGroup: PermissionGroupDirective, index: number ) {\n    if (selectGroup) {\n      this.deselectGroups( selectGroup );\n      this.selectedGroupIndex = index;\n      this.selectedGroup = selectGroup.permissions;\n      this.dataSourceSelected = selectGroup.permissions;\n      this.selected = true;\n    }\n  }\n\n  deselectGroups( selectGroup ) {\n    this.permissionGroup.forEach( ( item ) => {\n      item.selected = selectGroup === item;\n    } );\n  }\n\n  filterByGroup( term ) {\n    const filtered = this.data.filter( ( item: PermissionDataConfig ) =>\n      item[ this.keyGroup ].toLowerCase().includes( term.toLowerCase() ) );\n    this.dataSource = JSON.parse( JSON.stringify( filtered ) );\n    this.handleChangePermissions();\n  }\n\n  filterByRule( term ) {\n    this.dataSourceSelected = this.selectedGroup.filter( ( item: Permission ) =>\n      item[ this.keyPermissionDescription ].toLowerCase().includes( term.toLowerCase() ) );\n  }\n\n  setFirstPermissionSelected() {\n    setTimeout( () => {\n      this.keyManagerPermissionList.setFirstItemActive();\n    }, 100 );\n  }\n\n  setFirstGroupSelected() {\n    setTimeout( () => {\n      this.keyManagerPermissionGroup.setFirstItemActive();\n      this.selectGroup( this.permissionGroup.toArray()[ 0 ], 0 );\n      this.handleCheckPermission();\n    }, 100 );\n  }\n\n  setUpDataSource() {\n    this.dataSource = JSON.parse( JSON.stringify( this.data ) );\n    this.setFirstGroupSelected();\n    this.handleChangePermissions();\n  }\n\n  setRightListFocus() {\n    this.keyManagerPermissionList.setFirstItemActive();\n  }\n\n  setLeftListFocus() {\n    this.keyManagerPermissionGroup.setActiveItem( this.selectedGroupIndex );\n  }\n\n  onCheckGroup( checked: boolean | string ) {\n    setTimeout( () => {\n      this.selectedGroup.forEach( ( item: Permission ) => {\n        item[ 'allow' ] = <boolean>checked;\n      } );\n      this.emitChange();\n    } );\n  }\n\n  handleKeyManager( $event: KeyboardEvent, manager: FocusKeyManager<any> ) {\n    manager.onKeydown( $event );\n  }\n\n  detectChanges() {\n    this.changes.detectChanges();\n  }\n\n  handleSelectPermission( $event: Event, item: Permission ) {\n    this.stopEvent( $event );\n    item[ 'allow' ] = !item[ 'allow' ];\n    this.handleCheckPermission();\n    this.emitChange();\n  }\n\n  handleSpaceSelect( $event: Event, item: PermissionDataConfig ) {\n    this.stopEvent( $event );\n    if ( item.checked === 'indeterminate' ) {\n      item.checked = true;\n      return this.onCheckGroup( item.checked );\n    }\n    item.checked = !item.checked;\n    this.onCheckGroup( item.checked );\n  }\n\n  stopEvent( $event: Event ) {\n    $event.preventDefault();\n    $event.stopPropagation();\n  }\n\n  inputFilterGroup( $event ) {\n    this.filterGroup.next( $event );\n  }\n\n  inputFilterPermissions( $event ) {\n    this.filterPermissions.next( $event );\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {\n    if ( changes[ 'permissions' ] ) {\n      this.handleChangePermissions();\n    }\n    if (changes['data']) {\n      this.setUpDataSource();\n      if (!changes['data'].firstChange) {\n        this.loading = false;\n      }\n    }\n  }\n\n\n}\n","<div [class]=\"'tl-permissions ' + color\" [style.height]=\"height\">\n  <div class=\"ui-wrapper-permissions\" [style.height]=\"height\">\n    <div class=\"ui-permissions-header\">\n      <div class=\"ui-panel-search-1\">\n        <tl-input #filterGroup\n                  (input)=\"inputFilterGroup($event.target.value)\"\n                  (keydown.ArrowDown)=\"setFirstGroupSelected()\"\n                  (clear)=\"setUpDataSource(); setFirstGroupSelected()\"\n                  [flatBorder]=\"true\"\n                  [withBorder]=\"false\"\n                  [iconBefore]=\"'ion ion-ios-search'\" [placeholder]=\"searchGroup\"\n                  [clearButton]=\"true\" [height]=\"'30px'\">\n        </tl-input>\n      </div>\n      <div class=\"ui-panel-search-2\">\n        <div class=\"ui-panel-search\">\n          <tl-input\n            #filterPermission\n            (input)=\"inputFilterPermissions($event.target.value)\"\n            (keydown.ArrowDown)=\"setFirstPermissionSelected()\"\n            (clear)=\"setSelectedGroup(); setFirstPermissionSelected()\"\n            [flatBorder]=\"true\"\n            [withBorder]=\"false\"\n            [iconBefore]=\"'ion ion-ios-search'\"\n            [placeholder]=\"searchFunctionality\"\n            [clearButton]=\"true\" [height]=\"'30px'\">\n          </tl-input>\n        </div>\n        <div class=\"ui-check-header\">\n          <div><span>{{ allowColumnText }}</span></div>\n        </div>\n      </div>\n    </div>\n    <div class=\"ui-container-permissions\">\n      <div class=\"ui-permissions-panel\">\n        <div class=\"ui-loader-wrapper\" *ngIf=\"loading\">\n          <div class=\"ui-loader\">\n            <tl-loader></tl-loader>\n          </div>\n          <span class=\"ui-loader-message\">{{ loadingMessage }}</span>\n        </div>\n        <div class=\"nothing-shown\" *ngIf=\"dataSource?.length === 0 && !loading\">\n          <span class=\"not-found-text\">{{ notFound }}</span>\n        </div>\n        <ul #listGroup class=\"ui-permission-list\" [style.display]=\"dataSource?.length > 0 ? 'block' : 'none'\">\n          <li tabindex=\"-1\" *ngFor=\"let item of dataSource; let i = index\"\n              permissionGroup\n              [permissions]=\"item[keyPermissions]\"\n              (selectGroup)=\"selectGroup($event, i)\"\n              (click)=\"keyManagerPermissionGroup.setActiveItem(i)\"\n              (keydown)=\"handleKeyManager($event, keyManagerPermissionGroup)\"\n              (keydown.ArrowRight)=\"setRightListFocus()\"\n              (keydown.space)=\"handleSpaceSelect($event, item)\">\n            <span>{{ item[keyGroup] }}</span>\n            <span class=\"ui-checkbox\">\n            <tl-checkbox [label]=\"' '\"\n                         (checkBox)=\"onCheckGroup($event)\"\n                         [(ngModel)]=\"item.checked\"\n                         [indeterminate]=\"item.checked === 'indeterminate'\"\n                         [color]=\"'primary'\">\n            </tl-checkbox>\n          </span>\n          </li>\n        </ul>\n      </div>\n      <div class=\"ui-permissions-detail-panel\">\n        <div class=\"ui-loader-wrapper\" *ngIf=\"loading\">\n          <div class=\"ui-loader\">\n            <tl-loader></tl-loader>\n          </div>\n          <span class=\"ui-loader-message\">{{ loadingMessage }}</span>\n        </div>\n        <div class=\"nothing-shown\" *ngIf=\"(!selected || dataSourceSelected?.length === 0) && !loading\">\n          <i *ngIf=\"dataSourceSelected?.length !== 0 && !selected\" class=\"ion-android-time\"></i>\n          <span *ngIf=\"dataSourceSelected?.length === 0\" class=\"not-found-text\">{{ notFound }}</span>\n        </div>\n        <ul #listPermission class=\"ui-permission-list\" [style.display]=\"selected ? 'block' : 'none'\">\n          <li tabindex=\"-1\" *ngFor=\"let item of dataSourceSelected; let i = index\"\n              role=\"option\"\n              (click)=\"keyManagerPermissionList.setActiveItem(i)\"\n              (keydown)=\"handleKeyManager($event, keyManagerPermissionList)\"\n              (keydown.space)=\"handleSelectPermission($event, item)\"\n              (keydown.ArrowLeft)=\"setLeftListFocus()\"\n              class=\"ui-detail-list\">\n            <span>{{ item[keyPermissionDescription] }}</span>\n            <div class=\"ui-checkbox permission\">\n              <tl-checkbox [label]=\"' '\"\n                           [(ngModel)]=\"item.allow\"\n                           (checkBox)=\"handleCheckPermission(); emitChange()\"\n                           [color]=\"'primary'\">\n              </tl-checkbox>\n            </div>\n          </li>\n        </ul>\n      </div>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlPermissions } from './permissions';\nimport { CheckBoxModule } from '../checkbox/index';\nimport { InputModule } from '../input/index';\nimport { PermissionGroupDirective } from './parts/directives/permission-group.directive';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { MiscModule } from '../misc/index';\nimport { LoaderModule } from '../loader/index';\n\n@NgModule({\n  imports: [\n    A11yModule,\n    CommonModule,\n    FormsModule,\n    InputModule,\n    CheckBoxModule,\n    LoaderModule,\n    MiscModule\n  ],\n  declarations: [\n    TlPermissions,\n    PermissionGroupDirective\n  ],\n  exports: [\n    TlPermissions,\n    PermissionGroupDirective\n  ]\n})\nexport class PermissionsModule {}\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n export class Permission {\n   description: number | string;\n   permission: string;\n }\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, OnInit, Input, SimpleChanges, OnChanges,\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-progressbar',\n  templateUrl: './progressbar.html',\n  styleUrls: [ './progressbar.scss' ],\n} )\nexport class TlProgressBar implements OnInit, OnChanges {\n\n  @Input() min = 0;\n\n  @Input() max = 100;\n\n  @Input() position = 0;\n\n  @Input() unit = '';\n\n  @Input() height = '15px';\n\n  @Input() shape: 'default' | 'rounded' = 'rounded';\n\n  @Input() progressInfo: 'none' | 'percentage' | 'detailed' = 'percentage';\n\n  @Input() mode: 'determinate' | 'indeterminate' = 'determinate';\n\n  @Input() color: 'basic' | 'primary' | 'success' | 'danger' | 'warning' | 'information' = 'primary';\n\n  constructor() {}\n\n  ngOnInit() {}\n\n  getProgressDescription() {\n    return Math.round( ((this.position - this.min) / (this.max - this.min)) * 100 );\n  }\n\n  ngOnChanges( change: SimpleChanges ) {\n    if ( change.progress ) {\n      if (this.position < this.min) {\n        this.position = this.min;\n      }\n      if ( (!change.progress.firstChange) && isNaN( change.progress.currentValue ) ) {\n        this.position = 0;\n      }\n    }\n  }\n\n}\n\n","<div class=\"wrapper-content-progress\">\n  <div class=\"ui-progressbar-wrapper\" [class.border-rounded]=\"shape === 'rounded'\" [ngClass]=\"color\">\n    <div *ngIf=\"mode === 'determinate'\" class=\"ui-progress-description\" [style.lineHeight]=\"height\">\n      <span *ngIf=\"progressInfo === 'percentage' || progressInfo === 'detailed'\">{{getProgressDescription()}} %</span>\n      <span class=\"ui-progress-detail\" *ngIf=\"progressInfo === 'detailed'\" [style.lineHeight]=\"height\">({{position}} {{unit}} / {{max}} {{unit}})</span>\n    </div>\n    <div class=\"ui-progressbar\" [style.height]=\"height\">\n      <div *ngIf=\"mode === 'determinate'\" [style.transformOrigin]=\"'left'\"\n           [style.transform]=\"'scaleX(' + (position - min) / (max - min) + ')'\"\n           class=\"determinate-progress\">\n      </div>\n      <div *ngIf=\"mode === 'indeterminate'\" [style.transform]=\"'translate3d(' + (position - min / 100) + ', 0, 0)'\"\n           class=\"indeterminate-progress\">\n      </div>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlProgressBar } from './progressbar';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    TlProgressBar,\n  ],\n  exports: [\n    TlProgressBar,\n  ],\n} )\nexport class ProgressBarModule {\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterViewInit,\n  Component, Input, OnChanges,\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-radiobutton',\n  template: '',\n} )\nexport class TlRadioButton implements AfterViewInit {\n\n  @Input() label = '';\n\n  @Input() value = '';\n\n  @Input() tabindex = 0;\n\n  @Input() disabled = null;\n\n  @Input() checked = false;\n\n  ngAfterViewInit() {\n    if ( !this.value ) {\n      throw new EvalError( 'The [value] property is required!' );\n    }\n    if ( !this.label ) {\n      throw new EvalError( 'The [label] property is required!' );\n    }\n  }\n\n}\n\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, ContentChild, ContentChildren, QueryList, Input, ViewChild, AfterViewInit, Output,\n  EventEmitter, OnChanges, Optional, Self, AfterContentInit, OnDestroy,\n} from '@angular/core';\n\nimport { TlRadioButton } from './radiobutton';\nimport { MakeProvider } from '../core/base/value-accessor-provider';\nimport { KeyEvent } from '../core/enums/key-events';\nimport {FormControlName, NG_ASYNC_VALIDATORS, NG_VALIDATORS, NgControl, NgModel} from '@angular/forms';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\nimport {FixedPositionDirective} from '../misc/fixed-position.directive';\nimport {Subscription} from 'rxjs';\n\nconst Orientation = {\n  VERTICAL: 'vertical',\n  HORIZONTAL: 'horizontal'\n};\n\n@Component( {\n  selector: 'tl-radio-group',\n  templateUrl: './radiogroup.html',\n  styleUrls: [ './radiobutton.scss' ]\n} )\nexport class TlRadioGroup extends ValueAccessorBase<string> implements AfterContentInit, OnDestroy {\n\n  @Input() labelGroup = '';\n\n  @Input() orientation = Orientation.HORIZONTAL;\n\n  @Input() colorSelected = '';\n\n  @ViewChild( 'radiobutton', {static: true} ) radiobutton;\n\n  @ContentChildren( TlRadioButton ) listRadioButton: QueryList<TlRadioButton>;\n\n  @Output() private onCheckRadio: EventEmitter<any> = new EventEmitter();\n\n  @Output() private onFocusRadio: EventEmitter<any> = new EventEmitter();\n\n  public itemSelected;\n\n  public name;\n\n  public tabindex;\n\n  private subscription = new Subscription();\n\n  constructor(@Optional() @Self() public ngControl: NgControl) {\n    super();\n    this.setControl();\n  }\n\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.handleInitialValue();\n    this.validateProperty();\n    this.validateCheckedRadios();\n    this.listenModelChange();\n  }\n\n  listenModelChange() {\n    if ( this.control ) {\n      this.subscription.add(this.control.valueChanges.subscribe((value) => {\n        this.handleModelValue();\n      }));\n    }\n  }\n\n  validateProperty() {\n    if ( (this.orientation !== Orientation.VERTICAL) && (this.orientation !== Orientation.HORIZONTAL) ) {\n      throw new EvalError( 'The property [orientation] only receive /vertical/ and /horizontal/ values!' );\n    }\n  }\n\n  handleInitialValue() {\n    if ( this.value ) {\n      this.handleModelValue();\n    } else {\n      this.checkFirstItem();\n      this.handleChecked();\n    }\n  }\n\n  handleModelValue() {\n    this.listRadioButton.toArray().forEach( ( item, index, array ) => {\n      if ( this.value === item.value ) {\n        this.itemSelected = item;\n      }\n    } );\n  }\n\n  handleChecked() {\n    this.listRadioButton.toArray().forEach( ( item ) => {\n      this.setItemChecked( item );\n    } );\n  }\n\n  handleKeyDown( $event: KeyboardEvent ) {\n    switch ( $event.code ) {\n      case KeyEvent.ARROWDOWN:\n        $event.preventDefault();\n        break;\n      case KeyEvent.ARROWUP:\n        $event.preventDefault();\n        break;\n    }\n  }\n\n  setItemChecked( item ) {\n    if ( item.checked ) {\n      return this.checkRadio( item );\n    }\n  }\n\n  checkFirstItem() {\n    setTimeout( () => {\n      this.checkRadio( this.listRadioButton.toArray()[ 0 ] );\n    }, 1 );\n  }\n\n  getCheckedRadios() {\n    return this.listRadioButton.filter( ( item ) => {\n      return item.checked;\n    } );\n  }\n\n  validateCheckedRadios() {\n    if ( this.getCheckedRadios().length > 1 ) {\n      throw new EvalError( 'Only one radiobutton with [checked] property is allowed' );\n    }\n  }\n\n  checkRadio( item, $event? ) {\n    if ($event && item.disabled) {\n      return;\n    }\n    this.value = item.value;\n    this.itemSelected = item;\n    this.onCheckRadio.emit( this.itemSelected );\n  }\n\n  focusRadio( item ) {\n    this.onFocusRadio.emit( item );\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n\n}\n\n","<ng-content></ng-content>\n<div class=\"group-radios\" [style.display]=\"orientation == 'vertical' ? 'grid' : 'inline-flex'\">\n    <div *ngFor=\"let item of listRadioButton.toArray()\" class=\"radio-container\" [style.padding-top]=\"orientation === 'vertical' ? '10px' : '0'\">\n        <input #radiobutton\n               [type]=\"'radio'\"\n               [attr.name]=\"name\"\n               (click)=\"checkRadio(item, $event)\"\n               [tabindex]=\"tabindex\"\n               [attr.disabled]=\"item.disabled\"\n               [value]=\"item.value\"\n               (keydown)=\"handleKeyDown($event)\"\n               (focus)=\"focusRadio(item)\"\n               [(ngModel)]=\"value\">\n        <span class=\"radio-ring\" [ngClass]=\"{'disabled': item.disabled }\"></span>\n        <span\n          [style.top]=\"orientation == 'vertical' ? '13px' : '3px'\"\n          *ngIf=\"itemSelected === item\"\n          [style.background-color]=\"colorSelected\" class=\"radio-selected\" [ngClass]=\"{'disabled': item.disabled}\"></span>\n        <label (click)=\"checkRadio(item, $event)\" class=\"-label\">{{item.label}}</label>\n    </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlRadioButton } from './radiobutton';\nimport { TlRadioGroup } from './radiogroup';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        FormsModule\n    ],\n    declarations: [\n        TlRadioButton,\n        TlRadioGroup\n    ],\n    exports: [\n        TlRadioButton,\n        TlRadioGroup\n    ],\n})\nexport class RadioButtonModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Input, Component, OnInit, Output, EventEmitter,\n  SimpleChanges, OnChanges, AfterContentInit, ViewContainerRef, ComponentFactoryResolver, Renderer2,\n  ElementRef\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { TlBackdrop } from '../../../core/components/backdrop/backdrop';\n\n@Component( {\n  selector: 'tl-sidebar',\n  templateUrl: './sidebar.html',\n  styleUrls: [ './sidebar.scss' ],\n} )\n\nexport class TlSidebar implements OnInit, AfterContentInit, OnChanges {\n\n  @Input() opened = false;\n\n  @Input() mode: 'push' | 'over' | 'slide' = 'slide';\n\n  @Input() width = 300;\n\n  @Input() position: 'start' | 'end' = 'start';\n\n  @Input() dockWidth = 80;\n\n  @Input() dock = false;\n\n  @Output() openedChange: EventEmitter<boolean> = new EventEmitter();\n\n  @Output() open: EventEmitter<any> = new EventEmitter();\n\n  @Output() close: EventEmitter<any> = new EventEmitter();\n\n  public docked = false;\n\n  public toggleChange = new Subject();\n\n  private sidebarWidth;\n\n  private backdrop;\n\n  constructor( private renderer: Renderer2,\n               private element: ElementRef,\n               private factory: ComponentFactoryResolver,\n               private view: ViewContainerRef ) {\n  }\n\n  ngOnInit() {\n    this.sidebarWidth = this.width;\n    this.handleDockAndPosition();\n    this.handleDockSidebar();\n    this.listenScroll();\n  }\n\n  ngAfterContentInit() {\n    setTimeout( () => {\n      this.toggleChangeEmitter();\n    }, 1 );\n  }\n\n  toggle() {\n    this.handleBackdropOnOver();\n    if ( this.docked ) {\n      this.openDockSidebar();\n      return;\n    }\n\n    if ( this.dock && !this.docked ) {\n      this.closeDockSidebar();\n      return;\n    }\n\n    this.opened = !this.opened;\n    this.toggleChangeEmitter();\n  }\n\n  openDockSidebar() {\n    this.setDockOpened();\n    this.opened = true;\n    this.emitOpenClose();\n    this.toggleChangeEmitter();\n  }\n\n  closeDockSidebar() {\n    this.setDockClosed();\n    this.opened = false;\n    this.emitOpenClose();\n    this.toggleChangeEmitter();\n  }\n\n  handleDockAndPosition() {\n    if ( this.dock && this.position === 'end' ) {\n      throw Error( 'The Dock property is unavailable in [end] position' );\n    }\n  }\n\n  handleBackdropOnOver() {\n    if ( this.isModeOver() ) {\n      this.createBackdrop();\n    }\n  }\n\n  handleDockSidebar() {\n    if ( this.dock && !this.opened ) {\n      this.docked = true;\n      this.width = this.dockWidth;\n      this.opened = false;\n    }\n  }\n\n  listenScroll() {\n    if ( this.isModeOver() ) {\n      this.renderer.listen( document, 'scroll', ( $event ) => {\n        this.setBackdropOptions();\n      } );\n    }\n  }\n\n  toggleChangeEmitter() {\n    this.toggleChange.next( { 'sidebar': this } );\n  }\n\n  emitOpenClose() {\n    this.opened ? this.open.emit() : this.close.emit();\n  }\n\n  isChangeDockOpen( change ) {\n    return (!change[ 'opened' ].currentValue) && (this.dock);\n  }\n\n  isChangeDockClose( change ) {\n    return (change[ 'opened' ].currentValue) && (this.dock);\n  }\n\n  setDockClosed() {\n    this.docked = true;\n    this.width = this.dockWidth;\n    this.handleRemoveBackdrop();\n  }\n\n  handleRemoveBackdrop() {\n    if ( this.backdrop ) {\n      this.removeBackdrop();\n    }\n  }\n\n  setDockOpened() {\n    this.docked = false;\n    this.width = this.sidebarWidth;\n  }\n\n  isFirstChange( change ) {\n    return change[ 'opened' ].firstChange;\n  }\n\n  isModeOver() {\n    return this.mode === 'over';\n  }\n\n  setBackdropOptions() {\n    if ( this.backdrop ) {\n      (<TlBackdrop>this.backdrop.instance).setBackdropOptions(\n        {\n          'width': this.element.nativeElement.offsetParent.offsetWidth + 'px',\n          'height': this.element.nativeElement.offsetParent.offsetHeight + 'px',\n          'top': this.element.nativeElement.offsetParent.getBoundingClientRect().top + 'px',\n          'left': this.element.nativeElement.offsetParent.getBoundingClientRect().left + 'px',\n          'zIndex': 1\n        }\n      );\n    }\n  }\n\n  createBackdrop() {\n    if ( !this.backdrop && this.mode === 'over' ) {\n      const componentFactory = this.factory.resolveComponentFactory( TlBackdrop );\n      this.backdrop = this.view.createComponent( componentFactory );\n      this.setBackdropOptions();\n      (<TlBackdrop>this.backdrop.instance).click.subscribe( () => {\n        this.dock ? this.setDockClosed() : this.opened = false;\n        this.removeBackdrop();\n        this.openedChange.emit( this.opened );\n      } );\n      return;\n    }\n    this.handleRemoveBackdrop();\n  }\n\n\n\n  removeBackdrop() {\n    if (this.backdrop) {\n      this.view.remove( this.view.indexOf( this.backdrop ) );\n      this.backdrop = undefined;\n    }\n  }\n\n  ngOnChanges( change: SimpleChanges ) {\n    if ( change[ 'opened' ] ) {\n      this.openedChange.emit( change[ 'opened' ].currentValue );\n      if ( this.isModeOver() && !this.opened ) {\n        this.removeBackdrop();\n      }\n      if ( this.isModeOver() && this.opened ) {\n        this.createBackdrop();\n      }\n      if ( this.isChangeDockOpen( change ) && (!this.isFirstChange( change )) ) {\n        this.setDockClosed();\n        this.emitOpenClose();\n        this.toggleChangeEmitter();\n        return;\n      }\n      if ( this.isChangeDockClose( change ) && (!this.isFirstChange( change )) ) {\n        this.setDockOpened();\n        this.emitOpenClose();\n        this.toggleChangeEmitter();\n        return;\n      }\n      this.toggleChangeEmitter();\n    }\n  }\n\n}\n","<div class=\"sidebar-wrapper\">\n  <div class=\"ui-sidebar\"\n       [style.width]=\"width + 'px'\"\n       [ngClass]=\"{\n       'start': position === 'start',\n       'end': position === 'end',\n       'animate-start': opened && position === 'start',\n       'animate-end': opened && position === 'end',\n       'animate-dock': dock && docked && !opened\n       }\">\n    <ng-content></ng-content>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, OnInit, HostBinding, ElementRef,\n  Renderer2, Input, ChangeDetectionStrategy, ChangeDetectorRef\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-sidebar-content',\n  templateUrl: './sidebar-content.html',\n  styleUrls: [ './sidebar-content.scss' ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n} )\n\nexport class TlSidebarContent implements OnInit {\n\n  @Input()\n  @HostBinding( 'style.height' )\n  public height = '100%';\n\n  @HostBinding( 'style.width' )\n  public width = '100%';\n\n  public transform = '';\n\n  public innerWidth = '';\n\n  public start = { width: 0, mode: '', docked: false, opened: false, dockWidth: 0, dock: false };\n\n  public end = { width: 0, mode: '', opened: false };\n\n  constructor( private element: ElementRef,\n               private change: ChangeDetectorRef ) {\n  }\n\n  ngOnInit() {\n    this.innerWidth = this.width;\n  }\n\n  setMovement( value ) {\n    this.setOptionsMovement( value );\n    switch ( value.sidebar.position ) {\n      case 'start':\n        this.moveSidebarStart();\n        break;\n      case 'end':\n        this.moveSidebarEnd();\n        break;\n    }\n  }\n\n  setOptionsMovement( value ) {\n    if ( value.sidebar.position === 'start' ) {\n      this.setStart( value );\n    } else {\n      this.setEnd( value );\n    }\n  }\n\n  setMovementInitialDock() {\n    const endWidth = this.end.opened && this.end.mode === 'slide' ? this.end.width : 0;\n    this.innerWidth = (this.element.nativeElement.offsetWidth - endWidth  - this.start.dockWidth + 'px');\n    this.setTransformDock();\n    this.change.detectChanges();\n  }\n\n  setTransformDock() {\n    this.transform = this.start.dockWidth + 'px';\n  }\n\n  moveSidebarStart() {\n    switch ( this.start.mode ) {\n      case 'over':\n       if ( this.start.dock ) {\n         this.setMovementInitialDock();\n       }\n       break;\n      case 'push':\n        this.handlePushStart();\n        break;\n      case 'slide':\n        this.handleSlideStart();\n        break;\n    }\n    this.change.detectChanges();\n  }\n\n  moveSidebarEnd() {\n    switch ( this.end.mode ) {\n      case 'push':\n        this.handlePushEnd();\n        break;\n      case 'slide':\n        this.handleSlideEnd();\n        break;\n    }\n    this.change.detectChanges();\n  }\n\n  handleSlideStart() {\n    if ( !this.start.opened && this.start.docked ) {\n      return this.setMovementInitialDock();\n    }\n\n    if ( this.start.opened ) {\n      this.setTransformStartWidth();\n      this.setWidthWrapperStart();\n      if ( this.isNotOverAndOpened() ) {\n        return this.setWidthWrapperStartAndEnd();\n      }\n      return;\n    }\n\n    if ( this.end.opened && this.end.mode === 'push' ) {\n      this.innerWidth = this.width;\n      this.transform = '-' + this.end.width + 'px';\n      return;\n    }\n\n    if ( this.end.opened ) {\n      this.transform = '0';\n      this.setWidthWrapperEnd();\n      return;\n    }\n\n    if ( (!this.start.opened) && (this.start.dock) ) {\n      return this.setMovementInitialDock();\n    }\n\n    this.transform = '0';\n    this.innerWidth = this.width;\n  }\n\n  handlePushStart() {\n    if ( this.start.dock && this.start.docked ) {\n      return this.setMovementInitialDock();\n    }\n\n    if ( this.start.opened ) {\n      return this.setTransformStartWidth();\n    }\n\n    if ( this.end.opened ) {\n      this.transform = '0';\n      return this.setWidthWrapperEnd();\n    }\n\n    this.transform = '0';\n    this.innerWidth = this.width;\n  }\n\n  handleSlideEnd() {\n\n    if ( this.start.opened && this.start.docked ) {\n      return;\n    }\n\n    if ( !this.start.opened && this.start.docked && !this.end.opened ) {\n      return this.setMovementInitialDock();\n    }\n\n    if ( this.isNotOverAndOpened() ) {\n      this.setWidthWrapperStartAndEnd();\n      this.setTransformStartWidth();\n      return;\n    }\n\n    if ( this.start.docked && this.end.opened ) {\n      this.setWidthWrapperDockEnd();\n      this.setTransformDock();\n      return;\n    }\n\n    if ( this.end.opened ) {\n      this.transform = '0';\n      this.setWidthWrapperEnd();\n      return;\n    }\n\n    if ( this.start.opened && this.start.mode === 'push' ) {\n      this.innerWidth = this.width;\n      return this.setTransformStartWidth();\n    }\n\n    if ( this.start.opened && this.start.mode !== 'over') {\n      this.setWidthWrapperStart();\n      this.setTransformStartWidth();\n      return;\n    }\n\n    this.innerWidth = this.width;\n\n  }\n\n  setWidthWrapperDockEnd() {\n    this.innerWidth = (this.element.nativeElement.offsetWidth - this.end.width - this.start.dockWidth) + 'px';\n  }\n\n  isNotOverAndOpened() {\n    return ((this.start.opened) && (this.start.mode !== 'over')) && ((this.end.opened) && (this.end.mode !== 'over'));\n  }\n\n  setTransformEndWidth() {\n    this.transform = this.end.width + 'px';\n  }\n\n  setTransformStartWidth() {\n    this.transform = this.start.width + 'px';\n    this.change.detectChanges();\n  }\n\n  setWidthWrapperStartAndEnd() {\n    this.innerWidth = (this.element.nativeElement.offsetWidth - this.start.width - this.end.width) + 'px';\n  }\n\n  setWidthWrapperStart() {\n    this.innerWidth = (this.element.nativeElement.offsetWidth - this.start.width) + 'px';\n  }\n\n  setWidthWrapperEnd() {\n    this.innerWidth = (this.element.nativeElement.offsetWidth - this.end.width) + 'px';\n  }\n\n  handlePushEnd() {\n    if ( this.start.dock && !this.end.opened ) {\n      return this.setMovementInitialDock();\n    }\n\n    if ( this.end.opened && !this.start.opened ) {\n      this.innerWidth = this.width;\n      return this.transform = '-' + this.end.width + 'px';\n    }\n\n    if ( !this.start.opened && !this.start.dock ) {\n      this.transform = '0';\n      this.innerWidth = this.width;\n      return;\n    }\n\n    if ( !this.end.opened && this.start.opened ) {\n      this.setTransformStartWidth();\n      this.setWidthWrapperStart();\n      return;\n    }\n\n    if ( this.start.dock && !this.end.opened ) {\n      return this.setMovementInitialDock();\n    }\n\n    this.transform = '-' + this.end.width + 'px';\n    this.innerWidth = this.width;\n\n  }\n\n  setEnd( value ) {\n    this.end.opened = value.sidebar.opened;\n    this.end.mode = value.sidebar.mode;\n    this.end.width = value.sidebar.width;\n  }\n\n  setStart( value ) {\n    this.start.opened = value.sidebar.opened;\n    this.start.dock = value.sidebar.dock;\n    this.start.mode = value.sidebar.mode;\n    this.start.dockWidth = value.sidebar.dockWidth;\n    this.start.docked = value.sidebar.docked;\n    this.start.width = value.sidebar.width;\n  }\n\n}\n","<div class=\"ui-sidebar-content-wrapper\" [style.left]=\"transform\" [style.width]=\"innerWidth\">\n    <ng-content></ng-content>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  AfterContentInit,\n  Component, ContentChild, ContentChildren, forwardRef, OnDestroy, QueryList, Renderer2,\n} from '@angular/core';\nimport { TlSidebar } from './parts/sidebar/sidebar';\nimport { TlSidebarContent } from './parts/sidebar-content/sidebar-content';\nimport { SidebarService } from '../modal/services/sidebar.service';\nimport { Subscription } from 'rxjs';\nimport {FixedPositionDirective} from '../misc/fixed-position.directive';\n\n@Component( {\n  selector: 'tl-sidebar-container',\n  templateUrl: './sidebar-container.html',\n  styleUrls: [ './sidebar-container.scss' ],\n} )\n\nexport class TlSidebarContainer implements AfterContentInit, OnDestroy {\n\n  @ContentChildren( forwardRef( () => TlSidebar ) ) sidebar: QueryList<TlSidebar>;\n\n  @ContentChild( TlSidebarContent, {static: true} ) sidebarContent;\n\n  private subscription: Subscription = new Subscription();\n\n  constructor( private sidebarService: SidebarService, private renderer: Renderer2 ) {}\n\n  ngAfterContentInit() {\n    this.setSidebarMovement();\n    this.listenResize();\n  }\n\n  setSidebarMovement() {\n    this.sidebar.forEach( ( item ) => {\n      this.subscription.add( item.toggleChange.subscribe( ( value ) => {\n        this.sidebarContent.setMovement( value );\n        this.sidebarService.setChange( value );\n      } ) );\n    } );\n  }\n\n  listenResize() {\n    this.subscription.add(this.renderer.listen( window, 'resize', () => {\n      this.sidebar.forEach( ( item ) => {\n        this.sidebarContent.setMovement( { sidebar: item } );\n      } );\n    } ));\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n\n}\n","<div class=\"ui-sidebar-wrapper\">\n  <div class=\"ui-sidebar-container\">\n    <div class=\"ui-sidebar-content\">\n      <ng-content></ng-content>\n    </div>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlSidebarContainer } from './sidebar-container';\nimport { TlSidebar } from './parts/sidebar/sidebar';\nimport { TlSidebarContent } from './parts/sidebar-content/sidebar-content';\nimport { TlBackdrop } from '../core/components/backdrop/backdrop';\nimport { BackdropModule } from '../core/components/backdrop/index';\n\n@NgModule( {\n  imports: [\n    BackdropModule,\n    CommonModule,\n    FormsModule\n  ],\n  declarations: [\n    TlSidebar,\n    TlSidebarContainer,\n    TlSidebarContent\n  ],\n  exports: [\n    TlSidebar,\n    TlSidebarContainer,\n    TlSidebarContent\n  ]\n} )\nexport class SidebarModule {\n}\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n  selector: 'tl-skeleton',\n  templateUrl: './skeleton.html',\n  styleUrls: ['./skeleton.scss'],\n})\nexport class TlSkeleton implements OnInit {\n\n  @Input() variant: 'text' | 'circle' | 'rect' = 'rect';\n\n  @Input() animation: 'none' | 'pulse' | 'wave' = 'pulse';\n\n  @Input() width = '150px';\n\n  @Input() height = '100px';\n\n  constructor() {}\n\n  ngOnInit() {}\n\n}\n","<span *ngIf=\"variant === 'rect'\" class=\"tl-skeleton rect\" [class]=\"'animation-'+animation\" [style.width]=\"width\" [style.height]=\"height\"></span>\n<span *ngIf=\"variant === 'circle'\" class=\"tl-skeleton circle\" [class]=\"'animation-'+animation\" [style.width]=\"width\" [style.height]=\"height\"></span>\n<span *ngIf=\"variant === 'text'\" class=\"tl-skeleton text\" [class]=\"'animation-'+animation\" [style.width]=\"width\"></span>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlSkeleton } from './skeleton';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  declarations: [\n    TlSkeleton\n  ],\n  exports: [\n    TlSkeleton\n  ]\n})\nexport class SkeletonModule {}\n","/*\n *\n *     MIT License\n *\n *     Copyright (c) 2019 Temainfo Sistemas\n *\n *     Permission is hereby granted, free of charge, to any person obtaining a copy\n *     of this software and associated documentation files (the \"Software\"), to deal\n *     in the Software without restriction, including without limitation the rights\n *     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *     copies of the Software, and to permit persons to whom the Software is\n *     furnished to do so, subject to the following conditions:\n *     The above copyright notice and this permission notice shall be included in all\n *     copies or substantial portions of the Software.\n *     THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *     SOFTWARE.\n * /\n */\nexport const ScheduleI18n = {\n  views: {\n    day: 'Day',\n    week: 'Week',\n    month: 'Month',\n    workWeek: 'Work Week',\n    dayList: 'Day List',\n    weekList: 'Week List',\n  },\n  buttons: {\n    addEvent: 'Add Event'\n  },\n  scaleNotFound: 'Scale Not Exists'\n};\n","import {Component, OnInit, Input, Output, EventEmitter, TemplateRef} from '@angular/core';\nimport { ViewType } from '../../types/view.type';\nimport { ScheduleI18n } from '../../i18n/schedule-i18n';\n\n@Component({\n  selector: 'tl-schedule-heading',\n  templateUrl: './heading.component.html',\n  styleUrls: ['./heading.component.scss']\n})\nexport class HeadingComponent implements OnInit {\n\n  @Input() views: Array<'day' | 'week' | 'month' | 'workWeek' | 'dayList' | 'weekList'> = ['day', 'dayList'];\n\n  @Input() defaultView: 'day' | 'week' | 'month' | 'workWeek' | 'dayList' | 'weekList'  = 'day';\n\n  @Input() currentDate = new Date();\n\n  @Input() texts = ScheduleI18n;\n\n  @Input() eventButtonTemplate: TemplateRef<any>;\n\n  @Output() changeView = new EventEmitter<ViewType>();\n\n  @Output() changeDate = new EventEmitter();\n\n  @Output() newEventClick = new EventEmitter();\n\n  constructor() { }\n\n  ngOnInit() {}\n}\n","<div class=\"ui-schedule-heading-wrapper\">\n  <div class=\"ui-schedule-heading-views\">\n    <div class=\"ui-schedule-views-choices\">\n      <tl-button-group [height]=\"'30px'\" >\n        <tl-button-group-item *ngFor=\"let view of views\"\n                              [width]=\"'100px'\"\n                              [text]=\"texts.views[view]\"\n                              [selected]=\"view === defaultView\"\n                              (click)=\"changeView.emit(view)\"\n        >\n        </tl-button-group-item>\n      </tl-button-group>\n\n    </div>\n  </div>\n  <div class=\"ui-schedule-heading-navigator\">\n    <!-- [type]=\"defaultView === 'weekList' ? 'rangeweek' : 'day'\" -->\n    <tl-navigator\n      [type]=\"'day'\"\n      [date]=\"currentDate\"\n      (clickNext)=\"changeDate.emit($event)\"\n      (clickPrevious)=\"changeDate.emit($event)\">\n    </tl-navigator>\n  </div>\n  <div class=\"ui-schedule-heading-tools\">\n    <ng-container *ngTemplateOutlet=\"eventButtonTemplate?eventButtonTemplate:defaultButton\"></ng-container>\n    <ng-template #defaultButton>\n      <tl-button (click)=\"newEventClick.emit()\" [text]=\"texts.buttons.addEvent\" [iconBeforeText]=\"'fas fa-plus'\" color=\"primary\"></tl-button>\n    </ng-template>\n  </div>\n</div>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport class SlotSettingsType {\n    constructor(\n    public slotCount: number,\n    public slotHight: number\n  ) {}\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport class WorkScaleType {\n  constructor(\n    public start: string,\n    public end: string,\n    public interval: number,\n    public expansed?: boolean,\n    public middle?: boolean,\n  ) {}\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { WorkScaleType } from '../types/work-scale.type';\n\n@Injectable()\nexport class WorkScaleService {\n\n  public workScale: WorkScaleType[];\n\n  public currentDate = new Date();\n\n  public timesCollection: Array<Array<Date>>;\n\n  public workScaleInMileseconds = [];\n\n  public updateScale = new EventEmitter<any>();\n\n  constructor( ) {}\n\n  reload( workScale: WorkScaleType | WorkScaleType[] ) {\n    this.setWorkScale( workScale );\n    this.createWorkScaleMileseconds();\n    this.generateTimes();\n  }\n\n  exitsWorkScale ( workScale ) {\n    return workScale && (\n      ( workScale as WorkScaleType ).hasOwnProperty('interval') ||\n      ( workScale as Array<WorkScaleType> ).length > 0\n    );\n  }\n\n  private setWorkScale( workScale: WorkScaleType | WorkScaleType[] ) {\n\n    if ( !this.exitsWorkScale( workScale ) ) {\n     return this.workScale = [];\n    }\n\n    if ( ( workScale as WorkScaleType ).hasOwnProperty('interval')  ) {\n      return this.workScale = new Array<WorkScaleType>(1).fill( workScale as WorkScaleType);\n    }\n\n    if ( ( workScale as Array<WorkScaleType> ).length > 0 ) {\n      this.workScale = workScale as WorkScaleType[];\n    }\n\n  }\n\n  private createWorkScaleMileseconds() {\n\n    this.workScaleInMileseconds = [];\n\n    if ( (this.workScale as Array<WorkScaleType>).length > 0 ) {\n      (this.workScale as Array<WorkScaleType>).forEach(( value: WorkScaleType, index, array) => {\n        if ( array.length > 0 ) {\n          this.workScaleInMileseconds.push({\n            start: this.transformHourToMileseconds( value.start ),\n            end: this.transformHourToMileseconds( value.end ),\n            interval: value.interval\n          });\n        }\n      });\n    }\n\n  }\n\n\n  transformHourToMileseconds( fullHour: string, currentDate = this.currentDate ) {\n    const hourSplited = fullHour.split(':');\n\n    const hours = Number(hourSplited[0]);\n    const minutes = Number(hourSplited[1]);\n    const year = currentDate.getFullYear();\n    const month = currentDate.getMonth();\n    const date = currentDate.getDate();\n\n    return new Date(year, month, date, hours, minutes).getTime();\n  }\n\n  transformMilesecondsToHour( fullHour: number ) {\n    const fullHourMS = new Date(fullHour);\n\n    const hours = String(fullHourMS.getHours()).padStart(2, '0');\n    const minutes = String(fullHourMS.getMinutes()).padStart(2, '0');\n\n    return `${hours}:${minutes}`;\n  }\n\n\n  private generateTimes() {\n    const MIN_TO_MILLESECOND = 60000;\n    this.timesCollection = new Array<Array<Date>>( (this.workScaleInMileseconds as Array<any>).length ).fill([]);\n\n    if ( (this.workScaleInMileseconds as Array<any>).length > 0 ) {\n      (this.workScaleInMileseconds as Array<any>).forEach(( value , index, array) => {\n        let currentHour_ms =  value.start;\n        let nextHourBreak_ms = value.start;\n\n        while ( currentHour_ms < value.end ) {\n          if ( currentHour_ms === nextHourBreak_ms  ) {\n            this.timesCollection[index] = [...this.timesCollection[index], new Date(nextHourBreak_ms) ] ;\n            nextHourBreak_ms =  nextHourBreak_ms + (value.interval * MIN_TO_MILLESECOND);\n          }\n          currentHour_ms++;\n        }\n      });\n    }\n\n    this.updateScale.emit( this.timesCollection );\n  }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { WorkScaleService } from './work-scale.service';\nimport { ScheduleDataSource } from '../types/datasource.type';\n\n@Injectable()\nexport class EventService {\n\n  public eventsOfDay: ScheduleDataSource[];\n\n  public events: ScheduleDataSource[];\n\n  public updateEvents = new EventEmitter<any>();\n\n  constructor( private workScaleService: WorkScaleService ) { }\n\n  loadEvents( events: ScheduleDataSource[] ) {\n    this.events = events;\n    this.updateEvents.emit( this.events );\n  }\n\n  getEventsOfDay() {\n    // if ( this.events === undefined ) { return []; }\n    // this.eventsOfDay = this.events.filter( ( event ) => {\n    //   return ( event.date.start >= this.workScaleService.startDayMilliseconds )\n    //     && ( event.date.end <= this.workScaleService.endDayMilliseconds );\n    // });\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport { Injectable } from '@angular/core';\nimport { HolidaysType } from '../types/holidays.type';\n\n@Injectable()\nexport class HolidayService {\n\n  constructor() { }\n\n  handleHoliday( holidays: HolidaysType[], currentDate ) {\n    for (let i = 0; i < holidays.length; i++) {\n      if ( this.sameDay( holidays[i].date, currentDate) ) {\n        return holidays[i];\n      }\n    }\n  }\n\n\n\n  private sameDay(d1, d2) {\n    return d1.getFullYear() === d2.getFullYear() &&\n      d1.getMonth() === d2.getMonth() &&\n      d1.getDate() === d2.getDate();\n  }\n\n}\n","export class Graph {\n  clusters = [];\n  nodes = {};\n}\n\nexport class Cluster {\n  nodes = {};\n  width = 0;\n  maxCliqueSize = 1;\n}\n\nexport class Node {\n  id = '';\n  start = 0;\n  end = 0;\n  neighbours = {};\n  cluster = null;\n  position = null;\n  biggestCliqueSize = 1;\n\n  constructor(id, start, end) {\n    this.id = id;\n    this.start = start;\n    this.end = end;\n    this.neighbours = {};\n    this.cluster = null;\n    this.position = null;\n    this.biggestCliqueSize = 1;\n  }\n}\n","/**\n * Undefined-safe function to access the property given by path parameter\n * @param object The object to read from\n * @param path The path to the property\n */\nexport function elvis(object: any, path: string): any | undefined {\n  return path ? path.split('.').reduce((value, key) => value && value[key], object) : object;\n}\n","import { Injectable, QueryList } from '@angular/core';\nimport { Cluster, Graph, Node } from '../types/graph';\nimport { elvis } from '../../core/helper/elvis';\nimport { ScheduleDataSource } from '../types/datasource.type';\n\nconst WIDTH_SCROLL = 17;\n\n@Injectable()\nexport class GenerateEventsService {\n\n  private heightSchedule = 0;\n\n  private widthSchedule = 0;\n\n  private events = [];\n\n  private originalEvents = [];\n\n  private workScaleInMileseconds = [];\n\n  private scheduleSlats: QueryList<any>;\n\n  constructor() {}\n\n  with(  events: ScheduleDataSource[] ) {\n    if (  this.scheduleSlats ) {\n      if ( events.length > 0 && this.scheduleSlats.length > 0 ) {\n        this.originalEvents = JSON.parse( JSON.stringify( events ) );\n        events = JSON.parse( JSON.stringify( events ) );\n\n        this.events = events;\n        this.transformDateToPixel();\n        return this.generateEvents();\n      }\n    }\n\n  }\n\n  initializeArray( workScaleInMileseconds, scheduleSlats: QueryList<any>  ) {\n    if ( scheduleSlats && scheduleSlats) {\n      if ( scheduleSlats.length > 0 && workScaleInMileseconds.length > 0 ) {\n        this.workScaleInMileseconds = workScaleInMileseconds;\n        this.scheduleSlats = scheduleSlats;\n        this.scheduleSlats.toArray().forEach( (item) => {\n          this.heightSchedule = this.heightSchedule + item.nativeElement.offsetHeight;\n        });\n        this.widthSchedule = this.scheduleSlats.first.nativeElement.offsetWidth - WIDTH_SCROLL;\n      }\n    }\n  }\n\n  private transformDateToPixel() {\n    for ( let i = 0; i <= this.events.length - 1; i++) {\n      this.events[i].date = Object.assign({}, {\n        start: Math.round(this.convertMillisecondsToPixel( this.events[i].date.start )),\n        end:  Math.round(this.convertMillisecondsToPixel( this.events[i].date.end ))\n      });\n    }\n  }\n\n  convertMillisecondsToPixel(date = new Date().getTime()) {\n    let heightBody;\n    let startDayMilliseconds;\n    let endDayMilliseconds;\n    let converted;\n    let currentDate;\n    let position = -1;\n    let offsetHeight = 0;\n\n    this.workScaleInMileseconds.forEach(( item, index, array) => {\n      if ( date >= this.workScaleInMileseconds[index].start ) {\n        position++;\n        const slotObject = this.scheduleSlats.find( (slot, idx) => idx === ( index - 1));\n        offsetHeight = offsetHeight + elvis(slotObject, 'nativeElement.offsetHeight') || 0;\n      }\n    });\n\n    if ( position < 0 && offsetHeight <= 0) {\n      return -1000;\n    }\n\n    startDayMilliseconds = Math.floor(this.workScaleInMileseconds[position].start / 100000 );\n    endDayMilliseconds = Math.floor(this.workScaleInMileseconds[position].end / 100000 );\n    heightBody = elvis(this.scheduleSlats.find( (item, idx) => idx === position), 'nativeElement.offsetHeight') || 0;\n    date = Math.floor(date / 100000 );\n    currentDate = date - startDayMilliseconds;\n    converted = ( heightBody * currentDate ) / ( endDayMilliseconds - startDayMilliseconds);\n\n    return converted > heightBody  ? -1000 : ( converted + offsetHeight );\n  }\n\n  private generateEvents() {\n    const eventsWithPositioning = [];\n    const histogram = this.createHistogram();\n    const graph = this.createTheGraph( histogram );\n    this.setClusterWidth( graph );\n    this.setNodesPosition( graph );\n\n    for ( const nodeId in graph.nodes ) {\n      if ( graph.nodes.hasOwnProperty(nodeId) ) {\n        if ( graph.nodes[nodeId].cluster ) {\n          const node = graph.nodes[nodeId];\n          const event = {\n            positions: {\n              id: node.id,\n              top: node.start,\n              left: node.position * node.cluster.width,\n              height: node.end - node.start,\n              width: node.cluster.width\n            },\n            data: this.originalEvents.filter(( e ) => e.value === node.id )[0]\n          };\n          eventsWithPositioning.push(event);\n        }\n      }\n    }\n    return eventsWithPositioning;\n  }\n\n  private createHistogram() {\n\n    // initializing the minutes array\n    const minutes = new Array( this.heightSchedule );\n    for (let i = 0; i < minutes.length; i++) {\n      minutes[i] = [];\n    }\n\n    // setting which events occurs at each minute\n    this.events.forEach( (event) => {\n      for ( let i = event.date.start; i <= event.date.end - 1; i++ ) {\n        if ( minutes[i] ) {\n          minutes[i].push(event.value);\n        }\n      }\n    });\n    return minutes;\n  }\n\n  private createTheGraph( minutes ) {\n    const graph = new Graph();\n    const nodeMap = {};\n\n    // creating the nodes\n    this.events.forEach( (event) => {\n      const node = new Node(event.value, event.date.start, event.date.end);\n      nodeMap[node.id] = node;\n    });\n\n    // creating the clusters\n    let cluster = null;\n\n    // cluster is a group of nodes which have a connectivity path, when the minute array length is 0 it means that\n    // there are n more nodes in the cluster - cluster can be \"closed\".\n    minutes.forEach( (minute, index, arrayMinutes ) => {\n      if (minute.length > 0) {\n\n        if ( arrayMinutes[index - 1] ) {\n          if ( ( minute[0] !== arrayMinutes[index - 1][0] ) && ( minute.length !== arrayMinutes[index - 1].length )  && cluster) {\n            graph.clusters.push(cluster);\n            cluster = null;\n          }\n        }\n\n\n        cluster = cluster || new Cluster();\n        minute.forEach( ( eventId ) => {\n          if (!cluster.nodes[eventId]) {\n            cluster.nodes[eventId] = nodeMap[eventId];\n            nodeMap[eventId].cluster = cluster;\n          }\n        });\n      } else {\n        if (cluster !== null) {\n          graph.clusters.push(cluster);\n        }\n\n        cluster = null;\n      }\n    });\n\n    if (cluster !== null) {\n      graph.clusters.push(cluster);\n    }\n\n    // adding neighbours to nodes, neighbours is the group of colliding nodes (events).\n    // adding the biggest clique for each site\n    minutes.forEach((minute) => {\n      minute.forEach( (eventId) => {\n        const sourceNode = nodeMap[eventId];\n\n        // a max clique is a biggest group of colliding events\n        sourceNode.biggestCliqueSize = Math.max(sourceNode.biggestCliqueSize, minute.length);\n        minute.forEach( (targetEventId) => {\n          if (eventId !== targetEventId) {\n            sourceNode.neighbours[targetEventId] = nodeMap[targetEventId];\n          }\n        });\n      });\n    });\n\n    graph.nodes = nodeMap;\n    return graph;\n  }\n\n  private setClusterWidth( graph ) {\n    graph.clusters.forEach( (cluster) => {\n\n      let maxCliqueSize = 1;\n      for ( const nodeId in cluster.nodes ) {\n        if ( cluster.nodes.hasOwnProperty(nodeId) ) {\n          maxCliqueSize = Math.max(maxCliqueSize, cluster.nodes[nodeId].biggestCliqueSize);\n        }\n      }\n\n      cluster.maxCliqueSize = maxCliqueSize;\n      cluster.width = this.widthSchedule / (maxCliqueSize);\n    });\n  }\n\n  private setNodesPosition( graph ) {\n    graph.clusters.forEach( (cluster) => {\n      for (const nodeId in cluster.nodes) {\n        if ( cluster.nodes.hasOwnProperty(nodeId) ) {\n          const node = cluster.nodes[nodeId];\n          const positionArray = new Array(node.cluster.maxCliqueSize);\n\n          for (const neighbourId in node.neighbours) {\n            if (node.neighbours.hasOwnProperty(neighbourId)) {\n              const neighbour = node.neighbours[neighbourId];\n              if (neighbour.position != null) {\n                positionArray[neighbour.position] = true;\n              }\n            }\n          }\n\n          for (let i = 0; i < positionArray.length; i++) {\n            if (!positionArray[i]) {\n              node.position = i;\n              break;\n            }\n          }\n        }\n      }\n    });\n  }\n\n\n}\n","import {\n  Component, OnInit, OnChanges, AfterViewInit, ChangeDetectorRef, Input, ViewChild, ElementRef, SimpleChanges,\n  ChangeDetectionStrategy, Output, EventEmitter, ViewChildren, QueryList, OnDestroy\n} from '@angular/core';\nimport { ScheduleDataSource } from '../../types/datasource.type';\nimport { GenerateEventsService } from '../../services/generate-events.service';\nimport { SlotSettingsType } from '../../types/slot-settings.type';\nimport { WorkScaleType } from '../../types/work-scale.type';\nimport { EventService } from '../../services/event.service';\nimport { WorkScaleService } from '../../services/work-scale.service';\nimport { Subscription } from 'rxjs';\nimport { ScheduleI18n } from '../../i18n/schedule-i18n';\nimport { HolidaysType } from '../../types/holidays.type';\n\n@Component({\n  selector: 'tl-view-day',\n  templateUrl: './view-day.component.html',\n  styleUrls: ['./view-day.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n\n})\nexport class ViewDayComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n\n  @Input() currentDate = new Date();\n\n  @Input() statusConfig: {StatusType};\n\n  @Input() typesConfig: any;\n\n  @Input() showNowIndicator = false;\n\n  @Input() slotSettings: SlotSettingsType;\n\n  @Input() workScale: WorkScaleType | WorkScaleType[];\n\n  @Input() slatNumberRowsAsArray: Array<Number>;\n\n  @Input() texts = ScheduleI18n;\n\n  @Input('events') events: ScheduleDataSource[];\n\n  @ViewChildren('scheduleSlats') scheduleSlats: QueryList<any>;\n\n  @Output() onRowDbClick = new EventEmitter();\n\n  @Output() onRowClick = new EventEmitter();\n\n  @Output() onEventDbClick = new EventEmitter();\n\n  @Output() onEventClick = new EventEmitter();\n\n  @Output() onEventMouseover = new EventEmitter();\n\n  @Output() onEventMouseout = new EventEmitter();\n\n  @Output() onEventContextmenu = new EventEmitter();\n\n  public nowIndicatorPositionTop: number;\n\n  public timesCollection: Array<Array<Date>>;\n\n  public currentTime = new Date();\n\n  public indexRowSelected = null;\n\n  public eventsWithPositions: {\n    positions: {id: string, top: number, left: number, height: number, width: number},\n    data: ScheduleDataSource\n  }[] = [];\n\n  private subscriptions = new Subscription();\n\n  constructor(\n    private changeDetectionRef: ChangeDetectorRef,\n    private generateEvents: GenerateEventsService,\n    private eventService: EventService,\n    private workScaleService: WorkScaleService) {\n\n    this.subscriptions.add(this.workScaleService.updateScale.subscribe(( timesCollection) => {\n      this.timesCollection = timesCollection;\n      this.changeDetectionRef.detectChanges();\n      this.indexRowSelected = null;\n    }));\n\n    this.subscriptions.add(this.eventService.updateEvents.subscribe(( event ) => {\n      this.generateEventsPositions( event );\n      this.inicializeNowIndicator( );\n      this.changeDetectionRef.detectChanges();\n      this.indexRowSelected = null;\n    }));\n  }\n\n\n  ngOnInit() {}\n\n  ngAfterViewInit() {}\n\n  ngOnChanges( changes: SimpleChanges ) {\n\n    if ( changes['currentDate'] !== undefined ) {\n      this.workScaleService.currentDate = changes[ 'currentDate' ].currentValue;\n      this.indexRowSelected = null;\n      this.eventService.getEventsOfDay();\n    }\n\n    if ( changes['workScale'] !== undefined ) {\n      this.indexRowSelected = null;\n      this.workScaleService.reload( changes[ 'workScale' ].currentValue );\n    }\n\n    if ( changes['events'] !== undefined  ) {\n      this.createWorkScaleByEvents(changes[ 'events' ].currentValue, this.workScale as WorkScaleType[] );\n      this.indexRowSelected = null;\n      this.eventService.loadEvents( changes[ 'events' ].currentValue );\n      this.eventService.getEventsOfDay();\n    }\n    this.changeDetectionRef.detectChanges();\n  }\n\n  rowDbClick( time, index, periodIndex ) {\n    const workScaleInterval = this.workScaleService.workScale[periodIndex].interval;\n    const minutesToStart = index > 0 ? ( workScaleInterval / this.slotSettings.slotCount ) * ( index ) : 0;\n    const minutesToEnd = ( workScaleInterval / this.slotSettings.slotCount ) * ( index + 1 );\n\n    this.onRowDbClick.emit({\n      start: new Date(time).setMinutes( new Date(time).getMinutes( ) + minutesToStart ),\n      end: new Date(time).setMinutes( new Date(time).getMinutes( ) + minutesToEnd ),\n    });\n  }\n\n\n  rowClick( time, index, periodIndex, scheduleRow) {\n    const workScaleInterval = this.workScaleService.workScale[periodIndex].interval;\n    const minutesToStart = index > 0 ? ( workScaleInterval / this.slotSettings.slotCount ) * ( index ) : 0;\n    const minutesToEnd = ( workScaleInterval / this.slotSettings.slotCount ) * ( index + 1 );\n    this.indexRowSelected = scheduleRow.getAttribute('data-row-index');\n    this.onRowClick.emit({\n      start: new Date(time).setMinutes( new Date(time).getMinutes( ) + minutesToStart ),\n      end: new Date(time).setMinutes( new Date(time).getMinutes( ) + minutesToEnd ),\n    });\n  }\n\n  private inicializeNowIndicator() {\n    // this.nowIndicatorPositionTop = this.showNowIndicator ? this.generateEvents.convertMillisecondsToPixel() : -1000;\n    this.changeDetectionRef.detectChanges();\n  }\n\n  private generateEventsPositions( events ) {\n    if ( events !== undefined ) {\n      this.generateEvents.initializeArray( this.workScaleService.workScaleInMileseconds, this.scheduleSlats );\n      this.eventsWithPositions = this.generateEvents.with( events );\n    }\n  }\n\n  private createWorkScaleByEvents( events: ScheduleDataSource[], workScale: WorkScaleType[] ) {\n    if (workScale && workScale.length > 0) {\n      const scales = workScale.filter( work => work.expansed === undefined);\n      for (let i = 0; i <= events.length - 1; i++) {\n\n        workScale.forEach( (value, workScaleIndex, array) => {\n          const eventStartDate = new Date(events[i].date.start).setSeconds(0, 0);\n          const eventEndDate = new Date(events[i].date.end).setSeconds(0, 0);\n          const workStartDate = this.workScaleService.transformHourToMileseconds(scales[workScaleIndex].start, new Date(eventStartDate));\n          const workEndDate = this.workScaleService.transformHourToMileseconds(scales[workScaleIndex].end, new Date(eventEndDate));\n\n          // Handle Overflow in BEFORE workScale\n          if (\n              ( eventEndDate >= workEndDate && eventStartDate >= workEndDate ) ||\n              ( eventEndDate >= workEndDate && eventStartDate <= workEndDate )\n            ) {\n            if (workScale.length - 1 === workScaleIndex) {\n              scales.push({\n                start: this.workScaleService.transformMilesecondsToHour(workEndDate),\n                end: this.workScaleService.transformMilesecondsToHour(eventEndDate),\n                interval: (scales[workScaleIndex].interval),\n                expansed: true,\n              });\n\n            }\n          }\n\n          // Handle Overflow in AFTER workScale\n          if (\n              ( eventEndDate <= workStartDate && eventStartDate <= workStartDate ) ||\n              ( eventEndDate <= workStartDate && eventStartDate >= workStartDate )\n            ) {\n            if (workScaleIndex === 0) {\n              scales.push({\n                start: this.workScaleService.transformMilesecondsToHour(eventStartDate),\n                end: this.workScaleService.transformMilesecondsToHour(workStartDate),\n                interval: (scales[workScaleIndex].interval),\n                expansed: true,\n              });\n            }\n          }\n        });\n      }\n\n      this.workScaleService.reload( this.addMiddleScales(events, this.reduceScales( scales) ) );\n    }\n  }\n\n  private addMiddleScales(events: ScheduleDataSource[], workScale: WorkScaleType[]) {\n    const scales = workScale.filter( work => work);\n    for (let workScaleIndex = 0; workScaleIndex < workScale.length - 1; workScaleIndex++ ) {\n      for (let e = 0; e <= events.length - 1; e++ ) {\n        const eventStartDate = new Date(events[e].date.start).setSeconds(0, 0);\n        const eventEndDate = new Date(events[e].date.end).setSeconds(0, 0);\n        const workStartDate = this.workScaleService.transformHourToMileseconds(workScale[workScaleIndex].end, new Date(eventStartDate));\n        const workEndDate = this.workScaleService.transformHourToMileseconds(workScale[workScaleIndex + 1].start, new Date(eventEndDate));\n\n        // Horario de inicio dentro do intervalo\n        if ( eventStartDate >= workStartDate && eventStartDate <= workEndDate ) {\n          scales.push({\n            start: workScale[workScaleIndex].end,\n            end: workScale[workScaleIndex + 1].start,\n            interval: workScale[workScaleIndex].interval,\n            expansed: true,\n            middle: true,\n          });  break;\n        }\n\n        // Horario de fim dentro do intervalo\n        if ( eventEndDate >= workStartDate && eventEndDate <= workEndDate ) {\n          scales.push({\n            start: workScale[workScaleIndex].end,\n            end: workScale[workScaleIndex + 1].start,\n            interval: workScale[workScaleIndex].interval,\n            expansed: true,\n            middle: true,\n          });  break;\n        }\n\n      }\n    }\n    return this.reduceScales(scales);\n  }\n\n  private reduceScales( scales: WorkScaleType[] ) {\n    const orderedScales = this.sortScaleByStart(scales);\n    const notExpansedScales = orderedScales.filter( (scale) => !scale.expansed );\n    const middleHourScale = orderedScales.filter( (scale) => scale.middle );\n    const beforeHourScale = this.reduceBeforeScale( orderedScales );\n    const afterHourScale = this.reduceAfterScale( orderedScales );\n    return this.sortScaleByStart(\n      this.removeNextSameStartAndEndSacalesTime(\n        this.removeSameStartAndEndSacalesTime(\n          notExpansedScales.concat(afterHourScale).concat(middleHourScale).concat(beforeHourScale)\n        )\n      )\n    );\n  }\n\n  private removeSameStartAndEndSacalesTime(scales: WorkScaleType[]) {\n    return this.sortScaleByStart(scales).filter( (value => value.start !== value.end ));\n  }\n\n  private removeNextSameStartAndEndSacalesTime(scales: WorkScaleType[]) {\n    return this.sortScaleByStart(scales).filter( (value, index, array ) => {\n      if ( array[index - 1] ) {\n       return value.start !== array[index - 1].start && value.end !== array[index - 1].end;\n      }\n      return true;\n    });\n  }\n\n  private reduceBeforeScale(  scales: WorkScaleType[] ) {\n    return scales.reduce( (previous, current) => {\n      const cStart = this.workScaleService.transformHourToMileseconds(current.start);\n      const pStart = this.workScaleService.transformHourToMileseconds(previous.start);\n      if (cStart < pStart) {\n        return {...current, start: current.start };\n      }\n\n      const cEnd = this.workScaleService.transformHourToMileseconds(current.end);\n      const pEnd = this.workScaleService.transformHourToMileseconds(previous.end);\n      if (cEnd < pEnd) {\n        return {...current, end: current.end };\n      }\n      return previous;\n    }, { end: '23:59', start: '23:59', interval: 0, expansed: null });\n  }\n\n  private reduceAfterScale(  scales: WorkScaleType[] ) {\n    return scales.reduce( (previous, current) => {\n      const cStart = this.workScaleService.transformHourToMileseconds(current.start);\n      const pStart = this.workScaleService.transformHourToMileseconds(previous.start);\n      if (cStart > pStart) {\n        return {...current, start: current.start };\n      }\n\n      const cEnd = this.workScaleService.transformHourToMileseconds(current.end);\n      const pEnd = this.workScaleService.transformHourToMileseconds(previous.end);\n      if (cEnd > pEnd) {\n        return {...current, end: current.end };\n      }\n      return previous;\n    }, { end: '01:00', start: '01:00', interval: 0, expansed: null });\n  }\n\n  private sortScaleByStart( scales: WorkScaleType[]   ) {\n    return scales.sort( (scaleA, scaleB) => {\n      return this.workScaleService.transformHourToMileseconds(scaleA.start) -\n        this.workScaleService.transformHourToMileseconds(scaleB.start);\n    });\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.unsubscribe();\n  }\n\n}\n","<div class=\"ui-schedule-slats\"\n     *ngFor=\"let times of timesCollection; let timesIndex = index; let lastTurn = last; let firstTurn = first;\">\n\n  <!-- CREATE TIMES BOXES-->\n  <div class=\"ui-schedule-times\">\n    <div class=\"ui-schedule-time-row\"\n         *ngFor=\"let time of times\"\n         [ngClass]=\"{ firstTurn: firstTurn }\"\n         [ngStyle]=\"{\n          height: (slotSettings.slotCount * slotSettings.slotHight) + 'px',\n          'align-items': slotSettings.slotCount > 1 ? 'flex-start' : 'center'\n         }\">\n         <div class=\"ui-schedule-time-description\">\n           <span class=\"ui-hour-detail\">{{time | date: 'HH'}}</span>:{{time | date: 'mm'}}\n         </div>\n    </div>\n  </div>\n\n  <!-- CREATE WIDGET CONTENT-->\n  <div #scheduleSlats class=\"ui-schedule-widget-content\">\n    <div *ngFor=\"let time of times; let last = last; let first = first;\" class=\"ui-schedule-widget-rows\">\n      <div #scheduleRow class=\"ui-schedule-row\" [attr.data-row-index]=\"time.getTime() * (index+1)\" *ngFor=\"let slot of slatNumberRowsAsArray; let index = index\"\n           (click)=\"rowClick( time, index, timesIndex, scheduleRow )\"\n           (dblclick)=\"rowDbClick( time, index, timesIndex )\"\n           [ngStyle]=\"{ height: slotSettings.slotHight + 'px' }\"\n           [ngClass]=\"{ last: last, first: first, lastTurn: lastTurn, firstTurn: firstTurn }\"\n           [class.selected]=\"scheduleRow?.getAttribute('data-row-index') === indexRowSelected\">\n      </div>\n    </div>\n  </div>\n\n</div>\n<div class=\"ui-schedule-skeleton\" >\n  <div class=\"ui-schedule-grid-events\">\n    <div class=\"ui-schedule-list-events\">\n\n      <!-- CREATE EVENTS BOXES-->\n      <div class=\"ui-schedule-event-box\" [style.borderLeftWidth]=\"event?.data?.blocked ? 0 : '5px'\"\n           #elementBox\n           *ngFor=\"let event of eventsWithPositions; let index = index\"\n           [ngStyle]=\"{\n              top: event?.positions.top + 'px',\n              left: event?.positions.left + 'px',\n              height: event?.positions.height + 'px',\n              width: event?.positions.width + 'px'\n           }\"\n           [style.borderLeftColor]=\"statusConfig ? statusConfig[event?.data?.status]?.color : '#FFFFFF'\"\n           [tooltip]=\"{text: statusConfig ? statusConfig[event?.data?.status]?.description : '' , placement: 'top-center'}\"\n           (contextmenu)=\"onEventContextmenu.emit( { event: $event, data: event?.data, element: elementBox } ); false\"\n           (click)=\"onEventClick.emit( event?.data )\"\n           (dblclick)=\"onEventDbClick.emit( event?.data )\"\n           (mouseover)=\"onEventMouseout.emit( event?.data )\"\n           (mouseout)=\"onEventMouseout.emit( event?.data )\"\n      >\n        <ng-container *ngIf=\"!event?.data?.blocked\">\n          <div class=\"ui-schedule-event-content\">\n            <div class=\"ui-event-data\">\n              <div class=\"ui-event-title\">\n                <span class=\"title\">{{event?.data?.title}}</span>\n                <div class=\"tags\" *ngIf=\"event?.data?.tags?.length > 0 \">\n                  <div class=\"tag-item\" *ngFor=\"let tag of event?.data?.tags;\" [style.backgroundColor]=\"tag.color\" >\n                    {{tag.title}}\n                  </div>\n                </div>\n              </div>\n              <div class=\"ui-event-detail\">{{event?.data?.detail}}</div>\n            </div>\n            <div class=\"ui-event-note\">\n              {{event?.data?.note}}\n            </div>\n          </div>\n          <div class=\"ui-event-hour\">\n            <span>{{event?.data?.date?.start | date: 'HH:mm'}} - {{event?.data?.date?.end | date: 'HH:mm'}}</span>\n            <span class=\"ui-event-typeconfig-description\">{{typesConfig[event?.data?.type]?.description}}</span>\n          </div>\n        </ng-container>\n\n        <ng-container *ngIf=\"event?.data?.blocked\">\n          <div class=\"ui-schedule-event-blocked\">\n            <div class=\"ui-event-title\">{{event?.data?.title}}</div>\n            <div class=\"ui-event-hour\">\n              <tl-icon [lib]=\"'fa'\" [style]=\"'far'\">clock</tl-icon>\n              {{event?.data?.date?.start | date: 'HH:mm'}} - {{event?.data?.date?.end | date: 'HH:mm'}}<br>\n            </div>\n          </div>\n\n        </ng-container>\n      </div>\n    </div>\n  </div>\n  <!--<div class=\"ui-schedule-now-indicator ui-schedule-now-arrow\"-->\n       <!--[tooltip]=\"{text: currentTime | date: 'HH:mm', placement: 'right'}\"-->\n       <!--[ngStyle]=\"{top: nowIndicatorPositionTop + 'px'}\">-->\n  <!--</div>-->\n</div>\n","import {\n  Component, OnInit, OnChanges, AfterViewInit, ChangeDetectorRef, Input, ViewChild, ElementRef, SimpleChanges,\n  ChangeDetectionStrategy, Output, EventEmitter, ViewChildren, QueryList, OnDestroy\n} from '@angular/core';\nimport { ScheduleDataSource } from '../../types/datasource.type';\nimport { GenerateEventsService } from '../../services/generate-events.service';\nimport { SlotSettingsType } from '../../types/slot-settings.type';\nimport { WorkScaleType } from '../../types/work-scale.type';\nimport { EventService } from '../../services/event.service';\nimport { WorkScaleService } from '../../services/work-scale.service';\nimport { Subscription } from 'rxjs';\nimport { ScheduleI18n } from '../../i18n/schedule-i18n';\nimport { HolidaysType } from '../../types/holidays.type';\nimport { StatusType } from '../../types/status.type';\n\n@Component({\n  selector: 'tl-week',\n  templateUrl: './week.component.html',\n  styleUrls: ['./week.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n\n})\nexport class WeekComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n\n  currentDate: Date[] = [];\n\n  @Input() statusConfig: StatusType;\n\n  @Input() typesConfig: any;\n\n  @Input() showNowIndicator = false;\n\n  @Input() slotSettings: SlotSettingsType;\n\n  @Input() workScale: WorkScaleType | WorkScaleType[];\n\n  @Input() slatNumberRowsAsArray: Array<Number>;\n\n  @Input() texts = ScheduleI18n;\n\n  @Input('events') events: ScheduleDataSource[];\n\n  @ViewChildren('scheduleSlats') scheduleSlats: QueryList<any>;\n\n  @Output() onRowDbClick = new EventEmitter();\n\n  @Output() onRowClick = new EventEmitter();\n\n  @Output() onEventDbClick = new EventEmitter();\n\n  @Output() onEventClick = new EventEmitter();\n\n  @Output() onEventMouseover = new EventEmitter();\n\n  @Output() onEventMouseout = new EventEmitter();\n\n  @Output() onEventContextmenu = new EventEmitter();\n\n  public nowIndicatorPositionTop: number;\n\n  public timesCollection: Array<Array<Date>>;\n\n  public currentTime = new Date();\n\n  public indexRowSelected = null;\n\n  public weekEvents: { day: string, events: ScheduleDataSource[] }[] = [];\n\n  public eventsWithPositions: {\n    positions: {id: string, top: number, left: number, height: number, width: number},\n    data: ScheduleDataSource\n  }[] = [];\n\n  private subscriptions = new Subscription();\n\n  public monthInterval: string;\n\n  public workScaleDays: number;\n\n  constructor(\n    private changeDetectionRef: ChangeDetectorRef,\n    private generateEvents: GenerateEventsService,\n    private eventService: EventService,\n    private workScaleService: WorkScaleService) {\n\n    this.subscriptions.add(this.workScaleService.updateScale.subscribe(( timesCollection) => {\n      this.timesCollection = timesCollection;\n      this.changeDetectionRef.detectChanges();\n      this.indexRowSelected = null;\n    }));\n\n    this.subscriptions.add(this.eventService.updateEvents.subscribe(( event ) => {\n      this.generateEventsPositions( event );\n      this.inicializeNowIndicator( );\n      this.changeDetectionRef.detectChanges();\n      this.indexRowSelected = null;\n    }));\n  }\n\n  ngOnInit() {\n    this.initializeCurrentDate();\n  }\n\n  private initializeCurrentDate() {\n    const currentDate = new Date();\n\n    // Obter o dia da semana (0 - domingo, 1 - segunda-feira, ..., 6 - sábado)\n    const currentDay = currentDate.getDay();\n\n    // Calcular os dias que faltam para o próximo domingo\n    const daysRemaining = 7 - currentDay;\n\n    // Preencher o array currentDate com os dias que faltam\n    for (let i = 0; i < daysRemaining; i++) {\n      const date = new Date(currentDate);\n      date.setDate(currentDate.getDate() + i);\n      this.currentDate.push(date);\n    }\n  }\n\n\n\n  ngAfterViewInit() {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ( changes['currentDate'] !== undefined ) {\n      this.workScaleService.currentDate = changes[ 'currentDate' ].currentValue;\n      this.indexRowSelected = null;\n      this.eventService.getEventsOfDay();\n    }\n\n    if (changes['workScale'] !== undefined) {\n      this.indexRowSelected = null;\n      this.workScaleService.reload(changes['workScale'].currentValue);\n    }\n\n    if (changes['events'] !== undefined) {\n      this.createWorkScaleByEvents(changes['events'].currentValue);\n      this.indexRowSelected = null;\n      this.eventService.loadEvents(changes['events'].currentValue);\n      this.eventService.getEventsOfDay();\n\n      const currentDate = this.workScaleService.currentDate;\n\n      // Obter a data de início e fim da semana atual\n      const startDate = new Date(currentDate);\n      startDate.setDate(startDate.getDate() - startDate.getDay()); // Definir o dia da semana para o domingo\n      startDate.setHours(0, 0, 0, 0); // Definir as horas, minutos, segundos e milissegundos para zero\n\n      const endDate = new Date(startDate);\n      endDate.setDate(startDate.getDate() + 6); // Definir o dia da semana para o sábado\n      endDate.setHours(23, 59, 59, 999); // Definir as horas, minutos, segundos e milissegundos para o final do dia\n\n      // Filtrar os eventos dentro do intervalo de datas\n      const events = changes['events'].currentValue.filter((event) =>\n        event.date.start >= startDate && event.date.start <= endDate\n      );\n\n      // Agrupar os eventos por dia da semana\n      const groupedEvents = events.reduce((result, event) => {\n        const start = event.date.start;\n        if (start instanceof Date) {\n          const day = start.getDay();\n          const dayOfWeek = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'][day];\n          if (!result[dayOfWeek]) {\n            result[dayOfWeek] = { day: dayOfWeek, events: [] };\n          }\n          result[dayOfWeek].events.push(event);\n        }\n        return result;\n      }, {});\n\n      // Converter o objeto em um array de objetos {day: string, events: ScheduleDataSource[]}\n      this.weekEvents = Object.keys(groupedEvents).map((dayOfWeek) => ({\n        day: dayOfWeek,\n        events: groupedEvents[dayOfWeek]\n      }));\n\n      // Calcular o intervalo entre os dias da semana de cada mês\n      const monthStart = new Date(startDate.getFullYear(), startDate.getMonth(), 1);\n      const monthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\n      this.monthInterval = `${monthStart.toLocaleDateString()} - ${monthEnd.toLocaleDateString()}`;\n\n      this.changeDetectionRef.detectChanges();\n    }\n  }\n\n  rowDbClick(time, index, periodIndex) {\n    const workScaleInterval = this.workScaleService.workScale[periodIndex].interval;\n    const minutesToStart = index > 0 ? (workScaleInterval / this.slotSettings.slotCount) * (index) : 0;\n    const minutesToEnd = (workScaleInterval / this.slotSettings.slotCount) * (index + 1);\n\n    const startDate = new Date(time);\n    startDate.setMinutes(startDate.getMinutes() + minutesToStart);\n    const endDate = new Date(time);\n    endDate.setMinutes(endDate.getMinutes() + minutesToEnd);\n\n    const startOfWeek = startDate.getDate() - startDate.getDay() + 1;\n    const endOfWeek = startOfWeek + 6;\n\n    const startOfWeekDate = new Date(startDate.setDate(startOfWeek));\n    const endOfWeekDate = new Date(startDate.setDate(endOfWeek));\n\n    this.onRowDbClick.emit({\n      start: startOfWeekDate,\n      end: endOfWeekDate,\n    });\n  }\n\n  rowClick(time, index, periodIndex, scheduleRow) {\n    const workScaleInterval = this.workScaleService.workScale[periodIndex].interval;\n    const minutesToStart = index > 0 ? (workScaleInterval / this.slotSettings.slotCount) * (index) : 0;\n    const minutesToEnd = (workScaleInterval / this.slotSettings.slotCount) * (index + 1);\n    this.indexRowSelected = scheduleRow.getAttribute('data-row-index');\n\n    const startDate = new Date(time);\n    startDate.setMinutes(startDate.getMinutes() + minutesToStart);\n    const endDate = new Date(time);\n    endDate.setMinutes(endDate.getMinutes() + minutesToEnd);\n\n    const startOfWeek = startDate.getDate() - startDate.getDay() + 1;\n    const endOfWeek = startOfWeek + 6;\n\n    const startOfWeekDate = new Date(startDate.setDate(startOfWeek));\n    const endOfWeekDate = new Date(startDate.setDate(endOfWeek));\n\n    this.onRowClick.emit({\n      start: startOfWeekDate,\n      end: endOfWeekDate,\n    });\n  }\n\n\n  private inicializeNowIndicator() {\n    this.nowIndicatorPositionTop = this.showNowIndicator ? this.generateEvents.convertMillisecondsToPixel() : -1000;\n    this.changeDetectionRef.detectChanges();\n  }\n\n  private generateEventsPositions(events) {\n    if (events !== undefined) {\n      this.generateEvents.initializeArray(\n        this.workScaleService.workScaleInMileseconds,\n        this.scheduleSlats\n      );\n      this.eventsWithPositions = this.generateEvents.with(events);\n    }\n  }\n\n  private createWorkScaleByEvents(events: ScheduleDataSource[]) {\n    const workScale = [\n      // configure os valores desejados aqui\n      new WorkScaleType('08:00', '13:30', 30),\n      new WorkScaleType('13:30', '18:00', 60),\n      new WorkScaleType('31:00', '36:30', 30),\n      new WorkScaleType('36:30', '43:00', 60),\n      new WorkScaleType('55:00', '60:30', 30),\n      new WorkScaleType('60:30', '67:00', 60),\n      new WorkScaleType('79:00', '84:30', 30),\n      new WorkScaleType('84:30', '91:00', 60),\n      new WorkScaleType('103:00', '108:30', 30),\n      new WorkScaleType('108:30', '115:00', 60),\n      new WorkScaleType('127:00', '132:30', 30),\n      new WorkScaleType('132:30', '139:00', 60),\n      new WorkScaleType('151:00', '156:30', 30),\n      new WorkScaleType('156:30', '162:00', 60)\n    ];\n\n    if (workScale && workScale.length > 0) {\n      const scales = workScale.filter((work) => work.expansed === undefined);\n      for (let i = 0; i <= events.length - 1; i++) {\n        workScale.forEach((value, workScaleIndex, array) => {\n          const eventStartDate = new Date(events[i].date.start);\n          eventStartDate.setSeconds(0, 0);\n          const eventEndDate = new Date(events[i].date.end);\n          eventEndDate.setSeconds(0, 0);\n          const workStartDate = this.workScaleService.transformHourToMileseconds(\n            scales[workScaleIndex].start,\n            eventStartDate\n          );\n          const workEndDate = this.workScaleService.transformHourToMileseconds(\n            scales[workScaleIndex].end,\n            eventEndDate\n          );\n\n          if (\n            (eventEndDate.getTime() >= workEndDate && eventStartDate.getTime() >= workEndDate) ||\n            (eventEndDate.getTime() >= workEndDate && eventStartDate.getTime() <= workEndDate)\n          ) {\n            if (workScale.length - 1 === workScaleIndex) {\n              scales.push({\n                end: this.workScaleService.transformMilesecondsToHour(eventEndDate.getTime()),\n                start: this.workScaleService.transformMilesecondsToHour(eventStartDate.getTime()),\n                interval: scales[workScaleIndex].interval,\n                expansed: true,\n              });\n            }\n          }\n\n          if (\n            (eventEndDate.getTime() <= workStartDate && eventStartDate.getTime() <= workStartDate) ||\n            (eventEndDate.getTime() <= workStartDate && eventStartDate.getTime() >= workStartDate)\n          ) {\n            if (workScaleIndex === 0) {\n              scales.push({\n                end: this.workScaleService.transformMilesecondsToHour(eventEndDate.getTime()),\n                start: this.workScaleService.transformMilesecondsToHour(eventStartDate.getTime()),\n                interval: scales[workScaleIndex].interval,\n                expansed: true,\n              });\n            }\n          }\n        });\n      }\n\n      this.workScaleService.reload(this.addMiddleScales(events, this.reduceScales(scales)));\n    }\n  }\n\n  private addMiddleScales(events: ScheduleDataSource[], workScale: WorkScaleType[]) {\n    const scales = workScale.filter( work => work);\n    for (let workScaleIndex = 0; workScaleIndex < workScale.length - 1; workScaleIndex++ ) {\n      for (let e = 0; e <= events.length - 1; e++ ) {\n        const eventStartDate = new Date(events[e].date.start).setSeconds(0, 0);\n        const eventEndDate = new Date(events[e].date.end).setSeconds(0, 0);\n        const workStartDate = this.workScaleService.transformHourToMileseconds(workScale[workScaleIndex].end, new Date(eventStartDate));\n        const workEndDate = this.workScaleService.transformHourToMileseconds(workScale[workScaleIndex + 1].start, new Date(eventEndDate));\n\n        // Horario de inicio dentro do intervalo\n        if ( eventStartDate >= workStartDate && eventStartDate <= workEndDate ) {\n          scales.push({\n            start: workScale[workScaleIndex].end,\n            end: workScale[workScaleIndex + 1].start,\n            interval: workScale[workScaleIndex].interval,\n            expansed: true,\n            middle: true,\n          });  break;\n        }\n\n        // Horario de fim dentro do intervalo\n        if ( eventEndDate >= workStartDate && eventEndDate <= workEndDate ) {\n          scales.push({\n            start: workScale[workScaleIndex].end,\n            end: workScale[workScaleIndex + 1].start,\n            interval: workScale[workScaleIndex].interval,\n            expansed: true,\n            middle: true,\n          });  break;\n        }\n\n      }\n    }\n    return this.reduceScales(scales);\n  }\n\n  private reduceScales( scales: WorkScaleType[] ) {\n    const orderedScales = this.sortScaleByStart(scales);\n    const notExpansedScales = orderedScales.filter( (scale) => !scale.expansed );\n    const middleHourScale = orderedScales.filter( (scale) => scale.middle );\n    const beforeHourScale = this.reduceBeforeScale( orderedScales );\n    const afterHourScale = this.reduceAfterScale( orderedScales );\n    return this.sortScaleByStart(\n      this.removeNextSameStartAndEndSacalesTime(\n        this.removeSameStartAndEndSacalesTime(\n          notExpansedScales.concat(afterHourScale).concat(middleHourScale).concat(beforeHourScale)\n        )\n      )\n    );\n  }\n\n  private removeSameStartAndEndSacalesTime(scales: WorkScaleType[]) {\n    return this.sortScaleByStart(scales).filter( (value => value.start !== value.end ));\n  }\n\n  private removeNextSameStartAndEndSacalesTime(scales: WorkScaleType[]) {\n    return this.sortScaleByStart(scales).filter( (value, index, array ) => {\n      if ( array[index - 1] ) {\n       return value.start !== array[index - 1].start && value.end !== array[index - 1].end;\n      }\n      return true;\n    });\n  }\n\n  private reduceBeforeScale(  scales: WorkScaleType[] ) {\n    return scales.reduce( (previous, current) => {\n      const cStart = this.workScaleService.transformHourToMileseconds(current.start);\n      const pStart = this.workScaleService.transformHourToMileseconds(previous.start);\n      if (cStart < pStart) {\n        return {...current, start: current.start };\n      }\n\n      const cEnd = this.workScaleService.transformHourToMileseconds(current.end);\n      const pEnd = this.workScaleService.transformHourToMileseconds(previous.end);\n      if (cEnd < pEnd) {\n        return {...current, end: current.end };\n      }\n      return previous;\n    }, { end: '23:59', start: '23:59', interval: 0, expansed: null });\n  }\n\n  private reduceAfterScale(  scales: WorkScaleType[] ) {\n    return scales.reduce( (previous, current) => {\n      const cStart = this.workScaleService.transformHourToMileseconds(current.start);\n      const pStart = this.workScaleService.transformHourToMileseconds(previous.start);\n      if (cStart > pStart) {\n        return {...current, start: current.start };\n      }\n\n      const cEnd = this.workScaleService.transformHourToMileseconds(current.end);\n      const pEnd = this.workScaleService.transformHourToMileseconds(previous.end);\n      if (cEnd > pEnd) {\n        return {...current, end: current.end };\n      }\n      return previous;\n    }, { end: '01:00', start: '01:00', interval: 0, expansed: null });\n  }\n\n  private sortScaleByStart( scales: WorkScaleType[]   ) {\n    return scales.sort( (scaleA, scaleB) => {\n      return this.workScaleService.transformHourToMileseconds(scaleA.start) -\n        this.workScaleService.transformHourToMileseconds(scaleB.start);\n    });\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.unsubscribe();\n  }\n\n}\n","<div class=\"ui-schedule-slats\"\n     *ngFor=\"let times of timesCollection; let timesIndex = index; let lastTurn = last; let firstTurn = first;\">\n\n  <!-- CREATE TIMES BOXES-->\n  <div class=\"ui-schedule-times\">\n    <div class=\"ui-schedule-time-row\"\n         *ngFor=\"let time of times\"\n         [ngClass]=\"{ firstTurn: firstTurn }\"\n         [ngStyle]=\"{\n          height: (slotSettings.slotCount * slotSettings.slotHight) + 'px',\n          'align-items': slotSettings.slotCount > 1 ? 'flex-start' : 'center'\n         }\">\n         <div class=\"ui-schedule-time-description\">\n           <span class=\"ui-hour-detail\">{{time | date: 'dd/MM'}}</span><br>\n           <span>{{time | date: 'HH:mm'}}</span>\n         </div>\n    </div>\n  </div>\n\n  <!-- CREATE WIDGET CONTENT-->\n  <div #scheduleSlats class=\"ui-schedule-widget-content\">\n    <div *ngFor=\"let time of times; let last = last; let first = first;\" class=\"ui-schedule-widget-rows\">\n      <div #scheduleRow class=\"ui-schedule-row\" [attr.data-row-index]=\"time.getTime() * (index+1)\" *ngFor=\"let slot of slatNumberRowsAsArray; let index = index\"\n           (click)=\"rowClick( time, index, timesIndex, scheduleRow )\"\n           (dblclick)=\"rowDbClick( time, index, timesIndex )\"\n           [ngStyle]=\"{ height: slotSettings.slotHight + 'px' }\"\n           [ngClass]=\"{ last: last, first: first, lastTurn: lastTurn, firstTurn: firstTurn }\"\n           [class.selected]=\"scheduleRow?.getAttribute('data-row-index') === indexRowSelected\">\n      </div>\n    </div>\n  </div>\n\n</div>\n<div class=\"ui-schedule-skeleton\" >\n  <div class=\"ui-schedule-grid-events\">\n    <div class=\"ui-schedule-list-events\">\n\n      <!-- CREATE EVENTS BOXES-->\n      <div class=\"ui-schedule-event-box\" [style.borderLeftWidth]=\"event?.data?.blocked ? 0 : '5px'\"\n           #elementBox\n           *ngFor=\"let event of eventsWithPositions; let index = index\"\n           [ngStyle]=\"{\n              top: event?.positions.top + 'px',\n              left: event?.positions.left + 'px',\n              height: event?.positions.height + 'px',\n              width: event?.positions.width + 'px'\n           }\"\n           [style.borderLeftColor]=\"statusConfig ? statusConfig[event?.data?.status]?.color : '#FFFFFF'\"\n           [tooltip]=\"{text: statusConfig ? statusConfig[event?.data?.status]?.description : '' , placement: 'top-center'}\"\n           (contextmenu)=\"onEventContextmenu.emit( { event: $event, data: event?.data, element: elementBox } ); false\"\n           (click)=\"onEventClick.emit( event?.data )\"\n           (dblclick)=\"onEventDbClick.emit( event?.data )\"\n           (mouseover)=\"onEventMouseout.emit( event?.data )\"\n           (mouseout)=\"onEventMouseout.emit( event?.data )\"\n      >\n        <ng-container *ngIf=\"!event?.data?.blocked\">\n          <div class=\"ui-schedule-event-content\">\n            <div class=\"ui-event-data\">\n              <div class=\"ui-event-title\">\n                <span class=\"title\">{{event?.data?.title}}</span>\n                <div class=\"tags\" *ngIf=\"event?.data?.tags?.length > 0 \">\n                  <div class=\"tag-item\" *ngFor=\"let tag of event?.data?.tags;\" [style.backgroundColor]=\"tag.color\" >\n                    {{tag.title}}\n                  </div>\n                </div>\n              </div>\n              <div class=\"ui-event-detail\">{{event?.data?.detail}}</div>\n            </div>\n            <div class=\"ui-event-note\">\n              {{event?.data?.note}}\n            </div>\n          </div>\n          <div class=\"ui-event-hour\">\n            <span>{{event?.data?.date?.start | date: 'dd/yy'}} - {{event?.data?.date?.end | date: 'dd/yy'}}</span>\n            <span class=\"ui-event-typeconfig-description\">{{typesConfig[event?.data?.type]?.description}}</span>\n          </div>\n        </ng-container>\n\n        <ng-container *ngIf=\"event?.data?.blocked\">\n          <div class=\"ui-schedule-event-blocked\">\n            <div class=\"ui-event-title\">{{event?.data?.title}}</div>\n            <div class=\"ui-event-hour\">\n              <tl-icon [lib]=\"'fa'\" [style]=\"'far'\">clock</tl-icon>\n              {{event?.data?.date?.start | date: 'dd/yy'}} - {{event?.data?.date?.end | date: 'dd/yy'}}<br>\n            </div>\n          </div>\n\n        </ng-container>\n      </div>\n    </div>\n  </div>\n</div>\n","import { Component, OnInit, Input, SimpleChanges, OnChanges, ChangeDetectorRef, Output, EventEmitter } from '@angular/core';\nimport { ScheduleDataSource } from '../../types/datasource.type';\nimport { StatusType } from '../../types/status.type';\n\n@Component({\n  selector: 'tl-day-list',\n  templateUrl: './day-list.component.html',\n  styleUrls: ['./day-list.component.scss']\n})\nexport class DayListComponent implements OnInit, OnChanges {\n  @Input() events: ScheduleDataSource[];\n  @Input() statusConfig: Array<StatusType>;\n  @Input() currentDate = new Date();\n  @Output() onEventDbClick = new EventEmitter();\n  @Output() onEventClick = new EventEmitter();\n  @Output() onEventMouseover = new EventEmitter();\n  @Output() onEventMouseout = new EventEmitter();\n\n  filteredEvents: ScheduleDataSource[];\n\n  constructor(private changeDetectionRef: ChangeDetectorRef) {}\n\n  ngOnInit() {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (!changes['events'] || !changes['currentDate']) {\n      return;\n    }\n    if (!changes['events'].firstChange || !changes['currentDate'].firstChange) {\n      this.filterEvents();\n      this.changeDetectionRef.detectChanges();\n    }\n  }\n\n  private filterEvents() {\n    const startDate = new Date(this.currentDate);\n    startDate.setDate(startDate.getDate() - startDate.getDay()); // Sunday of the current week\n    startDate.setHours(0, 0, 0, 0);\n\n    const endDate = new Date(startDate);\n    endDate.setDate(endDate.getDate() + 6); // Saturday of the current week\n    endDate.setHours(23, 59, 59, 999);\n\n    this.filteredEvents = this.events.filter(event => {\n      const eventDate = new Date(event.date.start);\n      return eventDate >= startDate && eventDate <= endDate;\n    });\n  }\n\n  getDayOfWeek(date: string) {\n    const daysOfWeek = ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'];\n    const eventDate = new Date(date);\n    return daysOfWeek[eventDate.getDay()];\n  }\n}\n","<div class=\"ui-schedule-daylist-wrapper\"\n     [tlBlockui]=\"events?.length === 0\"\n     [blockuiConfig]=\"{'spin': false, 'icon': 'ion-calendar', 'message': 'No events to display'}\"\n     [dimensionsFrom]=\"'parent'\"\n>\n  <div class=\"ui-schedule-daylist-events\">\n    <div class=\"ui-schedule-event-box\"\n         *ngFor=\"let event of events; let index = index\"\n         [style.borderTopColor]=\"statusConfig ? statusConfig[event.status]?.color : '#FFFFFF'\"\n         [tooltip]=\"{text: statusConfig ? statusConfig[event.status]?.description : '' , placement: 'left-center'}\"\n         (click)=\"onEventClick.emit(event)\"\n         (dblclick)=\"onEventDbClick.emit(event)\"\n         (mouseover)=\"onEventMouseout.emit(event)\"\n         (mouseout)=\"onEventMouseout.emit(event)\"\n    >\n    <div class=\"ui-schedule-time-row\">\n      <div class=\"ui-schedule-time-description\">\n        <span class=\"ui-hour-detail\">{{getDayOfWeek(event.date.start)}}</span><br>\n      </div>\n    </div>\n      <div class=\"ui-event-hour\">{{event.date.start | date: 'HH:mm'}} - {{event.date.end | date: 'HH:mm'}} - {{event.date.start | date: 'dd/MM'}}</div>\n      <div class=\"ui-schedule-description\">\n        <div class=\"ui-event-title\">{{event.title}}</div>\n        <div class=\"ui-event-detail\">{{event.detail}}</div>\n      </div>\n    </div>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  OnInit,\n  Output,\n  EventEmitter,\n  ChangeDetectorRef,\n  ChangeDetectionStrategy,\n  TemplateRef, ViewChild\n} from '@angular/core';\nimport { ScheduleDataSource } from './types/datasource.type';\nimport { StatusType } from './types/status.type';\nimport { ViewType } from './types/view.type';\nimport { SlotSettingsType } from './types/slot-settings.type';\nimport { WorkScaleType } from './types/work-scale.type';\nimport { WorkScaleService } from './services/work-scale.service';\nimport { EventService } from './services/event.service';\nimport { ScheduleI18n } from './i18n/schedule-i18n';\nimport { HolidaysType } from './types/holidays.type';\nimport { HolidayService } from './services/holiday.service';\nimport { GenerateEventsService } from './services/generate-events.service';\n\n@Component( {\n  selector: 'tl-schedule',\n  templateUrl: './schedule.html',\n  styleUrls: [ './schedule.scss' ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TlSchedule implements OnInit, OnChanges {\n\n  @Input() defaultView: ViewType = 'day';\n\n  @Input() views: Array<ViewType> = [ 'day', 'dayList', 'weekList' ];\n\n  @Input() statusConfig: StatusType;\n\n  @Input() typesConfig: any;\n\n  @Input() currentDate = new Date();\n\n  @Input() height = '550px';\n\n  @Input() slotSettings: SlotSettingsType = new SlotSettingsType(  2, 43);\n\n  @Input() workScale: WorkScaleType | WorkScaleType[] = new WorkScaleType( '08:00', '18:00', 30 );\n\n  @Input() showNowIndicator = false;\n\n  @Input() texts = ScheduleI18n;\n\n  @Input() isLoading = false;\n\n  @Input() eventButtonTemplate: TemplateRef<any>;\n\n  @Input() holidays: Array<HolidaysType> = [];\n\n  @Input() allowScheduleInHolidays = false;\n\n  @Input('events') set events( events: ScheduleDataSource[]) {\n    if ( !events) {\n      this._events = [];\n    } else {\n      this._events = [...events].sort(( a, b ) => a.date.start - b.date.start  );\n      this._events = JSON.parse( JSON.stringify(this._events) );\n      this.setScrollTopOnChange();\n    }\n  }\n\n  @Output() changeView = new EventEmitter<ViewType>();\n\n  @Output() changeDate = new EventEmitter();\n\n  @Output() rowDbClick = new EventEmitter();\n\n  @Output() rowClick = new EventEmitter();\n\n  @Output() eventDbClick = new EventEmitter();\n\n  @Output() eventClick = new EventEmitter();\n\n  @Output() eventMouseover = new EventEmitter();\n\n  @Output() eventMouseout = new EventEmitter();\n\n  @Output() eventContextmenu = new EventEmitter();\n\n  @Output() newEventClick = new EventEmitter();\n\n  @Output() releaseSchedule = new EventEmitter();\n\n  @ViewChild('scheduleviews', { static: true }) scheduleviews;\n\n  public slatNumberRowsAsArray: Array<Number>;\n\n  public existsScale = false;\n\n  public currentHoliday: HolidaysType;\n\n  private _events: ScheduleDataSource[];\n\n  private scrollTopOfscrollView: number;\n\n  get events(): ScheduleDataSource[] {\n    return this._events;\n  }\n\n  constructor(\n    public workScaleService: WorkScaleService,\n    private changeDetection: ChangeDetectorRef,\n    private eventService: EventService,\n    private holidayService: HolidayService,\n    private generateEventsService: GenerateEventsService\n  ) {}\n\n  ngOnInit() {\n    this.convertSlarNumberToArray();\n    this.changeDetection.detectChanges();\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {\n    this.existsScale = this.workScaleService.exitsWorkScale( this.workScale );\n    if ( changes['holidays'] ) {\n      this.handleHoliday( changes['holidays'].currentValue );\n    }\n    if (this.existsScale ) {\n      this.handleScrollView();\n    }\n    this.changeDetection.detectChanges();\n  }\n\n  onChangeView( view: ViewType ) {\n    this.defaultView = view;\n    this.changeView.emit( view );\n  }\n\n  onChangeDate($event) {\n    this.currentDate = new Date( $event.year, $event.month, $event.day);\n    this.workScaleService.currentDate = new Date( $event.year, $event.month, $event.day);\n    this.eventService.getEventsOfDay();\n    this.changeDate.emit( $event );\n    this.handleHoliday();\n    this.changeDetection.detectChanges();\n  }\n\n  onClickReleaseSchedule( holiday: HolidaysType ) {\n    this.releaseSchedule.emit( holiday );\n  }\n\n  private setScrollTopOnChange() {\n    this.scrollTopOfscrollView = this.scheduleviews.nativeElement ? this.scheduleviews.nativeElement.scrollTop : 0;\n  }\n\n  private handleScrollView( date = this.currentDate) {\n    if ( !this.scheduleviews ) {\n      return;\n    }\n    this.setScrollTopOnChange();\n    setTimeout(() => {\n      this.scheduleviews.nativeElement.scrollTop = (\n        this.isSameDay( date ) ? this.generateEventsService.convertMillisecondsToPixel() : this.scrollTopOfscrollView\n      );\n    }, 100);\n  }\n\n  private isSameDay( date ) {\n    const nowDate = new Date();\n    return date.getDate() === nowDate.getDate() &&\n           date.getDay() === nowDate.getDay() &&\n           date.getFullYear() === nowDate.getFullYear();\n  }\n\n  private handleHoliday( holidays = this.holidays ) {\n    this.currentHoliday = this.holidayService.handleHoliday( holidays, this.currentDate );\n    this.changeDetection.detectChanges();\n  }\n\n  private convertSlarNumberToArray() {\n    this.slatNumberRowsAsArray = Array( this.slotSettings.slotCount );\n    this.changeDetection.detectChanges();\n  }\n}\n","<div class=\"ui-wrapper-schedule\">\n\n  <!-- SCHEDULE HEADER -->\n  <div class=\"ui-schedule-header\">\n    <tl-schedule-heading\n      [texts]=\"texts\"\n      [views]=\"views\"\n      [defaultView]=\"defaultView\"\n      [currentDate]=\"currentDate\"\n      [eventButtonTemplate]=\"eventButtonTemplate\"\n      (changeView)=\"onChangeView($event)\"\n      (changeDate)=\"onChangeDate($event)\"\n      (newEventClick)=\"newEventClick.emit()\"\n    ></tl-schedule-heading>\n  </div>\n\n  <!-- SCHEDULE BODY -->\n  <div  class=\"ui-schedule-body\"\n        [tlBlockui]=\"(currentHoliday?.id && !allowScheduleInHolidays && !currentHoliday?.attend) && existsScale\"\n        [blockuiConfig]=\"{ message: currentHoliday?.description, icon: 'fas fa-umbrella-beach', color: '#ccc' }\"\n        [ngStyle]=\"{height: 'calc(' + height +' - 52px)'} \" [ngSwitch]=\"defaultView\">\n    <div class=\"loading\" *ngIf=\"isLoading\">\n      <div class=\"loader\">\n        <tl-loader></tl-loader>\n      </div>\n    </div>\n    <div class=\"holiday\" *ngIf=\"(currentHoliday?.id && !allowScheduleInHolidays && !currentHoliday?.attend) && existsScale\">\n      <div class=\"ms-button-attend\">\n        <tl-button (click)=\"onClickReleaseSchedule(currentHoliday)\" [text]=\"'Liberar Atendimento'\" [color]=\"'primary'\"></tl-button>\n      </div>\n    </div>\n    <div class=\"ui-schedule-views\"  #scheduleviews [tlBlockui]=\"(!workScale || !existsScale)\"\n         [blockuiConfig]=\"{ message: texts.scaleNotFound, icon: 'fas fa-address-book', color: '#ccc' }\"\n         [ngStyle]=\"{overflowY: !existsScale ? 'hidden' : 'visible'}\">\n      <tl-view-day\n        *ngSwitchCase=\"'day'\"\n        [currentDate]=\"currentDate\"\n        [showNowIndicator]=\"showNowIndicator\"\n        [statusConfig]=\"statusConfig\"\n        [typesConfig]=\"typesConfig\"\n        [events]=\"events\"\n        [slotSettings]=\"slotSettings\"\n        [slatNumberRowsAsArray]=\"slatNumberRowsAsArray\"\n        [workScale]=\"workScale\"\n        (onEventContextmenu)=\"eventContextmenu.emit($event)\"\n        (onRowClick)=\"rowClick.emit($event)\"\n        (onRowDbClick)=\"rowDbClick.emit($event)\"\n        (onEventClick)=\"eventClick.emit($event)\"\n        (onEventDbClick)=\"eventDbClick.emit($event)\"\n        (onEventMouseover)=\"eventMouseover.emit($event)\"\n        (onEventMouseout)=\"eventMouseout.emit($event)\"\n      ></tl-view-day>\n\n      <tl-week\n      *ngSwitchCase=\"'weekList'\"\n      [showNowIndicator]=\"showNowIndicator\"\n      [statusConfig]=\"statusConfig\"\n      [typesConfig]=\"typesConfig\"\n      [events]=\"events\"\n      [slotSettings]=\"slotSettings\"\n      [slatNumberRowsAsArray]=\"slatNumberRowsAsArray\"\n      (onEventContextmenu)=\"eventContextmenu.emit($event)\"\n      (onRowClick)=\"rowClick.emit($event)\"\n      (onRowDbClick)=\"rowDbClick.emit($event)\"\n      (onEventClick)=\"eventClick.emit($event)\"\n      (onEventDbClick)=\"eventDbClick.emit($event)\"\n      (onEventMouseover)=\"eventMouseover.emit($event)\"\n      (onEventMouseout)=\"eventMouseout.emit($event)\"\n      ></tl-week>\n\n      <tl-day-list\n      *ngSwitchCase=\"'dayList'\"\n      [statusConfig]=\"statusConfig\"\n      [events]=\"events\"\n      (onEventContextmenu)=\"eventContextmenu.emit($event)\"\n      (onRowClick)=\"rowClick.emit($event)\"\n      (onRowDbClick)=\"rowDbClick.emit($event)\"\n      (onEventClick)=\"eventClick.emit($event)\"\n      (onEventDbClick)=\"eventDbClick.emit($event)\"\n      (onEventMouseover)=\"eventMouseover.emit($event)\"\n      (onEventMouseout)=\"eventMouseout.emit($event)\"\n      ></tl-day-list>\n\n      <!--<tl-day-list-->\n      <!--*ngSwitchCase=\"'dayList'\"-->\n      <!--[events]=\"eventsOfDay\"-->\n      <!--[currentDate]=\"currentDate\"-->\n      <!--[statusConfig]=\"statusConfig\"-->\n      <!--(onEventClick)=\"eventClick.emit($event)\"-->\n      <!--(onEventDbClick)=\"eventDbClick.emit($event)\"-->\n      <!--(onEventMouseover)=\"eventMouseover.emit($event)\"-->\n      <!--(onEventMouseout)=\"eventMouseout.emit($event)\"-->\n      <!--&gt;</tl-day-list>-->\n    </div>\n  </div>\n\n  <!-- SCHEDULE FOOTER -->\n  <div class=\"schedule-footer\"></div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  Output, TemplateRef, ViewChild\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-split-button-action',\n  templateUrl: './splitbutton-action.html',\n  styleUrls: [ './splitbutton-action.scss' ]\n} )\nexport class TlSplitButtonAction {\n\n  @Input() label = '';\n\n  @Input() icon = '';\n\n  @Input() disabled = null;\n\n  @Input() separator = false;\n\n  @ViewChild('templateList', { read: TemplateRef, static: true }) templateList;\n\n  @Output() click: EventEmitter<any> = new EventEmitter();\n\n  onClickListener($event) {\n    $event.preventDefault();\n    $event.stopPropagation();\n    if ( !this.disabled ) {\n      this.click.emit($event);\n    }\n  }\n\n  constructor() {}\n\n}\n","<ng-template #templateList>\n  <li class=\"split-item\"\n      [class.disabled]=\"disabled\"\n      [class.separator]=\"separator\"\n      (click)=\"onClickListener($event)\">\n    <i *ngIf=\"icon\" class=\"icon-action {{ icon }}\"></i>\n    {{ label }}\n  </li>\n</ng-template>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component,\n  Input,\n  AfterContentInit,\n  ContentChildren,\n  QueryList,\n  ChangeDetectorRef, Output, EventEmitter\n} from '@angular/core';\n\nimport {OverlayAnimation} from '../core/directives/overlay-animation';\nimport {TlSplitButtonAction} from './parts/splitbutton-action';\nimport {ConnectedOverlayPositionChange} from '@angular/cdk/overlay';\n\n@Component({\n  selector: 'tl-split-button',\n  templateUrl: './splitbutton.html',\n  styleUrls: ['./splitbutton.scss'],\n  animations: [OverlayAnimation]\n})\nexport class TlSplitButton implements AfterContentInit {\n\n  @Input() text = '';\n\n  @Input() width = '100%';\n\n  @Input() height = '30px';\n\n  @Input() disabled: boolean = null;\n\n  @Input() color = 'basic';\n\n  @Output() click: EventEmitter<any> = new EventEmitter();\n\n  @ContentChildren(TlSplitButtonAction) actions: QueryList<TlSplitButtonAction>;\n\n  public isOpen: boolean;\n\n  public positionOverlay = 'bottom';\n\n  public listItems = [];\n\n  constructor(private change: ChangeDetectorRef) {\n  }\n\n  ngAfterContentInit() {\n    this.listItems = this.actions.map(( item ) => item.templateList );\n    this.actions.forEach((item) => item.click.subscribe(() => this.isOpen = false));\n  }\n\n  onPositionChange($event: ConnectedOverlayPositionChange) {\n    this.positionOverlay = $event.connectionPair.originY;\n    this.change.detectChanges();\n  }\n\n  get disabledActions() {\n    return this.actions.filter((item) => item.disabled).length === this.actions.length;\n  }\n\n  open($event) {\n    this.stopEvent($event);\n    if ( !this.disabledActions ) {\n      this.isOpen = !this.isOpen;\n    }\n  }\n\n  stopEvent($event) {\n    $event.preventDefault();\n    $event.stopPropagation();\n  }\n\n  onButtonClick($event) {\n    if ( !this.disabled ) {\n      this.click.emit($event);\n    }\n    this.stopEvent($event);\n  }\n\n  onBackdropClick() {\n    this.isOpen = false;\n    this.change.detectChanges();\n  }\n\n}\n","<div class=\"split-wrapper\" [ngClass]=\"color\" (click)=\"onButtonClick($event)\">\n  <div class=\"split-content\" #split>\n    <tl-button cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n               [color]=\"color\"\n               [text]=\"text\"\n               [disabled]=\"disabled\"\n               [width]=\"width\"\n               [height]=\"height\">\n    </tl-button>\n    <div [class.active]=\"isOpen\"\n         (click)=\"open($event)\"\n         [class.disabled]=\"disabledActions\"\n         class=\"split-button-actions\"\n         [ngStyle]=\"{'height': height, 'line-height': height}\">\n      <div class=\"icon-arrow\" [style.transform]=\"isOpen ? 'rotate(180deg)' : 'rotate(0)'\">\n        <tl-icon [lib]=\"'fa'\" [style]=\"'fas'\">chevron-down</tl-icon>\n      </div>\n      <ng-template cdkConnectedOverlay\n                   (backdropClick)=\"onBackdropClick()\"\n                   (positionChange)=\"onPositionChange($event)\"\n                   [cdkConnectedOverlayHasBackdrop]=\"true\"\n                   [cdkConnectedOverlayOrigin]=\"trigger\"\n                   [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\"\n                   [cdkConnectedOverlayOpen]=\"isOpen\">\n        <ul @overlay\n            [style.minWidth]=\"split.offsetWidth + 'px'\"\n            [class.margin-top]=\"positionOverlay === 'bottom'\"\n            [class.margin-bottom]=\"positionOverlay === 'top'\"\n            class=\"actions-menu\">\n            <ng-container *ngFor=\"let item of listItems\">\n              <ng-container *ngTemplateOutlet=\"item\"></ng-container>\n            </ng-container>\n        </ul>\n      </ng-template>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { TlSplitButton } from './splitbutton';\nimport { TlSplitButtonAction } from './parts/splitbutton-action';\n\nimport { ButtonModule } from '../button/index';\nimport { IconsModule } from '../icons/index';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        OverlayModule,\n        ButtonModule,\n        IconsModule\n    ],\n    declarations: [\n        TlSplitButton,\n        TlSplitButtonAction\n    ],\n    exports: [\n        TlSplitButton,\n        TlSplitButtonAction\n    ]\n})\nexport class SplitButtonModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { HeadingComponent } from './parts/heading/heading.component';\nimport { TlSchedule } from './schedule';\nimport { DayListComponent } from './views/day-list/day-list.component';\nimport { ViewDayComponent } from './views/day/view-day.component';\nimport { WeekComponent } from './views/week/week.component';\n\nimport { MiscModule } from '../misc/index';\nimport { NavigatorModule } from '../navigator/index';\nimport { TooltipModule } from '../tooltip/index';\nimport { BlockUIModule } from '../blockui/index';\nimport { ButtonModule } from '../button/index';\nimport { ButtonGroupModule } from '../buttongroup/index';\nimport { LoaderModule } from '../loader/index';\nimport { SplitButtonModule } from '../splitbutton/index';\nimport { IconsModule } from '../icons/index';\n\nimport { GenerateEventsService } from './services/generate-events.service';\nimport { WorkScaleService } from './services/work-scale.service';\nimport { EventService } from './services/event.service';\nimport { HolidayService } from './services/holiday.service';\n\n\n\n@NgModule({\n    imports: [\n      CommonModule,\n      MiscModule,\n      NavigatorModule,\n      TooltipModule,\n      ButtonGroupModule,\n      BlockUIModule,\n      ButtonModule,\n      LoaderModule,\n      IconsModule,\n      SplitButtonModule\n    ],\n    declarations: [\n      TlSchedule,\n      ViewDayComponent,\n      WeekComponent,\n      DayListComponent,\n      HeadingComponent\n    ],\n    exports: [\n      TlSchedule,\n    ],\n    providers: [\n      GenerateEventsService,\n      WorkScaleService,\n      EventService,\n      HolidayService\n    ]\n})\nexport class ScheduleModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport class ScheduleDataSource {\n  value: string;\n  title: string;\n  detail: string;\n  note: string;\n  allday: boolean;\n  blocked: boolean;\n  status: string;\n  type: string;\n  date: { start: number, end: number };\n  tags: Array<ShcheduleDataSourceTags>;\n}\n\nexport class ShcheduleDataSourceTags {\n  title: string;\n  color: string;\n}\n","/*\n *\n *     MIT License\n *\n *     Copyright (c) 2019 Temainfo Sistemas\n *\n *     Permission is hereby granted, free of charge, to any person obtaining a copy\n *     of this software and associated documentation files (the \"Software\"), to deal\n *     in the Software without restriction, including without limitation the rights\n *     to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n *     copies of the Software, and to permit persons to whom the Software is\n *     furnished to do so, subject to the following conditions:\n *     The above copyright notice and this permission notice shall be included in all\n *     copies or substantial portions of the Software.\n *     THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n *     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n *     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n *     AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n *     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n *     OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n *     SOFTWARE.\n * /\n */\n\nexport class HolidaysType {\n  id: any;\n  date: Date;\n  description: string;\n  attend: boolean;\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport class StatusType {\n  status: string;\n  color: string;\n  description: string;\n}\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n@Injectable()\nexport class StopwatchService {\n\n  public hour = 0;\n\n  public minute = 0;\n\n  public second = 0;\n\n  public LIMIT_HOUR = 24;\n\n  public LIMIT_MINUTE = 60;\n\n  public LIMIT_SECOND = 60;\n\n  public isPause = true;\n\n  public interval;\n\n  public refreshHour = new Subject();\n\n  constructor() {}\n\n  isLimitHour() {\n    return this.hour === this.LIMIT_HOUR;\n  }\n\n  isLimitMinute() {\n    return this.minute === this.LIMIT_MINUTE;\n  }\n\n  isLimitSecond() {\n    return this.second === this.LIMIT_SECOND;\n  }\n\n  resetHour() {\n    this.hour = 0;\n  }\n\n  resetMinute() {\n    this.minute = 0;\n  }\n\n  resetSecond() {\n    this.second = 0;\n  }\n\n  incrementHour() {\n    this.resetMinute();\n    this.hour++;\n  }\n\n  incrementMinute() {\n    this.resetSecond();\n    this.minute++;\n  }\n\n  incrementSecond() {\n    this.second++;\n  }\n\n  start() {\n    this.isPause = false;\n    clearInterval(this.interval);\n    this.interval = setInterval(() => {\n      if (this.isPause) {\n        return;\n      }\n      this.incrementSecond();\n      if (this.isLimitSecond()) {\n        this.incrementMinute();\n      }\n      if (this.isLimitMinute()) {\n        this.incrementHour();\n      }\n      if (this.isLimitHour()) {\n        this.resetHour();\n      }\n      this.refreshHour.next(this.getHour());\n    }, 1000);\n  }\n\n  stop() {\n    this.isPause = true;\n    this.refreshHour.next(this.getHour());\n  }\n\n  getHour(): string {\n    return this.formatTime(this.hour) + ':' +\n      this.formatTime(this.minute) + ':' +\n      this.formatTime(this.second);\n  }\n\n  formatTime(digit) {\n    return digit <= 9 ? '0' + digit : digit;\n  }\n\n  reset() {\n    this.hour = 0;\n    this.minute = 0;\n    this.second = 0;\n    this.refreshHour.next(this.getHour());\n  }\n\n}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Component,\n  OnInit,\n  Input,\n  Output,\n  EventEmitter, ChangeDetectorRef, OnDestroy\n} from '@angular/core';\nimport { StopwatchService } from './services/stopwatch-service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n  selector: 'tl-stopwatch',\n  templateUrl: './stopwatch.html',\n  styleUrls: ['./stopwatch.scss'],\n})\nexport class TlStopwatch implements OnInit, OnDestroy {\n\n  @Input() color = 'basic';\n\n  @Input() width = '240px';\n\n  @Input() height = '60px';\n\n  @Input() resetOnStop = false;\n\n  @Input('initialTime')\n  set initialTime(value: string | Date) {\n    if (typeof value === 'string') {\n      if (value.length === 8) {\n        this.stopWatchService.hour = parseInt( value.substr( 0, 2 ), 10 );\n        this.stopWatchService.minute = parseInt( value.substr( 3, 2 ), 10 );\n        this.stopWatchService.second = parseInt( value.substr( 6, 2 ), 10 );\n      } else {\n        const diff = Math.abs(new Date().getTime() - new Date(value).getTime());\n        const seconds = diff / 1000;\n        this.stopWatchService.hour = Math.floor(seconds / (60 * 60));\n        this.stopWatchService.minute = Math.floor( ((seconds % (60 * 60)) / 60));\n        this.stopWatchService.second =  Math.ceil( ((seconds % (60 * 60)) % 60));\n      }\n      this.stopWatchService.start();\n      return;\n    }\n\n    if (value instanceof Date) {\n      const diff = Math.abs(new Date().getTime() - new Date(value).getTime());\n      const seconds = diff / 1000;\n      this.stopWatchService.hour = Math.floor(seconds / (60 * 60));\n      this.stopWatchService.minute = Math.floor( ((seconds % (60 * 60)) / 60));\n      this.stopWatchService.second =  Math.ceil( ((seconds % (60 * 60)) % 60));\n      this.stopWatchService.start();\n      return;\n    }\n\n    this.stopWatchService.hour = 0;\n    this.stopWatchService.minute = 0;\n    this.stopWatchService.second = 0;\n  }\n\n  @Output() returnTime = new EventEmitter();\n\n  public currentHour = '00:00:00';\n\n  private subscription = new Subscription();\n\n  constructor( private stopWatchService: StopwatchService, private change: ChangeDetectorRef ) {}\n\n  ngOnInit() {\n    this.subscription.add(this.stopWatchService.refreshHour.subscribe((hour: string) => {\n      this.currentHour = hour;\n      this.change.detectChanges();\n    }));\n  }\n\n  start() {\n    this.stopWatchService.start();\n  }\n\n  stop() {\n    this.stopWatchService.stop();\n    this.returnTime.emit({time: this.stopWatchService.getHour()});\n    if (this.resetOnStop) { this.reset(); }\n  }\n\n  reset() {\n    this.stopWatchService.reset();\n  }\n\n  ngOnDestroy(): void {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<div [class]=\"'tl-stopwatch ' + color\" [ngStyle]=\"{'width': width, 'height': height}\">\n  <div class=\"icon\">\n    <tl-icon [lib]=\"'fa'\" [style]=\"'far'\" [size]=\"'2em'\">clock</tl-icon>\n  </div>\n  <div class=\"time\">\n    <p>{{ currentHour }}</p>\n  </div>\n</div>\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlStopwatch } from './stopwatch';\nimport { StopwatchService } from './services/stopwatch-service';\nimport { IconsModule } from '../icons/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    IconsModule\n  ],\n  declarations: [\n    TlStopwatch\n  ],\n  exports: [\n    TlStopwatch\n  ]\n})\nexport class StopwatchModule {\n  static forRoot(): ModuleWithProviders<StopwatchModule> {\n    return {\n      ngModule: StopwatchModule,\n      providers: [\n        StopwatchService\n      ]\n    };\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, Input, ViewChild, Output, EventEmitter,\n  Optional, Inject, OnInit\n} from '@angular/core';\n\nimport { MakeProvider } from '../core/base/value-accessor-provider';\nimport { ElementBase } from '../input/core/element-base';\nimport { NG_ASYNC_VALIDATORS, NG_VALIDATORS, NgModel } from '@angular/forms';\n\n@Component( {\n  selector: 'tl-switch',\n  templateUrl: './switch.html',\n  styleUrls: [ './switch.scss' ],\n  providers: [\n    [ MakeProvider( TlSwitch ) ]\n  ]\n} )\nexport class TlSwitch extends ElementBase<boolean> implements OnInit {\n\n  @Input() label = '';\n\n  @Input() labelSize = '100px';\n\n  @Input() tabindex = '0';\n\n  @Input() disabled = null;\n\n  @Input() color = 'primary';\n\n  @ViewChild( NgModel, {static: true} ) model: NgModel;\n\n  @Output() toggle: EventEmitter<any> = new EventEmitter();\n\n  @Output() focus: EventEmitter<any> = new EventEmitter();\n\n  private _cheched = false;\n\n  @Input('checked')\n  set checked( value: boolean ) {\n    this._cheched = value;\n    this.value = value;\n  }\n\n  get checked() {\n    return this._cheched;\n  }\n\n  constructor(\n    @Optional() @Inject(NG_VALIDATORS) validators: Array<any>,\n    @Optional() @Inject(NG_ASYNC_VALIDATORS) asyncValidators: Array<any>,\n  ) {\n    super(validators, asyncValidators);\n  }\n\n  ngOnInit() {\n    this.value = this.checked;\n    if ( !this.label ) {\n      throw new EvalError( 'The [label] property is required!' );\n    }\n  }\n\n  switchToggle( boolean ) {\n    if (!this.disabled) {\n      this.value = !boolean;\n      this.emitEvent();\n    }\n  }\n\n  emitEvent() {\n    this.toggle.emit( this.value );\n  }\n\n  focusCheckBox() {\n    this.focus.emit( this.value );\n  }\n\n}\n\n","<div class=\"ui-wrapper-switch\" [ngClass]=\"color\">\n  <div class=\"ui-switch\">\n    <label class=\"switch\">\n      <input #checkbox\n             type=\"checkbox\"\n             #model=\"ngModel\"\n             (focus)=\"focusCheckBox()\"\n             (change)=\"emitEvent()\"\n             [checked]=\"value\"\n             [attr.disabled]=\"disabled\"\n             [tabindex]=\"tabindex\"\n             [(ngModel)]=\"value\">\n      <span class=\"slider round\" [ngClass]=\"{'disabled': disabled}\"></span>\n      <label (click)=\"switchToggle(value)\" class=\"label\" [style.width]=\"labelSize\">{{label}}</label>\n    </label>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlSwitch } from './switch';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  declarations: [\n    TlSwitch\n  ],\n  exports: [\n    TlSwitch\n  ],\n} )\nexport class SwitchModule {\n}\n","import {Injectable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\n@Injectable()\nexport class StepService {\n\n  public onChange = new Subject();\n\n  public onFinish = new Subject();\n\n  public onChangeStatusForm = new Subject();\n\n  private currentStep = 0;\n\n  private steps;\n\n  constructor() {\n  }\n\n  setSteps(steps: Array<any>) {\n    this.steps = steps;\n  }\n\n  setCurrentStep(step: number) {\n    this.currentStep = step;\n  }\n\n  isFormValid() {\n    return this.steps[this.currentStep].form.valid;\n  }\n\n  isValidateForm() {\n    return this.steps[this.currentStep].validateForm;\n  }\n\n  next() {\n    if (!this.isLastStep()) {\n      this.currentStep = this.currentStep + 1;\n      this.onChange.next(this.currentStep);\n    }\n  }\n\n  finish() {\n    const form = {};\n    this.steps.forEach(( item, index ) => {\n      const id = `step${index}`;\n      Object.assign( form, { [id]: item.form.value });\n    });\n    this.onFinish.next( form );\n  }\n\n  previous() {\n    if (this.currentStep > 0) {\n      this.currentStep = this.currentStep - 1;\n      this.onChange.next(this.currentStep);\n    }\n  }\n\n  formStatusChange( status: boolean ) {\n    this.onChangeStatusForm.next( status );\n  }\n\n  isFirstStep() {\n    return this.currentStep === 0;\n  }\n\n  isLastStep() {\n    return this.steps.length - 1 === this.currentStep;\n  }\n\n}\n","import {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {UntypedFormGroup} from '@angular/forms';\nimport {StepService} from '../../services/step.service';\nimport {Subscription} from 'rxjs';\n\nlet index = 0;\n\n@Component({\n  selector: 'tl-step-form',\n  templateUrl: './step-form.html',\n  styleUrls: ['./step-form.scss']\n})\nexport class TlStepForm implements OnInit, OnDestroy {\n\n  @Input() form: UntypedFormGroup;\n\n  @Input() validateForm = true;\n\n  @Input() label = `step${index++}`;\n\n  @Input() templateIcon = null;\n\n  public selected = false;\n\n  private subscription = new Subscription();\n\n  constructor( private stepService: StepService ) { }\n\n  ngOnInit() {\n    this.changes();\n    this.statusChanges();\n  }\n\n  changes() {\n    this.subscription.add(this.stepService.onChange.subscribe(() => {\n      this.stepService.formStatusChange( this.form.status !== 'INVALID' );\n    }));\n  }\n\n  statusChanges() {\n    this.subscription.add(this.form.statusChanges.subscribe(( status: string ) => {\n      this.stepService.formStatusChange( status !== 'INVALID' );\n    }));\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<div class=\"step-form-wrapper\" *ngIf=\"selected\">\n  <ng-content></ng-content>\n</div>\n\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {AfterContentInit, Component, ContentChildren, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList} from '@angular/core';\nimport {StepService} from './services/step.service';\nimport {TlStepForm} from './parts/step-form/step-form';\nimport {Subscription} from 'rxjs';\n\n@Component({\n  selector: 'tl-step',\n  templateUrl: './step.html',\n  styleUrls: ['./step.scss'],\n  providers: [StepService]\n})\nexport class TlStep implements OnInit, AfterContentInit, OnDestroy {\n\n  @Input('initialStep')\n  set initialStep(value: number) {\n    if (value) {\n      this.stepService.setCurrentStep(value);\n    }\n  }\n\n  @ContentChildren(TlStepForm) steps: QueryList<TlStepForm>;\n\n  @Output() finish = new EventEmitter();\n\n  @Output() changeStep = new EventEmitter();\n\n  public selected = 0;\n\n  private subscription = new Subscription();\n\n  get stepsArray() {\n    return this.steps.toArray();\n  }\n\n  constructor(private stepService: StepService) {\n  }\n\n  ngOnInit() {\n    this.onChange();\n    this.onFinish();\n  }\n\n  ngAfterContentInit() {\n    this.stepService.setSteps(this.steps.toArray());\n    this.steps.first.selected = true;\n    this.selected = this.steps.toArray().findIndex((item) => item.selected);\n  }\n\n  onChange() {\n    this.subscription.add(this.stepService.onChange.subscribe((step: number) => {\n      this.selected = step;\n      this.closeAll();\n      this.steps.toArray()[step].selected = true;\n      this.changeStep.emit( step );\n    }));\n  }\n\n  onFinish() {\n    this.subscription.add(this.stepService.onFinish.subscribe((steps) => {\n      this.finish.emit(steps);\n    }));\n  }\n\n  closeAll() {\n    this.steps.forEach((item) => item.selected = false);\n  }\n\n  ngOnDestroy() {\n    this.subscription.unsubscribe();\n  }\n\n}\n","<div class=\"step-wrapper\">\n  <div class=\"step-item\" *ngFor=\"let item of stepsArray; let i = index; let last = last\">\n    <ng-container *ngIf=\"!item.templateIcon\">\n      <div class=\"circle\" [class.selected]=\"selected === i\">{{ i + 1 }}</div>\n    </ng-container>\n    <div class=\"step-icon\">\n      <ng-container *ngTemplateOutlet=\"item?.templateIcon\"></ng-container>\n    </div>\n    <span class=\"label\" [class.selected]=\"selected === i\">{{ item?.label }}</span>\n    <div class=\"separator\" *ngIf=\"!last\"><div class=\"line\"></div></div>\n  </div>\n</div>\n<div class=\"step-content\">\n  <ng-content></ng-content>\n</div>\n","import {AfterViewInit, ChangeDetectorRef, ContentChild, Directive, ElementRef, HostListener, OnInit} from '@angular/core';\nimport {StepService} from '../services/step.service';\nimport {TlButton} from '../../button/button';\n\n@Directive({\n  selector: '[stepNext]'\n})\nexport class StepNextDirective implements OnInit, AfterViewInit {\n\n  constructor(private elementRef: ElementRef,\n              private change: ChangeDetectorRef,\n              private stepService: StepService,\n              private button: TlButton) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    if ( !this.stepService.isValidateForm() ) {\n      this.stepService.next();\n      return;\n    }\n    if (this.stepService.isFormValid()) {\n      this.stepService.next();\n    }\n  }\n\n  ngOnInit() {\n    this.stepService.onChange.subscribe(() => {\n      this.elementRef.nativeElement.hidden = this.stepService.isLastStep();\n    });\n  }\n\n  ngAfterViewInit() {\n    this.setDisabled();\n    this.stepService.onChangeStatusForm.subscribe(() => {\n      setTimeout(() => {\n        this.setDisabled();\n      });\n    });\n  }\n\n  private setDisabled() {\n    if ( this.stepService.isValidateForm()) {\n      this.button.disabled = !this.stepService.isFormValid();\n      this.change.detectChanges();\n    }\n  }\n\n}\n","import {Directive, ElementRef, HostListener, OnInit} from '@angular/core';\nimport {StepService} from '../services/step.service';\n\n@Directive({\n  selector: '[stepPrevious]'\n})\nexport class StepPreviousDirective implements OnInit {\n\n  constructor( private elementRef: ElementRef, private stepService: StepService ) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    this.stepService.previous();\n  }\n\n  ngOnInit() {\n    this.elementRef.nativeElement.hidden = this.stepService.isFirstStep();\n    this.stepService.onChange.subscribe(() => {\n      this.elementRef.nativeElement.hidden = this.stepService.isFirstStep();\n    });\n  }\n\n}\n","import {AfterViewInit, ChangeDetectorRef, ContentChild, Directive, ElementRef, HostListener, OnInit} from '@angular/core';\nimport {StepService} from '../services/step.service';\nimport {TlButton} from '../../button/button';\n\n@Directive({\n  selector: '[stepFinish]'\n})\nexport class StepFinishDirective implements AfterViewInit, OnInit {\n\n  constructor( private elementRef: ElementRef,\n               private change: ChangeDetectorRef,\n               private stepService: StepService,\n               private button: TlButton) {\n  }\n\n  @HostListener('click')\n  onClick() {\n    if ( !this.stepService.isValidateForm() ) {\n      this.stepService.finish();\n      return;\n    }\n    if (this.stepService.isFormValid()) {\n      this.stepService.finish();\n    }\n  }\n\n  ngOnInit() {\n    this.elementRef.nativeElement.hidden = 'true';\n    this.changes();\n  }\n\n  ngAfterViewInit() {\n    this.setDisabled();\n    this.stepService.onChangeStatusForm.subscribe(() => {\n      setTimeout(() => {\n        this.setDisabled();\n      });\n    });\n  }\n\n  private setDisabled() {\n    if ( this.stepService.isValidateForm()) {\n      this.button.disabled = !this.stepService.isFormValid();\n      this.change.detectChanges();\n    }\n  }\n\n  private changes() {\n    this.stepService.onChange.subscribe(() => {\n      this.elementRef.nativeElement.hidden = !this.stepService.isLastStep();\n    });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlStep } from './step';\nimport {TlStepForm} from './parts/step-form/step-form';\nimport {StepNextDirective} from './directives/step-next.directive';\nimport {StepPreviousDirective} from './directives/step-previous.directive';\nimport {StepFinishDirective} from './directives/step-finish.directive';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule\n  ],\n  declarations: [\n    TlStep,\n    TlStepForm,\n    StepNextDirective,\n    StepPreviousDirective,\n    StepFinishDirective\n  ],\n  exports: [\n    TlStep,\n    TlStepForm,\n    StepNextDirective,\n    StepPreviousDirective,\n    StepFinishDirective\n  ]\n})\nexport class StepModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  AfterViewInit, Component, ElementRef, Input,\n  ViewChild\n} from '@angular/core';\nimport {FixedPositionDirective} from '../../misc/fixed-position.directive';\n\n@Component({\n  selector: 'tl-tab',\n  templateUrl: './tab.html',\n  styleUrls: [ './tab.scss' ]\n})\nexport class TlTab implements AfterViewInit {\n\n  @Input() title = 'New Tab';\n\n  @Input() padding = true;\n\n  @ViewChild( 'tabComponents', {static: true} ) tabComponents: ElementRef;\n\n  public height = 'auto';\n\n  public selected;\n\n  public lastComponent;\n\n  public background;\n\n  public firstComponent;\n\n  public trulyComponents = ['input'];\n\n  constructor() {}\n\n  ngAfterViewInit() {\n    const components = this.tabComponents.nativeElement.querySelectorAll('*');\n    const focusableComponents = [];\n    for (let element = 0; element < components.length; element++) {\n      if (this.trulyComponents.indexOf(components[element].localName) >= 0) {\n        focusableComponents.push(components[element]);\n      }\n    }\n    this.lastComponent = focusableComponents[focusableComponents.length - 1];\n    this.firstComponent = focusableComponents[0];\n  }\n\n}\n","<div class=\"tab-wrapper\"\n     [style.height]=\"height\"\n     [ngClass]=\"{'tab-wrapper-selected': selected}\"\n     [style.display]=\"selected ? 'block' : 'none'\"\n     [class.fix-padding]=\"padding\">\n\n  <div #tabComponents>\n    <ng-content></ng-content>\n  </div>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Component, ContentChildren, QueryList, forwardRef, Input, AfterContentInit, ViewChild, AfterViewInit, Renderer2,\n} from '@angular/core';\n\nimport { TlTab } from './tab/tab';\nimport { TlModal } from '../modal/modal';\nimport { KeyEvent } from '../core/enums/key-events';\nimport {FixedPositionDirective} from '../misc/fixed-position.directive';\n\n@Component( {\n    selector: 'tl-tabcontrol',\n    templateUrl: './tabcontrol.html',\n    styleUrls: [ './tabcontrol.scss' ]\n} )\nexport class TlTabControl implements AfterContentInit, AfterViewInit {\n\n    @Input( 'height' ) height = 'auto';\n\n    @Input( 'tabsHeight' ) tabsHeight = '25px';\n\n    @ViewChild('tabsHeader', {static: true}) tabsHeader;\n\n    @ViewChild('wrapperTab', {static: true}) wrapper;\n\n    @ViewChild('line', {static: true}) line;\n\n    @ContentChildren( forwardRef(() => TlTab )) tabs: QueryList<TlTab>;\n\n    @ViewChild( forwardRef(() => TlModal ), {static: true}) modal: QueryList<TlModal>;\n\n    private elementListTabs;\n\n    public widthSeparator = '';\n\n    public widthTabs = 0;\n\n    public widthWrapper = 0;\n\n    public topPosition = 0;\n\n    constructor(private renderer: Renderer2 ) {}\n\n    ngAfterContentInit() {\n      const selectedTab = this.tabs.find(tab => tab.selected);\n      if (!selectedTab && this.tabs.first) {\n        this.tabs.first.selected = true;\n      }\n      this.setTabProperties();\n      this.getElementList();\n    }\n\n    ngAfterViewInit() {\n      this.getWrapperWidth();\n      this.getTabsComponent();\n    }\n\n    getTabsComponent() {\n      this.tabs.forEach( ( item, index ) => {\n        this.listenLastElementTab( item.lastComponent, index );\n        this.listenPreviousElementTab( item.firstComponent, index );\n      } );\n    }\n\n    listenLastElementTab( last, index ) {\n      if ( last ) {\n        this.renderer.listen( last, 'keydown', ( $event ) => {\n          this.handleKeyDownLastElementTab( $event, index );\n        } );\n      }\n    }\n\n    listenPreviousElementTab( first, index ) {\n      if ( first ) {\n        this.renderer.listen( first, 'keydown', ( $event ) => {\n          this.handleKeyDownFirstElementTab( $event, index );\n        } );\n      }\n    }\n\n    handleKeyDownLastElementTab( $event, index ) {\n      if ( [ KeyEvent.TAB, KeyEvent.ENTER, KeyEvent.ARROWDOWN ].indexOf( $event.code ) >= 0 && (!$event.shiftKey) ) {\n        this.nextTabAndElement( index );\n      }\n      if ( ($event.code === KeyEvent.TAB) && ($event.ctrlKey) ) {\n        this.nextTabAndElement( index );\n      }\n    }\n\n    handleKeyDownFirstElementTab( $event, index ) {\n      if ( [ KeyEvent.ARROWUP ].indexOf( $event.code ) >= 0 ) {\n        this.previousTabAndElement( index );\n      }\n      if ( ($event.code === KeyEvent.TAB) && ($event.shiftKey) ) {\n        this.previousTabAndElement( index );\n      }\n    }\n\n    nextTabAndElement( index ) {\n      if ( this.tabs.toArray()[ index + 1 ] ) {\n        this.resetTabsSelected();\n        this.tabs.toArray()[ index + 1 ].selected = true;\n        this.setFocusNext( index + 1 );\n      }\n    }\n\n    previousTabAndElement( index ) {\n      if ( this.tabs.toArray()[ index - 1 ] ) {\n        this.resetTabsSelected();\n        this.tabs.toArray()[ index - 1 ].selected = true;\n        this.setFocusPrevious( index - 1 );\n      }\n    }\n\n    selectTab(tab: TlTab) {\n      this.tabs.forEach(item => item.selected = false);\n      tab.selected = true;\n    }\n\n    getWrapperWidth() {\n      this.widthWrapper = Math.round( this.wrapper.nativeElement.offsetWidth );\n    }\n\n    getElementList() {\n      setTimeout(() => {\n        const templateChildren = this.tabsHeader.elementRef.nativeElement.parentElement.children;\n        for (let element = 0; element < templateChildren.length; element++) {\n          if (templateChildren[element].localName === 'ul') {\n            this.elementListTabs = templateChildren[element].children;\n          }\n        }\n        this.setWidthSeparator();\n      }, 1);\n    }\n\n    setFocusNext( index ) {\n      setTimeout( () => {\n        this.tabs.toArray()[ index ].firstComponent.focus();\n      }, 1 );\n    }\n\n    setFocusPrevious( index ) {\n      setTimeout( () => {\n        this.tabs.toArray()[ index ].lastComponent.focus();\n      }, 1 );\n    }\n\n    setTabProperties() {\n      this.tabs.forEach( ( item ) => {\n        item.height = this.height;\n      } );\n    }\n\n    setWidthSeparator() {\n      this.widthTabs = 0;\n      for (let i = 0; i < this.elementListTabs.length; i++) {\n        this.widthTabs = this.widthTabs + Number(this.elementListTabs[i].offsetWidth);\n      }\n      this.topPosition = (this.line.nativeElement.offsetHeight / 2) - 1;\n      this.widthSeparator = 'calc(100% - ' + (this.widthTabs) + 'px' + ' )';\n    }\n\n    resetTabsSelected() {\n      this.tabs.forEach( ( item ) => {\n        item.selected = false;\n      } );\n    }\n\n    get tabsContext() {\n      return {\n        tabs: this.tabs\n      };\n    }\n\n}\n\n\n","  <div class=\"wrapper-tabcontrol\" #wrapperTab>\n    <ng-template #tabsHeader let-tabs=\"tabs\">\n      <ul class=\"tab-panel-buttons\" [style.display]=\"tabs ? 'block' : 'none'\">\n        <li *ngFor=\"let tab of tabs\"\n            [ngStyle]=\"{'height': tabsHeight, 'line-height': tabsHeight}\"\n            [ngClass]=\"{'tab-selected': tab.selected}\" (click)=\"selectTab(tab)\">\n          {{tab.title}}\n        </li>\n      </ul>\n    </ng-template>\n\n    <div class=\"line-separator\"\n          #line\n          [style.width]=\"widthSeparator\"\n          [style.top]=\"topPosition - 1 + 'px'\"\n          [style.left]=\"(widthTabs) +'px'\">\n    </div>\n\n    <ng-container *ngTemplateOutlet=\"tabsHeader; context: tabsContext\"></ng-container>\n    <ng-content></ng-content>\n  </div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlTabControl } from './tabcontrol';\nimport { TlTab } from './tab/tab';\n\n@NgModule({\n    imports: [\n      CommonModule,\n      FormsModule\n    ],\n    declarations: [\n      TlTabControl,\n      TlTab\n    ],\n    exports: [\n      TlTabControl,\n      TlTab\n    ],\n})\nexport class TabControlModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ContentChild,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnInit,\n  Output,\n  ViewChild\n} from '@angular/core';\nimport { FormControlName, NG_VALUE_ACCESSOR, NgModel } from '@angular/forms';\nimport { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\nimport {FixedPositionDirective} from '../misc/fixed-position.directive';\n\n@Component({\n  selector: 'tl-textarea',\n  templateUrl: './textarea.html',\n  styleUrls: ['./textarea.scss'],\n  providers: [ {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TlTextarea),\n    multi: true\n  } ],\n})\nexport class TlTextarea extends ValueAccessorBase<string> implements OnInit, AfterViewInit {\n\n  @Input() label = '';\n\n  @Input() labelPlacement = 'left';\n\n  @Input() labelSize = '100px';\n\n  @Input() name = '';\n\n  @Input() placeholder = '';\n\n  @Input() height = '80px';\n\n  @Input() tabindex = 0;\n\n  @Input() maxlength = -1;\n\n  @Input() textAlign: 'left' | 'right' | 'center' | 'justify' = 'left';\n\n  @Input() readonly = null;\n\n  @Input() disabled = null;\n\n  @Input() clearButton = false;\n\n  @Input() color = 'basic';\n\n  @Input() withBorder = true;\n\n  @Input() resize = false;\n\n  @Input() showCount = false;\n\n  @ViewChild( 'textarea', {static: true} ) textarea;\n\n  @ViewChild( CdkOverlayOrigin, {static: true} ) cdkOverlayOrigin: CdkOverlayOrigin;\n\n  @ContentChild( NgModel, {static: true} ) model: NgModel;\n\n  @ContentChild( FormControlName, {static: true} ) controlName: FormControlName;\n\n  @Output() click: EventEmitter<MouseEvent> = new EventEmitter();\n\n  @Output() focus: EventEmitter<any> = new EventEmitter();\n\n  @Output() blur: EventEmitter<any> = new EventEmitter();\n\n  @Output() clear: EventEmitter<any> = new EventEmitter();\n\n  @Output() overlayOrigin: EventEmitter<any> = new EventEmitter();\n\n  public required = false;\n\n  public isShowingMessages = false;\n\n  public hasValidator;\n\n  constructor( private change: ChangeDetectorRef ) {\n    super();\n  }\n\n  ngOnInit() {\n    this.overlayOrigin.emit( this.cdkOverlayOrigin );\n  }\n\n  ngAfterViewInit() {\n    this.setRequired();\n    this.handleValidator();\n  }\n\n  setRequired() {\n    const currentControl = this.controlName ? this.controlName : this.model;\n    if ( currentControl && currentControl.control.errors) {\n      if ( currentControl.control.errors[ 'required' ] ) {\n        this.required = true;\n        this.change.detectChanges();\n      }\n    }\n  }\n\n  handleValidator() {\n    const currentControl = this.controlName ? this.controlName : this.model;\n    if ( currentControl ) {\n      this.hasValidator = currentControl.control.validator;\n      this.change.detectChanges();\n    }\n  }\n\n  setFocus() {\n    this.textarea.nativeElement.focus();\n  }\n\n  stopEvent( $event ) {\n    $event.preventDefault();\n    $event.stopPropagation();\n  }\n\n  onTextareaClick( $event: MouseEvent ) {\n    this.stopEvent($event);\n    this.isShowingMessages = true;\n    this.click.emit( $event );\n  }\n\n  onTextareaFocus( $event ) {\n    this.isShowingMessages = true;\n    this.focus.emit( $event );\n  }\n\n  onTextareaBlur( $event ) {\n    this.isShowingMessages = false;\n    this.blur.emit( $event );\n  }\n\n  clearTextarea( $event? ) {\n    this.value = '';\n    this.setFocus();\n    this.clear.emit( $event );\n  }\n\n}\n","<div [class]=\"'tl-textarea ' + color\">\n\n  <tl-label *ngIf=\"label\"\n            [style.vertical-align]=\"'top'\"\n            [labelTitle]=\"label\"\n            [required]=\"required\"\n            [labelPlacement]=\"labelPlacement\"\n            [labelSize]=\"labelSize\"></tl-label>\n\n  <div class=\"ui-wrapper-textarea\" [style.height]=\"height\">\n    <textarea #textarea\n              class=\"field\"\n              [ngClass]=\"{\n                 'invalid': controlName?.control?.errors || model?.control?.errors,\n                 'withValidators': hasValidator,\n                 'withoutValidators': !hasValidator,\n                 'withBorder': withBorder,\n                 'withoutBorder': !withBorder\n               }\"\n              [style.resize]=\"resize ? 'auto' : 'none'\"\n              [style.height]=\"height\"\n              [style.text-align]=\"textAlign\"\n              [tabindex]=\"tabindex\"\n              [disabled]=\"disabled || isDisabled\"\n              [attr.name]=\"name\"\n              [placeholder]=\"placeholder\"\n              [attr.readonly]=\"readonly ? true : null\"\n              [attr.maxlength]=\"maxlength\"\n              [(ngModel)]=\"value\"\n              (click)=\"onTextareaClick($event)\"\n              (blur)=\"onTextareaBlur($event)\"\n              (focus)=\"onTextareaFocus($event)\"></textarea>\n    <tl-icon *ngIf=\"clearButton && value\"\n             [style.lineHeight]=\"height\"\n             (click)=\"clearTextarea($event)\"\n             [lib]=\"'ion'\"\n             [style]=\"'ios'\"\n             class=\"clearButton\">close</tl-icon>\n    <div class=\"count-characters\" *ngIf=\"showCount\">\n      {{ ( maxlength > 0 ) ? textarea.value.length + '/' + maxlength : textarea.value.length | number }}\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { TlTextarea } from './textarea';\nimport { InternalsModule } from '../internals/index';\nimport { IconsModule } from '../icons/index';\nimport { ValidatorsModule } from '../validators/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    IconsModule,\n    InternalsModule,\n    ValidatorsModule,\n    OverlayModule\n  ],\n  declarations: [\n    TlTextarea,\n  ],\n  exports: [\n    TlTextarea,\n  ]\n})\nexport class TextareaModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Component,\n  EventEmitter,\n  Input,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport {FixedPositionDirective} from '../../../misc/fixed-position.directive';\n\n@Component({\n  selector: 'tl-timeline-item',\n  templateUrl: './timeline-item.html',\n  styleUrls: ['./timeline-item.scss'],\n})\nexport class TlTimelineItem implements OnInit {\n\n  @Input() align = 'left';\n\n  @Input() side: boolean;\n\n  @Input() date: number;\n\n  @Input() color = 'primary';\n\n  @Input() data: Array<any> = [];\n\n  @Input() template: TemplateRef<any>;\n\n  @Output() initialize: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('view', {read: ViewContainerRef, static: true}) view: ViewContainerRef;\n\n  public sideString: string;\n\n  constructor() {}\n\n  ngOnInit() {\n    this.initialize.emit();\n    this.changeSide();\n  }\n\n  changeSide() {\n    if (this.side) {\n      this.sideString = 'left';\n    } else {\n      this.sideString = 'right';\n    }\n  }\n\n  setTemplateView(item, index) {\n    const node = this.template.createEmbeddedView({\n      item: item,\n      index: index\n    });\n    this.insertOnView(node);\n  }\n\n  insertOnView(node) {\n    this.view.insert(node);\n  }\n\n}\n","<li [class]=\"'tl-timeline-item ' + color\" #customTemplateRef>\n  <div [class]=\"'tl-timeline-item-tail tail-' + align\"></div>\n  <div [class]=\"'tl-timeline-item-head head-' + align\">\n    <div class=\"head-date\" *ngIf=\"date\">\n      <span class=\"date-day\">{{ date | date : 'dd' }}</span>\n      <span class=\"date-month\">{{ date | date : 'MMM' | uppercase }}</span>\n      <span class=\"date-year\">{{ date | date : 'yyyy' }}</span>\n      <span class=\"date-separator\"></span>\n      <span class=\"date-hour\">{{ date | date : 'H:mm' }}</span>\n    </div>\n    <div class=\"head-dot\"></div>\n  </div>\n  <div class=\"tl-timeline-item-content\"\n       [ngClass]=\"align === 'center' ? (date) ? 'float-' + sideString + ' arrow-' + sideString : 'float-df-' + sideString + ' arrow-' + sideString : (date) ? 'content-' + align : 'content-df-' + align\">\n    <div #view></div>\n  </div>\n  <div class=\"clearfix\"></div>\n</li>\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {\n  Component,\n  ContentChild,\n  ElementRef,\n  Input,\n  OnInit,\n  TemplateRef,\n  ViewChild,\n  Output,\n  EventEmitter,\n  ChangeDetectorRef, OnChanges, SimpleChanges,\n} from '@angular/core';\nimport {TlTimelineItem} from './parts/timeline-item/timeline-item';\n\n@Component({\n  selector: 'tl-timeline',\n  templateUrl: './timeline.html',\n  styleUrls: ['./timeline.scss'],\n})\nexport class TlTimeline implements OnInit, OnChanges {\n\n  @Input('data') data = [];\n\n  @Input() clearOnUpdateData = false;\n\n  @Input() align = 'left';\n\n  @Input() height = '400px';\n\n  @Input() keyTitle = 'title';\n\n  @Input() keyText = 'text';\n\n  @Input() keyDate = 'date';\n\n  @Input() rowsPage = 20;\n\n  @Input() mode = 'basic';\n\n  @Input() color = 'primary';\n\n  @Input() enableUnequalChildrenSizes = true;\n\n  @Input() bufferAmount = 5;\n\n  @Output() lazyLoad: EventEmitter<any> = new EventEmitter();\n\n  @ViewChild('listComponent', {static: true}) listComponent: ElementRef;\n\n  @ContentChild(TemplateRef, {static: true}) customTemplate: TemplateRef<any>;\n\n  public buffer = [];\n\n  public skip = 0;\n\n  public loadingMoreData = false;\n\n  public nothingFound = false;\n\n  constructor(public change: ChangeDetectorRef) {}\n\n  ngOnInit() {}\n\n  onInit(lineItem: TlTimelineItem, item, index) {\n    lineItem.setTemplateView(item, index);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.loadingMoreData = false;\n    if ( this.data.length > 0 ) {\n      if ( this.clearOnUpdateData ) {\n        this.buffer = this.data;\n      } else {\n        this.buffer = this.buffer.concat(this.data);\n      }\n      this.nothingFound = false;\n      return this.loadingMoreData = false;\n    }\n\n    if ( this.data.length === 0 && this.buffer.length > 0 ) {\n      this.nothingFound = false;\n      return this.loadingMoreData = false;\n    }\n\n    if ( this.data.length === 0 && this.buffer.length === 0 ) {\n      return this.nothingFound = true;\n    }\n  }\n\n  fetchMore(event) {\n    if (!this.loadingMoreData && this.mode === 'infinite')  {\n      if (event.endIndex !== this.buffer.length - 1 ) { return; }\n      this.loadingMoreData = true;\n      this.skip = this.buffer.length;\n      this.lazyLoad.emit( { skip: this.skip, limit: this.rowsPage } );\n    }\n  }\n\n\n}\n","<div [tlBlockui]=\"loadingMoreData\" [class]=\"'tl-timeline ' + color\">\n  <virtual-scroller #scroll [items]=\"buffer\" [enableUnequalChildrenSizes]=\"enableUnequalChildrenSizes\" [bufferAmount]=\"bufferAmount\" [checkResizeInterval]=\"300\" (vsEnd)=\"fetchMore($event)\" class=\"tl-timeline-scroll\" [style.height]=\"height\">\n    <tl-timeline-item #line\n                      *ngFor=\"let item of scroll.viewPortItems; let i = index; let even = even\"\n                      [data]=\"data\"\n                      [attr.data-index]=\"skip + i\"\n                      [date]=\"item[keyDate]\"\n                      [template]=\"(customTemplate) ? customTemplate : basicTemplate\"\n                      (initialize)=\"onInit(line, item, i)\"\n                      [align]=\"align\"\n                      [side]=\"even\"\n                      [ngClass]=\"(align === 'right') ? 'ltr' : null\">\n    </tl-timeline-item>\n  </virtual-scroller>\n  <ng-template let-item=\"item\" let-index=\"index\" #basicTemplate>\n    <div class=\"content-head-default\">\n      <span class=\"content-title\">{{ item[keyTitle] }}</span>\n    </div>\n    <div class=\"content-body-default\">\n      <div class=\"content-text\">\n        {{ item[keyText] }}\n      </div>\n    </div>\n  </ng-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlTimeline } from './timeline';\nimport { TlTimelineItem } from './parts/timeline-item/timeline-item';\n\nimport { BlockUIModule } from '../blockui/index';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {VirtualScrollerModule} from 'ngx-virtual-scroller';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    BlockUIModule,\n    ScrollingModule,\n    VirtualScrollerModule\n  ],\n  declarations: [\n    TlTimeline,\n    TlTimelineItem\n  ],\n  exports: [\n    TlTimeline,\n    TlTimelineItem\n  ]\n})\nexport class TimelineModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\n\nimport {\n  Input,\n  AfterContentInit,\n  Component,\n  ElementRef,\n  ViewChild,\n  OnDestroy,\n  Output,\n  EventEmitter,\n  AfterViewInit,\n  SimpleChanges,\n  OnChanges, Optional, Self,\n} from '@angular/core';\nimport { TlLeftPadPipe } from '../internals/pipes/leftpad.pipe';\nimport { OverlayAnimation } from '../core/directives/overlay-animation';\nimport { Subscription } from 'rxjs';\nimport { I18nService } from '../i18n/i18n.service';\nimport { ValueAccessorBase } from '../input/core/value-accessor';\nimport { NgControl } from '@angular/forms';\n\nexport interface IncrementalSteps {\n  hour: number;\n  minute: number;\n}\n\nexport enum TIME {\n  MINUTE = 'minute',\n  HOUR = 'hour'\n}\n\n@Component( {\n  selector: 'tl-timepicker',\n  templateUrl: './timepicker.html',\n  styleUrls: [ './timepicker.scss' ],\n  animations: [ OverlayAnimation ]\n} )\nexport class TlTimepicker extends ValueAccessorBase<Date | string> implements AfterContentInit, OnChanges, OnDestroy {\n\n  @Input() format: '12' | '24' = '24';\n\n  @Input() flatBorder = false;\n\n  @Input() showTimeIcon = false;\n\n  @Input() label = '';\n\n  @Input() labelPlacement = 'left';\n\n  @Input() labelSize = '100px';\n\n  @Input() height = '23px';\n\n  @Input() readonly: boolean = null;\n\n  @Input() disabled: boolean = null;\n\n  @Input() withBorder = true;\n\n  @Input() steps: IncrementalSteps = { hour: 1, minute: 1 };\n\n  @Input() availableTimes = [];\n\n  @Input() color = 'basic';\n\n  @Input() name = '';\n\n  @Input() isoModel = false;\n\n  @Input() min: Date = new Date( 1999, 0, 1, 0, 0 );\n\n  @Input() max: Date = new Date( 1999, 0, 1, 23, 59 );\n\n  @ViewChild( 'listHour', {static: false} ) listHour: ElementRef;\n\n  @ViewChild( 'listMinutes', {static: false} ) listMinutes: ElementRef;\n\n  @ViewChild( 'listAmPm', {static: false} ) listAmPm: ElementRef;\n\n  @Output() now: EventEmitter<any> = new EventEmitter();\n\n  @Output() changeTime: EventEmitter<string> = new EventEmitter();\n\n  @Output() confirm: EventEmitter<Date | string> = new EventEmitter();\n\n  @Output() cancel: EventEmitter<Date | string> = new EventEmitter();\n\n  public isOpen = false;\n\n  public trigger;\n\n  public nowText = this.i18n.getLocale().TimePicker.now;\n\n  public selectedTime = '10:30 AM';\n\n  public minutes = [];\n\n  public hours = [];\n\n  public minute: number | string = 0;\n\n  public hour: number | string = 0;\n\n  public timeZone = 'AM';\n\n  public textConfirm = this.i18n.getLocale().TimePicker.textConfirm;\n\n  public textCancel = this.i18n.getLocale().TimePicker.textCancel;\n\n  private headerHeight = 45;\n\n  private border = 3;\n\n  private nullElements = 80;\n\n  private itemHeight = 30;\n\n  private loaded = false;\n\n  private leftPad = new TlLeftPadPipe();\n\n  private listeners: Subscription = new Subscription();\n\n  constructor( @Optional() @Self() public ngControl: NgControl,\n               private i18n: I18nService ) {\n    super();\n    this.setControl();\n  }\n  get control() {\n    return this.ngControl?.control;\n  }\n\n  setControl() {\n    if ( this.ngControl ) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  ngAfterContentInit() {\n    this.handleCreateRing();\n    if (!this.value) {\n      this.value = new Date();\n    }\n    this.setModelValue( new Date(this.value) );\n    this.listenControlChanges();\n  }\n\n  listenControlChanges() {\n    if (this.control) {\n      this.control.valueChanges.subscribe(( date: Date) => {\n        if (!this.loaded) {\n          this.minute = this.leftPad.transform(new Date(date).getMinutes(), 2);\n          this.hour = this.leftPad.transform(new Date(date).getHours(), 2);\n          this.formatTime();\n        }\n      });\n    }\n  }\n\n  private handleCreateRing() {\n    this.createHourRing();\n    this.createMinuteRing();\n  }\n\n  private createHourRing() {\n    let lastHour = this.min.getHours() - this.steps.hour;\n    for ( let i = 0; i <= this.max.getHours(); i++ ) {\n      if ( i === ( lastHour + this.steps.hour) ) {\n        this.hours.push( i );\n        lastHour = i;\n      }\n    }\n  }\n\n  private createMinuteRing() {\n    let lastMinute = this.min.getMinutes() - this.steps.minute;\n    for ( let i = 0; i <= this.max.getMinutes(); i++ ) {\n      if ( i === ( lastMinute + this.steps.minute) ) {\n        this.minutes.push( i );\n        lastMinute = i;\n      }\n    }\n  }\n\n  changeOpened() {\n    this.isOpen = !this.isOpen;\n    setTimeout(() => {\n      this.onChangeValue( this.selectedTime );\n      this.loaded = true;\n    });\n  }\n\n  private setModelValue( value ) {\n    if ( value instanceof Date ) {\n      this.hour = this.leftPad.transform(value.getHours(), 2);\n      this.minute = this.leftPad.transform(value.getMinutes(), 2);\n      this.formatTime();\n      this.onChangeValue( this.hour + ':' + this.minute );\n    }\n  }\n\n  onMouseDownContainer( $event ) {\n    $event.stopPropagation();\n  }\n\n  private emitClickNow() {\n    this.now.emit( this.isFormat24() ? this.value : {\n      time: this.selectedTime,\n      timeZone: this.timeZone\n    } );\n  }\n\n  onBlur() {\n    this.propagateTouched();\n  }\n\n  onClickNow() {\n    const convert = this.isFormat12() ? this.convertToAmPm( new Date().getHours() ) : new Date().getHours();\n    this.hour = this.leftPad.transform( convert, 2 );\n    this.minute = this.leftPad.transform( new Date().getMinutes(), 2 );\n    this.formatTime();\n    this.onChangeValue( this.hour + ':' + this.minute );\n    this.setValue();\n    this.emitClickNow();\n  }\n\n  private setValue() {\n    const dateSt = new Date(this.value);\n    const year = dateSt.getFullYear();\n    const month = dateSt.getMonth();\n    const date = dateSt.getDate();\n    const hour = parseInt( <string>this.hour, 10);\n    const minute = parseInt( <string>this.minute, 10);\n    this.value = this.isoModel ? new Date( year, month, date, hour, minute ).toISOString() :\n      new Date( year, month, date, hour, minute );\n  }\n\n  onScrollHour( $event ) {\n    const scroll = Math.round( ( $event.target.scrollTop / this.itemHeight ) );\n    this.hour = this.steps.hour > 0 ? (scroll * this.steps.hour) : scroll;\n  }\n\n  onScrollMinutes( $event ) {\n    const scroll = Math.round( ( $event.target.scrollTop / this.itemHeight ) );\n    this.minute = this.steps.minute > 0 ? (scroll * this.steps.minute) : scroll;\n  }\n\n  onClickCancel() {\n    this.isOpen = false;\n    this.loaded = false;\n    this.setValue();\n    this.cancel.emit( this.value );\n  }\n\n  onClickConfirm() {\n    this.isOpen = false;\n    this.loaded = false;\n    this.setValue();\n    this.formatTime();\n    this.confirm.emit( this.value );\n  }\n\n  onChangeValue( stringTime ) {\n    this.selectedTime = stringTime;\n    if ( !stringTime ) {\n      return;\n    }\n    const split = this.cleanValue( stringTime ).split( ':' );\n    const hour = split[0];\n    const min = split[1];\n    if ( min.length >= 2 && hour.length >= 2  ) {\n      this.hour = this.isFormat12() ? this.leftPad.transform( this.convertToAmPm( hour ), 2 ) : hour;\n      if ( this.listHour ) {\n        this.setScrollColumn( this.listHour.nativeElement, TIME.HOUR );\n      }\n      this.minute = min;\n      if ( this.listMinutes ) {\n        this.setScrollColumn( this.listMinutes.nativeElement, TIME.MINUTE );\n      }\n      this.setValue();\n    }\n\n  }\n\n  private setScrollColumn( elementScroll: HTMLElement, type: TIME ) {\n    const element: any = this.getDataIndex( type );\n    if ( element ) {\n      setTimeout( () => {\n        elementScroll.scrollTop =\n          element.offsetTop - ( this.nullElements + this.headerHeight + this.border ) - this.itemHeight;\n      }, 100 );\n    }\n  }\n\n  private getDataIndex( type: TIME ) {\n    return type === TIME.HOUR ? this.getItemByDataIndexHour() : this.getItemByDataIndexMinute();\n  }\n\n  private convertToAmPm( hour ) {\n    const timeString = hour + ':00:00';\n    const hourEnd = timeString.indexOf( ':' );\n    const H = +timeString.substr( 0, hourEnd );\n    this.timeZone = H < 12 ? 'AM' : 'PM';\n    this.timeZone === 'AM' ? this.setAm() : this.setPm();\n    return H % 12 || 12;\n  }\n\n  private getItemByDataIndexMinute() {\n    const strDataIndex: string = 'div[dataIndexMinute=\"' + this.minute + '\"]';\n    return document.querySelector( strDataIndex );\n  }\n\n  private getItemByDataIndexHour() {\n    const strDataIndex: string = 'div[dataIndexHour=\"' + this.hour + '\"]';\n    return document.querySelector( strDataIndex );\n  }\n\n  private cleanValue( value ) {\n    return value.replace( /_/g, '' );\n  }\n\n  private isFormat24() {\n    return this.format === '24';\n  }\n\n  private isFormat12() {\n    return this.format === '12';\n  }\n\n  isTimeZonePM() {\n    return this.timeZone === 'PM';\n  }\n\n  isTimeZoneAM() {\n    return this.timeZone === 'AM';\n  }\n\n  setMinute(minute: number) {\n    this.minute = minute;\n    this.formatTime();\n    this.setValue();\n  }\n\n  setHour(hour: number) {\n    this.hour = hour;\n    this.formatTime();\n    this.setValue();\n  }\n\n  clickListItem( scrollElement, $event ) {\n    scrollElement.scrollTop =\n      $event.target.offsetTop - ( this.nullElements + this.headerHeight + this.border ) - this.itemHeight;\n  }\n\n  setAm() {\n    this.timeZone = 'AM';\n  }\n\n  setPm() {\n    this.timeZone = 'PM';\n  }\n\n  onClose() {\n    this.isOpen = false;\n    this.loaded = false;\n  }\n\n  getFormattedHour() {\n    return this.leftPad.transform( this.hour, 2 ) + ':' + this.leftPad.transform( this.minute, 2 );\n  }\n\n  private formatTime() {\n    this.selectedTime = this.getFormattedHour();\n\n  }\n\n  ngOnChanges( changes: SimpleChanges ) {\n  }\n\n  ngOnDestroy() {\n    this.listeners.unsubscribe();\n  }\n\n}\n","<div class=\"ui-timepicker-wrapper\">\n\n  <tl-input (overlayOrigin)=\"trigger = $event\"\n            (click)=\"changeOpened()\"\n            (keydown.shift.tab)=\"onClose()\"\n            (keydown.tab)=\"onClose()\"\n            (keydown.enter)=\"onClose()\"\n            [mask]=\"'Hh:Mm'\"\n            [ngModel]=\"selectedTime\"\n            (ngModelChange)=\"onChangeValue($event)\"\n            (blur)=\"onBlur()\"\n            [flatBorder]=\"flatBorder\"\n            [label]=\"label\"\n            [labelPlacement]=\"labelPlacement\"\n            [labelSize]=\"labelSize\"\n            [withBorder]=\"withBorder\"\n            [height]=\"height\"\n            [disabled]=\"disabled\"\n            [readonly]=\"readonly\"\n            [name]=\"name\"\n            [textAfter]=\"format === '12' ? timeZone : null\"\n            [iconAfter]=\"showTimeIcon ? 'far fa-clock' : null\">\n  </tl-input>\n  <input notform class=\"hidden-control\" [value]=\"value\">\n\n  <ng-template cdkConnectedOverlay\n               (backdropClick)=\"onClose()\"\n               [cdkConnectedOverlayHasBackdrop]=\"true\"\n               [cdkConnectedOverlayOrigin]=\"trigger\"\n               [cdkConnectedOverlayOpen]=\"isOpen\"\n               [cdkConnectedOverlayBackdropClass]=\"'cdk-overlay-transparent-backdrop'\">\n    <div  @overlay [class]=\"'ui-wrapper-content ' + color\" (click)=\"onMouseDownContainer($event)\">\n      <div class=\"ui-timepicker-header\">\n        <div class=\"ui-selected-time\">\n          {{ format === '12' ? (value | date:'hh:mm') : (value | date:'HH:mm') }}\n          {{ format === '12' ? timeZone : null }}\n        </div>\n        <tl-button *ngIf=\"steps.hour === 1 && steps.minute === 1\"\n                   [flatBorder]=\"true\"\n                   (click)=\"onClickNow()\"\n                   [outline]=\"true\"\n                   [width]=\"'50px'\"\n                   [text]=\"nowText\"\n                   [color]=\"'primary'\">\n        </tl-button>\n      </div>\n      <div class=\"ui-title-header\">\n        <span class=\"ui-picker-title\">Hour</span>\n        <span class=\"ui-picker-title\">Minute</span>\n        <span *ngIf=\"format === '12'\" class=\"ui-picker-title\">AM/PM</span>\n      </div>\n      <div class=\"ui-timepicker-content\">\n        <div class=\"ui-transparent-section\"></div>\n        <div class=\"ui-controller-section\">\n          <span [style.left]=\"format === '24' ? '50%' : '33%'\" class=\"double-dot\">:</span>\n        </div>\n        <div class=\"ui-hour-content\">\n          <div class=\"list\" #listHour (scroll)=\"onScrollHour($event)\">\n            <div> </div>\n            <div> </div>\n            <div> </div>\n            <div> </div>\n            <div\n              class=\"ui-list-item\"\n              (click)=\"clickListItem(listHour, $event); setHour(index)\"\n              *ngFor=\"let index of hours\"\n              [attr.dataIndexHour]=\"index | leftpad:2\"\n              [ngClass]=\"{ 'selectedItem': hour === index }\">{{ index | leftpad:2 }}</div>\n            <div> </div>\n            <div> </div>\n            <div> </div>\n            <div> </div>\n          </div>\n        </div>\n        <div class=\"ui-minute-content\">\n          <div class=\"list\" #listMinutes (scroll)=\"onScrollMinutes($event)\">\n            <div> </div>\n            <div> </div>\n            <div> </div>\n            <div> </div>\n            <div\n              class=\"ui-list-item\"\n              (click)=\"clickListItem(listMinutes, $event); setMinute(index)\"\n              [attr.dataIndexMinute]=\"index | leftpad:2\"\n              *ngFor=\"let index of minutes\"\n              [ngClass]=\"{ 'selectedItem': minute === index }\">{{ index | leftpad:2 }}</div>\n            <div> </div>\n            <div> </div>\n            <div> </div>\n            <div> </div>\n          </div>\n        </div>\n        <div *ngIf=\"format === '12'\" class=\"ui-ampm-content\">\n          <div class=\"list\" [style.top]=\"isTimeZoneAM() ? 'calc(50% - 23px)' : 'calc(50% - 54px)'\">\n            <div [ngClass]=\"{ 'selectedItem': isTimeZoneAM() }\" class=\"ui-list-item\" (click)=\"setAm()\">AM</div>\n            <div [ngClass]=\"{ 'selectedItem': isTimeZonePM() }\" class=\"ui-list-item\" (click)=\"setPm()\">PM</div>\n          </div>\n        </div>\n      </div>\n      <div class=\"ui-timepicker-footer\">\n        <tl-button (click)=\"onClickCancel()\" [flatBorder]=\"true\" [width]=\"'100%'\" [text]=\"textCancel\"></tl-button>\n        <tl-button (click)=\"onClickConfirm()\" [flatBorder]=\"true\" [outline]=\"true\" [width]=\"'100%'\" [text]=\"textConfirm\" [color]=\"'primary'\"></tl-button>\n      </div>\n    </div>\n  </ng-template>\n\n</div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlTimepicker } from './timepicker';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { InputModule } from '../input/index';\nimport { ButtonModule } from '../button/index';\nimport { InternalsModule } from '../internals/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    OverlayModule,\n    InputModule,\n    ButtonModule,\n    InternalsModule,\n    FormsModule\n  ],\n  declarations: [\n    TlTimepicker\n  ],\n  exports: [\n    TlTimepicker\n  ]\n})\nexport class TimePickerModule {}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  Input, Component, Output, AfterViewInit, EventEmitter, ChangeDetectorRef, SimpleChanges,\n  OnChanges\n} from '@angular/core';\nimport { I18nService } from '../i18n/i18n.service';\nimport {CalendarHoliday} from '../calendar/interfaces/calendar-holiday.interface';\n\nexport interface FilterTime {\n  range: DateRange;\n  selected: boolean;\n}\n\nexport interface DateRange {\n  start: Date;\n  end: Date;\n}\n\n@Component( {\n  selector: 'tl-time-available-picker',\n  templateUrl: './time-available-picker.html',\n  styleUrls: [ './time-available-picker.scss' ],\n} )\nexport class TlTimeAvailablePicker implements AfterViewInit, OnChanges {\n\n  @Input() availableTimes: Array<DateRange> = [];\n\n  @Input() color = 'basic';\n\n  @Input() loading = false;\n\n  @Input() maxHeight = '180px';\n\n  @Input() width = '260px';\n\n  @Input() dateValue: Date = new Date();\n\n  @Input() value: Array<DateRange> = [];\n\n  @Input() holidays: Array<CalendarHoliday> = [];\n\n  @Output() changeSelect: EventEmitter<any> = new EventEmitter();\n\n  public filterTimes: Array<FilterTime> = [];\n\n  public selectedTime: Array<FilterTime> = [];\n\n  public notFoundMessage = this.i18nService.getLocale().TimeAvailablePicker.notFound;\n\n  constructor( private change: ChangeDetectorRef, private i18nService: I18nService ) {}\n\n  ngAfterViewInit() {\n    this.handleValueChange();\n  }\n\n  private setUpData() {\n    this.resetArrays();\n    this.availableTimes.forEach( ( value ) => {\n      this.filterTimes.push( { range: value, selected: false } );\n    } );\n  }\n\n  private resetArrays() {\n    this.filterTimes = [];\n    this.selectedTime = [];\n  }\n\n  private handleValueChange() {\n    if ( this.value.length > 0 ) {\n      this.value.forEach( ( date: DateRange ) => {\n        const dateFilter = this.getDateOnFilter(date);\n        if ( dateFilter >= 0) {\n          this.filterTimes[dateFilter].selected = true;\n        }\n      } );\n      this.updateTime();\n    }\n  }\n\n  private getDateOnFilter( date: DateRange ) {\n    return this.filterTimes.findIndex( ( item: FilterTime ) =>\n      (new Date(item.range.start).getTime() === new Date(date.start).getTime()) &&\n    (new Date(item.range.end).getTime() === new Date(date.end).getTime())\n    );\n  }\n\n  private getSelectedArray() {\n    return this.filterTimes.filter( ( item: FilterTime ) => item.selected );\n  }\n\n  private deselectAll() {\n    this.filterTimes.forEach( ( item: FilterTime ) => item.selected = false );\n  }\n\n  private findSelected() {\n    return this.filterTimes.findIndex( ( item: FilterTime ) => item.selected );\n  }\n\n  private handleDeselect( time: FilterTime ) {\n    this.deselectAll();\n    time.selected = true;\n    this.updateTime();\n  }\n\n  setSelectedTime( time: FilterTime, index: number ) {\n    const readySelected = this.findSelected();\n    if ( ( index === 0 || index === this.filterTimes.length - 1 ) && !(readySelected >= 0) ) {\n      this.handleDeselect( time );\n      return;\n    }\n    if ( (this.filterTimes[ this.getFirstIndex( index ) ].selected || this.filterTimes[ this.getLastIndex( index ) ].selected )\n      && this.getSelectedArray().length > 1 ) {\n      this.handleDeselect( time );\n      return;\n    }\n    if ( readySelected < 0 ) {\n      time.selected = !time.selected;\n      this.updateTime();\n      return;\n    }\n    time.selected = !time.selected;\n    this.selectMany( readySelected, index );\n\n  }\n\n  private getFirstIndex( index ) {\n    return index === 0 ? index : index - 1;\n  }\n\n  private getLastIndex( index ) {\n    return index === this.filterTimes.length - 1 ? index : index + 1;\n  }\n\n  private selectMany( readySelected: number, index: number ) {\n    this.filterTimes.forEach( ( value, index2, array ) => {\n      if ( index2 > readySelected && index2 <= index ) {\n        value.selected = true;\n      }\n      if ( index2 < readySelected && index2 >= index ) {\n        value.selected = true;\n      }\n    } );\n    this.updateTime();\n  }\n\n  private updateTime() {\n    this.selectedTime = [];\n    const allSelected = this.filterTimes.filter( ( value ) => value.selected );\n    if ( allSelected.length > 0 ) {\n      this.selectedTime[ 0 ] = allSelected[ 0 ];\n      if ( allSelected.length > 1 ) {\n        this.selectedTime[ 1 ] = allSelected[ allSelected.length - 1 ];\n      }\n    }\n    this.changeSelect.emit( this.getSelectedArray().map((item) => item.range) );\n    this.change.detectChanges();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['availableTimes']) {\n      this.setUpData();\n    }\n    if (changes['value']) {\n      this.handleValueChange();\n    }\n  }\n\n}\n","<div [class]=\"'ui-time-available-picker ' + color\" [style.width]=\"width\">\n  <div class=\"ui-time-header\">\n    <ng-container *ngIf=\"dateValue | holiday:holidays as dayArray\">\n      <div class=\"ui-date-selected\" [class.holiday]=\"dayArray?.length > 0\" [tooltip]=\"{text: dayArray[0]?.description, placement: 'top-center'}\">\n        <span class=\"ui-day\">{{ dateValue | date:'dd' }}</span>\n        <span class=\"ui-day-week\">{{ dateValue | date:'EEEE' }}</span>\n        <span class=\"ui-day-holiday\" *ngIf=\"dayArray?.length > 0\">{{ dayArray[0]?.description }}</span>\n      </div>\n    </ng-container>\n    <div class=\"ui-time-selected\">\n      <span *ngIf=\"selectedTime.length > 1\">{{ selectedTime[0]?.range.start | date: 'HH:mm' }} - {{ selectedTime[1]?.range.end | date: 'HH:mm' }}</span>\n      <span *ngIf=\"selectedTime.length === 1\">{{ selectedTime[0]?.range.start | date: 'HH:mm' }} - {{ selectedTime[0]?.range.end | date: 'HH:mm' }}</span>\n    </div>\n  </div>\n\n  <div class=\"ui-container\" *ngIf=\"loading || filterTimes.length === 0\" [style.minHeight]=\"maxHeight\">\n    <div *ngIf=\"loading\" class=\"ui-loader-wrapper\">\n      <div class=\"ui-loader\">\n        <tl-loader></tl-loader>\n      </div>\n    </div>\n\n    <div *ngIf=\"!filterTimes || filterTimes.length === 0 && !loading\" class=\"ui-empty-data\">\n      <tl-icon [lib]=\"'ion'\" [style]=\"'md'\">sad</tl-icon>\n      <span>{{ notFoundMessage }}</span>\n    </div>\n  </div>\n\n  <div *ngIf=\"filterTimes.length > 0 && !loading\" class=\"ui-time-content\" [style.maxHeight]=\"maxHeight\">\n    <div *ngFor=\"let item of filterTimes; let i = index\" class=\"ui-time-item\">\n      <div  (keydown.enter)=\"setSelectedTime(item, i)\"\n            class=\"ui-range-wrapper\"\n            (click)=\"setSelectedTime(item, i)\"\n            [ngClass]=\"{ 'ui-selected': item.selected }\"\n            tabindex=\"-1\">\n        <span class=\"item-range\">{{ item.range.start | date: 'HH:mm' }}</span>\n      </div>\n    </div>\n  </div>\n</div>\n","import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlTimeAvailablePicker } from './time-available-picker';\nimport { ButtonModule } from '../button/index';\nimport { MiscModule } from '../misc/index';\nimport { IconsModule } from '../icons/index';\nimport { LoaderModule } from '../loader/index';\nimport { CalendarModule } from '../calendar/index';\nimport { TooltipModule } from '../tooltip/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    ButtonModule,\n    MiscModule,\n    IconsModule,\n    LoaderModule,\n    CalendarModule,\n    TooltipModule\n  ],\n  declarations: [\n    TlTimeAvailablePicker\n  ],\n  exports: [\n    TlTimeAvailablePicker\n  ],\n  schemas: [ CUSTOM_ELEMENTS_SCHEMA ]\n})\nexport class TimeAvailablePickerModule {}\n","import {\n  Input, Component, OnInit, OnChanges, OnDestroy, Output, EventEmitter, ElementRef, ViewChild,\n  Renderer2\n} from '@angular/core';\n\n@Component( {\n  selector: 'tl-toaster',\n  templateUrl: './toaster.html',\n  styleUrls: [ './toaster.scss' ],\n} )\nexport class TlToaster implements OnInit, OnChanges, OnDestroy {\n\n  @Input() toasterID = '';\n\n  @Input() title = 'Title !';\n\n  @Input() icon;\n\n  @Input() message = 'Message Description';\n\n  @Input() position = '';\n\n  @Input() time = 3000;\n\n  @Input() progressBar = 0;\n\n  @Input() color = 'primary';\n\n  @Input() width = '400px';\n\n  @Input() height = 'auto';\n\n  @Input() progress = true;\n\n  @Input() showIcon = true;\n\n  @Output() afterClose = new EventEmitter();\n\n  @Output() closeEvent = new EventEmitter();\n\n  @ViewChild('container', {static: true}) container: ElementRef;\n\n  public interval;\n\n  public timeout;\n\n  constructor(  private renderer: Renderer2 ) {}\n\n  ngOnInit() {\n    this.interval = setInterval( () => {\n      this.progressBar += 100;\n    }, 100 );\n  }\n\n  animationDone(event: AnimationEvent) {\n    if (event.animationName.includes('toasterOut')) {\n      this.closeEvent.emit(this.toasterID)\n    }\n  }\n\n  handleClose() {\n    this.timeout = setTimeout( () => {\n      this.close();\n    }, this.time );\n  }\n\n  getMessageKeys() {\n    return Object.keys( this.message );\n  }\n\n  isMessageObject() {\n    return typeof this.message === 'object';\n  }\n\n  close() {\n    this.renderer.addClass(this.container.nativeElement, 'ui-toaster-out');\n  }\n\n  ngOnChanges(changes) {\n    if (changes['time']) {\n      this.handleClose();\n    }\n  }\n\n  ngOnDestroy() {\n    clearInterval(this.interval);\n    clearTimeout(this.timeout);\n  }\n\n}\n","<div [class]=\"'ui-toaster-wrapper ' + color\"\n     (animationend)=\"animationDone($event)\"\n     (click)=\"close()\"\n     #container\n     [ngStyle]=\"{\n     'border-bottom-left-radius': !progress ? '3px' : '0',\n     'border-bottom-right-radius': !progress ? '3px' : '0',\n     'width': width,\n     'height': height}\">\n  <div class=\"ui-toaster-content\"\n  [ngStyle]=\"{'grid-template-columns': showIcon ? '50px 1fr' : '1fr', 'padding': ( showIcon && (height !== 'auto') ) ? '0' : '20px' }\">\n    <div *ngIf=\"showIcon\" class=\"ui-toaster-icon\"><tl-icon [size]=\"'1.2em'\">{{ icon }}</tl-icon></div>\n    <div class=\"ui-toaster-description\">\n      <p><b>{{title}}</b></p>\n      <p *ngIf=\"!isMessageObject()\" [innerHTML]=\"message\"></p>\n      <ng-container *ngIf=\"isMessageObject()\">\n        <p *ngFor=\"let item of getMessageKeys()\">\n          {{ item }} {{ message[item] }}\n        </p>\n      </ng-container>\n    </div>\n  </div>\n  <tl-progressbar\n    *ngIf=\"progress\"\n    [mode]=\"'determinate'\"\n    [color]=\"color\"\n    [height]=\"'5px'\"\n    [progressInfo]=\"'none'\"\n    [max]=\"time\"\n    [min]=\"0\"\n    [position]=\"progressBar\">\n  </tl-progressbar>\n</div>\n","\n\n /*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { ToasterConfig } from '../../toaster-config';\n\n export class Toaster implements ToasterConfig {\n   title = 'Toaster Title';\n   message = 'My Toaster';\n   width = '400px';\n   height = 'auto';\n   position = 'top-right';\n   time = 3000;\n   showIcon = false;\n   progress = true;\n   id = '';\n   closed = false;\n   color = 'primary';\n   icon = null;\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Component, Input } from '@angular/core';\nimport { ToasterService } from './services/toaster.service';\n\n@Component( {\n  selector: 'tl-toaster-container',\n  templateUrl: './toaster-container.html',\n  styleUrls: ['./toaster-container.scss'],\n} )\nexport class TlToasterContainer {\n\n  @Input() position = 'top-right';\n\n  @Input() width = '400px';\n\n  public toasterService: ToasterService;\n\n  constructor() {}\n\n  getWidth() {\n    return parseInt(this.width, 10) / 2 + 'px';\n  }\n\n}\n","<div [class]=\"'ui-toaster-container ' + position\"\n     [ngStyle]=\"\n     {'left' : position === 'bottom-center' || position === 'top-center' ? 'calc( 50% - ' + getWidth() + ' ) ' : null }\">\n    <ng-container *ngFor=\"let item of toasterService.getListToasters()\">\n      <div class=\"ui-toaster\" *ngIf=\"!item.closed\">\n        <tl-toaster [title]=\"item.title\"\n                    [color]=\"item.color\"\n                    [showIcon]=\"item.showIcon\"\n                    [toasterID]=\"item.id\"\n                    [width]=\"item.width\"\n                    [time]=\"item.time\"\n                    [progress]=\"item.progress\"\n                    [icon]=\"item.icon\"\n                    [message]=\"item.message\"\n                    [height]=\"item.height\"\n                    (closeEvent)=\"toasterService.close($event)\"\n        >\n        </tl-toaster>\n      </div>\n    </ng-container>\n</div>\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Sistemas\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport {\n  ApplicationRef, ComponentFactoryResolver, ComponentRef, EmbeddedViewRef,\n  Injectable, Injector,\n} from '@angular/core';\nimport { ToasterConfig } from '../toaster-config';\nimport { Toaster } from '../parts/model/toaster';\nimport { TlToasterContainer } from '../toaster-container';\n\nlet uniqueId = 0;\n\n@Injectable()\nexport class ToasterService {\n\n  private listToasters = [];\n\n  private toaster: Toaster;\n\n  private toasterContainer: ComponentRef<TlToasterContainer>;\n\n  constructor( private app: ApplicationRef, private injector: Injector, private compiler: ComponentFactoryResolver ) {\n  }\n\n  createToaster( toasterConfig: ToasterConfig ) {\n    if ( !this.toasterContainer ) {\n      this.toasterContainer = this.compiler.resolveComponentFactory( TlToasterContainer ).create( this.injector );\n      this.toasterContainer.instance.toasterService = this;\n      this.app.attachView( this.toasterContainer.hostView );\n\n      const domElem = (this.toasterContainer.hostView as EmbeddedViewRef<any> )\n        .rootNodes[ 0 ] as HTMLElement;\n      document.body.appendChild( domElem );\n    }\n    this.toasterContainer.instance.position = toasterConfig.position;\n    this.toasterContainer.instance.width = toasterConfig.width;\n    this.toaster = new Toaster();\n    this.toaster = Object.assign( this.toaster, toasterConfig );\n  }\n\n  success( toasterConfig: ToasterConfig ) {\n    this.createToaster( toasterConfig );\n    this.toaster.icon = 'ion ion-ios-checkmark-circle-outline';\n    this.toaster.color = 'success';\n    this.toaster.id = 'toaster-sucess-' + uniqueId++;\n    this.addToaster();\n  }\n\n  information( toasterConfig: ToasterConfig ) {\n    this.createToaster( toasterConfig );\n    this.toaster.icon = 'ion ion-ios-information-circle-outline';\n    this.toaster.color = 'information';\n    this.toaster.id = 'toaster-information-' + uniqueId++;\n    this.addToaster();\n  }\n\n  danger( toasterConfig: ToasterConfig ) {\n    this.createToaster( toasterConfig );\n    this.toaster.icon = 'ion ion-ios-close-circle-outline';\n    this.toaster.color = 'danger';\n    this.toaster.id = 'toaster-danger-' + uniqueId++;\n    this.addToaster();\n  }\n\n  warning( toasterConfig: ToasterConfig ) {\n    this.createToaster( toasterConfig );\n    this.toaster.icon = 'ion ion-ios-warning';\n    this.toaster.color = 'warning';\n    this.toaster.id = 'toaster-warning-' + uniqueId++;\n    this.addToaster();\n  }\n\n  private addToaster() {\n    this.listToasters = [ ...this.listToasters, this.toaster ];\n  }\n\n  close( id: string ) {\n    this.listToasters.forEach( ( item ) => {\n      if ( item.id === id ) {\n        item.closed = true;\n      }\n    } );\n    this.listToasters = this.listToasters.filter( ( item ) => item.id !== id );\n  }\n\n  getListToasters() {\n    return this.listToasters;\n  }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TlToaster } from './parts/toaster';\nimport { ToasterService } from './services/toaster.service';\n\nimport { ProgressBarModule } from '../progressbar/index';\nimport { TlToasterContainer } from './toaster-container';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\nimport { IconsModule } from '../icons/index';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n    FormsModule,\n    ProgressBarModule,\n    OverlayModule,\n    IconsModule\n  ],\n  declarations: [\n    TlToaster,\n    TlToasterContainer\n  ],\n  exports: [\n    TlToaster,\n    TlToasterContainer\n  ],\n  providers: [\n    ToasterService\n  ],\n} )\nexport class ToasterModule {\n  static forRoot(): ModuleWithProviders<ToasterModule> {\n    return {\n      ngModule: ToasterModule,\n      providers: [\n        ToasterService\n      ],\n    };\n  }\n}\n","/*\n MIT License\n\n Copyright (c) 2019 Temainfo Software\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n */\nimport { Input, Component } from '@angular/core';\n\n@Component( {\n  selector: 'tl-toolbar',\n  templateUrl: './toolbar.html',\n  styleUrls: [ './toolbar.scss' ],\n} )\nexport class TlToolbar  {\n\n  @Input() color = 'basic';\n\n  @Input() height = '60px';\n\n}\n\n","<div class=\"ui-toolbar-wrapper\"\n     [ngClass]=\"color\"\n     [ngStyle]=\"\n     {'height': height,\n     'line-height': height\n     }\">\n  <div class=\"ui-toolbar-content\">\n      <ng-content></ng-content>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TlToolbar } from './toolbar';\n\n@NgModule( {\n  imports: [\n    CommonModule,\n  ],\n  declarations: [\n    TlToolbar,\n  ],\n  exports: [\n    TlToolbar,\n  ],\n} )\nexport class ToolbarModule {\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ThumbnailService {\n\n  constructor() { }\n\n  getMimeType(encoded) {\n    let result = null;\n\n    if (typeof encoded !== 'string') {\n      return result;\n    }\n\n    const mime = encoded.match(/data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,.*/);\n\n    if (mime && mime.length) {\n      result = mime[1];\n    }\n\n    return result || 'image';\n  }\n}\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nimport {Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, TemplateRef} from '@angular/core';\nimport { LightboxService } from '../lightbox/services/lightbox.service';\nimport { ThumbnailService } from './thumbnail.service';\nimport { DialogService } from '../dialog/dialog.service';\nimport { ModalOptions } from '../modal/interfaces/modal-options';\n\n@Component({\n  selector: 'tl-thumbnail',\n  templateUrl: './thumbnail.html',\n  styleUrls: ['./thumbnail.scss'],\n})\nexport class TlThumbnail implements OnInit, OnChanges {\n\n  @Input() image;\n\n  @Input() mimeType;\n\n  @Input() data: { index?: number; description?: string, file: string, type: string }[] = [];\n\n  @Input() bordered = true;\n\n  @Input() shape: 'square' | 'circle' = 'square';\n\n  @Input() size: { width: string, height: string } = { width: '80px', height: '80px' };\n\n  @Input() showDeleteButton = false;\n\n  @Input() confirmationDeleteMessage = 'Do you want to delete the Thumbnail?';\n\n  @Input() showConfirmationOnDelete = false;\n\n  @Input() modalDeleteOptions: ModalOptions;\n\n  @Input() overlayTemplate: TemplateRef<any>;\n\n  @Input() emptyTemplate: TemplateRef<any>;\n\n  @Output() clickThumbnail = new EventEmitter();\n\n  @Output() clickDeleteThumbail = new EventEmitter();\n\n  constructor(\n    private lightboxService: LightboxService,\n    private thumbnailService: ThumbnailService,\n    private dialogService: DialogService\n  ) {}\n\n  ngOnInit() {}\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['data'] && changes['data'].currentValue) {\n      if ((changes['data'].currentValue as Array<{ index?: number; description?: string, file: string, type: string }>).length > 0) {\n        this.data = (changes['data'].currentValue as Array<any>).map( (file) => {\n          file.type = !file.type ? this.thumbnailService.getMimeType(file.file) : file.type;\n          return file;\n        });\n      }\n    }\n  }\n\n  get isCircle() {\n    return this.shape === 'circle';\n  }\n\n  onViewImage( image ) {\n    this.lightboxService.create( this.data, image);\n  }\n\n  onDeleteThumb(image) {\n    if (this.showConfirmationOnDelete) {\n      return this.dialogService.confirmation( this.confirmationDeleteMessage, ({\n        isYes: () => this.clickDeleteThumbail.emit(image),\n      }), {}, this.modalDeleteOptions);\n    }\n    this.clickDeleteThumbail.emit(image);\n  }\n\n}\n","\n<div class=\"thumbnail-container\">\n  <ng-container *ngIf=\"data.length > 0; else thumbTemplate\">\n    <ng-container *ngFor=\"let item of data\">\n      <ng-container *ngTemplateOutlet=\"thumbTemplate; context: { $implicit: item }\"></ng-container>\n    </ng-container>\n  </ng-container>\n</div>\n\n<ng-template #thumbTemplate let-item>\n  <div class=\"thumbnail\" (click)=\"clickThumbnail.emit($event)\"\n       [style.width]=\"size.width\"\n       [style.height]=\"size.height\"\n       [class.circle-shape]=\"isCircle\"\n       [class.borderLess]=\"!bordered\">\n    <ng-container *ngIf=\"!item && !image; else imageTemplate\">\n      <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n    </ng-container>\n    <ng-template #imageTemplate>\n      <div *ngIf=\"item.type === 'image/png' || item.type === 'image/jpeg' || item.type === 'image/bmp' || item.type === 'image/jpg' || item.type === 'image' ||\n                   mimeType === 'image/png' ||  mimeType === 'image/jpeg' ||  mimeType === 'image/bmp' ||  mimeType === 'image/jpg' ||  mimeType === 'image'\"\n           class=\"thumbnail-image-wrapper\" [class.circle-shape]=\"isCircle\">\n        <img class=\"thumbnail-image\" [class.circle-shape]=\"isCircle\" alt=\"image\" [src]=\"item.file || image\">\n        <div class=\"thumbnail-controls\" *ngIf=\"!overlayTemplate\">\n          <div class=\"view-button\" [style.width]=\"size.width\" [style.height]=\"size.height\" (click)=\"onViewImage( image )\">\n            <tl-icon [lib]=\"'dx'\">find</tl-icon>\n          </div>\n          <div class=\"trash-button\" (click)=\"onDeleteThumb(item)\">\n            <tl-icon *ngIf=\"showDeleteButton\"  [lib]=\"'dx'\">trash</tl-icon>\n          </div>\n        </div>\n        <div class=\"thumbnail-controls\" *ngIf=\"overlayTemplate\">\n          <ng-container *ngTemplateOutlet=\"overlayTemplate; context: { $implicit: item || image }\"></ng-container>\n        </div>\n      </div>\n\n      <div *ngIf=\"item.type === 'application/pdf' || mimeType === 'application/pdf'\" class=\"thumbnail-image-wrapper\" [class.circle-shape]=\"isCircle\">\n        <tl-icon style=\"margin-right: 5px\" [lib]=\"'fa'\" [style]=\"'fas'\" [color]=\"'#ec7e7e'\" [size]=\"'40px'\">file-pdf</tl-icon>\n        <div class=\"thumbnail-controls\" *ngIf=\"!overlayTemplate\">\n          <div class=\"view-button\" [style.width]=\"size.width\" [style.height]=\"size.height\" (click)=\"onViewImage( image )\">\n            <tl-icon [lib]=\"'dx'\">find</tl-icon>\n          </div>\n          <div class=\"trash-button\" (click)=\"onDeleteThumb(item)\">\n            <tl-icon *ngIf=\"showDeleteButton\"  [lib]=\"'dx'\">trash</tl-icon>\n          </div>\n        </div>\n        <div class=\"thumbnail-controls\" *ngIf=\"overlayTemplate\">\n          <ng-container *ngTemplateOutlet=\"overlayTemplate; context: { $implicit: item || image }\"></ng-container>\n        </div>\n      </div>\n    </ng-template>\n  </div>\n</ng-template>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlThumbnail } from './thumbnail';\nimport { IconsModule } from '../icons/index';\nimport { LightboxModule } from '../lightbox/index';\nimport {DialogModule} from '../dialog/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    IconsModule,\n    FormsModule,\n    LightboxModule,\n    DialogModule\n  ],\n  declarations: [\n    TlThumbnail\n  ],\n  exports: [\n    TlThumbnail\n  ]\n})\nexport class ThumbnailModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2018 Temainfo Software\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nimport {Component, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {LightboxService} from '../lightbox/services/lightbox.service';\nimport {ImageUploadInterface} from './interfaces/image-upload.interface';\nimport {debounceTime} from 'rxjs/operators';\nimport {Subject, Subscription} from 'rxjs';\nimport {I18nService} from '../i18n/i18n.service';\n\n@Component({\n  selector: 'tl-upload',\n  templateUrl: './upload.html',\n  styleUrls: ['./upload.scss'],\n})\nexport class TlUpload implements OnInit {\n\n  @Input() type: 'dragndrop' | 'box' = 'dragndrop';\n\n  @Input() showAsList = true;\n\n  @Input() action = '';\n\n  @Input() height = '100%';\n\n  @Input() resizeDragndrop = false;\n\n  @Input('imageList')\n  set imageList( value: ImageUploadInterface[] ) {\n    this._imageList = value.sort((a, b) => a.index - b.index );\n  }\n\n  get imageList() {\n    return this._imageList;\n  }\n\n  @Input() imageSrc;\n\n  @Input() imageSrcMimeType;\n\n  @Input() isLoading = false;\n\n  @Input() debounce = 380;\n\n  @Input() deleteControl = true;\n\n  @Input() viewControl = true;\n\n  @Input() acceptFiles = 'image/*,application/pdf';\n\n  @ViewChild('inputMultiple', {static: false}) inputMultiple;\n\n  @ViewChild('inputSingle', {static: false}) inputSingle;\n\n  @Output() view = new EventEmitter();\n\n  @Output() uploadChange = new EventEmitter();\n\n  @Output() deleteChange = new EventEmitter();\n\n  @Output() updateChange = new EventEmitter();\n\n  private filtering: Subject<any> = new Subject();\n\n  private uploading: Subject<any> = new Subject();\n\n  private subscription: Subscription = new Subscription();\n\n  private _imageList = [];\n\n  public boxDescription = this.i18nService.getLocale().Upload.boxDescription;\n\n  public placeholder = this.i18nService.getLocale().Upload.placeholder;\n\n  public upload = this.i18nService.getLocale().Upload.upload;\n\n  constructor(private i18nService: I18nService, private lightboxService: LightboxService) {\n  }\n\n  ngOnInit() {\n    this.filtering.pipe(\n      debounceTime( this.debounce ),\n    ).subscribe((value) => {\n      this.updateChange.emit(value);\n    });\n    this.subscription.add(this.uploading.subscribe(value => {\n      this.uploadChange.emit( value );\n    }));\n  }\n\n  open($event) {\n    if (this.inputSingle || this.inputMultiple) {\n      this.type !== 'dragndrop' ? this.inputSingle.nativeElement.click() : this.inputMultiple.nativeElement.click();\n      $event.stopPropagation();\n    }\n  }\n\n  onDragOver(ev) {\n    ev.stopPropagation();\n    ev.preventDefault();\n    ev.dataTransfer.dropEffect = 'copy';\n  }\n\n  onDrop(ev) {\n    ev.stopPropagation();\n    ev.preventDefault();\n    const fileList = ev.dataTransfer.files;\n    this.readFiles(fileList);\n  }\n\n  onChangeDescription() {\n    this.filtering.next(this.imageList);\n  }\n\n  readFiles(fileList) {\n    for (let i = 0; i < fileList.length; i++) {\n      this.readFile(fileList[i], i).then((value: ImageUploadInterface) => {\n        value = Object.assign({title: '', description: '', type: this.getBase64MimeType(value.file)}, value);\n        value.index = this.imageList.length;\n        this.imageList = [ ...this.imageList, value ];\n        if ( fileList.length <= this.imageList.length ) {\n          this.uploading.next( this.imageList );\n        }\n      });\n    }\n  }\n\n  readFile(file, index) {\n    const reader = new FileReader();\n    return new Promise(resolve => {\n      reader.readAsDataURL(file);\n      reader.onloadend = ( event ) => {\n        resolve({index: index, file: (<FileReader>event.target).result});\n      };\n    });\n  }\n\n  viewImage($event, file) {\n    $event.stopPropagation();\n    if (this.type === 'box') {\n      return this.view.emit(this.imageSrc);\n    }\n    this.lightboxService.create(this.imageList, file);\n  }\n\n  remove(file, imgSrc, event) {\n    event.stopPropagation();\n    if (imgSrc) {\n      this.imageSrc = null;\n      this.deleteChange.emit(this.imageSrc);\n    }\n    if (file) {\n      this.imageList = this.imageList.filter((item, idx) => file.index !== idx);\n      this.imageList.forEach((item, idx) => item.index = idx);\n      this.deleteChange.emit(this.imageList);\n    }\n  }\n\n  hasRisize() {\n    return (this.resizeDragndrop && this.type === 'dragndrop' && this.imageList.length > 0);\n  }\n\n  onChange($event) {\n    if ($event.target.files.length > 0) {\n      const filesAccepet = this.filterFilesAccpet($event.target.files);\n      if (this.type === 'dragndrop') {\n        return this.readFiles(filesAccepet);\n      }\n      const reader = new FileReader();\n      reader.readAsDataURL(filesAccepet[0]);\n      reader.onload = (event) => {\n        this.imageSrc = (<FileReader>event.target).result;\n        this.uploadChange.emit(this.imageSrc);\n      };\n    }\n  }\n\n  private filterFilesAccpet( files ) {\n    const acceptFiles = [];\n    for (let i = 0; i < files.length; i++) {\n      const regexExpresison = this.acceptFiles\n        .replace(  /\\*/g, '.\\*' )\n        .replace( /\\,/g, '|' ) ;\n      const isAccept = new RegExp( regexExpresison ).test( files[ i ].type );\n      if ( isAccept ) {\n        acceptFiles.push(files[i]);\n      }\n    }\n    return acceptFiles;\n  }\n\n  private getBase64MimeType(encoded) {\n    let result = null;\n\n    if (typeof encoded !== 'string') {\n      return result;\n    }\n\n    const mime = encoded.match(/data:([a-zA-Z0-9]+\\/[a-zA-Z0-9-.+]+).*,.*/);\n\n    if (mime && mime.length) {\n      result = mime[1];\n    }\n\n    return result || 'image';\n  }\n}\n","<div class=\"drag-wrapper\">\n  <div *ngIf=\"type === 'dragndrop'\" class=\"dragndrop\"\n       [style.height]=\"hasRisize() ? 'calc('+height+' - '+imageList.length * 90+'px)': height\" (click)=\"open($event)\"\n       (drop)=\"onDrop($event)\" (dragover)=\"onDragOver($event)\">\n    <ng-container *ngIf=\"imageList.length === 0 || showAsList; else imagesContainerTemplate\">\n      <span><tl-icon class=\"icon\" [lib]=\"'fa'\" [style]=\"'fas'\">inbox</tl-icon></span>\n      <p style=\"white-space: pre-line\">{{ boxDescription }}</p>\n      <input #inputMultiple type=\"file\" style=\"display: none;\" (change)=\"onChange($event)\" multiple [accept]=\"acceptFiles\">\n    </ng-container>\n\n    <ng-template #imagesContainerTemplate>\n      <div class=\"images-container\">\n        <ng-container *ngFor=\"let item of imageList\">\n          <ng-container *ngTemplateOutlet=\"uploadboxTemplate; context: { $implicit: item }\"></ng-container>\n        </ng-container>\n        <ng-container *ngTemplateOutlet=\"uploadboxTemplate\"></ng-container>\n      </div>\n    </ng-template>\n  </div>\n  <div class=\"image-list\" *ngIf=\"showAsList\"\n       [style.maxHeight]=\"hasRisize() ? 'calc( '+height+' - 100px )': ''\">\n    <ng-container *ngFor=\"let item of imageList\">\n      <div class=\"image-item\">\n        <ng-container *ngTemplateOutlet=\"uploadboxTemplate; context: { $implicit: item }\"></ng-container>\n        <tl-textarea class=\"image-description\" [(ngModel)]=\"item.description\" (ngModelChange)=\"onChangeDescription()\" [placeholder]=\"placeholder\"></tl-textarea>\n      </div>\n    </ng-container>\n  </div>\n</div>\n\n\n<div *ngIf=\"type === 'box'\" (click)=\"open($event)\">\n  <ng-container *ngTemplateOutlet=\"uploadboxTemplate\"></ng-container>\n</div>\n\n<ng-template #uploadboxTemplate let-item>\n  <input #inputSingle type=\"file\" style=\"display: none;\" (change)=\"onChange($event)\" [accept]=\"acceptFiles\">\n  <tl-thumbnail\n    [shape]=\"'square'\"\n    [bordered]=\"!item\"\n    [image]=\"item?.file || imageSrc\"\n    [mimeType]=\"item?.type || imageSrcMimeType\"\n    [emptyTemplate]=\"emptyTemplate\"\n    [overlayTemplate]=\"controlsTemplate\">\n    <ng-template #emptyTemplate>\n      <tl-icon [lib]=\"'dx'\">add</tl-icon>\n      <div class=\"upload-title\">{{ upload }}</div>\n    </ng-template>\n    <ng-template #controlsTemplate>\n      <tl-icon *ngIf=\"viewControl\"   style=\"margin-right: 5px; cursor: pointer\" (click)=\"viewImage($event, item || imageSrc)\" [lib]=\"'dx'\">find</tl-icon>\n      <tl-icon *ngIf=\"deleteControl\" style=\"cursor: pointer\" (click)=\"remove(item, imageSrc, $event)\" [lib]=\"'dx'\">trash</tl-icon>\n    </ng-template>\n  </tl-thumbnail>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { TlUpload } from './upload';\nimport { IconsModule } from '../icons/index';\nimport { LightboxModule } from '../lightbox/index';\nimport { HttpClientModule } from '@angular/common/http';\nimport { TextareaModule } from '../textarea/index';\nimport { ThumbnailModule } from '../thumbnail/index';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    IconsModule,\n    LightboxModule,\n    HttpClientModule,\n    TextareaModule,\n    ThumbnailModule\n  ],\n  declarations: [\n    TlUpload\n  ],\n  exports: [\n    TlUpload\n  ]\n})\nexport class UploadModule {}\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const Button = {\n  loadingText: 'Carregando',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const Calendar = {\n  today: 'Hoje',\n  months: [\n    { name: 'Janeiro', initials: 'jan' },\n    { name: 'Fevereiro', initials: 'fev' },\n    { name: 'Março', initials: 'mar' },\n    { name: 'Abril', initials: 'abr' },\n    { name: 'Maio', initials: 'mai' },\n    { name: 'Junho', initials: 'jun' },\n    { name: 'Julho', initials: 'jul' },\n    { name: 'Agosto', initials: 'ago' },\n    { name: 'Setembro', initials: 'set' },\n    { name: 'Outrubo', initials: 'out' },\n    { name: 'Novembro', initials: 'nov' },\n    { name: 'Dezembro', initials: 'dez' }\n  ],\n  dayOfWeek: [ 'DOM', 'SEG', 'TER', 'QUA', 'QUI', 'SEX', 'SAB' ]\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Datatable = {\n  notFoundText: 'Registros não encontrados',\n  filterPlaceholder: 'Filtrar...',\n  dropdownResetPlaceholder: 'Padrão',\n  filterOptionStartsWith: 'Inicia com',\n  filterOptionContains: 'Contém',\n  filterOptionNotContains: 'Não contém',\n  filterOptionEndsWith: 'Termina com',\n  filterOptionEquals: 'É igual a',\n  filterOptionNotEquals: 'Não é igual a',\n  filterOptionLessThan: 'Menor que',\n  filterOptionGreaterThan: 'Maior que',\n  filterOptionLessThanOrEqual: 'Menor que ou igual a',\n  filterOptionGreaterThanOrEqual: 'Maior que ou igual a',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Dialog = {\n  exceptionBoxDescription: 'Nome/Código da Exceção',\n  textClose: 'Fechar',\n  textOk: 'OK',\n  textCancel: 'Cancelar',\n  textYes: 'Sim',\n  textNo: 'Não',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Form = {\n  deleteConfirmationMessage: 'Deseja realmente excluir o registro ?',\n  deleteTitleConfirmation: 'Confirmação',\n  recordNotFoundMessage: 'Não há registro selecionado para executar esta ação',\n  textOk: 'OK',\n  textCancel: 'Cancelar',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Listbox = {\n  notFoundText: 'Nada encontrado'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const Navigator = {\n  monthsDescription: [\n    'Janeiro',\n    'Fevereiro',\n    'Março',\n    'Abril',\n    'Maio',\n    'Junho',\n    'Julho',\n    'Agosto',\n    'Setembro',\n    'Outubro',\n    'Novembro',\n    'Dezembro'\n  ],\n  daysDescription: [\n    'Domingo',\n    'Segunda',\n    'Terça',\n    'Quarta',\n    'Quinta',\n    'Sexta',\n    'Sábado'\n  ]\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Validators =  {\n  invalidDatePattern: 'Data Inválida, o valor deve corresponder ao padrão',\n  fieldRequired: 'Campo requerido, por favor informe um valor',\n  invalidMinLength: 'O campo deve ter no minimo {0} caracteres',\n  patternNotMatch: 'Valor não corresponde ao padrão requerido',\n  invalidCPF: 'CPF Inválido',\n  invalidCNPJ: 'CNPJ Inválido',\n  invalidEmail: 'Email Inválido',\n  invalidCreditCard: 'Cartão de Credito Inválido',\n  invalidPasswordRuleDigits: 'Senha inválida, ela deve ter pelo menos um dígito. ex: abc123',\n  invalidPasswordRuleUppercase: 'Senha inválida, ela deve ter pelo menos uma letra maiúscula. ex: abcY123',\n  invalidPasswordRuleSpecial: 'Senha inválida, ela deve ter pelo menos um caractere especial. ex: abcY123@#!',\n  invalidPasswordRuleLowerCase: 'Senha inválida, ela deve ter pelo menos uma letra minúscula. ex: abc',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const OverlayList = {\n  emptyList: 'Lista Vazia',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Editor = {\n  fontFamilyText: 'Familia de Fontes',\n  fontSizeText: 'Tamanho da Fonte',\n  boldText: 'Texto em Negrito',\n  italicText: 'Texto em Italico',\n  underlineText: 'Texto sublinhada',\n  colorText: 'Mudar cor do text',\n  highlightText: 'Destatar texto',\n  alignLeftText: 'Alinhar a esquerda',\n  alignCenterText: 'Alinhar ao centro',\n  alignRightText: 'Alinhar a direita',\n  justifyText: 'Justificar conteudo',\n  listUnordered: 'Lista não ordenada',\n  listOrdered: 'Lista ordenada',\n  linkText: 'Adicionar Link ao Texto',\n  imageText: 'Adicionar imagem',\n  quoteText: 'Adicionar citação',\n  clearText: 'Limpar Conteudo',\n  saveText: 'Salvar Conteudo',\n  fieldText: 'Adicionar campo de texto',\n  labelAddField: 'Adicionar campo',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Permissions = {\n  notFound: 'Nada Encontrado',\n  loadingMessage: 'Carregando Permissões...',\n  searchGroup: 'Procurar Grupo...',\n  searchFunctionality: 'Procurar Funcionalidade...',\n  allowColumnText: 'Permitir'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const TimePicker = {\n  now: 'Agora',\n  textConfirm: 'Confirmar',\n  textCancel: 'Cancelar'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const AutoComplete = {\n  messageLoading: 'Carregando...',\n  nothingFoundMessage: 'Nada Encontrado...',\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const TimeAvailablePicker = {\n  notFound: 'Nada Encontrado'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const ChatList = {\n  noContactsFound: 'Não há contatos.',\n  today: 'HOJE',\n  yesterday: 'ONTEM',\n  loadingMessages: 'Carregando Mensagens...',\n  saySomething: 'Digite algo...',\n  searchContact: 'Pesquisar Contatos...'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nexport const Modal = {\n  includingMessage: 'Incluindo',\n  updatingMessage: 'Alterando'\n};\n\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\n\nexport const Upload = {\n  boxDescription: 'Clique ou arraste um arquivo para está area.\\nSuporta um único arquivo ou varios para upload.',\n  placeholder: 'Descrição da Imagem',\n  upload: 'Envio'\n};\n","/*\n    MIT License\n\n    Copyright (c) 2019 Temainfo Sistemas\n\n    Permission is hereby granted, free of charge, to any person obtaining a copy\n    of this software and associated documentation files (the \"Software\"), to deal\n    in the Software without restriction, including without limitation the rights\n    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the Software is\n    furnished to do so, subject to the following conditions:\n    The above copyright notice and this permission notice shall be included in all\n    copies or substantial portions of the Software.\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n    SOFTWARE.\n*/\nimport { Button } from './button/pt_BR';\nimport { Calendar } from './calendar/pt_BR';\nimport { Datatable } from './datatable/pt_BR';\nimport { Dialog } from './dialog/pt_BR';\nimport { Form } from './form/pt_BR';\nimport { Listbox } from './listbox/pt_BR';\nimport { Navigator } from './navigator/pt_BR';\nimport { Validators } from './validators/pt_BR';\nimport { OverlayList } from './overlaylist/pt_BR';\nimport { Editor } from './editor/pt_BR';\nimport { Permissions } from './permissions/pt_BR';\nimport { TimePicker } from './timepicker/pt_BR';\nimport { AutoComplete } from './autocomplete/pt_BR';\nimport { TimeAvailablePicker } from './time-available-picker/pt_BR';\nimport { ChatList } from './chatlist/pt_BR';\nimport { Modal } from './modal/pt_BR';\nimport {Upload} from './upload/pt_BR';\n\nexport const pt_BR = {\n  locale: 'pt-BR',\n  AutoComplete,\n  Button,\n  Calendar,\n  ChatList,\n  Datatable,\n  Dialog,\n  Editor,\n  Form,\n  Modal,\n  Listbox,\n  Upload,\n  Navigator,\n  Validators,\n  OverlayList,\n  Permissions,\n  TimePicker,\n  TimeAvailablePicker\n};\n","// Acorddion\nexport { AccordionModule } from './components/accordion/index';\nexport { TlAccordion } from './components/accordion/accordion';\nexport { TlAccordionItem } from './components/accordion/parts/accordion-item/accordion-item';\n\n// Autocomplete\nexport { AutoCompleteModule } from './components/autocomplete/index';\nexport { TlAutoComplete } from './components/autocomplete/autocomplete';\nexport { TlAutocompleteTemplate } from './components/autocomplete/components/autocomplete-template';\nexport { SelectedValidatorDirective } from './components/autocomplete/selected-validator';\n\n// Avatar\nexport { AvatarModule } from './components/avatar/index';\nexport { TlAvatar } from './components/avatar/avatar';\n\n// Badge\nexport { BadgeModule } from './components/badge/index';\nexport { TlBadge } from './components/badge/badge';\n\n// Button\nexport { ButtonModule } from './components/button/index';\nexport { TlButton } from './components/button/button';\n\n// Button Group\nexport { ButtonGroupModule } from './components/buttongroup/index';\nexport { TlButtonGroup } from './components/buttongroup/buttongroup';\nexport { TlButtonGroupItem } from './components/buttongroup/buttongroup-item';\n\n// Block UI\nexport { BlockUIModule } from './components/blockui/index';\nexport { TlBlockUI } from './components/blockui/blockui';\nexport { TlBlockUIComponent } from './components/blockui/blockui.component';\n\n// Card\nexport { CardModule } from './components/card/index';\nexport { TlCard } from './components/card/card';\nexport { TlCardBody } from './components/card/parts/card-body/card-body';\nexport { TlCardFooter } from './components/card/parts/card-footer/card-footer';\nexport { TlCardHeader } from './components/card/parts/card-header/card-header';\n\n// Checkbox\nexport { CheckBoxModule } from './components/checkbox/index';\nexport { TlCheckBox } from './components/checkbox/checkbox';\n\n// Chatlist\nexport { ChatListModule } from './components/chatlist/index';\nexport { TlChatList } from './components/chatlist/chatlist';\nexport { TlChatContent } from './components/chatlist/parts/chat-content';\nexport { TlStatusFilterPipe } from './components/chatlist/pipes/status-filter.pipe';\nexport { TlMessageFilterPipe } from './components/chatlist/pipes/message-filter.pipe';\nexport { ChatContact } from './components/chatlist/interfaces/chat-contact.interface';\nexport { ChatMessage } from './components/chatlist/interfaces/chat-message.interface';\nexport { ChatStatus } from './components/chatlist/interfaces/chat-status.interface';\nexport { Status } from './components/chatlist/enums/status.enum';\nexport { ChatService } from './components/chatlist/services/chat.service';\n\n// Calendar\nexport { CalendarModule } from './components/calendar/index';\nexport { TlCalendar } from './components/calendar/calendar';\nexport { TlCalendarDays } from './components/calendar/parts/calendar-days/calendar-days';\nexport { TlCalendarMonths } from './components/calendar/parts/calendar-months/calendar-months';\nexport { TlCalendarYears } from './components/calendar/parts/calendar-years/calendar-years';\nexport { TlHolidayPipe } from './components/calendar/pipes/holiday';\nexport { TlHolidayTooltipDirective } from './components/calendar/directives/holiday-tooltip';\nexport { CalendarStatus } from './components/calendar/interfaces/calendar-status.interface';\nexport { CalendarHoliday } from './components/calendar/interfaces/calendar-holiday.interface';\n\n// Clock Picker\nexport { ClockPickerModule } from './components/clockpicker/index';\nexport { TlClockPicker } from './components/clockpicker/clockpicker';\n\n// Color Picker\nexport { ColorPickerModule } from './components/colorpicker/index';\nexport { TlColorPicker } from './components/colorpicker/colorpicker';\n\n// Core\nexport { CoreModule } from './components/core/index';\nexport { TlCore } from './components/core/core';\nexport { LimitStringPipe } from './components/core/helper/limitstring.pipe';\nexport { ActionsModal } from './components/core/enums/actions-modal';\nexport { KeyEvent } from './components/core/enums/key-events';\nexport { ModalResult } from './components/core/enums/modal-result';\nexport { CoreService } from './components/core/services/core.service';\n\n// Container\nexport { ContainerModalModule } from './components/modal/addons/container-modal/index';\nexport { TlContainerModalDirective } from './components/modal/addons/container-modal/container-modal.directive';\n\n// Contextmenu\nexport { ContextMenuModule } from './components/contextmenu/index';\nexport { TlContextMenuComponent } from './components/contextmenu/context-menu';\nexport { ContextMenuService } from './components/contextmenu/services/contextmenu.service';\n\n// Datatable\nexport { DatatableModule } from './components/datatable/index';\nexport { TlDatatable } from './components/datatable/datatable';\nexport { TlDatatableColumn } from './components/datatable/parts/column/datatable-column';\n\n// Date\nexport { DateModule } from './components/date/index';\nexport { TlDate } from './components/date/date';\nexport { DateDirective } from './components/date/directives/date.directive';\n\n// Date Picker\nexport { DatePickerModule } from './components/datepicker/index';\nexport { TlDatePicker } from './components/datepicker/datepicker';\nexport { TlDatePickerContent } from './components/datepicker/datepicker-content/datepicker-content';\n\n// Dialog\nexport { DialogModule } from './components/dialog/index';\nexport { TlDialogAlert } from './components/dialog/dialog-alert/dialog-alert';\nexport { TlDialogConfirmation } from './components/dialog/dialog-confirmation/dialog-confirmation';\nexport { TlDialogError } from './components/dialog/dialog-error/dialog-error';\nexport { TlDialogInfo } from './components/dialog/dialog-info/dialog-info';\nexport { InfoOptions } from './components/dialog/dialog-info/info-options';\nexport { ErrorOptions } from './components/dialog/dialog-error/error-options';\nexport { AlertOptions } from './components/dialog/dialog-alert/alert-options';\nexport { ConfirmationOptions } from './components/dialog/dialog-confirmation/confirmation-options';\nexport { DialogService } from './components/dialog/dialog.service';\n\n// Dropdownlist\nexport { DropDownListModule } from './components/dropdownlist/index';\nexport { TlDropDownList } from './components/dropdownlist/dropdownlist';\n\n// Editor\nexport { EditorModule } from './components/editor/index';\nexport { TlEditor } from './components/editor/editor';\nexport { TlEditorLinkBox } from './components/editor/parts/editor-link-box/editor-link-box';\nexport { TlEditorImageBox } from './components/editor/parts/editor-image-box/editor-image-box';\nexport { TlEditorHeader } from './components/editor/parts/editor-header/editor-header';\nexport { TagContent } from './components/editor/interfaces/tag-content';\nexport { FieldContent } from './components/editor/interfaces/field-content';\nexport { EditorService } from './components/editor/services/editor.service';\n\n// Form\nexport { FormModule } from './components/form/index';\nexport { TlForm } from './components/form/form';\nexport { FormSubmitDirective } from './components/form/form-submit.directive';\n\n// Icons\nexport { IconsModule } from './components/icons/index';\nexport { TlIcons } from './components/icons/icons';\nexport { TlDxIconComponent } from './components/icons/parts/tl-dx-icon/tl-dx-icon.component';\nexport { TlIonIconComponent } from './components/icons/parts/tl-ion-icon/tl-ion-icon.component';\nexport { TlFaIconComponent } from './components/icons/parts/tl-fa-icon/tl-fa-icon.component';\n\n// Input\nexport { InputModule } from './components/input/index';\nexport { TlInput } from './components/input/input';\nexport { CharcaseDirective } from './components/input/directives/charcase.directive';\nexport { CurrencyDirective } from './components/input/directives/currency/currency.directive';\n\n// Listbox\nexport { ListBoxModule} from './components/listbox/index';\nexport { TlListBox } from './components/listbox/listbox';\n\n// Lightbox\nexport { LightboxModule } from './components/lightbox/index';\nexport { TlLightbox } from './components/lightbox/lightbox';\nexport { ImageLightboxInterface } from './components/lightbox/interfaces/image.interface';\nexport { LightboxService } from './components/lightbox/services/lightbox.service';\n\n// Loader\nexport { LoaderModule } from './components/loader/index';\nexport { TlLoader } from './components/loader/loader';\n\n// Menu\nexport { MenuModule } from './components/menu/index';\nexport { TlMenu } from './components/menu/menu';\nexport { TlAdvancedRootMenu } from './components/menu/parts/advanced/advanced-root-menu';\nexport { TlAdvancedSubMenu } from './components/menu/parts/advanced/parts/advanced-sub-menu';\nexport { TlSimpleSubMenu } from './components/menu/parts/simple/simple-sub-menu';\n\n// Misc\nexport { MiscModule } from './components/misc/index';\nexport { RelativeWindowPosition } from './components/misc/relative-window-position.directive';\nexport { FixedPositionDirective } from './components/misc/fixed-position.directive';\nexport { ListOptionDirective } from './components/misc/listoption.directive';\nexport { ScrollManager } from './components/misc/scroll-manager.directive';\nexport { HighlightPipe } from './components/misc/highlight.pipe';\n\n// Message Validator\nexport { MessageValidationModule } from './components/messagevalidation/index';\nexport { TlMessageValidationComponent } from './components/messagevalidation/messagevalidation.component';\nexport { TlMessageValidationDirective } from './components/messagevalidation/directives/message-validation.directive';\n\n// Modal\nexport { ModalModule } from './components/modal/index';\nexport { TlModal } from './components/modal/modal';\nexport { ModalResultDirective } from './components/modal/directives/modal-result.directive';\nexport { ModalToolbarModule } from './components/modal/addons/modal-toolbar/index';\nexport { TlModalToolbar } from './components/modal/addons/modal-toolbar/modal-toolbar';\nexport { ModalOptions, Modal } from './components/modal/interfaces/modal-options';\nexport { ModalFormConfig } from './components/modal/interfaces/modal-smart-form-config';\nexport { ModalService } from './components/modal/services/modal.service';\n\n// MultiSelect\nexport { MultiSelectModule } from './components/multiselect/index';\nexport { TlMultiSelect } from './components/multiselect/multiselect';\n\n// Multiview\nexport { MultiViewModule } from './components/multiview/index';\nexport { TlMultiView } from './components/multiview/multiview';\nexport { TlView } from './components/multiview/view/view';\n\n// Navigator\nexport { NavigatorModule } from './components/navigator/index';\nexport { TlNavigator } from './components/navigator/navigator';\nexport { NavigatorService } from './components/navigator/services/navigator.service';\n\n// OverlayPanel\nexport { OverlayPanelModule } from './components/overlaypanel/index';\nexport { TlOverlayPanel } from './components/overlaypanel/overlay-panel';\n\n// PanelGroup\nexport { PanelGroupModule } from './components/panelgroup/index';\nexport { TlPanelGroup } from './components/panelgroup/panelgroup';\n\n// PopupMenu\nexport { PopupMenuModule } from './components/popupmenu/index';\nexport { TlPopupMenu } from './components/popupmenu/popupmenu';\nexport { TlPopupMenuItem } from './components/popupmenu/parts/popupmenu-item';\n\n// Permissions\nexport { PermissionsModule } from './components/permissions/index';\nexport { TlPermissions } from './components/permissions/permissions';\nexport { PermissionGroupDirective } from './components/permissions/parts/directives/permission-group.directive';\nexport { PermissionDataConfig } from './components/permissions/parts/interfaces/permission-dataconfig.interface';\nexport { Permission } from './components/permissions/parts/models/permission.model';\n\n// Progressbar\nexport { ProgressBarModule } from './components/progressbar/index';\nexport { TlProgressBar } from './components/progressbar/progressbar';\n\n// Radio Button\nexport { RadioButtonModule } from './components/radiobutton/index';\nexport { TlRadioButton } from './components/radiobutton/radiobutton';\nexport { TlRadioGroup } from './components/radiobutton/radiogroup';\n\n// Sidebar\nexport { SidebarModule } from './components/sidebar/index';\nexport { TlSidebarContainer } from './components/sidebar/sidebar-container';\nexport { TlSidebar } from './components/sidebar/parts/sidebar/sidebar';\nexport { TlSidebarContent } from './components/sidebar/parts/sidebar-content/sidebar-content';\n\n// Loader\nexport { SkeletonModule } from './components/skeleton/index';\nexport { TlSkeleton } from './components/skeleton/skeleton';\n\n// Schedule\nexport { ScheduleModule } from './components/schedule/index';\nexport { TlSchedule } from './components/schedule/schedule';\nexport { ScheduleDataSource } from './components/schedule/types/datasource.type';\nimport { SlotSettingsType } from './components/schedule/types/slot-settings.type';\nexport { HolidaysType } from './components/schedule/types/holidays.type';\nexport { SlotSettingsType } from './components/schedule/types/slot-settings.type';\nexport { StatusType } from './components/schedule/types/status.type';\nexport { ViewType } from './components/schedule/types/view.type';\nexport { WorkScaleType } from './components/schedule/types/work-scale.type';\n\n// StopWatch\nexport { StopwatchModule } from './components/stopwatch/index';\nexport { StopwatchService } from './components/stopwatch/services/stopwatch-service';\nexport { TlStopwatch } from './components/stopwatch/stopwatch';\n\n// Shortcut\nexport { ShortcutModule } from './components/shortcut/index';\nexport { ShortcutDirective } from './components/shortcut/shortcut.directive';\nexport { ShortcutConfig } from './components/shortcut/shortcut.config';\n\n// Splitbutton\nexport { SplitButtonModule } from './components/splitbutton/index';\nexport { TlSplitButton } from './components/splitbutton/splitbutton';\nexport { TlSplitButtonAction } from './components/splitbutton/parts/splitbutton-action';\n\n// Switch\nexport { SwitchModule } from './components/switch/index';\nexport { TlSwitch } from './components/switch/switch';\n\n// Step\nexport { StepModule } from './components/step/index';\nexport { TlStep } from './components/step/step';\nexport { TlStepForm } from './components/step/parts/step-form/step-form';\nexport { StepNextDirective } from './components/step/directives/step-next.directive';\nexport { StepFinishDirective } from './components/step/directives/step-finish.directive';\nexport { StepPreviousDirective } from './components/step/directives/step-previous.directive';\n\n// Tag\nexport { TagModule } from './components/tag/index';\nexport { TlTag } from './components/tag/tag';\n\n// TabControl\nexport { TabControlModule } from './components/tabcontrol/index';\nexport { TlTabControl } from './components/tabcontrol/tabcontrol';\nexport { TlTab } from './components/tabcontrol/tab/tab';\n\n// TextArea\nexport { TextareaModule } from './components/textarea/index';\nexport { TlTextarea } from './components/textarea/textarea';\n\n// Timeline\nexport { TimelineModule } from './components/timeline/index';\nexport { TlTimeline } from './components/timeline/timeline';\nexport { TlTimelineItem } from './components/timeline/parts/timeline-item/timeline-item';\n\n// Time Picker\nexport { TimePickerModule } from './components/timepicker/index';\nexport { TlTimepicker } from './components/timepicker/timepicker';\nexport { IncrementalSteps } from './components/timepicker/timepicker';\n\n// Time Available Picker\nexport { TimeAvailablePickerModule } from './components/time-available-picker/index';\nexport { TlTimeAvailablePicker } from './components/time-available-picker/time-available-picker';\n\n\n// Toaster\nexport { ToasterModule } from './components/toaster/index';\nexport { TlToaster } from './components/toaster/parts/toaster';\nexport { TlToasterContainer } from './components/toaster/toaster-container';\nexport { ToasterConfig } from './components/toaster/toaster-config';\nexport { ToasterService } from './components/toaster/services/toaster.service';\n\n// Toolbar\nexport { ToolbarModule } from './components/toolbar/index';\nexport { TlToolbar } from './components/toolbar/toolbar';\n\n// Tooltip\nexport { TooltipModule } from './components/tooltip/index';\nexport { TlToolTip } from './components/tooltip/tooltip';\nexport { TlToolTipContainer } from './components/tooltip/parts/tooltip-container';\nexport { TooltipDirective } from './components/tooltip/directives/tooltip.directive';\nexport { TooltipService } from './components/tooltip/tooltip.service';\n\n// Thumbnail\nexport { ThumbnailModule } from './components/thumbnail/index';\nexport { TlThumbnail } from './components/thumbnail/thumbnail';\n\n// Upload\nexport { UploadModule } from './components/upload/index';\nexport { TlUpload } from './components/upload/upload';\nexport { ImageUploadInterface } from './components/upload/interfaces/image-upload.interface';\n\n// Validators\nexport { ValidatorsModule } from './components/validators/index';\nexport { CreditCardDirective } from './components/validators/creditcard/creditcard.directive';\nexport { CPFDirective } from './components/validators/cpf/cpf.directive';\nexport { CNPJDirective } from './components/validators/cnpj/cnpj.directive';\nexport { EmailDirective } from './components/validators/email/email.directive';\nexport { NumberDirective } from './components/validators/number/number.directive';\nexport { PasswordDirective } from './components/validators/password/password.directive';\nexport { CNPJValidator } from './components/validators/cnpj/cnpj.validator';\nexport { CPFValidator } from './components/validators/cpf/cpf.validator';\nexport { CreditCardValidator } from './components/validators/creditcard/creditcard.validator';\nexport { DateValidator } from './components/date/validators/date.validator';\nexport { EmailValidator } from './components/validators/email/email.validator';\nexport { NumberValidator } from './components/validators/number/number.validator';\nexport { PasswordValidator } from './components/validators/password/password.validator';\n\n\n// Languages (i18n)\nexport { I18nService } from './components/i18n/i18n.service';\nexport { I18nInterface } from './components/i18n/i18n.interface';\nexport { en_US } from './components/i18n/languages/en_US';\nexport { pt_BR } from './components/i18n/languages/pt_BR';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2.TlDxIconComponent","i3.TlFaIconComponent","i4.TlIonIconComponent","i1.AccordionService","i2","i3.TlIcons","i1","i4.TlLabel","i5","i2.TlIcons","i1.I18nService","i2.SelectedItemService","i3","i4","i7.TlInput","i8.TlLoader","i9.TlBlockUI","i10.TlLabel","i11.TlFilterContainer","i12.TlItemSelectedDirective","i13.TlAutocompleteTemplate","i14.SelectedValidatorDirective","i15.HighlightPipe","isAllCharacteresEquals","i1.TlInput","i3.ImageComponent","i1.CurrentModalService","i1.ShortcutService","uniqueIdentifier","i1.ContainerModalService","i2.SidebarService","i4.ShortcutDirective","i5.TlIcons","i2.ContainerModalService","i3.CurrentModalService","i1.ModalService","i2.TlButton","i4.TlFilterContainer","i5.TlItemSelectedDirective","i6.TlLoader","i7.TlListBoxTemplate","Validators","i2.ChatService","i5.TlLoader","i6.TlIcons","i7.TlMessageFilterPipe","i1.ChatService","i2.I18nService","i5.TlAvatar","i7.TlChatContent","i8.HighlightPipe","i9.TlStatusFilterPipe","i1.NavigatorManagerService","i2.TlToolTip","i1.TooltipService","i2.TlHolidayTooltipDirective","i3.TlHolidayPipe","i3.TlNavigator","i4.TlButton","i5.TlCalendarDays","i6.TlCalendarMonths","i7.TlCalendarYears","i2.TlInput","i1.ColorPickerService","i2.ColorPickerHelpers","i4.TlColorPickerInput","i5.TlInput","i7.TlColorPickerContent","Button","Calendar","Datatable","Dialog","Form","Listbox","Navigator","OverlayList","Editor","Permissions","TimePicker","AutoComplete","TimeAvailablePicker","ChatList","Modal","Upload","i1.ModalModule","i1.TlDatatableFilterConstraints","i2.ContextMenuService","i4.TlIcons","i6.TlColgroupDirective","i7.TlDatatableCell","i8.TlDatatableRow","i3.TlInput","i4.TlListItem","i5.HighlightPipe","i2.TlOverlayList","debounceTime","i4.TlInput","i5.TlDropdownIcon","i1.DatatableHelpersService","i3.TlColgroupDirective","i4.TlDatatabaleColumnFilter","i5.TlResizerDirective","i1.TlDatatableColumnService","i2.TlDatatableFilterService","i3.TlDatatableSortService","i5.TlDatatableHeader","i6.TlDatatableContent","i3.TlOverlayList","i6","i7.TlLabel","i3.TlLabel","i4.DateDirective","i2.TlCalendar","i3.DateDirective","i5.TlDatePickerContent","i2.ModalResultDirective","i3.TlButton","i3.ModalResultDirective","i1.TlButton","i3.TlLoader","i6.ShortcutDirective","i7.ModalResultDirective","i3.TlForm","i3.TooltipDirective","i4.TlColorPicker","i2.EditorService","i6.TlLabel","i7.TlEditorLinkBox","i8.TlEditorImageBox","i9.TlEditorHeader","distinctUntilChanged","filter","i3.TlBlockUI","i2.SubMenuService","i2.CurrentModalService","map","i5.TlLabel","i6.TlTag","i2.ShortcutDirective","i1.MenuService","i2.FixedPositionDirective","i5.TlCheckBox","i7.ListOptionDirective","i8.PermissionGroupDirective","i1.SidebarService","i2.TlNavigator","i3.TlButtonGroup","i4.TlButtonGroupItem","i5.TlButton","i1.WorkScaleService","i1.GenerateEventsService","i2.EventService","i3.WorkScaleService","i5.TooltipDirective","i2.TooltipDirective","i3.HolidayService","i4.GenerateEventsService","i6.TlBlockUI","i7.TlButton","i9.ViewDayComponent","i10.WeekComponent","i11.DayListComponent","i12.HeadingComponent","i1.StopwatchService","i1.StepService","i2.TlBlockUI","i4.TlTimelineItem","i6.TlButton","i7.TlLeftPadPipe","i4.TlLoader","i6.TlHolidayPipe","i2.TlProgressBar","i2.TlToaster","i1.LightboxService","i2.ThumbnailService","i3.DialogService","i2.LightboxService","i6.TlTextarea","i7.TlThumbnail"],"mappings":"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"}